diff --git a/.dockerignore b/.dockerignore
index a5130c8bd1..5edf3de0d9 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -5,3 +5,4 @@ __pycache__
.git
.github
.pytest*
+.env
diff --git a/.env.example b/.env.example
index 2be08224b8..fb0f7308d1 100644
--- a/.env.example
+++ b/.env.example
@@ -8,7 +8,7 @@ USE_HTTPS=true
DOMAIN=your.domain.here
EMAIL=your@email.here
-# Instance defualt language (see options at bookwyrm/settings.py "LANGUAGES"
+# Instance default language (see options at bookwyrm/settings.py "LANGUAGES"
LANGUAGE_CODE="en-us"
# Used for deciding which editions to prefer
DEFAULT_LANGUAGE="English"
@@ -82,6 +82,12 @@ AWS_SECRET_ACCESS_KEY=
# AWS_S3_REGION_NAME=None # "fr-par"
# AWS_S3_ENDPOINT_URL=None # "https://s3.fr-par.scw.cloud"
+# Commented are example values if you use Azure Blob Storage
+# USE_AZURE=true
+# AZURE_ACCOUNT_NAME= # "example-account-name"
+# AZURE_ACCOUNT_KEY= # "base64-encoded-access-key"
+# AZURE_CONTAINER= # "example-blob-container-name"
+# AZURE_CUSTOM_DOMAIN= # "example-account-name.blob.core.windows.net"
# Preview image generation can be computing and storage intensive
ENABLE_PREVIEW_IMAGES=False
diff --git a/bookwyrm/activitypub/base_activity.py b/bookwyrm/activitypub/base_activity.py
index 840dab6a43..9b7897ebaa 100644
--- a/bookwyrm/activitypub/base_activity.py
+++ b/bookwyrm/activitypub/base_activity.py
@@ -127,7 +127,7 @@ def to_model(
if (
allow_create
and hasattr(model, "ignore_activity")
- and model.ignore_activity(self)
+ and model.ignore_activity(self, allow_external_connections)
):
return None
@@ -241,7 +241,7 @@ def serialize(self, **kwargs):
return data
-@app.task(queue=MEDIUM, ignore_result=True)
+@app.task(queue=MEDIUM)
@transaction.atomic
def set_related_field(
model_name, origin_model_name, related_field_name, related_remote_id, data
@@ -384,7 +384,8 @@ def get_activitypub_data(url):
resp = requests.get(
url,
headers={
- "Accept": "application/json; charset=utf-8",
+ # pylint: disable=line-too-long
+ "Accept": 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"',
"Date": now,
"Signature": make_signature("get", sender, url, now),
},
diff --git a/bookwyrm/activitystreams.py b/bookwyrm/activitystreams.py
index d4dac14120..5d581d564e 100644
--- a/bookwyrm/activitystreams.py
+++ b/bookwyrm/activitystreams.py
@@ -4,10 +4,15 @@
from django.db import transaction
from django.db.models import signals, Q
from django.utils import timezone
+from opentelemetry import trace
from bookwyrm import models
from bookwyrm.redis_store import RedisStore, r
from bookwyrm.tasks import app, LOW, MEDIUM, HIGH
+from bookwyrm.telemetry import open_telemetry
+
+
+tracer = open_telemetry.tracer()
class ActivityStream(RedisStore):
@@ -33,11 +38,14 @@ def get_rank(self, obj): # pylint: disable=no-self-use
def add_status(self, status, increment_unread=False):
"""add a status to users' feeds"""
+ audience = self.get_audience(status)
# the pipeline contains all the add-to-stream activities
- pipeline = self.add_object_to_related_stores(status, execute=False)
+ pipeline = self.add_object_to_stores(
+ status, self.get_stores_for_users(audience), execute=False
+ )
if increment_unread:
- for user_id in self.get_audience(status):
+ for user_id in audience:
# add to the unread status count
pipeline.incr(self.unread_id(user_id))
# add to the unread status count for status type
@@ -97,11 +105,18 @@ def populate_streams(self, user):
"""go from zero to a timeline"""
self.populate_store(self.stream_id(user.id))
+ @tracer.start_as_current_span("ActivityStream._get_audience")
def _get_audience(self, status): # pylint: disable=no-self-use
- """given a status, what users should see it"""
- # direct messages don't appeard in feeds, direct comments/reviews/etc do
+ """given a status, what users should see it, excluding the author"""
+ trace.get_current_span().set_attribute("status_type", status.status_type)
+ trace.get_current_span().set_attribute("status_privacy", status.privacy)
+ trace.get_current_span().set_attribute(
+ "status_reply_parent_privacy",
+ status.reply_parent.privacy if status.reply_parent else None,
+ )
+ # direct messages don't appear in feeds, direct comments/reviews/etc do
if status.privacy == "direct" and status.status_type == "Note":
- return []
+ return models.User.objects.none()
# everybody who could plausibly see this status
audience = models.User.objects.filter(
@@ -114,15 +129,13 @@ def _get_audience(self, status): # pylint: disable=no-self-use
# only visible to the poster and mentioned users
if status.privacy == "direct":
audience = audience.filter(
- Q(id=status.user.id) # if the user is the post's author
- | Q(id__in=status.mention_users.all()) # if the user is mentioned
+ Q(id__in=status.mention_users.all()) # if the user is mentioned
)
# don't show replies to statuses the user can't see
elif status.reply_parent and status.reply_parent.privacy == "followers":
audience = audience.filter(
- Q(id=status.user.id) # if the user is the post's author
- | Q(id=status.reply_parent.user.id) # if the user is the OG author
+ Q(id=status.reply_parent.user.id) # if the user is the OG author
| (
Q(following=status.user) & Q(following=status.reply_parent.user)
) # if the user is following both authors
@@ -131,17 +144,23 @@ def _get_audience(self, status): # pylint: disable=no-self-use
# only visible to the poster's followers and tagged users
elif status.privacy == "followers":
audience = audience.filter(
- Q(id=status.user.id) # if the user is the post's author
- | Q(following=status.user) # if the user is following the author
+ Q(following=status.user) # if the user is following the author
)
return audience.distinct()
- def get_audience(self, status): # pylint: disable=no-self-use
+ @tracer.start_as_current_span("ActivityStream.get_audience")
+ def get_audience(self, status):
"""given a status, what users should see it"""
- return [user.id for user in self._get_audience(status)]
+ trace.get_current_span().set_attribute("stream_id", self.key)
+ audience = self._get_audience(status).values_list("id", flat=True)
+ status_author = models.User.objects.filter(
+ is_active=True, local=True, id=status.user.id
+ ).values_list("id", flat=True)
+ return list(set(list(audience) + list(status_author)))
- def get_stores_for_object(self, obj):
- return [self.stream_id(user_id) for user_id in self.get_audience(obj)]
+ def get_stores_for_users(self, user_ids):
+ """convert a list of user ids into redis store ids"""
+ return [self.stream_id(user_id) for user_id in user_ids]
def get_statuses_for_user(self, user): # pylint: disable=no-self-use
"""given a user, what statuses should they see on this stream"""
@@ -160,15 +179,19 @@ class HomeStream(ActivityStream):
key = "home"
+ @tracer.start_as_current_span("HomeStream.get_audience")
def get_audience(self, status):
+ trace.get_current_span().set_attribute("stream_id", self.key)
audience = super()._get_audience(status)
if not audience:
return []
- # if the user is the post's author
- ids_self = [user.id for user in audience.filter(Q(id=status.user.id))]
# if the user is following the author
- ids_following = [user.id for user in audience.filter(Q(following=status.user))]
- return ids_self + ids_following
+ audience = audience.filter(following=status.user).values_list("id", flat=True)
+ # if the user is the post's author
+ status_author = models.User.objects.filter(
+ is_active=True, local=True, id=status.user.id
+ ).values_list("id", flat=True)
+ return list(set(list(audience) + list(status_author)))
def get_statuses_for_user(self, user):
return models.Status.privacy_filter(
@@ -188,11 +211,11 @@ class LocalStream(ActivityStream):
key = "local"
- def _get_audience(self, status):
+ def get_audience(self, status):
# this stream wants no part in non-public statuses
if status.privacy != "public" or not status.user.local:
return []
- return super()._get_audience(status)
+ return super().get_audience(status)
def get_statuses_for_user(self, user):
# all public statuses by a local user
@@ -209,13 +232,6 @@ class BooksStream(ActivityStream):
def _get_audience(self, status):
"""anyone with the mentioned book on their shelves"""
- # only show public statuses on the books feed,
- # and only statuses that mention books
- if status.privacy != "public" or not (
- status.mention_books.exists() or hasattr(status, "book")
- ):
- return []
-
work = (
status.book.parent_work
if hasattr(status, "book")
@@ -224,9 +240,19 @@ def _get_audience(self, status):
audience = super()._get_audience(status)
if not audience:
- return []
+ return models.User.objects.none()
return audience.filter(shelfbook__book__parent_work=work).distinct()
+ def get_audience(self, status):
+ # only show public statuses on the books feed,
+ # and only statuses that mention books
+ if status.privacy != "public" or not (
+ status.mention_books.exists() or hasattr(status, "book")
+ ):
+ return []
+
+ return super().get_audience(status)
+
def get_statuses_for_user(self, user):
"""any public status that mentions the user's books"""
books = user.shelfbook_set.values_list(
@@ -471,7 +497,7 @@ def remove_statuses_on_unshelve(sender, instance, *args, **kwargs):
# ---- TASKS
-@app.task(queue=LOW, ignore_result=True)
+@app.task(queue=LOW)
def add_book_statuses_task(user_id, book_id):
"""add statuses related to a book on shelve"""
user = models.User.objects.get(id=user_id)
@@ -479,7 +505,7 @@ def add_book_statuses_task(user_id, book_id):
BooksStream().add_book_statuses(user, book)
-@app.task(queue=LOW, ignore_result=True)
+@app.task(queue=LOW)
def remove_book_statuses_task(user_id, book_id):
"""remove statuses about a book from a user's books feed"""
user = models.User.objects.get(id=user_id)
@@ -487,7 +513,7 @@ def remove_book_statuses_task(user_id, book_id):
BooksStream().remove_book_statuses(user, book)
-@app.task(queue=MEDIUM, ignore_result=True)
+@app.task(queue=MEDIUM)
def populate_stream_task(stream, user_id):
"""background task for populating an empty activitystream"""
user = models.User.objects.get(id=user_id)
@@ -495,7 +521,7 @@ def populate_stream_task(stream, user_id):
stream.populate_streams(user)
-@app.task(queue=MEDIUM, ignore_result=True)
+@app.task(queue=MEDIUM)
def remove_status_task(status_ids):
"""remove a status from any stream it might be in"""
# this can take an id or a list of ids
@@ -505,10 +531,12 @@ def remove_status_task(status_ids):
for stream in streams.values():
for status in statuses:
- stream.remove_object_from_related_stores(status)
+ stream.remove_object_from_stores(
+ status, stream.get_stores_for_users(stream.get_audience(status))
+ )
-@app.task(queue=HIGH, ignore_result=True)
+@app.task(queue=HIGH)
def add_status_task(status_id, increment_unread=False):
"""add a status to any stream it should be in"""
status = models.Status.objects.select_subclasses().get(id=status_id)
@@ -520,7 +548,7 @@ def add_status_task(status_id, increment_unread=False):
stream.add_status(status, increment_unread=increment_unread)
-@app.task(queue=MEDIUM, ignore_result=True)
+@app.task(queue=MEDIUM)
def remove_user_statuses_task(viewer_id, user_id, stream_list=None):
"""remove all statuses by a user from a viewer's stream"""
stream_list = [streams[s] for s in stream_list] if stream_list else streams.values()
@@ -530,7 +558,7 @@ def remove_user_statuses_task(viewer_id, user_id, stream_list=None):
stream.remove_user_statuses(viewer, user)
-@app.task(queue=MEDIUM, ignore_result=True)
+@app.task(queue=MEDIUM)
def add_user_statuses_task(viewer_id, user_id, stream_list=None):
"""add all statuses by a user to a viewer's stream"""
stream_list = [streams[s] for s in stream_list] if stream_list else streams.values()
@@ -540,7 +568,7 @@ def add_user_statuses_task(viewer_id, user_id, stream_list=None):
stream.add_user_statuses(viewer, user)
-@app.task(queue=MEDIUM, ignore_result=True)
+@app.task(queue=MEDIUM)
def handle_boost_task(boost_id):
"""remove the original post and other, earlier boosts"""
instance = models.Status.objects.get(id=boost_id)
@@ -554,10 +582,10 @@ def handle_boost_task(boost_id):
for stream in streams.values():
# people who should see the boost (not people who see the original status)
- audience = stream.get_stores_for_object(instance)
- stream.remove_object_from_related_stores(boosted, stores=audience)
+ audience = stream.get_stores_for_users(stream.get_audience(instance))
+ stream.remove_object_from_stores(boosted, audience)
for status in old_versions:
- stream.remove_object_from_related_stores(status, stores=audience)
+ stream.remove_object_from_stores(status, audience)
def get_status_type(status):
diff --git a/bookwyrm/apps.py b/bookwyrm/apps.py
index 786f86e1c6..b0c3e3fa4c 100644
--- a/bookwyrm/apps.py
+++ b/bookwyrm/apps.py
@@ -35,11 +35,12 @@ class BookwyrmConfig(AppConfig):
# pylint: disable=no-self-use
def ready(self):
"""set up OTLP and preview image files, if desired"""
- if settings.OTEL_EXPORTER_OTLP_ENDPOINT:
+ if settings.OTEL_EXPORTER_OTLP_ENDPOINT or settings.OTEL_EXPORTER_CONSOLE:
# pylint: disable=import-outside-toplevel
from bookwyrm.telemetry import open_telemetry
open_telemetry.instrumentDjango()
+ open_telemetry.instrumentPostgres()
if settings.ENABLE_PREVIEW_IMAGES and settings.FONTS:
# Download any fonts that we don't have yet
diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py
index 0e04ffaf25..950bb11f98 100644
--- a/bookwyrm/connectors/abstract_connector.py
+++ b/bookwyrm/connectors/abstract_connector.py
@@ -4,13 +4,16 @@
import imghdr
import logging
import re
+import asyncio
+import requests
+from requests.exceptions import RequestException
+import aiohttp
from django.core.files.base import ContentFile
from django.db import transaction
-import requests
-from requests.exceptions import RequestException
from bookwyrm import activitypub, models, settings
+from bookwyrm.settings import USER_AGENT
from .connector_manager import load_more_data, ConnectorException, raise_not_valid_url
from .format_mappings import format_mappings
@@ -52,11 +55,44 @@ def get_search_url(self, query):
return f"{self.search_url}{quote_plus(query)}"
def process_search_response(self, query, data, min_confidence):
- """Format the search results based on the formt of the query"""
+ """Format the search results based on the format of the query"""
if maybe_isbn(query):
return list(self.parse_isbn_search_data(data))[:10]
return list(self.parse_search_data(data, min_confidence))[:10]
+ async def get_results(self, session, url, min_confidence, query):
+ """try this specific connector"""
+ # pylint: disable=line-too-long
+ headers = {
+ "Accept": (
+ 'application/json, application/activity+json, application/ld+json; profile="https://www.w3.org/ns/activitystreams"; charset=utf-8'
+ ),
+ "User-Agent": USER_AGENT,
+ }
+ params = {"min_confidence": min_confidence}
+ try:
+ async with session.get(url, headers=headers, params=params) as response:
+ if not response.ok:
+ logger.info("Unable to connect to %s: %s", url, response.reason)
+ return
+
+ try:
+ raw_data = await response.json()
+ except aiohttp.client_exceptions.ContentTypeError as err:
+ logger.exception(err)
+ return
+
+ return {
+ "connector": self,
+ "results": self.process_search_response(
+ query, raw_data, min_confidence
+ ),
+ }
+ except asyncio.TimeoutError:
+ logger.info("Connection timed out for url: %s", url)
+ except aiohttp.ClientError as err:
+ logger.info(err)
+
@abstractmethod
def get_or_create_book(self, remote_id):
"""pull up a book record by whatever means possible"""
@@ -321,7 +357,7 @@ def infer_physical_format(format_text):
def unique_physical_format(format_text):
- """only store the format if it isn't diretly in the format mappings"""
+ """only store the format if it isn't directly in the format mappings"""
format_text = format_text.lower()
if format_text in format_mappings:
# try a direct match, so saving this would be redundant
diff --git a/bookwyrm/connectors/connector_manager.py b/bookwyrm/connectors/connector_manager.py
index 4330d4ac26..7e823c0afa 100644
--- a/bookwyrm/connectors/connector_manager.py
+++ b/bookwyrm/connectors/connector_manager.py
@@ -12,7 +12,7 @@
from requests import HTTPError
from bookwyrm import book_search, models
-from bookwyrm.settings import SEARCH_TIMEOUT, USER_AGENT
+from bookwyrm.settings import SEARCH_TIMEOUT
from bookwyrm.tasks import app, LOW
logger = logging.getLogger(__name__)
@@ -22,40 +22,6 @@ class ConnectorException(HTTPError):
"""when the connector can't do what was asked"""
-async def get_results(session, url, min_confidence, query, connector):
- """try this specific connector"""
- # pylint: disable=line-too-long
- headers = {
- "Accept": (
- 'application/json, application/activity+json, application/ld+json; profile="https://www.w3.org/ns/activitystreams"; charset=utf-8'
- ),
- "User-Agent": USER_AGENT,
- }
- params = {"min_confidence": min_confidence}
- try:
- async with session.get(url, headers=headers, params=params) as response:
- if not response.ok:
- logger.info("Unable to connect to %s: %s", url, response.reason)
- return
-
- try:
- raw_data = await response.json()
- except aiohttp.client_exceptions.ContentTypeError as err:
- logger.exception(err)
- return
-
- return {
- "connector": connector,
- "results": connector.process_search_response(
- query, raw_data, min_confidence
- ),
- }
- except asyncio.TimeoutError:
- logger.info("Connection timed out for url: %s", url)
- except aiohttp.ClientError as err:
- logger.info(err)
-
-
async def async_connector_search(query, items, min_confidence):
"""Try a number of requests simultaneously"""
timeout = aiohttp.ClientTimeout(total=SEARCH_TIMEOUT)
@@ -64,7 +30,7 @@ async def async_connector_search(query, items, min_confidence):
for url, connector in items:
tasks.append(
asyncio.ensure_future(
- get_results(session, url, min_confidence, query, connector)
+ connector.get_results(session, url, min_confidence, query)
)
)
@@ -73,7 +39,7 @@ async def async_connector_search(query, items, min_confidence):
def search(query, min_confidence=0.1, return_first=False):
- """find books based on arbitary keywords"""
+ """find books based on arbitrary keywords"""
if not query:
return []
results = []
@@ -143,7 +109,7 @@ def get_or_create_connector(remote_id):
return load_connector(connector_info)
-@app.task(queue=LOW, ignore_result=True)
+@app.task(queue=LOW)
def load_more_data(connector_id, book_id):
"""background the work of getting all 10,000 editions of LoTR"""
connector_info = models.Connector.objects.get(id=connector_id)
@@ -152,7 +118,7 @@ def load_more_data(connector_id, book_id):
connector.expand_book_data(book)
-@app.task(queue=LOW, ignore_result=True)
+@app.task(queue=LOW)
def create_edition_task(connector_id, work_id, data):
"""separate task for each of the 10,000 editions of LoTR"""
connector_info = models.Connector.objects.get(id=connector_id)
diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py
index a330b2c4a5..f3e24c0ec5 100644
--- a/bookwyrm/connectors/inventaire.py
+++ b/bookwyrm/connectors/inventaire.py
@@ -97,7 +97,7 @@ def parse_search_data(self, data, min_confidence):
)
def parse_isbn_search_data(self, data):
- """got some daaaata"""
+ """got some data"""
results = data.get("entities")
if not results:
return
diff --git a/bookwyrm/emailing.py b/bookwyrm/emailing.py
index 1640c0b733..2271077b12 100644
--- a/bookwyrm/emailing.py
+++ b/bookwyrm/emailing.py
@@ -75,7 +75,7 @@ def format_email(email_name, data):
return (subject, html_content, text_content)
-@app.task(queue=HIGH, ignore_result=True)
+@app.task(queue=HIGH)
def send_email(recipient, subject, html_content, text_content):
"""use a task to send the email"""
email = EmailMultiAlternatives(
diff --git a/bookwyrm/forms/admin.py b/bookwyrm/forms/admin.py
index 1ad1581191..72f50ccb87 100644
--- a/bookwyrm/forms/admin.py
+++ b/bookwyrm/forms/admin.py
@@ -15,7 +15,7 @@
# pylint: disable=missing-class-docstring
class ExpiryWidget(widgets.Select):
def value_from_datadict(self, data, files, name):
- """human-readable exiration time buckets"""
+ """human-readable expiration time buckets"""
selected_string = super().value_from_datadict(data, files, name)
if selected_string == "day":
diff --git a/bookwyrm/importers/librarything_import.py b/bookwyrm/importers/librarything_import.py
index c6833547d4..ea31b46eb6 100644
--- a/bookwyrm/importers/librarything_import.py
+++ b/bookwyrm/importers/librarything_import.py
@@ -19,7 +19,7 @@ def normalize_row(self, entry, mappings): # pylint: disable=no-self-use
normalized = {k: remove_brackets(entry.get(v)) for k, v in mappings.items()}
isbn_13 = normalized.get("isbn_13")
isbn_13 = isbn_13.split(", ") if isbn_13 else []
- normalized["isbn_13"] = isbn_13[1] if len(isbn_13) > 0 else None
+ normalized["isbn_13"] = isbn_13[1] if len(isbn_13) > 1 else None
return normalized
def get_shelf(self, normalized_row):
diff --git a/bookwyrm/lists_stream.py b/bookwyrm/lists_stream.py
index 7426488cec..2b08010b12 100644
--- a/bookwyrm/lists_stream.py
+++ b/bookwyrm/lists_stream.py
@@ -24,8 +24,7 @@ def get_rank(self, obj): # pylint: disable=no-self-use
def add_list(self, book_list):
"""add a list to users' feeds"""
- # the pipeline contains all the add-to-stream activities
- self.add_object_to_related_stores(book_list)
+ self.add_object_to_stores(book_list, self.get_stores_for_object(book_list))
def add_user_lists(self, viewer, user):
"""add a user's lists to another user's feed"""
@@ -86,18 +85,19 @@ def get_audience(self, book_list): # pylint: disable=no-self-use
if group:
audience = audience.filter(
Q(id=book_list.user.id) # if the user is the list's owner
- | Q(following=book_list.user) # if the user is following the pwmer
+ | Q(following=book_list.user) # if the user is following the owner
# if a user is in the group
| Q(memberships__group__id=book_list.group.id)
)
else:
audience = audience.filter(
Q(id=book_list.user.id) # if the user is the list's owner
- | Q(following=book_list.user) # if the user is following the pwmer
+ | Q(following=book_list.user) # if the user is following the owner
)
return audience.distinct()
def get_stores_for_object(self, obj):
+ """the stores that an object belongs in"""
return [self.stream_id(u) for u in self.get_audience(obj)]
def get_lists_for_user(self, user): # pylint: disable=no-self-use
@@ -217,14 +217,14 @@ def add_list_on_account_create_command(user_id):
# ---- TASKS
-@app.task(queue=MEDIUM, ignore_result=True)
+@app.task(queue=MEDIUM)
def populate_lists_task(user_id):
"""background task for populating an empty list stream"""
user = models.User.objects.get(id=user_id)
ListsStream().populate_lists(user)
-@app.task(queue=MEDIUM, ignore_result=True)
+@app.task(queue=MEDIUM)
def remove_list_task(list_id, re_add=False):
"""remove a list from any stream it might be in"""
stores = models.User.objects.filter(local=True, is_active=True).values_list(
@@ -233,20 +233,20 @@ def remove_list_task(list_id, re_add=False):
# delete for every store
stores = [ListsStream().stream_id(idx) for idx in stores]
- ListsStream().remove_object_from_related_stores(list_id, stores=stores)
+ ListsStream().remove_object_from_stores(list_id, stores)
if re_add:
add_list_task.delay(list_id)
-@app.task(queue=HIGH, ignore_result=True)
+@app.task(queue=HIGH)
def add_list_task(list_id):
"""add a list to any stream it should be in"""
book_list = models.List.objects.get(id=list_id)
ListsStream().add_list(book_list)
-@app.task(queue=MEDIUM, ignore_result=True)
+@app.task(queue=MEDIUM)
def remove_user_lists_task(viewer_id, user_id, exclude_privacy=None):
"""remove all lists by a user from a viewer's stream"""
viewer = models.User.objects.get(id=viewer_id)
@@ -254,7 +254,7 @@ def remove_user_lists_task(viewer_id, user_id, exclude_privacy=None):
ListsStream().remove_user_lists(viewer, user, exclude_privacy=exclude_privacy)
-@app.task(queue=MEDIUM, ignore_result=True)
+@app.task(queue=MEDIUM)
def add_user_lists_task(viewer_id, user_id):
"""add all lists by a user to a viewer's stream"""
viewer = models.User.objects.get(id=viewer_id)
diff --git a/bookwyrm/management/commands/deduplicate_book_data.py b/bookwyrm/management/commands/deduplicate_book_data.py
index ed01a78433..dde7d133c5 100644
--- a/bookwyrm/management/commands/deduplicate_book_data.py
+++ b/bookwyrm/management/commands/deduplicate_book_data.py
@@ -3,38 +3,7 @@
from django.core.management.base import BaseCommand
from django.db.models import Count
from bookwyrm import models
-
-
-def update_related(canonical, obj):
- """update all the models with fk to the object being removed"""
- # move related models to canonical
- related_models = [
- (r.remote_field.name, r.related_model) for r in canonical._meta.related_objects
- ]
- for (related_field, related_model) in related_models:
- related_objs = related_model.objects.filter(**{related_field: obj})
- for related_obj in related_objs:
- print("replacing in", related_model.__name__, related_field, related_obj.id)
- try:
- setattr(related_obj, related_field, canonical)
- related_obj.save()
- except TypeError:
- getattr(related_obj, related_field).add(canonical)
- getattr(related_obj, related_field).remove(obj)
-
-
-def copy_data(canonical, obj):
- """try to get the most data possible"""
- for data_field in obj._meta.get_fields():
- if not hasattr(data_field, "activitypub_field"):
- continue
- data_value = getattr(obj, data_field.name)
- if not data_value:
- continue
- if not getattr(canonical, data_field.name):
- print("setting data field", data_field.name, data_value)
- setattr(canonical, data_field.name, data_value)
- canonical.save()
+from bookwyrm.management.merge import merge_objects
def dedupe_model(model):
@@ -61,19 +30,16 @@ def dedupe_model(model):
print("keeping", canonical.remote_id)
for obj in objs[1:]:
print(obj.remote_id)
- copy_data(canonical, obj)
- update_related(canonical, obj)
- # remove the outdated entry
- obj.delete()
+ merge_objects(canonical, obj)
class Command(BaseCommand):
- """dedplucate allllll the book data models"""
+ """deduplicate allllll the book data models"""
help = "merges duplicate book data"
# pylint: disable=no-self-use,unused-argument
def handle(self, *args, **options):
- """run deudplications"""
+ """run deduplications"""
dedupe_model(models.Edition)
dedupe_model(models.Work)
dedupe_model(models.Author)
diff --git a/bookwyrm/management/commands/merge_authors.py b/bookwyrm/management/commands/merge_authors.py
new file mode 100644
index 0000000000..7465df1479
--- /dev/null
+++ b/bookwyrm/management/commands/merge_authors.py
@@ -0,0 +1,12 @@
+""" PROCEED WITH CAUTION: uses deduplication fields to permanently
+merge author data objects """
+from bookwyrm import models
+from bookwyrm.management.merge_command import MergeCommand
+
+
+class Command(MergeCommand):
+ """merges two authors by ID"""
+
+ help = "merges specified authors into one"
+
+ MODEL = models.Author
diff --git a/bookwyrm/management/commands/merge_editions.py b/bookwyrm/management/commands/merge_editions.py
new file mode 100644
index 0000000000..9ed6962019
--- /dev/null
+++ b/bookwyrm/management/commands/merge_editions.py
@@ -0,0 +1,12 @@
+""" PROCEED WITH CAUTION: uses deduplication fields to permanently
+merge edition data objects """
+from bookwyrm import models
+from bookwyrm.management.merge_command import MergeCommand
+
+
+class Command(MergeCommand):
+ """merges two editions by ID"""
+
+ help = "merges specified editions into one"
+
+ MODEL = models.Edition
diff --git a/bookwyrm/management/commands/merge_works.py b/bookwyrm/management/commands/merge_works.py
new file mode 100644
index 0000000000..619d0509ac
--- /dev/null
+++ b/bookwyrm/management/commands/merge_works.py
@@ -0,0 +1,12 @@
+""" PROCEED WITH CAUTION: uses deduplication fields to permanently
+merge work data objects """
+from bookwyrm import models
+from bookwyrm.management.merge_command import MergeCommand
+
+
+class Command(MergeCommand):
+ """merges two works by ID"""
+
+ help = "merges specified works into one"
+
+ MODEL = models.Work
diff --git a/bookwyrm/management/commands/remove_editions.py b/bookwyrm/management/commands/remove_editions.py
index 9eb9b7da8d..5cb430a93b 100644
--- a/bookwyrm/management/commands/remove_editions.py
+++ b/bookwyrm/management/commands/remove_editions.py
@@ -33,10 +33,10 @@ def remove_editions():
class Command(BaseCommand):
- """dedplucate allllll the book data models"""
+ """deduplicate allllll the book data models"""
help = "merges duplicate book data"
# pylint: disable=no-self-use,unused-argument
def handle(self, *args, **options):
- """run deudplications"""
+ """run deduplications"""
remove_editions()
diff --git a/bookwyrm/management/commands/revoke_preview_image_tasks.py b/bookwyrm/management/commands/revoke_preview_image_tasks.py
index 6d6e59e8fb..7b0947b12c 100644
--- a/bookwyrm/management/commands/revoke_preview_image_tasks.py
+++ b/bookwyrm/management/commands/revoke_preview_image_tasks.py
@@ -9,7 +9,7 @@ class Command(BaseCommand):
# pylint: disable=unused-argument
def handle(self, *args, **options):
- """reveoke nonessential low priority tasks"""
+ """revoke nonessential low priority tasks"""
types = [
"bookwyrm.preview_images.generate_edition_preview_image_task",
"bookwyrm.preview_images.generate_user_preview_image_task",
diff --git a/bookwyrm/management/merge.py b/bookwyrm/management/merge.py
new file mode 100644
index 0000000000..f55229f18d
--- /dev/null
+++ b/bookwyrm/management/merge.py
@@ -0,0 +1,50 @@
+from django.db.models import ManyToManyField
+
+
+def update_related(canonical, obj):
+ """update all the models with fk to the object being removed"""
+ # move related models to canonical
+ related_models = [
+ (r.remote_field.name, r.related_model) for r in canonical._meta.related_objects
+ ]
+ for (related_field, related_model) in related_models:
+ # Skip the ManyToMany fields that aren’t auto-created. These
+ # should have a corresponding OneToMany field in the model for
+ # the linking table anyway. If we update it through that model
+ # instead then we won’t lose the extra fields in the linking
+ # table.
+ related_field_obj = related_model._meta.get_field(related_field)
+ if isinstance(related_field_obj, ManyToManyField):
+ through = related_field_obj.remote_field.through
+ if not through._meta.auto_created:
+ continue
+ related_objs = related_model.objects.filter(**{related_field: obj})
+ for related_obj in related_objs:
+ print("replacing in", related_model.__name__, related_field, related_obj.id)
+ try:
+ setattr(related_obj, related_field, canonical)
+ related_obj.save()
+ except TypeError:
+ getattr(related_obj, related_field).add(canonical)
+ getattr(related_obj, related_field).remove(obj)
+
+
+def copy_data(canonical, obj):
+ """try to get the most data possible"""
+ for data_field in obj._meta.get_fields():
+ if not hasattr(data_field, "activitypub_field"):
+ continue
+ data_value = getattr(obj, data_field.name)
+ if not data_value:
+ continue
+ if not getattr(canonical, data_field.name):
+ print("setting data field", data_field.name, data_value)
+ setattr(canonical, data_field.name, data_value)
+ canonical.save()
+
+
+def merge_objects(canonical, obj):
+ copy_data(canonical, obj)
+ update_related(canonical, obj)
+ # remove the outdated entry
+ obj.delete()
diff --git a/bookwyrm/management/merge_command.py b/bookwyrm/management/merge_command.py
new file mode 100644
index 0000000000..805dc73fa4
--- /dev/null
+++ b/bookwyrm/management/merge_command.py
@@ -0,0 +1,29 @@
+from bookwyrm.management.merge import merge_objects
+from django.core.management.base import BaseCommand
+
+
+class MergeCommand(BaseCommand):
+ """base class for merge commands"""
+
+ def add_arguments(self, parser):
+ """add the arguments for this command"""
+ parser.add_argument("--canonical", type=int, required=True)
+ parser.add_argument("--other", type=int, required=True)
+
+ # pylint: disable=no-self-use,unused-argument
+ def handle(self, *args, **options):
+ """merge the two objects"""
+ model = self.MODEL
+
+ try:
+ canonical = model.objects.get(id=options["canonical"])
+ except model.DoesNotExist:
+ print("canonical book doesn’t exist!")
+ return
+ try:
+ other = model.objects.get(id=options["other"])
+ except model.DoesNotExist:
+ print("other book doesn’t exist!")
+ return
+
+ merge_objects(canonical, other)
diff --git a/bookwyrm/migrations/0006_auto_20200221_1702_squashed_0064_merge_20201101_1913.py b/bookwyrm/migrations/0006_auto_20200221_1702_squashed_0064_merge_20201101_1913.py
index c06fa40a03..f25bafe157 100644
--- a/bookwyrm/migrations/0006_auto_20200221_1702_squashed_0064_merge_20201101_1913.py
+++ b/bookwyrm/migrations/0006_auto_20200221_1702_squashed_0064_merge_20201101_1913.py
@@ -1467,7 +1467,7 @@ class Migration(migrations.Migration):
(
"expiry",
models.DateTimeField(
- default=bookwyrm.models.site.get_passowrd_reset_expiry
+ default=bookwyrm.models.site.get_password_reset_expiry
),
),
(
diff --git a/bookwyrm/migrations/0101_auto_20210929_1847.py b/bookwyrm/migrations/0101_auto_20210929_1847.py
index 3fca28eace..967b59819e 100644
--- a/bookwyrm/migrations/0101_auto_20210929_1847.py
+++ b/bookwyrm/migrations/0101_auto_20210929_1847.py
@@ -6,7 +6,7 @@
def infer_format(app_registry, schema_editor):
- """set the new phsyical format field based on existing format data"""
+ """set the new physical format field based on existing format data"""
db_alias = schema_editor.connection.alias
editions = (
diff --git a/bookwyrm/migrations/0102_remove_connector_local.py b/bookwyrm/migrations/0102_remove_connector_local.py
index 857f0f589a..9bfd8b1d0b 100644
--- a/bookwyrm/migrations/0102_remove_connector_local.py
+++ b/bookwyrm/migrations/0102_remove_connector_local.py
@@ -5,7 +5,7 @@
def remove_self_connector(app_registry, schema_editor):
- """set the new phsyical format field based on existing format data"""
+ """set the new physical format field based on existing format data"""
db_alias = schema_editor.connection.alias
app_registry.get_model("bookwyrm", "Connector").objects.using(db_alias).filter(
connector_file="self_connector"
diff --git a/bookwyrm/migrations/0178_auto_20230328_2132.py b/bookwyrm/migrations/0178_auto_20230328_2132.py
new file mode 100644
index 0000000000..9decc001f8
--- /dev/null
+++ b/bookwyrm/migrations/0178_auto_20230328_2132.py
@@ -0,0 +1,61 @@
+# Generated by Django 3.2.18 on 2023-03-28 21:32
+
+import bookwyrm.models.fields
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("auth", "0012_alter_user_first_name_max_length"),
+ ("bookwyrm", "0177_merge_0174_auto_20230222_1742_0176_hashtag_support"),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name="hashtag",
+ name="name",
+ field=bookwyrm.models.fields.CICharField(max_length=256),
+ ),
+ migrations.AlterField(
+ model_name="sitesettings",
+ name="default_user_auth_group",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.RESTRICT,
+ to="auth.group",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="user",
+ name="preferred_language",
+ field=models.CharField(
+ blank=True,
+ choices=[
+ ("en-us", "English"),
+ ("ca-es", "Català (Catalan)"),
+ ("de-de", "Deutsch (German)"),
+ ("eo-uy", "Esperanto (Esperanto)"),
+ ("es-es", "Español (Spanish)"),
+ ("eu-es", "Euskara (Basque)"),
+ ("gl-es", "Galego (Galician)"),
+ ("it-it", "Italiano (Italian)"),
+ ("fi-fi", "Suomi (Finnish)"),
+ ("fr-fr", "Français (French)"),
+ ("lt-lt", "Lietuvių (Lithuanian)"),
+ ("no-no", "Norsk (Norwegian)"),
+ ("pl-pl", "Polski (Polish)"),
+ ("pt-br", "Português do Brasil (Brazilian Portuguese)"),
+ ("pt-pt", "Português Europeu (European Portuguese)"),
+ ("ro-ro", "Română (Romanian)"),
+ ("sv-se", "Svenska (Swedish)"),
+ ("zh-hans", "简体中文 (Simplified Chinese)"),
+ ("zh-hant", "繁體中文 (Traditional Chinese)"),
+ ],
+ max_length=255,
+ null=True,
+ ),
+ ),
+ ]
diff --git a/bookwyrm/models/activitypub_mixin.py b/bookwyrm/models/activitypub_mixin.py
index 83ca90b0a5..e76433189e 100644
--- a/bookwyrm/models/activitypub_mixin.py
+++ b/bookwyrm/models/activitypub_mixin.py
@@ -25,7 +25,7 @@
from bookwyrm.models.fields import ImageField, ManyToManyField
logger = logging.getLogger(__name__)
-# I tried to separate these classes into mutliple files but I kept getting
+# I tried to separate these classes into multiple files but I kept getting
# circular import errors so I gave up. I'm sure it could be done though!
PropertyField = namedtuple("PropertyField", ("set_activity_from_field"))
@@ -91,7 +91,7 @@ def find_existing_by_remote_id(cls, remote_id):
@classmethod
def find_existing(cls, data):
- """compare data to fields that can be used for deduplation.
+ """compare data to fields that can be used for deduplication.
This always includes remote_id, but can also be unique identifiers
like an isbn for an edition"""
filters = []
@@ -234,8 +234,8 @@ def save(self, *args, created=None, software=None, priority=BROADCAST, **kwargs)
activity = self.to_create_activity(user)
self.broadcast(activity, user, software=software, queue=priority)
except AttributeError:
- # janky as heck, this catches the mutliple inheritence chain
- # for boosts and ignores this auxilliary broadcast
+ # janky as heck, this catches the multiple inheritance chain
+ # for boosts and ignores this auxiliary broadcast
return
return
@@ -311,7 +311,7 @@ class OrderedCollectionPageMixin(ObjectMixin):
@property
def collection_remote_id(self):
- """this can be overriden if there's a special remote id, ie outbox"""
+ """this can be overridden if there's a special remote id, ie outbox"""
return self.remote_id
def to_ordered_collection(
@@ -339,7 +339,7 @@ def to_ordered_collection(
activity["id"] = remote_id
paginated = Paginator(queryset, PAGE_LENGTH)
- # add computed fields specific to orderd collections
+ # add computed fields specific to ordered collections
activity["totalItems"] = paginated.count
activity["first"] = f"{remote_id}?page=1"
activity["last"] = f"{remote_id}?page={paginated.num_pages}"
@@ -405,7 +405,7 @@ def save(self, *args, broadcast=True, priority=MEDIUM, **kwargs):
# first off, we want to save normally no matter what
super().save(*args, **kwargs)
- # list items can be updateda, normally you would only broadcast on created
+ # list items can be updated, normally you would only broadcast on created
if not broadcast or not self.user.local:
return
@@ -506,7 +506,7 @@ def unfurl_related_field(related_field, sort_field=None):
return related_field.remote_id
-@app.task(queue=BROADCAST, ignore_result=True)
+@app.task(queue=BROADCAST)
def broadcast_task(sender_id: int, activity: str, recipients: List[str]):
"""the celery task for broadcast"""
user_model = apps.get_model("bookwyrm.User", require_ready=True)
@@ -565,7 +565,7 @@ async def sign_and_send(
def to_ordered_collection_page(
queryset, remote_id, id_only=False, page=1, pure=False, **kwargs
):
- """serialize and pagiante a queryset"""
+ """serialize and paginate a queryset"""
paginated = Paginator(queryset, PAGE_LENGTH)
activity_page = paginated.get_page(page)
diff --git a/bookwyrm/models/annual_goal.py b/bookwyrm/models/annual_goal.py
index 0eefacb32b..d36b822df2 100644
--- a/bookwyrm/models/annual_goal.py
+++ b/bookwyrm/models/annual_goal.py
@@ -24,7 +24,7 @@ class AnnualGoal(BookWyrmModel):
)
class Meta:
- """unqiueness constraint"""
+ """uniqueness constraint"""
unique_together = ("user", "year")
diff --git a/bookwyrm/models/antispam.py b/bookwyrm/models/antispam.py
index c3afadf287..1e20df3408 100644
--- a/bookwyrm/models/antispam.py
+++ b/bookwyrm/models/antispam.py
@@ -65,7 +65,7 @@ class AutoMod(AdminModel):
created_by = models.ForeignKey("User", on_delete=models.PROTECT)
-@app.task(queue=LOW, ignore_result=True)
+@app.task(queue=LOW)
def automod_task():
"""Create reports"""
if not AutoMod.objects.exists():
diff --git a/bookwyrm/models/book.py b/bookwyrm/models/book.py
index a5be51a298..4e7ffcad30 100644
--- a/bookwyrm/models/book.py
+++ b/bookwyrm/models/book.py
@@ -321,7 +321,7 @@ class Edition(Book):
def get_rank(self):
"""calculate how complete the data is on this edition"""
rank = 0
- # big ups for havinga cover
+ # big ups for having a cover
rank += int(bool(self.cover)) * 3
# is it in the instance's preferred language?
rank += int(bool(DEFAULT_LANGUAGE in self.languages))
diff --git a/bookwyrm/models/favorite.py b/bookwyrm/models/favorite.py
index 4c36752191..98fbce550d 100644
--- a/bookwyrm/models/favorite.py
+++ b/bookwyrm/models/favorite.py
@@ -20,8 +20,9 @@ class Favorite(ActivityMixin, BookWyrmModel):
activity_serializer = activitypub.Like
+ # pylint: disable=unused-argument
@classmethod
- def ignore_activity(cls, activity):
+ def ignore_activity(cls, activity, allow_external_connections=True):
"""don't bother with incoming favs of unknown statuses"""
return not Status.objects.filter(remote_id=activity.object).exists()
diff --git a/bookwyrm/models/fields.py b/bookwyrm/models/fields.py
index 6cfe4c10c2..df4bb2e4a4 100644
--- a/bookwyrm/models/fields.py
+++ b/bookwyrm/models/fields.py
@@ -71,11 +71,11 @@ def __init__(
def set_field_from_activity(
self, instance, data, overwrite=True, allow_external_connections=True
):
- """helper function for assinging a value to the field. Returns if changed"""
+ """helper function for assigning a value to the field. Returns if changed"""
try:
value = getattr(data, self.get_activitypub_field())
except AttributeError:
- # masssively hack-y workaround for boosts
+ # massively hack-y workaround for boosts
if self.get_activitypub_field() != "attributedTo":
raise
value = getattr(data, "actor")
@@ -221,7 +221,7 @@ def field_to_activity(self, value):
class PrivacyField(ActivitypubFieldMixin, models.CharField):
- """this maps to two differente activitypub fields"""
+ """this maps to two different activitypub fields"""
public = "https://www.w3.org/ns/activitystreams#Public"
@@ -431,7 +431,7 @@ def __init__(self, *args, alt_field=None, **kwargs):
def set_field_from_activity(
self, instance, data, save=True, overwrite=True, allow_external_connections=True
):
- """helper function for assinging a value to the field"""
+ """helper function for assigning a value to the field"""
value = getattr(data, self.get_activitypub_field())
formatted = self.field_from_activity(
value, allow_external_connections=allow_external_connections
diff --git a/bookwyrm/models/import_job.py b/bookwyrm/models/import_job.py
index 5f564d3907..a489edb7c4 100644
--- a/bookwyrm/models/import_job.py
+++ b/bookwyrm/models/import_job.py
@@ -252,9 +252,12 @@ def review(self):
@property
def rating(self):
"""x/5 star rating for a book"""
- if self.normalized_data.get("rating"):
+ if not self.normalized_data.get("rating"):
+ return None
+ try:
return float(self.normalized_data.get("rating"))
- return None
+ except ValueError:
+ return None
@property
def date_added(self):
@@ -327,7 +330,7 @@ def __str__(self):
)
-@app.task(queue=IMPORTS, ignore_result=True)
+@app.task(queue=IMPORTS)
def start_import_task(job_id):
"""trigger the child tasks for each row"""
job = ImportJob.objects.get(id=job_id)
@@ -346,7 +349,7 @@ def start_import_task(job_id):
job.save()
-@app.task(queue=IMPORTS, ignore_result=True)
+@app.task(queue=IMPORTS)
def import_item_task(item_id):
"""resolve a row into a book"""
item = ImportItem.objects.get(id=item_id)
diff --git a/bookwyrm/models/link.py b/bookwyrm/models/link.py
index 56b096bc2a..d334a9d29e 100644
--- a/bookwyrm/models/link.py
+++ b/bookwyrm/models/link.py
@@ -31,7 +31,7 @@ class Link(ActivitypubMixin, BookWyrmModel):
@property
def name(self):
- """link name via the assocaited domain"""
+ """link name via the associated domain"""
return self.domain.name
def save(self, *args, **kwargs):
diff --git a/bookwyrm/models/notification.py b/bookwyrm/models/notification.py
index 29f7b0c2da..522038f9ab 100644
--- a/bookwyrm/models/notification.py
+++ b/bookwyrm/models/notification.py
@@ -284,7 +284,7 @@ def notify_user_on_list_item_add(sender, instance, created, *args, **kwargs):
return
list_owner = instance.book_list.user
- # create a notification if somoene ELSE added to a local user's list
+ # create a notification if someone ELSE added to a local user's list
if list_owner.local and list_owner != instance.user:
# keep the related_user singular, group the items
Notification.notify_list_item(list_owner, instance)
diff --git a/bookwyrm/models/readthrough.py b/bookwyrm/models/readthrough.py
index 239ec56be3..4911c715b7 100644
--- a/bookwyrm/models/readthrough.py
+++ b/bookwyrm/models/readthrough.py
@@ -8,7 +8,7 @@
class ProgressMode(models.TextChoices):
- """types of prgress available"""
+ """types of progress available"""
PAGE = "PG", "page"
PERCENT = "PCT", "percent"
diff --git a/bookwyrm/models/relationship.py b/bookwyrm/models/relationship.py
index 422967855d..4754bea36d 100644
--- a/bookwyrm/models/relationship.py
+++ b/bookwyrm/models/relationship.py
@@ -34,7 +34,7 @@ def privacy(self):
@property
def recipients(self):
- """the remote user needs to recieve direct broadcasts"""
+ """the remote user needs to receive direct broadcasts"""
return [u for u in [self.user_subject, self.user_object] if not u.local]
def save(self, *args, **kwargs):
diff --git a/bookwyrm/models/shelf.py b/bookwyrm/models/shelf.py
index 8e754bc471..c52cb6ab82 100644
--- a/bookwyrm/models/shelf.py
+++ b/bookwyrm/models/shelf.py
@@ -80,7 +80,7 @@ def raise_not_deletable(self, viewer):
raise PermissionDenied()
class Meta:
- """user/shelf unqiueness"""
+ """user/shelf uniqueness"""
unique_together = ("user", "identifier")
diff --git a/bookwyrm/models/site.py b/bookwyrm/models/site.py
index 35f007be21..a27c4b70d8 100644
--- a/bookwyrm/models/site.py
+++ b/bookwyrm/models/site.py
@@ -209,7 +209,7 @@ def save(self, *args, **kwargs):
super().save(*args, **kwargs)
-def get_passowrd_reset_expiry():
+def get_password_reset_expiry():
"""give people a limited time to use the link"""
now = timezone.now()
return now + datetime.timedelta(days=1)
@@ -219,7 +219,7 @@ class PasswordReset(models.Model):
"""gives someone access to create an account on the instance"""
code = models.CharField(max_length=32, default=new_access_code)
- expiry = models.DateTimeField(default=get_passowrd_reset_expiry)
+ expiry = models.DateTimeField(default=get_password_reset_expiry)
user = models.OneToOneField(User, on_delete=models.CASCADE)
def valid(self):
diff --git a/bookwyrm/models/status.py b/bookwyrm/models/status.py
index 1fcc9ee757..047d0aba6a 100644
--- a/bookwyrm/models/status.py
+++ b/bookwyrm/models/status.py
@@ -116,10 +116,16 @@ def recipients(self):
return list(set(mentions))
@classmethod
- def ignore_activity(cls, activity): # pylint: disable=too-many-return-statements
+ def ignore_activity(
+ cls, activity, allow_external_connections=True
+ ): # pylint: disable=too-many-return-statements
"""keep notes if they are replies to existing statuses"""
if activity.type == "Announce":
- boosted = activitypub.resolve_remote_id(activity.object, get_activity=True)
+ boosted = activitypub.resolve_remote_id(
+ activity.object,
+ get_activity=True,
+ allow_external_connections=allow_external_connections,
+ )
if not boosted:
# if we can't load the status, definitely ignore it
return True
diff --git a/bookwyrm/models/user.py b/bookwyrm/models/user.py
index 6d26b7b171..85e1f0edbc 100644
--- a/bookwyrm/models/user.py
+++ b/bookwyrm/models/user.py
@@ -469,7 +469,7 @@ def save(self, *args, **kwargs):
return super().save(*args, **kwargs)
-@app.task(queue=LOW, ignore_result=True)
+@app.task(queue=LOW)
def set_remote_server(user_id):
"""figure out the user's remote server in the background"""
user = User.objects.get(id=user_id)
@@ -513,7 +513,7 @@ def get_or_create_remote_server(domain, refresh=False):
return server
-@app.task(queue=LOW, ignore_result=True)
+@app.task(queue=LOW)
def get_remote_reviews(outbox):
"""ingest reviews by a new remote bookwyrm user"""
outbox_page = outbox + "?page=true&type=Review"
diff --git a/bookwyrm/preview_images.py b/bookwyrm/preview_images.py
index c218d87df3..549e124729 100644
--- a/bookwyrm/preview_images.py
+++ b/bookwyrm/preview_images.py
@@ -420,7 +420,7 @@ def save_and_cleanup(image, instance=None):
# pylint: disable=invalid-name
-@app.task(queue=LOW, ignore_result=True)
+@app.task(queue=LOW)
def generate_site_preview_image_task():
"""generate preview_image for the website"""
if not settings.ENABLE_PREVIEW_IMAGES:
@@ -445,7 +445,7 @@ def generate_site_preview_image_task():
# pylint: disable=invalid-name
-@app.task(queue=LOW, ignore_result=True)
+@app.task(queue=LOW)
def generate_edition_preview_image_task(book_id):
"""generate preview_image for a book"""
if not settings.ENABLE_PREVIEW_IMAGES:
@@ -470,7 +470,7 @@ def generate_edition_preview_image_task(book_id):
save_and_cleanup(image, instance=book)
-@app.task(queue=LOW, ignore_result=True)
+@app.task(queue=LOW)
def generate_user_preview_image_task(user_id):
"""generate preview_image for a user"""
if not settings.ENABLE_PREVIEW_IMAGES:
@@ -496,7 +496,7 @@ def generate_user_preview_image_task(user_id):
save_and_cleanup(image, instance=user)
-@app.task(queue=LOW, ignore_result=True)
+@app.task(queue=LOW)
def remove_user_preview_image_task(user_id):
"""remove preview_image for a user"""
if not settings.ENABLE_PREVIEW_IMAGES:
diff --git a/bookwyrm/redis_store.py b/bookwyrm/redis_store.py
index f25829f5ce..e188487aaa 100644
--- a/bookwyrm/redis_store.py
+++ b/bookwyrm/redis_store.py
@@ -16,12 +16,12 @@ def get_value(self, obj):
"""the object and rank"""
return {obj.id: self.get_rank(obj)}
- def add_object_to_related_stores(self, obj, execute=True):
- """add an object to all suitable stores"""
+ def add_object_to_stores(self, obj, stores, execute=True):
+ """add an object to a given set of stores"""
value = self.get_value(obj)
# we want to do this as a bulk operation, hence "pipeline"
pipeline = r.pipeline()
- for store in self.get_stores_for_object(obj):
+ for store in stores:
# add the status to the feed
pipeline.zadd(store, value)
# trim the store
@@ -32,14 +32,14 @@ def add_object_to_related_stores(self, obj, execute=True):
# and go!
return pipeline.execute()
- def remove_object_from_related_stores(self, obj, stores=None):
+ # pylint: disable=no-self-use
+ def remove_object_from_stores(self, obj, stores):
"""remove an object from all stores"""
- # if the stoers are provided, the object can just be an id
+ # if the stores are provided, the object can just be an id
if stores and isinstance(obj, int):
obj_id = obj
else:
obj_id = obj.id
- stores = self.get_stores_for_object(obj) if stores is None else stores
pipeline = r.pipeline()
for store in stores:
pipeline.zrem(store, -1, obj_id)
@@ -82,10 +82,6 @@ def populate_store(self, store):
def get_objects_for_store(self, store):
"""a queryset of what should go in a store, used for populating it"""
- @abstractmethod
- def get_stores_for_object(self, obj):
- """the stores that an object belongs in"""
-
@abstractmethod
def get_rank(self, obj):
"""how to rank an object"""
diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py
index 3f14daf1b7..ab73115a1b 100644
--- a/bookwyrm/settings.py
+++ b/bookwyrm/settings.py
@@ -4,6 +4,7 @@
import requests
from django.utils.translation import gettext_lazy as _
+from django.core.exceptions import ImproperlyConfigured
# pylint: disable=line-too-long
@@ -11,22 +12,22 @@
env = Env()
env.read_env()
DOMAIN = env("DOMAIN")
-VERSION = "0.6.0"
+VERSION = "0.6.2"
RELEASE_API = env(
"RELEASE_API",
"https://api.github.com/repos/bookwyrm-social/bookwyrm/releases/latest",
)
-PAGE_LENGTH = env("PAGE_LENGTH", 15)
+PAGE_LENGTH = env.int("PAGE_LENGTH", 15)
DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English")
-JS_CACHE = "a7d4e720"
+JS_CACHE = "ea91d7df"
# email
EMAIL_BACKEND = env("EMAIL_BACKEND", "django.core.mail.backends.smtp.EmailBackend")
EMAIL_HOST = env("EMAIL_HOST")
-EMAIL_PORT = env("EMAIL_PORT", 587)
+EMAIL_PORT = env.int("EMAIL_PORT", 587)
EMAIL_HOST_USER = env("EMAIL_HOST_USER")
EMAIL_HOST_PASSWORD = env("EMAIL_HOST_PASSWORD")
EMAIL_USE_TLS = env.bool("EMAIL_USE_TLS", True)
@@ -68,13 +69,15 @@
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
-# SECURITY WARNING: keep the secret key used in production secret!
-SECRET_KEY = env("SECRET_KEY")
-
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = env.bool("DEBUG", True)
USE_HTTPS = env.bool("USE_HTTPS", not DEBUG)
+# SECURITY WARNING: keep the secret key used in production secret!
+SECRET_KEY = env("SECRET_KEY")
+if not DEBUG and SECRET_KEY == "7(2w1sedok=aznpq)ta1mc4i%4h=xx@hxwx*o57ctsuml0x%fr":
+ raise ImproperlyConfigured("You must change the SECRET_KEY env variable")
+
ALLOWED_HOSTS = env.list("ALLOWED_HOSTS", ["*"])
# Application definition
@@ -205,14 +208,14 @@
# redis/activity streams settings
REDIS_ACTIVITY_HOST = env("REDIS_ACTIVITY_HOST", "localhost")
-REDIS_ACTIVITY_PORT = env("REDIS_ACTIVITY_PORT", 6379)
+REDIS_ACTIVITY_PORT = env.int("REDIS_ACTIVITY_PORT", 6379)
REDIS_ACTIVITY_PASSWORD = requests.utils.quote(env("REDIS_ACTIVITY_PASSWORD", ""))
-REDIS_ACTIVITY_DB_INDEX = env("REDIS_ACTIVITY_DB_INDEX", 0)
+REDIS_ACTIVITY_DB_INDEX = env.int("REDIS_ACTIVITY_DB_INDEX", 0)
REDIS_ACTIVITY_URL = env(
"REDIS_ACTIVITY_URL",
f"redis://:{REDIS_ACTIVITY_PASSWORD}@{REDIS_ACTIVITY_HOST}:{REDIS_ACTIVITY_PORT}/{REDIS_ACTIVITY_DB_INDEX}",
)
-MAX_STREAM_LENGTH = int(env("MAX_STREAM_LENGTH", 200))
+MAX_STREAM_LENGTH = env.int("MAX_STREAM_LENGTH", 200)
STREAMS = [
{"key": "home", "name": _("Home Timeline"), "shortname": _("Home")},
@@ -221,12 +224,12 @@
# Search configuration
# total time in seconds that the instance will spend searching connectors
-SEARCH_TIMEOUT = int(env("SEARCH_TIMEOUT", 8))
+SEARCH_TIMEOUT = env.int("SEARCH_TIMEOUT", 8)
# timeout for a query to an individual connector
-QUERY_TIMEOUT = int(env("QUERY_TIMEOUT", 5))
+QUERY_TIMEOUT = env.int("INTERACTIVE_QUERY_TIMEOUT", env.int("QUERY_TIMEOUT", 5))
# Redis cache backend
-if env("USE_DUMMY_CACHE", False):
+if env.bool("USE_DUMMY_CACHE", False):
CACHES = {
"default": {
"BACKEND": "django.core.cache.backends.dummy.DummyCache",
@@ -256,7 +259,7 @@
"USER": env("POSTGRES_USER", "bookwyrm"),
"PASSWORD": env("POSTGRES_PASSWORD", "bookwyrm"),
"HOST": env("POSTGRES_HOST", ""),
- "PORT": env("PGPORT", 5432),
+ "PORT": env.int("PGPORT", 5432),
},
}
@@ -291,6 +294,7 @@
("en-us", _("English")),
("ca-es", _("Català (Catalan)")),
("de-de", _("Deutsch (German)")),
+ ("eo-uy", _("Esperanto (Esperanto)")),
("es-es", _("Español (Spanish)")),
("eu-es", _("Euskara (Basque)")),
("gl-es", _("Galego (Galician)")),
@@ -341,6 +345,7 @@
CSRF_COOKIE_SECURE = True
USE_S3 = env.bool("USE_S3", False)
+USE_AZURE = env.bool("USE_AZURE", False)
if USE_S3:
# AWS settings
@@ -364,6 +369,27 @@
DEFAULT_FILE_STORAGE = "bookwyrm.storage_backends.ImagesStorage"
CSP_DEFAULT_SRC = ["'self'", AWS_S3_CUSTOM_DOMAIN] + CSP_ADDITIONAL_HOSTS
CSP_SCRIPT_SRC = ["'self'", AWS_S3_CUSTOM_DOMAIN] + CSP_ADDITIONAL_HOSTS
+elif USE_AZURE:
+ AZURE_ACCOUNT_NAME = env("AZURE_ACCOUNT_NAME")
+ AZURE_ACCOUNT_KEY = env("AZURE_ACCOUNT_KEY")
+ AZURE_CONTAINER = env("AZURE_CONTAINER")
+ AZURE_CUSTOM_DOMAIN = env("AZURE_CUSTOM_DOMAIN")
+ # Azure Static settings
+ STATIC_LOCATION = "static"
+ STATIC_URL = (
+ f"{PROTOCOL}://{AZURE_CUSTOM_DOMAIN}/{AZURE_CONTAINER}/{STATIC_LOCATION}/"
+ )
+ STATICFILES_STORAGE = "bookwyrm.storage_backends.AzureStaticStorage"
+ # Azure Media settings
+ MEDIA_LOCATION = "images"
+ MEDIA_URL = (
+ f"{PROTOCOL}://{AZURE_CUSTOM_DOMAIN}/{AZURE_CONTAINER}/{MEDIA_LOCATION}/"
+ )
+ MEDIA_FULL_URL = MEDIA_URL
+ STATIC_FULL_URL = STATIC_URL
+ DEFAULT_FILE_STORAGE = "bookwyrm.storage_backends.AzureImagesStorage"
+ CSP_DEFAULT_SRC = ["'self'", AZURE_CUSTOM_DOMAIN] + CSP_ADDITIONAL_HOSTS
+ CSP_SCRIPT_SRC = ["'self'", AZURE_CUSTOM_DOMAIN] + CSP_ADDITIONAL_HOSTS
else:
STATIC_URL = "/static/"
MEDIA_URL = "/images/"
@@ -377,6 +403,7 @@
OTEL_EXPORTER_OTLP_ENDPOINT = env("OTEL_EXPORTER_OTLP_ENDPOINT", None)
OTEL_EXPORTER_OTLP_HEADERS = env("OTEL_EXPORTER_OTLP_HEADERS", None)
OTEL_SERVICE_NAME = env("OTEL_SERVICE_NAME", None)
+OTEL_EXPORTER_CONSOLE = env.bool("OTEL_EXPORTER_CONSOLE", False)
TWO_FACTOR_LOGIN_MAX_SECONDS = env.int("TWO_FACTOR_LOGIN_MAX_SECONDS", 60)
TWO_FACTOR_LOGIN_VALIDITY_WINDOW = env.int("TWO_FACTOR_LOGIN_VALIDITY_WINDOW", 2)
diff --git a/bookwyrm/static/css/bookwyrm/components/_book_cover.scss b/bookwyrm/static/css/bookwyrm/components/_book_cover.scss
index d1125197eb..48b564a0b7 100644
--- a/bookwyrm/static/css/bookwyrm/components/_book_cover.scss
+++ b/bookwyrm/static/css/bookwyrm/components/_book_cover.scss
@@ -5,7 +5,7 @@
* - .book-cover is positioned and sized based on its container.
*
* To have the cover within specific dimensions, specify a width or height for
- * standard bulma’s named breapoints:
+ * standard bulma’s named breakpoints:
*
* `is-(w|h)-(auto|xs|s|m|l|xl|xxl)[-(mobile|tablet|desktop)]`
*
@@ -43,7 +43,7 @@
max-height: 100%;
/* Useful when stretching under-sized images. */
- image-rendering: optimizequality;
+ image-rendering: optimizeQuality;
image-rendering: smooth;
}
diff --git a/bookwyrm/static/css/bookwyrm/components/_tabs.scss b/bookwyrm/static/css/bookwyrm/components/_tabs.scss
index 8e00f6a88b..2d68a383ba 100644
--- a/bookwyrm/static/css/bookwyrm/components/_tabs.scss
+++ b/bookwyrm/static/css/bookwyrm/components/_tabs.scss
@@ -44,12 +44,12 @@
.bw-tabs a:hover {
border-bottom-color: transparent;
- color: $text;
+ color: $text
}
.bw-tabs a.is-active {
border-bottom-color: transparent;
- color: $link;
+ color: $link
}
.bw-tabs.is-left {
diff --git a/bookwyrm/static/css/themes/bookwyrm-dark.scss b/bookwyrm/static/css/themes/bookwyrm-dark.scss
index ae904b4a41..c3e8655e36 100644
--- a/bookwyrm/static/css/themes/bookwyrm-dark.scss
+++ b/bookwyrm/static/css/themes/bookwyrm-dark.scss
@@ -98,6 +98,22 @@ $family-secondary: $family-sans-serif;
}
+.tabs li:not(.is-active) a {
+ color: #2e7eb9 !important;
+}
+ .tabs li:not(.is-active) a:hover {
+ border-bottom-color: #2e7eb9 !important;
+}
+
+.tabs li:not(.is-active) a {
+ color: #2e7eb9 !important;
+}
+.tabs li.is-active a {
+ color: #e6e6e6 !important;
+ border-bottom-color: #e6e6e6 !important ;
+}
+
+
#qrcode svg {
background-color: #a6a6a6;
}
diff --git a/bookwyrm/static/css/themes/bookwyrm-light.scss b/bookwyrm/static/css/themes/bookwyrm-light.scss
index efb13c23e4..bb7d340a9a 100644
--- a/bookwyrm/static/css/themes/bookwyrm-light.scss
+++ b/bookwyrm/static/css/themes/bookwyrm-light.scss
@@ -65,6 +65,22 @@ $family-secondary: $family-sans-serif;
color: $grey !important;
}
+.tabs li:not(.is-active) a {
+ color: #3273dc !important;
+}
+ .tabs li:not(.is-active) a:hover {
+ border-bottom-color: #3273dc !important;
+}
+
+.tabs li:not(.is-active) a {
+ color: #3273dc !important;
+}
+.tabs li.is-active a {
+ color: #4a4a4a !important;
+ border-bottom-color: #4a4a4a !important ;
+}
+
+
@import "../bookwyrm.scss";
@import "../vendor/icons.css";
@import "../vendor/shepherd.scss";
diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js
index 6a6c0217fd..ceed12eba7 100644
--- a/bookwyrm/static/js/bookwyrm.js
+++ b/bookwyrm/static/js/bookwyrm.js
@@ -5,7 +5,7 @@ let BookWyrm = new (class {
constructor() {
this.MAX_FILE_SIZE_BYTES = 10 * 1000000;
this.initOnDOMLoaded();
- this.initReccuringTasks();
+ this.initRecurringTasks();
this.initEventListeners();
}
@@ -77,7 +77,7 @@ let BookWyrm = new (class {
/**
* Execute recurring tasks.
*/
- initReccuringTasks() {
+ initRecurringTasks() {
// Polling
document.querySelectorAll("[data-poll]").forEach((liveArea) => this.polling(liveArea));
}
diff --git a/bookwyrm/static/js/forms.js b/bookwyrm/static/js/forms.js
index a48675b350..08066f137c 100644
--- a/bookwyrm/static/js/forms.js
+++ b/bookwyrm/static/js/forms.js
@@ -2,7 +2,7 @@
"use strict";
/**
- * Remoev input field
+ * Remove input field
*
* @param {event} the button click event
*/
diff --git a/bookwyrm/storage_backends.py b/bookwyrm/storage_backends.py
index 4fb0feff03..6dd9f522cd 100644
--- a/bookwyrm/storage_backends.py
+++ b/bookwyrm/storage_backends.py
@@ -2,6 +2,7 @@
import os
from tempfile import SpooledTemporaryFile
from storages.backends.s3boto3 import S3Boto3Storage
+from storages.backends.azure_storage import AzureStorage
class StaticStorage(S3Boto3Storage): # pylint: disable=abstract-method
@@ -47,3 +48,16 @@ def _save(self, name, content):
# Upload the object which will auto close the
# content_autoclose instance
return super()._save(name, content_autoclose)
+
+
+class AzureStaticStorage(AzureStorage): # pylint: disable=abstract-method
+ """Storage class for Static contents"""
+
+ location = "static"
+
+
+class AzureImagesStorage(AzureStorage): # pylint: disable=abstract-method
+ """Storage class for Image files"""
+
+ location = "images"
+ overwrite_files = False
diff --git a/bookwyrm/suggested_users.py b/bookwyrm/suggested_users.py
index ea6b1c55db..05e05891c8 100644
--- a/bookwyrm/suggested_users.py
+++ b/bookwyrm/suggested_users.py
@@ -4,13 +4,16 @@
from django.dispatch import receiver
from django.db import transaction
from django.db.models import signals, Count, Q, Case, When, IntegerField
+from opentelemetry import trace
from bookwyrm import models
from bookwyrm.redis_store import RedisStore, r
from bookwyrm.tasks import app, LOW, MEDIUM
+from bookwyrm.telemetry import open_telemetry
logger = logging.getLogger(__name__)
+tracer = open_telemetry.tracer()
class SuggestedUsers(RedisStore):
@@ -49,30 +52,34 @@ def get_objects_for_store(self, store):
)
def get_stores_for_object(self, obj):
+ """the stores that an object belongs in"""
return [self.store_id(u) for u in self.get_users_for_object(obj)]
def get_users_for_object(self, obj): # pylint: disable=no-self-use
"""given a user, who might want to follow them"""
- return models.User.objects.filter(local=True,).exclude(
+ return models.User.objects.filter(local=True, is_active=True).exclude(
Q(id=obj.id) | Q(followers=obj) | Q(id__in=obj.blocks.all()) | Q(blocks=obj)
)
+ @tracer.start_as_current_span("SuggestedUsers.rerank_obj")
def rerank_obj(self, obj, update_only=True):
"""update all the instances of this user with new ranks"""
+ trace.get_current_span().set_attribute("update_only", update_only)
pipeline = r.pipeline()
for store_user in self.get_users_for_object(obj):
- annotated_user = get_annotated_users(
- store_user,
- id=obj.id,
- ).first()
- if not annotated_user:
- continue
-
- pipeline.zadd(
- self.store_id(store_user),
- self.get_value(annotated_user),
- xx=update_only,
- )
+ with tracer.start_as_current_span("SuggestedUsers.rerank_obj/user") as _:
+ annotated_user = get_annotated_users(
+ store_user,
+ id=obj.id,
+ ).first()
+ if not annotated_user:
+ continue
+
+ pipeline.zadd(
+ self.store_id(store_user),
+ self.get_value(annotated_user),
+ xx=update_only,
+ )
pipeline.execute()
def rerank_user_suggestions(self, user):
@@ -237,41 +244,45 @@ def domain_level_update(sender, instance, created, update_fields=None, **kwargs)
# ------------------- TASKS
-@app.task(queue=LOW, ignore_result=True)
+@app.task(queue=LOW)
def rerank_suggestions_task(user_id):
"""do the hard work in celery"""
suggested_users.rerank_user_suggestions(user_id)
-@app.task(queue=LOW, ignore_result=True)
+@app.task(queue=LOW)
def rerank_user_task(user_id, update_only=False):
"""do the hard work in celery"""
user = models.User.objects.get(id=user_id)
suggested_users.rerank_obj(user, update_only=update_only)
-@app.task(queue=LOW, ignore_result=True)
+@app.task(queue=LOW)
def remove_user_task(user_id):
"""do the hard work in celery"""
user = models.User.objects.get(id=user_id)
- suggested_users.remove_object_from_related_stores(user)
+ suggested_users.remove_object_from_stores(
+ user, suggested_users.get_stores_for_object(user)
+ )
-@app.task(queue=MEDIUM, ignore_result=True)
+@app.task(queue=MEDIUM)
def remove_suggestion_task(user_id, suggested_user_id):
"""remove a specific user from a specific user's suggestions"""
suggested_user = models.User.objects.get(id=suggested_user_id)
suggested_users.remove_suggestion(user_id, suggested_user)
-@app.task(queue=LOW, ignore_result=True)
+@app.task(queue=LOW)
def bulk_remove_instance_task(instance_id):
"""remove a bunch of users from recs"""
for user in models.User.objects.filter(federated_server__id=instance_id):
- suggested_users.remove_object_from_related_stores(user)
+ suggested_users.remove_object_from_stores(
+ user, suggested_users.get_stores_for_object(user)
+ )
-@app.task(queue=LOW, ignore_result=True)
+@app.task(queue=LOW)
def bulk_add_instance_task(instance_id):
"""remove a bunch of users from recs"""
for user in models.User.objects.filter(federated_server__id=instance_id):
diff --git a/bookwyrm/telemetry/open_telemetry.py b/bookwyrm/telemetry/open_telemetry.py
index 0b38a04b19..00b24d4b0a 100644
--- a/bookwyrm/telemetry/open_telemetry.py
+++ b/bookwyrm/telemetry/open_telemetry.py
@@ -1,10 +1,19 @@
from opentelemetry import trace
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.trace import TracerProvider
-from opentelemetry.sdk.trace.export import BatchSpanProcessor
+from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter
+
+from bookwyrm import settings
trace.set_tracer_provider(TracerProvider())
-trace.get_tracer_provider().add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))
+if settings.OTEL_EXPORTER_CONSOLE:
+ trace.get_tracer_provider().add_span_processor(
+ BatchSpanProcessor(ConsoleSpanExporter())
+ )
+elif settings.OTEL_EXPORTER_OTLP_ENDPOINT:
+ trace.get_tracer_provider().add_span_processor(
+ BatchSpanProcessor(OTLPSpanExporter())
+ )
def instrumentDjango():
@@ -13,6 +22,12 @@ def instrumentDjango():
DjangoInstrumentor().instrument()
+def instrumentPostgres():
+ from opentelemetry.instrumentation.psycopg2 import Psycopg2Instrumentor
+
+ Psycopg2Instrumentor().instrument()
+
+
def instrumentCelery():
from opentelemetry.instrumentation.celery import CeleryInstrumentor
from celery.signals import worker_process_init
@@ -20,3 +35,7 @@ def instrumentCelery():
@worker_process_init.connect(weak=False)
def init_celery_tracing(*args, **kwargs):
CeleryInstrumentor().instrument()
+
+
+def tracer():
+ return trace.get_tracer(__name__)
diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html
index e9eff99ab3..e24f81d79a 100644
--- a/bookwyrm/templates/book/book.html
+++ b/bookwyrm/templates/book/book.html
@@ -4,6 +4,7 @@
{% load humanize %}
{% load utilities %}
{% load static %}
+{% load shelf_tags %}
{% block title %}{{ book|book_title }}{% endblock %}
@@ -46,7 +47,13 @@
- ({{ book.series }}{% if book.series_number %} #{{ book.series_number }}{% endif %} )
+ {% if book.authors.exists %}
+
+ {% endif %}
+ {{ book.series }}{% if book.series_number %} #{{ book.series_number }}{% endif %}
+ {% if book.authors.exists %}
+
+ {% endif %}
{% endif %}
{% endif %}
@@ -239,7 +246,7 @@
{% for shelf in user_shelfbooks %}
- {{ shelf.shelf.name }}
+ {{ shelf.shelf|translate_shelf_name }}
{% include 'snippets/shelf_selector.html' with shelf=shelf.shelf class="is-small" readthrough=readthrough %}
@@ -249,7 +256,7 @@
{% endif %}
{% for shelf in other_edition_shelves %}
- {% blocktrans with book_path=shelf.book.local_path shelf_path=shelf.shelf.local_path shelf_name=shelf.shelf.name %}A different edition of this book is on your {{ shelf_name }} shelf.{% endblocktrans %}
+ {% blocktrans with book_path=shelf.book.local_path shelf_path=shelf.shelf.local_path shelf_name=shelf.shelf|translate_shelf_name %}A different edition of this book is on your {{ shelf_name }} shelf.{% endblocktrans %}
{% include 'snippets/switch_edition_button.html' with edition=book %}
{% endfor %}
diff --git a/bookwyrm/templates/get_started/books.html b/bookwyrm/templates/get_started/books.html
index 9613508b9b..93196dbcf7 100644
--- a/bookwyrm/templates/get_started/books.html
+++ b/bookwyrm/templates/get_started/books.html
@@ -30,7 +30,7 @@ {% trans "Suggested Books" %}
{% if book_results %}
-
Search results
+
{% trans "Search results" %}
{% for book in book_results %}
diff --git a/bookwyrm/templates/get_started/users.html b/bookwyrm/templates/get_started/users.html
index 7ec7ed9d33..4f95882f59 100644
--- a/bookwyrm/templates/get_started/users.html
+++ b/bookwyrm/templates/get_started/users.html
@@ -5,7 +5,7 @@
{% trans "Who to follow" %}
-
You can follow users on other BookWyrm instances and federated services like Mastodon.
+
{% trans "You can follow users on other BookWyrm instances and federated services like Mastodon." %}
+ {% url 'user-shelves' request.user.localname as path %}
+
+ {% blocktrans %}Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click "Edit shelf."{% endblocktrans %}
+
{% trans "Save" %}
diff --git a/bookwyrm/templates/search/layout.html b/bookwyrm/templates/search/layout.html
index a2f64ad078..340911cb0d 100644
--- a/bookwyrm/templates/search/layout.html
+++ b/bookwyrm/templates/search/layout.html
@@ -29,7 +29,7 @@
- Search
+ {% trans "Search" %}
diff --git a/bookwyrm/templates/settings/celery.html b/bookwyrm/templates/settings/celery.html
index 65315da018..5f79dfd9dc 100644
--- a/bookwyrm/templates/settings/celery.html
+++ b/bookwyrm/templates/settings/celery.html
@@ -116,6 +116,35 @@ {{ worker_name }}
{% endif %}
+
+
{% trans "Clear Queues" %}
+
+
+
+ {% trans "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this." %}
+
+
+
+
+
{% if errors %}
{% trans "Errors" %}
diff --git a/bookwyrm/templates/settings/dashboard/dashboard.html b/bookwyrm/templates/settings/dashboard/dashboard.html
index 99c0e9621a..4c109c7e17 100644
--- a/bookwyrm/templates/settings/dashboard/dashboard.html
+++ b/bookwyrm/templates/settings/dashboard/dashboard.html
@@ -16,7 +16,7 @@
{% trans "Total users" %}
{{ users|intcomma }}
-
+
{% trans "Active this month" %}
{{ active_users|intcomma }}
diff --git a/bookwyrm/templates/settings/imports/imports.html b/bookwyrm/templates/settings/imports/imports.html
index 108003d85a..8819220fbc 100644
--- a/bookwyrm/templates/settings/imports/imports.html
+++ b/bookwyrm/templates/settings/imports/imports.html
@@ -28,7 +28,7 @@
>
{% trans "This is only intended to be used when things have gone very wrong with imports and you need to pause the feature while addressing issues." %}
- {% trans "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected." %}
+ {% trans "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected." %}
{% csrf_token %}
diff --git a/bookwyrm/templates/settings/reports/reports.html b/bookwyrm/templates/settings/reports/reports.html
index 64db2f26b8..f48314c8a8 100644
--- a/bookwyrm/templates/settings/reports/reports.html
+++ b/bookwyrm/templates/settings/reports/reports.html
@@ -21,10 +21,10 @@
{% block panel %}
diff --git a/bookwyrm/templates/settings/users/user_info.html b/bookwyrm/templates/settings/users/user_info.html
index a04db3b8ee..a1725ae36c 100644
--- a/bookwyrm/templates/settings/users/user_info.html
+++ b/bookwyrm/templates/settings/users/user_info.html
@@ -61,7 +61,7 @@
{% trans "User details" %}
{{ report_count|intcomma }}
{% if report_count > 0 %}
-
+
{% trans "(View reports)" %}
{% endif %}
diff --git a/bookwyrm/templates/snippets/shelf_selector.html b/bookwyrm/templates/snippets/shelf_selector.html
index 902a661960..d0b5645d48 100644
--- a/bookwyrm/templates/snippets/shelf_selector.html
+++ b/bookwyrm/templates/snippets/shelf_selector.html
@@ -91,7 +91,9 @@
{% csrf_token %}
- {% trans "Remove from" %} {{ shelf.name }}
+
+ {% blocktrans with name=shelf|translate_shelf_name %}Remove from {{ name }}{% endblocktrans %}
+
{% endif %}
diff --git a/bookwyrm/templatetags/book_display_tags.py b/bookwyrm/templatetags/book_display_tags.py
index 56eb096ec5..0a0f228d88 100644
--- a/bookwyrm/templatetags/book_display_tags.py
+++ b/bookwyrm/templatetags/book_display_tags.py
@@ -18,7 +18,7 @@ def get_book_description(book):
if book.description:
return book.description
if book.parent_work:
- # this shoud always be true
+ # this should always be true
return book.parent_work.description
return None
diff --git a/bookwyrm/templatetags/shelf_tags.py b/bookwyrm/templatetags/shelf_tags.py
index 1fb799883d..36065d575b 100644
--- a/bookwyrm/templatetags/shelf_tags.py
+++ b/bookwyrm/templatetags/shelf_tags.py
@@ -9,6 +9,15 @@
register = template.Library()
+SHELF_NAMES = {
+ "all": _("All books"),
+ "to-read": _("To Read"),
+ "reading": _("Currently Reading"),
+ "read": _("Read"),
+ "stopped-reading": _("Stopped Reading"),
+}
+
+
@register.filter(name="is_book_on_shelf")
def get_is_book_on_shelf(book, shelf):
"""is a book on a shelf"""
@@ -37,20 +46,16 @@ def get_next_shelf(current_shelf):
@register.filter(name="translate_shelf_name")
def get_translated_shelf_name(shelf):
- """produced translated shelf nidentifierame"""
+ """produce translated shelf identifiername"""
if not shelf:
return ""
# support obj or dict
identifier = shelf["identifier"] if isinstance(shelf, dict) else shelf.identifier
- if identifier == "all":
- return _("All books")
- if identifier == "to-read":
- return _("To Read")
- if identifier == "reading":
- return _("Currently Reading")
- if identifier == "read":
- return _("Read")
- return shelf["name"] if isinstance(shelf, dict) else shelf.name
+
+ try:
+ return SHELF_NAMES[identifier]
+ except KeyError:
+ return shelf["name"] if isinstance(shelf, dict) else shelf.name
@register.simple_tag(takes_context=True)
diff --git a/bookwyrm/templatetags/utilities.py b/bookwyrm/templatetags/utilities.py
index 834d39a14c..4aaf6b8a7a 100644
--- a/bookwyrm/templatetags/utilities.py
+++ b/bookwyrm/templatetags/utilities.py
@@ -19,7 +19,7 @@ def get_uuid(identifier):
@register.simple_tag(takes_context=False)
def join(*args):
- """concatenate an arbitary set of values"""
+ """concatenate an arbitrary set of values"""
return "_".join(str(a) for a in args)
diff --git a/bookwyrm/tests/activitypub/test_author.py b/bookwyrm/tests/activitypub/test_author.py
index 61d525fc03..51beac49ab 100644
--- a/bookwyrm/tests/activitypub/test_author.py
+++ b/bookwyrm/tests/activitypub/test_author.py
@@ -19,7 +19,7 @@ def setUp(self):
)
def test_serialize_model(self):
- """check presense of author fields"""
+ """check presence of author fields"""
activity = self.author.to_activity()
self.assertEqual(activity["id"], self.author.remote_id)
self.assertIsInstance(activity["aliases"], list)
diff --git a/bookwyrm/tests/activitypub/test_base_activity.py b/bookwyrm/tests/activitypub/test_base_activity.py
index df243d0dbb..c9022d35c9 100644
--- a/bookwyrm/tests/activitypub/test_base_activity.py
+++ b/bookwyrm/tests/activitypub/test_base_activity.py
@@ -59,7 +59,7 @@ def test_get_representative_not_existing(self, *_):
self.assertIsInstance(representative, models.User)
def test_init(self, *_):
- """simple successfuly init"""
+ """simple successfully init"""
instance = ActivityObject(id="a", type="b")
self.assertTrue(hasattr(instance, "id"))
self.assertTrue(hasattr(instance, "type"))
diff --git a/bookwyrm/tests/activitypub/test_quotation.py b/bookwyrm/tests/activitypub/test_quotation.py
index c90348bc3e..678ee7aa33 100644
--- a/bookwyrm/tests/activitypub/test_quotation.py
+++ b/bookwyrm/tests/activitypub/test_quotation.py
@@ -1,4 +1,4 @@
-""" quotation activty object serializer class """
+""" quotation activity object serializer class """
import json
import pathlib
from unittest.mock import patch
@@ -30,7 +30,7 @@ def setUp(self):
self.status_data = json.loads(datafile.read_bytes())
def test_quotation_activity(self):
- """create a Quoteation ap object from json"""
+ """create a Quotation ap object from json"""
quotation = activitypub.Quotation(**self.status_data)
self.assertEqual(quotation.type, "Quotation")
diff --git a/bookwyrm/tests/activitystreams/test_tasks.py b/bookwyrm/tests/activitystreams/test_tasks.py
index 2e89f6ccc3..82b8c2e5af 100644
--- a/bookwyrm/tests/activitystreams/test_tasks.py
+++ b/bookwyrm/tests/activitystreams/test_tasks.py
@@ -50,7 +50,7 @@ def test_add_book_statuses_task(self):
self.assertEqual(args[1], self.book)
def test_remove_book_statuses_task(self):
- """remove stauses related to a book"""
+ """remove statuses related to a book"""
with patch("bookwyrm.activitystreams.BooksStream.remove_book_statuses") as mock:
activitystreams.remove_book_statuses_task(self.local_user.id, self.book.id)
self.assertTrue(mock.called)
@@ -75,7 +75,7 @@ def test_populate_stream_task(self):
def test_remove_status_task(self):
"""remove a status from all streams"""
with patch(
- "bookwyrm.activitystreams.ActivityStream.remove_object_from_related_stores"
+ "bookwyrm.activitystreams.ActivityStream.remove_object_from_stores"
) as mock:
activitystreams.remove_status_task(self.status.id)
self.assertEqual(mock.call_count, 3)
@@ -132,8 +132,8 @@ def test_add_user_statuses_task(self):
self.assertEqual(args[0], self.local_user)
self.assertEqual(args[1], self.another_user)
- @patch("bookwyrm.activitystreams.LocalStream.remove_object_from_related_stores")
- @patch("bookwyrm.activitystreams.BooksStream.remove_object_from_related_stores")
+ @patch("bookwyrm.activitystreams.LocalStream.remove_object_from_stores")
+ @patch("bookwyrm.activitystreams.BooksStream.remove_object_from_stores")
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async")
def test_boost_to_another_timeline(self, *_):
"""boost from a non-follower doesn't remove original status from feed"""
@@ -144,7 +144,7 @@ def test_boost_to_another_timeline(self, *_):
user=self.another_user,
)
with patch(
- "bookwyrm.activitystreams.HomeStream.remove_object_from_related_stores"
+ "bookwyrm.activitystreams.HomeStream.remove_object_from_stores"
) as mock:
activitystreams.handle_boost_task(boost.id)
@@ -152,10 +152,10 @@ def test_boost_to_another_timeline(self, *_):
self.assertEqual(mock.call_count, 1)
call_args = mock.call_args
self.assertEqual(call_args[0][0], status)
- self.assertEqual(call_args[1]["stores"], [f"{self.another_user.id}-home"])
+ self.assertEqual(call_args[0][1], [f"{self.another_user.id}-home"])
- @patch("bookwyrm.activitystreams.LocalStream.remove_object_from_related_stores")
- @patch("bookwyrm.activitystreams.BooksStream.remove_object_from_related_stores")
+ @patch("bookwyrm.activitystreams.LocalStream.remove_object_from_stores")
+ @patch("bookwyrm.activitystreams.BooksStream.remove_object_from_stores")
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async")
def test_boost_to_another_timeline_remote(self, *_):
"""boost from a remote non-follower doesn't remove original status from feed"""
@@ -166,7 +166,7 @@ def test_boost_to_another_timeline_remote(self, *_):
user=self.remote_user,
)
with patch(
- "bookwyrm.activitystreams.HomeStream.remove_object_from_related_stores"
+ "bookwyrm.activitystreams.HomeStream.remove_object_from_stores"
) as mock:
activitystreams.handle_boost_task(boost.id)
@@ -174,10 +174,10 @@ def test_boost_to_another_timeline_remote(self, *_):
self.assertEqual(mock.call_count, 1)
call_args = mock.call_args
self.assertEqual(call_args[0][0], status)
- self.assertEqual(call_args[1]["stores"], [])
+ self.assertEqual(call_args[0][1], [])
- @patch("bookwyrm.activitystreams.LocalStream.remove_object_from_related_stores")
- @patch("bookwyrm.activitystreams.BooksStream.remove_object_from_related_stores")
+ @patch("bookwyrm.activitystreams.LocalStream.remove_object_from_stores")
+ @patch("bookwyrm.activitystreams.BooksStream.remove_object_from_stores")
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async")
def test_boost_to_following_timeline(self, *_):
"""add a boost and deduplicate the boosted status on the timeline"""
@@ -189,17 +189,17 @@ def test_boost_to_following_timeline(self, *_):
user=self.another_user,
)
with patch(
- "bookwyrm.activitystreams.HomeStream.remove_object_from_related_stores"
+ "bookwyrm.activitystreams.HomeStream.remove_object_from_stores"
) as mock:
activitystreams.handle_boost_task(boost.id)
self.assertTrue(mock.called)
call_args = mock.call_args
self.assertEqual(call_args[0][0], status)
- self.assertTrue(f"{self.another_user.id}-home" in call_args[1]["stores"])
- self.assertTrue(f"{self.local_user.id}-home" in call_args[1]["stores"])
+ self.assertTrue(f"{self.another_user.id}-home" in call_args[0][1])
+ self.assertTrue(f"{self.local_user.id}-home" in call_args[0][1])
- @patch("bookwyrm.activitystreams.LocalStream.remove_object_from_related_stores")
- @patch("bookwyrm.activitystreams.BooksStream.remove_object_from_related_stores")
+ @patch("bookwyrm.activitystreams.LocalStream.remove_object_from_stores")
+ @patch("bookwyrm.activitystreams.BooksStream.remove_object_from_stores")
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async")
def test_boost_to_same_timeline(self, *_):
"""add a boost and deduplicate the boosted status on the timeline"""
@@ -210,10 +210,10 @@ def test_boost_to_same_timeline(self, *_):
user=self.local_user,
)
with patch(
- "bookwyrm.activitystreams.HomeStream.remove_object_from_related_stores"
+ "bookwyrm.activitystreams.HomeStream.remove_object_from_stores"
) as mock:
activitystreams.handle_boost_task(boost.id)
self.assertTrue(mock.called)
call_args = mock.call_args
self.assertEqual(call_args[0][0], status)
- self.assertEqual(call_args[1]["stores"], [f"{self.local_user.id}-home"])
+ self.assertEqual(call_args[0][1], [f"{self.local_user.id}-home"])
diff --git a/bookwyrm/tests/connectors/test_openlibrary_connector.py b/bookwyrm/tests/connectors/test_openlibrary_connector.py
index 05ba39ab94..01b9b9f6a6 100644
--- a/bookwyrm/tests/connectors/test_openlibrary_connector.py
+++ b/bookwyrm/tests/connectors/test_openlibrary_connector.py
@@ -46,7 +46,7 @@ def test_get_remote_id_from_data(self):
data = {"key": "/work/OL1234W"}
result = self.connector.get_remote_id_from_data(data)
self.assertEqual(result, "https://openlibrary.org/work/OL1234W")
- # error handlding
+ # error handling
with self.assertRaises(ConnectorException):
self.connector.get_remote_id_from_data({})
diff --git a/bookwyrm/tests/lists_stream/test_tasks.py b/bookwyrm/tests/lists_stream/test_tasks.py
index 55c5d98c87..2e01cecade 100644
--- a/bookwyrm/tests/lists_stream/test_tasks.py
+++ b/bookwyrm/tests/lists_stream/test_tasks.py
@@ -59,7 +59,7 @@ def test_populate_lists_task(self, *_):
def test_remove_list_task(self, *_):
"""remove a list from all streams"""
with patch(
- "bookwyrm.lists_stream.ListsStream.remove_object_from_related_stores"
+ "bookwyrm.lists_stream.ListsStream.remove_object_from_stores"
) as mock:
lists_stream.remove_list_task(self.list.id)
self.assertEqual(mock.call_count, 1)
diff --git a/bookwyrm/tests/models/test_activitypub_mixin.py b/bookwyrm/tests/models/test_activitypub_mixin.py
index fdd1883a89..a465c2c126 100644
--- a/bookwyrm/tests/models/test_activitypub_mixin.py
+++ b/bookwyrm/tests/models/test_activitypub_mixin.py
@@ -245,7 +245,7 @@ def test_get_recipients_software(self, *_):
# ObjectMixin
def test_object_save_create(self, *_):
- """should save uneventufully when broadcast is disabled"""
+ """should save uneventfully when broadcast is disabled"""
class Success(Exception):
"""this means we got to the right method"""
@@ -276,7 +276,7 @@ def to_create_activity(self, user): # pylint: disable=arguments-differ
ObjectModel(user=None).save()
def test_object_save_update(self, *_):
- """should save uneventufully when broadcast is disabled"""
+ """should save uneventfully when broadcast is disabled"""
class Success(Exception):
"""this means we got to the right method"""
diff --git a/bookwyrm/tests/models/test_base_model.py b/bookwyrm/tests/models/test_base_model.py
index 8a8be2148b..b94592571c 100644
--- a/bookwyrm/tests/models/test_base_model.py
+++ b/bookwyrm/tests/models/test_base_model.py
@@ -51,7 +51,7 @@ def test_remote_id_with_user(self):
def test_set_remote_id(self):
"""this function sets remote ids after creation"""
- # using Work because it BookWrymModel is abstract and this requires save
+ # using Work because it BookWyrmModel is abstract and this requires save
# Work is a relatively not-fancy model.
instance = models.Work.objects.create(title="work title")
instance.remote_id = None
diff --git a/bookwyrm/tests/models/test_fields.py b/bookwyrm/tests/models/test_fields.py
index 961fbd5224..c6e3957533 100644
--- a/bookwyrm/tests/models/test_fields.py
+++ b/bookwyrm/tests/models/test_fields.py
@@ -29,7 +29,7 @@
@patch("bookwyrm.activitystreams.populate_stream_task.delay")
@patch("bookwyrm.lists_stream.populate_lists_task.delay")
class ModelFields(TestCase):
- """overwrites standard model feilds to work with activitypub"""
+ """overwrites standard model fields to work with activitypub"""
def test_validate_remote_id(self, *_):
"""should look like a url"""
@@ -125,7 +125,7 @@ def test_username_field(self, *_):
instance.run_validators("@example.com")
instance.run_validators("mouse@examplecom")
instance.run_validators("one two@fish.aaaa")
- instance.run_validators("a*&@exampke.com")
+ instance.run_validators("a*&@example.com")
instance.run_validators("trailingwhite@example.com ")
self.assertIsNone(instance.run_validators("mouse@example.com"))
self.assertIsNone(instance.run_validators("mo-2use@ex3ample.com"))
@@ -292,7 +292,7 @@ def test_foreign_key_from_activity_str(self, *_):
self.assertEqual(value.name, "MOUSE?? MOUSE!!")
def test_foreign_key_from_activity_dict(self, *_):
- """test recieving activity json"""
+ """test receiving activity json"""
instance = fields.ForeignKey(User, on_delete=models.CASCADE)
datafile = pathlib.Path(__file__).parent.joinpath("../data/ap_user.json")
userdata = json.loads(datafile.read_bytes())
diff --git a/bookwyrm/tests/models/test_status_model.py b/bookwyrm/tests/models/test_status_model.py
index 177bedb24e..1bbca18967 100644
--- a/bookwyrm/tests/models/test_status_model.py
+++ b/bookwyrm/tests/models/test_status_model.py
@@ -397,7 +397,7 @@ def test_boost(self, *_):
# pylint: disable=unused-argument
def test_create_broadcast(self, one, two, broadcast_mock, *_):
- """should send out two verions of a status on create"""
+ """should send out two versions of a status on create"""
models.Comment.objects.create(
content="hi", user=self.local_user, book=self.book
)
diff --git a/bookwyrm/tests/templatetags/test_markdown.py b/bookwyrm/tests/templatetags/test_markdown.py
index ba283a4f2d..5b5959ad3f 100644
--- a/bookwyrm/tests/templatetags/test_markdown.py
+++ b/bookwyrm/tests/templatetags/test_markdown.py
@@ -7,7 +7,7 @@ class MarkdownTags(TestCase):
"""lotta different things here"""
def test_get_markdown(self):
- """mardown format data"""
+ """markdown format data"""
result = markdown.get_markdown("_hi_")
self.assertEqual(result, "hi
")
diff --git a/bookwyrm/tests/templatetags/test_rating_tags.py b/bookwyrm/tests/templatetags/test_rating_tags.py
index a06ee9402b..5abfa471aa 100644
--- a/bookwyrm/tests/templatetags/test_rating_tags.py
+++ b/bookwyrm/tests/templatetags/test_rating_tags.py
@@ -41,7 +41,7 @@ def setUp(self):
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async")
def test_get_rating(self, *_):
"""privacy filtered rating. Commented versions are how it ought to work with
- subjective ratings, which are currenly not used for performance reasons."""
+ subjective ratings, which are currently not used for performance reasons."""
# follows-only: not included
models.ReviewRating.objects.create(
user=self.remote_user,
diff --git a/bookwyrm/tests/test_postgres.py b/bookwyrm/tests/test_postgres.py
index 94a8090f41..8fc3c9d59d 100644
--- a/bookwyrm/tests/test_postgres.py
+++ b/bookwyrm/tests/test_postgres.py
@@ -30,7 +30,7 @@ def test_search_vector_fields(self, _):
title="The Long Goodbye",
subtitle="wow cool",
series="series name",
- languages=["irrelevent"],
+ languages=["irrelevant"],
)
book.authors.add(author)
book.refresh_from_db()
@@ -40,7 +40,7 @@ def test_search_vector_fields(self, _):
"'cool':5B 'goodby':3A 'long':2A 'name':9 'rays':7C 'seri':8 'the':6C 'wow':4B",
)
- def test_seach_vector_on_author_update(self, _):
+ def test_search_vector_on_author_update(self, _):
"""update search when an author name changes"""
author = models.Author.objects.create(name="The Rays")
book = models.Edition.objects.create(
@@ -53,7 +53,7 @@ def test_seach_vector_on_author_update(self, _):
self.assertEqual(book.search_vector, "'goodby':3A 'jeremy':4C 'long':2A")
- def test_seach_vector_on_author_delete(self, _):
+ def test_search_vector_on_author_delete(self, _):
"""update search when an author name changes"""
author = models.Author.objects.create(name="Jeremy")
book = models.Edition.objects.create(
diff --git a/bookwyrm/tests/test_signing.py b/bookwyrm/tests/test_signing.py
index cde193f080..d15d6eecf3 100644
--- a/bookwyrm/tests/test_signing.py
+++ b/bookwyrm/tests/test_signing.py
@@ -107,7 +107,7 @@ def test_wrong_signature(self):
@responses.activate
def test_remote_signer(self):
- """signtures for remote users"""
+ """signatures for remote users"""
datafile = pathlib.Path(__file__).parent.joinpath("data/ap_user.json")
data = json.loads(datafile.read_bytes())
data["id"] = self.fake_remote.remote_id
diff --git a/bookwyrm/tests/test_utils.py b/bookwyrm/tests/test_utils.py
index 60f3185e6e..61ed2262c1 100644
--- a/bookwyrm/tests/test_utils.py
+++ b/bookwyrm/tests/test_utils.py
@@ -22,8 +22,8 @@ def test_valid_url_domain(self):
def test_invalid_url_domain(self):
"""Check with an invalid URL"""
- self.assertEqual(
- validate_url_domain("https://up-to-no-good.tld/bad-actor.exe"), "/"
+ self.assertIsNone(
+ validate_url_domain("https://up-to-no-good.tld/bad-actor.exe")
)
def test_default_url_domain(self):
diff --git a/bookwyrm/tests/validate_html.py b/bookwyrm/tests/validate_html.py
index e98a4f3f82..423a86586b 100644
--- a/bookwyrm/tests/validate_html.py
+++ b/bookwyrm/tests/validate_html.py
@@ -18,6 +18,7 @@ def validate_html(html):
for e in errors.split("\n")
if "&book" not in e
and "&type" not in e
+ and "&resolved" not in e
and "id and name attribute" not in e
and "illegal characters found in URI" not in e
and "escaping malformed URI reference" not in e
diff --git a/bookwyrm/tests/views/inbox/test_inbox_delete.py b/bookwyrm/tests/views/inbox/test_inbox_delete.py
index b4863aad5e..0fb108e229 100644
--- a/bookwyrm/tests/views/inbox/test_inbox_delete.py
+++ b/bookwyrm/tests/views/inbox/test_inbox_delete.py
@@ -58,7 +58,7 @@ def test_delete_status(self):
with patch("bookwyrm.activitystreams.remove_status_task.delay") as redis_mock:
views.inbox.activity_task(activity)
self.assertTrue(redis_mock.called)
- # deletion doens't remove the status, it turns it into a tombstone
+ # deletion doesn't remove the status, it turns it into a tombstone
status = models.Status.objects.get()
self.assertTrue(status.deleted)
self.assertIsInstance(status.deleted_date, datetime)
@@ -87,7 +87,7 @@ def test_delete_status_notifications(self):
with patch("bookwyrm.activitystreams.remove_status_task.delay") as redis_mock:
views.inbox.activity_task(activity)
self.assertTrue(redis_mock.called)
- # deletion doens't remove the status, it turns it into a tombstone
+ # deletion doesn't remove the status, it turns it into a tombstone
status = models.Status.objects.get()
self.assertTrue(status.deleted)
self.assertIsInstance(status.deleted_date, datetime)
diff --git a/bookwyrm/tests/views/landing/test_login.py b/bookwyrm/tests/views/landing/test_login.py
index d76e9a55f6..eab0826092 100644
--- a/bookwyrm/tests/views/landing/test_login.py
+++ b/bookwyrm/tests/views/landing/test_login.py
@@ -114,7 +114,7 @@ def test_login_post_invalid_credentials(self, *_):
view = views.Login.as_view()
form = forms.LoginForm()
form.data["localname"] = "mouse"
- form.data["password"] = "passsword1"
+ form.data["password"] = "password1"
request = self.factory.post("", form.data)
request.user = self.anonymous_user
diff --git a/bookwyrm/tests/views/landing/test_password.py b/bookwyrm/tests/views/landing/test_password.py
index c7c7e05d52..c1adf61e98 100644
--- a/bookwyrm/tests/views/landing/test_password.py
+++ b/bookwyrm/tests/views/landing/test_password.py
@@ -72,7 +72,7 @@ def test_password_reset(self):
validate_html(result.render())
self.assertEqual(result.status_code, 200)
- def test_password_reset_nonexistant_code(self):
+ def test_password_reset_nonexistent_code(self):
"""there are so many views, this just makes sure it LOADS"""
view = views.PasswordReset.as_view()
request = self.factory.get("")
diff --git a/bookwyrm/tests/views/test_helpers.py b/bookwyrm/tests/views/test_helpers.py
index ce1f6a7352..dd30526ec6 100644
--- a/bookwyrm/tests/views/test_helpers.py
+++ b/bookwyrm/tests/views/test_helpers.py
@@ -8,7 +8,7 @@
import responses
from bookwyrm import models, views
-from bookwyrm.settings import USER_AGENT
+from bookwyrm.settings import USER_AGENT, DOMAIN
@patch("bookwyrm.activitystreams.add_status_task.delay")
@@ -18,6 +18,7 @@
class ViewsHelpers(TestCase):
"""viewing and creating statuses"""
+ # pylint: disable=invalid-name
def setUp(self):
"""we need basic test data and mocks"""
self.factory = RequestFactory()
@@ -260,3 +261,33 @@ def test_handle_reading_status_other(self, *_):
self.local_user, self.shelf, self.book, "public"
)
self.assertFalse(models.GeneratedNote.objects.exists())
+
+ def test_redirect_to_referer_outside_domain(self, *_):
+ """safely send people on their way"""
+ request = self.factory.get("/path")
+ request.META = {"HTTP_REFERER": "http://outside.domain/name"}
+ result = views.helpers.redirect_to_referer(
+ request, "user-feed", self.local_user.localname
+ )
+ self.assertEqual(result.url, f"/user/{self.local_user.localname}")
+
+ def test_redirect_to_referer_outside_domain_with_fallback(self, *_):
+ """invalid domain with regular params for the redirect function"""
+ request = self.factory.get("/path")
+ request.META = {"HTTP_REFERER": "https://outside.domain/name"}
+ result = views.helpers.redirect_to_referer(request)
+ self.assertEqual(result.url, "/")
+
+ def test_redirect_to_referer_valid_domain(self, *_):
+ """redirect to within the app"""
+ request = self.factory.get("/path")
+ request.META = {"HTTP_REFERER": f"https://{DOMAIN}/and/a/path"}
+ result = views.helpers.redirect_to_referer(request)
+ self.assertEqual(result.url, f"https://{DOMAIN}/and/a/path")
+
+ def test_redirect_to_referer_with_get_args(self, *_):
+ """if the path has get params (like sort) they are preserved"""
+ request = self.factory.get("/path")
+ request.META = {"HTTP_REFERER": f"https://{DOMAIN}/and/a/path?sort=hello"}
+ result = views.helpers.redirect_to_referer(request)
+ self.assertEqual(result.url, f"https://{DOMAIN}/and/a/path?sort=hello")
diff --git a/bookwyrm/tests/views/test_status.py b/bookwyrm/tests/views/test_status.py
index d02c713746..5874d9f2f0 100644
--- a/bookwyrm/tests/views/test_status.py
+++ b/bookwyrm/tests/views/test_status.py
@@ -234,7 +234,7 @@ def test_create_status_mentions(self, *_):
)
def test_create_status_reply_with_mentions(self, *_):
- """reply to a post with an @mention'ed user"""
+ """reply to a post with an @mention'd user"""
view = views.CreateStatus.as_view()
user = models.User.objects.create_user(
"rat", "rat@rat.com", "password", local=True, localname="rat"
@@ -356,12 +356,12 @@ def test_create_status_hashtags(self, *_):
self.assertEqual(len(hashtags), 2)
self.assertEqual(list(status.mention_hashtags.all()), list(hashtags))
- hashtag_exising = models.Hashtag.objects.filter(name="#existing").first()
+ hashtag_existing = models.Hashtag.objects.filter(name="#existing").first()
hashtag_new = models.Hashtag.objects.filter(name="#NewTag").first()
self.assertEqual(
status.content,
"this is an "
- + f''
+ + f' '
+ "#EXISTING hashtag but all uppercase, this one is "
+ f''
+ "#NewTag .
",
@@ -456,6 +456,24 @@ def test_format_links_special_chars(self, *_):
views.status.format_links(url), f'{url[8:]} '
)
+ def test_format_mentions_with_at_symbol_links(self, *_):
+ """A link with an @username shouldn't treat the username as a mention"""
+ content = "a link to https://example.com/user/@mouse"
+ mentions = views.status.find_mentions(self.local_user, content)
+ self.assertEqual(
+ views.status.format_mentions(content, mentions),
+ "a link to https://example.com/user/@mouse",
+ )
+
+ def test_format_hashtag_with_pound_symbol_links(self, *_):
+ """A link with an @username shouldn't treat the username as a mention"""
+ content = "a link to https://example.com/page#anchor"
+ hashtags = views.status.find_or_create_hashtags(content)
+ self.assertEqual(
+ views.status.format_hashtags(content, hashtags),
+ "a link to https://example.com/page#anchor",
+ )
+
def test_to_markdown(self, *_):
"""this is mostly handled in other places, but nonetheless"""
text = "_hi_ and http://fish.com is rad "
diff --git a/bookwyrm/tests/views/test_wellknown.py b/bookwyrm/tests/views/test_wellknown.py
index 465f39b40c..80f5a56ae9 100644
--- a/bookwyrm/tests/views/test_wellknown.py
+++ b/bookwyrm/tests/views/test_wellknown.py
@@ -53,7 +53,7 @@ def test_webfinger(self):
data = json.loads(result.getvalue())
self.assertEqual(data["subject"], "acct:mouse@local.com")
- def test_webfinger_case_sensitivty(self):
+ def test_webfinger_case_sensitivity(self):
"""ensure that webfinger queries are not case sensitive"""
request = self.factory.get("", {"resource": "acct:MoUsE@local.com"})
request.user = self.anonymous_user
diff --git a/bookwyrm/utils/validate.py b/bookwyrm/utils/validate.py
index 89aee4782e..b91add3ad1 100644
--- a/bookwyrm/utils/validate.py
+++ b/bookwyrm/utils/validate.py
@@ -2,12 +2,12 @@
from bookwyrm.settings import DOMAIN, USE_HTTPS
-def validate_url_domain(url, default="/"):
+def validate_url_domain(url):
"""Basic check that the URL starts with the instance domain name"""
if not url:
- return default
+ return None
- if url in ("/", default):
+ if url == "/":
return url
protocol = "https://" if USE_HTTPS else "http://"
@@ -16,4 +16,4 @@ def validate_url_domain(url, default="/"):
if url.startswith(origin):
return url
- return default
+ return None
diff --git a/bookwyrm/views/admin/celery_status.py b/bookwyrm/views/admin/celery_status.py
index e0b1fe18c0..392d7c4712 100644
--- a/bookwyrm/views/admin/celery_status.py
+++ b/bookwyrm/views/admin/celery_status.py
@@ -1,10 +1,13 @@
""" celery status """
+import json
+
from django.contrib.auth.decorators import login_required, permission_required
from django.http import HttpResponse
from django.template.response import TemplateResponse
from django.utils.decorators import method_decorator
from django.views import View
from django.views.decorators.http import require_GET
+from django import forms
import redis
from celerywyrm import settings
@@ -46,14 +49,61 @@ def get(self, request):
queues = None
errors.append(err)
+ form = ClearCeleryForm()
+
data = {
"stats": stats,
"active_tasks": active_tasks,
"queues": queues,
+ "form": form,
"errors": errors,
}
return TemplateResponse(request, "settings/celery.html", data)
+ def post(self, request):
+ """Submit form to clear queues"""
+ form = ClearCeleryForm(request.POST)
+ if form.is_valid():
+ if len(celery.control.ping()) != 0:
+ return HttpResponse(
+ "Refusing to delete tasks while Celery worker is active"
+ )
+ pipeline = r.pipeline()
+ for queue in form.cleaned_data["queues"]:
+ for task in r.lrange(queue, 0, -1):
+ task_json = json.loads(task)
+ if task_json["headers"]["task"] in form.cleaned_data["tasks"]:
+ pipeline.lrem(queue, 0, task)
+ results = pipeline.execute()
+
+ return HttpResponse(f"Deleted {sum(results)} tasks")
+
+
+class ClearCeleryForm(forms.Form):
+ """Form to clear queues"""
+
+ queues = forms.MultipleChoiceField(
+ label="Queues",
+ choices=[
+ (LOW, "Low prioirty"),
+ (MEDIUM, "Medium priority"),
+ (HIGH, "High priority"),
+ (IMPORTS, "Imports"),
+ (BROADCAST, "Broadcasts"),
+ ],
+ widget=forms.CheckboxSelectMultiple,
+ )
+ tasks = forms.MultipleChoiceField(
+ label="Tasks", choices=[], widget=forms.CheckboxSelectMultiple
+ )
+
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ celery.loader.import_default_modules()
+ self.fields["tasks"].choices = sorted(
+ [(k, k) for k in celery.tasks.keys() if not k.startswith("celery.")]
+ )
+
@require_GET
# pylint: disable=unused-argument
diff --git a/bookwyrm/views/admin/dashboard.py b/bookwyrm/views/admin/dashboard.py
index b49c5a238a..9d256fc6c2 100644
--- a/bookwyrm/views/admin/dashboard.py
+++ b/bookwyrm/views/admin/dashboard.py
@@ -76,7 +76,7 @@ def get(self, request):
def get_charts_and_stats(request):
- """Defines the dashbaord charts"""
+ """Defines the dashboard charts"""
interval = int(request.GET.get("days", 1))
now = timezone.now()
start = request.GET.get("start")
diff --git a/bookwyrm/views/admin/imports.py b/bookwyrm/views/admin/imports.py
index 066bc42e40..7ae190ce85 100644
--- a/bookwyrm/views/admin/imports.py
+++ b/bookwyrm/views/admin/imports.py
@@ -8,6 +8,7 @@
from django.views.decorators.http import require_POST
from bookwyrm import models
+from bookwyrm.views.helpers import redirect_to_referer
from bookwyrm.settings import PAGE_LENGTH
@@ -57,7 +58,7 @@ def post(self, request, import_id):
"""Mark an import as complete"""
import_job = get_object_or_404(models.ImportJob, id=import_id)
import_job.stop_job()
- return redirect("settings-imports")
+ return redirect_to_referer(request, "settings-imports")
@require_POST
diff --git a/bookwyrm/views/admin/reports.py b/bookwyrm/views/admin/reports.py
index cf91299d97..9590db0da4 100644
--- a/bookwyrm/views/admin/reports.py
+++ b/bookwyrm/views/admin/reports.py
@@ -8,6 +8,7 @@
from django.views import View
from bookwyrm import forms, models
+from bookwyrm.views.helpers import redirect_to_referer
from bookwyrm.settings import PAGE_LENGTH
@@ -28,14 +29,20 @@ def get(self, request):
"""view current reports"""
filters = {}
- resolved = request.GET.get("resolved") == "true"
+ # we sometimes want to see all reports, regardless of resolution
+ if request.GET.get("resolved") == "all":
+ resolved = "all"
+ else:
+ resolved = request.GET.get("resolved") == "true"
+
server = request.GET.get("server")
if server:
filters["user__federated_server__server_name"] = server
username = request.GET.get("username")
if username:
filters["user__username__icontains"] = username
- filters["resolved"] = resolved
+ if resolved != "all":
+ filters["resolved"] = resolved
reports = models.Report.objects.filter(**filters)
paginated = Paginator(reports, PAGE_LENGTH)
@@ -84,26 +91,26 @@ def post(self, request, report_id):
@login_required
@permission_required("bookwyrm.moderate_user")
-def suspend_user(_, user_id):
+def suspend_user(request, user_id):
"""mark an account as inactive"""
user = get_object_or_404(models.User, id=user_id)
user.is_active = False
user.deactivation_reason = "moderator_suspension"
# this isn't a full deletion, so we don't want to tell the world
user.save(broadcast=False)
- return redirect("settings-user", user.id)
+ return redirect_to_referer(request, "settings-user", user.id)
@login_required
@permission_required("bookwyrm.moderate_user")
-def unsuspend_user(_, user_id):
+def unsuspend_user(request, user_id):
"""mark an account as inactive"""
user = get_object_or_404(models.User, id=user_id)
user.is_active = True
user.deactivation_reason = None
# this isn't a full deletion, so we don't want to tell the world
user.save(broadcast=False)
- return redirect("settings-user", user.id)
+ return redirect_to_referer(request, "settings-user", user.id)
@login_required
@@ -123,7 +130,7 @@ def moderator_delete_user(request, user_id):
if form.is_valid() and moderator.check_password(form.cleaned_data["password"]):
user.deactivation_reason = "moderator_deletion"
user.delete()
- return redirect("settings-user", user.id)
+ return redirect_to_referer(request, "settings-user", user.id)
form.errors["password"] = ["Invalid password"]
diff --git a/bookwyrm/views/books/edit_book.py b/bookwyrm/views/books/edit_book.py
index 167bd4b467..97b012db81 100644
--- a/bookwyrm/views/books/edit_book.py
+++ b/bookwyrm/views/books/edit_book.py
@@ -154,7 +154,7 @@ def add_authors(request, data):
data["author_matches"] = []
data["isni_matches"] = []
- # creting a book or adding an author to a book needs another step
+ # creating a book or adding an author to a book needs another step
data["confirm_mode"] = True
# this isn't preserved because it isn't part of the form obj
data["remove_authors"] = request.POST.getlist("remove_authors")
diff --git a/bookwyrm/views/helpers.py b/bookwyrm/views/helpers.py
index f89ea0dfeb..4f5e00e41e 100644
--- a/bookwyrm/views/helpers.py
+++ b/bookwyrm/views/helpers.py
@@ -16,6 +16,7 @@
from bookwyrm.connectors import ConnectorException, get_data
from bookwyrm.status import create_generated_note
from bookwyrm.utils import regex
+from bookwyrm.utils.validate import validate_url_domain
# pylint: disable=unnecessary-pass
@@ -219,3 +220,15 @@ def maybe_redirect_local_path(request, model):
new_path = f"{model.local_path}?{request.GET.urlencode()}"
return redirect(new_path, permanent=True)
+
+
+def redirect_to_referer(request, *args):
+ """Redirect to the referrer, if it's in our domain, with get params"""
+ # make sure the refer is part of this instance
+ validated = validate_url_domain(request.META.get("HTTP_REFERER"))
+
+ if validated:
+ return redirect(validated)
+
+ # if not, use the args passed you'd normally pass to redirect()
+ return redirect(*args or "/")
diff --git a/bookwyrm/views/inbox.py b/bookwyrm/views/inbox.py
index 89e644db8a..42a8dc78e3 100644
--- a/bookwyrm/views/inbox.py
+++ b/bookwyrm/views/inbox.py
@@ -104,7 +104,7 @@ def raise_is_blocked_activity(activity_json):
def sometimes_async_activity_task(activity_json, queue=MEDIUM):
"""Sometimes we can effectively respond to a request without queuing a new task,
- and whever that is possible, we should do it."""
+ and whenever that is possible, we should do it."""
activity = activitypub.parse(activity_json)
# try resolving this activity without making any http requests
@@ -115,7 +115,7 @@ def sometimes_async_activity_task(activity_json, queue=MEDIUM):
activity_task.apply_async(args=(activity_json,), queue=queue)
-@app.task(queue=MEDIUM, ignore_result=True)
+@app.task(queue=MEDIUM)
def activity_task(activity_json):
"""do something with this json we think is legit"""
# lets see if the activitypub module can make sense of this json
diff --git a/bookwyrm/views/list/curate.py b/bookwyrm/views/list/curate.py
index 7155ffc430..cf41636bae 100644
--- a/bookwyrm/views/list/curate.py
+++ b/bookwyrm/views/list/curate.py
@@ -14,7 +14,7 @@
# pylint: disable=no-self-use
@method_decorator(login_required, name="dispatch")
class Curate(View):
- """approve or discard list suggestsions"""
+ """approve or discard list suggestions"""
def get(self, request, list_id):
"""display a pending list"""
diff --git a/bookwyrm/views/list/embed.py b/bookwyrm/views/list/embed.py
index 9d0078b654..a62c9c1bac 100644
--- a/bookwyrm/views/list/embed.py
+++ b/bookwyrm/views/list/embed.py
@@ -14,7 +14,7 @@
# pylint: disable=no-self-use
class EmbedList(View):
- """embeded book list page"""
+ """embedded book list page"""
def get(self, request, list_id, list_key):
"""display a book list"""
diff --git a/bookwyrm/views/list/list.py b/bookwyrm/views/list/list.py
index 772c19e2c4..30d6f970a8 100644
--- a/bookwyrm/views/list/list.py
+++ b/bookwyrm/views/list/list.py
@@ -18,7 +18,11 @@
from bookwyrm import book_search, forms, models
from bookwyrm.activitypub import ActivitypubResponse
from bookwyrm.settings import PAGE_LENGTH
-from bookwyrm.views.helpers import is_api_request, maybe_redirect_local_path
+from bookwyrm.views.helpers import (
+ is_api_request,
+ maybe_redirect_local_path,
+ redirect_to_referer,
+)
# pylint: disable=no-self-use
@@ -91,7 +95,7 @@ def post(self, request, list_id):
book_list.group = None
book_list.save(broadcast=False)
- return redirect(book_list.local_path)
+ return redirect_to_referer(request, book_list.local_path)
def get_list_suggestions(book_list, user, query=None, num_suggestions=5):
@@ -157,7 +161,7 @@ def save_list(request, list_id):
"""save a list"""
book_list = get_object_or_404(models.List, id=list_id)
request.user.saved_lists.add(book_list)
- return redirect("list", list_id)
+ return redirect_to_referer(request, "list", list_id)
@require_POST
@@ -166,7 +170,7 @@ def unsave_list(request, list_id):
"""unsave a list"""
book_list = get_object_or_404(models.List, id=list_id)
request.user.saved_lists.remove(book_list)
- return redirect("list", list_id)
+ return redirect_to_referer(request, "list", list_id)
@require_POST
@@ -179,7 +183,7 @@ def delete_list(request, list_id):
book_list.raise_not_deletable(request.user)
book_list.delete()
- return redirect("lists")
+ return redirect("/list")
@require_POST
@@ -236,7 +240,7 @@ def remove_book(request, list_id):
item.delete()
normalize_book_list_ordering(book_list.id, start=deleted_order)
- return redirect("list", list_id)
+ return redirect_to_referer(request, "list", list_id)
@require_POST
@@ -283,7 +287,7 @@ def set_book_position(request, list_item_id):
list_item.order = int_position
list_item.save()
- return redirect("list", book_list.id)
+ return redirect_to_referer(request, book_list.local_path)
@transaction.atomic
diff --git a/bookwyrm/views/preferences/export.py b/bookwyrm/views/preferences/export.py
index c4540ba78d..6880318bc2 100644
--- a/bookwyrm/views/preferences/export.py
+++ b/bookwyrm/views/preferences/export.py
@@ -22,16 +22,19 @@ def get(self, request):
def post(self, request):
"""Download the csv file of a user's book data"""
- books = (
- models.Edition.viewer_aware_objects(request.user)
- .filter(
- Q(shelves__user=request.user)
- | Q(readthrough__user=request.user)
- | Q(review__user=request.user)
- | Q(comment__user=request.user)
- | Q(quotation__user=request.user)
- )
- .distinct()
+ books = models.Edition.viewer_aware_objects(request.user)
+ books_shelves = books.filter(Q(shelves__user=request.user)).distinct()
+ books_readthrough = books.filter(Q(readthrough__user=request.user)).distinct()
+ books_review = books.filter(Q(review__user=request.user)).distinct()
+ books_comment = books.filter(Q(comment__user=request.user)).distinct()
+ books_quotation = books.filter(Q(quotation__user=request.user)).distinct()
+
+ books = set(
+ list(books_shelves)
+ + list(books_readthrough)
+ + list(books_review)
+ + list(books_comment)
+ + list(books_quotation)
)
csv_string = io.StringIO()
diff --git a/bookwyrm/views/reading.py b/bookwyrm/views/reading.py
index 42e8d560ad..65870b8dc0 100644
--- a/bookwyrm/views/reading.py
+++ b/bookwyrm/views/reading.py
@@ -12,10 +12,9 @@
from bookwyrm import forms, models
from bookwyrm.views.shelf.shelf_actions import unshelve
-from bookwyrm.utils.validate import validate_url_domain
from .status import CreateStatus
from .helpers import get_edition, handle_reading_status, is_api_request
-from .helpers import load_date_in_user_tz_as_utc
+from .helpers import load_date_in_user_tz_as_utc, redirect_to_referer
logger = logging.getLogger(__name__)
@@ -43,8 +42,6 @@ def get(self, request, status, book_id):
@transaction.atomic
def post(self, request, status, book_id):
"""Change the state of a book by shelving it and adding reading dates"""
- next_step = request.META.get("HTTP_REFERER")
- next_step = validate_url_domain(next_step, "/")
identifier = {
"want": models.Shelf.TO_READ,
"start": models.Shelf.READING,
@@ -86,7 +83,7 @@ def post(self, request, status, book_id):
if current_status_shelfbook.shelf.identifier != desired_shelf.identifier:
current_status_shelfbook.delete()
else: # It already was on the shelf
- return redirect(next_step)
+ return redirect_to_referer(request)
models.ShelfBook.objects.create(
book=book, shelf=desired_shelf, user=request.user
@@ -124,7 +121,7 @@ def post(self, request, status, book_id):
if is_api_request(request):
return HttpResponse()
- return redirect(next_step)
+ return redirect_to_referer(request)
@method_decorator(login_required, name="dispatch")
@@ -189,7 +186,7 @@ def update_readthrough_on_shelve(
active_readthrough = models.ReadThrough.objects.create(
user=user, book=annotated_book
)
- # santiize and set dates
+ # sanitize and set dates
active_readthrough.start_date = load_date_in_user_tz_as_utc(start_date, user)
# if the stop or finish date is set, the readthrough will be set as inactive
active_readthrough.finish_date = load_date_in_user_tz_as_utc(finish_date, user)
diff --git a/bookwyrm/views/shelf/shelf_actions.py b/bookwyrm/views/shelf/shelf_actions.py
index b597bd35fd..f0f5fa159e 100644
--- a/bookwyrm/views/shelf/shelf_actions.py
+++ b/bookwyrm/views/shelf/shelf_actions.py
@@ -3,9 +3,9 @@
from django.contrib.auth.decorators import login_required
from django.shortcuts import get_object_or_404, redirect
from django.views.decorators.http import require_POST
-from bookwyrm.utils.validate import validate_url_domain
from bookwyrm import forms, models
+from bookwyrm.views.helpers import redirect_to_referer
@login_required
@@ -36,8 +36,6 @@ def delete_shelf(request, shelf_id):
@transaction.atomic
def shelve(request):
"""put a book on a user's shelf"""
- next_step = request.META.get("HTTP_REFERER")
- next_step = validate_url_domain(next_step, "/")
book = get_object_or_404(models.Edition, id=request.POST.get("book"))
desired_shelf = get_object_or_404(
request.user.shelf_set, identifier=request.POST.get("shelf")
@@ -74,7 +72,7 @@ def shelve(request):
):
current_read_status_shelfbook.delete()
else:
- return redirect(next_step)
+ return redirect_to_referer(request)
# create the new shelf-book entry
models.ShelfBook.objects.create(
@@ -91,15 +89,13 @@ def shelve(request):
except IntegrityError:
pass
- return redirect(next_step)
+ return redirect_to_referer(request)
@login_required
@require_POST
def unshelve(request, book_id=False):
"""remove a book from a user's shelf"""
- next_step = request.META.get("HTTP_REFERER")
- next_step = validate_url_domain(next_step, "/")
identity = book_id if book_id else request.POST.get("book")
book = get_object_or_404(models.Edition, id=identity)
shelf_book = get_object_or_404(
@@ -107,4 +103,4 @@ def unshelve(request, book_id=False):
)
shelf_book.raise_not_deletable(request.user)
shelf_book.delete()
- return redirect(next_step)
+ return redirect_to_referer(request)
diff --git a/bookwyrm/views/status.py b/bookwyrm/views/status.py
index 498a8b6baf..e3a7481f81 100644
--- a/bookwyrm/views/status.py
+++ b/bookwyrm/views/status.py
@@ -18,9 +18,8 @@
from markdown import markdown
from bookwyrm import forms, models
from bookwyrm.utils import regex, sanitizer
-from bookwyrm.utils.validate import validate_url_domain
from .helpers import handle_remote_webfinger, is_api_request
-from .helpers import load_date_in_user_tz_as_utc
+from .helpers import load_date_in_user_tz_as_utc, redirect_to_referer
logger = logging.getLogger(__name__)
@@ -59,8 +58,6 @@ def get(self, request, status_type): # pylint: disable=unused-argument
# pylint: disable=too-many-branches
def post(self, request, status_type, existing_status_id=None):
"""create status of whatever type"""
- next_step = request.META.get("HTTP_REFERER")
- next_step = validate_url_domain(next_step, "/")
created = not existing_status_id
existing_status = None
if existing_status_id:
@@ -83,7 +80,7 @@ def post(self, request, status_type, existing_status_id=None):
if is_api_request(request):
logger.exception(form.errors)
return HttpResponseBadRequest()
- return redirect(next_step)
+ return redirect_to_referer(request)
status = form.save(request, commit=False)
status.ready = False
@@ -99,34 +96,22 @@ def post(self, request, status_type, existing_status_id=None):
# inspect the text for user tags
content = status.content
- for (mention_text, mention_user) in find_mentions(
- request.user, content
- ).items():
+ mentions = find_mentions(request.user, content)
+ for (_, mention_user) in mentions.items():
# add them to status mentions fk
status.mention_users.add(mention_user)
+ content = format_mentions(content, mentions)
- # turn the mention into a link
- content = re.sub(
- rf"{mention_text}\b(?!@)",
- rf'{mention_text} ',
- content,
- )
# add reply parent to mentions
if status.reply_parent:
status.mention_users.add(status.reply_parent.user)
# inspect the text for hashtags
- for (mention_text, mention_hashtag) in find_or_create_hashtags(content).items():
+ hashtags = find_or_create_hashtags(content)
+ for (_, mention_hashtag) in hashtags.items():
# add them to status mentions fk
status.mention_hashtags.add(mention_hashtag)
-
- # turn the mention into a link
- content = re.sub(
- rf"{mention_text}\b(?!@)",
- rf''
- + rf"{mention_text} ",
- content,
- )
+ content = format_hashtags(content, hashtags)
# deduplicate mentions
status.mention_users.set(set(status.mention_users.all()))
@@ -150,7 +135,32 @@ def post(self, request, status_type, existing_status_id=None):
if is_api_request(request):
return HttpResponse()
- return redirect(next_step)
+ return redirect_to_referer(request)
+
+
+def format_mentions(content, mentions):
+ """Detect @mentions and make them links"""
+ for (mention_text, mention_user) in mentions.items():
+ # turn the mention into a link
+ content = re.sub(
+ rf"(?{mention_text}',
+ content,
+ )
+ return content
+
+
+def format_hashtags(content, hashtags):
+ """Detect #hashtags and make them links"""
+ for (mention_text, mention_hashtag) in hashtags.items():
+ # turn the mention into a link
+ content = re.sub(
+ rf"(?'
+ + rf"{mention_text}",
+ content,
+ )
+ return content
@method_decorator(login_required, name="dispatch")
@@ -183,8 +193,6 @@ def update_progress(request, book_id): # pylint: disable=unused-argument
def edit_readthrough(request):
"""can't use the form because the dates are too finnicky"""
# TODO: remove this, it duplicates the code in the ReadThrough view
- next_step = request.META.get("HTTP_REFERER")
- next_step = validate_url_domain(next_step, "/")
readthrough = get_object_or_404(models.ReadThrough, id=request.POST.get("id"))
readthrough.start_date = load_date_in_user_tz_as_utc(
@@ -216,7 +224,7 @@ def edit_readthrough(request):
if is_api_request(request):
return HttpResponse()
- return redirect(next_step)
+ return redirect_to_referer(request)
def find_mentions(user, content):
@@ -224,7 +232,7 @@ def find_mentions(user, content):
if not content:
return {}
# The regex has nested match groups, so the 0th entry has the full (outer) match
- # And beacuse the strict username starts with @, the username is 1st char onward
+ # And because the strict username starts with @, the username is 1st char onward
usernames = [m[0][1:] for m in re.findall(regex.STRICT_USERNAME, content)]
known_users = (
diff --git a/bookwyrm/views/wellknown.py b/bookwyrm/views/wellknown.py
index 03e619dfdb..ec5acf98f5 100644
--- a/bookwyrm/views/wellknown.py
+++ b/bookwyrm/views/wellknown.py
@@ -9,7 +9,7 @@
from django.views.decorators.http import require_GET
from bookwyrm import models
-from bookwyrm.settings import DOMAIN, VERSION
+from bookwyrm.settings import DOMAIN, VERSION, LANGUAGE_CODE
@require_GET
@@ -110,7 +110,7 @@ def instance_info(_):
"status_count": status_count,
},
"thumbnail": logo,
- "languages": ["en"],
+ "languages": [LANGUAGE_CODE[:2]],
"registrations": site.allow_registration,
"approval_required": not site.allow_registration
and site.allow_invite_requests,
diff --git a/bw-dev b/bw-dev
index 8b0bbb3f35..df88b06c60 100755
--- a/bw-dev
+++ b/bw-dev
@@ -23,21 +23,27 @@ trap showerr EXIT
source .env
trap - EXIT
+if docker compose &> /dev/null ; then
+ DOCKER_COMPOSE="docker compose"
+else
+ DOCKER_COMPOSE="docker-compose"
+fi
+
function clean {
- docker-compose stop
- docker-compose rm -f
+ $DOCKER_COMPOSE stop
+ $DOCKER_COMPOSE rm -f
}
function runweb {
- docker-compose run --rm web "$@"
+ $DOCKER_COMPOSE run --rm web "$@"
}
function execdb {
- docker-compose exec db $@
+ $DOCKER_COMPOSE exec db $@
}
function execweb {
- docker-compose exec web "$@"
+ $DOCKER_COMPOSE exec web "$@"
}
function initdb {
@@ -75,20 +81,23 @@ set -x
case "$CMD" in
up)
- docker-compose up --build "$@"
+ $DOCKER_COMPOSE up --build "$@"
+ ;;
+ down)
+ $DOCKER_COMPOSE down
;;
service_ports_web)
prod_error
- docker-compose run --rm --service-ports web
+ $DOCKER_COMPOSE run --rm --service-ports web
;;
initdb)
initdb "@"
;;
resetdb)
prod_error
- docker-compose rm -svf
+ $DOCKER_COMPOSE rm -svf
docker volume rm -f bookwyrm_media_volume bookwyrm_pgdata bookwyrm_redis_activity_data bookwyrm_redis_broker_data bookwyrm_static_volume
- docker-compose build
+ $DOCKER_COMPOSE build
migrate
migrate django_celery_beat
initdb
@@ -113,7 +122,7 @@ case "$CMD" in
execdb psql -U ${POSTGRES_USER} ${POSTGRES_DB}
;;
restart_celery)
- docker-compose restart celery_worker
+ $DOCKER_COMPOSE restart celery_worker
;;
pytest)
prod_error
@@ -141,6 +150,7 @@ case "$CMD" in
git fetch origin l10n_main:l10n_main
git checkout l10n_main locale/ca_ES
git checkout l10n_main locale/de_DE
+ git checkout l10n_main locale/eo_UY
git checkout l10n_main locale/es_ES
git checkout l10n_main locale/eu_ES
git checkout l10n_main locale/fi_FI
@@ -160,7 +170,7 @@ case "$CMD" in
runweb django-admin compilemessages --ignore venv
;;
build)
- docker-compose build
+ $DOCKER_COMPOSE build
;;
clean)
prod_error
@@ -168,7 +178,7 @@ case "$CMD" in
;;
black)
prod_error
- docker-compose run --rm dev-tools black celerywyrm bookwyrm
+ $DOCKER_COMPOSE run --rm dev-tools black celerywyrm bookwyrm
;;
pylint)
prod_error
@@ -177,25 +187,25 @@ case "$CMD" in
;;
prettier)
prod_error
- docker-compose run --rm dev-tools npx prettier --write bookwyrm/static/js/*.js
+ $DOCKER_COMPOSE run --rm dev-tools npx prettier --write bookwyrm/static/js/*.js
;;
eslint)
prod_error
- docker-compose run --rm dev-tools npx eslint bookwyrm/static --ext .js
+ $DOCKER_COMPOSE run --rm dev-tools npx eslint bookwyrm/static --ext .js
;;
stylelint)
prod_error
- docker-compose run --rm dev-tools npx stylelint \
+ $DOCKER_COMPOSE run --rm dev-tools npx stylelint \
bookwyrm/static/css/bookwyrm.scss bookwyrm/static/css/bookwyrm/**/*.scss --fix \
--config dev-tools/.stylelintrc.js
;;
formatters)
prod_error
runweb pylint bookwyrm/
- docker-compose run --rm dev-tools black celerywyrm bookwyrm
- docker-compose run --rm dev-tools npx prettier --write bookwyrm/static/js/*.js
- docker-compose run --rm dev-tools npx eslint bookwyrm/static --ext .js
- docker-compose run --rm dev-tools npx stylelint \
+ $DOCKER_COMPOSE run --rm dev-tools black celerywyrm bookwyrm
+ $DOCKER_COMPOSE run --rm dev-tools npx prettier --write bookwyrm/static/js/*.js
+ $DOCKER_COMPOSE run --rm dev-tools npx eslint bookwyrm/static --ext .js
+ $DOCKER_COMPOSE run --rm dev-tools npx stylelint \
bookwyrm/static/css/bookwyrm.scss bookwyrm/static/css/bookwyrm/**/*.scss --fix \
--config dev-tools/.stylelintrc.js
;;
@@ -205,14 +215,14 @@ case "$CMD" in
;;
update)
git pull
- docker-compose build
+ $DOCKER_COMPOSE build
# ./update.sh
runweb python manage.py migrate
runweb python manage.py compile_themes
runweb python manage.py collectstatic --no-input
- docker-compose up -d
- docker-compose restart web
- docker-compose restart celery_worker
+ $DOCKER_COMPOSE up -d
+ $DOCKER_COMPOSE restart web
+ $DOCKER_COMPOSE restart celery_worker
;;
populate_streams)
runweb python manage.py populate_streams "$@"
@@ -283,6 +293,7 @@ case "$CMD" in
echo "Unrecognised command. Try:"
echo " setup"
echo " up [container]"
+ echo " down"
echo " service_ports_web"
echo " initdb"
echo " resetdb"
diff --git a/celerywyrm/apps.py b/celerywyrm/apps.py
index 6aae849cd6..bf443afdb4 100644
--- a/celerywyrm/apps.py
+++ b/celerywyrm/apps.py
@@ -7,7 +7,8 @@ class CelerywyrmConfig(AppConfig):
verbose_name = "BookWyrm Celery"
def ready(self):
- if settings.OTEL_EXPORTER_OTLP_ENDPOINT:
+ if settings.OTEL_EXPORTER_OTLP_ENDPOINT or settings.OTEL_EXPORTER_CONSOLE:
from bookwyrm.telemetry import open_telemetry
open_telemetry.instrumentCelery()
+ open_telemetry.instrumentPostgres()
diff --git a/celerywyrm/settings.py b/celerywyrm/settings.py
index 052f488432..aa08a2417c 100644
--- a/celerywyrm/settings.py
+++ b/celerywyrm/settings.py
@@ -3,11 +3,13 @@
# pylint: disable=unused-wildcard-import
from bookwyrm.settings import *
+QUERY_TIMEOUT = env.int("CELERY_QUERY_TIMEOUT", env.int("QUERY_TIMEOUT", 30))
+
# pylint: disable=line-too-long
REDIS_BROKER_PASSWORD = requests.utils.quote(env("REDIS_BROKER_PASSWORD", ""))
REDIS_BROKER_HOST = env("REDIS_BROKER_HOST", "redis_broker")
-REDIS_BROKER_PORT = env("REDIS_BROKER_PORT", 6379)
-REDIS_BROKER_DB_INDEX = env("REDIS_BROKER_DB_INDEX", 0)
+REDIS_BROKER_PORT = env.int("REDIS_BROKER_PORT", 6379)
+REDIS_BROKER_DB_INDEX = env.int("REDIS_BROKER_DB_INDEX", 0)
REDIS_BROKER_URL = env(
"REDIS_BROKER_URL",
f"redis://:{REDIS_BROKER_PASSWORD}@{REDIS_BROKER_HOST}:{REDIS_BROKER_PORT}/{REDIS_BROKER_DB_INDEX}",
@@ -29,7 +31,7 @@
CELERY_WORKER_CONCURRENCY = env("CELERY_WORKER_CONCURRENCY", None)
CELERY_TASK_SOFT_TIME_LIMIT = env("CELERY_TASK_SOFT_TIME_LIMIT", None)
-FLOWER_PORT = env("FLOWER_PORT")
+FLOWER_PORT = env.int("FLOWER_PORT", 8888)
INSTALLED_APPS = INSTALLED_APPS + [
"celerywyrm",
diff --git a/locale/ca_ES/LC_MESSAGES/django.mo b/locale/ca_ES/LC_MESSAGES/django.mo
index c418553232..8c5b434879 100644
Binary files a/locale/ca_ES/LC_MESSAGES/django.mo and b/locale/ca_ES/LC_MESSAGES/django.mo differ
diff --git a/locale/ca_ES/LC_MESSAGES/django.po b/locale/ca_ES/LC_MESSAGES/django.po
index 75d60b7fb4..8894056159 100644
--- a/locale/ca_ES/LC_MESSAGES/django.po
+++ b/locale/ca_ES/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-01-30 08:21+0000\n"
-"PO-Revision-Date: 2023-01-30 19:36\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-04-26 00:45\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Catalan\n"
"Language: ca\n"
@@ -46,7 +46,7 @@ msgstr "Il·limitat"
msgid "Incorrect password"
msgstr "La contrasenya no és correcta"
-#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
msgid "Password does not match"
msgstr "La contrasenya no coincideix"
@@ -70,19 +70,19 @@ msgstr "La data d'aturada de la lectura no pot ser en el futur."
msgid "Reading finished date cannot be in the future."
msgstr "La data de finalització de la lectura no pot ser en el futur."
-#: bookwyrm/forms/landing.py:37
+#: bookwyrm/forms/landing.py:38
msgid "Username or password are incorrect"
msgstr "Nom d'usuari o contrasenya incorrectes"
-#: bookwyrm/forms/landing.py:56
+#: bookwyrm/forms/landing.py:57
msgid "User with this username already exists"
msgstr "Ja existeix un usuari amb aquest nom"
-#: bookwyrm/forms/landing.py:65
+#: bookwyrm/forms/landing.py:66
msgid "A user with this email already exists."
msgstr "Ja existeix un usuari amb aquesta adreça electrònica."
-#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
msgid "Incorrect code"
msgstr "Codi incorrecte"
@@ -205,26 +205,26 @@ msgstr "Federat"
msgid "Blocked"
msgstr "Blocat"
-#: bookwyrm/models/fields.py:28
+#: bookwyrm/models/fields.py:29
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s no és una remote_id vàlida"
-#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s no és un nom d'usuari vàlid"
-#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "nom d'usuari"
-#: bookwyrm/models/fields.py:187
+#: bookwyrm/models/fields.py:197
msgid "A user with that username already exists."
msgstr "Ja existeix un usuari amb aquest nom."
-#: bookwyrm/models/fields.py:206
+#: bookwyrm/models/fields.py:216
#: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11
@@ -232,7 +232,7 @@ msgstr "Ja existeix un usuari amb aquest nom."
msgid "Public"
msgstr "Públic"
-#: bookwyrm/models/fields.py:207
+#: bookwyrm/models/fields.py:217
#: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14
@@ -240,14 +240,14 @@ msgstr "Públic"
msgid "Unlisted"
msgstr "No llistat"
-#: bookwyrm/models/fields.py:208
+#: bookwyrm/models/fields.py:218
#: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers"
msgstr "Seguidors"
-#: bookwyrm/models/fields.py:209
+#: bookwyrm/models/fields.py:219
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
@@ -275,11 +275,11 @@ msgstr "Aturat"
msgid "Import stopped"
msgstr "S'ha aturat la importació"
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr "Error en carregar el llibre"
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr "No s'ha trobat el llibre"
@@ -300,7 +300,7 @@ msgstr "Disponible per a préstec"
msgid "Approved"
msgstr "Aprovat"
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr "Ressenya"
@@ -316,19 +316,19 @@ msgstr "Citacions"
msgid "Everything else"
msgstr "Tota la resta"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr "Línia de temps Inici"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr "Inici"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr "Cronologia dels llibres"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -336,75 +336,79 @@ msgstr "Cronologia dels llibres"
msgid "Books"
msgstr "Llibres"
-#: bookwyrm/settings.py:290
+#: bookwyrm/settings.py:294
msgid "English"
msgstr "English (Anglès)"
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr "Català"
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr "Deutsch (Alemany)"
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr ""
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr "Español (espanyol)"
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
msgstr "Euskera (Basc)"
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr "Galego (gallec)"
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr "Italiano (italià)"
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr "Suomi (finès)"
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr "Français (francès)"
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr "Lietuvių (Lituà)"
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr "Norsk (noruec)"
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr "Polski (polonès)"
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr "Português do Brasil (portuguès del Brasil)"
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Portuguès europeu)"
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr "Română (romanès)"
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr "Svenska (suec)"
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr "简体中文 (xinès simplificat)"
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr "繁體中文 (xinès tradicional)"
@@ -434,7 +438,7 @@ msgid "About"
msgstr "Sobre nosaltres "
#: bookwyrm/templates/about/about.html:21
-#: bookwyrm/templates/get_started/layout.html:20
+#: bookwyrm/templates/get_started/layout.html:22
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "Benvingut a %(site_name)s!"
@@ -620,7 +624,7 @@ msgstr "La seva lectura més breu d'aquest any…"
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -708,24 +712,24 @@ msgid "View ISNI record"
msgstr "Veure el registre ISNI"
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:164
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
msgstr "Veure a ISFDB"
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:131
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Carregueu dades"
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:135
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr "Veure a OpenLibrary"
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:149
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr "Veure a Inventaire"
@@ -834,15 +838,15 @@ msgid "ISNI:"
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:209
-#: bookwyrm/templates/book/edit/edit_book.html:142
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
#: bookwyrm/templates/groups/form.html:32
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -858,10 +862,10 @@ msgstr "Desa"
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:210
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
-#: bookwyrm/templates/book/edit/edit_book.html:144
-#: bookwyrm/templates/book/edit/edit_book.html:147
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:25
#: bookwyrm/templates/book/sync_modal.html:23
@@ -885,7 +889,7 @@ msgid "Loading data will connect to %(source_name)s and check f
msgstr "La càrrega de les dades es connectarà a %(source_name)s i comprovarà si hi ha metadades sobre aquest autor que no estan aquí. Les metadades existents no seran sobreescrites."
#: bookwyrm/templates/author/sync_modal.html:24
-#: bookwyrm/templates/book/edit/edit_book.html:129
+#: bookwyrm/templates/book/edit/edit_book.html:137
#: bookwyrm/templates/book/sync_modal.html:24
#: bookwyrm/templates/groups/members.html:29
#: bookwyrm/templates/landing/password_reset.html:52
@@ -895,98 +899,98 @@ msgstr "La càrrega de les dades es connectarà a %(source_name)sdifferent edition of this book is on your %(shelf_name)s shelf."
msgstr "Una edició diferent d'aquest llibre és al teu %(shelf_name)s prestatge."
-#: bookwyrm/templates/book/book.html:261
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr "Les vostres lectures"
-#: bookwyrm/templates/book/book.html:267
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr "Afegiu dates de lectura"
-#: bookwyrm/templates/book/book.html:275
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr "No tens cap activitat de lectura per aquest llibre."
-#: bookwyrm/templates/book/book.html:301
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr "Les vostres ressenyes"
-#: bookwyrm/templates/book/book.html:307
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr "El vostres comentaris"
-#: bookwyrm/templates/book/book.html:313
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr "Les teves cites"
-#: bookwyrm/templates/book/book.html:349
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr "Temes"
-#: bookwyrm/templates/book/book.html:361
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr "Llocs"
-#: bookwyrm/templates/book/book.html:372
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
-#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@@ -995,11 +999,11 @@ msgstr "Llocs"
msgid "Lists"
msgstr "Llistes"
-#: bookwyrm/templates/book/book.html:384
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr "Afegiu a la llista"
-#: bookwyrm/templates/book/book.html:394
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1059,8 +1063,8 @@ msgstr "Previsualització de la portada"
#: bookwyrm/templates/components/modal.html:13
#: bookwyrm/templates/components/modal.html:30
#: bookwyrm/templates/feed/suggested_books.html:67
-#: bookwyrm/templates/get_started/layout.html:25
-#: bookwyrm/templates/get_started/layout.html:58
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
msgid "Close"
msgstr "Tanca"
@@ -1075,47 +1079,51 @@ msgstr "Editeu \"%(book_title)s\""
msgid "Add Book"
msgstr "Afegiu llibres"
-#: bookwyrm/templates/book/edit/edit_book.html:62
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr ""
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
msgid "Confirm Book Info"
msgstr "Confirmeu la informació del llibre"
-#: bookwyrm/templates/book/edit/edit_book.html:70
+#: bookwyrm/templates/book/edit/edit_book.html:78
#, python-format
msgid "Is \"%(name)s\" one of these authors?"
msgstr "És \"%(name)s\" un/a d'aquest autors/es?"
-#: bookwyrm/templates/book/edit/edit_book.html:81
+#: bookwyrm/templates/book/edit/edit_book.html:89
#, python-format
msgid "Author of %(book_title)s "
msgstr "Autor de %(book_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:85
+#: bookwyrm/templates/book/edit/edit_book.html:93
#, python-format
msgid "Author of %(alt_title)s "
msgstr "Autor de %(alt_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:87
+#: bookwyrm/templates/book/edit/edit_book.html:95
msgid "Find more information at isni.org"
msgstr "Més informació a isni.org"
-#: bookwyrm/templates/book/edit/edit_book.html:97
+#: bookwyrm/templates/book/edit/edit_book.html:105
msgid "This is a new author"
msgstr "Es tracta d'un nou autor"
-#: bookwyrm/templates/book/edit/edit_book.html:107
+#: bookwyrm/templates/book/edit/edit_book.html:115
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "Creando un autor nuevo: %(name)s"
-#: bookwyrm/templates/book/edit/edit_book.html:114
+#: bookwyrm/templates/book/edit/edit_book.html:122
msgid "Is this an edition of an existing work?"
msgstr "Es tracta d'una edició d'una obra ja existent?"
-#: bookwyrm/templates/book/edit/edit_book.html:122
+#: bookwyrm/templates/book/edit/edit_book.html:130
msgid "This is a new work"
msgstr "Es tracta d'una publicació nova"
-#: bookwyrm/templates/book/edit/edit_book.html:131
+#: bookwyrm/templates/book/edit/edit_book.html:139
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
@@ -1470,6 +1478,19 @@ msgstr "Publicat per %(publisher)s."
msgid "rated it"
msgstr "el va valorar amb"
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr ""
+
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
@@ -1664,7 +1685,7 @@ msgstr "%(username)s ha citat %(related_user)s i %(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
msgstr "%(related_user)s i %(other_user_display_count)s més han marxat del grup \"%(group_name)s \""
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] ""
+msgstr[1] ""
+
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
msgid "%(related_user)s mentioned you in a review of %(book_title)s "
@@ -4005,6 +4052,11 @@ msgstr "Oculta els seguidors i els que segueixo al perfil"
msgid "Default post privacy:"
msgstr "Privacitat de publicació per defecte:"
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr ""
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4430,63 +4482,80 @@ msgid "Celery Status"
msgstr "Estat del Celery"
#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:22
msgid "Queues"
msgstr "Cua"
-#: bookwyrm/templates/settings/celery.html:18
+#: bookwyrm/templates/settings/celery.html:26
msgid "Low priority"
msgstr "Prioritat baixa"
-#: bookwyrm/templates/settings/celery.html:24
+#: bookwyrm/templates/settings/celery.html:32
msgid "Medium priority"
msgstr "Prioritat mitja"
-#: bookwyrm/templates/settings/celery.html:30
+#: bookwyrm/templates/settings/celery.html:38
msgid "High priority"
msgstr "Prioritat alta"
-#: bookwyrm/templates/settings/celery.html:46
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:60
msgid "Could not connect to Redis broker"
msgstr "No s'ha pogut connectar al Redis broker"
-#: bookwyrm/templates/settings/celery.html:54
+#: bookwyrm/templates/settings/celery.html:68
msgid "Active Tasks"
msgstr "Tasques actives"
-#: bookwyrm/templates/settings/celery.html:59
+#: bookwyrm/templates/settings/celery.html:73
#: bookwyrm/templates/settings/imports/imports.html:113
msgid "ID"
msgstr "ID"
-#: bookwyrm/templates/settings/celery.html:60
+#: bookwyrm/templates/settings/celery.html:74
msgid "Task name"
msgstr "Nom de la tasca"
-#: bookwyrm/templates/settings/celery.html:61
+#: bookwyrm/templates/settings/celery.html:75
msgid "Run time"
msgstr "Temps d'execució"
-#: bookwyrm/templates/settings/celery.html:62
+#: bookwyrm/templates/settings/celery.html:76
msgid "Priority"
msgstr "Prioritat"
-#: bookwyrm/templates/settings/celery.html:67
+#: bookwyrm/templates/settings/celery.html:81
msgid "No active tasks"
msgstr "Cap tasca activa"
-#: bookwyrm/templates/settings/celery.html:85
+#: bookwyrm/templates/settings/celery.html:99
msgid "Workers"
msgstr "Workers"
-#: bookwyrm/templates/settings/celery.html:90
+#: bookwyrm/templates/settings/celery.html:104
msgid "Uptime:"
msgstr "Temps de funcionament:"
-#: bookwyrm/templates/settings/celery.html:100
+#: bookwyrm/templates/settings/celery.html:114
msgid "Could not connect to Celery"
msgstr "No s'ha pogut connectar al Celery"
-#: bookwyrm/templates/settings/celery.html:107
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr "Errors"
@@ -4851,8 +4920,8 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr "Aquesta acció només està indicada pe a quan les coses han anat molt malament amb les importacions i és necessari aturar la funcionalitat mentre es resol la incidència."
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
-msgstr "Mentre les importacions es troben deshabilitades, els usuaris no podran iniciar noves importacions, però les que es troben en curs no es veuran afectades."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
+msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:36
msgid "Disable imports"
@@ -5685,11 +5754,11 @@ msgstr "Veure instruccions d'instal·lació"
msgid "Instance Setup"
msgstr "Configuració de la instància"
-#: bookwyrm/templates/setup/layout.html:19
+#: bookwyrm/templates/setup/layout.html:21
msgid "Installing BookWyrm"
msgstr "Instal·lant BookWyrm"
-#: bookwyrm/templates/setup/layout.html:22
+#: bookwyrm/templates/setup/layout.html:24
msgid "Need help?"
msgstr "Necessiteu ajuda?"
@@ -5707,7 +5776,7 @@ msgid "User profile"
msgstr "Perfil d'usuari"
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr "Tots els llibres"
@@ -5781,7 +5850,7 @@ msgid_plural "and %(remainder_count_display)s others"
msgstr[0] "i %(remainder_count_display)s altre"
msgstr[1] "i %(remainder_count_display)s altres"
-#: bookwyrm/templates/snippets/book_cover.html:61
+#: bookwyrm/templates/snippets/book_cover.html:63
msgid "No cover"
msgstr "Sense coberta"
@@ -5881,6 +5950,10 @@ msgstr "A la pàgina:"
msgid "At percent:"
msgstr "Al per cent:"
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr ""
+
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
@@ -6059,10 +6132,18 @@ msgstr "pàgina %(page)s de %(total_pages)s"
msgid "page %(page)s"
msgstr "pàgina %(page)s"
-#: bookwyrm/templates/snippets/pagination.html:12
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr ""
+
+#: bookwyrm/templates/snippets/pagination.html:15
msgid "Previous"
msgstr "Anterior"
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr ""
+
#: bookwyrm/templates/snippets/privacy-icons.html:12
msgid "Followers-only"
msgstr "Només seguidors"
@@ -6191,19 +6272,29 @@ msgstr "Mostra l'estat"
#: bookwyrm/templates/snippets/status/content_status.html:102
#, python-format
-msgid "(Page %(page)s)"
-msgstr "(Pàgina %(page)s)"
+msgid "(Page %(page)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:104
#, python-format
-msgid "(%(percent)s%%)"
-msgstr "(%(percent)s%%)"
+msgid "(%(percent)s%%"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid " - %(endpercent)s%%"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:127
msgid "Open image in new window"
msgstr "Obre imatge en una finestra nova"
-#: bookwyrm/templates/snippets/status/content_status.html:146
+#: bookwyrm/templates/snippets/status/content_status.html:148
msgid "Hide status"
msgstr "Amaga l'estat"
diff --git a/locale/de_DE/LC_MESSAGES/django.mo b/locale/de_DE/LC_MESSAGES/django.mo
index b316e8b667..4ce83f72b3 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 9c2bd02e6e..eeb6edb84e 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: 2023-01-30 08:21+0000\n"
-"PO-Revision-Date: 2023-02-25 19:46\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-04-26 00:45\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: German\n"
"Language: de\n"
@@ -46,7 +46,7 @@ msgstr "Unbegrenzt"
msgid "Incorrect password"
msgstr "Falsches Passwort"
-#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
msgid "Password does not match"
msgstr "Passwort stimmt nicht überein"
@@ -70,19 +70,19 @@ msgstr "Das Datum für \"Lesen gestoppt\" kann nicht in der Zukunft sein."
msgid "Reading finished date cannot be in the future."
msgstr "Das Datum \"Lesen beendet\" kann nicht in der Zukunft liegen."
-#: bookwyrm/forms/landing.py:37
+#: bookwyrm/forms/landing.py:38
msgid "Username or password are incorrect"
msgstr "Benutzer*inname oder Passwort falsch"
-#: bookwyrm/forms/landing.py:56
+#: bookwyrm/forms/landing.py:57
msgid "User with this username already exists"
msgstr "Ein Benutzer mit diesem Benutzernamen existiert bereits"
-#: bookwyrm/forms/landing.py:65
+#: bookwyrm/forms/landing.py:66
msgid "A user with this email already exists."
msgstr "Es existiert bereits ein Benutzer*inkonto mit dieser E-Mail-Adresse."
-#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
msgid "Incorrect code"
msgstr "Falscher Code"
@@ -205,26 +205,26 @@ msgstr "Föderiert"
msgid "Blocked"
msgstr "Blockiert"
-#: bookwyrm/models/fields.py:28
+#: bookwyrm/models/fields.py:29
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s ist keine gültige remote_id"
-#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s ist kein gültiger Benutzer*inname"
-#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "Benutzer*inname"
-#: bookwyrm/models/fields.py:187
+#: bookwyrm/models/fields.py:197
msgid "A user with that username already exists."
msgstr "Dieser Benutzer*inname ist bereits vergeben."
-#: bookwyrm/models/fields.py:206
+#: bookwyrm/models/fields.py:216
#: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11
@@ -232,7 +232,7 @@ msgstr "Dieser Benutzer*inname ist bereits vergeben."
msgid "Public"
msgstr "Öffentlich"
-#: bookwyrm/models/fields.py:207
+#: bookwyrm/models/fields.py:217
#: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14
@@ -240,14 +240,14 @@ msgstr "Öffentlich"
msgid "Unlisted"
msgstr "Ungelistet"
-#: bookwyrm/models/fields.py:208
+#: bookwyrm/models/fields.py:218
#: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers"
msgstr "Follower*innen"
-#: bookwyrm/models/fields.py:209
+#: bookwyrm/models/fields.py:219
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
@@ -275,11 +275,11 @@ msgstr "Gestoppt"
msgid "Import stopped"
msgstr "Import gestoppt"
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr "Fehler beim Laden des Buches"
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr "Keine Übereinstimmung für das Buch gefunden"
@@ -300,7 +300,7 @@ msgstr "Zum Ausleihen erhältlich"
msgid "Approved"
msgstr "Bestätigt"
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr "Rezensionen"
@@ -316,19 +316,19 @@ msgstr "Zitate"
msgid "Everything else"
msgstr "Alles andere"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr "Start-Zeitleiste"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr "Startseite"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr "Bücher-Timeline"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -336,75 +336,79 @@ msgstr "Bücher-Timeline"
msgid "Books"
msgstr "Bücher"
-#: bookwyrm/settings.py:290
+#: bookwyrm/settings.py:294
msgid "English"
msgstr "English (Englisch)"
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr "Català (Katalanisch)"
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr "Deutsch"
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr "Esperanto (Esperanto)"
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr "Español (Spanisch)"
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
msgstr "Euskara (Baskisch)"
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr "Galego (Galizisch)"
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr "Italiano (Italienisch)"
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr "Suomi (Finnisch)"
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr "Français (Französisch)"
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr "Lietuvių (Litauisch)"
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr "Norsk (Norwegisch)"
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr "Polski (Polnisch)"
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr "Português do Brasil (brasilianisches Portugiesisch)"
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Portugiesisch)"
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr "Română (Rumänisch)"
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr "Svenska (Schwedisch)"
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr "简体中文 (vereinfachtes Chinesisch)"
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr "繁體中文 (Chinesisch, traditionell)"
@@ -434,7 +438,7 @@ msgid "About"
msgstr "Über"
#: bookwyrm/templates/about/about.html:21
-#: bookwyrm/templates/get_started/layout.html:20
+#: bookwyrm/templates/get_started/layout.html:22
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "Willkommen auf %(site_name)s!"
@@ -620,7 +624,7 @@ msgstr "Das am schnellsten gelesene Buch dieses Jahr…"
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -708,24 +712,24 @@ msgid "View ISNI record"
msgstr "ISNI-Datensatz anzeigen"
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:164
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
msgstr "Auf ISFDB ansehen"
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:131
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Lade Daten"
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:135
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr "Auf OpenLibrary ansehen"
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:149
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr "Auf Inventaire anzeigen"
@@ -834,15 +838,15 @@ msgid "ISNI:"
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:209
-#: bookwyrm/templates/book/edit/edit_book.html:142
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
#: bookwyrm/templates/groups/form.html:32
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -858,10 +862,10 @@ msgstr "Speichern"
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:210
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
-#: bookwyrm/templates/book/edit/edit_book.html:144
-#: bookwyrm/templates/book/edit/edit_book.html:147
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:25
#: bookwyrm/templates/book/sync_modal.html:23
@@ -885,7 +889,7 @@ msgid "Loading data will connect to %(source_name)s and check f
msgstr "Das Laden von Daten wird eine Verbindung zu %(source_name)s aufbauen und überprüfen, ob Autor*in-Informationen vorliegen, die hier noch nicht bekannt sind. Bestehende Informationen werden nicht überschrieben."
#: bookwyrm/templates/author/sync_modal.html:24
-#: bookwyrm/templates/book/edit/edit_book.html:129
+#: bookwyrm/templates/book/edit/edit_book.html:137
#: bookwyrm/templates/book/sync_modal.html:24
#: bookwyrm/templates/groups/members.html:29
#: bookwyrm/templates/landing/password_reset.html:52
@@ -895,98 +899,98 @@ msgstr "Das Laden von Daten wird eine Verbindung zu %(source_name)sdifferent edition of this book is on your %(shelf_name)s shelf."
msgstr "Eine andere Ausgabe dieses Buches befindet sich in deinem %(shelf_name)s Regal."
-#: bookwyrm/templates/book/book.html:261
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr "Deine Leseaktivität"
-#: bookwyrm/templates/book/book.html:267
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr "Lesedaten hinzufügen"
-#: bookwyrm/templates/book/book.html:275
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr "Du hast keine Leseaktivität für dieses Buch."
-#: bookwyrm/templates/book/book.html:301
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr "Deine Rezensionen"
-#: bookwyrm/templates/book/book.html:307
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr "Deine Kommentare"
-#: bookwyrm/templates/book/book.html:313
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr "Deine Zitate"
-#: bookwyrm/templates/book/book.html:349
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr "Themen"
-#: bookwyrm/templates/book/book.html:361
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr "Orte"
-#: bookwyrm/templates/book/book.html:372
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
-#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@@ -995,11 +999,11 @@ msgstr "Orte"
msgid "Lists"
msgstr "Listen"
-#: bookwyrm/templates/book/book.html:384
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr "Zur Liste hinzufügen"
-#: bookwyrm/templates/book/book.html:394
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1059,8 +1063,8 @@ msgstr "Vorschau des Covers"
#: bookwyrm/templates/components/modal.html:13
#: bookwyrm/templates/components/modal.html:30
#: bookwyrm/templates/feed/suggested_books.html:67
-#: bookwyrm/templates/get_started/layout.html:25
-#: bookwyrm/templates/get_started/layout.html:58
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
msgid "Close"
msgstr "Schließen"
@@ -1075,47 +1079,51 @@ msgstr "„%(book_title)s“ bearbeiten"
msgid "Add Book"
msgstr "Buch hinzufügen"
-#: bookwyrm/templates/book/edit/edit_book.html:62
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr "Fehler beim Speichern des Buchs, siehe Fehler unten für weitere Informationen."
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
msgid "Confirm Book Info"
msgstr "Buchinfo bestätigen"
-#: bookwyrm/templates/book/edit/edit_book.html:70
+#: bookwyrm/templates/book/edit/edit_book.html:78
#, python-format
msgid "Is \"%(name)s\" one of these authors?"
msgstr "Ist „%(name)s“ einer dieser Autor*innen?"
-#: bookwyrm/templates/book/edit/edit_book.html:81
+#: bookwyrm/templates/book/edit/edit_book.html:89
#, python-format
msgid "Author of %(book_title)s "
msgstr "Autor*in von %(book_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:85
+#: bookwyrm/templates/book/edit/edit_book.html:93
#, python-format
msgid "Author of %(alt_title)s "
msgstr "Autor*in von %(alt_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:87
+#: bookwyrm/templates/book/edit/edit_book.html:95
msgid "Find more information at isni.org"
msgstr "Weitere Informationen auf isni.org finden"
-#: bookwyrm/templates/book/edit/edit_book.html:97
+#: bookwyrm/templates/book/edit/edit_book.html:105
msgid "This is a new author"
msgstr "Neue*r Autor*in"
-#: bookwyrm/templates/book/edit/edit_book.html:107
+#: bookwyrm/templates/book/edit/edit_book.html:115
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "Als neue*r Autor*in erstellen: %(name)s"
-#: bookwyrm/templates/book/edit/edit_book.html:114
+#: bookwyrm/templates/book/edit/edit_book.html:122
msgid "Is this an edition of an existing work?"
msgstr "Ist das eine Ausgabe eines vorhandenen Werkes?"
-#: bookwyrm/templates/book/edit/edit_book.html:122
+#: bookwyrm/templates/book/edit/edit_book.html:130
msgid "This is a new work"
msgstr "Dies ist ein neues Werk."
-#: bookwyrm/templates/book/edit/edit_book.html:131
+#: bookwyrm/templates/book/edit/edit_book.html:139
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
@@ -1470,6 +1478,19 @@ msgstr "Veröffentlicht von %(publisher)s."
msgid "rated it"
msgstr "bewertet es mit"
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr "Serie von"
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr "Buch %(series_number)s"
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr "Nicht einsortiertes Buch"
+
#: 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."
@@ -1664,7 +1685,7 @@ msgstr "%(username)s hat %(related_user)s und %(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
msgstr "%(related_user)s und %(other_user_display_count)s andere haben deine Gruppe \"%(group_name)s \" verlassen"
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] "Eine neue Link-Domain muss überprüft werden"
+msgstr[1] "%(display_count)s neue Link-Domains müssen moderiert werden"
+
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
msgid "%(related_user)s mentioned you in a review of %(book_title)s "
@@ -4005,6 +4052,11 @@ msgstr "Folgende und Gefolgte im Profil ausblenden"
msgid "Default post privacy:"
msgstr "Voreinstellung für Beitragssichtbarkeit:"
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr ""
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4430,63 +4482,80 @@ msgid "Celery Status"
msgstr "Celery-Status"
#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr "Um zu überprüfen, ob Celery läuft, kannst ein Monitoring einrichten, das folgendes abfragt:"
+
+#: bookwyrm/templates/settings/celery.html:22
msgid "Queues"
msgstr "Warteschlangen"
-#: bookwyrm/templates/settings/celery.html:18
+#: bookwyrm/templates/settings/celery.html:26
msgid "Low priority"
msgstr "Niedrige Priorität"
-#: bookwyrm/templates/settings/celery.html:24
+#: bookwyrm/templates/settings/celery.html:32
msgid "Medium priority"
msgstr "Mittlere Priorität"
-#: bookwyrm/templates/settings/celery.html:30
+#: bookwyrm/templates/settings/celery.html:38
msgid "High priority"
msgstr "Hohe Priorität"
-#: bookwyrm/templates/settings/celery.html:46
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:60
msgid "Could not connect to Redis broker"
msgstr "Verbindung zum Redis Broker fehlgeschlagen"
-#: bookwyrm/templates/settings/celery.html:54
+#: bookwyrm/templates/settings/celery.html:68
msgid "Active Tasks"
msgstr "Aktive Aufgaben"
-#: bookwyrm/templates/settings/celery.html:59
+#: bookwyrm/templates/settings/celery.html:73
#: bookwyrm/templates/settings/imports/imports.html:113
msgid "ID"
msgstr "ID"
-#: bookwyrm/templates/settings/celery.html:60
+#: bookwyrm/templates/settings/celery.html:74
msgid "Task name"
msgstr "Aufgabenname"
-#: bookwyrm/templates/settings/celery.html:61
+#: bookwyrm/templates/settings/celery.html:75
msgid "Run time"
msgstr "Dauer"
-#: bookwyrm/templates/settings/celery.html:62
+#: bookwyrm/templates/settings/celery.html:76
msgid "Priority"
msgstr "Priorität"
-#: bookwyrm/templates/settings/celery.html:67
+#: bookwyrm/templates/settings/celery.html:81
msgid "No active tasks"
msgstr "Keine aktiven Aufgaben"
-#: bookwyrm/templates/settings/celery.html:85
+#: bookwyrm/templates/settings/celery.html:99
msgid "Workers"
msgstr "Workers"
-#: bookwyrm/templates/settings/celery.html:90
+#: bookwyrm/templates/settings/celery.html:104
msgid "Uptime:"
msgstr "Betriebszeit:"
-#: bookwyrm/templates/settings/celery.html:100
+#: bookwyrm/templates/settings/celery.html:114
msgid "Could not connect to Celery"
msgstr "Verbindung zum Celery fehlgeschlagen."
-#: bookwyrm/templates/settings/celery.html:107
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr "Fehler"
@@ -4851,8 +4920,8 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr "Dies ist nur für den Einsatz gedacht, wenn bei Importen etwas sehr schiefgegangen ist und du das Feature anhalten musst, während du Probleme angehst."
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
-msgstr "Während Importe deaktiviert sind, können Benutzer*innen keine neuen Importe starten, aber bestehende Importe werden durchgeführt."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
+msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:36
msgid "Disable imports"
@@ -5090,7 +5159,7 @@ msgstr "Meldungen"
#: bookwyrm/templates/settings/link_domains/link_domains.html:5
#: bookwyrm/templates/settings/link_domains/link_domains.html:7
msgid "Link Domains"
-msgstr "Domains verlinken"
+msgstr "Link-Domains"
#: bookwyrm/templates/settings/layout.html:78
msgid "System"
@@ -5685,11 +5754,11 @@ msgstr "Zur Installationsanleitung"
msgid "Instance Setup"
msgstr "Instanzeinstellungen"
-#: bookwyrm/templates/setup/layout.html:19
+#: bookwyrm/templates/setup/layout.html:21
msgid "Installing BookWyrm"
msgstr "Installiere BookWyrm"
-#: bookwyrm/templates/setup/layout.html:22
+#: bookwyrm/templates/setup/layout.html:24
msgid "Need help?"
msgstr "Brauchst du Hilfe?"
@@ -5707,7 +5776,7 @@ msgid "User profile"
msgstr "Profil"
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr "Alle Bücher"
@@ -5781,7 +5850,7 @@ msgid_plural "and %(remainder_count_display)s others"
msgstr[0] "und %(remainder_count_display)s Andere*r"
msgstr[1] "und %(remainder_count_display)s Andere"
-#: bookwyrm/templates/snippets/book_cover.html:61
+#: bookwyrm/templates/snippets/book_cover.html:63
msgid "No cover"
msgstr "Kein Titelbild"
@@ -5881,6 +5950,10 @@ msgstr "Auf Seite:"
msgid "At percent:"
msgstr "Bei Prozent:"
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr "bis"
+
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
@@ -6059,10 +6132,18 @@ msgstr "Seite %(page)s von %(total_pages)s"
msgid "page %(page)s"
msgstr "Seite %(page)s"
-#: bookwyrm/templates/snippets/pagination.html:12
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr "Neuere"
+
+#: bookwyrm/templates/snippets/pagination.html:15
msgid "Previous"
msgstr "Zurück"
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr "Ältere"
+
#: bookwyrm/templates/snippets/privacy-icons.html:12
msgid "Followers-only"
msgstr "Nur für Follower*innen"
@@ -6191,19 +6272,29 @@ msgstr "Status anzeigen"
#: bookwyrm/templates/snippets/status/content_status.html:102
#, python-format
-msgid "(Page %(page)s)"
-msgstr "(Seite %(page)s)"
+msgid "(Page %(page)s"
+msgstr "(Seite %(page)s"
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr "%(endpage)s"
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid "(%(percent)s%%"
+msgstr "(%(percent)s%%"
#: bookwyrm/templates/snippets/status/content_status.html:104
#, python-format
-msgid "(%(percent)s%%)"
-msgstr "(%(percent)s%%)"
+msgid " - %(endpercent)s%%"
+msgstr " - %(endpercent)s%%"
#: bookwyrm/templates/snippets/status/content_status.html:127
msgid "Open image in new window"
msgstr "Bild in neuem Fenster öffnen"
-#: bookwyrm/templates/snippets/status/content_status.html:146
+#: bookwyrm/templates/snippets/status/content_status.html:148
msgid "Hide status"
msgstr "Status ausblenden"
diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po
index ca29be7dfd..1deefea4ba 100644
--- a/locale/en_US/LC_MESSAGES/django.po
+++ b/locale/en_US/LC_MESSAGES/django.po
@@ -1,4 +1,4 @@
-# Stub English-language trnaslation file
+# Stub English-language translation file
# Copyright (C) 2021 Mouse Reeve
# This file is distributed under the same license as the BookWyrm package.
# Mouse Reeve , 2021
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-03-13 14:54+0000\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
"PO-Revision-Date: 2021-02-28 17:19-0800\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: English \n"
@@ -276,11 +276,11 @@ msgstr ""
msgid "Import stopped"
msgstr ""
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr ""
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr ""
@@ -301,7 +301,7 @@ msgstr ""
msgid "Approved"
msgstr ""
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:298
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr ""
@@ -317,19 +317,19 @@ msgstr ""
msgid "Everything else"
msgstr ""
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr ""
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr ""
-#: bookwyrm/settings.py:219
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr ""
-#: bookwyrm/settings.py:219
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -337,75 +337,79 @@ msgstr ""
msgid "Books"
msgstr ""
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:294
msgid "English"
msgstr ""
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr ""
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr ""
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr ""
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr ""
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
msgstr ""
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr ""
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr ""
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr ""
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr ""
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr ""
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr ""
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr ""
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr ""
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr ""
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr ""
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr ""
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr ""
-#: bookwyrm/settings.py:308
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr ""
@@ -621,7 +625,7 @@ msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -709,24 +713,24 @@ msgid "View ISNI record"
msgstr ""
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:166
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
msgstr ""
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:133
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr ""
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:137
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr ""
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:151
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr ""
@@ -835,7 +839,7 @@ msgid "ISNI:"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:211
+#: bookwyrm/templates/book/book.html:218
#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
@@ -843,7 +847,7 @@ msgstr ""
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -859,7 +863,7 @@ msgstr ""
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:212
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
#: bookwyrm/templates/book/edit/edit_book.html:152
#: bookwyrm/templates/book/edit/edit_book.html:155
@@ -896,93 +900,93 @@ msgstr ""
msgid "Confirm"
msgstr ""
-#: bookwyrm/templates/book/book.html:19
+#: bookwyrm/templates/book/book.html:20
msgid "Unable to connect to remote source."
msgstr ""
-#: bookwyrm/templates/book/book.html:64 bookwyrm/templates/book/book.html:65
+#: bookwyrm/templates/book/book.html:71 bookwyrm/templates/book/book.html:72
msgid "Edit Book"
msgstr ""
-#: bookwyrm/templates/book/book.html:90 bookwyrm/templates/book/book.html:93
+#: bookwyrm/templates/book/book.html:97 bookwyrm/templates/book/book.html:100
msgid "Click to add cover"
msgstr ""
-#: bookwyrm/templates/book/book.html:99
+#: bookwyrm/templates/book/book.html:106
msgid "Failed to load cover"
msgstr ""
-#: bookwyrm/templates/book/book.html:110
+#: bookwyrm/templates/book/book.html:117
msgid "Click to enlarge"
msgstr ""
-#: bookwyrm/templates/book/book.html:188
+#: bookwyrm/templates/book/book.html:195
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
msgstr[0] ""
msgstr[1] ""
-#: bookwyrm/templates/book/book.html:200
+#: bookwyrm/templates/book/book.html:207
msgid "Add Description"
msgstr ""
-#: bookwyrm/templates/book/book.html:207
+#: bookwyrm/templates/book/book.html:214
#: bookwyrm/templates/book/edit/edit_book_form.html:42
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr ""
-#: bookwyrm/templates/book/book.html:223
+#: bookwyrm/templates/book/book.html:230
#, python-format
msgid "%(count)s edition"
msgid_plural "%(count)s editions"
msgstr[0] ""
msgstr[1] ""
-#: bookwyrm/templates/book/book.html:237
+#: bookwyrm/templates/book/book.html:244
msgid "You have shelved this edition in:"
msgstr ""
-#: bookwyrm/templates/book/book.html:252
+#: bookwyrm/templates/book/book.html:259
#, python-format
msgid "A different edition of this book is on your %(shelf_name)s shelf."
msgstr ""
-#: bookwyrm/templates/book/book.html:263
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr ""
-#: bookwyrm/templates/book/book.html:269
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr ""
-#: bookwyrm/templates/book/book.html:277
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr ""
-#: bookwyrm/templates/book/book.html:303
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr ""
-#: bookwyrm/templates/book/book.html:309
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr ""
-#: bookwyrm/templates/book/book.html:315
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr ""
-#: bookwyrm/templates/book/book.html:351
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr ""
-#: bookwyrm/templates/book/book.html:363
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr ""
-#: bookwyrm/templates/book/book.html:374
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
@@ -996,11 +1000,11 @@ msgstr ""
msgid "Lists"
msgstr ""
-#: bookwyrm/templates/book/book.html:386
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr ""
-#: bookwyrm/templates/book/book.html:396
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1924,13 +1928,13 @@ msgstr ""
#: bookwyrm/templates/get_started/book_preview.html:10
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:37
-#: bookwyrm/templatetags/shelf_tags.py:48
+#: bookwyrm/templatetags/shelf_tags.py:14
msgid "To Read"
msgstr ""
#: bookwyrm/templates/get_started/book_preview.html:11
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:38
-#: bookwyrm/templatetags/shelf_tags.py:50
+#: bookwyrm/templatetags/shelf_tags.py:15
msgid "Currently Reading"
msgstr ""
@@ -1939,12 +1943,13 @@ msgstr ""
#: bookwyrm/templates/snippets/shelf_selector.html:46
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12
-#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:52
+#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:16
msgid "Read"
msgstr ""
#: bookwyrm/templates/get_started/book_preview.html:13
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:40
+#: bookwyrm/templatetags/shelf_tags.py:17
msgid "Stopped Reading"
msgstr ""
@@ -1976,6 +1981,7 @@ msgstr ""
#: bookwyrm/templates/layout.html:46 bookwyrm/templates/lists/list.html:217
#: bookwyrm/templates/search/layout.html:5
#: bookwyrm/templates/search/layout.html:10
+#: bookwyrm/templates/search/layout.html:32
msgid "Search"
msgstr ""
@@ -1983,6 +1989,10 @@ msgstr ""
msgid "Suggested Books"
msgstr ""
+#: bookwyrm/templates/get_started/books.html:33
+msgid "Search results"
+msgstr ""
+
#: bookwyrm/templates/get_started/books.html:46
#, python-format
msgid "Popular on %(site_name)s"
@@ -2061,6 +2071,10 @@ msgstr ""
msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users."
msgstr ""
+#: bookwyrm/templates/get_started/users.html:8
+msgid "You can follow users on other BookWyrm instances and federated services like Mastodon."
+msgstr ""
+
#: bookwyrm/templates/get_started/users.html:11
msgid "Search for a user"
msgstr ""
@@ -4039,6 +4053,11 @@ msgstr ""
msgid "Default post privacy:"
msgstr ""
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr ""
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4527,7 +4546,16 @@ msgstr ""
msgid "Could not connect to Celery"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:121
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr ""
@@ -4892,7 +4920,7 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:36
@@ -5748,7 +5776,7 @@ msgid "User profile"
msgstr ""
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr ""
diff --git a/locale/eo_UY/LC_MESSAGES/django.mo b/locale/eo_UY/LC_MESSAGES/django.mo
new file mode 100644
index 0000000000..5dec12e25a
Binary files /dev/null and b/locale/eo_UY/LC_MESSAGES/django.mo differ
diff --git a/locale/eo_UY/LC_MESSAGES/django.po b/locale/eo_UY/LC_MESSAGES/django.po
new file mode 100644
index 0000000000..0fb34b6a6c
--- /dev/null
+++ b/locale/eo_UY/LC_MESSAGES/django.po
@@ -0,0 +1,6658 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: bookwyrm\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-04-26 08:05\n"
+"Last-Translator: Mouse Reeve \n"
+"Language-Team: Esperanto\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Crowdin-Project: bookwyrm\n"
+"X-Crowdin-Project-ID: 479239\n"
+"X-Crowdin-Language: eo\n"
+"X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 1553\n"
+
+#: bookwyrm/forms/admin.py:42
+msgid "One Day"
+msgstr "Unu tago"
+
+#: bookwyrm/forms/admin.py:43
+msgid "One Week"
+msgstr "Unu semajno"
+
+#: bookwyrm/forms/admin.py:44
+msgid "One Month"
+msgstr "Unu monato"
+
+#: bookwyrm/forms/admin.py:45
+msgid "Does Not Expire"
+msgstr "Neniam eksvalidiĝas"
+
+#: bookwyrm/forms/admin.py:49
+#, python-brace-format
+msgid "{i} uses"
+msgstr "{i} uzoj"
+
+#: bookwyrm/forms/admin.py:50
+msgid "Unlimited"
+msgstr "Senlima"
+
+#: bookwyrm/forms/edit_user.py:88
+msgid "Incorrect password"
+msgstr "Malĝusta pasvorto"
+
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
+msgid "Password does not match"
+msgstr "Pasvorto ne kongruas"
+
+#: bookwyrm/forms/edit_user.py:118
+msgid "Incorrect Password"
+msgstr "Malĝusta pasvorto"
+
+#: bookwyrm/forms/forms.py:54
+msgid "Reading finish date cannot be before start date."
+msgstr "Dato de fino de legado ne povas esti antaŭ la dato de komenco."
+
+#: bookwyrm/forms/forms.py:59
+msgid "Reading stopped date cannot be before start date."
+msgstr "La dato de halto de legado ne povas esti antaŭ la komenca dato."
+
+#: bookwyrm/forms/forms.py:67
+msgid "Reading stopped date cannot be in the future."
+msgstr "La dato de halto de legado ne povas esti en la estonteco."
+
+#: bookwyrm/forms/forms.py:74
+msgid "Reading finished date cannot be in the future."
+msgstr "La dato de fino de legado ne povas esti en la estonteco."
+
+#: bookwyrm/forms/landing.py:38
+msgid "Username or password are incorrect"
+msgstr "Uzantnomo aŭ pasvorto malĝustas"
+
+#: bookwyrm/forms/landing.py:57
+msgid "User with this username already exists"
+msgstr "Uzanto kun tiu ĉi uzantnomo jam ekzistas"
+
+#: bookwyrm/forms/landing.py:66
+msgid "A user with this email already exists."
+msgstr "Uzanto kun tiu ĉi retpoŝtadreso jam ekzistas."
+
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
+msgid "Incorrect code"
+msgstr "Malĝusta kodo"
+
+#: bookwyrm/forms/links.py:36
+msgid "This domain is blocked. Please contact your administrator if you think this is an error."
+msgstr "Tiu ĉi domajno estas blokita. Bonvolu kontakti vian administranton se vi kredas ke tio estas eraro."
+
+#: bookwyrm/forms/links.py:49
+msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending."
+msgstr "Tiu ĉi ligilo kun tiu ĉi dosiertipo estis jam aldonita por tiu ĉi libro. Se ĝi estas nevidebla, la domajno estas ankoraŭ pritraktota."
+
+#: bookwyrm/forms/lists.py:26
+msgid "List Order"
+msgstr "Ordo de listo"
+
+#: bookwyrm/forms/lists.py:27
+msgid "Book Title"
+msgstr "Titolo de la libro"
+
+#: bookwyrm/forms/lists.py:28 bookwyrm/templates/shelf/shelf.html:156
+#: bookwyrm/templates/shelf/shelf.html:188
+#: bookwyrm/templates/snippets/create_status/review.html:32
+msgid "Rating"
+msgstr "Takso"
+
+#: bookwyrm/forms/lists.py:30 bookwyrm/templates/lists/list.html:185
+msgid "Sort By"
+msgstr "Ordigi laŭ"
+
+#: bookwyrm/forms/lists.py:34
+msgid "Ascending"
+msgstr "Kreskante"
+
+#: bookwyrm/forms/lists.py:35
+msgid "Descending"
+msgstr "Malkreskante"
+
+#: bookwyrm/models/announcement.py:11
+msgid "Primary"
+msgstr "Ĉefa"
+
+#: bookwyrm/models/announcement.py:12
+msgid "Success"
+msgstr "Sukceso"
+
+#: bookwyrm/models/announcement.py:13
+#: bookwyrm/templates/settings/invites/manage_invites.html:47
+msgid "Link"
+msgstr "Ligilo"
+
+#: bookwyrm/models/announcement.py:14
+msgid "Warning"
+msgstr "Averto"
+
+#: bookwyrm/models/announcement.py:15
+msgid "Danger"
+msgstr "Danĝero"
+
+#: bookwyrm/models/antispam.py:112 bookwyrm/models/antispam.py:146
+msgid "Automatically generated report"
+msgstr "Aŭtomate generita raporto"
+
+#: bookwyrm/models/base_model.py:18 bookwyrm/models/import_job.py:47
+#: bookwyrm/models/link.py:72 bookwyrm/templates/import/import_status.html:214
+#: bookwyrm/templates/settings/link_domains/link_domains.html:19
+msgid "Pending"
+msgstr "Atendata"
+
+#: bookwyrm/models/base_model.py:19
+msgid "Self deletion"
+msgstr "Mem forigo"
+
+#: bookwyrm/models/base_model.py:20
+msgid "Self deactivation"
+msgstr "Mem malaktivigo"
+
+#: bookwyrm/models/base_model.py:21
+msgid "Moderator suspension"
+msgstr "Suspendo fare de kontrolanto"
+
+#: bookwyrm/models/base_model.py:22
+msgid "Moderator deletion"
+msgstr "Forigo fare de kontrolanto"
+
+#: bookwyrm/models/base_model.py:23
+msgid "Domain block"
+msgstr "Blokado de domajno"
+
+#: bookwyrm/models/book.py:272
+msgid "Audiobook"
+msgstr "Sonlibro"
+
+#: bookwyrm/models/book.py:273
+msgid "eBook"
+msgstr "Bitlibro"
+
+#: bookwyrm/models/book.py:274
+msgid "Graphic novel"
+msgstr "Grafika romano"
+
+#: bookwyrm/models/book.py:275
+msgid "Hardcover"
+msgstr "Rigidkovrila"
+
+#: bookwyrm/models/book.py:276
+msgid "Paperback"
+msgstr "Poŝlibro"
+
+#: bookwyrm/models/federated_server.py:11
+#: bookwyrm/templates/settings/federation/edit_instance.html:55
+#: bookwyrm/templates/settings/federation/instance_list.html:22
+msgid "Federated"
+msgstr "Federaciita"
+
+#: bookwyrm/models/federated_server.py:12 bookwyrm/models/link.py:71
+#: bookwyrm/templates/settings/federation/edit_instance.html:56
+#: bookwyrm/templates/settings/federation/instance.html:10
+#: bookwyrm/templates/settings/federation/instance_list.html:26
+#: bookwyrm/templates/settings/link_domains/link_domains.html:27
+msgid "Blocked"
+msgstr "Blokita"
+
+#: bookwyrm/models/fields.py:29
+#, python-format
+msgid "%(value)s is not a valid remote_id"
+msgstr "%(value)s ne estas valida remote_id"
+
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
+#, python-format
+msgid "%(value)s is not a valid username"
+msgstr "%(value)s ne estas valida uzantnomo"
+
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
+#: bookwyrm/templates/ostatus/error.html:29
+msgid "username"
+msgstr "uzantnomo"
+
+#: bookwyrm/models/fields.py:197
+msgid "A user with that username already exists."
+msgstr "Uzanto kun tiu uzantnomo jam ekzistas."
+
+#: bookwyrm/models/fields.py:216
+#: bookwyrm/templates/snippets/privacy-icons.html:3
+#: bookwyrm/templates/snippets/privacy-icons.html:4
+#: bookwyrm/templates/snippets/privacy_select.html:11
+#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11
+msgid "Public"
+msgstr "Publika"
+
+#: bookwyrm/models/fields.py:217
+#: bookwyrm/templates/snippets/privacy-icons.html:7
+#: bookwyrm/templates/snippets/privacy-icons.html:8
+#: bookwyrm/templates/snippets/privacy_select.html:14
+#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14
+msgid "Unlisted"
+msgstr "Nelistigita"
+
+#: bookwyrm/models/fields.py:218
+#: bookwyrm/templates/snippets/privacy_select.html:17
+#: bookwyrm/templates/user/relationships/followers.html:6
+#: bookwyrm/templates/user/relationships/layout.html:11
+msgid "Followers"
+msgstr "Sekvantoj"
+
+#: bookwyrm/models/fields.py:219
+#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
+#: bookwyrm/templates/snippets/privacy-icons.html:15
+#: bookwyrm/templates/snippets/privacy-icons.html:16
+#: bookwyrm/templates/snippets/privacy_select.html:20
+#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17
+msgid "Private"
+msgstr "Privata"
+
+#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:168
+#: bookwyrm/templates/settings/imports/imports.html:98
+#: bookwyrm/templates/settings/users/user_admin.html:81
+#: bookwyrm/templates/settings/users/user_info.html:28
+msgid "Active"
+msgstr "Aktiva"
+
+#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:166
+msgid "Complete"
+msgstr "Finita"
+
+#: bookwyrm/models/import_job.py:50
+msgid "Stopped"
+msgstr "Haltigita"
+
+#: bookwyrm/models/import_job.py:83 bookwyrm/models/import_job.py:91
+msgid "Import stopped"
+msgstr "Importo haltigita"
+
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
+msgid "Error loading book"
+msgstr "Eraro dum la importo de la libro"
+
+#: bookwyrm/models/import_job.py:372
+msgid "Could not find a match for book"
+msgstr "Kongrua libro ne troviĝis"
+
+#: bookwyrm/models/link.py:51
+msgid "Free"
+msgstr "Senpaga"
+
+#: bookwyrm/models/link.py:52
+msgid "Purchasable"
+msgstr "Aĉetebla"
+
+#: bookwyrm/models/link.py:53
+msgid "Available for loan"
+msgstr "Pruntebla"
+
+#: bookwyrm/models/link.py:70
+#: bookwyrm/templates/settings/link_domains/link_domains.html:23
+msgid "Approved"
+msgstr "Aprobita"
+
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
+msgid "Reviews"
+msgstr "Recenzoj"
+
+#: bookwyrm/models/user.py:33
+msgid "Comments"
+msgstr "Komentoj"
+
+#: bookwyrm/models/user.py:34
+msgid "Quotations"
+msgstr "Citaĵoj"
+
+#: bookwyrm/models/user.py:35
+msgid "Everything else"
+msgstr "Ĉio alia"
+
+#: bookwyrm/settings.py:221
+msgid "Home Timeline"
+msgstr "Hejma novaĵfluo"
+
+#: bookwyrm/settings.py:221
+msgid "Home"
+msgstr "Hejmo"
+
+#: bookwyrm/settings.py:222
+msgid "Books Timeline"
+msgstr "Libra novaĵfluo"
+
+#: bookwyrm/settings.py:222
+#: bookwyrm/templates/guided_tour/user_profile.html:101
+#: bookwyrm/templates/search/layout.html:22
+#: bookwyrm/templates/search/layout.html:43
+#: bookwyrm/templates/user/layout.html:95
+msgid "Books"
+msgstr "Libroj"
+
+#: bookwyrm/settings.py:294
+msgid "English"
+msgstr "English (Angla)"
+
+#: bookwyrm/settings.py:295
+msgid "Català (Catalan)"
+msgstr "Català (Kataluna)"
+
+#: bookwyrm/settings.py:296
+msgid "Deutsch (German)"
+msgstr "Deutsch (Germana)"
+
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr "Esperanto (Esperanto)"
+
+#: bookwyrm/settings.py:298
+msgid "Español (Spanish)"
+msgstr "Español (Hispana)"
+
+#: bookwyrm/settings.py:299
+msgid "Euskara (Basque)"
+msgstr "Euskara (Eŭska)"
+
+#: bookwyrm/settings.py:300
+msgid "Galego (Galician)"
+msgstr "Galego (Galega)"
+
+#: bookwyrm/settings.py:301
+msgid "Italiano (Italian)"
+msgstr "Italiano (Itala)"
+
+#: bookwyrm/settings.py:302
+msgid "Suomi (Finnish)"
+msgstr "Suomi (Finna)"
+
+#: bookwyrm/settings.py:303
+msgid "Français (French)"
+msgstr "Français (Franca)"
+
+#: bookwyrm/settings.py:304
+msgid "Lietuvių (Lithuanian)"
+msgstr "Lietuvių (Litova)"
+
+#: bookwyrm/settings.py:305
+msgid "Norsk (Norwegian)"
+msgstr "Norsk (Norvega)"
+
+#: bookwyrm/settings.py:306
+msgid "Polski (Polish)"
+msgstr "Polski (Pola)"
+
+#: bookwyrm/settings.py:307
+msgid "Português do Brasil (Brazilian Portuguese)"
+msgstr "Português do Brasil (Brazila portugala)"
+
+#: bookwyrm/settings.py:308
+msgid "Português Europeu (European Portuguese)"
+msgstr "Português Europeu (Eŭropa portugala)"
+
+#: bookwyrm/settings.py:309
+msgid "Română (Romanian)"
+msgstr "Română (Rumana)"
+
+#: bookwyrm/settings.py:310
+msgid "Svenska (Swedish)"
+msgstr "Svenska (Sveda)"
+
+#: bookwyrm/settings.py:311
+msgid "简体中文 (Simplified Chinese)"
+msgstr "简体中文 (Simpligita ĉina)"
+
+#: bookwyrm/settings.py:312
+msgid "繁體中文 (Traditional Chinese)"
+msgstr "繁體中文 (Tradicia ĉina)"
+
+#: bookwyrm/templates/404.html:4 bookwyrm/templates/404.html:8
+msgid "Not Found"
+msgstr "Ne trovita"
+
+#: bookwyrm/templates/404.html:9
+msgid "The page you requested doesn't seem to exist!"
+msgstr "La paĝo kiun vi petis ŝajne ne ekzistas!"
+
+#: bookwyrm/templates/500.html:4
+msgid "Oops!"
+msgstr "Ups!"
+
+#: bookwyrm/templates/500.html:8
+msgid "Server Error"
+msgstr "Servila eraro"
+
+#: bookwyrm/templates/500.html:9
+msgid "Something went wrong! Sorry about that."
+msgstr "Eraro okazis! Pardonu."
+
+#: bookwyrm/templates/about/about.html:9
+#: bookwyrm/templates/about/layout.html:35
+msgid "About"
+msgstr "Pri"
+
+#: bookwyrm/templates/about/about.html:21
+#: bookwyrm/templates/get_started/layout.html:22
+#, python-format
+msgid "Welcome to %(site_name)s!"
+msgstr "Bonvenon al %(site_name)s!"
+
+#: bookwyrm/templates/about/about.html:25
+#, python-format
+msgid "%(site_name)s is part of BookWyrm , a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network , this community is unique."
+msgstr "%(site_name)s estas parto de BookWyrm , kiu estas reto de sendependaj, memregataj komunumoj por legemuloj. Kvankam vi povas senpene interagi kun uzantoj ie ajn en la reto de BookWyrm , ĉi tiu komunumo estas unika."
+
+#: bookwyrm/templates/about/about.html:45
+#, python-format
+msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5."
+msgstr "%(title)s estas la plej ŝatata libro de %(site_name)s, kun averaĝa takso de %(rating)s el 5."
+
+#: bookwyrm/templates/about/about.html:64
+#, python-format
+msgid "More %(site_name)s users want to read %(title)s than any other book."
+msgstr "Pli da uzantoj de %(site_name)s volas legi %(title)s ol iun ajn alian libron."
+
+#: bookwyrm/templates/about/about.html:83
+#, python-format
+msgid "%(title)s has the most divisive ratings of any book on %(site_name)s."
+msgstr "%(title)s havas la plej diversajn taksojn el ĉiuj libroj ĉe %(site_name)s."
+
+#: bookwyrm/templates/about/about.html:94
+msgid "Track your reading, talk about books, write reviews, and discover what to read next. Always ad-free, anti-corporate, and community-oriented, BookWyrm is human-scale software, designed to stay small and personal. If you have feature requests, bug reports, or grand dreams, reach out and make yourself heard."
+msgstr "Notu kion vi legas, parolu pri libroj, verku recenzojn kaj malkovru vian sekvan legaĵon. BookWyrm estas programo konstruita por homoj. Ĝi estas ĉiam sen reklamoj, kontraŭkomerca kaj celas resti malgranda kaj persona. Se vi havas petojn pri novaj trajtoj, raportojn pri cimoj, aŭ grandajn revojn kontaktu nin kaj estu aŭskultata."
+
+#: bookwyrm/templates/about/about.html:105
+msgid "Meet your admins"
+msgstr "Renkontu viajn administrantojn"
+
+#: bookwyrm/templates/about/about.html:108
+#, python-format
+msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct , and respond when users report spam and bad behavior."
+msgstr "La kontrolantoj de %(site_name)s kaj la administrantoj certigas la daŭran funkciadon de la retejo, obeigas la kondutkodon , kaj respondas kiam uzantoj raportas trudmesaĝojn aŭ malbonan konduton."
+
+#: bookwyrm/templates/about/about.html:122
+msgid "Moderator"
+msgstr "Kontrolanto"
+
+#: bookwyrm/templates/about/about.html:124 bookwyrm/templates/user_menu.html:67
+msgid "Admin"
+msgstr "Administranto"
+
+#: bookwyrm/templates/about/about.html:140
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
+#: bookwyrm/templates/snippets/status/status_options.html:35
+#: bookwyrm/templates/snippets/user_options.html:14
+msgid "Send direct message"
+msgstr "Sendi rektan mesaĝon"
+
+#: bookwyrm/templates/about/conduct.html:4
+#: bookwyrm/templates/about/conduct.html:9
+#: bookwyrm/templates/about/layout.html:41
+#: bookwyrm/templates/snippets/footer.html:27
+msgid "Code of Conduct"
+msgstr "Kondutkodo"
+
+#: bookwyrm/templates/about/impressum.html:4
+#: bookwyrm/templates/about/impressum.html:9
+#: bookwyrm/templates/about/layout.html:54
+#: bookwyrm/templates/snippets/footer.html:34
+msgid "Impressum"
+msgstr "Impressum"
+
+#: bookwyrm/templates/about/layout.html:11
+msgid "Active users:"
+msgstr "Aktivaj uzantoj:"
+
+#: bookwyrm/templates/about/layout.html:15
+msgid "Statuses posted:"
+msgstr "Nombro de afiŝoj:"
+
+#: bookwyrm/templates/about/layout.html:19
+#: bookwyrm/templates/setup/config.html:74
+msgid "Software version:"
+msgstr "Versio de la programo:"
+
+#: bookwyrm/templates/about/layout.html:30
+#: bookwyrm/templates/embed-layout.html:33
+#: bookwyrm/templates/snippets/footer.html:8
+#, python-format
+msgid "About %(site_name)s"
+msgstr "Pri %(site_name)s"
+
+#: bookwyrm/templates/about/layout.html:47
+#: bookwyrm/templates/about/privacy.html:4
+#: bookwyrm/templates/about/privacy.html:9
+#: bookwyrm/templates/snippets/footer.html:30
+msgid "Privacy Policy"
+msgstr "Privateca politiko"
+
+#: bookwyrm/templates/annual_summary/layout.html:7
+#: bookwyrm/templates/feed/summary_card.html:8
+#, python-format
+msgid "%(year)s in the books"
+msgstr "La libroj de %(year)s"
+
+#: bookwyrm/templates/annual_summary/layout.html:43
+#, python-format
+msgid "%(year)s in the books "
+msgstr "La libroj de %(year)s"
+
+#: bookwyrm/templates/annual_summary/layout.html:47
+#, python-format
+msgid "%(display_name)s’s year of reading"
+msgstr "La legojaro de %(display_name)s "
+
+#: bookwyrm/templates/annual_summary/layout.html:53
+msgid "Share this page"
+msgstr "Kunhavigi ĉi tiun paĝon"
+
+#: bookwyrm/templates/annual_summary/layout.html:67
+msgid "Copy address"
+msgstr "Kopii adreson"
+
+#: bookwyrm/templates/annual_summary/layout.html:68
+#: bookwyrm/templates/lists/list.html:277
+msgid "Copied!"
+msgstr "Kopiita!"
+
+#: bookwyrm/templates/annual_summary/layout.html:77
+msgid "Sharing status: public with key "
+msgstr "Stato de kunhavigo: publika kun ŝlosilo "
+
+#: bookwyrm/templates/annual_summary/layout.html:78
+msgid "The page can be seen by anyone with the complete address."
+msgstr "La paĝon povas vidi iu ajn havanta la kompletan adreson."
+
+#: bookwyrm/templates/annual_summary/layout.html:83
+msgid "Make page private"
+msgstr "Privatigi la paĝon"
+
+#: bookwyrm/templates/annual_summary/layout.html:89
+msgid "Sharing status: private "
+msgstr "Stato de kunhavigo: privata "
+
+#: bookwyrm/templates/annual_summary/layout.html:90
+msgid "The page is private, only you can see it."
+msgstr "La paĝo estas privata, nur vi povas vidi ĝin."
+
+#: bookwyrm/templates/annual_summary/layout.html:95
+msgid "Make page public"
+msgstr "Publikigi la paĝon"
+
+#: 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 "Kiam oni privatigas paĝon, la malnova ŝlosilo ne plu permesas aliron al la paĝo. Nova ŝlosilo kreiĝos se la paĝo denove publikiĝos."
+
+#: bookwyrm/templates/annual_summary/layout.html:112
+#, python-format
+msgid "Sadly %(display_name)s didn’t finish any books in %(year)s"
+msgstr "Bedaŭrinde %(display_name)s ne finis iun ajn libron en %(year)s"
+
+#: 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] "En %(year)s, %(display_name)s legis %(books_total)s libron kiu sume enhavas %(pages_total)s paĝojn!"
+msgstr[1] "En %(year)s, %(display_name)s legis %(books_total)s librojn kiuj sume enhavas %(pages_total)s paĝojn!"
+
+#: bookwyrm/templates/annual_summary/layout.html:124
+msgid "That’s great!"
+msgstr "Bonege!"
+
+#: bookwyrm/templates/annual_summary/layout.html:128
+#, python-format
+msgid "That makes an average of %(pages)s pages per book."
+msgstr "Tio faras averaĝon de po %(pages)s paĝoj en libro."
+
+#: bookwyrm/templates/annual_summary/layout.html:134
+#, python-format
+msgid "(No page data was available for %(no_page_number)s book)"
+msgid_plural "(No page data was available for %(no_page_number)s books)"
+msgstr[0] "(La nombro da paĝoj ne troveblis por %(no_page_number)s libro)"
+msgstr[1] "(La nombro da paĝoj ne troveblis por %(no_page_number)s libroj)"
+
+#: bookwyrm/templates/annual_summary/layout.html:150
+msgid "Their shortest read this year…"
+msgstr "Ria plej mallonga legaĵo ĉi-jare…"
+
+#: bookwyrm/templates/annual_summary/layout.html:157
+#: bookwyrm/templates/annual_summary/layout.html:178
+#: bookwyrm/templates/annual_summary/layout.html:247
+#: bookwyrm/templates/book/book.html:63
+#: bookwyrm/templates/discover/large-book.html:22
+#: bookwyrm/templates/landing/large-book.html:26
+#: bookwyrm/templates/landing/small-book.html:18
+msgid "by"
+msgstr "de"
+
+#: bookwyrm/templates/annual_summary/layout.html:163
+#: bookwyrm/templates/annual_summary/layout.html:184
+#, python-format
+msgid "%(pages)s pages"
+msgstr "%(pages)s paĝoj"
+
+#: bookwyrm/templates/annual_summary/layout.html:171
+msgid "…and the longest"
+msgstr "…kaj ria plej longa"
+
+#: bookwyrm/templates/annual_summary/layout.html:202
+#, python-format
+msgid "%(display_name)s set a goal of reading %(goal)s book in %(year)s, and achieved %(goal_percent)s%% of that goal"
+msgid_plural "%(display_name)s set a goal of reading %(goal)s books in %(year)s, and achieved %(goal_percent)s%% of that goal"
+msgstr[0] "%(display_name)s fiksis por si celon legi %(goal)s libron en %(year)s, kaj atingis %(goal_percent)s%% de tiu celo"
+msgstr[1] "%(display_name)s fiksis por si celon legi %(goal)s librojn en %(year)s, kaj atingis %(goal_percent)s%% de tiu celo"
+
+#: bookwyrm/templates/annual_summary/layout.html:211
+msgid "Way to go!"
+msgstr "Gratulon!"
+
+#: bookwyrm/templates/annual_summary/layout.html:226
+#, 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] "%(display_name)s taksis %(ratings_total)s libron, kaj ria averaĝa takso estas %(rating_average)s"
+msgstr[1] "%(display_name)s taksis %(ratings_total)s librojn, kaj ria averaĝa takso estas %(rating_average)s"
+
+#: bookwyrm/templates/annual_summary/layout.html:240
+msgid "Their best rated review"
+msgstr "Ria plej alta takso"
+
+#: bookwyrm/templates/annual_summary/layout.html:253
+#, python-format
+msgid "Their rating: %(rating)s "
+msgstr "Ria takso: %(rating)s "
+
+#: bookwyrm/templates/annual_summary/layout.html:270
+#, python-format
+msgid "All the books %(display_name)s read in %(year)s"
+msgstr "Ĉiuj libroj kiujn %(display_name)s legis en %(year)s"
+
+#: bookwyrm/templates/author/author.html:19
+#: bookwyrm/templates/author/author.html:20
+msgid "Edit Author"
+msgstr "Modifi la aŭtoron"
+
+#: bookwyrm/templates/author/author.html:36
+msgid "Author details"
+msgstr "Detaloj pri la aŭtoro"
+
+#: bookwyrm/templates/author/author.html:40
+#: bookwyrm/templates/author/edit_author.html:42
+msgid "Aliases:"
+msgstr "Alinomoj:"
+
+#: bookwyrm/templates/author/author.html:49
+msgid "Born:"
+msgstr "Naskiĝis:"
+
+#: bookwyrm/templates/author/author.html:56
+msgid "Died:"
+msgstr "Mortis:"
+
+#: bookwyrm/templates/author/author.html:66
+msgid "External links"
+msgstr "Eksteraj ligiloj"
+
+#: bookwyrm/templates/author/author.html:71
+msgid "Wikipedia"
+msgstr "Vikipedio"
+
+#: bookwyrm/templates/author/author.html:79
+msgid "Website"
+msgstr "Retejo"
+
+#: bookwyrm/templates/author/author.html:87
+msgid "View ISNI record"
+msgstr "Vidi la ISNI-registraĵon"
+
+#: bookwyrm/templates/author/author.html:95
+#: bookwyrm/templates/book/book.html:173
+msgid "View on ISFDB"
+msgstr "Vidi ĉe ISFDB"
+
+#: bookwyrm/templates/author/author.html:100
+#: bookwyrm/templates/author/sync_modal.html:5
+#: bookwyrm/templates/book/book.html:140
+#: bookwyrm/templates/book/sync_modal.html:5
+msgid "Load data"
+msgstr "Ŝarĝi per la datumaro"
+
+#: bookwyrm/templates/author/author.html:104
+#: bookwyrm/templates/book/book.html:144
+msgid "View on OpenLibrary"
+msgstr "Vidi ĉe OpenLibrary"
+
+#: bookwyrm/templates/author/author.html:119
+#: bookwyrm/templates/book/book.html:158
+msgid "View on Inventaire"
+msgstr "Vidi ĉe Inventaire"
+
+#: bookwyrm/templates/author/author.html:135
+msgid "View on LibraryThing"
+msgstr "Vidi ĉe LibraryThing"
+
+#: bookwyrm/templates/author/author.html:143
+msgid "View on Goodreads"
+msgstr "Vidi ĉe Goodreads"
+
+#: bookwyrm/templates/author/author.html:151
+msgid "View ISFDB entry"
+msgstr "Vidi la ISFDB-registraĵon"
+
+#: bookwyrm/templates/author/author.html:166
+#, python-format
+msgid "Books by %(name)s"
+msgstr "Libroj de %(name)s"
+
+#: bookwyrm/templates/author/edit_author.html:5
+msgid "Edit Author:"
+msgstr "Modifi la aŭtoron:"
+
+#: bookwyrm/templates/author/edit_author.html:13
+#: bookwyrm/templates/book/edit/edit_book.html:25
+msgid "Added:"
+msgstr "Aldonita:"
+
+#: bookwyrm/templates/author/edit_author.html:14
+#: bookwyrm/templates/book/edit/edit_book.html:28
+msgid "Updated:"
+msgstr "Ĝisdatigita:"
+
+#: bookwyrm/templates/author/edit_author.html:16
+#: bookwyrm/templates/book/edit/edit_book.html:32
+msgid "Last edited by:"
+msgstr "Lasta modifo farita de:"
+
+#: bookwyrm/templates/author/edit_author.html:33
+#: bookwyrm/templates/book/edit/edit_book_form.html:19
+msgid "Metadata"
+msgstr "Metadatumoj"
+
+#: bookwyrm/templates/author/edit_author.html:35
+#: bookwyrm/templates/lists/form.html:9
+#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:14
+#: bookwyrm/templates/shelf/form.html:9
+msgid "Name:"
+msgstr "Nomo:"
+
+#: bookwyrm/templates/author/edit_author.html:44
+#: bookwyrm/templates/book/edit/edit_book_form.html:78
+#: bookwyrm/templates/book/edit/edit_book_form.html:148
+msgid "Separate multiple values with commas."
+msgstr "Apartigu plurajn valorojn per komoj."
+
+#: bookwyrm/templates/author/edit_author.html:50
+msgid "Bio:"
+msgstr "Biografio:"
+
+#: bookwyrm/templates/author/edit_author.html:56
+msgid "Wikipedia link:"
+msgstr "Artikolo ĉe Vikipedio:"
+
+#: bookwyrm/templates/author/edit_author.html:60
+msgid "Website:"
+msgstr "Retejo:"
+
+#: bookwyrm/templates/author/edit_author.html:65
+msgid "Birth date:"
+msgstr "Naskiĝdato:"
+
+#: bookwyrm/templates/author/edit_author.html:72
+msgid "Death date:"
+msgstr "Mortodato:"
+
+#: bookwyrm/templates/author/edit_author.html:79
+msgid "Author Identifiers"
+msgstr "Aŭtoridentigiloj"
+
+#: bookwyrm/templates/author/edit_author.html:81
+msgid "Openlibrary key:"
+msgstr "Ŝlosilo de Openlibrary:"
+
+#: bookwyrm/templates/author/edit_author.html:88
+#: bookwyrm/templates/book/edit/edit_book_form.html:323
+msgid "Inventaire ID:"
+msgstr "Inventaire ID:"
+
+#: bookwyrm/templates/author/edit_author.html:95
+msgid "Librarything key:"
+msgstr "Ŝlosilo de Librarything:"
+
+#: bookwyrm/templates/author/edit_author.html:102
+#: bookwyrm/templates/book/edit/edit_book_form.html:332
+msgid "Goodreads key:"
+msgstr "Ŝlosilo de Goodreads:"
+
+#: bookwyrm/templates/author/edit_author.html:109
+msgid "ISFDB:"
+msgstr "ISFDB:"
+
+#: bookwyrm/templates/author/edit_author.html:116
+msgid "ISNI:"
+msgstr "ISNI:"
+
+#: bookwyrm/templates/author/edit_author.html:126
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
+#: bookwyrm/templates/book/file_links/add_link_modal.html:60
+#: bookwyrm/templates/book/file_links/edit_links.html:86
+#: bookwyrm/templates/groups/form.html:32
+#: bookwyrm/templates/lists/bookmark_button.html:15
+#: bookwyrm/templates/lists/edit_item_form.html:15
+#: bookwyrm/templates/lists/form.html:130
+#: bookwyrm/templates/preferences/edit_user.html:140
+#: bookwyrm/templates/readthrough/readthrough_modal.html:81
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
+#: bookwyrm/templates/settings/federation/edit_instance.html:98
+#: bookwyrm/templates/settings/federation/instance.html:105
+#: bookwyrm/templates/settings/registration.html:96
+#: bookwyrm/templates/settings/registration_limited.html:76
+#: bookwyrm/templates/settings/site.html:144
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:75
+#: bookwyrm/templates/shelf/form.html:25
+#: bookwyrm/templates/snippets/reading_modals/layout.html:18
+msgid "Save"
+msgstr "Konservi"
+
+#: bookwyrm/templates/author/edit_author.html:127
+#: bookwyrm/templates/author/sync_modal.html:23
+#: bookwyrm/templates/book/book.html:219
+#: bookwyrm/templates/book/cover_add_modal.html:33
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
+#: bookwyrm/templates/book/file_links/add_link_modal.html:59
+#: bookwyrm/templates/book/file_links/verification_modal.html:25
+#: bookwyrm/templates/book/sync_modal.html:23
+#: bookwyrm/templates/groups/delete_group_modal.html:15
+#: bookwyrm/templates/lists/add_item_modal.html:36
+#: bookwyrm/templates/lists/delete_list_modal.html:16
+#: bookwyrm/templates/preferences/disable-2fa.html:19
+#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27
+#: bookwyrm/templates/readthrough/readthrough_modal.html:80
+#: bookwyrm/templates/search/barcode_modal.html:43
+#: bookwyrm/templates/settings/federation/instance.html:106
+#: bookwyrm/templates/settings/imports/complete_import_modal.html:16
+#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22
+#: bookwyrm/templates/snippets/report_modal.html:52
+msgid "Cancel"
+msgstr "Nuligi"
+
+#: 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 "La ŝarĝado konektos al %(source_name)s kaj kontrolos ĉu estas metadatumoj pri ĉi tiu aŭtoro kiuj ne jam ĉeestas ĉi tie. La ekzistantaj datumoj ne anstataŭiĝos."
+
+#: bookwyrm/templates/author/sync_modal.html:24
+#: bookwyrm/templates/book/edit/edit_book.html:137
+#: bookwyrm/templates/book/sync_modal.html:24
+#: bookwyrm/templates/groups/members.html:29
+#: bookwyrm/templates/landing/password_reset.html:52
+#: bookwyrm/templates/preferences/2fa.html:77
+#: bookwyrm/templates/settings/imports/complete_import_modal.html:19
+#: bookwyrm/templates/snippets/remove_from_group_button.html:17
+msgid "Confirm"
+msgstr "Konfirmi"
+
+#: bookwyrm/templates/book/book.html:20
+msgid "Unable to connect to remote source."
+msgstr "La konekto al la fora fonto malsukcesis."
+
+#: bookwyrm/templates/book/book.html:71 bookwyrm/templates/book/book.html:72
+msgid "Edit Book"
+msgstr "Modifi libron"
+
+#: bookwyrm/templates/book/book.html:97 bookwyrm/templates/book/book.html:100
+msgid "Click to add cover"
+msgstr "Alklaku por aldoni kovrilon"
+
+#: bookwyrm/templates/book/book.html:106
+msgid "Failed to load cover"
+msgstr "Elŝuto de la kovrilo malsukcesis"
+
+#: bookwyrm/templates/book/book.html:117
+msgid "Click to enlarge"
+msgstr "Alklaku por grandigi"
+
+#: bookwyrm/templates/book/book.html:195
+#, python-format
+msgid "(%(review_count)s review)"
+msgid_plural "(%(review_count)s reviews)"
+msgstr[0] "(%(review_count)s recenzo)"
+msgstr[1] "(%(review_count)s recenzoj)"
+
+#: bookwyrm/templates/book/book.html:207
+msgid "Add Description"
+msgstr "Aldoni priskribon"
+
+#: bookwyrm/templates/book/book.html:214
+#: bookwyrm/templates/book/edit/edit_book_form.html:42
+#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
+msgid "Description:"
+msgstr "Priskribo:"
+
+#: bookwyrm/templates/book/book.html:230
+#, python-format
+msgid "%(count)s edition"
+msgid_plural "%(count)s editions"
+msgstr[0] "%(count)s eldono"
+msgstr[1] "%(count)s eldonoj"
+
+#: bookwyrm/templates/book/book.html:244
+msgid "You have shelved this edition in:"
+msgstr "Vi surbretigis ĉi tiun eldonon sur:"
+
+#: bookwyrm/templates/book/book.html:259
+#, python-format
+msgid "A different edition of this book is on your %(shelf_name)s shelf."
+msgstr "Alia eldono de ĉi tiu libro estas sur via breto %(shelf_name)s ."
+
+#: bookwyrm/templates/book/book.html:270
+msgid "Your reading activity"
+msgstr "Via lega agado"
+
+#: bookwyrm/templates/book/book.html:276
+#: bookwyrm/templates/guided_tour/book.html:56
+msgid "Add read dates"
+msgstr "Aldoni legodatojn"
+
+#: bookwyrm/templates/book/book.html:284
+msgid "You don't have any reading activity for this book."
+msgstr "Vi ne havas legan agadon por ĉi tiu libro."
+
+#: bookwyrm/templates/book/book.html:310
+msgid "Your reviews"
+msgstr "Viaj recenzoj"
+
+#: bookwyrm/templates/book/book.html:316
+msgid "Your comments"
+msgstr "Viaj komentoj"
+
+#: bookwyrm/templates/book/book.html:322
+msgid "Your quotes"
+msgstr "Viaj citaĵoj"
+
+#: bookwyrm/templates/book/book.html:358
+msgid "Subjects"
+msgstr "Temoj"
+
+#: bookwyrm/templates/book/book.html:370
+msgid "Places"
+msgstr "Lokoj"
+
+#: bookwyrm/templates/book/book.html:381
+#: bookwyrm/templates/groups/group.html:19
+#: bookwyrm/templates/guided_tour/lists.html:14
+#: bookwyrm/templates/guided_tour/user_books.html:102
+#: bookwyrm/templates/guided_tour/user_profile.html:78
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
+#: bookwyrm/templates/lists/lists.html:12
+#: bookwyrm/templates/search/layout.html:26
+#: bookwyrm/templates/search/layout.html:51
+#: bookwyrm/templates/user/layout.html:89
+msgid "Lists"
+msgstr "Listoj"
+
+#: bookwyrm/templates/book/book.html:393
+msgid "Add to list"
+msgstr "Aldoni al la listo"
+
+#: bookwyrm/templates/book/book.html:403
+#: bookwyrm/templates/book/cover_add_modal.html:32
+#: bookwyrm/templates/lists/add_item_modal.html:39
+#: bookwyrm/templates/lists/list.html:255
+#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
+#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:32
+msgid "Add"
+msgstr "Aldoni"
+
+#: bookwyrm/templates/book/book_identifiers.html:8
+msgid "ISBN:"
+msgstr "ISBN:"
+
+#: bookwyrm/templates/book/book_identifiers.html:15
+#: bookwyrm/templates/book/edit/edit_book_form.html:341
+msgid "OCLC Number:"
+msgstr "Numero OCLC:"
+
+#: bookwyrm/templates/book/book_identifiers.html:22
+#: bookwyrm/templates/book/edit/edit_book_form.html:350
+msgid "ASIN:"
+msgstr "ASIN:"
+
+#: bookwyrm/templates/book/book_identifiers.html:29
+#: bookwyrm/templates/book/edit/edit_book_form.html:359
+msgid "Audible ASIN:"
+msgstr "ASIN Audible:"
+
+#: bookwyrm/templates/book/book_identifiers.html:36
+#: bookwyrm/templates/book/edit/edit_book_form.html:368
+msgid "ISFDB ID:"
+msgstr "ISFDB ID:"
+
+#: bookwyrm/templates/book/book_identifiers.html:43
+msgid "Goodreads:"
+msgstr "Goodreads:"
+
+#: bookwyrm/templates/book/cover_add_modal.html:5
+msgid "Add cover"
+msgstr "Aldoni kovrilon"
+
+#: bookwyrm/templates/book/cover_add_modal.html:17
+#: bookwyrm/templates/book/edit/edit_book_form.html:233
+msgid "Upload cover:"
+msgstr "Alŝuti kovrilon:"
+
+#: bookwyrm/templates/book/cover_add_modal.html:23
+#: bookwyrm/templates/book/edit/edit_book_form.html:239
+msgid "Load cover from url:"
+msgstr "Elŝuti kovrilon de URL:"
+
+#: bookwyrm/templates/book/cover_show_modal.html:6
+msgid "Book cover preview"
+msgstr "Antaŭmontro de la kovrilo"
+
+#: bookwyrm/templates/book/cover_show_modal.html:11
+#: bookwyrm/templates/components/inline_form.html:8
+#: bookwyrm/templates/components/modal.html:13
+#: bookwyrm/templates/components/modal.html:30
+#: bookwyrm/templates/feed/suggested_books.html:67
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
+msgid "Close"
+msgstr "Fermi"
+
+#: bookwyrm/templates/book/edit/edit_book.html:8
+#: bookwyrm/templates/book/edit/edit_book.html:18
+#, python-format
+msgid "Edit \"%(book_title)s\""
+msgstr "Modifi «%(book_title)s»"
+
+#: bookwyrm/templates/book/edit/edit_book.html:10
+#: bookwyrm/templates/book/edit/edit_book.html:20
+msgid "Add Book"
+msgstr "Aldoni libron"
+
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr "Registrado de la libro malsukcesis, vidu la subajn erarojn por pli da informo."
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
+msgid "Confirm Book Info"
+msgstr "Konfirmi librodatumojn"
+
+#: bookwyrm/templates/book/edit/edit_book.html:78
+#, python-format
+msgid "Is \"%(name)s\" one of these authors?"
+msgstr "Ĉu «%(name)s» estas unu el ĉi tiuj aŭtoroj?"
+
+#: bookwyrm/templates/book/edit/edit_book.html:89
+#, python-format
+msgid "Author of %(book_title)s "
+msgstr "Aŭtoro de %(book_title)s "
+
+#: bookwyrm/templates/book/edit/edit_book.html:93
+#, python-format
+msgid "Author of %(alt_title)s "
+msgstr "Aŭtoro de %(alt_title)s "
+
+#: bookwyrm/templates/book/edit/edit_book.html:95
+msgid "Find more information at isni.org"
+msgstr "Pli da informo troviĝas ĉe isni.org"
+
+#: bookwyrm/templates/book/edit/edit_book.html:105
+msgid "This is a new author"
+msgstr "Ĉi tiu estas nova aŭtoro"
+
+#: bookwyrm/templates/book/edit/edit_book.html:115
+#, python-format
+msgid "Creating a new author: %(name)s"
+msgstr "Kreiĝos nova aŭtoro: %(name)s"
+
+#: bookwyrm/templates/book/edit/edit_book.html:122
+msgid "Is this an edition of an existing work?"
+msgstr "Ĉu ĉi tio estas eldono de ekzistanta verkaĵo?"
+
+#: bookwyrm/templates/book/edit/edit_book.html:130
+msgid "This is a new work"
+msgstr "Ĉi tio estas nova verkaĵo"
+
+#: bookwyrm/templates/book/edit/edit_book.html:139
+#: bookwyrm/templates/feed/status.html:19
+#: bookwyrm/templates/guided_tour/book.html:44
+#: bookwyrm/templates/guided_tour/book.html:68
+#: bookwyrm/templates/guided_tour/book.html:91
+#: bookwyrm/templates/guided_tour/book.html:116
+#: bookwyrm/templates/guided_tour/book.html:140
+#: bookwyrm/templates/guided_tour/book.html:164
+#: bookwyrm/templates/guided_tour/book.html:188
+#: bookwyrm/templates/guided_tour/book.html:213
+#: bookwyrm/templates/guided_tour/book.html:237
+#: bookwyrm/templates/guided_tour/book.html:262
+#: bookwyrm/templates/guided_tour/book.html:290
+#: bookwyrm/templates/guided_tour/group.html:43
+#: bookwyrm/templates/guided_tour/group.html:66
+#: bookwyrm/templates/guided_tour/group.html:89
+#: bookwyrm/templates/guided_tour/group.html:108
+#: bookwyrm/templates/guided_tour/home.html:91
+#: bookwyrm/templates/guided_tour/home.html:115
+#: bookwyrm/templates/guided_tour/home.html:140
+#: bookwyrm/templates/guided_tour/home.html:165
+#: bookwyrm/templates/guided_tour/home.html:189
+#: bookwyrm/templates/guided_tour/home.html:212
+#: bookwyrm/templates/guided_tour/lists.html:47
+#: bookwyrm/templates/guided_tour/lists.html:70
+#: bookwyrm/templates/guided_tour/lists.html:94
+#: bookwyrm/templates/guided_tour/lists.html:117
+#: bookwyrm/templates/guided_tour/lists.html:136
+#: bookwyrm/templates/guided_tour/search.html:83
+#: bookwyrm/templates/guided_tour/search.html:110
+#: bookwyrm/templates/guided_tour/search.html:134
+#: bookwyrm/templates/guided_tour/search.html:155
+#: bookwyrm/templates/guided_tour/user_books.html:44
+#: bookwyrm/templates/guided_tour/user_books.html:67
+#: bookwyrm/templates/guided_tour/user_books.html:90
+#: bookwyrm/templates/guided_tour/user_books.html:118
+#: bookwyrm/templates/guided_tour/user_groups.html:44
+#: bookwyrm/templates/guided_tour/user_groups.html:67
+#: bookwyrm/templates/guided_tour/user_groups.html:91
+#: bookwyrm/templates/guided_tour/user_groups.html:110
+#: bookwyrm/templates/guided_tour/user_profile.html:43
+#: bookwyrm/templates/guided_tour/user_profile.html:66
+#: bookwyrm/templates/guided_tour/user_profile.html:89
+#: bookwyrm/templates/guided_tour/user_profile.html:112
+#: bookwyrm/templates/guided_tour/user_profile.html:135
+#: bookwyrm/templates/user/user.html:87 bookwyrm/templates/user_menu.html:18
+msgid "Back"
+msgstr "Reen"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:24
+#: bookwyrm/templates/snippets/create_status/review.html:15
+msgid "Title:"
+msgstr "Titolo:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:33
+msgid "Subtitle:"
+msgstr "Subtitolo:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:53
+msgid "Series:"
+msgstr "Serio:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:63
+msgid "Series number:"
+msgstr "Numero en la serio:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:74
+msgid "Languages:"
+msgstr "Lingvoj:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:86
+msgid "Subjects:"
+msgstr "Temoj:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:90
+msgid "Add subject"
+msgstr "Aldoni temon"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:108
+msgid "Remove subject"
+msgstr "Forigi temon"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:131
+msgid "Add Another Subject"
+msgstr "Aldoni alian temon"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:139
+msgid "Publication"
+msgstr "Eldonado"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:144
+msgid "Publisher:"
+msgstr "Eldonejo:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:156
+msgid "First published date:"
+msgstr "Dato de la unua eldono:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:164
+msgid "Published date:"
+msgstr "Dato de la eldonado:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:175
+msgid "Authors"
+msgstr "Aŭtoroj"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:186
+#, python-format
+msgid "Remove %(name)s"
+msgstr "Forigi %(name)s"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:189
+#, python-format
+msgid "Author page for %(name)s"
+msgstr "Aŭtorpaĝo de %(name)s"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:197
+msgid "Add Authors:"
+msgstr "Aldoni aŭtorojn:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:200
+#: bookwyrm/templates/book/edit/edit_book_form.html:203
+msgid "Add Author"
+msgstr "Aldoni aŭtoron"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:201
+#: bookwyrm/templates/book/edit/edit_book_form.html:204
+msgid "Jane Doe"
+msgstr "Johana Cervino"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:210
+msgid "Add Another Author"
+msgstr "Aldoni alian aŭtoron"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:220
+#: bookwyrm/templates/shelf/shelf.html:147
+msgid "Cover"
+msgstr "Kovrilo"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:252
+msgid "Physical Properties"
+msgstr "Fizikaj ecoj"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:259
+#: bookwyrm/templates/book/editions/format_filter.html:6
+msgid "Format:"
+msgstr "Formato:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:269
+msgid "Format details:"
+msgstr "Detaloj de la formato:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:280
+msgid "Pages:"
+msgstr "Paĝoj:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:291
+msgid "Book Identifiers"
+msgstr "Libroidentigiloj"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:296
+msgid "ISBN 13:"
+msgstr "ISBN 13:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:305
+msgid "ISBN 10:"
+msgstr "ISBN 10:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:314
+msgid "Openlibrary ID:"
+msgstr "Openlibrary ID:"
+
+#: bookwyrm/templates/book/editions/editions.html:4
+#, python-format
+msgid "Editions of %(book_title)s"
+msgstr "Eldonoj de %(book_title)s"
+
+#: bookwyrm/templates/book/editions/editions.html:8
+#, python-format
+msgid "Editions of \"%(work_title)s\" "
+msgstr "Eldonoj de «%(work_title)s» "
+
+#: bookwyrm/templates/book/editions/editions.html:55
+msgid "Can't find the edition you're looking for?"
+msgstr "Ĉu vi ne trovas la ĝustan eldonon?"
+
+#: bookwyrm/templates/book/editions/editions.html:75
+msgid "Add another edition"
+msgstr "Aldoni plian eldonon"
+
+#: bookwyrm/templates/book/editions/format_filter.html:9
+#: bookwyrm/templates/book/editions/language_filter.html:9
+msgid "Any"
+msgstr "Ĉiuj"
+
+#: bookwyrm/templates/book/editions/language_filter.html:6
+#: bookwyrm/templates/preferences/edit_user.html:95
+msgid "Language:"
+msgstr "Lingvo:"
+
+#: bookwyrm/templates/book/editions/search_filter.html:6
+msgid "Search editions"
+msgstr "Serĉi eldonojn"
+
+#: bookwyrm/templates/book/file_links/add_link_modal.html:6
+msgid "Add file link"
+msgstr "Aldoni ligilon al dosiero"
+
+#: bookwyrm/templates/book/file_links/add_link_modal.html:19
+msgid "Links from unknown domains will need to be approved by a moderator before they are added."
+msgstr "Ligiloj al nekonataj domajnoj bezonos aprobon de kontrolanto antaŭ ol ili aldoniĝos."
+
+#: bookwyrm/templates/book/file_links/add_link_modal.html:24
+msgid "URL:"
+msgstr "URL:"
+
+#: bookwyrm/templates/book/file_links/add_link_modal.html:29
+msgid "File type:"
+msgstr "Dosiertipo:"
+
+#: bookwyrm/templates/book/file_links/add_link_modal.html:48
+msgid "Availability:"
+msgstr "Havebleco:"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:5
+#: bookwyrm/templates/book/file_links/edit_links.html:21
+#: bookwyrm/templates/book/file_links/links.html:53
+msgid "Edit links"
+msgstr "Modifi ligilojn"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:11
+#, python-format
+msgid "Links for \"%(title)s \""
+msgstr "Ligiloj por «%(title)s »"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:32
+#: bookwyrm/templates/settings/link_domains/link_table.html:6
+msgid "URL"
+msgstr "URL"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:33
+#: bookwyrm/templates/settings/link_domains/link_table.html:7
+msgid "Added by"
+msgstr "Aldonita de"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:34
+#: bookwyrm/templates/settings/link_domains/link_table.html:8
+msgid "Filetype"
+msgstr "Dosiertipo"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:35
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25
+#: bookwyrm/templates/settings/reports/report_links_table.html:5
+msgid "Domain"
+msgstr "Domajno"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:36
+#: bookwyrm/templates/import/import.html:133
+#: bookwyrm/templates/import/import_status.html:134
+#: bookwyrm/templates/settings/announcements/announcements.html:37
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:48
+#: bookwyrm/templates/settings/invites/status_filter.html:5
+#: bookwyrm/templates/settings/users/user_admin.html:56
+#: bookwyrm/templates/settings/users/user_info.html:24
+msgid "Status"
+msgstr "Stato"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:37
+#: bookwyrm/templates/settings/announcements/announcements.html:41
+#: bookwyrm/templates/settings/federation/instance.html:112
+#: bookwyrm/templates/settings/imports/imports.html:141
+#: bookwyrm/templates/settings/reports/report_links_table.html:6
+#: bookwyrm/templates/settings/themes.html:99
+msgid "Actions"
+msgstr "Agoj"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:48
+#: bookwyrm/templates/settings/link_domains/link_table.html:21
+msgid "Unknown user"
+msgstr "Nekonata uzanto"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:57
+#: bookwyrm/templates/book/file_links/verification_modal.html:22
+msgid "Report spam"
+msgstr "Raporti kiel trudaĵon"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:102
+msgid "No links available for this book."
+msgstr "Neniu ligilo haveblas por ĉi tiu libro."
+
+#: bookwyrm/templates/book/file_links/edit_links.html:113
+#: bookwyrm/templates/book/file_links/links.html:18
+msgid "Add link to file"
+msgstr "Aldoni ligilon al dosiero"
+
+#: bookwyrm/templates/book/file_links/file_link_page.html:6
+msgid "File Links"
+msgstr "Ligiloj al dosieroj"
+
+#: bookwyrm/templates/book/file_links/links.html:9
+msgid "Get a copy"
+msgstr "Ekhavi ekzempleron"
+
+#: bookwyrm/templates/book/file_links/links.html:47
+msgid "No links available"
+msgstr "Neniu ligilo disponeblas"
+
+#: bookwyrm/templates/book/file_links/verification_modal.html:5
+msgid "Leaving BookWyrm"
+msgstr "Foriro de BookWyrm"
+
+#: bookwyrm/templates/book/file_links/verification_modal.html:11
+#, python-format
+msgid "This link is taking you to: %(link_url)s
. Is that where you'd like to go?"
+msgstr "Ĉi tiu ligilo direktas vin al: %(link_url)s
. Ĉu ja tien vi volas iri?"
+
+#: bookwyrm/templates/book/file_links/verification_modal.html:26
+#: bookwyrm/templates/setup/config.html:139
+msgid "Continue"
+msgstr "Daŭrigi"
+
+#: bookwyrm/templates/book/publisher_info.html:23
+#, python-format
+msgid "%(format)s, %(pages)s pages"
+msgstr "%(format)s, %(pages)s paĝoj"
+
+#: bookwyrm/templates/book/publisher_info.html:25
+#, python-format
+msgid "%(pages)s pages"
+msgstr "%(pages)s paĝoj"
+
+#: bookwyrm/templates/book/publisher_info.html:38
+#, python-format
+msgid "%(languages)s language"
+msgstr "Lingvo: %(languages)s"
+
+#: bookwyrm/templates/book/publisher_info.html:65
+#, python-format
+msgid "Published %(date)s by %(publisher)s."
+msgstr "Eldonita je %(date)s de %(publisher)s."
+
+#: bookwyrm/templates/book/publisher_info.html:67
+#, python-format
+msgid "Published %(date)s"
+msgstr "Eldonita je %(date)s"
+
+#: bookwyrm/templates/book/publisher_info.html:69
+#, python-format
+msgid "Published by %(publisher)s."
+msgstr "Eldonita de %(publisher)s."
+
+#: bookwyrm/templates/book/rating.html:13
+msgid "rated it"
+msgstr "taksis ĝin"
+
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr "Serio de"
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr "Libro %(series_number)s"
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr "Sennumera libro"
+
+#: 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 "La ŝarĝado konektos al %(source_name)s kaj kontrolos ĉu estas metadatumoj pri ĉi tiu libro kiuj ne jam ĉeestas ĉi tie. La ekzistantaj datumoj ne anstataŭiĝos."
+
+#: bookwyrm/templates/compose.html:5 bookwyrm/templates/compose.html:8
+msgid "Edit status"
+msgstr "Modifi la afiŝon"
+
+#: bookwyrm/templates/confirm_email/confirm_email.html:4
+msgid "Confirm email"
+msgstr "Konfirmo de retadreso"
+
+#: bookwyrm/templates/confirm_email/confirm_email.html:7
+msgid "Confirm your email address"
+msgstr "Konfirmu vian retadreson"
+
+#: bookwyrm/templates/confirm_email/confirm_email.html:13
+msgid "A confirmation code has been sent to the email address you used to register your account."
+msgstr "Konfirmkodo sendiĝis al la retadreso kiun vi uzis por registri vian konton."
+
+#: bookwyrm/templates/confirm_email/confirm_email.html:15
+msgid "Sorry! We couldn't find that code."
+msgstr "Pardonu! Ni ne sukcesis trovi tiun kodon."
+
+#: bookwyrm/templates/confirm_email/confirm_email.html:19
+#: bookwyrm/templates/settings/users/user_info.html:92
+msgid "Confirmation code:"
+msgstr "Konfirmkodo:"
+
+#: bookwyrm/templates/confirm_email/confirm_email.html:25
+#: bookwyrm/templates/landing/layout.html:81
+#: bookwyrm/templates/settings/dashboard/dashboard.html:102
+#: bookwyrm/templates/snippets/report_modal.html:53
+msgid "Submit"
+msgstr "Sendi"
+
+#: bookwyrm/templates/confirm_email/confirm_email.html:38
+msgid "Can't find your code?"
+msgstr "Ĉu vi ne trovas vian kodon?"
+
+#: bookwyrm/templates/confirm_email/resend.html:5
+#: bookwyrm/templates/confirm_email/resend_modal.html:5
+msgid "Resend confirmation link"
+msgstr "Resendi la ligilon de konfirmo"
+
+#: bookwyrm/templates/confirm_email/resend_modal.html:15
+#: bookwyrm/templates/landing/layout.html:68
+#: bookwyrm/templates/landing/password_reset_request.html:24
+#: bookwyrm/templates/preferences/edit_user.html:53
+#: bookwyrm/templates/snippets/register_form.html:27
+msgid "Email address:"
+msgstr "Retadreso:"
+
+#: bookwyrm/templates/confirm_email/resend_modal.html:30
+msgid "Resend link"
+msgstr "Resendi ligilon"
+
+#: bookwyrm/templates/directory/community_filter.html:5
+msgid "Community"
+msgstr "Komunumo"
+
+#: bookwyrm/templates/directory/community_filter.html:8
+#: bookwyrm/templates/settings/users/user_admin.html:25
+msgid "Local users"
+msgstr "Lokaj uzantoj"
+
+#: bookwyrm/templates/directory/community_filter.html:12
+#: bookwyrm/templates/settings/users/user_admin.html:33
+msgid "Federated community"
+msgstr "Fratara komunumo"
+
+#: bookwyrm/templates/directory/directory.html:4
+#: bookwyrm/templates/directory/directory.html:9
+#: bookwyrm/templates/user_menu.html:34
+msgid "Directory"
+msgstr "Adresaro"
+
+#: bookwyrm/templates/directory/directory.html:17
+msgid "Make your profile discoverable to other BookWyrm users."
+msgstr "Ebligi al aliaj uzantoj de BookWyrm malkovri vian profilon."
+
+#: bookwyrm/templates/directory/directory.html:21
+msgid "Join Directory"
+msgstr "Aliĝi al la adresaro"
+
+#: bookwyrm/templates/directory/directory.html:24
+#, python-format
+msgid "You can opt-out at any time in your profile settings. "
+msgstr "Vi povas ŝanĝi vian decidon iam ajn en viaj agordoj de profilo ."
+
+#: 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:31
+msgid "Dismiss message"
+msgstr "Forigi la mesaĝon"
+
+#: bookwyrm/templates/directory/sort_filter.html:5
+msgid "Order by"
+msgstr "Ordigi laŭ"
+
+#: bookwyrm/templates/directory/sort_filter.html:9
+msgid "Recently active"
+msgstr "Lastatempe aktiva"
+
+#: bookwyrm/templates/directory/sort_filter.html:10
+msgid "Suggested"
+msgstr "Sugestita"
+
+#: bookwyrm/templates/directory/user_card.html:17
+#: bookwyrm/templates/directory/user_card.html:18
+#: bookwyrm/templates/ostatus/remote_follow.html:21
+#: bookwyrm/templates/ostatus/remote_follow.html:22
+#: bookwyrm/templates/ostatus/subscribe.html:41
+#: bookwyrm/templates/ostatus/subscribe.html:42
+#: bookwyrm/templates/ostatus/success.html:17
+#: bookwyrm/templates/ostatus/success.html:18
+#: bookwyrm/templates/user/user_preview.html:16
+#: bookwyrm/templates/user/user_preview.html:17
+msgid "Locked account"
+msgstr "Ŝlosita konto"
+
+#: bookwyrm/templates/directory/user_card.html:40
+msgid "follower you follow"
+msgid_plural "followers you follow"
+msgstr[0] "sekvanto kiun vi sekvas"
+msgstr[1] "sekvantoj kiujn vi sekvas"
+
+#: bookwyrm/templates/directory/user_card.html:47
+msgid "book on your shelves"
+msgid_plural "books on your shelves"
+msgstr[0] "libro sur viaj bretoj"
+msgstr[1] "libroj sur viaj bretoj"
+
+#: bookwyrm/templates/directory/user_card.html:55
+msgid "posts"
+msgstr "afiŝoj"
+
+#: bookwyrm/templates/directory/user_card.html:61
+msgid "last active"
+msgstr "laste aktiva"
+
+#: bookwyrm/templates/directory/user_type_filter.html:5
+msgid "User type"
+msgstr "Tipo de uzanto"
+
+#: bookwyrm/templates/directory/user_type_filter.html:8
+msgid "BookWyrm users"
+msgstr "Uzantoj ĉe BookWyrm"
+
+#: bookwyrm/templates/directory/user_type_filter.html:12
+msgid "All known users"
+msgstr "Ĉiuj konataj uzantoj"
+
+#: bookwyrm/templates/discover/card-header.html:8
+#, python-format
+msgid "%(username)s wants to read %(book_title)s "
+msgstr "%(username)s volas legi %(book_title)s "
+
+#: bookwyrm/templates/discover/card-header.html:13
+#, python-format
+msgid "%(username)s finished reading %(book_title)s "
+msgstr "%(username)s finlegis %(book_title)s "
+
+#: bookwyrm/templates/discover/card-header.html:18
+#, python-format
+msgid "%(username)s started reading %(book_title)s "
+msgstr "%(username)s komencis legi %(book_title)s "
+
+#: bookwyrm/templates/discover/card-header.html:23
+#, python-format
+msgid "%(username)s rated %(book_title)s "
+msgstr "%(username)s taksis %(book_title)s "
+
+#: bookwyrm/templates/discover/card-header.html:27
+#, python-format
+msgid "%(username)s reviewed %(book_title)s "
+msgstr "%(username)s recenzis %(book_title)s "
+
+#: bookwyrm/templates/discover/card-header.html:31
+#, python-format
+msgid "%(username)s commented on %(book_title)s "
+msgstr "%(username)s komentis pri %(book_title)s "
+
+#: bookwyrm/templates/discover/card-header.html:35
+#, python-format
+msgid "%(username)s quoted %(book_title)s "
+msgstr "%(username)s citis %(book_title)s "
+
+#: bookwyrm/templates/discover/discover.html:4
+#: bookwyrm/templates/discover/discover.html:10
+#: bookwyrm/templates/layout.html:93
+msgid "Discover"
+msgstr "Malkovri"
+
+#: bookwyrm/templates/discover/discover.html:12
+#, python-format
+msgid "See what's new in the local %(site_name)s community"
+msgstr "Vidu la novaĵojn de la loka komunumo %(site_name)s"
+
+#: bookwyrm/templates/discover/large-book.html:52
+#: bookwyrm/templates/discover/small-book.html:36
+msgid "View status"
+msgstr "Vidi la afiŝon"
+
+#: bookwyrm/templates/email/confirm/html_content.html:6
+#: bookwyrm/templates/email/confirm/text_content.html:4
+#, python-format
+msgid "One last step before you join %(site_name)s! Please confirm your email address by clicking the link below:"
+msgstr "Restas unu lasta paŝo antaŭ ol aliĝi al %(site_name)s! Bonvolu konfirmi vian retadreson per alklako de la jena ligilo:"
+
+#: bookwyrm/templates/email/confirm/html_content.html:11
+msgid "Confirm Email"
+msgstr "Konfirmo de retadreso"
+
+#: bookwyrm/templates/email/confirm/html_content.html:15
+#, python-format
+msgid "Or enter the code \"%(confirmation_code)s
\" at login."
+msgstr "Aŭ entajpu la kodon «%(confirmation_code)s
» dum la ensaluto."
+
+#: bookwyrm/templates/email/confirm/subject.html:2
+msgid "Please confirm your email"
+msgstr "Bonvolu konfirmi vian retadreson"
+
+#: bookwyrm/templates/email/confirm/text_content.html:10
+#, python-format
+msgid "Or enter the code \"%(confirmation_code)s\" at login."
+msgstr "Aŭ entajpu la kodon «%(confirmation_code)s» dum la ensaluto."
+
+#: bookwyrm/templates/email/html_layout.html:15
+#: bookwyrm/templates/email/text_layout.html:2
+msgid "Hi there,"
+msgstr "Saluton,"
+
+#: bookwyrm/templates/email/html_layout.html:21
+#, python-format
+msgid "BookWyrm hosted on %(site_name)s "
+msgstr "BookWyrm gastigita ĉe %(site_name)s "
+
+#: bookwyrm/templates/email/html_layout.html:23
+msgid "Email preference"
+msgstr "Agordoj pri retmesaĝoj"
+
+#: bookwyrm/templates/email/invite/html_content.html:6
+#: bookwyrm/templates/email/invite/subject.html:2
+#, python-format
+msgid "You're invited to join %(site_name)s!"
+msgstr "Oni invitis vin aliĝi al %(site_name)s!"
+
+#: bookwyrm/templates/email/invite/html_content.html:9
+msgid "Join Now"
+msgstr "Aliĝi nun"
+
+#: bookwyrm/templates/email/invite/html_content.html:15
+#, python-format
+msgid "Learn more about %(site_name)s ."
+msgstr "Pli da informo pri %(site_name)s ."
+
+#: bookwyrm/templates/email/invite/text_content.html:4
+#, python-format
+msgid "You're invited to join %(site_name)s! Click the link below to create an account."
+msgstr "Oni invitis vin aliĝi al %(site_name)s! Alklaku la jenan ligilon por krei konton."
+
+#: bookwyrm/templates/email/invite/text_content.html:8
+#, python-format
+msgid "Learn more about %(site_name)s:"
+msgstr "Pli da informo pri %(site_name)s:"
+
+#: bookwyrm/templates/email/moderation_report/html_content.html:8
+#: bookwyrm/templates/email/moderation_report/text_content.html:6
+#, python-format
+msgid "@%(reporter)s has flagged a link domain for moderation."
+msgstr "@%(reporter)s raportis domajnon de ligilo por kontrolo."
+
+#: bookwyrm/templates/email/moderation_report/html_content.html:14
+#: bookwyrm/templates/email/moderation_report/text_content.html:10
+#, python-format
+msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation."
+msgstr "@%(reporter)s raportis konduton de @%(reportee)s por kontrolo."
+
+#: bookwyrm/templates/email/moderation_report/html_content.html:21
+#: bookwyrm/templates/email/moderation_report/text_content.html:15
+msgid "View report"
+msgstr "Vidi raporton"
+
+#: bookwyrm/templates/email/moderation_report/subject.html:2
+#, python-format
+msgid "New report for %(site_name)s"
+msgstr "Nova raporto por %(site_name)s"
+
+#: bookwyrm/templates/email/password_reset/html_content.html:6
+#: bookwyrm/templates/email/password_reset/text_content.html:4
+#, python-format
+msgid "You requested to reset your %(site_name)s password. Click the link below to set a new password and log in to your account."
+msgstr "Vi petis restarigon de via pasvorto ĉe %(site_name)s. Alklaku la jenan ligilon por agordi novan pasvorton kaj ensaluti en vian konton."
+
+#: bookwyrm/templates/email/password_reset/html_content.html:9
+#: bookwyrm/templates/landing/password_reset.html:4
+#: bookwyrm/templates/landing/password_reset.html:10
+#: bookwyrm/templates/landing/password_reset_request.html:4
+#: bookwyrm/templates/landing/password_reset_request.html:10
+msgid "Reset Password"
+msgstr "Restarigi pasvorton"
+
+#: bookwyrm/templates/email/password_reset/html_content.html:13
+#: bookwyrm/templates/email/password_reset/text_content.html:8
+msgid "If you didn't request to reset your password, you can ignore this email."
+msgstr "Se vi ne petis restarigi vian pasvorton, vi povas ignori ĉi tiun mesaĝon."
+
+#: bookwyrm/templates/email/password_reset/subject.html:2
+#, python-format
+msgid "Reset your %(site_name)s password"
+msgstr "Restarigo de via pasvorto ĉe %(site_name)s"
+
+#: bookwyrm/templates/email/test/html_content.html:6
+#: bookwyrm/templates/email/test/text_content.html:4
+msgid "This is a test email."
+msgstr "Ĉi tio estas provmesaĝo."
+
+#: bookwyrm/templates/email/test/subject.html:2
+msgid "Test email"
+msgstr "Provmesaĝo"
+
+#: bookwyrm/templates/embed-layout.html:20 bookwyrm/templates/layout.html:31
+#: bookwyrm/templates/setup/layout.html:15
+#: bookwyrm/templates/two_factor_auth/two_factor_login.html:18
+#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:18
+#, python-format
+msgid "%(site_name)s home page"
+msgstr "Hejmpaĝo de %(site_name)s"
+
+#: bookwyrm/templates/embed-layout.html:39
+#: bookwyrm/templates/snippets/footer.html:12
+msgid "Contact site admin"
+msgstr "Kontakti la retejestron"
+
+#: bookwyrm/templates/embed-layout.html:45
+msgid "Join BookWyrm"
+msgstr "Aliĝi al BookWyrm"
+
+#: bookwyrm/templates/feed/direct_messages.html:8
+#, python-format
+msgid "Direct Messages with %(username)s "
+msgstr "Rektaj mesaĝoj kun %(username)s "
+
+#: bookwyrm/templates/feed/direct_messages.html:10
+#: bookwyrm/templates/user_menu.html:44
+msgid "Direct Messages"
+msgstr "Rektaj mesaĝoj"
+
+#: bookwyrm/templates/feed/direct_messages.html:13
+msgid "All messages"
+msgstr "Ĉiuj mesaĝoj"
+
+#: bookwyrm/templates/feed/direct_messages.html:22
+msgid "You have no messages right now."
+msgstr "Vi havas neniun mesaĝon."
+
+#: bookwyrm/templates/feed/feed.html:55
+msgid "There aren't any activities right now! Try following a user to get started"
+msgstr "Ĝuste nun estas neniu ago! Provu sekvi uzanton por komenci"
+
+#: bookwyrm/templates/feed/feed.html:56
+msgid "Alternatively, you can try enabling more status types"
+msgstr "Aliokaze, vi povas provi ŝalti pli da tipoj de afiŝoj"
+
+#: bookwyrm/templates/feed/goal_card.html:6
+#: bookwyrm/templates/feed/layout.html:14
+#: bookwyrm/templates/user/goal_form.html:6
+#, python-format
+msgid "%(year)s Reading Goal"
+msgstr "Legocelo por %(year)s"
+
+#: bookwyrm/templates/feed/goal_card.html:18
+#, python-format
+msgid "You can set or change your reading goal any time from your profile page "
+msgstr "Vi povas aldoni aŭ ŝanĝi vian legocelon iam ajn per via profilpaĝo "
+
+#: bookwyrm/templates/feed/layout.html:4
+msgid "Updates"
+msgstr "Ĝisdatigoj"
+
+#: bookwyrm/templates/feed/suggested_books.html:6
+#: bookwyrm/templates/guided_tour/home.html:127
+#: bookwyrm/templates/user_menu.html:39
+msgid "Your Books"
+msgstr "Viaj libroj"
+
+#: bookwyrm/templates/feed/suggested_books.html:10
+msgid "There are no books here right now! Try searching for a book to get started"
+msgstr "Estas neniu libro ĉi tie ĝuste nun! Provu serĉi libron por komenci"
+
+#: bookwyrm/templates/feed/suggested_books.html:13
+msgid "Do you have book data from another service like GoodReads?"
+msgstr "Ĉu vi havas librodatumaron de alia servo kiel GoodReads?"
+
+#: bookwyrm/templates/feed/suggested_books.html:16
+msgid "Import your reading history"
+msgstr "Importi vian legohistorion"
+
+#: bookwyrm/templates/feed/suggested_users.html:5
+#: bookwyrm/templates/get_started/users.html:6
+msgid "Who to follow"
+msgstr "Kiun sekvi"
+
+#: bookwyrm/templates/feed/suggested_users.html:9
+msgid "Don't show suggested users"
+msgstr "Ne montri proponitajn uzantojn"
+
+#: bookwyrm/templates/feed/suggested_users.html:14
+msgid "View directory"
+msgstr "Vidi la adresaron"
+
+#: 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 jarfino estas la plej bona momento por resumi vian legadon dum la lastaj 12 monatoj. Kiom da paĝoj vi legis? Kiun libron vi plej alte taksis? Ni kompilis tiujn statistikojn, kaj eĉ pli!"
+
+#: bookwyrm/templates/feed/summary_card.html:26
+#, python-format
+msgid "Discover your stats for %(year)s!"
+msgstr "Malkovru viajn statistikojn por la jaro %(year)s!"
+
+#: bookwyrm/templates/get_started/book_preview.html:6
+#, python-format
+msgid "Have you read %(book_title)s?"
+msgstr "Ĉu vi legis %(book_title)s?"
+
+#: bookwyrm/templates/get_started/book_preview.html:7
+msgid "Add to your books"
+msgstr "Aldoni al viaj libroj"
+
+#: bookwyrm/templates/get_started/book_preview.html:10
+#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:37
+#: bookwyrm/templatetags/shelf_tags.py:14
+msgid "To Read"
+msgstr "Legota"
+
+#: bookwyrm/templates/get_started/book_preview.html:11
+#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:38
+#: bookwyrm/templatetags/shelf_tags.py:15
+msgid "Currently Reading"
+msgstr "Legata"
+
+#: bookwyrm/templates/get_started/book_preview.html:12
+#: bookwyrm/templates/shelf/shelf.html:88
+#: bookwyrm/templates/snippets/shelf_selector.html:46
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12
+#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:16
+msgid "Read"
+msgstr "Legita"
+
+#: bookwyrm/templates/get_started/book_preview.html:13
+#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:40
+#: bookwyrm/templatetags/shelf_tags.py:17
+msgid "Stopped Reading"
+msgstr "Haltigita legado"
+
+#: bookwyrm/templates/get_started/books.html:6
+msgid "What are you reading?"
+msgstr "Kion vi legas?"
+
+#: bookwyrm/templates/get_started/books.html:9
+#: bookwyrm/templates/layout.html:39 bookwyrm/templates/lists/list.html:213
+msgid "Search for a book"
+msgstr "Serĉi libron"
+
+#: bookwyrm/templates/get_started/books.html:11
+#, python-format
+msgid "No books found for \"%(query)s\""
+msgstr "Neniu libro troviĝis por «%(query)s»"
+
+#: bookwyrm/templates/get_started/books.html:11
+#, python-format
+msgid "You can add books when you start using %(site_name)s."
+msgstr "Vi povos aldoni librojn kiam vi komencos uzi %(site_name)s."
+
+#: bookwyrm/templates/get_started/books.html:16
+#: bookwyrm/templates/get_started/books.html:17
+#: bookwyrm/templates/get_started/users.html:18
+#: bookwyrm/templates/get_started/users.html:19
+#: bookwyrm/templates/groups/members.html:15
+#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:45
+#: bookwyrm/templates/layout.html:46 bookwyrm/templates/lists/list.html:217
+#: bookwyrm/templates/search/layout.html:5
+#: bookwyrm/templates/search/layout.html:10
+#: bookwyrm/templates/search/layout.html:32
+msgid "Search"
+msgstr "Serĉi"
+
+#: bookwyrm/templates/get_started/books.html:27
+msgid "Suggested Books"
+msgstr "Proponitaj libroj"
+
+#: bookwyrm/templates/get_started/books.html:33
+msgid "Search results"
+msgstr "Serĉrezultoj"
+
+#: bookwyrm/templates/get_started/books.html:46
+#, python-format
+msgid "Popular on %(site_name)s"
+msgstr "Popularaj ĉe %(site_name)s"
+
+#: bookwyrm/templates/get_started/books.html:58
+#: bookwyrm/templates/lists/list.html:230
+msgid "No books found"
+msgstr "Neniu libro troviĝis"
+
+#: bookwyrm/templates/get_started/books.html:63
+#: bookwyrm/templates/get_started/profile.html:64
+msgid "Save & continue"
+msgstr "Konservi & daŭrigi"
+
+#: bookwyrm/templates/get_started/layout.html:5
+#: bookwyrm/templates/landing/layout.html:5
+msgid "Welcome"
+msgstr "Bonvenon"
+
+#: bookwyrm/templates/get_started/layout.html:24
+msgid "These are some first steps to get you started."
+msgstr "Jen kelkaj unuaj paŝoj por helpi vin komenci."
+
+#: bookwyrm/templates/get_started/layout.html:38
+#: bookwyrm/templates/get_started/profile.html:6
+msgid "Create your profile"
+msgstr "Krei vian profilon"
+
+#: bookwyrm/templates/get_started/layout.html:42
+msgid "Add books"
+msgstr "Aldoni librojn"
+
+#: bookwyrm/templates/get_started/layout.html:46
+msgid "Find friends"
+msgstr "Trovi amikojn"
+
+#: bookwyrm/templates/get_started/layout.html:52
+msgid "Skip this step"
+msgstr "Preterpasi ĉi tiun ŝtupon"
+
+#: bookwyrm/templates/get_started/layout.html:56
+#: bookwyrm/templates/guided_tour/group.html:101
+msgid "Finish"
+msgstr "Fini"
+
+#: bookwyrm/templates/get_started/profile.html:15
+#: bookwyrm/templates/preferences/edit_user.html:41
+msgid "Display name:"
+msgstr "Montrata nomo:"
+
+#: bookwyrm/templates/get_started/profile.html:29
+#: bookwyrm/templates/preferences/edit_user.html:47
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:49
+msgid "Summary:"
+msgstr "Resumo:"
+
+#: bookwyrm/templates/get_started/profile.html:34
+msgid "A little bit about you"
+msgstr "Iom pri vi"
+
+#: bookwyrm/templates/get_started/profile.html:43
+#: bookwyrm/templates/preferences/edit_user.html:27
+msgid "Avatar:"
+msgstr "Profilbildo:"
+
+#: bookwyrm/templates/get_started/profile.html:52
+msgid "Manually approve followers:"
+msgstr "Permane aprobi sekvantojn:"
+
+#: bookwyrm/templates/get_started/profile.html:58
+msgid "Show this account in suggested users:"
+msgstr "Montri ĉi tiun konton inter la proponitaj uzantoj:"
+
+#: bookwyrm/templates/get_started/profile.html:62
+msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users."
+msgstr "Via konto aperos en la adresaro kaj ĝi eble estos rekomendita al aliaj uzantoj de BookWyrm."
+
+#: bookwyrm/templates/get_started/users.html:8
+msgid "You can follow users on other BookWyrm instances and federated services like Mastodon."
+msgstr "Vi povas sekvi uzantojn de aliaj instancoj de BookWyrm kaj frataraj servoj kiel Mastodon."
+
+#: bookwyrm/templates/get_started/users.html:11
+msgid "Search for a user"
+msgstr "Serĉi uzanton"
+
+#: bookwyrm/templates/get_started/users.html:13
+#, python-format
+msgid "No users found for \"%(query)s\""
+msgstr "Neniu uzanto troviĝis por «%(query)s»"
+
+#: bookwyrm/templates/groups/create_form.html:5
+#: bookwyrm/templates/guided_tour/user_groups.html:32
+#: bookwyrm/templates/user/groups.html:17
+msgid "Create group"
+msgstr "Krei grupon"
+
+#: bookwyrm/templates/groups/created_text.html:4
+#, python-format
+msgid "Managed by %(username)s "
+msgstr "Estrata de %(username)s "
+
+#: bookwyrm/templates/groups/delete_group_modal.html:4
+msgid "Delete this group?"
+msgstr "Ĉu forigi ĉi tiun grupon?"
+
+#: bookwyrm/templates/groups/delete_group_modal.html:7
+#: bookwyrm/templates/lists/delete_list_modal.html:7
+#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:12
+#: bookwyrm/templates/settings/imports/complete_import_modal.html:7
+msgid "This action cannot be un-done"
+msgstr "Ne eblos malfari ĉi tiun agon"
+
+#: bookwyrm/templates/groups/delete_group_modal.html:17
+#: bookwyrm/templates/lists/delete_list_modal.html:19
+#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:29
+#: bookwyrm/templates/settings/announcements/announcement.html:23
+#: bookwyrm/templates/settings/announcements/announcements.html:56
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49
+#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36
+#: bookwyrm/templates/snippets/follow_request_buttons.html:12
+#: bookwyrm/templates/snippets/join_invitation_buttons.html:14
+msgid "Delete"
+msgstr "Forigi"
+
+#: bookwyrm/templates/groups/edit_form.html:5
+msgid "Edit Group"
+msgstr "Redakti grupon"
+
+#: bookwyrm/templates/groups/form.html:8
+msgid "Group Name:"
+msgstr "Grupnomo:"
+
+#: bookwyrm/templates/groups/form.html:12
+msgid "Group Description:"
+msgstr "Priskribo de la grupo:"
+
+#: bookwyrm/templates/groups/form.html:21
+msgid "Delete group"
+msgstr "Forigi la grupon"
+
+#: bookwyrm/templates/groups/group.html:21
+msgid "Members of this group can create group-curated lists."
+msgstr "Membroj de ĉi tiu grupo povas krei listojn estratajn de la grupanoj."
+
+#: bookwyrm/templates/groups/group.html:26
+#: bookwyrm/templates/lists/create_form.html:5
+#: bookwyrm/templates/lists/lists.html:20
+msgid "Create List"
+msgstr "Krei liston"
+
+#: bookwyrm/templates/groups/group.html:39
+msgid "This group has no lists"
+msgstr "Ĉi tiu grupo havas neniun liston"
+
+#: bookwyrm/templates/groups/layout.html:17
+msgid "Edit group"
+msgstr "Modifi grupon"
+
+#: bookwyrm/templates/groups/members.html:11
+msgid "Search to add a user"
+msgstr "Serĉi kaj aldoni uzanton"
+
+#: bookwyrm/templates/groups/members.html:32
+msgid "Leave group"
+msgstr "Foriri de la grupo"
+
+#: bookwyrm/templates/groups/members.html:54
+#: bookwyrm/templates/groups/suggested_users.html:35
+#: bookwyrm/templates/snippets/suggested_users.html:31
+#: bookwyrm/templates/user/user_preview.html:39
+#: bookwyrm/templates/user/user_preview.html:47
+msgid "Follows you"
+msgstr "Sekvas vin"
+
+#: bookwyrm/templates/groups/suggested_users.html:7
+msgid "Add new members!"
+msgstr "Aldoni novajn membrojn!"
+
+#: bookwyrm/templates/groups/suggested_users.html:20
+#: bookwyrm/templates/snippets/suggested_users.html:16
+#, python-format
+msgid "%(mutuals)s follower you follow"
+msgid_plural "%(mutuals)s followers you follow"
+msgstr[0] "%(mutuals)s sekvanto kiun vi sekvas"
+msgstr[1] "%(mutuals)s sekvantoj kiujn vi sekvas"
+
+#: bookwyrm/templates/groups/suggested_users.html:27
+#: bookwyrm/templates/snippets/suggested_users.html:23
+#, python-format
+msgid "%(shared_books)s book on your shelves"
+msgid_plural "%(shared_books)s books on your shelves"
+msgstr[0] "%(shared_books)s libro sur viaj bretoj"
+msgstr[1] "%(shared_books)s libroj sur viaj bretoj"
+
+#: bookwyrm/templates/groups/suggested_users.html:43
+#, python-format
+msgid "No potential members found for \"%(user_query)s\""
+msgstr "Neniu eventuala membro troviĝis por «%(user_query)s»"
+
+#: bookwyrm/templates/groups/user_groups.html:15
+msgid "Manager"
+msgstr "Estro"
+
+#: bookwyrm/templates/guided_tour/book.html:10
+msgid "This is home page of a book. Let's see what you can do while you're here!"
+msgstr "Jen la hejmpaĝo de libro. Ni vidu kion oni povas fari ĉi tie!"
+
+#: bookwyrm/templates/guided_tour/book.html:11
+msgid "Book page"
+msgstr "Paĝo de libro"
+
+#: bookwyrm/templates/guided_tour/book.html:19
+#: bookwyrm/templates/guided_tour/group.html:19
+#: bookwyrm/templates/guided_tour/lists.html:22
+#: bookwyrm/templates/guided_tour/search.html:29
+#: bookwyrm/templates/guided_tour/search.html:56
+#: bookwyrm/templates/guided_tour/user_books.html:19
+#: bookwyrm/templates/guided_tour/user_groups.html:19
+#: bookwyrm/templates/guided_tour/user_profile.html:19
+msgid "End Tour"
+msgstr "Ĉesigi la gvidhelpon"
+
+#: bookwyrm/templates/guided_tour/book.html:26
+#: bookwyrm/templates/guided_tour/book.html:50
+#: bookwyrm/templates/guided_tour/book.html:74
+#: bookwyrm/templates/guided_tour/book.html:97
+#: bookwyrm/templates/guided_tour/book.html:122
+#: bookwyrm/templates/guided_tour/book.html:146
+#: bookwyrm/templates/guided_tour/book.html:170
+#: bookwyrm/templates/guided_tour/book.html:194
+#: bookwyrm/templates/guided_tour/book.html:219
+#: bookwyrm/templates/guided_tour/book.html:243
+#: bookwyrm/templates/guided_tour/book.html:268
+#: bookwyrm/templates/guided_tour/book.html:274
+#: bookwyrm/templates/guided_tour/group.html:26
+#: bookwyrm/templates/guided_tour/group.html:49
+#: bookwyrm/templates/guided_tour/group.html:72
+#: bookwyrm/templates/guided_tour/group.html:95
+#: bookwyrm/templates/guided_tour/home.html:74
+#: bookwyrm/templates/guided_tour/home.html:97
+#: bookwyrm/templates/guided_tour/home.html:121
+#: bookwyrm/templates/guided_tour/home.html:146
+#: bookwyrm/templates/guided_tour/home.html:171
+#: bookwyrm/templates/guided_tour/home.html:195
+#: bookwyrm/templates/guided_tour/lists.html:29
+#: bookwyrm/templates/guided_tour/lists.html:53
+#: bookwyrm/templates/guided_tour/lists.html:76
+#: bookwyrm/templates/guided_tour/lists.html:100
+#: bookwyrm/templates/guided_tour/lists.html:123
+#: bookwyrm/templates/guided_tour/search.html:36
+#: bookwyrm/templates/guided_tour/search.html:63
+#: bookwyrm/templates/guided_tour/search.html:89
+#: bookwyrm/templates/guided_tour/search.html:116
+#: bookwyrm/templates/guided_tour/search.html:140
+#: bookwyrm/templates/guided_tour/user_books.html:26
+#: bookwyrm/templates/guided_tour/user_books.html:50
+#: bookwyrm/templates/guided_tour/user_books.html:73
+#: bookwyrm/templates/guided_tour/user_books.html:96
+#: bookwyrm/templates/guided_tour/user_groups.html:26
+#: bookwyrm/templates/guided_tour/user_groups.html:50
+#: bookwyrm/templates/guided_tour/user_groups.html:73
+#: bookwyrm/templates/guided_tour/user_groups.html:97
+#: bookwyrm/templates/guided_tour/user_profile.html:26
+#: bookwyrm/templates/guided_tour/user_profile.html:49
+#: bookwyrm/templates/guided_tour/user_profile.html:72
+#: bookwyrm/templates/guided_tour/user_profile.html:95
+#: bookwyrm/templates/guided_tour/user_profile.html:118
+#: bookwyrm/templates/snippets/pagination.html:30
+msgid "Next"
+msgstr "Sekva"
+
+#: bookwyrm/templates/guided_tour/book.html:31
+msgid "This is where you can set a reading status for this book. You can press the button to move to the next stage, or use the drop down button to select the reading status you want to set."
+msgstr "Ĉi tie vi povas agordi legostaton por ĉi tiu libro. Vi povas premi la butonon por transiri al la sekva ŝtupo, aŭ uzi la butonon de la falmenuo por elekti la legostaton kiun vi volas agordi."
+
+#: bookwyrm/templates/guided_tour/book.html:32
+msgid "Reading status"
+msgstr "Legostato"
+
+#: bookwyrm/templates/guided_tour/book.html:55
+msgid "You can also manually add reading dates here. Unlike changing the reading status using the previous method, adding dates manually will not automatically add them to your Read or Reading shelves."
+msgstr "Vi povas ankaŭ permane aldoni datojn de legado ĉi tie. Kontraste al la antaŭe menciita metodo por ŝanĝi la legodatojn, permane aldoni ilin ne aŭtomate aldonos la librojn al viaj bretoj Legita aŭ Legata ."
+
+#: bookwyrm/templates/guided_tour/book.html:55
+msgid "Got a favourite you re-read every year? We've got you covered - you can add multiple read dates for the same book 😀"
+msgstr "Ĉu vi havas preferatan libron kiun vi relegas ĉiujare? Ni antaŭvidis tion – vi povas aldoni plurajn legodatojn por unu sama libro 😀"
+
+#: bookwyrm/templates/guided_tour/book.html:79
+msgid "There can be multiple editions of a book, in various formats or languages. You can choose which edition you want to use."
+msgstr "Povas ekzisti pluraj eldonoj de libro, en diversaj formatoj aŭ lingvoj. Vi povas elekti kiun eldonon vi volas uzi."
+
+#: bookwyrm/templates/guided_tour/book.html:80
+msgid "Other editions"
+msgstr "Aliaj eldonoj"
+
+#: bookwyrm/templates/guided_tour/book.html:102
+msgid "You can post a review, comment, or quote here."
+msgstr "Vi povas afiŝi recenzon, komenton aŭ citaĵon ĉi tie."
+
+#: bookwyrm/templates/guided_tour/book.html:103
+msgid "Share your thoughts"
+msgstr "Kunhavigi viajn opiniojn"
+
+#: bookwyrm/templates/guided_tour/book.html:127
+msgid "If you have read this book you can post a review including an optional star rating"
+msgstr "Se vi legis ĉi tiun libron vi povas afiŝi recenzon, kun aŭ sen takso per steloj"
+
+#: bookwyrm/templates/guided_tour/book.html:128
+msgid "Post a review"
+msgstr "Afiŝi recenzon"
+
+#: bookwyrm/templates/guided_tour/book.html:151
+msgid "You can share your thoughts on this book generally with a simple comment"
+msgstr "Vi povas kunhavigi viajn ĝeneralajn opiniojn pri ĉi tiu libro per simpla komento"
+
+#: bookwyrm/templates/guided_tour/book.html:152
+msgid "Post a comment"
+msgstr "Afiŝi komenton"
+
+#: bookwyrm/templates/guided_tour/book.html:175
+msgid "Just read some perfect prose? Let the world know by sharing a quote!"
+msgstr "Ĉu vi ĵus legis iun perfektan prozaĵon? Konigi ĝin al la mondo per kunhavigo de citaĵo!"
+
+#: bookwyrm/templates/guided_tour/book.html:176
+msgid "Share a quote"
+msgstr "Kunhavigi citaĵon"
+
+#: bookwyrm/templates/guided_tour/book.html:199
+msgid "If your review or comment might ruin the book for someone who hasn't read it yet, you can hide your post behind a spoiler alert "
+msgstr "Se via recenzo aŭ komento povus malkaŝi la intrigon al iu kiu ne jam legis la libron, vi povas kaŝi la afiŝon malantaŭ averton de intrigmalkaŝo "
+
+#: bookwyrm/templates/guided_tour/book.html:200
+msgid "Spoiler alerts"
+msgstr "Avertoj de intrigmalkaŝo"
+
+#: bookwyrm/templates/guided_tour/book.html:224
+msgid "Choose who can see your post here. Post privacy can be Public (everyone can see), Unlisted (everyone can see, but it doesn't appear in public feeds or discovery pages), Followers (only your followers can see), or Private (only you can see)"
+msgstr "Elektu ĉi tie tiujn kiuj povas vidi vian afiŝon. La privateco de afiŝo povas esti Publika (ĉiu ajn povas vidi), Nelistigita (ĉiu povas vidi, sed ĝi ne aperos en publikaj fluoj aŭ paĝoj de eltrovo), Sekvantoj (nur viaj sekvantoj povas vidi), aŭ Privata (nur vi povas vidi)"
+
+#: bookwyrm/templates/guided_tour/book.html:225
+#: bookwyrm/templates/snippets/privacy_select.html:6
+#: bookwyrm/templates/snippets/privacy_select_no_followers.html:6
+msgid "Post privacy"
+msgstr "Privateco de la afiŝo"
+
+#: bookwyrm/templates/guided_tour/book.html:248
+msgid "Some ebooks can be downloaded for free from external sources. They will be shown here."
+msgstr "Kelkaj libroj estas senpage elŝuteblaj de eksteraj fontoj. Ili aperos ĉi tie."
+
+#: bookwyrm/templates/guided_tour/book.html:249
+msgid "Download links"
+msgstr "Ligiloj de elŝuto"
+
+#: bookwyrm/templates/guided_tour/book.html:273
+msgid "Continue the tour by selecting Your books from the drop down menu."
+msgstr "Daŭrigu la gvidhelpon per alklako al Viaj libroj en la falmenuo."
+
+#: bookwyrm/templates/guided_tour/book.html:296
+#: bookwyrm/templates/guided_tour/home.html:50
+#: bookwyrm/templates/guided_tour/home.html:218
+#: bookwyrm/templates/guided_tour/search.html:161
+#: bookwyrm/templates/guided_tour/user_books.html:124
+#: bookwyrm/templates/guided_tour/user_groups.html:116
+#: bookwyrm/templates/guided_tour/user_profile.html:141
+msgid "Ok"
+msgstr "Bone"
+
+#: bookwyrm/templates/guided_tour/group.html:10
+msgid "Welcome to the page for your group! This is where you can add and remove users, create user-curated lists, and edit the group details."
+msgstr "Bonvenan al la paĝo por via grupo! Ĉi tie vi povas aldoni kaj forigi uzantojn, krei listojn estratajn de uzantoj, kaj modifi la detalojn de la grupo."
+
+#: bookwyrm/templates/guided_tour/group.html:11
+msgid "Your group"
+msgstr "Via grupo"
+
+#: bookwyrm/templates/guided_tour/group.html:31
+msgid "Use this search box to find users to join your group. Currently users must be members of the same Bookwyrm instance and be invited by the group owner."
+msgstr "Uzu ĉi tiun serĉkampon por trovi uzantojn por aldoni al via grupo. Aktuale, la uzantoj devas esti membroj de la sama instanco de Bookwyrm kaj esti invititaj de la grupestro."
+
+#: bookwyrm/templates/guided_tour/group.html:32
+msgid "Find users"
+msgstr "Trovi uzantojn"
+
+#: bookwyrm/templates/guided_tour/group.html:54
+msgid "Your group members will appear here. The group owner is marked with a star symbol."
+msgstr "Viaj grupanoj aperos ĉi tie. La grupestro distingiĝas per stela simbolo."
+
+#: bookwyrm/templates/guided_tour/group.html:55
+msgid "Group members"
+msgstr "Grupanoj"
+
+#: bookwyrm/templates/guided_tour/group.html:77
+msgid "As well as creating lists from the Lists page, you can create a group-curated list here on the group's homepage. Any member of the group can create a list curated by group members."
+msgstr "Krom krei listojn ĉe la paĝo Listoj, vi ankaŭ povas krei liston ĉi tie ĉe la hejmpago de la grupo. Iu ajn membro de la grupo povas krei liston estratan de la grupanoj."
+
+#: bookwyrm/templates/guided_tour/group.html:78
+msgid "Group lists"
+msgstr "Gruplistoj"
+
+#: bookwyrm/templates/guided_tour/group.html:100
+msgid "Congratulations, you've finished the tour! Now you know the basics, but there is lots more to explore on your own. Happy reading!"
+msgstr "Gratulon, vi finis la gvidhelpon! Nun vi scias la bazojn, sed estas multe pli por malkovri sole. Bonan legadon!"
+
+#: bookwyrm/templates/guided_tour/group.html:115
+msgid "End tour"
+msgstr "Fini la gvidhelpon"
+
+#: bookwyrm/templates/guided_tour/home.html:16
+msgid "Welcome to Bookwyrm! Would you like to take the guided tour to help you get started?"
+msgstr "Bonvenon al Bookwyrm! Ĉu vi ŝatus sekvi la gvidhelpon por malkovri la trajtojn de la retejo?"
+
+#: bookwyrm/templates/guided_tour/home.html:17
+#: bookwyrm/templates/guided_tour/home.html:39
+#: bookwyrm/templates/snippets/footer.html:20
+msgid "Guided Tour"
+msgstr "Gvidhelpo"
+
+#: bookwyrm/templates/guided_tour/home.html:25
+#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:36
+msgid "No thanks"
+msgstr "Ne dankon"
+
+#: bookwyrm/templates/guided_tour/home.html:33
+msgid "Yes please!"
+msgstr "Jes, bonvole!"
+
+#: bookwyrm/templates/guided_tour/home.html:38
+msgid "If you ever change your mind, just click on the Guided Tour link to start your tour"
+msgstr "Se iam vi ŝanĝos decidon, simple alklaku la ligilon «Gvidhelpon» por esti gvidata"
+
+#: bookwyrm/templates/guided_tour/home.html:62
+msgid "Search for books, users, or lists using this search box."
+msgstr "Serĉu librojn, uzantojn aŭ listojn per ĉi tiu serĉkampo."
+
+#: bookwyrm/templates/guided_tour/home.html:63
+msgid "Search box"
+msgstr "Serĉkampo"
+
+#: bookwyrm/templates/guided_tour/home.html:79
+msgid "Search book records by scanning an ISBN barcode using your device's camera - great when you're in the bookstore or library!"
+msgstr "Serĉu libroregistrojn per skanado de strikodo ISBN per la kamerao de via poŝtelefono – perfekte kiam vi estas en librovendejo aŭ biblioteko!"
+
+#: bookwyrm/templates/guided_tour/home.html:80
+msgid "Barcode reader"
+msgstr "Strikodolegilo"
+
+#: bookwyrm/templates/guided_tour/home.html:102
+msgid "Use the Feed , Lists and Discover links to discover the latest news from your feed, lists of books by topic, and the latest happenings on this Bookwyrm server!"
+msgstr "Uzu la ligilojn Fluo , Listoj kaj Malkovri por malkovri la plej lastajn novaĵojn de via fluo, listojn de libroj laŭ temo, kaj la lastajn okazaĵojn ĉe ĉi tiu servilo de Bookwyrm!"
+
+#: bookwyrm/templates/guided_tour/home.html:103
+msgid "Navigation Bar"
+msgstr "Naviga breto"
+
+#: bookwyrm/templates/guided_tour/home.html:126
+msgid "Books on your reading status shelves will be shown here."
+msgstr "La libroj sur viaj bretoj de legostato montriĝos ĉi tie."
+
+#: bookwyrm/templates/guided_tour/home.html:151
+msgid "Updates from people you are following will appear in your Home timeline. The Books tab shows activity from anyone, related to your books."
+msgstr "Ĝisdatigoj de homoj kiujn vi sekvas aperos en via novaĵfluo sub Hejmo . La langeto Libroj montras aktivecon de iu ajn, rilatan al viaj libroj."
+
+#: bookwyrm/templates/guided_tour/home.html:152
+msgid "Timelines"
+msgstr "Novaĵfluoj"
+
+#: bookwyrm/templates/guided_tour/home.html:176
+msgid "The bell will light up when you have a new notification. When it does, click on it to find out what exciting thing has happened!"
+msgstr "La sonorilo briliĝos kiam vi havos novan atentigon. Kiam ĝi estos brila, alklaku ĝin por scii kia interesa afero okazis!"
+
+#: bookwyrm/templates/guided_tour/home.html:177
+#: bookwyrm/templates/layout.html:75 bookwyrm/templates/layout.html:106
+#: bookwyrm/templates/layout.html:107
+#: bookwyrm/templates/notifications/notifications_page.html:5
+#: bookwyrm/templates/notifications/notifications_page.html:10
+msgid "Notifications"
+msgstr "Atentigoj"
+
+#: bookwyrm/templates/guided_tour/home.html:200
+msgid "Your profile, books, direct messages, and settings can be accessed by clicking on your name in the menu here."
+msgstr "Viaj profilo, libroj, rektaj mesaĝoj kaj agordoj estas alireblaj per alklako de via nomo en ĉi tiu menuo."
+
+#: bookwyrm/templates/guided_tour/home.html:200
+msgid "Try selecting Profile from the drop down menu to continue the tour."
+msgstr "Provu elekti Profilo de la falmenuo por daŭrigi la gvidhelpon."
+
+#: bookwyrm/templates/guided_tour/home.html:201
+msgid "Profile and settings menu"
+msgstr "Menuo de profilo kaj agordoj"
+
+#: bookwyrm/templates/guided_tour/lists.html:13
+msgid "This is the lists page where you can discover book lists created by any user. A List is a collection of books, similar to a shelf."
+msgstr "Ĉi tio estas la paĝo pri listoj kie vi povas malkovri librolistojn kreitajn de iu ajn uzanto. Listo estas kolekto de libroj, simile al breto."
+
+#: bookwyrm/templates/guided_tour/lists.html:13
+msgid "Shelves are for organising books for yourself, whereas Lists are generally for sharing with others."
+msgstr "Bretoj estas por organizi librojn por vi mem, dum Listoj ĝenerale estas por kunhavigi kun aliuloj."
+
+#: bookwyrm/templates/guided_tour/lists.html:34
+msgid "Let's see how to create a new list."
+msgstr "Ni vidu kiel krei novan liston."
+
+#: bookwyrm/templates/guided_tour/lists.html:34
+msgid "Click the Create List button, then Next to continue the tour"
+msgstr "Alklaku la butonon Krei liston , kaj sekve Sekva por daŭrigi la gvidhelpon"
+
+#: bookwyrm/templates/guided_tour/lists.html:35
+#: bookwyrm/templates/guided_tour/lists.html:59
+msgid "Creating a new list"
+msgstr "Krei novan liston"
+
+#: bookwyrm/templates/guided_tour/lists.html:58
+msgid "You must give your list a name and can optionally give it a description to help other people understand what your list is about."
+msgstr "Vi devas nomi vian liston kaj vi povas doni al ĝi nedevigan priskribon por helpi aliajn homojn kompreni ĝian temon."
+
+#: bookwyrm/templates/guided_tour/lists.html:81
+msgid "Choose who can see your list here. List privacy options work just like we saw when posting book reviews. This is a common pattern throughout Bookwyrm."
+msgstr "Elektu tiujn kiuj povas vidi vian liston ĉi tie. La agordoj de listoprivateco funkcias same kiel ni jam vidis pri librorecenzoj. Ĉi tia privatecagordo estas ofta afero tra la tuta Bookwyrm."
+
+#: bookwyrm/templates/guided_tour/lists.html:82
+msgid "List privacy"
+msgstr "Listoprivateco"
+
+#: bookwyrm/templates/guided_tour/lists.html:105
+msgid "You can also decide how your list is to be curated - only by you, by anyone, or by a group."
+msgstr "Vi ankaŭ povas decidi kiu estros vian liston – nur vi, iu ajn, aŭ iu grupo."
+
+#: bookwyrm/templates/guided_tour/lists.html:106
+msgid "List curation"
+msgstr "Listestroj"
+
+#: bookwyrm/templates/guided_tour/lists.html:128
+msgid "Next in our tour we will explore Groups!"
+msgstr "En la sekva parto de la gvido ni esploros Grupojn!"
+
+#: bookwyrm/templates/guided_tour/lists.html:129
+msgid "Next: Groups"
+msgstr "Sekve: Grupoj"
+
+#: bookwyrm/templates/guided_tour/lists.html:143
+msgid "Take me there"
+msgstr "Iri tien"
+
+#: bookwyrm/templates/guided_tour/search.html:16
+msgid "If the book you are looking for is available on a remote catalogue such as Open Library, click on Import book ."
+msgstr "Se la libro kiun vi serĉas estas disponebla en ekstera katalogo kiel Open Library, alklaku Importi libron ."
+
+#: bookwyrm/templates/guided_tour/search.html:17
+#: bookwyrm/templates/guided_tour/search.html:44
+msgid "Searching"
+msgstr "Serĉado"
+
+#: bookwyrm/templates/guided_tour/search.html:43
+msgid "If the book you are looking for is already on this Bookwyrm instance, you can click on the title to go to the book's page."
+msgstr "Se la libro kiun vi serĉas jam troviĝas en ĉi tiu instanco de Bookwyrm, vi povas alklaki la titolon por iri al la paĝo de la libro."
+
+#: bookwyrm/templates/guided_tour/search.html:71
+msgid "If the book you are looking for is not listed, try loading more records from other sources like Open Library or Inventaire."
+msgstr "Se la libro kiun vi serĉas ne aperas en la listo, provu ŝarĝi de aliaj fontoj kiel Open Library aŭ Inventaire."
+
+#: bookwyrm/templates/guided_tour/search.html:72
+msgid "Load more records"
+msgstr "Ŝarĝi per pli da registroj"
+
+#: bookwyrm/templates/guided_tour/search.html:98
+msgid "If your book is not in the results, try adjusting your search terms."
+msgstr "Se via libro ne estas en la rezultoj, provu ŝanĝeti la serĉvortojn."
+
+#: bookwyrm/templates/guided_tour/search.html:99
+msgid "Search again"
+msgstr "Serĉi denove"
+
+#: bookwyrm/templates/guided_tour/search.html:121
+msgid "If you still can't find your book, you can add a record manually."
+msgstr "Se vi ankoraŭ ne trovas vian libron, vi povas aldoni ĝin permane."
+
+#: bookwyrm/templates/guided_tour/search.html:122
+msgid "Add a record manually"
+msgstr "Aldoni libron permane"
+
+#: bookwyrm/templates/guided_tour/search.html:147
+msgid "Import, manually add, or view an existing book to continue the tour."
+msgstr "Alklaku ekzistantan libron, aŭ importu aŭ permane aldonu libron por daŭrigi la gvidhelpon."
+
+#: bookwyrm/templates/guided_tour/search.html:148
+msgid "Continue the tour"
+msgstr "Daŭrigi la gvidhelpon"
+
+#: bookwyrm/templates/guided_tour/user_books.html:10
+msgid "This is the page where your books are listed, organised into shelves."
+msgstr "Jen la paĝo kie oni listigas viajn librojn, organizitajn en bretojn."
+
+#: bookwyrm/templates/guided_tour/user_books.html:11
+#: bookwyrm/templates/user/books_header.html:4
+msgid "Your books"
+msgstr "Viaj libroj"
+
+#: bookwyrm/templates/guided_tour/user_books.html:31
+msgid "To Read , Currently Reading , Read , and Stopped Reading are default shelves. When you change the reading status of a book it will automatically be moved to the matching shelf. A book can only be on one default shelf at a time."
+msgstr "Legota , Legata , Legita kaj Haltigita legado estas defaŭltaj bretoj. Kiam vi ŝanĝas la legostaton de libro ĝi aŭtomate moviĝos al la taŭga breto. Libro povas esti sur nur unu defaŭlta breto samtempe."
+
+#: bookwyrm/templates/guided_tour/user_books.html:32
+msgid "Reading status shelves"
+msgstr "Bretoj de legostato"
+
+#: bookwyrm/templates/guided_tour/user_books.html:55
+msgid "You can create additional custom shelves to organise your books. A book on a custom shelf can be on any number of other shelves simultaneously, including one of the default reading status shelves"
+msgstr "Vi povas aldone krei personajn bretojn por organizi viajn librojn. Libro sur aldona breto povas esti sur iom ajn da aliaj bretoj samtempe, inkluzive unu el la defaŭltaj bretoj de legostato"
+
+#: bookwyrm/templates/guided_tour/user_books.html:56
+msgid "Adding custom shelves."
+msgstr "Aldoni personajn bretojn."
+
+#: bookwyrm/templates/guided_tour/user_books.html:78
+msgid "If you have an export file from another service like Goodreads or LibraryThing, you can import it here."
+msgstr "Se vi havas eksportan dosieron de alia servo kiel Goodreads aŭ LibraryThing, vi povas importi ĝin ĉi tie."
+
+#: bookwyrm/templates/guided_tour/user_books.html:79
+msgid "Import from another service"
+msgstr "Importi de alia servo"
+
+#: bookwyrm/templates/guided_tour/user_books.html:101
+msgid "Now that we've explored book shelves, let's take a look at a related concept: book lists!"
+msgstr "Nun ke ni finis esplori la librobretojn, ni rigardu rilatan koncepton: librolistojn!"
+
+#: bookwyrm/templates/guided_tour/user_books.html:101
+msgid "Click on the Lists link here to continue the tour."
+msgstr "Alklaku la ligilon Listoj ĉi tie por daŭrigi la gvidhelpon."
+
+#: bookwyrm/templates/guided_tour/user_groups.html:10
+msgid "You can create or join a group with other users. Groups can share group-curated book lists, and in future will be able to do other things."
+msgstr "Vi povas krei grupon aŭ aliĝi al grupo kun aliaj uzantoj. Grupoj povas kunhavigi librolistojn estratajn de la grupo, kaj estontece povos fari ankaŭ aliajn aferojn."
+
+#: bookwyrm/templates/guided_tour/user_groups.html:11
+#: bookwyrm/templates/guided_tour/user_profile.html:55
+#: bookwyrm/templates/user/layout.html:83
+msgid "Groups"
+msgstr "Grupoj"
+
+#: bookwyrm/templates/guided_tour/user_groups.html:31
+msgid "Let's create a new group!"
+msgstr "Ni kreu novan grupon!"
+
+#: bookwyrm/templates/guided_tour/user_groups.html:31
+msgid "Click the Create group button, then Next to continue the tour"
+msgstr "Alklaku la butonon Krei grupon kaj sekve la butonon Sekva por daŭrigi la gvidhelpon"
+
+#: bookwyrm/templates/guided_tour/user_groups.html:55
+msgid "Give your group a name and describe what it is about. You can make user groups for any purpose - a reading group, a bunch of friends, whatever!"
+msgstr "Nomu vian grupon kaj priskribu ĝian temon. Vi povas fari grupon por iu ajn celo – legoklubo, amikaro, ian ajn kian vi volas!"
+
+#: bookwyrm/templates/guided_tour/user_groups.html:56
+msgid "Creating a group"
+msgstr "Krei grupon"
+
+#: bookwyrm/templates/guided_tour/user_groups.html:78
+msgid "Groups have privacy settings just like posts and lists, except that group privacy cannot be Followers ."
+msgstr "Grupoj havas agordojn de privateco same kiel afiŝoj kaj listoj, krom ke la grupoprivateco ne povas esti Sekvantoj ."
+
+#: bookwyrm/templates/guided_tour/user_groups.html:79
+msgid "Group visibility"
+msgstr "Videbleco de grupo"
+
+#: bookwyrm/templates/guided_tour/user_groups.html:102
+msgid "Once you're happy with how everything is set up, click the Save button to create your new group."
+msgstr "Kiam la agordoj ŝajnas kontentigaj, alklaku la butonon Konservi por krei vian novan grupon."
+
+#: bookwyrm/templates/guided_tour/user_groups.html:102
+msgid "Create and save a group to continue the tour."
+msgstr "Kreu grupon kaj konservu ĝin por daŭrigi la gvidhelpon."
+
+#: bookwyrm/templates/guided_tour/user_groups.html:103
+msgid "Save your group"
+msgstr "Konservi vian grupon"
+
+#: bookwyrm/templates/guided_tour/user_profile.html:10
+msgid "This is your user profile. All your latest activities will be listed here. Other Bookwyrm users can see parts of this page too - what they can see depends on your privacy settings."
+msgstr "Jen via profilpaĝo. Ĉiuj viaj lastaj agoj listiĝos ĉi tie. Ankaŭ aliaj uzantoj de Bookwyrm povas vidi partojn de ĉi tiu paĝo – tio kion ili vidis dependas de viaj agordoj de privateco."
+
+#: bookwyrm/templates/guided_tour/user_profile.html:11
+#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:14
+msgid "User Profile"
+msgstr "Profilo"
+
+#: bookwyrm/templates/guided_tour/user_profile.html:31
+msgid "This tab shows everything you have read towards your annual reading goal, or allows you to set one. You don't have to set a reading goal if that's not your thing!"
+msgstr "Ĉi tiu langeto montras ĉion kion vi legis por atingi vian jaran legocelon, aŭ ĝi permesas al vi agordi celon. Agordi legocelon ne estas devige se tio ne interesas vin!"
+
+#: bookwyrm/templates/guided_tour/user_profile.html:32
+#: bookwyrm/templates/user/layout.html:77
+msgid "Reading Goal"
+msgstr "Legocelo"
+
+#: bookwyrm/templates/guided_tour/user_profile.html:54
+msgid "Here you can see your groups, or create a new one. A group brings together Bookwyrm users and allows them to curate lists together."
+msgstr "Ĉi tie vi povas vidi viajn grupojn, aŭ krei novan. Grupoj kunigis uzantojn de Bookwyrm kaj ebligas al ili kune estri listojn."
+
+#: bookwyrm/templates/guided_tour/user_profile.html:77
+msgid "You can see your lists, or create a new one, here. A list is a collection of books that have something in common."
+msgstr "Ĉi tie vi povas vidi viajn listojn, aŭ krei novan. Listoj estas kolektoj de libroj kiuj havas ion komunan."
+
+#: bookwyrm/templates/guided_tour/user_profile.html:100
+msgid "The Books tab shows your book shelves. We'll explore this later in the tour."
+msgstr "La langeto Libroj montras viajn librobretojn. Ni esploros tion poste dum la gvidhelpo."
+
+#: bookwyrm/templates/guided_tour/user_profile.html:123
+msgid "Now you understand the basics of your profile page, let's add a book to your shelves."
+msgstr "Nun ke vi komprenas la bazojn de via profilpaĝo, ni aldonu libron al viaj bretoj."
+
+#: bookwyrm/templates/guided_tour/user_profile.html:123
+msgid "Search for a title or author to continue the tour."
+msgstr "Serĉu titolon aŭ aŭtoron por daŭrigi la gvidhelpon."
+
+#: bookwyrm/templates/guided_tour/user_profile.html:124
+msgid "Find a book"
+msgstr "Trovi libron"
+
+#: bookwyrm/templates/hashtag.html:12
+#, python-format
+msgid "See tagged statuses in the local %(site_name)s community"
+msgstr "Vidu la afiŝojn kun etikedoj en la loka komunumo de %(site_name)s"
+
+#: bookwyrm/templates/hashtag.html:25
+msgid "No activities for this hashtag yet!"
+msgstr "Ankoraŭ neniu agado por ĉi tiu kradvorto!"
+
+#: bookwyrm/templates/import/import.html:5
+#: bookwyrm/templates/import/import.html:9
+#: bookwyrm/templates/shelf/shelf.html:64
+msgid "Import Books"
+msgstr "Importi librojn"
+
+#: bookwyrm/templates/import/import.html:13
+msgid "Not a valid CSV file"
+msgstr "La CSV-a dosiero ne validas"
+
+#: bookwyrm/templates/import/import.html:20
+#, python-format
+msgid "Currently you are allowed to import %(import_size_limit)s books every %(import_limit_reset)s days."
+msgstr "Aktuale vi rajtas importi %(import_size_limit)s librojn ĉiujn %(import_limit_reset)s tagojn."
+
+#: bookwyrm/templates/import/import.html:21
+#, python-format
+msgid "You have %(allowed_imports)s left."
+msgstr "Restas al vi %(allowed_imports)s."
+
+#: bookwyrm/templates/import/import.html:28
+#, python-format
+msgid "On average, recent imports have taken %(hours)s hours."
+msgstr "Averaĝe, lastatempaj importoj bezonis %(hours)s horojn."
+
+#: bookwyrm/templates/import/import.html:32
+#, python-format
+msgid "On average, recent imports have taken %(minutes)s minutes."
+msgstr "Averaĝe, lastatempaj importoj bezonis %(minutes)s minutojn."
+
+#: bookwyrm/templates/import/import.html:47
+msgid "Data source:"
+msgstr "Fonto de la datumoj:"
+
+#: bookwyrm/templates/import/import.html:53
+msgid "Goodreads (CSV)"
+msgstr "Goodreads (CSV)"
+
+#: bookwyrm/templates/import/import.html:56
+msgid "Storygraph (CSV)"
+msgstr "Storygraph (CSV)"
+
+#: bookwyrm/templates/import/import.html:59
+msgid "LibraryThing (TSV)"
+msgstr "LibraryThing (TSV)"
+
+#: bookwyrm/templates/import/import.html:62
+msgid "OpenLibrary (CSV)"
+msgstr "OpenLibrary (CSV)"
+
+#: bookwyrm/templates/import/import.html:65
+msgid "Calibre (CSV)"
+msgstr "Calibre (CSV)"
+
+#: bookwyrm/templates/import/import.html:71
+msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account."
+msgstr "Vi povas elŝuti vian datumaron de Goodreads per la paĝo Import/Export de via konto ĉe Goodreads."
+
+#: bookwyrm/templates/import/import.html:80
+msgid "Data file:"
+msgstr "Datumdosiero:"
+
+#: bookwyrm/templates/import/import.html:88
+msgid "Include reviews"
+msgstr "Inkluzivi recenzojn"
+
+#: bookwyrm/templates/import/import.html:93
+msgid "Privacy setting for imported reviews:"
+msgstr "Agordo de privateco por importitaj recenzoj:"
+
+#: bookwyrm/templates/import/import.html:100
+#: bookwyrm/templates/import/import.html:102
+#: bookwyrm/templates/preferences/layout.html:35
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:78
+msgid "Import"
+msgstr "Importi"
+
+#: bookwyrm/templates/import/import.html:103
+msgid "You've reached the import limit."
+msgstr "Vi atingis la limon de importado."
+
+#: bookwyrm/templates/import/import.html:112
+msgid "Imports are temporarily disabled; thank you for your patience."
+msgstr "Oni provizore malŝaltis importadon; dankon pro via pacienco."
+
+#: bookwyrm/templates/import/import.html:119
+msgid "Recent Imports"
+msgstr "Lastatempaj importoj"
+
+#: bookwyrm/templates/import/import.html:124
+#: bookwyrm/templates/settings/imports/imports.html:120
+msgid "Date Created"
+msgstr "Dato de kreado"
+
+#: bookwyrm/templates/import/import.html:127
+msgid "Last Updated"
+msgstr "Lasta ĝisdatigo"
+
+#: bookwyrm/templates/import/import.html:130
+#: bookwyrm/templates/settings/imports/imports.html:129
+msgid "Items"
+msgstr "Aĵoj"
+
+#: bookwyrm/templates/import/import.html:139
+msgid "No recent imports"
+msgstr "Neniu lastatempa importo"
+
+#: bookwyrm/templates/import/import_status.html:6
+#: bookwyrm/templates/import/import_status.html:15
+#: bookwyrm/templates/import/import_status.html:29
+msgid "Import Status"
+msgstr "Stato de importo"
+
+#: bookwyrm/templates/import/import_status.html:13
+#: bookwyrm/templates/import/import_status.html:27
+msgid "Retry Status"
+msgstr "Stato de reprovo"
+
+#: bookwyrm/templates/import/import_status.html:22
+#: bookwyrm/templates/settings/celery.html:44
+#: bookwyrm/templates/settings/imports/imports.html:6
+#: bookwyrm/templates/settings/imports/imports.html:9
+#: bookwyrm/templates/settings/layout.html:82
+msgid "Imports"
+msgstr "Importoj"
+
+#: bookwyrm/templates/import/import_status.html:39
+msgid "Import started:"
+msgstr "Komenco de la importo:"
+
+#: bookwyrm/templates/import/import_status.html:48
+msgid "In progress"
+msgstr "Okazanta"
+
+#: bookwyrm/templates/import/import_status.html:50
+msgid "Refresh"
+msgstr "Aktualigi"
+
+#: bookwyrm/templates/import/import_status.html:72
+#: bookwyrm/templates/settings/imports/imports.html:161
+msgid "Stop import"
+msgstr "Ĉesigi la importon"
+
+#: bookwyrm/templates/import/import_status.html:78
+#, python-format
+msgid "%(display_counter)s item needs manual approval."
+msgid_plural "%(display_counter)s items need manual approval."
+msgstr[0] "%(display_counter)s aĵo bezonas permanan aproban."
+msgstr[1] "%(display_counter)s aĵoj bezonas permanan aproban."
+
+#: bookwyrm/templates/import/import_status.html:83
+#: bookwyrm/templates/import/manual_review.html:8
+msgid "Review items"
+msgstr "Kontroli la aĵojn"
+
+#: bookwyrm/templates/import/import_status.html:89
+#, python-format
+msgid "%(display_counter)s item failed to import."
+msgid_plural "%(display_counter)s items failed to import."
+msgstr[0] "%(display_counter)s aĵo malsukcesis importiĝi."
+msgstr[1] "%(display_counter)s aĵoj malsukcesis importiĝi."
+
+#: bookwyrm/templates/import/import_status.html:95
+msgid "View and troubleshoot failed items"
+msgstr "Vidi kaj korekti malsukcesintajn aĵojn"
+
+#: bookwyrm/templates/import/import_status.html:107
+msgid "Row"
+msgstr "Linio"
+
+#: bookwyrm/templates/import/import_status.html:110
+#: bookwyrm/templates/shelf/shelf.html:148
+#: bookwyrm/templates/shelf/shelf.html:170
+msgid "Title"
+msgstr "Titolo"
+
+#: bookwyrm/templates/import/import_status.html:113
+msgid "ISBN"
+msgstr "ISBN"
+
+#: bookwyrm/templates/import/import_status.html:117
+msgid "Openlibrary key"
+msgstr "Ŝlosilo de Openlibrary"
+
+#: bookwyrm/templates/import/import_status.html:121
+#: bookwyrm/templates/shelf/shelf.html:149
+#: bookwyrm/templates/shelf/shelf.html:173
+msgid "Author"
+msgstr "Aŭtoro"
+
+#: bookwyrm/templates/import/import_status.html:124
+msgid "Shelf"
+msgstr "Breto"
+
+#: bookwyrm/templates/import/import_status.html:127
+#: bookwyrm/templates/import/manual_review.html:13
+#: bookwyrm/templates/snippets/create_status.html:16
+msgid "Review"
+msgstr "Recenzo"
+
+#: bookwyrm/templates/import/import_status.html:131
+#: bookwyrm/templates/settings/link_domains/link_table.html:9
+msgid "Book"
+msgstr "Libro"
+
+#: bookwyrm/templates/import/import_status.html:142
+msgid "Import preview unavailable."
+msgstr "Antaŭmontro de la importo ne disponeblas."
+
+#: bookwyrm/templates/import/import_status.html:150
+msgid "No items currently need review"
+msgstr "Neniu aĵo aktuale bezonas kontrolon"
+
+#: bookwyrm/templates/import/import_status.html:186
+msgid "View imported review"
+msgstr "Vidi la importitan recenzon"
+
+#: bookwyrm/templates/import/import_status.html:200
+msgid "Imported"
+msgstr "Importita"
+
+#: bookwyrm/templates/import/import_status.html:206
+msgid "Needs manual review"
+msgstr "Bezonas permanan kontrolon"
+
+#: bookwyrm/templates/import/import_status.html:219
+msgid "Retry"
+msgstr "Reprovi"
+
+#: bookwyrm/templates/import/import_status.html:237
+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 "Ĉi tiu importo estas en malnova formata kiu ne plu estas subtenata. Se vi ŝatus korekti mankantajn aĵojn de ĉi tiu importo, alklaku la jenan butonon por ĝisdatigi la importan formaton."
+
+#: bookwyrm/templates/import/import_status.html:239
+msgid "Update import"
+msgstr "Ĝisdatigi la importon"
+
+#: bookwyrm/templates/import/manual_review.html:5
+#: bookwyrm/templates/import/troubleshoot.html:4
+msgid "Import Troubleshooting"
+msgstr "Korektado de problemoj de importado"
+
+#: bookwyrm/templates/import/manual_review.html:21
+msgid "Approving a suggestion will permanently add the suggested book to your shelves and associate your reading dates, reviews, and ratings with that book."
+msgstr "Aprobi proponon definitive aldonos la proponitan libron al viaj bretoj kaj asociigos viajn legodatojn, recenzojn kaj traktojn kun tiu libro."
+
+#: bookwyrm/templates/import/manual_review.html:58
+#: bookwyrm/templates/lists/curate.html:71
+#: bookwyrm/templates/settings/link_domains/link_domains.html:76
+msgid "Approve"
+msgstr "Aprobi"
+
+#: bookwyrm/templates/import/manual_review.html:66
+msgid "Reject"
+msgstr "Malaprobi"
+
+#: bookwyrm/templates/import/troubleshoot.html:7
+#: bookwyrm/templates/settings/imports/imports.html:138
+msgid "Failed items"
+msgstr "Malsukcesaj aĵoj"
+
+#: bookwyrm/templates/import/troubleshoot.html:12
+msgid "Troubleshooting"
+msgstr "Problemsolvado"
+
+#: bookwyrm/templates/import/troubleshoot.html:20
+msgid "Re-trying an import can fix missing items in cases such as:"
+msgstr "Reprovi importon povas korekti mankantajn aĵojn en okazoj kiel:"
+
+#: bookwyrm/templates/import/troubleshoot.html:23
+msgid "The book has been added to the instance since this import"
+msgstr "La libro aldoniĝis al la instanco post la importo"
+
+#: bookwyrm/templates/import/troubleshoot.html:24
+msgid "A transient error or timeout caused the external data source to be unavailable."
+msgstr "Momenta eraro aŭ tempolimo kaŭzis, ke la fora datumfonto estis nedisponebla."
+
+#: bookwyrm/templates/import/troubleshoot.html:25
+msgid "BookWyrm has been updated since this import with a bug fix"
+msgstr "BookWyrm intertempe ĝisdatiĝis post la importo kun cimriparo"
+
+#: bookwyrm/templates/import/troubleshoot.html:28
+msgid "Contact your admin or open an issue if you are seeing unexpected failed items."
+msgstr "Kontaktu vian administranton aŭ raportu problemon se vi vidas neatenditajn malsukcesajn aĵojn."
+
+#: bookwyrm/templates/landing/invite.html:4
+#: bookwyrm/templates/landing/invite.html:8
+#: bookwyrm/templates/landing/login.html:48
+#: bookwyrm/templates/landing/reactivate.html:41
+msgid "Create an Account"
+msgstr "Krei konton"
+
+#: bookwyrm/templates/landing/invite.html:21
+msgid "Permission Denied"
+msgstr "Mankas permeso"
+
+#: bookwyrm/templates/landing/invite.html:22
+msgid "Sorry! This invite code is no longer valid."
+msgstr "Pardonu! Ĉi tiu invitkodo ne plu validas."
+
+#: bookwyrm/templates/landing/landing.html:9
+msgid "Recent Books"
+msgstr "Lastatempaj libroj"
+
+#: bookwyrm/templates/landing/layout.html:17
+msgid "Decentralized"
+msgstr "Malcentra"
+
+#: bookwyrm/templates/landing/layout.html:23
+msgid "Friendly"
+msgstr "Amikeca"
+
+#: bookwyrm/templates/landing/layout.html:29
+msgid "Anti-Corporate"
+msgstr "Kontraŭkomerca"
+
+#: bookwyrm/templates/landing/layout.html:46
+#, python-format
+msgid "Join %(name)s"
+msgstr "Aliĝi al %(name)s"
+
+#: bookwyrm/templates/landing/layout.html:48
+msgid "Request an Invitation"
+msgstr "Peti inviton"
+
+#: bookwyrm/templates/landing/layout.html:50
+#, python-format
+msgid "%(name)s registration is closed"
+msgstr "La aliĝo al %(name)s estas fermita"
+
+#: bookwyrm/templates/landing/layout.html:61
+msgid "Thank you! Your request has been received."
+msgstr "Dankon! Via peto bone riceviĝis."
+
+#: bookwyrm/templates/landing/layout.html:90
+msgid "Your Account"
+msgstr "Via konto"
+
+#: bookwyrm/templates/landing/login.html:4
+msgid "Login"
+msgstr "Ensaluto"
+
+#: bookwyrm/templates/landing/login.html:7
+#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:136
+#: bookwyrm/templates/ostatus/error.html:37
+msgid "Log in"
+msgstr "Ensaluti"
+
+#: bookwyrm/templates/landing/login.html:15
+msgid "Success! Email address confirmed."
+msgstr "Sukceso! La retadreso estis konfirmita."
+
+#: bookwyrm/templates/landing/login.html:21
+#: bookwyrm/templates/landing/reactivate.html:17
+#: bookwyrm/templates/layout.html:127 bookwyrm/templates/ostatus/error.html:28
+#: bookwyrm/templates/snippets/register_form.html:4
+msgid "Username:"
+msgstr "Uzantnomo:"
+
+#: bookwyrm/templates/landing/login.html:27
+#: bookwyrm/templates/landing/password_reset.html:26
+#: bookwyrm/templates/landing/reactivate.html:23
+#: bookwyrm/templates/layout.html:131 bookwyrm/templates/ostatus/error.html:32
+#: bookwyrm/templates/preferences/2fa.html:91
+#: bookwyrm/templates/snippets/register_form.html:45
+msgid "Password:"
+msgstr "Pasvorto:"
+
+#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:133
+#: bookwyrm/templates/ostatus/error.html:34
+msgid "Forgot your password?"
+msgstr "Ĉu forgesita pasvorto?"
+
+#: bookwyrm/templates/landing/login.html:61
+#: bookwyrm/templates/landing/reactivate.html:54
+msgid "More about this site"
+msgstr "Pli pri ĉi tiu retejo"
+
+#: bookwyrm/templates/landing/password_reset.html:43
+#: bookwyrm/templates/preferences/change_password.html:33
+#: bookwyrm/templates/preferences/delete_user.html:35
+msgid "Confirm password:"
+msgstr "Konfirmu la pasvorton:"
+
+#: bookwyrm/templates/landing/password_reset_request.html:14
+#, python-format
+msgid "A password reset link will be sent to %(email)s if there is an account using that email address."
+msgstr "Ligilo por restarigi la pasvorton sendiĝos al %(email)s se ekzistas konto kun tiu retadreso."
+
+#: bookwyrm/templates/landing/password_reset_request.html:20
+msgid "A link to reset your password will be sent to your email address"
+msgstr "Ligilo por restarigi vian pasvorton sendiĝos al via retadreso"
+
+#: bookwyrm/templates/landing/password_reset_request.html:34
+msgid "Reset password"
+msgstr "Restarigi pasvorton"
+
+#: bookwyrm/templates/landing/reactivate.html:4
+#: bookwyrm/templates/landing/reactivate.html:7
+msgid "Reactivate Account"
+msgstr "Reaktivigi konton"
+
+#: bookwyrm/templates/landing/reactivate.html:32
+msgid "Reactivate account"
+msgstr "Reaktivigi la konton"
+
+#: bookwyrm/templates/layout.html:13
+#, python-format
+msgid "%(site_name)s search"
+msgstr "Serĉi en %(site_name)s"
+
+#: bookwyrm/templates/layout.html:37
+msgid "Search for a book, user, or list"
+msgstr "Serĉi libron, uzanton aŭ liston"
+
+#: bookwyrm/templates/layout.html:52 bookwyrm/templates/layout.html:53
+msgid "Scan Barcode"
+msgstr "Skani strikodon"
+
+#: bookwyrm/templates/layout.html:67
+msgid "Main navigation menu"
+msgstr "Ĉefa menuo de navigo"
+
+#: bookwyrm/templates/layout.html:87
+msgid "Feed"
+msgstr "Fluo"
+
+#: bookwyrm/templates/layout.html:132 bookwyrm/templates/ostatus/error.html:33
+msgid "password"
+msgstr "pasvorto"
+
+#: bookwyrm/templates/layout.html:144
+msgid "Join"
+msgstr "Aliĝi"
+
+#: bookwyrm/templates/layout.html:179
+msgid "Successfully posted status"
+msgstr "Sukcese afiŝis"
+
+#: bookwyrm/templates/layout.html:180
+msgid "Error posting status"
+msgstr "Eraro dum la afiŝado"
+
+#: bookwyrm/templates/lists/add_item_modal.html:8
+#, python-format
+msgid "Add \"%(title)s \" to this list"
+msgstr "Aldoni «%(title)s » al ĉi tiu listo"
+
+#: bookwyrm/templates/lists/add_item_modal.html:12
+#, python-format
+msgid "Suggest \"%(title)s \" for this list"
+msgstr "Proponi «%(title)s » por ĉi tiu listo"
+
+#: bookwyrm/templates/lists/add_item_modal.html:41
+#: bookwyrm/templates/lists/list.html:257
+msgid "Suggest"
+msgstr "Proponi"
+
+#: bookwyrm/templates/lists/bookmark_button.html:30
+msgid "Un-save"
+msgstr "Malkonservi"
+
+#: bookwyrm/templates/lists/created_text.html:5
+#, python-format
+msgid "Created by %(username)s and managed by %(groupname)s "
+msgstr "Kreita de %(username)s kaj estrata de %(groupname)s "
+
+#: bookwyrm/templates/lists/created_text.html:7
+#, python-format
+msgid "Created and curated by %(username)s "
+msgstr "Kreita kaj estrata de %(username)s "
+
+#: bookwyrm/templates/lists/created_text.html:9
+#, python-format
+msgid "Created by %(username)s "
+msgstr "Kreita de %(username)s "
+
+#: bookwyrm/templates/lists/curate.html:12
+msgid "Curate"
+msgstr "Estri"
+
+#: bookwyrm/templates/lists/curate.html:21
+msgid "Pending Books"
+msgstr "Traktotaj libroj"
+
+#: bookwyrm/templates/lists/curate.html:24
+msgid "You're all set!"
+msgstr "Neniu libro atendas vin!"
+
+#: bookwyrm/templates/lists/curate.html:45
+#: bookwyrm/templates/lists/list.html:93
+#, python-format
+msgid "%(username)s says:"
+msgstr "%(username)s diras:"
+
+#: bookwyrm/templates/lists/curate.html:55
+msgid "Suggested by"
+msgstr "Proponita de"
+
+#: bookwyrm/templates/lists/curate.html:77
+msgid "Discard"
+msgstr "Forĵeti"
+
+#: bookwyrm/templates/lists/delete_list_modal.html:4
+msgid "Delete this list?"
+msgstr "Ĉu forigi ĉi tiun liston?"
+
+#: bookwyrm/templates/lists/edit_form.html:5
+#: bookwyrm/templates/lists/layout.html:23
+msgid "Edit List"
+msgstr "Modifi la liston"
+
+#: bookwyrm/templates/lists/embed-list.html:8
+#, python-format
+msgid "%(list_name)s, a list by %(owner)s"
+msgstr "%(list_name)s, listo fare de %(owner)s"
+
+#: bookwyrm/templates/lists/embed-list.html:20
+#, python-format
+msgid "on %(site_name)s "
+msgstr "ĉe %(site_name)s "
+
+#: bookwyrm/templates/lists/embed-list.html:29
+msgid "This list is currently empty"
+msgstr "Ĉi tiu listo aktuale estas malplena"
+
+#: bookwyrm/templates/lists/form.html:19
+msgid "List curation:"
+msgstr "Estrado de la listo:"
+
+#: bookwyrm/templates/lists/form.html:31
+msgid "Closed"
+msgstr "Fermita"
+
+#: bookwyrm/templates/lists/form.html:34
+msgid "Only you can add and remove books to this list"
+msgstr "Nur vi povas aldoni kaj forigi librojn al/el ĉi tiu listo"
+
+#: bookwyrm/templates/lists/form.html:48
+msgid "Curated"
+msgstr "Estrata"
+
+#: bookwyrm/templates/lists/form.html:51
+msgid "Anyone can suggest books, subject to your approval"
+msgstr "Iu ajn povas proponi librojn sed ili bezonos vian aprobon"
+
+#: bookwyrm/templates/lists/form.html:65
+msgctxt "curation type"
+msgid "Open"
+msgstr "Malfermita"
+
+#: bookwyrm/templates/lists/form.html:68
+msgid "Anyone can add books to this list"
+msgstr "Iu ajn povas aldoni librojn al ĉi tiu listo"
+
+#: bookwyrm/templates/lists/form.html:82
+msgid "Group"
+msgstr "Grupo"
+
+#: bookwyrm/templates/lists/form.html:85
+msgid "Group members can add to and remove from this list"
+msgstr "Grupanoj povas aldoni kaj forigi librojn al/el ĉi tiu listo"
+
+#: bookwyrm/templates/lists/form.html:90
+msgid "Select Group"
+msgstr "Elekti grupon"
+
+#: bookwyrm/templates/lists/form.html:94
+msgid "Select a group"
+msgstr "Elekti grupon"
+
+#: bookwyrm/templates/lists/form.html:105
+msgid "You don't have any Groups yet!"
+msgstr "Vi ankoraŭ ne havas Grupon!"
+
+#: bookwyrm/templates/lists/form.html:107
+msgid "Create a Group"
+msgstr "Krei Grupon"
+
+#: bookwyrm/templates/lists/form.html:121
+msgid "Delete list"
+msgstr "Forigi la liston"
+
+#: bookwyrm/templates/lists/item_notes_field.html:7
+#: bookwyrm/templates/settings/federation/edit_instance.html:86
+msgid "Notes:"
+msgstr "Notoj:"
+
+#: bookwyrm/templates/lists/item_notes_field.html:19
+msgid "An optional note that will be displayed with the book."
+msgstr "Nedeviga noto kiu montriĝos kun la libro."
+
+#: bookwyrm/templates/lists/list.html:37
+msgid "That book is already on this list."
+msgstr "Tiu libro jam estas en ĉi tiu listo."
+
+#: bookwyrm/templates/lists/list.html:45
+msgid "You successfully suggested a book for this list!"
+msgstr "Vi sukcese proponis libron por ĉi tiu listo!"
+
+#: bookwyrm/templates/lists/list.html:47
+msgid "You successfully added a book to this list!"
+msgstr "Vi sukcese aldonis libron al ĉi tiu listo!"
+
+#: bookwyrm/templates/lists/list.html:54
+msgid "This list is currently empty."
+msgstr "La listo aktuale estas malplena."
+
+#: bookwyrm/templates/lists/list.html:104
+msgid "Edit notes"
+msgstr "Modifi la notojn"
+
+#: bookwyrm/templates/lists/list.html:119
+msgid "Add notes"
+msgstr "Aldoni notojn"
+
+#: bookwyrm/templates/lists/list.html:131
+#, python-format
+msgid "Added by %(username)s "
+msgstr "Aldonita de %(username)s "
+
+#: bookwyrm/templates/lists/list.html:146
+msgid "List position"
+msgstr "Pozicio"
+
+#: bookwyrm/templates/lists/list.html:152
+#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:23
+msgid "Set"
+msgstr "Apliki"
+
+#: bookwyrm/templates/lists/list.html:167
+#: bookwyrm/templates/snippets/remove_from_group_button.html:20
+msgid "Remove"
+msgstr "Forigi"
+
+#: bookwyrm/templates/lists/list.html:181
+#: bookwyrm/templates/lists/list.html:198
+msgid "Sort List"
+msgstr "Ordigi la liston"
+
+#: bookwyrm/templates/lists/list.html:191
+msgid "Direction"
+msgstr "Direkto"
+
+#: bookwyrm/templates/lists/list.html:205
+msgid "Add Books"
+msgstr "Aldoni librojn"
+
+#: bookwyrm/templates/lists/list.html:207
+msgid "Suggest Books"
+msgstr "Proponitaj libroj"
+
+#: bookwyrm/templates/lists/list.html:218
+msgid "search"
+msgstr "serĉi"
+
+#: bookwyrm/templates/lists/list.html:224
+msgid "Clear search"
+msgstr "Forigi la serĉon"
+
+#: bookwyrm/templates/lists/list.html:229
+#, python-format
+msgid "No books found matching the query \"%(query)s\""
+msgstr "Neniu libro troviĝis por la peto «%(query)s»"
+
+#: bookwyrm/templates/lists/list.html:268
+msgid "Embed this list on a website"
+msgstr "Enkorpigu ĉi tiun liston en alia retejo"
+
+#: bookwyrm/templates/lists/list.html:276
+msgid "Copy embed code"
+msgstr "Kopii la kodon de enkorpigo"
+
+#: bookwyrm/templates/lists/list.html:278
+#, python-format
+msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
+msgstr "%(list_name)s, listo farita de %(owner)s ĉe %(site_name)s"
+
+#: bookwyrm/templates/lists/list_items.html:15
+msgid "Saved"
+msgstr "Konservita"
+
+#: bookwyrm/templates/lists/lists.html:14 bookwyrm/templates/user/lists.html:9
+msgid "Your Lists"
+msgstr "Viaj listoj"
+
+#: bookwyrm/templates/lists/lists.html:36
+msgid "All Lists"
+msgstr "Ĉiuj listoj"
+
+#: bookwyrm/templates/lists/lists.html:40
+msgid "Saved Lists"
+msgstr "Konservitaj listoj"
+
+#: bookwyrm/templates/notifications/items/accept.html:18
+#, python-format
+msgid "%(related_user)s accepted your invitation to join group \"%(group_name)s \""
+msgstr "%(related_user)s akceptis vian inviton por aliĝi al la grupo «%(group_name)s »"
+
+#: bookwyrm/templates/notifications/items/accept.html:26
+#, python-format
+msgid "%(related_user)s and %(second_user)s accepted your invitation to join group \"%(group_name)s \""
+msgstr "%(related_user)s kaj %(second_user)s akceptis vian inviton por aliĝi al la grupo «%(group_name)s »"
+
+#: bookwyrm/templates/notifications/items/accept.html:36
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others accepted your invitation to join group \"%(group_name)s \""
+msgstr "%(related_user)s kaj %(other_user_display_count)s aliaj akceptis vian inviton por aliĝi al la grupo «%(group_name)s »"
+
+#: bookwyrm/templates/notifications/items/add.html:33
+#, python-format
+msgid "%(related_user)s added %(book_title)s to your list \"%(list_name)s \""
+msgstr "%(related_user)s aldonis %(book_title)s al via listo «%(list_name)s »"
+
+#: bookwyrm/templates/notifications/items/add.html:39
+#, python-format
+msgid "%(related_user)s suggested adding %(book_title)s to your list \"%(list_name)s \""
+msgstr "%(related_user)s proponis aldoni %(book_title)s al via listo «%(list_name)s »"
+
+#: bookwyrm/templates/notifications/items/add.html:47
+#, python-format
+msgid "%(related_user)s added %(book_title)s and %(second_book_title)s to your list \"%(list_name)s \""
+msgstr "%(related_user)s aldonis %(book_title)s kaj %(second_book_title)s al via listo «%(list_name)s »"
+
+#: bookwyrm/templates/notifications/items/add.html:54
+#, python-format
+msgid "%(related_user)s suggested adding %(book_title)s and %(second_book_title)s to your list \"%(list_name)s \""
+msgstr "%(related_user)s proponis aldoni %(book_title)s kaj %(second_book_title)s al via listo «%(list_name)s »"
+
+#: bookwyrm/templates/notifications/items/add.html:66
+#, python-format
+msgid "%(related_user)s added a book to one of your lists"
+msgstr "%(related_user)s aldonis libron al unu el viaj listoj"
+
+#: bookwyrm/templates/notifications/items/add.html:72
+#, python-format
+msgid "%(related_user)s added %(book_title)s , %(second_book_title)s , and %(display_count)s other book to your list \"%(list_name)s \""
+msgid_plural "%(related_user)s added %(book_title)s , %(second_book_title)s , and %(display_count)s other books to your list \"%(list_name)s \""
+msgstr[0] "%(related_user)s aldonis %(book_title)s , %(second_book_title)s kaj %(display_count)s alian libron al via listo «%(list_name)s »"
+msgstr[1] "%(related_user)s aldonis %(book_title)s , %(second_book_title)s kaj %(display_count)s aliajn librojn al via listo «%(list_name)s »"
+
+#: bookwyrm/templates/notifications/items/add.html:88
+#, python-format
+msgid "%(related_user)s suggested adding %(book_title)s , %(second_book_title)s , and %(display_count)s other book to your list \"%(list_name)s \""
+msgid_plural "%(related_user)s suggested adding %(book_title)s , %(second_book_title)s , and %(display_count)s other books to your list \"%(list_name)s \""
+msgstr[0] "%(related_user)s proponis aldoni %(book_title)s , %(second_book_title)s kaj %(display_count)s alian libron al via listo «%(list_name)s »"
+msgstr[1] "%(related_user)s proponis aldoni %(book_title)s , %(second_book_title)s kaj %(display_count)s aliajn librojn al via listo «%(list_name)s »"
+
+#: bookwyrm/templates/notifications/items/boost.html:21
+#, python-format
+msgid "%(related_user)s boosted your review of %(book_title)s "
+msgstr "%(related_user)s diskonigis vian recenzon de %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/boost.html:27
+#, python-format
+msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s "
+msgstr "%(related_user)s kaj %(second_user)s diskonigis vian recenzon de %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/boost.html:36
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s "
+msgstr "%(related_user)s kaj %(other_user_display_count)s aliaj diskonigis vian recenzon de %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/boost.html:44
+#, python-format
+msgid "%(related_user)s boosted your comment on %(book_title)s "
+msgstr "%(related_user)s diskonigis vian komenton pri %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/boost.html:50
+#, python-format
+msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s "
+msgstr "%(related_user)s kaj %(second_user)s diskonigis vian komenton pri %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/boost.html:59
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s "
+msgstr "%(related_user)s kaj %(other_user_display_count)s aliaj diskonigis vian komenton pri %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/boost.html:67
+#, python-format
+msgid "%(related_user)s boosted your quote from %(book_title)s "
+msgstr "%(related_user)s diskonigis vian citaĵon de %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/boost.html:73
+#, python-format
+msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s "
+msgstr "%(related_user)s kaj %(second_user)s diskonigis vian citaĵon de %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/boost.html:82
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s "
+msgstr "%(related_user)s kaj %(other_user_display_count)s aliaj diskonigis vian citaĵon de %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/boost.html:90
+#, python-format
+msgid "%(related_user)s boosted your status "
+msgstr "%(related_user)s diskonigis vian afiŝon "
+
+#: bookwyrm/templates/notifications/items/boost.html:96
+#, python-format
+msgid "%(related_user)s and %(second_user)s boosted your status "
+msgstr "%(related_user)s kaj %(second_user)s diskonigis vian afiŝon "
+
+#: bookwyrm/templates/notifications/items/boost.html:105
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others boosted your status "
+msgstr "%(related_user)s kaj %(other_user_display_count)s aliaj diskonigis vian afiŝon "
+
+#: bookwyrm/templates/notifications/items/fav.html:21
+#, python-format
+msgid "%(related_user)s liked your review of %(book_title)s "
+msgstr "%(related_user)s ŝatis vian recenzon de %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/fav.html:27
+#, python-format
+msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s "
+msgstr "%(related_user)s kaj %(second_user)s ŝatis vian recenzon de %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/fav.html:36
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others liked your review of %(book_title)s "
+msgstr "%(related_user)s kaj %(other_user_display_count)s aliaj ŝatis vian recenzon de %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/fav.html:44
+#, python-format
+msgid "%(related_user)s liked your comment on %(book_title)s "
+msgstr "%(related_user)s ŝatis vian komenton pri %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/fav.html:50
+#, python-format
+msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s "
+msgstr "%(related_user)s kaj %(second_user)s ŝatis vian komenton pri %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/fav.html:59
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others liked your comment on %(book_title)s "
+msgstr "%(related_user)s kaj %(other_user_display_count)s aliaj ŝatis vian komenton pri %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/fav.html:67
+#, python-format
+msgid "%(related_user)s liked your quote from %(book_title)s "
+msgstr "%(related_user)s ŝatis vian citaĵon de %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/fav.html:73
+#, python-format
+msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s "
+msgstr "%(related_user)s kaj %(second_user)s ŝatis vian citaĵon de %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/fav.html:82
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others liked your quote from %(book_title)s "
+msgstr "%(related_user)s kaj %(other_user_display_count)s aliaj ŝatis vian citaĵon de %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/fav.html:90
+#, python-format
+msgid "%(related_user)s liked your status "
+msgstr "%(related_user)s ŝatis vian afiŝon "
+
+#: bookwyrm/templates/notifications/items/fav.html:96
+#, python-format
+msgid "%(related_user)s and %(second_user)s liked your status "
+msgstr "%(related_user)s kaj %(second_user)s ŝatis vian afiŝon "
+
+#: bookwyrm/templates/notifications/items/fav.html:105
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others liked your status "
+msgstr "%(related_user)s kaj %(other_user_display_count)s aliaj ŝatis vian afiŝon "
+
+#: bookwyrm/templates/notifications/items/follow.html:16
+#, python-format
+msgid "%(related_user)s followed you"
+msgstr "%(related_user)s eksekvis vin"
+
+#: bookwyrm/templates/notifications/items/follow.html:20
+#, python-format
+msgid "%(related_user)s and %(second_user)s followed you"
+msgstr "%(related_user)s kaj %(second_user)s eksekvis vin"
+
+#: bookwyrm/templates/notifications/items/follow.html:25
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others followed you"
+msgstr "%(related_user)s kaj %(other_user_display_count)s aliaj ekvekvis vin"
+
+#: bookwyrm/templates/notifications/items/follow_request.html:15
+#, python-format
+msgid "%(related_user)s sent you a follow request"
+msgstr "%(related_user)s sendis al vi peton de sekvado"
+
+#: bookwyrm/templates/notifications/items/import.html:14
+#, python-format
+msgid "Your import completed."
+msgstr "Via importo finiĝis."
+
+#: bookwyrm/templates/notifications/items/invite.html:16
+#, python-format
+msgid "%(related_user)s invited you to join the group \"%(group_name)s \""
+msgstr "%(related_user)s invitis vin aliĝi al la grupo «%(group_name)s »"
+
+#: bookwyrm/templates/notifications/items/join.html:16
+#, python-format
+msgid "has joined your group \"%(group_name)s \""
+msgstr "aliĝis al via grupo «%(group_name)s »"
+
+#: bookwyrm/templates/notifications/items/leave.html:18
+#, python-format
+msgid "%(related_user)s has left your group \"%(group_name)s \""
+msgstr "%(related_user)s foriris de via grupo «%(group_name)s »"
+
+#: bookwyrm/templates/notifications/items/leave.html:26
+#, python-format
+msgid "%(related_user)s and %(second_user)s have left your group \"%(group_name)s \""
+msgstr "%(related_user)s kaj %(second_user)s foriris de via grupo «%(group_name)s »"
+
+#: bookwyrm/templates/notifications/items/leave.html:36
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
+msgstr "%(related_user)s kaj %(other_user_display_count)s aliaj foriris de via grupo «%(group_name)s »"
+
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] "Nova domajno en ligilo bezonas kontrolon"
+msgstr[1] "%(display_count)s novaj domajnoj en ligiloj bezonas kontrolon"
+
+#: bookwyrm/templates/notifications/items/mention.html:20
+#, python-format
+msgid "%(related_user)s mentioned you in a review of %(book_title)s "
+msgstr "%(related_user)s menciis vin en recenzo de %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/mention.html:26
+#, python-format
+msgid "%(related_user)s mentioned you in a comment on %(book_title)s "
+msgstr "%(related_user)s menciis vin en komento pri %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/mention.html:32
+#, python-format
+msgid "%(related_user)s mentioned you in a quote from %(book_title)s "
+msgstr "%(related_user)s menciis vin en citaĵo de %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/mention.html:38
+#, python-format
+msgid "%(related_user)s mentioned you in a status "
+msgstr "%(related_user)s menciis vin en afiŝo "
+
+#: bookwyrm/templates/notifications/items/remove.html:17
+#, python-format
+msgid "has been removed from your group \"%(group_name)s \""
+msgstr "estis forigita de via grupo «%(group_name)s »"
+
+#: bookwyrm/templates/notifications/items/remove.html:23
+#, python-format
+msgid "You have been removed from the \"%(group_name)s \" group"
+msgstr "Vi estis forigita de la grupo «%(group_name)s »"
+
+#: bookwyrm/templates/notifications/items/reply.html:21
+#, python-format
+msgid "%(related_user)s replied to your review of %(book_title)s "
+msgstr "%(related_user)s respondis al via recenzo de %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/reply.html:27
+#, python-format
+msgid "%(related_user)s replied to your comment on %(book_title)s "
+msgstr "%(related_user)s respondis al via komento pri %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/reply.html:33
+#, python-format
+msgid "%(related_user)s replied to your quote from %(book_title)s "
+msgstr "%(related_user)s respondis al via citaĵo de %(book_title)s "
+
+#: bookwyrm/templates/notifications/items/reply.html:39
+#, python-format
+msgid "%(related_user)s replied to your status "
+msgstr "%(related_user)s respondis al via afiŝo "
+
+#: bookwyrm/templates/notifications/items/report.html:15
+#, python-format
+msgid "A new report needs moderation"
+msgid_plural "%(display_count)s new reports need moderation"
+msgstr[0] "Nova raporto bezonas kontrolon"
+msgstr[1] "%(display_count)s novaj raportoj bezonas kontrolon"
+
+#: bookwyrm/templates/notifications/items/status_preview.html:4
+#: bookwyrm/templates/snippets/status/content_status.html:73
+msgid "Content warning"
+msgstr "Averto pri enhavo"
+
+#: bookwyrm/templates/notifications/items/update.html:16
+#, python-format
+msgid "has changed the privacy level for %(group_name)s "
+msgstr "ŝanĝis la nivelon de privateco de la grupo %(group_name)s "
+
+#: bookwyrm/templates/notifications/items/update.html:20
+#, python-format
+msgid "has changed the name of %(group_name)s "
+msgstr "ŝanĝis la nomon de la grupo %(group_name)s "
+
+#: bookwyrm/templates/notifications/items/update.html:24
+#, python-format
+msgid "has changed the description of %(group_name)s "
+msgstr "ŝanĝis la priskribon de la grupo %(group_name)s "
+
+#: bookwyrm/templates/notifications/notifications_page.html:19
+msgid "Delete notifications"
+msgstr "Forigi la atentigojn"
+
+#: bookwyrm/templates/notifications/notifications_page.html:31
+msgid "All"
+msgstr "Ĉiuj"
+
+#: bookwyrm/templates/notifications/notifications_page.html:35
+msgid "Mentions"
+msgstr "Mencioj"
+
+#: bookwyrm/templates/notifications/notifications_page.html:47
+msgid "You're all caught up!"
+msgstr "Estas neniu nova atentigo!"
+
+#: bookwyrm/templates/ostatus/error.html:7
+#, python-format
+msgid "%(account)s is not a valid username"
+msgstr "%(account)s ne estas valida uzantonomo"
+
+#: bookwyrm/templates/ostatus/error.html:8
+#: bookwyrm/templates/ostatus/error.html:13
+msgid "Check you have the correct username before trying again"
+msgstr "Certigu ke vi havas la ĝustan uzantonomon antaŭ ol reprovi"
+
+#: 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 "%(account)s ne troviĝis aŭ %(remote_domain)s
ne subtenas malkovron de identecoj"
+
+#: bookwyrm/templates/ostatus/error.html:17
+#, python-format
+msgid "%(account)s was found but %(remote_domain)s
does not support 'remote follow'"
+msgstr "%(account)s troviĝis sed %(remote_domain)s
ne subtenas ‘foran sekvadon’"
+
+#: bookwyrm/templates/ostatus/error.html:18
+#, python-format
+msgid "Try searching for %(user)s on %(remote_domain)s
instead"
+msgstr "Provu serĉi %(user)s ĉe %(remote_domain)s
anstataŭe"
+
+#: bookwyrm/templates/ostatus/error.html:46
+#, python-format
+msgid "Something went wrong trying to follow %(account)s "
+msgstr "Io malsukcesis dum la provo sekvi %(account)s "
+
+#: bookwyrm/templates/ostatus/error.html:47
+msgid "Check you have the correct username before trying again."
+msgstr "Certigu ke vi havas la ĝustan uzantonomon antaŭ ol reprovi."
+
+#: bookwyrm/templates/ostatus/error.html:51
+#, python-format
+msgid "You have blocked %(account)s "
+msgstr "Vi blokis %(account)s "
+
+#: bookwyrm/templates/ostatus/error.html:55
+#, python-format
+msgid "%(account)s has blocked you"
+msgstr "%(account)s blokis vin"
+
+#: bookwyrm/templates/ostatus/error.html:59
+#, python-format
+msgid "You are already following %(account)s "
+msgstr "Vi jam sekvas %(account)s "
+
+#: bookwyrm/templates/ostatus/error.html:63
+#, python-format
+msgid "You have already requested to follow %(account)s "
+msgstr "Vi jam petis sekvi %(account)s "
+
+#: bookwyrm/templates/ostatus/remote_follow.html:6
+#, python-format
+msgid "Follow %(username)s on the fediverse"
+msgstr "Sekvu %(username)s en la fediverso"
+
+#: bookwyrm/templates/ostatus/remote_follow.html:33
+#, python-format
+msgid "Follow %(username)s from another Fediverse account like BookWyrm, Mastodon, or Pleroma."
+msgstr "Sekvu %(username)s per alia fediversa konto kiel BookWyrm, Mastodon aŭ Pleroma."
+
+#: bookwyrm/templates/ostatus/remote_follow.html:40
+msgid "User handle to follow from:"
+msgstr "Konto per kiu vi volas sekvi:"
+
+#: bookwyrm/templates/ostatus/remote_follow.html:42
+msgid "Follow!"
+msgstr "Sekvi!"
+
+#: bookwyrm/templates/ostatus/remote_follow_button.html:15
+msgid "Follow on Fediverse"
+msgstr "Sekvi en la Fediverso"
+
+#: bookwyrm/templates/ostatus/remote_follow_button.html:19
+msgid "This link opens in a pop-up window"
+msgstr "Ĉi tiu ligilo malfermiĝos en nova fenestro"
+
+#: bookwyrm/templates/ostatus/subscribe.html:8
+#, python-format
+msgid "Log in to %(sitename)s"
+msgstr "Ensaluti en %(sitename)s"
+
+#: bookwyrm/templates/ostatus/subscribe.html:10
+#, python-format
+msgid "Error following from %(sitename)s"
+msgstr "Eraro de sekvado de %(sitename)s"
+
+#: bookwyrm/templates/ostatus/subscribe.html:12
+#: bookwyrm/templates/ostatus/subscribe.html:22
+#, python-format
+msgid "Follow from %(sitename)s"
+msgstr "Sekvi de %(sitename)s"
+
+#: bookwyrm/templates/ostatus/subscribe.html:18
+msgid "Uh oh..."
+msgstr "Ho ve..."
+
+#: bookwyrm/templates/ostatus/subscribe.html:20
+msgid "Let's log in first..."
+msgstr "Ni unue ensalutu..."
+
+#: bookwyrm/templates/ostatus/subscribe.html:51
+#, python-format
+msgid "Follow %(username)s"
+msgstr "Sekvi %(username)s"
+
+#: bookwyrm/templates/ostatus/success.html:28
+#, python-format
+msgid "You are now following %(display_name)s!"
+msgstr "Vi nun sekvas %(display_name)s!"
+
+#: bookwyrm/templates/preferences/2fa.html:4
+#: bookwyrm/templates/preferences/2fa.html:7
+#: bookwyrm/templates/preferences/layout.html:24
+msgid "Two Factor Authentication"
+msgstr "Dupaŝa aŭtentigo"
+
+#: bookwyrm/templates/preferences/2fa.html:16
+msgid "Successfully updated 2FA settings"
+msgstr "La agordoj de dupaŝa aŭtentigo sukcese ĝisdatiĝis"
+
+#: bookwyrm/templates/preferences/2fa.html:24
+msgid "Write down or copy and paste these codes somewhere safe."
+msgstr "Skribu aŭ kopiu ĉi tiujn kodojn en sekuran lokon."
+
+#: bookwyrm/templates/preferences/2fa.html:25
+msgid "You must use them in order, and they will not be displayed again."
+msgstr "Vi devos uzi ilin en la ĝusta ordo kaj ili ne denove montriĝos."
+
+#: bookwyrm/templates/preferences/2fa.html:35
+msgid "Two Factor Authentication is active on your account."
+msgstr "Dupaŝa aŭtentigo estas ŝaltita por via konto."
+
+#: bookwyrm/templates/preferences/2fa.html:36
+#: bookwyrm/templates/preferences/disable-2fa.html:4
+#: bookwyrm/templates/preferences/disable-2fa.html:7
+msgid "Disable 2FA"
+msgstr "Malŝalti dupaŝan aŭtentigon"
+
+#: bookwyrm/templates/preferences/2fa.html:39
+msgid "You can generate backup codes to use in case you do not have access to your authentication app. If you generate new codes, any backup codes previously generated will no longer work."
+msgstr "Vi povas generi rezervajn kodojn por uzi okaze ke vi ne plu havos aliron al la aplikaĵo de aŭtentigo. Se vi generos novajn kodojn, neniuj antaŭaj kodoj plu funkcios."
+
+#: bookwyrm/templates/preferences/2fa.html:40
+msgid "Generate backup codes"
+msgstr "Generi rezervajn kodojn"
+
+#: bookwyrm/templates/preferences/2fa.html:45
+msgid "Scan the QR code with your authentication app and then enter the code from your app below to confirm your app is set up."
+msgstr "Skanu la QR-an kodon per via aplikaĵo de aŭtentigo kaj sekve tajpu la kodon de via aplikaĵo sube por konfirmi ke via aplikaĵo estas ĝuste agordita."
+
+#: bookwyrm/templates/preferences/2fa.html:52
+msgid "Use setup key"
+msgstr "Uzi ŝlosilon de agordado"
+
+#: bookwyrm/templates/preferences/2fa.html:58
+msgid "Account name:"
+msgstr "Kontonomo:"
+
+#: bookwyrm/templates/preferences/2fa.html:65
+msgid "Code:"
+msgstr "Kodo:"
+
+#: bookwyrm/templates/preferences/2fa.html:73
+msgid "Enter the code from your app:"
+msgstr "Tajpu la kodon de via aplikaĵo:"
+
+#: bookwyrm/templates/preferences/2fa.html:83
+msgid "You can make your account more secure by using Two Factor Authentication (2FA). This will require you to enter a one-time code using a phone app like Authy , Google Authenticator or Microsoft Authenticator each time you log in."
+msgstr "Vi povas plisekurigi vian konton uzante dupaŝan aŭtentigon (2FA). Tio postulos ke vi entajpu unu-uzan kodon donitan de poŝtelefona aplikaĵo kiel Authy , Google Authenticator aŭ Microsoft Authenticator ĉiun fojon kiam vi ensalutas."
+
+#: bookwyrm/templates/preferences/2fa.html:85
+msgid "Confirm your password to begin setting up 2FA."
+msgstr "Konfirmu vian pasvorton por komenci agordi la dupaŝan aŭtentigon (2FA)."
+
+#: bookwyrm/templates/preferences/2fa.html:95
+#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:37
+msgid "Set up 2FA"
+msgstr "Agordi dupaŝan aŭtentigon"
+
+#: bookwyrm/templates/preferences/blocks.html:4
+#: bookwyrm/templates/preferences/blocks.html:7
+#: bookwyrm/templates/preferences/layout.html:46
+msgid "Blocked Users"
+msgstr "Blokitaj uzantoj"
+
+#: bookwyrm/templates/preferences/blocks.html:12
+msgid "No users currently blocked."
+msgstr "Aktuale estas neniu blokita uzanto."
+
+#: bookwyrm/templates/preferences/change_password.html:4
+#: bookwyrm/templates/preferences/change_password.html:7
+#: bookwyrm/templates/preferences/change_password.html:37
+#: bookwyrm/templates/preferences/layout.html:20
+msgid "Change Password"
+msgstr "Ŝanĝi pasvorton"
+
+#: bookwyrm/templates/preferences/change_password.html:15
+msgid "Successfully changed password"
+msgstr "La pasvorto sukcese ŝanĝiĝis"
+
+#: bookwyrm/templates/preferences/change_password.html:22
+msgid "Current password:"
+msgstr "Aktuala pasvorto:"
+
+#: bookwyrm/templates/preferences/change_password.html:28
+msgid "New password:"
+msgstr "Nova pasvorto:"
+
+#: bookwyrm/templates/preferences/delete_user.html:4
+#: bookwyrm/templates/preferences/delete_user.html:7
+#: bookwyrm/templates/preferences/delete_user.html:40
+#: bookwyrm/templates/preferences/layout.html:28
+#: bookwyrm/templates/settings/users/delete_user_form.html:22
+msgid "Delete Account"
+msgstr "Forigi la konton"
+
+#: bookwyrm/templates/preferences/delete_user.html:12
+msgid "Deactivate account"
+msgstr "Malŝalti la konton"
+
+#: bookwyrm/templates/preferences/delete_user.html:15
+msgid "Your account will be hidden. You can log back in at any time to re-activate your account."
+msgstr "Via konto estos kaŝita. Vi povas iam ajn reensaluti por reŝalti vian konton."
+
+#: bookwyrm/templates/preferences/delete_user.html:20
+msgid "Deactivate Account"
+msgstr "Malŝalti konton"
+
+#: bookwyrm/templates/preferences/delete_user.html:26
+msgid "Permanently delete account"
+msgstr "Porĉiame forigi la konton"
+
+#: bookwyrm/templates/preferences/delete_user.html:29
+msgid "Deleting your account cannot be undone. The username will not be available to register in the future."
+msgstr "Ne eblos malfari la forigon de via konto. La uzantonomo ne disponeblos por registriĝo estontece."
+
+#: bookwyrm/templates/preferences/disable-2fa.html:12
+msgid "Disable Two Factor Authentication"
+msgstr "Malŝalti dupaŝan aŭtentigon"
+
+#: bookwyrm/templates/preferences/disable-2fa.html:14
+msgid "Disabling 2FA will allow anyone with your username and password to log in to your account."
+msgstr "Malŝalti la dupaŝan aŭtentigon ebligos al iu ajn kiu havas vian uzantnomon kaj pasvorton ensaluti en vian konton."
+
+#: bookwyrm/templates/preferences/disable-2fa.html:20
+msgid "Turn off 2FA"
+msgstr "Malŝalti dupaŝan aŭtentigon"
+
+#: bookwyrm/templates/preferences/edit_user.html:4
+#: bookwyrm/templates/preferences/edit_user.html:7
+#: bookwyrm/templates/preferences/layout.html:15
+msgid "Edit Profile"
+msgstr "Modifi la profilon"
+
+#: bookwyrm/templates/preferences/edit_user.html:12
+#: bookwyrm/templates/preferences/edit_user.html:25
+#: bookwyrm/templates/settings/users/user_info.html:7
+#: bookwyrm/templates/user_menu.html:29
+msgid "Profile"
+msgstr "Profilo"
+
+#: bookwyrm/templates/preferences/edit_user.html:13
+#: bookwyrm/templates/preferences/edit_user.html:64
+#: bookwyrm/templates/settings/site.html:11
+#: bookwyrm/templates/settings/site.html:89
+#: bookwyrm/templates/setup/config.html:91
+msgid "Display"
+msgstr "Afiŝado"
+
+#: bookwyrm/templates/preferences/edit_user.html:14
+#: bookwyrm/templates/preferences/edit_user.html:112
+msgid "Privacy"
+msgstr "Privateco"
+
+#: bookwyrm/templates/preferences/edit_user.html:69
+msgid "Show reading goal prompt in feed"
+msgstr "Montri la demandon pri via legocelo en la fluo"
+
+#: bookwyrm/templates/preferences/edit_user.html:75
+msgid "Show suggested users"
+msgstr "Montri proponitajn uzantojn"
+
+#: bookwyrm/templates/preferences/edit_user.html:81
+msgid "Show this account in suggested users"
+msgstr "Montri ĉi tiun konton en la proponitaj uzantoj"
+
+#: bookwyrm/templates/preferences/edit_user.html:85
+#, python-format
+msgid "Your account will show up in the directory , and may be recommended to other BookWyrm users."
+msgstr "Via konto aperos en la adresaro kaj eble estos rekomendita al aliaj uzantoj de BookWyrm."
+
+#: bookwyrm/templates/preferences/edit_user.html:89
+msgid "Preferred Timezone: "
+msgstr "Preferata horzono: "
+
+#: bookwyrm/templates/preferences/edit_user.html:101
+msgid "Theme:"
+msgstr "Etoso:"
+
+#: bookwyrm/templates/preferences/edit_user.html:117
+msgid "Manually approve followers"
+msgstr "Permane aprobi sekvantojn"
+
+#: bookwyrm/templates/preferences/edit_user.html:123
+msgid "Hide followers and following on profile"
+msgstr "Kaŝi la sekvantojn kaj la sekvatojn ĉe via profilo"
+
+#: bookwyrm/templates/preferences/edit_user.html:128
+msgid "Default post privacy:"
+msgstr "Defaŭlta privateco de afiŝoj:"
+
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr "Ĉu vi volas privatajn bretojn? Vi povas agordi apartan nivelon de videbleco por ĉiu breto. Iru al Viaj libroj , elektu breton per la langetoj, kaj alklaku «Modifi breton»."
+
+#: bookwyrm/templates/preferences/export.html:4
+#: bookwyrm/templates/preferences/export.html:7
+msgid "CSV Export"
+msgstr "CSV-a eksporto"
+
+#: bookwyrm/templates/preferences/export.html:13
+msgid "Your export will include all the books on your shelves, books you have reviewed, and books with reading activity."
+msgstr "Via eksporto inkluzivos ĉiujn librojn sur viaj bretoj, librojn recenzitajn de vi kaj librojn kun legadaj agoj."
+
+#: bookwyrm/templates/preferences/export.html:20
+msgid "Download file"
+msgstr "Elŝuti la dosieron"
+
+#: bookwyrm/templates/preferences/layout.html:11
+msgid "Account"
+msgstr "Konto"
+
+#: bookwyrm/templates/preferences/layout.html:31
+msgid "Data"
+msgstr "Datumoj"
+
+#: bookwyrm/templates/preferences/layout.html:39
+msgid "CSV export"
+msgstr "CSV-a eksporto"
+
+#: bookwyrm/templates/preferences/layout.html:42
+msgid "Relationships"
+msgstr "Rilatoj"
+
+#: bookwyrm/templates/reading_progress/finish.html:5
+#, python-format
+msgid "Finish \"%(book_title)s\""
+msgstr "Fini «%(book_title)s»"
+
+#: bookwyrm/templates/reading_progress/start.html:5
+#, python-format
+msgid "Start \"%(book_title)s\""
+msgstr "Komenci «%(book_title)s»"
+
+#: bookwyrm/templates/reading_progress/stop.html:5
+#, python-format
+msgid "Stop Reading \"%(book_title)s\""
+msgstr "Haltigi la legadon de «%(book_title)s»"
+
+#: bookwyrm/templates/reading_progress/want.html:5
+#, python-format
+msgid "Want to Read \"%(book_title)s\""
+msgstr "Mi volas legi «%(book_title)s»"
+
+#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:4
+msgid "Delete these read dates?"
+msgstr "Ĉu forigi ĉi tiujn legodatojn?"
+
+#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:8
+#, python-format
+msgid "You are deleting this readthrough and its %(count)s associated progress updates."
+msgstr "Vi forigos ĉi tiun legadon kaj ĝiajn %(count)s asociitajn ĝisdatigojn de progreso."
+
+#: bookwyrm/templates/readthrough/readthrough.html:6
+#: bookwyrm/templates/readthrough/readthrough_modal.html:8
+#, python-format
+msgid "Update read dates for \"%(title)s \""
+msgstr "Ĝisdatigi legodatojn por «%(title)s »"
+
+#: bookwyrm/templates/readthrough/readthrough_form.html:10
+#: bookwyrm/templates/readthrough/readthrough_modal.html:38
+#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24
+#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21
+#: bookwyrm/templates/snippets/reading_modals/stop_reading_modal.html:24
+msgid "Started reading"
+msgstr "Komencis legi"
+
+#: bookwyrm/templates/readthrough/readthrough_form.html:18
+#: bookwyrm/templates/readthrough/readthrough_modal.html:56
+msgid "Progress"
+msgstr "Progreso"
+
+#: bookwyrm/templates/readthrough/readthrough_form.html:25
+#: bookwyrm/templates/readthrough/readthrough_modal.html:63
+#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32
+msgid "Finished reading"
+msgstr "Finis legi"
+
+#: bookwyrm/templates/readthrough/readthrough_list.html:9
+msgid "Progress Updates:"
+msgstr "Ĝisdatigoj de progreso:"
+
+#: bookwyrm/templates/readthrough/readthrough_list.html:14
+msgid "finished"
+msgstr "finita"
+
+#: bookwyrm/templates/readthrough/readthrough_list.html:16
+msgid "stopped"
+msgstr "haltigita"
+
+#: bookwyrm/templates/readthrough/readthrough_list.html:27
+msgid "Show all updates"
+msgstr "Montri ĉiujn ĝisdatigojn"
+
+#: bookwyrm/templates/readthrough/readthrough_list.html:43
+msgid "Delete this progress update"
+msgstr "Forigi ĉi tiun ĝisdatigon de progreso"
+
+#: bookwyrm/templates/readthrough/readthrough_list.html:55
+msgid "started"
+msgstr "komencita"
+
+#: bookwyrm/templates/readthrough/readthrough_list.html:62
+msgid "Edit read dates"
+msgstr "Modifi la legodatojn"
+
+#: bookwyrm/templates/readthrough/readthrough_list.html:70
+msgid "Delete these read dates"
+msgstr "Forigi ĉi tiujn legodatojn"
+
+#: bookwyrm/templates/readthrough/readthrough_modal.html:12
+#, python-format
+msgid "Add read dates for \"%(title)s \""
+msgstr "Aldoni legodatojn por «%(title)s »"
+
+#: bookwyrm/templates/report.html:5
+#: bookwyrm/templates/snippets/report_button.html:13
+msgid "Report"
+msgstr "Raporti"
+
+#: bookwyrm/templates/search/barcode_modal.html:5
+msgid "\n"
+" Scan Barcode\n"
+" "
+msgstr "\n"
+" Skani strikodon\n"
+" "
+
+#: bookwyrm/templates/search/barcode_modal.html:21
+msgid "Requesting camera..."
+msgstr "Petado de permeso por la kamerao..."
+
+#: bookwyrm/templates/search/barcode_modal.html:22
+msgid "Grant access to the camera to scan a book's barcode."
+msgstr "Permesu la aliron al la kamerao por skani strikodon de libro."
+
+#: bookwyrm/templates/search/barcode_modal.html:27
+msgid "Could not access camera"
+msgstr "Ne eblis atingi la kameraon"
+
+#: bookwyrm/templates/search/barcode_modal.html:31
+msgctxt "barcode scanner"
+msgid "Scanning..."
+msgstr "Skanado..."
+
+#: bookwyrm/templates/search/barcode_modal.html:32
+msgid "Align your book's barcode with the camera."
+msgstr "Rektigu la strikodon de la libro kun la kamerao."
+
+#: bookwyrm/templates/search/barcode_modal.html:36
+msgctxt "barcode scanner"
+msgid "ISBN scanned"
+msgstr "ISBN skaniĝis"
+
+#: bookwyrm/templates/search/barcode_modal.html:37
+msgctxt "followed by ISBN"
+msgid "Searching for book:"
+msgstr "Serĉado de la libro:"
+
+#: bookwyrm/templates/search/book.html:25
+#, python-format
+msgid "%(formatted_review_count)s review"
+msgid_plural "%(formatted_review_count)s reviews"
+msgstr[0] "%(formatted_review_count)s recenzo"
+msgstr[1] "%(formatted_review_count)s recenzoj"
+
+#: bookwyrm/templates/search/book.html:34
+#, python-format
+msgid "(published %(pub_year)s)"
+msgstr "(eldonita en %(pub_year)s)"
+
+#: bookwyrm/templates/search/book.html:50
+msgid "Results from"
+msgstr "Rezultoj de"
+
+#: bookwyrm/templates/search/book.html:89
+msgid "Import book"
+msgstr "Importi libron"
+
+#: bookwyrm/templates/search/book.html:113
+msgid "Load results from other catalogues"
+msgstr "Ŝarĝi per rezultoj de aliaj katalogoj"
+
+#: bookwyrm/templates/search/book.html:117
+msgid "Manually add book"
+msgstr "Permane aldoni libron"
+
+#: bookwyrm/templates/search/book.html:122
+msgid "Log in to import or add books."
+msgstr "Ensalutu por importi aŭ aldoni librojn."
+
+#: bookwyrm/templates/search/layout.html:17
+msgid "Search query"
+msgstr "Serĉo"
+
+#: bookwyrm/templates/search/layout.html:20
+msgid "Search type"
+msgstr "Tipo de serĉo"
+
+#: bookwyrm/templates/search/layout.html:24
+#: bookwyrm/templates/search/layout.html:47
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:27
+#: bookwyrm/templates/settings/federation/instance_list.html:52
+#: bookwyrm/templates/settings/layout.html:36
+#: bookwyrm/templates/settings/users/user.html:13
+#: bookwyrm/templates/settings/users/user_admin.html:5
+#: bookwyrm/templates/settings/users/user_admin.html:12
+msgid "Users"
+msgstr "Uzantoj"
+
+#: bookwyrm/templates/search/layout.html:59
+#, python-format
+msgid "No results found for \"%(query)s\""
+msgstr "Neniu rezulto troviĝis por «%(query)s»"
+
+#: bookwyrm/templates/search/layout.html:61
+#, python-format
+msgid "%(result_count)s result found"
+msgid_plural "%(result_count)s results found"
+msgstr[0] "%(result_count)s rezulto troviĝis"
+msgstr[1] "%(result_count)s rezultoj troviĝis"
+
+#: bookwyrm/templates/settings/announcements/announcement.html:5
+#: bookwyrm/templates/settings/announcements/announcement.html:8
+msgid "Announcement"
+msgstr "Anonco"
+
+#: bookwyrm/templates/settings/announcements/announcement.html:16
+#: bookwyrm/templates/settings/federation/instance.html:93
+#: bookwyrm/templates/snippets/status/status_options.html:25
+msgid "Edit"
+msgstr "Modifi"
+
+#: bookwyrm/templates/settings/announcements/announcement.html:32
+#: bookwyrm/templates/settings/announcements/announcements.html:3
+#: bookwyrm/templates/settings/announcements/announcements.html:5
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:15
+#: bookwyrm/templates/settings/layout.html:99
+msgid "Announcements"
+msgstr "Anoncoj"
+
+#: bookwyrm/templates/settings/announcements/announcement.html:45
+msgid "Visible:"
+msgstr "Videbla:"
+
+#: bookwyrm/templates/settings/announcements/announcement.html:49
+msgid "True"
+msgstr "Vera"
+
+#: bookwyrm/templates/settings/announcements/announcement.html:51
+msgid "False"
+msgstr "Malvera"
+
+#: bookwyrm/templates/settings/announcements/announcement.html:57
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:79
+#: bookwyrm/templates/settings/dashboard/dashboard.html:80
+msgid "Start date:"
+msgstr "Komenca dato:"
+
+#: bookwyrm/templates/settings/announcements/announcement.html:62
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:89
+#: bookwyrm/templates/settings/dashboard/dashboard.html:86
+msgid "End date:"
+msgstr "Fina dato:"
+
+#: bookwyrm/templates/settings/announcements/announcement.html:66
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:109
+msgid "Active:"
+msgstr "Aktiva:"
+
+#: bookwyrm/templates/settings/announcements/announcements.html:9
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:8
+msgid "Create Announcement"
+msgstr "Krei anoncon"
+
+#: bookwyrm/templates/settings/announcements/announcements.html:21
+#: bookwyrm/templates/settings/federation/instance_list.html:40
+msgid "Date added"
+msgstr "Dato de aldono"
+
+#: bookwyrm/templates/settings/announcements/announcements.html:25
+msgid "Preview"
+msgstr "Antaŭrigardo"
+
+#: bookwyrm/templates/settings/announcements/announcements.html:29
+msgid "Start date"
+msgstr "Komenca dato"
+
+#: bookwyrm/templates/settings/announcements/announcements.html:33
+msgid "End date"
+msgstr "Fina dato"
+
+#: bookwyrm/templates/settings/announcements/announcements.html:50
+msgid "active"
+msgstr "aktiva"
+
+#: bookwyrm/templates/settings/announcements/announcements.html:50
+msgid "inactive"
+msgstr "malaktiva"
+
+#: bookwyrm/templates/settings/announcements/announcements.html:63
+msgid "No announcements found"
+msgstr "Neniu anonco troviĝis"
+
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:6
+msgid "Edit Announcement"
+msgstr "Modifi la anoncon"
+
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:45
+msgid "Announcement content"
+msgstr "Enhavo de la anonco"
+
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:57
+msgid "Details:"
+msgstr "Detaloj:"
+
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:65
+msgid "Event date:"
+msgstr "Dato de la evento:"
+
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:73
+msgid "Display settings"
+msgstr "Agordoj pri afiŝado"
+
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:98
+msgid "Color:"
+msgstr "Koloro:"
+
+#: bookwyrm/templates/settings/automod/rules.html:7
+#: bookwyrm/templates/settings/automod/rules.html:11
+#: bookwyrm/templates/settings/layout.html:61
+msgid "Auto-moderation rules"
+msgstr "Reguloj de aŭtomata moderigado"
+
+#: bookwyrm/templates/settings/automod/rules.html:18
+msgid "Auto-moderation rules will create reports for any local user or status with fields matching the provided string."
+msgstr "Reguloj de aŭtomata moderigado kreos raportojn por iu ajn loka uzanto aŭ afiŝo kun kampoj kiuj kongruas kun la elektita teksto."
+
+#: bookwyrm/templates/settings/automod/rules.html:19
+msgid "Users or statuses that have already been reported (regardless of whether the report was resolved) will not be flagged."
+msgstr "Uzantoj aŭ afiŝoj kiujn oni jam raportis (sendepende ĉu la raporto solviĝis ĉu ne) ne estos markitaj."
+
+#: bookwyrm/templates/settings/automod/rules.html:26
+msgid "Schedule:"
+msgstr "Plano:"
+
+#: bookwyrm/templates/settings/automod/rules.html:33
+msgid "Last run:"
+msgstr "Laste rulita:"
+
+#: bookwyrm/templates/settings/automod/rules.html:40
+msgid "Total run count:"
+msgstr "Suma nombro de ruliĝoj:"
+
+#: bookwyrm/templates/settings/automod/rules.html:47
+msgid "Enabled:"
+msgstr "Ŝaltita:"
+
+#: bookwyrm/templates/settings/automod/rules.html:59
+msgid "Delete schedule"
+msgstr "Forigi planon"
+
+#: bookwyrm/templates/settings/automod/rules.html:63
+msgid "Run now"
+msgstr "Ruli nun"
+
+#: bookwyrm/templates/settings/automod/rules.html:64
+msgid "Last run date will not be updated"
+msgstr "La dato de lasta ruliĝo ne ŝanĝiĝos"
+
+#: bookwyrm/templates/settings/automod/rules.html:69
+#: bookwyrm/templates/settings/automod/rules.html:92
+msgid "Schedule scan"
+msgstr "Plani analizon"
+
+#: bookwyrm/templates/settings/automod/rules.html:101
+msgid "Successfully added rule"
+msgstr "La regulo estis sukcese aldonita"
+
+#: bookwyrm/templates/settings/automod/rules.html:107
+msgid "Add Rule"
+msgstr "Aldoni regulon"
+
+#: bookwyrm/templates/settings/automod/rules.html:116
+#: bookwyrm/templates/settings/automod/rules.html:160
+msgid "String match"
+msgstr "Teksto kongruas"
+
+#: bookwyrm/templates/settings/automod/rules.html:126
+#: bookwyrm/templates/settings/automod/rules.html:163
+msgid "Flag users"
+msgstr "Marki uzantojn"
+
+#: bookwyrm/templates/settings/automod/rules.html:133
+#: bookwyrm/templates/settings/automod/rules.html:166
+msgid "Flag statuses"
+msgstr "Marki afiŝojn"
+
+#: bookwyrm/templates/settings/automod/rules.html:140
+msgid "Add rule"
+msgstr "Aldoni regulon"
+
+#: bookwyrm/templates/settings/automod/rules.html:147
+msgid "Current Rules"
+msgstr "Aktualaj reguloj"
+
+#: bookwyrm/templates/settings/automod/rules.html:151
+msgid "Show rules"
+msgstr "Montri la regulojn"
+
+#: bookwyrm/templates/settings/automod/rules.html:188
+msgid "Remove rule"
+msgstr "Forigi la regulon"
+
+#: bookwyrm/templates/settings/celery.html:6
+#: bookwyrm/templates/settings/celery.html:8
+msgid "Celery Status"
+msgstr "Stato de Celery"
+
+#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr "Vi povas agordi observadon por kontroli ĉu Celery ruliĝas per peto al:"
+
+#: bookwyrm/templates/settings/celery.html:22
+msgid "Queues"
+msgstr "Atendovicoj"
+
+#: bookwyrm/templates/settings/celery.html:26
+msgid "Low priority"
+msgstr "Malalta prioritato"
+
+#: bookwyrm/templates/settings/celery.html:32
+msgid "Medium priority"
+msgstr "Meza prioritato"
+
+#: bookwyrm/templates/settings/celery.html:38
+msgid "High priority"
+msgstr "Alta prioritato"
+
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr "Dissendoj"
+
+#: bookwyrm/templates/settings/celery.html:60
+msgid "Could not connect to Redis broker"
+msgstr "La konekto al la Redis broker malsukcesis"
+
+#: bookwyrm/templates/settings/celery.html:68
+msgid "Active Tasks"
+msgstr "Aktivaj taskoj"
+
+#: bookwyrm/templates/settings/celery.html:73
+#: bookwyrm/templates/settings/imports/imports.html:113
+msgid "ID"
+msgstr "ID"
+
+#: bookwyrm/templates/settings/celery.html:74
+msgid "Task name"
+msgstr "Tasknomo"
+
+#: bookwyrm/templates/settings/celery.html:75
+msgid "Run time"
+msgstr "Daŭro"
+
+#: bookwyrm/templates/settings/celery.html:76
+msgid "Priority"
+msgstr "Prioritato"
+
+#: bookwyrm/templates/settings/celery.html:81
+msgid "No active tasks"
+msgstr "Neniu aktiva tasko"
+
+#: bookwyrm/templates/settings/celery.html:99
+msgid "Workers"
+msgstr "Workers"
+
+#: bookwyrm/templates/settings/celery.html:104
+msgid "Uptime:"
+msgstr "Daŭro de funkciado:"
+
+#: bookwyrm/templates/settings/celery.html:114
+msgid "Could not connect to Celery"
+msgstr "La konekto al Celery malsukcesis"
+
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr "Malplenigi la vicojn"
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr "Malplenigi la vicojn povas kaŭzi gravajn problemojn inkluzive de perdo de datumoj! Faru tion nur se vi scias kion vi faras. Vi nepre devas malŝalti la servon Celery antaŭ ol fari ĝin."
+
+#: bookwyrm/templates/settings/celery.html:150
+msgid "Errors"
+msgstr "Eraroj"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:6
+#: bookwyrm/templates/settings/dashboard/dashboard.html:8
+#: bookwyrm/templates/settings/layout.html:28
+msgid "Dashboard"
+msgstr "Panelo"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:15
+#: bookwyrm/templates/settings/dashboard/dashboard.html:109
+msgid "Total users"
+msgstr "Suma nombro de uzantoj"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:21
+#: bookwyrm/templates/settings/dashboard/user_chart.html:16
+msgid "Active this month"
+msgstr "Aktivaj ĉi-monate"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:27
+msgid "Statuses"
+msgstr "Afiŝoj"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:33
+#: bookwyrm/templates/settings/dashboard/works_chart.html:11
+msgid "Works"
+msgstr "Verkoj"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:74
+msgid "Instance Activity"
+msgstr "Aktiveco de la instanco"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:92
+msgid "Interval:"
+msgstr "Intertempo:"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:96
+msgid "Days"
+msgstr "Tagoj"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:97
+msgid "Weeks"
+msgstr "Semajnoj"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:115
+msgid "User signup activity"
+msgstr "Novaj aliĝoj"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:121
+msgid "Status activity"
+msgstr "Novaj afiŝoj"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:127
+msgid "Works created"
+msgstr "Verkoj kreitaj"
+
+#: bookwyrm/templates/settings/dashboard/registration_chart.html:10
+msgid "Registrations"
+msgstr "Registriĝoj"
+
+#: bookwyrm/templates/settings/dashboard/status_chart.html:11
+msgid "Statuses posted"
+msgstr "Nombro de afiŝoj"
+
+#: bookwyrm/templates/settings/dashboard/user_chart.html:11
+msgid "Total"
+msgstr "Sumo"
+
+#: bookwyrm/templates/settings/dashboard/warnings/domain_review.html:9
+#, python-format
+msgid "%(display_count)s domain needs review"
+msgid_plural "%(display_count)s domains need review"
+msgstr[0] "%(display_count)s domajno bezonas kontrolon"
+msgstr[1] "%(display_count)s domajnoj bezonas kontrolon"
+
+#: bookwyrm/templates/settings/dashboard/warnings/email_config.html:8
+#, python-format
+msgid "Your outgoing email address, %(email_sender)s
, may be misconfigured."
+msgstr "Via eliranta retadreso, %(email_sender)s
, eble estas malagordita."
+
+#: bookwyrm/templates/settings/dashboard/warnings/email_config.html:11
+msgid "Check the EMAIL_SENDER_NAME
and EMAIL_SENDER_DOMAIN
in your .env
file."
+msgstr "Kontrolu la EMAIL_SENDER_NAME
kaj EMAIL_SENDER_DOMAIN
en via dosiero .env
."
+
+#: bookwyrm/templates/settings/dashboard/warnings/invites.html:9
+#, python-format
+msgid "%(display_count)s invite request"
+msgid_plural "%(display_count)s invite requests"
+msgstr[0] "%(display_count)s invitpeto"
+msgstr[1] "%(display_count)s invitpetoj"
+
+#: bookwyrm/templates/settings/dashboard/warnings/missing_conduct.html:8
+msgid "Your instance is missing a code of conduct."
+msgstr "Mankas al via instanco kondutkodo."
+
+#: bookwyrm/templates/settings/dashboard/warnings/missing_privacy.html:8
+msgid "Your instance is missing a privacy policy."
+msgstr "Mankas al via instanco politiko de privateco."
+
+#: bookwyrm/templates/settings/dashboard/warnings/reports.html:9
+#, python-format
+msgid "%(display_count)s open report"
+msgid_plural "%(display_count)s open reports"
+msgstr[0] "%(display_count)s malfermita raporto"
+msgstr[1] "%(display_count)s malfermitaj raportoj"
+
+#: bookwyrm/templates/settings/dashboard/warnings/update_version.html:8
+#, python-format
+msgid "An update is available! You're running v%(current)s and the latest release is %(available)s."
+msgstr "Ĝisdatigo haveblas! Vi rulas la version v%(current)s kaj la plej lasta versio estas %(available)s."
+
+#: bookwyrm/templates/settings/email_blocklist/domain_form.html:5
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:10
+msgid "Add domain"
+msgstr "Aldoni domajnon"
+
+#: bookwyrm/templates/settings/email_blocklist/domain_form.html:11
+msgid "Domain:"
+msgstr "Domajno:"
+
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:5
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:7
+#: bookwyrm/templates/settings/layout.html:65
+msgid "Email Blocklist"
+msgstr "Listo de blokitaj retadresoj"
+
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:18
+msgid "When someone tries to register with an email from this domain, no account will be created. The registration process will appear to have worked."
+msgstr "Kiam iu provos registriĝi per retadreso de ĉi tiu domajno, neniu konto kreiĝos. La procezo de registrado ŝajnos kvazaŭ ĝi sukcesis."
+
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:29
+#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:27
+msgid "Options"
+msgstr "Agordoj"
+
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:38
+#, python-format
+msgid "%(display_count)s user"
+msgid_plural "%(display_count)s users"
+msgstr[0] "%(display_count)s uzanto"
+msgstr[1] "%(display_count)s uzantoj"
+
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:59
+msgid "No email domains currently blocked"
+msgstr "Neniu retpoŝtdomajno estas aktuale blokita"
+
+#: bookwyrm/templates/settings/email_config.html:6
+#: bookwyrm/templates/settings/email_config.html:8
+#: bookwyrm/templates/settings/layout.html:90
+msgid "Email Configuration"
+msgstr "Agordoj de retpoŝto"
+
+#: bookwyrm/templates/settings/email_config.html:16
+msgid "Error sending test email:"
+msgstr "Eraro dum sendo de provmesaĝo:"
+
+#: bookwyrm/templates/settings/email_config.html:24
+msgid "Successfully sent test email."
+msgstr "Sukcese sendis provmesaĝon."
+
+#: bookwyrm/templates/settings/email_config.html:32
+#: bookwyrm/templates/setup/config.html:102
+msgid "Email sender:"
+msgstr "Retadreso de mesaĝoj de la retejo:"
+
+#: bookwyrm/templates/settings/email_config.html:39
+msgid "Email backend:"
+msgstr "Retmesaĝa sendilo:"
+
+#: bookwyrm/templates/settings/email_config.html:46
+msgid "Host:"
+msgstr "Servilnomo:"
+
+#: bookwyrm/templates/settings/email_config.html:53
+msgid "Host user:"
+msgstr "Uzanto:"
+
+#: bookwyrm/templates/settings/email_config.html:60
+msgid "Port:"
+msgstr "Pordo:"
+
+#: bookwyrm/templates/settings/email_config.html:67
+msgid "Use TLS:"
+msgstr "Uzi TLS:"
+
+#: bookwyrm/templates/settings/email_config.html:74
+msgid "Use SSL:"
+msgstr "Uzi SSL:"
+
+#: bookwyrm/templates/settings/email_config.html:83
+#, python-format
+msgid "Send test email to %(email)s"
+msgstr "Sendi provmesaĝon al %(email)s"
+
+#: bookwyrm/templates/settings/email_config.html:90
+msgid "Send test email"
+msgstr "Sendi provmesaĝon"
+
+#: bookwyrm/templates/settings/federation/edit_instance.html:3
+#: bookwyrm/templates/settings/federation/edit_instance.html:6
+#: bookwyrm/templates/settings/federation/edit_instance.html:15
+#: bookwyrm/templates/settings/federation/edit_instance.html:32
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:3
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:32
+#: bookwyrm/templates/settings/federation/instance_list.html:9
+#: bookwyrm/templates/settings/federation/instance_list.html:10
+msgid "Add instance"
+msgstr "Aldoni instancon"
+
+#: bookwyrm/templates/settings/federation/edit_instance.html:12
+#: bookwyrm/templates/settings/federation/instance.html:24
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:12
+#: bookwyrm/templates/settings/federation/instance_list.html:3
+#: bookwyrm/templates/settings/federation/instance_list.html:5
+#: bookwyrm/templates/settings/layout.html:47
+msgid "Federated Instances"
+msgstr "Frataraj instancoj"
+
+#: bookwyrm/templates/settings/federation/edit_instance.html:28
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:28
+msgid "Import block list"
+msgstr "Importi blokliston"
+
+#: bookwyrm/templates/settings/federation/edit_instance.html:43
+msgid "Instance:"
+msgstr "Instanco:"
+
+#: bookwyrm/templates/settings/federation/edit_instance.html:52
+#: bookwyrm/templates/settings/federation/instance.html:46
+#: bookwyrm/templates/settings/users/user_info.html:113
+msgid "Status:"
+msgstr "Stato:"
+
+#: bookwyrm/templates/settings/federation/edit_instance.html:66
+#: bookwyrm/templates/settings/federation/instance.html:40
+#: bookwyrm/templates/settings/users/user_info.html:107
+msgid "Software:"
+msgstr "Programaro:"
+
+#: bookwyrm/templates/settings/federation/edit_instance.html:76
+#: bookwyrm/templates/settings/federation/instance.html:43
+#: bookwyrm/templates/settings/users/user_info.html:110
+msgid "Version:"
+msgstr "Versio:"
+
+#: bookwyrm/templates/settings/federation/instance.html:17
+msgid "Refresh data"
+msgstr "Aktualigi la datumojn"
+
+#: bookwyrm/templates/settings/federation/instance.html:37
+msgid "Details"
+msgstr "Detaloj"
+
+#: bookwyrm/templates/settings/federation/instance.html:53
+#: bookwyrm/templates/user/layout.html:67
+msgid "Activity"
+msgstr "Aktiveco"
+
+#: bookwyrm/templates/settings/federation/instance.html:56
+msgid "Users:"
+msgstr "Uzantoj:"
+
+#: bookwyrm/templates/settings/federation/instance.html:59
+#: bookwyrm/templates/settings/federation/instance.html:65
+msgid "View all"
+msgstr "Vidi ĉiujn"
+
+#: bookwyrm/templates/settings/federation/instance.html:62
+#: bookwyrm/templates/settings/users/user_info.html:60
+msgid "Reports:"
+msgstr "Raportoj:"
+
+#: bookwyrm/templates/settings/federation/instance.html:68
+msgid "Followed by us:"
+msgstr "Sekvataj de ni:"
+
+#: bookwyrm/templates/settings/federation/instance.html:73
+msgid "Followed by them:"
+msgstr "Sekvataj de ili:"
+
+#: bookwyrm/templates/settings/federation/instance.html:78
+msgid "Blocked by us:"
+msgstr "Blokitaj de ni:"
+
+#: bookwyrm/templates/settings/federation/instance.html:90
+#: bookwyrm/templates/settings/users/user_info.html:117
+msgid "Notes"
+msgstr "Notoj"
+
+#: bookwyrm/templates/settings/federation/instance.html:97
+msgid "No notes "
+msgstr "Neniu noto "
+
+#: bookwyrm/templates/settings/federation/instance.html:116
+#: bookwyrm/templates/settings/link_domains/link_domains.html:87
+#: bookwyrm/templates/snippets/block_button.html:5
+msgid "Block"
+msgstr "Bloki"
+
+#: bookwyrm/templates/settings/federation/instance.html:117
+msgid "All users from this instance will be deactivated."
+msgstr "Ĉiuj uzantoj de ĉi tiu instanco estos malaktivigitaj."
+
+#: bookwyrm/templates/settings/federation/instance.html:122
+#: bookwyrm/templates/snippets/block_button.html:10
+msgid "Un-block"
+msgstr "Malbloki"
+
+#: bookwyrm/templates/settings/federation/instance.html:123
+msgid "All users from this instance will be re-activated."
+msgstr "Ĉiuj uzantoj de ĉi tiu instanco estos reaktivigitaj."
+
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:6
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:15
+msgid "Import Blocklist"
+msgstr "Importi blokliston"
+
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:38
+msgid "Success!"
+msgstr "Sukceso!"
+
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:42
+msgid "Successfully blocked:"
+msgstr "Sukcese blokis:"
+
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:44
+msgid "Failed:"
+msgstr "Malsukcesis:"
+
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:62
+msgid "Expects a json file in the format provided by FediBlock, with a list of entries that have instance
and url
fields. For example:"
+msgstr "Bezonas dosieron de JSON en la formato per kiu provizas FediBlock, kun listo de eroj kiuj havas la kampojn instance
kaj url
. Ekzemple:"
+
+#: bookwyrm/templates/settings/federation/instance_list.html:36
+#: bookwyrm/templates/settings/users/server_filter.html:5
+msgid "Instance name"
+msgstr "Nomo de la instanco"
+
+#: bookwyrm/templates/settings/federation/instance_list.html:44
+msgid "Last updated"
+msgstr "Lasta ĝisdatigo"
+
+#: bookwyrm/templates/settings/federation/instance_list.html:48
+#: bookwyrm/templates/settings/federation/software_filter.html:5
+msgid "Software"
+msgstr "Programaro"
+
+#: bookwyrm/templates/settings/federation/instance_list.html:70
+msgid "No instances found"
+msgstr "Neniu instanco troviĝis"
+
+#: bookwyrm/templates/settings/imports/complete_import_modal.html:4
+msgid "Stop import?"
+msgstr "Ĉu ĉesigi la importon?"
+
+#: bookwyrm/templates/settings/imports/imports.html:19
+msgid "Disable starting new imports"
+msgstr "Malŝalti la eblon komenci novajn importojn"
+
+#: bookwyrm/templates/settings/imports/imports.html:30
+msgid "This is only intended to be used when things have gone very wrong with imports and you need to pause the feature while addressing issues."
+msgstr "Ĉi tio celas esti uzata nur kiam io fuŝiĝas pri importoj ĝenerale kaj vi bezonas haltigi la trajton dum oni solvas la problemojn."
+
+#: bookwyrm/templates/settings/imports/imports.html:31
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
+msgstr "Dum importado estas malŝaltita, uzantoj ne povos komenci novajn importojn sed ekzistantaj importoj ne estos tuŝitaj."
+
+#: bookwyrm/templates/settings/imports/imports.html:36
+msgid "Disable imports"
+msgstr "Malŝalti importadon"
+
+#: bookwyrm/templates/settings/imports/imports.html:50
+msgid "Users are currently unable to start new imports"
+msgstr "Uzantoj aktuale ne povas komenci novajn importojn"
+
+#: bookwyrm/templates/settings/imports/imports.html:55
+msgid "Enable imports"
+msgstr "Ŝalti importadon"
+
+#: bookwyrm/templates/settings/imports/imports.html:63
+msgid "Limit the amount of imports"
+msgstr "Limigi la nombron de importoj"
+
+#: bookwyrm/templates/settings/imports/imports.html:74
+msgid "Some users might try to import a large number of books, which you want to limit."
+msgstr "Kelkaj uzantoj eble provos importi grandan kvanton de libroj, kion vi volas limigi."
+
+#: bookwyrm/templates/settings/imports/imports.html:75
+msgid "Set the value to 0 to not enforce any limit."
+msgstr "Agordi la valoron al 0 por ne havi limon."
+
+#: bookwyrm/templates/settings/imports/imports.html:78
+msgid "Set import limit to"
+msgstr "Agordi la limon de importoj al po"
+
+#: bookwyrm/templates/settings/imports/imports.html:80
+msgid "books every"
+msgstr "libroj ĉiujn"
+
+#: bookwyrm/templates/settings/imports/imports.html:82
+msgid "days."
+msgstr "tagojn."
+
+#: bookwyrm/templates/settings/imports/imports.html:86
+msgid "Set limit"
+msgstr "Agordi la limon"
+
+#: bookwyrm/templates/settings/imports/imports.html:102
+msgid "Completed"
+msgstr "Finita"
+
+#: bookwyrm/templates/settings/imports/imports.html:116
+msgid "User"
+msgstr "Uzanto"
+
+#: bookwyrm/templates/settings/imports/imports.html:125
+msgid "Date Updated"
+msgstr "Dato de ĝisdatigo"
+
+#: bookwyrm/templates/settings/imports/imports.html:132
+msgid "Pending items"
+msgstr "Traktotaj aĵoj"
+
+#: bookwyrm/templates/settings/imports/imports.html:135
+msgid "Successful items"
+msgstr "Sukcesaj aĵoj"
+
+#: bookwyrm/templates/settings/imports/imports.html:170
+msgid "No matching imports found."
+msgstr "Neniu kongrua importo troviĝis."
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:4
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:11
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:25
+#: bookwyrm/templates/settings/invites/manage_invites.html:11
+msgid "Invite Requests"
+msgstr "Invitpetoj"
+
+#: 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
+#: bookwyrm/templates/settings/layout.html:42
+#: bookwyrm/templates/user_menu.html:60
+msgid "Invites"
+msgstr "Invitoj"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:23
+msgid "Ignored Invite Requests"
+msgstr "Ignoritaj invitpetoj"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:36
+msgid "Date requested"
+msgstr "Dato de peto"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:40
+msgid "Date accepted"
+msgstr "Dato de akcepto"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:43
+#: bookwyrm/templates/settings/users/email_filter.html:5
+msgid "Email"
+msgstr "Retadreso"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:45
+msgid "Answer"
+msgstr "Respondo"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:51
+msgid "Action"
+msgstr "Ago"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:54
+msgid "No requests"
+msgstr "Neniu peto"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:66
+#: bookwyrm/templates/settings/invites/status_filter.html:16
+msgid "Accepted"
+msgstr "Akceptita"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:68
+#: bookwyrm/templates/settings/invites/status_filter.html:12
+msgid "Sent"
+msgstr "Sendita"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:70
+#: bookwyrm/templates/settings/invites/status_filter.html:8
+msgid "Requested"
+msgstr "Petita"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:80
+msgid "Send invite"
+msgstr "Sendi la inviton"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:82
+msgid "Re-send invite"
+msgstr "Resendi la inviton"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:102
+msgid "Ignore"
+msgstr "Ignori"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:104
+msgid "Un-ignore"
+msgstr "Ne plu ignori"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:116
+msgid "Back to pending requests"
+msgstr "Reiri al la traktotaj petoj"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:118
+msgid "View ignored requests"
+msgstr "Vidi la traktotajn petojn"
+
+#: bookwyrm/templates/settings/invites/manage_invites.html:21
+msgid "Generate New Invite"
+msgstr "Generi novan inviton"
+
+#: bookwyrm/templates/settings/invites/manage_invites.html:27
+msgid "Expiry:"
+msgstr "Eksvalidiĝo:"
+
+#: bookwyrm/templates/settings/invites/manage_invites.html:33
+msgid "Use limit:"
+msgstr "Uzlimo:"
+
+#: bookwyrm/templates/settings/invites/manage_invites.html:40
+msgid "Create Invite"
+msgstr "Krei inviton"
+
+#: bookwyrm/templates/settings/invites/manage_invites.html:48
+msgid "Expires"
+msgstr "Eksvalidiĝas"
+
+#: bookwyrm/templates/settings/invites/manage_invites.html:49
+msgid "Max uses"
+msgstr "Maksimumaj uzoj"
+
+#: bookwyrm/templates/settings/invites/manage_invites.html:50
+msgid "Times used"
+msgstr "Nombro de uzoj"
+
+#: bookwyrm/templates/settings/invites/manage_invites.html:53
+msgid "No active invites"
+msgstr "Neniu aktiva invito"
+
+#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:5
+#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:10
+msgid "Add IP address"
+msgstr "Aldoni IP-adreson"
+
+#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:11
+msgid "Use IP address blocks with caution, and consider using blocks only temporarily, as IP addresses are often shared or change hands. If you block your own IP, you will not be able to access this page."
+msgstr "Estu zorga pri blokado de IP-adresoj, kaj konsideru bloki nur provizore, ĉar IP-adresoj ofte estas kundividitaj aŭ moviĝis inter pluraj homoj. Se vi blokos vian propran IP-adreson, vi ne povos aliri al ĉi tiu paĝo."
+
+#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:18
+msgid "IP Address:"
+msgstr "IP-adreso:"
+
+#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:24
+msgid "You can block IP ranges using CIDR syntax."
+msgstr "Vi povas bloki intervalojn de IP-adresoj per la sintakso CIDR."
+
+#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:5
+#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:7
+#: bookwyrm/templates/settings/layout.html:69
+msgid "IP Address Blocklist"
+msgstr "Bloklisto de IP-adresoj"
+
+#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:18
+msgid "Any traffic from this IP address will get a 404 response when trying to access any part of the application."
+msgstr "Iu ajn trafiko de ĉi tiu IP-adreso ricevos la respondon 404 kiam ĝi provos aliri al iu ajn parto de la aplikaĵo."
+
+#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:24
+msgid "Address"
+msgstr "Adreso"
+
+#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:46
+msgid "No IP addresses currently blocked"
+msgstr "Neniu IP-adreso estas aktuale blokita"
+
+#: bookwyrm/templates/settings/layout.html:4
+msgid "Administration"
+msgstr "Administrado"
+
+#: bookwyrm/templates/settings/layout.html:31
+msgid "Manage Users"
+msgstr "Administri uzantojn"
+
+#: bookwyrm/templates/settings/layout.html:53
+msgid "Moderation"
+msgstr "Moderigado"
+
+#: bookwyrm/templates/settings/layout.html:57
+#: bookwyrm/templates/settings/reports/reports.html:8
+#: bookwyrm/templates/settings/reports/reports.html:17
+msgid "Reports"
+msgstr "Raportoj"
+
+#: bookwyrm/templates/settings/layout.html:73
+#: bookwyrm/templates/settings/link_domains/link_domains.html:5
+#: bookwyrm/templates/settings/link_domains/link_domains.html:7
+msgid "Link Domains"
+msgstr "Domajnoj de ligiloj"
+
+#: bookwyrm/templates/settings/layout.html:78
+msgid "System"
+msgstr "Sistemo"
+
+#: bookwyrm/templates/settings/layout.html:86
+msgid "Celery status"
+msgstr "Stato de Celery"
+
+#: bookwyrm/templates/settings/layout.html:95
+msgid "Instance Settings"
+msgstr "Agordoj de la instanco"
+
+#: bookwyrm/templates/settings/layout.html:103
+#: bookwyrm/templates/settings/site.html:4
+#: bookwyrm/templates/settings/site.html:6
+msgid "Site Settings"
+msgstr "Agordoj de la retejo"
+
+#: bookwyrm/templates/settings/layout.html:109
+#: bookwyrm/templates/settings/layout.html:112
+#: bookwyrm/templates/settings/registration.html:4
+#: bookwyrm/templates/settings/registration.html:6
+#: bookwyrm/templates/settings/registration_limited.html:4
+#: bookwyrm/templates/settings/registration_limited.html:6
+msgid "Registration"
+msgstr "Registrado"
+
+#: bookwyrm/templates/settings/layout.html:118
+#: bookwyrm/templates/settings/site.html:107
+#: bookwyrm/templates/settings/themes.html:4
+#: bookwyrm/templates/settings/themes.html:6
+msgid "Themes"
+msgstr "Etosoj"
+
+#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5
+#, python-format
+msgid "Set display name for %(url)s"
+msgstr "Agordi la nomon montratan por %(url)s"
+
+#: bookwyrm/templates/settings/link_domains/link_domains.html:11
+msgid "Link domains must be approved before they are shown on book pages. Please make sure that the domains are not hosting spam, malicious code, or deceptive links before approving."
+msgstr "Domajnoj de ligiloj devas esti aprobitaj antaŭ ol ili montriĝos ĉe libropaĝoj. Bonvolu certigi ke la domajnoj ne gastigas trudaĵojn, malican kodon aŭ trompajn ligilojn antaŭ ol aprobi."
+
+#: bookwyrm/templates/settings/link_domains/link_domains.html:45
+msgid "Set display name"
+msgstr "Agordi la montratan nomon"
+
+#: bookwyrm/templates/settings/link_domains/link_domains.html:53
+msgid "View links"
+msgstr "Vidi la ligilojn"
+
+#: bookwyrm/templates/settings/link_domains/link_domains.html:96
+msgid "No domains currently approved"
+msgstr "Neniu domajno estas aktuale aprobita"
+
+#: bookwyrm/templates/settings/link_domains/link_domains.html:98
+msgid "No domains currently pending"
+msgstr "Neniu domajno estas traktenda"
+
+#: bookwyrm/templates/settings/link_domains/link_domains.html:100
+msgid "No domains currently blocked"
+msgstr "Neniu domajno estas aktuale blokita"
+
+#: bookwyrm/templates/settings/link_domains/link_table.html:43
+msgid "No links available for this domain."
+msgstr "Neniu ligilo disponeblas por ĉi tiu domajno."
+
+#: bookwyrm/templates/settings/registration.html:13
+#: bookwyrm/templates/settings/registration_limited.html:13
+#: bookwyrm/templates/settings/site.html:21
+msgid "Settings saved"
+msgstr "La agordoj konserviĝis"
+
+#: bookwyrm/templates/settings/registration.html:22
+#: bookwyrm/templates/settings/registration_limited.html:22
+#: bookwyrm/templates/settings/site.html:30
+msgid "Unable to save settings"
+msgstr "Ne eblis konservi la agordojn"
+
+#: bookwyrm/templates/settings/registration.html:38
+msgid "Allow registration"
+msgstr "Permesi registradon"
+
+#: bookwyrm/templates/settings/registration.html:43
+msgid "Default access level:"
+msgstr "Defaŭlta alirnivelo:"
+
+#: bookwyrm/templates/settings/registration.html:61
+msgid "Require users to confirm email address"
+msgstr "Postuli ke uzantoj konfirmu siajn retadresojn"
+
+#: bookwyrm/templates/settings/registration.html:63
+msgid "(Recommended if registration is open)"
+msgstr "(Rekomendite se registrado estas malfermita)"
+
+#: bookwyrm/templates/settings/registration.html:68
+msgid "Allow invite requests"
+msgstr "Permesi invitpetojn"
+
+#: bookwyrm/templates/settings/registration.html:72
+#: bookwyrm/templates/settings/registration_limited.html:42
+msgid "Invite request text:"
+msgstr "Teksto de la invitpeto:"
+
+#: bookwyrm/templates/settings/registration.html:80
+#: bookwyrm/templates/settings/registration_limited.html:50
+msgid "Set a question for invite requests"
+msgstr "Agordi demandon por la invitpetoj"
+
+#: bookwyrm/templates/settings/registration.html:85
+#: bookwyrm/templates/settings/registration_limited.html:55
+msgid "Question:"
+msgstr "Demando:"
+
+#: bookwyrm/templates/settings/registration.html:90
+#: bookwyrm/templates/settings/registration_limited.html:67
+msgid "Registration closed text:"
+msgstr "Teksto montrota kiam registrado estas fermita:"
+
+#: bookwyrm/templates/settings/registration_limited.html:29
+msgid "Registration is enabled on this instance"
+msgstr "Registrado estas ŝaltita ĉe ĉi tiu instanco"
+
+#: bookwyrm/templates/settings/reports/report.html:12
+msgid "Back to reports"
+msgstr "Reiri al la raportoj"
+
+#: bookwyrm/templates/settings/reports/report.html:24
+msgid "Message reporter"
+msgstr "Sendi mesaĝon al la raportinto"
+
+#: bookwyrm/templates/settings/reports/report.html:28
+msgid "Update on your report:"
+msgstr "Ĝisdatigo de via raporto:"
+
+#: bookwyrm/templates/settings/reports/report.html:36
+msgid "Reported status"
+msgstr "Raportita afiŝo"
+
+#: bookwyrm/templates/settings/reports/report.html:38
+msgid "Status has been deleted"
+msgstr "La afiŝo estis forigita"
+
+#: bookwyrm/templates/settings/reports/report.html:47
+msgid "Reported links"
+msgstr "Raportitaj ligiloj"
+
+#: bookwyrm/templates/settings/reports/report.html:65
+msgid "Moderator Comments"
+msgstr "Komentoj de moderigantoj"
+
+#: bookwyrm/templates/settings/reports/report.html:86
+#: bookwyrm/templates/snippets/create_status.html:26
+msgid "Comment"
+msgstr "Komento"
+
+#: bookwyrm/templates/settings/reports/report_header.html:6
+#, python-format
+msgid "Report #%(report_id)s: Status posted by @%(username)s"
+msgstr "Raporto #%(report_id)s: Afiŝo farita de @%(username)s"
+
+#: bookwyrm/templates/settings/reports/report_header.html:13
+#, python-format
+msgid "Report #%(report_id)s: Link added by @%(username)s"
+msgstr "Raporto #%(report_id)s: Ligilo aldonita de %(username)s"
+
+#: bookwyrm/templates/settings/reports/report_header.html:17
+#, python-format
+msgid "Report #%(report_id)s: Link domain"
+msgstr "Raporto #%(report_id)s: Domajno de ligilo"
+
+#: bookwyrm/templates/settings/reports/report_header.html:24
+#, python-format
+msgid "Report #%(report_id)s: User @%(username)s"
+msgstr "Raporto #%(report_id)s: Uzanto @%(username)s"
+
+#: bookwyrm/templates/settings/reports/report_links_table.html:17
+msgid "Block domain"
+msgstr "Bloki la domajnon"
+
+#: bookwyrm/templates/settings/reports/report_preview.html:17
+msgid "No notes provided"
+msgstr "Neniu noto aldonita"
+
+#: bookwyrm/templates/settings/reports/report_preview.html:24
+#, python-format
+msgid "Reported by @%(username)s "
+msgstr "Raportita de @%(username)s "
+
+#: bookwyrm/templates/settings/reports/report_preview.html:34
+msgid "Re-open"
+msgstr "Remalfermi"
+
+#: bookwyrm/templates/settings/reports/report_preview.html:36
+msgid "Resolve"
+msgstr "Solvi"
+
+#: bookwyrm/templates/settings/reports/reports.html:6
+#, python-format
+msgid "Reports: %(instance_name)s"
+msgstr "Raportoj: %(instance_name)s"
+
+#: bookwyrm/templates/settings/reports/reports.html:14
+#, python-format
+msgid "Reports: %(instance_name)s "
+msgstr "Raportoj: %(instance_name)s "
+
+#: bookwyrm/templates/settings/reports/reports.html:25
+msgid "Open"
+msgstr "Malfermita"
+
+#: bookwyrm/templates/settings/reports/reports.html:28
+msgid "Resolved"
+msgstr "Solvita"
+
+#: bookwyrm/templates/settings/reports/reports.html:37
+msgid "No reports found."
+msgstr "Neniu raporto troviĝis."
+
+#: bookwyrm/templates/settings/site.html:10
+#: bookwyrm/templates/settings/site.html:43
+msgid "Instance Info"
+msgstr "Informo pri la instanco"
+
+#: bookwyrm/templates/settings/site.html:12
+#: bookwyrm/templates/settings/site.html:122
+msgid "Footer Content"
+msgstr "Enhavo de la paĝopiedo"
+
+#: bookwyrm/templates/settings/site.html:46
+msgid "Instance Name:"
+msgstr "Nomo de la instanco:"
+
+#: bookwyrm/templates/settings/site.html:50
+msgid "Tagline:"
+msgstr "Frapfrazo:"
+
+#: bookwyrm/templates/settings/site.html:54
+msgid "Instance description:"
+msgstr "Priskribo de la instanco:"
+
+#: bookwyrm/templates/settings/site.html:58
+msgid "Short description:"
+msgstr "Mallonga priskribo:"
+
+#: bookwyrm/templates/settings/site.html:59
+msgid "Used when the instance is previewed on joinbookwyrm.com. Does not support HTML or Markdown."
+msgstr "Uzata por la antaŭrigardo de la instanco ĉe joinbookwyrm.com. Ne akceptas HTML aŭ Markdown."
+
+#: bookwyrm/templates/settings/site.html:63
+msgid "Code of conduct:"
+msgstr "Kondutkodo:"
+
+#: bookwyrm/templates/settings/site.html:67
+msgid "Privacy Policy:"
+msgstr "Privateca politiko:"
+
+#: bookwyrm/templates/settings/site.html:72
+msgid "Impressum:"
+msgstr "Impressum:"
+
+#: bookwyrm/templates/settings/site.html:77
+msgid "Include impressum:"
+msgstr "Inkluzivi la impressum:"
+
+#: bookwyrm/templates/settings/site.html:91
+msgid "Images"
+msgstr "Bildoj"
+
+#: bookwyrm/templates/settings/site.html:94
+msgid "Logo:"
+msgstr "Emblemo:"
+
+#: bookwyrm/templates/settings/site.html:98
+msgid "Logo small:"
+msgstr "Emblemo malgranda:"
+
+#: bookwyrm/templates/settings/site.html:102
+msgid "Favicon:"
+msgstr "Favicon:"
+
+#: bookwyrm/templates/settings/site.html:110
+msgid "Default theme:"
+msgstr "Defaŭlta etoso:"
+
+#: bookwyrm/templates/settings/site.html:125
+msgid "Support link:"
+msgstr "Ligilo por subteni la instancon:"
+
+#: bookwyrm/templates/settings/site.html:129
+msgid "Support title:"
+msgstr "Titolo por subteni la instancon:"
+
+#: bookwyrm/templates/settings/site.html:133
+msgid "Admin email:"
+msgstr "Retadreso de la administranto:"
+
+#: bookwyrm/templates/settings/site.html:137
+msgid "Additional info:"
+msgstr "Aldonaj informoj:"
+
+#: bookwyrm/templates/settings/themes.html:10
+msgid "Set instance default theme"
+msgstr "Agordi la defaŭltan etoson de la instanco"
+
+#: bookwyrm/templates/settings/themes.html:19
+msgid "Successfully added theme"
+msgstr "Sukcese aldonis etoson"
+
+#: bookwyrm/templates/settings/themes.html:26
+msgid "How to add a theme"
+msgstr "Kiel aldoni etoson"
+
+#: bookwyrm/templates/settings/themes.html:29
+msgid "Copy the theme file into the bookwyrm/static/css/themes
directory on your server from the command line."
+msgstr "Kopiu la etosdosieron al la dosierujo bookwyrm/static/css/themes
ĉe via servilo per la komanda linio."
+
+#: bookwyrm/templates/settings/themes.html:32
+msgid "Run ./bw-dev compile_themes
and ./bw-dev collectstatic
."
+msgstr "Rulu ./bw-dev compile_themes
kaj ./bw-dev collectstatic
."
+
+#: bookwyrm/templates/settings/themes.html:35
+msgid "Add the file name using the form below to make it available in the application interface."
+msgstr "Aldonu la dosiernomon uzante la jenan formularon por havebligi ĝin en la interfaco de la aplikaĵo."
+
+#: bookwyrm/templates/settings/themes.html:42
+#: bookwyrm/templates/settings/themes.html:82
+msgid "Add theme"
+msgstr "Aldoni etoson"
+
+#: bookwyrm/templates/settings/themes.html:48
+msgid "Unable to save theme"
+msgstr "Malsukcesis konservi la etoson"
+
+#: bookwyrm/templates/settings/themes.html:63
+#: bookwyrm/templates/settings/themes.html:93
+msgid "Theme name"
+msgstr "Nomo de la etoso"
+
+#: bookwyrm/templates/settings/themes.html:73
+msgid "Theme filename"
+msgstr "Dosiernomo de la etoso"
+
+#: bookwyrm/templates/settings/themes.html:88
+msgid "Available Themes"
+msgstr "Disponeblaj etosoj"
+
+#: bookwyrm/templates/settings/themes.html:96
+msgid "File"
+msgstr "Dosiero"
+
+#: bookwyrm/templates/settings/themes.html:111
+msgid "Remove theme"
+msgstr "Forigi etoson"
+
+#: bookwyrm/templates/settings/users/delete_user_form.html:5
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:38
+msgid "Permanently delete user"
+msgstr "Porĉiame forigi la uzanton"
+
+#: bookwyrm/templates/settings/users/delete_user_form.html:12
+#, python-format
+msgid "Are you sure you want to delete %(username)s 's account? This action cannot be undone. To proceed, please enter your password to confirm deletion."
+msgstr "Ĉu vi certas ke vi volas forigi la konton de %(username)s ? Ne eblos malfari ĉi tiun agon. Por daŭrigi, bonvolu entajpi vian pasvorton por konfirmi la forigon."
+
+#: bookwyrm/templates/settings/users/delete_user_form.html:17
+msgid "Your password:"
+msgstr "Via pasvorto:"
+
+#: bookwyrm/templates/settings/users/user_admin.html:9
+#, python-format
+msgid "Users: %(instance_name)s "
+msgstr "Uzantoj: %(instance_name)s "
+
+#: bookwyrm/templates/settings/users/user_admin.html:29
+msgid "Deleted users"
+msgstr "Forigitaj uzantoj"
+
+#: bookwyrm/templates/settings/users/user_admin.html:44
+#: bookwyrm/templates/settings/users/username_filter.html:5
+msgid "Username"
+msgstr "Uzantnomo"
+
+#: bookwyrm/templates/settings/users/user_admin.html:48
+msgid "Date Added"
+msgstr "Dato de aldono"
+
+#: bookwyrm/templates/settings/users/user_admin.html:52
+msgid "Last Active"
+msgstr "Lasta aktiveco"
+
+#: bookwyrm/templates/settings/users/user_admin.html:61
+msgid "Remote instance"
+msgstr "Fora instanco"
+
+#: bookwyrm/templates/settings/users/user_admin.html:86
+msgid "Deleted"
+msgstr "Forigita"
+
+#: bookwyrm/templates/settings/users/user_admin.html:92
+#: bookwyrm/templates/settings/users/user_info.html:32
+msgid "Inactive"
+msgstr "Malaktiva"
+
+#: bookwyrm/templates/settings/users/user_admin.html:101
+#: bookwyrm/templates/settings/users/user_info.html:127
+msgid "Not set"
+msgstr "Ne agordita"
+
+#: bookwyrm/templates/settings/users/user_info.html:16
+msgid "View user profile"
+msgstr "Vidi la profilon"
+
+#: bookwyrm/templates/settings/users/user_info.html:19
+msgid "Go to user admin"
+msgstr "Iri al la administrado de kontoj"
+
+#: bookwyrm/templates/settings/users/user_info.html:40
+msgid "Local"
+msgstr "Loka"
+
+#: bookwyrm/templates/settings/users/user_info.html:42
+msgid "Remote"
+msgstr "Fora"
+
+#: bookwyrm/templates/settings/users/user_info.html:51
+msgid "User details"
+msgstr "Detaloj de la uzanto"
+
+#: bookwyrm/templates/settings/users/user_info.html:55
+msgid "Email:"
+msgstr "Retadreso:"
+
+#: bookwyrm/templates/settings/users/user_info.html:65
+msgid "(View reports)"
+msgstr "(Vidi raportojn)"
+
+#: bookwyrm/templates/settings/users/user_info.html:71
+msgid "Blocked by count:"
+msgstr "Nombro de kontoj kiuj blokis:"
+
+#: bookwyrm/templates/settings/users/user_info.html:74
+msgid "Date added:"
+msgstr "Dato de aldono:"
+
+#: bookwyrm/templates/settings/users/user_info.html:77
+msgid "Last active date:"
+msgstr "Dato de lasta aktiveco:"
+
+#: bookwyrm/templates/settings/users/user_info.html:80
+msgid "Manually approved followers:"
+msgstr "Permane aprobas sekvantojn:"
+
+#: bookwyrm/templates/settings/users/user_info.html:83
+msgid "Discoverable:"
+msgstr "Eltrovebla:"
+
+#: bookwyrm/templates/settings/users/user_info.html:87
+msgid "Deactivation reason:"
+msgstr "Kialo de la malaktivigo:"
+
+#: bookwyrm/templates/settings/users/user_info.html:102
+msgid "Instance details"
+msgstr "Detaloj de la instanco"
+
+#: bookwyrm/templates/settings/users/user_info.html:124
+msgid "View instance"
+msgstr "Vidi la instancon"
+
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:5
+msgid "Permanently deleted"
+msgstr "Porĉiame forigita"
+
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:8
+msgid "User Actions"
+msgstr "Agoj por la uzanto"
+
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:21
+msgid "Activate user"
+msgstr "Aktivigi uzanton"
+
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:27
+msgid "Suspend user"
+msgstr "Provizore ĉesigi uzanton"
+
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
+msgid "Un-suspend user"
+msgstr "Malĉesigi uzanton"
+
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:54
+msgid "Access level:"
+msgstr "Alirnivelo:"
+
+#: bookwyrm/templates/setup/admin.html:5
+msgid "Set up BookWyrm"
+msgstr "Agordi BookWyrm"
+
+#: bookwyrm/templates/setup/admin.html:7
+msgid "Your account as a user and an admin"
+msgstr "Via konto kiel uzanto kaj administranto"
+
+#: bookwyrm/templates/setup/admin.html:13
+msgid "Create your account"
+msgstr "Krei vian konton"
+
+#: bookwyrm/templates/setup/admin.html:20
+msgid "Admin key:"
+msgstr "Administra ŝlosilo:"
+
+#: bookwyrm/templates/setup/admin.html:32
+msgid "An admin key was created when you installed BookWyrm. You can get your admin key by running ./bw-dev admin_code
from the command line on your server."
+msgstr "Administra ŝlosilo kreiĝis kiam vi instalis BookWyrm. Vi povas akiri vian ŝlosilon per la komando ./bw-dev admin_code
ĉe la komanda linio de via servilo."
+
+#: bookwyrm/templates/setup/admin.html:45
+msgid "As an admin, you'll be able to configure the instance name and information, and moderate your instance. This means you will have access to private information about your users, and are responsible for responding to reports of bad behavior or spam."
+msgstr "Kiel administranto vi povos agordi la instancnomon kaj informojn, kaj administri vian instancon. Tio signifas ke vi havos aliron al privataj informoj pri viaj uzantoj kaj estos respondeca pri respondado al raportoj de malbona konduto aŭ trudaĵoj."
+
+#: bookwyrm/templates/setup/admin.html:51
+msgid "Once the instance is set up, you can promote other users to moderator or admin roles from the admin panel."
+msgstr "Post kiam la instanco estos agordita, vi povos promocii aliajn uzantojn al moderigaj kaj administrantaj roloj per la administra panelo."
+
+#: bookwyrm/templates/setup/admin.html:55
+msgid "Learn more about moderation"
+msgstr "Pli da informo pri moderigado"
+
+#: bookwyrm/templates/setup/config.html:5
+msgid "Instance Configuration"
+msgstr "Agordoj de la instanco"
+
+#: bookwyrm/templates/setup/config.html:7
+msgid "Make sure everything looks right before proceeding"
+msgstr "Certigu ke ĉio aspektas ĝusta antaŭ ol daŭrigi"
+
+#: bookwyrm/templates/setup/config.html:18
+msgid "You are running BookWyrm in debug mode. This should never be used in a production environment."
+msgstr "Vi rulas BookWyrm en la reĝimo debug . Tio devus neniam esti uzata en produkta medio."
+
+#: bookwyrm/templates/setup/config.html:30
+msgid "Your domain appears to be misconfigured. It should not include protocol or slashes."
+msgstr "Via domajno ŝajnas misagordita. Ĝi devus ne enhavi protokolon aŭ oblikvajn strekojn."
+
+#: bookwyrm/templates/setup/config.html:42
+msgid "You are running BookWyrm in production mode without https. USE_HTTPS should be enabled in production."
+msgstr "Vi rulas BookWyrm en la produkta reĝimo sen HTTPS. USE_HTTPS devus esti ŝaltita por produktaj uzoj."
+
+#: bookwyrm/templates/setup/config.html:52 bookwyrm/templates/user_menu.html:49
+msgid "Settings"
+msgstr "Agordoj"
+
+#: bookwyrm/templates/setup/config.html:56
+msgid "Instance domain:"
+msgstr "Domajno de la instanco:"
+
+#: bookwyrm/templates/setup/config.html:63
+msgid "Protocol:"
+msgstr "Protokolo:"
+
+#: bookwyrm/templates/setup/config.html:81
+msgid "Using S3:"
+msgstr "Uzas S3:"
+
+#: bookwyrm/templates/setup/config.html:95
+msgid "Default interface language:"
+msgstr "Defaŭlta lingvo de la interfaco:"
+
+#: bookwyrm/templates/setup/config.html:109
+msgid "Enable preview images:"
+msgstr "Ŝalti antaŭrigardajn bildojn:"
+
+#: bookwyrm/templates/setup/config.html:116
+msgid "Enable image thumbnails:"
+msgstr "Ŝalti bildetojn:"
+
+#: bookwyrm/templates/setup/config.html:128
+msgid "Does everything look right?"
+msgstr "Ĉu ĉio ŝajnas ĝusta?"
+
+#: bookwyrm/templates/setup/config.html:130
+msgid "This is your last chance to set your domain and protocol."
+msgstr "Nun estas via lasta eblo agordi viajn domajnon kaj protokolon."
+
+#: bookwyrm/templates/setup/config.html:144
+msgid "You can change your instance settings in the .env
file on your server."
+msgstr "Vi povas ŝanĝi la agordojn de la instanco en la dosiero .env
ĉe via servilo."
+
+#: bookwyrm/templates/setup/config.html:148
+msgid "View installation instructions"
+msgstr "Vidi la instrukciojn de instalado"
+
+#: bookwyrm/templates/setup/layout.html:5
+msgid "Instance Setup"
+msgstr "Agordado de la instanco"
+
+#: bookwyrm/templates/setup/layout.html:21
+msgid "Installing BookWyrm"
+msgstr "Instalado de BookWyrm"
+
+#: bookwyrm/templates/setup/layout.html:24
+msgid "Need help?"
+msgstr "Ĉu vi bezonas helpon?"
+
+#: bookwyrm/templates/shelf/create_shelf_form.html:5
+#: bookwyrm/templates/shelf/shelf.html:72
+msgid "Create shelf"
+msgstr "Krei breton"
+
+#: bookwyrm/templates/shelf/edit_shelf_form.html:5
+msgid "Edit Shelf"
+msgstr "Modifi breton"
+
+#: bookwyrm/templates/shelf/shelf.html:24
+msgid "User profile"
+msgstr "Profilo"
+
+#: bookwyrm/templates/shelf/shelf.html:39
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
+msgid "All books"
+msgstr "Ĉiuj libroj"
+
+#: bookwyrm/templates/shelf/shelf.html:97
+#, python-format
+msgid "%(formatted_count)s book"
+msgid_plural "%(formatted_count)s books"
+msgstr[0] "%(formatted_count)s libro"
+msgstr[1] "%(formatted_count)s libroj"
+
+#: bookwyrm/templates/shelf/shelf.html:104
+#, python-format
+msgid "(showing %(start)s-%(end)s)"
+msgstr "(montriĝas %(start)s-%(end)s)"
+
+#: bookwyrm/templates/shelf/shelf.html:116
+msgid "Edit shelf"
+msgstr "Modifi la breton"
+
+#: bookwyrm/templates/shelf/shelf.html:124
+msgid "Delete shelf"
+msgstr "Forigi la breton"
+
+#: bookwyrm/templates/shelf/shelf.html:152
+#: bookwyrm/templates/shelf/shelf.html:178
+msgid "Shelved"
+msgstr "Surbretigo"
+
+#: bookwyrm/templates/shelf/shelf.html:153
+#: bookwyrm/templates/shelf/shelf.html:181
+msgid "Started"
+msgstr "Komencis"
+
+#: bookwyrm/templates/shelf/shelf.html:154
+#: bookwyrm/templates/shelf/shelf.html:184
+msgid "Finished"
+msgstr "Finis"
+
+#: bookwyrm/templates/shelf/shelf.html:154
+#: bookwyrm/templates/shelf/shelf.html:184
+msgid "Until"
+msgstr "Ĝis"
+
+#: bookwyrm/templates/shelf/shelf.html:210
+msgid "This shelf is empty."
+msgstr "Ĉi tiu breto estas malplena."
+
+#: bookwyrm/templates/snippets/add_to_group_button.html:16
+msgid "Invite"
+msgstr "Inviti"
+
+#: bookwyrm/templates/snippets/add_to_group_button.html:25
+msgid "Uninvite"
+msgstr "Malinviti"
+
+#: bookwyrm/templates/snippets/add_to_group_button.html:29
+#, python-format
+msgid "Remove @%(username)s"
+msgstr "Forigi @%(username)s"
+
+#: bookwyrm/templates/snippets/announcement.html:28
+#, python-format
+msgid "Posted by %(username)s "
+msgstr "Afiŝita de %(username)s "
+
+#: bookwyrm/templates/snippets/authors.html:22
+#: bookwyrm/templates/snippets/trimmed_list.html:14
+#, python-format
+msgid "and %(remainder_count_display)s other"
+msgid_plural "and %(remainder_count_display)s others"
+msgstr[0] "kaj %(remainder_count_display)s alia"
+msgstr[1] "kaj %(remainder_count_display)s aliaj"
+
+#: bookwyrm/templates/snippets/book_cover.html:63
+msgid "No cover"
+msgstr "Neniu kovrilo"
+
+#: bookwyrm/templates/snippets/book_titleby.html:11
+#, python-format
+msgid "%(title)s by"
+msgstr "%(title)s de"
+
+#: bookwyrm/templates/snippets/boost_button.html:20
+#: bookwyrm/templates/snippets/boost_button.html:21
+msgid "Boost"
+msgstr "Diskonigi"
+
+#: bookwyrm/templates/snippets/boost_button.html:33
+#: bookwyrm/templates/snippets/boost_button.html:34
+msgid "Un-boost"
+msgstr "Maldiskonigi"
+
+#: bookwyrm/templates/snippets/create_status.html:36
+msgid "Quote"
+msgstr "Citi"
+
+#: bookwyrm/templates/snippets/create_status/comment.html:15
+msgid "Some thoughts on the book"
+msgstr "Kelkaj pensoj pri la libro"
+
+#: bookwyrm/templates/snippets/create_status/comment.html:27
+#: bookwyrm/templates/snippets/reading_modals/progress_update_modal.html:18
+msgid "Progress:"
+msgstr "Progreso:"
+
+#: bookwyrm/templates/snippets/create_status/comment.html:53
+#: bookwyrm/templates/snippets/progress_field.html:18
+msgid "pages"
+msgstr "paĝoj"
+
+#: bookwyrm/templates/snippets/create_status/comment.html:59
+#: bookwyrm/templates/snippets/progress_field.html:23
+msgid "percent"
+msgstr "elcento"
+
+#: bookwyrm/templates/snippets/create_status/comment.html:66
+#, python-format
+msgid "of %(pages)s pages"
+msgstr "de %(pages)s paĝoj"
+
+#: bookwyrm/templates/snippets/create_status/content_field.html:18
+#: bookwyrm/templates/snippets/status/layout.html:34
+#: bookwyrm/templates/snippets/status/layout.html:53
+#: bookwyrm/templates/snippets/status/layout.html:54
+msgid "Reply"
+msgstr "Respondi"
+
+#: bookwyrm/templates/snippets/create_status/content_field.html:18
+msgid "Content"
+msgstr "Enhavo"
+
+#: bookwyrm/templates/snippets/create_status/content_warning_field.html:9
+msgid "Include spoiler alert"
+msgstr "Montri averton pri intrigmalkaŝo"
+
+#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18
+msgid "Spoilers/content warnings:"
+msgstr "Avertoj pri intrigmalkaŝo kaj enhavo:"
+
+#: bookwyrm/templates/snippets/create_status/content_warning_field.html:27
+msgid "Spoilers ahead!"
+msgstr "Atentu! Intrigmalkaŝoj!"
+
+#: bookwyrm/templates/snippets/create_status/layout.html:45
+#: bookwyrm/templates/snippets/reading_modals/form.html:7
+msgid "Comment:"
+msgstr "Komento:"
+
+#: bookwyrm/templates/snippets/create_status/post_options_block.html:18
+msgid "Post"
+msgstr "Afiŝi"
+
+#: bookwyrm/templates/snippets/create_status/quotation.html:16
+msgid "Quote:"
+msgstr "Citaĵo:"
+
+#: bookwyrm/templates/snippets/create_status/quotation.html:24
+#, python-format
+msgid "An excerpt from '%(book_title)s'"
+msgstr "Ekstrakto de ‘%(book_title)s’"
+
+#: bookwyrm/templates/snippets/create_status/quotation.html:31
+msgid "Position:"
+msgstr "Pozicio:"
+
+#: bookwyrm/templates/snippets/create_status/quotation.html:44
+msgid "On page:"
+msgstr "Ĉe paĝo:"
+
+#: bookwyrm/templates/snippets/create_status/quotation.html:50
+msgid "At percent:"
+msgstr "Ĉe elcento:"
+
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr "ĝis"
+
+#: bookwyrm/templates/snippets/create_status/review.html:24
+#, python-format
+msgid "Your review of '%(book_title)s'"
+msgstr "Via recenzo de «%(book_title)s»"
+
+#: bookwyrm/templates/snippets/create_status/review.html:39
+msgid "Review:"
+msgstr "Recenzo:"
+
+#: bookwyrm/templates/snippets/fav_button.html:16
+#: bookwyrm/templates/snippets/fav_button.html:17
+msgid "Like"
+msgstr "Ŝati"
+
+#: bookwyrm/templates/snippets/fav_button.html:30
+#: bookwyrm/templates/snippets/fav_button.html:31
+msgid "Un-like"
+msgstr "Ĉesi ŝati"
+
+#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:5
+msgid "Filters"
+msgstr "Filtriloj"
+
+#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:10
+#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:17
+msgid "Filters are applied"
+msgstr "Filtriloj aplikiĝas"
+
+#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:20
+msgid "Clear filters"
+msgstr "Forigi la filtrilojn"
+
+#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
+msgid "Apply filters"
+msgstr "Apliki la filtrilojn"
+
+#: bookwyrm/templates/snippets/follow_button.html:20
+#, python-format
+msgid "Follow @%(username)s"
+msgstr "Sekvi @%(username)s"
+
+#: bookwyrm/templates/snippets/follow_button.html:22
+msgid "Follow"
+msgstr "Sekvi"
+
+#: bookwyrm/templates/snippets/follow_button.html:31
+msgid "Undo follow request"
+msgstr "Nuligi la peton de sekvado"
+
+#: bookwyrm/templates/snippets/follow_button.html:36
+#, python-format
+msgid "Unfollow @%(username)s"
+msgstr "Ĉesi sekvi @%(username)s"
+
+#: bookwyrm/templates/snippets/follow_button.html:38
+msgid "Unfollow"
+msgstr "Ĉesi sekvi"
+
+#: bookwyrm/templates/snippets/follow_request_buttons.html:7
+#: bookwyrm/templates/snippets/join_invitation_buttons.html:9
+msgid "Accept"
+msgstr "Akcepti"
+
+#: bookwyrm/templates/snippets/footer.html:16
+msgid "Documentation"
+msgstr "Dokumentaro"
+
+#: bookwyrm/templates/snippets/footer.html:42
+#, python-format
+msgid "Support %(site_name)s on %(support_title)s "
+msgstr "Subtenu %(site_name)s ĉe %(support_title)s "
+
+#: bookwyrm/templates/snippets/footer.html:49
+msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub ."
+msgstr "La fontokodo de BookWyrm estas libere havebla. Vi povas kontribui aŭ raporti problemojn ĉe GitHub ."
+
+#: bookwyrm/templates/snippets/form_rate_stars.html:20
+#: bookwyrm/templates/snippets/stars.html:13
+msgid "No rating"
+msgstr "Neniu takso"
+
+#: bookwyrm/templates/snippets/form_rate_stars.html:28
+#, python-format
+msgid "%(half_rating)s star"
+msgid_plural "%(half_rating)s stars"
+msgstr[0] "%(half_rating)s stelo"
+msgstr[1] "%(half_rating)s steloj"
+
+#: bookwyrm/templates/snippets/form_rate_stars.html:64
+#: bookwyrm/templates/snippets/stars.html:7
+#, python-format
+msgid "%(rating)s star"
+msgid_plural "%(rating)s stars"
+msgstr[0] "%(rating)s stelo"
+msgstr[1] "%(rating)s steloj"
+
+#: bookwyrm/templates/snippets/generated_status/goal.html:2
+#, python-format
+msgid "set a goal to read %(counter)s book in %(year)s"
+msgid_plural "set a goal to read %(counter)s books in %(year)s"
+msgstr[0] "fiksis por si celon legi %(counter)s libron en %(year)s"
+msgstr[1] "fiksis por si celon legi %(counter)s librojn en %(year)s"
+
+#: bookwyrm/templates/snippets/generated_status/rating.html:3
+#, python-format
+msgid "rated %(title)s : %(display_rating)s star"
+msgid_plural "rated %(title)s : %(display_rating)s stars"
+msgstr[0] "taksis %(title)s : %(display_rating)s stelo"
+msgstr[1] "taksis %(title)s : %(display_rating)s steloj"
+
+#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4
+#, python-format
+msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s"
+msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s"
+msgstr[0] "Recenzo de «%(book_title)s» (%(display_rating)s stelo): %(review_title)s"
+msgstr[1] "Recenzo de «%(book_title)s» (%(display_rating)s steloj): %(review_title)s"
+
+#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12
+#, python-format
+msgid "Review of \"%(book_title)s\": %(review_title)s"
+msgstr "Recenzo de «%(book_title)s»: %(review_title)s"
+
+#: bookwyrm/templates/snippets/goal_form.html:4
+#, python-format
+msgid "Set a goal for how many books you'll finish reading in %(year)s, and track your progress throughout the year."
+msgstr "Fiksu por vi celon pri kiom da libroj vi finlegos en %(year)s kaj sekvu vian progreson dum la jaro."
+
+#: bookwyrm/templates/snippets/goal_form.html:16
+msgid "Reading goal:"
+msgstr "Legocelo:"
+
+#: bookwyrm/templates/snippets/goal_form.html:21
+msgid "books"
+msgstr "libroj"
+
+#: bookwyrm/templates/snippets/goal_form.html:26
+msgid "Goal privacy:"
+msgstr "Privateco de la celo:"
+
+#: bookwyrm/templates/snippets/goal_form.html:33
+#: bookwyrm/templates/snippets/reading_modals/layout.html:13
+msgid "Post to feed"
+msgstr "Afiŝi ĉe la fluo"
+
+#: bookwyrm/templates/snippets/goal_form.html:37
+msgid "Set goal"
+msgstr "Fiksi la celon"
+
+#: bookwyrm/templates/snippets/goal_progress.html:7
+msgctxt "Goal successfully completed"
+msgid "Success!"
+msgstr "Sukceso!"
+
+#: bookwyrm/templates/snippets/goal_progress.html:9
+#, python-format
+msgid "%(percent)s%% complete!"
+msgstr "%(percent)s%%-e kompleta!"
+
+#: bookwyrm/templates/snippets/goal_progress.html:12
+#, python-format
+msgid "You've read %(read_count)s of %(goal_count)s books ."
+msgstr "Vi legis %(read_count)s el %(goal_count)s libroj ."
+
+#: bookwyrm/templates/snippets/goal_progress.html:14
+#, python-format
+msgid "%(username)s has read %(read_count)s of %(goal_count)s books ."
+msgstr "%(username)s legis %(read_count)s el %(goal_count)s libroj ."
+
+#: bookwyrm/templates/snippets/page_text.html:8
+#, python-format
+msgid "page %(page)s of %(total_pages)s"
+msgstr "paĝo %(page)s el %(total_pages)s"
+
+#: bookwyrm/templates/snippets/page_text.html:14
+#, python-format
+msgid "page %(page)s"
+msgstr "paĝo %(page)s"
+
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr "Pli novaj"
+
+#: bookwyrm/templates/snippets/pagination.html:15
+msgid "Previous"
+msgstr "Antaŭe"
+
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr "Pli malnovaj"
+
+#: bookwyrm/templates/snippets/privacy-icons.html:12
+msgid "Followers-only"
+msgstr "Nur por sekvantoj"
+
+#: bookwyrm/templates/snippets/rate_action.html:5
+msgid "Leave a rating"
+msgstr "Taksi"
+
+#: bookwyrm/templates/snippets/rate_action.html:20
+msgid "Rate"
+msgstr "Taksi"
+
+#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:6
+#, python-format
+msgid "Finish \"%(book_title)s \""
+msgstr "Fini «%(book_title)s »"
+
+#: bookwyrm/templates/snippets/reading_modals/form.html:9
+msgid "(Optional)"
+msgstr "(Nedeviga)"
+
+#: bookwyrm/templates/snippets/reading_modals/progress_update_modal.html:6
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:61
+msgid "Update progress"
+msgstr "Ĝisdatigo de la progreso"
+
+#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:6
+#, python-format
+msgid "Start \"%(book_title)s \""
+msgstr "Komenci «%(book_title)s »"
+
+#: bookwyrm/templates/snippets/reading_modals/stop_reading_modal.html:6
+#, python-format
+msgid "Stop Reading \"%(book_title)s \""
+msgstr "Halti legi «%(book_title)s »"
+
+#: bookwyrm/templates/snippets/reading_modals/stop_reading_modal.html:32
+#: bookwyrm/templates/snippets/shelf_selector.html:53
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:21
+msgid "Stopped reading"
+msgstr "Haltis legi"
+
+#: bookwyrm/templates/snippets/reading_modals/want_to_read_modal.html:6
+#, python-format
+msgid "Want to Read \"%(book_title)s \""
+msgstr "Volas legi «%(book_title)s »"
+
+#: bookwyrm/templates/snippets/register_form.html:18
+msgid "Choose wisely! Your username cannot be changed."
+msgstr "Elektu atente! Ne eblos ŝanĝi vian uzantnomon."
+
+#: bookwyrm/templates/snippets/register_form.html:66
+msgid "Sign Up"
+msgstr "Registriĝi"
+
+#: bookwyrm/templates/snippets/report_modal.html:8
+#, python-format
+msgid "Report @%(username)s's status"
+msgstr "Raporti afiŝon de @%(username)s"
+
+#: bookwyrm/templates/snippets/report_modal.html:10
+#, python-format
+msgid "Report %(domain)s link"
+msgstr "Raporti ligilon de %(domain)s"
+
+#: bookwyrm/templates/snippets/report_modal.html:12
+#, python-format
+msgid "Report @%(username)s"
+msgstr "Raporti @%(username)s"
+
+#: bookwyrm/templates/snippets/report_modal.html:34
+#, python-format
+msgid "This report will be sent to %(site_name)s's moderators for review."
+msgstr "Ĉi tiu raporto estos sendita al la moderigantoj de %(site_name)s por kontrolado."
+
+#: bookwyrm/templates/snippets/report_modal.html:36
+msgid "Links from this domain will be removed until your report has been reviewed."
+msgstr "Ligiloj de ĉi tiu domajno estos forigitaj ĝis via raporto estos kontrolita."
+
+#: bookwyrm/templates/snippets/report_modal.html:41
+msgid "More info about this report:"
+msgstr "Pli da informo pri ĉi tiu raporto:"
+
+#: bookwyrm/templates/snippets/shelf_selector.html:7
+msgid "Move book"
+msgstr "Transloki la libron"
+
+#: bookwyrm/templates/snippets/shelf_selector.html:38
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:17
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:33
+msgid "Start reading"
+msgstr "Komenci legi"
+
+#: bookwyrm/templates/snippets/shelf_selector.html:60
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:38
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:55
+msgid "Want to read"
+msgstr "Volas legi"
+
+#: bookwyrm/templates/snippets/shelf_selector.html:81
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:73
+#, python-format
+msgid "Remove from %(name)s"
+msgstr "Forigi el %(name)s"
+
+#: bookwyrm/templates/snippets/shelf_selector.html:94
+msgid "Remove from"
+msgstr "Forigi el"
+
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown.html:5
+msgid "More shelves"
+msgstr "Pliaj bretoj"
+
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:31
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:48
+msgid "Stop reading"
+msgstr "Halti legi"
+
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:40
+msgid "Finish reading"
+msgstr "Ĉesi legi"
+
+#: bookwyrm/templates/snippets/status/content_status.html:80
+msgid "Show status"
+msgstr "Montri la afiŝon"
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "(Page %(page)s"
+msgstr "(Paĝo %(page)s"
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr "%(endpage)s"
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid "(%(percent)s%%"
+msgstr "(%(percent)s%%"
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid " - %(endpercent)s%%"
+msgstr " - %(endpercent)s%%"
+
+#: bookwyrm/templates/snippets/status/content_status.html:127
+msgid "Open image in new window"
+msgstr "Malfermi la bildon en nova fenestro"
+
+#: bookwyrm/templates/snippets/status/content_status.html:148
+msgid "Hide status"
+msgstr "Kaŝi la afiŝon"
+
+#: bookwyrm/templates/snippets/status/header.html:45
+#, python-format
+msgid "edited %(date)s"
+msgstr "modifita je %(date)s"
+
+#: bookwyrm/templates/snippets/status/headers/comment.html:8
+#, python-format
+msgid "commented on %(book)s by %(author_name)s "
+msgstr "komentis pri %(book)s de %(author_name)s "
+
+#: bookwyrm/templates/snippets/status/headers/comment.html:15
+#, python-format
+msgid "commented on %(book)s "
+msgstr "komentis pri %(book)s "
+
+#: bookwyrm/templates/snippets/status/headers/note.html:8
+#, python-format
+msgid "replied to %(username)s 's status "
+msgstr "respondis al afiŝo de %(username)s "
+
+#: bookwyrm/templates/snippets/status/headers/quotation.html:8
+#, python-format
+msgid "quoted %(book)s by %(author_name)s "
+msgstr "citis %(book)s de %(author_name)s "
+
+#: bookwyrm/templates/snippets/status/headers/quotation.html:15
+#, python-format
+msgid "quoted %(book)s "
+msgstr "citis %(book)s "
+
+#: bookwyrm/templates/snippets/status/headers/rating.html:3
+#, python-format
+msgid "rated %(book)s :"
+msgstr "taksis %(book)s :"
+
+#: bookwyrm/templates/snippets/status/headers/read.html:10
+#, python-format
+msgid "finished reading %(book)s by %(author_name)s "
+msgstr "finlegis %(book)s de %(author_name)s "
+
+#: bookwyrm/templates/snippets/status/headers/read.html:17
+#, python-format
+msgid "finished reading %(book)s "
+msgstr "finlegis %(book)s "
+
+#: bookwyrm/templates/snippets/status/headers/reading.html:10
+#, python-format
+msgid "started reading %(book)s by %(author_name)s "
+msgstr "komencis legi %(book)s de %(author_name)s "
+
+#: bookwyrm/templates/snippets/status/headers/reading.html:17
+#, python-format
+msgid "started reading %(book)s "
+msgstr "komencis legi %(book)s "
+
+#: bookwyrm/templates/snippets/status/headers/review.html:8
+#, python-format
+msgid "reviewed %(book)s by %(author_name)s "
+msgstr "recenzis %(book)s de %(author_name)s "
+
+#: bookwyrm/templates/snippets/status/headers/review.html:15
+#, python-format
+msgid "reviewed %(book)s "
+msgstr "recenzis %(book)s "
+
+#: bookwyrm/templates/snippets/status/headers/stopped_reading.html:10
+#, python-format
+msgid "stopped reading %(book)s by %(author_name)s "
+msgstr "haltis legi %(book)s de %(author_name)s "
+
+#: bookwyrm/templates/snippets/status/headers/stopped_reading.html:17
+#, python-format
+msgid "stopped reading %(book)s "
+msgstr "haltis legi %(book)s "
+
+#: bookwyrm/templates/snippets/status/headers/to_read.html:10
+#, python-format
+msgid "wants to read %(book)s by %(author_name)s "
+msgstr "volas legi %(book)s de %(author_name)s "
+
+#: bookwyrm/templates/snippets/status/headers/to_read.html:17
+#, python-format
+msgid "wants to read %(book)s "
+msgstr "volas legi %(book)s "
+
+#: bookwyrm/templates/snippets/status/layout.html:24
+#: bookwyrm/templates/snippets/status/status_options.html:17
+msgid "Delete status"
+msgstr "Forigi la afiŝon"
+
+#: bookwyrm/templates/snippets/status/layout.html:57
+#: bookwyrm/templates/snippets/status/layout.html:58
+msgid "Boost status"
+msgstr "Diskonigi la afiŝon"
+
+#: bookwyrm/templates/snippets/status/layout.html:61
+#: bookwyrm/templates/snippets/status/layout.html:62
+msgid "Like status"
+msgstr "Ŝati la afiŝon"
+
+#: bookwyrm/templates/snippets/status/status.html:10
+msgid "boosted"
+msgstr "diskonigita"
+
+#: bookwyrm/templates/snippets/status/status_options.html:7
+#: bookwyrm/templates/snippets/user_options.html:7
+msgid "More options"
+msgstr "Pli da opcioj"
+
+#: bookwyrm/templates/snippets/switch_edition_button.html:5
+msgid "Switch to this edition"
+msgstr "Salti al ĉi tiu eldono"
+
+#: bookwyrm/templates/snippets/table-sort-header.html:6
+msgid "Sorted ascending"
+msgstr "Kreskanta ordo"
+
+#: bookwyrm/templates/snippets/table-sort-header.html:10
+msgid "Sorted descending"
+msgstr "Malkreskanta ordo"
+
+#: bookwyrm/templates/snippets/trimmed_text.html:17
+msgid "Show more"
+msgstr "Montri pli"
+
+#: bookwyrm/templates/snippets/trimmed_text.html:35
+msgid "Show less"
+msgstr "Montri malpli"
+
+#: bookwyrm/templates/two_factor_auth/two_factor_login.html:29
+msgid "2FA check"
+msgstr "Kontrolo 2FA"
+
+#: bookwyrm/templates/two_factor_auth/two_factor_login.html:37
+msgid "Enter the code from your authenticator app:"
+msgstr "Entajpu la kodon de via aŭtentiga aplikaĵo:"
+
+#: bookwyrm/templates/two_factor_auth/two_factor_login.html:41
+msgid "Confirm and Log In"
+msgstr "Konfirmi kaj ensaluti"
+
+#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:29
+msgid "2FA is available"
+msgstr "2FA disponeblas"
+
+#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:34
+msgid "You can secure your account by setting up two factor authentication in your user preferences. This will require a one-time code from your phone in addition to your password each time you log in."
+msgstr "Vi povas sekurigi vian konton per agordado de dupaŝa aŭtentigo en viaj uzantoj agordoj. Tio postuligos unu-uzan kodon de via poŝtelefono aldone al via pasvorto ĉiufoje kiam vi ensalutos."
+
+#: bookwyrm/templates/user/books_header.html:9
+#, python-format
+msgid "%(username)s's books"
+msgstr "Libroj de %(username)s"
+
+#: bookwyrm/templates/user/goal.html:8
+#, python-format
+msgid "%(year)s Reading Progress"
+msgstr "Progreso de legado en %(year)s"
+
+#: bookwyrm/templates/user/goal.html:12
+msgid "Edit Goal"
+msgstr "Modifi la legocelon"
+
+#: bookwyrm/templates/user/goal.html:28
+#, python-format
+msgid "%(name)s hasn't set a reading goal for %(year)s."
+msgstr "%(name)s ne agordis legocelon por %(year)s."
+
+#: bookwyrm/templates/user/goal.html:40
+#, python-format
+msgid "Your %(year)s Books"
+msgstr "Viaj libroj en %(year)s"
+
+#: bookwyrm/templates/user/goal.html:42
+#, python-format
+msgid "%(username)s's %(year)s Books"
+msgstr "Libroj de %(username)s en %(year)s"
+
+#: bookwyrm/templates/user/groups.html:9
+msgid "Your Groups"
+msgstr "Viaj grupoj"
+
+#: bookwyrm/templates/user/groups.html:11
+#, python-format
+msgid "Groups: %(username)s"
+msgstr "Grupoj: %(username)s"
+
+#: bookwyrm/templates/user/layout.html:48
+msgid "Follow Requests"
+msgstr "Petoj de sekvado"
+
+#: bookwyrm/templates/user/layout.html:71
+#: bookwyrm/templates/user/reviews_comments.html:10
+msgid "Reviews and Comments"
+msgstr "Recenzoj kaj komentoj"
+
+#: bookwyrm/templates/user/lists.html:11
+#, python-format
+msgid "Lists: %(username)s"
+msgstr "Listoj: %(username)s"
+
+#: bookwyrm/templates/user/lists.html:17 bookwyrm/templates/user/lists.html:29
+msgid "Create list"
+msgstr "Krei liston"
+
+#: bookwyrm/templates/user/relationships/followers.html:12
+#, python-format
+msgid "%(username)s has no followers"
+msgstr "%(username)s havas neniun sekvanton"
+
+#: bookwyrm/templates/user/relationships/following.html:6
+#: bookwyrm/templates/user/relationships/layout.html:15
+msgid "Following"
+msgstr "Sekvatoj"
+
+#: bookwyrm/templates/user/relationships/following.html:12
+#, python-format
+msgid "%(username)s isn't following any users"
+msgstr "%(username)s sekvas neniun"
+
+#: bookwyrm/templates/user/reviews_comments.html:24
+msgid "No reviews or comments yet!"
+msgstr "Ankoraŭ estas neniu recenzo aŭ komento!"
+
+#: bookwyrm/templates/user/user.html:20
+msgid "Edit profile"
+msgstr "Modifi la profilon"
+
+#: bookwyrm/templates/user/user.html:42
+#, python-format
+msgid "View all %(size)s"
+msgstr "Vidi ĉiujn %(size)s"
+
+#: bookwyrm/templates/user/user.html:56
+msgid "View all books"
+msgstr "Vidi ĉiujn librojn"
+
+#: bookwyrm/templates/user/user.html:63
+#, python-format
+msgid "%(current_year)s Reading Goal"
+msgstr "Legocelo por %(current_year)s"
+
+#: bookwyrm/templates/user/user.html:70
+msgid "User Activity"
+msgstr "Aktiveco de la uzanto"
+
+#: bookwyrm/templates/user/user.html:76
+msgid "Show RSS Options"
+msgstr "Montri opciojn de RSS"
+
+#: bookwyrm/templates/user/user.html:82
+msgid "RSS feed"
+msgstr "Fluo de RSS"
+
+#: bookwyrm/templates/user/user.html:98
+msgid "Complete feed"
+msgstr "Kompleta fluo"
+
+#: bookwyrm/templates/user/user.html:103
+msgid "Reviews only"
+msgstr "Nur recenzoj"
+
+#: bookwyrm/templates/user/user.html:108
+msgid "Quotes only"
+msgstr "Nur citaĵoj"
+
+#: bookwyrm/templates/user/user.html:113
+msgid "Comments only"
+msgstr "Nur komentoj"
+
+#: bookwyrm/templates/user/user.html:129
+msgid "No activities yet!"
+msgstr "Ankoraŭ estas neniu ago!"
+
+#: bookwyrm/templates/user/user_preview.html:22
+#, python-format
+msgid "Joined %(date)s"
+msgstr "Aliĝis je %(date)s"
+
+#: bookwyrm/templates/user/user_preview.html:26
+#, python-format
+msgid "%(counter)s follower"
+msgid_plural "%(counter)s followers"
+msgstr[0] "%(counter)s sekvanto"
+msgstr[1] "%(counter)s sekvantoj"
+
+#: bookwyrm/templates/user/user_preview.html:31
+#, python-format
+msgid "%(counter)s following"
+msgstr "%(counter)s sekvatoj"
+
+#: bookwyrm/templates/user/user_preview.html:45
+#, python-format
+msgid "%(mutuals_display)s follower you follow"
+msgid_plural "%(mutuals_display)s followers you follow"
+msgstr[0] "%(mutuals_display)s sekvanto kiun vi sekvas"
+msgstr[1] "%(mutuals_display)s sekvantoj kiujn vi sekvas"
+
+#: bookwyrm/templates/user/user_preview.html:49
+msgid "No followers you follow"
+msgstr "Neniu sekvanto kiun vi sekvas"
+
+#: bookwyrm/templates/user_menu.html:7
+msgid "View profile and more"
+msgstr "Vidi la profilon kaj pli"
+
+#: bookwyrm/templates/user_menu.html:82
+msgid "Log out"
+msgstr "Elsaluti"
+
+#: bookwyrm/templates/widgets/clearable_file_input_with_warning.html:28
+msgid "File exceeds maximum size: 10MB"
+msgstr "La dosiero transiras la limon de grandeco: 10MB"
+
+#: bookwyrm/templatetags/list_page_tags.py:14
+#, python-format
+msgid "Book List: %(name)s"
+msgstr "Librolisto: %(name)s"
+
+#: bookwyrm/templatetags/list_page_tags.py:22
+#, python-format
+msgid "%(num)d book - by %(user)s"
+msgid_plural "%(num)d books - by %(user)s"
+msgstr[0] "%(num)d libro – de %(user)s"
+msgstr[1] "%(num)d libroj – de %(user)s"
+
+#: bookwyrm/templatetags/utilities.py:39
+#, python-format
+msgid "%(title)s: %(subtitle)s"
+msgstr "%(title)s: %(subtitle)s"
+
+#: bookwyrm/views/rss_feed.py:35
+#, python-brace-format
+msgid "Status updates from {obj.display_name}"
+msgstr "Afiŝoj de {obj.display_name}"
+
+#: bookwyrm/views/rss_feed.py:72
+#, python-brace-format
+msgid "Reviews from {obj.display_name}"
+msgstr "Recenzoj de {obj.display_name}"
+
+#: bookwyrm/views/rss_feed.py:110
+#, python-brace-format
+msgid "Quotes from {obj.display_name}"
+msgstr "Citaĵoj de {obj.display_name}"
+
+#: bookwyrm/views/rss_feed.py:148
+#, python-brace-format
+msgid "Comments from {obj.display_name}"
+msgstr "Komentoj de {obj.display_name}"
+
+#: bookwyrm/views/updates.py:45
+#, python-format
+msgid "Load %(count)d unread status"
+msgid_plural "Load %(count)d unread statuses"
+msgstr[0] "Ŝarĝi per %(count)d nelegita afiŝo"
+msgstr[1] "Ŝarĝi per %(count)d nelegitaj afiŝoj"
+
diff --git a/locale/es_ES/LC_MESSAGES/django.mo b/locale/es_ES/LC_MESSAGES/django.mo
index c62fa011c7..9bee049c9e 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 358b92888d..33c07e5e9d 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: 2023-01-30 08:21+0000\n"
-"PO-Revision-Date: 2023-01-30 17:35\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-04-26 00:45\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Spanish\n"
"Language: es\n"
@@ -46,7 +46,7 @@ msgstr "Sin límite"
msgid "Incorrect password"
msgstr "Contraseña incorrecta"
-#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
msgid "Password does not match"
msgstr "La contraseña no coincide"
@@ -70,19 +70,19 @@ msgstr "La fecha de paro de lectura no puede ser en el futuro."
msgid "Reading finished date cannot be in the future."
msgstr "La fecha de término de la lectura no puede ser en el futuro."
-#: bookwyrm/forms/landing.py:37
+#: bookwyrm/forms/landing.py:38
msgid "Username or password are incorrect"
msgstr "Nombre de usuario o contraseña es incorrecta"
-#: bookwyrm/forms/landing.py:56
+#: bookwyrm/forms/landing.py:57
msgid "User with this username already exists"
msgstr "Este nombre de usuario ya está en uso."
-#: bookwyrm/forms/landing.py:65
+#: bookwyrm/forms/landing.py:66
msgid "A user with this email already exists."
msgstr "Ya existe un usuario con ese correo electrónico."
-#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
msgid "Incorrect code"
msgstr "Código incorrecto"
@@ -205,26 +205,26 @@ msgstr "Federalizado"
msgid "Blocked"
msgstr "Bloqueado"
-#: bookwyrm/models/fields.py:28
+#: bookwyrm/models/fields.py:29
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s no es un remote_id válido"
-#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s no es un usuario válido"
-#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "nombre de usuario"
-#: bookwyrm/models/fields.py:187
+#: bookwyrm/models/fields.py:197
msgid "A user with that username already exists."
msgstr "Ya existe un usuario con ese nombre."
-#: bookwyrm/models/fields.py:206
+#: bookwyrm/models/fields.py:216
#: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11
@@ -232,7 +232,7 @@ msgstr "Ya existe un usuario con ese nombre."
msgid "Public"
msgstr "Público"
-#: bookwyrm/models/fields.py:207
+#: bookwyrm/models/fields.py:217
#: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14
@@ -240,14 +240,14 @@ msgstr "Público"
msgid "Unlisted"
msgstr "No listado"
-#: bookwyrm/models/fields.py:208
+#: bookwyrm/models/fields.py:218
#: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers"
msgstr "Seguidores"
-#: bookwyrm/models/fields.py:209
+#: bookwyrm/models/fields.py:219
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
@@ -275,11 +275,11 @@ msgstr "Detenido"
msgid "Import stopped"
msgstr "Importación detenida"
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr "Error en cargar libro"
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr "No se pudo encontrar el libro"
@@ -300,7 +300,7 @@ msgstr "Disponible como préstamo"
msgid "Approved"
msgstr "Aprobado"
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr "Reseñas"
@@ -316,19 +316,19 @@ msgstr "Citas"
msgid "Everything else"
msgstr "Todo lo demás"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr "Línea de tiempo principal"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr "Inicio"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr "Línea temporal de libros"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -336,75 +336,79 @@ msgstr "Línea temporal de libros"
msgid "Books"
msgstr "Libros"
-#: bookwyrm/settings.py:290
+#: bookwyrm/settings.py:294
msgid "English"
msgstr "English (Inglés)"
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr "Català (Catalán)"
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr "Deutsch (Alemán)"
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr ""
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr "Español"
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
msgstr "Euskera"
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr "Galego (gallego)"
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr "Italiano"
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr "Suomi (finés)"
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr "Français (Francés)"
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr "Lietuvių (Lituano)"
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr "Norsk (noruego)"
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr "Polski (Polaco)"
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr "Português do Brasil (portugués brasileño)"
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Portugués europeo)"
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr "Română (rumano)"
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr "Svenska (Sueco)"
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr "简体中文 (Chino simplificado)"
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr "繁體中文 (Chino tradicional)"
@@ -434,7 +438,7 @@ msgid "About"
msgstr "Acerca de"
#: bookwyrm/templates/about/about.html:21
-#: bookwyrm/templates/get_started/layout.html:20
+#: bookwyrm/templates/get_started/layout.html:22
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "¡Bienvenido a %(site_name)s!"
@@ -620,7 +624,7 @@ msgstr "El libro más corto que ha leído este año…"
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -708,24 +712,24 @@ msgid "View ISNI record"
msgstr "Ver registro ISNI"
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:164
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
msgstr "Ver en ISFDB"
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:131
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Cargar datos"
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:135
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr "Ver en OpenLibrary"
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:149
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr "Ver en Inventaire"
@@ -834,15 +838,15 @@ msgid "ISNI:"
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:209
-#: bookwyrm/templates/book/edit/edit_book.html:142
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
#: bookwyrm/templates/groups/form.html:32
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -858,10 +862,10 @@ msgstr "Guardar"
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:210
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
-#: bookwyrm/templates/book/edit/edit_book.html:144
-#: bookwyrm/templates/book/edit/edit_book.html:147
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:25
#: bookwyrm/templates/book/sync_modal.html:23
@@ -885,7 +889,7 @@ msgid "Loading data will connect to %(source_name)s and check f
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:24
-#: bookwyrm/templates/book/edit/edit_book.html:129
+#: bookwyrm/templates/book/edit/edit_book.html:137
#: bookwyrm/templates/book/sync_modal.html:24
#: bookwyrm/templates/groups/members.html:29
#: bookwyrm/templates/landing/password_reset.html:52
@@ -895,98 +899,98 @@ msgstr "La carga de datos se conectará a %(source_name)s y com
msgid "Confirm"
msgstr "Confirmar"
-#: bookwyrm/templates/book/book.html:19
+#: bookwyrm/templates/book/book.html:20
msgid "Unable to connect to remote source."
msgstr "No se ha podido conectar con la fuente remota."
-#: bookwyrm/templates/book/book.html:64 bookwyrm/templates/book/book.html:65
+#: bookwyrm/templates/book/book.html:71 bookwyrm/templates/book/book.html:72
msgid "Edit Book"
msgstr "Editar Libro"
-#: bookwyrm/templates/book/book.html:88 bookwyrm/templates/book/book.html:91
+#: bookwyrm/templates/book/book.html:97 bookwyrm/templates/book/book.html:100
msgid "Click to add cover"
msgstr "Haz clic para añadir portada"
-#: bookwyrm/templates/book/book.html:97
+#: bookwyrm/templates/book/book.html:106
msgid "Failed to load cover"
msgstr "No se pudo cargar la portada"
-#: bookwyrm/templates/book/book.html:108
+#: bookwyrm/templates/book/book.html:117
msgid "Click to enlarge"
msgstr "Haz clic para ampliar"
-#: bookwyrm/templates/book/book.html:186
+#: bookwyrm/templates/book/book.html:195
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
msgstr[0] "(%(review_count)s reseña)"
msgstr[1] "(%(review_count)s reseñas)"
-#: bookwyrm/templates/book/book.html:198
+#: bookwyrm/templates/book/book.html:207
msgid "Add Description"
msgstr "Agregar descripción"
-#: bookwyrm/templates/book/book.html:205
+#: bookwyrm/templates/book/book.html:214
#: bookwyrm/templates/book/edit/edit_book_form.html:42
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "Descripción:"
-#: bookwyrm/templates/book/book.html:221
+#: bookwyrm/templates/book/book.html:230
#, python-format
msgid "%(count)s edition"
msgid_plural "%(count)s editions"
msgstr[0] "%(count)s edición"
msgstr[1] "%(count)s ediciones"
-#: bookwyrm/templates/book/book.html:235
+#: bookwyrm/templates/book/book.html:244
msgid "You have shelved this edition in:"
msgstr "Has guardado esta edición en:"
-#: bookwyrm/templates/book/book.html:250
+#: bookwyrm/templates/book/book.html:259
#, python-format
msgid "A different edition of this book is on your %(shelf_name)s shelf."
msgstr "Una edición diferente de este libro está en tu estantería %(shelf_name)s ."
-#: bookwyrm/templates/book/book.html:261
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr "Tu actividad de lectura"
-#: bookwyrm/templates/book/book.html:267
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr "Agregar fechas de lectura"
-#: bookwyrm/templates/book/book.html:275
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr "No tienes ninguna actividad de lectura para este libro."
-#: bookwyrm/templates/book/book.html:301
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr "Tus reseñas"
-#: bookwyrm/templates/book/book.html:307
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr "Tus comentarios"
-#: bookwyrm/templates/book/book.html:313
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr "Tus citas"
-#: bookwyrm/templates/book/book.html:349
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr "Sujetos"
-#: bookwyrm/templates/book/book.html:361
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr "Lugares"
-#: bookwyrm/templates/book/book.html:372
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
-#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@@ -995,11 +999,11 @@ msgstr "Lugares"
msgid "Lists"
msgstr "Listas"
-#: bookwyrm/templates/book/book.html:384
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr "Agregar a lista"
-#: bookwyrm/templates/book/book.html:394
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1059,8 +1063,8 @@ msgstr "Vista previa de la portada del libro"
#: bookwyrm/templates/components/modal.html:13
#: bookwyrm/templates/components/modal.html:30
#: bookwyrm/templates/feed/suggested_books.html:67
-#: bookwyrm/templates/get_started/layout.html:25
-#: bookwyrm/templates/get_started/layout.html:58
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
msgid "Close"
msgstr "Cerrar"
@@ -1075,47 +1079,51 @@ msgstr "Editar \"%(book_title)s\""
msgid "Add Book"
msgstr "Agregar libro"
-#: bookwyrm/templates/book/edit/edit_book.html:62
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr ""
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
msgid "Confirm Book Info"
msgstr "Confirmar información de libro"
-#: bookwyrm/templates/book/edit/edit_book.html:70
+#: bookwyrm/templates/book/edit/edit_book.html:78
#, python-format
msgid "Is \"%(name)s\" one of these authors?"
msgstr "¿Es \"%(name)s\" uno de estos autores?"
-#: bookwyrm/templates/book/edit/edit_book.html:81
+#: bookwyrm/templates/book/edit/edit_book.html:89
#, python-format
msgid "Author of %(book_title)s "
msgstr "Autor de %(book_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:85
+#: bookwyrm/templates/book/edit/edit_book.html:93
#, python-format
msgid "Author of %(alt_title)s "
msgstr "Autor de %(alt_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:87
+#: bookwyrm/templates/book/edit/edit_book.html:95
msgid "Find more information at isni.org"
msgstr "Más información en isni.org"
-#: bookwyrm/templates/book/edit/edit_book.html:97
+#: bookwyrm/templates/book/edit/edit_book.html:105
msgid "This is a new author"
msgstr "Este es un autor nuevo"
-#: bookwyrm/templates/book/edit/edit_book.html:107
+#: bookwyrm/templates/book/edit/edit_book.html:115
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "Creando un autor nuevo: %(name)s"
-#: bookwyrm/templates/book/edit/edit_book.html:114
+#: bookwyrm/templates/book/edit/edit_book.html:122
msgid "Is this an edition of an existing work?"
msgstr "¿Es esta una edición de una obra ya existente?"
-#: bookwyrm/templates/book/edit/edit_book.html:122
+#: bookwyrm/templates/book/edit/edit_book.html:130
msgid "This is a new work"
msgstr "Esta es una obra nueva"
-#: bookwyrm/templates/book/edit/edit_book.html:131
+#: bookwyrm/templates/book/edit/edit_book.html:139
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
@@ -1470,6 +1478,19 @@ msgstr "Publicado por %(publisher)s."
msgid "rated it"
msgstr "lo valoró con"
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr ""
+
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
@@ -1664,7 +1685,7 @@ msgstr "%(username)s ha citado %(related_user)s y %(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
msgstr "%(related_user)s y %(other_user_display_count)s otros han abandonado tu grupo \"%(group_name)s \""
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] ""
+msgstr[1] ""
+
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
msgid "%(related_user)s mentioned you in a review of %(book_title)s "
@@ -4005,6 +4052,11 @@ msgstr "Ocultar a quién sigo y quién me sigue en el perfil."
msgid "Default post privacy:"
msgstr "Privacidad de publicación por defecto:"
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr ""
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4430,63 +4482,80 @@ msgid "Celery Status"
msgstr "Estado de Celery"
#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:22
msgid "Queues"
msgstr "Colas"
-#: bookwyrm/templates/settings/celery.html:18
+#: bookwyrm/templates/settings/celery.html:26
msgid "Low priority"
msgstr "Prioridad baja"
-#: bookwyrm/templates/settings/celery.html:24
+#: bookwyrm/templates/settings/celery.html:32
msgid "Medium priority"
msgstr "Prioridad media"
-#: bookwyrm/templates/settings/celery.html:30
+#: bookwyrm/templates/settings/celery.html:38
msgid "High priority"
msgstr "Prioridad alta"
-#: bookwyrm/templates/settings/celery.html:46
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:60
msgid "Could not connect to Redis broker"
msgstr "No se ha podido conectar al broker de Redis"
-#: bookwyrm/templates/settings/celery.html:54
+#: bookwyrm/templates/settings/celery.html:68
msgid "Active Tasks"
msgstr "Tareas activas"
-#: bookwyrm/templates/settings/celery.html:59
+#: bookwyrm/templates/settings/celery.html:73
#: bookwyrm/templates/settings/imports/imports.html:113
msgid "ID"
msgstr "ID"
-#: bookwyrm/templates/settings/celery.html:60
+#: bookwyrm/templates/settings/celery.html:74
msgid "Task name"
msgstr "Nombre de tarea"
-#: bookwyrm/templates/settings/celery.html:61
+#: bookwyrm/templates/settings/celery.html:75
msgid "Run time"
msgstr "Tiempo de ejecución"
-#: bookwyrm/templates/settings/celery.html:62
+#: bookwyrm/templates/settings/celery.html:76
msgid "Priority"
msgstr "Prioridad"
-#: bookwyrm/templates/settings/celery.html:67
+#: bookwyrm/templates/settings/celery.html:81
msgid "No active tasks"
msgstr "Sin tareas activas"
-#: bookwyrm/templates/settings/celery.html:85
+#: bookwyrm/templates/settings/celery.html:99
msgid "Workers"
msgstr "Trabajadores"
-#: bookwyrm/templates/settings/celery.html:90
+#: bookwyrm/templates/settings/celery.html:104
msgid "Uptime:"
msgstr "Tiempo ejecutándose:"
-#: bookwyrm/templates/settings/celery.html:100
+#: bookwyrm/templates/settings/celery.html:114
msgid "Could not connect to Celery"
msgstr "No se puede conectar a Celery"
-#: bookwyrm/templates/settings/celery.html:107
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr "Errores"
@@ -4851,8 +4920,8 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr "Ésto es sólo para usarse en caso de que las cosas vayan realmente mal con las importaciones y necesites pausar esta característica mientras resuelves los problemas."
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
-msgstr "Mientras las importaciones estén deshabilitadas, los usuarios no tendrán permitido iniciar nuevas importaciones, pero las importaciones existentes no serán afectadas."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
+msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:36
msgid "Disable imports"
@@ -5685,11 +5754,11 @@ msgstr "Ver instrucciones de instalación"
msgid "Instance Setup"
msgstr "Configurar instancia"
-#: bookwyrm/templates/setup/layout.html:19
+#: bookwyrm/templates/setup/layout.html:21
msgid "Installing BookWyrm"
msgstr "Instalando BookWyrm"
-#: bookwyrm/templates/setup/layout.html:22
+#: bookwyrm/templates/setup/layout.html:24
msgid "Need help?"
msgstr "¿Necesitas ayuda?"
@@ -5707,7 +5776,7 @@ msgid "User profile"
msgstr "Perfil de usuario"
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr "Todos los libros"
@@ -5781,7 +5850,7 @@ msgid_plural "and %(remainder_count_display)s others"
msgstr[0] "y %(remainder_count_display)s otro"
msgstr[1] "y %(remainder_count_display)s otros"
-#: bookwyrm/templates/snippets/book_cover.html:61
+#: bookwyrm/templates/snippets/book_cover.html:63
msgid "No cover"
msgstr "Sin portada"
@@ -5881,6 +5950,10 @@ msgstr "En la página:"
msgid "At percent:"
msgstr "Al por ciento:"
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr ""
+
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
@@ -6059,10 +6132,18 @@ msgstr "página %(page)s de %(total_pages)s"
msgid "page %(page)s"
msgstr "página %(page)s"
-#: bookwyrm/templates/snippets/pagination.html:12
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr ""
+
+#: bookwyrm/templates/snippets/pagination.html:15
msgid "Previous"
msgstr "Anterior"
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr ""
+
#: bookwyrm/templates/snippets/privacy-icons.html:12
msgid "Followers-only"
msgstr "Solo seguidores"
@@ -6191,19 +6272,29 @@ msgstr "Mostrar estado"
#: bookwyrm/templates/snippets/status/content_status.html:102
#, python-format
-msgid "(Page %(page)s)"
-msgstr "(Página %(page)s)"
+msgid "(Page %(page)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:104
#, python-format
-msgid "(%(percent)s%%)"
-msgstr "(%(percent)s%%)"
+msgid "(%(percent)s%%"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid " - %(endpercent)s%%"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:127
msgid "Open image in new window"
msgstr "Abrir imagen en una nueva ventana"
-#: bookwyrm/templates/snippets/status/content_status.html:146
+#: bookwyrm/templates/snippets/status/content_status.html:148
msgid "Hide status"
msgstr "Ocultar estado"
diff --git a/locale/eu_ES/LC_MESSAGES/django.mo b/locale/eu_ES/LC_MESSAGES/django.mo
index ea5ea61fbb..be31de3b64 100644
Binary files a/locale/eu_ES/LC_MESSAGES/django.mo and b/locale/eu_ES/LC_MESSAGES/django.mo differ
diff --git a/locale/eu_ES/LC_MESSAGES/django.po b/locale/eu_ES/LC_MESSAGES/django.po
index dfe905d9f7..1b2d33b23e 100644
--- a/locale/eu_ES/LC_MESSAGES/django.po
+++ b/locale/eu_ES/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-01-30 08:21+0000\n"
-"PO-Revision-Date: 2023-03-11 20:06\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-04-29 12:15\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Basque\n"
"Language: eu\n"
@@ -46,7 +46,7 @@ msgstr "Mugagabea"
msgid "Incorrect password"
msgstr "Pasahitz okerra"
-#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
msgid "Password does not match"
msgstr "Pasahitzak ez datoz bat"
@@ -70,19 +70,19 @@ msgstr "Irakurketaren geldiera-data ezin da etorkizunekoa izan."
msgid "Reading finished date cannot be in the future."
msgstr "Irakurketaren amaiera-data ezin da etorkizunekoa izan."
-#: bookwyrm/forms/landing.py:37
+#: bookwyrm/forms/landing.py:38
msgid "Username or password are incorrect"
msgstr "Erabiltzaile-izena edo pasahitza okerra da"
-#: bookwyrm/forms/landing.py:56
+#: bookwyrm/forms/landing.py:57
msgid "User with this username already exists"
msgstr "Bada dagoeneko erabiltzaile bat erabiltzaile-izen horrekin"
-#: bookwyrm/forms/landing.py:65
+#: bookwyrm/forms/landing.py:66
msgid "A user with this email already exists."
msgstr "Mezu elektroniko hau duen erabiltzailea dagoeneko badago."
-#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
msgid "Incorrect code"
msgstr "Kode okerra"
@@ -205,26 +205,26 @@ msgstr "Federatuta"
msgid "Blocked"
msgstr "Blokeatuta"
-#: bookwyrm/models/fields.py:28
+#: bookwyrm/models/fields.py:29
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s ez da baliozko remote_id"
-#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s ez da baliozko erabiltzaile-izena"
-#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "erabiltzaile-izena"
-#: bookwyrm/models/fields.py:187
+#: bookwyrm/models/fields.py:197
msgid "A user with that username already exists."
msgstr "Erabiltzaile-izen hori duen erabiltzailea dagoeneko existitzen da."
-#: bookwyrm/models/fields.py:206
+#: bookwyrm/models/fields.py:216
#: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11
@@ -232,7 +232,7 @@ msgstr "Erabiltzaile-izen hori duen erabiltzailea dagoeneko existitzen da."
msgid "Public"
msgstr "Publikoa"
-#: bookwyrm/models/fields.py:207
+#: bookwyrm/models/fields.py:217
#: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14
@@ -240,14 +240,14 @@ msgstr "Publikoa"
msgid "Unlisted"
msgstr "Zerrendatu gabea"
-#: bookwyrm/models/fields.py:208
+#: bookwyrm/models/fields.py:218
#: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers"
msgstr "Jarraitzaileak"
-#: bookwyrm/models/fields.py:209
+#: bookwyrm/models/fields.py:219
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
@@ -275,11 +275,11 @@ msgstr "Geldituta"
msgid "Import stopped"
msgstr "Inportazioa gelditu da"
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr "Errorea liburua kargatzean"
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr "Ezin izan da libururako parekorik aurkitu"
@@ -300,7 +300,7 @@ msgstr "Mailegatzeko eskuragarri"
msgid "Approved"
msgstr "Onartuta"
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr "Kritikak"
@@ -316,19 +316,19 @@ msgstr "Aipuak"
msgid "Everything else"
msgstr "Gainerako guztia"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr "Hasierako denbora-lerroa"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr "Hasiera"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr "Liburuen denbora-lerroa"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -336,75 +336,79 @@ msgstr "Liburuen denbora-lerroa"
msgid "Books"
msgstr "Liburuak"
-#: bookwyrm/settings.py:290
+#: bookwyrm/settings.py:294
msgid "English"
msgstr "English (Ingelesa)"
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr "Català (katalana)"
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr "Deutsch (alemana)"
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr "Esperantoa"
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr "Español (espainiera)"
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
msgstr "Euskara"
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr "Galego (Galiziera)"
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr "Italiano (Italiera)"
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr "Suomi (finlandiera)"
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr "Français (frantses)"
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr "Lituano (lituaniera)"
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr "Norsk (Norvegiera)"
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr "Polski (poloniera)"
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr "Português do Brasil (Brasilgo Portugesa)"
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Europako Portugesa)"
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr "Română (errumaniera)"
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr "Svenska (suediera)"
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr "简体中文 (Txinera soildua)"
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr "繁體中文 (Txinera tradizionala)"
@@ -434,7 +438,7 @@ msgid "About"
msgstr "Honi buruz"
#: bookwyrm/templates/about/about.html:21
-#: bookwyrm/templates/get_started/layout.html:20
+#: bookwyrm/templates/get_started/layout.html:22
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "Ongi etorri %(site_name)s(e)ra!"
@@ -620,7 +624,7 @@ msgstr "Aurtengo irakurketarik laburrena…"
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -708,24 +712,24 @@ msgid "View ISNI record"
msgstr "Ikusi ISNI erregistroa"
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:164
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
msgstr "Ikus ISFDB webgunean"
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:131
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Kargatu datuak"
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:135
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr "OpenLibraryn ikusi"
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:149
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr "Inventairen ikusi"
@@ -834,15 +838,15 @@ msgid "ISNI:"
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:209
-#: bookwyrm/templates/book/edit/edit_book.html:142
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
#: bookwyrm/templates/groups/form.html:32
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -858,10 +862,10 @@ msgstr "Gorde"
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:210
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
-#: bookwyrm/templates/book/edit/edit_book.html:144
-#: bookwyrm/templates/book/edit/edit_book.html:147
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:25
#: bookwyrm/templates/book/sync_modal.html:23
@@ -885,7 +889,7 @@ msgid "Loading data will connect to %(source_name)s and check f
msgstr "Datuak kargatzean %(source_name)s (e)ra konektatu eta hemen aurkitzen ez diren autore honi buruzko metadatuak arakatuko dira. Dauden datuak ez dira ordezkatuko."
#: bookwyrm/templates/author/sync_modal.html:24
-#: bookwyrm/templates/book/edit/edit_book.html:129
+#: bookwyrm/templates/book/edit/edit_book.html:137
#: bookwyrm/templates/book/sync_modal.html:24
#: bookwyrm/templates/groups/members.html:29
#: bookwyrm/templates/landing/password_reset.html:52
@@ -895,98 +899,98 @@ msgstr "Datuak kargatzean %(source_name)s (e)ra konektatu eta he
msgid "Confirm"
msgstr "Berretsi"
-#: bookwyrm/templates/book/book.html:19
+#: bookwyrm/templates/book/book.html:20
msgid "Unable to connect to remote source."
msgstr "Ezin izan da urruneko edukira konektatu."
-#: bookwyrm/templates/book/book.html:64 bookwyrm/templates/book/book.html:65
+#: bookwyrm/templates/book/book.html:71 bookwyrm/templates/book/book.html:72
msgid "Edit Book"
msgstr "Editatu liburua"
-#: bookwyrm/templates/book/book.html:88 bookwyrm/templates/book/book.html:91
+#: bookwyrm/templates/book/book.html:97 bookwyrm/templates/book/book.html:100
msgid "Click to add cover"
msgstr "Egin klik azala gehitzeko"
-#: bookwyrm/templates/book/book.html:97
+#: bookwyrm/templates/book/book.html:106
msgid "Failed to load cover"
msgstr "Ezin izan da azala kargatu"
-#: bookwyrm/templates/book/book.html:108
+#: bookwyrm/templates/book/book.html:117
msgid "Click to enlarge"
msgstr "Egin click handitzeko"
-#: bookwyrm/templates/book/book.html:186
+#: bookwyrm/templates/book/book.html:195
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
msgstr[0] "(berrikuspen %(review_count)s)"
msgstr[1] "(%(review_count)s berrikuspen)"
-#: bookwyrm/templates/book/book.html:198
+#: bookwyrm/templates/book/book.html:207
msgid "Add Description"
msgstr "Gehitu deskribapena"
-#: bookwyrm/templates/book/book.html:205
+#: bookwyrm/templates/book/book.html:214
#: bookwyrm/templates/book/edit/edit_book_form.html:42
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "Deskribapena:"
-#: bookwyrm/templates/book/book.html:221
+#: bookwyrm/templates/book/book.html:230
#, python-format
msgid "%(count)s edition"
msgid_plural "%(count)s editions"
msgstr[0] "Edizio %(count)s"
msgstr[1] "%(count)s edizio"
-#: bookwyrm/templates/book/book.html:235
+#: bookwyrm/templates/book/book.html:244
msgid "You have shelved this edition in:"
msgstr "Edizio hau gorde duzu:"
-#: bookwyrm/templates/book/book.html:250
+#: bookwyrm/templates/book/book.html:259
#, python-format
msgid "A different edition of this book is on your %(shelf_name)s shelf."
msgstr "Liburu honen edizio desberdinak %(shelf_name)s apalean dituzu."
-#: bookwyrm/templates/book/book.html:261
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr "Zure irakurketa jarduera"
-#: bookwyrm/templates/book/book.html:267
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr "Gehitu irakurketa datak"
-#: bookwyrm/templates/book/book.html:275
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr "Ez duzu liburu honetarako irakurketa jarduerarik."
-#: bookwyrm/templates/book/book.html:301
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr "Zure kritikak"
-#: bookwyrm/templates/book/book.html:307
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr "Zure iruzkinak"
-#: bookwyrm/templates/book/book.html:313
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr "Zure aipuak"
-#: bookwyrm/templates/book/book.html:349
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr "Gaiak"
-#: bookwyrm/templates/book/book.html:361
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr "Lekuak"
-#: bookwyrm/templates/book/book.html:372
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
-#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@@ -995,11 +999,11 @@ msgstr "Lekuak"
msgid "Lists"
msgstr "Zerrendak"
-#: bookwyrm/templates/book/book.html:384
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr "Gehitu zerrendara"
-#: bookwyrm/templates/book/book.html:394
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1059,8 +1063,8 @@ msgstr "Liburu azalaren aurrebista"
#: bookwyrm/templates/components/modal.html:13
#: bookwyrm/templates/components/modal.html:30
#: bookwyrm/templates/feed/suggested_books.html:67
-#: bookwyrm/templates/get_started/layout.html:25
-#: bookwyrm/templates/get_started/layout.html:58
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
msgid "Close"
msgstr "Itxi"
@@ -1075,47 +1079,51 @@ msgstr "Editatu \"%(book_title)s\""
msgid "Add Book"
msgstr "Gehitu liburua"
-#: bookwyrm/templates/book/edit/edit_book.html:62
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr "Liburua gordetzeak huts egin du, ikus behean agertzen diren erroreak informazio gehiagorako."
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
msgid "Confirm Book Info"
msgstr "Liburuaren informazioa berretsi"
-#: bookwyrm/templates/book/edit/edit_book.html:70
+#: bookwyrm/templates/book/edit/edit_book.html:78
#, python-format
msgid "Is \"%(name)s\" one of these authors?"
msgstr "\"%(name)s\" da autore horietako bat?"
-#: bookwyrm/templates/book/edit/edit_book.html:81
+#: bookwyrm/templates/book/edit/edit_book.html:89
#, python-format
msgid "Author of %(book_title)s "
msgstr "%(book_title)s (r)en autorea"
-#: bookwyrm/templates/book/edit/edit_book.html:85
+#: bookwyrm/templates/book/edit/edit_book.html:93
#, python-format
msgid "Author of %(alt_title)s "
msgstr "%(alt_title)s (r)en autorea"
-#: bookwyrm/templates/book/edit/edit_book.html:87
+#: bookwyrm/templates/book/edit/edit_book.html:95
msgid "Find more information at isni.org"
msgstr "Informazio gehiagorako: isni.org"
-#: bookwyrm/templates/book/edit/edit_book.html:97
+#: bookwyrm/templates/book/edit/edit_book.html:105
msgid "This is a new author"
msgstr "Egile berria da"
-#: bookwyrm/templates/book/edit/edit_book.html:107
+#: bookwyrm/templates/book/edit/edit_book.html:115
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "Egile berria sortzen: %(name)s"
-#: bookwyrm/templates/book/edit/edit_book.html:114
+#: bookwyrm/templates/book/edit/edit_book.html:122
msgid "Is this an edition of an existing work?"
msgstr "Lehendik dagoen lan baten edizioa al da hau?"
-#: bookwyrm/templates/book/edit/edit_book.html:122
+#: bookwyrm/templates/book/edit/edit_book.html:130
msgid "This is a new work"
msgstr "Lan berria da hau"
-#: bookwyrm/templates/book/edit/edit_book.html:131
+#: bookwyrm/templates/book/edit/edit_book.html:139
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
@@ -1470,6 +1478,19 @@ msgstr "%(publisher)s(e)k argitaratua."
msgid "rated it"
msgstr "baloratu du"
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr "Seriearen sortzailea: "
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr "%(series_number)s. liburua"
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr "Sailkatu gabeko liburua"
+
#: 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."
@@ -1640,31 +1661,31 @@ msgstr "%(username)s (e)k %(username)s started reading %(book_title)s "
-msgstr "%(username)s %(book_title)s irakurtzen hasi da"
+msgstr ", %(username)s orain %(book_title)s irakurtzen hasi da"
#: bookwyrm/templates/discover/card-header.html:23
#, python-format
msgid "%(username)s rated %(book_title)s "
-msgstr "%(username)s k %(book_title)s baloratu du"
+msgstr "%(username)s (e)k %(book_title)s baloratu du"
#: bookwyrm/templates/discover/card-header.html:27
#, python-format
msgid "%(username)s reviewed %(book_title)s "
-msgstr "%(username)s (e)k %(book_title)s kritika egin du"
+msgstr "%(username)s (e)k %(book_title)s (r)en kritika egin du"
#: bookwyrm/templates/discover/card-header.html:31
#, python-format
msgid "%(username)s commented on %(book_title)s "
-msgstr "%(username)s (e)k %(book_title)s (r)i buruzko iruzkina egin du"
+msgstr "%(username)s (e)k %(book_title)s (e)ri buruzko iruzkina egin du"
#: bookwyrm/templates/discover/card-header.html:35
#, python-format
msgid "%(username)s quoted %(book_title)s "
-msgstr "%(username)s k %(book_title)s aipatu du"
+msgstr "%(username)s (e)k %(book_title)s (r)en aipua egin du"
#: bookwyrm/templates/discover/discover.html:4
#: bookwyrm/templates/discover/discover.html:10
-#: bookwyrm/templates/layout.html:94
+#: bookwyrm/templates/layout.html:93
msgid "Discover"
msgstr "Deskubritu"
@@ -1796,7 +1817,7 @@ msgstr "Hau, proba mezu bat da."
msgid "Test email"
msgstr "Proba mezua"
-#: bookwyrm/templates/embed-layout.html:20 bookwyrm/templates/layout.html:30
+#: bookwyrm/templates/embed-layout.html:20 bookwyrm/templates/layout.html:31
#: bookwyrm/templates/setup/layout.html:15
#: bookwyrm/templates/two_factor_auth/two_factor_login.html:18
#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:18
@@ -1849,7 +1870,7 @@ msgstr "%(year)s(e)ko irakurketa helburua"
#: bookwyrm/templates/feed/goal_card.html:18
#, python-format
msgid "You can set or change your reading goal any time from your profile page "
-msgstr "Irakurtzeko helburua edozein unetan ezar edo alda dezakezu zure profileko orrialdetik "
+msgstr "Irakurtzeko helburua edozein unetan ezar edo alda dezakezu zure profileko orrialdean "
#: bookwyrm/templates/feed/layout.html:4
msgid "Updates"
@@ -1906,13 +1927,13 @@ msgstr "Gehitu zure liburuetara"
#: bookwyrm/templates/get_started/book_preview.html:10
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:37
-#: bookwyrm/templatetags/shelf_tags.py:48
+#: bookwyrm/templatetags/shelf_tags.py:14
msgid "To Read"
msgstr "Irakurtzeko"
#: bookwyrm/templates/get_started/book_preview.html:11
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:38
-#: bookwyrm/templatetags/shelf_tags.py:50
+#: bookwyrm/templatetags/shelf_tags.py:15
msgid "Currently Reading"
msgstr "Orain irakurtzen"
@@ -1921,12 +1942,13 @@ msgstr "Orain irakurtzen"
#: bookwyrm/templates/snippets/shelf_selector.html:46
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12
-#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:52
+#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:16
msgid "Read"
msgstr "Irakurrita"
#: bookwyrm/templates/get_started/book_preview.html:13
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:40
+#: bookwyrm/templatetags/shelf_tags.py:17
msgid "Stopped Reading"
msgstr "Irakurtzeari utzita"
@@ -1935,7 +1957,7 @@ msgid "What are you reading?"
msgstr "Zer ari zara irakurtzen?"
#: bookwyrm/templates/get_started/books.html:9
-#: bookwyrm/templates/layout.html:38 bookwyrm/templates/lists/list.html:213
+#: bookwyrm/templates/layout.html:39 bookwyrm/templates/lists/list.html:213
msgid "Search for a book"
msgstr "Bilatu liburu bat"
@@ -1954,10 +1976,11 @@ msgstr "Liburuak gehitu ditzakezu %(site_name)s erabiltzen hasten zarenean."
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/groups/members.html:15
-#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:44
-#: bookwyrm/templates/layout.html:45 bookwyrm/templates/lists/list.html:217
+#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:45
+#: bookwyrm/templates/layout.html:46 bookwyrm/templates/lists/list.html:217
#: bookwyrm/templates/search/layout.html:5
#: bookwyrm/templates/search/layout.html:10
+#: bookwyrm/templates/search/layout.html:32
msgid "Search"
msgstr "Bilatu"
@@ -1965,6 +1988,10 @@ msgstr "Bilatu"
msgid "Suggested Books"
msgstr "Gomendatutako liburuak"
+#: bookwyrm/templates/get_started/books.html:33
+msgid "Search results"
+msgstr ""
+
#: bookwyrm/templates/get_started/books.html:46
#, python-format
msgid "Popular on %(site_name)s"
@@ -1985,28 +2012,28 @@ msgstr "Gorde eta jarraitu"
msgid "Welcome"
msgstr "Ongi etorri"
-#: bookwyrm/templates/get_started/layout.html:22
+#: bookwyrm/templates/get_started/layout.html:24
msgid "These are some first steps to get you started."
msgstr "Hauek dira hasteko lehen urrats batzuk."
-#: bookwyrm/templates/get_started/layout.html:36
+#: bookwyrm/templates/get_started/layout.html:38
#: bookwyrm/templates/get_started/profile.html:6
msgid "Create your profile"
msgstr "Sortu zure profila"
-#: bookwyrm/templates/get_started/layout.html:40
+#: bookwyrm/templates/get_started/layout.html:42
msgid "Add books"
msgstr "Gehitu liburuak"
-#: bookwyrm/templates/get_started/layout.html:44
+#: bookwyrm/templates/get_started/layout.html:46
msgid "Find friends"
msgstr "Bilatu lagunak"
-#: bookwyrm/templates/get_started/layout.html:50
+#: bookwyrm/templates/get_started/layout.html:52
msgid "Skip this step"
msgstr "Saltatu urrats hau"
-#: bookwyrm/templates/get_started/layout.html:54
+#: bookwyrm/templates/get_started/layout.html:56
#: bookwyrm/templates/guided_tour/group.html:101
msgid "Finish"
msgstr "Amaitu"
@@ -2043,6 +2070,10 @@ msgstr "Erakutsi kontu hau iradokitako erabiltzaileetan:"
msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users."
msgstr "Zure kontua direktorioan agertuko da eta BookWyrmeko beste erabiltzaile batzuei gomendatu ahal izango zaie."
+#: bookwyrm/templates/get_started/users.html:8
+msgid "You can follow users on other BookWyrm instances and federated services like Mastodon."
+msgstr ""
+
#: bookwyrm/templates/get_started/users.html:11
msgid "Search for a user"
msgstr "Bilatu erabiltzaile bat"
@@ -2159,7 +2190,7 @@ msgstr[1] "%(shared_books)s liburu zure apaletan"
#: bookwyrm/templates/groups/suggested_users.html:43
#, python-format
msgid "No potential members found for \"%(user_query)s\""
-msgstr "Ez da kide potentzialik aurkitu \"%(user_query)s\"-(r)ekin"
+msgstr "Ez da kide potentzialik aurkitu \"%(user_query)s\"(r)ekin"
#: bookwyrm/templates/groups/user_groups.html:15
msgid "Manager"
@@ -2229,7 +2260,7 @@ msgstr "Amaitu bisitaldia"
#: bookwyrm/templates/guided_tour/user_profile.html:72
#: bookwyrm/templates/guided_tour/user_profile.html:95
#: bookwyrm/templates/guided_tour/user_profile.html:118
-#: bookwyrm/templates/snippets/pagination.html:23
+#: bookwyrm/templates/snippets/pagination.html:30
msgid "Next"
msgstr "Hurrengoa"
@@ -2433,8 +2464,8 @@ msgid "The bell will light up when you have a new notification. When it does, cl
msgstr "Kanpaia piztu egingo da jakinarazpen berriren bat duzunean. Hala egiten duenean, klikatu ezazu zer gauza zirraragarri gertatu den jakiteko!"
#: bookwyrm/templates/guided_tour/home.html:177
-#: bookwyrm/templates/layout.html:75 bookwyrm/templates/layout.html:107
-#: bookwyrm/templates/layout.html:108
+#: bookwyrm/templates/layout.html:75 bookwyrm/templates/layout.html:106
+#: bookwyrm/templates/layout.html:107
#: bookwyrm/templates/notifications/notifications_page.html:5
#: bookwyrm/templates/notifications/notifications_page.html:10
msgid "Notifications"
@@ -2491,7 +2522,7 @@ msgstr "Zure zerrenda nola kudeatu ere erabaki dezakezu –zuk bakarrik, guztiok
#: bookwyrm/templates/guided_tour/lists.html:106
msgid "List curation"
-msgstr "Zerrenda ontzea"
+msgstr "Zerrendaren osatzea"
#: bookwyrm/templates/guided_tour/lists.html:128
msgid "Next in our tour we will explore Groups!"
@@ -2593,7 +2624,7 @@ msgstr "Klik egin Zerrendak estekan bisitaldiarekin jarraitzeko
#: bookwyrm/templates/guided_tour/user_groups.html:10
msgid "You can create or join a group with other users. Groups can share group-curated book lists, and in future will be able to do other things."
-msgstr "Talde berri bat sor dezakezu edo existitzen den batean sar zaitezke. Taldeek taldekideek kudeatutako liburuen zerrendak parteka ditzakete, eta etorkizunean beste gauza batzuk egin ahal izango dituzte."
+msgstr "Talde berri bat sor dezakezu edo existitzen den batean sar zaitezke. Taldeek, taldekideek osatutako liburuen zerrendak parteka ditzakete, eta etorkizunean gauza gehiago egin ahal izango dituzte."
#: bookwyrm/templates/guided_tour/user_groups.html:11
#: bookwyrm/templates/guided_tour/user_profile.html:55
@@ -2679,6 +2710,15 @@ msgstr "Bilatu izenburu edo autore bat bisitaldiarekin jarraitzeko."
msgid "Find a book"
msgstr "Aurkitu liburu bat"
+#: bookwyrm/templates/hashtag.html:12
+#, python-format
+msgid "See tagged statuses in the local %(site_name)s community"
+msgstr "Ikusi etiketatutako egoeran %(site_name)s komunitate lokalean"
+
+#: bookwyrm/templates/hashtag.html:25
+msgid "No activities for this hashtag yet!"
+msgstr "Ez dago aktibitaterik oraindik traola honentzat!"
+
#: bookwyrm/templates/import/import.html:5
#: bookwyrm/templates/import/import.html:9
#: bookwyrm/templates/shelf/shelf.html:64
@@ -2798,7 +2838,7 @@ msgid "Retry Status"
msgstr "Saiakeraren egoera"
#: bookwyrm/templates/import/import_status.html:22
-#: bookwyrm/templates/settings/celery.html:36
+#: bookwyrm/templates/settings/celery.html:44
#: bookwyrm/templates/settings/imports/imports.html:6
#: bookwyrm/templates/settings/imports/imports.html:9
#: bookwyrm/templates/settings/layout.html:82
@@ -3007,7 +3047,7 @@ msgstr "Eskatu gonbidapen bat"
#: bookwyrm/templates/landing/layout.html:50
#, python-format
msgid "%(name)s registration is closed"
-msgstr "%(name)s -(r)en izen-ematea itxita dago"
+msgstr "%(name)s(e)n izena ematea itxita dago"
#: bookwyrm/templates/landing/layout.html:61
msgid "Thank you! Your request has been received."
@@ -3022,7 +3062,7 @@ msgid "Login"
msgstr "Hasi saioa"
#: bookwyrm/templates/landing/login.html:7
-#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:139
+#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:136
#: bookwyrm/templates/ostatus/error.html:37
msgid "Log in"
msgstr "Hasi saioa"
@@ -3033,7 +3073,7 @@ msgstr "Ondo! Helbide elektronikoa baieztatu duzu."
#: bookwyrm/templates/landing/login.html:21
#: bookwyrm/templates/landing/reactivate.html:17
-#: bookwyrm/templates/layout.html:130 bookwyrm/templates/ostatus/error.html:28
+#: bookwyrm/templates/layout.html:127 bookwyrm/templates/ostatus/error.html:28
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
msgstr "Erabiltzaile-izena:"
@@ -3041,13 +3081,13 @@ msgstr "Erabiltzaile-izena:"
#: bookwyrm/templates/landing/login.html:27
#: bookwyrm/templates/landing/password_reset.html:26
#: bookwyrm/templates/landing/reactivate.html:23
-#: bookwyrm/templates/layout.html:134 bookwyrm/templates/ostatus/error.html:32
+#: bookwyrm/templates/layout.html:131 bookwyrm/templates/ostatus/error.html:32
#: bookwyrm/templates/preferences/2fa.html:91
#: bookwyrm/templates/snippets/register_form.html:45
msgid "Password:"
msgstr "Pasahitza:"
-#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:136
+#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:133
#: bookwyrm/templates/ostatus/error.html:34
msgid "Forgot your password?"
msgstr "Zure pasahitza ahaztu duzu?"
@@ -3090,35 +3130,35 @@ msgstr "Berriz aktibatu kontua"
msgid "%(site_name)s search"
msgstr "%(site_name)s bilaketa"
-#: bookwyrm/templates/layout.html:36
+#: bookwyrm/templates/layout.html:37
msgid "Search for a book, user, or list"
msgstr "Bilatu liburu, erabiltzaile edo zerrenda bat"
-#: bookwyrm/templates/layout.html:51 bookwyrm/templates/layout.html:52
+#: bookwyrm/templates/layout.html:52 bookwyrm/templates/layout.html:53
msgid "Scan Barcode"
msgstr "Eskaneatu barra-kodea"
-#: bookwyrm/templates/layout.html:66
+#: bookwyrm/templates/layout.html:67
msgid "Main navigation menu"
msgstr "Nabigazio-menu nagusia"
-#: bookwyrm/templates/layout.html:88
+#: bookwyrm/templates/layout.html:87
msgid "Feed"
msgstr "Jarioa"
-#: bookwyrm/templates/layout.html:135 bookwyrm/templates/ostatus/error.html:33
+#: bookwyrm/templates/layout.html:132 bookwyrm/templates/ostatus/error.html:33
msgid "password"
msgstr "pasahitza"
-#: bookwyrm/templates/layout.html:147
+#: bookwyrm/templates/layout.html:144
msgid "Join"
msgstr "Sartu"
-#: bookwyrm/templates/layout.html:181
+#: bookwyrm/templates/layout.html:179
msgid "Successfully posted status"
msgstr "Egoera ondo bidali da"
-#: bookwyrm/templates/layout.html:182
+#: bookwyrm/templates/layout.html:180
msgid "Error posting status"
msgstr "Errorea egoera bidaltzean"
@@ -3158,7 +3198,7 @@ msgstr "%(username)s (e)k sortua"
#: bookwyrm/templates/lists/curate.html:12
msgid "Curate"
-msgstr "Bildu"
+msgstr "Hautatu"
#: bookwyrm/templates/lists/curate.html:21
msgid "Pending Books"
@@ -3207,7 +3247,7 @@ msgstr "Une honetan zerrenda hutsik dago"
#: bookwyrm/templates/lists/form.html:19
msgid "List curation:"
-msgstr "Zerrenda ontzea:"
+msgstr "Zerrendaren osatzea:"
#: bookwyrm/templates/lists/form.html:31
msgid "Closed"
@@ -3219,7 +3259,7 @@ msgstr "Zu zara zerrenda honetara liburuak gehitu edo kendu ditzakeen bakarra"
#: bookwyrm/templates/lists/form.html:48
msgid "Curated"
-msgstr "Bildutakoa"
+msgstr "Osatua"
#: bookwyrm/templates/lists/form.html:51
msgid "Anyone can suggest books, subject to your approval"
@@ -3430,62 +3470,62 @@ msgstr[1] "%(related_user)s (e)k iradoki du
#: bookwyrm/templates/notifications/items/boost.html:21
#, python-format
msgid "%(related_user)s boosted your review of %(book_title)s "
-msgstr "%(related_user)s (e)k zure %(book_title)s (r)en kritika zabaldu du"
+msgstr "%(related_user)s (e)k zure %(book_title)s (r)en kritika bultzatu du"
#: bookwyrm/templates/notifications/items/boost.html:27
#, python-format
msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s "
-msgstr "%(related_user)s eta %(second_user)s (e)k %(book_title)s liburuari buruzko zure kritika sustatu zuten"
+msgstr "%(related_user)s eta %(second_user)s (e)k %(book_title)s liburuari buruzko zure kritika bultzatu dute"
#: bookwyrm/templates/notifications/items/boost.html:36
#, python-format
msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s "
-msgstr "%(related_user)s eta beste %(other_user_display_count)s erabiltzailek %(book_title)s liburuari buruzko zure kritika sustatu zuten"
+msgstr "%(related_user)s eta beste %(other_user_display_count)s erabiltzailek %(book_title)s liburuari buruzko zure kritika bultzatu dute"
#: bookwyrm/templates/notifications/items/boost.html:44
#, python-format
msgid "%(related_user)s boosted your comment on %(book_title)s "
-msgstr "%(related_user)s (e)k zure %(book_title)s (r)i buruzko iruzkina zabaldu du"
+msgstr "%(related_user)s (e)k zure %(book_title)s (r)i buruzko iruzkina bultzatu du"
#: bookwyrm/templates/notifications/items/boost.html:50
#, python-format
msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s "
-msgstr "%(related_user)s eta %(second_user)s (e)k %(book_title)s liburuari buruzko zure iruzkina sustatu zuten"
+msgstr "%(related_user)s eta %(second_user)s (e)k %(book_title)s liburuari buruzko zure iruzkina bultzatu dute"
#: bookwyrm/templates/notifications/items/boost.html:59
#, python-format
msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s "
-msgstr "%(related_user)s eta %(other_user_display_count)s erabiltzailek %(book_title)s liburuari buruzko zure iruzkina sustatu zuten"
+msgstr "%(related_user)s eta %(other_user_display_count)s erabiltzailek %(book_title)s liburuari buruzko zure iruzkina bultzatu dute"
#: bookwyrm/templates/notifications/items/boost.html:67
#, python-format
msgid "%(related_user)s boosted your quote from %(book_title)s "
-msgstr "%(related_user)s (e)k zure %(book_title)s (e)ko aipua zabaldu du"
+msgstr "%(related_user)s (e)k zure %(book_title)s (e)ko aipua bultzatu du"
#: bookwyrm/templates/notifications/items/boost.html:73
#, python-format
msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s "
-msgstr "%(related_user)s eta %(second_user)s (e)k %(book_title)s liburuari buruzko zure aipamena sustatu zuten"
+msgstr "%(related_user)s eta %(second_user)s (e)k %(book_title)s liburuari buruzko zure aipamena bultzatu dute"
#: bookwyrm/templates/notifications/items/boost.html:82
#, python-format
msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s "
-msgstr "%(related_user)s eta beste %(other_user_display_count)s erabiltzailek %(book_title)s liburuari buruzko zure aipamena sustatu zuten"
+msgstr "%(related_user)s eta beste %(other_user_display_count)s erabiltzailek %(book_title)s liburuari buruzko zure aipamena bultzatu dute"
#: bookwyrm/templates/notifications/items/boost.html:90
#, python-format
msgid "%(related_user)s boosted your status "
-msgstr "%(related_user)s (e)k zure egoera zabaldu du"
+msgstr "%(related_user)s (e)k zure egoera bultzatu du"
#: bookwyrm/templates/notifications/items/boost.html:96
#, python-format
msgid "%(related_user)s and %(second_user)s boosted your status "
-msgstr "%(related_user)s eta %(second_user)s (e)k zure egoera sustatu zuten"
+msgstr "%(related_user)s eta %(second_user)s (e)k zure egoera bultzatu dute"
#: bookwyrm/templates/notifications/items/boost.html:105
#, python-format
msgid "%(related_user)s and %(other_user_display_count)s others boosted your status "
-msgstr "%(related_user)s eta %(other_user_display_count)s erabiltzailek zure egoera sustatu zuten"
+msgstr "%(related_user)s eta %(other_user_display_count)s erabiltzailek zure egoera bultzatu dute"
#: bookwyrm/templates/notifications/items/fav.html:21
#, python-format
@@ -3495,7 +3535,7 @@ msgstr "%(related_user)s (e)k atsegin du zu
#: bookwyrm/templates/notifications/items/fav.html:27
#, python-format
msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s "
-msgstr "%(related_user)s eta %(second_user)s (e)k %(book_title)s liburuari buruzko zure kritika maitatu zuten"
+msgstr "%(related_user)s eta %(second_user)s (e)k %(book_title)s liburuari buruzko zure kritika atsegin dute"
#: bookwyrm/templates/notifications/items/fav.html:36
#, python-format
@@ -3510,7 +3550,7 @@ msgstr "%(related_user)s (e)k atsegin du zu
#: bookwyrm/templates/notifications/items/fav.html:50
#, python-format
msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s "
-msgstr "%(related_user)s eta %(second_user)s (e)k %(book_title)s liburuari buruzko zure iruzkina maitatu zuten"
+msgstr "%(related_user)s eta %(second_user)s (e)k %(book_title)s liburuari buruzko zure iruzkina atsegin dute"
#: bookwyrm/templates/notifications/items/fav.html:59
#, python-format
@@ -3525,7 +3565,7 @@ msgstr "%(related_user)s (e)k atsegin du zu
#: bookwyrm/templates/notifications/items/fav.html:73
#, python-format
msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s "
-msgstr "%(related_user)s eta %(second_user)s (e)k %(book_title)s liburuari buruzko zure aipamena maitatu zuten"
+msgstr "%(related_user)s eta %(second_user)s (e)k %(book_title)s liburuari buruzko zure aipamena atsegin dute"
#: bookwyrm/templates/notifications/items/fav.html:82
#, python-format
@@ -3540,7 +3580,7 @@ msgstr "%(related_user)s (e)k zure %(related_user)s and %(second_user)s liked your status "
-msgstr "%(related_user)s eta %(second_user)s (e)k zure egoera maitatu zuen"
+msgstr "%(related_user)s eta %(second_user)s (e)k zure egoera atsegin dute"
#: bookwyrm/templates/notifications/items/fav.html:105
#, python-format
@@ -3590,13 +3630,20 @@ msgstr "%(related_user)s (e)k zure \"%(related_user)s and %(second_user)s have left your group \"%(group_name)s \""
-msgstr "%(related_user)s eta %(second_user)s zure \"%(group_name)s \" taldetik atera ziren"
+msgstr "%(related_user)s eta %(second_user)s zure \"%(group_name)s \" taldetik atera dira"
#: bookwyrm/templates/notifications/items/leave.html:36
#, python-format
msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
msgstr "%(related_user)s eta beste %(other_user_display_count)s erabiltzailek zure \"%(group_name)s \" taldea utzi dute"
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] ""
+msgstr[1] ""
+
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
msgid "%(related_user)s mentioned you in a review of %(book_title)s "
@@ -4005,6 +4052,11 @@ msgstr "Ezkutatu jarraitzaile eta jarraituak profilean"
msgid "Default post privacy:"
msgstr "Lehenetsitako pribatutasuna bidalketentzat:"
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr "Apalen pribatutasunaren bila zabiltza? Zure apal bakoitzarentzat berariazko ikusgarritasun maila ezarri dezakezu. Zoaz Zure liburuak atalera, hautatu apal bat fitxa-barran eta klikatu \"Editatu apala\"."
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4429,63 +4481,80 @@ msgid "Celery Status"
msgstr "Celery-ren egoera"
#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:22
msgid "Queues"
msgstr "Ilarak"
-#: bookwyrm/templates/settings/celery.html:18
+#: bookwyrm/templates/settings/celery.html:26
msgid "Low priority"
msgstr "Lehentasun txikia"
-#: bookwyrm/templates/settings/celery.html:24
+#: bookwyrm/templates/settings/celery.html:32
msgid "Medium priority"
msgstr "Lehentasun ertaina"
-#: bookwyrm/templates/settings/celery.html:30
+#: bookwyrm/templates/settings/celery.html:38
msgid "High priority"
msgstr "Lehentasun handia"
-#: bookwyrm/templates/settings/celery.html:46
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr "Emanaldiak"
+
+#: bookwyrm/templates/settings/celery.html:60
msgid "Could not connect to Redis broker"
msgstr "Ezin izan da Redis brokerera konektatu"
-#: bookwyrm/templates/settings/celery.html:54
+#: bookwyrm/templates/settings/celery.html:68
msgid "Active Tasks"
msgstr "Zeregin aktiboak"
-#: bookwyrm/templates/settings/celery.html:59
+#: bookwyrm/templates/settings/celery.html:73
#: bookwyrm/templates/settings/imports/imports.html:113
msgid "ID"
msgstr "IDa"
-#: bookwyrm/templates/settings/celery.html:60
+#: bookwyrm/templates/settings/celery.html:74
msgid "Task name"
msgstr "Zereginaren izena"
-#: bookwyrm/templates/settings/celery.html:61
+#: bookwyrm/templates/settings/celery.html:75
msgid "Run time"
msgstr "Exekuzio-denbora"
-#: bookwyrm/templates/settings/celery.html:62
+#: bookwyrm/templates/settings/celery.html:76
msgid "Priority"
msgstr "Lehentasuna"
-#: bookwyrm/templates/settings/celery.html:67
+#: bookwyrm/templates/settings/celery.html:81
msgid "No active tasks"
msgstr "Egiteko aktiborike z"
-#: bookwyrm/templates/settings/celery.html:85
+#: bookwyrm/templates/settings/celery.html:99
msgid "Workers"
msgstr "Langileak"
-#: bookwyrm/templates/settings/celery.html:90
+#: bookwyrm/templates/settings/celery.html:104
msgid "Uptime:"
msgstr "Erabilgarri egon den denbora:"
-#: bookwyrm/templates/settings/celery.html:100
+#: bookwyrm/templates/settings/celery.html:114
msgid "Could not connect to Celery"
msgstr "Ezin izan da Celeryra konektatu"
-#: bookwyrm/templates/settings/celery.html:107
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr "Erroreak"
@@ -4850,8 +4919,8 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr "Erabiltzen da hori inportazioekin gauzak benetan gaizki doazenean eta arazoak konpontzen dituzun bitartean, jardunari etenaldi bat egin behar zaionean."
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
-msgstr "Inportazioak desgaituta dauden bitartean, erabiltzaileek ezin dituzte inportazio berriak abiatu, baina dagoeneko abian direnen gainean ez da eraginik izango."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
+msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:36
msgid "Disable imports"
@@ -5570,7 +5639,7 @@ msgstr "Erabiltzailearen ekintzak"
#: bookwyrm/templates/settings/users/user_moderation_actions.html:21
msgid "Activate user"
-msgstr ""
+msgstr "Aktibatu erabiltzailea"
#: bookwyrm/templates/settings/users/user_moderation_actions.html:27
msgid "Suspend user"
@@ -5684,11 +5753,11 @@ msgstr "Ikus instalatzeko jarraibideak"
msgid "Instance Setup"
msgstr "Instantziaren konfigurazioa"
-#: bookwyrm/templates/setup/layout.html:19
+#: bookwyrm/templates/setup/layout.html:21
msgid "Installing BookWyrm"
msgstr "Bookwyrm instalatzen"
-#: bookwyrm/templates/setup/layout.html:22
+#: bookwyrm/templates/setup/layout.html:24
msgid "Need help?"
msgstr "Laguntzarik behar?"
@@ -5706,7 +5775,7 @@ msgid "User profile"
msgstr "Erabiltzailearen profila"
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr "Liburu guztiak"
@@ -5780,7 +5849,7 @@ msgid_plural "and %(remainder_count_display)s others"
msgstr[0] "eta beste %(remainder_count_display)s"
msgstr[1] "eta beste %(remainder_count_display)s"
-#: bookwyrm/templates/snippets/book_cover.html:61
+#: bookwyrm/templates/snippets/book_cover.html:63
msgid "No cover"
msgstr "Azalik ez"
@@ -5797,7 +5866,7 @@ msgstr "Bultzatu"
#: bookwyrm/templates/snippets/boost_button.html:33
#: bookwyrm/templates/snippets/boost_button.html:34
msgid "Un-boost"
-msgstr "Desegin zabaltzea"
+msgstr "Desegin bultzatzea"
#: bookwyrm/templates/snippets/create_status.html:36
msgid "Quote"
@@ -5880,6 +5949,10 @@ msgstr "Orrialdean:"
msgid "At percent:"
msgstr "Ehunekotan:"
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr ""
+
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
@@ -6058,10 +6131,18 @@ msgstr "%(page)s orrialdea %(total_pages)s(t)ik"
msgid "page %(page)s"
msgstr "%(page)s orrialdea"
-#: bookwyrm/templates/snippets/pagination.html:12
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr "Berriagoa"
+
+#: bookwyrm/templates/snippets/pagination.html:15
msgid "Previous"
msgstr "Aurrekoa"
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr "Zaharragoa"
+
#: bookwyrm/templates/snippets/privacy-icons.html:12
msgid "Followers-only"
msgstr "Jarraitzaileek bakarrik"
@@ -6120,7 +6201,7 @@ msgstr "Izena eman"
#: bookwyrm/templates/snippets/report_modal.html:8
#, python-format
msgid "Report @%(username)s's status"
-msgstr "Salatu @%(username)s-(r)en egoera"
+msgstr "Salatu @%(username)s(r)en egoera"
#: bookwyrm/templates/snippets/report_modal.html:10
#, python-format
@@ -6190,19 +6271,29 @@ msgstr "Erakutsi egoera"
#: bookwyrm/templates/snippets/status/content_status.html:102
#, python-format
-msgid "(Page %(page)s)"
-msgstr "(%(page)s orrialdea)"
+msgid "(Page %(page)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr "%(endpage)s"
#: bookwyrm/templates/snippets/status/content_status.html:104
#, python-format
-msgid "(%(percent)s%%)"
-msgstr "(%(percent)s%%)"
+msgid "(%(percent)s%%"
+msgstr "(%%%(percent)s"
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid " - %(endpercent)s%%"
+msgstr " - %%%(endpercent)s"
#: bookwyrm/templates/snippets/status/content_status.html:127
msgid "Open image in new window"
msgstr "Ireki irudia leiho berrian"
-#: bookwyrm/templates/snippets/status/content_status.html:146
+#: bookwyrm/templates/snippets/status/content_status.html:148
msgid "Hide status"
msgstr "Ezkutatu egoera"
@@ -6254,12 +6345,12 @@ msgstr "(e)k %(book)s irakurtzen bukatu du"
#: bookwyrm/templates/snippets/status/headers/reading.html:10
#, python-format
msgid "started reading %(book)s by %(author_name)s "
-msgstr "%(author_name)s (r)en %(book)s irakurtzen hasi da"
+msgstr ", %(author_name)s (r)en %(book)s irakurtzen hasi da"
#: bookwyrm/templates/snippets/status/headers/reading.html:17
#, python-format
msgid "started reading %(book)s "
-msgstr "%(book)s irakurtzen hasi da"
+msgstr ", %(book)s irakurtzen hasi da"
#: bookwyrm/templates/snippets/status/headers/review.html:8
#, python-format
@@ -6299,7 +6390,7 @@ msgstr "Ezabatu egoera"
#: bookwyrm/templates/snippets/status/layout.html:57
#: bookwyrm/templates/snippets/status/layout.html:58
msgid "Boost status"
-msgstr "Zabaldu egoera"
+msgstr "Bultzatu egoera"
#: bookwyrm/templates/snippets/status/layout.html:61
#: bookwyrm/templates/snippets/status/layout.html:62
@@ -6358,7 +6449,7 @@ msgstr "Zure kontua babestu dezakezu zure erabiltzaile-hobespenetan bi faktoreta
#: bookwyrm/templates/user/books_header.html:9
#, python-format
msgid "%(username)s's books"
-msgstr "%(username)s-(r)en liburuak"
+msgstr "%(username)s(r)en liburuak"
#: bookwyrm/templates/user/goal.html:8
#, python-format
@@ -6382,7 +6473,7 @@ msgstr "Zure %(year)s urteko liburuak"
#: bookwyrm/templates/user/goal.html:42
#, python-format
msgid "%(username)s's %(year)s Books"
-msgstr "%(username)s-(r)en %(year)s-(e)ko Liburuak"
+msgstr "%(username)s(r)en %(year)s(e)ko liburuak"
#: bookwyrm/templates/user/groups.html:9
msgid "Your Groups"
@@ -6529,7 +6620,7 @@ msgstr "Liburu zerrenda: %(name)s"
#, python-format
msgid "%(num)d book - by %(user)s"
msgid_plural "%(num)d books - by %(user)s"
-msgstr[0] ""
+msgstr[0] "liburu %(num)d - %(user)s"
msgstr[1] "%(num)d liburu - %(user)s"
#: bookwyrm/templatetags/utilities.py:39
diff --git a/locale/fi_FI/LC_MESSAGES/django.mo b/locale/fi_FI/LC_MESSAGES/django.mo
index bdaff02351..cfe4da67b4 100644
Binary files a/locale/fi_FI/LC_MESSAGES/django.mo and b/locale/fi_FI/LC_MESSAGES/django.mo differ
diff --git a/locale/fi_FI/LC_MESSAGES/django.po b/locale/fi_FI/LC_MESSAGES/django.po
index 69129f98b8..96f87b6027 100644
--- a/locale/fi_FI/LC_MESSAGES/django.po
+++ b/locale/fi_FI/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-01-30 08:21+0000\n"
-"PO-Revision-Date: 2023-01-30 17:35\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-04-26 00:45\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Finnish\n"
"Language: fi\n"
@@ -46,7 +46,7 @@ msgstr "rajattomasti"
msgid "Incorrect password"
msgstr "Väärä salasana"
-#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
msgid "Password does not match"
msgstr "Salasanat eivät täsmää"
@@ -70,19 +70,19 @@ msgstr "Keskeytyspäivä ei voi olla tulevaisuudessa."
msgid "Reading finished date cannot be in the future."
msgstr "Lukemisen lopetuspäivä ei voi olla tulevaisuudessa."
-#: bookwyrm/forms/landing.py:37
+#: bookwyrm/forms/landing.py:38
msgid "Username or password are incorrect"
msgstr "Käyttäjänimi tai salasana on virheellinen"
-#: bookwyrm/forms/landing.py:56
+#: bookwyrm/forms/landing.py:57
msgid "User with this username already exists"
msgstr "Käyttäjänimi on jo varattu"
-#: bookwyrm/forms/landing.py:65
+#: bookwyrm/forms/landing.py:66
msgid "A user with this email already exists."
msgstr "Sähköpostiosoite on jo jonkun käyttäjän käytössä."
-#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
msgid "Incorrect code"
msgstr "Virheellinen koodi"
@@ -205,26 +205,26 @@ msgstr "Federoitu"
msgid "Blocked"
msgstr "Estetty"
-#: bookwyrm/models/fields.py:28
+#: bookwyrm/models/fields.py:29
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s ei ole kelvollinen remote_id"
-#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s ei ole kelvollinen käyttäjänimi"
-#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "käyttäjänimi"
-#: bookwyrm/models/fields.py:187
+#: bookwyrm/models/fields.py:197
msgid "A user with that username already exists."
msgstr "Käyttäjänimi on jo käytössä."
-#: bookwyrm/models/fields.py:206
+#: bookwyrm/models/fields.py:216
#: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11
@@ -232,7 +232,7 @@ msgstr "Käyttäjänimi on jo käytössä."
msgid "Public"
msgstr "Julkinen"
-#: bookwyrm/models/fields.py:207
+#: bookwyrm/models/fields.py:217
#: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14
@@ -240,14 +240,14 @@ msgstr "Julkinen"
msgid "Unlisted"
msgstr "Ei jakelua"
-#: bookwyrm/models/fields.py:208
+#: bookwyrm/models/fields.py:218
#: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers"
msgstr "Seuraajat"
-#: bookwyrm/models/fields.py:209
+#: bookwyrm/models/fields.py:219
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
@@ -275,11 +275,11 @@ msgstr "Keskeytetty"
msgid "Import stopped"
msgstr "Tuonti keskeytetty"
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr "Virhe kirjan lataamisessa"
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr "Kirjaa ei löytynyt tietokannoista"
@@ -300,7 +300,7 @@ msgstr "Lainattavissa"
msgid "Approved"
msgstr "Hyväksytty"
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr "Arviot"
@@ -316,19 +316,19 @@ msgstr "Lainaukset"
msgid "Everything else"
msgstr "Muut"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr "Oma aikajana"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr "Etusivu"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr "Kirjavirta"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -336,75 +336,79 @@ msgstr "Kirjavirta"
msgid "Books"
msgstr "Kirjat"
-#: bookwyrm/settings.py:290
+#: bookwyrm/settings.py:294
msgid "English"
msgstr "English (englanti)"
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr "Català (katalaani)"
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr "Deutsch (saksa)"
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr ""
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr "Español (espanja)"
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
msgstr "Euskara (baski)"
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr "Galego (galego)"
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr "Italiano (italia)"
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr "suomi"
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr "Français (ranska)"
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr "Lietuvių (liettua)"
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr "Norsk (norja)"
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr "Polski (puola)"
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr "Português do Brasil (brasilianportugali)"
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (portugali)"
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr "Română (romania)"
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr "Svenska (ruotsi)"
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr "简体中文 (yksinkertaistettu kiina)"
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr "繁體中文 (perinteinen kiina)"
@@ -434,7 +438,7 @@ msgid "About"
msgstr "Yleistä"
#: bookwyrm/templates/about/about.html:21
-#: bookwyrm/templates/get_started/layout.html:20
+#: bookwyrm/templates/get_started/layout.html:22
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "Tämä on %(site_name)s"
@@ -620,7 +624,7 @@ msgstr "Vuoden lyhyin kirja…"
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -708,24 +712,24 @@ msgid "View ISNI record"
msgstr "Näytä ISNI-tietue"
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:164
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
msgstr "Näytä ISFDB:ssä"
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:131
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Lataa tiedot"
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:135
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr "Näytä OpenLibraryssa"
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:149
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr "Näytä Inventairessa"
@@ -834,15 +838,15 @@ msgid "ISNI:"
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:209
-#: bookwyrm/templates/book/edit/edit_book.html:142
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
#: bookwyrm/templates/groups/form.html:32
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -858,10 +862,10 @@ msgstr "Tallenna"
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:210
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
-#: bookwyrm/templates/book/edit/edit_book.html:144
-#: bookwyrm/templates/book/edit/edit_book.html:147
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:25
#: bookwyrm/templates/book/sync_modal.html:23
@@ -885,7 +889,7 @@ msgid "Loading data will connect to %(source_name)s and check f
msgstr "Tietoja ladattaessa muodostetaan yhteys lähteeseen %(source_name)s ja sieltä haetaan metatietoja, joita ei vielä ole täällä. Olemassa olevia metatietoja ei korvata uusilla."
#: bookwyrm/templates/author/sync_modal.html:24
-#: bookwyrm/templates/book/edit/edit_book.html:129
+#: bookwyrm/templates/book/edit/edit_book.html:137
#: bookwyrm/templates/book/sync_modal.html:24
#: bookwyrm/templates/groups/members.html:29
#: bookwyrm/templates/landing/password_reset.html:52
@@ -895,98 +899,98 @@ msgstr "Tietoja ladattaessa muodostetaan yhteys lähteeseen %(source_nam
msgid "Confirm"
msgstr "Vahvista"
-#: bookwyrm/templates/book/book.html:19
+#: bookwyrm/templates/book/book.html:20
msgid "Unable to connect to remote source."
msgstr "Lähteeseen ei saada yhteyttä."
-#: bookwyrm/templates/book/book.html:64 bookwyrm/templates/book/book.html:65
+#: bookwyrm/templates/book/book.html:71 bookwyrm/templates/book/book.html:72
msgid "Edit Book"
msgstr "Muokkaa kirjaa"
-#: bookwyrm/templates/book/book.html:88 bookwyrm/templates/book/book.html:91
+#: bookwyrm/templates/book/book.html:97 bookwyrm/templates/book/book.html:100
msgid "Click to add cover"
msgstr "Lisää kansikuva"
-#: bookwyrm/templates/book/book.html:97
+#: bookwyrm/templates/book/book.html:106
msgid "Failed to load cover"
msgstr "Kansikuvan lataus epäonnistui"
-#: bookwyrm/templates/book/book.html:108
+#: bookwyrm/templates/book/book.html:117
msgid "Click to enlarge"
msgstr "Suurenna"
-#: bookwyrm/templates/book/book.html:186
+#: bookwyrm/templates/book/book.html:195
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
msgstr[0] "(%(review_count)s arvio)"
msgstr[1] "(%(review_count)s arviota)"
-#: bookwyrm/templates/book/book.html:198
+#: bookwyrm/templates/book/book.html:207
msgid "Add Description"
msgstr "Lisää kuvaus"
-#: bookwyrm/templates/book/book.html:205
+#: bookwyrm/templates/book/book.html:214
#: bookwyrm/templates/book/edit/edit_book_form.html:42
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "Kuvaus:"
-#: bookwyrm/templates/book/book.html:221
+#: bookwyrm/templates/book/book.html:230
#, python-format
msgid "%(count)s edition"
msgid_plural "%(count)s editions"
msgstr[0] "%(count)s laitos"
msgstr[1] "%(count)s laitosta"
-#: bookwyrm/templates/book/book.html:235
+#: bookwyrm/templates/book/book.html:244
msgid "You have shelved this edition in:"
msgstr "Olet sijoittanut laitoksen hyllyyn:"
-#: bookwyrm/templates/book/book.html:250
+#: bookwyrm/templates/book/book.html:259
#, python-format
msgid "A different edition of this book is on your %(shelf_name)s shelf."
msgstr "Hyllyssäsi %(shelf_name)s on jo toinen tämän kirjan laitos ."
-#: bookwyrm/templates/book/book.html:261
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr "Oma lukutoiminta"
-#: bookwyrm/templates/book/book.html:267
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr "Lisää lukupäivämäärät"
-#: bookwyrm/templates/book/book.html:275
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr "Ei kirjaan liittyvää lukutoimintaa."
-#: bookwyrm/templates/book/book.html:301
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr "Omat arviot"
-#: bookwyrm/templates/book/book.html:307
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr "Omat kommentit"
-#: bookwyrm/templates/book/book.html:313
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr "Omat lainaukset"
-#: bookwyrm/templates/book/book.html:349
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr "Aiheet"
-#: bookwyrm/templates/book/book.html:361
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr "Paikat"
-#: bookwyrm/templates/book/book.html:372
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
-#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@@ -995,11 +999,11 @@ msgstr "Paikat"
msgid "Lists"
msgstr "Listat"
-#: bookwyrm/templates/book/book.html:384
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr "Lisää listaan"
-#: bookwyrm/templates/book/book.html:394
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1059,8 +1063,8 @@ msgstr "Kansikuvan esikatselu"
#: bookwyrm/templates/components/modal.html:13
#: bookwyrm/templates/components/modal.html:30
#: bookwyrm/templates/feed/suggested_books.html:67
-#: bookwyrm/templates/get_started/layout.html:25
-#: bookwyrm/templates/get_started/layout.html:58
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
msgid "Close"
msgstr "Sulje"
@@ -1075,47 +1079,51 @@ msgstr "Muokkaa teosta ”%(book_title)s”"
msgid "Add Book"
msgstr "Lisää kirja"
-#: bookwyrm/templates/book/edit/edit_book.html:62
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr "Kirjan tallentaminen epäonnistui, lisätietoja virheilmoituksessa alempana."
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
msgid "Confirm Book Info"
msgstr "Vahvista kirjan tiedot"
-#: bookwyrm/templates/book/edit/edit_book.html:70
+#: bookwyrm/templates/book/edit/edit_book.html:78
#, python-format
msgid "Is \"%(name)s\" one of these authors?"
msgstr "Onko ”%(name)s” joku seuraavista tekijöistä?"
-#: bookwyrm/templates/book/edit/edit_book.html:81
+#: bookwyrm/templates/book/edit/edit_book.html:89
#, python-format
msgid "Author of %(book_title)s "
msgstr "Teoksen %(book_title)s tekijä"
-#: bookwyrm/templates/book/edit/edit_book.html:85
+#: bookwyrm/templates/book/edit/edit_book.html:93
#, python-format
msgid "Author of %(alt_title)s "
msgstr "Teoksen %(alt_title)s tekijä"
-#: bookwyrm/templates/book/edit/edit_book.html:87
+#: bookwyrm/templates/book/edit/edit_book.html:95
msgid "Find more information at isni.org"
msgstr "Lisätietoja osoitteessa isni.org"
-#: bookwyrm/templates/book/edit/edit_book.html:97
+#: bookwyrm/templates/book/edit/edit_book.html:105
msgid "This is a new author"
msgstr "Uusi tekijä"
-#: bookwyrm/templates/book/edit/edit_book.html:107
+#: bookwyrm/templates/book/edit/edit_book.html:115
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "Luodaan uusi tekijä: %(name)s"
-#: bookwyrm/templates/book/edit/edit_book.html:114
+#: bookwyrm/templates/book/edit/edit_book.html:122
msgid "Is this an edition of an existing work?"
msgstr "Onko tämä aiemmin lisätyn teoksen laitos?"
-#: bookwyrm/templates/book/edit/edit_book.html:122
+#: bookwyrm/templates/book/edit/edit_book.html:130
msgid "This is a new work"
msgstr "Uusi teos"
-#: bookwyrm/templates/book/edit/edit_book.html:131
+#: bookwyrm/templates/book/edit/edit_book.html:139
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
@@ -1470,6 +1478,19 @@ msgstr "Kustantaja: %(publisher)s."
msgid "rated it"
msgstr "antoi arvosanan"
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr "Sarja."
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr "Osa %(series_number)s"
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr "Lajittelematon kirja"
+
#: 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."
@@ -1664,7 +1685,7 @@ msgstr "%(username)s lainasi teosta %(related_user)s ja %(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
msgstr "%(related_user)s ja %(other_user_display_count)s muuta poistuivat ryhmästäsi ”%(group_name)s ”"
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] "Uusi linkin verkkotunnus tarkastettavaksi"
+msgstr[1] "%(display_count)s uutta linkin verkkotunnusta tarkastettavaksi"
+
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
msgid "%(related_user)s mentioned you in a review of %(book_title)s "
@@ -4005,6 +4052,11 @@ msgstr "Älä näytä seuraajia ja seurattavia profiilisivulla"
msgid "Default post privacy:"
msgstr "Julkaisujen julkisuuden oletusvalinta:"
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr ""
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4430,63 +4482,80 @@ msgid "Celery Status"
msgstr "Celeryn tila"
#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr "Voit valvoa Celeryn käynnissäoloa kyselemällä osoitetta"
+
+#: bookwyrm/templates/settings/celery.html:22
msgid "Queues"
msgstr "Jonoja"
-#: bookwyrm/templates/settings/celery.html:18
+#: bookwyrm/templates/settings/celery.html:26
msgid "Low priority"
msgstr "Alhainen prioriteetti"
-#: bookwyrm/templates/settings/celery.html:24
+#: bookwyrm/templates/settings/celery.html:32
msgid "Medium priority"
msgstr "Keskitason prioriteetti"
-#: bookwyrm/templates/settings/celery.html:30
+#: bookwyrm/templates/settings/celery.html:38
msgid "High priority"
msgstr "Korkea prioriteetti"
-#: bookwyrm/templates/settings/celery.html:46
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr "Lähetykset"
+
+#: bookwyrm/templates/settings/celery.html:60
msgid "Could not connect to Redis broker"
msgstr "Redis-välityspalveluun ei saada yhteyttä"
-#: bookwyrm/templates/settings/celery.html:54
+#: bookwyrm/templates/settings/celery.html:68
msgid "Active Tasks"
msgstr "Aktiiviset tehtävät"
-#: bookwyrm/templates/settings/celery.html:59
+#: bookwyrm/templates/settings/celery.html:73
#: bookwyrm/templates/settings/imports/imports.html:113
msgid "ID"
msgstr "Tunniste"
-#: bookwyrm/templates/settings/celery.html:60
+#: bookwyrm/templates/settings/celery.html:74
msgid "Task name"
msgstr "Tehtävän nimi"
-#: bookwyrm/templates/settings/celery.html:61
+#: bookwyrm/templates/settings/celery.html:75
msgid "Run time"
msgstr "Käyttöaika"
-#: bookwyrm/templates/settings/celery.html:62
+#: bookwyrm/templates/settings/celery.html:76
msgid "Priority"
msgstr "Prioriteetti"
-#: bookwyrm/templates/settings/celery.html:67
+#: bookwyrm/templates/settings/celery.html:81
msgid "No active tasks"
msgstr "Ei aktiivisia tehtäviä"
-#: bookwyrm/templates/settings/celery.html:85
+#: bookwyrm/templates/settings/celery.html:99
msgid "Workers"
msgstr "Suorittajia"
-#: bookwyrm/templates/settings/celery.html:90
+#: bookwyrm/templates/settings/celery.html:104
msgid "Uptime:"
msgstr "Käynnissäoloaika:"
-#: bookwyrm/templates/settings/celery.html:100
+#: bookwyrm/templates/settings/celery.html:114
msgid "Could not connect to Celery"
msgstr "Celeryyn ei saada yhteyttä"
-#: bookwyrm/templates/settings/celery.html:107
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr "Virheitä"
@@ -4851,8 +4920,8 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr "Käytä tätä vain, kun tuonnit eivät kertakaikkiaan onnistu ja haluat ratkaista ongelman rauhassa."
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
-msgstr "Kun tuonnit on poistettu käytöstä, käyttäjät eivät voi aloittaa uusia tuonteja, mutta tällä ei ole vaikutusta käynnissä oleviin tuonteihin."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
+msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:36
msgid "Disable imports"
@@ -4868,31 +4937,31 @@ msgstr "Ota tuonti käyttöön"
#: bookwyrm/templates/settings/imports/imports.html:63
msgid "Limit the amount of imports"
-msgstr ""
+msgstr "Rajoita tuontien määrää"
#: bookwyrm/templates/settings/imports/imports.html:74
msgid "Some users might try to import a large number of books, which you want to limit."
-msgstr ""
+msgstr "Joskus käyttäjät voivat yrittää tuoda suuria määriä kirjoja, ja voit halutessasi rajoittaa tätä."
#: bookwyrm/templates/settings/imports/imports.html:75
msgid "Set the value to 0 to not enforce any limit."
-msgstr ""
+msgstr "Poista kaikki rajoitukset asettamalla arvoksi 0."
#: bookwyrm/templates/settings/imports/imports.html:78
msgid "Set import limit to"
-msgstr ""
+msgstr "Aseta tuontirajaksi"
#: bookwyrm/templates/settings/imports/imports.html:80
msgid "books every"
-msgstr ""
+msgstr "kirjaa joka"
#: bookwyrm/templates/settings/imports/imports.html:82
msgid "days."
-msgstr ""
+msgstr "päivä."
#: bookwyrm/templates/settings/imports/imports.html:86
msgid "Set limit"
-msgstr ""
+msgstr "Ota rajoitus käyttöön"
#: bookwyrm/templates/settings/imports/imports.html:102
msgid "Completed"
@@ -5177,7 +5246,7 @@ msgstr "Salli käyttäjätilien avaaminen"
#: bookwyrm/templates/settings/registration.html:43
msgid "Default access level:"
-msgstr ""
+msgstr "Oletuskäyttöoikeustaso:"
#: bookwyrm/templates/settings/registration.html:61
msgid "Require users to confirm email address"
@@ -5571,7 +5640,7 @@ msgstr "Toiminnot"
#: bookwyrm/templates/settings/users/user_moderation_actions.html:21
msgid "Activate user"
-msgstr ""
+msgstr "Aktivoi käyttäjä"
#: bookwyrm/templates/settings/users/user_moderation_actions.html:27
msgid "Suspend user"
@@ -5685,11 +5754,11 @@ msgstr "Näytä asennusohjeet"
msgid "Instance Setup"
msgstr "Palvelimen määritys"
-#: bookwyrm/templates/setup/layout.html:19
+#: bookwyrm/templates/setup/layout.html:21
msgid "Installing BookWyrm"
msgstr "BookWyrmin asennus"
-#: bookwyrm/templates/setup/layout.html:22
+#: bookwyrm/templates/setup/layout.html:24
msgid "Need help?"
msgstr "Tarvitsetko apua?"
@@ -5707,7 +5776,7 @@ msgid "User profile"
msgstr "Käyttäjäprofiili"
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr "Kaikki kirjat"
@@ -5781,7 +5850,7 @@ msgid_plural "and %(remainder_count_display)s others"
msgstr[0] "ja %(remainder_count_display)s muu"
msgstr[1] "ja %(remainder_count_display)s muuta"
-#: bookwyrm/templates/snippets/book_cover.html:61
+#: bookwyrm/templates/snippets/book_cover.html:63
msgid "No cover"
msgstr "Ei kansikuvaa"
@@ -5881,6 +5950,10 @@ msgstr "Sivulla:"
msgid "At percent:"
msgstr "Prosenttikohdassa:"
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr "–"
+
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
@@ -6059,10 +6132,18 @@ msgstr "sivu %(page)s/%(total_pages)s"
msgid "page %(page)s"
msgstr "sivu %(page)s"
-#: bookwyrm/templates/snippets/pagination.html:12
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr "Uudemmat"
+
+#: bookwyrm/templates/snippets/pagination.html:15
msgid "Previous"
msgstr "Edellinen"
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr "Vanhemmat"
+
#: bookwyrm/templates/snippets/privacy-icons.html:12
msgid "Followers-only"
msgstr "Vain seuraajille"
@@ -6191,19 +6272,29 @@ msgstr "Näytä tilapäivitys"
#: bookwyrm/templates/snippets/status/content_status.html:102
#, python-format
-msgid "(Page %(page)s)"
-msgstr "(Sivu %(page)s)"
+msgid "(Page %(page)s"
+msgstr "(Sivu %(page)s"
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr "%(endpage)s"
#: bookwyrm/templates/snippets/status/content_status.html:104
#, python-format
-msgid "(%(percent)s%%)"
-msgstr "(%(percent)s %%)"
+msgid "(%(percent)s%%"
+msgstr "(%(percent)s %%"
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid " - %(endpercent)s%%"
+msgstr "–%(endpercent)s %%"
#: bookwyrm/templates/snippets/status/content_status.html:127
msgid "Open image in new window"
msgstr "Avaa kuva uudessa ikkunassa"
-#: bookwyrm/templates/snippets/status/content_status.html:146
+#: bookwyrm/templates/snippets/status/content_status.html:148
msgid "Hide status"
msgstr "Piilota tilapäivitys"
@@ -6455,7 +6546,7 @@ msgstr "Käyttäjän toiminta"
#: bookwyrm/templates/user/user.html:76
msgid "Show RSS Options"
-msgstr ""
+msgstr "Näytä RSS-valinnat"
#: bookwyrm/templates/user/user.html:82
msgid "RSS feed"
@@ -6463,19 +6554,19 @@ msgstr "RSS-syöte"
#: bookwyrm/templates/user/user.html:98
msgid "Complete feed"
-msgstr ""
+msgstr "Kaikki sisältö"
#: bookwyrm/templates/user/user.html:103
msgid "Reviews only"
-msgstr ""
+msgstr "Vain arviot"
#: bookwyrm/templates/user/user.html:108
msgid "Quotes only"
-msgstr ""
+msgstr "Vain lainaukset"
#: bookwyrm/templates/user/user.html:113
msgid "Comments only"
-msgstr ""
+msgstr "Vain kommentit"
#: bookwyrm/templates/user/user.html:129
msgid "No activities yet!"
@@ -6524,14 +6615,14 @@ msgstr "Tiedosto on enimmäiskokoa 10 Mt suurempi"
#: bookwyrm/templatetags/list_page_tags.py:14
#, python-format
msgid "Book List: %(name)s"
-msgstr ""
+msgstr "Kirjalista: %(name)s"
#: bookwyrm/templatetags/list_page_tags.py:22
#, python-format
msgid "%(num)d book - by %(user)s"
msgid_plural "%(num)d books - by %(user)s"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(num)d kirja — %(user)s"
+msgstr[1] "%(num)d kirjaa — %(user)s"
#: bookwyrm/templatetags/utilities.py:39
#, python-format
@@ -6546,17 +6637,17 @@ msgstr "{obj.display_name} — tilapäivitykset"
#: bookwyrm/views/rss_feed.py:72
#, python-brace-format
msgid "Reviews from {obj.display_name}"
-msgstr ""
+msgstr "Kirja-arviot — {obj.display_name}"
#: bookwyrm/views/rss_feed.py:110
#, python-brace-format
msgid "Quotes from {obj.display_name}"
-msgstr ""
+msgstr "Lainaukset — {obj.display_name}"
#: bookwyrm/views/rss_feed.py:148
#, python-brace-format
msgid "Comments from {obj.display_name}"
-msgstr ""
+msgstr "Kommentit — {obj.display_name}"
#: bookwyrm/views/updates.py:45
#, python-format
diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo
index 6a5f68e47a..4cdcbf8ea2 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 87358644a1..6bc0e53c99 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: 2023-01-30 08:21+0000\n"
-"PO-Revision-Date: 2023-02-02 14:57\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-04-26 10:21\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: French\n"
"Language: fr\n"
@@ -46,7 +46,7 @@ msgstr "Sans limite"
msgid "Incorrect password"
msgstr "Mot de passe incorrect"
-#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
msgid "Password does not match"
msgstr "Le mot de passe ne correspond pas"
@@ -70,19 +70,19 @@ msgstr "La date d’arrêt de lecture ne peut pas être dans le futur."
msgid "Reading finished date cannot be in the future."
msgstr "La date de fin de lecture ne peut pas être dans le futur."
-#: bookwyrm/forms/landing.py:37
+#: bookwyrm/forms/landing.py:38
msgid "Username or password are incorrect"
msgstr "Identifiant ou mot de passe incorrect"
-#: bookwyrm/forms/landing.py:56
+#: bookwyrm/forms/landing.py:57
msgid "User with this username already exists"
msgstr "Un compte du même nom existe déjà"
-#: bookwyrm/forms/landing.py:65
+#: bookwyrm/forms/landing.py:66
msgid "A user with this email already exists."
msgstr "Cet email est déjà associé à un compte."
-#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
msgid "Incorrect code"
msgstr "Code incorrect"
@@ -205,26 +205,26 @@ msgstr "Fédéré"
msgid "Blocked"
msgstr "Bloqué"
-#: bookwyrm/models/fields.py:28
+#: bookwyrm/models/fields.py:29
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s n’est pas une remote_id valide."
-#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s n’est pas un nom de compte valide."
-#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "nom du compte :"
-#: bookwyrm/models/fields.py:187
+#: bookwyrm/models/fields.py:197
msgid "A user with that username already exists."
msgstr "Ce nom est déjà associé à un compte."
-#: bookwyrm/models/fields.py:206
+#: bookwyrm/models/fields.py:216
#: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11
@@ -232,7 +232,7 @@ msgstr "Ce nom est déjà associé à un compte."
msgid "Public"
msgstr "Public"
-#: bookwyrm/models/fields.py:207
+#: bookwyrm/models/fields.py:217
#: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14
@@ -240,14 +240,14 @@ msgstr "Public"
msgid "Unlisted"
msgstr "Non listé"
-#: bookwyrm/models/fields.py:208
+#: bookwyrm/models/fields.py:218
#: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers"
msgstr "Abonné(e)s"
-#: bookwyrm/models/fields.py:209
+#: bookwyrm/models/fields.py:219
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
@@ -275,11 +275,11 @@ msgstr "Interrompu"
msgid "Import stopped"
msgstr "Import arrêté"
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr "Erreur lors du chargement du livre"
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr "Impossible de trouver une correspondance pour le livre"
@@ -300,7 +300,7 @@ msgstr "Disponible à l’emprunt"
msgid "Approved"
msgstr "Approuvé"
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr "Critiques"
@@ -316,19 +316,19 @@ msgstr "Citations"
msgid "Everything else"
msgstr "Tout le reste"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr "Mon fil d’actualité"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr "Accueil"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr "Actualité de mes livres"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -336,75 +336,79 @@ msgstr "Actualité de mes livres"
msgid "Books"
msgstr "Livres"
-#: bookwyrm/settings.py:290
+#: bookwyrm/settings.py:294
msgid "English"
msgstr "English"
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr "Català (Catalan)"
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr "Deutsch"
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr "Esperanto (Espéranto)"
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr "Español"
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
msgstr "Euskara (Basque)"
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr "Galego (Galicien)"
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr "Italiano (Italien)"
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr "Suomi (Finnois)"
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr "Français"
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr "Lietuvių (Lituanien)"
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr "Norsk (Norvégien)"
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr "Polski (Polonais)"
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr "Português do Brasil (Portugais brésilien)"
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Portugais européen)"
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr "Română (Roumain)"
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr "Svenska (Suédois)"
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr "简化字"
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr "繁體中文 (chinois traditionnel)"
@@ -434,7 +438,7 @@ msgid "About"
msgstr "À propos"
#: bookwyrm/templates/about/about.html:21
-#: bookwyrm/templates/get_started/layout.html:20
+#: bookwyrm/templates/get_started/layout.html:22
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "Bienvenue sur %(site_name)s !"
@@ -610,8 +614,8 @@ msgstr "Ce qui fait en moyenne %(pages)s pages par livre."
#, python-format
msgid "(No page data was available for %(no_page_number)s book)"
msgid_plural "(No page data was available for %(no_page_number)s books)"
-msgstr[0] "(Le nombre de pages n'était pas renseigné pour %(no_page_number)s livre)"
-msgstr[1] "(Le nombre de pages n'était pas renseigné pour %(no_page_number)s livres)"
+msgstr[0] "(Le nombre de pages n’était pas renseigné pour %(no_page_number)s livre)"
+msgstr[1] "(Le nombre de pages n’était pas renseigné pour %(no_page_number)s livres)"
#: bookwyrm/templates/annual_summary/layout.html:150
msgid "Their shortest read this year…"
@@ -620,7 +624,7 @@ msgstr "Sa lecture la plus courte l’année…"
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -708,24 +712,24 @@ msgid "View ISNI record"
msgstr "Voir l’enregistrement ISNI"
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:164
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
msgstr "Voir sur ISFDB"
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:131
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Charger les données"
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:135
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr "Voir sur OpenLibrary"
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:149
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr "Voir sur Inventaire"
@@ -739,7 +743,7 @@ msgstr "Voir sur Goodreads"
#: bookwyrm/templates/author/author.html:151
msgid "View ISFDB entry"
-msgstr "Voir l'entrée ISFDB"
+msgstr "Voir l’entrée ISFDB"
#: bookwyrm/templates/author/author.html:166
#, python-format
@@ -834,15 +838,15 @@ msgid "ISNI:"
msgstr "ISNI :"
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:209
-#: bookwyrm/templates/book/edit/edit_book.html:142
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
#: bookwyrm/templates/groups/form.html:32
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -858,10 +862,10 @@ msgstr "Enregistrer"
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:210
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
-#: bookwyrm/templates/book/edit/edit_book.html:144
-#: bookwyrm/templates/book/edit/edit_book.html:147
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:25
#: bookwyrm/templates/book/sync_modal.html:23
@@ -885,7 +889,7 @@ msgid "Loading data will connect to %(source_name)s and check f
msgstr "Le chargement des données se connectera à %(source_name)s et vérifiera les métadonnées de cet auteur ou autrice qui ne sont pas présentes ici. Les métadonnées existantes ne seront pas écrasées."
#: bookwyrm/templates/author/sync_modal.html:24
-#: bookwyrm/templates/book/edit/edit_book.html:129
+#: bookwyrm/templates/book/edit/edit_book.html:137
#: bookwyrm/templates/book/sync_modal.html:24
#: bookwyrm/templates/groups/members.html:29
#: bookwyrm/templates/landing/password_reset.html:52
@@ -895,98 +899,98 @@ msgstr "Le chargement des données se connectera à %(source_name)sdifferent edition of this book is on your %(shelf_name)s shelf."
msgstr "Une édition différente de ce livre existe sur votre étagère %(shelf_name)s ."
-#: bookwyrm/templates/book/book.html:261
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr "Votre activité de lecture"
-#: bookwyrm/templates/book/book.html:267
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr "Ajouter des dates de lecture"
-#: bookwyrm/templates/book/book.html:275
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr "Vous n’avez aucune activité de lecture pour ce livre"
-#: bookwyrm/templates/book/book.html:301
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr "Vos critiques"
-#: bookwyrm/templates/book/book.html:307
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr "Vos commentaires"
-#: bookwyrm/templates/book/book.html:313
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr "Vos citations"
-#: bookwyrm/templates/book/book.html:349
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr "Sujets"
-#: bookwyrm/templates/book/book.html:361
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr "Lieux"
-#: bookwyrm/templates/book/book.html:372
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
-#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@@ -995,11 +999,11 @@ msgstr "Lieux"
msgid "Lists"
msgstr "Listes"
-#: bookwyrm/templates/book/book.html:384
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr "Ajouter à la liste"
-#: bookwyrm/templates/book/book.html:394
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1059,8 +1063,8 @@ msgstr "Aperçu de la couverture"
#: bookwyrm/templates/components/modal.html:13
#: bookwyrm/templates/components/modal.html:30
#: bookwyrm/templates/feed/suggested_books.html:67
-#: bookwyrm/templates/get_started/layout.html:25
-#: bookwyrm/templates/get_started/layout.html:58
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
msgid "Close"
msgstr "Fermer"
@@ -1075,47 +1079,51 @@ msgstr "Modifier « %(book_title)s »"
msgid "Add Book"
msgstr "Ajouter un livre"
-#: bookwyrm/templates/book/edit/edit_book.html:62
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr "Impossible d’enregistrer le livre, voir les erreurs ci‑dessous pour plus d’informations."
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
msgid "Confirm Book Info"
msgstr "Confirmer les informations de ce livre"
-#: bookwyrm/templates/book/edit/edit_book.html:70
+#: bookwyrm/templates/book/edit/edit_book.html:78
#, python-format
msgid "Is \"%(name)s\" one of these authors?"
msgstr "Est-ce que \"%(name)s\" fait partie de ces auteurs ou autrices ?"
-#: bookwyrm/templates/book/edit/edit_book.html:81
+#: bookwyrm/templates/book/edit/edit_book.html:89
#, python-format
msgid "Author of %(book_title)s "
msgstr "Auteur·ice de %(book_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:85
+#: bookwyrm/templates/book/edit/edit_book.html:93
#, python-format
msgid "Author of %(alt_title)s "
msgstr "Auteur·ice de %(alt_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:87
+#: bookwyrm/templates/book/edit/edit_book.html:95
msgid "Find more information at isni.org"
msgstr "Trouver plus d’informations sur isni.org"
-#: bookwyrm/templates/book/edit/edit_book.html:97
+#: bookwyrm/templates/book/edit/edit_book.html:105
msgid "This is a new author"
msgstr "Il s’agit d’un nouvel auteur ou d’une nouvelle autrice."
-#: bookwyrm/templates/book/edit/edit_book.html:107
+#: bookwyrm/templates/book/edit/edit_book.html:115
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "Création d’un nouvel auteur/autrice : %(name)s"
-#: bookwyrm/templates/book/edit/edit_book.html:114
+#: bookwyrm/templates/book/edit/edit_book.html:122
msgid "Is this an edition of an existing work?"
msgstr "Est‑ce l’édition d’un ouvrage existant ?"
-#: bookwyrm/templates/book/edit/edit_book.html:122
+#: bookwyrm/templates/book/edit/edit_book.html:130
msgid "This is a new work"
msgstr "Il s’agit d’un nouvel ouvrage."
-#: bookwyrm/templates/book/edit/edit_book.html:131
+#: bookwyrm/templates/book/edit/edit_book.html:139
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
@@ -1299,7 +1307,7 @@ msgstr "Éditions de « %(work_title)s » "
#: bookwyrm/templates/book/editions/editions.html:55
msgid "Can't find the edition you're looking for?"
-msgstr "Vous ne trouvez pas l’édition que vous cherchez ?"
+msgstr "Vous ne trouvez pas l’édition que vous cherchez ?"
#: bookwyrm/templates/book/editions/editions.html:75
msgid "Add another edition"
@@ -1325,7 +1333,7 @@ msgstr "Ajouter un lien vers un fichier"
#: bookwyrm/templates/book/file_links/add_link_modal.html:19
msgid "Links from unknown domains will need to be approved by a moderator before they are added."
-msgstr "Les liens vers des domaines inconnus devront être modérés avant d'être ajoutés."
+msgstr "Les liens vers des domaines inconnus devront être approuvés par l’équipe de modération avant d’être ajoutés."
#: bookwyrm/templates/book/file_links/add_link_modal.html:24
msgid "URL:"
@@ -1429,7 +1437,7 @@ msgstr "Vous quittez BookWyrm"
#: bookwyrm/templates/book/file_links/verification_modal.html:11
#, python-format
msgid "This link is taking you to: %(link_url)s
. Is that where you'd like to go?"
-msgstr "Ce lien vous amène à %(link_url)s
. Est-ce là que vous souhaitez aller ?"
+msgstr "Ce lien vous amène à %(link_url)s
. Est‑ce là que vous souhaitez aller ?"
#: bookwyrm/templates/book/file_links/verification_modal.html:26
#: bookwyrm/templates/setup/config.html:139
@@ -1470,6 +1478,19 @@ msgstr "Publié par %(publisher)s."
msgid "rated it"
msgstr "l’a noté"
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr "Séries par"
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr "Livre %(series_number)s"
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr "Livre hors classement"
+
#: 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."
@@ -1664,7 +1685,7 @@ msgstr "%(username)s a cité un passage de spoiler alert "
-msgstr "Si votre critique ou commentaire peut gâcher la lecture du livre pour quelqu'un qui ne l'a pas encore lu, vous pouvez cacher votre message derrière une alerte de spoiler "
+msgstr "Si votre critique ou commentaire peut gâcher la lecture du livre pour quelqu’un qui ne l’a pas encore lu, vous pouvez cacher votre message derrière une alerte de spoiler "
#: bookwyrm/templates/guided_tour/book.html:200
msgid "Spoiler alerts"
@@ -2299,7 +2330,7 @@ msgstr "Avertissement de spoiler"
#: bookwyrm/templates/guided_tour/book.html:224
msgid "Choose who can see your post here. Post privacy can be Public (everyone can see), Unlisted (everyone can see, but it doesn't appear in public feeds or discovery pages), Followers (only your followers can see), or Private (only you can see)"
-msgstr "Choisissez ici qui peut voir votre message. La confidentialité des publications peut être publique (tout le monde peut voir), non listée (tout le monde peut voir, mais ça n'apparaît pas dans les flux publics ou les pages de découverte), Abonnés (seuls vos abonné·es peuvent voir), ou Privé (seulement vous pouvez voir)"
+msgstr "Choisissez ici qui peut voir votre message. La confidentialité d’une publication peut être publique (tout le monde peut voir), non listée (tout le monde peut voir, mais elle n’apparaît pas dans les flux publics ou les pages de découverte), Abonnés (seuls vos abonné·es peuvent voir), ou Privé (seulement vous pouvez la voir)"
#: bookwyrm/templates/guided_tour/book.html:225
#: bookwyrm/templates/snippets/privacy_select.html:6
@@ -2355,7 +2386,7 @@ msgstr "Membres du groupe"
#: bookwyrm/templates/guided_tour/group.html:77
msgid "As well as creating lists from the Lists page, you can create a group-curated list here on the group's homepage. Any member of the group can create a list curated by group members."
-msgstr "En plus de créer des listes à partir de la page Listes, vous pouvez créer une liste ici sur la page d'accueil du groupe. Tout membre du groupe peut créer une liste. Les listes sont gérées par les membres du groupe."
+msgstr "En plus de créer des listes à partir de la page Listes, vous pouvez créer une liste sur l’actuelle page d’accueil du groupe. Tout membre du groupe peut créer une liste. Les listes sont gérées par les membres du groupe."
#: bookwyrm/templates/guided_tour/group.html:78
msgid "Group lists"
@@ -2363,7 +2394,7 @@ msgstr "Listes de groupe"
#: bookwyrm/templates/guided_tour/group.html:100
msgid "Congratulations, you've finished the tour! Now you know the basics, but there is lots more to explore on your own. Happy reading!"
-msgstr "Félicitations, vous avez terminé la visite ! Maintenant vous connaissez les bases, mais il y a beaucoup plus à découvrir par vous-même. Bonne lecture !"
+msgstr "Félicitations, vous avez terminé la visite ! Maintenant vous connaissez les bases, mais il y a beaucoup plus à découvrir par vous‑même. Bonne lecture !"
#: bookwyrm/templates/guided_tour/group.html:115
msgid "End tour"
@@ -2402,7 +2433,7 @@ msgstr "Zone de recherche"
#: bookwyrm/templates/guided_tour/home.html:79
msgid "Search book records by scanning an ISBN barcode using your device's camera - great when you're in the bookstore or library!"
-msgstr "Recherchez parmi les livres en scannant un code barres ISBN avec l'appareil photo de votre téléphone, c’est la solution idéale depuis une librairie ou une bibliothèque !"
+msgstr "Recherchez parmi les livres en scannant un code barres ISBN avec l’appareil photo de votre téléphone, c’est la solution idéale depuis une librairie ou une bibliothèque !"
#: bookwyrm/templates/guided_tour/home.html:80
msgid "Barcode reader"
@@ -2433,8 +2464,8 @@ msgid "The bell will light up when you have a new notification. When it does, cl
msgstr "La cloche s'allumera quand vous aurez une nouvelle notification. Quand elle sera activée, cliquez dessus pour savoir ce qui s'est passé !"
#: bookwyrm/templates/guided_tour/home.html:177
-#: bookwyrm/templates/layout.html:75 bookwyrm/templates/layout.html:107
-#: bookwyrm/templates/layout.html:108
+#: bookwyrm/templates/layout.html:75 bookwyrm/templates/layout.html:106
+#: bookwyrm/templates/layout.html:107
#: bookwyrm/templates/notifications/notifications_page.html:5
#: bookwyrm/templates/notifications/notifications_page.html:10
msgid "Notifications"
@@ -2585,7 +2616,7 @@ msgstr "Importer depuis un autre service"
#: bookwyrm/templates/guided_tour/user_books.html:101
msgid "Now that we've explored book shelves, let's take a look at a related concept: book lists!"
-msgstr "Maintenant que nous avons exploré des étagères de livres, regardons un concept connexe : les listes de livres !"
+msgstr "Maintenant que nous avons exploré des étagères de livres, regardons un concept connexe : les listes de livres !"
#: bookwyrm/templates/guided_tour/user_books.html:101
msgid "Click on the Lists link here to continue the tour."
@@ -2603,7 +2634,7 @@ msgstr "Groupes"
#: bookwyrm/templates/guided_tour/user_groups.html:31
msgid "Let's create a new group!"
-msgstr "Créons un nouveau groupe !"
+msgstr "Créons un nouveau groupe !"
#: bookwyrm/templates/guided_tour/user_groups.html:31
msgid "Click the Create group button, then Next to continue the tour"
@@ -2648,7 +2679,7 @@ msgstr "Profil"
#: bookwyrm/templates/guided_tour/user_profile.html:31
msgid "This tab shows everything you have read towards your annual reading goal, or allows you to set one. You don't have to set a reading goal if that's not your thing!"
-msgstr "Cet onglet montre tout ce que vous avez lu pour atteindre votre objectif de lecture annuel, ou vous permet d'en définir un. Vous n'avez pas à définir un objectif de lecture si c’est pas votre truc !"
+msgstr "Cet onglet montre tout ce que vous avez lu pour atteindre votre objectif de lecture annuel, ou vous permet d’en définir un. Vous n’avez pas à définir un objectif de lecture si ce n’est pas votre truc !"
#: bookwyrm/templates/guided_tour/user_profile.html:32
#: bookwyrm/templates/user/layout.html:77
@@ -2665,7 +2696,7 @@ msgstr "Là, vous pouvez voir vos listes, ou en créer une nouvelle. Une liste e
#: bookwyrm/templates/guided_tour/user_profile.html:100
msgid "The Books tab shows your book shelves. We'll explore this later in the tour."
-msgstr "L'onglet Livres montre vos étagères de livres. Nous l'explorerons plus tard dans la visite."
+msgstr "L’onglet Livres montre vos étagères de livres. Nous l’explorerons plus tard dans la visite."
#: bookwyrm/templates/guided_tour/user_profile.html:123
msgid "Now you understand the basics of your profile page, let's add a book to your shelves."
@@ -2679,6 +2710,15 @@ msgstr "Recherchez un titre ou un auteur pour continuer la visite."
msgid "Find a book"
msgstr "Trouver un livre"
+#: bookwyrm/templates/hashtag.html:12
+#, python-format
+msgid "See tagged statuses in the local %(site_name)s community"
+msgstr "Voir les statuts avec étiquette dans la communauté %(site_name)s locale"
+
+#: bookwyrm/templates/hashtag.html:25
+msgid "No activities for this hashtag yet!"
+msgstr "Pas encore d’activité pour ce hashtag !"
+
#: bookwyrm/templates/import/import.html:5
#: bookwyrm/templates/import/import.html:9
#: bookwyrm/templates/shelf/shelf.html:64
@@ -2758,7 +2798,7 @@ msgstr "Importer"
#: bookwyrm/templates/import/import.html:103
msgid "You've reached the import limit."
-msgstr "Vous avez atteint la limite d'imports."
+msgstr "Vous avez atteint la limite d’imports."
#: bookwyrm/templates/import/import.html:112
msgid "Imports are temporarily disabled; thank you for your patience."
@@ -2798,7 +2838,7 @@ msgid "Retry Status"
msgstr "Statut de la nouvelle tentative"
#: bookwyrm/templates/import/import_status.html:22
-#: bookwyrm/templates/settings/celery.html:36
+#: bookwyrm/templates/settings/celery.html:44
#: bookwyrm/templates/settings/imports/imports.html:6
#: bookwyrm/templates/settings/imports/imports.html:9
#: bookwyrm/templates/settings/layout.html:82
@@ -3022,7 +3062,7 @@ msgid "Login"
msgstr "Connexion"
#: bookwyrm/templates/landing/login.html:7
-#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:139
+#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:136
#: bookwyrm/templates/ostatus/error.html:37
msgid "Log in"
msgstr "Se connecter"
@@ -3033,7 +3073,7 @@ msgstr "Bravo ! L’adresse email a été confirmée."
#: bookwyrm/templates/landing/login.html:21
#: bookwyrm/templates/landing/reactivate.html:17
-#: bookwyrm/templates/layout.html:130 bookwyrm/templates/ostatus/error.html:28
+#: bookwyrm/templates/layout.html:127 bookwyrm/templates/ostatus/error.html:28
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
msgstr "Nom du compte :"
@@ -3041,13 +3081,13 @@ msgstr "Nom du compte :"
#: bookwyrm/templates/landing/login.html:27
#: bookwyrm/templates/landing/password_reset.html:26
#: bookwyrm/templates/landing/reactivate.html:23
-#: bookwyrm/templates/layout.html:134 bookwyrm/templates/ostatus/error.html:32
+#: bookwyrm/templates/layout.html:131 bookwyrm/templates/ostatus/error.html:32
#: bookwyrm/templates/preferences/2fa.html:91
#: bookwyrm/templates/snippets/register_form.html:45
msgid "Password:"
msgstr "Mot de passe :"
-#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:136
+#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:133
#: bookwyrm/templates/ostatus/error.html:34
msgid "Forgot your password?"
msgstr "Mot de passe oublié ?"
@@ -3090,35 +3130,35 @@ msgstr "Réactiver le compte"
msgid "%(site_name)s search"
msgstr "Recherche %(site_name)s"
-#: bookwyrm/templates/layout.html:36
+#: bookwyrm/templates/layout.html:37
msgid "Search for a book, user, or list"
msgstr "Rechercher un livre, un utilisateur ou une liste"
-#: bookwyrm/templates/layout.html:51 bookwyrm/templates/layout.html:52
+#: bookwyrm/templates/layout.html:52 bookwyrm/templates/layout.html:53
msgid "Scan Barcode"
msgstr "Scanner le code-barres"
-#: bookwyrm/templates/layout.html:66
+#: bookwyrm/templates/layout.html:67
msgid "Main navigation menu"
msgstr "Menu de navigation principal "
-#: bookwyrm/templates/layout.html:88
+#: bookwyrm/templates/layout.html:87
msgid "Feed"
msgstr "Fil d’actualité"
-#: bookwyrm/templates/layout.html:135 bookwyrm/templates/ostatus/error.html:33
+#: bookwyrm/templates/layout.html:132 bookwyrm/templates/ostatus/error.html:33
msgid "password"
msgstr "Mot de passe"
-#: bookwyrm/templates/layout.html:147
+#: bookwyrm/templates/layout.html:144
msgid "Join"
msgstr "Rejoindre"
-#: bookwyrm/templates/layout.html:181
+#: bookwyrm/templates/layout.html:179
msgid "Successfully posted status"
msgstr "Publié !"
-#: bookwyrm/templates/layout.html:182
+#: bookwyrm/templates/layout.html:180
msgid "Error posting status"
msgstr "Erreur lors de la publication"
@@ -3228,7 +3268,7 @@ msgstr "N’importe qui peut suggérer des livres, soumis à votre approbation"
#: bookwyrm/templates/lists/form.html:65
msgctxt "curation type"
msgid "Open"
-msgstr "Ouvrir"
+msgstr "Ouverte"
#: bookwyrm/templates/lists/form.html:68
msgid "Anyone can add books to this list"
@@ -3252,7 +3292,7 @@ msgstr "Sélectionner un groupe"
#: bookwyrm/templates/lists/form.html:105
msgid "You don't have any Groups yet!"
-msgstr "Vous n'avez pas encore de Groupe !"
+msgstr "Vous n’avez pas encore de Groupe !"
#: bookwyrm/templates/lists/form.html:107
msgid "Create a Group"
@@ -3597,6 +3637,13 @@ msgstr "%(related_user)s et %(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
msgstr "%(related_user)s et %(other_user_display_count)s autres ont quitté votre groupe \"%(group_name)s \""
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] "Un nouveau domaine lié est en attente de modération"
+msgstr[1] "%(display_count)s nouveaux domaines liés sont en attente de modération"
+
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
msgid "%(related_user)s mentioned you in a review of %(book_title)s "
@@ -3708,7 +3755,7 @@ msgstr "Le compte %(account)s n’a pas pu être trouvé ou %(account)s was found but %(remote_domain)s
does not support 'remote follow'"
-msgstr "Le compte %(account)s a été trouvé mais %(remote_domain)s
ne supporte pas le “suivi à distance”"
+msgstr "Le compte %(account)s a été trouvé mais %(remote_domain)s
ne supporte pas le « suivi à distance »"
#: bookwyrm/templates/ostatus/error.html:18
#, python-format
@@ -3792,7 +3839,7 @@ msgstr "Oups…"
#: bookwyrm/templates/ostatus/subscribe.html:20
msgid "Let's log in first..."
-msgstr "Connectez-vous d'abord…"
+msgstr "Connectez‑vous d’abord…"
#: bookwyrm/templates/ostatus/subscribe.html:51
#, python-format
@@ -4005,6 +4052,11 @@ msgstr "Cacher les comptes abonnés et suivis sur le profil"
msgid "Default post privacy:"
msgstr "Niveau de confidentialité des messages par défaut :"
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr "Vous souhaitez protéger vos étagères ? Vous pouvez définir un niveau de visibilité différent pour chacune d’elles. Allez dans Vos Livres , choisissez une étagère parmi les onglets, puis cliquez sur « Modifier l’étagère »."
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4144,7 +4196,7 @@ msgstr "En attente de la caméra…"
#: bookwyrm/templates/search/barcode_modal.html:22
msgid "Grant access to the camera to scan a book's barcode."
-msgstr "Autorisez l’accès à la caméra pour scanner le code-barres d’un livre."
+msgstr "Autorisez l’accès à l’appareil photo pour scanner le code‑barres d’un livre."
#: bookwyrm/templates/search/barcode_modal.html:27
msgid "Could not access camera"
@@ -4157,7 +4209,7 @@ msgstr "Scan en cours…"
#: bookwyrm/templates/search/barcode_modal.html:32
msgid "Align your book's barcode with the camera."
-msgstr "Alignez le code-barres de votre livre avec la caméra."
+msgstr "Alignez le code‑barres de votre livre avec l’appareil photo."
#: bookwyrm/templates/search/barcode_modal.html:36
msgctxt "barcode scanner"
@@ -4430,63 +4482,80 @@ msgid "Celery Status"
msgstr "Statut de Celery"
#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr "Vous pouvez mettre en place une surveillance de l’état de Celery en requêtant :"
+
+#: bookwyrm/templates/settings/celery.html:22
msgid "Queues"
msgstr "Queues"
-#: bookwyrm/templates/settings/celery.html:18
+#: bookwyrm/templates/settings/celery.html:26
msgid "Low priority"
msgstr "Priorité basse"
-#: bookwyrm/templates/settings/celery.html:24
+#: bookwyrm/templates/settings/celery.html:32
msgid "Medium priority"
msgstr "Priorité moyenne"
-#: bookwyrm/templates/settings/celery.html:30
+#: bookwyrm/templates/settings/celery.html:38
msgid "High priority"
msgstr "Priorité élevée"
-#: bookwyrm/templates/settings/celery.html:46
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr "Diffusion"
+
+#: bookwyrm/templates/settings/celery.html:60
msgid "Could not connect to Redis broker"
msgstr "Connexion au broker Redis impossible"
-#: bookwyrm/templates/settings/celery.html:54
+#: bookwyrm/templates/settings/celery.html:68
msgid "Active Tasks"
msgstr "Tâches actives"
-#: bookwyrm/templates/settings/celery.html:59
+#: bookwyrm/templates/settings/celery.html:73
#: bookwyrm/templates/settings/imports/imports.html:113
msgid "ID"
msgstr "ID"
-#: bookwyrm/templates/settings/celery.html:60
+#: bookwyrm/templates/settings/celery.html:74
msgid "Task name"
msgstr "Nom de la tâche"
-#: bookwyrm/templates/settings/celery.html:61
+#: bookwyrm/templates/settings/celery.html:75
msgid "Run time"
msgstr "Durée"
-#: bookwyrm/templates/settings/celery.html:62
+#: bookwyrm/templates/settings/celery.html:76
msgid "Priority"
msgstr "Priorité"
-#: bookwyrm/templates/settings/celery.html:67
+#: bookwyrm/templates/settings/celery.html:81
msgid "No active tasks"
msgstr "Aucune tâche active"
-#: bookwyrm/templates/settings/celery.html:85
+#: bookwyrm/templates/settings/celery.html:99
msgid "Workers"
msgstr "Workers"
-#: bookwyrm/templates/settings/celery.html:90
+#: bookwyrm/templates/settings/celery.html:104
msgid "Uptime:"
msgstr "Uptime :"
-#: bookwyrm/templates/settings/celery.html:100
+#: bookwyrm/templates/settings/celery.html:114
msgid "Could not connect to Celery"
msgstr "Impossible de se connecter à Celery"
-#: bookwyrm/templates/settings/celery.html:107
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr "Vider les files d’attente"
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr "Vider les files d’attente peut causer de graves problèmes, dont des pertes de données ! Ne faites cela qu’en connaissance de cause. Vous devez au préalable arrêter le service Celery."
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr "Erreurs"
@@ -4596,7 +4665,7 @@ msgstr[1] "%(display_count)s signalements ouverts"
#: bookwyrm/templates/settings/dashboard/warnings/update_version.html:8
#, python-format
msgid "An update is available! You're running v%(current)s and the latest release is %(available)s."
-msgstr "Une mise à jour est disponible ! Vous utilisez la version%(current)s et la dernière version est %(available)s."
+msgstr "Une mise à jour est disponible ! Vous utilisez la version%(current)s et la dernière version est %(available)s."
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:5
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:10
@@ -4851,8 +4920,8 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr "Ceci n'est destiné à être utilisé que lorsque la situation des importations est catastrophique et que vous devez suspendre cette fonctionnalité le temps de résoudre les problèmes."
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
-msgstr "Tant que les importations sont désactivées, les utilisateurs ne seront pas autorisés à commencer de nouvelles importations, mais les importations existantes ne seront pas affectées."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
+msgstr "Tant que les importations seront désactivées, les utilisateur⋅ices ne pourront pas en commencer de nouvelles, mais celles existantes ne seront pas affectées."
#: bookwyrm/templates/settings/imports/imports.html:36
msgid "Disable imports"
@@ -5685,11 +5754,11 @@ msgstr "Voir les instructions d'installation"
msgid "Instance Setup"
msgstr "Configuration de l’instance"
-#: bookwyrm/templates/setup/layout.html:19
+#: bookwyrm/templates/setup/layout.html:21
msgid "Installing BookWyrm"
msgstr "Installation de BookWyrm"
-#: bookwyrm/templates/setup/layout.html:22
+#: bookwyrm/templates/setup/layout.html:24
msgid "Need help?"
msgstr "Besoin d’aide ?"
@@ -5707,7 +5776,7 @@ msgid "User profile"
msgstr "Profil utilisateur·rice"
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr "Tous les livres"
@@ -5781,7 +5850,7 @@ msgid_plural "and %(remainder_count_display)s others"
msgstr[0] "et %(remainder_count_display)s autre"
msgstr[1] "et %(remainder_count_display)s autres"
-#: bookwyrm/templates/snippets/book_cover.html:61
+#: bookwyrm/templates/snippets/book_cover.html:63
msgid "No cover"
msgstr "Pas de couverture"
@@ -5867,7 +5936,7 @@ msgstr "Citation :"
#: bookwyrm/templates/snippets/create_status/quotation.html:24
#, python-format
msgid "An excerpt from '%(book_title)s'"
-msgstr "Un extrait de '%(book_title)s'"
+msgstr "Un extrait de « %(book_title)s »"
#: bookwyrm/templates/snippets/create_status/quotation.html:31
msgid "Position:"
@@ -5881,10 +5950,14 @@ msgstr "À la page :"
msgid "At percent:"
msgstr "Au pourcentage :"
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr "à"
+
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
-msgstr "Votre critique de '%(book_title)s'"
+msgstr "Votre critique de « %(book_title)s »"
#: bookwyrm/templates/snippets/create_status/review.html:39
msgid "Review:"
@@ -6059,10 +6132,18 @@ msgstr "page %(page)s sur %(total_pages)s pages"
msgid "page %(page)s"
msgstr "page %(page)s"
-#: bookwyrm/templates/snippets/pagination.html:12
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr "Plus récent"
+
+#: bookwyrm/templates/snippets/pagination.html:15
msgid "Previous"
msgstr "Précédente"
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr "Plus ancien"
+
#: bookwyrm/templates/snippets/privacy-icons.html:12
msgid "Followers-only"
msgstr "Abonnemé(e)s uniquement"
@@ -6191,19 +6272,29 @@ msgstr "Afficher le statut"
#: bookwyrm/templates/snippets/status/content_status.html:102
#, python-format
-msgid "(Page %(page)s)"
-msgstr "(Page %(page)s)"
+msgid "(Page %(page)s"
+msgstr "(Page %(page)s"
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr "%(endpage)s"
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid "(%(percent)s%%"
+msgstr "(%(percent)s%%"
#: bookwyrm/templates/snippets/status/content_status.html:104
#, python-format
-msgid "(%(percent)s%%)"
-msgstr "(%(percent)s%%)"
+msgid " - %(endpercent)s%%"
+msgstr " - %(endpercent)s%%"
#: bookwyrm/templates/snippets/status/content_status.html:127
msgid "Open image in new window"
msgstr "Ouvrir l’image dans une nouvelle fenêtre"
-#: bookwyrm/templates/snippets/status/content_status.html:146
+#: bookwyrm/templates/snippets/status/content_status.html:148
msgid "Hide status"
msgstr "Masquer le statut"
diff --git a/locale/gl_ES/LC_MESSAGES/django.mo b/locale/gl_ES/LC_MESSAGES/django.mo
index ba231a7af3..d99a045d3c 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 ce02143620..bc13ac35e5 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: 2023-01-30 08:21+0000\n"
-"PO-Revision-Date: 2023-03-09 14:35\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-04-26 03:08\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Galician\n"
"Language: gl\n"
@@ -46,7 +46,7 @@ msgstr "Sen límite"
msgid "Incorrect password"
msgstr "Contrasinal incorrecto"
-#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
msgid "Password does not match"
msgstr "O contrasinal non concorda"
@@ -70,19 +70,19 @@ msgstr "A data de abandono da lectura non pode estar no futuro."
msgid "Reading finished date cannot be in the future."
msgstr "A data de fin da lectura non pode ser futura."
-#: bookwyrm/forms/landing.py:37
+#: bookwyrm/forms/landing.py:38
msgid "Username or password are incorrect"
msgstr "As credenciais non son correctas"
-#: bookwyrm/forms/landing.py:56
+#: bookwyrm/forms/landing.py:57
msgid "User with this username already exists"
msgstr "Xa existe unha usuaria con este identificador"
-#: bookwyrm/forms/landing.py:65
+#: bookwyrm/forms/landing.py:66
msgid "A user with this email already exists."
msgstr "Xa existe unha usuaria con este email."
-#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
msgid "Incorrect code"
msgstr "Código incorrecto"
@@ -185,11 +185,11 @@ msgstr "Novela gráfica"
#: bookwyrm/models/book.py:275
msgid "Hardcover"
-msgstr "Portada dura"
+msgstr "Tapa dura"
#: bookwyrm/models/book.py:276
msgid "Paperback"
-msgstr "En rústica"
+msgstr "Libro de bolso"
#: bookwyrm/models/federated_server.py:11
#: bookwyrm/templates/settings/federation/edit_instance.html:55
@@ -205,26 +205,26 @@ msgstr "Federado"
msgid "Blocked"
msgstr "Bloqueado"
-#: bookwyrm/models/fields.py:28
+#: bookwyrm/models/fields.py:29
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s non é un remote_id válido"
-#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s non é un nome de usuaria válido"
-#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "identificador"
-#: bookwyrm/models/fields.py:187
+#: bookwyrm/models/fields.py:197
msgid "A user with that username already exists."
msgstr "Xa existe unha usuaria con ese identificador."
-#: bookwyrm/models/fields.py:206
+#: bookwyrm/models/fields.py:216
#: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11
@@ -232,7 +232,7 @@ msgstr "Xa existe unha usuaria con ese identificador."
msgid "Public"
msgstr "Público"
-#: bookwyrm/models/fields.py:207
+#: bookwyrm/models/fields.py:217
#: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14
@@ -240,14 +240,14 @@ msgstr "Público"
msgid "Unlisted"
msgstr "Non listado"
-#: bookwyrm/models/fields.py:208
+#: bookwyrm/models/fields.py:218
#: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers"
msgstr "Seguidoras"
-#: bookwyrm/models/fields.py:209
+#: bookwyrm/models/fields.py:219
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
@@ -275,11 +275,11 @@ msgstr "Detida"
msgid "Import stopped"
msgstr "Importación detida"
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr "Erro ao cargar o libro"
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr "Non se atopan coincidencias para o libro"
@@ -300,7 +300,7 @@ msgstr "Dispoñible para aluguer"
msgid "Approved"
msgstr "Aprobado"
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr "Recensións"
@@ -316,19 +316,19 @@ msgstr "Citas"
msgid "Everything else"
msgstr "As outras cousas"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr "Cronoloxía de Inicio"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr "Inicio"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr "Cronoloxía de libros"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -336,75 +336,79 @@ msgstr "Cronoloxía de libros"
msgid "Books"
msgstr "Libros"
-#: bookwyrm/settings.py:290
+#: bookwyrm/settings.py:294
msgid "English"
msgstr "English (Inglés)"
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr "Català (Catalan)"
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr "Deutsch (Alemán)"
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr "Esperanto (Esperanto)"
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr "Español (Español)"
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
msgstr "Euskara (Éuscaro)"
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr "Galego (Galego)"
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr "Italiano (Italiano)"
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr "Suomi (Finés)"
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr "Français (Francés)"
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr "Lietuvių (Lituano)"
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr "Norsk (Noruegués)"
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr "Polski (Polaco)"
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr "Português do Brasil (Portugués brasileiro)"
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Portugués europeo)"
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr "Română (Rumanés)"
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr "Svenska (Sueco)"
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr "简体中文 (Chinés simplificado)"
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr "繁體中文 (Chinés tradicional)"
@@ -434,7 +438,7 @@ msgid "About"
msgstr "Acerca de"
#: bookwyrm/templates/about/about.html:21
-#: bookwyrm/templates/get_started/layout.html:20
+#: bookwyrm/templates/get_started/layout.html:22
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "Sexas ben vida a %(site_name)s!"
@@ -620,7 +624,7 @@ msgstr "A lectura máis curta deste ano…"
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -708,24 +712,24 @@ msgid "View ISNI record"
msgstr "Ver rexistro ISNI"
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:164
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
msgstr "Ver en ISFDB"
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:131
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Cargar datos"
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:135
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr "Ver en OpenLibrary"
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:149
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr "Ver en Inventaire"
@@ -834,15 +838,15 @@ msgid "ISNI:"
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:209
-#: bookwyrm/templates/book/edit/edit_book.html:142
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
#: bookwyrm/templates/groups/form.html:32
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -858,10 +862,10 @@ msgstr "Gardar"
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:210
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
-#: bookwyrm/templates/book/edit/edit_book.html:144
-#: bookwyrm/templates/book/edit/edit_book.html:147
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:25
#: bookwyrm/templates/book/sync_modal.html:23
@@ -885,7 +889,7 @@ msgid "Loading data will connect to %(source_name)s and check f
msgstr "Ao cargar os datos vas conectar con %(source_name)s e comprobar se existen metadatos desta persoa autora que non están aquí presentes. Non se sobrescribirán os datos existentes."
#: bookwyrm/templates/author/sync_modal.html:24
-#: bookwyrm/templates/book/edit/edit_book.html:129
+#: bookwyrm/templates/book/edit/edit_book.html:137
#: bookwyrm/templates/book/sync_modal.html:24
#: bookwyrm/templates/groups/members.html:29
#: bookwyrm/templates/landing/password_reset.html:52
@@ -895,98 +899,98 @@ msgstr "Ao cargar os datos vas conectar con %(source_name)s e c
msgid "Confirm"
msgstr "Confirmar"
-#: bookwyrm/templates/book/book.html:19
+#: bookwyrm/templates/book/book.html:20
msgid "Unable to connect to remote source."
msgstr "Non se pode conectar coa fonte remota."
-#: bookwyrm/templates/book/book.html:64 bookwyrm/templates/book/book.html:65
+#: bookwyrm/templates/book/book.html:71 bookwyrm/templates/book/book.html:72
msgid "Edit Book"
msgstr "Editar libro"
-#: bookwyrm/templates/book/book.html:88 bookwyrm/templates/book/book.html:91
+#: bookwyrm/templates/book/book.html:97 bookwyrm/templates/book/book.html:100
msgid "Click to add cover"
msgstr "Preme para engadir portada"
-#: bookwyrm/templates/book/book.html:97
+#: bookwyrm/templates/book/book.html:106
msgid "Failed to load cover"
msgstr "Fallou a carga da portada"
-#: bookwyrm/templates/book/book.html:108
+#: bookwyrm/templates/book/book.html:117
msgid "Click to enlarge"
msgstr "Preme para agrandar"
-#: bookwyrm/templates/book/book.html:186
+#: bookwyrm/templates/book/book.html:195
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
msgstr[0] "(%(review_count)s recensión)"
msgstr[1] "(%(review_count)s recensións)"
-#: bookwyrm/templates/book/book.html:198
+#: bookwyrm/templates/book/book.html:207
msgid "Add Description"
msgstr "Engadir descrición"
-#: bookwyrm/templates/book/book.html:205
+#: bookwyrm/templates/book/book.html:214
#: bookwyrm/templates/book/edit/edit_book_form.html:42
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "Descrición:"
-#: bookwyrm/templates/book/book.html:221
+#: bookwyrm/templates/book/book.html:230
#, python-format
msgid "%(count)s edition"
msgid_plural "%(count)s editions"
msgstr[0] "%(count)s edición"
msgstr[1] "%(count)s edicións"
-#: bookwyrm/templates/book/book.html:235
+#: bookwyrm/templates/book/book.html:244
msgid "You have shelved this edition in:"
msgstr "Puxeches esta edición no estante:"
-#: bookwyrm/templates/book/book.html:250
+#: bookwyrm/templates/book/book.html:259
#, python-format
msgid "A different edition of this book is on your %(shelf_name)s shelf."
msgstr "Hai unha edición diferente deste libro no teu estante %(shelf_name)s ."
-#: bookwyrm/templates/book/book.html:261
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr "Actividade lectora"
-#: bookwyrm/templates/book/book.html:267
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr "Engadir datas de lectura"
-#: bookwyrm/templates/book/book.html:275
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr "Non tes actividade lectora neste libro."
-#: bookwyrm/templates/book/book.html:301
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr "As túas recensións"
-#: bookwyrm/templates/book/book.html:307
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr "Os teus comentarios"
-#: bookwyrm/templates/book/book.html:313
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr "As túas citas"
-#: bookwyrm/templates/book/book.html:349
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr "Temas"
-#: bookwyrm/templates/book/book.html:361
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr "Lugares"
-#: bookwyrm/templates/book/book.html:372
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
-#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@@ -995,11 +999,11 @@ msgstr "Lugares"
msgid "Lists"
msgstr "Listas"
-#: bookwyrm/templates/book/book.html:384
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr "Engadir á lista"
-#: bookwyrm/templates/book/book.html:394
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1059,8 +1063,8 @@ msgstr "Vista previa da portada"
#: bookwyrm/templates/components/modal.html:13
#: bookwyrm/templates/components/modal.html:30
#: bookwyrm/templates/feed/suggested_books.html:67
-#: bookwyrm/templates/get_started/layout.html:25
-#: bookwyrm/templates/get_started/layout.html:58
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
msgid "Close"
msgstr "Pechar"
@@ -1075,47 +1079,51 @@ msgstr "Editar \"%(book_title)s\""
msgid "Add Book"
msgstr "Engadir libro"
-#: bookwyrm/templates/book/edit/edit_book.html:62
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr "Non se gardou o libro, mira embaixo os erros para máis información."
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
msgid "Confirm Book Info"
msgstr "Confirma info do libro"
-#: bookwyrm/templates/book/edit/edit_book.html:70
+#: bookwyrm/templates/book/edit/edit_book.html:78
#, python-format
msgid "Is \"%(name)s\" one of these authors?"
msgstr "É \"%(name)s\" un destas autoras?"
-#: bookwyrm/templates/book/edit/edit_book.html:81
+#: bookwyrm/templates/book/edit/edit_book.html:89
#, python-format
msgid "Author of %(book_title)s "
msgstr "Autora de %(book_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:85
+#: bookwyrm/templates/book/edit/edit_book.html:93
#, python-format
msgid "Author of %(alt_title)s "
msgstr "Autora de %(alt_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:87
+#: bookwyrm/templates/book/edit/edit_book.html:95
msgid "Find more information at isni.org"
msgstr "Atopa máis información en isni.org"
-#: bookwyrm/templates/book/edit/edit_book.html:97
+#: bookwyrm/templates/book/edit/edit_book.html:105
msgid "This is a new author"
msgstr "Esta é unha nova autora"
-#: bookwyrm/templates/book/edit/edit_book.html:107
+#: bookwyrm/templates/book/edit/edit_book.html:115
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "Creando nova autora: %(name)s"
-#: bookwyrm/templates/book/edit/edit_book.html:114
+#: bookwyrm/templates/book/edit/edit_book.html:122
msgid "Is this an edition of an existing work?"
msgstr "É esta a edición dun traballo existente?"
-#: bookwyrm/templates/book/edit/edit_book.html:122
+#: bookwyrm/templates/book/edit/edit_book.html:130
msgid "This is a new work"
msgstr "Este é un novo traballo"
-#: bookwyrm/templates/book/edit/edit_book.html:131
+#: bookwyrm/templates/book/edit/edit_book.html:139
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
@@ -1470,6 +1478,19 @@ msgstr "Publicado por %(publisher)s."
msgid "rated it"
msgstr "valorouno"
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr "Unha Serie de"
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr "Libro %(series_number)s"
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr "Libro non ordenado"
+
#: 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."
@@ -1664,7 +1685,7 @@ msgstr "%(username)s citou %(related_user)s e %(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
msgstr "%(related_user)s e outras %(other_user_display_count)s persoas deixaron o grupo \"%(group_name)s \""
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] "Hai un novo dominio que revisar"
+msgstr[1] "Hai %(display_count)s novos dominios que revisar"
+
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
msgid "%(related_user)s mentioned you in a review of %(book_title)s "
@@ -4005,6 +4052,11 @@ msgstr "Agochar relacións de seguimento no perfil"
msgid "Default post privacy:"
msgstr "Privacidade por defecto:"
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr "Queres privacidade para os estantes? Podes establecer individualmente o nivel de privacidade dos estantes. Vai a Os teus libros , elixe un estante das seccións, e preme en \"Editar estante\""
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4430,63 +4482,80 @@ msgid "Celery Status"
msgstr "Estado de Celery"
#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr "Podes configurar a monitorización para comprobar se Celery está a funcionar con:"
+
+#: bookwyrm/templates/settings/celery.html:22
msgid "Queues"
msgstr "Colas"
-#: bookwyrm/templates/settings/celery.html:18
+#: bookwyrm/templates/settings/celery.html:26
msgid "Low priority"
msgstr "Baixa prioridade"
-#: bookwyrm/templates/settings/celery.html:24
+#: bookwyrm/templates/settings/celery.html:32
msgid "Medium priority"
msgstr "Prioridade media"
-#: bookwyrm/templates/settings/celery.html:30
+#: bookwyrm/templates/settings/celery.html:38
msgid "High priority"
msgstr "Alta prioridade"
-#: bookwyrm/templates/settings/celery.html:46
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:60
msgid "Could not connect to Redis broker"
msgstr "Non puido conectar con Redis broker"
-#: bookwyrm/templates/settings/celery.html:54
+#: bookwyrm/templates/settings/celery.html:68
msgid "Active Tasks"
msgstr "Tarefas activas"
-#: bookwyrm/templates/settings/celery.html:59
+#: bookwyrm/templates/settings/celery.html:73
#: bookwyrm/templates/settings/imports/imports.html:113
msgid "ID"
msgstr "ID"
-#: bookwyrm/templates/settings/celery.html:60
+#: bookwyrm/templates/settings/celery.html:74
msgid "Task name"
msgstr "Nome da tarefa"
-#: bookwyrm/templates/settings/celery.html:61
+#: bookwyrm/templates/settings/celery.html:75
msgid "Run time"
msgstr "Tempo de execución"
-#: bookwyrm/templates/settings/celery.html:62
+#: bookwyrm/templates/settings/celery.html:76
msgid "Priority"
msgstr "Prioridade"
-#: bookwyrm/templates/settings/celery.html:67
+#: bookwyrm/templates/settings/celery.html:81
msgid "No active tasks"
msgstr "Nai tarefas activas"
-#: bookwyrm/templates/settings/celery.html:85
+#: bookwyrm/templates/settings/celery.html:99
msgid "Workers"
msgstr "Procesos"
-#: bookwyrm/templates/settings/celery.html:90
+#: bookwyrm/templates/settings/celery.html:104
msgid "Uptime:"
msgstr "Uptime:"
-#: bookwyrm/templates/settings/celery.html:100
+#: bookwyrm/templates/settings/celery.html:114
msgid "Could not connect to Celery"
msgstr "Non hai conexión con Celery"
-#: bookwyrm/templates/settings/celery.html:107
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr "Limpar Colas"
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr "A limpeza das colas pode causar problemas importantes incluíndo perda de datos! Enreda con isto só se realmente sabes o que estás a facer. Deberías apagar Celery antes de facelo."
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr "Erros"
@@ -4851,8 +4920,8 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr "Isto pretende ser útil cando algo funciona realmente mal coas importacións e precisas deter esta ferramenta para intentar resolver o problema."
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
-msgstr "Cando están desactivadas as importacións as usuarias non poderán realizar novas importacións, pero as existentes non se ven afectadas."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
+msgstr "Cando están desactivadas as importacións as usuarias non poderán realizar novas importacións, pero as existentes non se verán afectadas."
#: bookwyrm/templates/settings/imports/imports.html:36
msgid "Disable imports"
@@ -5685,11 +5754,11 @@ msgstr "Ver instruccións de instalación"
msgid "Instance Setup"
msgstr "Axustes da Instancia"
-#: bookwyrm/templates/setup/layout.html:19
+#: bookwyrm/templates/setup/layout.html:21
msgid "Installing BookWyrm"
msgstr "Instalando BookWyrm"
-#: bookwyrm/templates/setup/layout.html:22
+#: bookwyrm/templates/setup/layout.html:24
msgid "Need help?"
msgstr "Precisas axuda?"
@@ -5707,7 +5776,7 @@ msgid "User profile"
msgstr "Perfil da usuaria"
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr "Tódolos libros"
@@ -5781,7 +5850,7 @@ msgid_plural "and %(remainder_count_display)s others"
msgstr[0] "e %(remainder_count_display)s outro"
msgstr[1] "e %(remainder_count_display)s outros"
-#: bookwyrm/templates/snippets/book_cover.html:61
+#: bookwyrm/templates/snippets/book_cover.html:63
msgid "No cover"
msgstr "Sen portada"
@@ -5881,6 +5950,10 @@ msgstr "Na páxina:"
msgid "At percent:"
msgstr "Na porcentaxe:"
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr "para"
+
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
@@ -6059,10 +6132,18 @@ msgstr "páxina %(page)s de %(total_pages)s"
msgid "page %(page)s"
msgstr "páxina %(page)s"
-#: bookwyrm/templates/snippets/pagination.html:12
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr "Máis novo"
+
+#: bookwyrm/templates/snippets/pagination.html:15
msgid "Previous"
msgstr "Anterior"
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr "Máis antigo"
+
#: bookwyrm/templates/snippets/privacy-icons.html:12
msgid "Followers-only"
msgstr "Só seguidoras"
@@ -6191,19 +6272,29 @@ msgstr "Mostrar estado"
#: bookwyrm/templates/snippets/status/content_status.html:102
#, python-format
-msgid "(Page %(page)s)"
-msgstr "(Páxina %(page)s)"
+msgid "(Page %(page)s"
+msgstr "(Páxina %(page)s"
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr "%(endpage)s"
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid "(%(percent)s%%"
+msgstr "(%(percent)s%%"
#: bookwyrm/templates/snippets/status/content_status.html:104
#, python-format
-msgid "(%(percent)s%%)"
-msgstr "(%(percent)s%%)"
+msgid " - %(endpercent)s%%"
+msgstr " - %(endpercent)s%%"
#: bookwyrm/templates/snippets/status/content_status.html:127
msgid "Open image in new window"
msgstr "Abrir imaxe en nova ventá"
-#: bookwyrm/templates/snippets/status/content_status.html:146
+#: bookwyrm/templates/snippets/status/content_status.html:148
msgid "Hide status"
msgstr "Agochar estado"
diff --git a/locale/it_IT/LC_MESSAGES/django.mo b/locale/it_IT/LC_MESSAGES/django.mo
index 09dd8c9cf0..b412b4ba6b 100644
Binary files a/locale/it_IT/LC_MESSAGES/django.mo and b/locale/it_IT/LC_MESSAGES/django.mo differ
diff --git a/locale/it_IT/LC_MESSAGES/django.po b/locale/it_IT/LC_MESSAGES/django.po
index 6faab8f404..2dddecedae 100644
--- a/locale/it_IT/LC_MESSAGES/django.po
+++ b/locale/it_IT/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-01-30 08:21+0000\n"
-"PO-Revision-Date: 2023-03-07 12:09\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-05-01 12:09\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Italian\n"
"Language: it\n"
@@ -46,7 +46,7 @@ msgstr "Illimitato"
msgid "Incorrect password"
msgstr "Password errata"
-#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
msgid "Password does not match"
msgstr "La password non corrisponde"
@@ -70,19 +70,19 @@ msgstr "La data d'interruzione della lettura non può essere nel futuro."
msgid "Reading finished date cannot be in the future."
msgstr "La data di fine lettura non può essere precedente alla data d'inizio."
-#: bookwyrm/forms/landing.py:37
+#: bookwyrm/forms/landing.py:38
msgid "Username or password are incorrect"
msgstr "Nome utente o password errati"
-#: bookwyrm/forms/landing.py:56
+#: bookwyrm/forms/landing.py:57
msgid "User with this username already exists"
msgstr "Esiste già un utente con questo nome utente"
-#: bookwyrm/forms/landing.py:65
+#: bookwyrm/forms/landing.py:66
msgid "A user with this email already exists."
msgstr "Esiste già un'utenza con questo indirizzo email."
-#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
msgid "Incorrect code"
msgstr "Codice errato"
@@ -205,26 +205,26 @@ msgstr "Federato"
msgid "Blocked"
msgstr "Bloccato"
-#: bookwyrm/models/fields.py:28
+#: bookwyrm/models/fields.py:29
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s non è un Id remoto valido"
-#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s non è un nome utente valido"
-#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "nome utente"
-#: bookwyrm/models/fields.py:187
+#: bookwyrm/models/fields.py:197
msgid "A user with that username already exists."
msgstr "Un utente con questo nome utente esiste già."
-#: bookwyrm/models/fields.py:206
+#: bookwyrm/models/fields.py:216
#: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11
@@ -232,7 +232,7 @@ msgstr "Un utente con questo nome utente esiste già."
msgid "Public"
msgstr "Pubblico"
-#: bookwyrm/models/fields.py:207
+#: bookwyrm/models/fields.py:217
#: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14
@@ -240,14 +240,14 @@ msgstr "Pubblico"
msgid "Unlisted"
msgstr "Non in lista"
-#: bookwyrm/models/fields.py:208
+#: bookwyrm/models/fields.py:218
#: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers"
msgstr "Followers"
-#: bookwyrm/models/fields.py:209
+#: bookwyrm/models/fields.py:219
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
@@ -275,11 +275,11 @@ msgstr "Interrotto"
msgid "Import stopped"
msgstr "Importazione interrotta"
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr "Errore nel caricamento del libro"
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr "Impossibile trovare una corrispondenza per il libro"
@@ -300,7 +300,7 @@ msgstr "Disponibile per il prestito"
msgid "Approved"
msgstr "Approvato"
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr "Recensioni"
@@ -316,19 +316,19 @@ msgstr "Citazioni"
msgid "Everything else"
msgstr "Tutto il resto"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr "La tua timeline"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr "Home"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr "Timeline dei libri"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -336,75 +336,79 @@ msgstr "Timeline dei libri"
msgid "Books"
msgstr "Libri"
-#: bookwyrm/settings.py:290
+#: bookwyrm/settings.py:294
msgid "English"
msgstr "English (Inglese)"
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr "Català (catalano)"
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr "Deutsch (Tedesco)"
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr "Esperanto (Esperanto)"
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr "Español (Spagnolo)"
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
msgstr "Euskara (Basque)"
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr "Galego (Galiziano)"
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr "Italiano (Italiano)"
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr "Suomi (Finlandese)"
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr "Français (Francese)"
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr "Lietuvių (Lituano)"
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr "Norsk (Norvegese)"
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr "Polski (Polacco)"
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr "Português do Brasil (Portoghese Brasiliano)"
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Portoghese europeo)"
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr "Rumeno (Romanian)"
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr "Svenska (Svedese)"
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr "简体中文 (Cinese Semplificato)"
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr "繁體中文 (Cinese Tradizionale)"
@@ -434,7 +438,7 @@ msgid "About"
msgstr "Informazioni su"
#: bookwyrm/templates/about/about.html:21
-#: bookwyrm/templates/get_started/layout.html:20
+#: bookwyrm/templates/get_started/layout.html:22
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "Benvenuto su %(site_name)s!"
@@ -620,7 +624,7 @@ msgstr "La loro lettura più breve quest’anno…"
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -708,24 +712,24 @@ msgid "View ISNI record"
msgstr "Visualizza record ISNI"
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:164
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
msgstr "Vedi su ISFDB"
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:131
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Carica dati"
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:135
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr "Visualizza su OpenLibrary"
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:149
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr "Visualizza su Inventaire"
@@ -834,15 +838,15 @@ msgid "ISNI:"
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:209
-#: bookwyrm/templates/book/edit/edit_book.html:142
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
#: bookwyrm/templates/groups/form.html:32
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -858,10 +862,10 @@ msgstr "Salva"
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:210
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
-#: bookwyrm/templates/book/edit/edit_book.html:144
-#: bookwyrm/templates/book/edit/edit_book.html:147
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:25
#: bookwyrm/templates/book/sync_modal.html:23
@@ -885,7 +889,7 @@ msgid "Loading data will connect to %(source_name)s and check f
msgstr "Il caricamento dei dati si collegherà a %(source_name)s e verificherà eventuali metadati relativi a questo autore che non sono presenti qui. I metadati esistenti non vengono sovrascritti."
#: bookwyrm/templates/author/sync_modal.html:24
-#: bookwyrm/templates/book/edit/edit_book.html:129
+#: bookwyrm/templates/book/edit/edit_book.html:137
#: bookwyrm/templates/book/sync_modal.html:24
#: bookwyrm/templates/groups/members.html:29
#: bookwyrm/templates/landing/password_reset.html:52
@@ -895,98 +899,98 @@ msgstr "Il caricamento dei dati si collegherà a %(source_name)s different edition of this book is on your %(shelf_name)s shelf."
msgstr "Una diversa edizione di questo libro è sul tuo scaffale %(shelf_name)s ."
-#: bookwyrm/templates/book/book.html:261
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr "Le tue attività di lettura"
-#: bookwyrm/templates/book/book.html:267
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr "Aggiungi data di lettura"
-#: bookwyrm/templates/book/book.html:275
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr "Non hai alcuna attività di lettura per questo libro."
-#: bookwyrm/templates/book/book.html:301
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr "Le tue recensioni"
-#: bookwyrm/templates/book/book.html:307
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr "I tuoi commenti"
-#: bookwyrm/templates/book/book.html:313
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr "Le tue citazioni"
-#: bookwyrm/templates/book/book.html:349
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr "Argomenti"
-#: bookwyrm/templates/book/book.html:361
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr "Luoghi"
-#: bookwyrm/templates/book/book.html:372
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
-#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@@ -995,11 +999,11 @@ msgstr "Luoghi"
msgid "Lists"
msgstr "Liste"
-#: bookwyrm/templates/book/book.html:384
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr "Aggiungi all'elenco"
-#: bookwyrm/templates/book/book.html:394
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1059,8 +1063,8 @@ msgstr "Anteprima copertina del libro"
#: bookwyrm/templates/components/modal.html:13
#: bookwyrm/templates/components/modal.html:30
#: bookwyrm/templates/feed/suggested_books.html:67
-#: bookwyrm/templates/get_started/layout.html:25
-#: bookwyrm/templates/get_started/layout.html:58
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
msgid "Close"
msgstr "Chiudi"
@@ -1075,47 +1079,51 @@ msgstr "Modifica \"%(book_title)s\""
msgid "Add Book"
msgstr "Aggiungi libro"
-#: bookwyrm/templates/book/edit/edit_book.html:62
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr "Salvataggio del libro non riuscito, vedere gli errori qui sotto per maggiori informazioni."
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
msgid "Confirm Book Info"
msgstr "Conferma informazioni sul libro"
-#: bookwyrm/templates/book/edit/edit_book.html:70
+#: bookwyrm/templates/book/edit/edit_book.html:78
#, python-format
msgid "Is \"%(name)s\" one of these authors?"
msgstr "È \"%(name)s\" uno di questi autori?"
-#: bookwyrm/templates/book/edit/edit_book.html:81
+#: bookwyrm/templates/book/edit/edit_book.html:89
#, python-format
msgid "Author of %(book_title)s "
msgstr "Autore di %(book_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:85
+#: bookwyrm/templates/book/edit/edit_book.html:93
#, python-format
msgid "Author of %(alt_title)s "
msgstr "Autore di %(alt_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:87
+#: bookwyrm/templates/book/edit/edit_book.html:95
msgid "Find more information at isni.org"
msgstr "Trova maggiori informazioni su isni.org"
-#: bookwyrm/templates/book/edit/edit_book.html:97
+#: bookwyrm/templates/book/edit/edit_book.html:105
msgid "This is a new author"
msgstr "Questo è un nuovo autore"
-#: bookwyrm/templates/book/edit/edit_book.html:107
+#: bookwyrm/templates/book/edit/edit_book.html:115
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "Creazione di un nuovo autore: %(name)s"
-#: bookwyrm/templates/book/edit/edit_book.html:114
+#: bookwyrm/templates/book/edit/edit_book.html:122
msgid "Is this an edition of an existing work?"
msgstr "È un'edizione di un'opera esistente?"
-#: bookwyrm/templates/book/edit/edit_book.html:122
+#: bookwyrm/templates/book/edit/edit_book.html:130
msgid "This is a new work"
msgstr "Si tratta di un nuovo lavoro"
-#: bookwyrm/templates/book/edit/edit_book.html:131
+#: bookwyrm/templates/book/edit/edit_book.html:139
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
@@ -1470,6 +1478,19 @@ msgstr "Pubblicato da %(publisher)s."
msgid "rated it"
msgstr "Valuta"
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr "Serie di"
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr "Libro %(series_number)s"
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr "Libro non ordinato"
+
#: 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."
@@ -1664,7 +1685,7 @@ msgstr "%(username)s ha citato %(related_user)s e %(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
msgstr "%(related_user)s e %(other_user_display_count)s altri hanno lasciato il tuo gruppo \"%(group_name)s \""
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] ""
+msgstr[1] ""
+
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
msgid "%(related_user)s mentioned you in a review of %(book_title)s "
@@ -4005,6 +4052,11 @@ msgstr "Nascondi i seguaci e i seguiti sul profilo"
msgid "Default post privacy:"
msgstr "Privacy predefinita dei post:"
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr "Stai cercando la privacy degli scaffali? Puoi impostare un livello di visibilità separato per ciascuno dei tuoi scaffali. Vai a I tuoi libri , scegli uno scaffale dalla barra delle schede e fai clic su \"Modifica scaffale\"."
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4430,63 +4482,80 @@ msgid "Celery Status"
msgstr "Stato di Celery"
#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:22
msgid "Queues"
msgstr "Code"
-#: bookwyrm/templates/settings/celery.html:18
+#: bookwyrm/templates/settings/celery.html:26
msgid "Low priority"
msgstr "Priorità bassa"
-#: bookwyrm/templates/settings/celery.html:24
+#: bookwyrm/templates/settings/celery.html:32
msgid "Medium priority"
msgstr "Priorità media"
-#: bookwyrm/templates/settings/celery.html:30
+#: bookwyrm/templates/settings/celery.html:38
msgid "High priority"
msgstr "Priorità alta"
-#: bookwyrm/templates/settings/celery.html:46
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:60
msgid "Could not connect to Redis broker"
msgstr "Impossibile connettersi al broker Redis"
-#: bookwyrm/templates/settings/celery.html:54
+#: bookwyrm/templates/settings/celery.html:68
msgid "Active Tasks"
msgstr "Processi attivi"
-#: bookwyrm/templates/settings/celery.html:59
+#: bookwyrm/templates/settings/celery.html:73
#: bookwyrm/templates/settings/imports/imports.html:113
msgid "ID"
msgstr "ID"
-#: bookwyrm/templates/settings/celery.html:60
+#: bookwyrm/templates/settings/celery.html:74
msgid "Task name"
msgstr "Nome attività"
-#: bookwyrm/templates/settings/celery.html:61
+#: bookwyrm/templates/settings/celery.html:75
msgid "Run time"
msgstr "Tempo di esecuzione"
-#: bookwyrm/templates/settings/celery.html:62
+#: bookwyrm/templates/settings/celery.html:76
msgid "Priority"
msgstr "Priorità"
-#: bookwyrm/templates/settings/celery.html:67
+#: bookwyrm/templates/settings/celery.html:81
msgid "No active tasks"
msgstr "Nessun processo attivo"
-#: bookwyrm/templates/settings/celery.html:85
+#: bookwyrm/templates/settings/celery.html:99
msgid "Workers"
msgstr "Workers"
-#: bookwyrm/templates/settings/celery.html:90
+#: bookwyrm/templates/settings/celery.html:104
msgid "Uptime:"
msgstr "Tempo di attività:"
-#: bookwyrm/templates/settings/celery.html:100
+#: bookwyrm/templates/settings/celery.html:114
msgid "Could not connect to Celery"
msgstr "Impossibile connettersi a Celery"
-#: bookwyrm/templates/settings/celery.html:107
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr "Pulisci code"
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr "Eliminare le code può causare gravi problemi, inclusa la perdita di dati! Usa questo comando solo se sai davvero cosa stai facendo. Devi chiudere il lavoratore del sedano prima di fare questo."
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr "Errori"
@@ -4851,8 +4920,8 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr "Questo è destinato a essere utilizzato solo quando le cose sono andate molto male con le importazioni e si deve mettere in pausa la funzione mentre si affrontano i problemi."
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
-msgstr "Mentre le importazioni sono disabilitate, gli utenti non potranno iniziare nuove importazioni, ma le importazioni esistenti non saranno effettuate."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
+msgstr "Quando le importazioni sono disabilitate, gli utenti non potranno iniziare nuove importazioni, ma le importazioni esistenti non saranno influenzate."
#: bookwyrm/templates/settings/imports/imports.html:36
msgid "Disable imports"
@@ -5685,11 +5754,11 @@ msgstr "Visualizza le istruzioni di installazione"
msgid "Instance Setup"
msgstr "Configurazione Istanza"
-#: bookwyrm/templates/setup/layout.html:19
+#: bookwyrm/templates/setup/layout.html:21
msgid "Installing BookWyrm"
msgstr "Installare BookWyrm"
-#: bookwyrm/templates/setup/layout.html:22
+#: bookwyrm/templates/setup/layout.html:24
msgid "Need help?"
msgstr "Hai bisogno di aiuto?"
@@ -5707,7 +5776,7 @@ msgid "User profile"
msgstr "Profilo utente"
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr "Tutti i libri"
@@ -5781,7 +5850,7 @@ msgid_plural "and %(remainder_count_display)s others"
msgstr[0] "e %(remainder_count_display)s altro"
msgstr[1] "e %(remainder_count_display)s altri"
-#: bookwyrm/templates/snippets/book_cover.html:61
+#: bookwyrm/templates/snippets/book_cover.html:63
msgid "No cover"
msgstr "Nessuna copertina"
@@ -5881,6 +5950,10 @@ msgstr "Alla pagina:"
msgid "At percent:"
msgstr "Alla percentuale:"
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr ""
+
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
@@ -6059,10 +6132,18 @@ msgstr "pagina %(page)s di %(total_pages)s"
msgid "page %(page)s"
msgstr "pagina %(page)s"
-#: bookwyrm/templates/snippets/pagination.html:12
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr ""
+
+#: bookwyrm/templates/snippets/pagination.html:15
msgid "Previous"
msgstr "Precedente"
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr ""
+
#: bookwyrm/templates/snippets/privacy-icons.html:12
msgid "Followers-only"
msgstr "Solo Followers"
@@ -6191,19 +6272,29 @@ msgstr "Mostra stato"
#: bookwyrm/templates/snippets/status/content_status.html:102
#, python-format
-msgid "(Page %(page)s)"
-msgstr "(Pagina %(page)s)"
+msgid "(Page %(page)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:104
#, python-format
-msgid "(%(percent)s%%)"
-msgstr "(%(percent)s%%)"
+msgid "(%(percent)s%%"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid " - %(endpercent)s%%"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:127
msgid "Open image in new window"
msgstr "Apri immagine in una nuova finestra"
-#: bookwyrm/templates/snippets/status/content_status.html:146
+#: bookwyrm/templates/snippets/status/content_status.html:148
msgid "Hide status"
msgstr "Nascondi lo stato"
diff --git a/locale/lt_LT/LC_MESSAGES/django.mo b/locale/lt_LT/LC_MESSAGES/django.mo
index b848fbc6fd..eb4a25aeb7 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 6e441baa56..0625377aee 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: 2023-01-30 08:21+0000\n"
-"PO-Revision-Date: 2023-03-02 21:34\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-04-26 00:45\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Lithuanian\n"
"Language: lt\n"
@@ -46,7 +46,7 @@ msgstr "Neribota"
msgid "Incorrect password"
msgstr "Neteisingas slaptažodis"
-#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
msgid "Password does not match"
msgstr "Slaptažodis nesutampa"
@@ -70,19 +70,19 @@ msgstr "Skaitymo pabaigos data negali būti ateityje."
msgid "Reading finished date cannot be in the future."
msgstr "Skaitymo pabaigos data negali būti ateityje."
-#: bookwyrm/forms/landing.py:37
+#: bookwyrm/forms/landing.py:38
msgid "Username or password are incorrect"
msgstr "Naudotojo vardas arba slaptažodis neteisingi"
-#: bookwyrm/forms/landing.py:56
+#: bookwyrm/forms/landing.py:57
msgid "User with this username already exists"
msgstr "Toks naudotojo vardas jau egzistuoja"
-#: bookwyrm/forms/landing.py:65
+#: bookwyrm/forms/landing.py:66
msgid "A user with this email already exists."
msgstr "Vartotojas su šiuo el. pašto adresu jau yra."
-#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
msgid "Incorrect code"
msgstr "Neteisingas kodas"
@@ -205,26 +205,26 @@ msgstr "Susijungę"
msgid "Blocked"
msgstr "Užblokuoti"
-#: bookwyrm/models/fields.py:28
+#: bookwyrm/models/fields.py:29
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s yra negaliojantis remote_id"
-#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s yra negaliojantis naudotojo vardas"
-#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "naudotojo vardas"
-#: bookwyrm/models/fields.py:187
+#: bookwyrm/models/fields.py:197
msgid "A user with that username already exists."
msgstr "Toks naudotojo vardas jau egzistuoja."
-#: bookwyrm/models/fields.py:206
+#: bookwyrm/models/fields.py:216
#: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11
@@ -232,7 +232,7 @@ msgstr "Toks naudotojo vardas jau egzistuoja."
msgid "Public"
msgstr "Viešas"
-#: bookwyrm/models/fields.py:207
+#: bookwyrm/models/fields.py:217
#: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14
@@ -240,14 +240,14 @@ msgstr "Viešas"
msgid "Unlisted"
msgstr "Slaptas"
-#: bookwyrm/models/fields.py:208
+#: bookwyrm/models/fields.py:218
#: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers"
msgstr "Sekėjai"
-#: bookwyrm/models/fields.py:209
+#: bookwyrm/models/fields.py:219
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
@@ -275,11 +275,11 @@ msgstr "Sustabdyta"
msgid "Import stopped"
msgstr "Importavimas sustojo"
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr "Klaida įkeliant knygą"
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr "Nepavyko rasti tokios knygos"
@@ -300,7 +300,7 @@ msgstr "Galima pasiskolinti"
msgid "Approved"
msgstr "Patvirtinti puslapiai"
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr "Apžvalgos"
@@ -316,19 +316,19 @@ msgstr "Citatos"
msgid "Everything else"
msgstr "Visa kita"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr "Pagrindinė siena"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr "Pagrindinis"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr "Knygų siena"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -336,75 +336,79 @@ msgstr "Knygų siena"
msgid "Books"
msgstr "Knygos"
-#: bookwyrm/settings.py:290
+#: bookwyrm/settings.py:294
msgid "English"
msgstr "English (Anglų)"
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr "Català (kataloniečių)"
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr "Deutsch (Vokiečių)"
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr "Esperanto (Esperanto)"
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr "Español (Ispanų)"
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
msgstr ""
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr "Galego (galisų)"
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr "Italų (Italian)"
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr "Suomi (suomių)"
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr "Français (Prancūzų)"
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr "Lietuvių"
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr "Norvegų (Norwegian)"
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr "Polski (lenkų)"
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr "Português brasileiro (Brazilijos portugalų)"
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Europos portugalų)"
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr "Română (rumunų)"
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr "Svenska (Švedų)"
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr "简体中文 (Supaprastinta kinų)"
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr "繁體中文 (Tradicinė kinų)"
@@ -434,7 +438,7 @@ msgid "About"
msgstr "Apie"
#: bookwyrm/templates/about/about.html:21
-#: bookwyrm/templates/get_started/layout.html:20
+#: bookwyrm/templates/get_started/layout.html:22
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "Sveiki atvykę į %(site_name)s!"
@@ -624,7 +628,7 @@ msgstr "Trumpiausias skaitinys tais metais…"
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -709,31 +713,31 @@ msgstr "Wikipedia"
#: bookwyrm/templates/author/author.html:79
msgid "Website"
-msgstr ""
+msgstr "Tinklapis"
#: bookwyrm/templates/author/author.html:87
msgid "View ISNI record"
msgstr "Peržiūrėti ISNI įrašą"
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:164
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
msgstr "Žiūrėti per ISFDB"
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:131
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Įkelti duomenis"
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:135
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr "Žiūrėti „OpenLibrary“"
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:149
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr "Žiūrėti „Inventaire“"
@@ -801,7 +805,7 @@ msgstr "Nuoroda į wikipediją:"
#: bookwyrm/templates/author/edit_author.html:60
msgid "Website:"
-msgstr ""
+msgstr "Tinklalapis:"
#: bookwyrm/templates/author/edit_author.html:65
msgid "Birth date:"
@@ -842,15 +846,15 @@ msgid "ISNI:"
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:209
-#: bookwyrm/templates/book/edit/edit_book.html:142
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
#: bookwyrm/templates/groups/form.html:32
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -866,10 +870,10 @@ msgstr "Išsaugoti"
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:210
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
-#: bookwyrm/templates/book/edit/edit_book.html:144
-#: bookwyrm/templates/book/edit/edit_book.html:147
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:25
#: bookwyrm/templates/book/sync_modal.html:23
@@ -893,7 +897,7 @@ msgid "Loading data will connect to %(source_name)s and check f
msgstr "Duomenų įkėlimas prisijungs prie %(source_name)s ir patikrins ar nėra naujos informacijos. Esantys metaduomenys nebus perrašomi."
#: bookwyrm/templates/author/sync_modal.html:24
-#: bookwyrm/templates/book/edit/edit_book.html:129
+#: bookwyrm/templates/book/edit/edit_book.html:137
#: bookwyrm/templates/book/sync_modal.html:24
#: bookwyrm/templates/groups/members.html:29
#: bookwyrm/templates/landing/password_reset.html:52
@@ -903,27 +907,27 @@ msgstr "Duomenų įkėlimas prisijungs prie %(source_name)s ir
msgid "Confirm"
msgstr "Patvirtinti"
-#: bookwyrm/templates/book/book.html:19
+#: bookwyrm/templates/book/book.html:20
msgid "Unable to connect to remote source."
msgstr "Nepavyksta prisijungti prie nuotolinio šaltinio."
-#: bookwyrm/templates/book/book.html:64 bookwyrm/templates/book/book.html:65
+#: bookwyrm/templates/book/book.html:71 bookwyrm/templates/book/book.html:72
msgid "Edit Book"
msgstr "Redaguoti knygą"
-#: bookwyrm/templates/book/book.html:88 bookwyrm/templates/book/book.html:91
+#: bookwyrm/templates/book/book.html:97 bookwyrm/templates/book/book.html:100
msgid "Click to add cover"
msgstr "Spausti, kad pridėti viršelį"
-#: bookwyrm/templates/book/book.html:97
+#: bookwyrm/templates/book/book.html:106
msgid "Failed to load cover"
msgstr "Nepavyko įkelti viršelio"
-#: bookwyrm/templates/book/book.html:108
+#: bookwyrm/templates/book/book.html:117
msgid "Click to enlarge"
msgstr "Spustelėkite padidinti"
-#: bookwyrm/templates/book/book.html:186
+#: bookwyrm/templates/book/book.html:195
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
@@ -932,17 +936,17 @@ msgstr[1] "(%(review_count)s atsiliepimai)"
msgstr[2] "(%(review_count)s atsiliepimų)"
msgstr[3] "(%(review_count)s atsiliepimai)"
-#: bookwyrm/templates/book/book.html:198
+#: bookwyrm/templates/book/book.html:207
msgid "Add Description"
msgstr "Pridėti aprašymą"
-#: bookwyrm/templates/book/book.html:205
+#: bookwyrm/templates/book/book.html:214
#: bookwyrm/templates/book/edit/edit_book_form.html:42
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "Aprašymas:"
-#: bookwyrm/templates/book/book.html:221
+#: bookwyrm/templates/book/book.html:230
#, python-format
msgid "%(count)s edition"
msgid_plural "%(count)s editions"
@@ -951,54 +955,54 @@ msgstr[1] "%(count)s leidimai"
msgstr[2] "%(count)s leidimai"
msgstr[3] "%(count)s leidimai"
-#: bookwyrm/templates/book/book.html:235
+#: bookwyrm/templates/book/book.html:244
msgid "You have shelved this edition in:"
msgstr "Šis leidimas įdėtas į:"
-#: bookwyrm/templates/book/book.html:250
+#: bookwyrm/templates/book/book.html:259
#, python-format
msgid "A different edition of this book is on your %(shelf_name)s shelf."
msgstr "kitas šios knygos leidimas yra jūsų %(shelf_name)s lentynoje."
-#: bookwyrm/templates/book/book.html:261
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr "Jūsų skaitymo veikla"
-#: bookwyrm/templates/book/book.html:267
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr "Pridėti skaitymo datas"
-#: bookwyrm/templates/book/book.html:275
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr "Šios knygos neskaitote."
-#: bookwyrm/templates/book/book.html:301
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr "Tavo atsiliepimai"
-#: bookwyrm/templates/book/book.html:307
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr "Tavo komentarai"
-#: bookwyrm/templates/book/book.html:313
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr "Jūsų citatos"
-#: bookwyrm/templates/book/book.html:349
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr "Temos"
-#: bookwyrm/templates/book/book.html:361
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr "Vietos"
-#: bookwyrm/templates/book/book.html:372
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
-#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@@ -1007,11 +1011,11 @@ msgstr "Vietos"
msgid "Lists"
msgstr "Sąrašai"
-#: bookwyrm/templates/book/book.html:384
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr "Pridėti prie sąrašo"
-#: bookwyrm/templates/book/book.html:394
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1071,8 +1075,8 @@ msgstr "Peržiūrėti knygos viršelį"
#: bookwyrm/templates/components/modal.html:13
#: bookwyrm/templates/components/modal.html:30
#: bookwyrm/templates/feed/suggested_books.html:67
-#: bookwyrm/templates/get_started/layout.html:25
-#: bookwyrm/templates/get_started/layout.html:58
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
msgid "Close"
msgstr "Uždaryti"
@@ -1087,47 +1091,51 @@ msgstr "Redaguoti „%(book_title)s“"
msgid "Add Book"
msgstr "Pridėti knygą"
-#: bookwyrm/templates/book/edit/edit_book.html:62
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr "Knygos išsaugoti nepavyko, žiūrėkite klaidas žemiau."
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
msgid "Confirm Book Info"
msgstr "Patvirtinti knygos informaciją"
-#: bookwyrm/templates/book/edit/edit_book.html:70
+#: bookwyrm/templates/book/edit/edit_book.html:78
#, python-format
msgid "Is \"%(name)s\" one of these authors?"
msgstr "Ar \"%(name)s\" yra vienas iš šių autorių?"
-#: bookwyrm/templates/book/edit/edit_book.html:81
+#: bookwyrm/templates/book/edit/edit_book.html:89
#, python-format
msgid "Author of %(book_title)s "
msgstr "%(book_title)s autorius"
-#: bookwyrm/templates/book/edit/edit_book.html:85
+#: bookwyrm/templates/book/edit/edit_book.html:93
#, python-format
msgid "Author of %(alt_title)s "
msgstr "%(alt_title)s autorius"
-#: bookwyrm/templates/book/edit/edit_book.html:87
+#: bookwyrm/templates/book/edit/edit_book.html:95
msgid "Find more information at isni.org"
msgstr "Daugiau informacijos isni.org"
-#: bookwyrm/templates/book/edit/edit_book.html:97
+#: bookwyrm/templates/book/edit/edit_book.html:105
msgid "This is a new author"
msgstr "Tai naujas autorius"
-#: bookwyrm/templates/book/edit/edit_book.html:107
+#: bookwyrm/templates/book/edit/edit_book.html:115
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "Kuriamas naujas autorius: %(name)s"
-#: bookwyrm/templates/book/edit/edit_book.html:114
+#: bookwyrm/templates/book/edit/edit_book.html:122
msgid "Is this an edition of an existing work?"
msgstr "Ar tai egzistuojančio darbo leidimas?"
-#: bookwyrm/templates/book/edit/edit_book.html:122
+#: bookwyrm/templates/book/edit/edit_book.html:130
msgid "This is a new work"
msgstr "Tai naujas darbas"
-#: bookwyrm/templates/book/edit/edit_book.html:131
+#: bookwyrm/templates/book/edit/edit_book.html:139
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
@@ -1482,6 +1490,19 @@ msgstr "Publikavo %(publisher)s."
msgid "rated it"
msgstr "įvertino"
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr ""
+
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
@@ -1680,7 +1701,7 @@ msgstr "%(username)s citavo %(related_user)s ir %(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
msgstr "%(related_user)s ir %(other_user_display_count)s kiti paliko jūsų grupę „%(group_name)s “"
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
msgid "%(related_user)s mentioned you in a review of %(book_title)s "
@@ -3838,11 +3887,11 @@ msgstr "Dabar sekate %(display_name)s!"
#: bookwyrm/templates/preferences/2fa.html:7
#: bookwyrm/templates/preferences/layout.html:24
msgid "Two Factor Authentication"
-msgstr ""
+msgstr "Dviejų lygių autentifikavimas"
#: bookwyrm/templates/preferences/2fa.html:16
msgid "Successfully updated 2FA settings"
-msgstr ""
+msgstr "Sėkmingai atnaujinote 2FA nustatymus"
#: bookwyrm/templates/preferences/2fa.html:24
msgid "Write down or copy and paste these codes somewhere safe."
@@ -3860,7 +3909,7 @@ msgstr ""
#: bookwyrm/templates/preferences/disable-2fa.html:4
#: bookwyrm/templates/preferences/disable-2fa.html:7
msgid "Disable 2FA"
-msgstr ""
+msgstr "Išjungti 2FA"
#: bookwyrm/templates/preferences/2fa.html:39
msgid "You can generate backup codes to use in case you do not have access to your authentication app. If you generate new codes, any backup codes previously generated will no longer work."
@@ -3950,7 +3999,7 @@ msgstr ""
#: bookwyrm/templates/preferences/delete_user.html:20
msgid "Deactivate Account"
-msgstr ""
+msgstr "Išjungti vartotojo vardą"
#: bookwyrm/templates/preferences/delete_user.html:26
msgid "Permanently delete account"
@@ -4035,6 +4084,11 @@ msgstr "Slėpti paskyros sekėjus"
msgid "Default post privacy:"
msgstr "Numatytasis įrašo privatumas:"
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr ""
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4077,7 +4131,7 @@ msgstr "Pradėti „%(book_title)s“"
#: bookwyrm/templates/reading_progress/stop.html:5
#, python-format
msgid "Stop Reading \"%(book_title)s\""
-msgstr ""
+msgstr "Baigti skaityti „%(book_title)s“"
#: bookwyrm/templates/reading_progress/want.html:5
#, python-format
@@ -4128,7 +4182,7 @@ msgstr "baigta"
#: bookwyrm/templates/readthrough/readthrough_list.html:16
msgid "stopped"
-msgstr ""
+msgstr "nustota"
#: bookwyrm/templates/readthrough/readthrough_list.html:27
msgid "Show all updates"
@@ -4464,63 +4518,80 @@ msgid "Celery Status"
msgstr ""
#: bookwyrm/templates/settings/celery.html:14
-msgid "Queues"
+msgid "You can set up monitoring to check if Celery is running by querying:"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:18
+#: bookwyrm/templates/settings/celery.html:22
+msgid "Queues"
+msgstr "Eilės"
+
+#: bookwyrm/templates/settings/celery.html:26
msgid "Low priority"
-msgstr ""
+msgstr "Žemas prioritetas"
-#: bookwyrm/templates/settings/celery.html:24
+#: bookwyrm/templates/settings/celery.html:32
msgid "Medium priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:30
+#: bookwyrm/templates/settings/celery.html:38
msgid "High priority"
-msgstr ""
+msgstr "Aukštas prioritetas"
+
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr "Transliacijos"
-#: bookwyrm/templates/settings/celery.html:46
+#: bookwyrm/templates/settings/celery.html:60
msgid "Could not connect to Redis broker"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:54
+#: bookwyrm/templates/settings/celery.html:68
msgid "Active Tasks"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:59
+#: bookwyrm/templates/settings/celery.html:73
#: bookwyrm/templates/settings/imports/imports.html:113
msgid "ID"
msgstr "ID"
-#: bookwyrm/templates/settings/celery.html:60
+#: bookwyrm/templates/settings/celery.html:74
msgid "Task name"
msgstr "Užduoties pavadinimas"
-#: bookwyrm/templates/settings/celery.html:61
+#: bookwyrm/templates/settings/celery.html:75
msgid "Run time"
msgstr "Rodymo laikas"
-#: bookwyrm/templates/settings/celery.html:62
+#: bookwyrm/templates/settings/celery.html:76
msgid "Priority"
msgstr "Prioritetas"
-#: bookwyrm/templates/settings/celery.html:67
+#: bookwyrm/templates/settings/celery.html:81
msgid "No active tasks"
msgstr "Nėra aktyvių užduočių"
-#: bookwyrm/templates/settings/celery.html:85
+#: bookwyrm/templates/settings/celery.html:99
msgid "Workers"
msgstr "Darbuotojai"
-#: bookwyrm/templates/settings/celery.html:90
+#: bookwyrm/templates/settings/celery.html:104
msgid "Uptime:"
msgstr "Veikimo laikas:"
-#: bookwyrm/templates/settings/celery.html:100
+#: bookwyrm/templates/settings/celery.html:114
msgid "Could not connect to Celery"
msgstr "Nepavyko prisijungti prie „Celery“"
-#: bookwyrm/templates/settings/celery.html:107
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr "Klaidos"
@@ -4893,8 +4964,8 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr "Tai reikėtų naudoti tais atvejais, kai kyla problemų importuojant, todėl norite sustabdyti ir išspręsti problemą."
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
-msgstr "Kai importavimas išjungtas, naudotojai negalės importuoti naujai, tačiau tai nepaveiks esamų importų."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
+msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:36
msgid "Disable imports"
@@ -5727,11 +5798,11 @@ msgstr "Žiūrėti diegimo instrukcijas"
msgid "Instance Setup"
msgstr "Serverio nustatymai"
-#: bookwyrm/templates/setup/layout.html:19
+#: bookwyrm/templates/setup/layout.html:21
msgid "Installing BookWyrm"
msgstr "Diegiamas „BookWyrm“"
-#: bookwyrm/templates/setup/layout.html:22
+#: bookwyrm/templates/setup/layout.html:24
msgid "Need help?"
msgstr "Reikia pagalbos?"
@@ -5749,7 +5820,7 @@ msgid "User profile"
msgstr "Nario paskyra"
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr "Visos knygos"
@@ -5827,7 +5898,7 @@ msgstr[1] "ir %(remainder_count_display)s kiti"
msgstr[2] "ir %(remainder_count_display)s kitų"
msgstr[3] "ir %(remainder_count_display)s kitų"
-#: bookwyrm/templates/snippets/book_cover.html:61
+#: bookwyrm/templates/snippets/book_cover.html:63
msgid "No cover"
msgstr "Nėra viršelio"
@@ -5927,6 +5998,10 @@ msgstr "Puslapyje:"
msgid "At percent:"
msgstr "Proc.:"
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr ""
+
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
@@ -6115,10 +6190,18 @@ msgstr "%(page)s psl. iš %(total_pages)s"
msgid "page %(page)s"
msgstr "%(page)s psl."
-#: bookwyrm/templates/snippets/pagination.html:12
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr "Naujesni"
+
+#: bookwyrm/templates/snippets/pagination.html:15
msgid "Previous"
msgstr "Ankstesnis"
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr "Ankstesni"
+
#: bookwyrm/templates/snippets/privacy-icons.html:12
msgid "Followers-only"
msgstr "Tik sekėjai"
@@ -6247,19 +6330,29 @@ msgstr "Rodyti būseną"
#: bookwyrm/templates/snippets/status/content_status.html:102
#, python-format
-msgid "(Page %(page)s)"
-msgstr "(Psl. %(page)s)"
+msgid "(Page %(page)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid "(%(percent)s%%"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:104
#, python-format
-msgid "(%(percent)s%%)"
-msgstr "(%(percent)s%%)"
+msgid " - %(endpercent)s%%"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:127
msgid "Open image in new window"
msgstr "Atidaryti paveikslėlį naujame lange"
-#: bookwyrm/templates/snippets/status/content_status.html:146
+#: bookwyrm/templates/snippets/status/content_status.html:148
msgid "Hide status"
msgstr "Slėpti būseną"
diff --git a/locale/no_NO/LC_MESSAGES/django.mo b/locale/no_NO/LC_MESSAGES/django.mo
index c15f6a2ad0..ae0d87817c 100644
Binary files a/locale/no_NO/LC_MESSAGES/django.mo and b/locale/no_NO/LC_MESSAGES/django.mo differ
diff --git a/locale/no_NO/LC_MESSAGES/django.po b/locale/no_NO/LC_MESSAGES/django.po
index 9b5907e6b7..9ed9e42366 100644
--- a/locale/no_NO/LC_MESSAGES/django.po
+++ b/locale/no_NO/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-01-30 08:21+0000\n"
-"PO-Revision-Date: 2023-01-30 17:36\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-04-26 00:45\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Norwegian\n"
"Language: no\n"
@@ -46,7 +46,7 @@ msgstr "Ubegrenset"
msgid "Incorrect password"
msgstr "Feil passord"
-#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
msgid "Password does not match"
msgstr "Passordet samsvarer ikke"
@@ -64,25 +64,25 @@ msgstr "Stoppdato for lesing kan ikke være før startdato."
#: bookwyrm/forms/forms.py:67
msgid "Reading stopped date cannot be in the future."
-msgstr ""
+msgstr "Stoppdato for lesing kan ikke være i fremtiden."
#: bookwyrm/forms/forms.py:74
msgid "Reading finished date cannot be in the future."
-msgstr ""
+msgstr "Sluttdato for lesing kan ikke være i fremtiden."
-#: bookwyrm/forms/landing.py:37
+#: bookwyrm/forms/landing.py:38
msgid "Username or password are incorrect"
msgstr "Feil brukernavn eller passord"
-#: bookwyrm/forms/landing.py:56
+#: bookwyrm/forms/landing.py:57
msgid "User with this username already exists"
msgstr "En bruker med det brukernavnet finnes allerede"
-#: bookwyrm/forms/landing.py:65
+#: bookwyrm/forms/landing.py:66
msgid "A user with this email already exists."
msgstr "Den e-postadressen er allerede registrert."
-#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
msgid "Incorrect code"
msgstr "Feil kode"
@@ -157,7 +157,7 @@ msgstr "Selvsletting"
#: bookwyrm/models/base_model.py:20
msgid "Self deactivation"
-msgstr ""
+msgstr "Selvdeaktivering"
#: bookwyrm/models/base_model.py:21
msgid "Moderator suspension"
@@ -205,26 +205,26 @@ msgstr "Føderert"
msgid "Blocked"
msgstr "Blokkert"
-#: bookwyrm/models/fields.py:28
+#: bookwyrm/models/fields.py:29
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s er en ugyldig remote_id"
-#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s er et ugyldig brukernavn"
-#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "brukernavn"
-#: bookwyrm/models/fields.py:187
+#: bookwyrm/models/fields.py:197
msgid "A user with that username already exists."
msgstr "En bruker med det brukernavnet eksisterer allerede."
-#: bookwyrm/models/fields.py:206
+#: bookwyrm/models/fields.py:216
#: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11
@@ -232,7 +232,7 @@ msgstr "En bruker med det brukernavnet eksisterer allerede."
msgid "Public"
msgstr "Offentlig"
-#: bookwyrm/models/fields.py:207
+#: bookwyrm/models/fields.py:217
#: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14
@@ -240,14 +240,14 @@ msgstr "Offentlig"
msgid "Unlisted"
msgstr "Uoppført"
-#: bookwyrm/models/fields.py:208
+#: bookwyrm/models/fields.py:218
#: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers"
msgstr "Følgere"
-#: bookwyrm/models/fields.py:209
+#: bookwyrm/models/fields.py:219
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
@@ -265,21 +265,21 @@ msgstr "Aktiv"
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:166
msgid "Complete"
-msgstr ""
+msgstr "Ferdig"
#: bookwyrm/models/import_job.py:50
msgid "Stopped"
-msgstr ""
+msgstr "Stoppet"
#: bookwyrm/models/import_job.py:83 bookwyrm/models/import_job.py:91
msgid "Import stopped"
-msgstr ""
+msgstr "Importering stoppet"
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr "Feilet ved lasting av bok"
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr "Fant ikke den boka"
@@ -300,7 +300,7 @@ msgstr "Tilgjengelig for utlån"
msgid "Approved"
msgstr "Godkjent"
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr "Anmeldelser"
@@ -316,19 +316,19 @@ msgstr "Sitater"
msgid "Everything else"
msgstr "Andre ting"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr "Lokal tidslinje"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr "Hjem"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr "Boktidslinja"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -336,75 +336,79 @@ msgstr "Boktidslinja"
msgid "Books"
msgstr "Bøker"
-#: bookwyrm/settings.py:290
+#: bookwyrm/settings.py:294
msgid "English"
msgstr "English (Engelsk)"
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr "Català (katalansk)"
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr "Deutsch (Tysk)"
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr "Esperanto (Esperanto)"
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr "Español (Spansk)"
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
-msgstr ""
+msgstr "Euskara (Baskisk)"
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr "Galego (Gallisk)"
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr "Italiano (Italiensk)"
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr "Suomi (finsk)"
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr "Français (Fransk)"
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr "Lietuvių (Litauisk)"
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr "Norsk (Norsk)"
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr "Polski (Polsk)"
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr "Português - Brasil (Brasiliansk portugisisk)"
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Europeisk Portugisisk)"
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr "Română (romansk)"
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr "Svenska (Svensk)"
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr "简体中文 (Forenklet kinesisk)"
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr "繁體中文 (Tradisjonelt kinesisk)"
@@ -434,7 +438,7 @@ msgid "About"
msgstr "Om"
#: bookwyrm/templates/about/about.html:21
-#: bookwyrm/templates/get_started/layout.html:20
+#: bookwyrm/templates/get_started/layout.html:22
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "Velkommen til %(site_name)s!"
@@ -442,7 +446,7 @@ msgstr "Velkommen til %(site_name)s!"
#: bookwyrm/templates/about/about.html:25
#, python-format
msgid "%(site_name)s is part of BookWyrm , a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network , this community is unique."
-msgstr ""
+msgstr "%(site_name)s er en del av BookWyrm , et nettverk av selvstendige, selvstyrte samfunn for lesere. Du kan kommunisere sømløst med brukere hvor som helst i BookWyrm-nettverket , men hvert samfunn er unikt."
#: bookwyrm/templates/about/about.html:45
#, python-format
@@ -499,7 +503,7 @@ msgstr "Adferdsregler"
#: bookwyrm/templates/about/layout.html:54
#: bookwyrm/templates/snippets/footer.html:34
msgid "Impressum"
-msgstr ""
+msgstr "Impressum"
#: bookwyrm/templates/about/layout.html:11
msgid "Active users:"
@@ -620,7 +624,7 @@ msgstr "Den korteste teksten lest i år…"
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -701,31 +705,31 @@ msgstr "Wikipedia"
#: bookwyrm/templates/author/author.html:79
msgid "Website"
-msgstr ""
+msgstr "Nettside"
#: bookwyrm/templates/author/author.html:87
msgid "View ISNI record"
msgstr "Vis ISNI -oppføring"
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:164
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
-msgstr ""
+msgstr "Vis på ISFDB"
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:131
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Last inn data"
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:135
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr "Vis på OpenLibrary"
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:149
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr "Vis på Inventaire"
@@ -739,7 +743,7 @@ msgstr "Vis på Goodreads"
#: bookwyrm/templates/author/author.html:151
msgid "View ISFDB entry"
-msgstr ""
+msgstr "Vis ISFDB-oppføring"
#: bookwyrm/templates/author/author.html:166
#, python-format
@@ -793,7 +797,7 @@ msgstr "Lenke til wikipedia:"
#: bookwyrm/templates/author/edit_author.html:60
msgid "Website:"
-msgstr ""
+msgstr "Nettsted:"
#: bookwyrm/templates/author/edit_author.html:65
msgid "Birth date:"
@@ -827,22 +831,22 @@ msgstr "Goodreads nøkkel:"
#: bookwyrm/templates/author/edit_author.html:109
msgid "ISFDB:"
-msgstr ""
+msgstr "ISFDB:"
#: bookwyrm/templates/author/edit_author.html:116
msgid "ISNI:"
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:209
-#: bookwyrm/templates/book/edit/edit_book.html:142
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
#: bookwyrm/templates/groups/form.html:32
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -858,10 +862,10 @@ msgstr "Lagre"
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:210
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
-#: bookwyrm/templates/book/edit/edit_book.html:144
-#: bookwyrm/templates/book/edit/edit_book.html:147
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:25
#: bookwyrm/templates/book/sync_modal.html:23
@@ -885,7 +889,7 @@ msgid "Loading data will connect to %(source_name)s and check f
msgstr "Laster inn data kobler til %(source_name)s og finner metadata om denne forfatteren som enda ikke finnes her. Eksisterende metadata vil ikke bli overskrevet."
#: bookwyrm/templates/author/sync_modal.html:24
-#: bookwyrm/templates/book/edit/edit_book.html:129
+#: bookwyrm/templates/book/edit/edit_book.html:137
#: bookwyrm/templates/book/sync_modal.html:24
#: bookwyrm/templates/groups/members.html:29
#: bookwyrm/templates/landing/password_reset.html:52
@@ -895,98 +899,98 @@ msgstr "Laster inn data kobler til %(source_name)s og finner me
msgid "Confirm"
msgstr "Bekreft"
-#: bookwyrm/templates/book/book.html:19
+#: bookwyrm/templates/book/book.html:20
msgid "Unable to connect to remote source."
msgstr "Kunne ikke koble til ekstern kilde."
-#: bookwyrm/templates/book/book.html:64 bookwyrm/templates/book/book.html:65
+#: bookwyrm/templates/book/book.html:71 bookwyrm/templates/book/book.html:72
msgid "Edit Book"
msgstr "Rediger bok"
-#: bookwyrm/templates/book/book.html:88 bookwyrm/templates/book/book.html:91
+#: bookwyrm/templates/book/book.html:97 bookwyrm/templates/book/book.html:100
msgid "Click to add cover"
msgstr "Klikk for å legge til omslag"
-#: bookwyrm/templates/book/book.html:97
+#: bookwyrm/templates/book/book.html:106
msgid "Failed to load cover"
msgstr "Klarte ikke å laste inn omslag"
-#: bookwyrm/templates/book/book.html:108
+#: bookwyrm/templates/book/book.html:117
msgid "Click to enlarge"
msgstr "Klikk for å forstørre"
-#: bookwyrm/templates/book/book.html:186
+#: bookwyrm/templates/book/book.html:195
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
msgstr[0] "(%(review_count)s anmeldelse)"
msgstr[1] "(%(review_count)s anmeldelser)"
-#: bookwyrm/templates/book/book.html:198
+#: bookwyrm/templates/book/book.html:207
msgid "Add Description"
msgstr "Legg til beskrivelse"
-#: bookwyrm/templates/book/book.html:205
+#: bookwyrm/templates/book/book.html:214
#: bookwyrm/templates/book/edit/edit_book_form.html:42
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "Beskrivelse:"
-#: bookwyrm/templates/book/book.html:221
+#: bookwyrm/templates/book/book.html:230
#, python-format
msgid "%(count)s edition"
msgid_plural "%(count)s editions"
msgstr[0] ""
msgstr[1] "%(count)s utgaver"
-#: bookwyrm/templates/book/book.html:235
+#: bookwyrm/templates/book/book.html:244
msgid "You have shelved this edition in:"
msgstr "Du har lagt denne utgaven i hylla:"
-#: bookwyrm/templates/book/book.html:250
+#: bookwyrm/templates/book/book.html:259
#, python-format
msgid "A different edition of this book is on your %(shelf_name)s shelf."
msgstr "En annen utgave av denne boken ligger i hylla %(shelf_name)s ."
-#: bookwyrm/templates/book/book.html:261
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr "Din leseaktivitet"
-#: bookwyrm/templates/book/book.html:267
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr "Legg til lesedatoer"
-#: bookwyrm/templates/book/book.html:275
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr "Du har ikke lagt inn leseaktivitet for denne boka."
-#: bookwyrm/templates/book/book.html:301
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr "Dine anmeldelser"
-#: bookwyrm/templates/book/book.html:307
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr "Dine kommentarer"
-#: bookwyrm/templates/book/book.html:313
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr "Dine sitater"
-#: bookwyrm/templates/book/book.html:349
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr "Emner"
-#: bookwyrm/templates/book/book.html:361
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr "Steder"
-#: bookwyrm/templates/book/book.html:372
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
-#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@@ -995,11 +999,11 @@ msgstr "Steder"
msgid "Lists"
msgstr "Lister"
-#: bookwyrm/templates/book/book.html:384
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr "Legg til i liste"
-#: bookwyrm/templates/book/book.html:394
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1025,16 +1029,16 @@ msgstr "ASIN:"
#: bookwyrm/templates/book/book_identifiers.html:29
#: bookwyrm/templates/book/edit/edit_book_form.html:359
msgid "Audible ASIN:"
-msgstr ""
+msgstr "Audible ASIN:"
#: bookwyrm/templates/book/book_identifiers.html:36
#: bookwyrm/templates/book/edit/edit_book_form.html:368
msgid "ISFDB ID:"
-msgstr ""
+msgstr "ISFDB ID:"
#: bookwyrm/templates/book/book_identifiers.html:43
msgid "Goodreads:"
-msgstr ""
+msgstr "Goodreads:"
#: bookwyrm/templates/book/cover_add_modal.html:5
msgid "Add cover"
@@ -1059,8 +1063,8 @@ msgstr "Bokomslag forhåndsvisning"
#: bookwyrm/templates/components/modal.html:13
#: bookwyrm/templates/components/modal.html:30
#: bookwyrm/templates/feed/suggested_books.html:67
-#: bookwyrm/templates/get_started/layout.html:25
-#: bookwyrm/templates/get_started/layout.html:58
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
msgid "Close"
msgstr "Lukk"
@@ -1075,47 +1079,51 @@ msgstr "Rediger \"%(book_title)s"
msgid "Add Book"
msgstr "Legg til bok"
-#: bookwyrm/templates/book/edit/edit_book.html:62
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr "Boken kunne ikke lagres, se feilene nedenfor for mer informasjon."
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
msgid "Confirm Book Info"
msgstr "Bekreft bokinformasjon"
-#: bookwyrm/templates/book/edit/edit_book.html:70
+#: bookwyrm/templates/book/edit/edit_book.html:78
#, python-format
msgid "Is \"%(name)s\" one of these authors?"
msgstr "Er \"%(name)s\" en av disse forfatterne?"
-#: bookwyrm/templates/book/edit/edit_book.html:81
+#: bookwyrm/templates/book/edit/edit_book.html:89
#, python-format
msgid "Author of %(book_title)s "
-msgstr ""
+msgstr "Forfatter av %(book_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:85
+#: bookwyrm/templates/book/edit/edit_book.html:93
#, python-format
msgid "Author of %(alt_title)s "
-msgstr ""
+msgstr "Forfatter av %(alt_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:87
+#: bookwyrm/templates/book/edit/edit_book.html:95
msgid "Find more information at isni.org"
msgstr "Finn mer informasjon på isni.org"
-#: bookwyrm/templates/book/edit/edit_book.html:97
+#: bookwyrm/templates/book/edit/edit_book.html:105
msgid "This is a new author"
msgstr "Dette er en ny forfatter"
-#: bookwyrm/templates/book/edit/edit_book.html:107
+#: bookwyrm/templates/book/edit/edit_book.html:115
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "Oppretter en ny forfatter: %(name)s"
-#: bookwyrm/templates/book/edit/edit_book.html:114
+#: bookwyrm/templates/book/edit/edit_book.html:122
msgid "Is this an edition of an existing work?"
msgstr "Er dette en utgave av et eksisterende verk?"
-#: bookwyrm/templates/book/edit/edit_book.html:122
+#: bookwyrm/templates/book/edit/edit_book.html:130
msgid "This is a new work"
msgstr "Dette er et nytt verk"
-#: bookwyrm/templates/book/edit/edit_book.html:131
+#: bookwyrm/templates/book/edit/edit_book.html:139
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
@@ -1470,6 +1478,19 @@ msgstr "Utgitt av %(publisher)s."
msgid "rated it"
msgstr "vurderte den"
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr "En serie av"
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr "Bok %(series_number)s"
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr "Usortert bok"
+
#: 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."
@@ -1664,7 +1685,7 @@ msgstr "%(username)s siterte spoiler alert "
-msgstr ""
+msgstr "Om din omtale eller kommentar kan ødelegge boken for noen som ikke har lest den ennå, du kan skjule innlegget ditt bak en plottblott-advarsel "
#: bookwyrm/templates/guided_tour/book.html:200
msgid "Spoiler alerts"
-msgstr ""
+msgstr "Plottblott-advarsel"
#: bookwyrm/templates/guided_tour/book.html:224
msgid "Choose who can see your post here. Post privacy can be Public (everyone can see), Unlisted (everyone can see, but it doesn't appear in public feeds or discovery pages), Followers (only your followers can see), or Private (only you can see)"
@@ -2309,15 +2340,15 @@ msgstr "Delingsinstilling for post"
#: bookwyrm/templates/guided_tour/book.html:248
msgid "Some ebooks can be downloaded for free from external sources. They will be shown here."
-msgstr ""
+msgstr "Noen e-bøker kan lastes ned gratis fra eksterne kilder. De vil vises her."
#: bookwyrm/templates/guided_tour/book.html:249
msgid "Download links"
-msgstr ""
+msgstr "Nedlastingslenker"
#: bookwyrm/templates/guided_tour/book.html:273
msgid "Continue the tour by selecting Your books from the drop down menu."
-msgstr ""
+msgstr "Fortsett gjennomgangen ved å velge Dine bøker fra nedtrekksmenyen."
#: bookwyrm/templates/guided_tour/book.html:296
#: bookwyrm/templates/guided_tour/home.html:50
@@ -2327,15 +2358,15 @@ msgstr ""
#: bookwyrm/templates/guided_tour/user_groups.html:116
#: bookwyrm/templates/guided_tour/user_profile.html:141
msgid "Ok"
-msgstr ""
+msgstr "Ok"
#: bookwyrm/templates/guided_tour/group.html:10
msgid "Welcome to the page for your group! This is where you can add and remove users, create user-curated lists, and edit the group details."
-msgstr ""
+msgstr "Velkommen til siden for gruppen din! Her kan du legge til og fjerne brukere, opprette brukerstyrte lister, og redigere gruppedetaljene."
#: bookwyrm/templates/guided_tour/group.html:11
msgid "Your group"
-msgstr ""
+msgstr "Din gruppe"
#: bookwyrm/templates/guided_tour/group.html:31
msgid "Use this search box to find users to join your group. Currently users must be members of the same Bookwyrm instance and be invited by the group owner."
@@ -2343,15 +2374,15 @@ msgstr ""
#: bookwyrm/templates/guided_tour/group.html:32
msgid "Find users"
-msgstr ""
+msgstr "Finn brukere"
#: bookwyrm/templates/guided_tour/group.html:54
msgid "Your group members will appear here. The group owner is marked with a star symbol."
-msgstr ""
+msgstr "Gruppemedlemmene vises her. Eieren av gruppa er markert med et stjernesymbol."
#: bookwyrm/templates/guided_tour/group.html:55
msgid "Group members"
-msgstr ""
+msgstr "Gruppemedlemmer"
#: bookwyrm/templates/guided_tour/group.html:77
msgid "As well as creating lists from the Lists page, you can create a group-curated list here on the group's homepage. Any member of the group can create a list curated by group members."
@@ -2359,46 +2390,46 @@ msgstr ""
#: bookwyrm/templates/guided_tour/group.html:78
msgid "Group lists"
-msgstr ""
+msgstr "Gruppelister"
#: bookwyrm/templates/guided_tour/group.html:100
msgid "Congratulations, you've finished the tour! Now you know the basics, but there is lots more to explore on your own. Happy reading!"
-msgstr ""
+msgstr "Gratulerer, du har fullført omvisningen! Nå kan du det grunnleggende, men det er mye mer å utforske på egen hånd. God lesing!"
#: bookwyrm/templates/guided_tour/group.html:115
msgid "End tour"
-msgstr ""
+msgstr "Avslutt omvisning"
#: bookwyrm/templates/guided_tour/home.html:16
msgid "Welcome to Bookwyrm! Would you like to take the guided tour to help you get started?"
-msgstr ""
+msgstr "Velkommen til Bookwyrm! Vil du ha en veiledet omvisning for å hjelpe deg å komme i gang?"
#: bookwyrm/templates/guided_tour/home.html:17
#: bookwyrm/templates/guided_tour/home.html:39
#: bookwyrm/templates/snippets/footer.html:20
msgid "Guided Tour"
-msgstr ""
+msgstr "Veiledet omvisning"
#: bookwyrm/templates/guided_tour/home.html:25
#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:36
msgid "No thanks"
-msgstr ""
+msgstr "Nei takk"
#: bookwyrm/templates/guided_tour/home.html:33
msgid "Yes please!"
-msgstr ""
+msgstr "Ja takk!"
#: bookwyrm/templates/guided_tour/home.html:38
msgid "If you ever change your mind, just click on the Guided Tour link to start your tour"
-msgstr ""
+msgstr "Hvis du noen gang ombestemmer deg kan du klikke på Veiledet omvisnings-lenken for å starte omvisningen din"
#: bookwyrm/templates/guided_tour/home.html:62
msgid "Search for books, users, or lists using this search box."
-msgstr ""
+msgstr "Søk etter bøker, brukere eller lister med dette søkefeltet."
#: bookwyrm/templates/guided_tour/home.html:63
msgid "Search box"
-msgstr ""
+msgstr "Søkefelt"
#: bookwyrm/templates/guided_tour/home.html:79
msgid "Search book records by scanning an ISBN barcode using your device's camera - great when you're in the bookstore or library!"
@@ -2406,15 +2437,15 @@ msgstr ""
#: bookwyrm/templates/guided_tour/home.html:80
msgid "Barcode reader"
-msgstr ""
+msgstr "Strekkodeleser"
#: bookwyrm/templates/guided_tour/home.html:102
msgid "Use the Feed , Lists and Discover links to discover the latest news from your feed, lists of books by topic, and the latest happenings on this Bookwyrm server!"
-msgstr ""
+msgstr "Bruk lenkene Strøm , Lister og Oppdag for å få de seneste nyhetene fra strømmen din, lister over bøker etter emne, og siste nytt på denne BookWyrm-serveren!"
#: bookwyrm/templates/guided_tour/home.html:103
msgid "Navigation Bar"
-msgstr ""
+msgstr "Navigeringsfelt"
#: bookwyrm/templates/guided_tour/home.html:126
msgid "Books on your reading status shelves will be shown here."
@@ -2426,15 +2457,15 @@ msgstr ""
#: bookwyrm/templates/guided_tour/home.html:152
msgid "Timelines"
-msgstr ""
+msgstr "Tidslinjer"
#: bookwyrm/templates/guided_tour/home.html:176
msgid "The bell will light up when you have a new notification. When it does, click on it to find out what exciting thing has happened!"
-msgstr ""
+msgstr "Klokka lyser opp når du får ny varsel. Når det skjer, klikk på den for å finne ut hva spennende som har skjedd!"
#: bookwyrm/templates/guided_tour/home.html:177
-#: bookwyrm/templates/layout.html:75 bookwyrm/templates/layout.html:107
-#: bookwyrm/templates/layout.html:108
+#: bookwyrm/templates/layout.html:75 bookwyrm/templates/layout.html:106
+#: bookwyrm/templates/layout.html:107
#: bookwyrm/templates/notifications/notifications_page.html:5
#: bookwyrm/templates/notifications/notifications_page.html:10
msgid "Notifications"
@@ -2442,15 +2473,15 @@ msgstr "Varsler"
#: bookwyrm/templates/guided_tour/home.html:200
msgid "Your profile, books, direct messages, and settings can be accessed by clicking on your name in the menu here."
-msgstr ""
+msgstr "Din profil, bøker, direktemeldinger og innstillinger kan nås ved å klikke på navnet ditt i denne menyen."
#: bookwyrm/templates/guided_tour/home.html:200
msgid "Try selecting Profile from the drop down menu to continue the tour."
-msgstr ""
+msgstr "Prøv å velge Profil fra nedtrekksmenyen for å fortsette omvisningen."
#: bookwyrm/templates/guided_tour/home.html:201
msgid "Profile and settings menu"
-msgstr ""
+msgstr "Profil og innstillingsmeny"
#: bookwyrm/templates/guided_tour/lists.html:13
msgid "This is the lists page where you can discover book lists created by any user. A List is a collection of books, similar to a shelf."
@@ -2458,101 +2489,101 @@ msgstr ""
#: bookwyrm/templates/guided_tour/lists.html:13
msgid "Shelves are for organising books for yourself, whereas Lists are generally for sharing with others."
-msgstr ""
+msgstr "Hyller brukes til å organisere bøker for deg selv, mens lister deles vanligvis med andre."
#: bookwyrm/templates/guided_tour/lists.html:34
msgid "Let's see how to create a new list."
-msgstr ""
+msgstr "La oss se på hvordan du lager en ny liste."
#: bookwyrm/templates/guided_tour/lists.html:34
msgid "Click the Create List button, then Next to continue the tour"
-msgstr ""
+msgstr "Klikk på Opprett liste , deretter Neste for å fortsette omvisningen"
#: bookwyrm/templates/guided_tour/lists.html:35
#: bookwyrm/templates/guided_tour/lists.html:59
msgid "Creating a new list"
-msgstr ""
+msgstr "Oppretting av en ny liste"
#: bookwyrm/templates/guided_tour/lists.html:58
msgid "You must give your list a name and can optionally give it a description to help other people understand what your list is about."
-msgstr ""
+msgstr "Du må gi listen din et navn og kan eventuelt gi den en beskrivelse for å hjelpe andre med å forstå hva listen din dreier seg om."
#: bookwyrm/templates/guided_tour/lists.html:81
msgid "Choose who can see your list here. List privacy options work just like we saw when posting book reviews. This is a common pattern throughout Bookwyrm."
-msgstr ""
+msgstr "Velg hvem som kan se listen her. Listens personvernalternativer fungerer på samme måte som den vi så når vi publiserer bokomtaler. Dette mønsteret ser vi overalt i BookWyrm."
#: bookwyrm/templates/guided_tour/lists.html:82
msgid "List privacy"
-msgstr ""
+msgstr "Personvernalternativet for liste"
#: bookwyrm/templates/guided_tour/lists.html:105
msgid "You can also decide how your list is to be curated - only by you, by anyone, or by a group."
-msgstr ""
+msgstr "Du kan også velge hvordan listen din skal kureres – kun av deg, av hvem som helst, eller av en gruppe."
#: bookwyrm/templates/guided_tour/lists.html:106
msgid "List curation"
-msgstr ""
+msgstr "Listekurering"
#: bookwyrm/templates/guided_tour/lists.html:128
msgid "Next in our tour we will explore Groups!"
-msgstr ""
+msgstr "På neste stopp i omvisningen vil vi utforske grupper!"
#: bookwyrm/templates/guided_tour/lists.html:129
msgid "Next: Groups"
-msgstr ""
+msgstr "Neste: Grupper"
#: bookwyrm/templates/guided_tour/lists.html:143
msgid "Take me there"
-msgstr ""
+msgstr "Ta meg dit"
#: bookwyrm/templates/guided_tour/search.html:16
msgid "If the book you are looking for is available on a remote catalogue such as Open Library, click on Import book ."
-msgstr ""
+msgstr "Om boken du leter etter er tilgjengelig på en ekstern katalog, for eksempel Open Library, klikk på Importer bok ."
#: bookwyrm/templates/guided_tour/search.html:17
#: bookwyrm/templates/guided_tour/search.html:44
msgid "Searching"
-msgstr ""
+msgstr "Søker"
#: bookwyrm/templates/guided_tour/search.html:43
msgid "If the book you are looking for is already on this Bookwyrm instance, you can click on the title to go to the book's page."
-msgstr ""
+msgstr "Om boken du leter etter allerede finnes på denne BookWyrm-instansen, kan du klikke på tittelen for å gå til siden til boka."
#: bookwyrm/templates/guided_tour/search.html:71
msgid "If the book you are looking for is not listed, try loading more records from other sources like Open Library or Inventaire."
-msgstr ""
+msgstr "Om boken du leter etter er ikke oppført, prøv å laste flere oppføringer fra andre kilder som Open Library eller Inventaire."
#: bookwyrm/templates/guided_tour/search.html:72
msgid "Load more records"
-msgstr ""
+msgstr "Last inn flere oppføringer"
#: bookwyrm/templates/guided_tour/search.html:98
msgid "If your book is not in the results, try adjusting your search terms."
-msgstr ""
+msgstr "Om boken ikke er i resultatet, prøv å endre søkeordene dine."
#: bookwyrm/templates/guided_tour/search.html:99
msgid "Search again"
-msgstr ""
+msgstr "Søk på nytt"
#: bookwyrm/templates/guided_tour/search.html:121
msgid "If you still can't find your book, you can add a record manually."
-msgstr ""
+msgstr "Om du fortsatt ikke finner boken din, kan du legge til en oppføring manuelt."
#: bookwyrm/templates/guided_tour/search.html:122
msgid "Add a record manually"
-msgstr ""
+msgstr "Legg til oppføring manuelt"
#: bookwyrm/templates/guided_tour/search.html:147
msgid "Import, manually add, or view an existing book to continue the tour."
-msgstr ""
+msgstr "Importer, legg til manuelt, eller se en eksisterende bok for å fortsette omvisningen."
#: bookwyrm/templates/guided_tour/search.html:148
msgid "Continue the tour"
-msgstr ""
+msgstr "Fortsett omvisningen"
#: bookwyrm/templates/guided_tour/user_books.html:10
msgid "This is the page where your books are listed, organised into shelves."
-msgstr ""
+msgstr "Dette er siden hvor bøker listes opp, organisert i hyller."
#: bookwyrm/templates/guided_tour/user_books.html:11
#: bookwyrm/templates/user/books_header.html:4
@@ -2623,7 +2654,7 @@ msgstr ""
#: bookwyrm/templates/guided_tour/user_groups.html:79
msgid "Group visibility"
-msgstr ""
+msgstr "Gruppens synlighet"
#: bookwyrm/templates/guided_tour/user_groups.html:102
msgid "Once you're happy with how everything is set up, click the Save button to create your new group."
@@ -2635,7 +2666,7 @@ msgstr ""
#: bookwyrm/templates/guided_tour/user_groups.html:103
msgid "Save your group"
-msgstr ""
+msgstr "Lagre gruppen din"
#: bookwyrm/templates/guided_tour/user_profile.html:10
msgid "This is your user profile. All your latest activities will be listed here. Other Bookwyrm users can see parts of this page too - what they can see depends on your privacy settings."
@@ -2677,8 +2708,17 @@ msgstr ""
#: bookwyrm/templates/guided_tour/user_profile.html:124
msgid "Find a book"
+msgstr "Finn en bok"
+
+#: bookwyrm/templates/hashtag.html:12
+#, python-format
+msgid "See tagged statuses in the local %(site_name)s community"
msgstr ""
+#: bookwyrm/templates/hashtag.html:25
+msgid "No activities for this hashtag yet!"
+msgstr "Ingen aktiviteter for denne emneknaggen ennå!"
+
#: bookwyrm/templates/import/import.html:5
#: bookwyrm/templates/import/import.html:9
#: bookwyrm/templates/shelf/shelf.html:64
@@ -2687,7 +2727,7 @@ msgstr "Importer bøker"
#: bookwyrm/templates/import/import.html:13
msgid "Not a valid CSV file"
-msgstr ""
+msgstr "Ikke en gyldig CSV-fil"
#: bookwyrm/templates/import/import.html:20
#, python-format
@@ -2715,23 +2755,23 @@ msgstr "Datakilde:"
#: bookwyrm/templates/import/import.html:53
msgid "Goodreads (CSV)"
-msgstr ""
+msgstr "Goodreads (CSV)"
#: bookwyrm/templates/import/import.html:56
msgid "Storygraph (CSV)"
-msgstr ""
+msgstr "Storygraph (CSV)"
#: bookwyrm/templates/import/import.html:59
msgid "LibraryThing (TSV)"
-msgstr ""
+msgstr "LibraryThing (TSV)"
#: bookwyrm/templates/import/import.html:62
msgid "OpenLibrary (CSV)"
-msgstr ""
+msgstr "OpenLibrary (CSV)"
#: bookwyrm/templates/import/import.html:65
msgid "Calibre (CSV)"
-msgstr ""
+msgstr "Calibre (CSV)"
#: bookwyrm/templates/import/import.html:71
msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account."
@@ -2798,7 +2838,7 @@ msgid "Retry Status"
msgstr "Status for nytt forsøk"
#: bookwyrm/templates/import/import_status.html:22
-#: bookwyrm/templates/settings/celery.html:36
+#: bookwyrm/templates/settings/celery.html:44
#: bookwyrm/templates/settings/imports/imports.html:6
#: bookwyrm/templates/settings/imports/imports.html:9
#: bookwyrm/templates/settings/layout.html:82
@@ -3022,7 +3062,7 @@ msgid "Login"
msgstr "Logg inn"
#: bookwyrm/templates/landing/login.html:7
-#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:139
+#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:136
#: bookwyrm/templates/ostatus/error.html:37
msgid "Log in"
msgstr "Logg inn"
@@ -3033,7 +3073,7 @@ msgstr "Vellykket! E-postadressen din er bekreftet."
#: bookwyrm/templates/landing/login.html:21
#: bookwyrm/templates/landing/reactivate.html:17
-#: bookwyrm/templates/layout.html:130 bookwyrm/templates/ostatus/error.html:28
+#: bookwyrm/templates/layout.html:127 bookwyrm/templates/ostatus/error.html:28
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
msgstr "Brukernavn:"
@@ -3041,13 +3081,13 @@ msgstr "Brukernavn:"
#: bookwyrm/templates/landing/login.html:27
#: bookwyrm/templates/landing/password_reset.html:26
#: bookwyrm/templates/landing/reactivate.html:23
-#: bookwyrm/templates/layout.html:134 bookwyrm/templates/ostatus/error.html:32
+#: bookwyrm/templates/layout.html:131 bookwyrm/templates/ostatus/error.html:32
#: bookwyrm/templates/preferences/2fa.html:91
#: bookwyrm/templates/snippets/register_form.html:45
msgid "Password:"
msgstr "Passord:"
-#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:136
+#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:133
#: bookwyrm/templates/ostatus/error.html:34
msgid "Forgot your password?"
msgstr "Glemt passord?"
@@ -3090,35 +3130,35 @@ msgstr ""
msgid "%(site_name)s search"
msgstr "%(site_name)s søk"
-#: bookwyrm/templates/layout.html:36
+#: bookwyrm/templates/layout.html:37
msgid "Search for a book, user, or list"
msgstr "Søk etter bok, medlem eller liste"
-#: bookwyrm/templates/layout.html:51 bookwyrm/templates/layout.html:52
+#: bookwyrm/templates/layout.html:52 bookwyrm/templates/layout.html:53
msgid "Scan Barcode"
msgstr ""
-#: bookwyrm/templates/layout.html:66
+#: bookwyrm/templates/layout.html:67
msgid "Main navigation menu"
msgstr "Hovednavigasjonsmeny"
-#: bookwyrm/templates/layout.html:88
+#: bookwyrm/templates/layout.html:87
msgid "Feed"
msgstr "Strøm"
-#: bookwyrm/templates/layout.html:135 bookwyrm/templates/ostatus/error.html:33
+#: bookwyrm/templates/layout.html:132 bookwyrm/templates/ostatus/error.html:33
msgid "password"
msgstr "passord"
-#: bookwyrm/templates/layout.html:147
+#: bookwyrm/templates/layout.html:144
msgid "Join"
msgstr "Delta"
-#: bookwyrm/templates/layout.html:181
+#: bookwyrm/templates/layout.html:179
msgid "Successfully posted status"
msgstr "Status ble opprettet"
-#: bookwyrm/templates/layout.html:182
+#: bookwyrm/templates/layout.html:180
msgid "Error posting status"
msgstr "Feil ved lagring av status"
@@ -3273,7 +3313,7 @@ msgstr "En valgfri merknad som vil vises sammen med boken."
#: bookwyrm/templates/lists/list.html:37
msgid "That book is already on this list."
-msgstr ""
+msgstr "Den boka er allerede på denne listen."
#: bookwyrm/templates/lists/list.html:45
msgid "You successfully suggested a book for this list!"
@@ -3285,7 +3325,7 @@ msgstr "Du har nå lagt til ei bok i denne lista!"
#: bookwyrm/templates/lists/list.html:54
msgid "This list is currently empty."
-msgstr ""
+msgstr "Denne listen er for øyeblikket tom."
#: bookwyrm/templates/lists/list.html:104
msgid "Edit notes"
@@ -3597,6 +3637,13 @@ msgstr ""
msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
msgstr ""
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] ""
+msgstr[1] ""
+
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
msgid "%(related_user)s mentioned you in a review of %(book_title)s "
@@ -4005,6 +4052,11 @@ msgstr ""
msgid "Default post privacy:"
msgstr "Standard tilgangsnivå på innlegg:"
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr ""
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4428,63 +4480,80 @@ msgid "Celery Status"
msgstr ""
#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:22
msgid "Queues"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:18
+#: bookwyrm/templates/settings/celery.html:26
msgid "Low priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:24
+#: bookwyrm/templates/settings/celery.html:32
msgid "Medium priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:30
+#: bookwyrm/templates/settings/celery.html:38
msgid "High priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:46
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:60
msgid "Could not connect to Redis broker"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:54
+#: bookwyrm/templates/settings/celery.html:68
msgid "Active Tasks"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:59
+#: bookwyrm/templates/settings/celery.html:73
#: bookwyrm/templates/settings/imports/imports.html:113
msgid "ID"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:60
+#: bookwyrm/templates/settings/celery.html:74
msgid "Task name"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:61
+#: bookwyrm/templates/settings/celery.html:75
msgid "Run time"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:62
+#: bookwyrm/templates/settings/celery.html:76
msgid "Priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:67
+#: bookwyrm/templates/settings/celery.html:81
msgid "No active tasks"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:85
+#: bookwyrm/templates/settings/celery.html:99
msgid "Workers"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:90
+#: bookwyrm/templates/settings/celery.html:104
msgid "Uptime:"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:100
+#: bookwyrm/templates/settings/celery.html:114
msgid "Could not connect to Celery"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:107
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr ""
@@ -4849,7 +4918,7 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:36
@@ -5683,11 +5752,11 @@ msgstr ""
msgid "Instance Setup"
msgstr ""
-#: bookwyrm/templates/setup/layout.html:19
+#: bookwyrm/templates/setup/layout.html:21
msgid "Installing BookWyrm"
msgstr ""
-#: bookwyrm/templates/setup/layout.html:22
+#: bookwyrm/templates/setup/layout.html:24
msgid "Need help?"
msgstr ""
@@ -5705,7 +5774,7 @@ msgid "User profile"
msgstr "Brukerprofil"
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr "Alle bøker"
@@ -5779,7 +5848,7 @@ msgid_plural "and %(remainder_count_display)s others"
msgstr[0] "og %(remainder_count_display)s annen"
msgstr[1] "og %(remainder_count_display)s andre"
-#: bookwyrm/templates/snippets/book_cover.html:61
+#: bookwyrm/templates/snippets/book_cover.html:63
msgid "No cover"
msgstr "Intet omslag"
@@ -5839,7 +5908,7 @@ msgstr "Innhold"
#: bookwyrm/templates/snippets/create_status/content_warning_field.html:9
msgid "Include spoiler alert"
-msgstr "Inkluder spoiler-varsel"
+msgstr "Inkluder plottblott-advarsel"
#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18
msgid "Spoilers/content warnings:"
@@ -5847,7 +5916,7 @@ msgstr ""
#: bookwyrm/templates/snippets/create_status/content_warning_field.html:27
msgid "Spoilers ahead!"
-msgstr "Spoilers forut!"
+msgstr "Plottblott forut!"
#: bookwyrm/templates/snippets/create_status/layout.html:45
#: bookwyrm/templates/snippets/reading_modals/form.html:7
@@ -5879,6 +5948,10 @@ msgstr "På side:"
msgid "At percent:"
msgstr "Ved prosent:"
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr ""
+
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
@@ -6057,10 +6130,18 @@ msgstr "side %(page)s av %(total_pages)s"
msgid "page %(page)s"
msgstr "side %(page)s"
-#: bookwyrm/templates/snippets/pagination.html:12
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr ""
+
+#: bookwyrm/templates/snippets/pagination.html:15
msgid "Previous"
msgstr "Forrige"
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr ""
+
#: bookwyrm/templates/snippets/privacy-icons.html:12
msgid "Followers-only"
msgstr "Kun følgere"
@@ -6189,19 +6270,29 @@ msgstr "Vis status"
#: bookwyrm/templates/snippets/status/content_status.html:102
#, python-format
-msgid "(Page %(page)s)"
-msgstr "(side %(page)s)"
+msgid "(Page %(page)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:104
#, python-format
-msgid "(%(percent)s%%)"
-msgstr "(%(percent)s%%)"
+msgid "(%(percent)s%%"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid " - %(endpercent)s%%"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:127
msgid "Open image in new window"
msgstr "Åpne bilde i nytt vindu"
-#: bookwyrm/templates/snippets/status/content_status.html:146
+#: bookwyrm/templates/snippets/status/content_status.html:148
msgid "Hide status"
msgstr "Skjul status"
diff --git a/locale/pl_PL/LC_MESSAGES/django.mo b/locale/pl_PL/LC_MESSAGES/django.mo
index 24668069d7..58f304208a 100644
Binary files a/locale/pl_PL/LC_MESSAGES/django.mo and b/locale/pl_PL/LC_MESSAGES/django.mo differ
diff --git a/locale/pl_PL/LC_MESSAGES/django.po b/locale/pl_PL/LC_MESSAGES/django.po
index afad6b272c..0c6a59409a 100644
--- a/locale/pl_PL/LC_MESSAGES/django.po
+++ b/locale/pl_PL/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-01-30 08:21+0000\n"
-"PO-Revision-Date: 2023-01-30 17:35\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-04-26 00:45\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Polish\n"
"Language: pl\n"
@@ -46,7 +46,7 @@ msgstr "Nieskończone"
msgid "Incorrect password"
msgstr "Niepoprawne hasło"
-#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
msgid "Password does not match"
msgstr "Hasła nie są identyczne"
@@ -70,19 +70,19 @@ msgstr "Data wstrzymania czytania nie może być w przyszłości."
msgid "Reading finished date cannot be in the future."
msgstr "Data zakończenia czytania nie może być w przyszłości."
-#: bookwyrm/forms/landing.py:37
+#: bookwyrm/forms/landing.py:38
msgid "Username or password are incorrect"
msgstr "Niepoprawna nazwa użytkownika lub hasło"
-#: bookwyrm/forms/landing.py:56
+#: bookwyrm/forms/landing.py:57
msgid "User with this username already exists"
msgstr "Ta nazwa użytkownika jest już używana"
-#: bookwyrm/forms/landing.py:65
+#: bookwyrm/forms/landing.py:66
msgid "A user with this email already exists."
msgstr "Ten adres e-mail jest już w użyciu."
-#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
msgid "Incorrect code"
msgstr "Niepoprawny kod"
@@ -205,26 +205,26 @@ msgstr "Federacja"
msgid "Blocked"
msgstr "Zablokowane"
-#: bookwyrm/models/fields.py:28
+#: bookwyrm/models/fields.py:29
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s nie jest prawidłowym remote_id"
-#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s nie jest prawidłową nazwą użytkownika"
-#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "nazwa użytkownika"
-#: bookwyrm/models/fields.py:187
+#: bookwyrm/models/fields.py:197
msgid "A user with that username already exists."
msgstr "Ta nazwa użytkownika jest już w użyciu."
-#: bookwyrm/models/fields.py:206
+#: bookwyrm/models/fields.py:216
#: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11
@@ -232,7 +232,7 @@ msgstr "Ta nazwa użytkownika jest już w użyciu."
msgid "Public"
msgstr "Publiczne"
-#: bookwyrm/models/fields.py:207
+#: bookwyrm/models/fields.py:217
#: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14
@@ -240,14 +240,14 @@ msgstr "Publiczne"
msgid "Unlisted"
msgstr "Niepubliczne"
-#: bookwyrm/models/fields.py:208
+#: bookwyrm/models/fields.py:218
#: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers"
msgstr "Obserwujący"
-#: bookwyrm/models/fields.py:209
+#: bookwyrm/models/fields.py:219
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
@@ -275,11 +275,11 @@ msgstr "Wstrzymane"
msgid "Import stopped"
msgstr "Import wstrzymany"
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr "Błąd wczytywania książki"
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr "Nie znaleziono pasującej książki"
@@ -300,7 +300,7 @@ msgstr "Do wypożyczenia"
msgid "Approved"
msgstr "Zatwierdzone"
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr "Oceny"
@@ -316,19 +316,19 @@ msgstr "Cytaty"
msgid "Everything else"
msgstr "Wszystko inne"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr "Strona główna"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr "Start"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr "Oś czasu książek"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -336,75 +336,79 @@ msgstr "Oś czasu książek"
msgid "Books"
msgstr "Książki"
-#: bookwyrm/settings.py:290
+#: bookwyrm/settings.py:294
msgid "English"
msgstr "English (Angielski)"
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr "Català (Kataloński)"
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr "Deutsch (Niemiecki)"
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr "Esperanto (Esperanto)"
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr "Español (Hiszpański)"
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
msgstr ""
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr "Galego (Galicyjski)"
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr "Italiano (Włoski)"
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr "Suomi (Fiński)"
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr "Français (Francuski)"
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr "Lietuvių (Litewski)"
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr "Norsk (Norweski)"
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr "Polski"
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr "Português do Brasil (Brazylijski Portugalski)"
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Portugalski)"
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr "Română (Rumuński)"
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr "Svenska (Szwedzki)"
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr "简体中文 (Uproszczony chiński)"
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr "繁體中文 (Tradycyjny chiński)"
@@ -434,7 +438,7 @@ msgid "About"
msgstr "Informacje"
#: bookwyrm/templates/about/about.html:21
-#: bookwyrm/templates/get_started/layout.html:20
+#: bookwyrm/templates/get_started/layout.html:22
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "Witaj na %(site_name)s!"
@@ -624,7 +628,7 @@ msgstr "Najkrócej wczytano się w…"
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -716,24 +720,24 @@ msgid "View ISNI record"
msgstr "Zobacz wpis ISNI"
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:164
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
msgstr ""
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:131
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Wczytaj dane"
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:135
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr "Pokaż na OpenLibrary"
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:149
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr "Pokaż na Inventaire"
@@ -842,15 +846,15 @@ msgid "ISNI:"
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:209
-#: bookwyrm/templates/book/edit/edit_book.html:142
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
#: bookwyrm/templates/groups/form.html:32
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -866,10 +870,10 @@ msgstr "Zapisz"
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:210
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
-#: bookwyrm/templates/book/edit/edit_book.html:144
-#: bookwyrm/templates/book/edit/edit_book.html:147
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:25
#: bookwyrm/templates/book/sync_modal.html:23
@@ -893,7 +897,7 @@ msgid "Loading data will connect to %(source_name)s and check f
msgstr "Wczytanie danych spowoduje połączenie z %(source_name)s i sprawdzenie jakichkolwiek metadanych o tym autorze, które nie są tutaj obecne. Istniejące metadane nie zostaną zastąpione."
#: bookwyrm/templates/author/sync_modal.html:24
-#: bookwyrm/templates/book/edit/edit_book.html:129
+#: bookwyrm/templates/book/edit/edit_book.html:137
#: bookwyrm/templates/book/sync_modal.html:24
#: bookwyrm/templates/groups/members.html:29
#: bookwyrm/templates/landing/password_reset.html:52
@@ -903,27 +907,27 @@ msgstr "Wczytanie danych spowoduje połączenie z %(source_name)sdifferent edition of this book is on your %(shelf_name)s shelf."
msgstr "Inna edycja tej książki znajduje się już na Twojej półce %(shelf_name)s ."
-#: bookwyrm/templates/book/book.html:261
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr "Twoja aktywność czytania"
-#: bookwyrm/templates/book/book.html:267
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr "Dodaj daty czytania"
-#: bookwyrm/templates/book/book.html:275
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr "Nie masz żadnej aktywności czytania dla tej książki."
-#: bookwyrm/templates/book/book.html:301
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr "Twoje opinie"
-#: bookwyrm/templates/book/book.html:307
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr "Twoje komentarze"
-#: bookwyrm/templates/book/book.html:313
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr "Twoje cytaty"
-#: bookwyrm/templates/book/book.html:349
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr "Tematy"
-#: bookwyrm/templates/book/book.html:361
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr "Miejsca"
-#: bookwyrm/templates/book/book.html:372
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
-#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@@ -1007,11 +1011,11 @@ msgstr "Miejsca"
msgid "Lists"
msgstr "Listy"
-#: bookwyrm/templates/book/book.html:384
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr "Dodaj do listy"
-#: bookwyrm/templates/book/book.html:394
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1071,8 +1075,8 @@ msgstr "Podgląd okładki"
#: bookwyrm/templates/components/modal.html:13
#: bookwyrm/templates/components/modal.html:30
#: bookwyrm/templates/feed/suggested_books.html:67
-#: bookwyrm/templates/get_started/layout.html:25
-#: bookwyrm/templates/get_started/layout.html:58
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
msgid "Close"
msgstr "Zamknij"
@@ -1087,47 +1091,51 @@ msgstr "Edytuj \"%(book_title)s\""
msgid "Add Book"
msgstr "Dodaj książkę"
-#: bookwyrm/templates/book/edit/edit_book.html:62
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr ""
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
msgid "Confirm Book Info"
msgstr "Potwierdź informacje o książce"
-#: bookwyrm/templates/book/edit/edit_book.html:70
+#: bookwyrm/templates/book/edit/edit_book.html:78
#, python-format
msgid "Is \"%(name)s\" one of these authors?"
msgstr "Czy \"%(name)s\" jest jednym z tych autorów?"
-#: bookwyrm/templates/book/edit/edit_book.html:81
+#: bookwyrm/templates/book/edit/edit_book.html:89
#, python-format
msgid "Author of %(book_title)s "
msgstr "Autor %(book_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:85
+#: bookwyrm/templates/book/edit/edit_book.html:93
#, python-format
msgid "Author of %(alt_title)s "
msgstr "Autor %(alt_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:87
+#: bookwyrm/templates/book/edit/edit_book.html:95
msgid "Find more information at isni.org"
msgstr "Dowiedz się więcej na isni.org"
-#: bookwyrm/templates/book/edit/edit_book.html:97
+#: bookwyrm/templates/book/edit/edit_book.html:105
msgid "This is a new author"
msgstr "To jest nowy autor"
-#: bookwyrm/templates/book/edit/edit_book.html:107
+#: bookwyrm/templates/book/edit/edit_book.html:115
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "Tworzenie nowego autora: %(name)s"
-#: bookwyrm/templates/book/edit/edit_book.html:114
+#: bookwyrm/templates/book/edit/edit_book.html:122
msgid "Is this an edition of an existing work?"
msgstr "Czy to jest edycja istniejącego dzieła?"
-#: bookwyrm/templates/book/edit/edit_book.html:122
+#: bookwyrm/templates/book/edit/edit_book.html:130
msgid "This is a new work"
msgstr "To jest nowe dzieło"
-#: bookwyrm/templates/book/edit/edit_book.html:131
+#: bookwyrm/templates/book/edit/edit_book.html:139
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
@@ -1482,6 +1490,19 @@ msgstr "Opublikowane przez %(publisher)s."
msgid "rated it"
msgstr "ocenia to"
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr ""
+
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
@@ -1680,7 +1701,7 @@ msgstr "%(username)s cytuje %(related_user)s oraz %(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
msgstr "%(related_user)s i jeszcze %(other_user_display_count)s osób opuszczają Twoją grupę \"%(group_name)s \""
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
msgid "%(related_user)s mentioned you in a review of %(book_title)s "
@@ -4035,6 +4084,11 @@ msgstr "Ukryj obserwujących i obserwowanych na profilu"
msgid "Default post privacy:"
msgstr "Domyślna prywatność wpisu:"
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr ""
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4464,63 +4518,80 @@ msgid "Celery Status"
msgstr "Status Celery"
#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:22
msgid "Queues"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:18
+#: bookwyrm/templates/settings/celery.html:26
msgid "Low priority"
msgstr "Niski priorytet"
-#: bookwyrm/templates/settings/celery.html:24
+#: bookwyrm/templates/settings/celery.html:32
msgid "Medium priority"
msgstr "Średni priorytet"
-#: bookwyrm/templates/settings/celery.html:30
+#: bookwyrm/templates/settings/celery.html:38
msgid "High priority"
msgstr "Wysoki priorytet"
-#: bookwyrm/templates/settings/celery.html:46
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:60
msgid "Could not connect to Redis broker"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:54
+#: bookwyrm/templates/settings/celery.html:68
msgid "Active Tasks"
msgstr "Aktywne zadania"
-#: bookwyrm/templates/settings/celery.html:59
+#: bookwyrm/templates/settings/celery.html:73
#: bookwyrm/templates/settings/imports/imports.html:113
msgid "ID"
msgstr "ID"
-#: bookwyrm/templates/settings/celery.html:60
+#: bookwyrm/templates/settings/celery.html:74
msgid "Task name"
msgstr "Nazwa zadania"
-#: bookwyrm/templates/settings/celery.html:61
+#: bookwyrm/templates/settings/celery.html:75
msgid "Run time"
msgstr "Czas wykonywania"
-#: bookwyrm/templates/settings/celery.html:62
+#: bookwyrm/templates/settings/celery.html:76
msgid "Priority"
msgstr "Priorytet"
-#: bookwyrm/templates/settings/celery.html:67
+#: bookwyrm/templates/settings/celery.html:81
msgid "No active tasks"
msgstr "Brak aktywnych zadań"
-#: bookwyrm/templates/settings/celery.html:85
+#: bookwyrm/templates/settings/celery.html:99
msgid "Workers"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:90
+#: bookwyrm/templates/settings/celery.html:104
msgid "Uptime:"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:100
+#: bookwyrm/templates/settings/celery.html:114
msgid "Could not connect to Celery"
msgstr "Błąd połączenia z Celery"
-#: bookwyrm/templates/settings/celery.html:107
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr "Błędy"
@@ -4893,7 +4964,7 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:36
@@ -5727,11 +5798,11 @@ msgstr "Pokaż instrukcje instalacji"
msgid "Instance Setup"
msgstr "Konfiguracja instancji"
-#: bookwyrm/templates/setup/layout.html:19
+#: bookwyrm/templates/setup/layout.html:21
msgid "Installing BookWyrm"
msgstr "Instalowanie BookWyrm"
-#: bookwyrm/templates/setup/layout.html:22
+#: bookwyrm/templates/setup/layout.html:24
msgid "Need help?"
msgstr "Potrzebujesz pomocy?"
@@ -5749,7 +5820,7 @@ msgid "User profile"
msgstr "Profil użytkownika"
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr "Wszystkie książki"
@@ -5827,7 +5898,7 @@ msgstr[1] "i jeszcze %(remainder_count_display)s"
msgstr[2] "i jeszcze %(remainder_count_display)s"
msgstr[3] "i jeszcze %(remainder_count_display)s"
-#: bookwyrm/templates/snippets/book_cover.html:61
+#: bookwyrm/templates/snippets/book_cover.html:63
msgid "No cover"
msgstr "Brak okładki"
@@ -5927,6 +5998,10 @@ msgstr "Na stronie:"
msgid "At percent:"
msgstr ""
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr ""
+
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
@@ -6115,10 +6190,18 @@ msgstr "strona %(page)s z %(total_pages)s"
msgid "page %(page)s"
msgstr "strona %(page)s"
-#: bookwyrm/templates/snippets/pagination.html:12
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr ""
+
+#: bookwyrm/templates/snippets/pagination.html:15
msgid "Previous"
msgstr ""
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr ""
+
#: bookwyrm/templates/snippets/privacy-icons.html:12
msgid "Followers-only"
msgstr "Tylko obserwujący"
@@ -6247,19 +6330,29 @@ msgstr "Pokaż status"
#: bookwyrm/templates/snippets/status/content_status.html:102
#, python-format
-msgid "(Page %(page)s)"
-msgstr "(Strona %(page)s)"
+msgid "(Page %(page)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:104
#, python-format
-msgid "(%(percent)s%%)"
-msgstr "(%(percent)s%%)"
+msgid "(%(percent)s%%"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid " - %(endpercent)s%%"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:127
msgid "Open image in new window"
msgstr "Otwórz obraz w nowym oknie"
-#: bookwyrm/templates/snippets/status/content_status.html:146
+#: bookwyrm/templates/snippets/status/content_status.html:148
msgid "Hide status"
msgstr "Ukryj status"
diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo
index 9fa2e62f62..9acc649431 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 8db75f4b71..2b43027e5d 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: 2023-01-30 08:21+0000\n"
-"PO-Revision-Date: 2023-01-30 17:36\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-04-26 00:45\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt\n"
@@ -46,7 +46,7 @@ msgstr "Ilimitado"
msgid "Incorrect password"
msgstr "Senha incorreta"
-#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
msgid "Password does not match"
msgstr "As senhas não correspondem"
@@ -70,19 +70,19 @@ msgstr "A data de término da leitura não pode estar no futuro."
msgid "Reading finished date cannot be in the future."
msgstr ""
-#: bookwyrm/forms/landing.py:37
+#: bookwyrm/forms/landing.py:38
msgid "Username or password are incorrect"
msgstr "Nome de usuário ou senha incorretos"
-#: bookwyrm/forms/landing.py:56
+#: bookwyrm/forms/landing.py:57
msgid "User with this username already exists"
msgstr "Um usuário com este nome já existe"
-#: bookwyrm/forms/landing.py:65
+#: bookwyrm/forms/landing.py:66
msgid "A user with this email already exists."
msgstr "Já existe um usuário com este endereço de e-mail."
-#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
msgid "Incorrect code"
msgstr "Código incorreto"
@@ -205,26 +205,26 @@ msgstr "Federado"
msgid "Blocked"
msgstr "Bloqueado"
-#: bookwyrm/models/fields.py:28
+#: bookwyrm/models/fields.py:29
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s não é um remote_id válido"
-#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s não é um nome de usuário válido"
-#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "nome de usuário"
-#: bookwyrm/models/fields.py:187
+#: bookwyrm/models/fields.py:197
msgid "A user with that username already exists."
msgstr "Já existe um usuário com este nome."
-#: bookwyrm/models/fields.py:206
+#: bookwyrm/models/fields.py:216
#: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11
@@ -232,7 +232,7 @@ msgstr "Já existe um usuário com este nome."
msgid "Public"
msgstr "Público"
-#: bookwyrm/models/fields.py:207
+#: bookwyrm/models/fields.py:217
#: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14
@@ -240,14 +240,14 @@ msgstr "Público"
msgid "Unlisted"
msgstr "Não listado"
-#: bookwyrm/models/fields.py:208
+#: bookwyrm/models/fields.py:218
#: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers"
msgstr "Seguidores"
-#: bookwyrm/models/fields.py:209
+#: bookwyrm/models/fields.py:219
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
@@ -275,11 +275,11 @@ msgstr "Parado"
msgid "Import stopped"
msgstr ""
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr "Erro ao carregar livro"
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr "Não foi possível encontrar o livro"
@@ -300,7 +300,7 @@ msgstr "Disponível para empréstimo"
msgid "Approved"
msgstr "Aprovado"
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr "Resenhas"
@@ -316,19 +316,19 @@ msgstr "Citações"
msgid "Everything else"
msgstr "Todo o resto"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr "Linha do tempo"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr "Página inicial"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr "Linha do tempo dos livros"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -336,75 +336,79 @@ msgstr "Linha do tempo dos livros"
msgid "Books"
msgstr "Livros"
-#: bookwyrm/settings.py:290
+#: bookwyrm/settings.py:294
msgid "English"
msgstr "English (Inglês)"
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr ""
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr "Deutsch (Alemão)"
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr ""
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr "Español (Espanhol)"
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
msgstr ""
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr "Galego (Galego)"
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr "Italiano (Italiano)"
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr "Suomi (Finlandês)"
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr "Français (Francês)"
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr "Lietuvių (Lituano)"
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr "Norsk (Norueguês)"
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr ""
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr "Português do Brasil (Português do Brasil)"
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Português Europeu)"
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr "Română (Romeno)"
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr "Svenska (Sueco)"
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr "简体中文 (Chinês simplificado)"
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr "繁體中文 (Chinês tradicional)"
@@ -434,7 +438,7 @@ msgid "About"
msgstr "Sobre"
#: bookwyrm/templates/about/about.html:21
-#: bookwyrm/templates/get_started/layout.html:20
+#: bookwyrm/templates/get_started/layout.html:22
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "Bem-vindol(a) a %(site_name)s!"
@@ -620,7 +624,7 @@ msgstr "A leitura mais curta do ano…"
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -708,24 +712,24 @@ msgid "View ISNI record"
msgstr "Ver registro ISNI"
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:164
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
msgstr ""
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:131
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Carregar informações"
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:135
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr "Ver na OpenLibrary"
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:149
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr "Ver no Inventaire"
@@ -834,15 +838,15 @@ msgid "ISNI:"
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:209
-#: bookwyrm/templates/book/edit/edit_book.html:142
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
#: bookwyrm/templates/groups/form.html:32
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -858,10 +862,10 @@ msgstr "Salvar"
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:210
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
-#: bookwyrm/templates/book/edit/edit_book.html:144
-#: bookwyrm/templates/book/edit/edit_book.html:147
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:25
#: bookwyrm/templates/book/sync_modal.html:23
@@ -885,7 +889,7 @@ msgid "Loading data will connect to %(source_name)s and check f
msgstr "Para carregar informações nos conectaremos a %(source_name)s e buscaremos metadados que ainda não temos sobre este/a autor/a. Metadados já existentes não serão substituídos."
#: bookwyrm/templates/author/sync_modal.html:24
-#: bookwyrm/templates/book/edit/edit_book.html:129
+#: bookwyrm/templates/book/edit/edit_book.html:137
#: bookwyrm/templates/book/sync_modal.html:24
#: bookwyrm/templates/groups/members.html:29
#: bookwyrm/templates/landing/password_reset.html:52
@@ -895,98 +899,98 @@ msgstr "Para carregar informações nos conectaremos a %(source_name)s
msgid "Confirm"
msgstr "Confirmar"
-#: bookwyrm/templates/book/book.html:19
+#: bookwyrm/templates/book/book.html:20
msgid "Unable to connect to remote source."
msgstr "Não conseguimos nos conectar à fonte remota."
-#: bookwyrm/templates/book/book.html:64 bookwyrm/templates/book/book.html:65
+#: bookwyrm/templates/book/book.html:71 bookwyrm/templates/book/book.html:72
msgid "Edit Book"
msgstr "Editar livro"
-#: bookwyrm/templates/book/book.html:88 bookwyrm/templates/book/book.html:91
+#: bookwyrm/templates/book/book.html:97 bookwyrm/templates/book/book.html:100
msgid "Click to add cover"
msgstr "Clique para adicionar uma capa"
-#: bookwyrm/templates/book/book.html:97
+#: bookwyrm/templates/book/book.html:106
msgid "Failed to load cover"
msgstr "Erro ao carregar capa"
-#: bookwyrm/templates/book/book.html:108
+#: bookwyrm/templates/book/book.html:117
msgid "Click to enlarge"
msgstr "Clique para aumentar"
-#: bookwyrm/templates/book/book.html:186
+#: bookwyrm/templates/book/book.html:195
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
msgstr[0] "(%(review_count)s resenha)"
msgstr[1] "(%(review_count)s resenhas)"
-#: bookwyrm/templates/book/book.html:198
+#: bookwyrm/templates/book/book.html:207
msgid "Add Description"
msgstr "Adicionar descrição"
-#: bookwyrm/templates/book/book.html:205
+#: bookwyrm/templates/book/book.html:214
#: bookwyrm/templates/book/edit/edit_book_form.html:42
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "Descrição:"
-#: bookwyrm/templates/book/book.html:221
+#: bookwyrm/templates/book/book.html:230
#, python-format
msgid "%(count)s edition"
msgid_plural "%(count)s editions"
msgstr[0] "%(count)s edição"
msgstr[1] "%(count)s edições"
-#: bookwyrm/templates/book/book.html:235
+#: bookwyrm/templates/book/book.html:244
msgid "You have shelved this edition in:"
msgstr "Você colocou esta edição na estante em:"
-#: bookwyrm/templates/book/book.html:250
+#: bookwyrm/templates/book/book.html:259
#, python-format
msgid "A different edition of this book is on your %(shelf_name)s shelf."
msgstr "Uma edição diferente deste livro está em sua estante %(shelf_name)s ."
-#: bookwyrm/templates/book/book.html:261
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr "Andamento da sua leitura"
-#: bookwyrm/templates/book/book.html:267
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr "Adicionar registro de leitura"
-#: bookwyrm/templates/book/book.html:275
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr "Você ainda não registrou sua leitura."
-#: bookwyrm/templates/book/book.html:301
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr "Suas resenhas"
-#: bookwyrm/templates/book/book.html:307
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr "Seus comentários"
-#: bookwyrm/templates/book/book.html:313
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr "Suas citações"
-#: bookwyrm/templates/book/book.html:349
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr "Assuntos"
-#: bookwyrm/templates/book/book.html:361
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr "Lugares"
-#: bookwyrm/templates/book/book.html:372
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
-#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@@ -995,11 +999,11 @@ msgstr "Lugares"
msgid "Lists"
msgstr "Listas"
-#: bookwyrm/templates/book/book.html:384
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr "Adicionar à lista"
-#: bookwyrm/templates/book/book.html:394
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1059,8 +1063,8 @@ msgstr "Pré-visualização da capa"
#: bookwyrm/templates/components/modal.html:13
#: bookwyrm/templates/components/modal.html:30
#: bookwyrm/templates/feed/suggested_books.html:67
-#: bookwyrm/templates/get_started/layout.html:25
-#: bookwyrm/templates/get_started/layout.html:58
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
msgid "Close"
msgstr "Fechar"
@@ -1075,47 +1079,51 @@ msgstr "Editar \"%(book_title)s\""
msgid "Add Book"
msgstr "Adicionar livro"
-#: bookwyrm/templates/book/edit/edit_book.html:62
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr ""
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
msgid "Confirm Book Info"
msgstr "Confirmar informações do livro"
-#: bookwyrm/templates/book/edit/edit_book.html:70
+#: bookwyrm/templates/book/edit/edit_book.html:78
#, python-format
msgid "Is \"%(name)s\" one of these authors?"
msgstr "\"%(name)s\" é uma das pessoas citadas abaixo?"
-#: bookwyrm/templates/book/edit/edit_book.html:81
+#: bookwyrm/templates/book/edit/edit_book.html:89
#, python-format
msgid "Author of %(book_title)s "
msgstr ""
-#: bookwyrm/templates/book/edit/edit_book.html:85
+#: bookwyrm/templates/book/edit/edit_book.html:93
#, python-format
msgid "Author of %(alt_title)s "
msgstr ""
-#: bookwyrm/templates/book/edit/edit_book.html:87
+#: bookwyrm/templates/book/edit/edit_book.html:95
msgid "Find more information at isni.org"
msgstr "Conheça mais em isni.org"
-#: bookwyrm/templates/book/edit/edit_book.html:97
+#: bookwyrm/templates/book/edit/edit_book.html:105
msgid "This is a new author"
msgstr "É um/a novo/a autor/a"
-#: bookwyrm/templates/book/edit/edit_book.html:107
+#: bookwyrm/templates/book/edit/edit_book.html:115
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "Criando um/a novo/a autor/a: %(name)s"
-#: bookwyrm/templates/book/edit/edit_book.html:114
+#: bookwyrm/templates/book/edit/edit_book.html:122
msgid "Is this an edition of an existing work?"
msgstr "É uma edição de uma obra já registrada?"
-#: bookwyrm/templates/book/edit/edit_book.html:122
+#: bookwyrm/templates/book/edit/edit_book.html:130
msgid "This is a new work"
msgstr "É uma nova obra"
-#: bookwyrm/templates/book/edit/edit_book.html:131
+#: bookwyrm/templates/book/edit/edit_book.html:139
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
@@ -1470,6 +1478,19 @@ msgstr "Publicado por %(publisher)s."
msgid "rated it"
msgstr "avaliou este livro"
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr ""
+
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
@@ -1664,7 +1685,7 @@ msgstr "%(username)s citou %(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
msgstr ""
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] ""
+msgstr[1] ""
+
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
msgid "%(related_user)s mentioned you in a review of %(book_title)s "
@@ -4005,6 +4052,11 @@ msgstr "Esconder quem sigo e seguidores no perfil"
msgid "Default post privacy:"
msgstr "Privacidade padrão das publicações:"
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr ""
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4430,63 +4482,80 @@ msgid "Celery Status"
msgstr ""
#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:22
msgid "Queues"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:18
+#: bookwyrm/templates/settings/celery.html:26
msgid "Low priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:24
+#: bookwyrm/templates/settings/celery.html:32
msgid "Medium priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:30
+#: bookwyrm/templates/settings/celery.html:38
msgid "High priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:46
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:60
msgid "Could not connect to Redis broker"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:54
+#: bookwyrm/templates/settings/celery.html:68
msgid "Active Tasks"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:59
+#: bookwyrm/templates/settings/celery.html:73
#: bookwyrm/templates/settings/imports/imports.html:113
msgid "ID"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:60
+#: bookwyrm/templates/settings/celery.html:74
msgid "Task name"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:61
+#: bookwyrm/templates/settings/celery.html:75
msgid "Run time"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:62
+#: bookwyrm/templates/settings/celery.html:76
msgid "Priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:67
+#: bookwyrm/templates/settings/celery.html:81
msgid "No active tasks"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:85
+#: bookwyrm/templates/settings/celery.html:99
msgid "Workers"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:90
+#: bookwyrm/templates/settings/celery.html:104
msgid "Uptime:"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:100
+#: bookwyrm/templates/settings/celery.html:114
msgid "Could not connect to Celery"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:107
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr ""
@@ -4851,7 +4920,7 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:36
@@ -5685,11 +5754,11 @@ msgstr "Ver instruções da instalação"
msgid "Instance Setup"
msgstr "Configuração da instância"
-#: bookwyrm/templates/setup/layout.html:19
+#: bookwyrm/templates/setup/layout.html:21
msgid "Installing BookWyrm"
msgstr "Instalando a BookWyrm"
-#: bookwyrm/templates/setup/layout.html:22
+#: bookwyrm/templates/setup/layout.html:24
msgid "Need help?"
msgstr "Precisa de ajuda?"
@@ -5707,7 +5776,7 @@ msgid "User profile"
msgstr "Perfil do usuário"
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr "Todos os livros"
@@ -5781,7 +5850,7 @@ msgid_plural "and %(remainder_count_display)s others"
msgstr[0] "e %(remainder_count_display)s outro"
msgstr[1] "e %(remainder_count_display)s outros"
-#: bookwyrm/templates/snippets/book_cover.html:61
+#: bookwyrm/templates/snippets/book_cover.html:63
msgid "No cover"
msgstr "Sem capa"
@@ -5881,6 +5950,10 @@ msgstr "Na página:"
msgid "At percent:"
msgstr "Na porcentagem:"
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr ""
+
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
@@ -6059,10 +6132,18 @@ msgstr "página %(page)s de %(total_pages)s"
msgid "page %(page)s"
msgstr "página %(page)s"
-#: bookwyrm/templates/snippets/pagination.html:12
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr ""
+
+#: bookwyrm/templates/snippets/pagination.html:15
msgid "Previous"
msgstr "Anterior"
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr ""
+
#: bookwyrm/templates/snippets/privacy-icons.html:12
msgid "Followers-only"
msgstr "Apenas seguidores"
@@ -6191,19 +6272,29 @@ msgstr "Mostrar publicação"
#: bookwyrm/templates/snippets/status/content_status.html:102
#, python-format
-msgid "(Page %(page)s)"
-msgstr "(Página %(page)s)"
+msgid "(Page %(page)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:104
#, python-format
-msgid "(%(percent)s%%)"
-msgstr "(%(percent)s%%)"
+msgid "(%(percent)s%%"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid " - %(endpercent)s%%"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:127
msgid "Open image in new window"
msgstr "Abrir imagem em nova janela"
-#: bookwyrm/templates/snippets/status/content_status.html:146
+#: bookwyrm/templates/snippets/status/content_status.html:148
msgid "Hide status"
msgstr "Esconder publicação"
diff --git a/locale/pt_PT/LC_MESSAGES/django.mo b/locale/pt_PT/LC_MESSAGES/django.mo
index c86d5ff251..bfd64697bd 100644
Binary files a/locale/pt_PT/LC_MESSAGES/django.mo and b/locale/pt_PT/LC_MESSAGES/django.mo differ
diff --git a/locale/pt_PT/LC_MESSAGES/django.po b/locale/pt_PT/LC_MESSAGES/django.po
index e12cb5a505..b163551589 100644
--- a/locale/pt_PT/LC_MESSAGES/django.po
+++ b/locale/pt_PT/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-01-30 08:21+0000\n"
-"PO-Revision-Date: 2023-01-30 17:36\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-04-26 00:45\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Portuguese\n"
"Language: pt\n"
@@ -46,7 +46,7 @@ msgstr "Ilimitado"
msgid "Incorrect password"
msgstr ""
-#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
msgid "Password does not match"
msgstr ""
@@ -70,19 +70,19 @@ msgstr ""
msgid "Reading finished date cannot be in the future."
msgstr ""
-#: bookwyrm/forms/landing.py:37
+#: bookwyrm/forms/landing.py:38
msgid "Username or password are incorrect"
msgstr "Nome de utilizador ou palavra-passe incorretos"
-#: bookwyrm/forms/landing.py:56
+#: bookwyrm/forms/landing.py:57
msgid "User with this username already exists"
msgstr "Já existe um utilizador com este nome"
-#: bookwyrm/forms/landing.py:65
+#: bookwyrm/forms/landing.py:66
msgid "A user with this email already exists."
msgstr "Já existe um utilizador com este E-Mail."
-#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
msgid "Incorrect code"
msgstr ""
@@ -205,26 +205,26 @@ msgstr "Federado"
msgid "Blocked"
msgstr "Bloqueado"
-#: bookwyrm/models/fields.py:28
+#: bookwyrm/models/fields.py:29
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s não é um remote_id válido"
-#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s não é um nome de utilizador válido"
-#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "nome de utilizador"
-#: bookwyrm/models/fields.py:187
+#: bookwyrm/models/fields.py:197
msgid "A user with that username already exists."
msgstr "Um utilizador com o mesmo nome de utilizador já existe."
-#: bookwyrm/models/fields.py:206
+#: bookwyrm/models/fields.py:216
#: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11
@@ -232,7 +232,7 @@ msgstr "Um utilizador com o mesmo nome de utilizador já existe."
msgid "Public"
msgstr "Público"
-#: bookwyrm/models/fields.py:207
+#: bookwyrm/models/fields.py:217
#: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14
@@ -240,14 +240,14 @@ msgstr "Público"
msgid "Unlisted"
msgstr "Não listado"
-#: bookwyrm/models/fields.py:208
+#: bookwyrm/models/fields.py:218
#: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers"
msgstr "Seguidores"
-#: bookwyrm/models/fields.py:209
+#: bookwyrm/models/fields.py:219
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
@@ -275,11 +275,11 @@ msgstr ""
msgid "Import stopped"
msgstr ""
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr "Erro ao carregar o livro"
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr "Não foi possível encontrar um resultado para o livro pedido"
@@ -300,7 +300,7 @@ msgstr "Disponível para empréstimo"
msgid "Approved"
msgstr "Aprovado"
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr "Criticas"
@@ -316,19 +316,19 @@ msgstr "Citações"
msgid "Everything else"
msgstr "Tudo o resto"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr "Cronograma Inicial"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr "Início"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr "Cronograma de Livros"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -336,75 +336,79 @@ msgstr "Cronograma de Livros"
msgid "Books"
msgstr "Livros"
-#: bookwyrm/settings.py:290
+#: bookwyrm/settings.py:294
msgid "English"
msgstr "Inglês"
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr ""
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr "Deutsch (Alemão)"
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr ""
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr "Español (Espanhol)"
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
msgstr ""
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr "Galego (Galician)"
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr "Italiano (Italiano)"
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr "Suomi (finlandês)"
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr "Français (Francês)"
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr "Lietuvių (lituano)"
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr "Norsk (Norueguês)"
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr ""
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr "Português do Brasil (Português brasileiro)"
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr "Português (Português Europeu)"
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr "Română (Romeno)"
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr "Svenska (sueco)"
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr "简体中文 (Chinês simplificado)"
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr "繁體中文 (Chinês tradicional)"
@@ -434,7 +438,7 @@ msgid "About"
msgstr "Sobre"
#: bookwyrm/templates/about/about.html:21
-#: bookwyrm/templates/get_started/layout.html:20
+#: bookwyrm/templates/get_started/layout.html:22
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "Bem-vindo(a) ao %(site_name)s!"
@@ -620,7 +624,7 @@ msgstr "A sua menor leitura este ano…"
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -708,24 +712,24 @@ msgid "View ISNI record"
msgstr "Ver registro do ISNI"
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:164
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
msgstr "Ver no ISFDB"
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:131
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Carregar dados"
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:135
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr "Ver na OpenLibrary"
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:149
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr "Ver no Inventaire"
@@ -834,15 +838,15 @@ msgid "ISNI:"
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:209
-#: bookwyrm/templates/book/edit/edit_book.html:142
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
#: bookwyrm/templates/groups/form.html:32
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -858,10 +862,10 @@ msgstr "Salvar"
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:210
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
-#: bookwyrm/templates/book/edit/edit_book.html:144
-#: bookwyrm/templates/book/edit/edit_book.html:147
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:25
#: bookwyrm/templates/book/sync_modal.html:23
@@ -885,7 +889,7 @@ msgid "Loading data will connect to %(source_name)s and check f
msgstr "Carregar os dados irá conectar a %(source_name)s e verificar se há metadados sobre este autor que não estão aqui presentes. Os metadados existentes não serão substituídos."
#: bookwyrm/templates/author/sync_modal.html:24
-#: bookwyrm/templates/book/edit/edit_book.html:129
+#: bookwyrm/templates/book/edit/edit_book.html:137
#: bookwyrm/templates/book/sync_modal.html:24
#: bookwyrm/templates/groups/members.html:29
#: bookwyrm/templates/landing/password_reset.html:52
@@ -895,98 +899,98 @@ msgstr "Carregar os dados irá conectar a %(source_name)s e ver
msgid "Confirm"
msgstr "Confirmar"
-#: bookwyrm/templates/book/book.html:19
+#: bookwyrm/templates/book/book.html:20
msgid "Unable to connect to remote source."
msgstr "Não foi possível conectar à fonte remota."
-#: bookwyrm/templates/book/book.html:64 bookwyrm/templates/book/book.html:65
+#: bookwyrm/templates/book/book.html:71 bookwyrm/templates/book/book.html:72
msgid "Edit Book"
msgstr "Editar Livro"
-#: bookwyrm/templates/book/book.html:88 bookwyrm/templates/book/book.html:91
+#: bookwyrm/templates/book/book.html:97 bookwyrm/templates/book/book.html:100
msgid "Click to add cover"
msgstr "Clica para adicionar capa"
-#: bookwyrm/templates/book/book.html:97
+#: bookwyrm/templates/book/book.html:106
msgid "Failed to load cover"
msgstr "Não foi possível carregar a capa"
-#: bookwyrm/templates/book/book.html:108
+#: bookwyrm/templates/book/book.html:117
msgid "Click to enlarge"
msgstr "Clica para ampliar"
-#: bookwyrm/templates/book/book.html:186
+#: bookwyrm/templates/book/book.html:195
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
msgstr[0] "(%(review_count)s crítica)"
msgstr[1] "(%(review_count)s criticas)"
-#: bookwyrm/templates/book/book.html:198
+#: bookwyrm/templates/book/book.html:207
msgid "Add Description"
msgstr "Adicionar uma descrição"
-#: bookwyrm/templates/book/book.html:205
+#: bookwyrm/templates/book/book.html:214
#: bookwyrm/templates/book/edit/edit_book_form.html:42
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "Descrição:"
-#: bookwyrm/templates/book/book.html:221
+#: bookwyrm/templates/book/book.html:230
#, python-format
msgid "%(count)s edition"
msgid_plural "%(count)s editions"
msgstr[0] ""
msgstr[1] ""
-#: bookwyrm/templates/book/book.html:235
+#: bookwyrm/templates/book/book.html:244
msgid "You have shelved this edition in:"
msgstr "Tu arquivaste esta edição em:"
-#: bookwyrm/templates/book/book.html:250
+#: bookwyrm/templates/book/book.html:259
#, python-format
msgid "A different edition of this book is on your %(shelf_name)s shelf."
msgstr "Uma edição diferente deste livro está na tua prateleira %(shelf_name)s ."
-#: bookwyrm/templates/book/book.html:261
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr "A tua atividade de leitura"
-#: bookwyrm/templates/book/book.html:267
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr "Adicionar datas de leitura"
-#: bookwyrm/templates/book/book.html:275
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr "Não tem nenhuma atividade de leitura para este livro."
-#: bookwyrm/templates/book/book.html:301
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr "As tuas criticas"
-#: bookwyrm/templates/book/book.html:307
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr "Os teus comentários"
-#: bookwyrm/templates/book/book.html:313
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr "As tuas citações"
-#: bookwyrm/templates/book/book.html:349
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr "Temas/Áreas"
-#: bookwyrm/templates/book/book.html:361
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr "Lugares"
-#: bookwyrm/templates/book/book.html:372
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
-#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@@ -995,11 +999,11 @@ msgstr "Lugares"
msgid "Lists"
msgstr "Listas"
-#: bookwyrm/templates/book/book.html:384
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr "Adicionar à lista"
-#: bookwyrm/templates/book/book.html:394
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1059,8 +1063,8 @@ msgstr "Visualização da capa"
#: bookwyrm/templates/components/modal.html:13
#: bookwyrm/templates/components/modal.html:30
#: bookwyrm/templates/feed/suggested_books.html:67
-#: bookwyrm/templates/get_started/layout.html:25
-#: bookwyrm/templates/get_started/layout.html:58
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
msgid "Close"
msgstr "Fechar"
@@ -1075,47 +1079,51 @@ msgstr "Editar \"%(book_title)s\""
msgid "Add Book"
msgstr "Adicionar um Livro"
-#: bookwyrm/templates/book/edit/edit_book.html:62
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr ""
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
msgid "Confirm Book Info"
msgstr "Confirmar informações do livro"
-#: bookwyrm/templates/book/edit/edit_book.html:70
+#: bookwyrm/templates/book/edit/edit_book.html:78
#, python-format
msgid "Is \"%(name)s\" one of these authors?"
msgstr "\"%(name)s\" é um destes autores?"
-#: bookwyrm/templates/book/edit/edit_book.html:81
+#: bookwyrm/templates/book/edit/edit_book.html:89
#, python-format
msgid "Author of %(book_title)s "
msgstr ""
-#: bookwyrm/templates/book/edit/edit_book.html:85
+#: bookwyrm/templates/book/edit/edit_book.html:93
#, python-format
msgid "Author of %(alt_title)s "
msgstr ""
-#: bookwyrm/templates/book/edit/edit_book.html:87
+#: bookwyrm/templates/book/edit/edit_book.html:95
msgid "Find more information at isni.org"
msgstr "Podes encontrar mais informações em isni.org"
-#: bookwyrm/templates/book/edit/edit_book.html:97
+#: bookwyrm/templates/book/edit/edit_book.html:105
msgid "This is a new author"
msgstr "Este é um novo autor"
-#: bookwyrm/templates/book/edit/edit_book.html:107
+#: bookwyrm/templates/book/edit/edit_book.html:115
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "Criar um novo autor: %(name)s"
-#: bookwyrm/templates/book/edit/edit_book.html:114
+#: bookwyrm/templates/book/edit/edit_book.html:122
msgid "Is this an edition of an existing work?"
msgstr "Esta é uma edição de um trabalho existente?"
-#: bookwyrm/templates/book/edit/edit_book.html:122
+#: bookwyrm/templates/book/edit/edit_book.html:130
msgid "This is a new work"
msgstr "Este é um novo trabalho"
-#: bookwyrm/templates/book/edit/edit_book.html:131
+#: bookwyrm/templates/book/edit/edit_book.html:139
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
@@ -1470,6 +1478,19 @@ msgstr "Publicado por %(publisher)s."
msgid "rated it"
msgstr "avalia-o"
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr ""
+
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
@@ -1664,7 +1685,7 @@ msgstr "%(username)s citou %(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
msgstr ""
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] ""
+msgstr[1] ""
+
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
msgid "%(related_user)s mentioned you in a review of %(book_title)s "
@@ -4005,6 +4052,11 @@ msgstr "Ocultar os seguidores e os que sigo no perfil"
msgid "Default post privacy:"
msgstr "Privacidade de publicação predefinida:"
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr ""
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4430,63 +4482,80 @@ msgid "Celery Status"
msgstr ""
#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:22
msgid "Queues"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:18
+#: bookwyrm/templates/settings/celery.html:26
msgid "Low priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:24
+#: bookwyrm/templates/settings/celery.html:32
msgid "Medium priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:30
+#: bookwyrm/templates/settings/celery.html:38
msgid "High priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:46
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:60
msgid "Could not connect to Redis broker"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:54
+#: bookwyrm/templates/settings/celery.html:68
msgid "Active Tasks"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:59
+#: bookwyrm/templates/settings/celery.html:73
#: bookwyrm/templates/settings/imports/imports.html:113
msgid "ID"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:60
+#: bookwyrm/templates/settings/celery.html:74
msgid "Task name"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:61
+#: bookwyrm/templates/settings/celery.html:75
msgid "Run time"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:62
+#: bookwyrm/templates/settings/celery.html:76
msgid "Priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:67
+#: bookwyrm/templates/settings/celery.html:81
msgid "No active tasks"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:85
+#: bookwyrm/templates/settings/celery.html:99
msgid "Workers"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:90
+#: bookwyrm/templates/settings/celery.html:104
msgid "Uptime:"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:100
+#: bookwyrm/templates/settings/celery.html:114
msgid "Could not connect to Celery"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:107
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr ""
@@ -4851,7 +4920,7 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:36
@@ -5685,11 +5754,11 @@ msgstr "Ver as instruções de instalação"
msgid "Instance Setup"
msgstr ""
-#: bookwyrm/templates/setup/layout.html:19
+#: bookwyrm/templates/setup/layout.html:21
msgid "Installing BookWyrm"
msgstr "Instalando o BookWyrm"
-#: bookwyrm/templates/setup/layout.html:22
+#: bookwyrm/templates/setup/layout.html:24
msgid "Need help?"
msgstr "Precisas de ajuda?"
@@ -5707,7 +5776,7 @@ msgid "User profile"
msgstr "Perfil de utilizador"
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr "Todos os livros"
@@ -5781,7 +5850,7 @@ msgid_plural "and %(remainder_count_display)s others"
msgstr[0] "e %(remainder_count_display)s outro"
msgstr[1] "e %(remainder_count_display)s outros"
-#: bookwyrm/templates/snippets/book_cover.html:61
+#: bookwyrm/templates/snippets/book_cover.html:63
msgid "No cover"
msgstr "Sem capa"
@@ -5881,6 +5950,10 @@ msgstr "Na página:"
msgid "At percent:"
msgstr "Na percentagem:"
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr ""
+
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
@@ -6059,10 +6132,18 @@ msgstr "página %(page)s de %(total_pages)s"
msgid "page %(page)s"
msgstr "página %(page)s"
-#: bookwyrm/templates/snippets/pagination.html:12
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr ""
+
+#: bookwyrm/templates/snippets/pagination.html:15
msgid "Previous"
msgstr "Anterior"
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr ""
+
#: bookwyrm/templates/snippets/privacy-icons.html:12
msgid "Followers-only"
msgstr "Apenas seguidores"
@@ -6191,19 +6272,29 @@ msgstr "Mostrar o estado"
#: bookwyrm/templates/snippets/status/content_status.html:102
#, python-format
-msgid "(Page %(page)s)"
-msgstr "(Página %(page)s)"
+msgid "(Page %(page)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:104
#, python-format
-msgid "(%(percent)s%%)"
-msgstr "(%(percent)s%%)"
+msgid "(%(percent)s%%"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid " - %(endpercent)s%%"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:127
msgid "Open image in new window"
msgstr "Abrir imagem numa nova janela"
-#: bookwyrm/templates/snippets/status/content_status.html:146
+#: bookwyrm/templates/snippets/status/content_status.html:148
msgid "Hide status"
msgstr "Ocultar estado"
diff --git a/locale/ro_RO/LC_MESSAGES/django.mo b/locale/ro_RO/LC_MESSAGES/django.mo
index c3c3e20e70..5de371bf8f 100644
Binary files a/locale/ro_RO/LC_MESSAGES/django.mo and b/locale/ro_RO/LC_MESSAGES/django.mo differ
diff --git a/locale/ro_RO/LC_MESSAGES/django.po b/locale/ro_RO/LC_MESSAGES/django.po
index 42138a1e38..54ef16749a 100644
--- a/locale/ro_RO/LC_MESSAGES/django.po
+++ b/locale/ro_RO/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-01-30 08:21+0000\n"
-"PO-Revision-Date: 2023-01-30 17:35\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-04-26 00:45\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Romanian\n"
"Language: ro\n"
@@ -46,7 +46,7 @@ msgstr "Nelimitat"
msgid "Incorrect password"
msgstr "Parolă incorectă"
-#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
msgid "Password does not match"
msgstr "Parola nu se potrivește"
@@ -70,19 +70,19 @@ msgstr ""
msgid "Reading finished date cannot be in the future."
msgstr ""
-#: bookwyrm/forms/landing.py:37
+#: bookwyrm/forms/landing.py:38
msgid "Username or password are incorrect"
msgstr "Numele de utilizator sau parola greșite"
-#: bookwyrm/forms/landing.py:56
+#: bookwyrm/forms/landing.py:57
msgid "User with this username already exists"
msgstr "Un utilizator cu acest nume există deja"
-#: bookwyrm/forms/landing.py:65
+#: bookwyrm/forms/landing.py:66
msgid "A user with this email already exists."
msgstr "Un utilizator cu această adresă de email există deja."
-#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
msgid "Incorrect code"
msgstr ""
@@ -205,26 +205,26 @@ msgstr "Federat"
msgid "Blocked"
msgstr "Blocat"
-#: bookwyrm/models/fields.py:28
+#: bookwyrm/models/fields.py:29
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s nu este un remote_id valid"
-#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s nu este un nume de utilizator valid"
-#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "nume de utilizator"
-#: bookwyrm/models/fields.py:187
+#: bookwyrm/models/fields.py:197
msgid "A user with that username already exists."
msgstr "Un utilizator cu acel nume există deja."
-#: bookwyrm/models/fields.py:206
+#: bookwyrm/models/fields.py:216
#: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11
@@ -232,7 +232,7 @@ msgstr "Un utilizator cu acel nume există deja."
msgid "Public"
msgstr "Public"
-#: bookwyrm/models/fields.py:207
+#: bookwyrm/models/fields.py:217
#: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14
@@ -240,14 +240,14 @@ msgstr "Public"
msgid "Unlisted"
msgstr "Nelistat"
-#: bookwyrm/models/fields.py:208
+#: bookwyrm/models/fields.py:218
#: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers"
msgstr "Urmăritori"
-#: bookwyrm/models/fields.py:209
+#: bookwyrm/models/fields.py:219
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
@@ -275,11 +275,11 @@ msgstr ""
msgid "Import stopped"
msgstr ""
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr "Eroare la încărcarea cărții"
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr "Nu a putut fi găsită o potrivire pentru carte"
@@ -300,7 +300,7 @@ msgstr "Disponibilă pentru împrumut"
msgid "Approved"
msgstr "Aprovat"
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr "Recenzii"
@@ -316,19 +316,19 @@ msgstr "Citate"
msgid "Everything else"
msgstr "Orice altceva"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr "Friză cronologică principală"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr "Acasă"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr "Friză cronologică de cărți"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -336,75 +336,79 @@ msgstr "Friză cronologică de cărți"
msgid "Books"
msgstr "Cărți"
-#: bookwyrm/settings.py:290
+#: bookwyrm/settings.py:294
msgid "English"
msgstr "English (engleză)"
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr "Català (catalană)"
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr "Deutsch (germană)"
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr ""
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr "Español (spaniolă)"
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
msgstr ""
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr "Galego (galiciană)"
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr "Italiano (italiană)"
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr "Suomi (finlandeză)"
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr "Français (franceză)"
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr "Lietuvių (lituaniană)"
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr "Norsk (norvegiană)"
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr ""
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr "Português do Brasil (portugheză braziliană)"
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (portugheză europeană)"
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr "Română (română)"
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr "Svenska (suedeză)"
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr "简体中文 (chineză simplificată)"
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr "繁體中文 (chineză tradițională)"
@@ -434,7 +438,7 @@ msgid "About"
msgstr "Despre"
#: bookwyrm/templates/about/about.html:21
-#: bookwyrm/templates/get_started/layout.html:20
+#: bookwyrm/templates/get_started/layout.html:22
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "Bine ați venit în %(site_name)s!"
@@ -622,7 +626,7 @@ msgstr "Cea mai scurtă lectură a sa…"
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -712,24 +716,24 @@ msgid "View ISNI record"
msgstr "Vizualizați intrarea ISNI"
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:164
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
msgstr ""
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:131
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Încărcați date"
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:135
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr "Vizualizați în OpenLibrary"
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:149
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr "Vizualizați în Inventaire"
@@ -838,15 +842,15 @@ msgid "ISNI:"
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:209
-#: bookwyrm/templates/book/edit/edit_book.html:142
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
#: bookwyrm/templates/groups/form.html:32
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -862,10 +866,10 @@ msgstr "Salvați"
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:210
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
-#: bookwyrm/templates/book/edit/edit_book.html:144
-#: bookwyrm/templates/book/edit/edit_book.html:147
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:25
#: bookwyrm/templates/book/sync_modal.html:23
@@ -889,7 +893,7 @@ msgid "Loading data will connect to %(source_name)s and check f
msgstr "Încărcatul de date se va conecta la %(source_name)s și verifica orice metadate despre autor care nu sunt prezente aici. Metadatele existente nu vor fi suprascrise."
#: bookwyrm/templates/author/sync_modal.html:24
-#: bookwyrm/templates/book/edit/edit_book.html:129
+#: bookwyrm/templates/book/edit/edit_book.html:137
#: bookwyrm/templates/book/sync_modal.html:24
#: bookwyrm/templates/groups/members.html:29
#: bookwyrm/templates/landing/password_reset.html:52
@@ -899,27 +903,27 @@ msgstr "Încărcatul de date se va conecta la %(source_name)s
msgid "Confirm"
msgstr "Confirmați"
-#: bookwyrm/templates/book/book.html:19
+#: bookwyrm/templates/book/book.html:20
msgid "Unable to connect to remote source."
msgstr "Nu s-a putut stabili conexiunea la distanță."
-#: bookwyrm/templates/book/book.html:64 bookwyrm/templates/book/book.html:65
+#: bookwyrm/templates/book/book.html:71 bookwyrm/templates/book/book.html:72
msgid "Edit Book"
msgstr "Editați carte"
-#: bookwyrm/templates/book/book.html:88 bookwyrm/templates/book/book.html:91
+#: bookwyrm/templates/book/book.html:97 bookwyrm/templates/book/book.html:100
msgid "Click to add cover"
msgstr "Adăugați o copertă"
-#: bookwyrm/templates/book/book.html:97
+#: bookwyrm/templates/book/book.html:106
msgid "Failed to load cover"
msgstr "Eșec la încărcarea coperții"
-#: bookwyrm/templates/book/book.html:108
+#: bookwyrm/templates/book/book.html:117
msgid "Click to enlarge"
msgstr "Clic pentru a mări"
-#: bookwyrm/templates/book/book.html:186
+#: bookwyrm/templates/book/book.html:195
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
@@ -927,17 +931,17 @@ msgstr[0] "(%(review_count)s recenzie)"
msgstr[1] ""
msgstr[2] "(%(review_count)s recenzii)"
-#: bookwyrm/templates/book/book.html:198
+#: bookwyrm/templates/book/book.html:207
msgid "Add Description"
msgstr "Adăugați o descriere"
-#: bookwyrm/templates/book/book.html:205
+#: bookwyrm/templates/book/book.html:214
#: bookwyrm/templates/book/edit/edit_book_form.html:42
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "Descriere:"
-#: bookwyrm/templates/book/book.html:221
+#: bookwyrm/templates/book/book.html:230
#, python-format
msgid "%(count)s edition"
msgid_plural "%(count)s editions"
@@ -945,54 +949,54 @@ msgstr[0] "%(count)s ediție"
msgstr[1] ""
msgstr[2] "%(count)s ediții"
-#: bookwyrm/templates/book/book.html:235
+#: bookwyrm/templates/book/book.html:244
msgid "You have shelved this edition in:"
msgstr "Ați pus această ediție pe raftul:"
-#: bookwyrm/templates/book/book.html:250
+#: bookwyrm/templates/book/book.html:259
#, python-format
msgid "A different edition of this book is on your %(shelf_name)s shelf."
msgstr "O ediție diferită a acestei cărți este pe %(shelf_name)s raftul vostru."
-#: bookwyrm/templates/book/book.html:261
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr "Activitatea dvs. de lectură"
-#: bookwyrm/templates/book/book.html:267
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr "Adăugați date de lectură"
-#: bookwyrm/templates/book/book.html:275
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr "Nu aveți nicio activitate de lectură pentru această carte."
-#: bookwyrm/templates/book/book.html:301
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr "Recenziile dvs."
-#: bookwyrm/templates/book/book.html:307
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr "Comentariile dvs."
-#: bookwyrm/templates/book/book.html:313
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr "Citatele dvs."
-#: bookwyrm/templates/book/book.html:349
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr "Subiecte"
-#: bookwyrm/templates/book/book.html:361
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr "Locuri"
-#: bookwyrm/templates/book/book.html:372
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
-#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@@ -1001,11 +1005,11 @@ msgstr "Locuri"
msgid "Lists"
msgstr "Liste"
-#: bookwyrm/templates/book/book.html:384
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr "Adăugați la listă"
-#: bookwyrm/templates/book/book.html:394
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1065,8 +1069,8 @@ msgstr "Previzualizarea coperții"
#: bookwyrm/templates/components/modal.html:13
#: bookwyrm/templates/components/modal.html:30
#: bookwyrm/templates/feed/suggested_books.html:67
-#: bookwyrm/templates/get_started/layout.html:25
-#: bookwyrm/templates/get_started/layout.html:58
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
msgid "Close"
msgstr "Închideți"
@@ -1081,47 +1085,51 @@ msgstr "Editați „%(book_title)s”"
msgid "Add Book"
msgstr "Adăugați carte"
-#: bookwyrm/templates/book/edit/edit_book.html:62
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr ""
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
msgid "Confirm Book Info"
msgstr "Confirmați informațiile cărții"
-#: bookwyrm/templates/book/edit/edit_book.html:70
+#: bookwyrm/templates/book/edit/edit_book.html:78
#, python-format
msgid "Is \"%(name)s\" one of these authors?"
msgstr "Este „%(name)s” unul dintre acești autori?"
-#: bookwyrm/templates/book/edit/edit_book.html:81
+#: bookwyrm/templates/book/edit/edit_book.html:89
#, python-format
msgid "Author of %(book_title)s "
msgstr ""
-#: bookwyrm/templates/book/edit/edit_book.html:85
+#: bookwyrm/templates/book/edit/edit_book.html:93
#, python-format
msgid "Author of %(alt_title)s "
msgstr ""
-#: bookwyrm/templates/book/edit/edit_book.html:87
+#: bookwyrm/templates/book/edit/edit_book.html:95
msgid "Find more information at isni.org"
msgstr "Aflați mai multe la isni.org"
-#: bookwyrm/templates/book/edit/edit_book.html:97
+#: bookwyrm/templates/book/edit/edit_book.html:105
msgid "This is a new author"
msgstr "Acesta este un autor nou"
-#: bookwyrm/templates/book/edit/edit_book.html:107
+#: bookwyrm/templates/book/edit/edit_book.html:115
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "Creați un autor nou: %(name)s"
-#: bookwyrm/templates/book/edit/edit_book.html:114
+#: bookwyrm/templates/book/edit/edit_book.html:122
msgid "Is this an edition of an existing work?"
msgstr "Este această o ediție a unei opere existente?"
-#: bookwyrm/templates/book/edit/edit_book.html:122
+#: bookwyrm/templates/book/edit/edit_book.html:130
msgid "This is a new work"
msgstr "Aceasta este o operă nouă"
-#: bookwyrm/templates/book/edit/edit_book.html:131
+#: bookwyrm/templates/book/edit/edit_book.html:139
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
@@ -1476,6 +1484,19 @@ msgstr "Publicat de %(publisher)s."
msgid "rated it"
msgstr "a evaluat-o"
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr ""
+
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
@@ -1672,7 +1693,7 @@ msgstr "%(username)s a citat %(related_user)s și %(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
msgstr "%(related_user)s și alți %(other_user_display_count)s au părăsit grupul dvs. „%(group_name)s ”"
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
msgid "%(related_user)s mentioned you in a review of %(book_title)s "
@@ -4020,6 +4068,11 @@ msgstr "Ascundeți urmăritorii pe profil"
msgid "Default post privacy:"
msgstr "Confidențialitatea implicită a postărilor:"
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr ""
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4446,63 +4499,80 @@ msgid "Celery Status"
msgstr ""
#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:22
msgid "Queues"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:18
+#: bookwyrm/templates/settings/celery.html:26
msgid "Low priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:24
+#: bookwyrm/templates/settings/celery.html:32
msgid "Medium priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:30
+#: bookwyrm/templates/settings/celery.html:38
msgid "High priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:46
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:60
msgid "Could not connect to Redis broker"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:54
+#: bookwyrm/templates/settings/celery.html:68
msgid "Active Tasks"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:59
+#: bookwyrm/templates/settings/celery.html:73
#: bookwyrm/templates/settings/imports/imports.html:113
msgid "ID"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:60
+#: bookwyrm/templates/settings/celery.html:74
msgid "Task name"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:61
+#: bookwyrm/templates/settings/celery.html:75
msgid "Run time"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:62
+#: bookwyrm/templates/settings/celery.html:76
msgid "Priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:67
+#: bookwyrm/templates/settings/celery.html:81
msgid "No active tasks"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:85
+#: bookwyrm/templates/settings/celery.html:99
msgid "Workers"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:90
+#: bookwyrm/templates/settings/celery.html:104
msgid "Uptime:"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:100
+#: bookwyrm/templates/settings/celery.html:114
msgid "Could not connect to Celery"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:107
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr ""
@@ -4871,7 +4941,7 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:36
@@ -5706,11 +5776,11 @@ msgstr "Vizualizați instrucțiunile de instalare"
msgid "Instance Setup"
msgstr "Setările instanței"
-#: bookwyrm/templates/setup/layout.html:19
+#: bookwyrm/templates/setup/layout.html:21
msgid "Installing BookWyrm"
msgstr "Instalând BookWyrm"
-#: bookwyrm/templates/setup/layout.html:22
+#: bookwyrm/templates/setup/layout.html:24
msgid "Need help?"
msgstr "Aveți nevoie de ajutor?"
@@ -5728,7 +5798,7 @@ msgid "User profile"
msgstr "Profilul utilizatorului"
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr "Toate cărțile"
@@ -5804,7 +5874,7 @@ msgstr[0] "și încă %(remainder_count_display)s"
msgstr[1] ""
msgstr[2] "și încă %(remainder_count_display)s"
-#: bookwyrm/templates/snippets/book_cover.html:61
+#: bookwyrm/templates/snippets/book_cover.html:63
msgid "No cover"
msgstr "Fără copertă"
@@ -5904,6 +5974,10 @@ msgstr "Pe pagină:"
msgid "At percent:"
msgstr "Procent:"
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr ""
+
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
@@ -6087,10 +6161,18 @@ msgstr "pagina %(page)s din %(total_pages)s"
msgid "page %(page)s"
msgstr "pagina %(page)s"
-#: bookwyrm/templates/snippets/pagination.html:12
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr ""
+
+#: bookwyrm/templates/snippets/pagination.html:15
msgid "Previous"
msgstr "Înapoi"
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr ""
+
#: bookwyrm/templates/snippets/privacy-icons.html:12
msgid "Followers-only"
msgstr "Numai urmăritorii"
@@ -6219,19 +6301,29 @@ msgstr "Arătați stare"
#: bookwyrm/templates/snippets/status/content_status.html:102
#, python-format
-msgid "(Page %(page)s)"
-msgstr "(Pagină %(page)s)"
+msgid "(Page %(page)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:104
#, python-format
-msgid "(%(percent)s%%)"
-msgstr "(%(percent)s%%)"
+msgid "(%(percent)s%%"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid " - %(endpercent)s%%"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:127
msgid "Open image in new window"
msgstr "Deshideți imaginea într-o fereastră nouă"
-#: bookwyrm/templates/snippets/status/content_status.html:146
+#: bookwyrm/templates/snippets/status/content_status.html:148
msgid "Hide status"
msgstr "Ascundeți starea"
diff --git a/locale/sv_SE/LC_MESSAGES/django.mo b/locale/sv_SE/LC_MESSAGES/django.mo
index 3bc0ad3be4..68c4027dfc 100644
Binary files a/locale/sv_SE/LC_MESSAGES/django.mo and b/locale/sv_SE/LC_MESSAGES/django.mo differ
diff --git a/locale/sv_SE/LC_MESSAGES/django.po b/locale/sv_SE/LC_MESSAGES/django.po
index 9dd5b90d84..38c8944e2b 100644
--- a/locale/sv_SE/LC_MESSAGES/django.po
+++ b/locale/sv_SE/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-01-30 08:21+0000\n"
-"PO-Revision-Date: 2023-01-30 17:35\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-04-29 03:09\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Swedish\n"
"Language: sv\n"
@@ -46,7 +46,7 @@ msgstr "Obegränsad"
msgid "Incorrect password"
msgstr "Felaktigt lösenord"
-#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
msgid "Password does not match"
msgstr "Lösenord matchar inte"
@@ -70,19 +70,19 @@ msgstr "Stoppdatum för läsning kan inte vara i framtiden."
msgid "Reading finished date cannot be in the future."
msgstr "Slutdatum för läsning kan inte vara i framtiden."
-#: bookwyrm/forms/landing.py:37
+#: bookwyrm/forms/landing.py:38
msgid "Username or password are incorrect"
msgstr "Användarnamnet eller lösenordet är felaktigt"
-#: bookwyrm/forms/landing.py:56
+#: bookwyrm/forms/landing.py:57
msgid "User with this username already exists"
-msgstr "En användare med det användarnamnet existerar redan"
+msgstr "En användare med det användarnamnet finns redan"
-#: bookwyrm/forms/landing.py:65
+#: bookwyrm/forms/landing.py:66
msgid "A user with this email already exists."
-msgstr "En användare med den här e-postadressen existerar redan."
+msgstr "En användare med den här e-postadressen finns redan."
-#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
msgid "Incorrect code"
msgstr "Felaktig kod"
@@ -106,7 +106,7 @@ msgstr "Bokens titel"
#: bookwyrm/templates/shelf/shelf.html:188
#: bookwyrm/templates/snippets/create_status/review.html:32
msgid "Rating"
-msgstr "Betyg"
+msgstr "Recension"
#: bookwyrm/forms/lists.py:30 bookwyrm/templates/lists/list.html:185
msgid "Sort By"
@@ -139,7 +139,7 @@ msgstr "Varning"
#: bookwyrm/models/announcement.py:15
msgid "Danger"
-msgstr "Observera"
+msgstr "Fara"
#: bookwyrm/models/antispam.py:112 bookwyrm/models/antispam.py:146
msgid "Automatically generated report"
@@ -177,7 +177,7 @@ msgstr "Ljudbok"
#: bookwyrm/models/book.py:273
msgid "eBook"
-msgstr "eBok"
+msgstr "E-bok"
#: bookwyrm/models/book.py:274
msgid "Graphic novel"
@@ -205,26 +205,26 @@ msgstr "Federerad"
msgid "Blocked"
msgstr "Blockerad"
-#: bookwyrm/models/fields.py:28
+#: bookwyrm/models/fields.py:29
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s är inte ett giltigt remote_id"
-#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s är inte ett giltigt användarnamn"
-#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "användarnamn"
-#: bookwyrm/models/fields.py:187
+#: bookwyrm/models/fields.py:197
msgid "A user with that username already exists."
-msgstr "En användare med det användarnamnet existerar redan."
+msgstr "En användare med det användarnamnet finns redan."
-#: bookwyrm/models/fields.py:206
+#: bookwyrm/models/fields.py:216
#: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11
@@ -232,7 +232,7 @@ msgstr "En användare med det användarnamnet existerar redan."
msgid "Public"
msgstr "Publik"
-#: bookwyrm/models/fields.py:207
+#: bookwyrm/models/fields.py:217
#: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14
@@ -240,14 +240,14 @@ msgstr "Publik"
msgid "Unlisted"
msgstr "Ej listad"
-#: bookwyrm/models/fields.py:208
+#: bookwyrm/models/fields.py:218
#: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers"
msgstr "Följare"
-#: bookwyrm/models/fields.py:209
+#: bookwyrm/models/fields.py:219
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
@@ -275,11 +275,11 @@ msgstr "Avbruten"
msgid "Import stopped"
msgstr "Import avbröts"
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr "Fel uppstod vid inläsning av boken"
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr "Kunde inte hitta en träff för boken"
@@ -300,7 +300,7 @@ msgstr "Tillgänglig för lån"
msgid "Approved"
msgstr "Godkänd"
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr "Recensioner"
@@ -316,19 +316,19 @@ msgstr "Citat"
msgid "Everything else"
msgstr "Allt annat"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr "Tidslinje för Hem"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr "Hem"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr "Tidslinjer för böcker"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -336,75 +336,79 @@ msgstr "Tidslinjer för böcker"
msgid "Books"
msgstr "Böcker"
-#: bookwyrm/settings.py:290
+#: bookwyrm/settings.py:294
msgid "English"
msgstr "Engelska"
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr "Català (katalanska)"
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr "Tyska (Tysk)"
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr "Esperanto (Esperanto)"
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr "Spanska (Spansk)"
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
msgstr "Euskara (Baskiska)"
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr "Galego (Gallisk)"
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr "Italienska (Italiensk)"
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr "Finland (Finska)"
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr "Franska (Fransk)"
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr "Litauiska (Litauisk)"
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr "Norska (Norska)"
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr "Polski (polska)"
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr "Português d Brasil (Brasiliansk Portugisiska)"
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Europeisk Portugisiska)"
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr "Rumänien (Rumänska)"
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr "Svenska (Svenska)"
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr "简体中文 (Förenklad Kinesiska)"
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr "繁體中文 (Traditionell Kinesiska)"
@@ -434,7 +438,7 @@ msgid "About"
msgstr "Om"
#: bookwyrm/templates/about/about.html:21
-#: bookwyrm/templates/get_started/layout.html:20
+#: bookwyrm/templates/get_started/layout.html:22
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "Välkommen till %(site_name)s!"
@@ -620,7 +624,7 @@ msgstr "Det kortast lästa det här året…"
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -708,24 +712,24 @@ msgid "View ISNI record"
msgstr "Visa ISNI-samling"
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:164
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
msgstr "Visa på ISFDB"
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:131
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Ladda data"
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:135
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr "Visa i OpenLibrary"
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:149
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr "Visa i Inventaire"
@@ -834,15 +838,15 @@ msgid "ISNI:"
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:209
-#: bookwyrm/templates/book/edit/edit_book.html:142
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
#: bookwyrm/templates/groups/form.html:32
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -858,10 +862,10 @@ msgstr "Spara"
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:210
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
-#: bookwyrm/templates/book/edit/edit_book.html:144
-#: bookwyrm/templates/book/edit/edit_book.html:147
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:25
#: bookwyrm/templates/book/sync_modal.html:23
@@ -885,7 +889,7 @@ msgid "Loading data will connect to %(source_name)s and check f
msgstr "Att ladda in data kommer att ansluta till %(source_name)s och kontrollera eventuella metadata om den här författaren som inte finns här. Befintliga metadata kommer inte att skrivas över."
#: bookwyrm/templates/author/sync_modal.html:24
-#: bookwyrm/templates/book/edit/edit_book.html:129
+#: bookwyrm/templates/book/edit/edit_book.html:137
#: bookwyrm/templates/book/sync_modal.html:24
#: bookwyrm/templates/groups/members.html:29
#: bookwyrm/templates/landing/password_reset.html:52
@@ -895,98 +899,98 @@ msgstr "Att ladda in data kommer att ansluta till %(source_name)sdifferent edition of this book is on your %(shelf_name)s shelf."
msgstr "En annorlunda utgåva av den här boken finns i din %(shelf_name)s hylla."
-#: bookwyrm/templates/book/book.html:261
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr "Din läsningsaktivitet"
-#: bookwyrm/templates/book/book.html:267
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr "Lägg till läsdatum"
-#: bookwyrm/templates/book/book.html:275
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr "Du har ingen läsaktivitet för den här boken."
-#: bookwyrm/templates/book/book.html:301
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr "Dina recensioner"
-#: bookwyrm/templates/book/book.html:307
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr "Dina kommentarer"
-#: bookwyrm/templates/book/book.html:313
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr "Dina citat"
-#: bookwyrm/templates/book/book.html:349
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr "Ämnen"
-#: bookwyrm/templates/book/book.html:361
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr "Platser"
-#: bookwyrm/templates/book/book.html:372
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
-#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@@ -995,11 +999,11 @@ msgstr "Platser"
msgid "Lists"
msgstr "Listor"
-#: bookwyrm/templates/book/book.html:384
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr "Lägg till i listan"
-#: bookwyrm/templates/book/book.html:394
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1059,8 +1063,8 @@ msgstr "Förhandsvisning av bokomslag"
#: bookwyrm/templates/components/modal.html:13
#: bookwyrm/templates/components/modal.html:30
#: bookwyrm/templates/feed/suggested_books.html:67
-#: bookwyrm/templates/get_started/layout.html:25
-#: bookwyrm/templates/get_started/layout.html:58
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
msgid "Close"
msgstr "Stäng"
@@ -1075,47 +1079,51 @@ msgstr "Redigera \"%(book_title)s\""
msgid "Add Book"
msgstr "Lägg till bok"
-#: bookwyrm/templates/book/edit/edit_book.html:62
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr "Sparandet av boken misslyckades, se felen nedan för mer information."
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
msgid "Confirm Book Info"
msgstr "Bekräfta bokens info"
-#: bookwyrm/templates/book/edit/edit_book.html:70
+#: bookwyrm/templates/book/edit/edit_book.html:78
#, python-format
msgid "Is \"%(name)s\" one of these authors?"
msgstr "Är \"%(name)s\" en utav dessa författare?"
-#: bookwyrm/templates/book/edit/edit_book.html:81
+#: bookwyrm/templates/book/edit/edit_book.html:89
#, python-format
msgid "Author of %(book_title)s "
msgstr "Författare till %(book_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:85
+#: bookwyrm/templates/book/edit/edit_book.html:93
#, python-format
msgid "Author of %(alt_title)s "
msgstr "Författare till %(alt_title)s "
-#: bookwyrm/templates/book/edit/edit_book.html:87
+#: bookwyrm/templates/book/edit/edit_book.html:95
msgid "Find more information at isni.org"
msgstr "Hitta mer information på isni.org"
-#: bookwyrm/templates/book/edit/edit_book.html:97
+#: bookwyrm/templates/book/edit/edit_book.html:105
msgid "This is a new author"
msgstr "Det här är en ny författare"
-#: bookwyrm/templates/book/edit/edit_book.html:107
+#: bookwyrm/templates/book/edit/edit_book.html:115
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "Skapar en ny författare: %(name)s"
-#: bookwyrm/templates/book/edit/edit_book.html:114
+#: bookwyrm/templates/book/edit/edit_book.html:122
msgid "Is this an edition of an existing work?"
msgstr "Är det här en version av ett redan befintligt verk?"
-#: bookwyrm/templates/book/edit/edit_book.html:122
+#: bookwyrm/templates/book/edit/edit_book.html:130
msgid "This is a new work"
msgstr "Det här är ett nytt verk"
-#: bookwyrm/templates/book/edit/edit_book.html:131
+#: bookwyrm/templates/book/edit/edit_book.html:139
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
@@ -1470,6 +1478,19 @@ msgstr "Publicerades av %(publisher)s."
msgid "rated it"
msgstr "betygsatte den"
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr "Serier av"
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr "Bok %(series_number)s"
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr "O-sorterad bok"
+
#: 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."
@@ -1664,7 +1685,7 @@ msgstr "%(username)s citerade %(related_user)s och %(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
msgstr "%(related_user)s och %(other_user_display_count)s andra har lämnat din grupp \"%(group_name)s \""
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] "En ny länkdomän behöver granskas"
+msgstr[1] "%(display_count)s nya länkdomäner behöver moderering"
+
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
msgid "%(related_user)s mentioned you in a review of %(book_title)s "
@@ -4005,6 +4052,11 @@ msgstr "Göm följare och följningar på profilen"
msgid "Default post privacy:"
msgstr "Standardsekretess för inlägg:"
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr ""
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4430,63 +4482,80 @@ msgid "Celery Status"
msgstr ""
#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:22
msgid "Queues"
msgstr "Köer"
-#: bookwyrm/templates/settings/celery.html:18
+#: bookwyrm/templates/settings/celery.html:26
msgid "Low priority"
msgstr "Låg prioritet"
-#: bookwyrm/templates/settings/celery.html:24
+#: bookwyrm/templates/settings/celery.html:32
msgid "Medium priority"
msgstr "Medelhög prioritet"
-#: bookwyrm/templates/settings/celery.html:30
+#: bookwyrm/templates/settings/celery.html:38
msgid "High priority"
msgstr "Hög prioritet"
-#: bookwyrm/templates/settings/celery.html:46
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr "Sändningar"
+
+#: bookwyrm/templates/settings/celery.html:60
msgid "Could not connect to Redis broker"
msgstr "Kunde inte ansluta till Redis-broker"
-#: bookwyrm/templates/settings/celery.html:54
+#: bookwyrm/templates/settings/celery.html:68
msgid "Active Tasks"
msgstr "Aktiva uppgifter"
-#: bookwyrm/templates/settings/celery.html:59
+#: bookwyrm/templates/settings/celery.html:73
#: bookwyrm/templates/settings/imports/imports.html:113
msgid "ID"
msgstr "ID"
-#: bookwyrm/templates/settings/celery.html:60
+#: bookwyrm/templates/settings/celery.html:74
msgid "Task name"
msgstr "Aktivitetsnamn"
-#: bookwyrm/templates/settings/celery.html:61
+#: bookwyrm/templates/settings/celery.html:75
msgid "Run time"
msgstr "Körtid"
-#: bookwyrm/templates/settings/celery.html:62
+#: bookwyrm/templates/settings/celery.html:76
msgid "Priority"
msgstr "Prioritet"
-#: bookwyrm/templates/settings/celery.html:67
+#: bookwyrm/templates/settings/celery.html:81
msgid "No active tasks"
msgstr "Inga aktiva uppgifter"
-#: bookwyrm/templates/settings/celery.html:85
+#: bookwyrm/templates/settings/celery.html:99
msgid "Workers"
msgstr "Arbetare"
-#: bookwyrm/templates/settings/celery.html:90
+#: bookwyrm/templates/settings/celery.html:104
msgid "Uptime:"
msgstr "Drifttid:"
-#: bookwyrm/templates/settings/celery.html:100
+#: bookwyrm/templates/settings/celery.html:114
msgid "Could not connect to Celery"
msgstr "Kunde inte ansluta till Celery"
-#: bookwyrm/templates/settings/celery.html:107
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr "Rensa köer"
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr "Fel"
@@ -4851,8 +4920,8 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr "Detta är bara avsett att användas när saker och ting har gått mycket fel med importer och du behöver pausa funktionen medan du tar itu med problemen."
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
-msgstr "Medan importer är inaktiverade kommer användarna inte tillåtas starta nya importer, men befintliga importer kommer inte att påverkas."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
+msgstr "Medans importer är avstängda så kommer användare inte att tillåtas att påbörja nya importer, men befintliga importer påverkas inte."
#: bookwyrm/templates/settings/imports/imports.html:36
msgid "Disable imports"
@@ -5177,7 +5246,7 @@ msgstr "Tillåt registrering"
#: bookwyrm/templates/settings/registration.html:43
msgid "Default access level:"
-msgstr ""
+msgstr "Standardnivå för åtkomst:"
#: bookwyrm/templates/settings/registration.html:61
msgid "Require users to confirm email address"
@@ -5571,7 +5640,7 @@ msgstr "Användaråtgärder"
#: bookwyrm/templates/settings/users/user_moderation_actions.html:21
msgid "Activate user"
-msgstr ""
+msgstr "Aktivera användaren"
#: bookwyrm/templates/settings/users/user_moderation_actions.html:27
msgid "Suspend user"
@@ -5685,11 +5754,11 @@ msgstr "Visa installationsanvisningar"
msgid "Instance Setup"
msgstr "Instansinställningar"
-#: bookwyrm/templates/setup/layout.html:19
+#: bookwyrm/templates/setup/layout.html:21
msgid "Installing BookWyrm"
msgstr "Installerar BookWyrm"
-#: bookwyrm/templates/setup/layout.html:22
+#: bookwyrm/templates/setup/layout.html:24
msgid "Need help?"
msgstr "Behöver du hjälp?"
@@ -5707,7 +5776,7 @@ msgid "User profile"
msgstr "Användarprofil"
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr "Alla böcker"
@@ -5781,7 +5850,7 @@ msgid_plural "and %(remainder_count_display)s others"
msgstr[0] "och %(remainder_count_display)s annan"
msgstr[1] "och %(remainder_count_display)s andra"
-#: bookwyrm/templates/snippets/book_cover.html:61
+#: bookwyrm/templates/snippets/book_cover.html:63
msgid "No cover"
msgstr "Inget omslag"
@@ -5881,6 +5950,10 @@ msgstr "På sidan:"
msgid "At percent:"
msgstr "Vid procent:"
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr "till"
+
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
@@ -5955,7 +6028,7 @@ msgstr ""
#: bookwyrm/templates/snippets/footer.html:49
msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub ."
-msgstr ""
+msgstr "BookWyrm's källkod är fritt tillgänglig. Du kan bidra eller rapportera fel på GitHub ."
#: bookwyrm/templates/snippets/form_rate_stars.html:20
#: bookwyrm/templates/snippets/stars.html:13
@@ -6059,10 +6132,18 @@ msgstr "sida %(page)s av %(total_pages)s"
msgid "page %(page)s"
msgstr "sida %(page)s"
-#: bookwyrm/templates/snippets/pagination.html:12
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr "Nyare"
+
+#: bookwyrm/templates/snippets/pagination.html:15
msgid "Previous"
msgstr "Föregående"
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr "Äldre"
+
#: bookwyrm/templates/snippets/privacy-icons.html:12
msgid "Followers-only"
msgstr "Endast följare"
@@ -6191,19 +6272,29 @@ msgstr "Visa status"
#: bookwyrm/templates/snippets/status/content_status.html:102
#, python-format
-msgid "(Page %(page)s)"
-msgstr "(Sida %(page)s)"
+msgid "(Page %(page)s"
+msgstr "(Sida %(page)s"
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid "(%(percent)s%%"
+msgstr "(%(percent)s%%"
#: bookwyrm/templates/snippets/status/content_status.html:104
#, python-format
-msgid "(%(percent)s%%)"
-msgstr "(%(percent)s%%)"
+msgid " - %(endpercent)s%%"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:127
msgid "Open image in new window"
msgstr "Öppna bild i nytt fönster"
-#: bookwyrm/templates/snippets/status/content_status.html:146
+#: bookwyrm/templates/snippets/status/content_status.html:148
msgid "Hide status"
msgstr "Göm status"
@@ -6342,15 +6433,15 @@ msgstr ""
#: bookwyrm/templates/two_factor_auth/two_factor_login.html:37
msgid "Enter the code from your authenticator app:"
-msgstr ""
+msgstr "Ange koden från din autentiseringsapp:"
#: bookwyrm/templates/two_factor_auth/two_factor_login.html:41
msgid "Confirm and Log In"
-msgstr ""
+msgstr "Bekräfta och logga in"
#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:29
msgid "2FA is available"
-msgstr ""
+msgstr "2FA är tillgänglig"
#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:34
msgid "You can secure your account by setting up two factor authentication in your user preferences. This will require a one-time code from your phone in addition to your password each time you log in."
@@ -6401,7 +6492,7 @@ msgstr "Följdförfrågningar"
#: bookwyrm/templates/user/layout.html:71
#: bookwyrm/templates/user/reviews_comments.html:10
msgid "Reviews and Comments"
-msgstr ""
+msgstr "Granskningar och kommentarer"
#: bookwyrm/templates/user/lists.html:11
#, python-format
@@ -6429,7 +6520,7 @@ msgstr "%(username)s följer inte någon användare"
#: bookwyrm/templates/user/reviews_comments.html:24
msgid "No reviews or comments yet!"
-msgstr ""
+msgstr "Inga granskningar eller kommentarer än!"
#: bookwyrm/templates/user/user.html:20
msgid "Edit profile"
@@ -6455,7 +6546,7 @@ msgstr "Användaraktivitet"
#: bookwyrm/templates/user/user.html:76
msgid "Show RSS Options"
-msgstr ""
+msgstr "Visa RSS-alternativ"
#: bookwyrm/templates/user/user.html:82
msgid "RSS feed"
@@ -6463,19 +6554,19 @@ msgstr "RSS-flöde"
#: bookwyrm/templates/user/user.html:98
msgid "Complete feed"
-msgstr ""
+msgstr "Fullständigt flöde"
#: bookwyrm/templates/user/user.html:103
msgid "Reviews only"
-msgstr ""
+msgstr "Endast granskningar"
#: bookwyrm/templates/user/user.html:108
msgid "Quotes only"
-msgstr ""
+msgstr "Endast citat"
#: bookwyrm/templates/user/user.html:113
msgid "Comments only"
-msgstr ""
+msgstr "Endast kommentarer"
#: bookwyrm/templates/user/user.html:129
msgid "No activities yet!"
@@ -6511,7 +6602,7 @@ msgstr "Inga följare som du följer"
#: bookwyrm/templates/user_menu.html:7
msgid "View profile and more"
-msgstr ""
+msgstr "Visa profil och mer"
#: bookwyrm/templates/user_menu.html:82
msgid "Log out"
@@ -6524,14 +6615,14 @@ msgstr "Filen överskrider maximal storlek: 10 MB"
#: bookwyrm/templatetags/list_page_tags.py:14
#, python-format
msgid "Book List: %(name)s"
-msgstr ""
+msgstr "Bok-lista: %(name)s"
#: bookwyrm/templatetags/list_page_tags.py:22
#, python-format
msgid "%(num)d book - by %(user)s"
msgid_plural "%(num)d books - by %(user)s"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(num)d bok - av %(user)s"
+msgstr[1] "%(num)d böcker - av %(user)s"
#: bookwyrm/templatetags/utilities.py:39
#, python-format
@@ -6546,17 +6637,17 @@ msgstr "Status-uppdateringar från {obj.display_name}"
#: bookwyrm/views/rss_feed.py:72
#, python-brace-format
msgid "Reviews from {obj.display_name}"
-msgstr ""
+msgstr "Recensioner från {obj.display_name}"
#: bookwyrm/views/rss_feed.py:110
#, python-brace-format
msgid "Quotes from {obj.display_name}"
-msgstr ""
+msgstr "Citat från {obj.display_name}"
#: bookwyrm/views/rss_feed.py:148
#, python-brace-format
msgid "Comments from {obj.display_name}"
-msgstr ""
+msgstr "Kommentarer från {obj.display_name}"
#: bookwyrm/views/updates.py:45
#, python-format
diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo
index 2a7e345b26..1d1227f809 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 ec1248940f..4e54506e6d 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: 2023-01-30 08:21+0000\n"
-"PO-Revision-Date: 2023-01-30 17:36\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-04-26 00:45\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Chinese Simplified\n"
"Language: zh\n"
@@ -46,7 +46,7 @@ msgstr "不受限"
msgid "Incorrect password"
msgstr "密码错误"
-#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
msgid "Password does not match"
msgstr "两次输入的密码不一致"
@@ -70,19 +70,19 @@ msgstr "阅读停止的日期不能是将来的日期"
msgid "Reading finished date cannot be in the future."
msgstr "读完日期不能是未来日期"
-#: bookwyrm/forms/landing.py:37
+#: bookwyrm/forms/landing.py:38
msgid "Username or password are incorrect"
msgstr "用户名或密码不正确"
-#: bookwyrm/forms/landing.py:56
+#: bookwyrm/forms/landing.py:57
msgid "User with this username already exists"
msgstr "使用此用户名的用户已存在"
-#: bookwyrm/forms/landing.py:65
+#: bookwyrm/forms/landing.py:66
msgid "A user with this email already exists."
msgstr "已经存在使用该邮箱的用户。"
-#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
msgid "Incorrect code"
msgstr "验证码错误"
@@ -205,26 +205,26 @@ msgstr "跨站"
msgid "Blocked"
msgstr "已屏蔽"
-#: bookwyrm/models/fields.py:28
+#: bookwyrm/models/fields.py:29
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s 不是有效的 remote_id"
-#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s 不是有效的用户名"
-#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "用户名"
-#: bookwyrm/models/fields.py:187
+#: bookwyrm/models/fields.py:197
msgid "A user with that username already exists."
msgstr "已经存在使用该用户名的用户。"
-#: bookwyrm/models/fields.py:206
+#: bookwyrm/models/fields.py:216
#: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11
@@ -232,7 +232,7 @@ msgstr "已经存在使用该用户名的用户。"
msgid "Public"
msgstr "公开"
-#: bookwyrm/models/fields.py:207
+#: bookwyrm/models/fields.py:217
#: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14
@@ -240,14 +240,14 @@ msgstr "公开"
msgid "Unlisted"
msgstr "不公开"
-#: bookwyrm/models/fields.py:208
+#: bookwyrm/models/fields.py:218
#: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers"
msgstr "关注者"
-#: bookwyrm/models/fields.py:209
+#: bookwyrm/models/fields.py:219
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
@@ -275,11 +275,11 @@ msgstr "已停止"
msgid "Import stopped"
msgstr "导入停止"
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr "加载书籍时出错"
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr "找不到匹配的书"
@@ -300,7 +300,7 @@ msgstr "可借阅"
msgid "Approved"
msgstr "已通过"
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr "书评"
@@ -316,19 +316,19 @@ msgstr "引用"
msgid "Everything else"
msgstr "所有其它内容"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr "主页时间线"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr "主页"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr "书目时间线"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -336,75 +336,79 @@ msgstr "书目时间线"
msgid "Books"
msgstr "书目"
-#: bookwyrm/settings.py:290
+#: bookwyrm/settings.py:294
msgid "English"
msgstr "English(英语)"
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr "Català (加泰罗尼亚语)"
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr "Deutsch(德语)"
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr ""
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr "Español(西班牙语)"
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
msgstr ""
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr "Galego(加利西亚语)"
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr "Italiano(意大利语)"
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr "Suomi (Finnish/芬兰语)"
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr "Français(法语)"
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr "Lietuvių(立陶宛语)"
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr "Norsk(挪威语)"
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr "Polski (波兰语)"
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr "Português do Brasil(巴西葡萄牙语)"
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu(欧洲葡萄牙语)"
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr "Română (罗马尼亚语)"
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr "Svenska(瑞典语)"
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr "简体中文"
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr "繁體中文(繁体中文)"
@@ -434,7 +438,7 @@ msgid "About"
msgstr "关于"
#: bookwyrm/templates/about/about.html:21
-#: bookwyrm/templates/get_started/layout.html:20
+#: bookwyrm/templates/get_started/layout.html:22
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "欢迎来到 %(site_name)s!"
@@ -618,7 +622,7 @@ msgstr "TA 今年阅读最短的…"
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -704,24 +708,24 @@ msgid "View ISNI record"
msgstr "查看 ISNI 记录"
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:164
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
msgstr "在 ISFDB 查看"
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:131
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "加载数据"
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:135
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr "在 OpenLibrary 查看"
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:149
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr "在 Inventaire 查看"
@@ -830,15 +834,15 @@ msgid "ISNI:"
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:209
-#: bookwyrm/templates/book/edit/edit_book.html:142
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
#: bookwyrm/templates/groups/form.html:32
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -854,10 +858,10 @@ msgstr "保存"
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:210
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
-#: bookwyrm/templates/book/edit/edit_book.html:144
-#: bookwyrm/templates/book/edit/edit_book.html:147
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:25
#: bookwyrm/templates/book/sync_modal.html:23
@@ -881,7 +885,7 @@ msgid "Loading data will connect to %(source_name)s and check f
msgstr "加载数据会连接到 %(source_name)s 并检查这里还没有记录的与作者相关的元数据。现存的元数据不会被覆盖。"
#: bookwyrm/templates/author/sync_modal.html:24
-#: bookwyrm/templates/book/edit/edit_book.html:129
+#: bookwyrm/templates/book/edit/edit_book.html:137
#: bookwyrm/templates/book/sync_modal.html:24
#: bookwyrm/templates/groups/members.html:29
#: bookwyrm/templates/landing/password_reset.html:52
@@ -891,96 +895,96 @@ msgstr "加载数据会连接到 %(source_name)s 并检查这
msgid "Confirm"
msgstr "确认"
-#: bookwyrm/templates/book/book.html:19
+#: bookwyrm/templates/book/book.html:20
msgid "Unable to connect to remote source."
msgstr "无法联系远程资源。"
-#: bookwyrm/templates/book/book.html:64 bookwyrm/templates/book/book.html:65
+#: bookwyrm/templates/book/book.html:71 bookwyrm/templates/book/book.html:72
msgid "Edit Book"
msgstr "编辑书目"
-#: bookwyrm/templates/book/book.html:88 bookwyrm/templates/book/book.html:91
+#: bookwyrm/templates/book/book.html:97 bookwyrm/templates/book/book.html:100
msgid "Click to add cover"
msgstr "点击添加封面"
-#: bookwyrm/templates/book/book.html:97
+#: bookwyrm/templates/book/book.html:106
msgid "Failed to load cover"
msgstr "加载封面失败"
-#: bookwyrm/templates/book/book.html:108
+#: bookwyrm/templates/book/book.html:117
msgid "Click to enlarge"
msgstr "点击放大"
-#: bookwyrm/templates/book/book.html:186
+#: bookwyrm/templates/book/book.html:195
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
msgstr[0] "(%(review_count)s 则书评)"
-#: bookwyrm/templates/book/book.html:198
+#: bookwyrm/templates/book/book.html:207
msgid "Add Description"
msgstr "添加描述"
-#: bookwyrm/templates/book/book.html:205
+#: bookwyrm/templates/book/book.html:214
#: bookwyrm/templates/book/edit/edit_book_form.html:42
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "描述:"
-#: bookwyrm/templates/book/book.html:221
+#: bookwyrm/templates/book/book.html:230
#, python-format
msgid "%(count)s edition"
msgid_plural "%(count)s editions"
msgstr[0] "%(count)s 版次"
-#: bookwyrm/templates/book/book.html:235
+#: bookwyrm/templates/book/book.html:244
msgid "You have shelved this edition in:"
msgstr "此版本已在你的书架上:"
-#: bookwyrm/templates/book/book.html:250
+#: bookwyrm/templates/book/book.html:259
#, python-format
msgid "A different edition of this book is on your %(shelf_name)s shelf."
msgstr "本书的 另一个版本 在你的 %(shelf_name)s 书架上。"
-#: bookwyrm/templates/book/book.html:261
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr "你的阅读活动"
-#: bookwyrm/templates/book/book.html:267
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr "添加阅读日期"
-#: bookwyrm/templates/book/book.html:275
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr "你还没有任何这本书的阅读活动。"
-#: bookwyrm/templates/book/book.html:301
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr "你的书评"
-#: bookwyrm/templates/book/book.html:307
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr "你的评论"
-#: bookwyrm/templates/book/book.html:313
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr "你的引用"
-#: bookwyrm/templates/book/book.html:349
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr "主题"
-#: bookwyrm/templates/book/book.html:361
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr "地点"
-#: bookwyrm/templates/book/book.html:372
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
-#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@@ -989,11 +993,11 @@ msgstr "地点"
msgid "Lists"
msgstr "列表"
-#: bookwyrm/templates/book/book.html:384
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr "添加到列表"
-#: bookwyrm/templates/book/book.html:394
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1053,8 +1057,8 @@ msgstr "书籍封面预览"
#: bookwyrm/templates/components/modal.html:13
#: bookwyrm/templates/components/modal.html:30
#: bookwyrm/templates/feed/suggested_books.html:67
-#: bookwyrm/templates/get_started/layout.html:25
-#: bookwyrm/templates/get_started/layout.html:58
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
msgid "Close"
msgstr "关闭"
@@ -1069,47 +1073,51 @@ msgstr "编辑《%(book_title)s》"
msgid "Add Book"
msgstr "添加书目"
-#: bookwyrm/templates/book/edit/edit_book.html:62
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr ""
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
msgid "Confirm Book Info"
msgstr "确认书目信息"
-#: bookwyrm/templates/book/edit/edit_book.html:70
+#: bookwyrm/templates/book/edit/edit_book.html:78
#, python-format
msgid "Is \"%(name)s\" one of these authors?"
msgstr "“%(name)s” 是这些作者之一吗?"
-#: bookwyrm/templates/book/edit/edit_book.html:81
+#: bookwyrm/templates/book/edit/edit_book.html:89
#, python-format
msgid "Author of %(book_title)s "
msgstr "%(book_title)s 的作者"
-#: bookwyrm/templates/book/edit/edit_book.html:85
+#: bookwyrm/templates/book/edit/edit_book.html:93
#, python-format
msgid "Author of %(alt_title)s "
msgstr "%(alt_title)s 的作者"
-#: bookwyrm/templates/book/edit/edit_book.html:87
+#: bookwyrm/templates/book/edit/edit_book.html:95
msgid "Find more information at isni.org"
msgstr "在 isni.org 查找更多信息"
-#: bookwyrm/templates/book/edit/edit_book.html:97
+#: bookwyrm/templates/book/edit/edit_book.html:105
msgid "This is a new author"
msgstr "这是一位新的作者"
-#: bookwyrm/templates/book/edit/edit_book.html:107
+#: bookwyrm/templates/book/edit/edit_book.html:115
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "正在创建新的作者: %(name)s"
-#: bookwyrm/templates/book/edit/edit_book.html:114
+#: bookwyrm/templates/book/edit/edit_book.html:122
msgid "Is this an edition of an existing work?"
msgstr "这是已存在的作品的一个版本吗?"
-#: bookwyrm/templates/book/edit/edit_book.html:122
+#: bookwyrm/templates/book/edit/edit_book.html:130
msgid "This is a new work"
msgstr "这是一个新的作品。"
-#: bookwyrm/templates/book/edit/edit_book.html:131
+#: bookwyrm/templates/book/edit/edit_book.html:139
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
@@ -1464,6 +1472,19 @@ msgstr "%(publisher)s 出版。"
msgid "rated it"
msgstr "评价了"
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr ""
+
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
@@ -1656,7 +1677,7 @@ msgstr "%(username)s 引用了 %(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
msgstr ""
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] ""
+
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
msgid "%(related_user)s mentioned you in a review of %(book_title)s "
@@ -3990,6 +4036,11 @@ msgstr "隐藏关注者并在个人资料中关注"
msgid "Default post privacy:"
msgstr "默认发文隐私:"
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr ""
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4413,63 +4464,80 @@ msgid "Celery Status"
msgstr "Celery 状态"
#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:22
msgid "Queues"
msgstr "队列"
-#: bookwyrm/templates/settings/celery.html:18
+#: bookwyrm/templates/settings/celery.html:26
msgid "Low priority"
msgstr "低优先级"
-#: bookwyrm/templates/settings/celery.html:24
+#: bookwyrm/templates/settings/celery.html:32
msgid "Medium priority"
msgstr "中优先级"
-#: bookwyrm/templates/settings/celery.html:30
+#: bookwyrm/templates/settings/celery.html:38
msgid "High priority"
msgstr "高优先级"
-#: bookwyrm/templates/settings/celery.html:46
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:60
msgid "Could not connect to Redis broker"
msgstr "无法连接到 Redis 中转服务器"
-#: bookwyrm/templates/settings/celery.html:54
+#: bookwyrm/templates/settings/celery.html:68
msgid "Active Tasks"
msgstr "当前任务"
-#: bookwyrm/templates/settings/celery.html:59
+#: bookwyrm/templates/settings/celery.html:73
#: bookwyrm/templates/settings/imports/imports.html:113
msgid "ID"
msgstr "ID"
-#: bookwyrm/templates/settings/celery.html:60
+#: bookwyrm/templates/settings/celery.html:74
msgid "Task name"
msgstr "任务名"
-#: bookwyrm/templates/settings/celery.html:61
+#: bookwyrm/templates/settings/celery.html:75
msgid "Run time"
msgstr "运行时间"
-#: bookwyrm/templates/settings/celery.html:62
+#: bookwyrm/templates/settings/celery.html:76
msgid "Priority"
msgstr "优先次序"
-#: bookwyrm/templates/settings/celery.html:67
+#: bookwyrm/templates/settings/celery.html:81
msgid "No active tasks"
msgstr "没有活跃的任务"
-#: bookwyrm/templates/settings/celery.html:85
+#: bookwyrm/templates/settings/celery.html:99
msgid "Workers"
msgstr "线程"
-#: bookwyrm/templates/settings/celery.html:90
+#: bookwyrm/templates/settings/celery.html:104
msgid "Uptime:"
msgstr "在线时长:"
-#: bookwyrm/templates/settings/celery.html:100
+#: bookwyrm/templates/settings/celery.html:114
msgid "Could not connect to Celery"
msgstr "无法连接到 Celery"
-#: bookwyrm/templates/settings/celery.html:107
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr "错误"
@@ -4830,7 +4898,7 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:36
@@ -5664,11 +5732,11 @@ msgstr "查看安装说明"
msgid "Instance Setup"
msgstr "实例设置"
-#: bookwyrm/templates/setup/layout.html:19
+#: bookwyrm/templates/setup/layout.html:21
msgid "Installing BookWyrm"
msgstr "正在安装 BookWyrm"
-#: bookwyrm/templates/setup/layout.html:22
+#: bookwyrm/templates/setup/layout.html:24
msgid "Need help?"
msgstr "需要帮助?"
@@ -5686,7 +5754,7 @@ msgid "User profile"
msgstr "用户个人资料"
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr "所有书目"
@@ -5758,7 +5826,7 @@ msgid "and %(remainder_count_display)s other"
msgid_plural "and %(remainder_count_display)s others"
msgstr[0] "与其它 %(remainder_count_display)s 位"
-#: bookwyrm/templates/snippets/book_cover.html:61
+#: bookwyrm/templates/snippets/book_cover.html:63
msgid "No cover"
msgstr "没有封面"
@@ -5858,6 +5926,10 @@ msgstr "页码:"
msgid "At percent:"
msgstr "百分比:"
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr ""
+
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
@@ -6031,10 +6103,18 @@ msgstr "%(total_pages)s 页中的第 %(page)s 页"
msgid "page %(page)s"
msgstr "第 %(page)s 页"
-#: bookwyrm/templates/snippets/pagination.html:12
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr ""
+
+#: bookwyrm/templates/snippets/pagination.html:15
msgid "Previous"
msgstr "往前"
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr ""
+
#: bookwyrm/templates/snippets/privacy-icons.html:12
msgid "Followers-only"
msgstr "仅关注者"
@@ -6163,19 +6243,29 @@ msgstr "显示状态"
#: bookwyrm/templates/snippets/status/content_status.html:102
#, python-format
-msgid "(Page %(page)s)"
-msgstr "(第 %(page)s 页)"
+msgid "(Page %(page)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:104
#, python-format
-msgid "(%(percent)s%%)"
-msgstr "(%(percent)s%%)"
+msgid "(%(percent)s%%"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid " - %(endpercent)s%%"
+msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:127
msgid "Open image in new window"
msgstr "在新窗口中打开图像"
-#: bookwyrm/templates/snippets/status/content_status.html:146
+#: bookwyrm/templates/snippets/status/content_status.html:148
msgid "Hide status"
msgstr "隐藏状态"
diff --git a/locale/zh_Hant/LC_MESSAGES/django.mo b/locale/zh_Hant/LC_MESSAGES/django.mo
index 6f1df087ab..f9ca27be9b 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 2f7096f41d..d80bd93e79 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: 2023-01-30 08:21+0000\n"
-"PO-Revision-Date: 2023-01-30 17:36\n"
+"POT-Creation-Date: 2023-04-26 00:20+0000\n"
+"PO-Revision-Date: 2023-04-26 00:45\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: Chinese Traditional\n"
"Language: zh\n"
@@ -46,7 +46,7 @@ msgstr "不受限"
msgid "Incorrect password"
msgstr ""
-#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
+#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
msgid "Password does not match"
msgstr ""
@@ -70,19 +70,19 @@ msgstr ""
msgid "Reading finished date cannot be in the future."
msgstr ""
-#: bookwyrm/forms/landing.py:37
+#: bookwyrm/forms/landing.py:38
msgid "Username or password are incorrect"
msgstr ""
-#: bookwyrm/forms/landing.py:56
+#: bookwyrm/forms/landing.py:57
msgid "User with this username already exists"
msgstr ""
-#: bookwyrm/forms/landing.py:65
+#: bookwyrm/forms/landing.py:66
msgid "A user with this email already exists."
msgstr "已經存在使用該郵箱的使用者。"
-#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
msgid "Incorrect code"
msgstr ""
@@ -205,26 +205,26 @@ msgstr "跨站"
msgid "Blocked"
msgstr "已封鎖"
-#: bookwyrm/models/fields.py:28
+#: bookwyrm/models/fields.py:29
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s 不是有效的 remote_id"
-#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
+#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s 不是有效的使用者名稱"
-#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
+#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr "使用者名稱"
-#: bookwyrm/models/fields.py:187
+#: bookwyrm/models/fields.py:197
msgid "A user with that username already exists."
msgstr "已經存在使用該名稱的使用者。"
-#: bookwyrm/models/fields.py:206
+#: bookwyrm/models/fields.py:216
#: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11
@@ -232,7 +232,7 @@ msgstr "已經存在使用該名稱的使用者。"
msgid "Public"
msgstr "公開"
-#: bookwyrm/models/fields.py:207
+#: bookwyrm/models/fields.py:217
#: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14
@@ -240,14 +240,14 @@ msgstr "公開"
msgid "Unlisted"
msgstr "不公開"
-#: bookwyrm/models/fields.py:208
+#: bookwyrm/models/fields.py:218
#: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers"
msgstr "關注者"
-#: bookwyrm/models/fields.py:209
+#: bookwyrm/models/fields.py:219
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
@@ -275,11 +275,11 @@ msgstr ""
msgid "Import stopped"
msgstr ""
-#: bookwyrm/models/import_job.py:360 bookwyrm/models/import_job.py:385
+#: bookwyrm/models/import_job.py:363 bookwyrm/models/import_job.py:388
msgid "Error loading book"
msgstr ""
-#: bookwyrm/models/import_job.py:369
+#: bookwyrm/models/import_job.py:372
msgid "Could not find a match for book"
msgstr ""
@@ -300,7 +300,7 @@ msgstr ""
msgid "Approved"
msgstr ""
-#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
+#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:305
msgid "Reviews"
msgstr "書評"
@@ -316,19 +316,19 @@ msgstr ""
msgid "Everything else"
msgstr ""
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home Timeline"
msgstr "主頁時間線"
-#: bookwyrm/settings.py:217
+#: bookwyrm/settings.py:221
msgid "Home"
msgstr "主頁"
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
msgid "Books Timeline"
msgstr ""
-#: bookwyrm/settings.py:218
+#: bookwyrm/settings.py:222
#: bookwyrm/templates/guided_tour/user_profile.html:101
#: bookwyrm/templates/search/layout.html:22
#: bookwyrm/templates/search/layout.html:43
@@ -336,75 +336,79 @@ msgstr ""
msgid "Books"
msgstr "書目"
-#: bookwyrm/settings.py:290
+#: bookwyrm/settings.py:294
msgid "English"
msgstr "English(英語)"
-#: bookwyrm/settings.py:291
+#: bookwyrm/settings.py:295
msgid "Català (Catalan)"
msgstr ""
-#: bookwyrm/settings.py:292
+#: bookwyrm/settings.py:296
msgid "Deutsch (German)"
msgstr "Deutsch(德語)"
-#: bookwyrm/settings.py:293
+#: bookwyrm/settings.py:297
+msgid "Esperanto (Esperanto)"
+msgstr ""
+
+#: bookwyrm/settings.py:298
msgid "Español (Spanish)"
msgstr "Español(西班牙語)"
-#: bookwyrm/settings.py:294
+#: bookwyrm/settings.py:299
msgid "Euskara (Basque)"
msgstr ""
-#: bookwyrm/settings.py:295
+#: bookwyrm/settings.py:300
msgid "Galego (Galician)"
msgstr ""
-#: bookwyrm/settings.py:296
+#: bookwyrm/settings.py:301
msgid "Italiano (Italian)"
msgstr ""
-#: bookwyrm/settings.py:297
+#: bookwyrm/settings.py:302
msgid "Suomi (Finnish)"
msgstr ""
-#: bookwyrm/settings.py:298
+#: bookwyrm/settings.py:303
msgid "Français (French)"
msgstr "Français(法語)"
-#: bookwyrm/settings.py:299
+#: bookwyrm/settings.py:304
msgid "Lietuvių (Lithuanian)"
msgstr ""
-#: bookwyrm/settings.py:300
+#: bookwyrm/settings.py:305
msgid "Norsk (Norwegian)"
msgstr ""
-#: bookwyrm/settings.py:301
+#: bookwyrm/settings.py:306
msgid "Polski (Polish)"
msgstr ""
-#: bookwyrm/settings.py:302
+#: bookwyrm/settings.py:307
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr ""
-#: bookwyrm/settings.py:303
+#: bookwyrm/settings.py:308
msgid "Português Europeu (European Portuguese)"
msgstr ""
-#: bookwyrm/settings.py:304
+#: bookwyrm/settings.py:309
msgid "Română (Romanian)"
msgstr ""
-#: bookwyrm/settings.py:305
+#: bookwyrm/settings.py:310
msgid "Svenska (Swedish)"
msgstr ""
-#: bookwyrm/settings.py:306
+#: bookwyrm/settings.py:311
msgid "简体中文 (Simplified Chinese)"
msgstr "簡體中文"
-#: bookwyrm/settings.py:307
+#: bookwyrm/settings.py:312
msgid "繁體中文 (Traditional Chinese)"
msgstr "繁體中文"
@@ -434,7 +438,7 @@ msgid "About"
msgstr ""
#: bookwyrm/templates/about/about.html:21
-#: bookwyrm/templates/get_started/layout.html:20
+#: bookwyrm/templates/get_started/layout.html:22
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "歡迎來到 %(site_name)s!"
@@ -618,7 +622,7 @@ msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:157
#: bookwyrm/templates/annual_summary/layout.html:178
#: bookwyrm/templates/annual_summary/layout.html:247
-#: bookwyrm/templates/book/book.html:56
+#: bookwyrm/templates/book/book.html:63
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:26
#: bookwyrm/templates/landing/small-book.html:18
@@ -704,24 +708,24 @@ msgid "View ISNI record"
msgstr ""
#: bookwyrm/templates/author/author.html:95
-#: bookwyrm/templates/book/book.html:164
+#: bookwyrm/templates/book/book.html:173
msgid "View on ISFDB"
msgstr ""
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
-#: bookwyrm/templates/book/book.html:131
+#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr ""
#: bookwyrm/templates/author/author.html:104
-#: bookwyrm/templates/book/book.html:135
+#: bookwyrm/templates/book/book.html:144
msgid "View on OpenLibrary"
msgstr "在 OpenLibrary 檢視"
#: bookwyrm/templates/author/author.html:119
-#: bookwyrm/templates/book/book.html:149
+#: bookwyrm/templates/book/book.html:158
msgid "View on Inventaire"
msgstr "在 Inventaire 檢視"
@@ -830,15 +834,15 @@ msgid "ISNI:"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:126
-#: bookwyrm/templates/book/book.html:209
-#: bookwyrm/templates/book/edit/edit_book.html:142
+#: bookwyrm/templates/book/book.html:218
+#: bookwyrm/templates/book/edit/edit_book.html:150
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
#: bookwyrm/templates/book/file_links/edit_links.html:86
#: bookwyrm/templates/groups/form.html:32
#: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/edit_item_form.html:15
#: bookwyrm/templates/lists/form.html:130
-#: bookwyrm/templates/preferences/edit_user.html:136
+#: bookwyrm/templates/preferences/edit_user.html:140
#: bookwyrm/templates/readthrough/readthrough_modal.html:81
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
#: bookwyrm/templates/settings/federation/edit_instance.html:98
@@ -854,10 +858,10 @@ msgstr "儲存"
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
-#: bookwyrm/templates/book/book.html:210
+#: bookwyrm/templates/book/book.html:219
#: bookwyrm/templates/book/cover_add_modal.html:33
-#: bookwyrm/templates/book/edit/edit_book.html:144
-#: bookwyrm/templates/book/edit/edit_book.html:147
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:25
#: bookwyrm/templates/book/sync_modal.html:23
@@ -881,7 +885,7 @@ msgid "Loading data will connect to %(source_name)s and check f
msgstr ""
#: bookwyrm/templates/author/sync_modal.html:24
-#: bookwyrm/templates/book/edit/edit_book.html:129
+#: bookwyrm/templates/book/edit/edit_book.html:137
#: bookwyrm/templates/book/sync_modal.html:24
#: bookwyrm/templates/groups/members.html:29
#: bookwyrm/templates/landing/password_reset.html:52
@@ -891,96 +895,96 @@ msgstr ""
msgid "Confirm"
msgstr "確認"
-#: bookwyrm/templates/book/book.html:19
+#: bookwyrm/templates/book/book.html:20
msgid "Unable to connect to remote source."
msgstr ""
-#: bookwyrm/templates/book/book.html:64 bookwyrm/templates/book/book.html:65
+#: bookwyrm/templates/book/book.html:71 bookwyrm/templates/book/book.html:72
msgid "Edit Book"
msgstr "編輯書目"
-#: bookwyrm/templates/book/book.html:88 bookwyrm/templates/book/book.html:91
+#: bookwyrm/templates/book/book.html:97 bookwyrm/templates/book/book.html:100
msgid "Click to add cover"
msgstr ""
-#: bookwyrm/templates/book/book.html:97
+#: bookwyrm/templates/book/book.html:106
msgid "Failed to load cover"
msgstr "載入封面失敗"
-#: bookwyrm/templates/book/book.html:108
+#: bookwyrm/templates/book/book.html:117
msgid "Click to enlarge"
msgstr ""
-#: bookwyrm/templates/book/book.html:186
+#: bookwyrm/templates/book/book.html:195
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
msgstr[0] "(%(review_count)s 則書評)"
-#: bookwyrm/templates/book/book.html:198
+#: bookwyrm/templates/book/book.html:207
msgid "Add Description"
msgstr "新增描述"
-#: bookwyrm/templates/book/book.html:205
+#: bookwyrm/templates/book/book.html:214
#: bookwyrm/templates/book/edit/edit_book_form.html:42
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "描述:"
-#: bookwyrm/templates/book/book.html:221
+#: bookwyrm/templates/book/book.html:230
#, python-format
msgid "%(count)s edition"
msgid_plural "%(count)s editions"
msgstr[0] ""
-#: bookwyrm/templates/book/book.html:235
+#: bookwyrm/templates/book/book.html:244
msgid "You have shelved this edition in:"
msgstr ""
-#: bookwyrm/templates/book/book.html:250
+#: bookwyrm/templates/book/book.html:259
#, python-format
msgid "A different edition of this book is on your %(shelf_name)s shelf."
msgstr "本書的 另一個版本 在你的 %(shelf_name)s 書架上。"
-#: bookwyrm/templates/book/book.html:261
+#: bookwyrm/templates/book/book.html:270
msgid "Your reading activity"
msgstr "你的閱讀活動"
-#: bookwyrm/templates/book/book.html:267
+#: bookwyrm/templates/book/book.html:276
#: bookwyrm/templates/guided_tour/book.html:56
msgid "Add read dates"
msgstr "新增閱讀日期"
-#: bookwyrm/templates/book/book.html:275
+#: bookwyrm/templates/book/book.html:284
msgid "You don't have any reading activity for this book."
msgstr "你還未閱讀這本書。"
-#: bookwyrm/templates/book/book.html:301
+#: bookwyrm/templates/book/book.html:310
msgid "Your reviews"
msgstr "你的書評"
-#: bookwyrm/templates/book/book.html:307
+#: bookwyrm/templates/book/book.html:316
msgid "Your comments"
msgstr "你的評論"
-#: bookwyrm/templates/book/book.html:313
+#: bookwyrm/templates/book/book.html:322
msgid "Your quotes"
msgstr "你的引用"
-#: bookwyrm/templates/book/book.html:349
+#: bookwyrm/templates/book/book.html:358
msgid "Subjects"
msgstr "主題"
-#: bookwyrm/templates/book/book.html:361
+#: bookwyrm/templates/book/book.html:370
msgid "Places"
msgstr "地點"
-#: bookwyrm/templates/book/book.html:372
+#: bookwyrm/templates/book/book.html:381
#: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
-#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@@ -989,11 +993,11 @@ msgstr "地點"
msgid "Lists"
msgstr "列表"
-#: bookwyrm/templates/book/book.html:384
+#: bookwyrm/templates/book/book.html:393
msgid "Add to list"
msgstr "新增到列表"
-#: bookwyrm/templates/book/book.html:394
+#: bookwyrm/templates/book/book.html:403
#: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:255
@@ -1053,8 +1057,8 @@ msgstr ""
#: bookwyrm/templates/components/modal.html:13
#: bookwyrm/templates/components/modal.html:30
#: bookwyrm/templates/feed/suggested_books.html:67
-#: bookwyrm/templates/get_started/layout.html:25
-#: bookwyrm/templates/get_started/layout.html:58
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
msgid "Close"
msgstr "關閉"
@@ -1069,47 +1073,51 @@ msgstr "編輯 \"%(book_title)s\""
msgid "Add Book"
msgstr "新增書目"
-#: bookwyrm/templates/book/edit/edit_book.html:62
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr ""
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
msgid "Confirm Book Info"
msgstr "確認書目資料"
-#: bookwyrm/templates/book/edit/edit_book.html:70
+#: bookwyrm/templates/book/edit/edit_book.html:78
#, python-format
msgid "Is \"%(name)s\" one of these authors?"
msgstr ""
-#: bookwyrm/templates/book/edit/edit_book.html:81
+#: bookwyrm/templates/book/edit/edit_book.html:89
#, python-format
msgid "Author of %(book_title)s "
msgstr ""
-#: bookwyrm/templates/book/edit/edit_book.html:85
+#: bookwyrm/templates/book/edit/edit_book.html:93
#, python-format
msgid "Author of %(alt_title)s "
msgstr ""
-#: bookwyrm/templates/book/edit/edit_book.html:87
+#: bookwyrm/templates/book/edit/edit_book.html:95
msgid "Find more information at isni.org"
msgstr ""
-#: bookwyrm/templates/book/edit/edit_book.html:97
+#: bookwyrm/templates/book/edit/edit_book.html:105
msgid "This is a new author"
msgstr "這是一位新的作者"
-#: bookwyrm/templates/book/edit/edit_book.html:107
+#: bookwyrm/templates/book/edit/edit_book.html:115
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "正在建立新的作者: %(name)s"
-#: bookwyrm/templates/book/edit/edit_book.html:114
+#: bookwyrm/templates/book/edit/edit_book.html:122
msgid "Is this an edition of an existing work?"
msgstr "這是已存在的作品的另一個版本嗎?"
-#: bookwyrm/templates/book/edit/edit_book.html:122
+#: bookwyrm/templates/book/edit/edit_book.html:130
msgid "This is a new work"
msgstr "這是一個新的作品。"
-#: bookwyrm/templates/book/edit/edit_book.html:131
+#: bookwyrm/templates/book/edit/edit_book.html:139
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
@@ -1464,6 +1472,19 @@ msgstr "由 %(publisher)s 出版。"
msgid "rated it"
msgstr "評價了"
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+#, python-format
+msgid "Book %(series_number)s"
+msgstr ""
+
+#: bookwyrm/templates/book/series.html:27
+msgid "Unsorted Book"
+msgstr ""
+
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
@@ -1656,7 +1677,7 @@ msgstr ""
#: bookwyrm/templates/discover/discover.html:4
#: bookwyrm/templates/discover/discover.html:10
-#: bookwyrm/templates/layout.html:94
+#: bookwyrm/templates/layout.html:93
msgid "Discover"
msgstr ""
@@ -1788,7 +1809,7 @@ msgstr ""
msgid "Test email"
msgstr ""
-#: bookwyrm/templates/embed-layout.html:20 bookwyrm/templates/layout.html:30
+#: bookwyrm/templates/embed-layout.html:20 bookwyrm/templates/layout.html:31
#: bookwyrm/templates/setup/layout.html:15
#: bookwyrm/templates/two_factor_auth/two_factor_login.html:18
#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:18
@@ -1898,13 +1919,13 @@ msgstr ""
#: bookwyrm/templates/get_started/book_preview.html:10
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:37
-#: bookwyrm/templatetags/shelf_tags.py:48
+#: bookwyrm/templatetags/shelf_tags.py:14
msgid "To Read"
msgstr "想讀"
#: bookwyrm/templates/get_started/book_preview.html:11
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:38
-#: bookwyrm/templatetags/shelf_tags.py:50
+#: bookwyrm/templatetags/shelf_tags.py:15
msgid "Currently Reading"
msgstr "在讀"
@@ -1913,12 +1934,13 @@ msgstr "在讀"
#: bookwyrm/templates/snippets/shelf_selector.html:46
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12
-#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:52
+#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:16
msgid "Read"
msgstr "讀過"
#: bookwyrm/templates/get_started/book_preview.html:13
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:40
+#: bookwyrm/templatetags/shelf_tags.py:17
msgid "Stopped Reading"
msgstr ""
@@ -1927,7 +1949,7 @@ msgid "What are you reading?"
msgstr "你在閱讀什麼?"
#: bookwyrm/templates/get_started/books.html:9
-#: bookwyrm/templates/layout.html:38 bookwyrm/templates/lists/list.html:213
+#: bookwyrm/templates/layout.html:39 bookwyrm/templates/lists/list.html:213
msgid "Search for a book"
msgstr "搜尋書目"
@@ -1946,10 +1968,11 @@ msgstr "你可以在開始使用 %(site_name)s 後新增書目。"
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/groups/members.html:15
-#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:44
-#: bookwyrm/templates/layout.html:45 bookwyrm/templates/lists/list.html:217
+#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:45
+#: bookwyrm/templates/layout.html:46 bookwyrm/templates/lists/list.html:217
#: bookwyrm/templates/search/layout.html:5
#: bookwyrm/templates/search/layout.html:10
+#: bookwyrm/templates/search/layout.html:32
msgid "Search"
msgstr "搜尋"
@@ -1957,6 +1980,10 @@ msgstr "搜尋"
msgid "Suggested Books"
msgstr "推薦的書目"
+#: bookwyrm/templates/get_started/books.html:33
+msgid "Search results"
+msgstr ""
+
#: bookwyrm/templates/get_started/books.html:46
#, python-format
msgid "Popular on %(site_name)s"
@@ -1977,28 +2004,28 @@ msgstr "儲存 & 繼續"
msgid "Welcome"
msgstr "歡迎"
-#: bookwyrm/templates/get_started/layout.html:22
+#: bookwyrm/templates/get_started/layout.html:24
msgid "These are some first steps to get you started."
msgstr "這些最初的步驟可以幫助你入門。"
-#: bookwyrm/templates/get_started/layout.html:36
+#: bookwyrm/templates/get_started/layout.html:38
#: bookwyrm/templates/get_started/profile.html:6
msgid "Create your profile"
msgstr "建立你的使用者資料"
-#: bookwyrm/templates/get_started/layout.html:40
+#: bookwyrm/templates/get_started/layout.html:42
msgid "Add books"
msgstr "新增書目"
-#: bookwyrm/templates/get_started/layout.html:44
+#: bookwyrm/templates/get_started/layout.html:46
msgid "Find friends"
msgstr "尋找同好"
-#: bookwyrm/templates/get_started/layout.html:50
+#: bookwyrm/templates/get_started/layout.html:52
msgid "Skip this step"
msgstr "跳過此步驟"
-#: bookwyrm/templates/get_started/layout.html:54
+#: bookwyrm/templates/get_started/layout.html:56
#: bookwyrm/templates/guided_tour/group.html:101
msgid "Finish"
msgstr "完成"
@@ -2035,6 +2062,10 @@ msgstr "在推薦的使用者中顯示此帳號:"
msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users."
msgstr "你的帳號會顯示在目錄中,並且可能會受其它 BookWyrm 使用者推薦。"
+#: bookwyrm/templates/get_started/users.html:8
+msgid "You can follow users on other BookWyrm instances and federated services like Mastodon."
+msgstr ""
+
#: bookwyrm/templates/get_started/users.html:11
msgid "Search for a user"
msgstr "搜尋使用者"
@@ -2219,7 +2250,7 @@ msgstr ""
#: bookwyrm/templates/guided_tour/user_profile.html:72
#: bookwyrm/templates/guided_tour/user_profile.html:95
#: bookwyrm/templates/guided_tour/user_profile.html:118
-#: bookwyrm/templates/snippets/pagination.html:23
+#: bookwyrm/templates/snippets/pagination.html:30
msgid "Next"
msgstr "往後"
@@ -2423,8 +2454,8 @@ msgid "The bell will light up when you have a new notification. When it does, cl
msgstr ""
#: bookwyrm/templates/guided_tour/home.html:177
-#: bookwyrm/templates/layout.html:75 bookwyrm/templates/layout.html:107
-#: bookwyrm/templates/layout.html:108
+#: bookwyrm/templates/layout.html:75 bookwyrm/templates/layout.html:106
+#: bookwyrm/templates/layout.html:107
#: bookwyrm/templates/notifications/notifications_page.html:5
#: bookwyrm/templates/notifications/notifications_page.html:10
msgid "Notifications"
@@ -2669,6 +2700,15 @@ msgstr ""
msgid "Find a book"
msgstr ""
+#: bookwyrm/templates/hashtag.html:12
+#, python-format
+msgid "See tagged statuses in the local %(site_name)s community"
+msgstr ""
+
+#: bookwyrm/templates/hashtag.html:25
+msgid "No activities for this hashtag yet!"
+msgstr ""
+
#: bookwyrm/templates/import/import.html:5
#: bookwyrm/templates/import/import.html:9
#: bookwyrm/templates/shelf/shelf.html:64
@@ -2788,7 +2828,7 @@ msgid "Retry Status"
msgstr ""
#: bookwyrm/templates/import/import_status.html:22
-#: bookwyrm/templates/settings/celery.html:36
+#: bookwyrm/templates/settings/celery.html:44
#: bookwyrm/templates/settings/imports/imports.html:6
#: bookwyrm/templates/settings/imports/imports.html:9
#: bookwyrm/templates/settings/layout.html:82
@@ -3010,7 +3050,7 @@ msgid "Login"
msgstr "登入"
#: bookwyrm/templates/landing/login.html:7
-#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:139
+#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:136
#: bookwyrm/templates/ostatus/error.html:37
msgid "Log in"
msgstr "登入"
@@ -3021,7 +3061,7 @@ msgstr ""
#: bookwyrm/templates/landing/login.html:21
#: bookwyrm/templates/landing/reactivate.html:17
-#: bookwyrm/templates/layout.html:130 bookwyrm/templates/ostatus/error.html:28
+#: bookwyrm/templates/layout.html:127 bookwyrm/templates/ostatus/error.html:28
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
msgstr "使用者名稱:"
@@ -3029,13 +3069,13 @@ msgstr "使用者名稱:"
#: bookwyrm/templates/landing/login.html:27
#: bookwyrm/templates/landing/password_reset.html:26
#: bookwyrm/templates/landing/reactivate.html:23
-#: bookwyrm/templates/layout.html:134 bookwyrm/templates/ostatus/error.html:32
+#: bookwyrm/templates/layout.html:131 bookwyrm/templates/ostatus/error.html:32
#: bookwyrm/templates/preferences/2fa.html:91
#: bookwyrm/templates/snippets/register_form.html:45
msgid "Password:"
msgstr "密碼:"
-#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:136
+#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:133
#: bookwyrm/templates/ostatus/error.html:34
msgid "Forgot your password?"
msgstr "忘記了密碼?"
@@ -3078,35 +3118,35 @@ msgstr ""
msgid "%(site_name)s search"
msgstr ""
-#: bookwyrm/templates/layout.html:36
+#: bookwyrm/templates/layout.html:37
msgid "Search for a book, user, or list"
msgstr ""
-#: bookwyrm/templates/layout.html:51 bookwyrm/templates/layout.html:52
+#: bookwyrm/templates/layout.html:52 bookwyrm/templates/layout.html:53
msgid "Scan Barcode"
msgstr ""
-#: bookwyrm/templates/layout.html:66
+#: bookwyrm/templates/layout.html:67
msgid "Main navigation menu"
msgstr "主導航選單"
-#: bookwyrm/templates/layout.html:88
+#: bookwyrm/templates/layout.html:87
msgid "Feed"
msgstr "動態"
-#: bookwyrm/templates/layout.html:135 bookwyrm/templates/ostatus/error.html:33
+#: bookwyrm/templates/layout.html:132 bookwyrm/templates/ostatus/error.html:33
msgid "password"
msgstr "密碼"
-#: bookwyrm/templates/layout.html:147
+#: bookwyrm/templates/layout.html:144
msgid "Join"
msgstr "加入"
-#: bookwyrm/templates/layout.html:181
+#: bookwyrm/templates/layout.html:179
msgid "Successfully posted status"
msgstr ""
-#: bookwyrm/templates/layout.html:182
+#: bookwyrm/templates/layout.html:180
msgid "Error posting status"
msgstr ""
@@ -3583,6 +3623,12 @@ msgstr ""
msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
msgstr ""
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] ""
+
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
msgid "%(related_user)s mentioned you in a review of %(book_title)s "
@@ -3990,6 +4036,11 @@ msgstr ""
msgid "Default post privacy:"
msgstr ""
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr ""
+
#: bookwyrm/templates/preferences/export.html:4
#: bookwyrm/templates/preferences/export.html:7
msgid "CSV Export"
@@ -4411,63 +4462,80 @@ msgid "Celery Status"
msgstr ""
#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:22
msgid "Queues"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:18
+#: bookwyrm/templates/settings/celery.html:26
msgid "Low priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:24
+#: bookwyrm/templates/settings/celery.html:32
msgid "Medium priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:30
+#: bookwyrm/templates/settings/celery.html:38
msgid "High priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:46
+#: bookwyrm/templates/settings/celery.html:50
+msgid "Broadcasts"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:60
msgid "Could not connect to Redis broker"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:54
+#: bookwyrm/templates/settings/celery.html:68
msgid "Active Tasks"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:59
+#: bookwyrm/templates/settings/celery.html:73
#: bookwyrm/templates/settings/imports/imports.html:113
msgid "ID"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:60
+#: bookwyrm/templates/settings/celery.html:74
msgid "Task name"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:61
+#: bookwyrm/templates/settings/celery.html:75
msgid "Run time"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:62
+#: bookwyrm/templates/settings/celery.html:76
msgid "Priority"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:67
+#: bookwyrm/templates/settings/celery.html:81
msgid "No active tasks"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:85
+#: bookwyrm/templates/settings/celery.html:99
msgid "Workers"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:90
+#: bookwyrm/templates/settings/celery.html:104
msgid "Uptime:"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:100
+#: bookwyrm/templates/settings/celery.html:114
msgid "Could not connect to Celery"
msgstr ""
-#: bookwyrm/templates/settings/celery.html:107
+#: bookwyrm/templates/settings/celery.html:120
+#: bookwyrm/templates/settings/celery.html:143
+msgid "Clear Queues"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:124
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:150
msgid "Errors"
msgstr ""
@@ -4828,7 +4896,7 @@ msgid "This is only intended to be used when things have gone very wrong with im
msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:31
-msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
msgstr ""
#: bookwyrm/templates/settings/imports/imports.html:36
@@ -5662,11 +5730,11 @@ msgstr ""
msgid "Instance Setup"
msgstr ""
-#: bookwyrm/templates/setup/layout.html:19
+#: bookwyrm/templates/setup/layout.html:21
msgid "Installing BookWyrm"
msgstr ""
-#: bookwyrm/templates/setup/layout.html:22
+#: bookwyrm/templates/setup/layout.html:24
msgid "Need help?"
msgstr ""
@@ -5684,7 +5752,7 @@ msgid "User profile"
msgstr ""
#: bookwyrm/templates/shelf/shelf.html:39
-#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
msgid "All books"
msgstr "所有書目"
@@ -5756,7 +5824,7 @@ msgid "and %(remainder_count_display)s other"
msgid_plural "and %(remainder_count_display)s others"
msgstr[0] ""
-#: bookwyrm/templates/snippets/book_cover.html:61
+#: bookwyrm/templates/snippets/book_cover.html:63
msgid "No cover"
msgstr "沒有封面"
@@ -5856,6 +5924,10 @@ msgstr ""
msgid "At percent:"
msgstr ""
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr ""
+
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
@@ -6029,10 +6101,18 @@ msgstr "%(total_pages)s 頁中的第 %(page)s 頁"
msgid "page %(page)s"
msgstr "第 %(page)s 頁"
-#: bookwyrm/templates/snippets/pagination.html:12
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr ""
+
+#: bookwyrm/templates/snippets/pagination.html:15
msgid "Previous"
msgstr "往前"
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr ""
+
#: bookwyrm/templates/snippets/privacy-icons.html:12
msgid "Followers-only"
msgstr "僅關注者"
@@ -6161,19 +6241,29 @@ msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:102
#, python-format
-msgid "(Page %(page)s)"
+msgid "(Page %(page)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:102
+#, python-format
+msgid "%(endpage)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:104
+#, python-format
+msgid "(%(percent)s%%"
msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:104
#, python-format
-msgid "(%(percent)s%%)"
+msgid " - %(endpercent)s%%"
msgstr ""
#: bookwyrm/templates/snippets/status/content_status.html:127
msgid "Open image in new window"
msgstr "在新視窗中開啟圖片"
-#: bookwyrm/templates/snippets/status/content_status.html:146
+#: bookwyrm/templates/snippets/status/content_status.html:148
msgid "Hide status"
msgstr ""
diff --git a/requirements.txt b/requirements.txt
index b63c1f30cc..e175e15c89 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,7 +2,7 @@ aiohttp==3.8.3
bleach==5.0.1
celery==5.2.7
colorthief==0.2.1
-Django==3.2.18
+Django==3.2.19
django-celery-beat==2.4.0
django-compressor==4.3.1
django-imagekit==4.1.0
@@ -17,18 +17,20 @@ Pillow==9.4.0
psycopg2==2.9.5
pycryptodome==3.16.0
python-dateutil==2.8.2
-redis==3.4.1
+redis==4.5.4
requests==2.28.2
responses==0.22.0
pytz>=2022.7
boto3==1.26.57
django-storages==1.13.2
+django-storages[azure]
django-redis==5.2.0
-opentelemetry-api==1.11.1
-opentelemetry-exporter-otlp-proto-grpc==1.11.1
-opentelemetry-instrumentation-celery==0.30b1
-opentelemetry-instrumentation-django==0.30b1
-opentelemetry-sdk==1.11.1
+opentelemetry-api==1.16.0
+opentelemetry-exporter-otlp-proto-grpc==1.16.0
+opentelemetry-instrumentation-celery==0.37b0
+opentelemetry-instrumentation-django==0.37b0
+opentelemetry-instrumentation-psycopg2==0.37b0
+opentelemetry-sdk==1.16.0
protobuf==3.20.*
pyotp==2.8.0
qrcode==7.3.1