diff --git a/bookwyrm/tests/data/librarything.tsv b/bookwyrm/tests/data/librarything.tsv
index 68bbe48e..cf81fe96 100644
--- a/bookwyrm/tests/data/librarything.tsv
+++ b/bookwyrm/tests/data/librarything.tsv
@@ -1,4 +1,4 @@
Book Id Title Sort Character Primary Author Primary Author Role Secondary Author Secondary Author Roles Publication Date Review Rating Comment Private Comment Summary Media Physical Description Weight Height Thickness Length Dimensions Page Count LCCN Acquired Date Started Date Read Barcode BCID Tags Collections Languages Original Languages LC Classification ISBN ISBNs Subjects Dewey Decimal Dewey Wording Other Call Number Copies Source Entry Date From Where OCLC Work id Lending Patron Lending Status Lending Start Lending End
5498194 Marelle 1 Cortazar, Julio Gallimard (1979), Poche 1979 chef d'oeuvre 4.5 Marelle by Julio Cortázar (1979) Broché 590 p.; 7.24 inches 1.28 pounds 7.24 inches 1.26 inches 4.96 inches 7.24 x 4.96 x 1.26 inches 590 [2007-04-16] [2007-05-08] roman, espagnol, expérimental, bohème, philosophie Your library French Spanish PQ7797 .C7145 [2070291340] 2070291340, 9782070291342 Cortazar, Julio. Rayuela 863 Literature > Spanish And Portuguese > Spanish fiction 1 Amazon.fr [2006-08-09] 57814
5015319 Le grand incendie de Londres: Récit, avec incises et bifurcations, 1985-1987 (Fiction & Cie) 1 Roubaud, Jacques Seuil (1989), Unknown Binding 1989 5 Le grand incendie de Londres: Récit, avec incises et bifurcations, 1985-1987 (Fiction & Cie) by Jacques Roubaud (1989) Broché 411 p.; 7.72 inches 0.88 pounds 7.72 inches 1.02 inches 5.43 inches 7.72 x 5.43 x 1.02 inches 411 Your library English PQ2678 .O77 [2020104725] 2020104725, 9782020104722 Autobiographical fiction|Roubaud, Jacques > Fiction 813 American And Canadian > Fiction > Literature 1 Amazon.com [2006-07-25] 478910
-5015399 Le Maître et Marguerite 1 Boulgakov, Mikhaïl Pocket (1994), Poche 1994 Le Maître et Marguerite by Mikhaïl Boulgakov (1994) Broché 579 p.; 7.09 inches 0.66 pounds 7.09 inches 1.18 inches 4.33 inches 7.09 x 4.33 x 1.18 inches 579 Your library French PG3476 .B78 [2266062328] 2266062328, 9782266062329 Allegories|Bulgakov|Good and evil > Fiction|Humanities|Jerusalem > Fiction|Jesus Christ > Fiction|Literature|Mental illness > Fiction|Moscow (Russia) > Fiction|Novel|Pilate, Pontius, 1st cent. > Fiction|Political fiction|Russia > Fiction|Russian fiction|Russian publications (Form Entry)|Soviet Union > History > 1925-1953 > Fiction|literature 891.7342 1917-1945 > 1917-1991 (USSR) > Literature > Literature of other Indo-European languages > Other Languages > Russian > Russian Fiction 1 Amazon.fr [2006-07-25] 10151
+5015399 Le Maître et Marguerite 1 Boulgakov, Mikhaïl Pocket (1994), Poche 1994 Le Maître et Marguerite by Mikhaïl Boulgakov (1994) Broché 579 p.; 7.09 inches 0.66 pounds 7.09 inches 1.18 inches 4.33 inches 7.09 x 4.33 x 1.18 inches 579 Your library French PG3476 .B78 [2266062328] Allegories|Bulgakov|Good and evil > Fiction|Humanities|Jerusalem > Fiction|Jesus Christ > Fiction|Literature|Mental illness > Fiction|Moscow (Russia) > Fiction|Novel|Pilate, Pontius, 1st cent. > Fiction|Political fiction|Russia > Fiction|Russian fiction|Russian publications (Form Entry)|Soviet Union > History > 1925-1953 > Fiction|literature 891.7342 1917-1945 > 1917-1991 (USSR) > Literature > Literature of other Indo-European languages > Other Languages > Russian > Russian Fiction 1 Amazon.fr [2006-07-25] 10151
diff --git a/bookwyrm/tests/importers/test_openlibrary_import.py b/bookwyrm/tests/importers/test_openlibrary_import.py
index d53f5596..6a25c191 100644
--- a/bookwyrm/tests/importers/test_openlibrary_import.py
+++ b/bookwyrm/tests/importers/test_openlibrary_import.py
@@ -48,7 +48,9 @@ class OpenLibraryImport(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), 4)
self.assertEqual(import_items[0].index, 0)
self.assertEqual(import_items[0].data["Work Id"], "OL102749W")
diff --git a/bookwyrm/tests/views/shelf/test_shelf.py b/bookwyrm/tests/views/shelf/test_shelf.py
index ab88de0a..b5f36df2 100644
--- a/bookwyrm/tests/views/shelf/test_shelf.py
+++ b/bookwyrm/tests/views/shelf/test_shelf.py
@@ -60,6 +60,18 @@ class ShelfViews(TestCase):
validate_html(result.render())
self.assertEqual(result.status_code, 200)
+ def test_shelf_page_all_books_json(self, *_):
+ """there is no json view here"""
+ view = views.Shelf.as_view()
+ request = self.factory.get("")
+ request.user = self.local_user
+ with patch("bookwyrm.views.shelf.shelf.is_api_request") as is_api:
+ is_api.return_value = True
+ result = view(request, self.local_user.username)
+ self.assertIsInstance(result, TemplateResponse)
+ validate_html(result.render())
+ self.assertEqual(result.status_code, 200)
+
def test_shelf_page_all_books_anonymous(self, *_):
"""there are so many views, this just makes sure it LOADS"""
view = views.Shelf.as_view()
diff --git a/bookwyrm/tests/views/test_feed.py b/bookwyrm/tests/views/test_feed.py
index 5c6a4dd3..63264b80 100644
--- a/bookwyrm/tests/views/test_feed.py
+++ b/bookwyrm/tests/views/test_feed.py
@@ -36,6 +36,13 @@ class FeedViews(TestCase):
local=True,
localname="mouse",
)
+ self.another_user = models.User.objects.create_user(
+ "nutria@local.com",
+ "nutria@nutria.nutria",
+ "password",
+ local=True,
+ localname="nutria",
+ )
self.book = models.Edition.objects.create(
parent_work=models.Work.objects.create(title="hi"),
title="Example Edition",
@@ -171,6 +178,17 @@ class FeedViews(TestCase):
result.render()
self.assertEqual(result.status_code, 200)
+ def test_direct_messages_page_user(self, *_):
+ """there are so many views, this just makes sure it LOADS"""
+ view = views.DirectMessage.as_view()
+ request = self.factory.get("")
+ request.user = self.local_user
+ result = view(request, "nutria")
+ self.assertIsInstance(result, TemplateResponse)
+ result.render()
+ self.assertEqual(result.status_code, 200)
+ self.assertEqual(result.context_data["partner"], self.another_user)
+
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async")
@patch("bookwyrm.activitystreams.add_book_statuses_task.delay")
def test_get_suggested_book(self, *_):
diff --git a/bookwyrm/tests/views/test_group.py b/bookwyrm/tests/views/test_group.py
index 40f601f1..f0395490 100644
--- a/bookwyrm/tests/views/test_group.py
+++ b/bookwyrm/tests/views/test_group.py
@@ -1,6 +1,8 @@
""" test for app action functionality """
from unittest.mock import patch
+from django.contrib.auth.models import AnonymousUser
+from django.http import Http404
from django.template.response import TemplateResponse
from django.test import TestCase
from django.test.client import RequestFactory
@@ -43,6 +45,8 @@ class GroupViews(TestCase):
self.membership = models.GroupMember.objects.create(
group=self.testgroup, user=self.local_user
)
+ self.anonymous_user = AnonymousUser
+ self.anonymous_user.is_authenticated = False
models.SiteSettings.objects.create()
@@ -56,6 +60,17 @@ class GroupViews(TestCase):
validate_html(result.render())
self.assertEqual(result.status_code, 200)
+ def test_group_get_anonymous(self, _):
+ """there are so many views, this just makes sure it LOADS"""
+ self.testgroup.privacy = "followers"
+ self.testgroup.save()
+
+ view = views.Group.as_view()
+ request = self.factory.get("")
+ request.user = self.anonymous_user
+ with self.assertRaises(Http404):
+ view(request, group_id=self.testgroup.id)
+
def test_usergroups_get(self, _):
"""there are so many views, this just makes sure it LOADS"""
view = views.UserGroups.as_view()
diff --git a/bookwyrm/tests/views/test_user.py b/bookwyrm/tests/views/test_user.py
index 231ecec9..74c9dfc6 100644
--- a/bookwyrm/tests/views/test_user.py
+++ b/bookwyrm/tests/views/test_user.py
@@ -80,6 +80,29 @@ class UserViews(TestCase):
self.assertIsInstance(result, ActivitypubResponse)
self.assertEqual(result.status_code, 200)
+ def test_user_page_domain(self):
+ """when the user domain has dashes in it"""
+ with patch("bookwyrm.models.user.set_remote_server"):
+ self.remote_user = models.User.objects.create_user(
+ "nutria",
+ "",
+ "nutriaword",
+ local=False,
+ remote_id="https://ex--ample.co----m/users/nutria",
+ inbox="https://ex--ample.co----m/users/nutria/inbox",
+ outbox="https://ex--ample.co----m/users/nutria/outbox",
+ )
+
+ view = views.User.as_view()
+ request = self.factory.get("")
+ request.user = self.local_user
+ with patch("bookwyrm.views.user.is_api_request") as is_api:
+ is_api.return_value = False
+ result = view(request, "nutria@ex--ample.co----m")
+ self.assertIsInstance(result, TemplateResponse)
+ validate_html(result.render())
+ self.assertEqual(result.status_code, 200)
+
def test_user_page_blocked(self):
"""there are so many views, this just makes sure it LOADS"""
view = views.User.as_view()
@@ -186,3 +209,11 @@ class UserViews(TestCase):
self.local_user.refresh_from_db()
self.assertFalse(self.local_user.show_suggested_users)
+
+ def test_user_redirect(self):
+ """test the basic redirect"""
+ request = self.factory.get("@mouse")
+ request.user = self.anonymous_user
+ result = views.user_redirect(request, "mouse")
+
+ self.assertEqual(result.status_code, 302)
diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py
index 7220b545..bd36f3d8 100644
--- a/bookwyrm/urls.py
+++ b/bookwyrm/urls.py
@@ -50,7 +50,7 @@ urlpatterns = [
re_path("^api/updates/stream/(?P
[a-z]+)/?$", views.get_unread_status_count),
# authentication
re_path(r"^login/?$", views.Login.as_view(), name="login"),
- re_path(r"^login/(?Pconfirmed)?$", views.Login.as_view(), name="login"),
+ re_path(r"^login/(?Pconfirmed)/?$", views.Login.as_view(), name="login"),
re_path(r"^register/?$", views.Register.as_view()),
re_path(r"confirm-email/?$", views.ConfirmEmail.as_view(), name="confirm-email"),
re_path(
@@ -112,12 +112,12 @@ urlpatterns = [
name="settings-federated-server",
),
re_path(
- r"^settings/federation/(?P\d+)/block?$",
+ r"^settings/federation/(?P\d+)/block/?$",
views.block_server,
name="settings-federated-server-block",
),
re_path(
- r"^settings/federation/(?P\d+)/unblock?$",
+ r"^settings/federation/(?P\d+)/unblock/?$",
views.unblock_server,
name="settings-federated-server-unblock",
),
@@ -140,7 +140,7 @@ urlpatterns = [
name="settings-invite-requests",
),
re_path(
- r"^settings/requests/ignore?$",
+ r"^settings/requests/ignore/?$",
views.ignore_invite_request,
name="settings-invite-requests-ignore",
),
@@ -229,7 +229,7 @@ urlpatterns = [
r"^direct-messages/?$", views.DirectMessage.as_view(), name="direct-messages"
),
re_path(
- rf"^direct-messages/(?P{regex.USERNAME})?$",
+ rf"^direct-messages/(?P{regex.USERNAME})/?$",
views.DirectMessage.as_view(),
name="direct-messages-user",
),
@@ -276,6 +276,7 @@ urlpatterns = [
# users
re_path(rf"{USER_PATH}\.json$", views.User.as_view()),
re_path(rf"{USER_PATH}/?$", views.User.as_view(), name="user-feed"),
+ re_path(rf"^@(?P{regex.USERNAME})$", views.user_redirect),
re_path(rf"{USER_PATH}/rss/?$", views.rss_feed.RssFeed(), name="user-rss"),
re_path(
rf"{USER_PATH}/followers(.json)?/?$",
@@ -338,7 +339,7 @@ urlpatterns = [
re_path(r"^save-list/(?P\d+)/?$", views.save_list, name="list-save"),
re_path(r"^unsave-list/(?P\d+)/?$", views.unsave_list, name="list-unsave"),
re_path(
- r"^list/(?P\d+)/embed/(?P[0-9a-f]+)?$",
+ r"^list/(?P\d+)/embed/(?P[0-9a-f]+)/?$",
views.unsafe_embed_list,
name="embed-list",
),
@@ -355,7 +356,7 @@ urlpatterns = [
name="shelf",
),
re_path(r"^create-shelf/?$", views.create_shelf, name="shelf-create"),
- re_path(r"^delete-shelf/(?P\d+)?$", views.delete_shelf),
+ re_path(r"^delete-shelf/(?P\d+)/?$", views.delete_shelf),
re_path(r"^shelve/?$", views.shelve),
re_path(r"^unshelve/?$", views.unshelve),
# goals
@@ -422,7 +423,7 @@ urlpatterns = [
re_path(rf"{BOOK_PATH}/edit/?$", views.EditBook.as_view(), name="edit-book"),
re_path(rf"{BOOK_PATH}/confirm/?$", views.ConfirmEditBook.as_view()),
re_path(r"^create-book/?$", views.EditBook.as_view(), name="create-book"),
- re_path(r"^create-book/confirm?$", views.ConfirmEditBook.as_view()),
+ re_path(r"^create-book/confirm/?$", views.ConfirmEditBook.as_view()),
re_path(rf"{BOOK_PATH}/editions(.json)?/?$", views.Editions.as_view()),
re_path(
r"^upload-cover/(?P\d+)/?$", views.upload_cover, name="upload-cover"
diff --git a/bookwyrm/utils/regex.py b/bookwyrm/utils/regex.py
index f0c44245..f9036cda 100644
--- a/bookwyrm/utils/regex.py
+++ b/bookwyrm/utils/regex.py
@@ -1,6 +1,6 @@
""" defining regexes for regularly used concepts """
-DOMAIN = r"[\w_\-\.]+\.[a-z]{2,}"
+DOMAIN = r"[\w_\-\.]+\.[a-z\-]{2,}"
LOCALNAME = r"@?[a-zA-Z_\-\.0-9]+"
STRICT_LOCALNAME = r"@[a-zA-Z_\-\.0-9]+"
USERNAME = rf"{LOCALNAME}(@{DOMAIN})?"
diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py
index 8b1f5648..f77a3b50 100644
--- a/bookwyrm/views/__init__.py
+++ b/bookwyrm/views/__init__.py
@@ -94,7 +94,7 @@ from .search import Search
from .status import CreateStatus, EditStatus, DeleteStatus, update_progress
from .status import edit_readthrough
from .updates import get_notification_count, get_unread_status_count
-from .user import User, Followers, Following, hide_suggestions
+from .user import User, Followers, Following, hide_suggestions, user_redirect
from .wellknown import *
from .annual_summary import (
AnnualSummary,
diff --git a/bookwyrm/views/annual_summary.py b/bookwyrm/views/annual_summary.py
index f9d93875..07838d6e 100644
--- a/bookwyrm/views/annual_summary.py
+++ b/bookwyrm/views/annual_summary.py
@@ -5,7 +5,7 @@ from uuid import uuid4
from django.contrib.auth.decorators import login_required
from django.db.models import Case, When, Avg, Sum
from django.http import Http404
-from django.shortcuts import get_object_or_404, redirect
+from django.shortcuts import redirect
from django.template.response import TemplateResponse
from django.views import View
from django.views.decorators.http import require_POST
@@ -41,7 +41,14 @@ class AnnualSummary(View):
)
# get data
- read_book_ids_in_year = get_read_book_ids_in_year(user, year)
+ read_book_ids_in_year = (
+ user.readthrough_set.filter(
+ finish_date__year__gte=year,
+ finish_date__year__lt=int(year) + 1,
+ )
+ .order_by("finish_date")
+ .values_list("book__id", flat=True)
+ )
if len(read_book_ids_in_year) == 0:
data = {
@@ -222,45 +229,6 @@ def get_earliest_year(user, year):
return year
-def get_read_book_ids_in_year(user, year):
- """return an ordered QuerySet of the read book ids"""
-
- read_shelf = get_object_or_404(user.shelf_set, identifier="read")
- shelved_book_ids = (
- models.ShelfBook.objects.filter(shelf=read_shelf)
- .filter(user=user)
- .values_list("book", "shelved_date")
- )
-
- book_dates = []
-
- for book in shelved_book_ids:
- finished_in_year = (
- models.ReadThrough.objects.filter(user__id=user.id)
- .filter(book_id=book[0])
- .filter(finish_date__year=year)
- .values("finish_date")
- .first()
- )
-
- if finished_in_year:
- # Finished a readthrough in the year
- book_dates.append((book[0], finished_in_year["finish_date"]))
- else:
- has_other_year_readthrough = (
- models.ReadThrough.objects.filter(user__id=user.id)
- .filter(book_id=book[0])
- .exists()
- )
- if not has_other_year_readthrough and book[1].year == int(year):
- # No readthrough but shelved this year
- book_dates.append(book)
-
- book_dates = sorted(book_dates, key=lambda tup: tup[1])
-
- return [book[0] for book in book_dates]
-
-
def get_books_from_shelfbooks(books_ids):
"""return an ordered QuerySet of books from a list"""
diff --git a/bookwyrm/views/landing/login.py b/bookwyrm/views/landing/login.py
index 5c25e30e..ccee6129 100644
--- a/bookwyrm/views/landing/login.py
+++ b/bookwyrm/views/landing/login.py
@@ -39,7 +39,8 @@ class Login(View):
return redirect("/")
login_form = forms.LoginForm(request.POST)
- localname = login_form.data["localname"]
+ localname = login_form.data.get("localname")
+
if "@" in localname: # looks like an email address to me
try:
username = models.User.objects.get(email=localname).username
@@ -47,7 +48,7 @@ class Login(View):
username = localname
else:
username = f"{localname}@{DOMAIN}"
- password = login_form.data["password"]
+ password = login_form.data.get("password")
# perform authentication
user = authenticate(request, username=username, password=password)
diff --git a/bookwyrm/views/shelf/shelf.py b/bookwyrm/views/shelf/shelf.py
index f8cffe93..34914d97 100644
--- a/bookwyrm/views/shelf/shelf.py
+++ b/bookwyrm/views/shelf/shelf.py
@@ -52,7 +52,7 @@ class Shelf(View):
)
shelf = FakeShelf("all", _("All books"), user, books, "public")
- if is_api_request(request):
+ if is_api_request(request) and shelf_identifier:
return ActivitypubResponse(shelf.to_activity(**request.GET))
reviews = models.Review.objects
diff --git a/bookwyrm/views/user.py b/bookwyrm/views/user.py
index 188f8e66..9deea14b 100644
--- a/bookwyrm/views/user.py
+++ b/bookwyrm/views/user.py
@@ -151,3 +151,9 @@ def hide_suggestions(request):
request.user.show_suggested_users = False
request.user.save(broadcast=False, update_fields=["show_suggested_users"])
return redirect(request.headers.get("Referer", "/"))
+
+
+# pylint: disable=unused-argument
+def user_redirect(request, username):
+ """redirect to a user's feed"""
+ return redirect("user-feed", username=username)
diff --git a/locale/de_DE/LC_MESSAGES/django.mo b/locale/de_DE/LC_MESSAGES/django.mo
index 16789e1f..b86acb87 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 bfd06197..1b06c171 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-08 15:40+0000\n"
-"PO-Revision-Date: 2021-12-16 14:48\n"
+"POT-Creation-Date: 2021-12-28 15:00+0000\n"
+"PO-Revision-Date: 2021-12-28 16:03\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: German\n"
"Language: de\n"
@@ -72,16 +72,16 @@ msgstr "Aufsteigend"
msgid "Descending"
msgstr "Absteigend"
-#: bookwyrm/importers/importer.py:141 bookwyrm/importers/importer.py:163
+#: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167
msgid "Error loading book"
msgstr "Fehler beim Laden des Buches"
-#: bookwyrm/importers/importer.py:150
+#: bookwyrm/importers/importer.py:154
msgid "Could not find a match for book"
msgstr "Keine Übereinstimmung für das Buch gefunden"
#: bookwyrm/models/base_model.py:17
-#: bookwyrm/templates/import/import_status.html:190
+#: bookwyrm/templates/import/import_status.html:200
msgid "Pending"
msgstr "Ausstehend"
@@ -144,7 +144,7 @@ msgstr "%(value)s ist keine gültige remote_id"
msgid "%(value)s is not a valid username"
msgstr "%(value)s ist kein gültiger Benutzer*inname"
-#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:171
+#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:173
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "Benutzer*inname"
@@ -243,6 +243,132 @@ msgstr "Serverfehler"
msgid "Something went wrong! Sorry about that."
msgstr "Etwas ist schief gelaufen! Tut uns leid."
+#: bookwyrm/templates/annual_summary/layout.html:7
+#: bookwyrm/templates/feed/summary_card.html:8
+#, python-format
+msgid "%(year)s in the books"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:43
+#, python-format
+msgid "%(year)s in the books"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:47
+#, python-format
+msgid "%(display_name)s’s year of reading"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:53
+msgid "Share this page"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:61
+msgid "Copy address"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:61
+#: bookwyrm/templates/lists/list.html:194
+msgid "Copied!"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:69
+msgid "Sharing status: public with key"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:70
+msgid "The page can be seen by anyone with the complete address."
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:75
+msgid "Make page private"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:81
+msgid "Sharing status: private"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:82
+msgid "The page is private, only you can see it."
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:87
+msgid "Make page public"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:91
+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
+#, python-format
+msgid "Sadly %(display_name)s didn’t finish any book in %(year)s"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:110
+#, python-format
+msgid "In %(year)s, %(display_name)s read %(books_total)s books
for a total of %(pages_total)s pages!"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:112
+msgid "That’s great!"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:115
+#, python-format
+msgid "That makes an average of %(pages)s pages per book."
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:120
+#, 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
+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/book/book.html:47
+#: bookwyrm/templates/discover/large-book.html:22
+#: bookwyrm/templates/landing/large-book.html:25
+#: bookwyrm/templates/landing/small-book.html:18
+msgid "by"
+msgstr "von"
+
+#: bookwyrm/templates/annual_summary/layout.html:149
+#: bookwyrm/templates/annual_summary/layout.html:170
+#, python-format
+msgid "%(pages)s pages"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:157
+msgid "…and the longest"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:187
+#, python-format
+msgid "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:197
+msgid "Their best rated review"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:210
+#, python-format
+msgid "Their rating: %(rating)s"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:227
+#, python-format
+msgid "All the books %(display_name)s read in 2021"
+msgstr ""
+
#: bookwyrm/templates/author/author.html:18
#: bookwyrm/templates/author/author.html:19
msgid "Edit Author"
@@ -431,13 +557,6 @@ msgstr ""
msgid "Confirm"
msgstr "Bestätigen"
-#: bookwyrm/templates/book/book.html:47
-#: bookwyrm/templates/discover/large-book.html:22
-#: bookwyrm/templates/landing/large-book.html:25
-#: bookwyrm/templates/landing/small-book.html:18
-msgid "by"
-msgstr "von"
-
#: bookwyrm/templates/book/book.html:55 bookwyrm/templates/book/book.html:56
msgid "Edit Book"
msgstr "Buch bearbeiten"
@@ -518,7 +637,7 @@ msgstr "Themen"
msgid "Places"
msgstr "Orte"
-#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75
+#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:77
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@@ -893,7 +1012,7 @@ msgstr "Föderierte Gemeinschaft"
#: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9
-#: bookwyrm/templates/layout.html:101
+#: bookwyrm/templates/layout.html:103
msgid "Directory"
msgstr "Verzeichnis"
@@ -913,6 +1032,8 @@ msgstr "Du kannst dich jederzeit in deinen Profileinstellun
#: bookwyrm/templates/directory/directory.html:29
#: bookwyrm/templates/directory/directory.html:31
#: bookwyrm/templates/feed/goal_card.html:17
+#: bookwyrm/templates/feed/summary_card.html:12
+#: bookwyrm/templates/feed/summary_card.html:14
#: bookwyrm/templates/snippets/announcement.html:34
msgid "Dismiss message"
msgstr "Nachricht schließen"
@@ -1011,7 +1132,7 @@ msgstr "%(username)s hat %(username)s"
msgstr "Direktnachrichten mit %(username)s"
#: bookwyrm/templates/feed/direct_messages.html:10
-#: bookwyrm/templates/layout.html:111
+#: bookwyrm/templates/layout.html:113
msgid "Direct Messages"
msgstr "Direktnachrichten"
@@ -1182,11 +1303,11 @@ msgstr "Einstellungen speichern"
msgid "load 0 unread status(es)"
msgstr "lade 0 ungelesene Statusmeldung(en)"
-#: bookwyrm/templates/feed/feed.html:80
+#: bookwyrm/templates/feed/feed.html:86
msgid "There aren't any activities right now! Try following a user to get started"
msgstr "Hier sind noch keine Aktivitäten! Folge Anderen, um loszulegen"
-#: bookwyrm/templates/feed/feed.html:81
+#: bookwyrm/templates/feed/feed.html:87
msgid "Alternatively, you can try enabling more status types"
msgstr ""
@@ -1206,7 +1327,7 @@ msgstr "Du kannst dein Leseziel jederzeit auf deiner Profil
msgid "Updates"
msgstr "Updates"
-#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:106
+#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:108
msgid "Your Books"
msgstr "Deine Bücher"
@@ -1260,6 +1381,15 @@ msgstr "Keine vorgeschlagenen Benutzer*innen anzeigen"
msgid "View directory"
msgstr "Verzeichnis anzeigen"
+#: bookwyrm/templates/feed/summary_card.html:21
+msgid "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!"
+msgstr ""
+
+#: bookwyrm/templates/feed/summary_card.html:26
+#, python-format
+msgid "Discover your stats for %(year)s!"
+msgstr ""
+
#: bookwyrm/templates/get_started/book_preview.html:6
#, python-format
msgid "Have you read %(book_title)s?"
@@ -1274,7 +1404,7 @@ msgid "What are you reading?"
msgstr "Was liest du gerade?"
#: bookwyrm/templates/get_started/books.html:9
-#: bookwyrm/templates/layout.html:45 bookwyrm/templates/lists/list.html:138
+#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:138
msgid "Search for a book"
msgstr "Nach einem Buch suchen"
@@ -1293,8 +1423,8 @@ msgstr "Du kannst Bücher hinzufügen, wenn du %(site_name)s benutzt."
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/groups/group.html:19
-#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:51
-#: bookwyrm/templates/layout.html:52 bookwyrm/templates/lists/list.html:142
+#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:53
+#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:142
#: bookwyrm/templates/search/layout.html:4
#: bookwyrm/templates/search/layout.html:9
msgid "Search"
@@ -1505,28 +1635,28 @@ msgstr "Bücher importieren"
msgid "Data source:"
msgstr "Datenquelle:"
-#: bookwyrm/templates/import/import.html:37
+#: bookwyrm/templates/import/import.html:40
msgid "Data file:"
msgstr "Datei:"
-#: bookwyrm/templates/import/import.html:45
+#: bookwyrm/templates/import/import.html:48
msgid "Include reviews"
msgstr "Besprechungen einschließen"
-#: bookwyrm/templates/import/import.html:50
+#: bookwyrm/templates/import/import.html:53
msgid "Privacy setting for imported reviews:"
msgstr "Datenschutzeinstellung für importierte Besprechungen:"
-#: bookwyrm/templates/import/import.html:56
+#: bookwyrm/templates/import/import.html:59
#: bookwyrm/templates/settings/federation/instance_blocklist.html:64
msgid "Import"
msgstr "Importieren"
-#: bookwyrm/templates/import/import.html:61
+#: bookwyrm/templates/import/import.html:64
msgid "Recent Imports"
msgstr "Zuletzt importiert"
-#: bookwyrm/templates/import/import.html:63
+#: bookwyrm/templates/import/import.html:66
msgid "No recent imports"
msgstr "Keine aktuellen Importe"
@@ -1594,27 +1724,31 @@ msgstr "Titel"
msgid "ISBN"
msgstr "ISBN"
-#: bookwyrm/templates/import/import_status.html:109
+#: bookwyrm/templates/import/import_status.html:110
+msgid "Openlibrary key"
+msgstr ""
+
+#: bookwyrm/templates/import/import_status.html:114
#: bookwyrm/templates/shelf/shelf.html:145
#: bookwyrm/templates/shelf/shelf.html:169
msgid "Author"
msgstr "Autor*in"
-#: bookwyrm/templates/import/import_status.html:112
+#: bookwyrm/templates/import/import_status.html:117
msgid "Shelf"
msgstr "Regal"
-#: bookwyrm/templates/import/import_status.html:115
+#: bookwyrm/templates/import/import_status.html:120
#: bookwyrm/templates/import/manual_review.html:13
#: bookwyrm/templates/snippets/create_status.html:17
msgid "Review"
msgstr "Besprechen"
-#: bookwyrm/templates/import/import_status.html:119
+#: bookwyrm/templates/import/import_status.html:124
msgid "Book"
msgstr "Buch"
-#: bookwyrm/templates/import/import_status.html:122
+#: bookwyrm/templates/import/import_status.html:127
#: bookwyrm/templates/settings/announcements/announcements.html:38
#: bookwyrm/templates/settings/federation/instance_list.html:46
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44
@@ -1624,31 +1758,31 @@ msgstr "Buch"
msgid "Status"
msgstr "Status"
-#: bookwyrm/templates/import/import_status.html:130
+#: bookwyrm/templates/import/import_status.html:135
msgid "Import preview unavailable."
msgstr ""
-#: bookwyrm/templates/import/import_status.html:162
+#: bookwyrm/templates/import/import_status.html:172
msgid "View imported review"
msgstr ""
-#: bookwyrm/templates/import/import_status.html:176
+#: bookwyrm/templates/import/import_status.html:186
msgid "Imported"
msgstr "Importiert"
-#: bookwyrm/templates/import/import_status.html:182
+#: bookwyrm/templates/import/import_status.html:192
msgid "Needs manual review"
msgstr ""
-#: bookwyrm/templates/import/import_status.html:195
+#: bookwyrm/templates/import/import_status.html:205
msgid "Retry"
msgstr "Erneut versuchen"
-#: bookwyrm/templates/import/import_status.html:213
+#: bookwyrm/templates/import/import_status.html:223
msgid "This import is in an old format that is no longer supported. If you would like to troubleshoot missing items from this import, click the button below to update the import format."
msgstr ""
-#: bookwyrm/templates/import/import_status.html:215
+#: bookwyrm/templates/import/import_status.html:225
msgid "Update import"
msgstr ""
@@ -1769,7 +1903,7 @@ msgid "Login"
msgstr "Anmeldung"
#: bookwyrm/templates/landing/login.html:7
-#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179
+#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:181
#: bookwyrm/templates/ostatus/error.html:37
msgid "Log in"
msgstr "Anmelden"
@@ -1778,7 +1912,7 @@ msgstr "Anmelden"
msgid "Success! Email address confirmed."
msgstr "Alles klar! E-Mail-Adresse bestätigt."
-#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170
+#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:172
#: bookwyrm/templates/ostatus/error.html:28
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
@@ -1786,12 +1920,12 @@ msgstr "Benutzer*inname:"
#: bookwyrm/templates/landing/login.html:27
#: bookwyrm/templates/landing/password_reset.html:26
-#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32
+#: bookwyrm/templates/layout.html:176 bookwyrm/templates/ostatus/error.html:32
#: bookwyrm/templates/snippets/register_form.html:20
msgid "Password:"
msgstr "Passwort:"
-#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176
+#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:178
#: bookwyrm/templates/ostatus/error.html:34
msgid "Forgot your password?"
msgstr "Passwort vergessen?"
@@ -1819,23 +1953,23 @@ msgstr "Passwort zurücksetzen"
msgid "%(site_name)s search"
msgstr "%(site_name)s-Suche"
-#: bookwyrm/templates/layout.html:43
+#: bookwyrm/templates/layout.html:45
msgid "Search for a book, user, or list"
msgstr "Nach einem Buch, einem*r Benutzer*in oder einer Liste suchen"
-#: bookwyrm/templates/layout.html:61 bookwyrm/templates/layout.html:62
+#: bookwyrm/templates/layout.html:63 bookwyrm/templates/layout.html:64
msgid "Main navigation menu"
msgstr "Navigations-Hauptmenü"
-#: bookwyrm/templates/layout.html:72
+#: bookwyrm/templates/layout.html:74
msgid "Feed"
msgstr "Feed"
-#: bookwyrm/templates/layout.html:116
+#: bookwyrm/templates/layout.html:118
msgid "Settings"
msgstr "Einstellungen"
-#: bookwyrm/templates/layout.html:125
+#: bookwyrm/templates/layout.html:127
#: 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
@@ -1843,46 +1977,46 @@ msgstr "Einstellungen"
msgid "Invites"
msgstr "Einladungen"
-#: bookwyrm/templates/layout.html:132
+#: bookwyrm/templates/layout.html:134
msgid "Admin"
msgstr "Administration"
-#: bookwyrm/templates/layout.html:139
+#: bookwyrm/templates/layout.html:141
msgid "Log out"
msgstr "Abmelden"
-#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148
+#: bookwyrm/templates/layout.html:149 bookwyrm/templates/layout.html:150
#: bookwyrm/templates/notifications/notifications_page.html:5
#: bookwyrm/templates/notifications/notifications_page.html:10
msgid "Notifications"
msgstr "Benachrichtigungen"
-#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33
+#: bookwyrm/templates/layout.html:177 bookwyrm/templates/ostatus/error.html:33
msgid "password"
msgstr "Passwort"
-#: bookwyrm/templates/layout.html:187
+#: bookwyrm/templates/layout.html:189
msgid "Join"
msgstr "Beitreten"
-#: bookwyrm/templates/layout.html:221
+#: bookwyrm/templates/layout.html:223
msgid "Successfully posted status"
msgstr "Status veröffentlicht"
-#: bookwyrm/templates/layout.html:222
+#: bookwyrm/templates/layout.html:224
msgid "Error posting status"
msgstr "Fehler beim veröffentlichen des Status"
-#: bookwyrm/templates/layout.html:238
+#: bookwyrm/templates/layout.html:240
msgid "Documentation"
msgstr "Handbuch"
-#: bookwyrm/templates/layout.html:245
+#: bookwyrm/templates/layout.html:247
#, python-format
msgid "Support %(site_name)s on %(support_title)s"
msgstr "%(site_name)s auf %(support_title)s unterstützen"
-#: bookwyrm/templates/layout.html:249
+#: bookwyrm/templates/layout.html:251
msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub."
msgstr "BookWyrm ist open source Software. Du kannst dich auf GitHub beteiligen oder etwas melden."
@@ -2075,15 +2209,11 @@ msgstr "Vorschlagen"
msgid "Embed this list on a website"
msgstr ""
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
msgid "Copy embed code"
msgstr ""
-#: bookwyrm/templates/lists/list.html:193
-msgid "Copied!"
-msgstr ""
-
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr ""
@@ -4145,7 +4275,7 @@ msgstr "Datei überschreitet die maximale Größe von 10MB"
msgid "%(title)s: %(subtitle)s"
msgstr "%(title)s: %(subtitle)s"
-#: bookwyrm/views/imports/import_data.py:64
+#: bookwyrm/views/imports/import_data.py:67
msgid "Not a valid csv file"
msgstr "Keine gültige CSV-Datei"
diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po
index 6ebbeb7f..8de2afe9 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-27 20:43+0000\n"
+"POT-Creation-Date: 2021-12-28 20:12+0000\n"
"PO-Revision-Date: 2021-02-28 17:19-0800\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: English \n"
@@ -145,7 +145,7 @@ msgstr ""
msgid "%(value)s is not a valid username"
msgstr ""
-#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:171
+#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:173
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr ""
@@ -244,6 +244,136 @@ msgstr ""
msgid "Something went wrong! Sorry about that."
msgstr ""
+#: bookwyrm/templates/annual_summary/layout.html:7
+#: bookwyrm/templates/feed/summary_card.html:8
+#, python-format
+msgid "%(year)s in the books"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:43
+#, python-format
+msgid "%(year)s in the books"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:47
+#, python-format
+msgid "%(display_name)s’s year of reading"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:53
+msgid "Share this page"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:67
+msgid "Copy address"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:68
+#: bookwyrm/templates/lists/list.html:194
+msgid "Copied!"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:77
+msgid "Sharing status: public with key"
+msgstr ""
+
+#: 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:83
+msgid "Make page private"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:89
+msgid "Sharing status: private"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:90
+msgid "The page is private, only you can see it."
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:95
+msgid "Make page public"
+msgstr ""
+
+#: 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:112
+#, python-format
+msgid "Sadly %(display_name)s didn’t finish any book in %(year)s"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:118
+#, python-format
+msgid "In %(year)s, %(display_name)s read %(books_total)s book
for a total of %(pages_total)s pages!"
+msgid_plural "In %(year)s, %(display_name)s read %(books_total)s books
for a total of %(pages_total)s pages!"
+msgstr[0] ""
+msgstr[1] ""
+
+#: bookwyrm/templates/annual_summary/layout.html:124
+msgid "That’s great!"
+msgstr ""
+
+#: 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: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:148
+msgid "Their shortest read this year…"
+msgstr ""
+
+#: 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
+#: bookwyrm/templates/landing/small-book.html:18
+msgid "by"
+msgstr ""
+
+#: 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:169
+msgid "…and the longest"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:199
+#, python-format
+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:213
+msgid "Their best rated review"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:226
+#, python-format
+msgid "Their rating: %(rating)s"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:243
+#, python-format
+msgid "All the books %(display_name)s read in %(year)s"
+msgstr ""
+
#: bookwyrm/templates/author/author.html:18
#: bookwyrm/templates/author/author.html:19
msgid "Edit Author"
@@ -432,13 +562,6 @@ msgstr ""
msgid "Confirm"
msgstr ""
-#: bookwyrm/templates/book/book.html:47
-#: bookwyrm/templates/discover/large-book.html:22
-#: bookwyrm/templates/landing/large-book.html:25
-#: bookwyrm/templates/landing/small-book.html:18
-msgid "by"
-msgstr ""
-
#: bookwyrm/templates/book/book.html:55 bookwyrm/templates/book/book.html:56
msgid "Edit Book"
msgstr ""
@@ -519,7 +642,7 @@ msgstr ""
msgid "Places"
msgstr ""
-#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75
+#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:77
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@@ -894,7 +1017,7 @@ msgstr ""
#: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9
-#: bookwyrm/templates/layout.html:101
+#: bookwyrm/templates/layout.html:103
msgid "Directory"
msgstr ""
@@ -914,6 +1037,8 @@ msgstr ""
#: bookwyrm/templates/directory/directory.html:29
#: bookwyrm/templates/directory/directory.html:31
#: bookwyrm/templates/feed/goal_card.html:17
+#: bookwyrm/templates/feed/summary_card.html:12
+#: bookwyrm/templates/feed/summary_card.html:14
#: bookwyrm/templates/snippets/announcement.html:34
msgid "Dismiss message"
msgstr ""
@@ -1012,7 +1137,7 @@ msgstr ""
#: bookwyrm/templates/discover/discover.html:4
#: bookwyrm/templates/discover/discover.html:10
-#: bookwyrm/templates/layout.html:78
+#: bookwyrm/templates/layout.html:80
msgid "Discover"
msgstr ""
@@ -1129,18 +1254,18 @@ msgstr ""
msgid "Reset your %(site_name)s password"
msgstr ""
-#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:37
+#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:39
#, python-format
msgid "%(site_name)s home page"
msgstr ""
#: bookwyrm/templates/embed-layout.html:34
-#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
+#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:232
#, python-format
msgid "About %(site_name)s"
msgstr ""
-#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234
+#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:236
msgid "Contact site admin"
msgstr ""
@@ -1154,7 +1279,7 @@ msgid "Direct Messages with %(username)s"
msgstr ""
#: bookwyrm/templates/feed/direct_messages.html:10
-#: bookwyrm/templates/layout.html:111
+#: bookwyrm/templates/layout.html:113
msgid "Direct Messages"
msgstr ""
@@ -1183,11 +1308,11 @@ msgstr ""
msgid "load 0 unread status(es)"
msgstr ""
-#: bookwyrm/templates/feed/feed.html:80
+#: bookwyrm/templates/feed/feed.html:86
msgid "There aren't any activities right now! Try following a user to get started"
msgstr ""
-#: bookwyrm/templates/feed/feed.html:81
+#: bookwyrm/templates/feed/feed.html:87
msgid "Alternatively, you can try enabling more status types"
msgstr ""
@@ -1207,7 +1332,7 @@ msgstr ""
msgid "Updates"
msgstr ""
-#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:106
+#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:108
msgid "Your Books"
msgstr ""
@@ -1261,6 +1386,15 @@ msgstr ""
msgid "View directory"
msgstr ""
+#: bookwyrm/templates/feed/summary_card.html:21
+msgid "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!"
+msgstr ""
+
+#: bookwyrm/templates/feed/summary_card.html:26
+#, python-format
+msgid "Discover your stats for %(year)s!"
+msgstr ""
+
#: bookwyrm/templates/get_started/book_preview.html:6
#, python-format
msgid "Have you read %(book_title)s?"
@@ -1275,7 +1409,7 @@ msgid "What are you reading?"
msgstr ""
#: bookwyrm/templates/get_started/books.html:9
-#: bookwyrm/templates/layout.html:45 bookwyrm/templates/lists/list.html:138
+#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:138
msgid "Search for a book"
msgstr ""
@@ -1294,8 +1428,8 @@ msgstr ""
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/groups/group.html:19
-#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:51
-#: bookwyrm/templates/layout.html:52 bookwyrm/templates/lists/list.html:142
+#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:53
+#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:142
#: bookwyrm/templates/search/layout.html:4
#: bookwyrm/templates/search/layout.html:9
msgid "Search"
@@ -1774,7 +1908,7 @@ msgid "Login"
msgstr ""
#: bookwyrm/templates/landing/login.html:7
-#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179
+#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:181
#: bookwyrm/templates/ostatus/error.html:37
msgid "Log in"
msgstr ""
@@ -1783,7 +1917,7 @@ msgstr ""
msgid "Success! Email address confirmed."
msgstr ""
-#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170
+#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:172
#: bookwyrm/templates/ostatus/error.html:28
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
@@ -1791,12 +1925,12 @@ msgstr ""
#: bookwyrm/templates/landing/login.html:27
#: bookwyrm/templates/landing/password_reset.html:26
-#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32
+#: bookwyrm/templates/layout.html:176 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:176
+#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:178
#: bookwyrm/templates/ostatus/error.html:34
msgid "Forgot your password?"
msgstr ""
@@ -1824,23 +1958,23 @@ msgstr ""
msgid "%(site_name)s search"
msgstr ""
-#: bookwyrm/templates/layout.html:43
+#: bookwyrm/templates/layout.html:45
msgid "Search for a book, user, or list"
msgstr ""
-#: bookwyrm/templates/layout.html:61 bookwyrm/templates/layout.html:62
+#: bookwyrm/templates/layout.html:63 bookwyrm/templates/layout.html:64
msgid "Main navigation menu"
msgstr ""
-#: bookwyrm/templates/layout.html:72
+#: bookwyrm/templates/layout.html:74
msgid "Feed"
msgstr ""
-#: bookwyrm/templates/layout.html:116
+#: bookwyrm/templates/layout.html:118
msgid "Settings"
msgstr ""
-#: bookwyrm/templates/layout.html:125
+#: bookwyrm/templates/layout.html:127
#: 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
@@ -1848,46 +1982,46 @@ msgstr ""
msgid "Invites"
msgstr ""
-#: bookwyrm/templates/layout.html:132
+#: bookwyrm/templates/layout.html:134
msgid "Admin"
msgstr ""
-#: bookwyrm/templates/layout.html:139
+#: bookwyrm/templates/layout.html:141
msgid "Log out"
msgstr ""
-#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148
+#: bookwyrm/templates/layout.html:149 bookwyrm/templates/layout.html:150
#: bookwyrm/templates/notifications/notifications_page.html:5
#: bookwyrm/templates/notifications/notifications_page.html:10
msgid "Notifications"
msgstr ""
-#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33
+#: bookwyrm/templates/layout.html:177 bookwyrm/templates/ostatus/error.html:33
msgid "password"
msgstr ""
-#: bookwyrm/templates/layout.html:187
+#: bookwyrm/templates/layout.html:189
msgid "Join"
msgstr ""
-#: bookwyrm/templates/layout.html:221
+#: bookwyrm/templates/layout.html:223
msgid "Successfully posted status"
msgstr ""
-#: bookwyrm/templates/layout.html:222
+#: bookwyrm/templates/layout.html:224
msgid "Error posting status"
msgstr ""
-#: bookwyrm/templates/layout.html:238
+#: bookwyrm/templates/layout.html:240
msgid "Documentation"
msgstr ""
-#: bookwyrm/templates/layout.html:245
+#: bookwyrm/templates/layout.html:247
#, python-format
msgid "Support %(site_name)s on %(support_title)s"
msgstr ""
-#: bookwyrm/templates/layout.html:249
+#: bookwyrm/templates/layout.html:251
msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub."
msgstr ""
@@ -2080,15 +2214,11 @@ msgstr ""
msgid "Embed this list on a website"
msgstr ""
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
msgid "Copy embed code"
msgstr ""
-#: bookwyrm/templates/lists/list.html:193
-msgid "Copied!"
-msgstr ""
-
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr ""
diff --git a/locale/es_ES/LC_MESSAGES/django.mo b/locale/es_ES/LC_MESSAGES/django.mo
index fb346ca0..1169b92f 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 c9f60634..a59ef61a 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-08 15:40+0000\n"
-"PO-Revision-Date: 2021-12-09 18:56\n"
+"POT-Creation-Date: 2021-12-28 15:00+0000\n"
+"PO-Revision-Date: 2021-12-28 17:59\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Spanish\n"
"Language: es\n"
@@ -72,16 +72,16 @@ msgstr "Ascendente"
msgid "Descending"
msgstr "Descendente"
-#: bookwyrm/importers/importer.py:141 bookwyrm/importers/importer.py:163
+#: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167
msgid "Error loading book"
msgstr "Error en cargar libro"
-#: bookwyrm/importers/importer.py:150
+#: bookwyrm/importers/importer.py:154
msgid "Could not find a match for book"
msgstr "No se pudo encontrar el libro"
#: bookwyrm/models/base_model.py:17
-#: bookwyrm/templates/import/import_status.html:190
+#: bookwyrm/templates/import/import_status.html:200
msgid "Pending"
msgstr "Pendiente"
@@ -144,7 +144,7 @@ msgstr "%(value)s no es un remote_id válido"
msgid "%(value)s is not a valid username"
msgstr "%(value)s no es un usuario válido"
-#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:171
+#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:173
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "nombre de usuario"
@@ -243,6 +243,132 @@ msgstr "Error del Servidor"
msgid "Something went wrong! Sorry about that."
msgstr "¡Algo salió mal! Disculpa."
+#: bookwyrm/templates/annual_summary/layout.html:7
+#: bookwyrm/templates/feed/summary_card.html:8
+#, python-format
+msgid "%(year)s in the books"
+msgstr "%(year)s en libros"
+
+#: bookwyrm/templates/annual_summary/layout.html:43
+#, python-format
+msgid "%(year)s in the books"
+msgstr "%(year)s en libros"
+
+#: bookwyrm/templates/annual_summary/layout.html:47
+#, python-format
+msgid "%(display_name)s’s year of reading"
+msgstr "El año de lectura de %(display_name)s"
+
+#: bookwyrm/templates/annual_summary/layout.html:53
+msgid "Share this page"
+msgstr "Compartir esta página"
+
+#: bookwyrm/templates/annual_summary/layout.html:61
+msgid "Copy address"
+msgstr "Copiar dirección"
+
+#: bookwyrm/templates/annual_summary/layout.html:61
+#: bookwyrm/templates/lists/list.html:194
+msgid "Copied!"
+msgstr "¡Copiado!"
+
+#: bookwyrm/templates/annual_summary/layout.html:69
+msgid "Sharing status: public with key"
+msgstr "Nivel de compartido: público con llave"
+
+#: bookwyrm/templates/annual_summary/layout.html:70
+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
+msgid "Make page private"
+msgstr "Hacer privada la página"
+
+#: bookwyrm/templates/annual_summary/layout.html:81
+msgid "Sharing status: private"
+msgstr "Nivel de compartido: privado"
+
+#: bookwyrm/templates/annual_summary/layout.html:82
+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
+msgid "Make page public"
+msgstr "Hacer pública la página"
+
+#: bookwyrm/templates/annual_summary/layout.html:91
+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
+#, 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
+#, 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!"
+
+#: bookwyrm/templates/annual_summary/layout.html:112
+msgid "That’s great!"
+msgstr "¡Eso es genial!"
+
+#: bookwyrm/templates/annual_summary/layout.html:115
+#, 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
+#, 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
+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/book/book.html:47
+#: bookwyrm/templates/discover/large-book.html:22
+#: bookwyrm/templates/landing/large-book.html:25
+#: bookwyrm/templates/landing/small-book.html:18
+msgid "by"
+msgstr "por"
+
+#: bookwyrm/templates/annual_summary/layout.html:149
+#: bookwyrm/templates/annual_summary/layout.html:170
+#, python-format
+msgid "%(pages)s pages"
+msgstr "%(pages)s páginas"
+
+#: bookwyrm/templates/annual_summary/layout.html:157
+msgid "…and the longest"
+msgstr "… y la más larga"
+
+#: bookwyrm/templates/annual_summary/layout.html:187
+#, 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"
+
+#: bookwyrm/templates/annual_summary/layout.html:197
+msgid "Their best rated review"
+msgstr "Su mejor valoración"
+
+#: bookwyrm/templates/annual_summary/layout.html:210
+#, python-format
+msgid "Their rating: %(rating)s"
+msgstr "Su valoración: %(rating)s"
+
+#: bookwyrm/templates/annual_summary/layout.html:227
+#, 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"
+
#: bookwyrm/templates/author/author.html:18
#: bookwyrm/templates/author/author.html:19
msgid "Edit Author"
@@ -267,7 +393,7 @@ msgstr "Muerto:"
#: bookwyrm/templates/author/author.html:70
msgid "External links"
-msgstr ""
+msgstr "Enlaces externos"
#: bookwyrm/templates/author/author.html:75
msgid "Wikipedia"
@@ -282,7 +408,7 @@ msgstr "Ver registro ISNI"
#: bookwyrm/templates/book/book.html:93
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
-msgstr ""
+msgstr "Cargar datos"
#: bookwyrm/templates/author/author.html:92
#: bookwyrm/templates/book/book.html:96
@@ -381,7 +507,7 @@ msgstr "Clave Goodreads:"
#: bookwyrm/templates/author/edit_author.html:105
msgid "ISNI:"
-msgstr ""
+msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:115
#: bookwyrm/templates/book/book.html:157
@@ -420,7 +546,7 @@ msgstr "Cancelar"
#: bookwyrm/templates/author/sync_modal.html:15
#, python-format
msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten."
-msgstr ""
+msgstr "La carga de datos se conectará a %(source_name)s y comprobará si hay metadatos sobre este autor que no están presentes aquí. Los metadatos existentes no serán sobrescritos."
#: bookwyrm/templates/author/sync_modal.html:23
#: bookwyrm/templates/book/edit/edit_book.html:108
@@ -431,13 +557,6 @@ msgstr ""
msgid "Confirm"
msgstr "Confirmar"
-#: bookwyrm/templates/book/book.html:47
-#: bookwyrm/templates/discover/large-book.html:22
-#: bookwyrm/templates/landing/large-book.html:25
-#: bookwyrm/templates/landing/small-book.html:18
-msgid "by"
-msgstr "por"
-
#: bookwyrm/templates/book/book.html:55 bookwyrm/templates/book/book.html:56
msgid "Edit Book"
msgstr "Editar Libro"
@@ -518,7 +637,7 @@ msgstr "Sujetos"
msgid "Places"
msgstr "Lugares"
-#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75
+#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:77
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@@ -810,7 +929,7 @@ msgstr "Eliminar estas fechas de lectura"
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
-msgstr ""
+msgstr "La carga de datos se conectará a %(source_name)s y comprobará si hay metadatos sobre este libro que no están presentes aquí. Los metadatos existentes no serán sobrescritos."
#: bookwyrm/templates/components/inline_form.html:8
#: bookwyrm/templates/components/modal.html:11
@@ -893,7 +1012,7 @@ msgstr "Comunidad federalizada"
#: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9
-#: bookwyrm/templates/layout.html:101
+#: bookwyrm/templates/layout.html:103
msgid "Directory"
msgstr "Directorio"
@@ -913,6 +1032,8 @@ msgstr "Puedes optar por no en cualquier hora en tus config
#: bookwyrm/templates/directory/directory.html:29
#: bookwyrm/templates/directory/directory.html:31
#: bookwyrm/templates/feed/goal_card.html:17
+#: bookwyrm/templates/feed/summary_card.html:12
+#: bookwyrm/templates/feed/summary_card.html:14
#: bookwyrm/templates/snippets/announcement.html:34
msgid "Dismiss message"
msgstr "Descartar mensaje"
@@ -1011,7 +1132,7 @@ msgstr "%(username)s citó %(username)s"
msgstr "Mensajes directos con %(username)s"
#: bookwyrm/templates/feed/direct_messages.html:10
-#: bookwyrm/templates/layout.html:111
+#: bookwyrm/templates/layout.html:113
msgid "Direct Messages"
msgstr "Mensajes directos"
@@ -1182,11 +1303,11 @@ msgstr "Guardar ajustes"
msgid "load 0 unread status(es)"
msgstr "cargar 0 estado(s) no leído(s)"
-#: bookwyrm/templates/feed/feed.html:80
+#: bookwyrm/templates/feed/feed.html:86
msgid "There aren't any activities right now! Try following a user to get started"
msgstr "¡No hay actividad ahora mismo! Sigue a otro usuario para empezar"
-#: bookwyrm/templates/feed/feed.html:81
+#: bookwyrm/templates/feed/feed.html:87
msgid "Alternatively, you can try enabling more status types"
msgstr "Alternativamente, puedes intentar habilitar más tipos de estado"
@@ -1206,7 +1327,7 @@ msgstr "Puedes establecer o cambiar tu objetivo de lectura en cualquier momento
msgid "Updates"
msgstr "Actualizaciones"
-#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:106
+#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:108
msgid "Your Books"
msgstr "Tus libros"
@@ -1260,6 +1381,15 @@ msgstr "No mostrar usuarios sugeridos"
msgid "View directory"
msgstr "Ver directorio"
+#: bookwyrm/templates/feed/summary_card.html:21
+msgid "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!"
+msgstr "El fin del año es el mejor momento para hacer balance de todos los libros leídos durante los últimos 12 meses. ¿Cuántas páginas has leído? ¿Cuál es el libro que mejor has valorado este año? ¡Hemos compilado estas estadísticas, y más!"
+
+#: bookwyrm/templates/feed/summary_card.html:26
+#, python-format
+msgid "Discover your stats for %(year)s!"
+msgstr "¡Descubre tus estadísticas de %(year)s!"
+
#: bookwyrm/templates/get_started/book_preview.html:6
#, python-format
msgid "Have you read %(book_title)s?"
@@ -1274,7 +1404,7 @@ msgid "What are you reading?"
msgstr "¿Qué estás leyendo?"
#: bookwyrm/templates/get_started/books.html:9
-#: bookwyrm/templates/layout.html:45 bookwyrm/templates/lists/list.html:138
+#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:138
msgid "Search for a book"
msgstr "Buscar libros"
@@ -1293,8 +1423,8 @@ msgstr "Puedes agregar libros cuando comiences a usar %(site_name)s."
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/groups/group.html:19
-#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:51
-#: bookwyrm/templates/layout.html:52 bookwyrm/templates/lists/list.html:142
+#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:53
+#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:142
#: bookwyrm/templates/search/layout.html:4
#: bookwyrm/templates/search/layout.html:9
msgid "Search"
@@ -1505,28 +1635,28 @@ msgstr "Importar libros"
msgid "Data source:"
msgstr "Fuente de datos:"
-#: bookwyrm/templates/import/import.html:37
+#: bookwyrm/templates/import/import.html:40
msgid "Data file:"
msgstr "Archivo de datos:"
-#: bookwyrm/templates/import/import.html:45
+#: bookwyrm/templates/import/import.html:48
msgid "Include reviews"
msgstr "Incluir reseñas"
-#: bookwyrm/templates/import/import.html:50
+#: bookwyrm/templates/import/import.html:53
msgid "Privacy setting for imported reviews:"
msgstr "Configuración de privacidad para las reseñas importadas:"
-#: bookwyrm/templates/import/import.html:56
+#: bookwyrm/templates/import/import.html:59
#: bookwyrm/templates/settings/federation/instance_blocklist.html:64
msgid "Import"
msgstr "Importar"
-#: bookwyrm/templates/import/import.html:61
+#: bookwyrm/templates/import/import.html:64
msgid "Recent Imports"
msgstr "Importaciones recientes"
-#: bookwyrm/templates/import/import.html:63
+#: bookwyrm/templates/import/import.html:66
msgid "No recent imports"
msgstr "No hay ninguna importación reciente"
@@ -1594,27 +1724,31 @@ msgstr "Título"
msgid "ISBN"
msgstr "ISBN"
-#: bookwyrm/templates/import/import_status.html:109
+#: bookwyrm/templates/import/import_status.html:110
+msgid "Openlibrary key"
+msgstr "Clave de OpenLibrary"
+
+#: bookwyrm/templates/import/import_status.html:114
#: bookwyrm/templates/shelf/shelf.html:145
#: bookwyrm/templates/shelf/shelf.html:169
msgid "Author"
msgstr "Autor/Autora"
-#: bookwyrm/templates/import/import_status.html:112
+#: bookwyrm/templates/import/import_status.html:117
msgid "Shelf"
msgstr "Estantería"
-#: bookwyrm/templates/import/import_status.html:115
+#: bookwyrm/templates/import/import_status.html:120
#: bookwyrm/templates/import/manual_review.html:13
#: bookwyrm/templates/snippets/create_status.html:17
msgid "Review"
msgstr "Reseña"
-#: bookwyrm/templates/import/import_status.html:119
+#: bookwyrm/templates/import/import_status.html:124
msgid "Book"
msgstr "Libro"
-#: bookwyrm/templates/import/import_status.html:122
+#: bookwyrm/templates/import/import_status.html:127
#: bookwyrm/templates/settings/announcements/announcements.html:38
#: bookwyrm/templates/settings/federation/instance_list.html:46
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44
@@ -1624,31 +1758,31 @@ msgstr "Libro"
msgid "Status"
msgstr "Estado"
-#: bookwyrm/templates/import/import_status.html:130
+#: bookwyrm/templates/import/import_status.html:135
msgid "Import preview unavailable."
msgstr "Previsualización de la importación no disponible."
-#: bookwyrm/templates/import/import_status.html:162
+#: bookwyrm/templates/import/import_status.html:172
msgid "View imported review"
msgstr "Ver reseña importada"
-#: bookwyrm/templates/import/import_status.html:176
+#: bookwyrm/templates/import/import_status.html:186
msgid "Imported"
msgstr "Importado"
-#: bookwyrm/templates/import/import_status.html:182
+#: bookwyrm/templates/import/import_status.html:192
msgid "Needs manual review"
msgstr "Necesita revisión manual"
-#: bookwyrm/templates/import/import_status.html:195
+#: bookwyrm/templates/import/import_status.html:205
msgid "Retry"
msgstr "Reintentar"
-#: bookwyrm/templates/import/import_status.html:213
+#: bookwyrm/templates/import/import_status.html:223
msgid "This import is in an old format that is no longer supported. If you would like to troubleshoot missing items from this import, click the button below to update the import format."
msgstr "Esta importación está en un formato antiguo que ya no es compatible. Si desea solucionar los elementos que faltan en esta importación, haga clic en el botón de abajo para actualizar el formato de importación."
-#: bookwyrm/templates/import/import_status.html:215
+#: bookwyrm/templates/import/import_status.html:225
msgid "Update import"
msgstr "Actualizar importación"
@@ -1769,7 +1903,7 @@ msgid "Login"
msgstr "Iniciar sesión"
#: bookwyrm/templates/landing/login.html:7
-#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179
+#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:181
#: bookwyrm/templates/ostatus/error.html:37
msgid "Log in"
msgstr "Iniciar sesión"
@@ -1778,7 +1912,7 @@ msgstr "Iniciar sesión"
msgid "Success! Email address confirmed."
msgstr "¡Éxito! Dirección de correo electrónico confirmada."
-#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170
+#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:172
#: bookwyrm/templates/ostatus/error.html:28
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
@@ -1786,12 +1920,12 @@ msgstr "Nombre de usuario:"
#: bookwyrm/templates/landing/login.html:27
#: bookwyrm/templates/landing/password_reset.html:26
-#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32
+#: bookwyrm/templates/layout.html:176 bookwyrm/templates/ostatus/error.html:32
#: bookwyrm/templates/snippets/register_form.html:20
msgid "Password:"
msgstr "Contraseña:"
-#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176
+#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:178
#: bookwyrm/templates/ostatus/error.html:34
msgid "Forgot your password?"
msgstr "¿Olvidaste tu contraseña?"
@@ -1819,23 +1953,23 @@ msgstr "Restablecer contraseña"
msgid "%(site_name)s search"
msgstr "Busqueda en %(site_name)s"
-#: bookwyrm/templates/layout.html:43
+#: bookwyrm/templates/layout.html:45
msgid "Search for a book, user, or list"
msgstr "Buscar un libro o un usuario o una lista"
-#: bookwyrm/templates/layout.html:61 bookwyrm/templates/layout.html:62
+#: bookwyrm/templates/layout.html:63 bookwyrm/templates/layout.html:64
msgid "Main navigation menu"
msgstr "Menú de navigación central"
-#: bookwyrm/templates/layout.html:72
+#: bookwyrm/templates/layout.html:74
msgid "Feed"
msgstr "Actividad"
-#: bookwyrm/templates/layout.html:116
+#: bookwyrm/templates/layout.html:118
msgid "Settings"
msgstr "Configuración"
-#: bookwyrm/templates/layout.html:125
+#: bookwyrm/templates/layout.html:127
#: 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
@@ -1843,46 +1977,46 @@ msgstr "Configuración"
msgid "Invites"
msgstr "Invitaciones"
-#: bookwyrm/templates/layout.html:132
+#: bookwyrm/templates/layout.html:134
msgid "Admin"
msgstr "Administrador"
-#: bookwyrm/templates/layout.html:139
+#: bookwyrm/templates/layout.html:141
msgid "Log out"
msgstr "Cerrar sesión"
-#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148
+#: bookwyrm/templates/layout.html:149 bookwyrm/templates/layout.html:150
#: bookwyrm/templates/notifications/notifications_page.html:5
#: bookwyrm/templates/notifications/notifications_page.html:10
msgid "Notifications"
msgstr "Notificaciones"
-#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33
+#: bookwyrm/templates/layout.html:177 bookwyrm/templates/ostatus/error.html:33
msgid "password"
msgstr "contraseña"
-#: bookwyrm/templates/layout.html:187
+#: bookwyrm/templates/layout.html:189
msgid "Join"
msgstr "Unirse"
-#: bookwyrm/templates/layout.html:221
+#: bookwyrm/templates/layout.html:223
msgid "Successfully posted status"
msgstr "Estado publicado con éxito"
-#: bookwyrm/templates/layout.html:222
+#: bookwyrm/templates/layout.html:224
msgid "Error posting status"
msgstr "Error al publicar el estado"
-#: bookwyrm/templates/layout.html:238
+#: bookwyrm/templates/layout.html:240
msgid "Documentation"
msgstr "Documentación de Django"
-#: bookwyrm/templates/layout.html:245
+#: bookwyrm/templates/layout.html:247
#, python-format
msgid "Support %(site_name)s on %(support_title)s"
msgstr "Apoyar %(site_name)s en %(support_title)s"
-#: bookwyrm/templates/layout.html:249
+#: bookwyrm/templates/layout.html:251
msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub."
msgstr "BookWyrm es software de código abierto. Puedes contribuir o reportar problemas en GitHub."
@@ -1942,12 +2076,12 @@ msgstr "Editar lista"
#: bookwyrm/templates/lists/embed-list.html:7
#, python-format
msgid "%(list_name)s, a list by %(owner)s"
-msgstr ""
+msgstr "%(list_name)s, una lista de %(owner)s"
#: bookwyrm/templates/lists/embed-list.html:17
#, python-format
msgid "on %(site_name)s"
-msgstr ""
+msgstr "en %(site_name)s"
#: bookwyrm/templates/lists/embed-list.html:26
#: bookwyrm/templates/lists/list.html:29
@@ -2073,20 +2207,16 @@ msgstr "Sugerir"
#: bookwyrm/templates/lists/list.html:191
msgid "Embed this list on a website"
-msgstr ""
+msgstr "Incrustar esta lista en un sitio web"
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
msgid "Copy embed code"
-msgstr ""
+msgstr "Copiar código para incrustar"
-#: bookwyrm/templates/lists/list.html:193
-msgid "Copied!"
-msgstr ""
-
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
-msgstr ""
+msgstr "%(list_name)s, una lista de %(owner)s en %(site_name)s"
#: bookwyrm/templates/lists/list_items.html:15
msgid "Saved"
@@ -2276,116 +2406,116 @@ msgstr "¡Estás al día!"
#: bookwyrm/templates/ostatus/error.html:7
#, python-format
msgid "%(account)s is not a valid username"
-msgstr ""
+msgstr "%(account)s no es un nombre de usuario válido"
#: bookwyrm/templates/ostatus/error.html:8
#: bookwyrm/templates/ostatus/error.html:13
msgid "Check you have the correct username before trying again"
-msgstr ""
+msgstr "Comprueba que tienes el nombre de usuario correcto antes de intentarlo de nuevo"
#: bookwyrm/templates/ostatus/error.html:12
#, python-format
msgid "%(account)s could not be found or %(remote_domain)s
does not support identity discovery"
-msgstr ""
+msgstr "%(account)s no se pudo encontrar o %(remote_domain)s
no soporta el descubrimiento de identidad"
#: bookwyrm/templates/ostatus/error.html:17
#, python-format
msgid "%(account)s was found but %(remote_domain)s
does not support 'remote follow'"
-msgstr ""
+msgstr "%(account)s ha sido encontrado, pero %(remote_domain)s
no soporta el 'seguimiento remoto'"
#: bookwyrm/templates/ostatus/error.html:18
#, python-format
msgid "Try searching for %(user)s on %(remote_domain)s
instead"
-msgstr ""
+msgstr "Intenta buscar %(user)s en %(remote_domain)s
en su lugar"
#: bookwyrm/templates/ostatus/error.html:46
#, python-format
msgid "Something went wrong trying to follow %(account)s"
-msgstr ""
+msgstr "Algo salió mal al intentar seguir a %(account)s"
#: bookwyrm/templates/ostatus/error.html:47
msgid "Check you have the correct username before trying again."
-msgstr ""
+msgstr "Comprueba que tienes el nombre de usuario correcto antes de intentarlo de nuevo."
#: bookwyrm/templates/ostatus/error.html:51
#, python-format
msgid "You have blocked %(account)s"
-msgstr ""
+msgstr "Has bloqueado a %(account)s"
#: bookwyrm/templates/ostatus/error.html:55
#, python-format
msgid "%(account)s has blocked you"
-msgstr ""
+msgstr "%(account)s te ha bloqueado"
#: bookwyrm/templates/ostatus/error.html:59
#, python-format
msgid "You are already following %(account)s"
-msgstr ""
+msgstr "Ya estás siguiendo a %(account)s"
#: bookwyrm/templates/ostatus/error.html:63
#, python-format
msgid "You have already requested to follow %(account)s"
-msgstr ""
+msgstr "Ya has solicitado seguir a %(account)s"
#: bookwyrm/templates/ostatus/remote_follow.html:6
#, python-format
msgid "Follow %(username)s on the fediverse"
-msgstr ""
+msgstr "Sigue a %(username)s en el Fediverso"
#: bookwyrm/templates/ostatus/remote_follow.html:33
#, python-format
msgid "Follow %(username)s from another Fediverse account like BookWyrm, Mastodon, or Pleroma."
-msgstr ""
+msgstr "Sigue a %(username)s desde otra cuenta del Fediverso, como BookWyrm, Mastodon o Pleroma."
#: bookwyrm/templates/ostatus/remote_follow.html:40
msgid "User handle to follow from:"
-msgstr ""
+msgstr "Nombre de usuario desde el que seguir:"
#: bookwyrm/templates/ostatus/remote_follow.html:42
msgid "Follow!"
-msgstr ""
+msgstr "¡Seguir!"
#: bookwyrm/templates/ostatus/remote_follow_button.html:8
msgid "Follow on Fediverse"
-msgstr ""
+msgstr "Seguir en el Fediverso"
#: bookwyrm/templates/ostatus/remote_follow_button.html:12
msgid "This link opens in a pop-up window"
-msgstr ""
+msgstr "Este enlace se abre en una ventana emergente"
#: bookwyrm/templates/ostatus/subscribe.html:8
#, python-format
msgid "Log in to %(sitename)s"
-msgstr ""
+msgstr "Iniciar sesión en %(sitename)s"
#: bookwyrm/templates/ostatus/subscribe.html:10
#, python-format
msgid "Error following from %(sitename)s"
-msgstr ""
+msgstr "Error al seguir desde %(sitename)s"
#: bookwyrm/templates/ostatus/subscribe.html:12
#: bookwyrm/templates/ostatus/subscribe.html:22
#, python-format
msgid "Follow from %(sitename)s"
-msgstr ""
+msgstr "Seguir desde %(sitename)s"
#: bookwyrm/templates/ostatus/subscribe.html:18
msgid "Uh oh..."
-msgstr ""
+msgstr "Oh-oh..."
#: bookwyrm/templates/ostatus/subscribe.html:20
msgid "Let's log in first..."
-msgstr ""
+msgstr "Iniciemos sesión primero..."
#: bookwyrm/templates/ostatus/subscribe.html:51
#, python-format
msgid "Follow %(username)s"
-msgstr ""
+msgstr "Seguir a %(username)s"
#: bookwyrm/templates/ostatus/success.html:28
#, python-format
msgid "You are now following %(display_name)s!"
-msgstr ""
+msgstr "¡Ahora sigues a %(display_name)s!"
#: bookwyrm/templates/preferences/blocks.html:4
#: bookwyrm/templates/preferences/blocks.html:7
@@ -4145,7 +4275,7 @@ msgstr "Archivo excede el tamaño máximo: 10MB"
msgid "%(title)s: %(subtitle)s"
msgstr "%(title)s: %(subtitle)s"
-#: bookwyrm/views/imports/import_data.py:64
+#: bookwyrm/views/imports/import_data.py:67
msgid "Not a valid csv file"
msgstr "No un archivo csv válido"
diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo
index ad27eec0..bf14adb8 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 e895d5c7..2710a8b9 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-08 15:40+0000\n"
-"PO-Revision-Date: 2021-12-26 09:59\n"
+"POT-Creation-Date: 2021-12-28 15:00+0000\n"
+"PO-Revision-Date: 2021-12-28 16:59\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: French\n"
"Language: fr\n"
@@ -72,16 +72,16 @@ msgstr "Ordre croissant"
msgid "Descending"
msgstr "Ordre décroissant"
-#: bookwyrm/importers/importer.py:141 bookwyrm/importers/importer.py:163
+#: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167
msgid "Error loading book"
msgstr "Erreur lors du chargement du livre"
-#: bookwyrm/importers/importer.py:150
+#: bookwyrm/importers/importer.py:154
msgid "Could not find a match for book"
msgstr "Impossible de trouver une correspondance pour le livre"
#: bookwyrm/models/base_model.py:17
-#: bookwyrm/templates/import/import_status.html:190
+#: bookwyrm/templates/import/import_status.html:200
msgid "Pending"
msgstr "En attente"
@@ -144,7 +144,7 @@ msgstr "%(value)s n’est pas une remote_id valide."
msgid "%(value)s is not a valid username"
msgstr "%(value)s n’est pas un nom de compte valide."
-#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:171
+#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:173
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "nom du compte :"
@@ -243,6 +243,132 @@ msgstr "Erreur côté serveur"
msgid "Something went wrong! Sorry about that."
msgstr "Une erreur s’est produite ; désolé !"
+#: bookwyrm/templates/annual_summary/layout.html:7
+#: bookwyrm/templates/feed/summary_card.html:8
+#, python-format
+msgid "%(year)s in the books"
+msgstr "les livres de %(year)s"
+
+#: bookwyrm/templates/annual_summary/layout.html:43
+#, python-format
+msgid "%(year)s in the books"
+msgstr "les livres de %(year)s"
+
+#: bookwyrm/templates/annual_summary/layout.html:47
+#, python-format
+msgid "%(display_name)s’s year of reading"
+msgstr "l’année de lecture de %(display_name)s"
+
+#: bookwyrm/templates/annual_summary/layout.html:53
+msgid "Share this page"
+msgstr "Partager cette page"
+
+#: bookwyrm/templates/annual_summary/layout.html:61
+msgid "Copy address"
+msgstr "Copier l’adresse"
+
+#: bookwyrm/templates/annual_summary/layout.html:61
+#: bookwyrm/templates/lists/list.html:194
+msgid "Copied!"
+msgstr "Copié!"
+
+#: bookwyrm/templates/annual_summary/layout.html:69
+msgid "Sharing status: public with key"
+msgstr "Statut de partage : public avec clé"
+
+#: bookwyrm/templates/annual_summary/layout.html:70
+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
+msgid "Make page private"
+msgstr "Rendre cette page privée"
+
+#: bookwyrm/templates/annual_summary/layout.html:81
+msgid "Sharing status: private"
+msgstr "Statut de partage : privé"
+
+#: bookwyrm/templates/annual_summary/layout.html:82
+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
+msgid "Make page public"
+msgstr "Rendre cette page publique"
+
+#: bookwyrm/templates/annual_summary/layout.html:91
+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
+#, 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
+#, 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 !"
+
+#: bookwyrm/templates/annual_summary/layout.html:112
+msgid "That’s great!"
+msgstr "C’est génial !"
+
+#: bookwyrm/templates/annual_summary/layout.html:115
+#, 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
+#, 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
+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/book/book.html:47
+#: bookwyrm/templates/discover/large-book.html:22
+#: bookwyrm/templates/landing/large-book.html:25
+#: bookwyrm/templates/landing/small-book.html:18
+msgid "by"
+msgstr "de"
+
+#: bookwyrm/templates/annual_summary/layout.html:149
+#: bookwyrm/templates/annual_summary/layout.html:170
+#, python-format
+msgid "%(pages)s pages"
+msgstr "%(pages)s pages"
+
+#: bookwyrm/templates/annual_summary/layout.html:157
+msgid "…and the longest"
+msgstr "…et sa plus longue lecture"
+
+#: bookwyrm/templates/annual_summary/layout.html:187
+#, 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"
+
+#: bookwyrm/templates/annual_summary/layout.html:197
+msgid "Their best rated review"
+msgstr "Son avis le mieux noté"
+
+#: bookwyrm/templates/annual_summary/layout.html:210
+#, python-format
+msgid "Their rating: %(rating)s"
+msgstr "Sa note : %(rating)s"
+
+#: bookwyrm/templates/annual_summary/layout.html:227
+#, python-format
+msgid "All the books %(display_name)s read in 2021"
+msgstr "Tous les livres que %(display_name)s a lus"
+
#: bookwyrm/templates/author/author.html:18
#: bookwyrm/templates/author/author.html:19
msgid "Edit Author"
@@ -431,13 +557,6 @@ msgstr "Le chargement des données se connectera à %(source_name)s%(username)s a cité un passage de %(username)s"
msgstr "Messages directs avec %(username)s"
#: bookwyrm/templates/feed/direct_messages.html:10
-#: bookwyrm/templates/layout.html:111
+#: bookwyrm/templates/layout.html:113
msgid "Direct Messages"
msgstr "Messages directs"
@@ -1182,11 +1303,11 @@ msgstr "Enregistrer les réglages"
msgid "load 0 unread status(es)"
msgstr "charger 0 statut(s) non lus"
-#: bookwyrm/templates/feed/feed.html:80
+#: bookwyrm/templates/feed/feed.html:86
msgid "There aren't any activities right now! Try following a user to get started"
msgstr "Aucune activité pour l’instant ! Abonnez‑vous à quelqu’un pour commencer"
-#: bookwyrm/templates/feed/feed.html:81
+#: bookwyrm/templates/feed/feed.html:87
msgid "Alternatively, you can try enabling more status types"
msgstr "Sinon, vous pouvez essayer d’activer plus de types de statuts"
@@ -1206,7 +1327,7 @@ msgstr "Vous pouvez définir ou changer votre défi lecture à n’importe quel
msgid "Updates"
msgstr "Mises à jour"
-#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:106
+#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:108
msgid "Your Books"
msgstr "Vos Livres"
@@ -1260,6 +1381,15 @@ msgstr "Ne pas afficher les utilisateurs suggérés"
msgid "View directory"
msgstr "Voir le répertoire"
+#: bookwyrm/templates/feed/summary_card.html:21
+msgid "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!"
+msgstr "La fin de l'année est le meilleur moment pour faire le point sur tous les livres lus au cours des 12 derniers mois. Combien de pages avez-vous lues ? Quel est votre livre le mieux noté de l'année ? Nous avons compilé ces statistiques, et plus encore !"
+
+#: bookwyrm/templates/feed/summary_card.html:26
+#, python-format
+msgid "Discover your stats for %(year)s!"
+msgstr "Découvrez vos stats pour %(year)s !"
+
#: bookwyrm/templates/get_started/book_preview.html:6
#, python-format
msgid "Have you read %(book_title)s?"
@@ -1274,7 +1404,7 @@ msgid "What are you reading?"
msgstr "Que lisez‑vous ?"
#: bookwyrm/templates/get_started/books.html:9
-#: bookwyrm/templates/layout.html:45 bookwyrm/templates/lists/list.html:138
+#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:138
msgid "Search for a book"
msgstr "Chercher un livre"
@@ -1293,8 +1423,8 @@ msgstr "Vous pourrez ajouter des livres lorsque vous commencerez à utiliser %(s
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/groups/group.html:19
-#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:51
-#: bookwyrm/templates/layout.html:52 bookwyrm/templates/lists/list.html:142
+#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:53
+#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:142
#: bookwyrm/templates/search/layout.html:4
#: bookwyrm/templates/search/layout.html:9
msgid "Search"
@@ -1505,28 +1635,28 @@ msgstr "Importer des livres"
msgid "Data source:"
msgstr "Source de données :"
-#: bookwyrm/templates/import/import.html:37
+#: bookwyrm/templates/import/import.html:40
msgid "Data file:"
msgstr "Fichier de données :"
-#: bookwyrm/templates/import/import.html:45
+#: bookwyrm/templates/import/import.html:48
msgid "Include reviews"
msgstr "Importer les critiques"
-#: bookwyrm/templates/import/import.html:50
+#: bookwyrm/templates/import/import.html:53
msgid "Privacy setting for imported reviews:"
msgstr "Confidentialité des critiques importées :"
-#: bookwyrm/templates/import/import.html:56
+#: bookwyrm/templates/import/import.html:59
#: bookwyrm/templates/settings/federation/instance_blocklist.html:64
msgid "Import"
msgstr "Importer"
-#: bookwyrm/templates/import/import.html:61
+#: bookwyrm/templates/import/import.html:64
msgid "Recent Imports"
msgstr "Importations récentes"
-#: bookwyrm/templates/import/import.html:63
+#: bookwyrm/templates/import/import.html:66
msgid "No recent imports"
msgstr "Aucune importation récente"
@@ -1594,27 +1724,31 @@ msgstr "Titre"
msgid "ISBN"
msgstr "ISBN"
-#: bookwyrm/templates/import/import_status.html:109
+#: bookwyrm/templates/import/import_status.html:110
+msgid "Openlibrary key"
+msgstr "Clé Openlibrary"
+
+#: bookwyrm/templates/import/import_status.html:114
#: bookwyrm/templates/shelf/shelf.html:145
#: bookwyrm/templates/shelf/shelf.html:169
msgid "Author"
msgstr "Auteur/autrice"
-#: bookwyrm/templates/import/import_status.html:112
+#: bookwyrm/templates/import/import_status.html:117
msgid "Shelf"
msgstr "Étagère"
-#: bookwyrm/templates/import/import_status.html:115
+#: bookwyrm/templates/import/import_status.html:120
#: bookwyrm/templates/import/manual_review.html:13
#: bookwyrm/templates/snippets/create_status.html:17
msgid "Review"
msgstr "Critique"
-#: bookwyrm/templates/import/import_status.html:119
+#: bookwyrm/templates/import/import_status.html:124
msgid "Book"
msgstr "Livre"
-#: bookwyrm/templates/import/import_status.html:122
+#: bookwyrm/templates/import/import_status.html:127
#: bookwyrm/templates/settings/announcements/announcements.html:38
#: bookwyrm/templates/settings/federation/instance_list.html:46
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44
@@ -1624,31 +1758,31 @@ msgstr "Livre"
msgid "Status"
msgstr "Statut"
-#: bookwyrm/templates/import/import_status.html:130
+#: bookwyrm/templates/import/import_status.html:135
msgid "Import preview unavailable."
msgstr "Aperçu de l'importation indisponible."
-#: bookwyrm/templates/import/import_status.html:162
+#: bookwyrm/templates/import/import_status.html:172
msgid "View imported review"
msgstr "Afficher la critique importée"
-#: bookwyrm/templates/import/import_status.html:176
+#: bookwyrm/templates/import/import_status.html:186
msgid "Imported"
msgstr "Importé"
-#: bookwyrm/templates/import/import_status.html:182
+#: bookwyrm/templates/import/import_status.html:192
msgid "Needs manual review"
msgstr "Nécessite une vérification manuelle"
-#: bookwyrm/templates/import/import_status.html:195
+#: bookwyrm/templates/import/import_status.html:205
msgid "Retry"
msgstr "Réessayer"
-#: bookwyrm/templates/import/import_status.html:213
+#: bookwyrm/templates/import/import_status.html:223
msgid "This import is in an old format that is no longer supported. If you would like to troubleshoot missing items from this import, click the button below to update the import format."
msgstr "Cette importation est dans un ancien format qui n'est plus pris en charge. Si vous souhaitez corriger les éléments manquants de cette importation, cliquez sur le bouton ci-dessous pour mettre à jour le format d'importation."
-#: bookwyrm/templates/import/import_status.html:215
+#: bookwyrm/templates/import/import_status.html:225
msgid "Update import"
msgstr "Mettre à jour l'importation"
@@ -1769,7 +1903,7 @@ msgid "Login"
msgstr "Connexion"
#: bookwyrm/templates/landing/login.html:7
-#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179
+#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:181
#: bookwyrm/templates/ostatus/error.html:37
msgid "Log in"
msgstr "Se connecter"
@@ -1778,7 +1912,7 @@ msgstr "Se connecter"
msgid "Success! Email address confirmed."
msgstr "Bravo ! L’adresse email a été confirmée."
-#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170
+#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:172
#: bookwyrm/templates/ostatus/error.html:28
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
@@ -1786,12 +1920,12 @@ msgstr "Nom du compte :"
#: bookwyrm/templates/landing/login.html:27
#: bookwyrm/templates/landing/password_reset.html:26
-#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32
+#: bookwyrm/templates/layout.html:176 bookwyrm/templates/ostatus/error.html:32
#: bookwyrm/templates/snippets/register_form.html:20
msgid "Password:"
msgstr "Mot de passe :"
-#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176
+#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:178
#: bookwyrm/templates/ostatus/error.html:34
msgid "Forgot your password?"
msgstr "Mot de passe oublié ?"
@@ -1819,23 +1953,23 @@ msgstr "Changer de mot de passe"
msgid "%(site_name)s search"
msgstr "Recherche %(site_name)s"
-#: bookwyrm/templates/layout.html:43
+#: bookwyrm/templates/layout.html:45
msgid "Search for a book, user, or list"
msgstr "Rechercher un livre, un utilisateur ou une liste"
-#: bookwyrm/templates/layout.html:61 bookwyrm/templates/layout.html:62
+#: bookwyrm/templates/layout.html:63 bookwyrm/templates/layout.html:64
msgid "Main navigation menu"
msgstr "Menu de navigation principal "
-#: bookwyrm/templates/layout.html:72
+#: bookwyrm/templates/layout.html:74
msgid "Feed"
msgstr "Fil d’actualité"
-#: bookwyrm/templates/layout.html:116
+#: bookwyrm/templates/layout.html:118
msgid "Settings"
msgstr "Paramètres"
-#: bookwyrm/templates/layout.html:125
+#: bookwyrm/templates/layout.html:127
#: 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
@@ -1843,46 +1977,46 @@ msgstr "Paramètres"
msgid "Invites"
msgstr "Invitations"
-#: bookwyrm/templates/layout.html:132
+#: bookwyrm/templates/layout.html:134
msgid "Admin"
msgstr "Admin"
-#: bookwyrm/templates/layout.html:139
+#: bookwyrm/templates/layout.html:141
msgid "Log out"
msgstr "Se déconnecter"
-#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148
+#: bookwyrm/templates/layout.html:149 bookwyrm/templates/layout.html:150
#: bookwyrm/templates/notifications/notifications_page.html:5
#: bookwyrm/templates/notifications/notifications_page.html:10
msgid "Notifications"
msgstr "Notifications"
-#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33
+#: bookwyrm/templates/layout.html:177 bookwyrm/templates/ostatus/error.html:33
msgid "password"
msgstr "Mot de passe"
-#: bookwyrm/templates/layout.html:187
+#: bookwyrm/templates/layout.html:189
msgid "Join"
msgstr "Rejoindre"
-#: bookwyrm/templates/layout.html:221
+#: bookwyrm/templates/layout.html:223
msgid "Successfully posted status"
msgstr "Publié !"
-#: bookwyrm/templates/layout.html:222
+#: bookwyrm/templates/layout.html:224
msgid "Error posting status"
msgstr "Erreur lors de la publication"
-#: bookwyrm/templates/layout.html:238
+#: bookwyrm/templates/layout.html:240
msgid "Documentation"
msgstr "Documentation"
-#: bookwyrm/templates/layout.html:245
+#: bookwyrm/templates/layout.html:247
#, python-format
msgid "Support %(site_name)s on %(support_title)s"
msgstr "Soutenez %(site_name)s avec %(support_title)s"
-#: bookwyrm/templates/layout.html:249
+#: bookwyrm/templates/layout.html:251
msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub."
msgstr "BookWyrm est un logiciel libre. Vous pouvez contribuer ou faire des rapports de bogues via GitHub."
@@ -1947,7 +2081,7 @@ msgstr "%(list_name)s, une liste de %(owner)s"
#: bookwyrm/templates/lists/embed-list.html:17
#, python-format
msgid "on %(site_name)s"
-msgstr ""
+msgstr "sur %(site_name)s"
#: bookwyrm/templates/lists/embed-list.html:26
#: bookwyrm/templates/lists/list.html:29
@@ -2075,15 +2209,11 @@ msgstr "Suggérer"
msgid "Embed this list on a website"
msgstr "Intégrez cette liste sur un autre site internet"
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
msgid "Copy embed code"
msgstr "Copier le code d'intégration"
-#: bookwyrm/templates/lists/list.html:193
-msgid "Copied!"
-msgstr "Copié!"
-
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr "%(list_name)s, une liste de %(owner)s sur %(site_name)s"
@@ -4145,7 +4275,7 @@ msgstr "Ce fichier dépasse la taille limite : 10 Mo"
msgid "%(title)s: %(subtitle)s"
msgstr "%(title)s (%(subtitle)s)"
-#: bookwyrm/views/imports/import_data.py:64
+#: bookwyrm/views/imports/import_data.py:67
msgid "Not a valid csv file"
msgstr "Fichier CSV non valide"
diff --git a/locale/gl_ES/LC_MESSAGES/django.mo b/locale/gl_ES/LC_MESSAGES/django.mo
index edb8f24a..d6d47d04 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 13a766ff..5f114c51 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-08 15:40+0000\n"
-"PO-Revision-Date: 2021-12-10 05:04\n"
+"POT-Creation-Date: 2021-12-28 15:00+0000\n"
+"PO-Revision-Date: 2021-12-28 16:03\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Galician\n"
"Language: gl\n"
@@ -72,16 +72,16 @@ msgstr "Ascendente"
msgid "Descending"
msgstr "Descendente"
-#: bookwyrm/importers/importer.py:141 bookwyrm/importers/importer.py:163
+#: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167
msgid "Error loading book"
msgstr "Erro ao cargar o libro"
-#: bookwyrm/importers/importer.py:150
+#: bookwyrm/importers/importer.py:154
msgid "Could not find a match for book"
msgstr "Non se atopan coincidencias para o libro"
#: bookwyrm/models/base_model.py:17
-#: bookwyrm/templates/import/import_status.html:190
+#: bookwyrm/templates/import/import_status.html:200
msgid "Pending"
msgstr "Pendente"
@@ -144,7 +144,7 @@ msgstr "%(value)s non é un remote_id válido"
msgid "%(value)s is not a valid username"
msgstr "%(value)s non é un nome de usuaria válido"
-#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:171
+#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:173
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "nome de usuaria"
@@ -243,6 +243,132 @@ msgstr "Erro do servidor"
msgid "Something went wrong! Sorry about that."
msgstr "Algo fallou! Lamentámolo."
+#: bookwyrm/templates/annual_summary/layout.html:7
+#: bookwyrm/templates/feed/summary_card.html:8
+#, python-format
+msgid "%(year)s in the books"
+msgstr "Os libros en %(year)s"
+
+#: bookwyrm/templates/annual_summary/layout.html:43
+#, python-format
+msgid "%(year)s in the books"
+msgstr "os libros en %(year)s"
+
+#: bookwyrm/templates/annual_summary/layout.html:47
+#, python-format
+msgid "%(display_name)s’s year of reading"
+msgstr "Un ano de lecturas de %(display_name)s"
+
+#: bookwyrm/templates/annual_summary/layout.html:53
+msgid "Share this page"
+msgstr "Comparte esta páxina"
+
+#: bookwyrm/templates/annual_summary/layout.html:61
+msgid "Copy address"
+msgstr "Copiar enderezo"
+
+#: bookwyrm/templates/annual_summary/layout.html:61
+#: bookwyrm/templates/lists/list.html:194
+msgid "Copied!"
+msgstr "Copiado!"
+
+#: bookwyrm/templates/annual_summary/layout.html:69
+msgid "Sharing status: public with key"
+msgstr "Compartir estado: público con chave"
+
+#: bookwyrm/templates/annual_summary/layout.html:70
+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
+msgid "Make page private"
+msgstr "Facer privada a páxina"
+
+#: bookwyrm/templates/annual_summary/layout.html:81
+msgid "Sharing status: private"
+msgstr "Compartir estado: privado"
+
+#: bookwyrm/templates/annual_summary/layout.html:82
+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
+msgid "Make page public"
+msgstr "Facer pública a páxina"
+
+#: bookwyrm/templates/annual_summary/layout.html:91
+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
+#, 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
+#, 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!"
+
+#: bookwyrm/templates/annual_summary/layout.html:112
+msgid "That’s great!"
+msgstr "Está moi ben!"
+
+#: bookwyrm/templates/annual_summary/layout.html:115
+#, python-format
+msgid "That makes an average of %(pages)s pages per book."
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:120
+#, 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
+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/book/book.html:47
+#: bookwyrm/templates/discover/large-book.html:22
+#: bookwyrm/templates/landing/large-book.html:25
+#: bookwyrm/templates/landing/small-book.html:18
+msgid "by"
+msgstr "por"
+
+#: bookwyrm/templates/annual_summary/layout.html:149
+#: bookwyrm/templates/annual_summary/layout.html:170
+#, python-format
+msgid "%(pages)s pages"
+msgstr "%(pages)s páxinas"
+
+#: bookwyrm/templates/annual_summary/layout.html:157
+msgid "…and the longest"
+msgstr "…e a máis longa"
+
+#: bookwyrm/templates/annual_summary/layout.html:187
+#, 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"
+
+#: bookwyrm/templates/annual_summary/layout.html:197
+msgid "Their best rated review"
+msgstr "A súa recensión máis valorada"
+
+#: bookwyrm/templates/annual_summary/layout.html:210
+#, python-format
+msgid "Their rating: %(rating)s"
+msgstr "Valoración: %(rating)s"
+
+#: bookwyrm/templates/annual_summary/layout.html:227
+#, python-format
+msgid "All the books %(display_name)s read in 2021"
+msgstr "Tódolos libros lidos por %(display_name)s en 2021"
+
#: bookwyrm/templates/author/author.html:18
#: bookwyrm/templates/author/author.html:19
msgid "Edit Author"
@@ -431,13 +557,6 @@ msgstr "Ao cargar os datos vas conectar con %(source_name)s e c
msgid "Confirm"
msgstr "Confirmar"
-#: bookwyrm/templates/book/book.html:47
-#: bookwyrm/templates/discover/large-book.html:22
-#: bookwyrm/templates/landing/large-book.html:25
-#: bookwyrm/templates/landing/small-book.html:18
-msgid "by"
-msgstr "por"
-
#: bookwyrm/templates/book/book.html:55 bookwyrm/templates/book/book.html:56
msgid "Edit Book"
msgstr "Editar libro"
@@ -518,7 +637,7 @@ msgstr "Temas"
msgid "Places"
msgstr "Lugares"
-#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75
+#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:77
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@@ -893,7 +1012,7 @@ msgstr "Comunidade federada"
#: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9
-#: bookwyrm/templates/layout.html:101
+#: bookwyrm/templates/layout.html:103
msgid "Directory"
msgstr "Directorio"
@@ -913,6 +1032,8 @@ msgstr "Podes retirar o permiso en calquera momento nos axu
#: bookwyrm/templates/directory/directory.html:29
#: bookwyrm/templates/directory/directory.html:31
#: bookwyrm/templates/feed/goal_card.html:17
+#: bookwyrm/templates/feed/summary_card.html:12
+#: bookwyrm/templates/feed/summary_card.html:14
#: bookwyrm/templates/snippets/announcement.html:34
msgid "Dismiss message"
msgstr "Desbotar mensaxe"
@@ -1011,7 +1132,7 @@ msgstr "%(username)s citou %(username)s"
msgstr "Mensaxes Directas con %(username)s"
#: bookwyrm/templates/feed/direct_messages.html:10
-#: bookwyrm/templates/layout.html:111
+#: bookwyrm/templates/layout.html:113
msgid "Direct Messages"
msgstr "Mensaxes Directas"
@@ -1182,11 +1303,11 @@ msgstr "Gardar axustes"
msgid "load 0 unread status(es)"
msgstr "cargar 0 estado(s) non lidos"
-#: bookwyrm/templates/feed/feed.html:80
+#: bookwyrm/templates/feed/feed.html:86
msgid "There aren't any activities right now! Try following a user to get started"
msgstr "Non hai actividade por agora! Proba a seguir algunha persoa para comezar"
-#: bookwyrm/templates/feed/feed.html:81
+#: bookwyrm/templates/feed/feed.html:87
msgid "Alternatively, you can try enabling more status types"
msgstr "De xeito alternativo, podes activar máis tipos de estados"
@@ -1206,7 +1327,7 @@ msgstr "Podes establecer ou cambiar un obxectivo de lectura en calquera momento
msgid "Updates"
msgstr "Actualizacións"
-#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:106
+#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:108
msgid "Your Books"
msgstr "Os teus libros"
@@ -1260,6 +1381,15 @@ msgstr "Non mostrar suxestións"
msgid "View directory"
msgstr "Ver directorio"
+#: bookwyrm/templates/feed/summary_card.html:21
+msgid "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!"
+msgstr "O final do ano é o mellor momento para botar unha ollada a tódolos libros lidos nos últimos 12 meses. Cantas páxinas liches? Cal é o libro con mellor puntuación do ano? Recollemos estas estatísticas e moitas máis!"
+
+#: bookwyrm/templates/feed/summary_card.html:26
+#, python-format
+msgid "Discover your stats for %(year)s!"
+msgstr "Mira aquí as túas estatísticas de %(year)s!"
+
#: bookwyrm/templates/get_started/book_preview.html:6
#, python-format
msgid "Have you read %(book_title)s?"
@@ -1274,7 +1404,7 @@ msgid "What are you reading?"
msgstr "Que estás a ler?"
#: bookwyrm/templates/get_started/books.html:9
-#: bookwyrm/templates/layout.html:45 bookwyrm/templates/lists/list.html:138
+#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:138
msgid "Search for a book"
msgstr "Buscar un libro"
@@ -1293,8 +1423,8 @@ msgstr "Podes engadir libros cando comeces a usar %(site_name)s."
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/groups/group.html:19
-#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:51
-#: bookwyrm/templates/layout.html:52 bookwyrm/templates/lists/list.html:142
+#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:53
+#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:142
#: bookwyrm/templates/search/layout.html:4
#: bookwyrm/templates/search/layout.html:9
msgid "Search"
@@ -1505,28 +1635,28 @@ msgstr "Importar libros"
msgid "Data source:"
msgstr "Fonte de datos:"
-#: bookwyrm/templates/import/import.html:37
+#: bookwyrm/templates/import/import.html:40
msgid "Data file:"
msgstr "Ficheiro de datos:"
-#: bookwyrm/templates/import/import.html:45
+#: bookwyrm/templates/import/import.html:48
msgid "Include reviews"
msgstr "Incluír recensións"
-#: bookwyrm/templates/import/import.html:50
+#: bookwyrm/templates/import/import.html:53
msgid "Privacy setting for imported reviews:"
msgstr "Axuste de privacidade para recensións importadas:"
-#: bookwyrm/templates/import/import.html:56
+#: bookwyrm/templates/import/import.html:59
#: bookwyrm/templates/settings/federation/instance_blocklist.html:64
msgid "Import"
msgstr "Importar"
-#: bookwyrm/templates/import/import.html:61
+#: bookwyrm/templates/import/import.html:64
msgid "Recent Imports"
msgstr "Importacións recentes"
-#: bookwyrm/templates/import/import.html:63
+#: bookwyrm/templates/import/import.html:66
msgid "No recent imports"
msgstr "Sen importacións recentes"
@@ -1594,27 +1724,31 @@ msgstr "Título"
msgid "ISBN"
msgstr "ISBN"
-#: bookwyrm/templates/import/import_status.html:109
+#: bookwyrm/templates/import/import_status.html:110
+msgid "Openlibrary key"
+msgstr "Chave en Openlibrary"
+
+#: bookwyrm/templates/import/import_status.html:114
#: bookwyrm/templates/shelf/shelf.html:145
#: bookwyrm/templates/shelf/shelf.html:169
msgid "Author"
msgstr "Autor"
-#: bookwyrm/templates/import/import_status.html:112
+#: bookwyrm/templates/import/import_status.html:117
msgid "Shelf"
msgstr "Estante"
-#: bookwyrm/templates/import/import_status.html:115
+#: bookwyrm/templates/import/import_status.html:120
#: bookwyrm/templates/import/manual_review.html:13
#: bookwyrm/templates/snippets/create_status.html:17
msgid "Review"
msgstr "Revisar"
-#: bookwyrm/templates/import/import_status.html:119
+#: bookwyrm/templates/import/import_status.html:124
msgid "Book"
msgstr "Libro"
-#: bookwyrm/templates/import/import_status.html:122
+#: bookwyrm/templates/import/import_status.html:127
#: bookwyrm/templates/settings/announcements/announcements.html:38
#: bookwyrm/templates/settings/federation/instance_list.html:46
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44
@@ -1624,31 +1758,31 @@ msgstr "Libro"
msgid "Status"
msgstr "Estado"
-#: bookwyrm/templates/import/import_status.html:130
+#: bookwyrm/templates/import/import_status.html:135
msgid "Import preview unavailable."
msgstr "Non dispoñible vista previa da importación."
-#: bookwyrm/templates/import/import_status.html:162
+#: bookwyrm/templates/import/import_status.html:172
msgid "View imported review"
msgstr "Ver revisión importada"
-#: bookwyrm/templates/import/import_status.html:176
+#: bookwyrm/templates/import/import_status.html:186
msgid "Imported"
msgstr "Importado"
-#: bookwyrm/templates/import/import_status.html:182
+#: bookwyrm/templates/import/import_status.html:192
msgid "Needs manual review"
msgstr "Precisa revisión manual"
-#: bookwyrm/templates/import/import_status.html:195
+#: bookwyrm/templates/import/import_status.html:205
msgid "Retry"
msgstr "Volver a intentar"
-#: bookwyrm/templates/import/import_status.html:213
+#: bookwyrm/templates/import/import_status.html:223
msgid "This import is in an old format that is no longer supported. If you would like to troubleshoot missing items from this import, click the button below to update the import format."
msgstr "Esta importación ten un formato antigo xa non soportado. Se queres intentar recuperar os elementos que faltan nesta importación preme no botón inferior para actualizar o formato de importación."
-#: bookwyrm/templates/import/import_status.html:215
+#: bookwyrm/templates/import/import_status.html:225
msgid "Update import"
msgstr "Actualizar importación"
@@ -1769,7 +1903,7 @@ msgid "Login"
msgstr "Conectar"
#: bookwyrm/templates/landing/login.html:7
-#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179
+#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:181
#: bookwyrm/templates/ostatus/error.html:37
msgid "Log in"
msgstr "Conecta"
@@ -1778,7 +1912,7 @@ msgstr "Conecta"
msgid "Success! Email address confirmed."
msgstr "Correcto! Enderezo de email confirmado."
-#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170
+#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:172
#: bookwyrm/templates/ostatus/error.html:28
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
@@ -1786,12 +1920,12 @@ msgstr "Nome de usuaria:"
#: bookwyrm/templates/landing/login.html:27
#: bookwyrm/templates/landing/password_reset.html:26
-#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32
+#: bookwyrm/templates/layout.html:176 bookwyrm/templates/ostatus/error.html:32
#: bookwyrm/templates/snippets/register_form.html:20
msgid "Password:"
msgstr "Contrasinal:"
-#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176
+#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:178
#: bookwyrm/templates/ostatus/error.html:34
msgid "Forgot your password?"
msgstr "Esqueceches o contrasinal?"
@@ -1819,23 +1953,23 @@ msgstr "Restablecer contrasinal"
msgid "%(site_name)s search"
msgstr "Busca en %(site_name)s"
-#: bookwyrm/templates/layout.html:43
+#: bookwyrm/templates/layout.html:45
msgid "Search for a book, user, or list"
msgstr "Busca un libro, usuaria ou lista"
-#: bookwyrm/templates/layout.html:61 bookwyrm/templates/layout.html:62
+#: bookwyrm/templates/layout.html:63 bookwyrm/templates/layout.html:64
msgid "Main navigation menu"
msgstr "Menú principal de navegación"
-#: bookwyrm/templates/layout.html:72
+#: bookwyrm/templates/layout.html:74
msgid "Feed"
msgstr "Fonte"
-#: bookwyrm/templates/layout.html:116
+#: bookwyrm/templates/layout.html:118
msgid "Settings"
msgstr "Axustes"
-#: bookwyrm/templates/layout.html:125
+#: bookwyrm/templates/layout.html:127
#: 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
@@ -1843,46 +1977,46 @@ msgstr "Axustes"
msgid "Invites"
msgstr "Convites"
-#: bookwyrm/templates/layout.html:132
+#: bookwyrm/templates/layout.html:134
msgid "Admin"
msgstr "Admin"
-#: bookwyrm/templates/layout.html:139
+#: bookwyrm/templates/layout.html:141
msgid "Log out"
msgstr "Desconectar"
-#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148
+#: bookwyrm/templates/layout.html:149 bookwyrm/templates/layout.html:150
#: bookwyrm/templates/notifications/notifications_page.html:5
#: bookwyrm/templates/notifications/notifications_page.html:10
msgid "Notifications"
msgstr "Notificacións"
-#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33
+#: bookwyrm/templates/layout.html:177 bookwyrm/templates/ostatus/error.html:33
msgid "password"
msgstr "contrasinal"
-#: bookwyrm/templates/layout.html:187
+#: bookwyrm/templates/layout.html:189
msgid "Join"
msgstr "Únete"
-#: bookwyrm/templates/layout.html:221
+#: bookwyrm/templates/layout.html:223
msgid "Successfully posted status"
msgstr "Publicación correcta"
-#: bookwyrm/templates/layout.html:222
+#: bookwyrm/templates/layout.html:224
msgid "Error posting status"
msgstr "Erro ao publicar"
-#: bookwyrm/templates/layout.html:238
+#: bookwyrm/templates/layout.html:240
msgid "Documentation"
msgstr "Documentación"
-#: bookwyrm/templates/layout.html:245
+#: bookwyrm/templates/layout.html:247
#, python-format
msgid "Support %(site_name)s on %(support_title)s"
msgstr "Axuda a %(site_name)s en %(support_title)s"
-#: bookwyrm/templates/layout.html:249
+#: bookwyrm/templates/layout.html:251
msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub."
msgstr "O código fonte de BookWyrm é público. Podes colaborar ou informar de problemas en GitHub."
@@ -2075,15 +2209,11 @@ msgstr "Suxire"
msgid "Embed this list on a website"
msgstr "Utiliza esta lista nunha páxina web"
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
msgid "Copy embed code"
msgstr "Copia o código a incluír"
-#: bookwyrm/templates/lists/list.html:193
-msgid "Copied!"
-msgstr "Copiado!"
-
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr "%(list_name)s, unha lista de %(owner)s en %(site_name)s"
@@ -4145,7 +4275,7 @@ msgstr "O ficheiro supera o tamaño máximo: 10MB"
msgid "%(title)s: %(subtitle)s"
msgstr "%(title)s: %(subtitle)s"
-#: bookwyrm/views/imports/import_data.py:64
+#: bookwyrm/views/imports/import_data.py:67
msgid "Not a valid csv file"
msgstr "Non é un ficheiro csv válido"
diff --git a/locale/lt_LT/LC_MESSAGES/django.mo b/locale/lt_LT/LC_MESSAGES/django.mo
index f97f2900..d4cb5e29 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 eb96f47f..61c42289 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-08 15:40+0000\n"
-"PO-Revision-Date: 2021-12-26 20:36\n"
+"POT-Creation-Date: 2021-12-28 15:00+0000\n"
+"PO-Revision-Date: 2021-12-28 16:03\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Lithuanian\n"
"Language: lt\n"
@@ -72,16 +72,16 @@ msgstr "Didėjančia tvarka"
msgid "Descending"
msgstr "Mažėjančia tvarka"
-#: bookwyrm/importers/importer.py:141 bookwyrm/importers/importer.py:163
+#: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167
msgid "Error loading book"
msgstr "Klaida įkeliant knygą"
-#: bookwyrm/importers/importer.py:150
+#: bookwyrm/importers/importer.py:154
msgid "Could not find a match for book"
msgstr "Nepavyko rasti tokios knygos"
#: bookwyrm/models/base_model.py:17
-#: bookwyrm/templates/import/import_status.html:190
+#: bookwyrm/templates/import/import_status.html:200
msgid "Pending"
msgstr "Laukiama"
@@ -144,7 +144,7 @@ msgstr "%(value)s yra negaliojantis remote_id"
msgid "%(value)s is not a valid username"
msgstr "%(value)s yra negaliojantis naudotojo vardas"
-#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:171
+#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:173
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "naudotojo vardas"
@@ -243,6 +243,134 @@ msgstr "Serverio klaida"
msgid "Something went wrong! Sorry about that."
msgstr "Kažkas nepavyko. Atsiprašome."
+#: bookwyrm/templates/annual_summary/layout.html:7
+#: bookwyrm/templates/feed/summary_card.html:8
+#, python-format
+msgid "%(year)s in the books"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:43
+#, python-format
+msgid "%(year)s in the books"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:47
+#, python-format
+msgid "%(display_name)s’s year of reading"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:53
+msgid "Share this page"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:61
+msgid "Copy address"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:61
+#: bookwyrm/templates/lists/list.html:194
+msgid "Copied!"
+msgstr "Nukopijuota"
+
+#: bookwyrm/templates/annual_summary/layout.html:69
+msgid "Sharing status: public with key"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:70
+msgid "The page can be seen by anyone with the complete address."
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:75
+msgid "Make page private"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:81
+msgid "Sharing status: private"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:82
+msgid "The page is private, only you can see it."
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:87
+msgid "Make page public"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:91
+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
+#, python-format
+msgid "Sadly %(display_name)s didn’t finish any book in %(year)s"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:110
+#, python-format
+msgid "In %(year)s, %(display_name)s read %(books_total)s books
for a total of %(pages_total)s pages!"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:112
+msgid "That’s great!"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:115
+#, python-format
+msgid "That makes an average of %(pages)s pages per book."
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:120
+#, 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] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#: bookwyrm/templates/annual_summary/layout.html:136
+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/book/book.html:47
+#: bookwyrm/templates/discover/large-book.html:22
+#: bookwyrm/templates/landing/large-book.html:25
+#: bookwyrm/templates/landing/small-book.html:18
+msgid "by"
+msgstr " "
+
+#: bookwyrm/templates/annual_summary/layout.html:149
+#: bookwyrm/templates/annual_summary/layout.html:170
+#, python-format
+msgid "%(pages)s pages"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:157
+msgid "…and the longest"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:187
+#, python-format
+msgid "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:197
+msgid "Their best rated review"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:210
+#, python-format
+msgid "Their rating: %(rating)s"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:227
+#, python-format
+msgid "All the books %(display_name)s read in 2021"
+msgstr ""
+
#: bookwyrm/templates/author/author.html:18
#: bookwyrm/templates/author/author.html:19
msgid "Edit Author"
@@ -431,13 +559,6 @@ msgstr "Duomenų įkėlimas prisijungs prie %(source_name)s ir
msgid "Confirm"
msgstr "Patvirtinti"
-#: bookwyrm/templates/book/book.html:47
-#: bookwyrm/templates/discover/large-book.html:22
-#: bookwyrm/templates/landing/large-book.html:25
-#: bookwyrm/templates/landing/small-book.html:18
-msgid "by"
-msgstr " "
-
#: bookwyrm/templates/book/book.html:55 bookwyrm/templates/book/book.html:56
msgid "Edit Book"
msgstr "Redaguoti knygą"
@@ -520,7 +641,7 @@ msgstr "Temos"
msgid "Places"
msgstr "Vietos"
-#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75
+#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:77
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@@ -895,7 +1016,7 @@ msgstr "Sujungta bendruomenė"
#: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9
-#: bookwyrm/templates/layout.html:101
+#: bookwyrm/templates/layout.html:103
msgid "Directory"
msgstr "Bendruomenė"
@@ -915,6 +1036,8 @@ msgstr "Tai galite visada atšaukti paskyros nustatymuose.<
#: bookwyrm/templates/directory/directory.html:29
#: bookwyrm/templates/directory/directory.html:31
#: bookwyrm/templates/feed/goal_card.html:17
+#: bookwyrm/templates/feed/summary_card.html:12
+#: bookwyrm/templates/feed/summary_card.html:14
#: bookwyrm/templates/snippets/announcement.html:34
msgid "Dismiss message"
msgstr "Pašalinti pranešimą"
@@ -1017,7 +1140,7 @@ msgstr "%(username)s citavo %(username)s"
msgstr "Asmeninis susirašinėjimas su %(username)s"
#: bookwyrm/templates/feed/direct_messages.html:10
-#: bookwyrm/templates/layout.html:111
+#: bookwyrm/templates/layout.html:113
msgid "Direct Messages"
msgstr "Asmeninės žinutės"
@@ -1188,11 +1311,11 @@ msgstr "Išsaugoti nustatymus"
msgid "load 0 unread status(es)"
msgstr "įkelti 0 neperskaitytų būsena"
-#: bookwyrm/templates/feed/feed.html:80
+#: bookwyrm/templates/feed/feed.html:86
msgid "There aren't any activities right now! Try following a user to get started"
msgstr "Šiuo metu įrašų nėra. Norėdami matyti, sekite narį."
-#: bookwyrm/templates/feed/feed.html:81
+#: bookwyrm/templates/feed/feed.html:87
msgid "Alternatively, you can try enabling more status types"
msgstr "Taip pat galite pasirinkti daugiau būsenos tipų"
@@ -1212,7 +1335,7 @@ msgstr "Bet kuriuo metu galite pakeisti savo skaitymo tikslą savo %(support_title)s"
msgstr "Paremkite %(site_name)s per %(support_title)s"
-#: bookwyrm/templates/layout.html:249
+#: bookwyrm/templates/layout.html:251
msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub."
msgstr "„BookWyrm“ šaltinio kodas yra laisvai prieinamas. Galite prisidėti arba pranešti apie klaidas per GitHub."
@@ -2089,15 +2225,11 @@ msgstr "Siūlyti"
msgid "Embed this list on a website"
msgstr "Įdėkite šį sąrašą į tinklalapį"
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
msgid "Copy embed code"
msgstr "Nukopijuokite įterptinį kodą"
-#: bookwyrm/templates/lists/list.html:193
-msgid "Copied!"
-msgstr "Nukopijuota"
-
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr "%(list_name)s, sąrašą sudarė %(owner)s, per %(site_name)s"
@@ -4183,7 +4315,7 @@ msgstr "Failas viršijo maksimalų dydį: 10 MB"
msgid "%(title)s: %(subtitle)s"
msgstr "%(title)s: %(subtitle)s"
-#: bookwyrm/views/imports/import_data.py:64
+#: bookwyrm/views/imports/import_data.py:67
msgid "Not a valid csv file"
msgstr "Netinkamas csv failas"
diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo
index 1ab8ce8a..ef3d0c17 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 f8232107..a2d20005 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-08 15:40+0000\n"
-"PO-Revision-Date: 2021-12-18 17:19\n"
+"POT-Creation-Date: 2021-12-28 15:00+0000\n"
+"PO-Revision-Date: 2021-12-28 16:59\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt\n"
@@ -72,16 +72,16 @@ msgstr "Crescente"
msgid "Descending"
msgstr "Decrescente"
-#: bookwyrm/importers/importer.py:141 bookwyrm/importers/importer.py:163
+#: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167
msgid "Error loading book"
msgstr "Erro ao carregar livro"
-#: bookwyrm/importers/importer.py:150
+#: bookwyrm/importers/importer.py:154
msgid "Could not find a match for book"
msgstr "Não foi possível encontrar o livro"
#: bookwyrm/models/base_model.py:17
-#: bookwyrm/templates/import/import_status.html:190
+#: bookwyrm/templates/import/import_status.html:200
msgid "Pending"
msgstr "Pendente"
@@ -144,7 +144,7 @@ msgstr "%(value)s não é um remote_id válido"
msgid "%(value)s is not a valid username"
msgstr "%(value)s não é um nome de usuário válido"
-#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:171
+#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:173
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "nome de usuário"
@@ -243,6 +243,132 @@ msgstr "Erro no servidor"
msgid "Something went wrong! Sorry about that."
msgstr "Algo deu errado! Foi mal."
+#: bookwyrm/templates/annual_summary/layout.html:7
+#: bookwyrm/templates/feed/summary_card.html:8
+#, python-format
+msgid "%(year)s in the books"
+msgstr "Os livros de %(year)s"
+
+#: bookwyrm/templates/annual_summary/layout.html:43
+#, python-format
+msgid "%(year)s in the books"
+msgstr "Os livros de %(year)s"
+
+#: bookwyrm/templates/annual_summary/layout.html:47
+#, python-format
+msgid "%(display_name)s’s year of reading"
+msgstr "O ano de leitura de %(display_name)s"
+
+#: bookwyrm/templates/annual_summary/layout.html:53
+msgid "Share this page"
+msgstr "Compartilhe esta página"
+
+#: bookwyrm/templates/annual_summary/layout.html:61
+msgid "Copy address"
+msgstr "Copiar endereço"
+
+#: bookwyrm/templates/annual_summary/layout.html:61
+#: bookwyrm/templates/lists/list.html:194
+msgid "Copied!"
+msgstr "Copiado!"
+
+#: bookwyrm/templates/annual_summary/layout.html:69
+msgid "Sharing status: public with key"
+msgstr "Compartilhamento: público com chave"
+
+#: bookwyrm/templates/annual_summary/layout.html:70
+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
+msgid "Make page private"
+msgstr "Tornar a página particular"
+
+#: bookwyrm/templates/annual_summary/layout.html:81
+msgid "Sharing status: private"
+msgstr "Compartilhamento: particular"
+
+#: bookwyrm/templates/annual_summary/layout.html:82
+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
+msgid "Make page public"
+msgstr "Tornar a página pública"
+
+#: bookwyrm/templates/annual_summary/layout.html:91
+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
+#, 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
+#, 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!"
+
+#: bookwyrm/templates/annual_summary/layout.html:112
+msgid "That’s great!"
+msgstr "Muito legal!"
+
+#: bookwyrm/templates/annual_summary/layout.html:115
+#, 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
+#, 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
+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/book/book.html:47
+#: bookwyrm/templates/discover/large-book.html:22
+#: bookwyrm/templates/landing/large-book.html:25
+#: bookwyrm/templates/landing/small-book.html:18
+msgid "by"
+msgstr "de"
+
+#: bookwyrm/templates/annual_summary/layout.html:149
+#: bookwyrm/templates/annual_summary/layout.html:170
+#, python-format
+msgid "%(pages)s pages"
+msgstr "%(pages)s páginas"
+
+#: bookwyrm/templates/annual_summary/layout.html:157
+msgid "…and the longest"
+msgstr "…e a mais longa"
+
+#: bookwyrm/templates/annual_summary/layout.html:187
+#, 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"
+
+#: bookwyrm/templates/annual_summary/layout.html:197
+msgid "Their best rated review"
+msgstr "Sua melhor avaliação"
+
+#: bookwyrm/templates/annual_summary/layout.html:210
+#, python-format
+msgid "Their rating: %(rating)s"
+msgstr "Avaliação: %(rating)s"
+
+#: bookwyrm/templates/annual_summary/layout.html:227
+#, python-format
+msgid "All the books %(display_name)s read in 2021"
+msgstr "Todos os livros que %(display_name)s leu em 2021"
+
#: bookwyrm/templates/author/author.html:18
#: bookwyrm/templates/author/author.html:19
msgid "Edit Author"
@@ -431,13 +557,6 @@ msgstr "Para carregar informações nos conectaremos a %(source_name)s
msgid "Confirm"
msgstr "Confirmar"
-#: bookwyrm/templates/book/book.html:47
-#: bookwyrm/templates/discover/large-book.html:22
-#: bookwyrm/templates/landing/large-book.html:25
-#: bookwyrm/templates/landing/small-book.html:18
-msgid "by"
-msgstr "de"
-
#: bookwyrm/templates/book/book.html:55 bookwyrm/templates/book/book.html:56
msgid "Edit Book"
msgstr "Editar livro"
@@ -518,7 +637,7 @@ msgstr "Assuntos"
msgid "Places"
msgstr "Lugares"
-#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75
+#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:77
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@@ -893,7 +1012,7 @@ msgstr "Comunidade federada"
#: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9
-#: bookwyrm/templates/layout.html:101
+#: bookwyrm/templates/layout.html:103
msgid "Directory"
msgstr "Diretório"
@@ -913,6 +1032,8 @@ msgstr "Você pode desabilitar esta opção a qualquer momento em suas %(username)s citou %(username)s"
msgstr "Mensagens diretas com %(username)s"
#: bookwyrm/templates/feed/direct_messages.html:10
-#: bookwyrm/templates/layout.html:111
+#: bookwyrm/templates/layout.html:113
msgid "Direct Messages"
msgstr "Mensagens diretas"
@@ -1182,11 +1303,11 @@ msgstr "Salvar configurações"
msgid "load 0 unread status(es)"
msgstr "carregar 0 publicações não lida(s)"
-#: bookwyrm/templates/feed/feed.html:80
+#: bookwyrm/templates/feed/feed.html:86
msgid "There aren't any activities right now! Try following a user to get started"
msgstr "Não há nenhuma atividade! Tente seguir um usuário para começar"
-#: bookwyrm/templates/feed/feed.html:81
+#: bookwyrm/templates/feed/feed.html:87
msgid "Alternatively, you can try enabling more status types"
msgstr "Uma outra opção é habilitar mais tipos de publicação"
@@ -1206,7 +1327,7 @@ msgstr "Você pode definir ou alterar sua meta de leitura a qualquer momento em
msgid "Updates"
msgstr "Atualizações"
-#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:106
+#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:108
msgid "Your Books"
msgstr "Seus livros"
@@ -1260,6 +1381,15 @@ msgstr "Não mostrar usuários sugeridos"
msgid "View directory"
msgstr "Ver diretório"
+#: bookwyrm/templates/feed/summary_card.html:21
+msgid "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!"
+msgstr "O fim do ano é o melhor momento para pensar nos livros que lemos nos últimos 12 meses. Quantas páginas você leu? Qual foi o seu livro mais bem avaliado? Compilamos esses e outros dados!"
+
+#: bookwyrm/templates/feed/summary_card.html:26
+#, python-format
+msgid "Discover your stats for %(year)s!"
+msgstr "Descubra suas estatísticas de %(year)s!"
+
#: bookwyrm/templates/get_started/book_preview.html:6
#, python-format
msgid "Have you read %(book_title)s?"
@@ -1274,7 +1404,7 @@ msgid "What are you reading?"
msgstr "O que você está lendo?"
#: bookwyrm/templates/get_started/books.html:9
-#: bookwyrm/templates/layout.html:45 bookwyrm/templates/lists/list.html:138
+#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:138
msgid "Search for a book"
msgstr "Pesquisar livro"
@@ -1293,8 +1423,8 @@ msgstr "Você pode adicionar livros quando começar a usar o %(site_name)s."
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/groups/group.html:19
-#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:51
-#: bookwyrm/templates/layout.html:52 bookwyrm/templates/lists/list.html:142
+#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:53
+#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:142
#: bookwyrm/templates/search/layout.html:4
#: bookwyrm/templates/search/layout.html:9
msgid "Search"
@@ -1505,28 +1635,28 @@ msgstr "Importar livros"
msgid "Data source:"
msgstr "Fonte dos dados:"
-#: bookwyrm/templates/import/import.html:37
+#: bookwyrm/templates/import/import.html:40
msgid "Data file:"
msgstr "Arquivo de dados:"
-#: bookwyrm/templates/import/import.html:45
+#: bookwyrm/templates/import/import.html:48
msgid "Include reviews"
msgstr "Incluir resenhas"
-#: bookwyrm/templates/import/import.html:50
+#: bookwyrm/templates/import/import.html:53
msgid "Privacy setting for imported reviews:"
msgstr "Configurações de privacidade para resenhas importadas:"
-#: bookwyrm/templates/import/import.html:56
+#: bookwyrm/templates/import/import.html:59
#: bookwyrm/templates/settings/federation/instance_blocklist.html:64
msgid "Import"
msgstr "Importar"
-#: bookwyrm/templates/import/import.html:61
+#: bookwyrm/templates/import/import.html:64
msgid "Recent Imports"
msgstr "Importações recentes"
-#: bookwyrm/templates/import/import.html:63
+#: bookwyrm/templates/import/import.html:66
msgid "No recent imports"
msgstr "Nenhuma importação recente"
@@ -1594,27 +1724,31 @@ msgstr "Título"
msgid "ISBN"
msgstr "ISBN"
-#: bookwyrm/templates/import/import_status.html:109
+#: bookwyrm/templates/import/import_status.html:110
+msgid "Openlibrary key"
+msgstr "Chave Openlibrary"
+
+#: bookwyrm/templates/import/import_status.html:114
#: bookwyrm/templates/shelf/shelf.html:145
#: bookwyrm/templates/shelf/shelf.html:169
msgid "Author"
msgstr "Autor/a"
-#: bookwyrm/templates/import/import_status.html:112
+#: bookwyrm/templates/import/import_status.html:117
msgid "Shelf"
msgstr "Estante"
-#: bookwyrm/templates/import/import_status.html:115
+#: bookwyrm/templates/import/import_status.html:120
#: bookwyrm/templates/import/manual_review.html:13
#: bookwyrm/templates/snippets/create_status.html:17
msgid "Review"
msgstr "Resenhar"
-#: bookwyrm/templates/import/import_status.html:119
+#: bookwyrm/templates/import/import_status.html:124
msgid "Book"
msgstr "Livro"
-#: bookwyrm/templates/import/import_status.html:122
+#: bookwyrm/templates/import/import_status.html:127
#: bookwyrm/templates/settings/announcements/announcements.html:38
#: bookwyrm/templates/settings/federation/instance_list.html:46
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44
@@ -1624,31 +1758,31 @@ msgstr "Livro"
msgid "Status"
msgstr "Publicação"
-#: bookwyrm/templates/import/import_status.html:130
+#: bookwyrm/templates/import/import_status.html:135
msgid "Import preview unavailable."
msgstr "Pré-visualização de importação indisponível."
-#: bookwyrm/templates/import/import_status.html:162
+#: bookwyrm/templates/import/import_status.html:172
msgid "View imported review"
msgstr "Visualizar resenha importada"
-#: bookwyrm/templates/import/import_status.html:176
+#: bookwyrm/templates/import/import_status.html:186
msgid "Imported"
msgstr "Importado"
-#: bookwyrm/templates/import/import_status.html:182
+#: bookwyrm/templates/import/import_status.html:192
msgid "Needs manual review"
msgstr "Precisa de resenha manual"
-#: bookwyrm/templates/import/import_status.html:195
+#: bookwyrm/templates/import/import_status.html:205
msgid "Retry"
msgstr "Tentar novamente"
-#: bookwyrm/templates/import/import_status.html:213
+#: bookwyrm/templates/import/import_status.html:223
msgid "This import is in an old format that is no longer supported. If you would like to troubleshoot missing items from this import, click the button below to update the import format."
msgstr "Esta importação está em um formato antigo que não é mais compatível. Se quiser resolver alguns itens faltantes dessa importação, clique no botão abaixo para atualizar o formato da importação."
-#: bookwyrm/templates/import/import_status.html:215
+#: bookwyrm/templates/import/import_status.html:225
msgid "Update import"
msgstr "Atualizar importação"
@@ -1769,7 +1903,7 @@ msgid "Login"
msgstr "Entrar"
#: bookwyrm/templates/landing/login.html:7
-#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179
+#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:181
#: bookwyrm/templates/ostatus/error.html:37
msgid "Log in"
msgstr "Entrar"
@@ -1778,7 +1912,7 @@ msgstr "Entrar"
msgid "Success! Email address confirmed."
msgstr "Endereço de e-mail confirmado com sucesso."
-#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170
+#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:172
#: bookwyrm/templates/ostatus/error.html:28
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
@@ -1786,12 +1920,12 @@ msgstr "Usuário:"
#: bookwyrm/templates/landing/login.html:27
#: bookwyrm/templates/landing/password_reset.html:26
-#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32
+#: bookwyrm/templates/layout.html:176 bookwyrm/templates/ostatus/error.html:32
#: bookwyrm/templates/snippets/register_form.html:20
msgid "Password:"
msgstr "Senha:"
-#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:176
+#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:178
#: bookwyrm/templates/ostatus/error.html:34
msgid "Forgot your password?"
msgstr "Esqueceu sua senha?"
@@ -1819,23 +1953,23 @@ msgstr "Redefinir senha"
msgid "%(site_name)s search"
msgstr "Busca %(site_name)s"
-#: bookwyrm/templates/layout.html:43
+#: bookwyrm/templates/layout.html:45
msgid "Search for a book, user, or list"
msgstr "Pesquisar livro, usuário ou lista"
-#: bookwyrm/templates/layout.html:61 bookwyrm/templates/layout.html:62
+#: bookwyrm/templates/layout.html:63 bookwyrm/templates/layout.html:64
msgid "Main navigation menu"
msgstr "Menu de navegação principal"
-#: bookwyrm/templates/layout.html:72
+#: bookwyrm/templates/layout.html:74
msgid "Feed"
msgstr "Novidades"
-#: bookwyrm/templates/layout.html:116
+#: bookwyrm/templates/layout.html:118
msgid "Settings"
msgstr "Configurações"
-#: bookwyrm/templates/layout.html:125
+#: bookwyrm/templates/layout.html:127
#: 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
@@ -1843,46 +1977,46 @@ msgstr "Configurações"
msgid "Invites"
msgstr "Convites"
-#: bookwyrm/templates/layout.html:132
+#: bookwyrm/templates/layout.html:134
msgid "Admin"
msgstr "Admin"
-#: bookwyrm/templates/layout.html:139
+#: bookwyrm/templates/layout.html:141
msgid "Log out"
msgstr "Sair"
-#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148
+#: bookwyrm/templates/layout.html:149 bookwyrm/templates/layout.html:150
#: bookwyrm/templates/notifications/notifications_page.html:5
#: bookwyrm/templates/notifications/notifications_page.html:10
msgid "Notifications"
msgstr "Notificações"
-#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33
+#: bookwyrm/templates/layout.html:177 bookwyrm/templates/ostatus/error.html:33
msgid "password"
msgstr "senha"
-#: bookwyrm/templates/layout.html:187
+#: bookwyrm/templates/layout.html:189
msgid "Join"
msgstr "Registrar"
-#: bookwyrm/templates/layout.html:221
+#: bookwyrm/templates/layout.html:223
msgid "Successfully posted status"
msgstr "Publicação feita com sucesso"
-#: bookwyrm/templates/layout.html:222
+#: bookwyrm/templates/layout.html:224
msgid "Error posting status"
msgstr "Erro ao publicar"
-#: bookwyrm/templates/layout.html:238
+#: bookwyrm/templates/layout.html:240
msgid "Documentation"
msgstr "Documentação"
-#: bookwyrm/templates/layout.html:245
+#: bookwyrm/templates/layout.html:247
#, python-format
msgid "Support %(site_name)s on %(support_title)s"
msgstr "Apoie a instância %(site_name)s: %(support_title)s"
-#: bookwyrm/templates/layout.html:249
+#: bookwyrm/templates/layout.html:251
msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub."
msgstr "O código-fonte da BookWyrm está disponível gratuitamente. Você pode contribuir ou reportar problemas no GitHub."
@@ -2075,15 +2209,11 @@ msgstr "Sugerir"
msgid "Embed this list on a website"
msgstr "Incorpore esta lista em um site"
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
msgid "Copy embed code"
msgstr "Copiar código de incorporação"
-#: bookwyrm/templates/lists/list.html:193
-msgid "Copied!"
-msgstr "Copiado!"
-
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr "%(list_name)s, uma lista de %(owner)s em %(site_name)s"
@@ -4145,7 +4275,7 @@ msgstr "Arquivo excede o tamanho máximo: 10MB"
msgid "%(title)s: %(subtitle)s"
msgstr "%(title)s: %(subtitle)s"
-#: bookwyrm/views/imports/import_data.py:64
+#: bookwyrm/views/imports/import_data.py:67
msgid "Not a valid csv file"
msgstr "Não é um arquivo csv válido"
diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo
index 8dc3158c..bbfee4c5 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 cd0ab3f4..501db0b8 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-08 15:40+0000\n"
-"PO-Revision-Date: 2021-12-09 18:56\n"
+"POT-Creation-Date: 2021-12-28 15:00+0000\n"
+"PO-Revision-Date: 2021-12-28 16:03\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Chinese Simplified\n"
"Language: zh\n"
@@ -72,16 +72,16 @@ msgstr "升序"
msgid "Descending"
msgstr "降序"
-#: bookwyrm/importers/importer.py:141 bookwyrm/importers/importer.py:163
+#: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167
msgid "Error loading book"
msgstr "加载书籍时出错"
-#: bookwyrm/importers/importer.py:150
+#: bookwyrm/importers/importer.py:154
msgid "Could not find a match for book"
msgstr "找不到匹配的书"
#: bookwyrm/models/base_model.py:17
-#: bookwyrm/templates/import/import_status.html:190
+#: bookwyrm/templates/import/import_status.html:200
msgid "Pending"
msgstr "待处理"
@@ -144,7 +144,7 @@ msgstr "%(value)s 不是有效的 remote_id"
msgid "%(value)s is not a valid username"
msgstr "%(value)s 不是有效的用户名"
-#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:171
+#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:173
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "用户名"
@@ -159,15 +159,15 @@ msgstr "书评"
#: bookwyrm/models/user.py:33
msgid "Comments"
-msgstr ""
+msgstr "评论"
#: bookwyrm/models/user.py:34
msgid "Quotations"
-msgstr ""
+msgstr "引用"
#: bookwyrm/models/user.py:35
msgid "Everything else"
-msgstr ""
+msgstr "所有其它内容"
#: bookwyrm/settings.py:118
msgid "Home Timeline"
@@ -243,6 +243,131 @@ msgstr "服务器错误"
msgid "Something went wrong! Sorry about that."
msgstr "某些东西出错了!对不起啦。"
+#: bookwyrm/templates/annual_summary/layout.html:7
+#: bookwyrm/templates/feed/summary_card.html:8
+#, python-format
+msgid "%(year)s in the books"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:43
+#, python-format
+msgid "%(year)s in the books"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:47
+#, python-format
+msgid "%(display_name)s’s year of reading"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:53
+msgid "Share this page"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:61
+msgid "Copy address"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:61
+#: bookwyrm/templates/lists/list.html:194
+msgid "Copied!"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:69
+msgid "Sharing status: public with key"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:70
+msgid "The page can be seen by anyone with the complete address."
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:75
+msgid "Make page private"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:81
+msgid "Sharing status: private"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:82
+msgid "The page is private, only you can see it."
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:87
+msgid "Make page public"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:91
+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
+#, python-format
+msgid "Sadly %(display_name)s didn’t finish any book in %(year)s"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:110
+#, python-format
+msgid "In %(year)s, %(display_name)s read %(books_total)s books
for a total of %(pages_total)s pages!"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:112
+msgid "That’s great!"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:115
+#, python-format
+msgid "That makes an average of %(pages)s pages per book."
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:120
+#, 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
+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/book/book.html:47
+#: bookwyrm/templates/discover/large-book.html:22
+#: bookwyrm/templates/landing/large-book.html:25
+#: bookwyrm/templates/landing/small-book.html:18
+msgid "by"
+msgstr "作者"
+
+#: bookwyrm/templates/annual_summary/layout.html:149
+#: bookwyrm/templates/annual_summary/layout.html:170
+#, python-format
+msgid "%(pages)s pages"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:157
+msgid "…and the longest"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:187
+#, python-format
+msgid "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:197
+msgid "Their best rated review"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:210
+#, python-format
+msgid "Their rating: %(rating)s"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:227
+#, python-format
+msgid "All the books %(display_name)s read in 2021"
+msgstr ""
+
#: bookwyrm/templates/author/author.html:18
#: bookwyrm/templates/author/author.html:19
msgid "Edit Author"
@@ -431,13 +556,6 @@ msgstr ""
msgid "Confirm"
msgstr "确认"
-#: bookwyrm/templates/book/book.html:47
-#: bookwyrm/templates/discover/large-book.html:22
-#: bookwyrm/templates/landing/large-book.html:25
-#: bookwyrm/templates/landing/small-book.html:18
-msgid "by"
-msgstr "作者"
-
#: bookwyrm/templates/book/book.html:55 bookwyrm/templates/book/book.html:56
msgid "Edit Book"
msgstr "编辑书目"
@@ -517,7 +635,7 @@ msgstr "主题"
msgid "Places"
msgstr "地点"
-#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75
+#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:77
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@@ -892,7 +1010,7 @@ msgstr "跨站社区"
#: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9
-#: bookwyrm/templates/layout.html:101
+#: bookwyrm/templates/layout.html:103
msgid "Directory"
msgstr "目录"
@@ -912,6 +1030,8 @@ msgstr "你可以在任何时候从你的 个人资料设
#: bookwyrm/templates/directory/directory.html:29
#: bookwyrm/templates/directory/directory.html:31
#: bookwyrm/templates/feed/goal_card.html:17
+#: bookwyrm/templates/feed/summary_card.html:12
+#: bookwyrm/templates/feed/summary_card.html:14
#: bookwyrm/templates/snippets/announcement.html:34
msgid "Dismiss message"
msgstr "遣散消息"
@@ -1008,7 +1128,7 @@ msgstr "%(username)s 引用了 %(username)s"
msgstr "与 %(username)s 私信"
#: bookwyrm/templates/feed/direct_messages.html:10
-#: bookwyrm/templates/layout.html:111
+#: bookwyrm/templates/layout.html:113
msgid "Direct Messages"
msgstr "私信"
@@ -1179,11 +1299,11 @@ msgstr ""
msgid "load 0 unread status(es)"
msgstr "加载 0 条未读状态"
-#: bookwyrm/templates/feed/feed.html:80
+#: bookwyrm/templates/feed/feed.html:86
msgid "There aren't any activities right now! Try following a user to get started"
msgstr "现在还没有任何活动!尝试从关注一个用户开始吧"
-#: bookwyrm/templates/feed/feed.html:81
+#: bookwyrm/templates/feed/feed.html:87
msgid "Alternatively, you can try enabling more status types"
msgstr ""
@@ -1203,7 +1323,7 @@ msgstr "你可以在任何时候从你的个人资料页面
msgid "Updates"
msgstr "更新"
-#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:106
+#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:108
msgid "Your Books"
msgstr "你的书目"
@@ -1257,6 +1377,15 @@ msgstr "不显示推荐用户"
msgid "View directory"
msgstr "查看目录"
+#: bookwyrm/templates/feed/summary_card.html:21
+msgid "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!"
+msgstr ""
+
+#: bookwyrm/templates/feed/summary_card.html:26
+#, python-format
+msgid "Discover your stats for %(year)s!"
+msgstr ""
+
#: bookwyrm/templates/get_started/book_preview.html:6
#, python-format
msgid "Have you read %(book_title)s?"
@@ -1271,7 +1400,7 @@ msgid "What are you reading?"
msgstr "你在阅读什么?"
#: bookwyrm/templates/get_started/books.html:9
-#: bookwyrm/templates/layout.html:45 bookwyrm/templates/lists/list.html:138
+#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:138
msgid "Search for a book"
msgstr "搜索书目"
@@ -1290,8 +1419,8 @@ msgstr "你可以在开始使用 %(site_name)s 后添加书目。"
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/groups/group.html:19
-#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:51
-#: bookwyrm/templates/layout.html:52 bookwyrm/templates/lists/list.html:142
+#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:53
+#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:142
#: bookwyrm/templates/search/layout.html:4
#: bookwyrm/templates/search/layout.html:9
msgid "Search"
@@ -1500,28 +1629,28 @@ msgstr "导入书目"
msgid "Data source:"
msgstr "数据来源:"
-#: bookwyrm/templates/import/import.html:37
+#: bookwyrm/templates/import/import.html:40
msgid "Data file:"
msgstr "数据文件:"
-#: bookwyrm/templates/import/import.html:45
+#: bookwyrm/templates/import/import.html:48
msgid "Include reviews"
msgstr "纳入书评"
-#: bookwyrm/templates/import/import.html:50
+#: bookwyrm/templates/import/import.html:53
msgid "Privacy setting for imported reviews:"
msgstr "导入书评的隐私设定"
-#: bookwyrm/templates/import/import.html:56
+#: bookwyrm/templates/import/import.html:59
#: bookwyrm/templates/settings/federation/instance_blocklist.html:64
msgid "Import"
msgstr "导入"
-#: bookwyrm/templates/import/import.html:61
+#: bookwyrm/templates/import/import.html:64
msgid "Recent Imports"
msgstr "最近的导入"
-#: bookwyrm/templates/import/import.html:63
+#: bookwyrm/templates/import/import.html:66
msgid "No recent imports"
msgstr "无最近的导入"
@@ -1587,27 +1716,31 @@ msgstr "标题"
msgid "ISBN"
msgstr "ISBN"
-#: bookwyrm/templates/import/import_status.html:109
+#: bookwyrm/templates/import/import_status.html:110
+msgid "Openlibrary key"
+msgstr ""
+
+#: bookwyrm/templates/import/import_status.html:114
#: bookwyrm/templates/shelf/shelf.html:145
#: bookwyrm/templates/shelf/shelf.html:169
msgid "Author"
msgstr "作者"
-#: bookwyrm/templates/import/import_status.html:112
+#: bookwyrm/templates/import/import_status.html:117
msgid "Shelf"
msgstr "书架"
-#: bookwyrm/templates/import/import_status.html:115
+#: bookwyrm/templates/import/import_status.html:120
#: bookwyrm/templates/import/manual_review.html:13
#: bookwyrm/templates/snippets/create_status.html:17
msgid "Review"
msgstr "书评"
-#: bookwyrm/templates/import/import_status.html:119
+#: bookwyrm/templates/import/import_status.html:124
msgid "Book"
msgstr "书目"
-#: bookwyrm/templates/import/import_status.html:122
+#: bookwyrm/templates/import/import_status.html:127
#: bookwyrm/templates/settings/announcements/announcements.html:38
#: bookwyrm/templates/settings/federation/instance_list.html:46
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44
@@ -1617,31 +1750,31 @@ msgstr "书目"
msgid "Status"
msgstr "状态"
-#: bookwyrm/templates/import/import_status.html:130
+#: bookwyrm/templates/import/import_status.html:135
msgid "Import preview unavailable."
msgstr "导入预览不可用。"
-#: bookwyrm/templates/import/import_status.html:162
+#: bookwyrm/templates/import/import_status.html:172
msgid "View imported review"
msgstr "查看已导入的书评"
-#: bookwyrm/templates/import/import_status.html:176
+#: bookwyrm/templates/import/import_status.html:186
msgid "Imported"
msgstr "已导入"
-#: bookwyrm/templates/import/import_status.html:182
+#: bookwyrm/templates/import/import_status.html:192
msgid "Needs manual review"
msgstr "需要手动批准"
-#: bookwyrm/templates/import/import_status.html:195
+#: bookwyrm/templates/import/import_status.html:205
msgid "Retry"
msgstr "重试"
-#: bookwyrm/templates/import/import_status.html:213
+#: bookwyrm/templates/import/import_status.html:223
msgid "This import is in an old format that is no longer supported. If you would like to troubleshoot missing items from this import, click the button below to update the import format."
msgstr "此导入所用格式已不再受支持。 如果您想要在此次导入中排查缺失的项目,请点击下面的按钮来更新导入格式。"
-#: bookwyrm/templates/import/import_status.html:215
+#: bookwyrm/templates/import/import_status.html:225
msgid "Update import"
msgstr "更新导入"
@@ -1762,7 +1895,7 @@ msgid "Login"
msgstr "登录"
#: bookwyrm/templates/landing/login.html:7
-#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179
+#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:181
#: bookwyrm/templates/ostatus/error.html:37
msgid "Log in"
msgstr "登录"
@@ -1771,7 +1904,7 @@ msgstr "登录"
msgid "Success! Email address confirmed."
msgstr "成功!邮箱地址已确认。"
-#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170
+#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:172
#: bookwyrm/templates/ostatus/error.html:28
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
@@ -1779,12 +1912,12 @@ msgstr "用户名:"
#: bookwyrm/templates/landing/login.html:27
#: bookwyrm/templates/landing/password_reset.html:26
-#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32
+#: bookwyrm/templates/layout.html:176 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:176
+#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:178
#: bookwyrm/templates/ostatus/error.html:34
msgid "Forgot your password?"
msgstr "忘记了密码?"
@@ -1812,23 +1945,23 @@ msgstr "重设密码"
msgid "%(site_name)s search"
msgstr "%(site_name)s 搜索"
-#: bookwyrm/templates/layout.html:43
+#: bookwyrm/templates/layout.html:45
msgid "Search for a book, user, or list"
msgstr "搜索书籍、用户或列表"
-#: bookwyrm/templates/layout.html:61 bookwyrm/templates/layout.html:62
+#: bookwyrm/templates/layout.html:63 bookwyrm/templates/layout.html:64
msgid "Main navigation menu"
msgstr "主导航菜单"
-#: bookwyrm/templates/layout.html:72
+#: bookwyrm/templates/layout.html:74
msgid "Feed"
msgstr "动态"
-#: bookwyrm/templates/layout.html:116
+#: bookwyrm/templates/layout.html:118
msgid "Settings"
msgstr "设置"
-#: bookwyrm/templates/layout.html:125
+#: bookwyrm/templates/layout.html:127
#: 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
@@ -1836,46 +1969,46 @@ msgstr "设置"
msgid "Invites"
msgstr "邀请"
-#: bookwyrm/templates/layout.html:132
+#: bookwyrm/templates/layout.html:134
msgid "Admin"
msgstr "管理员"
-#: bookwyrm/templates/layout.html:139
+#: bookwyrm/templates/layout.html:141
msgid "Log out"
msgstr "登出"
-#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148
+#: bookwyrm/templates/layout.html:149 bookwyrm/templates/layout.html:150
#: bookwyrm/templates/notifications/notifications_page.html:5
#: bookwyrm/templates/notifications/notifications_page.html:10
msgid "Notifications"
msgstr "通知"
-#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33
+#: bookwyrm/templates/layout.html:177 bookwyrm/templates/ostatus/error.html:33
msgid "password"
msgstr "密码"
-#: bookwyrm/templates/layout.html:187
+#: bookwyrm/templates/layout.html:189
msgid "Join"
msgstr "加入"
-#: bookwyrm/templates/layout.html:221
+#: bookwyrm/templates/layout.html:223
msgid "Successfully posted status"
msgstr "成功发布的状态"
-#: bookwyrm/templates/layout.html:222
+#: bookwyrm/templates/layout.html:224
msgid "Error posting status"
msgstr "发布状态时出错"
-#: bookwyrm/templates/layout.html:238
+#: bookwyrm/templates/layout.html:240
msgid "Documentation"
msgstr "文档"
-#: bookwyrm/templates/layout.html:245
+#: bookwyrm/templates/layout.html:247
#, python-format
msgid "Support %(site_name)s on %(support_title)s"
msgstr "在 %(support_title)s 上支持 %(site_name)s"
-#: bookwyrm/templates/layout.html:249
+#: bookwyrm/templates/layout.html:251
msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub."
msgstr "BookWyrm 是开源软件。你可以在 GitHub 贡献或报告问题。"
@@ -2068,15 +2201,11 @@ msgstr "推荐"
msgid "Embed this list on a website"
msgstr ""
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
msgid "Copy embed code"
msgstr ""
-#: bookwyrm/templates/lists/list.html:193
-msgid "Copied!"
-msgstr ""
-
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr ""
@@ -4126,7 +4255,7 @@ msgstr "文件超过了最大大小: 10MB"
msgid "%(title)s: %(subtitle)s"
msgstr "%(title)s:%(subtitle)s"
-#: bookwyrm/views/imports/import_data.py:64
+#: bookwyrm/views/imports/import_data.py:67
msgid "Not a valid csv file"
msgstr "不是有效的 csv 文件"
diff --git a/locale/zh_Hant/LC_MESSAGES/django.mo b/locale/zh_Hant/LC_MESSAGES/django.mo
index a8b4f627..4b754cce 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 b136569d..d5c5d068 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-08 15:40+0000\n"
-"PO-Revision-Date: 2021-12-09 18:56\n"
+"POT-Creation-Date: 2021-12-28 15:00+0000\n"
+"PO-Revision-Date: 2021-12-28 16:03\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Chinese Traditional\n"
"Language: zh\n"
@@ -72,16 +72,16 @@ msgstr "升序"
msgid "Descending"
msgstr "降序"
-#: bookwyrm/importers/importer.py:141 bookwyrm/importers/importer.py:163
+#: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167
msgid "Error loading book"
msgstr ""
-#: bookwyrm/importers/importer.py:150
+#: bookwyrm/importers/importer.py:154
msgid "Could not find a match for book"
msgstr ""
#: bookwyrm/models/base_model.py:17
-#: bookwyrm/templates/import/import_status.html:190
+#: bookwyrm/templates/import/import_status.html:200
msgid "Pending"
msgstr ""
@@ -144,7 +144,7 @@ msgstr "%(value)s 不是有效的 remote_id"
msgid "%(value)s is not a valid username"
msgstr "%(value)s 不是有效的使用者名稱"
-#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:171
+#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:173
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "使用者名稱"
@@ -243,6 +243,131 @@ msgstr "伺服器錯誤"
msgid "Something went wrong! Sorry about that."
msgstr "某些東西出錯了!抱歉。"
+#: bookwyrm/templates/annual_summary/layout.html:7
+#: bookwyrm/templates/feed/summary_card.html:8
+#, python-format
+msgid "%(year)s in the books"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:43
+#, python-format
+msgid "%(year)s in the books"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:47
+#, python-format
+msgid "%(display_name)s’s year of reading"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:53
+msgid "Share this page"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:61
+msgid "Copy address"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:61
+#: bookwyrm/templates/lists/list.html:194
+msgid "Copied!"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:69
+msgid "Sharing status: public with key"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:70
+msgid "The page can be seen by anyone with the complete address."
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:75
+msgid "Make page private"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:81
+msgid "Sharing status: private"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:82
+msgid "The page is private, only you can see it."
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:87
+msgid "Make page public"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:91
+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
+#, python-format
+msgid "Sadly %(display_name)s didn’t finish any book in %(year)s"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:110
+#, python-format
+msgid "In %(year)s, %(display_name)s read %(books_total)s books
for a total of %(pages_total)s pages!"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:112
+msgid "That’s great!"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:115
+#, python-format
+msgid "That makes an average of %(pages)s pages per book."
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:120
+#, 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
+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/book/book.html:47
+#: bookwyrm/templates/discover/large-book.html:22
+#: bookwyrm/templates/landing/large-book.html:25
+#: bookwyrm/templates/landing/small-book.html:18
+msgid "by"
+msgstr "作者"
+
+#: bookwyrm/templates/annual_summary/layout.html:149
+#: bookwyrm/templates/annual_summary/layout.html:170
+#, python-format
+msgid "%(pages)s pages"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:157
+msgid "…and the longest"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:187
+#, python-format
+msgid "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:197
+msgid "Their best rated review"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:210
+#, python-format
+msgid "Their rating: %(rating)s"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:227
+#, python-format
+msgid "All the books %(display_name)s read in 2021"
+msgstr ""
+
#: bookwyrm/templates/author/author.html:18
#: bookwyrm/templates/author/author.html:19
msgid "Edit Author"
@@ -431,13 +556,6 @@ msgstr ""
msgid "Confirm"
msgstr "確認"
-#: bookwyrm/templates/book/book.html:47
-#: bookwyrm/templates/discover/large-book.html:22
-#: bookwyrm/templates/landing/large-book.html:25
-#: bookwyrm/templates/landing/small-book.html:18
-msgid "by"
-msgstr "作者"
-
#: bookwyrm/templates/book/book.html:55 bookwyrm/templates/book/book.html:56
msgid "Edit Book"
msgstr "編輯書目"
@@ -517,7 +635,7 @@ msgstr "主題"
msgid "Places"
msgstr "地點"
-#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75
+#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:77
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@@ -892,7 +1010,7 @@ msgstr "跨站社群"
#: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9
-#: bookwyrm/templates/layout.html:101
+#: bookwyrm/templates/layout.html:103
msgid "Directory"
msgstr "目錄"
@@ -912,6 +1030,8 @@ msgstr "你可以在任何時候從你的 使用者資料
#: bookwyrm/templates/directory/directory.html:29
#: bookwyrm/templates/directory/directory.html:31
#: bookwyrm/templates/feed/goal_card.html:17
+#: bookwyrm/templates/feed/summary_card.html:12
+#: bookwyrm/templates/feed/summary_card.html:14
#: bookwyrm/templates/snippets/announcement.html:34
msgid "Dismiss message"
msgstr "關閉訊息"
@@ -1008,7 +1128,7 @@ msgstr ""
#: bookwyrm/templates/discover/discover.html:4
#: bookwyrm/templates/discover/discover.html:10
-#: bookwyrm/templates/layout.html:78
+#: bookwyrm/templates/layout.html:80
msgid "Discover"
msgstr ""
@@ -1125,18 +1245,18 @@ msgstr "如果你沒有請求重設密碼,你可以忽略這封郵件。"
msgid "Reset your %(site_name)s password"
msgstr "重置你在 %(site_name)s 的密碼"
-#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:37
+#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:39
#, python-format
msgid "%(site_name)s home page"
msgstr ""
#: bookwyrm/templates/embed-layout.html:34
-#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
+#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:232
#, python-format
msgid "About %(site_name)s"
msgstr "關於 %(site_name)s"
-#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234
+#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:236
msgid "Contact site admin"
msgstr "聯絡網站管理員"
@@ -1150,7 +1270,7 @@ msgid "Direct Messages with %(username)s"
msgstr "與 %(username)s 私信"
#: bookwyrm/templates/feed/direct_messages.html:10
-#: bookwyrm/templates/layout.html:111
+#: bookwyrm/templates/layout.html:113
msgid "Direct Messages"
msgstr "私信"
@@ -1179,11 +1299,11 @@ msgstr ""
msgid "load 0 unread status(es)"
msgstr ""
-#: bookwyrm/templates/feed/feed.html:80
+#: bookwyrm/templates/feed/feed.html:86
msgid "There aren't any activities right now! Try following a user to get started"
msgstr "現在還沒有任何活動!嘗試著從關注一個使用者開始吧"
-#: bookwyrm/templates/feed/feed.html:81
+#: bookwyrm/templates/feed/feed.html:87
msgid "Alternatively, you can try enabling more status types"
msgstr ""
@@ -1203,7 +1323,7 @@ msgstr "你可以在任何時候從你的使用者資料頁
msgid "Updates"
msgstr "更新"
-#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:106
+#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:108
msgid "Your Books"
msgstr "你的書目"
@@ -1257,6 +1377,15 @@ msgstr ""
msgid "View directory"
msgstr ""
+#: bookwyrm/templates/feed/summary_card.html:21
+msgid "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!"
+msgstr ""
+
+#: bookwyrm/templates/feed/summary_card.html:26
+#, python-format
+msgid "Discover your stats for %(year)s!"
+msgstr ""
+
#: bookwyrm/templates/get_started/book_preview.html:6
#, python-format
msgid "Have you read %(book_title)s?"
@@ -1271,7 +1400,7 @@ msgid "What are you reading?"
msgstr "你在閱讀什麼?"
#: bookwyrm/templates/get_started/books.html:9
-#: bookwyrm/templates/layout.html:45 bookwyrm/templates/lists/list.html:138
+#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:138
msgid "Search for a book"
msgstr "搜尋書目"
@@ -1290,8 +1419,8 @@ msgstr "你可以在開始使用 %(site_name)s 後新增書目。"
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/groups/group.html:19
-#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:51
-#: bookwyrm/templates/layout.html:52 bookwyrm/templates/lists/list.html:142
+#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:53
+#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:142
#: bookwyrm/templates/search/layout.html:4
#: bookwyrm/templates/search/layout.html:9
msgid "Search"
@@ -1500,28 +1629,28 @@ msgstr "匯入書目"
msgid "Data source:"
msgstr "資料來源:"
-#: bookwyrm/templates/import/import.html:37
+#: bookwyrm/templates/import/import.html:40
msgid "Data file:"
msgstr "資料檔案:"
-#: bookwyrm/templates/import/import.html:45
+#: bookwyrm/templates/import/import.html:48
msgid "Include reviews"
msgstr "納入書評"
-#: bookwyrm/templates/import/import.html:50
+#: bookwyrm/templates/import/import.html:53
msgid "Privacy setting for imported reviews:"
msgstr "匯入書評的隱私設定"
-#: bookwyrm/templates/import/import.html:56
+#: bookwyrm/templates/import/import.html:59
#: bookwyrm/templates/settings/federation/instance_blocklist.html:64
msgid "Import"
msgstr "匯入"
-#: bookwyrm/templates/import/import.html:61
+#: bookwyrm/templates/import/import.html:64
msgid "Recent Imports"
msgstr "最近的匯入"
-#: bookwyrm/templates/import/import.html:63
+#: bookwyrm/templates/import/import.html:66
msgid "No recent imports"
msgstr "無最近的匯入"
@@ -1587,27 +1716,31 @@ msgstr "標題"
msgid "ISBN"
msgstr ""
-#: bookwyrm/templates/import/import_status.html:109
+#: bookwyrm/templates/import/import_status.html:110
+msgid "Openlibrary key"
+msgstr ""
+
+#: bookwyrm/templates/import/import_status.html:114
#: bookwyrm/templates/shelf/shelf.html:145
#: bookwyrm/templates/shelf/shelf.html:169
msgid "Author"
msgstr "作者"
-#: bookwyrm/templates/import/import_status.html:112
+#: bookwyrm/templates/import/import_status.html:117
msgid "Shelf"
msgstr ""
-#: bookwyrm/templates/import/import_status.html:115
+#: bookwyrm/templates/import/import_status.html:120
#: bookwyrm/templates/import/manual_review.html:13
#: bookwyrm/templates/snippets/create_status.html:17
msgid "Review"
msgstr "書評"
-#: bookwyrm/templates/import/import_status.html:119
+#: bookwyrm/templates/import/import_status.html:124
msgid "Book"
msgstr "書目"
-#: bookwyrm/templates/import/import_status.html:122
+#: bookwyrm/templates/import/import_status.html:127
#: bookwyrm/templates/settings/announcements/announcements.html:38
#: bookwyrm/templates/settings/federation/instance_list.html:46
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44
@@ -1617,31 +1750,31 @@ msgstr "書目"
msgid "Status"
msgstr "狀態"
-#: bookwyrm/templates/import/import_status.html:130
+#: bookwyrm/templates/import/import_status.html:135
msgid "Import preview unavailable."
msgstr ""
-#: bookwyrm/templates/import/import_status.html:162
+#: bookwyrm/templates/import/import_status.html:172
msgid "View imported review"
msgstr ""
-#: bookwyrm/templates/import/import_status.html:176
+#: bookwyrm/templates/import/import_status.html:186
msgid "Imported"
msgstr "已匯入"
-#: bookwyrm/templates/import/import_status.html:182
+#: bookwyrm/templates/import/import_status.html:192
msgid "Needs manual review"
msgstr ""
-#: bookwyrm/templates/import/import_status.html:195
+#: bookwyrm/templates/import/import_status.html:205
msgid "Retry"
msgstr ""
-#: bookwyrm/templates/import/import_status.html:213
+#: bookwyrm/templates/import/import_status.html:223
msgid "This import is in an old format that is no longer supported. If you would like to troubleshoot missing items from this import, click the button below to update the import format."
msgstr ""
-#: bookwyrm/templates/import/import_status.html:215
+#: bookwyrm/templates/import/import_status.html:225
msgid "Update import"
msgstr ""
@@ -1762,7 +1895,7 @@ msgid "Login"
msgstr "登入"
#: bookwyrm/templates/landing/login.html:7
-#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:179
+#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:181
#: bookwyrm/templates/ostatus/error.html:37
msgid "Log in"
msgstr "登入"
@@ -1771,7 +1904,7 @@ msgstr "登入"
msgid "Success! Email address confirmed."
msgstr ""
-#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:170
+#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:172
#: bookwyrm/templates/ostatus/error.html:28
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
@@ -1779,12 +1912,12 @@ msgstr "使用者名稱:"
#: bookwyrm/templates/landing/login.html:27
#: bookwyrm/templates/landing/password_reset.html:26
-#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:32
+#: bookwyrm/templates/layout.html:176 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:176
+#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:178
#: bookwyrm/templates/ostatus/error.html:34
msgid "Forgot your password?"
msgstr "忘記了密碼?"
@@ -1812,23 +1945,23 @@ msgstr "重設密碼"
msgid "%(site_name)s search"
msgstr ""
-#: bookwyrm/templates/layout.html:43
+#: bookwyrm/templates/layout.html:45
msgid "Search for a book, user, or list"
msgstr ""
-#: bookwyrm/templates/layout.html:61 bookwyrm/templates/layout.html:62
+#: bookwyrm/templates/layout.html:63 bookwyrm/templates/layout.html:64
msgid "Main navigation menu"
msgstr "主導航選單"
-#: bookwyrm/templates/layout.html:72
+#: bookwyrm/templates/layout.html:74
msgid "Feed"
msgstr "動態"
-#: bookwyrm/templates/layout.html:116
+#: bookwyrm/templates/layout.html:118
msgid "Settings"
msgstr "設定"
-#: bookwyrm/templates/layout.html:125
+#: bookwyrm/templates/layout.html:127
#: 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
@@ -1836,46 +1969,46 @@ msgstr "設定"
msgid "Invites"
msgstr "邀請"
-#: bookwyrm/templates/layout.html:132
+#: bookwyrm/templates/layout.html:134
msgid "Admin"
msgstr "管理員"
-#: bookwyrm/templates/layout.html:139
+#: bookwyrm/templates/layout.html:141
msgid "Log out"
msgstr "登出"
-#: bookwyrm/templates/layout.html:147 bookwyrm/templates/layout.html:148
+#: bookwyrm/templates/layout.html:149 bookwyrm/templates/layout.html:150
#: bookwyrm/templates/notifications/notifications_page.html:5
#: bookwyrm/templates/notifications/notifications_page.html:10
msgid "Notifications"
msgstr "通知"
-#: bookwyrm/templates/layout.html:175 bookwyrm/templates/ostatus/error.html:33
+#: bookwyrm/templates/layout.html:177 bookwyrm/templates/ostatus/error.html:33
msgid "password"
msgstr "密碼"
-#: bookwyrm/templates/layout.html:187
+#: bookwyrm/templates/layout.html:189
msgid "Join"
msgstr "加入"
-#: bookwyrm/templates/layout.html:221
+#: bookwyrm/templates/layout.html:223
msgid "Successfully posted status"
msgstr ""
-#: bookwyrm/templates/layout.html:222
+#: bookwyrm/templates/layout.html:224
msgid "Error posting status"
msgstr ""
-#: bookwyrm/templates/layout.html:238
+#: bookwyrm/templates/layout.html:240
msgid "Documentation"
msgstr "文件:"
-#: bookwyrm/templates/layout.html:245
+#: bookwyrm/templates/layout.html:247
#, python-format
msgid "Support %(site_name)s on %(support_title)s"
msgstr "在 %(support_title)s 上支援 %(site_name)s"
-#: bookwyrm/templates/layout.html:249
+#: bookwyrm/templates/layout.html:251
msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub."
msgstr "BookWyrm 是開源軟體。你可以在 GitHub 貢獻或報告問題。"
@@ -2068,15 +2201,11 @@ msgstr "推薦"
msgid "Embed this list on a website"
msgstr ""
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
msgid "Copy embed code"
msgstr ""
-#: bookwyrm/templates/lists/list.html:193
-msgid "Copied!"
-msgstr ""
-
-#: bookwyrm/templates/lists/list.html:193
+#: bookwyrm/templates/lists/list.html:194
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr ""
@@ -4126,7 +4255,7 @@ msgstr "檔案超過了最大大小: 10MB"
msgid "%(title)s: %(subtitle)s"
msgstr ""
-#: bookwyrm/views/imports/import_data.py:64
+#: bookwyrm/views/imports/import_data.py:67
msgid "Not a valid csv file"
msgstr "不是有效的 csv 檔案"