From e138a585d18f31a9673bad5f30d6168edbde7892 Mon Sep 17 00:00:00 2001 From: Jason Kelly Date: Sun, 23 May 2021 14:07:45 +0800 Subject: [PATCH 01/94] Setting `client_max_body_size` to 10m. - Removed commented-out nginx config for clarity. --- nginx/development | 2 ++ nginx/production | 59 +-------------------------------------------- nginx/server_config | 1 + 3 files changed, 4 insertions(+), 58 deletions(-) create mode 100644 nginx/server_config diff --git a/nginx/development b/nginx/development index d38982870..cdc90df1f 100644 --- a/nginx/development +++ b/nginx/development @@ -5,6 +5,8 @@ upstream web { server { listen 80; + include /etc/nginx/conf.d/server_config; + location / { proxy_pass http://web; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; diff --git a/nginx/production b/nginx/production index c5d83cbf6..95225c26b 100644 --- a/nginx/production +++ b/nginx/production @@ -6,67 +6,10 @@ server { listen [::]:80; listen 80; - server_name your-domain.com www.your-domain.com; + include /etc/nginx/conf.d/server_config; location ~ /.well-known/acme-challenge { allow all; root /var/www/certbot; } - -# # redirect http to https -# return 301 https://your-domain.com$request_uri; -# } -# -# server { -# listen [::]:443 ssl http2; -# listen 443 ssl http2; -# -# server_name your-domain.com; -# -# # SSL code -# ssl_certificate /etc/nginx/ssl/live/your-domain.com/fullchain.pem; -# ssl_certificate_key /etc/nginx/ssl/live/your-domain.com/privkey.pem; -# -# location ~ /.well-known/acme-challenge { -# allow all; -# root /var/www/certbot; -# } -# -# location / { -# proxy_pass http://web; -# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; -# proxy_set_header Host $host; -# proxy_redirect off; -# } -# -# location /images/ { -# alias /app/images/; -# } -# -# location /static/ { -# alias /app/static/; -# } } - -# Reverse-Proxy server -# server { -# listen [::]:8001; -# listen 8001; - -# server_name your-domain.com www.your-domain.com; - -# location / { -# proxy_pass http://web; -# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; -# proxy_set_header Host $host; -# proxy_redirect off; -# } - -# location /images/ { -# alias /app/images/; -# } - -# location /static/ { -# alias /app/static/; -# } -# } diff --git a/nginx/server_config b/nginx/server_config new file mode 100644 index 000000000..c9aad8e4a --- /dev/null +++ b/nginx/server_config @@ -0,0 +1 @@ +client_max_body_size 10m; From c9617c4bd372c26f4ed8b015ae70e64673752bdb Mon Sep 17 00:00:00 2001 From: Jason Kelly Date: Sun, 23 May 2021 14:09:13 +0800 Subject: [PATCH 02/94] Added `EMAIL_BACKEND` to env settings to be able to use console backend in local dev. --- bookwyrm/settings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index d694e33fd..b689a6a2a 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -21,6 +21,7 @@ CELERY_TASK_SERIALIZER = "json" CELERY_RESULT_SERIALIZER = "json" # email +EMAIL_BACKEND = env("EMAIL_BACKEND", "django.core.mail.backends.smtp.EmailBackend") EMAIL_HOST = env("EMAIL_HOST") EMAIL_PORT = env("EMAIL_PORT", 587) EMAIL_HOST_USER = env("EMAIL_HOST_USER") From 6e655cb0e0fdf0d52681d12ee96e14d11d21fcc8 Mon Sep 17 00:00:00 2001 From: Jason Kelly Date: Sun, 23 May 2021 14:12:00 +0800 Subject: [PATCH 03/94] Added new widget to alert if a file is set at larger than 10 MB. - Updated default widget to use template that adds a notification box. - Added JS to add onchange & load events to look at the value in the input and trigger the notification & disable the form submits. --- bookwyrm/models/fields.py | 15 ++++++++ bookwyrm/static/js/bookwyrm.js | 35 +++++++++++++++++++ .../clearable_file_input_with_warning.html | 3 ++ 3 files changed, 53 insertions(+) create mode 100644 bookwyrm/templates/widgets/clearable_file_input_with_warning.html diff --git a/bookwyrm/models/fields.py b/bookwyrm/models/fields.py index 123b3efa4..d4d94aa24 100644 --- a/bookwyrm/models/fields.py +++ b/bookwyrm/models/fields.py @@ -9,6 +9,7 @@ from django.contrib.postgres.fields import ArrayField as DjangoArrayField from django.core.exceptions import ValidationError from django.core.files.base import ContentFile from django.db import models +from django.forms import ClearableFileInput, ImageField from django.utils import timezone from django.utils.translation import gettext_lazy as _ from bookwyrm import activitypub @@ -332,6 +333,14 @@ class TagField(ManyToManyField): return items +class ClearableFileInputWithWarning(ClearableFileInput): + template_name = 'widgets/clearable_file_input_with_warning.html' + + +class CustomImageField(ImageField): + widget = ClearableFileInputWithWarning + + def image_serializer(value, alt): """helper for serializing images""" if value and hasattr(value, "url"): @@ -395,6 +404,12 @@ class ImageField(ActivitypubFieldMixin, models.ImageField): image_content = ContentFile(response.content) return [image_name, image_content] + def formfield(self, **kwargs): + return super().formfield(**{ + 'form_class': CustomImageField, + **kwargs, + }) + class DateTimeField(ActivitypubFieldMixin, models.DateTimeField): """activitypub-aware datetime field""" diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js index 3659a20e4..2c43d7384 100644 --- a/bookwyrm/static/js/bookwyrm.js +++ b/bookwyrm/static/js/bookwyrm.js @@ -3,6 +3,7 @@ let BookWyrm = new class { constructor() { + this.MAX_FILE_SIZE = 10000000 this.initOnDOMLoaded(); this.initReccuringTasks(); this.initEventListeners(); @@ -32,15 +33,26 @@ let BookWyrm = new class { 'click', this.back) ); + + document.querySelectorAll('input[type="file"]') + .forEach(node => node.addEventListener( + 'change', + this.disableIfTooLarge.bind(this) + )); } /** * Execute code once the DOM is loaded. */ initOnDOMLoaded() { + const bookwyrm = this + window.addEventListener('DOMContentLoaded', function() { document.querySelectorAll('.tab-group') .forEach(tabs => new TabGroup(tabs)); + document.querySelectorAll('input[type="file"]').forEach( + bookwyrm.disableIfTooLarge.bind(bookwyrm) + ) }); } @@ -284,4 +296,27 @@ let BookWyrm = new class { node.classList.remove(classname); } } + + disableIfTooLarge(eventOrElement) { + const { addRemoveClass, MAX_FILE_SIZE } = this + const element = eventOrElement.currentTarget || eventOrElement + + const submits = element.form.querySelectorAll('[type="submit"]') + const warns = element.parentElement.querySelectorAll('.file-too-big') + const isTooBig = element.files && + element.files[0] && + element.files[0].size > MAX_FILE_SIZE + + if (isTooBig) { + submits.forEach(submitter => submitter.disabled = true) + warns.forEach( + sib => addRemoveClass(sib, 'is-hidden', false) + ) + } else { + submits.forEach(submitter => submitter.disabled = false) + warns.forEach( + sib => addRemoveClass(sib, 'is-hidden', true) + ) + } + } } diff --git a/bookwyrm/templates/widgets/clearable_file_input_with_warning.html b/bookwyrm/templates/widgets/clearable_file_input_with_warning.html new file mode 100644 index 000000000..700e22f9b --- /dev/null +++ b/bookwyrm/templates/widgets/clearable_file_input_with_warning.html @@ -0,0 +1,3 @@ +{% load i18n %} +{% include "django/forms/widgets/clearable_file_input.html" %} + From 318e0bf508ac9ccc2c0076763d6eb28bc0a5ab0b Mon Sep 17 00:00:00 2001 From: Jason Kelly Date: Sun, 23 May 2021 14:27:02 +0800 Subject: [PATCH 04/94] Fixing nginx-config misunderstanding. --- nginx/development | 4 ++-- nginx/production | 61 ++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 62 insertions(+), 3 deletions(-) diff --git a/nginx/development b/nginx/development index cdc90df1f..05b27c2b1 100644 --- a/nginx/development +++ b/nginx/development @@ -1,3 +1,5 @@ +include /etc/nginx/conf.d/server_config; + upstream web { server web:8000; } @@ -5,8 +7,6 @@ upstream web { server { listen 80; - include /etc/nginx/conf.d/server_config; - location / { proxy_pass http://web; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; diff --git a/nginx/production b/nginx/production index 95225c26b..54c84af45 100644 --- a/nginx/production +++ b/nginx/production @@ -1,3 +1,5 @@ +include /etc/nginx/conf.d/server_config; + upstream web { server web:8000; } @@ -6,10 +8,67 @@ server { listen [::]:80; listen 80; - include /etc/nginx/conf.d/server_config; + server_name your-domain.com www.your-domain.com; location ~ /.well-known/acme-challenge { allow all; root /var/www/certbot; } + +# # redirect http to https +# return 301 https://your-domain.com$request_uri; +# } +# +# server { +# listen [::]:443 ssl http2; +# listen 443 ssl http2; +# +# server_name your-domain.com; +# +# # SSL code +# ssl_certificate /etc/nginx/ssl/live/your-domain.com/fullchain.pem; +# ssl_certificate_key /etc/nginx/ssl/live/your-domain.com/privkey.pem; +# +# location ~ /.well-known/acme-challenge { +# allow all; +# root /var/www/certbot; +# } +# +# location / { +# proxy_pass http://web; +# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +# proxy_set_header Host $host; +# proxy_redirect off; +# } +# +# location /images/ { +# alias /app/images/; +# } +# +# location /static/ { +# alias /app/static/; +# } } + +# Reverse-Proxy server +# server { +# listen [::]:8001; +# listen 8001; + +# server_name your-domain.com www.your-domain.com; + +# location / { +# proxy_pass http://web; +# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +# proxy_set_header Host $host; +# proxy_redirect off; +# } + +# location /images/ { +# alias /app/images/; +# } + +# location /static/ { +# alias /app/static/; +# } +# } From 7eb5f3b026cd11e2a981db294ae31770a36cc192 Mon Sep 17 00:00:00 2001 From: Jason Kelly Date: Sun, 23 May 2021 14:31:22 +0800 Subject: [PATCH 05/94] Making magic number more readable --- bookwyrm/static/js/bookwyrm.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js index 2c43d7384..598dd93ac 100644 --- a/bookwyrm/static/js/bookwyrm.js +++ b/bookwyrm/static/js/bookwyrm.js @@ -3,7 +3,7 @@ let BookWyrm = new class { constructor() { - this.MAX_FILE_SIZE = 10000000 + this.MAX_FILE_SIZE_BYTES = 10 * 1000000 this.initOnDOMLoaded(); this.initReccuringTasks(); this.initEventListeners(); @@ -298,14 +298,14 @@ let BookWyrm = new class { } disableIfTooLarge(eventOrElement) { - const { addRemoveClass, MAX_FILE_SIZE } = this + const { addRemoveClass, MAX_FILE_SIZE_BYTES } = this const element = eventOrElement.currentTarget || eventOrElement const submits = element.form.querySelectorAll('[type="submit"]') const warns = element.parentElement.querySelectorAll('.file-too-big') const isTooBig = element.files && element.files[0] && - element.files[0].size > MAX_FILE_SIZE + element.files[0].size > MAX_FILE_SIZE_BYTES if (isTooBig) { submits.forEach(submitter => submitter.disabled = true) From 179560a009b94ab6873062e82735e866d2121e10 Mon Sep 17 00:00:00 2001 From: Joachim Date: Sun, 23 May 2021 14:56:47 +0200 Subject: [PATCH 06/94] French translation update This PR replaces #935 --- locale/fr_FR/LC_MESSAGES/django.mo | Bin 40772 -> 45420 bytes locale/fr_FR/LC_MESSAGES/django.po | 438 +++++++++++------------------ 2 files changed, 164 insertions(+), 274 deletions(-) diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index 8d377f42069c249539b29f61221b14d4910a80a7..5297cd7c71b91d2b03dd89fbba6c605cee474c7d 100644 GIT binary patch delta 17007 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 P$6Fc=8LtDXIYEu52u zHJ#rIJH_(6JVN%V@&~d#ox1u}(DT$S%(do4{cqQ5-*}b>qr8=)zUB7n|I#e{-`kz{ zs%J{$&7A(X?M?Il=-;``TiEgJ7ow^n64X<4-bce!g`GdWAJpb85%onXzgf7XR?{gg z!yEM!pDN$!Eh?(IC#+aFb4%LQS`^PkOP;M84e&7XL5YT(OkW#kvM;;YL_Q`8LRp!= zsv`c9x@|PXhYtJyh4jYL0>rR z4Md!8muyR^y4BK2RaM za)5tOg5xc1Qh$m!-dj<8FI7fL?F3$db|C7!6=<8}KE7n<^6^{zefXk=RaY04*hMPxk&3RYoEBM@kQskm z!d8wR9lO*md7=Ry4}oqupWf0k-A6qOzHsH&(eDzPL<6=PMvbQT7tfRP&Wf!6>xs&w zm7av5EI9rF))jvCVfAj{gXew=iNx5y-_=? zUYX=R++kf?b0 zarE+ej6W(-Zay3N+~@Jknqh<3aV72~?bW^FZ;3K(BKIvvN4zz?OL!W{7IU@Vx13Hg zonC97ZDXo=(&DwAQg0w?`~C4aJ72CXO0)x&6W8rZsFlyxq}ciFl2vuiPRZGNiN{$O zyE|)~uc(BZ?-^Y%i$^N{N!6#6FHcnkH{NGWw@bYt?q2v@F1`brl#i|D4s~I9r1klc zp30ZW?^_u1hE~N}zFPiGQhs!y-^Wuh*_Y`&b!prB+mABB@+sEvA`8=`Z?s>C9UZ2Ho=dmC*A&Z}>tV-`Ets=q@ z))caY!Q+1CL)@nbkH5QL%=WbiK*Y-}h+pWA>a4r&(=>WE&r!7crB%H3^?!e)W(Bz{ z%%(i=hd}Rbol?vXfp|y?w#`hiEAQRbs)qCU_PPb}ElW(!?oHm6?rU2=2K2sbXU)

1^H6F460$d}zn>i84rs}XL%%6JIN;%SV-uP_F0 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

Td=b_rzZ@&#GpI9i2(|R5O#TPd3jH;m^{-AM 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 diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index 577614544..325d7fbfa 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-20 14:40-0700\n" +"POT-Creation-Date: 2021-05-23 10:45+0000\n" "PO-Revision-Date: 2021-04-05 12:44+0100\n" "Last-Translator: Fabien Basmaison \n" "Language-Team: Mouse Reeve \n" @@ -49,13 +49,11 @@ msgstr "Sans limite" #: bookwyrm/forms.py:299 msgid "List Order" -msgstr "" +msgstr "Ordre de la liste" #: bookwyrm/forms.py:300 -#, fuzzy -#| msgid "Title" msgid "Book Title" -msgstr "Titre" +msgstr "Titre du livre" #: bookwyrm/forms.py:301 bookwyrm/templates/snippets/create_status_form.html:34 #: bookwyrm/templates/user/shelf/shelf.html:84 @@ -65,19 +63,15 @@ msgstr "Note" #: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:101 msgid "Sort By" -msgstr "" +msgstr "Trier par" #: bookwyrm/forms.py:307 -#, fuzzy -#| msgid "Sorted ascending" msgid "Ascending" -msgstr "Trié par ordre croissant" +msgstr "Ordre croissant" #: bookwyrm/forms.py:308 -#, fuzzy -#| msgid "Sorted ascending" msgid "Descending" -msgstr "Trié par ordre croissant" +msgstr "Ordre décroissant" #: bookwyrm/models/fields.py:24 #, python-format @@ -89,7 +83,7 @@ msgstr "%(value)s n’est pas une remote_id valide." msgid "%(value)s is not a valid username" msgstr "%(value)s n’est pas un nom de compte valide." -#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:155 +#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:157 msgid "username" msgstr "nom du compte :" @@ -145,15 +139,15 @@ msgstr "Modifier l’auteur ou autrice" #: bookwyrm/templates/author/author.html:32 #: bookwyrm/templates/author/edit_author.html:38 msgid "Aliases:" -msgstr "" +msgstr "Pseudonymes :" #: bookwyrm/templates/author/author.html:38 msgid "Born:" -msgstr "" +msgstr "Naissance :" #: bookwyrm/templates/author/author.html:44 msgid "Died:" -msgstr "" +msgstr "Décès :" #: bookwyrm/templates/author/author.html:51 msgid "Wikipedia" @@ -166,10 +160,8 @@ msgstr "Voir sur OpenLibrary" #: bookwyrm/templates/author/author.html:60 #: bookwyrm/templates/book/book.html:81 -#, fuzzy -#| msgid "View on OpenLibrary" msgid "View on Inventaire" -msgstr "Voir sur OpenLibrary" +msgstr "Voir sur Inventaire" #: bookwyrm/templates/author/author.html:74 #, python-format @@ -211,10 +203,8 @@ msgstr "Nom :" #: bookwyrm/templates/book/edit_book.html:132 #: bookwyrm/templates/book/edit_book.html:141 #: bookwyrm/templates/book/edit_book.html:178 -#, fuzzy -#| msgid "Separate multiple publishers with commas." msgid "Separate multiple values with commas." -msgstr "Séparez plusieurs éditeurs par une virgule." +msgstr "Séparez plusieurs valeurs par une virgule." #: bookwyrm/templates/author/edit_author.html:46 msgid "Bio:" @@ -242,10 +232,8 @@ msgstr "Clé Openlibrary :" #: bookwyrm/templates/author/edit_author.html:79 #: bookwyrm/templates/book/edit_book.html:243 -#, fuzzy -#| msgid "View on OpenLibrary" msgid "Inventaire ID:" -msgstr "Voir sur OpenLibrary" +msgstr "Identifiant Inventaire :" #: bookwyrm/templates/author/edit_author.html:84 msgid "Librarything key:" @@ -260,7 +248,7 @@ msgstr "Clé Goodreads :" #: 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 @@ -356,28 +344,20 @@ msgid "You don't have any reading activity for this book." msgstr "Vous n’avez aucune activité de lecture pour ce livre" #: bookwyrm/templates/book/book.html:200 -#, fuzzy -#| msgid "Review" msgid "Reviews" -msgstr "Critique" +msgstr "Critiques" #: bookwyrm/templates/book/book.html:205 -#, fuzzy -#| msgid "Your shelves" msgid "Your reviews" -msgstr "Vos étagères" +msgstr "Vos critiques" #: bookwyrm/templates/book/book.html:211 -#, fuzzy -#| msgid "Your Account" msgid "Your comments" -msgstr "Votre compte" +msgstr "Vos commentaires" #: bookwyrm/templates/book/book.html:217 -#, fuzzy -#| msgid "Your books" msgid "Your quotes" -msgstr "Vos livres" +msgstr "Vos citations" #: bookwyrm/templates/book/book.html:253 msgid "Subjects" @@ -498,10 +478,8 @@ msgid "Series number:" msgstr "Numéro dans la série :" #: bookwyrm/templates/book/edit_book.html:130 -#, fuzzy -#| msgid "Language:" msgid "Languages:" -msgstr "Langue :" +msgstr "Langues :" #: bookwyrm/templates/book/edit_book.html:139 msgid "Publisher:" @@ -563,10 +541,8 @@ msgid "ISBN 10:" msgstr "ISBN 10 :" #: bookwyrm/templates/book/edit_book.html:238 -#, fuzzy -#| msgid "Openlibrary key:" msgid "Openlibrary ID:" -msgstr "Clé Openlibrary :" +msgstr "Identifiant Openlibrary :" #: bookwyrm/templates/book/editions.html:4 #, python-format @@ -605,7 +581,7 @@ msgstr "%(pages)s pages" #: bookwyrm/templates/book/publisher_info.html:38 #, python-format msgid "%(languages)s language" -msgstr "%(languages)s langues" +msgstr "Langue : %(languages)s" #: bookwyrm/templates/book/publisher_info.html:64 #, python-format @@ -688,8 +664,8 @@ msgstr "Actif récemment" #: bookwyrm/templates/directory/user_card.html:33 msgid "follower you follow" msgid_plural "followers you follow" -msgstr[0] "compte auquel vous êtes abonné(e)" -msgstr[1] "comptes auxquels vous êtes abonné(e)" +msgstr[0] "compte que vous suivez" +msgstr[1] "comptes que vous suivez" #: bookwyrm/templates/directory/user_card.html:40 msgid "book on your shelves" @@ -946,8 +922,8 @@ msgstr "Défi lecture pour %(year)s" #, python-format msgid "%(mutuals)s follower you follow" msgid_plural "%(mutuals)s followers you follow" -msgstr[0] "%(mutuals)s abonnement auxquel vous êtes abonné(e)" -msgstr[1] "%(mutuals)s abonnements auxquels vous êtes abonné(e)" +msgstr[0] "%(mutuals)s abonné(e) que vous suivez" +msgstr[1] "%(mutuals)s abonné(e)s que vous suivez" #: bookwyrm/templates/feed/suggested_users.html:19 #, python-format @@ -1014,7 +990,7 @@ msgstr "Enregistrer & continuer" #: bookwyrm/templates/get_started/layout.html:14 #, python-format msgid "Welcome to %(site_name)s!" -msgstr "Bienvenu(e) sur %(site_name)s !" +msgstr "Bienvenue sur %(site_name)s !" #: bookwyrm/templates/get_started/layout.html:16 msgid "These are some first steps to get you started." @@ -1278,49 +1254,47 @@ msgstr "Se déconnecter" msgid "Notifications" msgstr "Notifications" -#: bookwyrm/templates/layout.html:154 bookwyrm/templates/layout.html:158 +#: bookwyrm/templates/layout.html:156 bookwyrm/templates/layout.html:160 #: bookwyrm/templates/login.html:17 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" msgstr "Nom du compte :" -#: bookwyrm/templates/layout.html:159 +#: bookwyrm/templates/layout.html:161 msgid "password" msgstr "Mot de passe" -#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:36 +#: bookwyrm/templates/layout.html:162 bookwyrm/templates/login.html:36 msgid "Forgot your password?" msgstr "Mot de passe oublié ?" -#: bookwyrm/templates/layout.html:163 bookwyrm/templates/login.html:10 +#: bookwyrm/templates/layout.html:165 bookwyrm/templates/login.html:10 #: bookwyrm/templates/login.html:33 msgid "Log in" msgstr "Se connecter" -#: bookwyrm/templates/layout.html:171 +#: bookwyrm/templates/layout.html:173 msgid "Join" msgstr "Rejoindre" -#: bookwyrm/templates/layout.html:206 +#: bookwyrm/templates/layout.html:211 msgid "About this server" msgstr "À propos de ce serveur" -#: bookwyrm/templates/layout.html:210 +#: bookwyrm/templates/layout.html:215 msgid "Contact site admin" msgstr "Contacter l’administrateur du site" -#: bookwyrm/templates/layout.html:214 -#, fuzzy -#| msgid "List curation:" +#: bookwyrm/templates/layout.html:219 msgid "Documentation" -msgstr "Modération de la liste :" +msgstr "Documentation" -#: bookwyrm/templates/layout.html:221 +#: bookwyrm/templates/layout.html:226 #, python-format msgid "Support %(site_name)s on %(support_title)s" msgstr "Soutenez %(site_name)s avec %(support_title)s" -#: bookwyrm/templates/layout.html:225 +#: bookwyrm/templates/layout.html:230 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." @@ -1378,7 +1352,7 @@ msgstr "Fermée" #: bookwyrm/templates/lists/form.html:22 msgid "Only you can add and remove books to this list" -msgstr "Vous seul(e) pouvez ajouter ou retirer des livres dans cette liste" +msgstr "Vous seulement pouvez ajouter ou retirer des livres dans cette liste" #: bookwyrm/templates/lists/form.html:26 msgid "Curated" @@ -1401,34 +1375,28 @@ msgstr "N’importe qui peut suggérer des livres" #: bookwyrm/templates/lists/list.html:20 msgid "You successfully suggested a book for this list!" -msgstr "" +msgstr "Vous avez suggéré un livre à cette liste !" #: bookwyrm/templates/lists/list.html:22 -#, fuzzy -#| msgid "Anyone can add books to this list" msgid "You successfully added a book to this list!" -msgstr "N’importe qui peut suggérer des livres" +msgstr "Vous avez ajouté un livre à cette liste !" #: bookwyrm/templates/lists/list.html:28 msgid "This list is currently empty" -msgstr "Cette liste est vide actuellement" +msgstr "Cette liste est actuellement vide" #: bookwyrm/templates/lists/list.html:65 #, python-format msgid "Added by %(username)s" -msgstr "Ajoutée par %(username)s" +msgstr "Ajouté par %(username)s" #: bookwyrm/templates/lists/list.html:77 -#, fuzzy -#| msgid "Sent" msgid "Set" -msgstr "Envoyé(e)s" +msgstr "Régler" #: bookwyrm/templates/lists/list.html:80 -#, fuzzy -#| msgid "List curation:" msgid "List position" -msgstr "Modération de la liste :" +msgstr "Position" #: bookwyrm/templates/lists/list.html:86 #: bookwyrm/templates/snippets/shelf_selector.html:26 @@ -1436,16 +1404,12 @@ msgid "Remove" msgstr "Supprimer" #: bookwyrm/templates/lists/list.html:99 bookwyrm/templates/lists/list.html:111 -#, fuzzy -#| msgid "Your Lists" msgid "Sort List" -msgstr "Vos listes" +msgstr "Ordonner de la liste" #: bookwyrm/templates/lists/list.html:105 -#, fuzzy -#| msgid "Directory" msgid "Direction" -msgstr "Répertoire" +msgstr "Direction" #: bookwyrm/templates/lists/list.html:116 msgid "Add Books" @@ -1457,7 +1421,7 @@ msgstr "Suggérer des livres" #: bookwyrm/templates/lists/list.html:125 msgid "search" -msgstr "Chercher" +msgstr "chercher" #: bookwyrm/templates/lists/list.html:131 msgid "Clear search" @@ -1523,10 +1487,8 @@ msgid "No statuses reported" msgstr "Aucun statut signalé" #: bookwyrm/templates/moderation/report.html:53 -#, fuzzy -#| msgid "Statuses has been deleted" msgid "Status has been deleted" -msgstr "Les statuts ont été supprimés" +msgstr "Le statut a été supprimé" #: bookwyrm/templates/moderation/report_modal.html:6 #, python-format @@ -1589,13 +1551,11 @@ msgstr "Supprimer les notifications" #: bookwyrm/templates/notifications.html:25 msgid "All" -msgstr "" +msgstr "Tout" #: bookwyrm/templates/notifications.html:29 -#, fuzzy -#| msgid "More options" msgid "Mentions" -msgstr "Plus d’options" +msgstr "Mentions" #: bookwyrm/templates/notifications.html:70 #, python-format @@ -1659,7 +1619,7 @@ msgstr "a répondu à votre %(book_title)s t msgstr " a suggégré l’ajout de %(book_title)s à votre liste « %(list_name)s »" #: bookwyrm/templates/notifications.html:128 -#, fuzzy, python-format -#| msgid "Your import completed." +#, python-format msgid "Your import completed." -msgstr "Votre importation est terminée." +msgstr "Votre importation est terminée." #: bookwyrm/templates/notifications.html:131 #, python-format @@ -1774,31 +1733,45 @@ msgstr "Profil" msgid "Relationships" msgstr "Relations" +#: bookwyrm/templates/rss/title.html:5 +#: bookwyrm/templates/snippets/status/status_header.html:35 +msgid "rated" +msgstr "a noté" + +#: bookwyrm/templates/rss/title.html:7 +#: bookwyrm/templates/snippets/status/status_header.html:37 +msgid "reviewed" +msgstr "a écrit une critique de" + +#: bookwyrm/templates/rss/title.html:9 +#: bookwyrm/templates/snippets/status/status_header.html:39 +msgid "commented on" +msgstr "a commenté" + +#: bookwyrm/templates/rss/title.html:11 +#: bookwyrm/templates/snippets/status/status_header.html:41 +msgid "quoted" +msgstr "a cité" + #: bookwyrm/templates/search/book.html:64 -#, fuzzy -#| msgid "Show results from other catalogues" msgid "Load results from other catalogues" -msgstr "Montrer les résultats d’autres catalogues" +msgstr "Charger les résultats d’autres catalogues" #: bookwyrm/templates/search/book.html:68 msgid "Manually add book" -msgstr "" +msgstr "Ajouter un livre manuellement" #: bookwyrm/templates/search/book.html:73 msgid "Log in to import or add books." -msgstr "" +msgstr "Authentifiez-vous pour importer ou ajouter des livres." #: bookwyrm/templates/search/layout.html:16 -#, fuzzy -#| msgid "Search for a user" msgid "Search query" -msgstr "Chercher un compte" +msgstr "Requête" #: bookwyrm/templates/search/layout.html:19 -#, fuzzy -#| msgid "Search" msgid "Search type" -msgstr "Chercher" +msgstr "Type de recherche" #: bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 @@ -1815,10 +1788,9 @@ msgid "Users" msgstr "Comptes" #: bookwyrm/templates/search/layout.html:58 -#, fuzzy, python-format -#| msgid "No lists found for \"%(query)s\"" +#, python-format msgid "No results found for \"%(query)s\"" -msgstr "Aucune liste trouvée pour « %(query)s »" +msgstr "Aucun résultat pour « %(query)s »" #: bookwyrm/templates/settings/admin_layout.html:4 msgid "Administration" @@ -1872,23 +1844,18 @@ msgstr "Enregistrement" #: bookwyrm/templates/settings/announcement.html:3 #: bookwyrm/templates/settings/announcement.html:6 -#, fuzzy -#| msgid "Announcements" msgid "Announcement" -msgstr "Annonces" +msgstr "Annonce" #: bookwyrm/templates/settings/announcement.html:7 #: bookwyrm/templates/settings/federated_server.html:13 -#, fuzzy -#| msgid "Back to server list" msgid "Back to list" -msgstr "Retour à la liste des serveurs" +msgstr "Retour à la liste" #: bookwyrm/templates/settings/announcement.html:11 -#, fuzzy -#| msgid "Announcements" +#: bookwyrm/templates/settings/announcement_form.html:6 msgid "Edit Announcement" -msgstr "Annonces" +msgstr "Modifier l’annonce" #: bookwyrm/templates/settings/announcement.html:20 #: bookwyrm/templates/snippets/delete_readthrough_modal.html:15 @@ -1898,64 +1865,48 @@ msgstr "Supprimer" #: bookwyrm/templates/settings/announcement.html:35 msgid "Visible:" -msgstr "" +msgstr "Visible :" #: bookwyrm/templates/settings/announcement.html:38 msgid "True" -msgstr "" +msgstr "Vrai" #: bookwyrm/templates/settings/announcement.html:40 msgid "False" -msgstr "" +msgstr "Faux" #: bookwyrm/templates/settings/announcement.html:47 -#, fuzzy -#| msgid "Birth date:" msgid "Start date:" -msgstr "Date de naissance :" +msgstr "Date de début :" #: bookwyrm/templates/settings/announcement.html:54 -#, fuzzy -#| msgid "Birth date:" msgid "End date:" -msgstr "Date de naissance :" +msgstr "Date de fin :" #: bookwyrm/templates/settings/announcement.html:60 -#, fuzzy -#| msgid "Active" msgid "Active:" -msgstr "Actif" +msgstr "Actif :" -#: bookwyrm/templates/settings/announcement_form.html:5 +#: bookwyrm/templates/settings/announcement_form.html:8 #: bookwyrm/templates/settings/announcements.html:8 -#, fuzzy -#| msgid "Announcements" msgid "Create Announcement" -msgstr "Annonces" +msgstr "Créer une annonce" #: bookwyrm/templates/settings/announcements.html:22 -#, fuzzy -#| msgid "Date Added" msgid "Date added" msgstr "Date d’ajout" #: bookwyrm/templates/settings/announcements.html:26 -#, fuzzy -#| msgid "reviewed" msgid "Preview" -msgstr "a écrit une critique de" +msgstr "Prévisualisation" #: bookwyrm/templates/settings/announcements.html:30 -#, fuzzy -#| msgid "Started" msgid "Start date" -msgstr "Commencé" +msgstr "Date de début" #: bookwyrm/templates/settings/announcements.html:34 -#, fuzzy -#| msgid "Edit read dates" msgid "End date" -msgstr "Modifier les date de lecture" +msgstr "Date de fin" #: bookwyrm/templates/settings/announcements.html:38 #: bookwyrm/templates/settings/federation.html:30 @@ -1966,16 +1917,12 @@ msgid "Status" msgstr "Statut" #: bookwyrm/templates/settings/announcements.html:48 -#, fuzzy -#| msgid "Inactive" msgid "active" -msgstr "Inactif" +msgstr "active" #: bookwyrm/templates/settings/announcements.html:48 -#, fuzzy -#| msgid "Inactive" msgid "inactive" -msgstr "Inactif" +msgstr "inactive" #: bookwyrm/templates/settings/edit_server.html:3 #: bookwyrm/templates/settings/edit_server.html:6 @@ -1984,10 +1931,8 @@ msgstr "Inactif" #: bookwyrm/templates/settings/federation.html:10 #: bookwyrm/templates/settings/server_blocklist.html:3 #: bookwyrm/templates/settings/server_blocklist.html:20 -#, fuzzy -#| msgid "Add cover" msgid "Add server" -msgstr "Ajouter une couverture" +msgstr "Ajouter un serveur" #: bookwyrm/templates/settings/edit_server.html:7 #: bookwyrm/templates/settings/server_blocklist.html:7 @@ -1996,16 +1941,12 @@ msgstr "Retour à la liste des serveurs" #: bookwyrm/templates/settings/edit_server.html:16 #: bookwyrm/templates/settings/server_blocklist.html:16 -#, fuzzy -#| msgid "Import book" msgid "Import block list" -msgstr "Importer le livre" +msgstr "Importer une liste de blocage" #: bookwyrm/templates/settings/edit_server.html:30 -#, fuzzy -#| msgid "Instance Name:" msgid "Instance:" -msgstr "Nom de l’instance :" +msgstr "Instance :" #: bookwyrm/templates/settings/edit_server.html:37 #: bookwyrm/templates/settings/federated_server.html:31 @@ -2015,10 +1956,8 @@ msgstr "Statut :" #: bookwyrm/templates/settings/edit_server.html:41 #: bookwyrm/templates/settings/federated_server.html:10 -#, fuzzy -#| msgid "Block" msgid "Blocked" -msgstr "Bloquer" +msgstr "Bloqué" #: bookwyrm/templates/settings/edit_server.html:48 #: bookwyrm/templates/settings/federated_server.html:23 @@ -2034,7 +1973,7 @@ msgstr "Description :" #: bookwyrm/templates/settings/edit_server.html:64 msgid "Notes:" -msgstr "" +msgstr "Remarques :" #: bookwyrm/templates/settings/federated_server.html:19 msgid "Details" @@ -2073,13 +2012,11 @@ msgstr "Bloqués par nous :" #: bookwyrm/templates/settings/federated_server.html:82 #: bookwyrm/templates/user_admin/user_info.html:39 msgid "Notes" -msgstr "" +msgstr "Remarques" #: bookwyrm/templates/settings/federated_server.html:85 -#, fuzzy -#| msgid "Edit Book" msgid "Edit" -msgstr "Modifier le livre" +msgstr "Modifier" #: bookwyrm/templates/settings/federated_server.html:105 #: bookwyrm/templates/user_admin/user_moderation_actions.html:3 @@ -2093,7 +2030,7 @@ msgstr "Bloquer" #: bookwyrm/templates/settings/federated_server.html:110 msgid "All users from this instance will be deactivated." -msgstr "" +msgstr "Tous les comptes de cette instance seront désactivés." #: bookwyrm/templates/settings/federated_server.html:115 #: bookwyrm/templates/snippets/block_button.html:10 @@ -2102,7 +2039,7 @@ msgstr "Débloquer" #: bookwyrm/templates/settings/federated_server.html:116 msgid "All users from this instance will be re-activated." -msgstr "" +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 @@ -2224,25 +2161,21 @@ msgid "No active invites" msgstr "Aucune invitation active" #: bookwyrm/templates/settings/server_blocklist.html:6 -#, fuzzy -#| msgid "Import Books" msgid "Import Blocklist" -msgstr "Importer des livres" +msgstr "Importer une liste de blocage" #: bookwyrm/templates/settings/server_blocklist.html:26 -#: bookwyrm/templates/snippets/goal_progress.html:5 +#: bookwyrm/templates/snippets/goal_progress.html:7 msgid "Success!" msgstr "Bravo !" #: bookwyrm/templates/settings/server_blocklist.html:30 -#, fuzzy -#| msgid "Successfully imported" msgid "Successfully blocked:" -msgstr "Importation réussie" +msgstr "Blocage réussi :" #: bookwyrm/templates/settings/server_blocklist.html:32 msgid "Failed:" -msgstr "" +msgstr "Échec :" #: bookwyrm/templates/settings/site.html:15 msgid "Instance Name:" @@ -2290,7 +2223,7 @@ msgstr "Email de l’administrateur :" #: bookwyrm/templates/settings/site.html:73 msgid "Additional info:" -msgstr "" +msgstr "Infos supplémentaires :" #: bookwyrm/templates/settings/site.html:83 msgid "Allow registration:" @@ -2305,33 +2238,28 @@ msgid "Registration closed text:" msgstr "Texte affiché lorsque les enregistrements sont clos :" #: bookwyrm/templates/snippets/announcement.html:31 -#, fuzzy, python-format -#| msgid "Added by %(username)s" +#, python-format msgid "Posted by %(username)s" -msgstr "Ajoutée par %(username)s" +msgstr "Publié par %(username)s" #: bookwyrm/templates/snippets/book_cover.html:31 msgid "No cover" -msgstr "Aucune couverture" +msgstr "Pas de couverture" #: bookwyrm/templates/snippets/book_titleby.html:4 #, python-format msgid "%(title)s by " msgstr "%(title)s par " -#: bookwyrm/templates/snippets/boost_button.html:9 -#: bookwyrm/templates/snippets/boost_button.html:10 -#, fuzzy -#| msgid "boosted" +#: bookwyrm/templates/snippets/boost_button.html:20 +#: bookwyrm/templates/snippets/boost_button.html:21 msgid "Boost" -msgstr "partagé" +msgstr "Partager" -#: bookwyrm/templates/snippets/boost_button.html:16 -#: bookwyrm/templates/snippets/boost_button.html:17 -#, fuzzy -#| msgid "Un-boost status" +#: bookwyrm/templates/snippets/boost_button.html:33 +#: bookwyrm/templates/snippets/boost_button.html:34 msgid "Un-boost" -msgstr "Annuler le partage du statut" +msgstr "Annuler le partage" #: bookwyrm/templates/snippets/content_warning_field.html:3 msgid "Spoiler alert:" @@ -2369,10 +2297,8 @@ msgid "Reply" msgstr "Répondre" #: bookwyrm/templates/snippets/create_status_form.html:56 -#, fuzzy -#| msgid "Footer Content" msgid "Content" -msgstr "Contenu du pied de page" +msgstr "Contenu" #: bookwyrm/templates/snippets/create_status_form.html:80 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:16 @@ -2421,17 +2347,15 @@ msgstr "Supprimer ces dates de lecture ?" msgid "You are deleting this readthrough and its %(count)s associated progress updates." msgstr "Vous avez supprimé ce résumé et ses %(count)s progressions associées." -#: bookwyrm/templates/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 "" +msgstr "Ajouter aux favoris" -#: bookwyrm/templates/snippets/fav_button.html:17 #: bookwyrm/templates/snippets/fav_button.html:18 -#, fuzzy -#| msgid "Un-like status" +#: bookwyrm/templates/snippets/fav_button.html:19 msgid "Un-like" -msgstr "Retirer le statut des favoris" +msgstr "Retirer des favoris" #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:7 msgid "Show filters" @@ -2470,6 +2394,14 @@ msgstr "Accepter" msgid "No rating" msgstr "Aucune note" +#: 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] "%(rating)s étoile" +msgstr[1] "%(rating)s étoiles" + #: bookwyrm/templates/snippets/generated_status/goal.html:1 #, python-format msgid "set a goal to read %(counter)s book in %(year)s" @@ -2524,17 +2456,17 @@ msgstr "Publier sur le fil d’actualité" msgid "Set goal" msgstr "Valider ce défi" -#: bookwyrm/templates/snippets/goal_progress.html:7 +#: bookwyrm/templates/snippets/goal_progress.html:9 #, python-format msgid "%(percent)s%% complete!" msgstr "%(percent)s%% terminé !" -#: 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 "Vous avez lu %(read_count)s sur %(goal_count)s livres." -#: 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 a lu %(read_count)s sur %(goal_count)s livres." @@ -2581,7 +2513,7 @@ msgstr "Confidentialité du statut" #: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/layout.html:11 msgid "Followers" -msgstr "Abonnements" +msgstr "Abonné(e)s" #: bookwyrm/templates/snippets/rate_action.html:4 msgid "Leave a rating" @@ -2643,26 +2575,6 @@ msgstr "S’enregistrer" msgid "Report" msgstr "Signaler" -#: bookwyrm/templates/snippets/rss_title.html:5 -#: bookwyrm/templates/snippets/status/status_header.html:35 -msgid "rated" -msgstr "a noté" - -#: bookwyrm/templates/snippets/rss_title.html:7 -#: bookwyrm/templates/snippets/status/status_header.html:37 -msgid "reviewed" -msgstr "a écrit une critique de" - -#: bookwyrm/templates/snippets/rss_title.html:9 -#: bookwyrm/templates/snippets/status/status_header.html:39 -msgid "commented on" -msgstr "a commenté" - -#: bookwyrm/templates/snippets/rss_title.html:11 -#: bookwyrm/templates/snippets/status/status_header.html:41 -msgid "quoted" -msgstr "a cité" - #: bookwyrm/templates/snippets/search_result_text.html:36 msgid "Import book" msgstr "Importer le livre" @@ -2744,7 +2656,7 @@ msgstr "Ajouter le statut aux favoris" #: bookwyrm/templates/snippets/status/status.html:10 msgid "boosted" -msgstr "partagé" +msgstr "a partagé" #: bookwyrm/templates/snippets/status/status_header.html:45 #, python-format @@ -2807,12 +2719,12 @@ msgstr "%(username)s n’a pas d’abonné(e)" #: bookwyrm/templates/user/relationships/following.html:6 #: bookwyrm/templates/user/relationships/layout.html:15 msgid "Following" -msgstr "Abonné(e) à" +msgstr "Comptes suivis" #: bookwyrm/templates/user/relationships/following.html:12 #, python-format msgid "%(username)s isn't following any users" -msgstr "%(username)s n’est abonné(e) à personne" +msgstr "%(username)s ne suit personne" #: bookwyrm/templates/user/shelf/books_header.html:5 #, python-format @@ -2832,7 +2744,7 @@ msgstr "Modifier l’étagère" msgid "Update shelf" msgstr "Mettre l’étagère à jour" -#: 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 "Tous les livres" @@ -2895,14 +2807,14 @@ msgstr "Aucune activité pour l’instant !" #: bookwyrm/templates/user/user_preview.html:15 #, python-format msgid "Joined %(date)s" -msgstr "Enregistré(e) %(date)s" +msgstr "A rejoint ce serveur %(date)s" #: bookwyrm/templates/user/user_preview.html:19 #, python-format msgid "%(counter)s follower" msgid_plural "%(counter)s followers" -msgstr[0] "%(counter)s abonnement" -msgstr[1] "%(counter)s abonnements" +msgstr[0] "%(counter)s abonné(e)" +msgstr[1] "%(counter)s abonné(e)s" #: bookwyrm/templates/user/user_preview.html:20 #, python-format @@ -2910,19 +2822,15 @@ msgid "%(counter)s following" msgstr "%(counter)s abonnements" #: bookwyrm/templates/user/user_preview.html:26 -#, fuzzy, python-format -#| msgid "%(mutuals)s follower you follow" -#| msgid_plural "%(mutuals)s followers you follow" +#, python-format msgid "%(mutuals_display)s follower you follow" msgid_plural "%(mutuals_display)s followers you follow" -msgstr[0] "%(mutuals)s abonnement auxquel vous êtes abonné(e)" -msgstr[1] "%(mutuals)s abonnements auxquels vous êtes abonné(e)" +msgstr[0] "%(mutuals_display)s abonné(e) que vous suivez" +msgstr[1] "%(mutuals_display)s abonné(e)s que vous suivez" #: bookwyrm/templates/user_admin/user.html:9 -#, fuzzy -#| msgid "Back to reports" msgid "Back to users" -msgstr "Retour aux signalements" +msgstr "Retour aux comptes" #: bookwyrm/templates/user_admin/user_admin.html:7 #, python-format @@ -2960,42 +2868,36 @@ msgid "Not set" msgstr "Non défini" #: bookwyrm/templates/user_admin/user_info.html:5 -#, fuzzy -#| msgid "Details" msgid "User details" -msgstr "Détails" +msgstr "Détails du compte" #: bookwyrm/templates/user_admin/user_info.html:14 msgid "View user profile" msgstr "Voir le profil" #: bookwyrm/templates/user_admin/user_info.html:20 -#, fuzzy -#| msgid "Instance Settings" msgid "Instance details" -msgstr "Paramètres de l’instance" +msgstr "Détails de l’instance" #: bookwyrm/templates/user_admin/user_info.html:46 msgid "View instance" -msgstr "" +msgstr "Voir l’instance" #: bookwyrm/templates/user_admin/user_moderation_actions.html:11 msgid "Suspend user" -msgstr "" +msgstr "Suspendre le compte" #: bookwyrm/templates/user_admin/user_moderation_actions.html:13 msgid "Un-suspend user" -msgstr "" +msgstr "Rétablir le compte" #: bookwyrm/templates/user_admin/user_moderation_actions.html:21 msgid "Access level:" -msgstr "" +msgstr "Niveau d’accès :" #: bookwyrm/views/import_data.py:67 -#, fuzzy -#| msgid "Email address:" msgid "Not a valid csv file" -msgstr "Adresse email :" +msgstr "Fichier CSV invalide" #: bookwyrm/views/password.py:32 msgid "No user with that email address was found." @@ -3056,12 +2958,12 @@ msgstr "Un lien de réinitialisation a été envoyé à %s." #~ msgid "Enter a number." #~ msgstr "Numéro dans la série :" -#, fuzzy, python-format +#, fuzzy #~| msgid "A user with this email already exists." #~ msgid "%(model_name)s with this %(field_labels)s already exists." #~ msgstr "Cet email est déjà associé à un compte." -#, 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 n’est pas une remote_id valide." @@ -3071,7 +2973,7 @@ msgstr "Un lien de réinitialisation a été envoyé à %s." #~ msgid "This field cannot be null." #~ msgstr "Cette étagère est vide" -#, fuzzy, python-format +#, fuzzy #~| msgid "A user with this email already exists." #~ msgid "%(model_name)s with this %(field_label)s already exists." #~ msgstr "Cet email est déjà associé à un compte." @@ -3121,7 +3023,7 @@ msgstr "Un lien de réinitialisation a été envoyé à %s." #~ msgid "Positive small integer" #~ msgstr "Aucune invitation active" -#, fuzzy, python-format +#, fuzzy #~| msgid "%(value)s is not a valid username" #~ msgid "“%(value)s” is not a valid UUID." #~ msgstr "%(value)s n’est pas un nom de compte valide." @@ -3136,12 +3038,12 @@ msgstr "Un lien de réinitialisation a été envoyé à %s." #~ msgid "One-to-one relationship" #~ msgstr "Relations" -#, fuzzy, python-format +#, fuzzy #~| msgid "Relationships" #~ msgid "%(from)s-%(to)s relationship" #~ msgstr "Relations" -#, fuzzy, python-format +#, fuzzy #~| msgid "Relationships" #~ msgid "%(from)s-%(to)s relationships" #~ msgstr "Relations" @@ -3201,7 +3103,7 @@ msgstr "Un lien de réinitialisation a été envoyé à %s." #~ msgid "Order" #~ msgstr "Trier par" -#, fuzzy, python-format +#, fuzzy #~| msgid "%(value)s is not a valid username" #~ msgid "“%(pk)s” is not a valid value." #~ msgstr "%(value)s n’est pas un nom de compte valide." @@ -3265,7 +3167,7 @@ msgstr "Un lien de réinitialisation a été envoyé à %s." #~ msgid "This is not a valid IPv6 address." #~ msgstr "Adresse email :" -#, fuzzy, python-format +#, fuzzy #~| msgid "No books found matching the query \"%(query)s\"" #~ msgid "No %(verbose_name)s found matching the query" #~ msgstr "Aucun livre trouvé pour la requête « %(query)s »" @@ -3284,11 +3186,9 @@ msgstr "Un lien de réinitialisation a été envoyé à %s." #~ msgid "Matching Users" #~ msgstr "Comptes correspondants" -#, python-format #~ msgid "Set a reading goal for %(year)s" #~ msgstr "Définir un défi lecture pour %(year)s" -#, python-format #~ msgid "by %(author)s" #~ msgstr "par %(author)s" @@ -3298,21 +3198,12 @@ msgstr "Un lien de réinitialisation a été envoyé à %s." #~ msgid "Reactivate user" #~ msgstr "Réactiver le compte" -#, python-format -#~ msgid "%(rating)s star" -#~ msgid_plural "%(rating)s stars" -#~ msgstr[0] "%(rating)s étoile" -#~ msgstr[1] "%(rating)s étoiles" - -#, python-format #~ msgid "replied to %(username)s's review" #~ msgstr "a répondu à la critique de %(username)s" -#, python-format #~ msgid "replied to %(username)s's comment" #~ msgstr "a répondu au commentaire de %(username)s" -#, python-format #~ msgid "replied to %(username)s's quote" #~ msgstr "a répondu à la citation de %(username)s" @@ -3322,7 +3213,6 @@ msgstr "Un lien de réinitialisation a été envoyé à %s." #~ msgid "Add tag" #~ msgstr "Ajouter un tag" -#, python-format #~ msgid "Books tagged \"%(tag.name)s\"" #~ msgstr "Livres tagués « %(tag.name)s »" From a31bbfd95ed8590230bf087687ecae1216d38f21 Mon Sep 17 00:00:00 2001 From: Joachim Date: Sun, 23 May 2021 15:13:17 +0200 Subject: [PATCH 07/94] Update translations --- locale/fr_FR/LC_MESSAGES/django.mo | Bin 45420 -> 45420 bytes locale/fr_FR/LC_MESSAGES/django.po | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index 5297cd7c71b91d2b03dd89fbba6c605cee474c7d..6c9e3eb5f2bd1eb69a76ddcf0fed5656fb3aeac9 100644 GIT binary patch delta 355 zcmXZWKTASk6vy$y)zFL3AOCcTq(QoKI0}O3V2v#ff(;=qiUpBNsLv2it!};ox8M#! zb4~@mfE?mFxZEvYK;MJU^f~7|&vSlH6gpApynlNpBO=YANDljWjIWr*sqN?14?F)t zefNuH+~E}#Mz!?qCMqJYJ&`!JF@i&k;kT_P)}`&Q@tXNB z7V#gm_}CYzVjY7xLESgUB(5-ld%VJ9UySGhp24{hLk+&ObsjaSYU>*6;ubz&7jJNk z8n8h9zr|a0F@qi>lE!<~yfTLI#gs$>Jl<)9u!DN>Cl>GvHSovIw|GgtLtW%L!PHa3 WSNT{?owwfT!vEZCHM`EA8Rbs1Ej+dW diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index 325d7fbfa..5514b43e9 100644 --- a/locale/fr_FR/LC_MESSAGES/django.po +++ b/locale/fr_FR/LC_MESSAGES/django.po @@ -647,7 +647,7 @@ msgstr "Vous pouvez décider de ne plus y figurer à n’importe quel moment dep #: bookwyrm/templates/snippets/announcement.html:34 #: bookwyrm/templates/snippets/goal_card.html:22 msgid "Dismiss message" -msgstr "Rejeter le message" +msgstr "Fermer le message" #: bookwyrm/templates/directory/sort_filter.html:5 msgid "Order by" @@ -1890,7 +1890,7 @@ msgstr "Actif :" #: bookwyrm/templates/settings/announcement_form.html:8 #: bookwyrm/templates/settings/announcements.html:8 msgid "Create Announcement" -msgstr "Créer une annonce" +msgstr "Ajouter une annonce" #: bookwyrm/templates/settings/announcements.html:22 msgid "Date added" From 6024fae766d8906049f9cbaeef3e0e4a5ef35fe0 Mon Sep 17 00:00:00 2001 From: Joachim Date: Sun, 23 May 2021 15:23:35 +0200 Subject: [PATCH 08/94] Update translation --- locale/fr_FR/LC_MESSAGES/django.mo | Bin 45420 -> 45418 bytes locale/fr_FR/LC_MESSAGES/django.po | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index 6c9e3eb5f2bd1eb69a76ddcf0fed5656fb3aeac9..00b7885c9bfe359515daf9c787ddc9d9fdf6f3ab 100644 GIT binary patch delta 1829 zcmXZcc}&l79LMnwsZ{cl9Q`UO%q>@bGUrfkCagBrw29^1Opc77`Su6Q5#R3@Eg}i$TR*3yr^_ zF@lc%bY!3s??fdo#AGaSaV;JrevN~0Ymr^>25R0T48vNC!8+7BX0J^cg4%cjYU62p z{l>)6m_tWP+=vZ{-49A!e-(Nezm0A16)I6ZsxpoC8551YFcimPYn+D7F$Y!Ym6(g` zP?h@Or=f*{_uJA&VteAA*a|12CT5{FmV;AqDJt=8^x#)i1zIw0($X2#$p|6fkp>yg+fskXouQB66%Dr-S`sJIvY^y7NII}1cUGr z#^5!iQhxKy4ZK60^b@Ky-%$$$7TXhfPz!fN^(VV{q>IyCoQ2_xFGrnt6VAfj*a1Id zCyY3xb-8~Z4ee+=D#2XT9j-=|Y736WYD~eOn1;hj>_@vBClTMlXpB5;%uq~3C0vLJ zxC>`u6-HtB5hTCqOd}A7qfVBBs>Bp*g6XIY%|d;o^H6u5hkC9%oQE)h_&n-Lo}j+1 zx2XAFFb;oVEP9Vpe=X#rp^~MdPB0y{z!Fq~wWzz>gWAA8H+~v5uLkv;?x8mR92*j2 zcj7OoJkh20fZb8QPb#JUDtRg$x`LT*UMn2Vy=saoG_+0@qCQO z{n!<2PG%hA&>0oha@0ore`o~INIGpxn~d4SqcIClIh&oauV67Y zrN0_O@Cqj4UDscay1KtO0b8E6>tv#y;dN)bbHU|ROFoTb%Q I^UuZp2bXpxb^rhX delta 1831 zcmXZccWll<9LMp~;_2o=(e}|{#HLnNg&_8dSzFK$Qk4>7wRsSmNE)TB)~MPw^B6%Y zVw42IKO&74q7p$6Q4zuW)4RW3_q}`Wdw1Xa-ShEn(5JUS=Y5I(P-D#Hd}G?B%G zQT=~01Vi>1(-FPc9Q$E1rlS|PU<4LnLp+9wcm+G*b8Lq7_S)aIK*b&Q8h>qL5FI_} zn2uU_7i!@`OvO?cSK(3Oci0EF71)HgQS+W)I96dCR-^I+71{;EQ5$cC+W4eGzcKMN z7SPcMH(~9p6kndreaxB@qzD)q}x zLy1E7+0sU10&y2?f@4t=Gf*4L#PPTswQwai!0)IE1QpvWjBqBR=JiBfQ9sm`jKp5( zUr9p~&!85(f-(3IeOQf35L{v_6oINh0%`*(s1wd}<4aL_Hlp$tp(;^^_3I0S#=1RQYCezd!B4DmgT#ppwn8Iw^9F2N+s!xLpyQ4a^APBsixiSbw$r=d198}*ScLfv@|>bdT89>OHzi>NDkhWfVNqvn6Z zc>IGtj5|#Il_-^lN;VvIf^<}ZrKkngq3$jpwSi(ceik*a0`;68pf>&zYZt~2#NSZs z_{!`7JE4A`Qbzq%^5Jyo3TC;1)u@GcpvDiPHgpk{_%?RK$Ed`0j@ZOrOdyU!&FhQW z@HjV~f!c5uj=;4?sQ*M7cj?H*82(*WV*&O??=fRK;|Q$8l`igooVQNA7!$Ds+hGOj z?yGSzwmxCMjXcz=d5tOf6ZLU+_MfzOlZO14m?5|xU%CD{r|fIUMD08Wbw%4w z2e3O{bMa>kBmRL?@E_`+Q_8L7sEzpl(FmrIa@v+Q4d)XN#kqLe8Fj|Kf@}<-{}P7c z4eWyVU4ISg>daYVMnMx)o;j#zc*~h^ju)i&pF=|vDlihCVq1KTdKI4Ywp5X*g=1aZ z3O&Th&QuI19)PoPH0qg^qvqYg_V@^=Vhx6B#<&aiYn&d4X}dqmGjT Date: Sun, 23 May 2021 16:01:01 +0200 Subject: [PATCH 09/94] Update shelf translations --- locale/fr_FR/LC_MESSAGES/django.mo | Bin 45418 -> 45409 bytes locale/fr_FR/LC_MESSAGES/django.po | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index 00b7885c9bfe359515daf9c787ddc9d9fdf6f3ab..349ef43a8322a5be7b4efa8c969d8185f70d36b7 100644 GIT binary patch delta 3927 zcmXZdc~F-{9LMoTL{33eR8TNL@j|@sBg3O|G;b6wP1GNm86-lJqxhg9;ekQkCW=?y zC*z%#7o%g7T25waCSG~WSV>-^Q}2(vf4%m*&-3i=_q)5l-@P)g>t$X$n})en9mgrj za-3Rt5^LgB490S-h83rqxF&`Y$J)3PRwwRl=q4P~-1My?+kt;?3!f z>%`Eg=sHdWHb70-1FPUr^urVk#54@Ssn`+cp(ZS~&(EPR@fB2JH&O3D#vt^~HsjVn zjT@WIgJ>Gf=ul<@P%HCb1I$4Uw8eVZdKR_N>!^yA+c=QREEE!GQWq)QSVQ~rdWVl z*kM!x?gbiQH142E;(YEnO~4=ZVH;Hc+o%c+#Ar-GO_Yb)+l8o%wxR|;VxON!jeiw& zrXHi-uaxtu-*qBsD1&yW6(^ud)CV=uKvX3rqb8V&k(iH~XbZN%BdEQ8gj%@wEc0C$ zD&r{Bg4I$5HeAfHj%lxj;jQro}#g+X}8 zdKy*Ii>QqLwEl$}=PC9??*fxyZ`6B(Fb+qc7MzRB=Q?X>Xrg`AqZmSb2BYu_Dub7( zdtANHoP{Q+fm)y@=!>er5LAX~sNaP`)HN-|s`v+1#(ywO_y0c{x^`h-nUb_c9mcWN z38>5_VHM1>=G*5*s0FXXdbkI*kV~k;T#lNs@&Z$la8w+lnE9RNG<3QFHSrp1qQ|IH?X}G8c{2j7YKvN- zwxk=jMRy_%eYgfS;Z_XCqo`YP88yIDRD~+6FckRxCg0}>zua_uAnl#fhx^?)BrC~8Tk~Mfor4so7=dfjr-X+33WR@MrAw|-@`nN z!CR<5Ex(l-m;H~Yp%o>dRz4E7hv}$NWubo2He)Y*h=Z{0DsyP_@EziBu{H)2J5E=O zMNK#sb$xU3UEGLa=)D@5--)E5``-?gSr=3#-bDQl^g}IZFsj6(PP-p8m)c3csF8+-X7_x@?YoK@KE8 zevGP|&pLB^LQvneKrOfz>Uk1s!DFyDezK1G52kUDjw}r3*JTRM!}jR&jrmV_9ZQKP z+PL)w4j^$dMqwc~!riF7zl;+xe4{xVxv1Zb3)l|tqYh_`yUFZLbL6+g>4Y=zXWO5+ z+1!TFsFhDbZINr^<>*7a5nJI78<$}K@m(B-<)}paZZQ_47UGuEs7NDjt0`@B^bmK( zWL#~nxXs)G5Bkx+8U3*Yo8e*G{{Xdh|6(8X-)_c9L|wyu*3cb}^M>yKBpUi)HwIxT zHpC04Tk!%bqt{L|aTQb?hQ1hUjmJRZwm1qCP}i&&wcrET7>{8RK0tqc(QB7Ejr~i) z8_rDh&P?@0Em$?JwQ2k^?P}G&p0OF3>7L0^p46zZX_@JhOO9s^hzRbPoZ*QYSC+jj Pc|uxdMoHZAZngdg@3>le delta 3936 zcmXZdd2o+M9LMoT5V?rNk%ZuvxCx4gt3{kCZJe2;WsIoM5K)>GaXg5dHjcXENTVvD zb)=5E28pALV@5|!9j&WX?a(4E9Y^0EyMMj*yU+9N?)SU9zu(PUUiWW#?TiX_D?5%; zG|h2Bumr2)HLQe>F&Mq3o46WQC9Y@V_E?2D&c;K~mv{`;$4sn=>rmtGL%n|iYvb+d zj_X9y@Nyj|9P6Vd?23VyfIgUl{+Nzha2B@5MW_i+*yk6p0`XN0!rQ3#OR*w)&oJXw zMU7i;1`i@=G^0bA^+m001UA5I)If#SL)P=Ch5mx7*kc>}%`}PBLiKk*RiHn{;#e$? zJ5b~9acNYeaSD~;byViRqcVAhepqIf*@6I632UNC+yeDH0n6bq)Ho@q%8W<7KLw*O z2eq(6s07?gG(u_oiYmz~Y=S=7=EK&g{$8jG^}`5EK}|FdwYSSr8Er!ieAqs}h#LPI z>P(fQ-Y+-%b-(L`(@+L&P%G|&Dp7CLMEy{en1Grf3v1zG)I^0CjfYWt{RowD**WIB z5LCu>Pz#Q+c10h~pA%2xLmnieCOV4RlGEsoH&7M0i<lFh#Ghz2H+B`f$LG3?YEX- zAL5JH62s@4@8eMwPDfR461o~-5e;Rq1&3n^YD*d}Fax(jW!wpMI|g8X9FO&|7*+av zsLDMRq#7hBDb&uK1JQC);UxQ-2@sMC>wRZb8NgBRl=QE5f4~T zqe^-imC#qL;kiODby^jX8jbM?R>6Cy z7oVd}srL%AcY&zW+Y#TuL8t}HL1nZGHSuQj;2w;^%cx3}U1{E{iHaMor2cAjp`$e> zp(b98ns_B@F7 ziNiMNX424y+fWnk!7x07x)pa&1C+@%74kz>pcZNY(WnfE+2`X>wsjl0@7(ZcY2ZP2*ve+&(+s5feYk*GbKf-2Qq)Gt~Q_Q0n&06T3ohjuBxOMC)rV3kc=VQh|? zFb#Emb8s;3!ceT3hs^IZprQNU8I@TNR3-YNeg_g!3mSqtq@z%Ko`t%u3#}V4f_OJ- zOMXC|t=p*YA7X9%55qC+3+k_dVrZyjJy979LJcquHNkY$-Yr8dV2ypg9rfKo)OGqE zweYL>dSYxs{17!yjeL_}6V&_B`P5$}?@5QYV6c5K5jF7w)bsVI1?@%+d<bv%+1;?YFC!-cT2H(cXo2mam8pU)>!w`O5CgTchi-B9re?l)jNt|ip zH^1VKhj=u4a4j~%gQ&f~gJ~GK)trqS)UCOWG57>^IGef!W^dXdza>sLoQciMZH}NiPh5K#%2l^2|!bE(5N;F}cu>iFY_XUlzG@`eg(ze4C;_jG? zh1P(t%`HerANq^X7Y|``JZbw&QCs&C`(W@lW}Km@Yk1UJYX?93y8l@;^ua-_h!?OS zUPs-E@;gnb{81B!+BgC$5I48Rpg(aZ9E!bB*Q@~b-EnM;XE6y&(N|x@?=q(`sVJ=B ztb}rDw`QzazHw@6)3`kKdgUJJo{R~}sp*~(DW0^{2`NP-)B1&n#*QABnNeKeDc Date: Sun, 23 May 2021 21:17:14 +0200 Subject: [PATCH 10/94] Add microformats to author page --- bookwyrm/templates/author/author.html | 33 ++++++++++++++++++++------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/bookwyrm/templates/author/author.html b/bookwyrm/templates/author/author.html index aa99cbe27..496012a82 100644 --- a/bookwyrm/templates/author/author.html +++ b/bookwyrm/templates/author/author.html @@ -22,42 +22,59 @@ -

- {% if author.aliases or author.born or author.died or author.wikipedia_link %} +
+ + + {% if author.aliases or author.born or author.died or author.wikipedia_link or author.openlibrary_key or author.inventaire_id %}
{% if author.aliases %}
{% trans "Aliases:" %}
-
{{ author.aliases|join:', ' }}
+
+ {% for alias in author.aliases %} + {{alias}}{% if not forloop.last %},{% endif %} + {% endfor %} +
{% endif %} {% if author.born %}
{% trans "Born:" %}
-
{{ author.born|naturalday }}
+
{{ author.born|naturalday }}
{% endif %} {% if author.died %}
{% trans "Died:" %}
-
{{ author.died|naturalday }}
+
{{ author.died|naturalday }}
{% endif %}
{% if author.wikipedia_link %} -

{% trans "Wikipedia" %}

+

+ + + {% trans "Wikipedia" %} + +

{% endif %} {% if author.openlibrary_key %}

- {% trans "View on OpenLibrary" %} + + + {% trans "View on OpenLibrary" %} +

{% endif %} {% if author.inventaire_id %}

- {% trans "View on Inventaire" %} + + + {% trans "View on Inventaire" %} +

{% endif %}
From b362b72c57531d3d85e272f9892758e57a89edf2 Mon Sep 17 00:00:00 2001 From: Jason Kelly Date: Mon, 24 May 2021 09:35:21 +0800 Subject: [PATCH 11/94] Python linting --- bookwyrm/models/fields.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/bookwyrm/models/fields.py b/bookwyrm/models/fields.py index d4d94aa24..caa22fcd3 100644 --- a/bookwyrm/models/fields.py +++ b/bookwyrm/models/fields.py @@ -334,7 +334,7 @@ class TagField(ManyToManyField): class ClearableFileInputWithWarning(ClearableFileInput): - template_name = 'widgets/clearable_file_input_with_warning.html' + template_name = "widgets/clearable_file_input_with_warning.html" class CustomImageField(ImageField): @@ -405,10 +405,12 @@ class ImageField(ActivitypubFieldMixin, models.ImageField): return [image_name, image_content] def formfield(self, **kwargs): - return super().formfield(**{ - 'form_class': CustomImageField, - **kwargs, - }) + return super().formfield( + **{ + "form_class": CustomImageField, + **kwargs, + } + ) class DateTimeField(ActivitypubFieldMixin, models.DateTimeField): From 31deb36c853536c4ddd9537304d63476ff534fb5 Mon Sep 17 00:00:00 2001 From: bcj Date: Sun, 23 May 2021 23:49:12 -0500 Subject: [PATCH 12/94] URL-Encode password in broker_url Needed to prevent connection errors if the password contains non-urlsafe characters. Dockerfile change because all the services using it are mirroring ./ in /app now anyway. Flower needs because it needs bookwyrm in order to read the celerywyrm config (because flower only allows overwriting broker_url from the command line and we want to do it in Python so we have access to a urlencode function). --- .env.dev.example | 4 +--- .env.prod.example | 2 -- Dockerfile | 2 -- bookwyrm/settings.py | 8 ++++++-- celerywyrm/settings.py | 4 ++-- docker-compose.yml | 6 +++--- 6 files changed, 12 insertions(+), 14 deletions(-) diff --git a/.env.dev.example b/.env.dev.example index 2f24378c6..03e6ef258 100644 --- a/.env.dev.example +++ b/.env.dev.example @@ -34,10 +34,8 @@ REDIS_ACTIVITY_PORT=6379 #REDIS_ACTIVITY_PASSWORD=redispassword345 # Redis as celery broker -#REDIS_BROKER_PORT=6379 +REDIS_BROKER_PORT=6379 #REDIS_BROKER_PASSWORD=redispassword123 -CELERY_BROKER=redis://redis_broker:6379/0 -CELERY_RESULT_BACKEND=redis://redis_broker:6379/0 FLOWER_PORT=8888 #FLOWER_USER=mouse diff --git a/.env.prod.example b/.env.prod.example index a82499a32..dd15fbb79 100644 --- a/.env.prod.example +++ b/.env.prod.example @@ -36,8 +36,6 @@ REDIS_ACTIVITY_PASSWORD=redispassword345 # Redis as celery broker REDIS_BROKER_PORT=6379 REDIS_BROKER_PASSWORD=redispassword123 -CELERY_BROKER=redis://:${REDIS_BROKER_PASSWORD}@redis_broker:${REDIS_BROKER_PORT}/0 -CELERY_RESULT_BACKEND=redis://:${REDIS_BROKER_PASSWORD}@redis_broker:${REDIS_BROKER_PORT}/0 FLOWER_PORT=8888 FLOWER_USER=mouse diff --git a/Dockerfile b/Dockerfile index 0f10015c6..1892ae234 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,5 +9,3 @@ WORKDIR /app COPY requirements.txt /app/ RUN pip install -r requirements.txt --no-cache-dir RUN apt-get update && apt-get install -y gettext libgettextpo-dev && apt-get clean - -COPY ./bookwyrm ./celerywyrm /app/ diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index d694e33fd..19d84c7f1 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -14,8 +14,12 @@ PAGE_LENGTH = env("PAGE_LENGTH", 15) DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English") # celery -CELERY_BROKER = env("CELERY_BROKER") -CELERY_RESULT_BACKEND = env("CELERY_RESULT_BACKEND") +CELERY_BROKER = "redis://:{}@redis_broker:{}/0".format( + requests.utils.quote(env("REDIS_BROKER_PASSWORD", "")), env("REDIS_BROKER_PORT") +) +CELERY_RESULT_BACKEND = "redis://:{}@redis_broker:{}/0".format( + requests.utils.quote(env("REDIS_BROKER_PASSWORD", "")), env("REDIS_BROKER_PORT") +) CELERY_ACCEPT_CONTENT = ["application/json"] CELERY_TASK_SERIALIZER = "json" CELERY_RESULT_SERIALIZER = "json" diff --git a/celerywyrm/settings.py b/celerywyrm/settings.py index e4fa73ca2..63a6e9409 100644 --- a/celerywyrm/settings.py +++ b/celerywyrm/settings.py @@ -1,10 +1,10 @@ """ bookwyrm settings and configuration """ from bookwyrm.settings import * -CELERY_BROKER_URL = env("CELERY_BROKER") +CELERY_BROKER_URL = CELERY_BROKER CELERY_ACCEPT_CONTENT = ["json"] CELERY_TASK_SERIALIZER = "json" -CELERY_RESULT_BACKEND = "redis" +FLOWER_PORT = env("FLOWER_PORT") INSTALLED_APPS = INSTALLED_APPS + [ "celerywyrm", diff --git a/docker-compose.yml b/docker-compose.yml index 18f836502..49d02e706 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -74,10 +74,10 @@ services: restart: on-failure flower: build: . - command: flower --port=${FLOWER_PORT} + command: flower -A celerywyrm env_file: .env - environment: - - CELERY_BROKER_URL=${CELERY_BROKER} + volumes: + - .:/app networks: - main depends_on: From 58c07d16779d3d1f7a5f8c43518c41efad6e891b Mon Sep 17 00:00:00 2001 From: Joachim Date: Mon, 24 May 2021 12:36:48 +0200 Subject: [PATCH 13/94] Apply review suggestions --- bookwyrm/templates/author/author.html | 29 +++++++++++++-------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/bookwyrm/templates/author/author.html b/bookwyrm/templates/author/author.html index 496012a82..de7d230f9 100644 --- a/bookwyrm/templates/author/author.html +++ b/bookwyrm/templates/author/author.html @@ -22,7 +22,7 @@
-
+
{% if author.aliases or author.born or author.died or author.wikipedia_link or author.openlibrary_key or author.inventaire_id %} @@ -32,11 +32,11 @@ {% if author.aliases %}
{% trans "Aliases:" %}
-
- {% for alias in author.aliases %} - {{alias}}{% if not forloop.last %},{% endif %} - {% endfor %} -
+ {% for alias in author.aliases %} +
+ {{alias}}{% if not forloop.last %},{% endif %} +
+ {% endfor %}
{% endif %} {% if author.born %} @@ -54,25 +54,24 @@ {% if author.wikipedia_link %} -

- - +

+ {% trans "Wikipedia" %}

{% endif %} + {% if author.openlibrary_key %} -

- - +

+ {% trans "View on OpenLibrary" %}

{% endif %} + {% if author.inventaire_id %} -

- - +

+ {% trans "View on Inventaire" %}

From 594f7b370875e6f469c2c84fc075c0ee8ff87347 Mon Sep 17 00:00:00 2001 From: Joachim Date: Mon, 24 May 2021 12:51:18 +0200 Subject: [PATCH 14/94] Style fixes --- bookwyrm/templates/author/author.html | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/bookwyrm/templates/author/author.html b/bookwyrm/templates/author/author.html index de7d230f9..1d317492f 100644 --- a/bookwyrm/templates/author/author.html +++ b/bookwyrm/templates/author/author.html @@ -26,43 +26,43 @@ {% if author.aliases or author.born or author.died or author.wikipedia_link or author.openlibrary_key or author.inventaire_id %} -
+
{% if author.aliases %} -
-
{% trans "Aliases:" %}
+
+
{% trans "Aliases:" %}
{% for alias in author.aliases %}
- {{alias}}{% if not forloop.last %},{% endif %} + {{alias}}{% if not forloop.last %}, {% endif %}
{% endfor %}
{% endif %} {% if author.born %} -
-
{% trans "Born:" %}
+
+
{% trans "Born:" %}
{{ author.born|naturalday }}
{% endif %} {% if author.died %} -
-
{% trans "Died:" %}
+
+
{% trans "Died:" %}
{{ author.died|naturalday }}
{% endif %}
{% if author.wikipedia_link %} -

+

{% trans "Wikipedia" %}

{% endif %} - + {% if author.openlibrary_key %} -

+

{% trans "View on OpenLibrary" %} @@ -70,7 +70,7 @@ {% endif %} {% if author.inventaire_id %} -

+

{% trans "View on Inventaire" %} From 25858ed3aa5da7e9f41281d9590faff31fe8e29a Mon Sep 17 00:00:00 2001 From: Joachim Date: Mon, 24 May 2021 12:51:41 +0200 Subject: [PATCH 15/94] Added LibraryThing and Goodreads links --- bookwyrm/templates/author/author.html | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/bookwyrm/templates/author/author.html b/bookwyrm/templates/author/author.html index 1d317492f..9b3c637e3 100644 --- a/bookwyrm/templates/author/author.html +++ b/bookwyrm/templates/author/author.html @@ -76,6 +76,22 @@

{% endif %} + + {% if author.librarything_key %} +

+ + {% trans "View on LibraryThing" %} + +

+ {% endif %} + + {% if author.goodreads_key %} +

+ + {% trans "View on Goodreads" %} + +

+ {% endif %}
{% endif %} From b72580daf61ff0dd22dd05ad8ecbabe92301b3b4 Mon Sep 17 00:00:00 2001 From: Joachim Date: Mon, 24 May 2021 17:17:12 +0200 Subject: [PATCH 16/94] Update author.html --- bookwyrm/templates/author/author.html | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/bookwyrm/templates/author/author.html b/bookwyrm/templates/author/author.html index 9b3c637e3..f4f308f2d 100644 --- a/bookwyrm/templates/author/author.html +++ b/bookwyrm/templates/author/author.html @@ -27,10 +27,10 @@ {% if author.aliases or author.born or author.died or author.wikipedia_link or author.openlibrary_key or author.inventaire_id %}
-
+
{% if author.aliases %} -
+
{% trans "Aliases:" %}
{% for alias in author.aliases %}
@@ -39,14 +39,16 @@ {% endfor %}
{% endif %} + {% if author.born %} -
+
{% trans "Born:" %}
{{ author.born|naturalday }}
{% endif %} + {% if author.died %} -
+
{% trans "Died:" %}
{{ author.died|naturalday }}
@@ -54,7 +56,7 @@
{% if author.wikipedia_link %} -

+

{% trans "Wikipedia" %} @@ -62,7 +64,7 @@ {% endif %} {% if author.openlibrary_key %} -

+

{% trans "View on OpenLibrary" %} @@ -70,7 +72,7 @@ {% endif %} {% if author.inventaire_id %} -

+

{% trans "View on Inventaire" %} @@ -78,7 +80,7 @@ {% endif %} {% if author.librarything_key %} -

+

{% trans "View on LibraryThing" %} @@ -86,7 +88,7 @@ {% endif %} {% if author.goodreads_key %} -

+

{% trans "View on Goodreads" %} From da63606c0ea471d571a847553ed39aa6fe2b6c8b Mon Sep 17 00:00:00 2001 From: reese Date: Mon, 24 May 2021 21:00:58 -0500 Subject: [PATCH 17/94] translated new translations --- locale/es/LC_MESSAGES/django.mo | Bin 40665 -> 43765 bytes locale/es/LC_MESSAGES/django.po | 457 +++++++++++--------------------- 2 files changed, 151 insertions(+), 306 deletions(-) diff --git a/locale/es/LC_MESSAGES/django.mo b/locale/es/LC_MESSAGES/django.mo index 1377b50921ff631bb3fced41caf49a3579a7d17f..0e5df226ff94914032c35b735f32bebe7ae3630e 100644 GIT binary patch delta 15520 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 Fe*gqXKI#Af delta 12870 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\n" "Language-Team: LANGUAGE \n" @@ -56,12 +56,12 @@ msgid "Book Title" msgstr "Título" #: 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 "Calificación" -#: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:101 +#: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:107 msgid "Sort By" msgstr "Ordenar por" @@ -83,7 +83,7 @@ msgstr "%(value)s no es un remote_id válido" msgid "%(value)s is not a valid username" msgstr "%(value)s no es un usuario válido" -#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:155 +#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:152 msgid "username" msgstr "nombre de usuario" @@ -139,15 +139,15 @@ msgstr "Editar Autor/Autora" #: bookwyrm/templates/author/author.html:32 #: bookwyrm/templates/author/edit_author.html:38 msgid "Aliases:" -msgstr "" +msgstr "Aliases:" #: bookwyrm/templates/author/author.html:38 msgid "Born:" -msgstr "" +msgstr "Nacido:" #: bookwyrm/templates/author/author.html:44 msgid "Died:" -msgstr "" +msgstr "Muerto:" #: bookwyrm/templates/author/author.html:51 msgid "Wikipedia" @@ -160,10 +160,8 @@ msgstr "Ver en OpenLibrary" #: bookwyrm/templates/author/author.html:60 #: bookwyrm/templates/book/book.html:81 -#, fuzzy -#| msgid "View on OpenLibrary" msgid "View on Inventaire" -msgstr "Ver en OpenLibrary" +msgstr "Ver en Inventaire" #: bookwyrm/templates/author/author.html:74 #, python-format @@ -205,10 +203,8 @@ msgstr "Nombre:" #: bookwyrm/templates/book/edit_book.html:132 #: bookwyrm/templates/book/edit_book.html:141 #: bookwyrm/templates/book/edit_book.html:178 -#, fuzzy -#| msgid "Separate multiple publishers with commas." msgid "Separate multiple values with commas." -msgstr "Separar varios editores con comas." +msgstr "Separar varios valores con comas." #: bookwyrm/templates/author/edit_author.html:46 msgid "Bio:" @@ -236,10 +232,8 @@ msgstr "Clave OpenLibrary:" #: bookwyrm/templates/author/edit_author.html:79 #: bookwyrm/templates/book/edit_book.html:243 -#, fuzzy -#| msgid "View on OpenLibrary" msgid "Inventaire ID:" -msgstr "Ver en OpenLibrary" +msgstr "ID Inventaire:" #: bookwyrm/templates/author/edit_author.html:84 msgid "Librarything key:" @@ -254,7 +248,7 @@ msgstr "Clave Goodreads:" #: 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 @@ -350,28 +344,20 @@ msgid "You don't have any reading activity for this book." msgstr "No tienes ninguna actividad de lectura para este libro." #: bookwyrm/templates/book/book.html:200 -#, fuzzy -#| msgid "Review" msgid "Reviews" -msgstr "Reseña" +msgstr "Reseñas" #: bookwyrm/templates/book/book.html:205 -#, fuzzy -#| msgid "Your shelves" msgid "Your reviews" -msgstr "Tus estantes" +msgstr "Tus reseñas" #: bookwyrm/templates/book/book.html:211 -#, fuzzy -#| msgid "Your Account" msgid "Your comments" -msgstr "Tu cuenta" +msgstr "Tus comentarios" #: bookwyrm/templates/book/book.html:217 -#, fuzzy -#| msgid "Your books" msgid "Your quotes" -msgstr "Tus libros" +msgstr "Tus citas" #: bookwyrm/templates/book/book.html:253 msgid "Subjects" @@ -381,7 +367,7 @@ msgstr "Sujetos" msgid "Places" msgstr "Lugares" -#: 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 @@ -395,7 +381,7 @@ msgstr "Agregar a lista" #: 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 "Agregar" @@ -492,10 +478,8 @@ msgid "Series number:" msgstr "Número de serie:" #: bookwyrm/templates/book/edit_book.html:130 -#, fuzzy -#| msgid "Language:" msgid "Languages:" -msgstr "Idioma:" +msgstr "Idiomas:" #: bookwyrm/templates/book/edit_book.html:139 msgid "Publisher:" @@ -527,7 +511,7 @@ msgid "John Doe, Jane Smith" msgstr "Juan Nadie, Natalia Natalia" #: bookwyrm/templates/book/edit_book.html:183 -#: bookwyrm/templates/user/shelf/shelf.html:77 +#: bookwyrm/templates/user/shelf/shelf.html:78 msgid "Cover" msgstr "Portada:" @@ -557,10 +541,8 @@ msgid "ISBN 10:" msgstr "ISBN 10:" #: bookwyrm/templates/book/edit_book.html:238 -#, fuzzy -#| msgid "Openlibrary key:" msgid "Openlibrary ID:" -msgstr "Clave OpenLibrary:" +msgstr "ID OpenLibrary:" #: bookwyrm/templates/book/editions.html:4 #, python-format @@ -648,7 +630,7 @@ msgstr "Comunidad federalizada" #: 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 "Directorio" @@ -849,7 +831,7 @@ msgid "Direct Messages with %(username)s" msgstr "Mensajes directos con %(username)s" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:87 +#: bookwyrm/templates/layout.html:92 msgid "Direct Messages" msgstr "Mensajes directos" @@ -905,7 +887,6 @@ msgid "Updates" msgstr "Actualizaciones" #: bookwyrm/templates/feed/feed_layout.html:10 -#: bookwyrm/templates/layout.html:58 #: bookwyrm/templates/user/shelf/books_header.html:3 msgid "Your books" msgstr "Tus libros" @@ -960,7 +941,7 @@ msgid "What are you reading?" msgstr "¿Qué estás leyendo?" #: 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 "Buscar libros" @@ -980,7 +961,7 @@ msgstr "Puedes agregar libros cuando comiences a usar %(site_name)s." #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/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" @@ -996,7 +977,7 @@ msgid "Popular on %(site_name)s" msgstr "Popular en %(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 "No se encontró ningún libro" @@ -1108,7 +1089,7 @@ msgid "%(username)s's %(year)s Books" msgstr "Los libros de %(username)s para %(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 "Importar libros" @@ -1193,14 +1174,14 @@ msgstr "Libro" #: 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 "Título" #: 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/Autora" @@ -1242,15 +1223,19 @@ msgstr "Buscar un libro o un usuario" msgid "Main navigation menu" msgstr "Menú de navigación central" -#: bookwyrm/templates/layout.html:61 +#: bookwyrm/templates/layout.html:58 msgid "Feed" msgstr "Actividad" -#: bookwyrm/templates/layout.html:102 +#: bookwyrm/templates/layout.html:87 +msgid "Your Books" +msgstr "Tus libros" + +#: bookwyrm/templates/layout.html:97 msgid "Settings" msgstr "Configuración" -#: 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 @@ -1258,40 +1243,40 @@ msgstr "Configuración" msgid "Invites" msgstr "Invitaciones" -#: 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 "Cerrar sesión" -#: 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 "Notificaciones" -#: 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 "Nombre de usuario:" -#: bookwyrm/templates/layout.html:159 +#: bookwyrm/templates/layout.html:156 msgid "password" msgstr "contraseña" -#: 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 "¿Olvidaste tu contraseña?" -#: 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 "Iniciar sesión" -#: bookwyrm/templates/layout.html:171 +#: bookwyrm/templates/layout.html:168 msgid "Join" msgstr "Unirse" @@ -1304,8 +1289,6 @@ msgid "Contact site admin" msgstr "Contactarse con administradores del sitio" #: bookwyrm/templates/layout.html:214 -#, fuzzy -#| msgid "Django Documentation" msgid "Documentation" msgstr "Documentación de Django" @@ -1358,7 +1341,7 @@ msgid "Discard" msgstr "Desechar" #: 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 "Editar lista" @@ -1395,66 +1378,65 @@ msgstr "Cualquer usuario puede agregar libros a esta lista" #: bookwyrm/templates/lists/list.html:20 msgid "You successfully suggested a book for this list!" -msgstr "" +msgstr "¡Has sugerido un libro para esta lista exitosamente!" #: bookwyrm/templates/lists/list.html:22 -#, fuzzy -#| msgid "Anyone can add books to this list" msgid "You successfully added a book to this list!" -msgstr "Cualquer usuario puede agregar libros a esta lista" +msgstr "¡Has agregado un libro a esta lista exitosamente!" #: bookwyrm/templates/lists/list.html:28 msgid "This list is currently empty" msgstr "Esta lista está vacia" -#: bookwyrm/templates/lists/list.html:65 +#: bookwyrm/templates/lists/list.html:66 #, python-format msgid "Added by %(username)s" msgstr "Agregado por %(username)s" -#: bookwyrm/templates/lists/list.html:77 -msgid "Set" -msgstr "Establecido" - -#: bookwyrm/templates/lists/list.html:80 +#: bookwyrm/templates/lists/list.html:74 msgid "List position" msgstr "Posición" -#: bookwyrm/templates/lists/list.html:86 +#: bookwyrm/templates/lists/list.html:81 +msgid "Set" +msgstr "Establecido" + +#: bookwyrm/templates/lists/list.html:89 #: bookwyrm/templates/snippets/shelf_selector.html:26 msgid "Remove" msgstr "Quitar" -#: 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 "Ordena la lista" -#: bookwyrm/templates/lists/list.html:105 +#: bookwyrm/templates/lists/list.html:113 msgid "Direction" msgstr "Dirección" -#: bookwyrm/templates/lists/list.html:116 +#: bookwyrm/templates/lists/list.html:127 msgid "Add Books" msgstr "Agregar libros" -#: bookwyrm/templates/lists/list.html:116 +#: bookwyrm/templates/lists/list.html:129 msgid "Suggest Books" msgstr "Sugerir libros" -#: bookwyrm/templates/lists/list.html:125 +#: bookwyrm/templates/lists/list.html:140 msgid "search" msgstr "buscar" -#: bookwyrm/templates/lists/list.html:131 +#: bookwyrm/templates/lists/list.html:146 msgid "Clear search" msgstr "Borrar búsqueda" -#: bookwyrm/templates/lists/list.html:136 +#: bookwyrm/templates/lists/list.html:151 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "No se encontró ningún libro correspondiente a la búsqueda: \"%(query)s\"" -#: bookwyrm/templates/lists/list.html:164 +#: bookwyrm/templates/lists/list.html:179 msgid "Suggest" msgstr "Sugerir" @@ -1573,13 +1555,11 @@ msgstr "Borrar notificaciones" #: bookwyrm/templates/notifications.html:25 msgid "All" -msgstr "" +msgstr "Todas" #: bookwyrm/templates/notifications.html:29 -#, fuzzy -#| msgid "More options" msgid "Mentions" -msgstr "Más opciones" +msgstr "Menciones" #: bookwyrm/templates/notifications.html:70 #, python-format @@ -1680,10 +1660,8 @@ msgid " suggested adding %(book_title)s t msgstr " sugirió agregar %(book_title)s a tu lista \"%(list_name)s\"" #: bookwyrm/templates/notifications.html:128 -#, fuzzy, python-format -#| msgid "Your import completed." msgid "Your import completed." -msgstr "Tu importación ha terminado." +msgstr "Tu importación ha terminado." #: bookwyrm/templates/notifications.html:131 #, python-format @@ -1758,31 +1736,45 @@ msgstr "Perfil" msgid "Relationships" msgstr "Relaciones" +#: bookwyrm/templates/rss/title.html:5 +#: bookwyrm/templates/snippets/status/status_header.html:35 +msgid "rated" +msgstr "calificó" + +#: bookwyrm/templates/rss/title.html:7 +#: bookwyrm/templates/snippets/status/status_header.html:37 +msgid "reviewed" +msgstr "reseñó" + +#: bookwyrm/templates/rss/title.html:9 +#: bookwyrm/templates/snippets/status/status_header.html:39 +msgid "commented on" +msgstr "comentó en" + +#: bookwyrm/templates/rss/title.html:11 +#: bookwyrm/templates/snippets/status/status_header.html:41 +msgid "quoted" +msgstr "citó" + #: bookwyrm/templates/search/book.html:64 -#, fuzzy -#| msgid "Show results from other catalogues" msgid "Load results from other catalogues" -msgstr "Mostrar resultados de otros catálogos" +msgstr "Cargar resultados de otros catálogos" #: bookwyrm/templates/search/book.html:68 msgid "Manually add book" -msgstr "" +msgstr "Agregar libro a mano" #: bookwyrm/templates/search/book.html:73 msgid "Log in to import or add books." -msgstr "" +msgstr "Iniciar una sesión para importar o agregar libros" #: bookwyrm/templates/search/layout.html:16 -#, fuzzy -#| msgid "Search for a user" msgid "Search query" -msgstr "Buscar un usuario" +msgstr "Búsqueda" #: bookwyrm/templates/search/layout.html:19 -#, fuzzy -#| msgid "Search" msgid "Search type" -msgstr "Buscar" +msgstr "Tipo de búsqueda" #: bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 @@ -1799,10 +1791,8 @@ msgid "Users" msgstr "Usuarios" #: bookwyrm/templates/search/layout.html:58 -#, fuzzy, python-format -#| msgid "No lists found for \"%(query)s\"" msgid "No results found for \"%(query)s\"" -msgstr "No se encontró ningúna lista correspondiente a \"%(query)s\"" +msgstr "No se encontró ningún resultado correspondiente a \"%(query)s\"" #: bookwyrm/templates/settings/admin_layout.html:4 msgid "Administration" @@ -1856,23 +1846,18 @@ msgstr "Registración" #: bookwyrm/templates/settings/announcement.html:3 #: bookwyrm/templates/settings/announcement.html:6 -#, fuzzy -#| msgid "Announcements" msgid "Announcement" -msgstr "Anuncios" +msgstr "Anuncio" #: bookwyrm/templates/settings/announcement.html:7 #: bookwyrm/templates/settings/federated_server.html:13 -#, fuzzy -#| msgid "Back to server list" msgid "Back to list" msgstr "Volver a la lista de servidores" #: bookwyrm/templates/settings/announcement.html:11 -#, fuzzy -#| msgid "Announcements" +#: bookwyrm/templates/settings/announcement_form.html:6 msgid "Edit Announcement" -msgstr "Anuncios" +msgstr "Editar anuncio" #: bookwyrm/templates/settings/announcement.html:20 #: bookwyrm/templates/snippets/delete_readthrough_modal.html:15 @@ -1882,64 +1867,48 @@ msgstr "Eliminar" #: bookwyrm/templates/settings/announcement.html:35 msgid "Visible:" -msgstr "" +msgstr "Visible:" #: bookwyrm/templates/settings/announcement.html:38 msgid "True" -msgstr "" +msgstr "Verdadero" #: bookwyrm/templates/settings/announcement.html:40 msgid "False" -msgstr "" +msgstr "Falso" #: bookwyrm/templates/settings/announcement.html:47 -#, fuzzy -#| msgid "Birth date:" msgid "Start date:" -msgstr "Fecha de nacimiento:" +msgstr "Fecha de inicio:" #: bookwyrm/templates/settings/announcement.html:54 -#, fuzzy -#| msgid "Birth date:" msgid "End date:" -msgstr "Fecha de nacimiento:" +msgstr "Fecha final:" #: bookwyrm/templates/settings/announcement.html:60 -#, fuzzy -#| msgid "Active" msgid "Active:" -msgstr "Activ@" +msgstr "Activ@:" -#: bookwyrm/templates/settings/announcement_form.html:5 +#: bookwyrm/templates/settings/announcement_form.html:8 #: bookwyrm/templates/settings/announcements.html:8 -#, fuzzy -#| msgid "Announcements" msgid "Create Announcement" -msgstr "Anuncios" +msgstr "Crear anuncio" #: bookwyrm/templates/settings/announcements.html:22 -#, fuzzy -#| msgid "Date Added" msgid "Date added" msgstr "Fecha agregada" #: bookwyrm/templates/settings/announcements.html:26 -#, fuzzy -#| msgid "reviewed" msgid "Preview" -msgstr "reseñó" +msgstr "Vista preliminar" #: bookwyrm/templates/settings/announcements.html:30 -#, fuzzy -#| msgid "Started" msgid "Start date" -msgstr "Empezado" +msgstr "Fecha de inicio" #: bookwyrm/templates/settings/announcements.html:34 -#, fuzzy -#| msgid "Edit read dates" msgid "End date" -msgstr "Editar fechas de lectura" +msgstr "Fecha final" #: bookwyrm/templates/settings/announcements.html:38 #: bookwyrm/templates/settings/federation.html:30 @@ -1950,16 +1919,12 @@ msgid "Status" msgstr "Status" #: bookwyrm/templates/settings/announcements.html:48 -#, fuzzy -#| msgid "Inactive" msgid "active" -msgstr "Inactiv@" +msgstr "activo" #: bookwyrm/templates/settings/announcements.html:48 -#, fuzzy -#| msgid "Inactive" msgid "inactive" -msgstr "Inactiv@" +msgstr "inactivo" #: bookwyrm/templates/settings/edit_server.html:3 #: bookwyrm/templates/settings/edit_server.html:6 @@ -2202,7 +2167,7 @@ msgid "Import Blocklist" msgstr "Importar lista de bloqueo" #: bookwyrm/templates/settings/server_blocklist.html:26 -#: bookwyrm/templates/snippets/goal_progress.html:5 +#: bookwyrm/templates/snippets/goal_progress.html:7 msgid "Success!" msgstr "¡Meta logrado!" @@ -2260,7 +2225,7 @@ msgstr "Correo electrónico de administradorx:" #: bookwyrm/templates/settings/site.html:73 msgid "Additional info:" -msgstr "" +msgstr "Más informacion:" #: bookwyrm/templates/settings/site.html:83 msgid "Allow registration:" @@ -2275,10 +2240,8 @@ msgid "Registration closed text:" msgstr "Texto de registración cerrada:" #: bookwyrm/templates/snippets/announcement.html:31 -#, fuzzy, python-format -#| msgid "Added by %(username)s" msgid "Posted by %(username)s" -msgstr "Agregado por %(username)s" +msgstr "Publicado por %(username)s" #: bookwyrm/templates/snippets/book_cover.html:31 msgid "No cover" @@ -2289,19 +2252,15 @@ msgstr "Sin portada" msgid "%(title)s by " msgstr "%(title)s por " -#: bookwyrm/templates/snippets/boost_button.html:9 -#: bookwyrm/templates/snippets/boost_button.html:10 -#, fuzzy -#| msgid "boosted" +#: bookwyrm/templates/snippets/boost_button.html:20 +#: bookwyrm/templates/snippets/boost_button.html:21 msgid "Boost" -msgstr "respaldó" +msgstr "Respaldar" -#: bookwyrm/templates/snippets/boost_button.html:16 -#: bookwyrm/templates/snippets/boost_button.html:17 -#, fuzzy -#| msgid "Un-boost status" +#: bookwyrm/templates/snippets/boost_button.html:33 +#: bookwyrm/templates/snippets/boost_button.html:34 msgid "Un-boost" -msgstr "Status de des-respaldo" +msgstr "Des-respaldar" #: bookwyrm/templates/snippets/content_warning_field.html:3 msgid "Spoiler alert:" @@ -2339,10 +2298,8 @@ msgid "Reply" msgstr "Respuesta" #: bookwyrm/templates/snippets/create_status_form.html:56 -#, fuzzy -#| msgid "Footer Content" msgid "Content" -msgstr "Contenido del pie de página" +msgstr "Contenido" #: bookwyrm/templates/snippets/create_status_form.html:80 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:16 @@ -2391,17 +2348,15 @@ msgstr "¿Eliminar estas fechas de lectura?" msgid "You are deleting this readthrough and its %(count)s associated progress updates." msgstr "Estás eliminando esta lectura y sus %(count)s actualizaciones de progreso asociados." -#: bookwyrm/templates/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 "" +msgstr "Me gusta" -#: bookwyrm/templates/snippets/fav_button.html:17 #: bookwyrm/templates/snippets/fav_button.html:18 -#, fuzzy -#| msgid "Un-like status" +#: bookwyrm/templates/snippets/fav_button.html:19 msgid "Un-like" -msgstr "Quitar me gusta de status" +msgstr "Quitar me gusta" #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:7 msgid "Show filters" @@ -2440,6 +2395,14 @@ msgstr "Aceptar" msgid "No rating" msgstr "No calificación" +#: 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] "%(rating)s estrella" +msgstr[1] "%(rating)s estrellas" + #: bookwyrm/templates/snippets/generated_status/goal.html:1 #, python-format msgid "set a goal to read %(counter)s book in %(year)s" @@ -2494,17 +2457,17 @@ msgstr "Compartir con tu feed" msgid "Set goal" msgstr "Establecer meta" -#: bookwyrm/templates/snippets/goal_progress.html:7 +#: bookwyrm/templates/snippets/goal_progress.html:9 #, python-format msgid "%(percent)s%% complete!" msgstr "%(percent)s%% terminado!" -#: 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 "Has leído %(read_count)s de %(goal_count)s libros." -#: 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 ha leído %(read_count)s de %(goal_count)s libros." @@ -2515,8 +2478,6 @@ 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" @@ -2614,26 +2575,6 @@ msgstr "Inscribirse" msgid "Report" msgstr "Reportar" -#: bookwyrm/templates/snippets/rss_title.html:5 -#: bookwyrm/templates/snippets/status/status_header.html:35 -msgid "rated" -msgstr "calificó" - -#: bookwyrm/templates/snippets/rss_title.html:7 -#: bookwyrm/templates/snippets/status/status_header.html:37 -msgid "reviewed" -msgstr "reseñó" - -#: bookwyrm/templates/snippets/rss_title.html:9 -#: bookwyrm/templates/snippets/status/status_header.html:39 -msgid "commented on" -msgstr "comentó en" - -#: bookwyrm/templates/snippets/rss_title.html:11 -#: bookwyrm/templates/snippets/status/status_header.html:41 -msgid "quoted" -msgstr "citó" - #: bookwyrm/templates/snippets/search_result_text.html:36 msgid "Import book" msgstr "Importar libro" @@ -2706,7 +2647,7 @@ msgstr "Eliminar status" #: bookwyrm/templates/snippets/status/layout.html:51 #: bookwyrm/templates/snippets/status/layout.html:52 msgid "Boost status" -msgstr "Status de respaldo" +msgstr "Respaldar status" #: bookwyrm/templates/snippets/status/layout.html:55 #: bookwyrm/templates/snippets/status/layout.html:56 @@ -2803,7 +2744,7 @@ msgstr "Editar estante" msgid "Update shelf" msgstr "Actualizar estante" -#: 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 "Todos los libros" @@ -2811,30 +2752,30 @@ msgstr "Todos los libros" msgid "Create shelf" msgstr "Crear estante" -#: bookwyrm/templates/user/shelf/shelf.html:61 +#: bookwyrm/templates/user/shelf/shelf.html:62 msgid "Edit shelf" msgstr "Editar estante" -#: 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 "Archivado" -#: 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 "Empezado" -#: 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 "Terminado" -#: bookwyrm/templates/user/shelf/shelf.html:137 +#: bookwyrm/templates/user/shelf/shelf.html:138 msgid "This shelf is empty." msgstr "Este estante está vacio." -#: bookwyrm/templates/user/shelf/shelf.html:143 +#: bookwyrm/templates/user/shelf/shelf.html:144 msgid "Delete shelf" msgstr "Eliminar estante" @@ -2881,13 +2822,10 @@ msgid "%(counter)s following" msgstr "%(counter)s siguiendo" #: bookwyrm/templates/user/user_preview.html:26 -#, fuzzy, python-format -#| msgid "%(mutuals)s follower you follow" -#| msgid_plural "%(mutuals)s followers you follow" msgid "%(mutuals_display)s follower you follow" msgid_plural "%(mutuals_display)s followers you follow" -msgstr[0] "%(mutuals)s seguidor que sigues" -msgstr[1] "%(mutuals)s seguidores que sigues" +msgstr[0] "%(mutuals_display)s seguidor que sigues" +msgstr[1] "%(mutuals_display)s seguidores que sigues" #: bookwyrm/templates/user_admin/user.html:9 msgid "Back to users" @@ -2957,10 +2895,8 @@ msgid "Access level:" msgstr "Nivel de acceso:" #: bookwyrm/views/import_data.py:67 -#, fuzzy -#| msgid "Enter a valid value." msgid "Not a valid csv file" -msgstr "Ingrese un valor válido." +msgstr "No un archivo csv válido" #: bookwyrm/views/password.py:32 msgid "No user with that email address was found." @@ -2981,7 +2917,6 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "Show" #~ msgstr "Mostrar más" -#, python-format #~ msgid "ambiguous option: %(option)s could match %(matches)s" #~ msgstr "opción ambiguo: %(option)s pudiera coincidir con %(matches)s" @@ -3033,25 +2968,20 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "Enter only digits separated by commas." #~ msgstr "Ingrese solo digitos separados por comas." -#, python-format #~ msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." #~ msgstr "Asegura que este valor es %(limit_value)s (es %(show_value)s)." -#, python-format #~ msgid "Ensure this value is less than or equal to %(limit_value)s." #~ msgstr "Asegura que este valor es menor que o iguala a %(limit_value)s." -#, python-format #~ msgid "Ensure this value is greater than or equal to %(limit_value)s." #~ msgstr "Asegura que este valor es más que o que iguala a %(limit_value)s." -#, python-format #~ msgid "Ensure this value has at least %(limit_value)d character (it has %(show_value)d)." #~ msgid_plural "Ensure this value has at least %(limit_value)d characters (it has %(show_value)d)." #~ msgstr[0] "Verifica que este valor tiene por lo menos %(limit_value)d carácter. (Tiene %(show_value)d).)" #~ msgstr[1] "Verifica que este valor tiene por lo menos %(limit_value)d caracteres. (Tiene %(show_value)d).)" -#, python-format #~ msgid "Ensure this value has at most %(limit_value)d character (it has %(show_value)d)." #~ msgid_plural "Ensure this value has at most %(limit_value)d characters (it has %(show_value)d)." #~ msgstr[0] "Verifica que este valor tiene a lo sumo %(limit_value)d carácter. (Tiene %(show_value)d).)" @@ -3060,26 +2990,22 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "Enter a number." #~ msgstr "Ingrese un número." -#, python-format #~ msgid "Ensure that there are no more than %(max)s digit in total." #~ msgid_plural "Ensure that there are no more than %(max)s digits in total." #~ msgstr[0] "Verifica que no hay más que %(max)s digito en total." #~ msgstr[1] "Verifica que no hay más que %(max)s digitos en total." # is -#, python-format #~ msgid "Ensure that there are no more than %(max)s decimal place." #~ msgid_plural "Ensure that there are no more than %(max)s decimal places." #~ msgstr[0] "Verifica que no hay más que %(max)s cifra decimal." #~ msgstr[1] "Verifica que no hay más que %(max)s cifras decimales." -#, python-format #~ msgid "Ensure that there are no more than %(max)s digit before the decimal point." #~ msgid_plural "Ensure that there are no more than %(max)s digits before the decimal point." #~ msgstr[0] "Verifica que no hay más que %(max)s digito antes de la coma decimal." #~ msgstr[1] "Verifica que no hay más que %(max)s digitos antes de la coma decimal." -#, python-format #~ msgid "File extension “%(extension)s” is not allowed. Allowed extensions are: %(allowed_extensions)s." #~ msgstr "No se permite la extensión de archivo “%(extension)s”. Extensiones permitidas son: %(allowed_extensions)s." @@ -3089,11 +3015,9 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "and" #~ msgstr "y" -#, python-format #~ msgid "%(model_name)s with this %(field_labels)s already exists." #~ msgstr "Ya existe %(model_name)s con este %(field_labels)s." -#, python-format #~ msgid "Value %(value)r is not a valid choice." #~ msgstr "El valor %(value)s no es una opción válida." @@ -3103,67 +3027,56 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "This field cannot be blank." #~ msgstr "Este campo no puede ser vacio." -#, fuzzy, python-format +#, fuzzy #~| msgid "%(model_name)s with this %(field_label)s already exists." #~ msgid "%(model_name)s with this %(field_label)s already exists." #~ msgstr "Ya existe %(model_name)s con este %(field_labels)s." -#, python-format #~ msgid "%(field_label)s must be unique for %(date_field_label)s %(lookup_type)s." #~ msgstr "%(field_label)s deben ser unicos por %(date_field_label)s %(lookup_type)s." -#, python-format #~ msgid "Field of type: %(field_type)s" #~ msgstr "Campo de tipo: %(field_type)s" -#, python-format #~ msgid "“%(value)s” value must be either True or False." #~ msgstr "“%(value)s” valor debe ser o verdadero o falso." -#, python-format #~ msgid "“%(value)s” value must be either True, False, or None." #~ msgstr "%(value)s” valor debe ser o True, False, o None." #~ msgid "Boolean (Either True or False)" #~ msgstr "Booleano (O True O False)" -#, python-format #~ msgid "String (up to %(max_length)s)" #~ msgstr "Cadena (máximo de %(max_length)s caracteres)" #~ msgid "Comma-separated integers" #~ msgstr "Enteros separados por comas" -#, python-format #~ msgid "“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD format." #~ msgstr "“%(value)s” valor tiene un formato de fecha inválido. Hay que estar de formato YYYY-MM-DD." -#, python-format #~ msgid "“%(value)s” value has the correct format (YYYY-MM-DD) but it is an invalid date." #~ msgstr "“%(value)s” valor tiene el formato correcto (YYYY-MM-DD) pero la fecha es invalida." #~ msgid "Date (without time)" #~ msgstr "Fecha (sin la hora)" -#, python-format #~ msgid "“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format." #~ msgstr "“%(value)s” valor tiene un formato invalido. Debe estar en formato YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]." -#, python-format #~ msgid "“%(value)s” value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but it is an invalid date/time." #~ msgstr "“%(value)s” valor tiene el formato correcto (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) pero es una fecha/hora invalida." #~ msgid "Date (with time)" #~ msgstr "Fecha (con la hora)" -#, python-format #~ msgid "“%(value)s” value must be a decimal number." #~ msgstr "El valor de “%(value)s” debe ser un número decimal." #~ msgid "Decimal number" #~ msgstr "Número decimal" -#, python-format #~ msgid "“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[.uuuuuu] format." #~ msgstr "“%(value)s” valor tiene un formato invalido. Debe estar en formato [DD] [[HH:]MM:]ss[.uuuuuu]." @@ -3176,14 +3089,12 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "File path" #~ msgstr "Ruta de archivo" -#, python-format #~ msgid "“%(value)s” value must be a float." #~ msgstr "%(value)s no es un usuario válido" #~ msgid "Floating point number" #~ msgstr "Número de coma flotante" -#, python-format #~ msgid "“%(value)s” value must be an integer." #~ msgstr "“%(value)s” valor debe ser un entero." @@ -3199,7 +3110,6 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "IP address" #~ msgstr "Dirección IP" -#, python-format #~ msgid "“%(value)s” value must be either None, True or False." #~ msgstr "Valor “%(value)s” debe ser o None, True, o False." @@ -3212,7 +3122,6 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "Positive small integer" #~ msgstr "Entero positivo pequeño " -#, python-format #~ msgid "Slug (up to %(max_length)s)" #~ msgstr "Slug (máximo de %(max_length)s)" @@ -3222,11 +3131,9 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "Text" #~ msgstr "Texto" -#, python-format #~ msgid "“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format." #~ msgstr "“%(value)s” valor tiene un formato invalido. Debe estar en formato HH:MM[:ss[.uuuuuu]]." -#, python-format #~ msgid "“%(value)s” value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid time." #~ msgstr "“%(value)s” valor tiene el formato correcto (HH:MM[:ss[.uuuuuu]]) pero es una hora invalida." @@ -3239,7 +3146,6 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "Raw binary data" #~ msgstr "Datos binarios sin procesar" -#, python-format #~ msgid "“%(value)s” is not a valid UUID." #~ msgstr "%(value)s no es una UUID válida." @@ -3252,7 +3158,6 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "Image" #~ msgstr "Imágen" -#, python-format #~ msgid "%(model)s instance with %(field)s %(value)r does not exist." #~ msgstr "%(model)s instancia con %(field)s %(value)r no existe." @@ -3262,11 +3167,9 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "One-to-one relationship" #~ msgstr "Relación uno-a-uno" -#, python-format #~ msgid "%(from)s-%(to)s relationship" #~ msgstr "relación %(from)s-%(to)s" -#, python-format #~ msgid "%(from)s-%(to)s relationships" #~ msgstr "relaciones %(from)s-%(to)s" @@ -3291,7 +3194,6 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "Enter a valid duration." #~ msgstr "Ingrese una duración válida." -#, python-brace-format #~ msgid "The number of days must be between {min_days} and {max_days}." #~ msgstr "El número de dias debe ser entre {min_days} y {max_days}." @@ -3304,7 +3206,6 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "The submitted file is empty." #~ msgstr "El archivo enviado está vacio." -#, python-format #~ msgid "Ensure this filename has at most %(max)d character (it has %(length)d)." #~ msgid_plural "Ensure this filename has at most %(max)d characters (it has %(length)d)." #~ msgstr[0] "Verifica que este nombre de archivo no tiene más que %(max)d carácter. (Tiene %(length)d)." @@ -3316,7 +3217,6 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." #~ msgstr "Subir una imagen válida. El archivo que subiste o no fue imagen o fue corrupto." -#, python-format #~ msgid "Select a valid choice. %(value)s is not one of the available choices." #~ msgstr "Selecciona una opción válida. %(value)s no es una de las opciones disponibles." @@ -3332,20 +3232,17 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid ":" #~ msgstr ":" -#, python-format #~ msgid "(Hidden field %(name)s) %(error)s" #~ msgstr "(Campo oculto %(name)s) %(error)s" #~ msgid "ManagementForm data is missing or has been tampered with" #~ msgstr "Datos de ManagementForm está ausento o ha sido corrompido" -#, python-format #~ msgid "Please submit %d or fewer forms." #~ msgid_plural "Please submit %d or fewer forms." #~ msgstr[0] "Por favor, enviar %d o menos formularios." #~ msgstr[1] "Por favor, enviar %d o menos formularios." -#, python-format #~ msgid "Please submit %d or more forms." #~ msgid_plural "Please submit %d or more forms." #~ msgstr[0] "Por favor, enviar %d o más formularios." @@ -3358,15 +3255,12 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" # if verb # msgstr "Pedido" # if noun -#, python-format #~ msgid "Please correct the duplicate data for %(field)s." #~ msgstr "Por favor corrige los datos duplicados en %(field)s." -#, python-format #~ msgid "Please correct the duplicate data for %(field)s, which must be unique." #~ msgstr "Por favor corrige los datos duplicados en %(field)s, los cuales deben ser unicos." -#, python-format #~ msgid "Please correct the duplicate data for %(field_name)s which must be unique for the %(lookup)s in %(date_field)s." #~ msgstr "Por favor corrige los datos duplicados en %(field_name)s los cuales deben ser unicos por el %(lookup)s en %(date_field)s." @@ -3379,11 +3273,9 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "Select a valid choice. That choice is not one of the available choices." #~ msgstr "Selecciona una opción válida. Esa opción no es una de las opciones disponibles." -#, python-format #~ msgid "“%(pk)s” is not a valid value." #~ msgstr "“%(pk)s” no es un valor válido." -#, python-format #~ msgid "%(datetime)s couldn’t be interpreted in time zone %(current_timezone)s; it may be ambiguous or it may not exist." #~ msgstr "%(datetime)s no se pudo interpretar en la zona horaria %(current_timezone)s; puede ser ambiguo o puede que no exista." @@ -3408,29 +3300,23 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "yes,no,maybe" #~ msgstr "sí,no,quizás" -#, python-format #~ msgid "%(size)d byte" #~ msgid_plural "%(size)d bytes" #~ msgstr[0] "%(size)d byte" #~ msgstr[1] "%(size)d bytes" -#, python-format #~ msgid "%s KB" #~ msgstr "%s KB" -#, python-format #~ msgid "%s MB" #~ msgstr "%s MB" -#, python-format #~ msgid "%s GB" #~ msgstr "%s GB" -#, python-format #~ msgid "%s TB" #~ msgstr "%s TB" -#, python-format #~ msgid "%s PB" #~ msgstr "%s PB" @@ -3665,7 +3551,6 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "This is not a valid IPv6 address." #~ msgstr "Esta no es una dirección IPv6 válida." -#, python-format #~ msgctxt "String to return when truncating text" #~ msgid "%(truncated_text)s…" #~ msgstr "%(truncated_text)s…" @@ -3676,37 +3561,31 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid ", " #~ msgstr ", " -#, python-format #~ msgid "%d year" #~ msgid_plural "%d years" #~ msgstr[0] "%d año" #~ msgstr[1] "%d años" -#, python-format #~ msgid "%d month" #~ msgid_plural "%d months" #~ msgstr[0] "%d mes" #~ msgstr[1] "%d meses" -#, python-format #~ msgid "%d week" #~ msgid_plural "%d weeks" #~ msgstr[0] "%d semana" #~ msgstr[1] "%d semanas" -#, python-format #~ msgid "%d day" #~ msgid_plural "%d days" #~ msgstr[0] "%d día" #~ msgstr[1] "%d días" -#, python-format #~ msgid "%d hour" #~ msgid_plural "%d hours" #~ msgstr[0] "%d hora" #~ msgstr[1] "%d horas" -#, python-format #~ msgid "%d minute" #~ msgid_plural "%d minutes" #~ msgstr[0] "%d minuto" @@ -3757,55 +3636,45 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "No week specified" #~ msgstr "Ninguna semana fue especificado" -#, python-format #~ msgid "No %(verbose_name_plural)s available" #~ msgstr "No %(verbose_name_plural)s disponible" -#, python-format #~ msgid "Future %(verbose_name_plural)s not available because %(class_name)s.allow_future is False." #~ msgstr "%(verbose_name_plural)s del futuro no está disponible porque %(class_name)s.allow_future es False." -#, python-format #~ msgid "Invalid date string “%(datestr)s” given format “%(format)s”" #~ msgstr "Cadena de fecha invalida “%(datestr)s” dado el formato “%(format)s”" -#, python-format #~ msgid "No %(verbose_name)s found matching the query" #~ msgstr "No se encontró ningún %(verbose_name)s correspondiente a la búsqueda" #~ msgid "Page is not “last”, nor can it be converted to an int." #~ msgstr "Página no es “last”, ni puede ser convertido en un int." -#, python-format #~ msgid "Invalid page (%(page_number)s): %(message)s" #~ msgstr "Página invalida (%(page_number)s): %(message)s" -#, python-format #~ msgid "Empty list and “%(class_name)s.allow_empty” is False." #~ msgstr "Lista vacia y “%(class_name)s.allow_empty” es False." #~ msgid "Directory indexes are not allowed here." #~ msgstr "Indices directorios no se permiten aquí." -#, python-format #~ msgid "“%(path)s” does not exist" #~ msgstr "“%(path)s” no existe" -#, python-format #~ msgid "Index of %(directory)s" #~ msgstr "Indice de %(directory)s" #~ msgid "Django: the Web framework for perfectionists with deadlines." #~ msgstr "Django: el estructura Web para perfeccionistas con fechas límites." -#, python-format #~ msgid "View release notes for Django %(version)s" #~ msgstr "Ver notas de lanzamiento por Django %(version)s" #~ msgid "The install worked successfully! Congratulations!" #~ msgstr "¡La instalación fue exitoso! ¡Felicidades!" -#, python-format #~ msgid "You are seeing this page because DEBUG=True is in your settings file and you have not configured any URLs." #~ msgstr "Estás viendo esta pagina porque DEBUG=True está en tu archivo de configuración y no has configurado ningún URL." @@ -3827,15 +3696,12 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "Connect, get help, or contribute" #~ msgstr "Conectarse, encontrar ayuda, o contribuir" -#, python-format #~ msgid "Attempting to connect to qpid with SASL mechanism %s" #~ msgstr "Intentando conectar con qpid con mecanismo SASL %s" -#, python-format #~ msgid "Connected to qpid with SASL mechanism %s" #~ msgstr "Conectado con qpid con mecanismo SASL %s" -#, python-format #~ msgid "Unable to connect to qpid with SASL mechanism %s" #~ msgstr "No se pudo conectar con qpid con mecanismo SASL %s" @@ -3848,7 +3714,6 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "1 hour ago" #~ msgstr "Hace 1 hora" -#, python-format #~ msgid "%(time)s" #~ msgstr "%(time)s" @@ -3857,45 +3722,36 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" # TODO cc @mouse this could be grammatically incorrect if the time said 1 o'clock # a working clock is broken twice a day! -#, python-format #~ msgid "yesterday at %(time)s" #~ msgstr "ayer a las %(time)s" -#, python-format #~ msgid "%(weekday)s" #~ msgstr "%(weekday)s" # TODO cc @mouse this could be grammatically incorrect if the time said 1 o'clock # a working clock is broken twice a day! -#, python-format #~ msgid "%(weekday)s at %(time)s" #~ msgstr "%(weekday)s a las %(time)s" -#, python-format #~ msgid "%(month_name)s %(day)s" #~ msgstr "%(day)s %(month_name)s" # TODO cc @mouse this could be grammatically incorrect if the time said 1 o'clock # a working clock is broken twice a day! -#, python-format #~ msgid "%(month_name)s %(day)s at %(time)s" #~ msgstr "%(day)s %(month_name)s a las %(time)s" -#, python-format #~ msgid "%(month_name)s %(day)s, %(year)s" #~ msgstr "%(day)s %(month_name)s, %(year)s" # TODO cc @mouse this could be grammatically incorrect if the time said 1 o'clock # a working clock is broken twice a day! -#, python-format #~ msgid "%(month_name)s %(day)s, %(year)s at %(time)s" #~ msgstr "%(day)s %(month_name)s, %(year)s a las %(time)s" -#, python-format #~ msgid "%(weekday)s, %(month_name)s %(day)s" #~ msgstr "%(weekday)s, %(day)s %(month_name)s" -#, python-format #~ msgid "%(commas)s and %(last)s" #~ msgstr "%(commas)s y %(last)s" @@ -3924,29 +3780,18 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "Matching Users" #~ msgstr "Usuarios correspondientes" -#, python-format #~ msgid "Set a reading goal for %(year)s" #~ msgstr "Establecer una meta de lectura para %(year)s" -#, python-format #~ msgid "by %(author)s" #~ msgstr "por %(author)s" -#, python-format -#~ msgid "%(rating)s star" -#~ msgid_plural "%(rating)s stars" -#~ msgstr[0] "%(rating)s estrella" -#~ msgstr[1] "%(rating)s estrellas" - -#, python-format #~ msgid "replied to %(username)s's review" #~ msgstr "respondió a la reseña de %(username)s " -#, python-format #~ msgid "replied to %(username)s's comment" #~ msgstr "respondió al comentario de %(username)s " -#, python-format #~ msgid "replied to %(username)s's quote" #~ msgstr "respondió a la cita de %(username)s " From c894f5ef3546e3d6d5bb2a24d52ead1826662a6c Mon Sep 17 00:00:00 2001 From: Fabien Basmaison Date: Wed, 26 May 2021 13:21:06 +0200 Subject: [PATCH 18/94] Update subtitle behaviour: - on Book - Remove problematic punctuation (locale and multiple punctuation if the title ends with `?`, `!` or similar). - Update view. - Use proper semantic to split combined title into `name`, `alternativeHeadline` and series-related microdata. - The author is not a subtitle, just data. - Use parenthesis in the `get_title` filter instead of punctuation. --- bookwyrm/templates/book/book.html | 39 ++++++++++++++++++------------ bookwyrm/templatetags/utilities.py | 2 +- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index af2230200..94f326e65 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -8,28 +8,35 @@

-

- - {{ book.title }}{% if book.subtitle %}: - {{ book.subtitle }} +

+ {{ book.title }} +

+ + {% if book.subtitle or book.series %} +

+ {% if book.subtitle %} + + + {{ book.subtitle }} {% endif %} - - {% if book.series %} - - + {% if book.series %} + + - ({{ book.series }} {% if book.series_number %} #{{ book.series_number }}{% endif %}) - -
- {% endif %} -

+ {% endif %} +

+ {% endif %} + {% if book.authors %} -

- {% trans "by" %} {% include 'snippets/authors.html' with book=book %} -

+
+ {% trans "by" %} {% include 'snippets/authors.html' with book=book %} +
{% endif %}
diff --git a/bookwyrm/templatetags/utilities.py b/bookwyrm/templatetags/utilities.py index 68befa54a..ae66ca6e1 100644 --- a/bookwyrm/templatetags/utilities.py +++ b/bookwyrm/templatetags/utilities.py @@ -25,7 +25,7 @@ def get_title(book): return "" title = book.title if len(title) < 6 and book.subtitle: - title = "{:s}: {:s}".format(title, book.subtitle) + title = "{:s} ({:s})".format(title, book.subtitle) return title From 97d1830952ec5d3f0f95f5e90b786661ab1e9607 Mon Sep 17 00:00:00 2001 From: Joachim Date: Wed, 26 May 2021 16:06:51 +0200 Subject: [PATCH 19/94] Apply review suggestions --- locale/fr_FR/LC_MESSAGES/django.mo | Bin 45409 -> 45401 bytes locale/fr_FR/LC_MESSAGES/django.po | 14 +++++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index 349ef43a8322a5be7b4efa8c969d8185f70d36b7..b893b1287e9b958ea2c5cc78708ab547f378d4b4 100644 GIT binary patch delta 4717 zcmXZfdtBGm9mnyn$X!%GQ9wZmh?|%s7j?rjl^)YfF)tyGvWKX+ypf2^;;Z6B^Dd?m zu7FlJG}PE^7CBv;m*mm*5PbO9+*G{e+(Uh2OC71S*V}XcdY*H>-|zW+&gY!-L)$NV z{Qa`Wfq@~ezvDQcE^!<`{1f_M3&vm@2IBuP82ySJr!V$L_0zBqK9Bt|-;OWGUi3F% z8rESqJcr?U1--Dd*m0c!G(49&P7jR5o;U=(ag^cei!948JVFd0XoR=5yV!E#i> zn^2W`2P1J0_QeyZgDt2D_)2?Go{!M-$%{=IqLmZj3mBuoyHUBO{YI5q5@{4N}7w>yFyf{i%=CP z!(q4?74VdO-iq3)i>QTNN4?*H+H?OEX5LVAHE{xsXiP<|>?MrExu`v>Kuy$WJ!(CJ zO7tqKV)s$~9xKg4qEX``P!*VhBXKe6FgLBF{+jqO1KQius1>%OR(=b$l1HdB;kC+a zK_IGx15hO%f_k2do;V9NPa&!@#i;jP9Eg>u#E!0_B+B?41EKgIR7JX$J5CY?pgzn* zjgLcBXfj4)Au7;%)ZXqyEoeV#-edN88*2Vbs58}pdf(SwZ5~9SRxk{e@n}?uUPJ|& zjH<*^RDd#!z%8gijhKeVP@WJlyJL)6mK$;ato^1^P2;OIlFZ z@G|PX8>qnFp#lW1ahx!WMU9U@B{&1M;sw?UjH6$Jn&&tY$94WnLz$gJ9g^FqTi{<| zN)(S8e+CC&9%|y{7=YU`9BWZ4Yqp-marE0T6{FUg?Ep#`!(`kH0 zLx(72gL#mEN%XT(D_M*xeFbWQdejfe0n~d(P!+s^+GEd+CSVe(0zW~`KLLI4HPiy; zZKVF1u-p!8Kuz!=>ci7G5HI3T4A^8!HwN{58g|29pw37MDv?U;fsLpNet}xZH#i(0 zqHa~DemYZVRVk-6`>b+^0 zjIW>)UhmS-4@x~MP_y+o2GaiXf}yCh@DysIbX0&GR0VQTD_nxbm>|Rhh3)D{4azyocJ74h%w{?Iy7>)D|Y95_%SU zU=HdGy^5Nz3VZ7Qe?UVeX~IPO9DCt4)QcUcL)!Hnvv&cgiVelVn1f1S6>5dsQGshQ z3O~Vt*ovxzv%|a>ihXteQ2<2 zCsmnW&M_E5eU#ScA&60mJYx>Q=O(0)LCDPzS04 z0lQ5CF{tk*pq}TW5?_p(cMYl%TTr*^BkYGCyEOc1oU#wvP%Ax;s>~JC1mB}p)QOrn z_}6AU9@S5^{cPKxh`JpGs1?6~GjIhyf&W7N(Q=*l%*1i1jE12moPtVh9;#Hus9&@? z9D~ttvC%;i4myZ zfoxPl<4`4@irVu+RAox78!?)GEow`?M4hcOsP8XeB;LUOy8pg)W}-M$$j~)=wCo3?Dv6LU>F7w--)52lBc7#V5}bC zY*gT7_W1@>Lba%g4`3=bqb9zMs$3@yK;Pe(c@t0xXQ7@?L?t{O-Jj8zOXDT{1m8k$ zeqBm&HD+QbreMZL{JRZjq58@7=D$?A7)5^_CSU_Uc!_9h<@@CWoop97{Jh(7cqtZ}Hbk%IX+47p~` zF4T7iF%dt*moexn4Xq&SpgDBUH-*L5jrUku(A2!-?Jgb#Z!~2uof_u3VBvzOruR1g z(8a4DYSGN1$~zO2Dvxgs_ZhjUpyCw+R?m$9 delta 4715 zcmXZgdsLT29>?*Ai(Ex6f&v0@krWZ|2AY>#Br}eti8ritqX5GtSP?8z`#}+lB?)O8 zW*DNbB9`Xw6sg&+shm9SS#$Gjx#3onwytfp8>{A#)4o5>{Pmid=Xqwn-|x))IC`Pi z^Q&IZgQFu{{*L2xRXUD5j=p#XlkgJ^!Rr`?epQY$6o;Yu<8cVyi!r#&jz5iq={Mp8 z+<}4kH;l$!9Dw~*j?1}&hSwU$8H7m~jN{N7XW0HM)WSw|Nf*)6Xl5V+KSNdGdsHAdP#^j| z*n+>H0&02M1o{T55^hw0?_&_U&eG7r7g3R3LS@#E$~<(fnJ5YM-YC>U<1id^PpQ(PhBFYo&MYt;Rnl3g4DwI`Ek$k76Q}^5Lj|zK z_B*Uc?D!efcVFUE?86KkyPmnR0R36t>7b!Z-KYwj!XbDORpLHWCSK2&{t(o{$+kZk zwNS3@FGFQqiaIlEa2URhn*Tl2`yXQ*>pS1jNJK9>F?c6x!5mac7o+yB7**0%NP>FqmdjA?~&wXpmybUW<84v z^ea@w`fNY2)+7>#8lQryKptje8R{?}tfl^%_+19Hw;!Q0{0A!Yf1xtDi8>RW&zda= zLX|KERpK$I=ZjIl8wIF&icyuRK)t^XM`IHzuw&0s5@m3nfk^xoRT1YoPCEFbKAeCW zzYkTR`IvyksD&C(d%Fdd(08i4*Vx)L#FD3f%j7^Iaq=<9JlS6RoZs8p>=QK92dQg^r`P(OenH{#C!rAoC;aH4qFyGHZRk$3(bpNYqXo8KX4EEro zcnY;8BR80d$D=Zyj=CKSa6VSxa6E}B{S{Q@Zlc}~dBMy(9KGq!KvifK4r6_1DGfiY zLLYnvbvT~Kk=TklwcR)Xe?nE@XVhT|d(l)P0ki0*qi#!khV-Oy-o<^1QQ&dL(wEl<+=my?{-c6=rxv2N@ zFclv}1zhi_-u4Ej;GWpJ}O3!_jIjX^Ci2UUTEs0_p)^!L z_uwF0ggQfosQFqkSoePq4VA77Q}B;C7_XpS>_;6^-&f4ug`g@n702KrQ~>p;3|mkO z@5Xq17f0i#s7iSM-nUk4sStH=-7P6%~1#?O(v%^m|c%{~KO46Ml&L z?ksAnE}+iFCDc3~EoPknRN#r|QsfJ0-2QuyVf5?p_QI&=ZFc++>JXj6A@~Jqp=+p9 z?YY(Lc{&Er&&3E_h}wdcs7hC371nO0{wmdV1~if1Yv#pp)DKP)hGP!u!+ca=kKlYP zK`nd~btu0@Rp2^m3q7_OBT(O^ptfinYD=bXqyCvRN*U0H?WhI!V-y}o-HOjq6Wl;m z$m4ZWfpAm+si+K>pq>|_=BY-_`x2@WEvQ@d77oLATr^awbM`?GD$}n~mAQ(V;1(() zpH?$*G-^D<_V2R&xwfB=x*boTGG2=hV*@7QCDb1+m)~|XaT+S3Y*ggSP=QsTO0^#K zi?$DE;t!aInQxdw+kp4ee;=bUppAdLU@~gK$57X|9v{NJ7^(a3y~A9mSk(Q`LS;4; zRf&61zXNko0WCn4csXj%SD`9XYkdV1=y#yD;i>UlmY;78GwOXIgR z7T^(FkAwJism6^s5qn>_=z1~w9njzM^KTkLT!=D_FqFE`g?I498}Le+m}h4y)Ij<`xv8ALIMbAKjRa$L#obsIB`S z&PM;Y%sh)w*RabP?mEDKCNQuH^}!(w!fqUa=TW!f77j$ugJ$7iR6i1ZG1;1iIvbg| z9J7&Y=Cq*#K8z{&A?9P~cQlm2%(u;OUm3kH{JBu zyuJCp&<83`bgU^^T~$z8vbvzMq`b`i@8$;I0eL4nR+PHeZB6$KoL5m;URG9A5nov3 KKCo?H#Qy<(&C9m{ diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index 6b4fe8f05..a96f9d76d 100644 --- a/locale/fr_FR/LC_MESSAGES/django.po +++ b/locale/fr_FR/LC_MESSAGES/django.po @@ -1392,7 +1392,7 @@ msgstr "Ajouté par %(username)s" #: bookwyrm/templates/lists/list.html:77 msgid "Set" -msgstr "Régler" +msgstr "Appliquer" #: bookwyrm/templates/lists/list.html:80 msgid "List position" @@ -1405,7 +1405,7 @@ msgstr "Retirer" #: bookwyrm/templates/lists/list.html:99 bookwyrm/templates/lists/list.html:111 msgid "Sort List" -msgstr "Ordonner de la liste" +msgstr "Trier la liste" #: bookwyrm/templates/lists/list.html:105 msgid "Direction" @@ -1551,7 +1551,7 @@ msgstr "Supprimer les notifications" #: bookwyrm/templates/notifications.html:25 msgid "All" -msgstr "Tout" +msgstr "Toutes" #: bookwyrm/templates/notifications.html:29 msgid "Mentions" @@ -1885,7 +1885,7 @@ msgstr "Date de fin :" #: bookwyrm/templates/settings/announcement.html:60 msgid "Active:" -msgstr "Actif :" +msgstr "Active :" #: bookwyrm/templates/settings/announcement_form.html:8 #: bookwyrm/templates/settings/announcements.html:8 @@ -1898,7 +1898,7 @@ msgstr "Date d’ajout" #: bookwyrm/templates/settings/announcements.html:26 msgid "Preview" -msgstr "Prévisualisation" +msgstr "Aperçu" #: bookwyrm/templates/settings/announcements.html:30 msgid "Start date" @@ -2240,7 +2240,7 @@ msgstr "Texte affiché lorsque les enregistrements sont clos :" #: bookwyrm/templates/snippets/announcement.html:31 #, python-format msgid "Posted by %(username)s" -msgstr "Publié par %(username)s" +msgstr "Publiée par %(username)s" #: bookwyrm/templates/snippets/book_cover.html:31 msgid "No cover" @@ -2897,7 +2897,7 @@ msgstr "Niveau d’accès :" #: bookwyrm/views/import_data.py:67 msgid "Not a valid csv file" -msgstr "Fichier CSV invalide" +msgstr "Fichier CSV non valide" #: bookwyrm/views/password.py:32 msgid "No user with that email address was found." From 2816d7cc88a5f671bb4a66cdec59ac22bfed4b89 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 1 Jun 2021 14:28:53 -0700 Subject: [PATCH 20/94] Use "instance" consistently --- bookwyrm/templates/layout.html | 2 +- bookwyrm/templates/moderation/reports.html | 4 +- bookwyrm/templates/settings/admin_layout.html | 2 +- bookwyrm/templates/settings/edit_server.html | 8 +- bookwyrm/templates/settings/federation.html | 10 +- .../templates/settings/server_blocklist.html | 8 +- .../templates/user_admin/server_filter.html | 2 +- bookwyrm/templates/user_admin/user_admin.html | 4 +- locale/de_DE/LC_MESSAGES/django.po | 269 +++++++++-------- locale/en_US/LC_MESSAGES/django.po | 221 +++++++------- locale/es/LC_MESSAGES/django.po | 107 ++++--- locale/fr_FR/LC_MESSAGES/django.po | 223 ++++++++------ locale/zh_Hans/LC_MESSAGES/django.po | 274 ++++++++++-------- 13 files changed, 651 insertions(+), 483 deletions(-) diff --git a/bookwyrm/templates/layout.html b/bookwyrm/templates/layout.html index d899d62cb..56530a841 100644 --- a/bookwyrm/templates/layout.html +++ b/bookwyrm/templates/layout.html @@ -203,7 +203,7 @@

- {% 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/settings/admin_layout.html b/bookwyrm/templates/settings/admin_layout.html index 635e86072..9e57076bf 100644 --- a/bookwyrm/templates/settings/admin_layout.html +++ b/bookwyrm/templates/settings/admin_layout.html @@ -36,7 +36,7 @@

  • {% url 'settings-federation' as url %} - {% trans "Federated Servers" %} + {% trans "Federated Instances" %}
  • {% endif %} diff --git a/bookwyrm/templates/settings/edit_server.html b/bookwyrm/templates/settings/edit_server.html index c5702c848..d7ca3a788 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/user_admin/server_filter.html b/bookwyrm/templates/user_admin/server_filter.html
    index fd8760cce..2a4b89fdb 100644
    --- a/bookwyrm/templates/user_admin/server_filter.html
    +++ b/bookwyrm/templates/user_admin/server_filter.html
    @@ -2,6 +2,6 @@
     {% load i18n %}
     
     {% block filter %}
    -
    +
     
     {% endblock %}
    diff --git a/bookwyrm/templates/user_admin/user_admin.html b/bookwyrm/templates/user_admin/user_admin.html
    index 2ab526a9f..4b4c79793 100644
    --- a/bookwyrm/templates/user_admin/user_admin.html
    +++ b/bookwyrm/templates/user_admin/user_admin.html
    @@ -4,7 +4,7 @@
     
     {% block header %}
     {% if server %}
    -{% blocktrans with server_name=server.server_name %}Users: {{ server_name }}{% endblocktrans %}
    +{% blocktrans with instance_name=server.server_name %}Users: {{ instance_name }}{% endblocktrans %}
     Clear filters
     {% else %}
     {% trans "Users" %}
    @@ -35,7 +35,7 @@
                 {% include 'snippets/table-sort-header.html' with field="is_active" sort=sort text=text %}
             
             
    -            {% 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/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po
    index 40f770b56..9649dc149 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-01 14:49-0700\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"
    @@ -2664,17 +2697,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 +2820,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 +3002,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 +3012,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 +3097,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 +3121,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 +3172,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 +3193,27 @@ msgstr "Dieser Benutzename ist bereits vergeben."
     msgid "A password reset link sent to %s"
     msgstr ""
     
    +#, fuzzy, python-format
    +#~| 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\\"
    diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po
    index 1fa5eb304..7d1044b2b 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-01 14:49-0700\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 ""
     
    @@ -2427,17 +2452,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 +2571,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 +2740,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 +2748,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 +2830,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 +2847,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 +2891,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.po b/locale/es/LC_MESSAGES/django.po
    index cbf07ea50..012d1e138 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-01 14:49-0700\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
    @@ -1526,8 +1528,9 @@ msgid "Resolve"
     msgstr "Resolver"
     
     #: bookwyrm/templates/moderation/reports.html:6
    -#, python-format
    -msgid "Reports: %(server_name)s"
    +#, fuzzy, python-format
    +#| msgid "Reports: %(server_name)s"
    +msgid "Reports: %(instance_name)s"
     msgstr "Informes: %(server_name)s"
     
     #: bookwyrm/templates/moderation/reports.html:8
    @@ -1537,9 +1540,10 @@ msgid "Reports"
     msgstr "Informes"
     
     #: bookwyrm/templates/moderation/reports.html:14
    -#, python-format
    -msgid "Reports: %(server_name)s"
    -msgstr "Informes: %(server_name)s"
    +#, fuzzy, python-format
    +#| msgid "Users: %(server_name)s"
    +msgid "Reports: %(instance_name)s"
    +msgstr "Usuarios %(server_name)s"
     
     #: bookwyrm/templates/moderation/reports.html:28
     msgid "Resolved"
    @@ -1660,6 +1664,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 +1796,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 +1811,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 +1941,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 +2057,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 +2254,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"
     
    @@ -2395,14 +2410,6 @@ msgstr "Aceptar"
     msgid "No rating"
     msgstr "No calificación"
     
    -#: 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] "%(rating)s estrella"
    -msgstr[1] "%(rating)s estrellas"
    -
     #: bookwyrm/templates/snippets/generated_status/goal.html:1
     #, python-format
     msgid "set a goal to read %(counter)s book in %(year)s"
    @@ -2478,6 +2485,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 +2831,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"
    @@ -2832,8 +2842,9 @@ msgid "Back to users"
     msgstr "Volver a usuarios"
     
     #: bookwyrm/templates/user_admin/user_admin.html:7
    -#, python-format
    -msgid "Users: %(server_name)s"
    +#, fuzzy, python-format
    +#| msgid "Users: %(server_name)s"
    +msgid "Users: %(instance_name)s"
     msgstr "Usuarios %(server_name)s"
     
     #: bookwyrm/templates/user_admin/user_admin.html:22
    @@ -2850,8 +2861,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 +2907,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 +2924,28 @@ 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"
     
    +#, python-format
    +#~ msgid "Reports: %(server_name)s"
    +#~ msgstr "Informes: %(server_name)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"
    +
    +#, python-format
    +#~ msgid "%(rating)s star"
    +#~ msgid_plural "%(rating)s stars"
    +#~ msgstr[0] "%(rating)s estrella"
    +#~ msgstr[1] "%(rating)s estrellas"
    +
     #, fuzzy
     #~| msgid "BookWyrm users"
     #~ msgid "BookWyrm\\"
    diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po
    index a96f9d76d..71b154ba1 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-01 14:49-0700\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: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 "简化字"
     
    @@ -367,7 +367,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 +381,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"
     
    @@ -511,7 +511,7 @@ 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/user/shelf/shelf.html:78
     msgid "Cover"
     msgstr "Couverture"
     
    @@ -630,7 +630,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 +831,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 +887,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 +941,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 +961,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 +977,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 +1089,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"
     
    @@ -1175,14 +1174,14 @@ msgstr "Livre"
     
     #: 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 "Titre"
     
     #: 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 "Auteur ou autrice"
     
    @@ -1224,15 +1223,21 @@ 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
    +#, fuzzy
    +#| msgid "Your books"
    +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 +1245,63 @@ 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"
    +#: bookwyrm/templates/layout.html:206
    +#, fuzzy
    +#| msgid "About this server"
    +msgid "About this instance"
     msgstr "À propos de ce serveur"
     
    -#: 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 +1345,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 +1392,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"
     
    @@ -1522,8 +1530,9 @@ msgid "Resolve"
     msgstr "Résoudre"
     
     #: bookwyrm/templates/moderation/reports.html:6
    -#, python-format
    -msgid "Reports: %(server_name)s"
    +#, fuzzy, python-format
    +#| msgid "Reports: %(server_name)s"
    +msgid "Reports: %(instance_name)s"
     msgstr "Signalements : %(server_name)s"
     
     #: bookwyrm/templates/moderation/reports.html:8
    @@ -1533,9 +1542,10 @@ msgid "Reports"
     msgstr "Signalements"
     
     #: bookwyrm/templates/moderation/reports.html:14
    -#, python-format
    -msgid "Reports: %(server_name)s"
    -msgstr "Signalements: %(server_name)s"
    +#, fuzzy, python-format
    +#| msgid "Users: %(server_name)s"
    +msgid "Reports: %(instance_name)s"
    +msgstr "Comptes : %(server_name)s"
     
     #: bookwyrm/templates/moderation/reports.html:28
     msgid "Resolved"
    @@ -1803,7 +1813,9 @@ 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"
    +#, fuzzy
    +#| msgid "Federated Servers"
    +msgid "Federated Instances"
     msgstr "Serveurs fédérés"
     
     #: bookwyrm/templates/settings/admin_layout.html:44
    @@ -1931,12 +1943,16 @@ 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"
    +#, fuzzy
    +#| msgid "View instance"
    +msgid "Add instance"
    +msgstr "Voir l’instance"
     
     #: 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 "Retour à la liste des serveurs"
     
     #: bookwyrm/templates/settings/edit_server.html:16
    @@ -2043,8 +2059,10 @@ 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"
    +#, fuzzy
    +#| msgid "Instance Name:"
    +msgid "Instance name"
    +msgstr "Nom de l’instance :"
     
     #: bookwyrm/templates/settings/federation.html:23
     msgid "Date federated"
    @@ -2394,14 +2412,6 @@ msgstr "Accepter"
     msgid "No rating"
     msgstr "Aucune note"
     
    -#: 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] "%(rating)s étoile"
    -msgstr[1] "%(rating)s étoiles"
    -
     #: bookwyrm/templates/snippets/generated_status/goal.html:1
     #, python-format
     msgid "set a goal to read %(counter)s book in %(year)s"
    @@ -2752,30 +2762,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"
     
    @@ -2833,8 +2843,9 @@ msgid "Back to users"
     msgstr "Retour aux comptes"
     
     #: bookwyrm/templates/user_admin/user_admin.html:7
    -#, python-format
    -msgid "Users: %(server_name)s"
    +#, fuzzy, python-format
    +#| msgid "Users: %(server_name)s"
    +msgid "Users: %(instance_name)s"
     msgstr "Comptes : %(server_name)s"
     
     #: bookwyrm/templates/user_admin/user_admin.html:22
    @@ -2851,8 +2862,10 @@ msgid "Last Active"
     msgstr "Dernière activité"
     
     #: bookwyrm/templates/user_admin/user_admin.html:38
    -msgid "Remote server"
    -msgstr "Serveur distant"
    +#, fuzzy
    +#| msgid "View instance"
    +msgid "Remote instance"
    +msgstr "Voir l’instance"
     
     #: bookwyrm/templates/user_admin/user_admin.html:47
     msgid "Active"
    @@ -2895,6 +2908,10 @@ msgstr "Rétablir le compte"
     msgid "Access level:"
     msgstr "Niveau d’accès :"
     
    +#: 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 "Fichier CSV non valide"
    @@ -2908,6 +2925,28 @@ msgstr "Aucun compte avec cette adresse email n’a été trouvé."
     msgid "A password reset link sent to %s"
     msgstr "Un lien de réinitialisation a été envoyé à %s."
     
    +#, python-format
    +#~ msgid "Reports: %(server_name)s"
    +#~ msgstr "Signalements: %(server_name)s"
    +
    +#~ msgid "Federated Servers"
    +#~ msgstr "Serveurs fédérés"
    +
    +#~ msgid "Server name"
    +#~ msgstr "Nom du serveur"
    +
    +#~ msgid "Add server"
    +#~ msgstr "Ajouter un serveur"
    +
    +#~ msgid "Remote server"
    +#~ msgstr "Serveur distant"
    +
    +#, python-format
    +#~ msgid "%(rating)s star"
    +#~ msgid_plural "%(rating)s stars"
    +#~ msgstr[0] "%(rating)s étoile"
    +#~ msgstr[1] "%(rating)s étoiles"
    +
     #, fuzzy
     #~| msgid "BookWyrm users"
     #~ msgid "BookWyrm\\"
    diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po
    index 0ec8b1d88..56b424a4a 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-01 14:49-0700\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 "推荐"
     
    @@ -1557,8 +1565,9 @@ msgid "Resolve"
     msgstr "已解决"
     
     #: bookwyrm/templates/moderation/reports.html:6
    -#, python-format
    -msgid "Reports: %(server_name)s"
    +#, fuzzy, python-format
    +#| msgid "Reports: %(server_name)s"
    +msgid "Reports: %(instance_name)s"
     msgstr "报告: %(server_name)s"
     
     #: bookwyrm/templates/moderation/reports.html:8
    @@ -1568,9 +1577,10 @@ msgid "Reports"
     msgstr "报告"
     
     #: bookwyrm/templates/moderation/reports.html:14
    -#, python-format
    -msgid "Reports: %(server_name)s"
    -msgstr "报告: %(server_name)s"
    +#, fuzzy, python-format
    +#| msgid "Users: %(server_name)s"
    +msgid "Reports: %(instance_name)s"
    +msgstr "用户: %(server_name)s"
     
     #: bookwyrm/templates/moderation/reports.html:28
     msgid "Resolved"
    @@ -1771,6 +1781,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 +1858,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 +1914,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 +1956,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 +2015,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 +2138,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 +2268,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 +2357,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 +2459,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"
    @@ -2522,17 +2559,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 +2678,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 +2849,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 +2857,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 "删除书架"
     
    @@ -2923,8 +2940,9 @@ msgid "Back to users"
     msgstr "回到报告"
     
     #: bookwyrm/templates/user_admin/user_admin.html:7
    -#, python-format
    -msgid "Users: %(server_name)s"
    +#, fuzzy, python-format
    +#| msgid "Users: %(server_name)s"
    +msgid "Users: %(instance_name)s"
     msgstr "用户: %(server_name)s"
     
     #: bookwyrm/templates/user_admin/user_admin.html:22
    @@ -2941,8 +2959,10 @@ msgid "Last Active"
     msgstr "最后或缺"
     
     #: bookwyrm/templates/user_admin/user_admin.html:38
    -msgid "Remote server"
    -msgstr "移除服务器"
    +#, fuzzy
    +#| msgid "Instance Name:"
    +msgid "Remote instance"
    +msgstr "实例名称"
     
     #: bookwyrm/templates/user_admin/user_admin.html:47
     msgid "Active"
    @@ -2989,6 +3009,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 +3028,24 @@ msgstr "没有找到使用该邮箱的用户。"
     msgid "A password reset link sent to %s"
     msgstr "密码重置连接已发送给 %s"
     
    +#, python-format
    +#~ 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\\"
    
    From 5d2f01d7ffef9bccda2ea75500ba3aa4f18b18cc Mon Sep 17 00:00:00 2001
    From: Mouse Reeve 
    Date: Tue, 1 Jun 2021 14:51:57 -0700
    Subject: [PATCH 21/94] Updates locales
    
    ---
     locale/de_DE/LC_MESSAGES/django.mo   | Bin 24502 -> 24354 bytes
     locale/de_DE/LC_MESSAGES/django.po   |   2 +-
     locale/en_US/LC_MESSAGES/django.po   |   2 +-
     locale/es/LC_MESSAGES/django.mo      | Bin 43765 -> 42979 bytes
     locale/es/LC_MESSAGES/django.po      |   2 +-
     locale/fr_FR/LC_MESSAGES/django.mo   | Bin 45401 -> 44654 bytes
     locale/fr_FR/LC_MESSAGES/django.po   |   2 +-
     locale/zh_Hans/LC_MESSAGES/django.mo | Bin 36590 -> 36011 bytes
     locale/zh_Hans/LC_MESSAGES/django.po |   2 +-
     9 files changed, 5 insertions(+), 5 deletions(-)
    
    diff --git a/locale/de_DE/LC_MESSAGES/django.mo b/locale/de_DE/LC_MESSAGES/django.mo
    index 089ac656a8b3cf4cdb6fdbabd8127cd33bb6afab..dde00be621032b841673a440278b1fb305361245 100644
    GIT binary patch
    delta 7362
    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
    RVXbQN2OSHkNvL={{C|FM-#q{T
    
    delta 7503
    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\n"
     "Language-Team: English \n"
    diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po
    index 7d1044b2b..b88dad088 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-06-01 14:49-0700\n"
    +"POT-Creation-Date: 2021-06-01 14:50-0700\n"
     "PO-Revision-Date: 2021-02-28 17:19-0800\n"
     "Last-Translator: Mouse Reeve \n"
     "Language-Team: English \n"
    diff --git a/locale/es/LC_MESSAGES/django.mo b/locale/es/LC_MESSAGES/django.mo
    index 0e5df226ff94914032c35b735f32bebe7ae3630e..ea8dada7bc1a39ae38e7c218be0b586dae3ac452 100644
    GIT binary patch
    delta 13312
    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
    
    delta 13996
    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
    
    diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po
    index 012d1e138..eee94c1f4 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-06-01 14:49-0700\n"
    +"POT-Creation-Date: 2021-06-01 14:50-0700\n"
     "PO-Revision-Date: 2021-03-19 11:49+0800\n"
     "Last-Translator: FULL NAME \n"
     "Language-Team: LANGUAGE \n"
    diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo
    index b893b1287e9b958ea2c5cc78708ab547f378d4b4..29020216d94cec7b210cab035fcb6aecfbf08b73 100644
    GIT binary patch
    delta 13288
    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
    IN_N2i1I$B2_y7O^
    
    delta 14009
    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
    
    diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po
    index 71b154ba1..6fc145d17 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-06-01 14:49-0700\n"
    +"POT-Creation-Date: 2021-06-01 14:50-0700\n"
     "PO-Revision-Date: 2021-04-05 12:44+0100\n"
     "Last-Translator: Fabien Basmaison \n"
     "Language-Team: Mouse Reeve \n"
    diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo
    index 17b3df6956342292739f79d1aa1f47e4e6dd7793..496caabcf282089a8988b0acb1f577dc27ddbe8a 100644
    GIT binary patch
    delta 11507
    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
    l0sh`2gF^zn*R%SB)yQhRSoQDW7KAffhGVgWU
    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
    WQAz$$^ETW_+4HZP+mMtl^Zx;wXZ9=r
    
    diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po
    index 56b424a4a..ef5cd2da4 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-06-01 14:49-0700\n"
    +"POT-Creation-Date: 2021-06-01 14:50-0700\n"
     "PO-Revision-Date: 2021-03-20 00:56+0000\n"
     "Last-Translator: Kana \n"
     "Language-Team: Mouse Reeve \n"
    
    From 3301de5e5453845a9977372a4ae64eee4df25787 Mon Sep 17 00:00:00 2001
    From: Mouse Reeve 
    Date: Wed, 2 Jun 2021 07:21:18 -0700
    Subject: [PATCH 22/94] Update locale/fr_FR/LC_MESSAGES/django.po
    
    Co-authored-by: Joachim 
    ---
     locale/fr_FR/LC_MESSAGES/django.po | 4 +---
     1 file changed, 1 insertion(+), 3 deletions(-)
    
    diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po
    index 6fc145d17..562d2ffed 100644
    --- a/locale/fr_FR/LC_MESSAGES/django.po
    +++ b/locale/fr_FR/LC_MESSAGES/django.po
    @@ -1530,10 +1530,8 @@ msgid "Resolve"
     msgstr "Résoudre"
     
     #: bookwyrm/templates/moderation/reports.html:6
    -#, fuzzy, python-format
    -#| msgid "Reports: %(server_name)s"
     msgid "Reports: %(instance_name)s"
    -msgstr "Signalements : %(server_name)s"
    +msgstr "Signalements : %(instance_name)s"
     
     #: bookwyrm/templates/moderation/reports.html:8
     #: bookwyrm/templates/moderation/reports.html:17
    
    From 34b93679f0b952723d696563ad0cab9d3224fa4b Mon Sep 17 00:00:00 2001
    From: Mouse Reeve 
    Date: Wed, 2 Jun 2021 07:21:32 -0700
    Subject: [PATCH 23/94] Update locale/fr_FR/LC_MESSAGES/django.po
    
    Co-authored-by: Joachim 
    ---
     locale/fr_FR/LC_MESSAGES/django.po | 4 +---
     1 file changed, 1 insertion(+), 3 deletions(-)
    
    diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po
    index 562d2ffed..23308c8ba 100644
    --- a/locale/fr_FR/LC_MESSAGES/django.po
    +++ b/locale/fr_FR/LC_MESSAGES/django.po
    @@ -1283,10 +1283,8 @@ msgid "Join"
     msgstr "Rejoindre"
     
     #: bookwyrm/templates/layout.html:206
    -#, fuzzy
    -#| msgid "About this server"
     msgid "About this instance"
    -msgstr "À propos de ce serveur"
    +msgstr "À propos de cette instance"
     
     #: bookwyrm/templates/layout.html:210
     msgid "Contact site admin"
    
    From 7d1e4aebbc03346a15a5078f879d3c4dbfc48373 Mon Sep 17 00:00:00 2001
    From: Joachim 
    Date: Wed, 2 Jun 2021 18:17:53 +0200
    Subject: [PATCH 24/94] Better forms
    
    ---
     bookwyrm/templates/author/edit_author.html    |  98 ++++---
     bookwyrm/templates/book/edit_book.html        | 266 +++++++++++-------
     bookwyrm/templates/import.html                |   4 +-
     bookwyrm/templates/import_status.html         |  36 +--
     bookwyrm/templates/settings/edit_server.html  |  12 +-
     bookwyrm/templates/settings/site.html         |  36 +--
     .../templates/snippets/readthrough_form.html  |   8 +-
     .../shelve_button/finish_reading_modal.html   |   8 +-
     .../shelve_button/start_reading_modal.html    |   6 +-
     .../clearable_file_input_with_warning.html    |  25 +-
     bookwyrm/templatetags/utilities.py            |  13 +
     11 files changed, 314 insertions(+), 198 deletions(-)
    
    diff --git a/bookwyrm/templates/author/edit_author.html b/bookwyrm/templates/author/edit_author.html
    index 010d36efc..103341bfd 100644
    --- a/bookwyrm/templates/author/edit_author.html
    +++ b/bookwyrm/templates/author/edit_author.html
    @@ -29,67 +29,85 @@
         

    {% trans "Metadata" %}

    -

    {{ form.name }}

    - {% for error in form.name.errors %} -

    {{ error | escape }}

    - {% endfor %} +
    + + {{ form.name }} + {% for error in form.name.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    +

    {{ form.aliases }} {% trans "Separate multiple values with commas." %} -

    - {% for error in form.aliases.errors %} -

    {{ error | escape }}

    - {% endfor %} + {% for error in form.aliases.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    {{ form.bio }}

    - {% for error in form.bio.errors %} -

    {{ error | escape }}

    - {% endfor %} +
    + + {{ form.bio }} + {% for error in form.bio.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    {{ form.wikipedia_link }}

    +

    {{ form.wikipedia_link }}

    {% for error in form.wikipedia_link.errors %}

    {{ error | escape }}

    {% endfor %} -

    +

    -

    - {% for error in form.born.errors %} -

    {{ error | escape }}

    - {% endfor %} + {% for error in form.born.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    +

    -

    - {% for error in form.died.errors %} -

    {{ error | escape }}

    - {% endfor %} + {% for error in form.died.errors %} +

    {{ error | escape }}

    + {% endfor %} +

    {% trans "Author Identifiers" %}

    -

    {{ form.openlibrary_key }}

    - {% for error in form.openlibrary_key.errors %} -

    {{ error | escape }}

    - {% endfor %} +
    + + {{ form.openlibrary_key }} + {% for error in form.openlibrary_key.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    {{ form.inventaire_id }}

    - {% for error in form.inventaire_id.errors %} -

    {{ error | escape }}

    - {% endfor %} +
    + + {{ form.inventaire_id }} + {% for error in form.inventaire_id.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    {{ form.librarything_key }}

    - {% for error in form.librarything_key.errors %} -

    {{ error | escape }}

    - {% endfor %} +
    + + {{ form.librarything_key }} + {% for error in form.librarything_key.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    {{ form.goodreads_key }}

    - {% for error in form.goodreads_key.errors %} -

    {{ error | escape }}

    - {% endfor %} +
    + + {{ form.goodreads_key }} + {% for error in form.goodreads_key.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    diff --git a/bookwyrm/templates/book/edit_book.html b/bookwyrm/templates/book/edit_book.html index 8dae1d044..32018a251 100644 --- a/bookwyrm/templates/book/edit_book.html +++ b/bookwyrm/templates/book/edit_book.html @@ -14,11 +14,25 @@ {% endif %} {% if book %} -
    -

    {% trans "Added:" %} {{ book.created_date | naturaltime }}

    -

    {% trans "Updated:" %} {{ book.updated_date | naturaltime }}

    -

    {% trans "Last edited by:" %} {{ book.last_edited_by.display_name }}

    -
    +
    +
    +
    {% trans "Added:" %}
    +
    {{ book.created_date | naturaltime }}
    +
    + +
    +
    {% trans "Updated:" %}
    +
    {{ book.updated_date | naturaltime }}
    +
    + + {% if book.last_edited_by %} +
    +
    {% trans "Last edited by:" %}
    +
    {{ book.last_edited_by.display_name }}
    +
    + {% endif %} + +
    {% endif %} @@ -38,21 +52,28 @@ {% if confirm_mode %}

    {% trans "Confirm Book Info" %}

    -
    +
    {% if author_matches %}
    {% for author in author_matches %} -
    - {% blocktrans with name=author.name %}Is "{{ name }}" an existing author?{% endblocktrans %} +
    + + {% blocktrans with name=author.name %}Is "{{ name }}" an existing author?{% endblocktrans %} + {% with forloop.counter0 as counter %} {% for match in author.matches %} - +

    {% blocktrans with book_title=match.book_set.first.title %}Author of {{ book_title }}{% endblocktrans %}

    {% endfor %} - + {% endwith %}
    {% endfor %} @@ -64,11 +85,17 @@ {% if not book %}
    - {% trans "Is this an edition of an existing work?" %} + + {% trans "Is this an edition of an existing work?" %} + {% for match in book_matches %} - + {% endfor %} - +
    {% endif %} @@ -89,76 +116,79 @@

    {% trans "Metadata" %}

    -

    +

    -

    - {% for error in form.title.errors %} -

    {{ error | escape }}

    - {% endfor %} + {% for error in form.title.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    +

    -

    - {% for error in form.subtitle.errors %} -

    {{ error | escape }}

    - {% endfor %} + {% for error in form.subtitle.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    {{ form.description }}

    - {% for error in form.description.errors %} -

    {{ error | escape }}

    - {% endfor %} +
    + + {{ form.description }} + {% for error in form.description.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    +

    -

    - {% for error in form.series.errors %} -

    {{ error | escape }}

    - {% endfor %} + {% for error in form.series.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    +

    {{ form.series_number }} -

    - {% for error in form.series_number.errors %} -

    {{ error | escape }}

    - {% endfor %} + {% for error in form.series_number.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    +

    {{ form.languages }} {% trans "Separate multiple values with commas." %} -

    - {% for error in form.languages.errors %} -

    {{ error | escape }}

    - {% endfor %} + {% for error in form.languages.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    +

    {{ form.publishers }} {% trans "Separate multiple values with commas." %} -

    - {% for error in form.publishers.errors %} -

    {{ error | escape }}

    - {% endfor %} + {% for error in form.publishers.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    +

    -

    - {% for error in form.first_published_date.errors %} -

    {{ error | escape }}

    - {% endfor %} + {% for error in form.first_published_date.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    +

    -

    - {% for error in form.published_date.errors %} -

    {{ error | escape }}

    - {% endfor %} + {% for error in form.published_date.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    @@ -166,16 +196,23 @@ {% if book.authors.exists %}
    {% for author in book.authors.all %} - +
    + +

    + {% blocktrans with name=author.name %}Author page for {{ name }}{% endblocktrans %} +

    +
    {% endfor %}
    {% endif %} - - - {% trans "Separate multiple values with commas." %} +
    + + + {% trans "Separate multiple values with commas." %} +
    @@ -188,17 +225,17 @@
    -

    +

    {{ form.cover }} -

    +
    {% if book %} -

    +

    -

    +
    {% endif %} {% for error in form.cover.errors %}

    {{ error | escape }}

    @@ -209,51 +246,72 @@

    {% trans "Physical Properties" %}

    -

    {{ form.physical_format }}

    - {% for error in form.physical_format.errors %} -

    {{ error | escape }}

    - {% endfor %} - {% for error in form.physical_format.errors %} -

    {{ error | escape }}

    - {% endfor %} +
    + + {{ form.physical_format }} + {% for error in form.physical_format.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    {{ form.pages }}

    - {% for error in form.pages.errors %} -

    {{ error | escape }}

    - {% endfor %} +
    + + {{ form.pages }} + {% for error in form.pages.errors %} +

    {{ error | escape }}

    + {% endfor %} +

    {% trans "Book Identifiers" %}

    -

    {{ form.isbn_13 }}

    - {% for error in form.isbn_13.errors %} -

    {{ error | escape }}

    - {% endfor %} +
    + + {{ form.isbn_13 }} + {% for error in form.isbn_13.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    {{ form.isbn_10 }}

    - {% for error in form.isbn_10.errors %} -

    {{ error | escape }}

    - {% endfor %} +
    + + {{ form.isbn_10 }} + {% for error in form.isbn_10.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    {{ form.openlibrary_key }}

    - {% for error in form.openlibrary_key.errors %} -

    {{ error | escape }}

    - {% endfor %} +
    + + {{ form.openlibrary_key }} + {% for error in form.openlibrary_key.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    {{ form.inventaire_id }}

    - {% for error in form.inventaire_id.errors %} -

    {{ error | escape }}

    - {% endfor %} +
    + + {{ form.inventaire_id }} + {% for error in form.inventaire_id.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    {{ form.oclc_number }}

    - {% for error in form.oclc_number.errors %} -

    {{ error | escape }}

    - {% endfor %} +
    + + {{ form.oclc_number }} + {% for error in form.oclc_number.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    -

    {{ form.asin }}

    - {% for error in form.ASIN.errors %} -

    {{ error | escape }}

    - {% endfor %} +
    + + {{ form.asin }} + {% for error in form.ASIN.errors %} +

    {{ error | escape }}

    + {% endfor %} +
    @@ -261,7 +319,7 @@ {% if not confirm_mode %} {% endif %} diff --git a/bookwyrm/templates/import.html b/bookwyrm/templates/import.html index 2b7d69e10..d2e407486 100644 --- a/bookwyrm/templates/import.html +++ b/bookwyrm/templates/import.html @@ -41,8 +41,8 @@
    -
    diff --git a/bookwyrm/templates/import_status.html b/bookwyrm/templates/import_status.html index b1145611d..ff80ad71c 100644 --- a/bookwyrm/templates/import_status.html +++ b/bookwyrm/templates/import_status.html @@ -8,13 +8,17 @@

    {% trans "Import Status" %}

    -

    - {% trans "Import started:" %} {{ job.created_date | naturaltime }} -

    - {% if job.complete %} -

    - {% trans "Import completed:" %} {{ task.date_done | naturaltime }} -

    +
    +
    +
    {% trans "Import started:" %}
    +
    {{ job.created_date | naturaltime }}
    +
    + {% if job.complete %} +
    +
    {% trans "Import completed:" %}
    +
    {{ task.date_done | naturaltime }}
    +
    +
    {% elif task.failed %}
    {% trans "TASK FAILED" %}
    {% endif %} @@ -22,8 +26,9 @@
    {% if not job.complete %} - {% trans "Import still in progress." %}

    + {% trans "Import still in progress." %} +
    {% trans "(Hit reload to update!)" %}

    {% endif %} @@ -49,16 +54,13 @@
      {% for item in failed_items %} -
    • - - -

      +

    • + +
    • {% endfor %}
    diff --git a/bookwyrm/templates/settings/edit_server.html b/bookwyrm/templates/settings/edit_server.html index c5702c848..04585fe59 100644 --- a/bookwyrm/templates/settings/edit_server.html +++ b/bookwyrm/templates/settings/edit_server.html @@ -26,14 +26,14 @@ {% csrf_token %}
    -
    +
    {% for error in form.server_name.errors %}

    {{ error | escape }}

    {% endfor %}
    -
    +
    {% for error in form.application_type.errors %}

    {{ error | escape }}

    {% endfor %}
    -
    +
    {% for error in form.application_version.errors %} @@ -60,10 +60,10 @@
    -

    +

    -

    +
    diff --git a/bookwyrm/templates/settings/site.html b/bookwyrm/templates/settings/site.html index 1b9424527..d36371a41 100644 --- a/bookwyrm/templates/settings/site.html +++ b/bookwyrm/templates/settings/site.html @@ -11,23 +11,23 @@ {% csrf_token %}

    {% trans "Instance Info" %}

    -
    +
    {{ site_form.name }}
    -
    +
    {{ site_form.instance_tagline }}
    -
    +
    {{ site_form.instance_description }}
    -
    +
    {{ site_form.code_of_conduct }}
    -
    +
    {{ site_form.privacy_policy }}
    @@ -57,19 +57,19 @@