- {% trans "About this server" %}
+ {% trans "About this instance" %}
{% if site.admin_email %}
diff --git a/bookwyrm/templates/moderation/reports.html b/bookwyrm/templates/moderation/reports.html
index f9d9d99b6..95a276af4 100644
--- a/bookwyrm/templates/moderation/reports.html
+++ b/bookwyrm/templates/moderation/reports.html
@@ -3,7 +3,7 @@
{% block title %}
{% if server %}
-{% blocktrans with server_name=server.server_name %}Reports: {{ server_name }}{% endblocktrans %}
+{% blocktrans with instance_name=server.server_name %}Reports: {{ instance_name }}{% endblocktrans %}
{% else %}
{% trans "Reports" %}
{% endif %}
@@ -11,7 +11,7 @@
{% block header %}
{% if server %}
-{% blocktrans with server_name=server.server_name %}Reports: {{ server_name }}{% endblocktrans %}
+{% blocktrans with instance_name=server.server_name %}Reports: {{ instance_name }}{% endblocktrans %}
Clear filters
{% else %}
{% trans "Reports" %}
diff --git a/bookwyrm/templates/preferences/blocks.html b/bookwyrm/templates/preferences/blocks.html
index 24866fa35..699bfb7e1 100644
--- a/bookwyrm/templates/preferences/blocks.html
+++ b/bookwyrm/templates/preferences/blocks.html
@@ -1,4 +1,4 @@
-{% extends 'preferences/preferences_layout.html' %}
+{% extends 'preferences/layout.html' %}
{% load i18n %}
{% block title %}{% trans "Blocked Users" %}{{ author.name }}{% endblock %}
diff --git a/bookwyrm/templates/preferences/change_password.html b/bookwyrm/templates/preferences/change_password.html
index 9f5b7e8b9..f6f1be09d 100644
--- a/bookwyrm/templates/preferences/change_password.html
+++ b/bookwyrm/templates/preferences/change_password.html
@@ -1,4 +1,4 @@
-{% extends 'preferences/preferences_layout.html' %}
+{% extends 'preferences/layout.html' %}
{% load i18n %}
{% block title %}{% trans "Change Password" %}{% endblock %}
diff --git a/bookwyrm/templates/preferences/delete_user.html b/bookwyrm/templates/preferences/delete_user.html
new file mode 100644
index 000000000..63bd2f860
--- /dev/null
+++ b/bookwyrm/templates/preferences/delete_user.html
@@ -0,0 +1,30 @@
+{% extends 'preferences/layout.html' %}
+{% load i18n %}
+
+{% block title %}{% trans "Delete Account" %}{% endblock %}
+
+{% block header %}
+{% trans "Delete Account" %}
+{% endblock %}
+
+{% block panel %}
+
+
{% trans "Permanently delete account" %}
+
+ {% trans "Deleting your account cannot be undone. The username will not be available to register in the future." %}
+
+
+
+
+{% endblock %}
+
diff --git a/bookwyrm/templates/preferences/edit_user.html b/bookwyrm/templates/preferences/edit_user.html
index 597a8ef0d..9e2af7bee 100644
--- a/bookwyrm/templates/preferences/edit_user.html
+++ b/bookwyrm/templates/preferences/edit_user.html
@@ -1,4 +1,4 @@
-{% extends 'preferences/preferences_layout.html' %}
+{% extends 'preferences/layout.html' %}
{% load i18n %}
{% block title %}{% trans "Edit Profile" %}{% endblock %}
diff --git a/bookwyrm/templates/preferences/preferences_layout.html b/bookwyrm/templates/preferences/layout.html
similarity index 84%
rename from bookwyrm/templates/preferences/preferences_layout.html
rename to bookwyrm/templates/preferences/layout.html
index baf87e478..758be9e55 100644
--- a/bookwyrm/templates/preferences/preferences_layout.html
+++ b/bookwyrm/templates/preferences/layout.html
@@ -18,6 +18,10 @@
{% url 'prefs-password' as url %}
{% trans "Change Password" %}
+
+ {% url 'prefs-delete' as url %}
+ {% trans "Delete Account" %}
+
{% endif %}
diff --git a/bookwyrm/templates/settings/edit_server.html b/bookwyrm/templates/settings/edit_server.html
index 04585fe59..55346a526 100644
--- a/bookwyrm/templates/settings/edit_server.html
+++ b/bookwyrm/templates/settings/edit_server.html
@@ -1,10 +1,10 @@
{% extends 'settings/admin_layout.html' %}
{% load i18n %}
-{% block title %}{% trans "Add server" %}{% endblock %}
+{% block title %}{% trans "Add instance" %}{% endblock %}
{% block header %}
-{% trans "Add server" %}
-
{% trans "Back to server list" %}
+{% trans "Add instance" %}
+
{% trans "Back to instance list" %}
{% endblock %}
{% block panel %}
@@ -17,7 +17,7 @@
{% url 'settings-add-federated-server' as url %}
- {% trans "Add server" %}
+ {% trans "Add instance" %}
diff --git a/bookwyrm/templates/settings/federation.html b/bookwyrm/templates/settings/federation.html
index bf1986725..208ecf8d2 100644
--- a/bookwyrm/templates/settings/federation.html
+++ b/bookwyrm/templates/settings/federation.html
@@ -1,13 +1,13 @@
{% extends 'settings/admin_layout.html' %}
{% load i18n %}
-{% block title %}{% trans "Federated Servers" %}{% endblock %}
+{% block title %}{% trans "Federated Instances" %}{% endblock %}
-{% block header %}{% trans "Federated Servers" %}{% endblock %}
+{% block header %}{% trans "Federated Instances" %}{% endblock %}
{% block edit-button %}
-
- {% trans "Add server" %}
+
+ {% trans "Add instance" %}
{% endblock %}
@@ -16,7 +16,7 @@
{% url 'settings-federation' as url %}
- {% trans "Server name" as text %}
+ {% trans "Instance name" as text %}
{% include 'snippets/table-sort-header.html' with field="server_name" sort=sort text=text %}
|
diff --git a/bookwyrm/templates/settings/server_blocklist.html b/bookwyrm/templates/settings/server_blocklist.html
index 0de49acd7..171cf1339 100644
--- a/bookwyrm/templates/settings/server_blocklist.html
+++ b/bookwyrm/templates/settings/server_blocklist.html
@@ -1,10 +1,10 @@
{% extends 'settings/admin_layout.html' %}
{% load i18n %}
-{% block title %}{% trans "Add server" %}{% endblock %}
+{% block title %}{% trans "Add instance" %}{% endblock %}
{% block header %}
{% trans "Import Blocklist" %}
-{% trans "Back to server list" %}
+{% trans "Back to instance list" %}
{% endblock %}
{% block panel %}
@@ -17,7 +17,7 @@
{% url 'settings-add-federated-server' as url %}
- {% trans "Add server" %}
+ {% trans "Add instance" %}
@@ -51,7 +51,7 @@
[
{
- "instance": "example.server.com",
+ "instance": "example.instance.com",
"url": "https://link.to.more/info"
},
...
diff --git a/bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html b/bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html
index f32d28b79..36addc7b8 100644
--- a/bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html
+++ b/bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html
@@ -7,7 +7,7 @@
{% block modal-form-open %}
- |
- {% trans "Remote server" as text %}
+ {% trans "Remote instance" as text %}
{% include 'snippets/table-sort-header.html' with field="federated_server__server_name" sort=sort text=text %}
|
diff --git a/bookwyrm/templates/user_admin/user_moderation_actions.html b/bookwyrm/templates/user_admin/user_moderation_actions.html
index 816e787a2..e4460a687 100644
--- a/bookwyrm/templates/user_admin/user_moderation_actions.html
+++ b/bookwyrm/templates/user_admin/user_moderation_actions.html
@@ -1,6 +1,12 @@
{% load i18n %}
+ {% if not user.is_active and user.deactivation_reason == "self_deletion" %}
+
+ {% trans "Permanently deleted" %}
+
+ {% else %}
{% trans "Actions" %}
+
+
{% if user.local %}
{% endif %}
+
+ {% endif %}
diff --git a/bookwyrm/tests/views/test_edit_user.py b/bookwyrm/tests/views/test_edit_user.py
new file mode 100644
index 000000000..e3b9d4635
--- /dev/null
+++ b/bookwyrm/tests/views/test_edit_user.py
@@ -0,0 +1,150 @@
+""" test for app action functionality """
+import json
+import pathlib
+from unittest.mock import patch
+from PIL import Image
+
+from django.contrib.auth.models import AnonymousUser
+from django.contrib.sessions.middleware import SessionMiddleware
+from django.core.files.base import ContentFile
+from django.core.files.uploadedfile import SimpleUploadedFile
+from django.template.response import TemplateResponse
+from django.test import TestCase
+from django.test.client import RequestFactory
+
+from bookwyrm import forms, models, views
+
+
+class EditUserViews(TestCase):
+ """view user and edit profile"""
+
+ def setUp(self):
+ """we need basic test data and mocks"""
+ self.factory = RequestFactory()
+ self.local_user = models.User.objects.create_user(
+ "mouse@local.com",
+ "mouse@mouse.mouse",
+ "password",
+ local=True,
+ localname="mouse",
+ )
+ self.rat = models.User.objects.create_user(
+ "rat@local.com", "rat@rat.rat", "password", local=True, localname="rat"
+ )
+ self.book = models.Edition.objects.create(title="test")
+ with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
+ models.ShelfBook.objects.create(
+ book=self.book,
+ user=self.local_user,
+ shelf=self.local_user.shelf_set.first(),
+ )
+
+ models.SiteSettings.objects.create()
+ self.anonymous_user = AnonymousUser
+ self.anonymous_user.is_authenticated = False
+
+ def test_edit_user_page(self):
+ """there are so many views, this just makes sure it LOADS"""
+ view = views.EditUser.as_view()
+ request = self.factory.get("")
+ request.user = self.local_user
+ result = view(request)
+ self.assertIsInstance(result, TemplateResponse)
+ result.render()
+ self.assertEqual(result.status_code, 200)
+
+ def test_edit_user(self):
+ """use a form to update a user"""
+ view = views.EditUser.as_view()
+ form = forms.EditUserForm(instance=self.local_user)
+ form.data["name"] = "New Name"
+ form.data["email"] = "wow@email.com"
+ form.data["preferred_timezone"] = "UTC"
+ request = self.factory.post("", form.data)
+ request.user = self.local_user
+
+ self.assertIsNone(self.local_user.name)
+ with patch(
+ "bookwyrm.models.activitypub_mixin.broadcast_task.delay"
+ ) as delay_mock:
+ view(request)
+ self.assertEqual(delay_mock.call_count, 1)
+ self.assertEqual(self.local_user.name, "New Name")
+ self.assertEqual(self.local_user.email, "wow@email.com")
+
+ def test_edit_user_avatar(self):
+ """use a form to update a user"""
+ view = views.EditUser.as_view()
+ form = forms.EditUserForm(instance=self.local_user)
+ form.data["name"] = "New Name"
+ form.data["email"] = "wow@email.com"
+ form.data["preferred_timezone"] = "UTC"
+ image_file = pathlib.Path(__file__).parent.joinpath(
+ "../../static/images/no_cover.jpg"
+ )
+ form.data["avatar"] = SimpleUploadedFile(
+ image_file, open(image_file, "rb").read(), content_type="image/jpeg"
+ )
+ request = self.factory.post("", form.data)
+ request.user = self.local_user
+
+ with patch(
+ "bookwyrm.models.activitypub_mixin.broadcast_task.delay"
+ ) as delay_mock:
+ view(request)
+ self.assertEqual(delay_mock.call_count, 1)
+ self.assertEqual(self.local_user.name, "New Name")
+ self.assertEqual(self.local_user.email, "wow@email.com")
+ self.assertIsNotNone(self.local_user.avatar)
+ self.assertEqual(self.local_user.avatar.width, 120)
+ self.assertEqual(self.local_user.avatar.height, 120)
+
+ def test_crop_avatar(self):
+ """reduce that image size"""
+ image_file = pathlib.Path(__file__).parent.joinpath(
+ "../../static/images/no_cover.jpg"
+ )
+ image = Image.open(image_file)
+
+ result = views.edit_user.crop_avatar(image)
+ self.assertIsInstance(result, ContentFile)
+ image_result = Image.open(result)
+ self.assertEqual(image_result.size, (120, 120))
+
+ def test_delete_user_page(self):
+ """there are so many views, this just makes sure it LOADS"""
+ view = views.DeleteUser.as_view()
+ request = self.factory.get("")
+ request.user = self.local_user
+ result = view(request)
+ self.assertIsInstance(result, TemplateResponse)
+ result.render()
+ self.assertEqual(result.status_code, 200)
+
+ def test_delete_user(self):
+ """use a form to update a user"""
+ view = views.DeleteUser.as_view()
+ form = forms.DeleteUserForm()
+ form.data["password"] = "password"
+ request = self.factory.post("", form.data)
+ request.user = self.local_user
+ middleware = SessionMiddleware()
+ middleware.process_request(request)
+ request.session.save()
+
+ self.assertIsNone(self.local_user.name)
+ with patch(
+ "bookwyrm.models.activitypub_mixin.broadcast_task.delay"
+ ) as delay_mock:
+ view(request)
+ self.assertEqual(delay_mock.call_count, 1)
+ activity = json.loads(delay_mock.call_args[0][1])
+ self.assertEqual(activity["type"], "Delete")
+ self.assertEqual(activity["actor"], self.local_user.remote_id)
+ self.assertEqual(
+ activity["cc"][0], "https://www.w3.org/ns/activitystreams#Public"
+ )
+
+ self.local_user.refresh_from_db()
+ self.assertFalse(self.local_user.is_active)
+ self.assertEqual(self.local_user.deactivation_reason, "self_deletion")
diff --git a/bookwyrm/tests/views/test_reading.py b/bookwyrm/tests/views/test_reading.py
index c591aa604..a1d0417f9 100644
--- a/bookwyrm/tests/views/test_reading.py
+++ b/bookwyrm/tests/views/test_reading.py
@@ -56,7 +56,7 @@ class ReadingViews(TestCase):
)
request.user = self.local_user
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
- views.start_reading(request, self.book.id)
+ views.ReadingStatus.as_view()(request, "start", self.book.id)
self.assertEqual(shelf.books.get(), self.book)
@@ -86,7 +86,7 @@ class ReadingViews(TestCase):
request = self.factory.post("")
request.user = self.local_user
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
- views.start_reading(request, self.book.id)
+ views.ReadingStatus.as_view()(request, "start", self.book.id)
self.assertFalse(to_read_shelf.books.exists())
self.assertEqual(shelf.books.get(), self.book)
@@ -112,7 +112,7 @@ class ReadingViews(TestCase):
request.user = self.local_user
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
- views.finish_reading(request, self.book.id)
+ views.ReadingStatus.as_view()(request, "finish", self.book.id)
self.assertEqual(shelf.books.get(), self.book)
diff --git a/bookwyrm/tests/views/test_readthrough.py b/bookwyrm/tests/views/test_readthrough.py
index 882c79291..764490d89 100644
--- a/bookwyrm/tests/views/test_readthrough.py
+++ b/bookwyrm/tests/views/test_readthrough.py
@@ -33,7 +33,7 @@ class ReadThrough(TestCase):
self.assertEqual(self.edition.readthrough_set.count(), 0)
self.client.post(
- "/start-reading/{}".format(self.edition.id),
+ "/reading-status/start/{}".format(self.edition.id),
{
"start_date": "2020-11-27",
},
@@ -54,10 +54,9 @@ class ReadThrough(TestCase):
self.assertEqual(self.edition.readthrough_set.count(), 0)
self.client.post(
- "/start-reading/{}".format(self.edition.id),
+ "/reading-status/start/{}".format(self.edition.id),
{
"start_date": "2020-11-27",
- "progress": 50,
},
)
@@ -66,15 +65,8 @@ class ReadThrough(TestCase):
self.assertEqual(
readthroughs[0].start_date, datetime(2020, 11, 27, tzinfo=timezone.utc)
)
- self.assertEqual(readthroughs[0].progress, 50)
self.assertEqual(readthroughs[0].finish_date, None)
- progress_updates = readthroughs[0].progressupdate_set.all()
- self.assertEqual(len(progress_updates), 1)
- self.assertEqual(progress_updates[0].mode, models.ProgressMode.PAGE)
- self.assertEqual(progress_updates[0].progress, 50)
- self.assertEqual(delay_mock.call_count, 1)
-
# Update progress
self.client.post(
"/edit-readthrough",
@@ -87,9 +79,9 @@ class ReadThrough(TestCase):
progress_updates = (
readthroughs[0].progressupdate_set.order_by("updated_date").all()
)
- self.assertEqual(len(progress_updates), 2)
- self.assertEqual(progress_updates[1].mode, models.ProgressMode.PAGE)
- self.assertEqual(progress_updates[1].progress, 100)
+ self.assertEqual(len(progress_updates), 1)
+ self.assertEqual(progress_updates[0].mode, models.ProgressMode.PAGE)
+ self.assertEqual(progress_updates[0].progress, 100)
# Edit doesn't publish anything
self.assertEqual(delay_mock.call_count, 1)
diff --git a/bookwyrm/tests/views/test_user.py b/bookwyrm/tests/views/test_user.py
index 3fa78e355..478d2e8f4 100644
--- a/bookwyrm/tests/views/test_user.py
+++ b/bookwyrm/tests/views/test_user.py
@@ -1,17 +1,13 @@
""" test for app action functionality """
-import pathlib
from unittest.mock import patch
-from PIL import Image
from django.contrib.auth.models import AnonymousUser
-from django.core.files.base import ContentFile
-from django.core.files.uploadedfile import SimpleUploadedFile
from django.http.response import Http404
from django.template.response import TemplateResponse
from django.test import TestCase
from django.test.client import RequestFactory
-from bookwyrm import forms, models, views
+from bookwyrm import models, views
from bookwyrm.activitypub import ActivitypubResponse
@@ -137,71 +133,3 @@ class UserViews(TestCase):
is_api.return_value = False
with self.assertRaises(Http404):
view(request, "rat")
-
- def test_edit_user_page(self):
- """there are so many views, this just makes sure it LOADS"""
- view = views.EditUser.as_view()
- request = self.factory.get("")
- request.user = self.local_user
- result = view(request)
- self.assertIsInstance(result, TemplateResponse)
- result.render()
- self.assertEqual(result.status_code, 200)
-
- def test_edit_user(self):
- """use a form to update a user"""
- view = views.EditUser.as_view()
- form = forms.EditUserForm(instance=self.local_user)
- form.data["name"] = "New Name"
- form.data["email"] = "wow@email.com"
- form.data["preferred_timezone"] = "UTC"
- request = self.factory.post("", form.data)
- request.user = self.local_user
-
- self.assertIsNone(self.local_user.name)
- with patch(
- "bookwyrm.models.activitypub_mixin.broadcast_task.delay"
- ) as delay_mock:
- view(request)
- self.assertEqual(delay_mock.call_count, 1)
- self.assertEqual(self.local_user.name, "New Name")
- self.assertEqual(self.local_user.email, "wow@email.com")
-
- def test_edit_user_avatar(self):
- """use a form to update a user"""
- view = views.EditUser.as_view()
- form = forms.EditUserForm(instance=self.local_user)
- form.data["name"] = "New Name"
- form.data["email"] = "wow@email.com"
- form.data["preferred_timezone"] = "UTC"
- image_file = pathlib.Path(__file__).parent.joinpath(
- "../../static/images/no_cover.jpg"
- )
- form.data["avatar"] = SimpleUploadedFile(
- image_file, open(image_file, "rb").read(), content_type="image/jpeg"
- )
- request = self.factory.post("", form.data)
- request.user = self.local_user
-
- with patch(
- "bookwyrm.models.activitypub_mixin.broadcast_task.delay"
- ) as delay_mock:
- view(request)
- self.assertEqual(delay_mock.call_count, 1)
- self.assertEqual(self.local_user.name, "New Name")
- self.assertEqual(self.local_user.email, "wow@email.com")
- self.assertIsNotNone(self.local_user.avatar)
- self.assertEqual(self.local_user.avatar.width, 120)
- self.assertEqual(self.local_user.avatar.height, 120)
-
- def test_crop_avatar(self):
- """reduce that image size"""
- image_file = pathlib.Path(__file__).parent.joinpath(
- "../../static/images/no_cover.jpg"
- )
- image = Image.open(image_file)
-
- result = views.user.crop_avatar(image)
- self.assertIsInstance(result, ContentFile)
- image_result = Image.open(result)
- self.assertEqual(image_result.size, (120, 120))
diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py
index cca9396f7..bfdcd9fc0 100644
--- a/bookwyrm/urls.py
+++ b/bookwyrm/urls.py
@@ -223,7 +223,7 @@ urlpatterns = [
re_path(
r"^list/(?P
\d+)/curate/?$", views.Curate.as_view(), name="list-curate"
),
- # Uyser books
+ # User books
re_path(r"%s/books/?$" % user_path, views.Shelf.as_view(), name="user-shelves"),
re_path(
r"^%s/(helf|books)/(?P[\w-]+)(.json)?/?$" % user_path,
@@ -253,6 +253,7 @@ urlpatterns = [
views.ChangePassword.as_view(),
name="prefs-password",
),
+ re_path(r"^preferences/delete/?$", views.DeleteUser.as_view(), name="prefs-delete"),
re_path(r"^preferences/block/?$", views.Block.as_view(), name="prefs-block"),
re_path(r"^block/(?P\d+)/?$", views.Block.as_view()),
re_path(r"^unblock/(?P\d+)/?$", views.unblock),
@@ -315,8 +316,12 @@ urlpatterns = [
re_path(r"^delete-readthrough/?$", views.delete_readthrough),
re_path(r"^create-readthrough/?$", views.create_readthrough),
re_path(r"^delete-progressupdate/?$", views.delete_progressupdate),
- re_path(r"^start-reading/(?P\d+)/?$", views.start_reading),
- re_path(r"^finish-reading/(?P\d+)/?$", views.finish_reading),
+ # shelve actions
+ re_path(
+ r"^reading-status/(?Pwant|start|finish)/(?P\d+)/?$",
+ views.ReadingStatus.as_view(),
+ name="reading-status",
+ ),
# following
re_path(r"^follow/?$", views.follow, name="follow"),
re_path(r"^unfollow/?$", views.unfollow, name="unfollow"),
diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py
index 8bfaa7dac..41bb64e54 100644
--- a/bookwyrm/views/__init__.py
+++ b/bookwyrm/views/__init__.py
@@ -6,6 +6,7 @@ from .block import Block, unblock
from .books import Book, EditBook, ConfirmEditBook, Editions
from .books import upload_cover, add_description, switch_edition, resolve_book
from .directory import Directory
+from .edit_user import EditUser, DeleteUser
from .federation import Federation, FederatedServer
from .federation import AddFederatedServer, ImportServerBlocklist
from .federation import block_server, unblock_server
@@ -24,8 +25,9 @@ from .landing import About, Home, Discover
from .list import Lists, List, Curate, UserLists
from .notifications import Notifications
from .outbox import Outbox
-from .reading import edit_readthrough, create_readthrough, delete_readthrough
-from .reading import start_reading, finish_reading, delete_progressupdate
+from .reading import edit_readthrough, create_readthrough
+from .reading import delete_readthrough, delete_progressupdate
+from .reading import ReadingStatus
from .reports import Report, Reports, make_report, resolve_report, suspend_user
from .rss_feed import RssFeed
from .password import PasswordResetRequest, PasswordReset, ChangePassword
@@ -36,6 +38,6 @@ from .shelf import shelve, unshelve
from .site import Site
from .status import CreateStatus, DeleteStatus, DeleteAndRedraft
from .updates import get_notification_count, get_unread_status_count
-from .user import User, EditUser, Followers, Following
+from .user import User, Followers, Following
from .user_admin import UserAdmin, UserAdminList
from .wellknown import *
diff --git a/bookwyrm/views/edit_user.py b/bookwyrm/views/edit_user.py
new file mode 100644
index 000000000..c74b00c9d
--- /dev/null
+++ b/bookwyrm/views/edit_user.py
@@ -0,0 +1,113 @@
+""" edit or delete ones own account"""
+from io import BytesIO
+from uuid import uuid4
+from PIL import Image
+
+from django.contrib.auth import logout
+from django.contrib.auth.decorators import login_required
+from django.core.files.base import ContentFile
+from django.shortcuts import redirect
+from django.template.response import TemplateResponse
+from django.utils.decorators import method_decorator
+from django.views import View
+
+from bookwyrm import forms, models
+
+
+# pylint: disable=no-self-use
+@method_decorator(login_required, name="dispatch")
+class EditUser(View):
+ """edit user view"""
+
+ def get(self, request):
+ """edit profile page for a user"""
+ data = {
+ "form": forms.EditUserForm(instance=request.user),
+ "user": request.user,
+ }
+ return TemplateResponse(request, "preferences/edit_user.html", data)
+
+ def post(self, request):
+ """les get fancy with images"""
+ form = forms.EditUserForm(request.POST, request.FILES, instance=request.user)
+ if not form.is_valid():
+ data = {"form": form, "user": request.user}
+ return TemplateResponse(request, "preferences/edit_user.html", data)
+
+ user = save_user_form(form)
+
+ return redirect(user.local_path)
+
+
+# pylint: disable=no-self-use
+@method_decorator(login_required, name="dispatch")
+class DeleteUser(View):
+ """delete user view"""
+
+ def get(self, request):
+ """delete page for a user"""
+ data = {
+ "form": forms.DeleteUserForm(),
+ "user": request.user,
+ }
+ return TemplateResponse(request, "preferences/delete_user.html", data)
+
+ def post(self, request):
+ """les get fancy with images"""
+ form = forms.DeleteUserForm(request.POST, instance=request.user)
+ form.is_valid()
+ # idk why but I couldn't get check_password to work on request.user
+ user = models.User.objects.get(id=request.user.id)
+ if form.is_valid() and user.check_password(form.cleaned_data["password"]):
+ user.deactivation_reason = "self_deletion"
+ user.delete()
+ logout(request)
+ return redirect("/")
+
+ form.errors["password"] = ["Invalid password"]
+ data = {"form": form, "user": request.user}
+ return TemplateResponse(request, "preferences/delete_user.html", data)
+
+
+def save_user_form(form):
+ """special handling for the user form"""
+ user = form.save(commit=False)
+
+ if "avatar" in form.files:
+ # crop and resize avatar upload
+ image = Image.open(form.files["avatar"])
+ image = crop_avatar(image)
+
+ # set the name to a hash
+ extension = form.files["avatar"].name.split(".")[-1]
+ filename = "%s.%s" % (uuid4(), extension)
+ user.avatar.save(filename, image, save=False)
+ user.save()
+ return user
+
+
+def crop_avatar(image):
+ """reduce the size and make an avatar square"""
+ target_size = 120
+ width, height = image.size
+ thumbnail_scale = (
+ height / (width / target_size)
+ if height > width
+ else width / (height / target_size)
+ )
+ image.thumbnail([thumbnail_scale, thumbnail_scale])
+ width, height = image.size
+
+ width_diff = width - target_size
+ height_diff = height - target_size
+ cropped = image.crop(
+ (
+ int(width_diff / 2),
+ int(height_diff / 2),
+ int(width - (width_diff / 2)),
+ int(height - (height_diff / 2)),
+ )
+ )
+ output = BytesIO()
+ cropped.save(output, format=image.format)
+ return ContentFile(output.getvalue())
diff --git a/bookwyrm/views/get_started.py b/bookwyrm/views/get_started.py
index 7eae94831..7f6151728 100644
--- a/bookwyrm/views/get_started.py
+++ b/bookwyrm/views/get_started.py
@@ -14,7 +14,7 @@ from django.views import View
from bookwyrm import forms, models
from bookwyrm.connectors import connector_manager
from .helpers import get_suggested_users
-from .user import save_user_form
+from .edit_user import save_user_form
# pylint: disable= no-self-use
diff --git a/bookwyrm/views/import_data.py b/bookwyrm/views/import_data.py
index 62dcce73b..b2b88a2eb 100644
--- a/bookwyrm/views/import_data.py
+++ b/bookwyrm/views/import_data.py
@@ -78,13 +78,15 @@ class ImportStatus(View):
def get(self, request, job_id):
"""status of an import job"""
- job = models.ImportJob.objects.get(id=job_id)
+ job = get_object_or_404(models.ImportJob, id=job_id)
if job.user != request.user:
raise PermissionDenied
+
try:
task = app.AsyncResult(job.task_id)
except ValueError:
task = None
+
items = job.items.order_by("index").all()
failed_items = [i for i in items if i.fail_reason]
items = [i for i in items if not i.fail_reason]
diff --git a/bookwyrm/views/reading.py b/bookwyrm/views/reading.py
index 65ca717d4..1c897ab38 100644
--- a/bookwyrm/views/reading.py
+++ b/bookwyrm/views/reading.py
@@ -7,95 +7,79 @@ from dateutil.parser import ParserError
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseBadRequest, HttpResponseNotFound
from django.shortcuts import get_object_or_404, redirect
+from django.template.response import TemplateResponse
+from django.utils.decorators import method_decorator
+from django.views import View
from django.views.decorators.http import require_POST
from bookwyrm import models
from .helpers import get_edition, handle_reading_status
-from .shelf import handle_unshelve
-# pylint: disable= no-self-use
-@login_required
-@require_POST
-def start_reading(request, book_id):
- """begin reading a book"""
- book = get_edition(book_id)
- reading_shelf = models.Shelf.objects.filter(
- identifier=models.Shelf.READING, user=request.user
- ).first()
+@method_decorator(login_required, name="dispatch")
+# pylint: disable=no-self-use
+class ReadingStatus(View):
+ """consider reading a book"""
- # create a readthrough
- readthrough = update_readthrough(request, book=book)
- if readthrough:
- readthrough.save()
+ def get(self, request, status, book_id):
+ """modal page"""
+ book = get_edition(book_id)
+ template = {
+ "want": "want.html",
+ "start": "start.html",
+ "finish": "finish.html",
+ }.get(status)
+ if not template:
+ return HttpResponseNotFound()
+ return TemplateResponse(request, f"reading_progress/{template}", {"book": book})
- # create a progress update if we have a page
- readthrough.create_update()
+ def post(self, request, status, book_id):
+ """desire a book"""
+ identifier = {
+ "want": models.Shelf.TO_READ,
+ "start": models.Shelf.READING,
+ "finish": models.Shelf.READ_FINISHED,
+ }.get(status)
+ if not identifier:
+ return HttpResponseBadRequest()
- current_status_shelfbook = (
- models.ShelfBook.objects.select_related("shelf")
- .filter(
- shelf__identifier__in=models.Shelf.READ_STATUS_IDENTIFIERS,
- user=request.user,
- book=book,
+ desired_shelf = models.Shelf.objects.filter(
+ identifier=identifier, user=request.user
+ ).first()
+
+ book = get_edition(book_id)
+
+ current_status_shelfbook = (
+ models.ShelfBook.objects.select_related("shelf")
+ .filter(
+ shelf__identifier__in=models.Shelf.READ_STATUS_IDENTIFIERS,
+ user=request.user,
+ book=book,
+ )
+ .first()
)
- .first()
- )
- if current_status_shelfbook is not None:
- if current_status_shelfbook.shelf.identifier != models.Shelf.READING:
- handle_unshelve(book, current_status_shelfbook.shelf)
- else: # It already was on the shelf
- return redirect(request.headers.get("Referer", "/"))
+ if current_status_shelfbook is not None:
+ if current_status_shelfbook.shelf.identifier != desired_shelf.identifier:
+ current_status_shelfbook.delete()
+ else: # It already was on the shelf
+ return redirect(request.headers.get("Referer", "/"))
- models.ShelfBook.objects.create(book=book, shelf=reading_shelf, user=request.user)
-
- # post about it (if you want)
- if request.POST.get("post-status"):
- privacy = request.POST.get("privacy")
- handle_reading_status(request.user, reading_shelf, book, privacy)
-
- return redirect(request.headers.get("Referer", "/"))
-
-
-@login_required
-@require_POST
-def finish_reading(request, book_id):
- """a user completed a book, yay"""
- book = get_edition(book_id)
- finished_read_shelf = models.Shelf.objects.filter(
- identifier=models.Shelf.READ_FINISHED, user=request.user
- ).first()
-
- # update or create a readthrough
- readthrough = update_readthrough(request, book=book)
- if readthrough:
- readthrough.save()
-
- current_status_shelfbook = (
- models.ShelfBook.objects.select_related("shelf")
- .filter(
- shelf__identifier__in=models.Shelf.READ_STATUS_IDENTIFIERS,
- user=request.user,
- book=book,
+ models.ShelfBook.objects.create(
+ book=book, shelf=desired_shelf, user=request.user
)
- .first()
- )
- if current_status_shelfbook is not None:
- if current_status_shelfbook.shelf.identifier != models.Shelf.READ_FINISHED:
- handle_unshelve(book, current_status_shelfbook.shelf)
- else: # It already was on the shelf
- return redirect(request.headers.get("Referer", "/"))
- models.ShelfBook.objects.create(
- book=book, shelf=finished_read_shelf, user=request.user
- )
+ if desired_shelf.identifier != models.Shelf.TO_READ:
+ # update or create a readthrough
+ readthrough = update_readthrough(request, book=book)
+ if readthrough:
+ readthrough.save()
- # post about it (if you want)
- if request.POST.get("post-status"):
- privacy = request.POST.get("privacy")
- handle_reading_status(request.user, finished_read_shelf, book, privacy)
+ # post about it (if you want)
+ if request.POST.get("post-status"):
+ privacy = request.POST.get("privacy")
+ handle_reading_status(request.user, desired_shelf, book, privacy)
- return redirect(request.headers.get("Referer", "/"))
+ return redirect(request.headers.get("Referer", "/"))
@login_required
diff --git a/bookwyrm/views/shelf.py b/bookwyrm/views/shelf.py
index 538a8e343..17efec686 100644
--- a/bookwyrm/views/shelf.py
+++ b/bookwyrm/views/shelf.py
@@ -20,7 +20,7 @@ from .helpers import is_api_request, get_edition, get_user_from_username
from .helpers import handle_reading_status, privacy_filter
-# pylint: disable= no-self-use
+# pylint: disable=no-self-use
class Shelf(View):
"""shelf page"""
@@ -178,11 +178,6 @@ def shelve(request):
models.ShelfBook.objects.create(
book=book, shelf=desired_shelf, user=request.user
)
- if desired_shelf.identifier == models.Shelf.TO_READ and request.POST.get(
- "post-status"
- ):
- privacy = request.POST.get("privacy") or desired_shelf.privacy
- handle_reading_status(request.user, desired_shelf, book, privacy=privacy)
else:
try:
models.ShelfBook.objects.create(
@@ -206,7 +201,6 @@ def unshelve(request):
return redirect(request.headers.get("Referer", "/"))
-# pylint: disable=unused-argument
def handle_unshelve(book, shelf):
"""unshelve a book"""
row = models.ShelfBook.objects.get(book=book, shelf=shelf)
diff --git a/bookwyrm/views/user.py b/bookwyrm/views/user.py
index d186fe97f..f62913a93 100644
--- a/bookwyrm/views/user.py
+++ b/bookwyrm/views/user.py
@@ -1,25 +1,17 @@
""" non-interactive pages """
-from io import BytesIO
-from uuid import uuid4
-from PIL import Image
-
-from django.contrib.auth.decorators import login_required
-from django.core.files.base import ContentFile
from django.core.paginator import Paginator
-from django.shortcuts import redirect
from django.template.response import TemplateResponse
from django.utils import timezone
-from django.utils.decorators import method_decorator
from django.views import View
-from bookwyrm import forms, models
+from bookwyrm import models
from bookwyrm.activitypub import ActivitypubResponse
from bookwyrm.settings import PAGE_LENGTH
from .helpers import get_user_from_username, is_api_request
from .helpers import privacy_filter
-# pylint: disable= no-self-use
+# pylint: disable=no-self-use
class User(View):
"""user profile page"""
@@ -122,71 +114,3 @@ class Following(View):
"follow_list": paginated.get_page(request.GET.get("page")),
}
return TemplateResponse(request, "user/relationships/following.html", data)
-
-
-@method_decorator(login_required, name="dispatch")
-class EditUser(View):
- """edit user view"""
-
- def get(self, request):
- """edit profile page for a user"""
- data = {
- "form": forms.EditUserForm(instance=request.user),
- "user": request.user,
- }
- return TemplateResponse(request, "preferences/edit_user.html", data)
-
- def post(self, request):
- """les get fancy with images"""
- form = forms.EditUserForm(request.POST, request.FILES, instance=request.user)
- if not form.is_valid():
- data = {"form": form, "user": request.user}
- return TemplateResponse(request, "preferences/edit_user.html", data)
-
- user = save_user_form(form)
-
- return redirect(user.local_path)
-
-
-def save_user_form(form):
- """special handling for the user form"""
- user = form.save(commit=False)
-
- if "avatar" in form.files:
- # crop and resize avatar upload
- image = Image.open(form.files["avatar"])
- image = crop_avatar(image)
-
- # set the name to a hash
- extension = form.files["avatar"].name.split(".")[-1]
- filename = "%s.%s" % (uuid4(), extension)
- user.avatar.save(filename, image, save=False)
- user.save()
- return user
-
-
-def crop_avatar(image):
- """reduce the size and make an avatar square"""
- target_size = 120
- width, height = image.size
- thumbnail_scale = (
- height / (width / target_size)
- if height > width
- else width / (height / target_size)
- )
- image.thumbnail([thumbnail_scale, thumbnail_scale])
- width, height = image.size
-
- width_diff = width - target_size
- height_diff = height - target_size
- cropped = image.crop(
- (
- int(width_diff / 2),
- int(height_diff / 2),
- int(width - (width_diff / 2)),
- int(height - (height_diff / 2)),
- )
- )
- output = BytesIO()
- cropped.save(output, format=image.format)
- return ContentFile(output.getvalue())
diff --git a/bw-dev b/bw-dev
index b288662f8..a45a13aec 100755
--- a/bw-dev
+++ b/bw-dev
@@ -47,9 +47,6 @@ case "$CMD" in
initdb)
initdb
;;
- makemigrations)
- runweb python manage.py makemigrations "$@"
- ;;
migrate)
runweb python manage.py migrate "$@"
;;
@@ -82,6 +79,6 @@ case "$CMD" in
runweb python manage.py populate_streams
;;
*)
- echo "Unrecognised command. Try: build, up, initdb, makemigrations, migrate, bash, shell, dbshell, restart_celery, update, populate_feeds"
+ echo "Unrecognised command. Try: build, up, initdb, migrate, bash, shell, dbshell, restart_celery, update, populate_feeds"
;;
esac
diff --git a/locale/de_DE/LC_MESSAGES/django.mo b/locale/de_DE/LC_MESSAGES/django.mo
index 089ac656a..dde00be62 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 40f770b56..3125d147c 100644
--- a/locale/de_DE/LC_MESSAGES/django.po
+++ b/locale/de_DE/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-05-20 14:40-0700\n"
+"POT-Creation-Date: 2021-06-06 20:52+0000\n"
"PO-Revision-Date: 2021-03-02 17:19-0800\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: English \n"
@@ -62,12 +62,12 @@ msgid "Book Title"
msgstr "Titel"
#: bookwyrm/forms.py:301 bookwyrm/templates/snippets/create_status_form.html:34
-#: bookwyrm/templates/user/shelf/shelf.html:84
-#: bookwyrm/templates/user/shelf/shelf.html:115
+#: bookwyrm/templates/user/shelf/shelf.html:85
+#: bookwyrm/templates/user/shelf/shelf.html:116
msgid "Rating"
msgstr ""
-#: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:101
+#: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:107
msgid "Sort By"
msgstr ""
@@ -83,41 +83,41 @@ msgstr "Zu lesen angefangen"
msgid "Descending"
msgstr "Zu lesen angefangen"
-#: bookwyrm/models/fields.py:24
+#: bookwyrm/models/fields.py:25
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s ist keine gültige remote_id"
-#: bookwyrm/models/fields.py:33 bookwyrm/models/fields.py:42
+#: bookwyrm/models/fields.py:34 bookwyrm/models/fields.py:43
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s ist kein gültiger Username"
-#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:155
+#: bookwyrm/models/fields.py:166 bookwyrm/templates/layout.html:152
msgid "username"
msgstr "Username"
-#: bookwyrm/models/fields.py:170
+#: bookwyrm/models/fields.py:171
msgid "A user with that username already exists."
msgstr "Dieser Benutzename ist bereits vergeben."
-#: bookwyrm/settings.py:155
+#: bookwyrm/settings.py:156
msgid "English"
msgstr "Englisch"
-#: bookwyrm/settings.py:156
+#: bookwyrm/settings.py:157
msgid "German"
msgstr "Deutsch"
-#: bookwyrm/settings.py:157
+#: bookwyrm/settings.py:158
msgid "Spanish"
msgstr "Spanisch"
-#: bookwyrm/settings.py:158
+#: bookwyrm/settings.py:159
msgid "French"
msgstr "Französisch"
-#: bookwyrm/settings.py:159
+#: bookwyrm/settings.py:160
msgid "Simplified Chinese"
msgstr "Vereinfachtes Chinesisch"
@@ -266,7 +266,7 @@ msgstr ""
#: bookwyrm/templates/book/edit_book.html:263
#: bookwyrm/templates/lists/form.html:42
#: bookwyrm/templates/preferences/edit_user.html:70
-#: bookwyrm/templates/settings/announcement_form.html:65
+#: bookwyrm/templates/settings/announcement_form.html:69
#: bookwyrm/templates/settings/edit_server.html:68
#: bookwyrm/templates/settings/federated_server.html:98
#: bookwyrm/templates/settings/site.html:97
@@ -398,7 +398,7 @@ msgstr "Themen"
msgid "Places"
msgstr "Orte"
-#: bookwyrm/templates/book/book.html:276 bookwyrm/templates/layout.html:64
+#: bookwyrm/templates/book/book.html:276 bookwyrm/templates/layout.html:61
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@@ -414,7 +414,7 @@ msgstr "Zur Liste"
#: bookwyrm/templates/book/book.html:297
#: bookwyrm/templates/book/cover_modal.html:31
-#: bookwyrm/templates/lists/list.html:164
+#: bookwyrm/templates/lists/list.html:179
msgid "Add"
msgstr "Hinzufügen"
@@ -559,7 +559,7 @@ msgid "John Doe, Jane Smith"
msgstr ""
#: bookwyrm/templates/book/edit_book.html:183
-#: bookwyrm/templates/user/shelf/shelf.html:77
+#: bookwyrm/templates/user/shelf/shelf.html:78
msgid "Cover"
msgstr ""
@@ -688,7 +688,7 @@ msgstr "Föderiert"
#: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9
-#: bookwyrm/templates/layout.html:92
+#: bookwyrm/templates/layout.html:64
msgid "Directory"
msgstr ""
@@ -902,7 +902,7 @@ msgid "Direct Messages with %(username)s"
msgstr "Direktnachrichten mit %(username)s"
#: bookwyrm/templates/feed/direct_messages.html:10
-#: bookwyrm/templates/layout.html:87
+#: bookwyrm/templates/layout.html:92
msgid "Direct Messages"
msgstr "Direktnachrichten"
@@ -960,7 +960,6 @@ msgid "Updates"
msgstr ""
#: bookwyrm/templates/feed/feed_layout.html:10
-#: bookwyrm/templates/layout.html:58
#: bookwyrm/templates/user/shelf/books_header.html:3
msgid "Your books"
msgstr "Deine Bücher"
@@ -1022,7 +1021,7 @@ msgid "What are you reading?"
msgstr "Zu lesen angefangen"
#: bookwyrm/templates/get_started/books.html:9
-#: bookwyrm/templates/lists/list.html:120
+#: bookwyrm/templates/lists/list.html:135
msgid "Search for a book"
msgstr "Nach einem Buch suchen"
@@ -1042,7 +1041,7 @@ msgstr ""
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/layout.html:37 bookwyrm/templates/layout.html:38
-#: bookwyrm/templates/lists/list.html:124
+#: bookwyrm/templates/lists/list.html:139
#: bookwyrm/templates/search/layout.html:4
#: bookwyrm/templates/search/layout.html:9
msgid "Search"
@@ -1061,7 +1060,7 @@ msgid "Popular on %(site_name)s"
msgstr "Über %(site_name)s"
#: bookwyrm/templates/get_started/books.html:58
-#: bookwyrm/templates/lists/list.html:137
+#: bookwyrm/templates/lists/list.html:152
msgid "No books found"
msgstr "Keine Bücher gefunden"
@@ -1184,7 +1183,7 @@ msgid "%(username)s's %(year)s Books"
msgstr "%(username)ss %(year)s Bücher"
#: bookwyrm/templates/import.html:5 bookwyrm/templates/import.html:9
-#: bookwyrm/templates/layout.html:97
+#: bookwyrm/templates/user/shelf/shelf.html:40
msgid "Import Books"
msgstr "Bücher importieren"
@@ -1271,14 +1270,14 @@ msgstr "Buch"
#: bookwyrm/templates/import_status.html:114
#: bookwyrm/templates/snippets/create_status_form.html:13
-#: bookwyrm/templates/user/shelf/shelf.html:78
-#: bookwyrm/templates/user/shelf/shelf.html:98
+#: bookwyrm/templates/user/shelf/shelf.html:79
+#: bookwyrm/templates/user/shelf/shelf.html:99
msgid "Title"
msgstr "Titel"
#: bookwyrm/templates/import_status.html:117
-#: bookwyrm/templates/user/shelf/shelf.html:79
-#: bookwyrm/templates/user/shelf/shelf.html:101
+#: bookwyrm/templates/user/shelf/shelf.html:80
+#: bookwyrm/templates/user/shelf/shelf.html:102
msgid "Author"
msgstr "Autor*in"
@@ -1320,15 +1319,21 @@ msgstr "Suche nach Buch oder Benutzer*in"
msgid "Main navigation menu"
msgstr "Navigationshauptmenü"
-#: bookwyrm/templates/layout.html:61
+#: bookwyrm/templates/layout.html:58
msgid "Feed"
msgstr ""
-#: bookwyrm/templates/layout.html:102
+#: bookwyrm/templates/layout.html:87
+#, fuzzy
+#| msgid "Your books"
+msgid "Your Books"
+msgstr "Deine Bücher"
+
+#: bookwyrm/templates/layout.html:97
msgid "Settings"
msgstr "Einstellungen"
-#: bookwyrm/templates/layout.html:111
+#: bookwyrm/templates/layout.html:106
#: bookwyrm/templates/settings/admin_layout.html:31
#: bookwyrm/templates/settings/manage_invite_requests.html:15
#: bookwyrm/templates/settings/manage_invites.html:3
@@ -1336,45 +1341,47 @@ msgstr "Einstellungen"
msgid "Invites"
msgstr "Einladungen"
-#: bookwyrm/templates/layout.html:118
+#: bookwyrm/templates/layout.html:113
msgid "Admin"
msgstr ""
-#: bookwyrm/templates/layout.html:125
+#: bookwyrm/templates/layout.html:120
msgid "Log out"
msgstr "Abmelden"
-#: bookwyrm/templates/layout.html:133 bookwyrm/templates/layout.html:134
+#: bookwyrm/templates/layout.html:128 bookwyrm/templates/layout.html:129
#: bookwyrm/templates/notifications.html:6
#: bookwyrm/templates/notifications.html:11
msgid "Notifications"
msgstr "Benachrichtigungen"
-#: bookwyrm/templates/layout.html:154 bookwyrm/templates/layout.html:158
+#: bookwyrm/templates/layout.html:151 bookwyrm/templates/layout.html:155
#: bookwyrm/templates/login.html:17
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
msgstr ""
-#: bookwyrm/templates/layout.html:159
+#: bookwyrm/templates/layout.html:156
msgid "password"
msgstr "Passwort"
-#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:36
+#: bookwyrm/templates/layout.html:157 bookwyrm/templates/login.html:36
msgid "Forgot your password?"
msgstr "Passwort vergessen?"
-#: bookwyrm/templates/layout.html:163 bookwyrm/templates/login.html:10
+#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:10
#: bookwyrm/templates/login.html:33
msgid "Log in"
msgstr "Anmelden"
-#: bookwyrm/templates/layout.html:171
+#: bookwyrm/templates/layout.html:168
msgid "Join"
msgstr ""
#: bookwyrm/templates/layout.html:206
-msgid "About this server"
+#, fuzzy
+#| msgid "About this server"
+msgid "About this instance"
msgstr "Über diesen Server"
#: bookwyrm/templates/layout.html:210
@@ -1438,7 +1445,7 @@ msgid "Discard"
msgstr "Ablehnen"
#: bookwyrm/templates/lists/edit_form.html:5
-#: bookwyrm/templates/lists/list_layout.html:17
+#: bookwyrm/templates/lists/list_layout.html:16
msgid "Edit List"
msgstr "Liste bearbeiten"
@@ -1487,63 +1494,64 @@ msgstr "Alle können Bücher hinzufügen"
msgid "This list is currently empty"
msgstr "Diese Liste ist momentan leer"
-#: bookwyrm/templates/lists/list.html:65
+#: bookwyrm/templates/lists/list.html:66
#, fuzzy, python-format
#| msgid "Direct Messages with %(username)s"
msgid "Added by %(username)s"
msgstr "Direktnachrichten mit %(username)s"
-#: bookwyrm/templates/lists/list.html:77
-#, fuzzy
-#| msgid "Started"
-msgid "Set"
-msgstr "Gestartet"
-
-#: bookwyrm/templates/lists/list.html:80
+#: bookwyrm/templates/lists/list.html:74
#, fuzzy
#| msgid "List curation:"
msgid "List position"
msgstr "Listenkuratierung:"
-#: bookwyrm/templates/lists/list.html:86
+#: bookwyrm/templates/lists/list.html:81
+#, fuzzy
+#| msgid "Started"
+msgid "Set"
+msgstr "Gestartet"
+
+#: bookwyrm/templates/lists/list.html:89
#: bookwyrm/templates/snippets/shelf_selector.html:26
msgid "Remove"
msgstr "Entfernen"
-#: bookwyrm/templates/lists/list.html:99 bookwyrm/templates/lists/list.html:111
+#: bookwyrm/templates/lists/list.html:103
+#: bookwyrm/templates/lists/list.html:120
#, fuzzy
#| msgid "Your Lists"
msgid "Sort List"
msgstr "Deine Listen"
-#: bookwyrm/templates/lists/list.html:105
+#: bookwyrm/templates/lists/list.html:113
#, fuzzy
#| msgid "List curation:"
msgid "Direction"
msgstr "Listenkuratierung:"
-#: bookwyrm/templates/lists/list.html:116
+#: bookwyrm/templates/lists/list.html:127
msgid "Add Books"
msgstr "Bücher hinzufügen"
-#: bookwyrm/templates/lists/list.html:116
+#: bookwyrm/templates/lists/list.html:129
msgid "Suggest Books"
msgstr "Bücher vorschlagen"
-#: bookwyrm/templates/lists/list.html:125
+#: bookwyrm/templates/lists/list.html:140
msgid "search"
msgstr "suchen"
-#: bookwyrm/templates/lists/list.html:131
+#: bookwyrm/templates/lists/list.html:146
msgid "Clear search"
msgstr "Suche leeren"
-#: bookwyrm/templates/lists/list.html:136
+#: bookwyrm/templates/lists/list.html:151
#, python-format
msgid "No books found matching the query \"%(query)s\""
msgstr "Keine passenden Bücher zu \"%(query)s\" gefunden"
-#: bookwyrm/templates/lists/list.html:164
+#: bookwyrm/templates/lists/list.html:179
msgid "Suggest"
msgstr "Vorschlagen"
@@ -1643,7 +1651,7 @@ msgstr "Lösen"
#: bookwyrm/templates/moderation/reports.html:6
#, fuzzy, python-format
#| msgid "Lists: %(username)s"
-msgid "Reports: %(server_name)s"
+msgid "Reports: %(instance_name)s"
msgstr "Listen: %(username)s"
#: bookwyrm/templates/moderation/reports.html:8
@@ -1657,7 +1665,7 @@ msgstr "Aktuelle Importe"
#: bookwyrm/templates/moderation/reports.html:14
#, fuzzy, python-format
#| msgid "Lists: %(username)s"
-msgid "Reports: %(server_name)s"
+msgid "Reports: %(instance_name)s"
msgstr "Listen: %(username)s"
#: bookwyrm/templates/moderation/reports.html:28
@@ -1863,6 +1871,26 @@ msgstr "Profil"
msgid "Relationships"
msgstr "Beziehungen"
+#: bookwyrm/templates/rss/title.html:5
+#: bookwyrm/templates/snippets/status/status_header.html:35
+msgid "rated"
+msgstr ""
+
+#: bookwyrm/templates/rss/title.html:7
+#: bookwyrm/templates/snippets/status/status_header.html:37
+msgid "reviewed"
+msgstr "bewertete"
+
+#: bookwyrm/templates/rss/title.html:9
+#: bookwyrm/templates/snippets/status/status_header.html:39
+msgid "commented on"
+msgstr "kommentierte"
+
+#: bookwyrm/templates/rss/title.html:11
+#: bookwyrm/templates/snippets/status/status_header.html:41
+msgid "quoted"
+msgstr "zitierte"
+
#: bookwyrm/templates/search/book.html:64
#, fuzzy
#| msgid "Show results from other catalogues"
@@ -1922,7 +1950,9 @@ msgstr "Nutzer*innen verwalten"
#: bookwyrm/templates/settings/admin_layout.html:39
#: bookwyrm/templates/settings/federation.html:3
#: bookwyrm/templates/settings/federation.html:5
-msgid "Federated Servers"
+#, fuzzy
+#| msgid "Federated Servers"
+msgid "Federated Instances"
msgstr "Föderierende Server"
#: bookwyrm/templates/settings/admin_layout.html:44
@@ -1976,6 +2006,7 @@ msgid "Back to list"
msgstr "Zurück zu den Meldungen"
#: bookwyrm/templates/settings/announcement.html:11
+#: bookwyrm/templates/settings/announcement_form.html:6
#, fuzzy
#| msgid "Announcements"
msgid "Edit Announcement"
@@ -2017,7 +2048,7 @@ msgstr "Geburtsdatum:"
msgid "Active:"
msgstr "Aktivität"
-#: bookwyrm/templates/settings/announcement_form.html:5
+#: bookwyrm/templates/settings/announcement_form.html:8
#: bookwyrm/templates/settings/announcements.html:8
#, fuzzy
#| msgid "Announcements"
@@ -2076,15 +2107,15 @@ msgstr "Aktivität"
#: bookwyrm/templates/settings/server_blocklist.html:3
#: bookwyrm/templates/settings/server_blocklist.html:20
#, fuzzy
-#| msgid "Add cover"
-msgid "Add server"
-msgstr "Cover hinzufügen"
+#| msgid "Instance Name:"
+msgid "Add instance"
+msgstr "Instanzname"
#: bookwyrm/templates/settings/edit_server.html:7
#: bookwyrm/templates/settings/server_blocklist.html:7
#, fuzzy
#| msgid "Back to reports"
-msgid "Back to server list"
+msgid "Back to instance list"
msgstr "Zurück zu den Meldungen"
#: bookwyrm/templates/settings/edit_server.html:16
@@ -2213,8 +2244,10 @@ msgstr ""
#: bookwyrm/templates/settings/federation.html:19
#: bookwyrm/templates/user_admin/server_filter.html:5
-msgid "Server name"
-msgstr "Servername"
+#, fuzzy
+#| msgid "Instance Name:"
+msgid "Instance name"
+msgstr "Instanzname"
#: bookwyrm/templates/settings/federation.html:23
#, fuzzy
@@ -2353,7 +2386,7 @@ msgid "Import Blocklist"
msgstr "Bücher importieren"
#: bookwyrm/templates/settings/server_blocklist.html:26
-#: bookwyrm/templates/snippets/goal_progress.html:5
+#: bookwyrm/templates/snippets/goal_progress.html:7
msgid "Success!"
msgstr "Erfolg!"
@@ -2446,15 +2479,15 @@ msgstr "Cover hinzufügen"
msgid "%(title)s by "
msgstr "%(title)s von "
-#: bookwyrm/templates/snippets/boost_button.html:9
-#: bookwyrm/templates/snippets/boost_button.html:10
+#: bookwyrm/templates/snippets/boost_button.html:20
+#: bookwyrm/templates/snippets/boost_button.html:21
#, fuzzy
#| msgid "boosted"
msgid "Boost"
msgstr "teilt"
-#: bookwyrm/templates/snippets/boost_button.html:16
-#: bookwyrm/templates/snippets/boost_button.html:17
+#: bookwyrm/templates/snippets/boost_button.html:33
+#: bookwyrm/templates/snippets/boost_button.html:34
#, fuzzy
#| msgid "Un-boost status"
msgid "Un-boost"
@@ -2554,13 +2587,13 @@ msgstr "Diese Lesedaten löschen?"
msgid "You are deleting this readthrough and its %(count)s associated progress updates."
msgstr "Du löscht diesen Leseforschritt und %(count)s zugehörige Fortschrittsupdates."
-#: bookwyrm/templates/snippets/fav_button.html:9
-#: bookwyrm/templates/snippets/fav_button.html:11
+#: bookwyrm/templates/snippets/fav_button.html:10
+#: bookwyrm/templates/snippets/fav_button.html:12
msgid "Like"
msgstr ""
-#: bookwyrm/templates/snippets/fav_button.html:17
#: bookwyrm/templates/snippets/fav_button.html:18
+#: bookwyrm/templates/snippets/fav_button.html:19
#, fuzzy
#| msgid "Un-like status"
msgid "Un-like"
@@ -2609,6 +2642,14 @@ msgstr "Annehmen"
msgid "No rating"
msgstr "Kein Rating"
+#: bookwyrm/templates/snippets/form_rate_stars.html:44
+#: bookwyrm/templates/snippets/stars.html:7
+#, python-format
+msgid "%(rating)s star"
+msgid_plural "%(rating)s stars"
+msgstr[0] ""
+msgstr[1] ""
+
#: bookwyrm/templates/snippets/generated_status/goal.html:1
#, python-format
msgid "set a goal to read %(counter)s book in %(year)s"
@@ -2664,17 +2705,17 @@ msgstr "Posten"
msgid "Set goal"
msgstr "Ziel setzen"
-#: bookwyrm/templates/snippets/goal_progress.html:7
+#: bookwyrm/templates/snippets/goal_progress.html:9
#, python-format
msgid "%(percent)s%% complete!"
msgstr "%(percent)s%% komplett!"
-#: bookwyrm/templates/snippets/goal_progress.html:10
+#: bookwyrm/templates/snippets/goal_progress.html:12
#, python-format
msgid "You've read %(read_count)s of %(goal_count)s books."
msgstr "Du hast %(read_count)s von %(goal_count)s Büchern gelesen."
-#: bookwyrm/templates/snippets/goal_progress.html:12
+#: 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 hat %(read_count)s von %(goal_count)s Büchern gelesen."
@@ -2787,26 +2828,6 @@ msgstr "Registrieren"
msgid "Report"
msgstr "Importieren"
-#: bookwyrm/templates/snippets/rss_title.html:5
-#: bookwyrm/templates/snippets/status/status_header.html:35
-msgid "rated"
-msgstr ""
-
-#: bookwyrm/templates/snippets/rss_title.html:7
-#: bookwyrm/templates/snippets/status/status_header.html:37
-msgid "reviewed"
-msgstr "bewertete"
-
-#: bookwyrm/templates/snippets/rss_title.html:9
-#: bookwyrm/templates/snippets/status/status_header.html:39
-msgid "commented on"
-msgstr "kommentierte"
-
-#: bookwyrm/templates/snippets/rss_title.html:11
-#: bookwyrm/templates/snippets/status/status_header.html:41
-msgid "quoted"
-msgstr "zitierte"
-
#: bookwyrm/templates/snippets/search_result_text.html:36
msgid "Import book"
msgstr "Buch importieren"
@@ -2989,7 +3010,7 @@ msgstr "Regal bearbeiten"
msgid "Update shelf"
msgstr "Regal aktualisieren"
-#: bookwyrm/templates/user/shelf/shelf.html:25 bookwyrm/views/shelf.py:51
+#: bookwyrm/templates/user/shelf/shelf.html:25 bookwyrm/views/shelf.py:56
#, fuzzy
#| msgid "books"
msgid "All books"
@@ -2999,30 +3020,30 @@ msgstr "Bücher"
msgid "Create shelf"
msgstr "Regal erstellen"
-#: bookwyrm/templates/user/shelf/shelf.html:61
+#: bookwyrm/templates/user/shelf/shelf.html:62
msgid "Edit shelf"
msgstr "Regal bearbeiten"
-#: bookwyrm/templates/user/shelf/shelf.html:80
-#: bookwyrm/templates/user/shelf/shelf.html:104
+#: bookwyrm/templates/user/shelf/shelf.html:81
+#: bookwyrm/templates/user/shelf/shelf.html:105
msgid "Shelved"
msgstr "Ins Regal gestellt"
-#: bookwyrm/templates/user/shelf/shelf.html:81
-#: bookwyrm/templates/user/shelf/shelf.html:108
+#: bookwyrm/templates/user/shelf/shelf.html:82
+#: bookwyrm/templates/user/shelf/shelf.html:109
msgid "Started"
msgstr "Gestartet"
-#: bookwyrm/templates/user/shelf/shelf.html:82
-#: bookwyrm/templates/user/shelf/shelf.html:111
+#: bookwyrm/templates/user/shelf/shelf.html:83
+#: bookwyrm/templates/user/shelf/shelf.html:112
msgid "Finished"
msgstr "Abgeschlossen"
-#: bookwyrm/templates/user/shelf/shelf.html:137
+#: bookwyrm/templates/user/shelf/shelf.html:138
msgid "This shelf is empty."
msgstr "Dieses Regal ist leer."
-#: bookwyrm/templates/user/shelf/shelf.html:143
+#: bookwyrm/templates/user/shelf/shelf.html:144
msgid "Delete shelf"
msgstr "Regal löschen"
@@ -3084,9 +3105,10 @@ msgid "Back to users"
msgstr "Zurück zu den Meldungen"
#: bookwyrm/templates/user_admin/user_admin.html:7
-#, python-format
-msgid "Users: %(server_name)s"
-msgstr ""
+#, fuzzy, python-format
+#| msgid "Lists: %(username)s"
+msgid "Users: %(instance_name)s"
+msgstr "Listen: %(username)s"
#: bookwyrm/templates/user_admin/user_admin.html:22
#: bookwyrm/templates/user_admin/username_filter.html:5
@@ -3107,9 +3129,9 @@ msgstr ""
#: bookwyrm/templates/user_admin/user_admin.html:38
#, fuzzy
-#| msgid "Remove"
-msgid "Remote server"
-msgstr "Entfernen"
+#| msgid "Instance Name:"
+msgid "Remote instance"
+msgstr "Instanzname"
#: bookwyrm/templates/user_admin/user_admin.html:47
#, fuzzy
@@ -3158,6 +3180,10 @@ msgstr ""
msgid "Access level:"
msgstr ""
+#: bookwyrm/templates/widgets/clearable_file_input_with_warning.html:3
+msgid "File exceeds maximum size: 10MB"
+msgstr ""
+
#: bookwyrm/views/import_data.py:67
#, fuzzy
#| msgid "Email address:"
@@ -3175,6 +3201,27 @@ msgstr "Dieser Benutzename ist bereits vergeben."
msgid "A password reset link sent to %s"
msgstr ""
+#, fuzzy
+#~| msgid "Lists: %(username)s"
+#~ msgid "Reports: %(server_name)s"
+#~ msgstr "Listen: %(username)s"
+
+#~ msgid "Federated Servers"
+#~ msgstr "Föderierende Server"
+
+#~ msgid "Server name"
+#~ msgstr "Servername"
+
+#, fuzzy
+#~| msgid "Add cover"
+#~ msgid "Add server"
+#~ msgstr "Cover hinzufügen"
+
+#, fuzzy
+#~| msgid "Remove"
+#~ msgid "Remote server"
+#~ msgstr "Entfernen"
+
#, fuzzy
#~| msgid "Book"
#~ msgid "BookWyrm\\"
@@ -3225,12 +3272,12 @@ msgstr ""
#~ msgid "Enter a number."
#~ msgstr "Seriennummer:"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "A user with that username already exists."
#~ msgid "%(model_name)s with this %(field_labels)s already exists."
#~ msgstr "Dieser Benutzename ist bereits vergeben."
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "%(value)s is not a valid remote_id"
#~ msgid "Value %(value)r is not a valid choice."
#~ msgstr "%(value)s ist keine gültige remote_id"
@@ -3240,7 +3287,7 @@ msgstr ""
#~ msgid "This field cannot be null."
#~ msgstr "Dieses Regal ist leer."
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "A user with that username already exists."
#~ msgid "%(model_name)s with this %(field_label)s already exists."
#~ msgstr "Dieser Benutzename ist bereits vergeben."
@@ -3250,7 +3297,7 @@ msgstr ""
#~ msgid "Comma-separated integers"
#~ msgstr "Keine aktiven Einladungen"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(value)s” value must be a decimal number."
#~ msgstr "%(value)s ist kein gültiger Username"
@@ -3270,7 +3317,7 @@ msgstr ""
#~ msgid "Email address"
#~ msgstr "E-Mail Adresse"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(value)s” value must be a float."
#~ msgstr "%(value)s ist kein gültiger Username"
@@ -3300,7 +3347,7 @@ msgstr ""
#~ msgid "Positive small integer"
#~ msgstr "Keine aktiven Einladungen"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(value)s” is not a valid UUID."
#~ msgstr "%(value)s ist kein gültiger Username"
@@ -3315,12 +3362,12 @@ msgstr ""
#~ msgid "One-to-one relationship"
#~ msgstr "Beziehungen"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "Relationships"
#~ msgid "%(from)s-%(to)s relationship"
#~ msgstr "Beziehungen"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "Relationships"
#~ msgid "%(from)s-%(to)s relationships"
#~ msgstr "Beziehungen"
@@ -3375,7 +3422,7 @@ msgstr ""
#~ msgid "Enter a valid UUID."
#~ msgstr "E-Mail Adresse"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(pk)s” is not a valid value."
#~ msgstr "%(value)s ist kein gültiger Username"
@@ -3439,12 +3486,12 @@ msgstr ""
#~ msgid "This is not a valid IPv6 address."
#~ msgstr "E-Mail Adresse"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "No books found matching the query \"%(query)s\""
#~ msgid "No %(verbose_name)s found matching the query"
#~ msgstr "Keine passenden Bücher zu \"%(query)s\" gefunden"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(path)s” does not exist"
#~ msgstr "%(value)s ist kein gültiger Username"
@@ -3463,11 +3510,9 @@ msgstr ""
#~ msgid "Matching Users"
#~ msgstr "Passende Nutzer*innen"
-#, python-format
#~ msgid "Set a reading goal for %(year)s"
#~ msgstr "Leseziel für %(year)s setzen"
-#, python-format
#~ msgid "by %(author)s"
#~ msgstr "von %(author)s"
@@ -3477,17 +3522,17 @@ msgstr ""
#~ msgid "Reactivate user"
#~ msgstr "Nutzer:in reaktivieren"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "Direct Messages with %(username)s"
#~ msgid "replied to %(username)s's review"
#~ msgstr "Direktnachrichten mit %(username)s"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "replied to your status"
#~ msgid "replied to %(username)s's comment"
#~ msgstr "hat auf deinen Status geantwortet"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "replied to your status"
#~ msgid "replied to %(username)s's quote"
#~ msgstr "hat auf deinen Status geantwortet"
@@ -3498,7 +3543,6 @@ msgstr ""
#~ msgid "Add tag"
#~ msgstr "Tag hinzufügen"
-#, python-format
#~ msgid "Books tagged \"%(tag.name)s\""
#~ msgstr "Mit \"%(tag.name)s\" markierte Bücher"
@@ -3507,7 +3551,7 @@ msgstr ""
#~ msgid "Getting Started"
#~ msgstr "Gestartet"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "No users found for \"%(query)s\""
#~ msgid "No users were found for \"%(query)s\""
#~ msgstr "Keine Nutzer*innen für \"%(query)s\" gefunden"
@@ -3515,7 +3559,7 @@ msgstr ""
#~ msgid "Your lists"
#~ msgstr "Deine Listen"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "See all %(size)s"
#~ msgid "See all %(size)s lists"
#~ msgstr "Alle %(size)s anzeigen"
@@ -3538,14 +3582,12 @@ msgstr ""
#~ msgid "Your Shelves"
#~ msgstr "Deine Regale"
-#, python-format
#~ msgid "%(username)s: Shelves"
#~ msgstr "%(username)s: Regale"
#~ msgid "Shelves"
#~ msgstr "Regale"
-#, python-format
#~ msgid "See all %(shelf_count)s shelves"
#~ msgstr "Alle %(shelf_count)s Regale anzeigen"
diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po
index 1fa5eb304..8c36a2cb3 100644
--- a/locale/en_US/LC_MESSAGES/django.po
+++ b/locale/en_US/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-05-20 14:40-0700\n"
+"POT-Creation-Date: 2021-06-06 20:52+0000\n"
"PO-Revision-Date: 2021-02-28 17:19-0800\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: English \n"
@@ -56,12 +56,12 @@ msgid "Book Title"
msgstr ""
#: bookwyrm/forms.py:301 bookwyrm/templates/snippets/create_status_form.html:34
-#: bookwyrm/templates/user/shelf/shelf.html:84
-#: bookwyrm/templates/user/shelf/shelf.html:115
+#: bookwyrm/templates/user/shelf/shelf.html:85
+#: bookwyrm/templates/user/shelf/shelf.html:116
msgid "Rating"
msgstr ""
-#: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:101
+#: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:107
msgid "Sort By"
msgstr ""
@@ -73,41 +73,41 @@ msgstr ""
msgid "Descending"
msgstr ""
-#: bookwyrm/models/fields.py:24
+#: bookwyrm/models/fields.py:25
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr ""
-#: bookwyrm/models/fields.py:33 bookwyrm/models/fields.py:42
+#: bookwyrm/models/fields.py:34 bookwyrm/models/fields.py:43
#, python-format
msgid "%(value)s is not a valid username"
msgstr ""
-#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:155
+#: bookwyrm/models/fields.py:166 bookwyrm/templates/layout.html:152
msgid "username"
msgstr ""
-#: bookwyrm/models/fields.py:170
+#: bookwyrm/models/fields.py:171
msgid "A user with that username already exists."
msgstr ""
-#: bookwyrm/settings.py:155
+#: bookwyrm/settings.py:156
msgid "English"
msgstr ""
-#: bookwyrm/settings.py:156
+#: bookwyrm/settings.py:157
msgid "German"
msgstr ""
-#: bookwyrm/settings.py:157
+#: bookwyrm/settings.py:158
msgid "Spanish"
msgstr ""
-#: bookwyrm/settings.py:158
+#: bookwyrm/settings.py:159
msgid "French"
msgstr ""
-#: bookwyrm/settings.py:159
+#: bookwyrm/settings.py:160
msgid "Simplified Chinese"
msgstr ""
@@ -248,7 +248,7 @@ msgstr ""
#: bookwyrm/templates/book/edit_book.html:263
#: bookwyrm/templates/lists/form.html:42
#: bookwyrm/templates/preferences/edit_user.html:70
-#: bookwyrm/templates/settings/announcement_form.html:65
+#: bookwyrm/templates/settings/announcement_form.html:69
#: bookwyrm/templates/settings/edit_server.html:68
#: bookwyrm/templates/settings/federated_server.html:98
#: bookwyrm/templates/settings/site.html:97
@@ -367,7 +367,7 @@ msgstr ""
msgid "Places"
msgstr ""
-#: bookwyrm/templates/book/book.html:276 bookwyrm/templates/layout.html:64
+#: bookwyrm/templates/book/book.html:276 bookwyrm/templates/layout.html:61
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@@ -381,7 +381,7 @@ msgstr ""
#: bookwyrm/templates/book/book.html:297
#: bookwyrm/templates/book/cover_modal.html:31
-#: bookwyrm/templates/lists/list.html:164
+#: bookwyrm/templates/lists/list.html:179
msgid "Add"
msgstr ""
@@ -511,7 +511,7 @@ msgid "John Doe, Jane Smith"
msgstr ""
#: bookwyrm/templates/book/edit_book.html:183
-#: bookwyrm/templates/user/shelf/shelf.html:77
+#: bookwyrm/templates/user/shelf/shelf.html:78
msgid "Cover"
msgstr ""
@@ -630,7 +630,7 @@ msgstr ""
#: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9
-#: bookwyrm/templates/layout.html:92
+#: bookwyrm/templates/layout.html:64
msgid "Directory"
msgstr ""
@@ -831,7 +831,7 @@ msgid "Direct Messages with %(username)s"
msgstr ""
#: bookwyrm/templates/feed/direct_messages.html:10
-#: bookwyrm/templates/layout.html:87
+#: bookwyrm/templates/layout.html:92
msgid "Direct Messages"
msgstr ""
@@ -887,7 +887,6 @@ msgid "Updates"
msgstr ""
#: bookwyrm/templates/feed/feed_layout.html:10
-#: bookwyrm/templates/layout.html:58
#: bookwyrm/templates/user/shelf/books_header.html:3
msgid "Your books"
msgstr ""
@@ -942,7 +941,7 @@ msgid "What are you reading?"
msgstr ""
#: bookwyrm/templates/get_started/books.html:9
-#: bookwyrm/templates/lists/list.html:120
+#: bookwyrm/templates/lists/list.html:135
msgid "Search for a book"
msgstr ""
@@ -962,7 +961,7 @@ msgstr ""
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/layout.html:37 bookwyrm/templates/layout.html:38
-#: bookwyrm/templates/lists/list.html:124
+#: bookwyrm/templates/lists/list.html:139
#: bookwyrm/templates/search/layout.html:4
#: bookwyrm/templates/search/layout.html:9
msgid "Search"
@@ -978,7 +977,7 @@ msgid "Popular on %(site_name)s"
msgstr ""
#: bookwyrm/templates/get_started/books.html:58
-#: bookwyrm/templates/lists/list.html:137
+#: bookwyrm/templates/lists/list.html:152
msgid "No books found"
msgstr ""
@@ -1090,7 +1089,7 @@ msgid "%(username)s's %(year)s Books"
msgstr ""
#: bookwyrm/templates/import.html:5 bookwyrm/templates/import.html:9
-#: bookwyrm/templates/layout.html:97
+#: bookwyrm/templates/user/shelf/shelf.html:40
msgid "Import Books"
msgstr ""
@@ -1175,14 +1174,14 @@ msgstr ""
#: bookwyrm/templates/import_status.html:114
#: bookwyrm/templates/snippets/create_status_form.html:13
-#: bookwyrm/templates/user/shelf/shelf.html:78
-#: bookwyrm/templates/user/shelf/shelf.html:98
+#: bookwyrm/templates/user/shelf/shelf.html:79
+#: bookwyrm/templates/user/shelf/shelf.html:99
msgid "Title"
msgstr ""
#: bookwyrm/templates/import_status.html:117
-#: bookwyrm/templates/user/shelf/shelf.html:79
-#: bookwyrm/templates/user/shelf/shelf.html:101
+#: bookwyrm/templates/user/shelf/shelf.html:80
+#: bookwyrm/templates/user/shelf/shelf.html:102
msgid "Author"
msgstr ""
@@ -1224,15 +1223,19 @@ msgstr ""
msgid "Main navigation menu"
msgstr ""
-#: bookwyrm/templates/layout.html:61
+#: bookwyrm/templates/layout.html:58
msgid "Feed"
msgstr ""
-#: bookwyrm/templates/layout.html:102
+#: bookwyrm/templates/layout.html:87
+msgid "Your Books"
+msgstr ""
+
+#: bookwyrm/templates/layout.html:97
msgid "Settings"
msgstr ""
-#: bookwyrm/templates/layout.html:111
+#: bookwyrm/templates/layout.html:106
#: bookwyrm/templates/settings/admin_layout.html:31
#: bookwyrm/templates/settings/manage_invite_requests.html:15
#: bookwyrm/templates/settings/manage_invites.html:3
@@ -1240,45 +1243,45 @@ msgstr ""
msgid "Invites"
msgstr ""
-#: bookwyrm/templates/layout.html:118
+#: bookwyrm/templates/layout.html:113
msgid "Admin"
msgstr ""
-#: bookwyrm/templates/layout.html:125
+#: bookwyrm/templates/layout.html:120
msgid "Log out"
msgstr ""
-#: bookwyrm/templates/layout.html:133 bookwyrm/templates/layout.html:134
+#: bookwyrm/templates/layout.html:128 bookwyrm/templates/layout.html:129
#: bookwyrm/templates/notifications.html:6
#: bookwyrm/templates/notifications.html:11
msgid "Notifications"
msgstr ""
-#: bookwyrm/templates/layout.html:154 bookwyrm/templates/layout.html:158
+#: bookwyrm/templates/layout.html:151 bookwyrm/templates/layout.html:155
#: bookwyrm/templates/login.html:17
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
msgstr ""
-#: bookwyrm/templates/layout.html:159
+#: bookwyrm/templates/layout.html:156
msgid "password"
msgstr ""
-#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:36
+#: bookwyrm/templates/layout.html:157 bookwyrm/templates/login.html:36
msgid "Forgot your password?"
msgstr ""
-#: bookwyrm/templates/layout.html:163 bookwyrm/templates/login.html:10
+#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:10
#: bookwyrm/templates/login.html:33
msgid "Log in"
msgstr ""
-#: bookwyrm/templates/layout.html:171
+#: bookwyrm/templates/layout.html:168
msgid "Join"
msgstr ""
#: bookwyrm/templates/layout.html:206
-msgid "About this server"
+msgid "About this instance"
msgstr ""
#: bookwyrm/templates/layout.html:210
@@ -1338,7 +1341,7 @@ msgid "Discard"
msgstr ""
#: bookwyrm/templates/lists/edit_form.html:5
-#: bookwyrm/templates/lists/list_layout.html:17
+#: bookwyrm/templates/lists/list_layout.html:16
msgid "Edit List"
msgstr ""
@@ -1385,54 +1388,55 @@ msgstr ""
msgid "This list is currently empty"
msgstr ""
-#: bookwyrm/templates/lists/list.html:65
+#: bookwyrm/templates/lists/list.html:66
#, python-format
msgid "Added by %(username)s"
msgstr ""
-#: bookwyrm/templates/lists/list.html:77
-msgid "Set"
-msgstr ""
-
-#: bookwyrm/templates/lists/list.html:80
+#: bookwyrm/templates/lists/list.html:74
msgid "List position"
msgstr ""
-#: bookwyrm/templates/lists/list.html:86
+#: bookwyrm/templates/lists/list.html:81
+msgid "Set"
+msgstr ""
+
+#: bookwyrm/templates/lists/list.html:89
#: bookwyrm/templates/snippets/shelf_selector.html:26
msgid "Remove"
msgstr ""
-#: bookwyrm/templates/lists/list.html:99 bookwyrm/templates/lists/list.html:111
+#: bookwyrm/templates/lists/list.html:103
+#: bookwyrm/templates/lists/list.html:120
msgid "Sort List"
msgstr ""
-#: bookwyrm/templates/lists/list.html:105
+#: bookwyrm/templates/lists/list.html:113
msgid "Direction"
msgstr ""
-#: bookwyrm/templates/lists/list.html:116
+#: bookwyrm/templates/lists/list.html:127
msgid "Add Books"
msgstr ""
-#: bookwyrm/templates/lists/list.html:116
+#: bookwyrm/templates/lists/list.html:129
msgid "Suggest Books"
msgstr ""
-#: bookwyrm/templates/lists/list.html:125
+#: bookwyrm/templates/lists/list.html:140
msgid "search"
msgstr ""
-#: bookwyrm/templates/lists/list.html:131
+#: bookwyrm/templates/lists/list.html:146
msgid "Clear search"
msgstr ""
-#: bookwyrm/templates/lists/list.html:136
+#: bookwyrm/templates/lists/list.html:151
#, python-format
msgid "No books found matching the query \"%(query)s\""
msgstr ""
-#: bookwyrm/templates/lists/list.html:164
+#: bookwyrm/templates/lists/list.html:179
msgid "Suggest"
msgstr ""
@@ -1523,7 +1527,7 @@ msgstr ""
#: bookwyrm/templates/moderation/reports.html:6
#, python-format
-msgid "Reports: %(server_name)s"
+msgid "Reports: %(instance_name)s"
msgstr ""
#: bookwyrm/templates/moderation/reports.html:8
@@ -1534,7 +1538,7 @@ msgstr ""
#: bookwyrm/templates/moderation/reports.html:14
#, python-format
-msgid "Reports: %(server_name)s"
+msgid "Reports: %(instance_name)s"
msgstr ""
#: bookwyrm/templates/moderation/reports.html:28
@@ -1733,6 +1737,26 @@ msgstr ""
msgid "Relationships"
msgstr ""
+#: bookwyrm/templates/rss/title.html:5
+#: bookwyrm/templates/snippets/status/status_header.html:35
+msgid "rated"
+msgstr ""
+
+#: bookwyrm/templates/rss/title.html:7
+#: bookwyrm/templates/snippets/status/status_header.html:37
+msgid "reviewed"
+msgstr ""
+
+#: bookwyrm/templates/rss/title.html:9
+#: bookwyrm/templates/snippets/status/status_header.html:39
+msgid "commented on"
+msgstr ""
+
+#: bookwyrm/templates/rss/title.html:11
+#: bookwyrm/templates/snippets/status/status_header.html:41
+msgid "quoted"
+msgstr ""
+
#: bookwyrm/templates/search/book.html:64
msgid "Load results from other catalogues"
msgstr ""
@@ -1783,7 +1807,7 @@ msgstr ""
#: bookwyrm/templates/settings/admin_layout.html:39
#: bookwyrm/templates/settings/federation.html:3
#: bookwyrm/templates/settings/federation.html:5
-msgid "Federated Servers"
+msgid "Federated Instances"
msgstr ""
#: bookwyrm/templates/settings/admin_layout.html:44
@@ -1833,6 +1857,7 @@ msgid "Back to list"
msgstr ""
#: bookwyrm/templates/settings/announcement.html:11
+#: bookwyrm/templates/settings/announcement_form.html:6
msgid "Edit Announcement"
msgstr ""
@@ -1866,7 +1891,7 @@ msgstr ""
msgid "Active:"
msgstr ""
-#: bookwyrm/templates/settings/announcement_form.html:5
+#: bookwyrm/templates/settings/announcement_form.html:8
#: bookwyrm/templates/settings/announcements.html:8
msgid "Create Announcement"
msgstr ""
@@ -1910,12 +1935,12 @@ msgstr ""
#: bookwyrm/templates/settings/federation.html:10
#: bookwyrm/templates/settings/server_blocklist.html:3
#: bookwyrm/templates/settings/server_blocklist.html:20
-msgid "Add server"
+msgid "Add instance"
msgstr ""
#: bookwyrm/templates/settings/edit_server.html:7
#: bookwyrm/templates/settings/server_blocklist.html:7
-msgid "Back to server list"
+msgid "Back to instance list"
msgstr ""
#: bookwyrm/templates/settings/edit_server.html:16
@@ -2022,7 +2047,7 @@ msgstr ""
#: bookwyrm/templates/settings/federation.html:19
#: bookwyrm/templates/user_admin/server_filter.html:5
-msgid "Server name"
+msgid "Instance name"
msgstr ""
#: bookwyrm/templates/settings/federation.html:23
@@ -2144,7 +2169,7 @@ msgid "Import Blocklist"
msgstr ""
#: bookwyrm/templates/settings/server_blocklist.html:26
-#: bookwyrm/templates/snippets/goal_progress.html:5
+#: bookwyrm/templates/snippets/goal_progress.html:7
msgid "Success!"
msgstr ""
@@ -2230,13 +2255,13 @@ msgstr ""
msgid "%(title)s by "
msgstr ""
-#: bookwyrm/templates/snippets/boost_button.html:9
-#: bookwyrm/templates/snippets/boost_button.html:10
+#: bookwyrm/templates/snippets/boost_button.html:20
+#: bookwyrm/templates/snippets/boost_button.html:21
msgid "Boost"
msgstr ""
-#: bookwyrm/templates/snippets/boost_button.html:16
-#: bookwyrm/templates/snippets/boost_button.html:17
+#: bookwyrm/templates/snippets/boost_button.html:33
+#: bookwyrm/templates/snippets/boost_button.html:34
msgid "Un-boost"
msgstr ""
@@ -2326,13 +2351,13 @@ msgstr ""
msgid "You are deleting this readthrough and its %(count)s associated progress updates."
msgstr ""
-#: bookwyrm/templates/snippets/fav_button.html:9
-#: bookwyrm/templates/snippets/fav_button.html:11
+#: bookwyrm/templates/snippets/fav_button.html:10
+#: bookwyrm/templates/snippets/fav_button.html:12
msgid "Like"
msgstr ""
-#: bookwyrm/templates/snippets/fav_button.html:17
#: bookwyrm/templates/snippets/fav_button.html:18
+#: bookwyrm/templates/snippets/fav_button.html:19
msgid "Un-like"
msgstr ""
@@ -2373,6 +2398,14 @@ msgstr ""
msgid "No rating"
msgstr ""
+#: bookwyrm/templates/snippets/form_rate_stars.html:44
+#: bookwyrm/templates/snippets/stars.html:7
+#, python-format
+msgid "%(rating)s star"
+msgid_plural "%(rating)s stars"
+msgstr[0] ""
+msgstr[1] ""
+
#: bookwyrm/templates/snippets/generated_status/goal.html:1
#, python-format
msgid "set a goal to read %(counter)s book in %(year)s"
@@ -2427,17 +2460,17 @@ msgstr ""
msgid "Set goal"
msgstr ""
-#: bookwyrm/templates/snippets/goal_progress.html:7
+#: bookwyrm/templates/snippets/goal_progress.html:9
#, python-format
msgid "%(percent)s%% complete!"
msgstr ""
-#: bookwyrm/templates/snippets/goal_progress.html:10
+#: bookwyrm/templates/snippets/goal_progress.html:12
#, python-format
msgid "You've read %(read_count)s of %(goal_count)s books."
msgstr ""
-#: bookwyrm/templates/snippets/goal_progress.html:12
+#: bookwyrm/templates/snippets/goal_progress.html:14
#, python-format
msgid "%(username)s has read %(read_count)s of %(goal_count)s books."
msgstr ""
@@ -2546,26 +2579,6 @@ msgstr ""
msgid "Report"
msgstr ""
-#: bookwyrm/templates/snippets/rss_title.html:5
-#: bookwyrm/templates/snippets/status/status_header.html:35
-msgid "rated"
-msgstr ""
-
-#: bookwyrm/templates/snippets/rss_title.html:7
-#: bookwyrm/templates/snippets/status/status_header.html:37
-msgid "reviewed"
-msgstr ""
-
-#: bookwyrm/templates/snippets/rss_title.html:9
-#: bookwyrm/templates/snippets/status/status_header.html:39
-msgid "commented on"
-msgstr ""
-
-#: bookwyrm/templates/snippets/rss_title.html:11
-#: bookwyrm/templates/snippets/status/status_header.html:41
-msgid "quoted"
-msgstr ""
-
#: bookwyrm/templates/snippets/search_result_text.html:36
msgid "Import book"
msgstr ""
@@ -2735,7 +2748,7 @@ msgstr ""
msgid "Update shelf"
msgstr ""
-#: bookwyrm/templates/user/shelf/shelf.html:25 bookwyrm/views/shelf.py:51
+#: bookwyrm/templates/user/shelf/shelf.html:25 bookwyrm/views/shelf.py:56
msgid "All books"
msgstr ""
@@ -2743,30 +2756,30 @@ msgstr ""
msgid "Create shelf"
msgstr ""
-#: bookwyrm/templates/user/shelf/shelf.html:61
+#: bookwyrm/templates/user/shelf/shelf.html:62
msgid "Edit shelf"
msgstr ""
-#: bookwyrm/templates/user/shelf/shelf.html:80
-#: bookwyrm/templates/user/shelf/shelf.html:104
+#: bookwyrm/templates/user/shelf/shelf.html:81
+#: bookwyrm/templates/user/shelf/shelf.html:105
msgid "Shelved"
msgstr ""
-#: bookwyrm/templates/user/shelf/shelf.html:81
-#: bookwyrm/templates/user/shelf/shelf.html:108
+#: bookwyrm/templates/user/shelf/shelf.html:82
+#: bookwyrm/templates/user/shelf/shelf.html:109
msgid "Started"
msgstr ""
-#: bookwyrm/templates/user/shelf/shelf.html:82
-#: bookwyrm/templates/user/shelf/shelf.html:111
+#: bookwyrm/templates/user/shelf/shelf.html:83
+#: bookwyrm/templates/user/shelf/shelf.html:112
msgid "Finished"
msgstr ""
-#: bookwyrm/templates/user/shelf/shelf.html:137
+#: bookwyrm/templates/user/shelf/shelf.html:138
msgid "This shelf is empty."
msgstr ""
-#: bookwyrm/templates/user/shelf/shelf.html:143
+#: bookwyrm/templates/user/shelf/shelf.html:144
msgid "Delete shelf"
msgstr ""
@@ -2825,7 +2838,7 @@ msgstr ""
#: bookwyrm/templates/user_admin/user_admin.html:7
#, python-format
-msgid "Users: %(server_name)s"
+msgid "Users: %(instance_name)s"
msgstr ""
#: bookwyrm/templates/user_admin/user_admin.html:22
@@ -2842,7 +2855,7 @@ msgid "Last Active"
msgstr ""
#: bookwyrm/templates/user_admin/user_admin.html:38
-msgid "Remote server"
+msgid "Remote instance"
msgstr ""
#: bookwyrm/templates/user_admin/user_admin.html:47
@@ -2886,6 +2899,10 @@ msgstr ""
msgid "Access level:"
msgstr ""
+#: bookwyrm/templates/widgets/clearable_file_input_with_warning.html:3
+msgid "File exceeds maximum size: 10MB"
+msgstr ""
+
#: bookwyrm/views/import_data.py:67
msgid "Not a valid csv file"
msgstr ""
diff --git a/locale/es/LC_MESSAGES/django.mo b/locale/es/LC_MESSAGES/django.mo
index 0e5df226f..54adfb570 100644
Binary files a/locale/es/LC_MESSAGES/django.mo and b/locale/es/LC_MESSAGES/django.mo differ
diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po
index cbf07ea50..c9a19a4df 100644
--- a/locale/es/LC_MESSAGES/django.po
+++ b/locale/es/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-05-25 01:44+0000\n"
+"POT-Creation-Date: 2021-06-06 20:52+0000\n"
"PO-Revision-Date: 2021-03-19 11:49+0800\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -73,41 +73,41 @@ msgstr "Ascendente"
msgid "Descending"
msgstr "Descendente"
-#: bookwyrm/models/fields.py:24
+#: bookwyrm/models/fields.py:25
#, 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:33 bookwyrm/models/fields.py:42
+#: bookwyrm/models/fields.py:34 bookwyrm/models/fields.py:43
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s no es un usuario válido"
-#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:152
+#: bookwyrm/models/fields.py:166 bookwyrm/templates/layout.html:152
msgid "username"
msgstr "nombre de usuario"
-#: bookwyrm/models/fields.py:170
+#: bookwyrm/models/fields.py:171
msgid "A user with that username already exists."
msgstr "Ya existe un usuario con ese nombre."
-#: bookwyrm/settings.py:155
+#: bookwyrm/settings.py:156
msgid "English"
msgstr "Inglés"
-#: bookwyrm/settings.py:156
+#: bookwyrm/settings.py:157
msgid "German"
msgstr "Aléman"
-#: bookwyrm/settings.py:157
+#: bookwyrm/settings.py:158
msgid "Spanish"
msgstr "Español"
-#: bookwyrm/settings.py:158
+#: bookwyrm/settings.py:159
msgid "French"
msgstr "Francés"
-#: bookwyrm/settings.py:159
+#: bookwyrm/settings.py:160
msgid "Simplified Chinese"
msgstr "Chino simplificado"
@@ -1281,7 +1281,9 @@ msgid "Join"
msgstr "Unirse"
#: bookwyrm/templates/layout.html:206
-msgid "About this server"
+#, fuzzy
+#| msgid "About this server"
+msgid "About this instance"
msgstr "Sobre este servidor"
#: bookwyrm/templates/layout.html:210
@@ -1527,8 +1529,8 @@ msgstr "Resolver"
#: bookwyrm/templates/moderation/reports.html:6
#, python-format
-msgid "Reports: %(server_name)s"
-msgstr "Informes: %(server_name)s"
+msgid "Reports: %(instance_name)s"
+msgstr "Informes: %(instance_name)s"
#: bookwyrm/templates/moderation/reports.html:8
#: bookwyrm/templates/moderation/reports.html:17
@@ -1538,8 +1540,8 @@ msgstr "Informes"
#: bookwyrm/templates/moderation/reports.html:14
#, python-format
-msgid "Reports: %(server_name)s"
-msgstr "Informes: %(server_name)s"
+msgid "Reports: %(instance_name)s"
+msgstr "Informes: %(instance_name)s"
#: bookwyrm/templates/moderation/reports.html:28
msgid "Resolved"
@@ -1660,6 +1662,7 @@ msgid " suggested adding %(book_title)s t
msgstr " sugirió agregar %(book_title)s a tu lista \"%(list_name)s\""
#: bookwyrm/templates/notifications.html:128
+#, python-format
msgid "Your import completed."
msgstr "Tu importación ha terminado."
@@ -1791,6 +1794,7 @@ msgid "Users"
msgstr "Usuarios"
#: bookwyrm/templates/search/layout.html:58
+#, python-format
msgid "No results found for \"%(query)s\""
msgstr "No se encontró ningún resultado correspondiente a \"%(query)s\""
@@ -1805,7 +1809,9 @@ msgstr "Administrar usuarios"
#: bookwyrm/templates/settings/admin_layout.html:39
#: bookwyrm/templates/settings/federation.html:3
#: bookwyrm/templates/settings/federation.html:5
-msgid "Federated Servers"
+#, fuzzy
+#| msgid "Federated Servers"
+msgid "Federated Instances"
msgstr "Servidores federalizados"
#: bookwyrm/templates/settings/admin_layout.html:44
@@ -1933,12 +1939,16 @@ msgstr "inactivo"
#: bookwyrm/templates/settings/federation.html:10
#: bookwyrm/templates/settings/server_blocklist.html:3
#: bookwyrm/templates/settings/server_blocklist.html:20
-msgid "Add server"
-msgstr "Agregar servidor"
+#, fuzzy
+#| msgid "View instance"
+msgid "Add instance"
+msgstr "Ver instancia"
#: bookwyrm/templates/settings/edit_server.html:7
#: bookwyrm/templates/settings/server_blocklist.html:7
-msgid "Back to server list"
+#, fuzzy
+#| msgid "Back to server list"
+msgid "Back to instance list"
msgstr "Volver a la lista de servidores"
#: bookwyrm/templates/settings/edit_server.html:16
@@ -2045,8 +2055,10 @@ msgstr "Todos los usuarios en esta instancia serán re-activados."
#: bookwyrm/templates/settings/federation.html:19
#: bookwyrm/templates/user_admin/server_filter.html:5
-msgid "Server name"
-msgstr "Nombre de servidor"
+#, fuzzy
+#| msgid "Instance Name:"
+msgid "Instance name"
+msgstr "Nombre de instancia:"
#: bookwyrm/templates/settings/federation.html:23
msgid "Date federated"
@@ -2240,6 +2252,7 @@ msgid "Registration closed text:"
msgstr "Texto de registración cerrada:"
#: bookwyrm/templates/snippets/announcement.html:31
+#, python-format
msgid "Posted by %(username)s"
msgstr "Publicado por %(username)s"
@@ -2478,6 +2491,8 @@ msgid "page %(page)s of %(total_pages)s"
msgstr "página %(page)s de %(total_pages)s"
#: bookwyrm/templates/snippets/page_text.html:6
+#, fuzzy, python-format
+#| msgid "page %(page)s"
msgid "page %(page)s"
msgstr "página %(pages)s"
@@ -2822,6 +2837,7 @@ msgid "%(counter)s following"
msgstr "%(counter)s siguiendo"
#: bookwyrm/templates/user/user_preview.html:26
+#, python-format
msgid "%(mutuals_display)s follower you follow"
msgid_plural "%(mutuals_display)s followers you follow"
msgstr[0] "%(mutuals_display)s seguidor que sigues"
@@ -2833,8 +2849,8 @@ msgstr "Volver a usuarios"
#: bookwyrm/templates/user_admin/user_admin.html:7
#, python-format
-msgid "Users: %(server_name)s"
-msgstr "Usuarios %(server_name)s"
+msgid "Users: %(instance_name)s"
+msgstr "Usuarios %(instance_name)s"
#: bookwyrm/templates/user_admin/user_admin.html:22
#: bookwyrm/templates/user_admin/username_filter.html:5
@@ -2850,8 +2866,10 @@ msgid "Last Active"
msgstr "Actividad reciente"
#: bookwyrm/templates/user_admin/user_admin.html:38
-msgid "Remote server"
-msgstr "Quitar servidor"
+#, fuzzy
+#| msgid "View instance"
+msgid "Remote instance"
+msgstr "Ver instancia"
#: bookwyrm/templates/user_admin/user_admin.html:47
msgid "Active"
@@ -2894,6 +2912,10 @@ msgstr "Des-suspender usuario"
msgid "Access level:"
msgstr "Nivel de acceso:"
+#: bookwyrm/templates/widgets/clearable_file_input_with_warning.html:3
+msgid "File exceeds maximum size: 10MB"
+msgstr ""
+
#: bookwyrm/views/import_data.py:67
msgid "Not a valid csv file"
msgstr "No un archivo csv válido"
@@ -2907,6 +2929,18 @@ msgstr "No se pudo encontrar un usuario con esa dirección de correo electrónic
msgid "A password reset link sent to %s"
msgstr "Un enlace para reestablecer tu contraseña se enviará a %s"
+#~ msgid "Federated Servers"
+#~ msgstr "Servidores federalizados"
+
+#~ msgid "Server name"
+#~ msgstr "Nombre de servidor"
+
+#~ msgid "Add server"
+#~ msgstr "Agregar servidor"
+
+#~ msgid "Remote server"
+#~ msgstr "Quitar servidor"
+
#, fuzzy
#~| msgid "BookWyrm users"
#~ msgid "BookWyrm\\"
diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo
index b893b1287..fa138f785 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 a96f9d76d..53b4a54af 100644
--- a/locale/fr_FR/LC_MESSAGES/django.po
+++ b/locale/fr_FR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-05-23 10:45+0000\n"
+"POT-Creation-Date: 2021-06-07 14:09+0000\n"
"PO-Revision-Date: 2021-04-05 12:44+0100\n"
"Last-Translator: Fabien Basmaison \n"
"Language-Team: Mouse Reeve \n"
@@ -56,12 +56,12 @@ msgid "Book Title"
msgstr "Titre du livre"
#: bookwyrm/forms.py:301 bookwyrm/templates/snippets/create_status_form.html:34
-#: bookwyrm/templates/user/shelf/shelf.html:84
-#: bookwyrm/templates/user/shelf/shelf.html:115
+#: bookwyrm/templates/user/shelf/shelf.html:85
+#: bookwyrm/templates/user/shelf/shelf.html:116
msgid "Rating"
msgstr "Note"
-#: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:101
+#: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:107
msgid "Sort By"
msgstr "Trier par"
@@ -73,41 +73,41 @@ msgstr "Ordre croissant"
msgid "Descending"
msgstr "Ordre décroissant"
-#: bookwyrm/models/fields.py:24
+#: bookwyrm/models/fields.py:25
#, 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:33 bookwyrm/models/fields.py:42
+#: bookwyrm/models/fields.py:34 bookwyrm/models/fields.py:43
#, 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:165 bookwyrm/templates/layout.html:157
+#: bookwyrm/models/fields.py:166 bookwyrm/templates/layout.html:152
msgid "username"
msgstr "nom du compte :"
-#: bookwyrm/models/fields.py:170
+#: bookwyrm/models/fields.py:171
msgid "A user with that username already exists."
msgstr "Ce nom est déjà associé à un compte."
-#: bookwyrm/settings.py:155
+#: bookwyrm/settings.py:160
msgid "English"
msgstr "English"
-#: bookwyrm/settings.py:156
+#: bookwyrm/settings.py:161
msgid "German"
msgstr "Deutsch"
-#: bookwyrm/settings.py:157
+#: bookwyrm/settings.py:162
msgid "Spanish"
msgstr "Español"
-#: bookwyrm/settings.py:158
+#: bookwyrm/settings.py:163
msgid "French"
msgstr "Français"
-#: bookwyrm/settings.py:159
+#: bookwyrm/settings.py:164
msgid "Simplified Chinese"
msgstr "简化字"
@@ -136,34 +136,42 @@ msgstr "Une erreur s’est produite ; désolé !"
msgid "Edit Author"
msgstr "Modifier l’auteur ou autrice"
-#: bookwyrm/templates/author/author.html:32
-#: bookwyrm/templates/author/edit_author.html:38
+#: bookwyrm/templates/author/author.html:34
+#: bookwyrm/templates/author/edit_author.html:41
msgid "Aliases:"
msgstr "Pseudonymes :"
-#: bookwyrm/templates/author/author.html:38
+#: bookwyrm/templates/author/author.html:45
msgid "Born:"
msgstr "Naissance :"
-#: bookwyrm/templates/author/author.html:44
+#: bookwyrm/templates/author/author.html:52
msgid "Died:"
msgstr "Décès :"
-#: bookwyrm/templates/author/author.html:51
+#: bookwyrm/templates/author/author.html:61
msgid "Wikipedia"
msgstr "Wikipedia"
-#: bookwyrm/templates/author/author.html:55
+#: bookwyrm/templates/author/author.html:69
#: bookwyrm/templates/book/book.html:78
msgid "View on OpenLibrary"
msgstr "Voir sur OpenLibrary"
-#: bookwyrm/templates/author/author.html:60
+#: bookwyrm/templates/author/author.html:77
#: bookwyrm/templates/book/book.html:81
msgid "View on Inventaire"
msgstr "Voir sur Inventaire"
-#: bookwyrm/templates/author/author.html:74
+#: bookwyrm/templates/author/author.html:85
+msgid "View on LibraryThing"
+msgstr "Voir sur LibraryThing"
+
+#: bookwyrm/templates/author/author.html:93
+msgid "View on Goodreads"
+msgstr "Voir sur Goodreads"
+
+#: bookwyrm/templates/author/author.html:108
#, python-format
msgid "Books by %(name)s"
msgstr "Livres par %(name)s"
@@ -173,85 +181,85 @@ msgid "Edit Author:"
msgstr "Modifier l’auteur ou l’autrice :"
#: bookwyrm/templates/author/edit_author.html:13
-#: bookwyrm/templates/book/edit_book.html:18
+#: bookwyrm/templates/book/edit_book.html:19
msgid "Added:"
-msgstr "AJouté :"
+msgstr "Ajouté :"
#: bookwyrm/templates/author/edit_author.html:14
-#: bookwyrm/templates/book/edit_book.html:19
+#: bookwyrm/templates/book/edit_book.html:24
msgid "Updated:"
msgstr "Mis à jour :"
#: bookwyrm/templates/author/edit_author.html:15
-#: bookwyrm/templates/book/edit_book.html:20
+#: bookwyrm/templates/book/edit_book.html:30
msgid "Last edited by:"
msgstr "Dernière modification par :"
#: bookwyrm/templates/author/edit_author.html:31
-#: bookwyrm/templates/book/edit_book.html:90
+#: bookwyrm/templates/book/edit_book.html:117
msgid "Metadata"
msgstr "Métadonnées"
-#: bookwyrm/templates/author/edit_author.html:32
+#: bookwyrm/templates/author/edit_author.html:33
#: bookwyrm/templates/lists/form.html:8
#: bookwyrm/templates/user/shelf/create_shelf_form.html:13
#: bookwyrm/templates/user/shelf/edit_shelf_form.html:14
msgid "Name:"
msgstr "Nom :"
-#: bookwyrm/templates/author/edit_author.html:40
-#: bookwyrm/templates/book/edit_book.html:132
-#: bookwyrm/templates/book/edit_book.html:141
-#: bookwyrm/templates/book/edit_book.html:178
+#: bookwyrm/templates/author/edit_author.html:43
+#: bookwyrm/templates/book/edit_book.html:162
+#: bookwyrm/templates/book/edit_book.html:171
+#: bookwyrm/templates/book/edit_book.html:214
msgid "Separate multiple values with commas."
msgstr "Séparez plusieurs valeurs par une virgule."
-#: bookwyrm/templates/author/edit_author.html:46
+#: bookwyrm/templates/author/edit_author.html:50
msgid "Bio:"
msgstr "Bio :"
-#: bookwyrm/templates/author/edit_author.html:51
+#: bookwyrm/templates/author/edit_author.html:57
msgid "Wikipedia link:"
msgstr "Wikipedia :"
-#: bookwyrm/templates/author/edit_author.html:57
+#: bookwyrm/templates/author/edit_author.html:63
msgid "Birth date:"
msgstr "Date de naissance :"
-#: bookwyrm/templates/author/edit_author.html:65
+#: bookwyrm/templates/author/edit_author.html:71
msgid "Death date:"
msgstr "Date de décès :"
-#: bookwyrm/templates/author/edit_author.html:73
+#: bookwyrm/templates/author/edit_author.html:79
msgid "Author Identifiers"
msgstr "Identifiants de l’auteur ou autrice"
-#: bookwyrm/templates/author/edit_author.html:74
+#: bookwyrm/templates/author/edit_author.html:81
msgid "Openlibrary key:"
msgstr "Clé Openlibrary :"
-#: bookwyrm/templates/author/edit_author.html:79
-#: bookwyrm/templates/book/edit_book.html:243
+#: bookwyrm/templates/author/edit_author.html:89
+#: bookwyrm/templates/book/edit_book.html:293
msgid "Inventaire ID:"
msgstr "Identifiant Inventaire :"
-#: bookwyrm/templates/author/edit_author.html:84
+#: bookwyrm/templates/author/edit_author.html:97
msgid "Librarything key:"
msgstr "Clé Librarything :"
-#: bookwyrm/templates/author/edit_author.html:89
+#: bookwyrm/templates/author/edit_author.html:105
msgid "Goodreads key:"
msgstr "Clé Goodreads :"
-#: bookwyrm/templates/author/edit_author.html:98
+#: bookwyrm/templates/author/edit_author.html:116
#: bookwyrm/templates/book/book.html:124
-#: bookwyrm/templates/book/edit_book.html:263
+#: bookwyrm/templates/book/edit_book.html:321
#: bookwyrm/templates/lists/form.html:42
#: bookwyrm/templates/preferences/edit_user.html:70
#: bookwyrm/templates/settings/announcement_form.html:69
#: bookwyrm/templates/settings/edit_server.html:68
#: bookwyrm/templates/settings/federated_server.html:98
-#: bookwyrm/templates/settings/site.html:97
+#: bookwyrm/templates/settings/site.html:101
#: bookwyrm/templates/snippets/readthrough.html:77
#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:42
#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42
@@ -260,10 +268,10 @@ msgstr "Clé Goodreads :"
msgid "Save"
msgstr "Enregistrer"
-#: bookwyrm/templates/author/edit_author.html:99
+#: bookwyrm/templates/author/edit_author.html:117
#: bookwyrm/templates/book/book.html:125 bookwyrm/templates/book/book.html:174
#: bookwyrm/templates/book/cover_modal.html:32
-#: bookwyrm/templates/book/edit_book.html:264
+#: bookwyrm/templates/book/edit_book.html:322
#: bookwyrm/templates/moderation/report_modal.html:34
#: bookwyrm/templates/settings/federated_server.html:99
#: bookwyrm/templates/snippets/delete_readthrough_modal.html:17
@@ -307,7 +315,7 @@ msgid "Add Description"
msgstr "Ajouter une description"
#: bookwyrm/templates/book/book.html:120
-#: bookwyrm/templates/book/edit_book.html:108
+#: bookwyrm/templates/book/edit_book.html:136
#: bookwyrm/templates/lists/form.html:12
msgid "Description:"
msgstr "Description :"
@@ -367,7 +375,7 @@ msgstr "Sujets"
msgid "Places"
msgstr "Lieux"
-#: bookwyrm/templates/book/book.html:276 bookwyrm/templates/layout.html:64
+#: bookwyrm/templates/book/book.html:276 bookwyrm/templates/layout.html:61
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@@ -381,7 +389,7 @@ msgstr "Ajouter à la liste"
#: bookwyrm/templates/book/book.html:297
#: bookwyrm/templates/book/cover_modal.html:31
-#: bookwyrm/templates/lists/list.html:164
+#: bookwyrm/templates/lists/list.html:179
msgid "Add"
msgstr "Ajouter"
@@ -390,22 +398,22 @@ msgid "ISBN:"
msgstr "ISBN :"
#: bookwyrm/templates/book/book_identifiers.html:14
-#: bookwyrm/templates/book/edit_book.html:248
+#: bookwyrm/templates/book/edit_book.html:301
msgid "OCLC Number:"
msgstr "Numéro OCLC :"
#: bookwyrm/templates/book/book_identifiers.html:21
-#: bookwyrm/templates/book/edit_book.html:253
+#: bookwyrm/templates/book/edit_book.html:309
msgid "ASIN:"
msgstr "ASIN :"
#: bookwyrm/templates/book/cover_modal.html:17
-#: bookwyrm/templates/book/edit_book.html:192
+#: bookwyrm/templates/book/edit_book.html:229
msgid "Upload cover:"
msgstr "Charger une couverture :"
#: bookwyrm/templates/book/cover_modal.html:23
-#: bookwyrm/templates/book/edit_book.html:198
+#: bookwyrm/templates/book/edit_book.html:235
msgid "Load cover from url:"
msgstr "Charger la couverture depuis une URL :"
@@ -420,127 +428,132 @@ msgstr "Modifier « %(book_title)s »"
msgid "Add Book"
msgstr "Ajouter un livre"
-#: bookwyrm/templates/book/edit_book.html:40
+#: bookwyrm/templates/book/edit_book.html:54
msgid "Confirm Book Info"
msgstr "Confirmer les informations de ce livre"
-#: bookwyrm/templates/book/edit_book.html:47
+#: bookwyrm/templates/book/edit_book.html:62
#, python-format
msgid "Is \"%(name)s\" an existing author?"
-msgstr "Est‑ce que l’auteur ou l’autrice « %(name)s » existe déjà ?"
+msgstr "Est‑ce que l’auteur/autrice « %(name)s » existe déjà ?"
-#: bookwyrm/templates/book/edit_book.html:52
+#: bookwyrm/templates/book/edit_book.html:71
#, python-format
msgid "Author of %(book_title)s"
-msgstr "Commencer « %(book_title)s »"
+msgstr "Auteur/autrice de %(book_title)s"
-#: bookwyrm/templates/book/edit_book.html:55
+#: bookwyrm/templates/book/edit_book.html:75
msgid "This is a new author"
msgstr "Il s’agit d’un nouvel auteur ou d’une nouvelle autrice."
-#: bookwyrm/templates/book/edit_book.html:61
+#: bookwyrm/templates/book/edit_book.html:82
#, python-format
msgid "Creating a new author: %(name)s"
-msgstr "Création d’un nouvel auteur ou d’une nouvelle autrice : %(name)s"
+msgstr "Création d’un nouvel auteur/autrice : %(name)s"
-#: bookwyrm/templates/book/edit_book.html:67
+#: bookwyrm/templates/book/edit_book.html:89
msgid "Is this an edition of an existing work?"
msgstr "Est‑ce l’édition d’un ouvrage existant ?"
-#: bookwyrm/templates/book/edit_book.html:71
+#: bookwyrm/templates/book/edit_book.html:97
msgid "This is a new work"
msgstr "Il s’agit d’un nouvel ouvrage."
-#: bookwyrm/templates/book/edit_book.html:77
+#: bookwyrm/templates/book/edit_book.html:104
#: bookwyrm/templates/password_reset.html:30
msgid "Confirm"
msgstr "Confirmer"
-#: bookwyrm/templates/book/edit_book.html:79
+#: bookwyrm/templates/book/edit_book.html:106
#: bookwyrm/templates/feed/status.html:8
msgid "Back"
msgstr "Retour"
-#: bookwyrm/templates/book/edit_book.html:93
+#: bookwyrm/templates/book/edit_book.html:120
msgid "Title:"
msgstr "Titre :"
-#: bookwyrm/templates/book/edit_book.html:101
+#: bookwyrm/templates/book/edit_book.html:128
msgid "Subtitle:"
msgstr "Sous‑titre :"
-#: bookwyrm/templates/book/edit_book.html:114
+#: bookwyrm/templates/book/edit_book.html:144
msgid "Series:"
msgstr "Série :"
-#: bookwyrm/templates/book/edit_book.html:122
+#: bookwyrm/templates/book/edit_book.html:152
msgid "Series number:"
msgstr "Numéro dans la série :"
-#: bookwyrm/templates/book/edit_book.html:130
+#: bookwyrm/templates/book/edit_book.html:160
msgid "Languages:"
msgstr "Langues :"
-#: bookwyrm/templates/book/edit_book.html:139
+#: bookwyrm/templates/book/edit_book.html:169
msgid "Publisher:"
msgstr "Éditeur :"
-#: bookwyrm/templates/book/edit_book.html:148
+#: bookwyrm/templates/book/edit_book.html:178
msgid "First published date:"
msgstr "Première date de publication :"
-#: bookwyrm/templates/book/edit_book.html:156
+#: bookwyrm/templates/book/edit_book.html:186
msgid "Published date:"
msgstr "Date de publication :"
-#: bookwyrm/templates/book/edit_book.html:165
+#: bookwyrm/templates/book/edit_book.html:195
msgid "Authors"
msgstr "Auteurs ou autrices"
-#: bookwyrm/templates/book/edit_book.html:171
+#: bookwyrm/templates/book/edit_book.html:202
#, python-format
-msgid "Remove %(name)s"
-msgstr "Supprimer %(name)s"
+msgid "Remove %(name)s"
+msgstr "Retirer %(name)s"
-#: bookwyrm/templates/book/edit_book.html:176
+#: bookwyrm/templates/book/edit_book.html:205
+#, python-format
+msgid "Author page for %(name)s"
+msgstr "Page de %(name)s"
+
+#: bookwyrm/templates/book/edit_book.html:212
msgid "Add Authors:"
msgstr "Ajouter des auteurs ou autrices :"
-#: bookwyrm/templates/book/edit_book.html:177
+#: bookwyrm/templates/book/edit_book.html:213
msgid "John Doe, Jane Smith"
msgstr "Claude Dupont, Dominique Durand"
-#: bookwyrm/templates/book/edit_book.html:183
-#: bookwyrm/templates/user/shelf/shelf.html:77
+#: bookwyrm/templates/book/edit_book.html:220
+#: bookwyrm/templates/user/shelf/shelf.html:78
msgid "Cover"
msgstr "Couverture"
-#: bookwyrm/templates/book/edit_book.html:211
+#: bookwyrm/templates/book/edit_book.html:248
msgid "Physical Properties"
msgstr "Propriétés physiques"
-#: bookwyrm/templates/book/edit_book.html:212
+#: bookwyrm/templates/book/edit_book.html:250
#: bookwyrm/templates/book/format_filter.html:5
msgid "Format:"
msgstr "Format :"
-#: bookwyrm/templates/book/edit_book.html:220
+#: bookwyrm/templates/book/edit_book.html:258
msgid "Pages:"
msgstr "Pages :"
-#: bookwyrm/templates/book/edit_book.html:227
+#: bookwyrm/templates/book/edit_book.html:267
msgid "Book Identifiers"
msgstr "Identifiants du livre"
-#: bookwyrm/templates/book/edit_book.html:228
+#: bookwyrm/templates/book/edit_book.html:269
msgid "ISBN 13:"
msgstr "ISBN 13 :"
-#: bookwyrm/templates/book/edit_book.html:233
+#: bookwyrm/templates/book/edit_book.html:277
msgid "ISBN 10:"
msgstr "ISBN 10 :"
-#: bookwyrm/templates/book/edit_book.html:238
+#: bookwyrm/templates/book/edit_book.html:285
msgid "Openlibrary ID:"
msgstr "Identifiant Openlibrary :"
@@ -630,7 +643,7 @@ msgstr "Communauté fédérée"
#: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9
-#: bookwyrm/templates/layout.html:92
+#: bookwyrm/templates/layout.html:64
msgid "Directory"
msgstr "Répertoire"
@@ -831,7 +844,7 @@ msgid "Direct Messages with %(username)s"
msgstr "Messages directs avec %(username)s"
#: bookwyrm/templates/feed/direct_messages.html:10
-#: bookwyrm/templates/layout.html:87
+#: bookwyrm/templates/layout.html:92
msgid "Direct Messages"
msgstr "Messages directs"
@@ -887,7 +900,6 @@ msgid "Updates"
msgstr "Mises à jour"
#: bookwyrm/templates/feed/feed_layout.html:10
-#: bookwyrm/templates/layout.html:58
#: bookwyrm/templates/user/shelf/books_header.html:3
msgid "Your books"
msgstr "Vos livres"
@@ -942,7 +954,7 @@ msgid "What are you reading?"
msgstr "Que lisez‑vous ?"
#: bookwyrm/templates/get_started/books.html:9
-#: bookwyrm/templates/lists/list.html:120
+#: bookwyrm/templates/lists/list.html:135
msgid "Search for a book"
msgstr "Chercher un livre"
@@ -962,7 +974,7 @@ msgstr "Vous pourrez ajouter des livres lorsque vous commencerez à utiliser %(s
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/layout.html:37 bookwyrm/templates/layout.html:38
-#: bookwyrm/templates/lists/list.html:124
+#: bookwyrm/templates/lists/list.html:139
#: bookwyrm/templates/search/layout.html:4
#: bookwyrm/templates/search/layout.html:9
msgid "Search"
@@ -978,7 +990,7 @@ msgid "Popular on %(site_name)s"
msgstr "Populaire sur %(site_name)s"
#: bookwyrm/templates/get_started/books.html:58
-#: bookwyrm/templates/lists/list.html:137
+#: bookwyrm/templates/lists/list.html:152
msgid "No books found"
msgstr "Aucun livre trouvé"
@@ -1090,7 +1102,7 @@ msgid "%(username)s's %(year)s Books"
msgstr "Livres de %(username)s en %(year)s"
#: bookwyrm/templates/import.html:5 bookwyrm/templates/import.html:9
-#: bookwyrm/templates/layout.html:97
+#: bookwyrm/templates/user/shelf/shelf.html:40
msgid "Import Books"
msgstr "Importer des livres"
@@ -1128,65 +1140,70 @@ msgstr "Aucune importation récente"
msgid "Import Status"
msgstr "Statut de l’importation"
-#: bookwyrm/templates/import_status.html:12
+#: bookwyrm/templates/import_status.html:13
msgid "Import started:"
-msgstr "Importation en cours :"
+msgstr "Début de l’importation :"
-#: bookwyrm/templates/import_status.html:16
+#: bookwyrm/templates/import_status.html:18
msgid "Import completed:"
-msgstr "Importation terminé :"
+msgstr "Fin de l’importation :"
-#: bookwyrm/templates/import_status.html:19
+#: bookwyrm/templates/import_status.html:23
msgid "TASK FAILED"
msgstr "la tâche a échoué"
-#: bookwyrm/templates/import_status.html:25
+#: bookwyrm/templates/import_status.html:30
msgid "Import still in progress."
msgstr "L’importation est toujours en cours"
-#: bookwyrm/templates/import_status.html:27
+#: bookwyrm/templates/import_status.html:32
msgid "(Hit reload to update!)"
-msgstr "(Rechargez la page pour mettre à jour !"
+msgstr "(Rechargez la page pour la mettre à jour !)"
-#: bookwyrm/templates/import_status.html:34
+#: bookwyrm/templates/import_status.html:39
msgid "Failed to load"
-msgstr "Items non importés"
+msgstr "Éléments non importés"
-#: bookwyrm/templates/import_status.html:43
+#: bookwyrm/templates/import_status.html:48
#, python-format
msgid "Jump to the bottom of the list to select the %(failed_count)s items which failed to import."
msgstr "Sauter en bas de liste pour sélectionner les %(failed_count)s items n’ayant pu être importés."
-#: bookwyrm/templates/import_status.html:78
+#: bookwyrm/templates/import_status.html:60
+#, python-format
+msgid "Line %(index)s: %(title)s by %(author)s"
+msgstr "Ligne %(index)s : %(title)s par %(author)s"
+
+#: bookwyrm/templates/import_status.html:80
msgid "Select all"
msgstr "Tout sélectionner"
-#: bookwyrm/templates/import_status.html:81
+#: bookwyrm/templates/import_status.html:83
msgid "Retry items"
-msgstr "Essayer d’importer les items sélectionnés de nouveau"
+msgstr "Réessayer l’importation de ces éléments"
-#: bookwyrm/templates/import_status.html:107
+#: bookwyrm/templates/import_status.html:109
msgid "Successfully imported"
msgstr "Importation réussie"
-#: bookwyrm/templates/import_status.html:111
+#: bookwyrm/templates/import_status.html:113
msgid "Book"
msgstr "Livre"
-#: bookwyrm/templates/import_status.html:114
+#: bookwyrm/templates/import_status.html:116
#: bookwyrm/templates/snippets/create_status_form.html:13
-#: bookwyrm/templates/user/shelf/shelf.html:78
-#: bookwyrm/templates/user/shelf/shelf.html:98
+#: bookwyrm/templates/user/shelf/shelf.html:79
+#: bookwyrm/templates/user/shelf/shelf.html:99
msgid "Title"
msgstr "Titre"
-#: bookwyrm/templates/import_status.html:117
-#: bookwyrm/templates/user/shelf/shelf.html:79
-#: bookwyrm/templates/user/shelf/shelf.html:101
+#: bookwyrm/templates/import_status.html:119
+#: bookwyrm/templates/user/shelf/shelf.html:80
+#: bookwyrm/templates/user/shelf/shelf.html:102
msgid "Author"
-msgstr "Auteur ou autrice"
+msgstr "Auteur/autrice"
-#: bookwyrm/templates/import_status.html:140
+#: bookwyrm/templates/import_status.html:142
msgid "Imported"
msgstr "Importé"
@@ -1224,15 +1241,19 @@ msgstr "Chercher un livre ou un compte"
msgid "Main navigation menu"
msgstr "Menu de navigation principal "
-#: bookwyrm/templates/layout.html:61
+#: bookwyrm/templates/layout.html:58
msgid "Feed"
msgstr "Fil d’actualité"
-#: bookwyrm/templates/layout.html:102
+#: bookwyrm/templates/layout.html:87
+msgid "Your Books"
+msgstr "Vos Livres"
+
+#: bookwyrm/templates/layout.html:97
msgid "Settings"
msgstr "Paramètres"
-#: bookwyrm/templates/layout.html:111
+#: bookwyrm/templates/layout.html:106
#: bookwyrm/templates/settings/admin_layout.html:31
#: bookwyrm/templates/settings/manage_invite_requests.html:15
#: bookwyrm/templates/settings/manage_invites.html:3
@@ -1240,61 +1261,61 @@ msgstr "Paramètres"
msgid "Invites"
msgstr "Invitations"
-#: bookwyrm/templates/layout.html:118
+#: bookwyrm/templates/layout.html:113
msgid "Admin"
msgstr "Admin"
-#: bookwyrm/templates/layout.html:125
+#: bookwyrm/templates/layout.html:120
msgid "Log out"
msgstr "Se déconnecter"
-#: bookwyrm/templates/layout.html:133 bookwyrm/templates/layout.html:134
+#: bookwyrm/templates/layout.html:128 bookwyrm/templates/layout.html:129
#: bookwyrm/templates/notifications.html:6
#: bookwyrm/templates/notifications.html:11
msgid "Notifications"
msgstr "Notifications"
-#: bookwyrm/templates/layout.html:156 bookwyrm/templates/layout.html:160
+#: bookwyrm/templates/layout.html:151 bookwyrm/templates/layout.html:155
#: bookwyrm/templates/login.html:17
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
msgstr "Nom du compte :"
-#: bookwyrm/templates/layout.html:161
+#: bookwyrm/templates/layout.html:156
msgid "password"
msgstr "Mot de passe"
-#: bookwyrm/templates/layout.html:162 bookwyrm/templates/login.html:36
+#: bookwyrm/templates/layout.html:157 bookwyrm/templates/login.html:36
msgid "Forgot your password?"
msgstr "Mot de passe oublié ?"
-#: bookwyrm/templates/layout.html:165 bookwyrm/templates/login.html:10
+#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:10
#: bookwyrm/templates/login.html:33
msgid "Log in"
msgstr "Se connecter"
-#: bookwyrm/templates/layout.html:173
+#: bookwyrm/templates/layout.html:168
msgid "Join"
msgstr "Rejoindre"
-#: bookwyrm/templates/layout.html:211
-msgid "About this server"
-msgstr "À propos de ce serveur"
+#: bookwyrm/templates/layout.html:206
+msgid "About this instance"
+msgstr "À propos de cette instance"
-#: bookwyrm/templates/layout.html:215
+#: bookwyrm/templates/layout.html:210
msgid "Contact site admin"
msgstr "Contacter l’administrateur du site"
-#: bookwyrm/templates/layout.html:219
+#: bookwyrm/templates/layout.html:214
msgid "Documentation"
msgstr "Documentation"
-#: bookwyrm/templates/layout.html:226
+#: bookwyrm/templates/layout.html:221
#, python-format
msgid "Support %(site_name)s on %(support_title)s"
msgstr "Soutenez %(site_name)s avec %(support_title)s"
-#: bookwyrm/templates/layout.html:230
+#: bookwyrm/templates/layout.html:225
msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub."
msgstr "BookWyrm est un logiciel libre. Vous pouvez contribuer ou faire des rapports de bogues via GitHub."
@@ -1338,7 +1359,7 @@ msgid "Discard"
msgstr "Rejeter"
#: bookwyrm/templates/lists/edit_form.html:5
-#: bookwyrm/templates/lists/list_layout.html:17
+#: bookwyrm/templates/lists/list_layout.html:16
msgid "Edit List"
msgstr "Modifier la liste"
@@ -1385,54 +1406,55 @@ msgstr "Vous avez ajouté un livre à cette liste !"
msgid "This list is currently empty"
msgstr "Cette liste est actuellement vide"
-#: bookwyrm/templates/lists/list.html:65
+#: bookwyrm/templates/lists/list.html:66
#, python-format
msgid "Added by %(username)s"
msgstr "Ajouté par %(username)s"
-#: bookwyrm/templates/lists/list.html:77
-msgid "Set"
-msgstr "Appliquer"
-
-#: bookwyrm/templates/lists/list.html:80
+#: bookwyrm/templates/lists/list.html:74
msgid "List position"
msgstr "Position"
-#: bookwyrm/templates/lists/list.html:86
+#: bookwyrm/templates/lists/list.html:81
+msgid "Set"
+msgstr "Appliquer"
+
+#: bookwyrm/templates/lists/list.html:89
#: bookwyrm/templates/snippets/shelf_selector.html:26
msgid "Remove"
msgstr "Retirer"
-#: bookwyrm/templates/lists/list.html:99 bookwyrm/templates/lists/list.html:111
+#: bookwyrm/templates/lists/list.html:103
+#: bookwyrm/templates/lists/list.html:120
msgid "Sort List"
msgstr "Trier la liste"
-#: bookwyrm/templates/lists/list.html:105
+#: bookwyrm/templates/lists/list.html:113
msgid "Direction"
msgstr "Direction"
-#: bookwyrm/templates/lists/list.html:116
+#: bookwyrm/templates/lists/list.html:127
msgid "Add Books"
msgstr "Ajouter des livres"
-#: bookwyrm/templates/lists/list.html:116
+#: bookwyrm/templates/lists/list.html:129
msgid "Suggest Books"
msgstr "Suggérer des livres"
-#: bookwyrm/templates/lists/list.html:125
+#: bookwyrm/templates/lists/list.html:140
msgid "search"
msgstr "chercher"
-#: bookwyrm/templates/lists/list.html:131
+#: bookwyrm/templates/lists/list.html:146
msgid "Clear search"
msgstr "Vider la requête"
-#: bookwyrm/templates/lists/list.html:136
+#: bookwyrm/templates/lists/list.html:151
#, python-format
msgid "No books found matching the query \"%(query)s\""
msgstr "Aucun livre trouvé pour la requête « %(query)s »"
-#: bookwyrm/templates/lists/list.html:164
+#: bookwyrm/templates/lists/list.html:179
msgid "Suggest"
msgstr "Suggérer"
@@ -1523,8 +1545,8 @@ msgstr "Résoudre"
#: bookwyrm/templates/moderation/reports.html:6
#, python-format
-msgid "Reports: %(server_name)s"
-msgstr "Signalements : %(server_name)s"
+msgid "Reports: %(instance_name)s"
+msgstr "Signalements : %(instance_name)s"
#: bookwyrm/templates/moderation/reports.html:8
#: bookwyrm/templates/moderation/reports.html:17
@@ -1534,8 +1556,8 @@ msgstr "Signalements"
#: bookwyrm/templates/moderation/reports.html:14
#, python-format
-msgid "Reports: %(server_name)s"
-msgstr "Signalements: %(server_name)s"
+msgid "Reports: %(instance_name)s"
+msgstr "Signalements : %(instance_name)s"
#: bookwyrm/templates/moderation/reports.html:28
msgid "Resolved"
@@ -1803,8 +1825,8 @@ msgstr "Gérer les comptes"
#: bookwyrm/templates/settings/admin_layout.html:39
#: bookwyrm/templates/settings/federation.html:3
#: bookwyrm/templates/settings/federation.html:5
-msgid "Federated Servers"
-msgstr "Serveurs fédérés"
+msgid "Federated Instances"
+msgstr "Instances fédérées"
#: bookwyrm/templates/settings/admin_layout.html:44
msgid "Instance Settings"
@@ -1840,7 +1862,7 @@ msgstr "Contenu du pied de page"
#: bookwyrm/templates/settings/admin_layout.html:58
#: bookwyrm/templates/settings/site.html:81
msgid "Registration"
-msgstr "Enregistrement"
+msgstr "Inscription"
#: bookwyrm/templates/settings/announcement.html:3
#: bookwyrm/templates/settings/announcement.html:6
@@ -1931,13 +1953,13 @@ msgstr "inactive"
#: bookwyrm/templates/settings/federation.html:10
#: bookwyrm/templates/settings/server_blocklist.html:3
#: bookwyrm/templates/settings/server_blocklist.html:20
-msgid "Add server"
-msgstr "Ajouter un serveur"
+msgid "Add instance"
+msgstr "Ajouter une instance"
#: bookwyrm/templates/settings/edit_server.html:7
#: bookwyrm/templates/settings/server_blocklist.html:7
-msgid "Back to server list"
-msgstr "Retour à la liste des serveurs"
+msgid "Back to instance list"
+msgstr "Retour à la liste des instances"
#: bookwyrm/templates/settings/edit_server.html:16
#: bookwyrm/templates/settings/server_blocklist.html:16
@@ -2043,8 +2065,8 @@ msgstr "Tous les comptes de cette instance seront réactivés."
#: bookwyrm/templates/settings/federation.html:19
#: bookwyrm/templates/user_admin/server_filter.html:5
-msgid "Server name"
-msgstr "Nom du serveur"
+msgid "Instance name"
+msgstr "Nom de l’instance"
#: bookwyrm/templates/settings/federation.html:23
msgid "Date federated"
@@ -2059,7 +2081,7 @@ msgstr "Logiciel"
#: bookwyrm/templates/settings/manage_invite_requests.html:25
#: bookwyrm/templates/settings/manage_invites.html:11
msgid "Invite Requests"
-msgstr "Invitations"
+msgstr "Demandes d’invitation"
#: bookwyrm/templates/settings/manage_invite_requests.html:23
msgid "Ignored Invite Requests"
@@ -2225,17 +2247,17 @@ msgstr "Email de l’administrateur :"
msgid "Additional info:"
msgstr "Infos supplémentaires :"
-#: bookwyrm/templates/settings/site.html:83
-msgid "Allow registration:"
-msgstr "Autoriser l’enregistrement :"
-
-#: bookwyrm/templates/settings/site.html:87
-msgid "Allow invite requests:"
-msgstr "Autoriser les demandes d’invitation :"
+#: bookwyrm/templates/settings/site.html:85
+msgid "Allow registration"
+msgstr "Autoriser les inscriptions"
#: bookwyrm/templates/settings/site.html:91
+msgid "Allow invite requests"
+msgstr "Autoriser les demandes d’invitation"
+
+#: bookwyrm/templates/settings/site.html:95
msgid "Registration closed text:"
-msgstr "Texte affiché lorsque les enregistrements sont clos :"
+msgstr "Texte affiché lorsque les inscriptions sont closes :"
#: bookwyrm/templates/snippets/announcement.html:31
#, python-format
@@ -2623,7 +2645,7 @@ msgstr "Commencer « %(book_title)s »"
#: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:5
#, python-format
msgid "Want to Read \"%(book_title)s\""
-msgstr "A envie de lire « %(book_title)s »"
+msgstr "Ajouter « %(book_title)s » aux envies de lecture"
#: bookwyrm/templates/snippets/status/content_status.html:71
#: bookwyrm/templates/snippets/trimmed_text.html:15
@@ -2752,30 +2774,30 @@ msgstr "Tous les livres"
msgid "Create shelf"
msgstr "Créer une étagère"
-#: bookwyrm/templates/user/shelf/shelf.html:61
+#: bookwyrm/templates/user/shelf/shelf.html:62
msgid "Edit shelf"
msgstr "Modifier l’étagère"
-#: bookwyrm/templates/user/shelf/shelf.html:80
-#: bookwyrm/templates/user/shelf/shelf.html:104
+#: bookwyrm/templates/user/shelf/shelf.html:81
+#: bookwyrm/templates/user/shelf/shelf.html:105
msgid "Shelved"
msgstr "Date d’ajout"
-#: bookwyrm/templates/user/shelf/shelf.html:81
-#: bookwyrm/templates/user/shelf/shelf.html:108
+#: bookwyrm/templates/user/shelf/shelf.html:82
+#: bookwyrm/templates/user/shelf/shelf.html:109
msgid "Started"
msgstr "Commencé"
-#: bookwyrm/templates/user/shelf/shelf.html:82
-#: bookwyrm/templates/user/shelf/shelf.html:111
+#: bookwyrm/templates/user/shelf/shelf.html:83
+#: bookwyrm/templates/user/shelf/shelf.html:112
msgid "Finished"
msgstr "Terminé"
-#: bookwyrm/templates/user/shelf/shelf.html:137
+#: bookwyrm/templates/user/shelf/shelf.html:138
msgid "This shelf is empty."
msgstr "Cette étagère est vide"
-#: bookwyrm/templates/user/shelf/shelf.html:143
+#: bookwyrm/templates/user/shelf/shelf.html:144
msgid "Delete shelf"
msgstr "Supprimer l’étagère"
@@ -2834,8 +2856,8 @@ msgstr "Retour aux comptes"
#: bookwyrm/templates/user_admin/user_admin.html:7
#, python-format
-msgid "Users: %(server_name)s"
-msgstr "Comptes : %(server_name)s"
+msgid "Users: %(instance_name)s"
+msgstr "Comptes : %(instance_name)s"
#: bookwyrm/templates/user_admin/user_admin.html:22
#: bookwyrm/templates/user_admin/username_filter.html:5
@@ -2851,8 +2873,8 @@ msgid "Last Active"
msgstr "Dernière activité"
#: bookwyrm/templates/user_admin/user_admin.html:38
-msgid "Remote server"
-msgstr "Serveur distant"
+msgid "Remote instance"
+msgstr "Instance distante"
#: bookwyrm/templates/user_admin/user_admin.html:47
msgid "Active"
@@ -2895,6 +2917,10 @@ msgstr "Rétablir le compte"
msgid "Access level:"
msgstr "Niveau d’accès :"
+#: bookwyrm/templates/widgets/clearable_file_input_with_warning.html:22
+msgid "File exceeds maximum size: 10MB"
+msgstr "Ce fichier dépasse la taille limite : 10 Mo"
+
#: bookwyrm/views/import_data.py:67
msgid "Not a valid csv file"
msgstr "Fichier CSV non valide"
diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo
index 17b3df695..5e5b36dcb 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 0ec8b1d88..4106db438 100644
--- a/locale/zh_Hans/LC_MESSAGES/django.po
+++ b/locale/zh_Hans/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-05-20 14:40-0700\n"
+"POT-Creation-Date: 2021-06-06 20:52+0000\n"
"PO-Revision-Date: 2021-03-20 00:56+0000\n"
"Last-Translator: Kana \n"
"Language-Team: Mouse Reeve \n"
@@ -58,12 +58,12 @@ msgid "Book Title"
msgstr "标题"
#: bookwyrm/forms.py:301 bookwyrm/templates/snippets/create_status_form.html:34
-#: bookwyrm/templates/user/shelf/shelf.html:84
-#: bookwyrm/templates/user/shelf/shelf.html:115
+#: bookwyrm/templates/user/shelf/shelf.html:85
+#: bookwyrm/templates/user/shelf/shelf.html:116
msgid "Rating"
msgstr "评价"
-#: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:101
+#: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:107
msgid "Sort By"
msgstr ""
@@ -79,41 +79,41 @@ msgstr "升序排序"
msgid "Descending"
msgstr "升序排序"
-#: bookwyrm/models/fields.py:24
+#: bookwyrm/models/fields.py:25
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s 不是有效的 remote_id"
-#: bookwyrm/models/fields.py:33 bookwyrm/models/fields.py:42
+#: bookwyrm/models/fields.py:34 bookwyrm/models/fields.py:43
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s 不是有效的用户名"
-#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:155
+#: bookwyrm/models/fields.py:166 bookwyrm/templates/layout.html:152
msgid "username"
msgstr "用户名"
-#: bookwyrm/models/fields.py:170
+#: bookwyrm/models/fields.py:171
msgid "A user with that username already exists."
msgstr "已经存在使用该用户名的用户。"
-#: bookwyrm/settings.py:155
+#: bookwyrm/settings.py:156
msgid "English"
msgstr "English(英语)"
-#: bookwyrm/settings.py:156
+#: bookwyrm/settings.py:157
msgid "German"
msgstr "Deutsch(德语)"
-#: bookwyrm/settings.py:157
+#: bookwyrm/settings.py:158
msgid "Spanish"
msgstr "Español(西班牙语)"
-#: bookwyrm/settings.py:158
+#: bookwyrm/settings.py:159
msgid "French"
msgstr "Français(法语)"
-#: bookwyrm/settings.py:159
+#: bookwyrm/settings.py:160
msgid "Simplified Chinese"
msgstr "简体中文"
@@ -260,7 +260,7 @@ msgstr "Goodreads key:"
#: bookwyrm/templates/book/edit_book.html:263
#: bookwyrm/templates/lists/form.html:42
#: bookwyrm/templates/preferences/edit_user.html:70
-#: bookwyrm/templates/settings/announcement_form.html:65
+#: bookwyrm/templates/settings/announcement_form.html:69
#: bookwyrm/templates/settings/edit_server.html:68
#: bookwyrm/templates/settings/federated_server.html:98
#: bookwyrm/templates/settings/site.html:97
@@ -386,7 +386,7 @@ msgstr "主题"
msgid "Places"
msgstr "地点"
-#: bookwyrm/templates/book/book.html:276 bookwyrm/templates/layout.html:64
+#: bookwyrm/templates/book/book.html:276 bookwyrm/templates/layout.html:61
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@@ -400,7 +400,7 @@ msgstr "添加到列表"
#: bookwyrm/templates/book/book.html:297
#: bookwyrm/templates/book/cover_modal.html:31
-#: bookwyrm/templates/lists/list.html:164
+#: bookwyrm/templates/lists/list.html:179
msgid "Add"
msgstr "添加"
@@ -532,7 +532,7 @@ msgid "John Doe, Jane Smith"
msgstr "张三, 李四"
#: bookwyrm/templates/book/edit_book.html:183
-#: bookwyrm/templates/user/shelf/shelf.html:77
+#: bookwyrm/templates/user/shelf/shelf.html:78
msgid "Cover"
msgstr "封面"
@@ -655,7 +655,7 @@ msgstr "跨站社区"
#: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9
-#: bookwyrm/templates/layout.html:92
+#: bookwyrm/templates/layout.html:64
msgid "Directory"
msgstr "目录"
@@ -854,7 +854,7 @@ msgid "Direct Messages with %(username)s"
msgstr "与 %(username)s 私信"
#: bookwyrm/templates/feed/direct_messages.html:10
-#: bookwyrm/templates/layout.html:87
+#: bookwyrm/templates/layout.html:92
msgid "Direct Messages"
msgstr "私信"
@@ -910,7 +910,6 @@ msgid "Updates"
msgstr "更新"
#: bookwyrm/templates/feed/feed_layout.html:10
-#: bookwyrm/templates/layout.html:58
#: bookwyrm/templates/user/shelf/books_header.html:3
msgid "Your books"
msgstr "你的书目"
@@ -963,7 +962,7 @@ msgid "What are you reading?"
msgstr "你在阅读什么?"
#: bookwyrm/templates/get_started/books.html:9
-#: bookwyrm/templates/lists/list.html:120
+#: bookwyrm/templates/lists/list.html:135
msgid "Search for a book"
msgstr "搜索书目"
@@ -983,7 +982,7 @@ msgstr "你可以在开始使用 %(site_name)s 后添加书目。"
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/layout.html:37 bookwyrm/templates/layout.html:38
-#: bookwyrm/templates/lists/list.html:124
+#: bookwyrm/templates/lists/list.html:139
#: bookwyrm/templates/search/layout.html:4
#: bookwyrm/templates/search/layout.html:9
msgid "Search"
@@ -999,7 +998,7 @@ msgid "Popular on %(site_name)s"
msgstr "%(site_name)s 上的热门"
#: bookwyrm/templates/get_started/books.html:58
-#: bookwyrm/templates/lists/list.html:137
+#: bookwyrm/templates/lists/list.html:152
msgid "No books found"
msgstr "没有找到书目"
@@ -1111,7 +1110,7 @@ msgid "%(username)s's %(year)s Books"
msgstr "%(username)s 在 %(year)s 的书目"
#: bookwyrm/templates/import.html:5 bookwyrm/templates/import.html:9
-#: bookwyrm/templates/layout.html:97
+#: bookwyrm/templates/user/shelf/shelf.html:40
msgid "Import Books"
msgstr "导入书目"
@@ -1196,14 +1195,14 @@ msgstr "书目"
#: bookwyrm/templates/import_status.html:114
#: bookwyrm/templates/snippets/create_status_form.html:13
-#: bookwyrm/templates/user/shelf/shelf.html:78
-#: bookwyrm/templates/user/shelf/shelf.html:98
+#: bookwyrm/templates/user/shelf/shelf.html:79
+#: bookwyrm/templates/user/shelf/shelf.html:99
msgid "Title"
msgstr "标题"
#: bookwyrm/templates/import_status.html:117
-#: bookwyrm/templates/user/shelf/shelf.html:79
-#: bookwyrm/templates/user/shelf/shelf.html:101
+#: bookwyrm/templates/user/shelf/shelf.html:80
+#: bookwyrm/templates/user/shelf/shelf.html:102
msgid "Author"
msgstr "作者"
@@ -1245,15 +1244,21 @@ msgstr "搜索书目或用户"
msgid "Main navigation menu"
msgstr "主导航菜单"
-#: bookwyrm/templates/layout.html:61
+#: bookwyrm/templates/layout.html:58
msgid "Feed"
msgstr "动态"
-#: bookwyrm/templates/layout.html:102
+#: bookwyrm/templates/layout.html:87
+#, fuzzy
+#| msgid "Your books"
+msgid "Your Books"
+msgstr "你的书目"
+
+#: bookwyrm/templates/layout.html:97
msgid "Settings"
msgstr "设置"
-#: bookwyrm/templates/layout.html:111
+#: bookwyrm/templates/layout.html:106
#: bookwyrm/templates/settings/admin_layout.html:31
#: bookwyrm/templates/settings/manage_invite_requests.html:15
#: bookwyrm/templates/settings/manage_invites.html:3
@@ -1261,45 +1266,47 @@ msgstr "设置"
msgid "Invites"
msgstr "邀请"
-#: bookwyrm/templates/layout.html:118
+#: bookwyrm/templates/layout.html:113
msgid "Admin"
msgstr "管理员"
-#: bookwyrm/templates/layout.html:125
+#: bookwyrm/templates/layout.html:120
msgid "Log out"
msgstr "登出"
-#: bookwyrm/templates/layout.html:133 bookwyrm/templates/layout.html:134
+#: bookwyrm/templates/layout.html:128 bookwyrm/templates/layout.html:129
#: bookwyrm/templates/notifications.html:6
#: bookwyrm/templates/notifications.html:11
msgid "Notifications"
msgstr "通知"
-#: bookwyrm/templates/layout.html:154 bookwyrm/templates/layout.html:158
+#: bookwyrm/templates/layout.html:151 bookwyrm/templates/layout.html:155
#: bookwyrm/templates/login.html:17
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
msgstr "用户名:"
-#: bookwyrm/templates/layout.html:159
+#: bookwyrm/templates/layout.html:156
msgid "password"
msgstr "密码"
-#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:36
+#: bookwyrm/templates/layout.html:157 bookwyrm/templates/login.html:36
msgid "Forgot your password?"
msgstr "忘记了密码?"
-#: bookwyrm/templates/layout.html:163 bookwyrm/templates/login.html:10
+#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:10
#: bookwyrm/templates/login.html:33
msgid "Log in"
msgstr "登录"
-#: bookwyrm/templates/layout.html:171
+#: bookwyrm/templates/layout.html:168
msgid "Join"
msgstr "加入"
#: bookwyrm/templates/layout.html:206
-msgid "About this server"
+#, fuzzy
+#| msgid "About this server"
+msgid "About this instance"
msgstr "关于本服务器"
#: bookwyrm/templates/layout.html:210
@@ -1361,7 +1368,7 @@ msgid "Discard"
msgstr "削除"
#: bookwyrm/templates/lists/edit_form.html:5
-#: bookwyrm/templates/lists/list_layout.html:17
+#: bookwyrm/templates/lists/list_layout.html:16
msgid "Edit List"
msgstr "编辑列表"
@@ -1410,62 +1417,63 @@ msgstr "任何人都可以向此列表中添加书目"
msgid "This list is currently empty"
msgstr "此列表当前是空的"
-#: bookwyrm/templates/lists/list.html:65
+#: bookwyrm/templates/lists/list.html:66
#, python-format
msgid "Added by %(username)s"
msgstr "由 %(username)s 添加"
-#: bookwyrm/templates/lists/list.html:77
-#, fuzzy
-#| msgid "Sent"
-msgid "Set"
-msgstr "已发送"
-
-#: bookwyrm/templates/lists/list.html:80
+#: bookwyrm/templates/lists/list.html:74
#, fuzzy
#| msgid "List curation:"
msgid "List position"
msgstr "列表策展:"
-#: bookwyrm/templates/lists/list.html:86
+#: bookwyrm/templates/lists/list.html:81
+#, fuzzy
+#| msgid "Sent"
+msgid "Set"
+msgstr "已发送"
+
+#: bookwyrm/templates/lists/list.html:89
#: bookwyrm/templates/snippets/shelf_selector.html:26
msgid "Remove"
msgstr "移除"
-#: bookwyrm/templates/lists/list.html:99 bookwyrm/templates/lists/list.html:111
+#: bookwyrm/templates/lists/list.html:103
+#: bookwyrm/templates/lists/list.html:120
#, fuzzy
#| msgid "Your Lists"
msgid "Sort List"
msgstr "你的列表"
-#: bookwyrm/templates/lists/list.html:105
+#: bookwyrm/templates/lists/list.html:113
#, fuzzy
#| msgid "Directory"
msgid "Direction"
msgstr "目录"
-#: bookwyrm/templates/lists/list.html:116
+#: bookwyrm/templates/lists/list.html:127
msgid "Add Books"
msgstr "添加书目"
-#: bookwyrm/templates/lists/list.html:116
+#: bookwyrm/templates/lists/list.html:129
msgid "Suggest Books"
msgstr "推荐书目"
-#: bookwyrm/templates/lists/list.html:125
+#: bookwyrm/templates/lists/list.html:140
msgid "search"
msgstr "搜索"
-#: bookwyrm/templates/lists/list.html:131
+#: bookwyrm/templates/lists/list.html:146
msgid "Clear search"
msgstr "清除搜索"
-#: bookwyrm/templates/lists/list.html:136
+#: bookwyrm/templates/lists/list.html:151
#, python-format
msgid "No books found matching the query \"%(query)s\""
msgstr "没有符合 \"%(query)s\" 请求的书目"
-#: bookwyrm/templates/lists/list.html:164
+#: bookwyrm/templates/lists/list.html:179
msgid "Suggest"
msgstr "推荐"
@@ -1558,8 +1566,8 @@ msgstr "已解决"
#: bookwyrm/templates/moderation/reports.html:6
#, python-format
-msgid "Reports: %(server_name)s"
-msgstr "报告: %(server_name)s"
+msgid "Reports: %(instance_name)s"
+msgstr "报告: %(instance_name)s"
#: bookwyrm/templates/moderation/reports.html:8
#: bookwyrm/templates/moderation/reports.html:17
@@ -1569,8 +1577,8 @@ msgstr "报告"
#: bookwyrm/templates/moderation/reports.html:14
#, python-format
-msgid "Reports: %(server_name)s"
-msgstr "报告: %(server_name)s"
+msgid "Reports: %(instance_name)s"
+msgstr "报告: %(instance_name)s"
#: bookwyrm/templates/moderation/reports.html:28
msgid "Resolved"
@@ -1771,6 +1779,26 @@ msgstr "个人资料"
msgid "Relationships"
msgstr "关系"
+#: bookwyrm/templates/rss/title.html:5
+#: bookwyrm/templates/snippets/status/status_header.html:35
+msgid "rated"
+msgstr "评价了"
+
+#: bookwyrm/templates/rss/title.html:7
+#: bookwyrm/templates/snippets/status/status_header.html:37
+msgid "reviewed"
+msgstr "写了书评给"
+
+#: bookwyrm/templates/rss/title.html:9
+#: bookwyrm/templates/snippets/status/status_header.html:39
+msgid "commented on"
+msgstr "评论了"
+
+#: bookwyrm/templates/rss/title.html:11
+#: bookwyrm/templates/snippets/status/status_header.html:41
+msgid "quoted"
+msgstr "引用了"
+
#: bookwyrm/templates/search/book.html:64
#, fuzzy
#| msgid "Show results from other catalogues"
@@ -1828,7 +1856,9 @@ msgstr "管理用户"
#: bookwyrm/templates/settings/admin_layout.html:39
#: bookwyrm/templates/settings/federation.html:3
#: bookwyrm/templates/settings/federation.html:5
-msgid "Federated Servers"
+#, fuzzy
+#| msgid "Federated Servers"
+msgid "Federated Instances"
msgstr "互联的服务器"
#: bookwyrm/templates/settings/admin_layout.html:44
@@ -1882,6 +1912,7 @@ msgid "Back to list"
msgstr "回到服务器列表"
#: bookwyrm/templates/settings/announcement.html:11
+#: bookwyrm/templates/settings/announcement_form.html:6
#, fuzzy
#| msgid "Announcements"
msgid "Edit Announcement"
@@ -1923,7 +1954,7 @@ msgstr "出生日期:"
msgid "Active:"
msgstr "活跃"
-#: bookwyrm/templates/settings/announcement_form.html:5
+#: bookwyrm/templates/settings/announcement_form.html:8
#: bookwyrm/templates/settings/announcements.html:8
#, fuzzy
#| msgid "Announcements"
@@ -1982,13 +2013,15 @@ msgstr "停用"
#: bookwyrm/templates/settings/server_blocklist.html:3
#: bookwyrm/templates/settings/server_blocklist.html:20
#, fuzzy
-#| msgid "Add cover"
-msgid "Add server"
-msgstr "添加封面"
+#| msgid "Instance Name:"
+msgid "Add instance"
+msgstr "实例名称"
#: bookwyrm/templates/settings/edit_server.html:7
#: bookwyrm/templates/settings/server_blocklist.html:7
-msgid "Back to server list"
+#, fuzzy
+#| msgid "Back to server list"
+msgid "Back to instance list"
msgstr "回到服务器列表"
#: bookwyrm/templates/settings/edit_server.html:16
@@ -2103,8 +2136,10 @@ msgstr ""
#: bookwyrm/templates/settings/federation.html:19
#: bookwyrm/templates/user_admin/server_filter.html:5
-msgid "Server name"
-msgstr "服务器名称"
+#, fuzzy
+#| msgid "Instance Name:"
+msgid "Instance name"
+msgstr "实例名称"
#: bookwyrm/templates/settings/federation.html:23
msgid "Date federated"
@@ -2231,7 +2266,7 @@ msgid "Import Blocklist"
msgstr "导入书目"
#: bookwyrm/templates/settings/server_blocklist.html:26
-#: bookwyrm/templates/snippets/goal_progress.html:5
+#: bookwyrm/templates/snippets/goal_progress.html:7
msgid "Success!"
msgstr "成功!"
@@ -2320,15 +2355,15 @@ msgstr "没有封面"
msgid "%(title)s by "
msgstr "%(title)s 来自"
-#: bookwyrm/templates/snippets/boost_button.html:9
-#: bookwyrm/templates/snippets/boost_button.html:10
+#: bookwyrm/templates/snippets/boost_button.html:20
+#: bookwyrm/templates/snippets/boost_button.html:21
#, fuzzy
#| msgid "boosted"
msgid "Boost"
msgstr "转发了"
-#: bookwyrm/templates/snippets/boost_button.html:16
-#: bookwyrm/templates/snippets/boost_button.html:17
+#: bookwyrm/templates/snippets/boost_button.html:33
+#: bookwyrm/templates/snippets/boost_button.html:34
#, fuzzy
#| msgid "Un-boost status"
msgid "Un-boost"
@@ -2422,13 +2457,13 @@ msgstr "删除这些阅读日期吗?"
msgid "You are deleting this readthrough and its %(count)s associated progress updates."
msgstr "你正要删除这篇阅读经过以及与之相关的 %(count)s 次进度更新。"
-#: bookwyrm/templates/snippets/fav_button.html:9
-#: bookwyrm/templates/snippets/fav_button.html:11
+#: bookwyrm/templates/snippets/fav_button.html:10
+#: bookwyrm/templates/snippets/fav_button.html:12
msgid "Like"
msgstr ""
-#: bookwyrm/templates/snippets/fav_button.html:17
#: bookwyrm/templates/snippets/fav_button.html:18
+#: bookwyrm/templates/snippets/fav_button.html:19
#, fuzzy
#| msgid "Un-like status"
msgid "Un-like"
@@ -2471,6 +2506,13 @@ msgstr "接受"
msgid "No rating"
msgstr "没有评价"
+#: bookwyrm/templates/snippets/form_rate_stars.html:44
+#: bookwyrm/templates/snippets/stars.html:7
+#, python-format
+msgid "%(rating)s star"
+msgid_plural "%(rating)s stars"
+msgstr[0] ""
+
#: bookwyrm/templates/snippets/generated_status/goal.html:1
#, python-format
msgid "set a goal to read %(counter)s book in %(year)s"
@@ -2522,17 +2564,17 @@ msgstr "发布到消息流中"
msgid "Set goal"
msgstr "设置目标"
-#: bookwyrm/templates/snippets/goal_progress.html:7
+#: bookwyrm/templates/snippets/goal_progress.html:9
#, python-format
msgid "%(percent)s%% complete!"
msgstr "完成了 %(percent)s%% !"
-#: bookwyrm/templates/snippets/goal_progress.html:10
+#: bookwyrm/templates/snippets/goal_progress.html:12
#, python-format
msgid "You've read %(read_count)s of %(goal_count)s books."
msgstr "你已经阅读了 %(goal_count)s 本书中的 %(read_count)s 本。"
-#: bookwyrm/templates/snippets/goal_progress.html:12
+#: 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 已经阅读了 %(goal_count)s 本书中的 %(read_count)s 本。"
@@ -2641,26 +2683,6 @@ msgstr "注册"
msgid "Report"
msgstr "报告"
-#: bookwyrm/templates/snippets/rss_title.html:5
-#: bookwyrm/templates/snippets/status/status_header.html:35
-msgid "rated"
-msgstr "评价了"
-
-#: bookwyrm/templates/snippets/rss_title.html:7
-#: bookwyrm/templates/snippets/status/status_header.html:37
-msgid "reviewed"
-msgstr "写了书评给"
-
-#: bookwyrm/templates/snippets/rss_title.html:9
-#: bookwyrm/templates/snippets/status/status_header.html:39
-msgid "commented on"
-msgstr "评论了"
-
-#: bookwyrm/templates/snippets/rss_title.html:11
-#: bookwyrm/templates/snippets/status/status_header.html:41
-msgid "quoted"
-msgstr "引用了"
-
#: bookwyrm/templates/snippets/search_result_text.html:36
msgid "Import book"
msgstr "导入书目"
@@ -2832,7 +2854,7 @@ msgstr "编辑书架"
msgid "Update shelf"
msgstr "更新书架"
-#: bookwyrm/templates/user/shelf/shelf.html:25 bookwyrm/views/shelf.py:51
+#: bookwyrm/templates/user/shelf/shelf.html:25 bookwyrm/views/shelf.py:56
msgid "All books"
msgstr "所有书目"
@@ -2840,30 +2862,30 @@ msgstr "所有书目"
msgid "Create shelf"
msgstr "创建书架"
-#: bookwyrm/templates/user/shelf/shelf.html:61
+#: bookwyrm/templates/user/shelf/shelf.html:62
msgid "Edit shelf"
msgstr "编辑书架"
-#: bookwyrm/templates/user/shelf/shelf.html:80
-#: bookwyrm/templates/user/shelf/shelf.html:104
+#: bookwyrm/templates/user/shelf/shelf.html:81
+#: bookwyrm/templates/user/shelf/shelf.html:105
msgid "Shelved"
msgstr "上架时间"
-#: bookwyrm/templates/user/shelf/shelf.html:81
-#: bookwyrm/templates/user/shelf/shelf.html:108
+#: bookwyrm/templates/user/shelf/shelf.html:82
+#: bookwyrm/templates/user/shelf/shelf.html:109
msgid "Started"
msgstr "开始时间"
-#: bookwyrm/templates/user/shelf/shelf.html:82
-#: bookwyrm/templates/user/shelf/shelf.html:111
+#: bookwyrm/templates/user/shelf/shelf.html:83
+#: bookwyrm/templates/user/shelf/shelf.html:112
msgid "Finished"
msgstr "完成时间"
-#: bookwyrm/templates/user/shelf/shelf.html:137
+#: bookwyrm/templates/user/shelf/shelf.html:138
msgid "This shelf is empty."
msgstr "此书架是空的。"
-#: bookwyrm/templates/user/shelf/shelf.html:143
+#: bookwyrm/templates/user/shelf/shelf.html:144
msgid "Delete shelf"
msgstr "删除书架"
@@ -2924,8 +2946,8 @@ msgstr "回到报告"
#: bookwyrm/templates/user_admin/user_admin.html:7
#, python-format
-msgid "Users: %(server_name)s"
-msgstr "用户: %(server_name)s"
+msgid "Users: %(instance_name)s"
+msgstr "用户: %(instance_name)s"
#: bookwyrm/templates/user_admin/user_admin.html:22
#: bookwyrm/templates/user_admin/username_filter.html:5
@@ -2941,7 +2963,7 @@ msgid "Last Active"
msgstr "最后或缺"
#: bookwyrm/templates/user_admin/user_admin.html:38
-msgid "Remote server"
+msgid "Remote instance"
msgstr "移除服务器"
#: bookwyrm/templates/user_admin/user_admin.html:47
@@ -2989,6 +3011,10 @@ msgstr ""
msgid "Access level:"
msgstr ""
+#: bookwyrm/templates/widgets/clearable_file_input_with_warning.html:3
+msgid "File exceeds maximum size: 10MB"
+msgstr ""
+
#: bookwyrm/views/import_data.py:67
#, fuzzy
#| msgid "Email address:"
@@ -3004,6 +3030,23 @@ msgstr "没有找到使用该邮箱的用户。"
msgid "A password reset link sent to %s"
msgstr "密码重置连接已发送给 %s"
+#~ msgid "Reports: %(server_name)s"
+#~ msgstr "报告: %(server_name)s"
+
+#~ msgid "Federated Servers"
+#~ msgstr "互联的服务器"
+
+#~ msgid "Server name"
+#~ msgstr "服务器名称"
+
+#, fuzzy
+#~| msgid "Add cover"
+#~ msgid "Add server"
+#~ msgstr "添加封面"
+
+#~ msgid "Remote server"
+#~ msgstr "移除服务器"
+
#, fuzzy
#~| msgid "BookWyrm users"
#~ msgid "BookWyrm\\"
@@ -3054,12 +3097,12 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "Enter a number."
#~ msgstr "系列编号:"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "A user with this email already exists."
#~ msgid "%(model_name)s with this %(field_labels)s already exists."
#~ msgstr "已经存在使用该邮箱的用户。"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "%(value)s is not a valid remote_id"
#~ msgid "Value %(value)r is not a valid choice."
#~ msgstr "%(value)s 不是有效的 remote_id"
@@ -3069,7 +3112,7 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "This field cannot be null."
#~ msgstr "此书架是空的。"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "A user with this email already exists."
#~ msgid "%(model_name)s with this %(field_label)s already exists."
#~ msgstr "已经存在使用该邮箱的用户。"
@@ -3119,7 +3162,7 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "Positive small integer"
#~ msgstr "无有效的邀请"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(value)s” is not a valid UUID."
#~ msgstr "%(value)s 不是有效的用户名"
@@ -3134,12 +3177,12 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "One-to-one relationship"
#~ msgstr "关系"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "Relationships"
#~ msgid "%(from)s-%(to)s relationship"
#~ msgstr "关系"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "Relationships"
#~ msgid "%(from)s-%(to)s relationships"
#~ msgstr "关系"
@@ -3199,7 +3242,7 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "Order"
#~ msgstr "排列顺序"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(pk)s” is not a valid value."
#~ msgstr "%(value)s 不是有效的用户名"
@@ -3263,7 +3306,7 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "This is not a valid IPv6 address."
#~ msgstr "邮箱地址:"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "No books found matching the query \"%(query)s\""
#~ msgid "No %(verbose_name)s found matching the query"
#~ msgstr "没有符合 \"%(query)s\" 请求的书目"
@@ -3282,11 +3325,9 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "Matching Users"
#~ msgstr "匹配的用户"
-#, python-format
#~ msgid "Set a reading goal for %(year)s"
#~ msgstr "设定 %(year)s 的阅读目标"
-#, python-format
#~ msgid "by %(author)s"
#~ msgstr "由 %(author)s 所著"
@@ -3299,15 +3340,12 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "Date"
#~ msgstr "日期"
-#, python-format
#~ msgid "replied to %(username)s's review"
#~ msgstr "回复了 %(username)s 的 书评"
-#, python-format
#~ msgid "replied to %(username)s's comment"
#~ msgstr "恢复了 %(username)s 的 评论"
-#, python-format
#~ msgid "replied to %(username)s's quote"
#~ msgstr "回复了 %(username)s 的 引用"
@@ -3317,7 +3355,6 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "Add tag"
#~ msgstr "添加标签"
-#, python-format
#~ msgid "Books tagged \"%(tag.name)s\""
#~ msgstr "标有 \"%(tag.name)s\" 标签的书"
diff --git a/requirements.txt b/requirements.txt
index c475102a6..393c19966 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,5 @@
celery==4.4.2
-Django==3.2.1
+Django==3.2.4
django-model-utils==4.0.0
environs==7.2.0
flower==0.9.4
diff --git a/yarn.lock b/yarn.lock
index 21730a685..7686fd113 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2042,9 +2042,9 @@ to-regex-range@^5.0.1:
is-number "^7.0.0"
trim-newlines@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30"
- integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144"
+ integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==
trough@^1.0.0:
version "1.0.5"