From 29ebfc456d4e584b11cc993e67e9f84410524bc2 Mon Sep 17 00:00:00 2001 From: Joel Bradshaw Date: Sun, 9 Jan 2022 23:57:57 -0800 Subject: [PATCH 01/88] Use run --rm instead of exec for initdb This way we don't depend on the containers already being up and running. --- bw-dev | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bw-dev b/bw-dev index 6bf5a125e..29c2660da 100755 --- a/bw-dev +++ b/bw-dev @@ -30,12 +30,12 @@ function execweb { } function initdb { - execweb python manage.py migrate - execweb python manage.py initdb + runweb python manage.py migrate + runweb python manage.py initdb } function makeitblack { - docker-compose run --rm web black celerywyrm bookwyrm + runweb black celerywyrm bookwyrm } function awscommand { From 284eb620dd413fd2327d8d90778f556c1c3da503 Mon Sep 17 00:00:00 2001 From: Joel Bradshaw Date: Thu, 20 Jan 2022 22:37:03 -0800 Subject: [PATCH 02/88] Add Source Han font for preview generation to Docker image Include the license and a README explaining things in the repo itself. Depending on an external source for this is intended to be temporary, the goal is to have a Bookywrm-managed source for these, but this should be stable enough for now. We build it into the Dockerfile to make it available without adding it to the git repo itself, because git history is forever and we don't want to bake large files into the history. Theoretically it would make sense to gate this download on the ENABLE_PREVIEW_IMAGES environment variable, but ENV variables aren't available at Docker image build time (for sensible reasons), so we just unconditonally download it. This does mean users will ultimately download it anyway, but the benefit to doing this over adding it to the git history is that if we switch fonts, or update this one, or change strategies altogether, this version of the font will no longer have to be downloaded. Additionally, the font won't be downloaded until the application is actually built, which involves a bunch of other downloading (of Docker images and the like), so it's a reasonable time to do it. --- Dockerfile | 7 ++ .../static/fonts/source_han_sans/LICENSE.txt | 96 +++++++++++++++++++ .../static/fonts/source_han_sans/README.txt | 9 ++ 3 files changed, 112 insertions(+) create mode 100644 bookwyrm/static/fonts/source_han_sans/LICENSE.txt create mode 100644 bookwyrm/static/fonts/source_han_sans/README.txt diff --git a/Dockerfile b/Dockerfile index 349dd82b1..8a24e8883 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,6 +6,13 @@ RUN mkdir /app /app/static /app/images WORKDIR /app +# Use RUN curl because ADD will re-download the file every time to make sure it +# hasn't changed, which is exactly what we don't want +RUN mkdir -p /app/static/fonts/source_han_sans +RUN curl \ + https://github.com/adobe-fonts/source-han-sans/raw/release/Variable/OTC/SourceHanSans-VF.ttf.ttc \ + -o /app/static/fonts/source_han_sans/SourceHanSans-VF.ttf.ttc + COPY requirements.txt /app/ RUN pip install -r requirements.txt --no-cache-dir RUN apt-get update && apt-get install -y gettext libgettextpo-dev tidy && apt-get clean diff --git a/bookwyrm/static/fonts/source_han_sans/LICENSE.txt b/bookwyrm/static/fonts/source_han_sans/LICENSE.txt new file mode 100644 index 000000000..ddf7b7e91 --- /dev/null +++ b/bookwyrm/static/fonts/source_han_sans/LICENSE.txt @@ -0,0 +1,96 @@ +Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font +Name 'Source'. Source is a trademark of Adobe in the United States +and/or other countries. + +This Font Software is licensed under the SIL Open Font License, +Version 1.1. + +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font +creation efforts of academic and linguistic communities, and to +provide a free and open framework in which fonts may be shared and +improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply to +any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software +components as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, +deleting, or substituting -- in part or in whole -- any of the +components of the Original Version, by changing formats or by porting +the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, +modify, redistribute, and sell modified and unmodified copies of the +Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in +Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the +corresponding Copyright Holder. This restriction only applies to the +primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created using +the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/bookwyrm/static/fonts/source_han_sans/README.txt b/bookwyrm/static/fonts/source_han_sans/README.txt new file mode 100644 index 000000000..53cfa9b8f --- /dev/null +++ b/bookwyrm/static/fonts/source_han_sans/README.txt @@ -0,0 +1,9 @@ +The font file itself is not included in the Git repository to avoid putting +large files in the repo history. The Docker image should download the correct +font into this folder automatically. + +In case something goes wrong, the font used is the Variable OTC TTF, available +as of this writing from the Adobe Fonts GitHub repository: +https://github.com/adobe-fonts/source-han-sans/tree/release#user-content-variable-otcs + +BookWyrm expects the file to be in this folder, named SourceHanSans-VF.ttf.ttc From 6f5115c716a4443726e7b0dd31ae6e16d412d1ce Mon Sep 17 00:00:00 2001 From: Joachim Date: Wed, 19 Jan 2022 16:52:57 +0100 Subject: [PATCH 03/88] Use Source Han Sans for preview images generation --- bookwyrm/preview_images.py | 18 ++++++++++-------- requirements.txt | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/bookwyrm/preview_images.py b/bookwyrm/preview_images.py index a97ae2d5c..917d985a2 100644 --- a/bookwyrm/preview_images.py +++ b/bookwyrm/preview_images.py @@ -29,23 +29,25 @@ margin = math.floor(IMG_HEIGHT / 10) gutter = math.floor(margin / 2) inner_img_height = math.floor(IMG_HEIGHT * 0.8) inner_img_width = math.floor(inner_img_height * 0.7) -font_dir = os.path.join(settings.STATIC_ROOT, "fonts/public_sans") +font_dir = os.path.join(settings.STATIC_ROOT, "fonts/source_han_sans") -def get_font(font_name, size=28): +def get_font(weight, size=28): """Loads custom font""" - if font_name == "light": - font_path = os.path.join(font_dir, "PublicSans-Light.ttf") - if font_name == "regular": - font_path = os.path.join(font_dir, "PublicSans-Regular.ttf") - elif font_name == "bold": - font_path = os.path.join(font_dir, "PublicSans-Bold.ttf") + font_path = os.path.join(font_dir, "SourceHanSans-VF.ttf.ttc") try: font = ImageFont.truetype(font_path, size) except OSError: font = ImageFont.load_default() + if (weight == 'light'): + font.set_variation_by_name('Light') + if (weight == 'bold'): + font.set_variation_by_name('Bold') + if (weight == 'regular'): + font.set_variation_by_name('Regular') + return font diff --git a/requirements.txt b/requirements.txt index 534a0593d..1f25895c7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,7 +6,7 @@ django-model-utils==4.0.0 environs==9.3.4 flower==1.0.0 Markdown==3.3.3 -Pillow>=8.2.0 +Pillow>=9.0.0 psycopg2==2.8.4 pycryptodome==3.9.4 python-dateutil==2.8.1 From 766a0cc652c693786e6d3f25c624a1f4c8bac405 Mon Sep 17 00:00:00 2001 From: Joachim Date: Thu, 20 Jan 2022 22:19:49 +0100 Subject: [PATCH 04/88] Fix tests --- bookwyrm/preview_images.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/bookwyrm/preview_images.py b/bookwyrm/preview_images.py index 917d985a2..f48ca15e2 100644 --- a/bookwyrm/preview_images.py +++ b/bookwyrm/preview_images.py @@ -41,12 +41,15 @@ def get_font(weight, size=28): except OSError: font = ImageFont.load_default() - if (weight == 'light'): - font.set_variation_by_name('Light') - if (weight == 'bold'): - font.set_variation_by_name('Bold') - if (weight == 'regular'): - font.set_variation_by_name('Regular') + try: + if weight == "light": + font.set_variation_by_name("Light") + if weight == "bold": + font.set_variation_by_name("Bold") + if weight == "regular": + font.set_variation_by_name("Regular") + except AttributeError: + pass return font From 9e6390662b0dd9877c9151002b28468b5d4849e9 Mon Sep 17 00:00:00 2001 From: Joel Bradshaw Date: Tue, 25 Jan 2022 00:22:13 -0800 Subject: [PATCH 05/88] Download fonts at app startup instead We can't bake the font into the Docker image as such, because we mount the volumes which blows away anything we have in the app tree beforehand. We could stash it somewhere in the image and then copy it from there on app startup or something, but at that point we might as well just download it as part of the app startup. --- Dockerfile | 7 ------- bookwyrm/apps.py | 35 +++++++++++++++++++++++++++++++++++ bookwyrm/preview_images.py | 26 ++++++++++++++++++-------- bookwyrm/settings.py | 18 +++++++++++++----- 4 files changed, 66 insertions(+), 20 deletions(-) create mode 100644 bookwyrm/apps.py diff --git a/Dockerfile b/Dockerfile index 8a24e8883..349dd82b1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,13 +6,6 @@ RUN mkdir /app /app/static /app/images WORKDIR /app -# Use RUN curl because ADD will re-download the file every time to make sure it -# hasn't changed, which is exactly what we don't want -RUN mkdir -p /app/static/fonts/source_han_sans -RUN curl \ - https://github.com/adobe-fonts/source-han-sans/raw/release/Variable/OTC/SourceHanSans-VF.ttf.ttc \ - -o /app/static/fonts/source_han_sans/SourceHanSans-VF.ttf.ttc - COPY requirements.txt /app/ RUN pip install -r requirements.txt --no-cache-dir RUN apt-get update && apt-get install -y gettext libgettextpo-dev tidy && apt-get clean diff --git a/bookwyrm/apps.py b/bookwyrm/apps.py new file mode 100644 index 000000000..a3fe1c2cf --- /dev/null +++ b/bookwyrm/apps.py @@ -0,0 +1,35 @@ +import os +import urllib +import logging + +from django.apps import AppConfig + +from bookwyrm import settings + +logger = logging.getLogger(__name__) + +def download_file(url, destination): + try: + stream = urllib.request.urlopen(url) + with open(destination, "b+w") as f: + f.write(stream.read()) + except (urllib.error.HTTPError, urllib.error.URLError): + logger.error("Failed to download file %s", url) + + +class BookwyrmConfig(AppConfig): + name = "bookwyrm" + verbose_name = "BookWyrm" + + def ready(self): + if settings.ENABLE_PREVIEW_IMAGES and settings.FONTS: + # Download any fonts that we don't have yet + logger.debug("Downloading fonts..") + for name, config in settings.FONTS.items(): + font_path = os.path.join( + settings.FONT_DIR, config["directory"], config["filename"] + ) + + if "url" in config and not os.path.exists(font_path): + logger.info("Just a sec, downloading %s", name) + download_file(config["url"], font_path) diff --git a/bookwyrm/preview_images.py b/bookwyrm/preview_images.py index f48ca15e2..325742d72 100644 --- a/bookwyrm/preview_images.py +++ b/bookwyrm/preview_images.py @@ -4,6 +4,8 @@ import os import textwrap from io import BytesIO from uuid import uuid4 +import urllib +import logging import colorsys from colorthief import ColorThief @@ -17,29 +19,37 @@ from django.db.models import Avg from bookwyrm import models, settings from bookwyrm.tasks import app +logger = logging.getLogger(__name__) IMG_WIDTH = settings.PREVIEW_IMG_WIDTH IMG_HEIGHT = settings.PREVIEW_IMG_HEIGHT BG_COLOR = settings.PREVIEW_BG_COLOR TEXT_COLOR = settings.PREVIEW_TEXT_COLOR DEFAULT_COVER_COLOR = settings.PREVIEW_DEFAULT_COVER_COLOR +DEFAULT_FONT = settings.PREVIEW_DEFAULT_FONT TRANSPARENT_COLOR = (0, 0, 0, 0) margin = math.floor(IMG_HEIGHT / 10) gutter = math.floor(margin / 2) inner_img_height = math.floor(IMG_HEIGHT * 0.8) inner_img_width = math.floor(inner_img_height * 0.7) -font_dir = os.path.join(settings.STATIC_ROOT, "fonts/source_han_sans") + + +def get_imagefont(name, size): + try: + config = settings.FONTS[name] + path = os.path.join(settings.FONT_DIR, config["directory"], config["filename"]) + return ImageFont.truetype(path, size) + except KeyError: + logger.error("Font %s not found in config", name) + except OSError: + logger.error("Could not load font %s from file", name) + + return ImageFont.load_default() def get_font(weight, size=28): - """Loads custom font""" - font_path = os.path.join(font_dir, "SourceHanSans-VF.ttf.ttc") - - try: - font = ImageFont.truetype(font_path, size) - except OSError: - font = ImageFont.load_default() + font = get_imagefont(DEFAULT_FONT, size) try: if weight == "light": diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 197e672c1..b85925b77 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -35,6 +35,9 @@ LOCALE_PATHS = [ ] LANGUAGE_COOKIE_NAME = env.str("LANGUAGE_COOKIE_NAME", "django_language") +STATIC_ROOT = os.path.join(BASE_DIR, env("STATIC_ROOT", "static")) +MEDIA_ROOT = os.path.join(BASE_DIR, env("MEDIA_ROOT", "images")) + DEFAULT_AUTO_FIELD = "django.db.models.AutoField" # Preview image @@ -44,6 +47,16 @@ PREVIEW_TEXT_COLOR = env.str("PREVIEW_TEXT_COLOR", "#363636") PREVIEW_IMG_WIDTH = env.int("PREVIEW_IMG_WIDTH", 1200) PREVIEW_IMG_HEIGHT = env.int("PREVIEW_IMG_HEIGHT", 630) PREVIEW_DEFAULT_COVER_COLOR = env.str("PREVIEW_DEFAULT_COVER_COLOR", "#002549") +PREVIEW_DEFAULT_FONT = env.str("PREVIEW_DEFAULT_FONT", "Source Han Sans") + +FONTS = { + "Source Han Sans": { + "directory": "source_han_sans", + "filename": "SourceHanSans-VF.ttf.ttc", + "url": "https://github.com/adobe-fonts/source-han-sans/raw/release/Variable/OTC/SourceHanSans-VF.ttf.ttc", + } +} +FONT_DIR = os.path.join(STATIC_ROOT, "fonts") # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/ @@ -310,13 +323,8 @@ if USE_S3: MEDIA_FULL_URL = MEDIA_URL STATIC_FULL_URL = STATIC_URL DEFAULT_FILE_STORAGE = "bookwyrm.storage_backends.ImagesStorage" - # I don't know if it's used, but the site crashes without it - STATIC_ROOT = os.path.join(BASE_DIR, env("STATIC_ROOT", "static")) - MEDIA_ROOT = os.path.join(BASE_DIR, env("MEDIA_ROOT", "images")) else: STATIC_URL = "/static/" - STATIC_ROOT = os.path.join(BASE_DIR, env("STATIC_ROOT", "static")) MEDIA_URL = "/images/" MEDIA_FULL_URL = f"{PROTOCOL}://{DOMAIN}{MEDIA_URL}" STATIC_FULL_URL = f"{PROTOCOL}://{DOMAIN}{STATIC_URL}" - MEDIA_ROOT = os.path.join(BASE_DIR, env("MEDIA_ROOT", "images")) From a1a3aa45f4860b6270e924c4a6dfad545c1cadb7 Mon Sep 17 00:00:00 2001 From: Joel Bradshaw Date: Tue, 25 Jan 2022 00:37:05 -0800 Subject: [PATCH 06/88] Don't log autoload debug This is just too much --- bookwyrm/apps.py | 1 + bookwyrm/settings.py | 3 +++ 2 files changed, 4 insertions(+) diff --git a/bookwyrm/apps.py b/bookwyrm/apps.py index a3fe1c2cf..c30b7c8f7 100644 --- a/bookwyrm/apps.py +++ b/bookwyrm/apps.py @@ -8,6 +8,7 @@ from bookwyrm import settings logger = logging.getLogger(__name__) + def download_file(url, destination): try: stream = urllib.request.urlopen(url) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index b85925b77..75987ae9b 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -163,6 +163,9 @@ LOGGING = { "handlers": ["console", "mail_admins"], "level": LOG_LEVEL, }, + "django.utils.autoreload": { + "level": "INFO", + }, # Add a bookwyrm-specific logger "bookwyrm": { "handlers": ["console"], From 0c53f4e003205f6ba027bc696b2f81a6b1537235 Mon Sep 17 00:00:00 2001 From: Joel Bradshaw Date: Tue, 25 Jan 2022 01:04:46 -0800 Subject: [PATCH 07/88] Fix linting and formatting --- bookwyrm/apps.py | 10 +++++++--- bookwyrm/preview_images.py | 3 ++- bookwyrm/settings.py | 1 + 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/bookwyrm/apps.py b/bookwyrm/apps.py index c30b7c8f7..c2dfd4b81 100644 --- a/bookwyrm/apps.py +++ b/bookwyrm/apps.py @@ -1,3 +1,4 @@ +"""Do further startup configuration and initialization""" import os import urllib import logging @@ -10,15 +11,18 @@ logger = logging.getLogger(__name__) def download_file(url, destination): + """Downloads a file to the given path""" try: - stream = urllib.request.urlopen(url) - with open(destination, "b+w") as f: - f.write(stream.read()) + with urllib.request.urlopen(url) as stream: + with open(destination, "b+w") as outfile: + outfile.write(stream.read()) except (urllib.error.HTTPError, urllib.error.URLError): logger.error("Failed to download file %s", url) class BookwyrmConfig(AppConfig): + """Handles additional configuration""" + name = "bookwyrm" verbose_name = "BookWyrm" diff --git a/bookwyrm/preview_images.py b/bookwyrm/preview_images.py index 325742d72..891c8b6da 100644 --- a/bookwyrm/preview_images.py +++ b/bookwyrm/preview_images.py @@ -4,7 +4,6 @@ import os import textwrap from io import BytesIO from uuid import uuid4 -import urllib import logging import colorsys @@ -36,6 +35,7 @@ inner_img_width = math.floor(inner_img_height * 0.7) def get_imagefont(name, size): + """Loads an ImageFont based on config""" try: config = settings.FONTS[name] path = os.path.join(settings.FONT_DIR, config["directory"], config["filename"]) @@ -49,6 +49,7 @@ def get_imagefont(name, size): def get_font(weight, size=28): + """Gets a custom font with the given weight and size""" font = get_imagefont(DEFAULT_FONT, size) try: diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 75987ae9b..591a3b3b3 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -50,6 +50,7 @@ PREVIEW_DEFAULT_COVER_COLOR = env.str("PREVIEW_DEFAULT_COVER_COLOR", "#002549") PREVIEW_DEFAULT_FONT = env.str("PREVIEW_DEFAULT_FONT", "Source Han Sans") FONTS = { + # pylint: disable=line-too-long "Source Han Sans": { "directory": "source_han_sans", "filename": "SourceHanSans-VF.ttf.ttc", From 224dc4100ac5487f23106ef279710ab461481934 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 28 Jan 2022 17:32:41 -0800 Subject: [PATCH 08/88] Activitstreams tests --- .../activitystreams/test_abstractstream.py | 57 ++++++++++++++++++- .../tests/activitystreams/test_booksstream.py | 26 +++++++++ 2 files changed, 81 insertions(+), 2 deletions(-) diff --git a/bookwyrm/tests/activitystreams/test_abstractstream.py b/bookwyrm/tests/activitystreams/test_abstractstream.py index 2c5cf6102..8d278041a 100644 --- a/bookwyrm/tests/activitystreams/test_abstractstream.py +++ b/bookwyrm/tests/activitystreams/test_abstractstream.py @@ -1,6 +1,9 @@ """ testing activitystreams """ +from datetime import datetime from unittest.mock import patch from django.test import TestCase +from django.utils import timezone + from bookwyrm import activitystreams, models @@ -51,13 +54,63 @@ class Activitystreams(TestCase): """the abstract base class for stream objects""" self.assertEqual( self.test_stream.stream_id(self.local_user), - "{}-test".format(self.local_user.id), + f"{self.local_user.id}-test", ) self.assertEqual( self.test_stream.unread_id(self.local_user), - "{}-test-unread".format(self.local_user.id), + f"{self.local_user.id}-test-unread", ) + def test_unread_by_status_type_id(self, *_): + """stream for status type""" + self.assertEqual( + self.test_stream.unread_by_status_type_id(self.local_user), + f"{self.local_user.id}-test-unread-by-type", + ) + + def test_get_rank(self, *_): + """sort order""" + date = datetime(2022, 1, 28, 0, 0, tzinfo=timezone.utc) + status = models.Status.objects.create( + user=self.remote_user, + content="hi", + privacy="direct", + published_date=date, + ) + self.assertEqual( + str(self.test_stream.get_rank(status)), + "1643328000.0", + ) + + def test_get_activity_stream(self, *_): + """load statuses""" + status = models.Status.objects.create( + user=self.remote_user, + content="hi", + privacy="direct", + ) + status2 = models.Comment.objects.create( + user=self.remote_user, + content="hi", + privacy="direct", + book=self.book, + ) + models.Comment.objects.create( + user=self.remote_user, + content="hi", + privacy="direct", + book=self.book, + ) + with patch("bookwyrm.activitystreams.r.set"), patch( + "bookwyrm.activitystreams.r.delete" + ), patch("bookwyrm.activitystreams.ActivityStream.get_store") as redis_mock: + redis_mock.return_value = [status.id, status2.id] + result = self.test_stream.get_activity_stream(self.local_user) + self.assertEqual(result.count(), 2) + self.assertEqual(result.first(), status) + self.assertEqual(result.last(), status2) + self.assertIsInstance(result.last(), models.Comment) + def test_abstractstream_get_audience(self, *_): """get a list of users that should see a status""" status = models.Status.objects.create( diff --git a/bookwyrm/tests/activitystreams/test_booksstream.py b/bookwyrm/tests/activitystreams/test_booksstream.py index c001d6dd8..dedf488ae 100644 --- a/bookwyrm/tests/activitystreams/test_booksstream.py +++ b/bookwyrm/tests/activitystreams/test_booksstream.py @@ -52,3 +52,29 @@ class Activitystreams(TestCase): # yes book, yes audience result = activitystreams.BooksStream().get_statuses_for_user(self.local_user) self.assertEqual(list(result), [status]) + + def test_book_statuses(self, *_): + """statuses about a book""" + alt_book = models.Edition.objects.create( + title="hi", parent_work=self.book.parent_work + ) + status = models.Status.objects.create( + user=self.local_user, content="hi", privacy="public" + ) + status = models.Comment.objects.create( + user=self.remote_user, content="hi", privacy="public", book=alt_book + ) + models.ShelfBook.objects.create( + user=self.local_user, + shelf=self.local_user.shelf_set.first(), + book=self.book, + ) + with patch( + "bookwyrm.activitystreams.BooksStream.bulk_add_objects_to_store" + ) as redis_mock: + activitystreams.BooksStream().add_book_statuses(self.local_user, self.book) + args = redis_mock.call_args[0] + queryset = args[0] + self.assertEqual(queryset.count(), 1) + self.assertTrue(status in queryset) + self.assertEqual(args[1], f"{self.local_user.id}-books") From e674f85d4ef3bccb7724bd3c8a9e907579a58f2e Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 30 Jan 2022 11:21:56 -0800 Subject: [PATCH 09/88] Don't display empty shelves on user page --- bookwyrm/views/user.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bookwyrm/views/user.py b/bookwyrm/views/user.py index 851cfdaae..d38981ea8 100644 --- a/bookwyrm/views/user.py +++ b/bookwyrm/views/user.py @@ -31,12 +31,13 @@ class User(View): shelf_preview = [] # only show shelves that should be visible - shelves = user.shelf_set is_self = request.user.id == user.id if not is_self: shelves = models.Shelf.privacy_filter( request.user, privacy_levels=["public", "followers"] ).filter(user=user, books__isnull=False) + else: + shelves = user.shelf_set.filter(books__isnull=False).distinct() for user_shelf in shelves.all()[:3]: shelf_preview.append( From 754e24812b63fb6a2d39215f01bee5892ac5948f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 1 Feb 2022 21:18:25 -0800 Subject: [PATCH 10/88] Check image extensions before saving --- bookwyrm/connectors/abstract_connector.py | 12 +++++++++++- bookwyrm/models/fields.py | 8 ++------ bookwyrm/views/books/books.py | 8 +++----- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index 5ed57df1f..8e998979f 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -1,7 +1,9 @@ """ functionality outline for a book data connector """ from abc import ABC, abstractmethod +import imghdr import logging +from django.core.files.base import ContentFile from django.db import transaction import requests from requests.exceptions import RequestException @@ -291,9 +293,17 @@ def get_image(url, timeout=10): except RequestException as err: logger.exception(err) return None + if not resp.ok: return None - return resp + + image_content = ContentFile(resp.content) + extension = imghdr.what(None, image_content.read()) + if not extension: + logger.exception("File requested was not an image: %s", url) + return None + + return image_content, extension class Mapping: diff --git a/bookwyrm/models/fields.py b/bookwyrm/models/fields.py index e61f912e5..b506c11ca 100644 --- a/bookwyrm/models/fields.py +++ b/bookwyrm/models/fields.py @@ -1,6 +1,5 @@ """ activitypub-aware django model fields """ from dataclasses import MISSING -import imghdr import re from uuid import uuid4 from urllib.parse import urljoin @@ -9,7 +8,6 @@ import dateutil.parser from dateutil.parser import ParserError 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 as DjangoImageField from django.utils import timezone @@ -443,12 +441,10 @@ class ImageField(ActivitypubFieldMixin, models.ImageField): except ValidationError: return None - response = get_image(url) - if not response: + image_content, extension = get_image(url) + if not image_content: return None - image_content = ContentFile(response.content) - extension = imghdr.what(None, image_content.read()) or "" image_name = f"{uuid4()}.{extension}" return [image_name, image_content] diff --git a/bookwyrm/views/books/books.py b/bookwyrm/views/books/books.py index 7de2d0d20..e04230bac 100644 --- a/bookwyrm/views/books/books.py +++ b/bookwyrm/views/books/books.py @@ -2,7 +2,6 @@ from uuid import uuid4 from django.contrib.auth.decorators import login_required, permission_required -from django.core.files.base import ContentFile from django.core.paginator import Paginator from django.db.models import Avg, Q from django.http import Http404 @@ -144,13 +143,12 @@ def upload_cover(request, book_id): def set_cover_from_url(url): """load it from a url""" try: - image_file = get_image(url) + image_content, extension = get_image(url) except: # pylint: disable=bare-except return None - if not image_file: + if not image_content: return None - image_name = str(uuid4()) + "." + url.split(".")[-1] - image_content = ContentFile(image_file.content) + image_name = str(uuid4()) + "." + extension return [image_name, image_content] From d6abd9b32d0a1c2a25cef56c9405e607eef461cc Mon Sep 17 00:00:00 2001 From: Joel Bradshaw Date: Tue, 1 Feb 2022 21:45:13 -0800 Subject: [PATCH 11/88] Ensure directory exists, don't crash if we fail to write We should be creating the directory because the static tree from the repo isn't actually copied into the container, so we can't rely on it existing. And if we can't write it, we should catch that error instead of crashing the whole thing, oops! --- bookwyrm/apps.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bookwyrm/apps.py b/bookwyrm/apps.py index c2dfd4b81..10ccc89ff 100644 --- a/bookwyrm/apps.py +++ b/bookwyrm/apps.py @@ -13,11 +13,15 @@ logger = logging.getLogger(__name__) def download_file(url, destination): """Downloads a file to the given path""" try: + # Ensure our destination directory exists + os.makedirs(os.path.dirname(destination)) with urllib.request.urlopen(url) as stream: with open(destination, "b+w") as outfile: outfile.write(stream.read()) except (urllib.error.HTTPError, urllib.error.URLError): logger.error("Failed to download file %s", url) + except OSError: + logger.error("Couldn't open font file %s for writing", destination) class BookwyrmConfig(AppConfig): From 060f515aea5afa255e3441a1b357de5280886a69 Mon Sep 17 00:00:00 2001 From: Joel Bradshaw Date: Tue, 1 Feb 2022 21:54:51 -0800 Subject: [PATCH 12/88] Be even more conservative on errors This runs at startup of anything, so we should be extra sure to not break anything, and lots of things can go wrong downloading files from the internet --- bookwyrm/apps.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bookwyrm/apps.py b/bookwyrm/apps.py index 10ccc89ff..8940edccc 100644 --- a/bookwyrm/apps.py +++ b/bookwyrm/apps.py @@ -22,6 +22,8 @@ def download_file(url, destination): logger.error("Failed to download file %s", url) except OSError: logger.error("Couldn't open font file %s for writing", destination) + except: # pylint: disable=bare-except + logger.exception("Unknown error in file download") class BookwyrmConfig(AppConfig): From 194c69f512d11dd6ff05604395a2b7abaf4ae667 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 2 Feb 2022 07:09:35 -0800 Subject: [PATCH 13/88] Fixes return values of null responses --- bookwyrm/connectors/abstract_connector.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index 8e998979f..0ab135b87 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -292,16 +292,16 @@ def get_image(url, timeout=10): ) except RequestException as err: logger.exception(err) - return None + return None, None if not resp.ok: - return None + return None, None image_content = ContentFile(resp.content) extension = imghdr.what(None, image_content.read()) if not extension: logger.exception("File requested was not an image: %s", url) - return None + return None, None return image_content, extension From 6fd3ac0cb13ed6ed1fe1c582729c89157401be13 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 2 Feb 2022 09:23:06 -0800 Subject: [PATCH 14/88] Changes how test image data is loaded --- bookwyrm/tests/models/test_fields.py | 73 ++++++++++++++-------------- bw-dev | 1 + 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/bookwyrm/tests/models/test_fields.py b/bookwyrm/tests/models/test_fields.py index 5bb7fecc6..f7386c2e4 100644 --- a/bookwyrm/tests/models/test_fields.py +++ b/bookwyrm/tests/models/test_fields.py @@ -443,18 +443,17 @@ class ModelFields(TestCase): image_file = pathlib.Path(__file__).parent.joinpath( "../../static/images/default_avi.jpg" ) - image = Image.open(image_file) - output = BytesIO() - image.save(output, format=image.format) - instance = fields.ImageField() - responses.add( - responses.GET, - "http://www.example.com/image.jpg", - body=image.tobytes(), - status=200, - ) + with open(image_file, "rb") as image_data: + responses.add( + responses.GET, + "http://www.example.com/image.jpg", + body=image_data.read(), + status=200, + content_type="image/jpeg", + stream=True, + ) loaded_image = instance.field_from_activity("http://www.example.com/image.jpg") self.assertIsInstance(loaded_image, list) self.assertIsInstance(loaded_image[1], ContentFile) @@ -465,18 +464,18 @@ class ModelFields(TestCase): image_file = pathlib.Path(__file__).parent.joinpath( "../../static/images/default_avi.jpg" ) - image = Image.open(image_file) - output = BytesIO() - image.save(output, format=image.format) instance = fields.ImageField(activitypub_field="cover", name="cover") - responses.add( - responses.GET, - "http://www.example.com/image.jpg", - body=image.tobytes(), - status=200, - ) + with open(image_file, "rb") as image_data: + responses.add( + responses.GET, + "http://www.example.com/image.jpg", + body=image_data.read(), + content_type="image/jpeg", + status=200, + stream=True, + ) book = Edition.objects.create(title="hello") MockActivity = namedtuple("MockActivity", ("cover")) @@ -491,18 +490,18 @@ class ModelFields(TestCase): image_file = pathlib.Path(__file__).parent.joinpath( "../../static/images/default_avi.jpg" ) - image = Image.open(image_file) - output = BytesIO() - image.save(output, format=image.format) instance = fields.ImageField(activitypub_field="cover", name="cover") - responses.add( - responses.GET, - "http://www.example.com/image.jpg", - body=image.tobytes(), - status=200, - ) + with open(image_file, "rb") as image_data: + responses.add( + responses.GET, + "http://www.example.com/image.jpg", + body=image_data.read(), + status=200, + content_type="image/jpeg", + stream=True, + ) book = Edition.objects.create(title="hello") MockActivity = namedtuple("MockActivity", ("cover")) @@ -565,18 +564,18 @@ class ModelFields(TestCase): another_image_file = pathlib.Path(__file__).parent.joinpath( "../../static/images/logo.png" ) - another_image = Image.open(another_image_file) - another_output = BytesIO() - another_image.save(another_output, format=another_image.format) instance = fields.ImageField(activitypub_field="cover", name="cover") - responses.add( - responses.GET, - "http://www.example.com/image.jpg", - body=another_image.tobytes(), - status=200, - ) + with open(another_image_file, "rb") as another_image: + responses.add( + responses.GET, + "http://www.example.com/image.jpg", + body=another_image.read(), + status=200, + content_type="image/jpeg", + stream=True, + ) MockActivity = namedtuple("MockActivity", ("cover")) mock_activity = MockActivity("http://www.example.com/image.jpg") diff --git a/bw-dev b/bw-dev index 00faa6a62..77d337297 100755 --- a/bw-dev +++ b/bw-dev @@ -209,6 +209,7 @@ case "$CMD" in echo " build" echo " clean" echo " black" + echo " prettier" echo " populate_streams [--stream=]" echo " populate_suggestions" echo " generate_thumbnails" From e37982d28506111e46d124b418094b6dceca8d2b Mon Sep 17 00:00:00 2001 From: Willi Hohenstein Date: Wed, 2 Feb 2022 19:35:26 +0100 Subject: [PATCH 15/88] added domain pending or blocked check fixes #1850 --- bookwyrm/forms.py | 13 +++ locale/de_DE/LC_MESSAGES/django.po | 179 +++++++++++++++++++---------- locale/en_US/LC_MESSAGES/django.po | 38 +++--- 3 files changed, 154 insertions(+), 76 deletions(-) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index e442dbf45..1b13598b0 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -1,6 +1,7 @@ """ using django model forms """ import datetime from collections import defaultdict +from urllib.parse import urlparse from django import forms from django.forms import ModelForm, PasswordInput, widgets, ChoiceField @@ -226,6 +227,18 @@ class FileLinkForm(CustomForm): class Meta: model = models.FileLink fields = ["url", "filetype", "availability", "book", "added_by"] + + def clean(self): + """make sure the domain isn't blocked or pending""" + cleaned_data = super().clean() + url = cleaned_data.get('url') + domain = urlparse(url).netloc + if models.LinkDomain.objects.filter(domain=domain).exists(): + status = models.LinkDomain.objects.get(domain=domain).status + if status == 'blocked': + self.add_error("url", _("Domain is blocked. Don't try this url again.")) + elif status == 'pending': + self.add_error("url", _("Domain already pending. Please try later.")) class EditionForm(CustomForm): diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index bb05219b3..8b4e11d45 100644 --- a/locale/de_DE/LC_MESSAGES/django.po +++ b/locale/de_DE/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-24 17:25+0000\n" +"POT-Creation-Date: 2022-02-02 18:03+0000\n" "PO-Revision-Date: 2022-01-24 18:55\n" "Last-Translator: Mouse Reeve \n" "Language-Team: German\n" @@ -17,62 +17,70 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:365 +#: bookwyrm/forms.py:239 +msgid "Domain is blocked. Don't try this url again." +msgstr "Die Domäne ist blockiert. Versuchen Sie diese Url nicht mehr." + +#: bookwyrm/forms.py:241 +msgid "Domain already pending. Please try later." +msgstr "Die Domain ist bereits in Bearbeitung. Bitte versuchen Sie es später." + +#: bookwyrm/forms.py:378 msgid "A user with this email already exists." msgstr "Es existiert bereits ein Benutzer*inkonto mit dieser E-Mail-Adresse." -#: bookwyrm/forms.py:379 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Ein Tag" -#: bookwyrm/forms.py:380 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Eine Woche" -#: bookwyrm/forms.py:381 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Ein Monat" -#: bookwyrm/forms.py:382 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "Läuft nicht ab" -#: bookwyrm/forms.py:386 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i}-mal verwendbar" -#: bookwyrm/forms.py:387 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Unbegrenzt" -#: bookwyrm/forms.py:483 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Reihenfolge der Liste" -#: bookwyrm/forms.py:484 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Buchtitel" -#: bookwyrm/forms.py:485 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Bewertung" -#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:135 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Sortieren nach" -#: bookwyrm/forms.py:491 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Aufsteigend" -#: bookwyrm/forms.py:492 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Absteigend" -#: bookwyrm/forms.py:505 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." msgstr "Enddatum darf nicht vor dem Startdatum liegen." @@ -283,10 +291,14 @@ msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugiesisch)" #: bookwyrm/settings.py:258 +msgid "Swedish (Svenska)" +msgstr "Swedish (Schwedisch)" + +#: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (vereinfachtes Chinesisch)" -#: bookwyrm/settings.py:259 +#: bookwyrm/settings.py:260 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinesisch, traditionell)" @@ -424,7 +436,7 @@ msgid "Copy address" msgstr "Adresse kopieren" #: bookwyrm/templates/annual_summary/layout.html:68 -#: bookwyrm/templates/lists/list.html:231 +#: bookwyrm/templates/lists/list.html:269 msgid "Copied!" msgstr "Kopiert!" @@ -689,6 +701,7 @@ msgstr "ISNI:" #: bookwyrm/templates/book/file_links/edit_links.html:82 #: bookwyrm/templates/groups/form.html:30 #: bookwyrm/templates/lists/bookmark_button.html:15 +#: bookwyrm/templates/lists/edit_item_form.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:124 #: bookwyrm/templates/readthrough/readthrough_modal.html:72 @@ -712,6 +725,7 @@ msgstr "Speichern" #: bookwyrm/templates/book/file_links/verification_modal.html:21 #: bookwyrm/templates/book/sync_modal.html:23 #: bookwyrm/templates/groups/delete_group_modal.html:17 +#: bookwyrm/templates/lists/add_item_modal.html:42 #: bookwyrm/templates/lists/delete_list_modal.html:18 #: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 #: bookwyrm/templates/readthrough/readthrough_modal.html:74 @@ -816,7 +830,7 @@ msgstr "Orte" #: bookwyrm/templates/book/book.html:348 #: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 -#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:11 +#: bookwyrm/templates/lists/curate.html:8 bookwyrm/templates/lists/list.html:12 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 #: bookwyrm/templates/search/layout.html:50 @@ -830,7 +844,8 @@ msgstr "Zur Liste hinzufügen" #: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/list.html:209 +#: bookwyrm/templates/lists/add_item_modal.html:37 +#: bookwyrm/templates/lists/list.html:247 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31 msgid "Add" @@ -1551,16 +1566,11 @@ msgstr "Alle Nachrichten" msgid "You have no messages right now." msgstr "Du hast momentan keine Nachrichten." -#: bookwyrm/templates/feed/feed.html:28 -#, python-format -msgid "load 0 unread status(es)" -msgstr "lade 0 ungelesene Statusmeldung(en)" - -#: bookwyrm/templates/feed/feed.html:51 +#: bookwyrm/templates/feed/feed.html:54 msgid "There aren't any activities right now! Try following a user to get started" msgstr "Hier sind noch keine Aktivitäten! Folge Anderen, um loszulegen" -#: bookwyrm/templates/feed/feed.html:52 +#: bookwyrm/templates/feed/feed.html:55 msgid "Alternatively, you can try enabling more status types" msgstr "Alternativ könntest du auch weitere Statustypen aktivieren" @@ -1649,7 +1659,7 @@ msgid "What are you reading?" msgstr "Was liest du gerade?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:163 +#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:205 msgid "Search for a book" msgstr "Nach einem Buch suchen" @@ -1669,7 +1679,7 @@ msgstr "Du kannst Bücher hinzufügen, wenn du %(site_name)s benutzt." #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/groups/members.html:15 #: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:167 +#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:209 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -1685,7 +1695,7 @@ msgid "Popular on %(site_name)s" msgstr "Auf %(site_name)s beliebt" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:180 +#: bookwyrm/templates/lists/list.html:222 msgid "No books found" msgstr "Keine Bücher gefunden" @@ -2034,7 +2044,7 @@ msgid "Approving a suggestion will permanently add the suggested book to your sh msgstr "Die Genehmigung eines Vorschlags wird das vorgeschlagene Buch dauerhaft in deine Regale aufnehmen und deine Lesedaten, Besprechungen und Bewertungen mit diesem Buch verknüpfen." #: bookwyrm/templates/import/manual_review.html:58 -#: bookwyrm/templates/lists/curate.html:59 +#: bookwyrm/templates/lists/curate.html:71 #: bookwyrm/templates/settings/link_domains/link_domains.html:76 msgid "Approve" msgstr "Bestätigen" @@ -2245,6 +2255,23 @@ msgstr "%(site_name)s auf %(suppo msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "BookWyrm ist open source Software. Du kannst dich auf GitHub beteiligen oder etwas melden." +#: bookwyrm/templates/lists/add_item_modal.html:8 +#, fuzzy, python-format +#| msgid "Add read dates for \"%(title)s\"" +msgid "Add \"%(title)s\" to this list" +msgstr "„%(title)s“ zu dieser Liste hinzufügen" + +#: bookwyrm/templates/lists/add_item_modal.html:12 +#, fuzzy, python-format +#| msgid "Start \"%(book_title)s\"" +msgid "Suggest \"%(title)s\" for this list" +msgstr "„%(book_title)s“ für diese Liste vorschlagen" + +#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/list.html:249 +msgid "Suggest" +msgstr "Vorschlagen" + #: bookwyrm/templates/lists/bookmark_button.html:30 msgid "Un-save" msgstr "Speichern rückgängig machen" @@ -2264,23 +2291,30 @@ msgstr "Erstellt und betreut von %(username)s" msgid "Created by %(username)s" msgstr "Erstellt von %(username)s" -#: bookwyrm/templates/lists/curate.html:11 +#: bookwyrm/templates/lists/curate.html:12 msgid "Curate" msgstr "Kuratieren" -#: bookwyrm/templates/lists/curate.html:20 +#: bookwyrm/templates/lists/curate.html:21 msgid "Pending Books" msgstr "Unbestätigte Bücher" -#: bookwyrm/templates/lists/curate.html:23 +#: bookwyrm/templates/lists/curate.html:24 msgid "You're all set!" msgstr "Du bist soweit!" -#: bookwyrm/templates/lists/curate.html:43 +#: bookwyrm/templates/lists/curate.html:45 +#: bookwyrm/templates/lists/list.html:83 +#, fuzzy, python-format +#| msgid "Added by %(username)s" +msgid "%(username)s says:" +msgstr "%(username)s sagt:" + +#: bookwyrm/templates/lists/curate.html:55 msgid "Suggested by" msgstr "Vorgeschlagen von" -#: bookwyrm/templates/lists/curate.html:65 +#: bookwyrm/templates/lists/curate.html:77 msgid "Discard" msgstr "Ablehnen" @@ -2304,7 +2338,7 @@ msgid "on %(site_name)s" msgstr "auf %(site_name)s" #: bookwyrm/templates/lists/embed-list.html:27 -#: bookwyrm/templates/lists/list.html:43 +#: bookwyrm/templates/lists/list.html:44 msgid "This list is currently empty" msgstr "Diese Liste ist momentan leer" @@ -2365,76 +2399,93 @@ msgstr "Gruppe erstellen" msgid "Delete list" msgstr "Liste löschen" -#: bookwyrm/templates/lists/list.html:35 +#: bookwyrm/templates/lists/item_notes_field.html:7 +#: bookwyrm/templates/settings/federation/edit_instance.html:74 +msgid "Notes:" +msgstr "Anmerkungen:" + +#: bookwyrm/templates/lists/item_notes_field.html:19 +msgid "An optional note that will be displayed with the book." +msgstr "Eine optionale Anmerkung, die mit dem Buch angezeigt wird." + +#: bookwyrm/templates/lists/list.html:36 msgid "You successfully suggested a book for this list!" msgstr "Dein Buchvorschlag wurde dieser Liste hinzugefügt!" -#: bookwyrm/templates/lists/list.html:37 +#: bookwyrm/templates/lists/list.html:38 msgid "You successfully added a book to this list!" msgstr "Du hast ein Buch zu dieser Liste hinzugefügt!" -#: bookwyrm/templates/lists/list.html:81 +#: bookwyrm/templates/lists/list.html:96 +#, fuzzy +#| msgid "Edit links" +msgid "Edit notes" +msgstr "Anmerkungen bearbeiten" + +#: bookwyrm/templates/lists/list.html:111 +#, fuzzy +#| msgid "Add cover" +msgid "Add notes" +msgstr "Anmerkungen hinzufügen" + +#: bookwyrm/templates/lists/list.html:123 #, python-format msgid "Added by %(username)s" msgstr "Hinzugefügt von %(username)s" -#: bookwyrm/templates/lists/list.html:96 +#: bookwyrm/templates/lists/list.html:138 msgid "List position" msgstr "Listenposition" -#: bookwyrm/templates/lists/list.html:102 +#: bookwyrm/templates/lists/list.html:144 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 msgid "Set" msgstr "Übernehmen" -#: bookwyrm/templates/lists/list.html:117 +#: bookwyrm/templates/lists/list.html:159 #: bookwyrm/templates/snippets/remove_from_group_button.html:20 msgid "Remove" msgstr "Entfernen" -#: bookwyrm/templates/lists/list.html:131 -#: bookwyrm/templates/lists/list.html:148 +#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:190 msgid "Sort List" msgstr "Liste sortieren" -#: bookwyrm/templates/lists/list.html:141 +#: bookwyrm/templates/lists/list.html:183 msgid "Direction" msgstr "Reihenfolge" -#: bookwyrm/templates/lists/list.html:155 +#: bookwyrm/templates/lists/list.html:197 msgid "Add Books" msgstr "Bücher hinzufügen" -#: bookwyrm/templates/lists/list.html:157 +#: bookwyrm/templates/lists/list.html:199 msgid "Suggest Books" msgstr "Bücher vorschlagen" -#: bookwyrm/templates/lists/list.html:168 +#: bookwyrm/templates/lists/list.html:210 msgid "search" msgstr "suchen" -#: bookwyrm/templates/lists/list.html:174 +#: bookwyrm/templates/lists/list.html:216 msgid "Clear search" msgstr "Suche zurücksetzen" -#: bookwyrm/templates/lists/list.html:179 +#: bookwyrm/templates/lists/list.html:221 #, 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:211 -msgid "Suggest" -msgstr "Vorschlagen" - -#: bookwyrm/templates/lists/list.html:222 +#: bookwyrm/templates/lists/list.html:260 msgid "Embed this list on a website" msgstr "Diese Liste auf einer Webseite einbetten" -#: bookwyrm/templates/lists/list.html:230 +#: bookwyrm/templates/lists/list.html:268 msgid "Copy embed code" msgstr "Code zum einbetten kopieren" -#: bookwyrm/templates/lists/list.html:232 +#: bookwyrm/templates/lists/list.html:270 #, python-format msgid "%(list_name)s, a list by %(owner)s on %(site_name)s" msgstr "%(list_name)s, eine Liste von %(owner)s auf %(site_name)s" @@ -3222,10 +3273,6 @@ msgstr "Software:" msgid "Version:" msgstr "Version:" -#: bookwyrm/templates/settings/federation/edit_instance.html:74 -msgid "Notes:" -msgstr "Anmerkungen:" - #: bookwyrm/templates/settings/federation/instance.html:19 msgid "Details" msgstr "Details" @@ -4631,3 +4678,13 @@ msgstr "Ein Link zum Zurücksetzen des Passworts wurde an {email} gesendet" msgid "Status updates from {obj.display_name}" msgstr "Status -Updates von {obj.display_name}" +#: bookwyrm/views/updates.py:45 +#, python-format +msgid "Load %(count)d unread status" +msgid_plural "Load %(count)d unread statuses" +msgstr[0] "" +msgstr[1] "" + +#, python-format +#~ msgid "load 0 unread status(es)" +#~ msgstr "lade 0 ungelesene Statusmeldung(en)" diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index 6895c534b..78afefa79 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: 2022-01-28 02:50+0000\n" +"POT-Creation-Date: 2022-02-02 18:03+0000\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -18,62 +18,70 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: bookwyrm/forms.py:365 +#: bookwyrm/forms.py:239 +msgid "Domain is blocked. Don't try this url again." +msgstr "" + +#: bookwyrm/forms.py:241 +msgid "Domain already pending. Please try later." +msgstr "" + +#: bookwyrm/forms.py:378 msgid "A user with this email already exists." msgstr "" -#: bookwyrm/forms.py:379 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "" -#: bookwyrm/forms.py:380 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "" -#: bookwyrm/forms.py:381 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "" -#: bookwyrm/forms.py:382 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "" -#: bookwyrm/forms.py:386 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "" -#: bookwyrm/forms.py:387 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "" -#: bookwyrm/forms.py:489 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "" -#: bookwyrm/forms.py:490 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "" -#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "" -#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "" -#: bookwyrm/forms.py:497 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "" -#: bookwyrm/forms.py:498 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "" -#: bookwyrm/forms.py:511 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." msgstr "" From c2c33fe1e8ddfa455007ad765478671ce8b7640b Mon Sep 17 00:00:00 2001 From: Willi Hohenstein Date: Wed, 2 Feb 2022 20:20:16 +0100 Subject: [PATCH 16/88] fixed merge conflict --- locale/de_DE/LC_MESSAGES/django.po | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index 2e975d62b..34fecd22b 100644 --- a/locale/de_DE/LC_MESSAGES/django.po +++ b/locale/de_DE/LC_MESSAGES/django.po @@ -4675,15 +4675,5 @@ msgstr "Status -Updates von {obj.display_name}" #, python-format msgid "Load %(count)d unread status" msgid_plural "Load %(count)d unread statuses" -<<<<<<< HEAD -msgstr[0] "" -msgstr[1] "" - -#, python-format -#~ msgid "load 0 unread status(es)" -#~ msgstr "lade 0 ungelesene Statusmeldung(en)" -======= msgstr[0] "Lade %(count)d ungelesene Statusmeldung" msgstr[1] "Lade %(count)d ungelesene Statusmeldungen" - ->>>>>>> f84241b085a00b54a2f5ba083e8e60311ccb8622 From e9370fe4c99546f49abc61e5cfe572a184613f01 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 2 Feb 2022 11:43:54 -0800 Subject: [PATCH 17/88] Fixes name of Swedish locale --- bookwyrm/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 8c4e8a7eb..22682a800 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -255,7 +255,7 @@ LANGUAGES = [ ("no-no", _("Norsk (Norwegian)")), ("pt-br", _("Português do Brasil (Brazilian Portuguese)")), ("pt-pt", _("Português Europeu (European Portuguese)")), - ("sv-se", _("Swedish (Svenska)")), + ("sv-se", _("Svenska (Swedish)")), ("zh-hans", _("简体中文 (Simplified Chinese)")), ("zh-hant", _("繁體中文 (Traditional Chinese)")), ] From 36a47760cd4a8574d492ed8d4ca39e2ae02d40e8 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 2 Feb 2022 12:15:00 -0800 Subject: [PATCH 18/88] Updates locales --- locale/de_DE/LC_MESSAGES/django.po | 26 +++-- locale/en_US/LC_MESSAGES/django.po | 34 +++---- locale/es_ES/LC_MESSAGES/django.mo | Bin 83458 -> 83458 bytes locale/es_ES/LC_MESSAGES/django.po | 26 +++-- locale/fr_FR/LC_MESSAGES/django.po | 26 +++-- locale/gl_ES/LC_MESSAGES/django.mo | Bin 81604 -> 81710 bytes locale/gl_ES/LC_MESSAGES/django.po | 26 +++-- locale/it_IT/LC_MESSAGES/django.mo | Bin 82668 -> 82792 bytes locale/it_IT/LC_MESSAGES/django.po | 26 +++-- locale/lt_LT/LC_MESSAGES/django.mo | Bin 80149 -> 80620 bytes locale/lt_LT/LC_MESSAGES/django.po | 36 ++++--- locale/no_NO/LC_MESSAGES/django.mo | Bin 73851 -> 80170 bytes locale/no_NO/LC_MESSAGES/django.po | 146 ++++++++++++++------------- locale/pt_BR/LC_MESSAGES/django.mo | Bin 82002 -> 82142 bytes locale/pt_BR/LC_MESSAGES/django.po | 26 +++-- locale/pt_PT/LC_MESSAGES/django.mo | Bin 72904 -> 72904 bytes locale/pt_PT/LC_MESSAGES/django.po | 26 +++-- locale/sv_SE/LC_MESSAGES/django.mo | Bin 80853 -> 80853 bytes locale/sv_SE/LC_MESSAGES/django.po | 26 +++-- locale/zh_Hans/LC_MESSAGES/django.po | 26 +++-- locale/zh_Hant/LC_MESSAGES/django.po | 26 +++-- 21 files changed, 287 insertions(+), 189 deletions(-) diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index 50806ca81..3f56ede67 100644 --- a/locale/de_DE/LC_MESSAGES/django.po +++ b/locale/de_DE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-28 02:50+0000\n" -"PO-Revision-Date: 2022-01-29 14:28\n" +"POT-Creation-Date: 2022-01-30 18:17+0000\n" +"PO-Revision-Date: 2022-01-30 19:38\n" "Last-Translator: Mouse Reeve \n" "Language-Team: German\n" "Language: de\n" @@ -3574,23 +3574,31 @@ msgstr "Keine Links für diese Domain vorhanden." msgid "Back to reports" msgstr "Zurück zu den Meldungen" -#: bookwyrm/templates/settings/reports/report.html:22 +#: bookwyrm/templates/settings/reports/report.html:23 +msgid "Message reporter" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:27 +msgid "Update on your report:" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:35 msgid "Reported statuses" msgstr "Gemeldete Statusmeldungen" -#: bookwyrm/templates/settings/reports/report.html:27 +#: bookwyrm/templates/settings/reports/report.html:40 msgid "Status has been deleted" msgstr "Statusmeldung gelöscht" -#: bookwyrm/templates/settings/reports/report.html:39 +#: bookwyrm/templates/settings/reports/report.html:52 msgid "Reported links" msgstr "Gemeldete Links" -#: bookwyrm/templates/settings/reports/report.html:55 +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Moderator*innenkommentare" -#: bookwyrm/templates/settings/reports/report.html:73 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Kommentieren" @@ -4015,14 +4023,14 @@ msgstr "Prozent" msgid "of %(pages)s pages" msgstr "von %(pages)s Seiten" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 #: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:54 msgid "Reply" msgstr "Antworten" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 msgid "Content" msgstr "Inhalt" diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index 6d27ab756..411f825ef 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: 2022-01-30 18:17+0000\n" +"POT-Creation-Date: 2022-02-02 20:09+0000\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -141,26 +141,26 @@ msgstr "" msgid "Blocked" msgstr "" -#: bookwyrm/models/fields.py:29 +#: bookwyrm/models/fields.py:27 #, python-format msgid "%(value)s is not a valid remote_id" msgstr "" -#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 +#: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45 #, python-format msgid "%(value)s is not a valid username" msgstr "" -#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "" -#: bookwyrm/models/fields.py:188 +#: bookwyrm/models/fields.py:186 msgid "A user with that username already exists." msgstr "" -#: bookwyrm/models/fields.py:207 +#: bookwyrm/models/fields.py:205 #: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy_select.html:11 @@ -168,7 +168,7 @@ msgstr "" msgid "Public" msgstr "" -#: bookwyrm/models/fields.py:208 +#: bookwyrm/models/fields.py:206 #: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy_select.html:14 @@ -176,14 +176,14 @@ msgstr "" msgid "Unlisted" msgstr "" -#: bookwyrm/models/fields.py:209 +#: bookwyrm/models/fields.py:207 #: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/layout.html:11 msgid "Followers" msgstr "" -#: bookwyrm/models/fields.py:210 +#: bookwyrm/models/fields.py:208 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 @@ -284,7 +284,7 @@ msgid "Português Europeu (European Portuguese)" msgstr "" #: bookwyrm/settings.py:258 -msgid "Swedish (Svenska)" +msgid "Svenska (Swedish)" msgstr "" #: bookwyrm/settings.py:259 @@ -370,7 +370,7 @@ msgstr "" #: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 -#: bookwyrm/templates/snippets/user_options.html:13 +#: bookwyrm/templates/snippets/user_options.html:14 msgid "Send direct message" msgstr "" @@ -1018,7 +1018,7 @@ msgid "Physical Properties" msgstr "" #: bookwyrm/templates/book/edit/edit_book_form.html:199 -#: bookwyrm/templates/book/editions/format_filter.html:5 +#: bookwyrm/templates/book/editions/format_filter.html:6 msgid "Format:" msgstr "" @@ -1056,17 +1056,17 @@ msgstr "" msgid "Editions of \"%(work_title)s\"" msgstr "" -#: bookwyrm/templates/book/editions/format_filter.html:8 -#: bookwyrm/templates/book/editions/language_filter.html:8 +#: bookwyrm/templates/book/editions/format_filter.html:9 +#: bookwyrm/templates/book/editions/language_filter.html:9 msgid "Any" msgstr "" -#: bookwyrm/templates/book/editions/language_filter.html:5 +#: bookwyrm/templates/book/editions/language_filter.html:6 #: bookwyrm/templates/preferences/edit_user.html:95 msgid "Language:" msgstr "" -#: bookwyrm/templates/book/editions/search_filter.html:5 +#: bookwyrm/templates/book/editions/search_filter.html:6 msgid "Search editions" msgstr "" @@ -4108,7 +4108,7 @@ msgstr "" msgid "Clear filters" msgstr "" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 msgid "Apply filters" msgstr "" diff --git a/locale/es_ES/LC_MESSAGES/django.mo b/locale/es_ES/LC_MESSAGES/django.mo index 84f15f73aa5132a317390ddf4a02be4e4a29d7bd..faae97eddcd1061d339b2730b98f353da094633a 100644 GIT binary patch delta 23 ecmZqbVQuPR-7xDQhp~Zzp{13v#pXo^6IuXfU\n" "Language-Team: Spanish\n" "Language: es\n" @@ -3574,23 +3574,31 @@ msgstr "Ningún enlace disponible para este dominio." msgid "Back to reports" msgstr "Volver a los informes" -#: bookwyrm/templates/settings/reports/report.html:22 +#: bookwyrm/templates/settings/reports/report.html:23 +msgid "Message reporter" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:27 +msgid "Update on your report:" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:35 msgid "Reported statuses" msgstr "Estados reportados" -#: bookwyrm/templates/settings/reports/report.html:27 +#: bookwyrm/templates/settings/reports/report.html:40 msgid "Status has been deleted" msgstr "El estado ha sido eliminado" -#: bookwyrm/templates/settings/reports/report.html:39 +#: bookwyrm/templates/settings/reports/report.html:52 msgid "Reported links" msgstr "Enlaces denunciados" -#: bookwyrm/templates/settings/reports/report.html:55 +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Comentarios de moderador" -#: bookwyrm/templates/settings/reports/report.html:73 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Comentario" @@ -4015,14 +4023,14 @@ msgstr "por ciento" msgid "of %(pages)s pages" msgstr "de %(pages)s páginas" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 #: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:54 msgid "Reply" msgstr "Responder" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 msgid "Content" msgstr "Contenido" diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index cf872cf60..4300f0052 100644 --- a/locale/fr_FR/LC_MESSAGES/django.po +++ b/locale/fr_FR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-28 02:50+0000\n" -"PO-Revision-Date: 2022-01-28 11:29\n" +"POT-Creation-Date: 2022-01-30 18:17+0000\n" +"PO-Revision-Date: 2022-01-30 19:38\n" "Last-Translator: Mouse Reeve \n" "Language-Team: French\n" "Language: fr\n" @@ -3574,23 +3574,31 @@ msgstr "Aucun lien n’est disponible pour ce domaine." msgid "Back to reports" msgstr "Retour aux signalements" -#: bookwyrm/templates/settings/reports/report.html:22 +#: bookwyrm/templates/settings/reports/report.html:23 +msgid "Message reporter" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:27 +msgid "Update on your report:" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:35 msgid "Reported statuses" msgstr "Statuts signalés" -#: bookwyrm/templates/settings/reports/report.html:27 +#: bookwyrm/templates/settings/reports/report.html:40 msgid "Status has been deleted" msgstr "Le statut a été supprimé" -#: bookwyrm/templates/settings/reports/report.html:39 +#: bookwyrm/templates/settings/reports/report.html:52 msgid "Reported links" msgstr "Liens signalés" -#: bookwyrm/templates/settings/reports/report.html:55 +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Commentaires de l’équipe de modération" -#: bookwyrm/templates/settings/reports/report.html:73 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Commentaire" @@ -4015,14 +4023,14 @@ msgstr "pourcent" msgid "of %(pages)s pages" msgstr "sur %(pages)s pages" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 #: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:54 msgid "Reply" msgstr "Répondre" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 msgid "Content" msgstr "Contenu" diff --git a/locale/gl_ES/LC_MESSAGES/django.mo b/locale/gl_ES/LC_MESSAGES/django.mo index 78192e67d85eb90031d0da3966b8042cf40a279e..563a5e98d3e02f475cf713db9069f7b9e76d7ee2 100644 GIT binary patch delta 20492 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 delta 20389 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 Dpl$bL diff --git a/locale/gl_ES/LC_MESSAGES/django.po b/locale/gl_ES/LC_MESSAGES/django.po index 731b56ec2..5ae9619c3 100644 --- a/locale/gl_ES/LC_MESSAGES/django.po +++ b/locale/gl_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-28 02:50+0000\n" -"PO-Revision-Date: 2022-01-28 05:04\n" +"POT-Creation-Date: 2022-01-30 18:17+0000\n" +"PO-Revision-Date: 2022-01-31 07:59\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Galician\n" "Language: gl\n" @@ -3574,23 +3574,31 @@ msgstr "Non hai ligazóns dispoñibles para este dominio." msgid "Back to reports" msgstr "Volver a denuncias" -#: bookwyrm/templates/settings/reports/report.html:22 +#: bookwyrm/templates/settings/reports/report.html:23 +msgid "Message reporter" +msgstr "Denunciante" + +#: bookwyrm/templates/settings/reports/report.html:27 +msgid "Update on your report:" +msgstr "Actualiza a denuncia:" + +#: bookwyrm/templates/settings/reports/report.html:35 msgid "Reported statuses" msgstr "Estados dununciados" -#: bookwyrm/templates/settings/reports/report.html:27 +#: bookwyrm/templates/settings/reports/report.html:40 msgid "Status has been deleted" msgstr "O estado foi eliminado" -#: bookwyrm/templates/settings/reports/report.html:39 +#: bookwyrm/templates/settings/reports/report.html:52 msgid "Reported links" msgstr "Ligazóns denunciadas" -#: bookwyrm/templates/settings/reports/report.html:55 +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Comentarios da moderación" -#: bookwyrm/templates/settings/reports/report.html:73 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Comentario" @@ -4015,14 +4023,14 @@ msgstr "porcentaxe" msgid "of %(pages)s pages" msgstr "de %(pages)s páxinas" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 #: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:54 msgid "Reply" msgstr "Responder" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 msgid "Content" msgstr "Contido" diff --git a/locale/it_IT/LC_MESSAGES/django.mo b/locale/it_IT/LC_MESSAGES/django.mo index 1b0b6d280554fe96697529525ce7277a72b5431f..a8f4c5de665cf17ee3449e7e0fedd48338a48560 100644 GIT binary patch delta 20504 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 P0Aymm)plW3#+$ML=JWUR delta 20400 zcmaFS#`>m}wf>$E%Txvi28P?r3=A?13=Ci77#P%985qvkfX*~GJ_Zx zv=|r|W(6@Yh%zuR91UV%kOk=rVqoxQU|{$e#K7Rhz`)=d%)ns7z`)QE%)p=rQWwm? z5C$?gn1Lalfq}t0gn{7@0|UeA5C(=<3=H)Qd7%sp(hLj?kzouBMhpxLrC|_@R)jGy zh%qoQTn=MkP-0+UcooLLV9db4z#GoM;K0DZ;26%p5Wv8|&=d}F;N@@z26+Ys29^j0 z27U$x29*c~25|-k29pQ|1_cHN2A>E91|J3nhFqxlE)dOF&%kggf`LHPc#FA90LQx zy=X{C{f%Z|kYr$B5RQTHbz>M9Vi*`0oMRXm`0E)M7#74ZFqkkfFl>lnVBlh4V0a3W zU|?YQ5W~Qr3W|kT1_nL`1_rfQNJyE+GB9K@FfathGB7lQER1DfP-b9YaEOD1U`iYV zLp}oo!*nRk9?!s#$H2f)9?!rK%)r3#ES`ZOfq{X+DuIEaK81mSVRixoLlnrOL z85ndJ7#Q{@Lp<~<8RAg+6i5_wr7$qKfZ{%dfuRcI!4!siu!Y&FkT^Y>3W;;JGzJD! z1_lP%GzJDu1_p-UGzJEL1_p*&DF194Br3kAF)*+)FfhoaLui$B1_ogU1_rHk1_m|; z1_rxy1_lmLqD*IC;ALQ7@JnZ4U}s=ph=Izdq}M|PvY`US=@1`PK{fP1HOztI@7F%QF}lxEUB2&SyY8 za61Fy^S2oc42BF04Bs*!A)=89F;71e;_-TiOi0jqWI`NC+@yLma}N4RL^6HUmR80|SFnHYA(%WkW33kPT7)I2+=lkJ%81|IB7! z0F`V^ISdSo7#J94eAtsdv(XW-qz`z2^{}y== z7un`PqQWx|qR~GOVqpwaLrNYbZj16D4r~D#z`(#TIS&%2Gx8t~UYQ5+$d)_?1}g>z zhU0mVY|WGp(HE1?z%YS0mT17{XP;&N>efx)aCQlQwELwuH44ly7f%C9en#Az>-zYr?Fz8vE7{pAn` z9fKNtxg3({ZkIzs@LM?~q<)t}JSJEH2}$J&1_mBb{@1U7xXcDhyH!AZ8UW=-gA_6_ zFr-4oi=cEZla8h{G;bKtkqi1vLMwRYElAR6^p=rVeIw=1fRR2w=xsR&qAqKpHTKumH;uG#_h|hJa!KswNq#9gXG5AzN9GY7VaY#)y zB&1raA#pqns&7p-#N5r*3=H9*BDk7?L4|>VLB0m!F_#)hh)34fKvI8Z4Mamz4J2r$ z)j$%{>`vtb`i4z82zuL$wUx=KHx?NXRkPL43+l z2XVM;9i-K)UI%f2D@44W!K)5pKnPSKp$=kkD%5~tsC)-heo7t0mUwcsE0%$dp(3N52e-WK~Y!Fz@S?XNpyDg5R1L*A&t<;dPv9=)I%KD zR1YbT`syKZx2hiEkX_I^lNuoM^BN%Pmp4G7W_ts~+_Mb~47{NH zf4>0|#BZSzf1nEa8bK~(U{GmY5lB{1_M*`kElw@GjK6zfko&%?$P6)~!S{Bxp37AqLntL!uzC z8RD>vW{3s3P<~}IB+BZV85q_xFfepCLpq_>Es&N@dke&24_hD}c+&#$*zXodTH$Pk zBzFGRdIkn-1_lP@R!ES=w?ceY(hBL*)wMD(Yyh=rS{WGDF)%O$wLuJEY==0Ay&YnK za62Rll-eN<*KCLM0Ug>QQ4rq_(U%U@mkZ@r*0)0}2GO9d)RcBeoG)vKG^w_?Lwx$a z9a8WAff}gY0SPJN4oI2q+5t(N2_2B4x~2mXWivY<<}K=gG`lxL#a}|{`cEB@p!(eb z@i|*3Byk8pY2{9c1I;=a7&1ZqcPM{rC&Z#toe&2;htgjbU}i6a~C8?4|PF0pAWkrKIHF)6f6?m z5QEL2bZ|E$3Jba+`G0aZ#N5?TdS5rl-g*Xxi`|gy@wpq~0P!A3Pe!u`;*-c8h;y<lOmVqoPI zh|gN5Ktf>K6iAdDodOA&>r)_6b$<#Z@x7P=F_?KOq%P5&3W+-BsgSWE->Hz?P%;%_ ze(zL}x%CVTGrqeU|`5)U|`rd15%*K&x91g1~VZc z=L@C7WHFE>)XngJHl*bvHV0B3 zn9YGW+;I-XVZQZqAO=RyfoM#g1BvruD8FhBq)6?W14+e;pz2S~f%xPiRNbvP5Qn^i zivNb1!!j4*Q0}=9^`dhjiCk_jB$w1X%!Op1u(=S26wZazW|eaxE?fdNVAEWP1NY2@ zq=7R~18>fSG`Su@)!WR21hv;Zh`PvmkdR562MLjic@T&6&jZ_2&oE;iq<}a)4`RW$ zc?=Ae3=9lx^BEW}f=0FHL-;}qAo<&80i^yfTL1}}B~bA_3m|FZ*#ZUzFVNuhLI@qS z5K=qNT?i>(&MbuJd$o{(VH2oxz_bXGh_)_*B)(INAfw@T7eV6OVlgCDM=yq?jf%w( z^}82C;`G8|NVdJb7!q|47ehkw1yuaQVo02STg<>v#>l|Hv;^YO%B9f!-?@~5Ar#b1 zUJA)pPe2k33=A)pLW1fol>P>#|1X8aDaSI1MM6+oY8k{}rDc%v#Aq2rzuPiM(ECIA zY0Dt`^Or%}|CP%iaoq$pV8SwR+%PPFYB&wG;0jdTon;IRM?o_p%OD}JVL1asGy?;} z?&Xj;7heG}Ph|y!Zv>_7S3qh>A1FU#1w%b}>ZNoA#6?{zATFM=0uuCdq2dQtK!W(x z3P=!NSOLkN*P-hFuYja}j+GGok}DyJPH811F`BG|nCA@Tr>%sf{?e88khtt#332g) zl@K4TgBq}NB_vIpUI|fmZzUvXKd*$uDf=o2ExZb1q5LX{0}NL|5}Va3NVbhw1qq4z zRS@%gRzW;89V7s1g3Vn8DS(!)g1Bt|D#!@s)m01((?DZCt04~jvllhf~Ks}sw zkk;$Qb&za%VI2d5BLf2i^Lhq`Akb9GdPw%0u^v*g9a|46P@b)a%;|7!fRvcc8z5!; z`V9~dJ=g$o@V5<+BARU@*n#y7IvXMRw00vTXisc}RG)V?LV}EQ6C}vQHbH_~5z5!y z#K2I*z`$U!36l6$L&e!QLqbAmGbHX6HbeC3Z-zL;dNah~ftx|**E28_ZidY7)oq3( zuFIPt2H)BY2^rrlkRY421rpRpw?MMp=`9QlzMu)pEs$QW;#LU1U@Ii#_HAWgU}9ik z__!4^Bl2Y{149yM8gCmUO?7UAw*TjBg9Oc@ZIHyXX&WT2c5h=~NCO$L4dhY=hKTKu z>N9ma#KOMqkdV8(oq@rbfq_9|2gCt6J0SdBJ0MZ_ZwJI&hnf?jzKgm1V9 z5@JDnAP$Jw0|~iAsCecchI(*&KYtHo!g2NjMy%8uQO0o=5<(_tA^O74LYic`XCWovq_dE+f9F|9h+aJlc0fJD_p=a}NuPrl zsCN#M8=B8SdOVZQK~n4abC4qT_BlxT@b(-eB&5zm8Zi3jA+y|G=NTB97#J9Ko(EgN zU~>Ty#R(S}7>Yr&WfvG2%0TUdiwq3qp!&b=BBc8Lb`dhW?Q@BNA%lT|VcjJLhFAs$ z2Jy>~l?$bpA&KkiWk`d<>dP zfYR=_AW`IZ3sR&eLe&>Q4XU^W$u&*4AW_qO3)0ovaSP&ri?<-v^FyfqPf(iiHnjd1 zxD5$1)!PsYtZzds^tuhv7<(JygFGm|2g;v&8`84beH&8nT)GXh_`z*RNc_AF$(Gu8 zAnNSzK+;m!9Z0#5bO+l0pMD3Tap4_E(CoSc3Bn_HAPzfq2jY_lcOW730V@Cf4#dHK z??4>Da~G1zrS3u;Zgv;q5cj)~;k?SbknFngE+l)usJ{zw8S6brr%>h|q;`tD2PtAJ z??EiwbPp0mJMTd(Ja`Y{&;l#Qbq^p4EFVI$m-9nNbsPE+VsXMlNC>1qgoHpXRKE8iB-_n^s@n{e-}Mj@ z0;e8A9Q^DdByGHV2x(V*e+UT~u}5H!)-$L-g2b&mlumsFaX|AUh{C={5Qofv1aZK! zM-T(ILHYY1K?KPcOJcbzj;V}cl zLeMIhClCV`J%J>`6;B``vl}XY_6Z~rU48;_$o(gfg60L3&+`O4Xk-Fn|_Q zr96d1$)cwak8OO)z@QAu|A(GJg811}h)@4OY364TpK(2d_(bU$#6s(5kSKG3^8KLv za40|V88~PevYtVrsOuTT;-$|Z_H2R5pLzz(|F51w>g#{c7#QY&W~rV-EZFlLQp6s6 z4$*k~IV5U6K8HBu50qwo0r4^43rHL*yns|%_Aemj6u*Gvj@lQHkn4uh(_b*ugI7E) zhALS10^-s=FCbBJ8mjR23y8(fq3S-pfaGh2myqlv@)DBzylK6+d<6-5iB}MZX}+q57;O9sVzC`mf$uAb&*Px{Vko}_YS7GAko>yk@2!0I-!lc)bIBa|kiTj1GA=T-w z*AR>Ezh+>lV_;zT^BNMQ)o&ne#P&CksG0Hx5+!rrKzzRb4aA;pZy@E$@i&kVsAqT! zVQ{^LC=`Lx(r+Oh2c@?V3%uS!3=De^)cg+Jdz9K`+s(jt=l0Lfi8A0Sa1`vH=8Yd%2d|0jF^xrBjX z?gvOvt@!|nlC2*g4%q(z;-f1cAVK)*1H>Ypj}V7SeT3*!fYO>DAr3bB2njjokC0)# zu#XV)qCY|!tpy($80taG;%0w@_+aHnh|jh`4cPk;68GmmLej!5s0B=)AVJCf3F07? zPY@rweS+ks2q-`K6C|;geu6l3(kF<6W_*Ioim(2}P!C?4$^022q4F8xQ*$Wo3l&fP z3~^Z5XNb>gKSR<=-)Bfj&HD@q!4;n&iEsO7NQmtJ4Ds=a&yXm%3pMv2R9@r@wEr*r z1!95G7l;omzd#)1@&yuC;a?y=%!Z2BLirQEK%!z1RR0F3`t4sJA$s}?q$_pRbv%Wz(pKGD= z*P!xmzCjYxuWyisjOuqtl-PWSgn-+328QdPC7jARUy?e;^JH{R>G;Nq-p_>OqT3i~d3k zZ2k+epz|+e;9%}wNNsliFC=LH{)L1T=RXF9a|{d&`cV4cKS)rY{SQeqSN=mB^5{QA z{NsN}Nc{K@Nke=LjNp}$<_wIG^?x=DjNtXT&J2v;`G7zMM(|qha0W*38t!riM({jg zKLaCpMdJzvM(`T%#|(_%R_|v9M({dcB}PW@qI7LWMsT^}$;b#^lAQ&mdl(tP>kZa1 zGJ@Bf?`N!M1dndrW`r0Z%LJj-m>9v!Y4w>H!3`8^CWu4am>9vUi8y1Lo2n!>4VNoUvBxL$n7{N=jPeR3SvoM0! zhBL52)TyvCf>%^~vO>(OFJ@%~FSGAug#`H$Rz~oG;UiG`8!IH}HP{%zOR^o=7{N=d z%h@0y(ai>tU%>{k_#hi3=r6M|f(InNut6MP%nk{maCV5gT6S;<*E969LkybD4oL$$ z*ddAI7&|1WPO~$Dmr!41hXmoRCEJg%c9wtXz<&)#8FgohKK_Vg`mp5Dm)zg5Q}uUA&JbEn-RQ{+J_rrQ8PEhVY9g*`j$fJ4crh9 z?&fA>s0Zy#ILr-6jd!^j!RvT`KouD9KonZ=fa8k6fd>-TK0J`9NacYzq=<(RyeFiZ z2a=X1@<0;r3LZ$*UWAIjgQ{och3MzwWvmCstu!yhrK-FTm+JFE47TEh#GNxQ!~q_> zkdO-Dh4?UWT=Mh15V28O%55QnMqLDH5rA4J}h50VJu`061R z6+jhK@4-yr3p%%R3gLs6QACji{_#yTv z@k8`$^D~0`ghuuJjNqZv0)9xUT*(iKinIKXMEQark}ZGpLtHE^zzE)sqbmRj>No*N zVk#AYIHXkoVo|REBn?dyfaLcL0+15#mH@;<-vl7pxt>7~lIY9?AqIsDLM%>)(p7?t z;I34!AjE<#P2`4GPXh`L>(5OdFnGBSvR^8ZayNdEpP3P}rc zVvslthtdgRkSNI%gA^n+Vvr!5Ee7%VaxsVn+r%IS-xq_#^&2sWxg6q*;O#o5;*hvc z7Kb<_SDcZd9<;@(UL0cKG;v6r&4()7CJynz0dYp~lBt-8^KtlLCl+P^*sg{)`8SBCIzN;j}C&7{smnBI;98?13*GfX- zyk8O$5>q81K3pLQamW!#NK|};s{0`cNgMy5`uU|GK39~2n4>KPaj2nGJtQdYq#!}) zB?SqAVkt;acS%8fwo(d`dbdbH9QYJ!z;`I0MH*tDm^4JavNR)jN0pv5#ABV(5C_eW zhUi}jrFYj$LxSk6G{nbGr5V99BJZRb!OLl-WFQXom0<*r=SRvgg0{^u%#>jS&-t{- zLe!s-g_ILtWFa9VA_sA>fgB@v+g_p^q@?VD(zoRxAy=;@4~f%oc}Sep%QG^(0IhhG zhs1rC0;CLIqQD5Aq&}zsahSLwM7@_HBX|}pM-ifamm(yJt|&sHXn zIHM9c7u7RxC^0fjWn^FwQ-V}3Ym_17!BJ&K@Py+jWk&FpD_IqYxS|Rqq|{U(2J1ul z<|>e&c2I%DwZ94^(M762O4M8xh(|h9AW^VX1r){g3=G>AyE>m3elIT3Mr_{RT&xHGcYjps6s5RQDX#8-%U`1gvfU_hJSH>SBC`g9d$@ZJXVJ! z;@9es5D?LTI9yHx;xSVVNZN4FfP{361|vf~Xm4k!2E+%;G$0o2)_^3Yn;H<8|I~oE zoJSKvt7t+Du+fABZKx(B?h7;_LEEJX34uA9kTkME6XKvtnvlBYjwU3{{nccw2RD;d zwID7u(t;?o)q?ogT?^vkU@eG&`C5z&a~T*Inzb0gd%6_0A?l83L-bwHhB)|^HY8-; zYC}Tmi#8*8a~h)#BY3}|p$??B?bfM>G!obAFoHLgzSLo4*vG)Ypry+Q-mUsl7t)yY z)Psb~DLqKF`9crU+?Laal#G%3kh)=sKE&X2`j8O(q|XT6Y9(XE;kk5n>JX@_`0tw1y6Gnz| z1_p*M6G+pF$rR#aFH=a7T4D-GgjJ@D;QhW$rVx+ZG=&7Ykr^bUd(0TYv*O3hzy(x2 z!$~tn@TSsVW{~_HV-7Je(Hs&o>E@8MQD+Vb@=kL`@b1?mP*sb*)W3l^Ukw@wCR4^KoYB^EhM%3+CqXp&z2Fqk-5$m z5~2%j85uZ0_5TW6NGjfF3kiX}wvaOYkS!z%-q}KWxq)_!pmk{s4R#O%Wb7e{RM{RP z-wfq%vWJAAkOL%}N;oir_X!(1fPBoru+@PPyy$(O10zEwXiMcU2S}nxbA&kLwId|E ze0OAI0PXu#cY?%iw-Y3LO?HC#WEqq`>BPvu2%0%zU|@I)TJiwe7Y^mCFfuTFV`N}( znapda%(!>5p`EzwCng4lH%tr+Ul|z~jzHC&Wn^Gj#mvC)aB`}hxgw~{}d%}^Q8#J4UpWHWRIGXuj81_p*xPzU)C$lL7TUk85qQ%j%{aRV3^Is!0-cVa28ZNm5G7DfSG~e5fcML2onQC z10w^26f*-uEmR%IP97+m7Zgd1ldBxKWaXI{7?vV28IpH3=C_T7#Q>> zFLV&E&xC3+WMW`QXJlXyW@2CvXJlZoVq#z@g!)Pc>WIS(3=FQ!3=EA>KFCtgM&KDt zkoj^&Mg|5ECI*IIP<^aW8l*0ciGiV&iGkrJ)V@+C28MZ{(*#5q85mfY85l~K85q7p zB|%A?m5G5NhM9qZnTdhHmyv-Xf{B4anu&p78v_HwN@fNIA!f)}8^~}$W(Ec`Mg|5( zMh1oys2NY0K(mDm49A%v)0p$4i6w2ZNgiGkrBBLjo#$B z3=FFo85kx(%$t1MnX`T!69a=O69Yp9sC0q)T9Ao>;RZ7U13wc3!$f8VhR;y_rcim1 z^E4P480wfA7;G6C7|t^?Ff>Bd%w%R@*aT&R)VVV=Feo7LKPdr9xyR5v@kK$ zGXyg-Fsx)^U|7J+z;FXpR4_vpm91xFVA#RTz);G}z>ozsK!TBhA&iNE!H0=~Ap+!4 z1_lNrW(J1UP=|RlGcdeigv|RFGBYq-0d41Df~-3VWoBUL0d0f=rF*FQ3C#5j4CkSo z(~wYMn8yg2)ry2#3i3rVBLjmkR2^tNnJhB{!x?4kInxHy? znSsHbiGjg`nSsHEnSsH8iGjf!R2MKZFx-MV&ySITp@e~fL11#Mn{@p)sAwJ&1A_n) z1H)k^28Ikq1_onL`ek5XxWmZ6u!os}VLuZC!(=7~hHFsQfELPu0sw?T2cGPQn#0M= zz@Q6N1Cl!liegal2;zWRa!|Q^NFZ7<^g#vG85tPnf(loN1Vc9y1H%kZltSenGcqu! zFflM>GBPk2GBPk&PBwHG7nEXRV7Sc8z_5>rfgz5Wfx&n3#{l8_i_DOfHXu8XGDBwP z-!VewIleM6Ft9T*Fz_=nF#KU)U@&B6V7SG|z!1R9z_0|gvXdFIv|JtPp~=h)4DE~z z49v_742zi<7@C+N(-0uDLAW23(HI#R`j{CQE-)}Km@zR(G5la;U^ob>X`qhhW@KPE z!^ps}d@`$tvSvOL1Gw`E(r(Ypz~Icxz|hOcz_17u{-AP%0Wx>PHaXBkzWy)B;~=G= z<7Ai_7#1=zFt9-#2NF(WW?*Q5+5_T)4p{)vAgl-~qd^SNZeXaIN1!$jG>~hU85lG{ zH3K7PSsG+Hq&O1;!xzx@Mn(pP6QJ5{9moQxg%21Q7{WnO%m`UlI+vM&VFm*O!!Bk9 zhM!PFL8rWcCU`;iPGVwUI0ZW12E+k%@Ie+r&8lK%U|7V+z|aLMRY1iZBLl;J1_p*A zs5z=k3=CCF@(c{~K?n3OGB6~96odM@%nS^BLE!}|mL~UlimM)j`ppYUgKPt>DcK0+ z|72od5Sx6`Q{Qz0C`Ump*aK=WKpmq6Dle&cwjb1=YXoOum8=&z#zi}StJ5dQIDkhGDrZ5 z&6yY&E-^ANw1L_%%nS?*kkn0svUQliE14ODnIU^cWufAeK@BG+28Lu%*nnC9P%{~s z7~~kPL!H?Qr4<+%7!EKqFjz1#Fo;Y}^cI#3W`e9$Wq}&Eoq>VDlZk<0+T=uUY0XGx z28L=T28I=&Vupc%VHzU?!vsbKhF74}z|6oP%FMtpiJ5`n#N?&k^16Y{3=GdfO$n%3 z7ohYv(5XPo3=H$2e2@#bPyXmFojM2Vu6v+j4U{?<7#LibA?uQ}K@}Sl149B-R|z8n z!(OQRKTxq^D7_mR!QG(d2~-SZ3+VWuUy}=cl)ocLCLD@Q>JPT!m{JIg8 z%orIM)`E&7Q0Iw>fng341H)=228N}~3=H=tGx`aqo`afd$;`m86{;I_1PkbhttC*o zYG%kZEXY*QX(u2Wggu!V82*70HB{dnDE$#630gDE%)l^(nSo*1624r+!HGebQ?Ae7?)YP3K#bwI^V zGC~$SgU**)!N9;!!oBk6}%#LDaVED_xz>vqt0Nx<2&&H;$Z!+$7$7pU-t8n&8&f#Da_z!OXi3EUfuR6Yfk5@BgZjy!77D2KzK4N<;Wuby zHPoV7P+th@(_&`GdbD$(suil4m6?GdoQZ+q0jRS9Dw`&M3=rqc2Xzt{85m3^3kC|? zRxmLzd}m}}a0B(n7#SE67#SFjF)}a&F*7g(F)}cm21Okc14As-p1TYT4D&!a1hhL~ za$=yk=nYU24Yg4N)TadR_A0_7*0_ NUrO8OsWP6D1prmx^ppSq diff --git a/locale/it_IT/LC_MESSAGES/django.po b/locale/it_IT/LC_MESSAGES/django.po index 24c449806..fa00f1f49 100644 --- a/locale/it_IT/LC_MESSAGES/django.po +++ b/locale/it_IT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-28 02:50+0000\n" -"PO-Revision-Date: 2022-01-28 19:04\n" +"POT-Creation-Date: 2022-01-30 18:17+0000\n" +"PO-Revision-Date: 2022-01-30 20:36\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Italian\n" "Language: it\n" @@ -3574,23 +3574,31 @@ msgstr "Nessun collegamento disponibile per questo libro." msgid "Back to reports" msgstr "Tornare all'elenco dei report" -#: bookwyrm/templates/settings/reports/report.html:22 +#: bookwyrm/templates/settings/reports/report.html:23 +msgid "Message reporter" +msgstr "Messaggio segnalato" + +#: bookwyrm/templates/settings/reports/report.html:27 +msgid "Update on your report:" +msgstr "Aggiornamento sul tuo rapporto:" + +#: bookwyrm/templates/settings/reports/report.html:35 msgid "Reported statuses" msgstr "Stati segnalati" -#: bookwyrm/templates/settings/reports/report.html:27 +#: bookwyrm/templates/settings/reports/report.html:40 msgid "Status has been deleted" msgstr "Lo stato è stato eliminato" -#: bookwyrm/templates/settings/reports/report.html:39 +#: bookwyrm/templates/settings/reports/report.html:52 msgid "Reported links" msgstr "Collegamenti segnalati" -#: bookwyrm/templates/settings/reports/report.html:55 +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Commenti del moderatore" -#: bookwyrm/templates/settings/reports/report.html:73 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Commenta" @@ -4015,14 +4023,14 @@ msgstr "percentuale" msgid "of %(pages)s pages" msgstr "di %(pages)s pagine" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 #: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:54 msgid "Reply" msgstr "Rispondi" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 msgid "Content" msgstr "Contenuto" diff --git a/locale/lt_LT/LC_MESSAGES/django.mo b/locale/lt_LT/LC_MESSAGES/django.mo index 7d8a201a48e9ec2503c4521a0347e6d81e08016e..7c4e54132e96414871daace696db775dd917cbca 100644 GIT binary patch delta 20279 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 delta 20003 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 diff --git a/locale/lt_LT/LC_MESSAGES/django.po b/locale/lt_LT/LC_MESSAGES/django.po index db8813f13..b9e24e72b 100644 --- a/locale/lt_LT/LC_MESSAGES/django.po +++ b/locale/lt_LT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-28 02:50+0000\n" -"PO-Revision-Date: 2022-01-30 17:27\n" +"POT-Creation-Date: 2022-01-30 18:17+0000\n" +"PO-Revision-Date: 2022-01-31 15:31\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Lithuanian\n" "Language: lt\n" @@ -3603,23 +3603,31 @@ msgstr "" msgid "Back to reports" msgstr "Atgal į pranešimus" -#: bookwyrm/templates/settings/reports/report.html:22 +#: bookwyrm/templates/settings/reports/report.html:23 +msgid "Message reporter" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:27 +msgid "Update on your report:" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:35 msgid "Reported statuses" msgstr "Praneštos būsenos" -#: bookwyrm/templates/settings/reports/report.html:27 +#: bookwyrm/templates/settings/reports/report.html:40 msgid "Status has been deleted" msgstr "Būsena ištrinta" -#: bookwyrm/templates/settings/reports/report.html:39 +#: bookwyrm/templates/settings/reports/report.html:52 msgid "Reported links" msgstr "Raportuotos nuorodos" -#: bookwyrm/templates/settings/reports/report.html:55 +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Moderatoriaus komentarai" -#: bookwyrm/templates/settings/reports/report.html:73 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Komentuoti" @@ -4048,14 +4056,14 @@ msgstr "procentai" msgid "of %(pages)s pages" msgstr "iš %(pages)s psl." -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 #: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:54 msgid "Reply" msgstr "Atsakyti" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 msgid "Content" msgstr "Turinys" @@ -4420,7 +4428,7 @@ msgstr "redaguota %(date)s" #: bookwyrm/templates/snippets/status/headers/comment.html:8 #, python-format msgid "commented on %(book)s by %(author_name)s" -msgstr "" +msgstr "pakomentavo autoriaus %(author_name)s knygą %(book)s" #: bookwyrm/templates/snippets/status/headers/comment.html:15 #, python-format @@ -4714,8 +4722,8 @@ msgstr "Būsenos atnaujinimai iš {obj.display_name}" #, python-format msgid "Load %(count)d unread status" msgid_plural "Load %(count)d unread statuses" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Įkelti %(count)d neperskaitytą statusą" +msgstr[1] "Įkelti %(count)d neperskaitytus statusus" +msgstr[2] "Įkelti %(count)d neperskaitytą statusą" +msgstr[3] "Įkelti %(count)d neperskaitytą statusą" diff --git a/locale/no_NO/LC_MESSAGES/django.mo b/locale/no_NO/LC_MESSAGES/django.mo index 3d71d6dd979a03b7dc8c6121a1c0371cae8b29d7..3d3d4263ff97c37febc6023a770f772e58b6aace 100644 GIT binary patch delta 25883 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 QAJnYL%-ep5hjFJc0B0hnQvd(} delta 20511 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\n" "Language-Team: Norwegian\n" "Language: no\n" @@ -193,20 +193,20 @@ msgstr "Privat" #: bookwyrm/models/link.py:51 msgid "Free" -msgstr "" +msgstr "Gratis" #: bookwyrm/models/link.py:52 msgid "Purchasable" -msgstr "" +msgstr "Tilgjengelig for kjøp" #: bookwyrm/models/link.py:53 msgid "Available for loan" -msgstr "" +msgstr "Tilgjengelig for utlån" #: bookwyrm/models/link.py:70 #: bookwyrm/templates/settings/link_domains/link_domains.html:23 msgid "Approved" -msgstr "" +msgstr "Godkjent" #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" @@ -284,7 +284,7 @@ msgstr "Português Europeu (Europeisk Portugisisk)" #: bookwyrm/settings.py:258 msgid "Swedish (Svenska)" -msgstr "" +msgstr "Svensk (Svenska)" #: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" @@ -328,7 +328,7 @@ msgstr "Velkommen til %(site_name)s!" #: bookwyrm/templates/about/about.html:23 #, python-format msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." -msgstr "" +msgstr "%(site_name)s er en del av BookWyrm, et nettverk av selvstendige, selvstyrte samfunn for lesere. Du kan kommunisere sømløst med brukere hvor som helst i BookWyrm nettverket, men hvert samfunn er unikt." #: bookwyrm/templates/about/about.html:40 #, python-format @@ -356,7 +356,7 @@ msgstr "Møt administratorene" #: bookwyrm/templates/about/about.html:99 #, python-format msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior." -msgstr "" +msgstr "%(site_name)s sine moderatorer og administratorer holder nettsida oppe og tilgjengelig, håndhever adferdskoden, og svarer på brukernes rapporterer om spam og dårlig atferd." #: bookwyrm/templates/about/about.html:113 msgid "Moderator" @@ -1071,51 +1071,53 @@ msgstr "Søk etter utgaver" #: bookwyrm/templates/book/file_links/add_link_modal.html:6 msgid "Add file link" -msgstr "" +msgstr "Legg til fillenke" #: bookwyrm/templates/book/file_links/add_link_modal.html:19 msgid "Links from unknown domains will need to be approved by a moderator before they are added." -msgstr "" +msgstr "Lenker fra ukjente domener må være godkjent av en moderator før de kan legges til." #: bookwyrm/templates/book/file_links/add_link_modal.html:24 msgid "URL:" -msgstr "" +msgstr "URL:" #: bookwyrm/templates/book/file_links/add_link_modal.html:29 msgid "File type:" -msgstr "" +msgstr "Filtype:" #: bookwyrm/templates/book/file_links/add_link_modal.html:48 msgid "Availability:" -msgstr "" +msgstr "Tilgjengelighet:" #: bookwyrm/templates/book/file_links/edit_links.html:5 #: bookwyrm/templates/book/file_links/edit_links.html:22 #: bookwyrm/templates/book/file_links/links.html:53 msgid "Edit links" -msgstr "" +msgstr "Rediger lenker" #: bookwyrm/templates/book/file_links/edit_links.html:11 #, python-format msgid "\n" " Links for \"%(title)s\"\n" " " -msgstr "" +msgstr "\n" +" Lenker for \"%(title)s\"\n" +" " #: bookwyrm/templates/book/file_links/edit_links.html:32 #: bookwyrm/templates/settings/link_domains/link_table.html:6 msgid "URL" -msgstr "" +msgstr "URL" #: bookwyrm/templates/book/file_links/edit_links.html:33 #: bookwyrm/templates/settings/link_domains/link_table.html:7 msgid "Added by" -msgstr "" +msgstr "Lagt til av" #: bookwyrm/templates/book/file_links/edit_links.html:34 #: bookwyrm/templates/settings/link_domains/link_table.html:8 msgid "Filetype" -msgstr "" +msgstr "Filtype" #: bookwyrm/templates/book/file_links/edit_links.html:35 #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 @@ -1143,41 +1145,41 @@ msgstr "Handlinger" #: bookwyrm/templates/book/file_links/edit_links.html:53 #: bookwyrm/templates/book/file_links/verification_modal.html:25 msgid "Report spam" -msgstr "" +msgstr "Rapporter spam" #: bookwyrm/templates/book/file_links/edit_links.html:97 msgid "No links available for this book." -msgstr "" +msgstr "Ingen lenker er tilgjengelig for denne boka." #: bookwyrm/templates/book/file_links/edit_links.html:108 #: bookwyrm/templates/book/file_links/links.html:18 msgid "Add link to file" -msgstr "" +msgstr "Legg til lenke til fil" #: bookwyrm/templates/book/file_links/file_link_page.html:6 msgid "File Links" -msgstr "" +msgstr "Fillenker" #: bookwyrm/templates/book/file_links/links.html:9 msgid "Get a copy" -msgstr "" +msgstr "Få en kopi" #: bookwyrm/templates/book/file_links/links.html:47 msgid "No links available" -msgstr "" +msgstr "Ingen tilgjengelige lenker" #: bookwyrm/templates/book/file_links/verification_modal.html:5 msgid "Leaving BookWyrm" -msgstr "" +msgstr "Forlater BookWyrm" #: bookwyrm/templates/book/file_links/verification_modal.html:11 #, python-format msgid "This link is taking you to: %(link_url)s.
Is that where you'd like to go?" -msgstr "" +msgstr "Denne lenka sender deg til: %(link_url)s.
Er det dit du vil dra?" #: bookwyrm/templates/book/file_links/verification_modal.html:20 msgid "Continue" -msgstr "" +msgstr "Fortsett" #: bookwyrm/templates/book/publisher_info.html:23 #, python-format @@ -2045,7 +2047,7 @@ msgstr "Avslå" #: bookwyrm/templates/import/tooltip.html:6 msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." -msgstr "" +msgstr "Du kan laste ned Goodread-dataene dine fra Import/Export sida på Goodread-kontoen din." #: bookwyrm/templates/import/troubleshoot.html:7 msgid "Failed items" @@ -2248,12 +2250,12 @@ msgstr "BookWyrms kildekode er fritt tilgjengelig. Du kan bidra eller rapportere #: bookwyrm/templates/lists/add_item_modal.html:8 #, python-format msgid "Add \"%(title)s\" to this list" -msgstr "" +msgstr "Legg til \"%(title)s\" på denne lista" #: bookwyrm/templates/lists/add_item_modal.html:12 #, python-format msgid "Suggest \"%(title)s\" for this list" -msgstr "" +msgstr "Foreslå \"%(title)s\" for denne lista" #: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/list.html:249 @@ -2295,7 +2297,7 @@ msgstr "Nå er du klar!" #: bookwyrm/templates/lists/list.html:83 #, python-format msgid "%(username)s says:" -msgstr "" +msgstr "%(username)s sier:" #: bookwyrm/templates/lists/curate.html:55 msgid "Suggested by" @@ -2393,7 +2395,7 @@ msgstr "Notater:" #: bookwyrm/templates/lists/item_notes_field.html:19 msgid "An optional note that will be displayed with the book." -msgstr "" +msgstr "En valgfri merknad som vil vises sammen med boken." #: bookwyrm/templates/lists/list.html:36 msgid "You successfully suggested a book for this list!" @@ -2405,11 +2407,11 @@ msgstr "Du har nå lagt til ei bok i denne lista!" #: bookwyrm/templates/lists/list.html:96 msgid "Edit notes" -msgstr "" +msgstr "Rediger merknader" #: bookwyrm/templates/lists/list.html:111 msgid "Add notes" -msgstr "" +msgstr "Legg til merknader" #: bookwyrm/templates/lists/list.html:123 #, python-format @@ -3129,8 +3131,8 @@ msgstr[1] "%(display_count)s åpne rapporter" #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(display_count)s domene må godkjennes" +msgstr[1] "%(display_count)s domener må godkjennes" #: bookwyrm/templates/settings/dashboard/dashboard.html:65 #, python-format @@ -3523,7 +3525,7 @@ msgstr "Rapporter" #: bookwyrm/templates/settings/link_domains/link_domains.html:5 #: bookwyrm/templates/settings/link_domains/link_domains.html:7 msgid "Link Domains" -msgstr "" +msgstr "Lenkedomener" #: bookwyrm/templates/settings/layout.html:72 msgid "Instance Settings" @@ -3538,57 +3540,65 @@ msgstr "Sideinnstillinger" #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5 #, python-format msgid "Set display name for %(url)s" -msgstr "" +msgstr "Angi visningsnavn for %(url)s" #: bookwyrm/templates/settings/link_domains/link_domains.html:11 msgid "Link domains must be approved before they are shown on book pages. Please make sure that the domains are not hosting spam, malicious code, or deceptive links before approving." -msgstr "" +msgstr "Nettstedsdomener må godkjennes før de kan vises på boksidene. Vennligst sjekk at domenene ikke fører spam, ondsinnet kode eller lurelenker før du godkjenner." #: bookwyrm/templates/settings/link_domains/link_domains.html:45 msgid "Set display name" -msgstr "" +msgstr "Angi visningsnavn" #: bookwyrm/templates/settings/link_domains/link_domains.html:53 msgid "View links" -msgstr "" +msgstr "Vis lenker" #: bookwyrm/templates/settings/link_domains/link_domains.html:96 msgid "No domains currently approved" -msgstr "" +msgstr "Ingen domener er hittil godkjent" #: bookwyrm/templates/settings/link_domains/link_domains.html:98 msgid "No domains currently pending" -msgstr "" +msgstr "Ingen domener venter for tiden på godkjenning" #: bookwyrm/templates/settings/link_domains/link_domains.html:100 msgid "No domains currently blocked" -msgstr "" +msgstr "Ingen domener er for øyeblikket blokkert" #: bookwyrm/templates/settings/link_domains/link_table.html:39 msgid "No links available for this domain." -msgstr "" +msgstr "Ingen lenker tilgjengelig til dette domenet." #: bookwyrm/templates/settings/reports/report.html:11 msgid "Back to reports" msgstr "Tilbake til rapporter" -#: bookwyrm/templates/settings/reports/report.html:22 +#: bookwyrm/templates/settings/reports/report.html:23 +msgid "Message reporter" +msgstr "Send melding til rapportør" + +#: bookwyrm/templates/settings/reports/report.html:27 +msgid "Update on your report:" +msgstr "Oppdatering på din rapport:" + +#: bookwyrm/templates/settings/reports/report.html:35 msgid "Reported statuses" msgstr "Rapporterte statuser" -#: bookwyrm/templates/settings/reports/report.html:27 +#: bookwyrm/templates/settings/reports/report.html:40 msgid "Status has been deleted" msgstr "Status er slettet" -#: bookwyrm/templates/settings/reports/report.html:39 +#: bookwyrm/templates/settings/reports/report.html:52 msgid "Reported links" -msgstr "" +msgstr "Rapporterte lenker" -#: bookwyrm/templates/settings/reports/report.html:55 +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Moderatorkommentarer" -#: bookwyrm/templates/settings/reports/report.html:73 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Kommentar" @@ -3596,21 +3606,21 @@ msgstr "Kommentar" #: bookwyrm/templates/settings/reports/report_header.html:6 #, python-format msgid "Report #%(report_id)s: Status posted by @%(username)s" -msgstr "" +msgstr "Rapportér #%(report_id)s: Status postet av @%(username)s" #: bookwyrm/templates/settings/reports/report_header.html:12 #, python-format msgid "Report #%(report_id)s: Link added by @%(username)s" -msgstr "" +msgstr "Rapportér #%(report_id)s: Lenke lagt til av @%(username)s" #: bookwyrm/templates/settings/reports/report_header.html:18 #, python-format msgid "Report #%(report_id)s: User @%(username)s" -msgstr "" +msgstr "Rapportér #%(report_id)s: bruker @%(username)s" #: bookwyrm/templates/settings/reports/report_links_table.html:17 msgid "Block domain" -msgstr "" +msgstr "Blokkér domene" #: bookwyrm/templates/settings/reports/report_preview.html:17 msgid "No notes provided" @@ -3619,7 +3629,7 @@ msgstr "Ingen merknader finnes" #: bookwyrm/templates/settings/reports/report_preview.html:24 #, python-format msgid "Reported by @%(username)s" -msgstr "" +msgstr "Rapportert av %(username)s" #: bookwyrm/templates/settings/reports/report_preview.html:34 msgid "Re-open" @@ -3865,7 +3875,7 @@ msgstr "Slettet for godt" #: bookwyrm/templates/settings/users/user_moderation_actions.html:8 msgid "User Actions" -msgstr "" +msgstr "Brukerhandlinger" #: bookwyrm/templates/settings/users/user_moderation_actions.html:21 msgid "Suspend user" @@ -4013,14 +4023,14 @@ msgstr "prosent" msgid "of %(pages)s pages" msgstr "av %(pages)s sider" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 #: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:54 msgid "Reply" msgstr "Svar" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 msgid "Content" msgstr "Innhold" @@ -4167,13 +4177,13 @@ msgstr[1] "vurderte %(title)s til: %(display_r #, python-format msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Anmeldelse av \"%(book_title)s\" (%(display_rating)s stjerne): %(review_title)s" +msgstr[1] "Anmeldelse av \"%(book_title)s\" (%(display_rating)s stjerner): %(review_title)s" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format msgid "Review of \"%(book_title)s\": %(review_title)s" -msgstr "" +msgstr "Anmeldelse av \"%(book_title)s\": %(review_title)s" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4282,12 +4292,12 @@ msgstr "Registrer deg" #: bookwyrm/templates/snippets/report_modal.html:8 #, python-format msgid "Report @%(username)s's status" -msgstr "" +msgstr "Rapportér @%(username)s sin status" #: bookwyrm/templates/snippets/report_modal.html:10 #, python-format msgid "Report %(domain)s link" -msgstr "" +msgstr "Rapportér %(domain)s lenke" #: bookwyrm/templates/snippets/report_modal.html:12 #, python-format @@ -4301,7 +4311,7 @@ msgstr "Denne rapporten vil bli sendt til %(site_name)s sine moderatorer for gje #: bookwyrm/templates/snippets/report_modal.html:36 msgid "Links from this domain will be removed until your report has been reviewed." -msgstr "" +msgstr "Lenker fra dette domenet vil fjernes fram til rapporten din er ferbigbehandlet." #: bookwyrm/templates/snippets/report_modal.html:41 msgid "More info about this report:" @@ -4665,6 +4675,6 @@ msgstr "Statusoppdateringer fra {obj.display_name}" #, python-format msgid "Load %(count)d unread status" msgid_plural "Load %(count)d unread statuses" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Last inn %(count)d ulest status" +msgstr[1] "Last inn %(count)d uleste statuser" diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index ec3d556ddb35aa892afa2aa22f8b5d7627a4d898..2522c804acd3e1e728d920205c9a130983b537db 100644 GIT binary patch delta 20527 zcmccAz$E%Txvi28O%L3=A?13=Ayt3=Hb53=D5U+uo(3^6$TBc6{0?GZ@Md6OkPK#EaAII!NDXFSuwh_eSP{&?pa)VH z%)k)Fz`!69!oU#Ez`&3l!oYBdfq~(42m`|_28McuzEB1RX$A&{$}k27BL)VBsbLU{ zPJ}Tqh%qoQd=6t^P-0+U;0kA8FlJz2&<$r`aA06yNDOCS2w-4fSQHL%;OB4#26+Ys z29*c~27U$x2A2p125|-khL8vb1_cHNhMWin1|J3nhF+-nEfCFE&%p30f`LH8;}F)%R1M?=Khq9OX0L_-|7Gn#=xk%58XPBa69 z90LQxzi3EE$;L1+NHQ=m7{@^PzA+38F$@e0$uSHJ{PheB3|0Zz@W;&z@QMzz`)1Az~B}O38~On28JvK28O~|28L#kg|Q3_$_xw)32~4R zY>8uF$Y)?+*bb%D;~5z87#J9)$1^YlGcYi)B``1~FfcGgB``45r!X)u>`q`{hyq!Z z$iNWEz`#(Q2yx-nL`WPOB{480gMvJXfgzEBf#GNp1A{ID1A}@p1A`y~14C#s14AhT z14DW;1A`7IEhR%d#FYYZsC^0~3Ra~sFt~u?K81myih+SaAeEsWY+-jQBu<~ELgHL4 zje)_Gfq}s`je$Xvfq|hoje)_Rfq`Kzl>asj5*6a<3=FIc3=DQq+9jQVL70Jo!7H7C zfsKKIAugSPfdiB%(-|0e85kJy(is@o85kI9pzw>sKDfOh>vDLHLQVZ*abD{ zP&xwxGsp+&kf=GI&cGnVz`*b|9TIgM84L_O3=9my84!yVG8h;*85kHeGaylFoB@eS zXQ+5kJ(LlX0Wlyg1LD#`s6ilk0R{$!o(u*C5Iq;FejU`H9T^M^>I@7F$1@lhxEUB2 z-e*8O@Ehs?-b@AtLk0#0u}nyacw|D%@y~>Kygnfl5`-C<5SQm=LR?s#3GqQ!Cd9{+ zGa){i4y6}nLVUCus&98D1A{&T1H%cZg+DSOiBT&HlIml#AR$$p1&P|WEO45rXV{a) zz+eVSG+7V_h-5=TKrtKQ5dCb31MIRH7_u1{7@V>p*=$`l#DWV@^~^aC9|`6_94?u| zzyK=QlyVpt7BMg|?8t$5AUYQkQmMHhemw(2VJ;+Ss&gSOY|4dLJT(^*B};M{7$g`N z7}n=PEI5%1ao`20`g>6EkGTvCEDQ_`KXV~I{+A2&P##3TVjd*KtnwiGz490sSU~wd zA`jxC*gQy7WadFM=I22ytbuB1$%Dl0q&$cNmw*glU|`ss2Z_@ic@PJm%!7F3N*)7) z6$1mq^E^nlR?3IytI20zn83im(4Eh~P!GyJG6fI`r2>crh6NCZI2S-1;tA!46+nCz zQveCEq5_DIDhn7G%t3WT0Rw{t0|Uds0*DWPLG^PKLL4Mo2yv)JA;f&kLWX*9KD94| z7~}?35LO8Bd3qrvF7u&uMIk887#JF%^4*0H2Tv}9Shy5QZ-$B=EM#DiVqjpn40XUe zD9u>Jz|aq>l!~DFe@PL<0c(mNF5FWDvG^>MzE%Wr(ETDvh&+d?|5600bXbZZK2j-$ z6hK zmP10o3QD__L-hHTgQB>efg!9MQlP|_Lqejl9AZE}ls~^55~pjS{DV;W^W_kq-!F$a z=o!@D&*hLr_q!Ytf?^erkdm%|c+9W@5|Yjp3=BM={O?}@abXOUPOE_Uv;fMl1}S7< zU}%MkPlD2Oq4WwUy&0-*Uj@Vir=jAvp%y-?fH>?^1tes6E1~({trDWarxFtPF_n-Y z&8~#_u%;5yHf*j01sMawf=Y;kS5`uTa&sjl1b0_LqVR4dB+Yz)@>#1OK9;D0*rQSf z(PvV{P!Fz;ZK@y^yHr7fGPnw2Kmt@@X%!@HYpWm*Xs&`dpr;BFHPfK@}lG%Tut z1kJV@NMhLsRd}HW;^PN35C^=1@_*Jqf|j`!BFIdRDK0ieoGz1mUwMsE0(MdOd`152fAeK~Y!Fz~EaCiTk*Eh{f6UkVa@_JtSl% z)I%J&s2)-vt*eIw?WuZ*LvBIqkjM25496H47+yowZ)$+Z?`wdlKi&X|n(GY^bKf>F zFz|x%|NjO^-0?O-BxD*P3iTR6E@WVEX@oc|v=I`N$xu4C5u&fW5#qD9Mu@*urA?b47C1LSd=k_Iu^_q$ z;*jhnNLndvf`m{*6T|~OP<8W~7#RE*7#P+yL9*drsClx@5cN9E4E5kvtwl4$$DYj) z1LB(@QBc?naaadbLobv+vl$X)^O_kL)-y0LtZs&MLZe$CEuG~p5Qj0gLOj6J3h|h9 zDC???WnkCU?^&X7@*h= z@qv0f!~)}XNEA4=Lmcke4(S6Xv_qnxz8#{k9jdPv%AX060Chg+w?llsr5zII$J!xH zs_X3#pYnG=>V26Gh=JZ65cR$oDN8o?d*V?7j>Y=j?=t z*9&z*6e@Q@f=s6q5(4I(kVN7Lr9(O)A(Y<9z>o>*LP7b@Iw2PR?u0m0q6Vo*(rVA3}PF;|w2w@@fMHj>YySgAjdbSG^)K9t~LHoH2 z(g_vnhIqiC8&be{c7qLONQcrb-H@nU*bONMj&wuJy#uD}85rJoLo8#5C>=ULlR?IKP0Fp_Cw-)Wj`bY_CopRq2@jAXQ&4cjlAlIxR7N61A_(w z1B2`Y1_o`=h{ptog+&t}KB<`i36Vx9-8TVJ>CB!03DR>DAP#yw0pjr2Q2Gm0{O<%v z8e*LY2?>#j^^ktN%0!4pFDM-}5n@2pM2O3iCqf)jIuQ~Q^%Eg+-!>7Fm?lkx)bC3t zLgM}u)PiRdA-U=sR6XM)2%mQnB#I>JCqWF9n*^~?brQsVDl$IqT&Kn{2o-_>q!tF|ALywH5sC>UT898bV`0QM5EPn_U#*FHwLekpOsUY*~85s6Wg&2GaO5dCcDGy#ug;>Bf4Pt@NG)Rz1PlNbO z1IpK%1_?21DBo!s14ADJ1B3rG$Y|KTX%KU`r$cDr>5u^p>FEp%HlX}3KOGY1G1DR0 zC2=~$g3{?A7cwwZPls60J{=MTebXT!FmF1f;MoA>Uz`qc;N$6#ko*AE&pHE=tp#U5 z;30KvPt1wNcL%;3vtMzxscjy z)m(@JuR;xY47KR(Tu5U23pJ2y9;E3dJP)EicOE3DtLH(~b%=CGX5Lr17?7(`4 z1M?sjoty_LAim6l_(Xj^1A`?41B3Z|28N5E(QYW;c>yGU*Diq6|H~IZLgp$|{Otlr z+7MsJz~IHez+eHTn-@ZA$8!rI<;&lNAbp@V{UQd2O`!4lMUX`FY!M{!{ayqa73W(F ziSx|GkW}5X7?L(tE{3RovltSmj7uPim}dzj$c2_bLQ)bcuDApe=juxs7|IwK7>t)d z$NyI?g=Du~OBonK85kJ$FNI_)(Pa>E$z|Z6VvvK<>QLHX86-|Emq9FYhSJ{4AR!pM z43e#rq3X+*L4v*k%AdZBfuSBWI=uiYuxc43?lwae9)ucnV;LlhUO?3eFNattvmByc zWjO=GQ3eJEqvep0__3UUA)0}Kfq4Za?&DWL)a5|=RZzNp1w%b}?q>>AV8aSXknUXp z@!6#n5TD;!0f~aAP;rixkf0V?2?=V6m5^*IzY?O}eI+Cp1VH(TD z*S)eHBCu{HBp2*m330&Xl@J%dSPAjbH>d%Os~~AZcojsQ+A2s8Td#t|tv{5GUIno* zeHFw(m8&3$u4xq{`z}}o37O;ds~{F!Sq1UY{Z){leYy%#5WQUmaTxn*$cUxvY6gaB z3=9lwS3?}=vIY`TL2Dp!9kZaI;x=t9 z1H*0x28M}iA=6~O>lhf~7#J94t%I~;f3AaMPl@#m42}#84BqP*7=l34Y3m``@WFaW z3CFhqQn2W4fXwj(Y=D%Ur#C>V@$VZT9@5wdc5pp|-9|`R?Y9x)!jg@Ue0y{wBxnUT zL8?)eO^_f9+yn`+xJ{5C&xGyjvkrCcKq_!Iy!7 zL3%5s*P99D@7M|nIks&K3``6R43^s)28J|{0ox%CU9cTejjr7evGCe3cyQJphyxbvfsX&Jgi37O14%5~_dq5fA4B;Ldl?ue zf#z`cLNxy03n`j8_CXR~@;*pnowyGYWgqrIa?kgDkeN=w{g5as+7FqStlAG5Q(nKn zo`Ip3fq_Bv0L0+Q2Ox1Z=Ky5J^E_1C_#nh*HU}Z8+y5Y>04Y4kz`(@Bz%bSrMi^g0VMKk+Oi$~w-1Jyg%I?JT5dym}U5 z(C4$De96Eda*lzan1O*o>l`FE%sU71!Mbyh{QvYE#0MYFL9!$Bc}SVBcOGJ%{dtJ~ z*z=I)_{H;(?tQ`qNNc#|0s})iLp=k-jth|dZE%r+p@4ybVev&s;u5(8Nrd^AAZg*u zB}fa$;4&mgyDmfIpIwId$oUEbLlUT=as?uOs1B@ z2T=Z(y9SB#_-hasUc3g0yRX+67#bKD7#y!d(#E0d3=DRl0_FxJaYfyL^ab;8K$cvr zz5#LIiyM%%;B*s`Rx)lvvfW%Lz4#_1Dp%fQV5kR8hwr@!$u>uCLTaruP=)uP;!kce zfQRW{L&ZPegaq|ZsCuqj5dAW@AeE6al-9ik$qnYWAlWhb7R3D8TaYO3zr|1wUaPV6 z7R11

Ewu4R>xq;{Mw$NZHMH8xoYFw;={<+=hgN6O>bE(o6a3bNtkj6VnM+jh>yDNK!R|}9Y`yA)*Xn$w%&o1a7Ur? zm!aY}q4di;5C{Cc197&zYkH@aUT+uGwwqQy!r+A85rg< zFfgpV&%m&Tfq}u}0mR2&A3!wxe*npD{0|`-r5-|B!AcJyL2UmJVsYq0aDHY;drDO5}(xHib0ST$N z7Yy~_RV!I9AVE|Hm1u$TCqVi0p!6yzy$wnqf~q_B0^+kfFCZo2n-`GOukjKxFcJO| zQX(FG2?@#9FCh;7{1Q9~#K7?9B_ybMUqKR;$Sa5s)S!IxR}de2zJfS3_7xND!a@1d1aD zh9{pOLH+*|B&5VXLmZ~{84{;PpCJx({R|2Ea40|NGb98{K0`vV_A|uX&d(5Y=6$Y* z2yB8XJPuWG0m^^+8REltpCLZ@0kx3h3nZkZzd-csK>3beAc-*O3nVHMzCfZV?F%I8 zYQ8|yRQDH12pp}48gS+d#G;2^AVK>YY5?n3h(X+6AqEM4g*Zh0E5tzauaJVr?JLAV z@n0bYQo&b<&r6|n9n_q5DBb&&fx(r5fuVl#SBOh)eueaG9(;uaEz>uM0bJi8Q6T&c zVzJ&gNL1K;gQS^IsC>;gh=ZnogEY04LDk*-2JzU3Z;+7r^^Jky1Oo#D$9J&#^$Zuk zLoB@Y9pZyW-ytFJ`8%XM;Qax~j;cQ(apw2~(jp4|0dZLI4~T>Men8T~(jSnx-thyH z7LNRYIPClnu!Riwen8BB{sWX<>lqjre?lY_e?r>pT0bGJ)`*`F3tN6dLTJWMh)?E2 z#aI4>M9JQt5C>fT395VZ8-A0*Mv{11uJ`Trpyvf)3(+ynn1`j7u-s0YvY-TM!5F*^ez zcs(Ew10#67t}p{5czv%T10#5`xjF+Qc)ZY+fe}1!n8?5gUeR35zz8l!&NDEA7oj|6 zU<7wq#26v!kOR}vP8NqABBN-XNOSLN*>lwivklBok;DvUzN&TgMm~!RvN8 zm>9u}$Ay?6d}Ag?aD&AbN_#RvEC^*{1TR)EWMTv_I`3d&1TR)yz{Ch%Th7DG2==HV zGsI(FP&%TX8Dd}>GsLGw%n+YdK*c99LtH$MnGw8_c^@;xr^lHg2H$381TRkgzzngN zlLbO6vOp}fgwjbY5dGaOjNrB6Q&=GO)bC(n1TP@I1eN&30vO_|0HdKB& zJ0uOPV`l`fs^7*AiIRitjNpw7x*UuQETH~>1P8?6SPn>BCUZa>P|v{#Uftf$0dd$u z4oDDg;a~(WtKG}N2p+@v!2z+@ffJHOe4um~C&Zx%oDhBKoQ&YbE(M&BkZI&(WB@Hr zVwlefiHifA5DRZ{LW1lKC&UL#To4UhT#&fd;DSV%BNrs(GPxi=oXQ2UXaN_*BP*f& zqg;&O71rmtAoj3wL(-5uHzPwmXz__LH$NYt!>@;5=%?d5@l%rPE_gU>TIg771hW)x%uuV@q$goK2dAjBejL5O-UL5R;I1R-fD6RNHW zD&H;02%5;KXP7C-2;NL$AOtZe4oasBLE^qZh!MQOs7weF#D|0+QFRh3|3C<0;WHsf zNPZE5MBzUnh=T=%8NvI96onxkb%D}h!k{{!o`E4l7~;|{VMq|phVst~LkxN#46)#| zFvMa;5lE0rh(O|4T?7)h`XUhZu2As^5s0}7P=28ZBX|tBQUqM`G29bjWB@HnWcVop z$tH@T5Etu-LW0ar6cRGwqKx3(Fs-5x3wMh`g8Hy1#KLo;knHqO6ynf-q7d_V#31=z zQVfzk1H>Rjd#V_u2yPW)WT*%2=~^!a3A$Tiki_*w3}WyfF-Vl~i$e^M5QnJK6^B@8 zF3!jR+9nnv4oRGo#36}ljW{C%XyejNafpNdLupK7A#Naj3jNsjHJEa*J_A)Rq{E}v50L}gEkYNOG$N3`zDROmWAsz^oh46D^As(rp zDhn}Si!7vQ{3;8{1r~CUsK}9nq}F~pMut-i3=FH}AO@AnLwwjH56PZ$UA zfC3|UYnQqL#3PLg5Rc7PfJDh^1#n2!Gi+9XB&t0MkoZsVYN)R#O=wucr(NF-v8Lg|5nwkP20X*pmdMbCf~lK|KRQ znKHzu9m)_NtyYEv%^s*hx1k!ILk;?<3~|sus6J5@NEBMAKpLMuDi8r}}5j;<5qRGfG z1GFnn6A~2(S`hs?S`Y`7YeCXlw^lvGMH96kMeKYnM(}2nt6GqJZLJN-P8r&a4E78R z3~RI*8MZSpFuc)b1kV*M(P3mL0nH!kLefx|E~NHcs|#r{UDag-&k6JCL4rO;50V=? z^dKR-s9ui|JSlWm50ZES^dZ@=SszkFZr6wS^s+vr(fL3hQi(_#FoFlI8w?68Ja ztbb$x2}wyqh|iUwv_6!!He_TdV_;x#H)I5F$F1K7m5?)n#F>^6B&ckRAc@S~2okj6 zMv%&*zz7mz6O0%cKzl~#89{>brxC>9|3-}98O}0eM)3aM{l<`z^_?-qBVUan`DT!U>arQ6pp!QTwY2IP7?R8x!5f3;nM3-1ugxKGt!n{E zY`GQ?2bNkuLg<7Aq|RBxv_rL*nwNH6-XST0;`geQStCTsDx9O0!{P zn8U!pFvSLv-3)CR89>{1U2GxpD{LVldCe9QGNyLW_P@OyBSQvgi;?R5c5Ch-aLkyI4fat4nfP_%11H>cK9U!@4w*w;sBV;={!#mIt z2nGg*+Ymk%g9;-9!#73-2G_}NZIv1KO%}8hm;KDd!0?udf#EA71H%!BLWZ-93=C_S z85kZ-cC|BCWMpPwsApne*v`nnU;s68DO4qB7dX%4xpwlZEl?TItf?L|WVdt{GXuj8 z1_p550@C0=`JtV%tqBtY!&XKHhFYjQH!?9WxH2*@ECUtTjF6=Of+OlO64)>+?YSf=q zAk&!{7*;Yt22G$wFgP$VF!X|UYcn!1s4+4yY-eI%xC8YMC)E6H%nS_IAR0gw2?N74 zCI*JJObiUlObiU(j0_Cg%nS@F%#iV?G-d{dZUzR1SY`$Waj0WEm>3x5FflOvgc_U! z6;ESgU@&B6V0g^Lz!1vBz|g?Rz#z@cz)%NO2eOkF%H{<{665432QFC!CI*Hjj0_B4 z86X3_a*PZNo0u6G)-f?K=ud8R5UDN_88ZXJ52$1|D43ZT7~+^27+9DX7qi%%Fn~7#J98p_)MJ8_Ss( z818}Mc=AR^VP6Yo28JXi1_pa3$bylT%#fiukhMP;7#JooLFR$~F)=VWfpP>R1H&0+ z1_pU%1_n^$0(1buOD4!L-qy*2PQtq8%nS@Sm>3w&Gczz~Gcqu&gE~funSsF>%5Gs` zU}$DyU`U=E=p=3$#Kgeh$q3m~0P1_{Ff%YTGBYqd0eO*$f#Dc4kpPZOH z*GW2)56Y8;nhSC@C}9>cF)-X_Vqlod%)pS&#K3R{WC{~xHB$#OWJOyHBLjmIR6j^x zEF)yPWhxT`Lj^Mf!xu&dh7X`Uy9^8rOD8KjOV{@?F)-W*Z98USU|7t^z@PvM2PViO z4v+~~m>C#0FflN&K-0xSW(EdsW(I}`W(I~&j0_ADptfCSW?%>br6tgwXl4e6P(}uZ zOsE{FE&U$Kc3@;+Sk1`5FbQJbFcz@Ui4PhetTsAptg zc*w-S(8|P6&k)SWz_5ymfngCSni&}w)R`fx%+@n9FzjMxU?^v1V916VAi>DM5DrS; zObiTBAdiApy)rW}tc5zvmzja#4M-p8$OUG|ps^1VWch74GXp~p0|SFHBLf2yRQ)98 zdIpAzP|j&cs4&c9giHcOK`jOOBAJna!5^v)bOwhUGXujpW(J10j0_AZjF7`4mNPLh zC^0fHYz8ehf~vg*(#*iXV8zV9u#}mB;WE_BEl|7o>p`w(WMGJ9WMD{SW?*;*T7?Qa ztAmMw;WPsSLnKro$edVEvSxs+W(tE^uo`OMK`8x{k%7UPiGjfbl$}5YHv&T>$J#>l|12&$gZW%5B+>BK8c3=FnR3=CaR;Sy#BhF73e2|9CviGiUGRFg0< zFi0^mFnk7`M*%XLnSsHBiGjh3nSsHMnSsHOiGjhKk%3_+BLl-7sPp_78Nkg;!O6C6 z()Bx_qWMe=41!Dy3`dw47%~_c7)(Iv7qpm+k%3_!GXui`(1J8328QcU*ML^efdT-8 zK_{Xdgqp*}%)p=rRRfYc4T@q$$Vfbh-wl<^hXkS(LqAkNosofI9uot@O^5_T4-*5! zEM^9VvrzfRj0_B_ObiT}j0_Bhj0_A`lLg(y1*Mr77_KriFzjbyU`SwQVDOuKF+jNf zGBae663D{i%naam$U8>Jyumjn1_ll$1_pjc28KVNm}O>QxW&l85X8*DumrRak{Pn# zNdxMksmu%v?H~_;GcqtVf-*ic1H%Q-(sCvSDTW`6kVy+SsN=ao zB`PBW!-~mI-IX;9m>3wQLcQt8%)sEv%)rpg$iT3eiGkrLs2l;EtpQ3TlMOxO>;ExA z7CM0J^J8XUSjfo0zz%gBNGt((GkRV0`g7`}i?Ek^L9T0O%CW(I~PsD%$e>7SW_L6;G-E^R(D1GrPP zhna!l7t~PDF)*MVARv1uGckaB`2Rs1&^kDfg;29C!rF)}c8ff6XFKxSlM*biFE z1~o^GiGiV-NuGgWJ_7?oDJV076f-a|^f5Cq>}6zNSi;P}z&ttEQ(W~p)NkHU8e|)& z)w&7F{{?ChOkU}!?>do*fuR#>!Cp{uf;vWvk%8d?69dC+kX9%L9XkPH9s;$Lm>C%K zK>@+Qz+f|3)=OM>1``8A4^+1Rl&*r>2htS`s{9!k7{WoN@#I7=@%lfYb{-RCiW8)w z0ZH{`kN^~0FflM(Vq{=wV`N~k0mV3yy6I51E)!&FqzI@!0=0~w;*%K}7>+VAFrdba1t-#2@aEO_K!IFuAL3FaCx3FXg6J+fwE7Z8{po4Fi7#LO82s?t_XoQ0f3}*JFk(RL%tzX-o_ZiBMf7 zpwt3Y{}(0(rFTOkxR;rMK?f=ZvITU$(C^8CKFamlP|^F03=AHO3=Dw`3=Dr585pKR zO$4bH12vbR>Mk=v)@}JPLzY87g^Gh#x3w`dFz_)mFnnZUU`S$QUU)ocK@E}?84 z&P`+5D03rF@uW8NIz-T z*`O={D$6JL_;J)rFf%axh58J%wiKjgA~WRh5)eC`nSntR6q2A*kw7kos?7m)$v`zP zND%`ALk38Wfq`KoBLjml69a=I)D0Y<7-M8$xCi1hF)-`{HEE${C^IwEGXz38o}g|G zl-&WPPlBQfbT%01fHF`?#l*mn&&U&iy5;15Hz4&%*eoSn3;j00@Mcsl|syr z6*;ENkfp&OH*R5KU^oml7sTHI>MVfH6Whwbz~BIiBPIrhiHwj{Q!$`W0W}6dO-lv_ z1_Mwt9~ujXL7gKcgT68`Ft{)?Fa$C&Fnj{ZfmUZSGBE4`6;e=jPeC?R4HOJ5t&BG>JgDiQ;F?#KnOLNdo0JFD9%qRN>wN>O$5mw-j$b}nP|0rwKC&!836q-6afGL delta 20399 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 diff --git a/locale/pt_BR/LC_MESSAGES/django.po b/locale/pt_BR/LC_MESSAGES/django.po index f8e1ff358..4845ae1bc 100644 --- a/locale/pt_BR/LC_MESSAGES/django.po +++ b/locale/pt_BR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-28 02:50+0000\n" -"PO-Revision-Date: 2022-01-29 14:28\n" +"POT-Creation-Date: 2022-01-30 18:17+0000\n" +"PO-Revision-Date: 2022-01-30 19:38\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt\n" @@ -3574,23 +3574,31 @@ msgstr "Nenhum link disponível para este domínio." msgid "Back to reports" msgstr "Voltar às denúncias" -#: bookwyrm/templates/settings/reports/report.html:22 +#: bookwyrm/templates/settings/reports/report.html:23 +msgid "Message reporter" +msgstr "Enviar mensagem a quem denunciou" + +#: bookwyrm/templates/settings/reports/report.html:27 +msgid "Update on your report:" +msgstr "Atualização sobre sua denúncia:" + +#: bookwyrm/templates/settings/reports/report.html:35 msgid "Reported statuses" msgstr "Publicações denunciadas" -#: bookwyrm/templates/settings/reports/report.html:27 +#: bookwyrm/templates/settings/reports/report.html:40 msgid "Status has been deleted" msgstr "A publicação foi excluída" -#: bookwyrm/templates/settings/reports/report.html:39 +#: bookwyrm/templates/settings/reports/report.html:52 msgid "Reported links" msgstr "Links denunciados" -#: bookwyrm/templates/settings/reports/report.html:55 +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Comentários da moderação" -#: bookwyrm/templates/settings/reports/report.html:73 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Comentar" @@ -4015,14 +4023,14 @@ msgstr "porcentagem" msgid "of %(pages)s pages" msgstr "de %(pages)s páginas" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 #: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:54 msgid "Reply" msgstr "Responder" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 msgid "Content" msgstr "Conteúdo" diff --git a/locale/pt_PT/LC_MESSAGES/django.mo b/locale/pt_PT/LC_MESSAGES/django.mo index 45eadd1986e422b7409f9fe3a085124cc90ea222..1ffe4140dddda96744e2702b0735223738c058fe 100644 GIT binary patch delta 23 fcmX@HljX!tmJOC`IE)Px3@xpUEjBx@X)gc(a9jw{ delta 23 fcmX@HljX!tmJOC`IE*Y53{0#Hj5j;3X)gc(a775p diff --git a/locale/pt_PT/LC_MESSAGES/django.po b/locale/pt_PT/LC_MESSAGES/django.po index 363f096fc..b241c4d51 100644 --- a/locale/pt_PT/LC_MESSAGES/django.po +++ b/locale/pt_PT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-28 02:50+0000\n" -"PO-Revision-Date: 2022-01-28 04:03\n" +"POT-Creation-Date: 2022-01-30 18:17+0000\n" +"PO-Revision-Date: 2022-01-30 19:38\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Portuguese\n" "Language: pt\n" @@ -3572,23 +3572,31 @@ msgstr "" msgid "Back to reports" msgstr "Voltar para denúncias" -#: bookwyrm/templates/settings/reports/report.html:22 +#: bookwyrm/templates/settings/reports/report.html:23 +msgid "Message reporter" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:27 +msgid "Update on your report:" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:35 msgid "Reported statuses" msgstr "Estados denunciados" -#: bookwyrm/templates/settings/reports/report.html:27 +#: bookwyrm/templates/settings/reports/report.html:40 msgid "Status has been deleted" msgstr "O estado foi eliminado" -#: bookwyrm/templates/settings/reports/report.html:39 +#: bookwyrm/templates/settings/reports/report.html:52 msgid "Reported links" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:55 +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Comentários do Moderador" -#: bookwyrm/templates/settings/reports/report.html:73 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Comentar" @@ -4013,14 +4021,14 @@ msgstr "porcento" msgid "of %(pages)s pages" msgstr "%(pages)s páginas" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 #: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:54 msgid "Reply" msgstr "Responder" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 msgid "Content" msgstr "Conteúdo" diff --git a/locale/sv_SE/LC_MESSAGES/django.mo b/locale/sv_SE/LC_MESSAGES/django.mo index bff1e3e360d211e7fbd2c0f1ff57f0976aee5444..87a0038a5e7551fdf759fb77a75a0c546b31a921 100644 GIT binary patch delta 23 fcmccmo#pCxmJN3MIE)Px3@xpUEjGLD>#qd>em)7R delta 23 fcmccmo#pCxmJN3MIE*Y53{0#Hj5oXO>#qd>ekTc| diff --git a/locale/sv_SE/LC_MESSAGES/django.po b/locale/sv_SE/LC_MESSAGES/django.po index 7f2fbd859..33fc8682a 100644 --- a/locale/sv_SE/LC_MESSAGES/django.po +++ b/locale/sv_SE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-28 02:50+0000\n" -"PO-Revision-Date: 2022-01-28 04:03\n" +"POT-Creation-Date: 2022-01-30 18:17+0000\n" +"PO-Revision-Date: 2022-01-30 19:38\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Swedish\n" "Language: sv\n" @@ -3574,23 +3574,31 @@ msgstr "Inga länkar tillgängliga för den här domänen." msgid "Back to reports" msgstr "Tillbaka till rapporter" -#: bookwyrm/templates/settings/reports/report.html:22 +#: bookwyrm/templates/settings/reports/report.html:23 +msgid "Message reporter" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:27 +msgid "Update on your report:" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:35 msgid "Reported statuses" msgstr "Rapporterade statusar" -#: bookwyrm/templates/settings/reports/report.html:27 +#: bookwyrm/templates/settings/reports/report.html:40 msgid "Status has been deleted" msgstr "Statusen har tagits bort" -#: bookwyrm/templates/settings/reports/report.html:39 +#: bookwyrm/templates/settings/reports/report.html:52 msgid "Reported links" msgstr "Rapporterade länkar" -#: bookwyrm/templates/settings/reports/report.html:55 +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Moderatorns kommentarer" -#: bookwyrm/templates/settings/reports/report.html:73 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Kommentar" @@ -4015,14 +4023,14 @@ msgstr "procent" msgid "of %(pages)s pages" msgstr "av %(pages)s sidor" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 #: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:54 msgid "Reply" msgstr "Svara" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 msgid "Content" msgstr "Innehåll" diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index 250d030b1..6b51efb86 100644 --- a/locale/zh_Hans/LC_MESSAGES/django.po +++ b/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-28 02:50+0000\n" -"PO-Revision-Date: 2022-01-28 04:03\n" +"POT-Creation-Date: 2022-01-30 18:17+0000\n" +"PO-Revision-Date: 2022-01-30 19:38\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Simplified\n" "Language: zh\n" @@ -3557,23 +3557,31 @@ msgstr "" msgid "Back to reports" msgstr "回到报告" -#: bookwyrm/templates/settings/reports/report.html:22 +#: bookwyrm/templates/settings/reports/report.html:23 +msgid "Message reporter" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:27 +msgid "Update on your report:" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:35 msgid "Reported statuses" msgstr "被报告的状态" -#: bookwyrm/templates/settings/reports/report.html:27 +#: bookwyrm/templates/settings/reports/report.html:40 msgid "Status has been deleted" msgstr "状态已被删除" -#: bookwyrm/templates/settings/reports/report.html:39 +#: bookwyrm/templates/settings/reports/report.html:52 msgid "Reported links" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:55 +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "监察员评论" -#: bookwyrm/templates/settings/reports/report.html:73 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "评论" @@ -3996,14 +4004,14 @@ msgstr "百分比" msgid "of %(pages)s pages" msgstr "全书 %(pages)s 页" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 #: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:54 msgid "Reply" msgstr "回复" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 msgid "Content" msgstr "内容" diff --git a/locale/zh_Hant/LC_MESSAGES/django.po b/locale/zh_Hant/LC_MESSAGES/django.po index 220a6268e..daebda622 100644 --- a/locale/zh_Hant/LC_MESSAGES/django.po +++ b/locale/zh_Hant/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-28 02:50+0000\n" -"PO-Revision-Date: 2022-01-28 04:03\n" +"POT-Creation-Date: 2022-01-30 18:17+0000\n" +"PO-Revision-Date: 2022-01-30 19:38\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Traditional\n" "Language: zh\n" @@ -3557,23 +3557,31 @@ msgstr "" msgid "Back to reports" msgstr "回到舉報" -#: bookwyrm/templates/settings/reports/report.html:22 +#: bookwyrm/templates/settings/reports/report.html:23 +msgid "Message reporter" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:27 +msgid "Update on your report:" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:35 msgid "Reported statuses" msgstr "被舉報的狀態" -#: bookwyrm/templates/settings/reports/report.html:27 +#: bookwyrm/templates/settings/reports/report.html:40 msgid "Status has been deleted" msgstr "狀態已被刪除" -#: bookwyrm/templates/settings/reports/report.html:39 +#: bookwyrm/templates/settings/reports/report.html:52 msgid "Reported links" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:55 +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "監察員評論" -#: bookwyrm/templates/settings/reports/report.html:73 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "評論" @@ -3996,14 +4004,14 @@ msgstr "百分比" msgid "of %(pages)s pages" msgstr "全書 %(pages)s 頁" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 #: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:54 msgid "Reply" msgstr "回覆" -#: bookwyrm/templates/snippets/create_status/content_field.html:17 +#: bookwyrm/templates/snippets/create_status/content_field.html:18 msgid "Content" msgstr "內容" From 36a52019fb18192dda989ff8be1dcb10e8e46d87 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 2 Feb 2022 12:29:01 -0800 Subject: [PATCH 19/88] Fixes adding book to list from book page --- bookwyrm/templates/book/book.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 43f2171c3..e15b656cf 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -356,10 +356,11 @@

{% csrf_token %} +
- {% for list in user.list_set.all %} {% endfor %} From e18f6fbfaf05e45aa0dfc3abe4253ea59cf2b2d0 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 2 Feb 2022 12:43:27 -0800 Subject: [PATCH 20/88] Adds migration for locale name update --- .../0132_alter_user_preferred_language.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 bookwyrm/migrations/0132_alter_user_preferred_language.py diff --git a/bookwyrm/migrations/0132_alter_user_preferred_language.py b/bookwyrm/migrations/0132_alter_user_preferred_language.py new file mode 100644 index 000000000..a2f0aa6a7 --- /dev/null +++ b/bookwyrm/migrations/0132_alter_user_preferred_language.py @@ -0,0 +1,37 @@ +# Generated by Django 3.2.10 on 2022-02-02 20:42 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0131_merge_20220125_1644"), + ] + + operations = [ + migrations.AlterField( + model_name="user", + name="preferred_language", + field=models.CharField( + blank=True, + choices=[ + ("en-us", "English"), + ("de-de", "Deutsch (German)"), + ("es-es", "Español (Spanish)"), + ("gl-es", "Galego (Galician)"), + ("it-it", "Italiano (Italian)"), + ("fr-fr", "Français (French)"), + ("lt-lt", "Lietuvių (Lithuanian)"), + ("no-no", "Norsk (Norwegian)"), + ("pt-br", "Português do Brasil (Brazilian Portuguese)"), + ("pt-pt", "Português Europeu (European Portuguese)"), + ("sv-se", "Svenska (Swedish)"), + ("zh-hans", "简体中文 (Simplified Chinese)"), + ("zh-hant", "繁體中文 (Traditional Chinese)"), + ], + max_length=255, + null=True, + ), + ), + ] From 1b313c2b624d81451735e4e404f8265c7375f181 Mon Sep 17 00:00:00 2001 From: Willi Hohenstein Date: Wed, 2 Feb 2022 22:34:30 +0100 Subject: [PATCH 21/88] added check of existing url for book sould also fix #1899 --- bookwyrm/forms.py | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 1b13598b0..684fe91f6 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -227,18 +227,32 @@ class FileLinkForm(CustomForm): class Meta: model = models.FileLink fields = ["url", "filetype", "availability", "book", "added_by"] - + def clean(self): """make sure the domain isn't blocked or pending""" cleaned_data = super().clean() - url = cleaned_data.get('url') + url = cleaned_data.get("url") + filetype = cleaned_data.get("filetype") + book = cleaned_data.get("book") domain = urlparse(url).netloc if models.LinkDomain.objects.filter(domain=domain).exists(): status = models.LinkDomain.objects.get(domain=domain).status - if status == 'blocked': - self.add_error("url", _("Domain is blocked. Don't try this url again.")) - elif status == 'pending': - self.add_error("url", _("Domain already pending. Please try later.")) + if status == "blocked": + self.add_error( + "url", + _( + "This domain is blocked. Please contact your administrator if you think this is an error." + ), + ) + elif models.FileLink.objects.filter( + url=url, book=book, filetype=filetype + ).exists(): + self.add_error( + "url", + _( + "This link with file type has already been added for this book. If it is not visible, the domain is still pending." + ), + ) class EditionForm(CustomForm): From 2c16b8f33b8049801a950fecad5b59e61d14e91b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 3 Feb 2022 08:44:51 -0800 Subject: [PATCH 22/88] Fix shelf names on books page --- bookwyrm/settings.py | 2 +- bookwyrm/templates/shelf/shelf.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 22682a800..72af0804e 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -9,7 +9,7 @@ from django.utils.translation import gettext_lazy as _ env = Env() env.read_env() DOMAIN = env("DOMAIN") -VERSION = "0.2.0" +VERSION = "0.2.1" PAGE_LENGTH = env("PAGE_LENGTH", 15) DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English") diff --git a/bookwyrm/templates/shelf/shelf.html b/bookwyrm/templates/shelf/shelf.html index 3a5652219..cc4bb1436 100644 --- a/bookwyrm/templates/shelf/shelf.html +++ b/bookwyrm/templates/shelf/shelf.html @@ -45,7 +45,7 @@ href="{{ shelf_tab.local_path }}" {% if shelf_tab.identifier == shelf.identifier %} aria-current="page"{% endif %} > - {% include 'user/books_header.html' with shelf=shelf_tab %} + {% include "snippets/translated_shelf_name.html" with shelf=shelf_tab %} {% endfor %} From a46ab96d9b5ec399396605ee67c8575e801ecd1f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 3 Feb 2022 10:30:30 -0800 Subject: [PATCH 23/88] Fixes add/edit notes form on list page --- bookwyrm/templates/lists/list.html | 4 ++-- bookwyrm/views/list/list_item.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/lists/list.html b/bookwyrm/templates/lists/list.html index 8e35416f6..a4c12f46f 100644 --- a/bookwyrm/templates/lists/list.html +++ b/bookwyrm/templates/lists/list.html @@ -97,7 +97,7 @@ - {% include "lists/edit_item_form.html" %} + {% include "lists/edit_item_form.html" with book=item.book %}
{% endif %} @@ -112,7 +112,7 @@ - {% include "lists/edit_item_form.html" %} + {% include "lists/edit_item_form.html" with book=item.book %}
{% endif %} diff --git a/bookwyrm/views/list/list_item.py b/bookwyrm/views/list/list_item.py index 29cfbee84..5fd65938e 100644 --- a/bookwyrm/views/list/list_item.py +++ b/bookwyrm/views/list/list_item.py @@ -19,4 +19,6 @@ class ListItem(View): form = forms.ListItemForm(request.POST, instance=list_item) if form.is_valid(): form.save() + else: + raise Exception(form.errors) return redirect("list", list_item.book_list.id) From 5a3ce5e328c46f45d730a1aed1606c1e7e355264 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 3 Feb 2022 11:48:56 -0800 Subject: [PATCH 24/88] Fixes rating in about page superlatives --- bookwyrm/templates/about/about.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/about/about.html b/bookwyrm/templates/about/about.html index 4e533b11a..6f16aa675 100644 --- a/bookwyrm/templates/about/about.html +++ b/bookwyrm/templates/about/about.html @@ -28,7 +28,7 @@
{% if superlatives.top_rated %} - {% with book=superlatives.top_rated.default_edition rating=top_rated.rating %} + {% with book=superlatives.top_rated.default_edition rating=superlatives.top_rated.rating %}
From 1f6ecc39ac32b5867c970549e72a1a8c8a3b025b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 3 Feb 2022 13:15:06 -0800 Subject: [PATCH 25/88] Adds allowlist for html attrs --- bookwyrm/sanitize_html.py | 12 +++++++++++- bookwyrm/tests/test_sanitize_html.py | 13 ++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/bookwyrm/sanitize_html.py b/bookwyrm/sanitize_html.py index 8b0e3c4cb..538264fc1 100644 --- a/bookwyrm/sanitize_html.py +++ b/bookwyrm/sanitize_html.py @@ -22,6 +22,9 @@ class InputHtmlParser(HTMLParser): # pylint: disable=abstract-method "ol", "li", ] + self.allowed_attrs = [ + "href", "rel", "src", "alt" + ] self.tag_stack = [] self.output = [] # if the html appears invalid, we just won't allow any at all @@ -30,7 +33,14 @@ class InputHtmlParser(HTMLParser): # pylint: disable=abstract-method def handle_starttag(self, tag, attrs): """check if the tag is valid""" if self.allow_html and tag in self.allowed_tags: - self.output.append(("tag", self.get_starttag_text())) + allowed_attrs = " ".join( + f'{a}="{v}"' for a, v in attrs if a in self.allowed_attrs + ) + reconstructed = f'<{tag}' + if allowed_attrs: + reconstructed += " " + allowed_attrs + reconstructed += ">" + self.output.append(("tag", reconstructed)) self.tag_stack.append(tag) else: self.output.append(("data", "")) diff --git a/bookwyrm/tests/test_sanitize_html.py b/bookwyrm/tests/test_sanitize_html.py index 6c4053483..572f83325 100644 --- a/bookwyrm/tests/test_sanitize_html.py +++ b/bookwyrm/tests/test_sanitize_html.py @@ -24,13 +24,24 @@ class Sanitizer(TestCase): self.assertEqual(input_text, output) def test_valid_html_attrs(self): - """and don't remove attributes""" + """and don't remove useful attributes""" input_text = 'yes html' parser = InputHtmlParser() parser.feed(input_text) output = parser.get_output() self.assertEqual(input_text, output) + def test_valid_html_invalid_attrs(self): + """do remove un-approved attributes""" + input_text = 'yes html' + parser = InputHtmlParser() + parser.feed(input_text) + output = parser.get_output() + self.assertEqual( + output, + 'yes html' + ) + def test_invalid_html(self): """remove all html when the html is malformed""" input_text = "yes html" From 2c7a6e85186255c123708f4936af6465fd9b193f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 3 Feb 2022 13:17:16 -0800 Subject: [PATCH 26/88] Correct status order --- bookwyrm/tests/activitystreams/test_abstractstream.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bookwyrm/tests/activitystreams/test_abstractstream.py b/bookwyrm/tests/activitystreams/test_abstractstream.py index 8d278041a..f81c6fd6e 100644 --- a/bookwyrm/tests/activitystreams/test_abstractstream.py +++ b/bookwyrm/tests/activitystreams/test_abstractstream.py @@ -107,8 +107,8 @@ class Activitystreams(TestCase): redis_mock.return_value = [status.id, status2.id] result = self.test_stream.get_activity_stream(self.local_user) self.assertEqual(result.count(), 2) - self.assertEqual(result.first(), status) - self.assertEqual(result.last(), status2) + self.assertEqual(result.first(), status2) + self.assertEqual(result.last(), status) self.assertIsInstance(result.last(), models.Comment) def test_abstractstream_get_audience(self, *_): From cae7191a2b65f82c70054bcb73efeb7518f77dee Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 3 Feb 2022 13:19:56 -0800 Subject: [PATCH 27/88] Python formatting --- bookwyrm/sanitize_html.py | 6 ++---- bookwyrm/tests/test_sanitize_html.py | 5 +---- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/bookwyrm/sanitize_html.py b/bookwyrm/sanitize_html.py index 538264fc1..4edd2818e 100644 --- a/bookwyrm/sanitize_html.py +++ b/bookwyrm/sanitize_html.py @@ -22,9 +22,7 @@ class InputHtmlParser(HTMLParser): # pylint: disable=abstract-method "ol", "li", ] - self.allowed_attrs = [ - "href", "rel", "src", "alt" - ] + self.allowed_attrs = ["href", "rel", "src", "alt"] self.tag_stack = [] self.output = [] # if the html appears invalid, we just won't allow any at all @@ -36,7 +34,7 @@ class InputHtmlParser(HTMLParser): # pylint: disable=abstract-method allowed_attrs = " ".join( f'{a}="{v}"' for a, v in attrs if a in self.allowed_attrs ) - reconstructed = f'<{tag}' + reconstructed = f"<{tag}" if allowed_attrs: reconstructed += " " + allowed_attrs reconstructed += ">" diff --git a/bookwyrm/tests/test_sanitize_html.py b/bookwyrm/tests/test_sanitize_html.py index 572f83325..5814f2207 100644 --- a/bookwyrm/tests/test_sanitize_html.py +++ b/bookwyrm/tests/test_sanitize_html.py @@ -37,10 +37,7 @@ class Sanitizer(TestCase): parser = InputHtmlParser() parser.feed(input_text) output = parser.get_output() - self.assertEqual( - output, - 'yes html' - ) + self.assertEqual(output, 'yes html') def test_invalid_html(self): """remove all html when the html is malformed""" From 85aad7c219fbedbe8307c1e7b386f911740ca729 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 3 Feb 2022 13:25:44 -0800 Subject: [PATCH 28/88] Another sorting order error --- bookwyrm/tests/activitystreams/test_abstractstream.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/tests/activitystreams/test_abstractstream.py b/bookwyrm/tests/activitystreams/test_abstractstream.py index f81c6fd6e..af94233f0 100644 --- a/bookwyrm/tests/activitystreams/test_abstractstream.py +++ b/bookwyrm/tests/activitystreams/test_abstractstream.py @@ -109,7 +109,7 @@ class Activitystreams(TestCase): self.assertEqual(result.count(), 2) self.assertEqual(result.first(), status2) self.assertEqual(result.last(), status) - self.assertIsInstance(result.last(), models.Comment) + self.assertIsInstance(result.first(), models.Comment) def test_abstractstream_get_audience(self, *_): """get a list of users that should see a status""" From 3b12af63b60752f655834059c95456a4416a8836 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 3 Feb 2022 13:49:33 -0800 Subject: [PATCH 29/88] Fixes links on import page --- bookwyrm/templates/import/import_status.html | 4 ++-- bookwyrm/views/imports/troubleshoot.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/import/import_status.html b/bookwyrm/templates/import/import_status.html index 374ea22c7..3a063954a 100644 --- a/bookwyrm/templates/import/import_status.html +++ b/bookwyrm/templates/import/import_status.html @@ -47,7 +47,7 @@ {% trans "In progress" %} - {% trans "Refresh" %} + {% trans "Refresh" %}
@@ -230,7 +230,7 @@ {% if not legacy %}
- {% include 'snippets/pagination.html' with page=items %} + {% include 'snippets/pagination.html' with page=items path=page_path %}
{% endif %} {% endspaceless %}{% endblock %} diff --git a/bookwyrm/views/imports/troubleshoot.py b/bookwyrm/views/imports/troubleshoot.py index f637b966b..e9ac275f8 100644 --- a/bookwyrm/views/imports/troubleshoot.py +++ b/bookwyrm/views/imports/troubleshoot.py @@ -5,6 +5,7 @@ from django.core.paginator import Paginator from django.shortcuts import get_object_or_404, redirect from django.template.response import TemplateResponse from django.utils.decorators import method_decorator +from django.urls import reverse from django.views import View from bookwyrm import models @@ -35,6 +36,7 @@ class ImportTroubleshoot(View): page.number, on_each_side=2, on_ends=1 ), "complete": True, + "page_path": reverse("import-troubleshoot", args=[job.id]), } return TemplateResponse(request, "import/troubleshoot.html", data) From 9013b1417ae552681120858de1eea9b212a129a7 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 3 Feb 2022 13:59:53 -0800 Subject: [PATCH 30/88] Show cancel buttons on modals in static mode --- bookwyrm/templates/book/file_links/add_link_modal.html | 4 +--- bookwyrm/templates/readthrough/readthrough_modal.html | 2 -- bookwyrm/templates/snippets/report_modal.html | 4 +--- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/bookwyrm/templates/book/file_links/add_link_modal.html b/bookwyrm/templates/book/file_links/add_link_modal.html index 0002b82b3..d5b3fcd0d 100644 --- a/bookwyrm/templates/book/file_links/add_link_modal.html +++ b/bookwyrm/templates/book/file_links/add_link_modal.html @@ -56,9 +56,7 @@ {% block modal-footer %} -{% if not static %} - -{% endif %} + {% endblock %} {% block modal-form-close %}{% endblock %} diff --git a/bookwyrm/templates/readthrough/readthrough_modal.html b/bookwyrm/templates/readthrough/readthrough_modal.html index 07d27b664..73f445f61 100644 --- a/bookwyrm/templates/readthrough/readthrough_modal.html +++ b/bookwyrm/templates/readthrough/readthrough_modal.html @@ -70,9 +70,7 @@ {% block modal-footer %} -{% if not static %} -{% endif %} {% endblock %} {% block modal-form-close %} diff --git a/bookwyrm/templates/snippets/report_modal.html b/bookwyrm/templates/snippets/report_modal.html index 0cf786ec4..f65cab590 100644 --- a/bookwyrm/templates/snippets/report_modal.html +++ b/bookwyrm/templates/snippets/report_modal.html @@ -50,9 +50,7 @@ {% block modal-footer %} -{% if not static %} - -{% endif %} + {% endblock %} From 3e635f497e3cd821455ea51fe39ae45743ec7a80 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 3 Feb 2022 15:11:01 -0800 Subject: [PATCH 31/88] Adds some simple url validation --- bookwyrm/connectors/abstract_connector.py | 19 +++++++++++++++++++ .../connectors/test_abstract_connector.py | 12 ++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index 0ab135b87..d8b9c6300 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -1,7 +1,9 @@ """ functionality outline for a book data connector """ from abc import ABC, abstractmethod import imghdr +import ipaddress import logging +from urllib.parse import urlparse from django.core.files.base import ContentFile from django.db import transaction @@ -250,6 +252,8 @@ def dict_from_mappings(data, mappings): def get_data(url, params=None, timeout=10): """wrapper for request.get""" # check if the url is blocked + raise_not_valid_url(url) + if models.FederatedServer.is_blocked(url): raise ConnectorException(f"Attempting to load data from blocked url: {url}") @@ -282,6 +286,7 @@ def get_data(url, params=None, timeout=10): def get_image(url, timeout=10): """wrapper for requesting an image""" + raise_not_valid_url(url) try: resp = requests.get( url, @@ -306,6 +311,20 @@ def get_image(url, timeout=10): return image_content, extension +def raise_not_valid_url(url): + """do some basic reality checks on the url""" + parsed = urlparse(url) + if not parsed.scheme in ["http", "https"]: + raise ConnectorException("Invalid scheme: ", url) + + try: + ipaddress.ip_address(parsed.netloc) + raise ConnectorException("Provided url is an IP address: ", url) + except ValueError: + # it's not an IP address, which is good + pass + + class Mapping: """associate a local database field with a field in an external dataset""" diff --git a/bookwyrm/tests/connectors/test_abstract_connector.py b/bookwyrm/tests/connectors/test_abstract_connector.py index 90e77b797..901cb5af2 100644 --- a/bookwyrm/tests/connectors/test_abstract_connector.py +++ b/bookwyrm/tests/connectors/test_abstract_connector.py @@ -4,8 +4,8 @@ from django.test import TestCase import responses from bookwyrm import models -from bookwyrm.connectors import abstract_connector -from bookwyrm.connectors.abstract_connector import Mapping +from bookwyrm.connectors import abstract_connector, ConnectorException +from bookwyrm.connectors.abstract_connector import Mapping, get_data from bookwyrm.settings import DOMAIN @@ -163,3 +163,11 @@ class AbstractConnector(TestCase): author.refresh_from_db() self.assertEqual(author.name, "Test") self.assertEqual(author.isni, "hi") + + def test_get_data_invalid_url(self): + """load json data from an arbitrary url""" + with self.assertRaises(ConnectorException): + get_data("file://hello.com/image/jpg") + + with self.assertRaises(ConnectorException): + get_data("http://127.0.0.1/image/jpg") From 7c0d51ed1484851ddab63ea45e53d1c4b53bc135 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 3 Feb 2022 18:59:08 -0800 Subject: [PATCH 32/88] Fixes duplicted shelves on user view --- bookwyrm/views/user.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/bookwyrm/views/user.py b/bookwyrm/views/user.py index d38981ea8..15ed5d29f 100644 --- a/bookwyrm/views/user.py +++ b/bookwyrm/views/user.py @@ -33,9 +33,13 @@ class User(View): # only show shelves that should be visible is_self = request.user.id == user.id if not is_self: - shelves = models.Shelf.privacy_filter( - request.user, privacy_levels=["public", "followers"] - ).filter(user=user, books__isnull=False) + shelves = ( + models.Shelf.privacy_filter( + request.user, privacy_levels=["public", "followers"] + ) + .filter(user=user, books__isnull=False) + .distinct() + ) else: shelves = user.shelf_set.filter(books__isnull=False).distinct() From 82aacf8f2aaca178457e461c5652f5e3d9f2dce4 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 4 Feb 2022 11:47:18 -0800 Subject: [PATCH 33/88] Update forms.py --- bookwyrm/forms.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 684fe91f6..564ea91b2 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -238,6 +238,7 @@ class FileLinkForm(CustomForm): if models.LinkDomain.objects.filter(domain=domain).exists(): status = models.LinkDomain.objects.get(domain=domain).status if status == "blocked": + # pylint: disable=line-too-long self.add_error( "url", _( @@ -247,6 +248,7 @@ class FileLinkForm(CustomForm): elif models.FileLink.objects.filter( url=url, book=book, filetype=filetype ).exists(): + # pylint: disable=line-too-long self.add_error( "url", _( From 719df5621ce06a9f33e2072c98fe797168e10e55 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 4 Feb 2022 11:58:03 -0800 Subject: [PATCH 34/88] Unit test to catch error on list page --- bookwyrm/tests/views/lists/test_list.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bookwyrm/tests/views/lists/test_list.py b/bookwyrm/tests/views/lists/test_list.py index a999d4cd1..f29288c04 100644 --- a/bookwyrm/tests/views/lists/test_list.py +++ b/bookwyrm/tests/views/lists/test_list.py @@ -85,6 +85,7 @@ class ListViews(TestCase): user=self.local_user, book=self.book, approved=True, + notes="hello", order=1, ) From fefb7e582a4bc01df5fe7a6608d78acdc551b396 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 4 Feb 2022 12:02:10 -0800 Subject: [PATCH 35/88] Fixes list note display --- bookwyrm/templates/lists/list.html | 4 +--- bookwyrm/tests/views/lists/test_list.py | 1 + 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/bookwyrm/templates/lists/list.html b/bookwyrm/templates/lists/list.html index a4c12f46f..6dfea8a67 100644 --- a/bookwyrm/templates/lists/list.html +++ b/bookwyrm/templates/lists/list.html @@ -84,9 +84,7 @@ {{ username }} says: {% endblocktrans %} -

- {{ item.notes|to_markdown|safe }} -

+ {{ item.notes|to_markdown|safe }}
{% if item.user == request.user %}
diff --git a/bookwyrm/tests/views/lists/test_list.py b/bookwyrm/tests/views/lists/test_list.py index f29288c04..bcec0822f 100644 --- a/bookwyrm/tests/views/lists/test_list.py +++ b/bookwyrm/tests/views/lists/test_list.py @@ -179,6 +179,7 @@ class ListViews(TestCase): book_list=self.list, user=self.local_user, book=self.book, + notes="hi hello", approved=True, order=1, ) From 0683ce1c33f5341dc1ae7c6c8c805a745a763201 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 4 Feb 2022 12:06:47 -0800 Subject: [PATCH 36/88] Proper markdown formatting --- .../migrations/0133_alter_listitem_notes.py | 21 +++++++++++++++++++ bookwyrm/models/list.py | 2 +- bookwyrm/views/list/list_item.py | 5 ++++- 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 bookwyrm/migrations/0133_alter_listitem_notes.py diff --git a/bookwyrm/migrations/0133_alter_listitem_notes.py b/bookwyrm/migrations/0133_alter_listitem_notes.py new file mode 100644 index 000000000..26ed10f82 --- /dev/null +++ b/bookwyrm/migrations/0133_alter_listitem_notes.py @@ -0,0 +1,21 @@ +# Generated by Django 3.2.11 on 2022-02-04 20:06 + +import bookwyrm.models.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0132_alter_user_preferred_language"), + ] + + operations = [ + migrations.AlterField( + model_name="listitem", + name="notes", + field=bookwyrm.models.fields.HtmlField( + blank=True, max_length=300, null=True + ), + ), + ] diff --git a/bookwyrm/models/list.py b/bookwyrm/models/list.py index 7dff72144..ea524cc54 100644 --- a/bookwyrm/models/list.py +++ b/bookwyrm/models/list.py @@ -142,7 +142,7 @@ class ListItem(CollectionItemMixin, BookWyrmModel): user = fields.ForeignKey( "User", on_delete=models.PROTECT, activitypub_field="actor" ) - notes = fields.TextField(blank=True, null=True, max_length=300) + notes = fields.HtmlField(blank=True, null=True, max_length=300) approved = models.BooleanField(default=True) order = fields.IntegerField() endorsement = models.ManyToManyField("User", related_name="endorsers") diff --git a/bookwyrm/views/list/list_item.py b/bookwyrm/views/list/list_item.py index 5fd65938e..6dca908fb 100644 --- a/bookwyrm/views/list/list_item.py +++ b/bookwyrm/views/list/list_item.py @@ -5,6 +5,7 @@ from django.utils.decorators import method_decorator from django.views import View from bookwyrm import forms, models +from bookwyrm.views.status import to_markdown # pylint: disable=no-self-use @@ -18,7 +19,9 @@ class ListItem(View): list_item.raise_not_editable(request.user) form = forms.ListItemForm(request.POST, instance=list_item) if form.is_valid(): - form.save() + item = form.save(commit=False) + item.notes = to_markdown(item.notes) + item.save() else: raise Exception(form.errors) return redirect("list", list_item.book_list.id) From 547d2463751fb7fe7c02b4f2ce4b17749c888e03 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 4 Feb 2022 12:09:20 -0800 Subject: [PATCH 37/88] Fixes 500 error --- bookwyrm/templates/lists/list.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/lists/list.html b/bookwyrm/templates/lists/list.html index 6dfea8a67..ab64fc9b6 100644 --- a/bookwyrm/templates/lists/list.html +++ b/bookwyrm/templates/lists/list.html @@ -79,7 +79,7 @@
- {% url 'user-feed' user|username as user_path %} + {% url 'user-feed' item.user|username as user_path %} {% blocktrans trimmed with username=user.display_name %} {{ username }} says: {% endblocktrans %} From 18768a23f3a8d81688490d18746a1dfca7b05acf Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 4 Feb 2022 15:30:58 -0800 Subject: [PATCH 38/88] Fixes test --- bookwyrm/tests/views/lists/test_list_item.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/tests/views/lists/test_list_item.py b/bookwyrm/tests/views/lists/test_list_item.py index 0d6f66abe..50be3c286 100644 --- a/bookwyrm/tests/views/lists/test_list_item.py +++ b/bookwyrm/tests/views/lists/test_list_item.py @@ -67,4 +67,4 @@ class ListItemViews(TestCase): self.assertEqual(mock.call_count, 1) item.refresh_from_db() - self.assertEqual(item.notes, "beep boop") + self.assertEqual(item.notes, "

beep boop

") From ea035b9fbe3c586fcdb3e5272dc22d0a29dc63a4 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 4 Feb 2022 17:37:08 -0800 Subject: [PATCH 39/88] Don't expose unnecessary ports --- docker-compose.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 0f4e90e37..fa28dbee6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -35,7 +35,7 @@ services: networks: - main ports: - - 8000:8000 + - 8000 redis_activity: image: redis command: redis-server --requirepass ${REDIS_ACTIVITY_PASSWORD} --appendonly yes --port ${REDIS_ACTIVITY_PORT} @@ -51,7 +51,7 @@ services: command: redis-server --requirepass ${REDIS_BROKER_PASSWORD} --appendonly yes --port ${REDIS_BROKER_PORT} env_file: .env ports: - - 6379:6379 + - 6379 networks: - main restart: on-failure @@ -74,10 +74,10 @@ services: restart: on-failure flower: build: . - command: celery -A celerywyrm flower + command: celery -A celerywyrm flower --basic_auth=${FLOWER_USER}:${FLOWER_PASSWORD} env_file: .env ports: - - ${FLOWER_PORT}:${FLOWER_PORT} + - ${FLOWER_PORT} volumes: - .:/app networks: From d8c3699adc4e8a7188dc75b9cfdc8afb742add7d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 4 Feb 2022 18:21:48 -0800 Subject: [PATCH 40/88] Updates locales --- locale/de_DE/LC_MESSAGES/django.po | 43 ++++---- locale/en_US/LC_MESSAGES/django.po | 144 +++++++++++++-------------- locale/es_ES/LC_MESSAGES/django.mo | Bin 83458 -> 83690 bytes locale/es_ES/LC_MESSAGES/django.po | 74 ++++++++------ locale/fr_FR/LC_MESSAGES/django.po | 78 ++++++++------- locale/gl_ES/LC_MESSAGES/django.mo | Bin 81710 -> 81710 bytes locale/gl_ES/LC_MESSAGES/django.po | 74 ++++++++------ locale/it_IT/LC_MESSAGES/django.mo | Bin 82792 -> 82792 bytes locale/it_IT/LC_MESSAGES/django.po | 74 ++++++++------ locale/lt_LT/LC_MESSAGES/django.mo | Bin 80620 -> 85183 bytes locale/lt_LT/LC_MESSAGES/django.po | 134 +++++++++++++------------ locale/no_NO/LC_MESSAGES/django.mo | Bin 80170 -> 80170 bytes locale/no_NO/LC_MESSAGES/django.po | 74 ++++++++------ locale/pt_BR/LC_MESSAGES/django.mo | Bin 82142 -> 82398 bytes locale/pt_BR/LC_MESSAGES/django.po | 74 ++++++++------ locale/pt_PT/LC_MESSAGES/django.mo | Bin 72904 -> 72904 bytes locale/pt_PT/LC_MESSAGES/django.po | 72 ++++++++------ locale/sv_SE/LC_MESSAGES/django.mo | Bin 80853 -> 82016 bytes locale/sv_SE/LC_MESSAGES/django.po | 92 +++++++++-------- locale/zh_Hans/LC_MESSAGES/django.po | 72 ++++++++------ locale/zh_Hant/LC_MESSAGES/django.po | 72 ++++++++------ 21 files changed, 583 insertions(+), 494 deletions(-) diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index 1ed9ee62f..835bee66b 100644 --- a/locale/de_DE/LC_MESSAGES/django.po +++ b/locale/de_DE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 18:17+0000\n" -"PO-Revision-Date: 2022-01-30 19:38\n" +"POT-Creation-Date: 2022-02-02 20:09+0000\n" +"PO-Revision-Date: 2022-02-04 21:01\n" "Last-Translator: Mouse Reeve \n" "Language-Team: German\n" "Language: de\n" @@ -19,11 +19,11 @@ msgstr "" #: bookwyrm/forms.py:239 msgid "Domain is blocked. Don't try this url again." -msgstr "Die Domäne ist blockiert. Versuchen Sie diese Url nicht mehr." +msgstr "" #: bookwyrm/forms.py:241 msgid "Domain already pending. Please try later." -msgstr "Die Domain ist bereits in Bearbeitung. Bitte versuchen Sie es später." +msgstr "" #: bookwyrm/forms.py:378 msgid "A user with this email already exists." @@ -148,26 +148,26 @@ msgstr "Föderiert" msgid "Blocked" msgstr "Blockiert" -#: bookwyrm/models/fields.py:29 +#: bookwyrm/models/fields.py:27 #, python-format msgid "%(value)s is not a valid remote_id" msgstr "%(value)s ist keine gültige remote_id" -#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 +#: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45 #, python-format msgid "%(value)s is not a valid username" msgstr "%(value)s ist kein gültiger Benutzer*inname" -#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "Benutzer*inname" -#: bookwyrm/models/fields.py:188 +#: bookwyrm/models/fields.py:186 msgid "A user with that username already exists." msgstr "Dieser Benutzer*inname ist bereits vergeben." -#: bookwyrm/models/fields.py:207 +#: bookwyrm/models/fields.py:205 #: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy_select.html:11 @@ -175,7 +175,7 @@ msgstr "Dieser Benutzer*inname ist bereits vergeben." msgid "Public" msgstr "Öffentlich" -#: bookwyrm/models/fields.py:208 +#: bookwyrm/models/fields.py:206 #: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy_select.html:14 @@ -183,14 +183,14 @@ msgstr "Öffentlich" msgid "Unlisted" msgstr "Ungelistet" -#: bookwyrm/models/fields.py:209 +#: bookwyrm/models/fields.py:207 #: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/layout.html:11 msgid "Followers" msgstr "Follower*innen" -#: bookwyrm/models/fields.py:210 +#: bookwyrm/models/fields.py:208 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 @@ -291,8 +291,8 @@ msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugiesisch)" #: bookwyrm/settings.py:258 -msgid "Swedish (Svenska)" -msgstr "Swedish (Schwedisch)" +msgid "Svenska (Swedish)" +msgstr "Svenska (Schwedisch)" #: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" @@ -377,7 +377,7 @@ msgstr "Administration" #: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 -#: bookwyrm/templates/snippets/user_options.html:13 +#: bookwyrm/templates/snippets/user_options.html:14 msgid "Send direct message" msgstr "Direktnachricht senden" @@ -1025,7 +1025,7 @@ msgid "Physical Properties" msgstr "Physikalische Eigenschaften" #: bookwyrm/templates/book/edit/edit_book_form.html:199 -#: bookwyrm/templates/book/editions/format_filter.html:5 +#: bookwyrm/templates/book/editions/format_filter.html:6 msgid "Format:" msgstr "Format:" @@ -1063,17 +1063,17 @@ msgstr "Ausgaben von %(book_title)s" msgid "Editions of \"%(work_title)s\"" msgstr "Ausgaben von \"%(work_title)s\"" -#: bookwyrm/templates/book/editions/format_filter.html:8 -#: bookwyrm/templates/book/editions/language_filter.html:8 +#: bookwyrm/templates/book/editions/format_filter.html:9 +#: bookwyrm/templates/book/editions/language_filter.html:9 msgid "Any" msgstr "Beliebig(e)" -#: bookwyrm/templates/book/editions/language_filter.html:5 +#: bookwyrm/templates/book/editions/language_filter.html:6 #: bookwyrm/templates/preferences/edit_user.html:95 msgid "Language:" msgstr "Sprache:" -#: bookwyrm/templates/book/editions/search_filter.html:5 +#: bookwyrm/templates/book/editions/search_filter.html:6 msgid "Search editions" msgstr "Ausgaben suchen" @@ -4116,7 +4116,7 @@ msgstr "Filter werden angewendet" msgid "Clear filters" msgstr "Filter zurücksetzen" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 msgid "Apply filters" msgstr "Filter anwenden" @@ -4685,3 +4685,4 @@ msgid "Load %(count)d unread status" msgid_plural "Load %(count)d unread statuses" msgstr[0] "Lade %(count)d ungelesene Statusmeldung" msgstr[1] "Lade %(count)d ungelesene Statusmeldungen" + diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index 2b8ffaf57..998a34acc 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: 2022-02-02 20:09+0000\n" +"POT-Creation-Date: 2022-02-05 02:20+0000\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -18,70 +18,70 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: bookwyrm/forms.py:239 -msgid "Domain is blocked. Don't try this url again." +#: bookwyrm/forms.py:245 +msgid "This domain is blocked. Please contact your administrator if you think this is an error." msgstr "" -#: bookwyrm/forms.py:241 -msgid "Domain already pending. Please try later." -msgstr "" - -#: bookwyrm/forms.py:378 -msgid "A user with this email already exists." -msgstr "" - -#: bookwyrm/forms.py:392 -msgid "One Day" -msgstr "" - -#: bookwyrm/forms.py:393 -msgid "One Week" +#: bookwyrm/forms.py:255 +msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending." msgstr "" #: bookwyrm/forms.py:394 +msgid "A user with this email already exists." +msgstr "" + +#: bookwyrm/forms.py:408 +msgid "One Day" +msgstr "" + +#: bookwyrm/forms.py:409 +msgid "One Week" +msgstr "" + +#: bookwyrm/forms.py:410 msgid "One Month" msgstr "" -#: bookwyrm/forms.py:395 +#: bookwyrm/forms.py:411 msgid "Does Not Expire" msgstr "" -#: bookwyrm/forms.py:399 +#: bookwyrm/forms.py:415 #, python-brace-format msgid "{i} uses" msgstr "" -#: bookwyrm/forms.py:400 +#: bookwyrm/forms.py:416 msgid "Unlimited" msgstr "" -#: bookwyrm/forms.py:502 +#: bookwyrm/forms.py:518 msgid "List Order" msgstr "" -#: bookwyrm/forms.py:503 +#: bookwyrm/forms.py:519 msgid "Book Title" msgstr "" -#: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:520 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "" -#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 +#: bookwyrm/forms.py:522 bookwyrm/templates/lists/list.html:175 msgid "Sort By" msgstr "" -#: bookwyrm/forms.py:510 +#: bookwyrm/forms.py:526 msgid "Ascending" msgstr "" -#: bookwyrm/forms.py:511 +#: bookwyrm/forms.py:527 msgid "Descending" msgstr "" -#: bookwyrm/forms.py:524 +#: bookwyrm/forms.py:540 msgid "Reading finish date cannot be before start date." msgstr "" @@ -233,73 +233,73 @@ msgstr "" msgid "Everything else" msgstr "" -#: bookwyrm/settings.py:173 +#: bookwyrm/settings.py:190 msgid "Home Timeline" msgstr "" -#: bookwyrm/settings.py:173 +#: bookwyrm/settings.py:190 msgid "Home" msgstr "" -#: bookwyrm/settings.py:174 +#: bookwyrm/settings.py:191 msgid "Books Timeline" msgstr "" -#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:191 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "" -#: bookwyrm/settings.py:248 +#: bookwyrm/settings.py:265 msgid "English" msgstr "" -#: bookwyrm/settings.py:249 +#: bookwyrm/settings.py:266 msgid "Deutsch (German)" msgstr "" -#: bookwyrm/settings.py:250 +#: bookwyrm/settings.py:267 msgid "Español (Spanish)" msgstr "" -#: bookwyrm/settings.py:251 +#: bookwyrm/settings.py:268 msgid "Galego (Galician)" msgstr "" -#: bookwyrm/settings.py:252 +#: bookwyrm/settings.py:269 msgid "Italiano (Italian)" msgstr "" -#: bookwyrm/settings.py:253 +#: bookwyrm/settings.py:270 msgid "Français (French)" msgstr "" -#: bookwyrm/settings.py:254 +#: bookwyrm/settings.py:271 msgid "Lietuvių (Lithuanian)" msgstr "" -#: bookwyrm/settings.py:255 +#: bookwyrm/settings.py:272 msgid "Norsk (Norwegian)" msgstr "" -#: bookwyrm/settings.py:256 +#: bookwyrm/settings.py:273 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "" -#: bookwyrm/settings.py:257 +#: bookwyrm/settings.py:274 msgid "Português Europeu (European Portuguese)" msgstr "" -#: bookwyrm/settings.py:258 +#: bookwyrm/settings.py:275 msgid "Svenska (Swedish)" msgstr "" -#: bookwyrm/settings.py:259 +#: bookwyrm/settings.py:276 msgid "简体中文 (Simplified Chinese)" msgstr "" -#: bookwyrm/settings.py:260 +#: bookwyrm/settings.py:277 msgid "繁體中文 (Traditional Chinese)" msgstr "" @@ -437,7 +437,7 @@ msgid "Copy address" msgstr "" #: bookwyrm/templates/annual_summary/layout.html:68 -#: bookwyrm/templates/lists/list.html:269 +#: bookwyrm/templates/lists/list.html:267 msgid "Copied!" msgstr "" @@ -722,17 +722,17 @@ msgstr "" #: bookwyrm/templates/book/cover_add_modal.html:32 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 -#: bookwyrm/templates/book/file_links/add_link_modal.html:60 +#: bookwyrm/templates/book/file_links/add_link_modal.html:59 #: bookwyrm/templates/book/file_links/verification_modal.html:21 #: bookwyrm/templates/book/sync_modal.html:23 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/add_item_modal.html:42 #: bookwyrm/templates/lists/delete_list_modal.html:18 #: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 -#: bookwyrm/templates/readthrough/readthrough_modal.html:74 +#: bookwyrm/templates/readthrough/readthrough_modal.html:73 #: bookwyrm/templates/settings/federation/instance.html:88 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 -#: bookwyrm/templates/snippets/report_modal.html:54 +#: bookwyrm/templates/snippets/report_modal.html:53 msgid "Cancel" msgstr "" @@ -839,14 +839,14 @@ msgstr "" msgid "Lists" msgstr "" -#: bookwyrm/templates/book/book.html:359 +#: bookwyrm/templates/book/book.html:360 msgid "Add to list" msgstr "" -#: bookwyrm/templates/book/book.html:369 +#: bookwyrm/templates/book/book.html:370 #: bookwyrm/templates/book/cover_add_modal.html:31 #: bookwyrm/templates/lists/add_item_modal.html:37 -#: bookwyrm/templates/lists/list.html:247 +#: bookwyrm/templates/lists/list.html:245 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31 msgid "Add" @@ -1659,7 +1659,7 @@ msgid "What are you reading?" msgstr "" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:205 +#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:203 msgid "Search for a book" msgstr "" @@ -1679,7 +1679,7 @@ msgstr "" #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/groups/members.html:15 #: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:209 +#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:207 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -1695,7 +1695,7 @@ msgid "Popular on %(site_name)s" msgstr "" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:222 +#: bookwyrm/templates/lists/list.html:220 msgid "No books found" msgstr "" @@ -2266,7 +2266,7 @@ msgid "Suggest \"%(title)s\" for this list" msgstr "" #: bookwyrm/templates/lists/add_item_modal.html:39 -#: bookwyrm/templates/lists/list.html:249 +#: bookwyrm/templates/lists/list.html:247 msgid "Suggest" msgstr "" @@ -2413,72 +2413,72 @@ msgstr "" msgid "You successfully added a book to this list!" msgstr "" -#: bookwyrm/templates/lists/list.html:96 +#: bookwyrm/templates/lists/list.html:94 msgid "Edit notes" msgstr "" -#: bookwyrm/templates/lists/list.html:111 +#: bookwyrm/templates/lists/list.html:109 msgid "Add notes" msgstr "" -#: bookwyrm/templates/lists/list.html:123 +#: bookwyrm/templates/lists/list.html:121 #, python-format msgid "Added by %(username)s" msgstr "" -#: bookwyrm/templates/lists/list.html:138 +#: bookwyrm/templates/lists/list.html:136 msgid "List position" msgstr "" -#: bookwyrm/templates/lists/list.html:144 +#: bookwyrm/templates/lists/list.html:142 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 msgid "Set" msgstr "" -#: bookwyrm/templates/lists/list.html:159 +#: bookwyrm/templates/lists/list.html:157 #: bookwyrm/templates/snippets/remove_from_group_button.html:20 msgid "Remove" msgstr "" -#: bookwyrm/templates/lists/list.html:173 -#: bookwyrm/templates/lists/list.html:190 +#: bookwyrm/templates/lists/list.html:171 +#: bookwyrm/templates/lists/list.html:188 msgid "Sort List" msgstr "" -#: bookwyrm/templates/lists/list.html:183 +#: bookwyrm/templates/lists/list.html:181 msgid "Direction" msgstr "" -#: bookwyrm/templates/lists/list.html:197 +#: bookwyrm/templates/lists/list.html:195 msgid "Add Books" msgstr "" -#: bookwyrm/templates/lists/list.html:199 +#: bookwyrm/templates/lists/list.html:197 msgid "Suggest Books" msgstr "" -#: bookwyrm/templates/lists/list.html:210 +#: bookwyrm/templates/lists/list.html:208 msgid "search" msgstr "" -#: bookwyrm/templates/lists/list.html:216 +#: bookwyrm/templates/lists/list.html:214 msgid "Clear search" msgstr "" -#: bookwyrm/templates/lists/list.html:221 +#: bookwyrm/templates/lists/list.html:219 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "" -#: bookwyrm/templates/lists/list.html:260 +#: bookwyrm/templates/lists/list.html:258 msgid "Embed this list on a website" msgstr "" -#: bookwyrm/templates/lists/list.html:268 +#: bookwyrm/templates/lists/list.html:266 msgid "Copy embed code" msgstr "" -#: bookwyrm/templates/lists/list.html:270 +#: bookwyrm/templates/lists/list.html:268 #, python-format msgid "%(list_name)s, a list by %(owner)s on %(site_name)s" msgstr "" diff --git a/locale/es_ES/LC_MESSAGES/django.mo b/locale/es_ES/LC_MESSAGES/django.mo index faae97eddcd1061d339b2730b98f353da094633a..3a668fda91f51e8b7684aaa3c10c358dcd566165 100644 GIT binary patch delta 21188 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

-eY87*vHJkaFB_CVJZ^? z!wsk-CxHxrV$j6pL8v+0%nS_rP&J^siQzOe14ADpWa>*FlsKT0g;0k~fbumN85rh+ zigBoTFB1d9EKvMI<)4Cl#>Bvo&B(xD%*eoC&BVa457f$KgsgrAxkVdPA}}#9TxDip zIKaffP@llez~B!xU@O#xAcdEiAuCfr?Bk#!hk=3N10!UX>pK$z11A#$13x1J!yg6) z24iLhhC3ijm>C$BfR@`aLl&QDLd~1X%)rpe$iTqL%)qdeiGiU704+m?DtZEH^+7GE zV`gB`2322-(DiYkV~Cg-7`}i``C(*WI00H{39`QV|3e+I7-S*Tuo_UrFfuUofQlqg84GH#GB7Zd zKn+r7VqmCYVgPqX%NZFMk{Kb(5&M`K81{ogl9_>l1ytNkF7yT(@W zsm{c}FdJ+Vn5YMjD}tCu7#SG0Gczz4fWi%Q0uR&yHBf^Ag_%dOLDWogBK%Yz42d028QWS8$i0nK~VrzcNJ9RFfcIqFhkb4K7)#{VPIfrV`gCB z2Nf`&_8}t!Lnx@-!^FVw80xA%&{B7EMh1pwj0~V{Xbb^ROF)MleFiCFWMDYSz`*bt z#AaY%2n1Chj0_A?ObiUIP_czjx|WfF!G5x#uW)?{69WS;)ENeh3=9R#3=AJZ%~%G= zRJjpUhZrbLr;O82&+JL92;DhD-!yA`k=A za$sg)5CwJ4L47n(i3n8-T629G)SQ8;%LKK=LB|;}GBAiRF)%nmoyQ4k8Z$C5+-G87 zU}R!oIKarjumNg@3MlM?p&TzJ28PQ}OJGcZ&#F);KoF)(z3+T@_lB{Ku~Xf%);w}L7=sJS5iP9_G19iZmU zRt5$J2WAF_g`hSysF};az!1aC!0?xWfuVpAvQOTSnSmh*6z~iT3`dw47z~jN`UdJ> zF*7g(f!bP3kX7TW85tP%GBGeDK-E13*$CR7!_2@Sz{J4tiIIV!9hAjEBM>`5D}I?7 z7>Yn+A3uigHi(n1A`4C1H(%u28L;j z3=Aer3=BS?iVI{Z0|P@5s7DLcqsau>z97KJz~HzCbP6Eo6gjBH^~?+mvQSG)nHd=B zK*<%QrfrzkZsrBb0FH7_MIFI`U|ASX4kI8~vfs8S&( zu_U!fkHIBBH!(9$At@(6IUB~wEQat?Q}h&E^7GV7z#2+2GK&>Ti*gha(-SlE^fq5A zpQ^@RmYP?bov5G@T%MYeS)8%CY@U)bmyxc4iGq=lm7($GMF;2Wn!4sFq~zyj=4Iw9 zR3<8<7MC1e2ys$sUP-E+f@faI;gxwMi8=WSxrY}PE0iP_rKIXjc6cvhg`^XrEh#6z zurxI>C0|d$FJGaoG&QFzQ6W(wGp{5yuOzVuWOyRTk$Rhh-`g4R!kt%|nw-CVo;+iU F8URARXzBm} delta 20956 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 diff --git a/locale/es_ES/LC_MESSAGES/django.po b/locale/es_ES/LC_MESSAGES/django.po index 6d0cf2d78..8718ae40d 100644 --- a/locale/es_ES/LC_MESSAGES/django.po +++ b/locale/es_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 18:17+0000\n" -"PO-Revision-Date: 2022-01-30 19:38\n" +"POT-Creation-Date: 2022-02-02 20:09+0000\n" +"PO-Revision-Date: 2022-02-04 22:13\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Spanish\n" "Language: es\n" @@ -17,62 +17,70 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:365 +#: bookwyrm/forms.py:239 +msgid "Domain is blocked. Don't try this url again." +msgstr "El dominio está bloqueado. No vuelva a intentar esta url." + +#: bookwyrm/forms.py:241 +msgid "Domain already pending. Please try later." +msgstr "El dominio ya está pendiente. Inténtalo más tarde." + +#: bookwyrm/forms.py:378 msgid "A user with this email already exists." msgstr "Ya existe un usuario con ese correo electrónico." -#: bookwyrm/forms.py:379 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Un día" -#: bookwyrm/forms.py:380 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Una semana" -#: bookwyrm/forms.py:381 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Un mes" -#: bookwyrm/forms.py:382 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "No expira" -#: bookwyrm/forms.py:386 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} usos" -#: bookwyrm/forms.py:387 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Sin límite" -#: bookwyrm/forms.py:489 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Orden de la lista" -#: bookwyrm/forms.py:490 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Título" -#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Valoración" -#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Ordenar por" -#: bookwyrm/forms.py:497 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Ascendente" -#: bookwyrm/forms.py:498 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Descendente" -#: bookwyrm/forms.py:511 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." msgstr "La fecha final de lectura no puede ser anterior a la fecha de inicio." @@ -140,26 +148,26 @@ msgstr "Federalizado" msgid "Blocked" msgstr "Bloqueado" -#: bookwyrm/models/fields.py:29 +#: bookwyrm/models/fields.py:27 #, 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:38 bookwyrm/models/fields.py:47 +#: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45 #, python-format msgid "%(value)s is not a valid username" msgstr "%(value)s no es un usuario válido" -#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "nombre de usuario" -#: bookwyrm/models/fields.py:188 +#: bookwyrm/models/fields.py:186 msgid "A user with that username already exists." msgstr "Ya existe un usuario con ese nombre." -#: bookwyrm/models/fields.py:207 +#: bookwyrm/models/fields.py:205 #: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy_select.html:11 @@ -167,7 +175,7 @@ msgstr "Ya existe un usuario con ese nombre." msgid "Public" msgstr "Público" -#: bookwyrm/models/fields.py:208 +#: bookwyrm/models/fields.py:206 #: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy_select.html:14 @@ -175,14 +183,14 @@ msgstr "Público" msgid "Unlisted" msgstr "No listado" -#: bookwyrm/models/fields.py:209 +#: bookwyrm/models/fields.py:207 #: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/layout.html:11 msgid "Followers" msgstr "Seguidores" -#: bookwyrm/models/fields.py:210 +#: bookwyrm/models/fields.py:208 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 @@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugués europeo)" #: bookwyrm/settings.py:258 -msgid "Swedish (Svenska)" -msgstr "Sueco (Svenska)" +msgid "Svenska (Swedish)" +msgstr "Svenska (Sueco)" #: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" @@ -369,7 +377,7 @@ msgstr "Administrador" #: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 -#: bookwyrm/templates/snippets/user_options.html:13 +#: bookwyrm/templates/snippets/user_options.html:14 msgid "Send direct message" msgstr "Enviar mensaje directo" @@ -1017,7 +1025,7 @@ msgid "Physical Properties" msgstr "Propiedades físicas" #: bookwyrm/templates/book/edit/edit_book_form.html:199 -#: bookwyrm/templates/book/editions/format_filter.html:5 +#: bookwyrm/templates/book/editions/format_filter.html:6 msgid "Format:" msgstr "Formato:" @@ -1055,17 +1063,17 @@ msgstr "Ediciones de %(book_title)s" msgid "Editions of \"%(work_title)s\"" msgstr "Ediciones de \"%(work_title)s\"" -#: bookwyrm/templates/book/editions/format_filter.html:8 -#: bookwyrm/templates/book/editions/language_filter.html:8 +#: bookwyrm/templates/book/editions/format_filter.html:9 +#: bookwyrm/templates/book/editions/language_filter.html:9 msgid "Any" msgstr "Cualquier" -#: bookwyrm/templates/book/editions/language_filter.html:5 +#: bookwyrm/templates/book/editions/language_filter.html:6 #: bookwyrm/templates/preferences/edit_user.html:95 msgid "Language:" msgstr "Idioma:" -#: bookwyrm/templates/book/editions/search_filter.html:5 +#: bookwyrm/templates/book/editions/search_filter.html:6 msgid "Search editions" msgstr "Buscar ediciones" @@ -4108,7 +4116,7 @@ msgstr "Filtros aplicados" msgid "Clear filters" msgstr "Borrar filtros" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 msgid "Apply filters" msgstr "Aplicar filtros" diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index 4300f0052..c1b9551b8 100644 --- a/locale/fr_FR/LC_MESSAGES/django.po +++ b/locale/fr_FR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 18:17+0000\n" -"PO-Revision-Date: 2022-01-30 19:38\n" +"POT-Creation-Date: 2022-02-02 20:09+0000\n" +"PO-Revision-Date: 2022-02-04 21:01\n" "Last-Translator: Mouse Reeve \n" "Language-Team: French\n" "Language: fr\n" @@ -17,62 +17,70 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:365 +#: bookwyrm/forms.py:239 +msgid "Domain is blocked. Don't try this url again." +msgstr "" + +#: bookwyrm/forms.py:241 +msgid "Domain already pending. Please try later." +msgstr "" + +#: bookwyrm/forms.py:378 msgid "A user with this email already exists." msgstr "Cet email est déjà associé à un compte." -#: bookwyrm/forms.py:379 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Un jour" -#: bookwyrm/forms.py:380 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Une semaine" -#: bookwyrm/forms.py:381 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Un mois" -#: bookwyrm/forms.py:382 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "Sans expiration" -#: bookwyrm/forms.py:386 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} utilisations" -#: bookwyrm/forms.py:387 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Sans limite" -#: bookwyrm/forms.py:489 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Ordre de la liste" -#: bookwyrm/forms.py:490 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Titre du livre" -#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Note" -#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Trier par" -#: bookwyrm/forms.py:497 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Ordre croissant" -#: bookwyrm/forms.py:498 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Ordre décroissant" -#: bookwyrm/forms.py:511 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." msgstr "La date de fin de lecture ne peut pas être antérieure à la date de début." @@ -140,26 +148,26 @@ msgstr "Fédéré" msgid "Blocked" msgstr "Bloqué" -#: bookwyrm/models/fields.py:29 +#: bookwyrm/models/fields.py:27 #, 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:38 bookwyrm/models/fields.py:47 +#: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45 #, 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:183 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "nom du compte :" -#: bookwyrm/models/fields.py:188 +#: bookwyrm/models/fields.py:186 msgid "A user with that username already exists." msgstr "Ce nom est déjà associé à un compte." -#: bookwyrm/models/fields.py:207 +#: bookwyrm/models/fields.py:205 #: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy_select.html:11 @@ -167,7 +175,7 @@ msgstr "Ce nom est déjà associé à un compte." msgid "Public" msgstr "Public" -#: bookwyrm/models/fields.py:208 +#: bookwyrm/models/fields.py:206 #: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy_select.html:14 @@ -175,14 +183,14 @@ msgstr "Public" msgid "Unlisted" msgstr "Non listé" -#: bookwyrm/models/fields.py:209 +#: bookwyrm/models/fields.py:207 #: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/layout.html:11 msgid "Followers" msgstr "Abonné(e)s" -#: bookwyrm/models/fields.py:210 +#: bookwyrm/models/fields.py:208 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 @@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugais européen)" #: bookwyrm/settings.py:258 -msgid "Swedish (Svenska)" -msgstr "Suédois (Svenska)" +msgid "Svenska (Swedish)" +msgstr "Svenska (Suédois)" #: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" @@ -369,7 +377,7 @@ msgstr "Admin" #: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 -#: bookwyrm/templates/snippets/user_options.html:13 +#: bookwyrm/templates/snippets/user_options.html:14 msgid "Send direct message" msgstr "Envoyer un message direct" @@ -1017,7 +1025,7 @@ msgid "Physical Properties" msgstr "Propriétés physiques" #: bookwyrm/templates/book/edit/edit_book_form.html:199 -#: bookwyrm/templates/book/editions/format_filter.html:5 +#: bookwyrm/templates/book/editions/format_filter.html:6 msgid "Format:" msgstr "Format :" @@ -1055,17 +1063,17 @@ msgstr "Éditions de %(book_title)s" msgid "Editions of \"%(work_title)s\"" msgstr "Éditions de « %(work_title)s »" -#: bookwyrm/templates/book/editions/format_filter.html:8 -#: bookwyrm/templates/book/editions/language_filter.html:8 +#: bookwyrm/templates/book/editions/format_filter.html:9 +#: bookwyrm/templates/book/editions/language_filter.html:9 msgid "Any" msgstr "Tou(te)s" -#: bookwyrm/templates/book/editions/language_filter.html:5 +#: bookwyrm/templates/book/editions/language_filter.html:6 #: bookwyrm/templates/preferences/edit_user.html:95 msgid "Language:" msgstr "Langue :" -#: bookwyrm/templates/book/editions/search_filter.html:5 +#: bookwyrm/templates/book/editions/search_filter.html:6 msgid "Search editions" msgstr "Rechercher des éditions" @@ -3576,11 +3584,11 @@ msgstr "Retour aux signalements" #: bookwyrm/templates/settings/reports/report.html:23 msgid "Message reporter" -msgstr "" +msgstr "Rapporteur du message" #: bookwyrm/templates/settings/reports/report.html:27 msgid "Update on your report:" -msgstr "" +msgstr "Mise à jour de votre rapport :" #: bookwyrm/templates/settings/reports/report.html:35 msgid "Reported statuses" @@ -4108,7 +4116,7 @@ msgstr "Des filtres sont appliqués" msgid "Clear filters" msgstr "Annuler les filtres" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 msgid "Apply filters" msgstr "Appliquer les filtres" diff --git a/locale/gl_ES/LC_MESSAGES/django.mo b/locale/gl_ES/LC_MESSAGES/django.mo index 563a5e98d3e02f475cf713db9069f7b9e76d7ee2..8a6a74da4090271c509e415f711a3be770689d79 100644 GIT binary patch delta 82 zcmZ4Yk7eCImJKiL7+E*JvyGPE)<-2CbwV+0#SZu>_`Mq5_`Mq5\n" "Language-Team: Galician\n" "Language: gl\n" @@ -17,62 +17,70 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:365 +#: bookwyrm/forms.py:239 +msgid "Domain is blocked. Don't try this url again." +msgstr "" + +#: bookwyrm/forms.py:241 +msgid "Domain already pending. Please try later." +msgstr "" + +#: bookwyrm/forms.py:378 msgid "A user with this email already exists." msgstr "Xa existe unha usuaria con este email." -#: bookwyrm/forms.py:379 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Un día" -#: bookwyrm/forms.py:380 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Unha semana" -#: bookwyrm/forms.py:381 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Un mes" -#: bookwyrm/forms.py:382 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "Non caduca" -#: bookwyrm/forms.py:386 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} usos" -#: bookwyrm/forms.py:387 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Sen límite" -#: bookwyrm/forms.py:489 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Orde da listaxe" -#: bookwyrm/forms.py:490 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Título do libro" -#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Puntuación" -#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Ordenar por" -#: bookwyrm/forms.py:497 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Ascendente" -#: bookwyrm/forms.py:498 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Descendente" -#: bookwyrm/forms.py:511 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." msgstr "A data final da lectura non pode ser anterior á de inicio." @@ -140,26 +148,26 @@ msgstr "Federado" msgid "Blocked" msgstr "Bloqueado" -#: bookwyrm/models/fields.py:29 +#: bookwyrm/models/fields.py:27 #, python-format msgid "%(value)s is not a valid remote_id" msgstr "%(value)s non é un remote_id válido" -#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 +#: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45 #, python-format msgid "%(value)s is not a valid username" msgstr "%(value)s non é un nome de usuaria válido" -#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "nome de usuaria" -#: bookwyrm/models/fields.py:188 +#: bookwyrm/models/fields.py:186 msgid "A user with that username already exists." msgstr "Xa existe unha usuaria con ese nome." -#: bookwyrm/models/fields.py:207 +#: bookwyrm/models/fields.py:205 #: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy_select.html:11 @@ -167,7 +175,7 @@ msgstr "Xa existe unha usuaria con ese nome." msgid "Public" msgstr "Público" -#: bookwyrm/models/fields.py:208 +#: bookwyrm/models/fields.py:206 #: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy_select.html:14 @@ -175,14 +183,14 @@ msgstr "Público" msgid "Unlisted" msgstr "Non listado" -#: bookwyrm/models/fields.py:209 +#: bookwyrm/models/fields.py:207 #: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/layout.html:11 msgid "Followers" msgstr "Seguidoras" -#: bookwyrm/models/fields.py:210 +#: bookwyrm/models/fields.py:208 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 @@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugués europeo)" #: bookwyrm/settings.py:258 -msgid "Swedish (Svenska)" -msgstr "Sueco (Svenska)" +msgid "Svenska (Swedish)" +msgstr "Sueco (Swedish)" #: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" @@ -369,7 +377,7 @@ msgstr "Admin" #: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 -#: bookwyrm/templates/snippets/user_options.html:13 +#: bookwyrm/templates/snippets/user_options.html:14 msgid "Send direct message" msgstr "Enviar mensaxe directa" @@ -1017,7 +1025,7 @@ msgid "Physical Properties" msgstr "Propiedades físicas" #: bookwyrm/templates/book/edit/edit_book_form.html:199 -#: bookwyrm/templates/book/editions/format_filter.html:5 +#: bookwyrm/templates/book/editions/format_filter.html:6 msgid "Format:" msgstr "Formato:" @@ -1055,17 +1063,17 @@ msgstr "Edicións de %(book_title)s" msgid "Editions of \"%(work_title)s\"" msgstr "Edicións de %(work_title)s" -#: bookwyrm/templates/book/editions/format_filter.html:8 -#: bookwyrm/templates/book/editions/language_filter.html:8 +#: bookwyrm/templates/book/editions/format_filter.html:9 +#: bookwyrm/templates/book/editions/language_filter.html:9 msgid "Any" msgstr "Calquera" -#: bookwyrm/templates/book/editions/language_filter.html:5 +#: bookwyrm/templates/book/editions/language_filter.html:6 #: bookwyrm/templates/preferences/edit_user.html:95 msgid "Language:" msgstr "Idioma:" -#: bookwyrm/templates/book/editions/search_filter.html:5 +#: bookwyrm/templates/book/editions/search_filter.html:6 msgid "Search editions" msgstr "Buscar edicións" @@ -4108,7 +4116,7 @@ msgstr "Filtros aplicados" msgid "Clear filters" msgstr "Limpar filtros" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 msgid "Apply filters" msgstr "Aplicar filtros" diff --git a/locale/it_IT/LC_MESSAGES/django.mo b/locale/it_IT/LC_MESSAGES/django.mo index a8f4c5de665cf17ee3449e7e0fedd48338a48560..c3ed2bbc0edeb45bb2cf8af67fd4d6db38e6fea7 100644 GIT binary patch delta 82 zcmaFS#`>a-b;AogM%K+Q?Sh$@7#KF&IWA*m(qrEI%xzORe_3i?adx7DMsRs*N@j7! j=H>G&mAQ;`4NMe_46O_dH@`Zl7sUoqv|Uby(Mufw-lZJ4 delta 82 zcmaFS#`>a-b;AogM!n51?Sh$@SeZB5IWA*mVqn<(%xzORe|c(3W^smsMsQhbUU7Ef j=H>G&mAMRcjSUox46KaJHorQk7sUoqv|Uby(Mufw;W`|- diff --git a/locale/it_IT/LC_MESSAGES/django.po b/locale/it_IT/LC_MESSAGES/django.po index fa00f1f49..2b47a65b0 100644 --- a/locale/it_IT/LC_MESSAGES/django.po +++ b/locale/it_IT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 18:17+0000\n" -"PO-Revision-Date: 2022-01-30 20:36\n" +"POT-Creation-Date: 2022-02-02 20:09+0000\n" +"PO-Revision-Date: 2022-02-04 21:01\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Italian\n" "Language: it\n" @@ -17,62 +17,70 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:365 +#: bookwyrm/forms.py:239 +msgid "Domain is blocked. Don't try this url again." +msgstr "" + +#: bookwyrm/forms.py:241 +msgid "Domain already pending. Please try later." +msgstr "" + +#: bookwyrm/forms.py:378 msgid "A user with this email already exists." msgstr "Esiste già un'utenza con questo indirizzo email." -#: bookwyrm/forms.py:379 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Un giorno" -#: bookwyrm/forms.py:380 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Una settimana" -#: bookwyrm/forms.py:381 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Un mese" -#: bookwyrm/forms.py:382 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "Non scade" -#: bookwyrm/forms.py:386 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} usi" -#: bookwyrm/forms.py:387 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Illimitato" -#: bookwyrm/forms.py:489 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Ordina Lista" -#: bookwyrm/forms.py:490 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Titolo del libro" -#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Valutazione" -#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Ordina per" -#: bookwyrm/forms.py:497 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Crescente" -#: bookwyrm/forms.py:498 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Decrescente" -#: bookwyrm/forms.py:511 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." msgstr "La data di fine lettura non può essere precedente alla data di inizio." @@ -140,26 +148,26 @@ msgstr "Federato" msgid "Blocked" msgstr "Bloccato" -#: bookwyrm/models/fields.py:29 +#: bookwyrm/models/fields.py:27 #, python-format msgid "%(value)s is not a valid remote_id" msgstr "%(value)s non è un Id remoto valido" -#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 +#: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45 #, python-format msgid "%(value)s is not a valid username" msgstr "%(value)s non è un nome utente valido" -#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "nome utente" -#: bookwyrm/models/fields.py:188 +#: bookwyrm/models/fields.py:186 msgid "A user with that username already exists." msgstr "Un utente con questo nome utente esiste già." -#: bookwyrm/models/fields.py:207 +#: bookwyrm/models/fields.py:205 #: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy_select.html:11 @@ -167,7 +175,7 @@ msgstr "Un utente con questo nome utente esiste già." msgid "Public" msgstr "Pubblico" -#: bookwyrm/models/fields.py:208 +#: bookwyrm/models/fields.py:206 #: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy_select.html:14 @@ -175,14 +183,14 @@ msgstr "Pubblico" msgid "Unlisted" msgstr "Non in lista" -#: bookwyrm/models/fields.py:209 +#: bookwyrm/models/fields.py:207 #: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/layout.html:11 msgid "Followers" msgstr "Followers" -#: bookwyrm/models/fields.py:210 +#: bookwyrm/models/fields.py:208 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 @@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portoghese europeo)" #: bookwyrm/settings.py:258 -msgid "Swedish (Svenska)" -msgstr "Swedish (Svedese)" +msgid "Svenska (Swedish)" +msgstr "Svenska (Svedese)" #: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" @@ -369,7 +377,7 @@ msgstr "Admin" #: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 -#: bookwyrm/templates/snippets/user_options.html:13 +#: bookwyrm/templates/snippets/user_options.html:14 msgid "Send direct message" msgstr "Invia messaggio diretto" @@ -1017,7 +1025,7 @@ msgid "Physical Properties" msgstr "Caratteristiche" #: bookwyrm/templates/book/edit/edit_book_form.html:199 -#: bookwyrm/templates/book/editions/format_filter.html:5 +#: bookwyrm/templates/book/editions/format_filter.html:6 msgid "Format:" msgstr "Formato:" @@ -1055,17 +1063,17 @@ msgstr "Edizioni di %(book_title)s" msgid "Editions of \"%(work_title)s\"" msgstr "Edizioni di \"%(work_title)s\"" -#: bookwyrm/templates/book/editions/format_filter.html:8 -#: bookwyrm/templates/book/editions/language_filter.html:8 +#: bookwyrm/templates/book/editions/format_filter.html:9 +#: bookwyrm/templates/book/editions/language_filter.html:9 msgid "Any" msgstr "Qualsiasi" -#: bookwyrm/templates/book/editions/language_filter.html:5 +#: bookwyrm/templates/book/editions/language_filter.html:6 #: bookwyrm/templates/preferences/edit_user.html:95 msgid "Language:" msgstr "Lingua:" -#: bookwyrm/templates/book/editions/search_filter.html:5 +#: bookwyrm/templates/book/editions/search_filter.html:6 msgid "Search editions" msgstr "Ricerca edizioni" @@ -4108,7 +4116,7 @@ msgstr "Filtri applicati" msgid "Clear filters" msgstr "Rimuovi filtri" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 msgid "Apply filters" msgstr "Applica filtri" diff --git a/locale/lt_LT/LC_MESSAGES/django.mo b/locale/lt_LT/LC_MESSAGES/django.mo index 7c4e54132e96414871daace696db775dd917cbca..d9043ac25c59ddef4aa5af7a9d4f26cf1566258c 100644 GIT binary patch delta 24613 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 delta 21095 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 diff --git a/locale/lt_LT/LC_MESSAGES/django.po b/locale/lt_LT/LC_MESSAGES/django.po index b9e24e72b..9c343f3a6 100644 --- a/locale/lt_LT/LC_MESSAGES/django.po +++ b/locale/lt_LT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 18:17+0000\n" -"PO-Revision-Date: 2022-01-31 15:31\n" +"POT-Creation-Date: 2022-02-02 20:09+0000\n" +"PO-Revision-Date: 2022-02-04 21:00\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Lithuanian\n" "Language: lt\n" @@ -17,62 +17,70 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:365 +#: bookwyrm/forms.py:239 +msgid "Domain is blocked. Don't try this url again." +msgstr "" + +#: bookwyrm/forms.py:241 +msgid "Domain already pending. Please try later." +msgstr "" + +#: bookwyrm/forms.py:378 msgid "A user with this email already exists." msgstr "Vartotojas su šiuo el. pašto adresu jau yra." -#: bookwyrm/forms.py:379 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Diena" -#: bookwyrm/forms.py:380 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Savaitė" -#: bookwyrm/forms.py:381 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Mėnuo" -#: bookwyrm/forms.py:382 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "Galiojimas nesibaigia" -#: bookwyrm/forms.py:386 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} naudoja" -#: bookwyrm/forms.py:387 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Neribota" -#: bookwyrm/forms.py:489 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Kaip pridėta į sąrašą" -#: bookwyrm/forms.py:490 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Knygos antraštė" -#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Įvertinimas" -#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Rūšiuoti pagal" -#: bookwyrm/forms.py:497 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Didėjančia tvarka" -#: bookwyrm/forms.py:498 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Mažėjančia tvarka" -#: bookwyrm/forms.py:511 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." msgstr "Skaitymo pabaigos data negali būti prieš skaitymo pradžios datą." @@ -140,26 +148,26 @@ msgstr "Susijungę" msgid "Blocked" msgstr "Užblokuoti" -#: bookwyrm/models/fields.py:29 +#: bookwyrm/models/fields.py:27 #, python-format msgid "%(value)s is not a valid remote_id" msgstr "%(value)s yra negaliojantis remote_id" -#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 +#: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45 #, python-format msgid "%(value)s is not a valid username" msgstr "%(value)s yra negaliojantis naudotojo vardas" -#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "naudotojo vardas" -#: bookwyrm/models/fields.py:188 +#: bookwyrm/models/fields.py:186 msgid "A user with that username already exists." msgstr "Toks naudotojo vardas jau egzistuoja." -#: bookwyrm/models/fields.py:207 +#: bookwyrm/models/fields.py:205 #: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy_select.html:11 @@ -167,7 +175,7 @@ msgstr "Toks naudotojo vardas jau egzistuoja." msgid "Public" msgstr "Viešas" -#: bookwyrm/models/fields.py:208 +#: bookwyrm/models/fields.py:206 #: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy_select.html:14 @@ -175,14 +183,14 @@ msgstr "Viešas" msgid "Unlisted" msgstr "Slaptas" -#: bookwyrm/models/fields.py:209 +#: bookwyrm/models/fields.py:207 #: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/layout.html:11 msgid "Followers" msgstr "Sekėjai" -#: bookwyrm/models/fields.py:210 +#: bookwyrm/models/fields.py:208 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 @@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Europos portugalų)" #: bookwyrm/settings.py:258 -msgid "Swedish (Svenska)" -msgstr "Švedų (Swedish)" +msgid "Svenska (Swedish)" +msgstr "Svenska (Švedų)" #: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" @@ -347,7 +355,7 @@ msgstr "%(title)s labiausiai kontroversi #: bookwyrm/templates/about/about.html:89 msgid "Track your reading, talk about books, write reviews, and discover what to read next. Always ad-free, anti-corporate, and community-oriented, BookWyrm is human-scale software, designed to stay small and personal. If you have feature requests, bug reports, or grand dreams, reach out and make yourself heard." -msgstr "" +msgstr "Sekite savo skaitymus, kalbėkite apie knygas, rašykite atsiliepimus ir atraskite, ką dar perskaityti. „BookWyrm“ – tai programinė įranga, kurioje nėra reklamų, biurokratijos. Tai bendruomenei orientuota, nedidelė ir asmeninė įranga, kurią lengva plėsti. Jei norite papildomų funkcijų, įgyvendinti savo svajones ar tiesiog pranešti apie klaidą, susisiekite ir jus išgirsime." #: bookwyrm/templates/about/about.html:96 msgid "Meet your admins" @@ -356,7 +364,7 @@ msgstr "Šio serverio administratoriai" #: bookwyrm/templates/about/about.html:99 #, python-format msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior." -msgstr "" +msgstr "Svetainės %(site_name)s moderatoriai ir administratoriai nuolat atnaujina puslapį, laikosi elgsenos susitarimo ir atsako, kai naudotojai praneša apie brukalą ir blogą elgesį." #: bookwyrm/templates/about/about.html:113 msgid "Moderator" @@ -369,7 +377,7 @@ msgstr "Administravimas" #: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 -#: bookwyrm/templates/snippets/user_options.html:13 +#: bookwyrm/templates/snippets/user_options.html:14 msgid "Send direct message" msgstr "Siųsti asmeninę žinutę" @@ -1027,7 +1035,7 @@ msgid "Physical Properties" msgstr "Fizinės savybės" #: bookwyrm/templates/book/edit/edit_book_form.html:199 -#: bookwyrm/templates/book/editions/format_filter.html:5 +#: bookwyrm/templates/book/editions/format_filter.html:6 msgid "Format:" msgstr "Formatas:" @@ -1065,17 +1073,17 @@ msgstr "Knygos %(book_title)s leidimai" msgid "Editions of \"%(work_title)s\"" msgstr "\"%(work_title)s\" leidimai" -#: bookwyrm/templates/book/editions/format_filter.html:8 -#: bookwyrm/templates/book/editions/language_filter.html:8 +#: bookwyrm/templates/book/editions/format_filter.html:9 +#: bookwyrm/templates/book/editions/language_filter.html:9 msgid "Any" msgstr "Bet kas" -#: bookwyrm/templates/book/editions/language_filter.html:5 +#: bookwyrm/templates/book/editions/language_filter.html:6 #: bookwyrm/templates/preferences/edit_user.html:95 msgid "Language:" msgstr "Kalba:" -#: bookwyrm/templates/book/editions/search_filter.html:5 +#: bookwyrm/templates/book/editions/search_filter.html:6 msgid "Search editions" msgstr "Paieškos leidimai" @@ -2919,7 +2927,7 @@ msgstr "Trinate tai, kas perskaityta ir %(count)s susietų progreso naujinių." #: bookwyrm/templates/readthrough/readthrough_modal.html:8 #, python-format msgid "Update read dates for \"%(title)s\"" -msgstr "" +msgstr "Atnaujinkite knygos „%(title)s“ skaitymo datas" #: bookwyrm/templates/readthrough/readthrough_form.html:10 #: bookwyrm/templates/readthrough/readthrough_modal.html:31 @@ -2970,7 +2978,7 @@ msgstr "Ištrinti šias skaitymo datas" #: bookwyrm/templates/readthrough/readthrough_modal.html:12 #, python-format msgid "Add read dates for \"%(title)s\"" -msgstr "" +msgstr "Pridėkite knygos „%(title)s“ skaitymo datas" #: bookwyrm/templates/report.html:5 #: bookwyrm/templates/snippets/report_button.html:13 @@ -3154,10 +3162,10 @@ msgstr[3] "%(display_count)s atvirų ataskaitų" #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%(display_count)s domeną reikia peržiūrėti" +msgstr[1] "%(display_count)s domenus reikia peržiūrėti" +msgstr[2] "%(display_count)s domenus reikia peržiūrėti" +msgstr[3] "%(display_count)s domenus reikia peržiūrėti" #: bookwyrm/templates/settings/dashboard/dashboard.html:65 #, python-format @@ -3569,11 +3577,11 @@ msgstr "Puslapio nustatymai" #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5 #, python-format msgid "Set display name for %(url)s" -msgstr "" +msgstr "Nurodykite pavadinimą puslapiui %(url)s" #: bookwyrm/templates/settings/link_domains/link_domains.html:11 msgid "Link domains must be approved before they are shown on book pages. Please make sure that the domains are not hosting spam, malicious code, or deceptive links before approving." -msgstr "" +msgstr "Prieš parodant susietus domenus knygų puslapiuose, juos reikia patvirtinti. Užtikrinkite, kad domenai nenukreipia į brukalo ar kenkėjiškas svetaines ir tai nėra apgaulingos nuorodos." #: bookwyrm/templates/settings/link_domains/link_domains.html:45 msgid "Set display name" @@ -3597,7 +3605,7 @@ msgstr "Šiuo metu užblokuotų domenų nėra" #: bookwyrm/templates/settings/link_domains/link_table.html:39 msgid "No links available for this domain." -msgstr "" +msgstr "Šiam domenui nuorodų nėra." #: bookwyrm/templates/settings/reports/report.html:11 msgid "Back to reports" @@ -3605,11 +3613,11 @@ msgstr "Atgal į pranešimus" #: bookwyrm/templates/settings/reports/report.html:23 msgid "Message reporter" -msgstr "" +msgstr "Žinučių pranešėjas" #: bookwyrm/templates/settings/reports/report.html:27 msgid "Update on your report:" -msgstr "" +msgstr "Naujausia informacija apie jūsų pranešimą:" #: bookwyrm/templates/settings/reports/report.html:35 msgid "Reported statuses" @@ -3635,17 +3643,17 @@ msgstr "Komentuoti" #: bookwyrm/templates/settings/reports/report_header.html:6 #, python-format msgid "Report #%(report_id)s: Status posted by @%(username)s" -msgstr "" +msgstr "Pranešimas #%(report_id)s: publikavo @%(username)s" #: bookwyrm/templates/settings/reports/report_header.html:12 #, python-format msgid "Report #%(report_id)s: Link added by @%(username)s" -msgstr "" +msgstr "Pranešimas #%(report_id)s: nuorodą pridėjo @%(username)s" #: bookwyrm/templates/settings/reports/report_header.html:18 #, python-format msgid "Report #%(report_id)s: User @%(username)s" -msgstr "" +msgstr "Pranešimas #%(report_id)s: naudotojas @%(username)s" #: bookwyrm/templates/settings/reports/report_links_table.html:17 msgid "Block domain" @@ -3658,7 +3666,7 @@ msgstr "Užrašų nepateikta" #: bookwyrm/templates/settings/reports/report_preview.html:24 #, python-format msgid "Reported by @%(username)s" -msgstr "" +msgstr "Pranešė @%(username)s" #: bookwyrm/templates/settings/reports/report_preview.html:34 msgid "Re-open" @@ -4141,7 +4149,7 @@ msgstr "Taikyti filtrai" msgid "Clear filters" msgstr "Valyti filtrus" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 msgid "Apply filters" msgstr "Taikyti filtrus" @@ -4218,15 +4226,15 @@ msgstr[3] "įvertinta %(title)s: %(display_rat #, python-format msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Knygos „%(book_title)s“ apžvalga (%(display_rating)s žvaigždutė): %(review_title)s" +msgstr[1] "Knygos „%(book_title)s“ apžvalga (%(display_rating)s žvaigždutės): %(review_title)s" +msgstr[2] "Knygos „%(book_title)s“ apžvalga (%(display_rating)s žvaigždučių): %(review_title)s" +msgstr[3] "Knygos „%(book_title)s“ apžvalga (%(display_rating)s žvaigždutės): %(review_title)s" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format msgid "Review of \"%(book_title)s\": %(review_title)s" -msgstr "" +msgstr "Knygos „%(book_title)s“ apžvalga: %(review_title)s" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4335,12 +4343,12 @@ msgstr "Registruotis" #: bookwyrm/templates/snippets/report_modal.html:8 #, python-format msgid "Report @%(username)s's status" -msgstr "" +msgstr "Pranešti apie @%(username)s būseną" #: bookwyrm/templates/snippets/report_modal.html:10 #, python-format msgid "Report %(domain)s link" -msgstr "" +msgstr "Pranešti apie %(domain)s nuorodą" #: bookwyrm/templates/snippets/report_modal.html:12 #, python-format @@ -4354,7 +4362,7 @@ msgstr "Šis pranešimas bus nusiųstas peržiūrėti %(site_name)s puslapio mod #: bookwyrm/templates/snippets/report_modal.html:36 msgid "Links from this domain will be removed until your report has been reviewed." -msgstr "" +msgstr "Kol neperžiūrėsime jūsų pranešimo, nuoroda iš šio domeno bus pašalinta." #: bookwyrm/templates/snippets/report_modal.html:41 msgid "More info about this report:" @@ -4443,7 +4451,7 @@ msgstr "atsakė į %(username)s %(book)s by %(author_name)s" -msgstr "" +msgstr "pacitavo %(author_name)s knygą %(book)s" #: bookwyrm/templates/snippets/status/headers/quotation.html:15 #, python-format @@ -4458,7 +4466,7 @@ msgstr "įvertino %(book)s:" #: bookwyrm/templates/snippets/status/headers/read.html:10 #, python-format msgid "finished reading %(book)s by %(author_name)s" -msgstr "pabaigė skaityti %(author_name)s autoriaus knygą %(book)s" +msgstr "pabaigė skaityti %(author_name)s knygą %(book)s" #: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format @@ -4468,7 +4476,7 @@ msgstr "baigė skaityti %(book)s" #: bookwyrm/templates/snippets/status/headers/reading.html:10 #, python-format msgid "started reading %(book)s by %(author_name)s" -msgstr "pradėjo skaityti %(author_name)s autoriaus knygą %(book)s" +msgstr "pradėjo skaityti %(author_name)s knygą %(book)s" #: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format @@ -4488,12 +4496,12 @@ msgstr "apžvelgė %(book)s" #: bookwyrm/templates/snippets/status/headers/to_read.html:10 #, python-format msgid "wants to read %(book)s by %(author_name)s" -msgstr "" +msgstr "nori perskaityti %(author_name)s knygą %(book)s" #: bookwyrm/templates/snippets/status/headers/to_read.html:17 #, python-format msgid "wants to read %(book)s" -msgstr "" +msgstr "nori perskaityti %(book)s" #: bookwyrm/templates/snippets/status/layout.html:24 #: bookwyrm/templates/snippets/status/status_options.html:17 diff --git a/locale/no_NO/LC_MESSAGES/django.mo b/locale/no_NO/LC_MESSAGES/django.mo index 3d3d4263ff97c37febc6023a770f772e58b6aace..a272adbcbec341767c6ba1eb91125080095dd378 100644 GIT binary patch delta 84 zcmZ4WiDlI%mJKiL7+E*JvyGPE)<*!=3Cc`zqP9;|S=mMEhN05E7BSpWb4 delta 84 zcmZ4WiDlI%mJKiL81**4v\n" "Language-Team: Norwegian\n" "Language: no\n" @@ -17,62 +17,70 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:365 +#: bookwyrm/forms.py:239 +msgid "Domain is blocked. Don't try this url again." +msgstr "" + +#: bookwyrm/forms.py:241 +msgid "Domain already pending. Please try later." +msgstr "" + +#: bookwyrm/forms.py:378 msgid "A user with this email already exists." msgstr "Den e-postadressen er allerede registrert." -#: bookwyrm/forms.py:379 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Én dag" -#: bookwyrm/forms.py:380 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Én uke" -#: bookwyrm/forms.py:381 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Én måned" -#: bookwyrm/forms.py:382 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "Uendelig" -#: bookwyrm/forms.py:386 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} ganger" -#: bookwyrm/forms.py:387 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Ubegrenset" -#: bookwyrm/forms.py:489 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Liste rekkefølge" -#: bookwyrm/forms.py:490 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Boktittel" -#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Vurdering" -#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Sorter etter" -#: bookwyrm/forms.py:497 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Stigende" -#: bookwyrm/forms.py:498 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Synkende" -#: bookwyrm/forms.py:511 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." msgstr "Sluttdato kan ikke være før startdato." @@ -140,26 +148,26 @@ msgstr "Føderert" msgid "Blocked" msgstr "Blokkert" -#: bookwyrm/models/fields.py:29 +#: bookwyrm/models/fields.py:27 #, python-format msgid "%(value)s is not a valid remote_id" msgstr "%(value)s er en ugyldig remote_id" -#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 +#: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45 #, python-format msgid "%(value)s is not a valid username" msgstr "%(value)s er et ugyldig brukernavn" -#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "brukernavn" -#: bookwyrm/models/fields.py:188 +#: bookwyrm/models/fields.py:186 msgid "A user with that username already exists." msgstr "En bruker med det brukernavnet eksisterer allerede." -#: bookwyrm/models/fields.py:207 +#: bookwyrm/models/fields.py:205 #: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy_select.html:11 @@ -167,7 +175,7 @@ msgstr "En bruker med det brukernavnet eksisterer allerede." msgid "Public" msgstr "Offentlig" -#: bookwyrm/models/fields.py:208 +#: bookwyrm/models/fields.py:206 #: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy_select.html:14 @@ -175,14 +183,14 @@ msgstr "Offentlig" msgid "Unlisted" msgstr "Uoppført" -#: bookwyrm/models/fields.py:209 +#: bookwyrm/models/fields.py:207 #: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/layout.html:11 msgid "Followers" msgstr "Følgere" -#: bookwyrm/models/fields.py:210 +#: bookwyrm/models/fields.py:208 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 @@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Europeisk Portugisisk)" #: bookwyrm/settings.py:258 -msgid "Swedish (Svenska)" -msgstr "Svensk (Svenska)" +msgid "Svenska (Swedish)" +msgstr "Svenska (Svensk)" #: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" @@ -369,7 +377,7 @@ msgstr "Admin" #: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 -#: bookwyrm/templates/snippets/user_options.html:13 +#: bookwyrm/templates/snippets/user_options.html:14 msgid "Send direct message" msgstr "Send direktemelding" @@ -1017,7 +1025,7 @@ msgid "Physical Properties" msgstr "Fysiske egenskaper" #: bookwyrm/templates/book/edit/edit_book_form.html:199 -#: bookwyrm/templates/book/editions/format_filter.html:5 +#: bookwyrm/templates/book/editions/format_filter.html:6 msgid "Format:" msgstr "Format:" @@ -1055,17 +1063,17 @@ msgstr "Utgaver av %(book_title)s" msgid "Editions of \"%(work_title)s\"" msgstr "Utgaver av \"%(work_title)s\"" -#: bookwyrm/templates/book/editions/format_filter.html:8 -#: bookwyrm/templates/book/editions/language_filter.html:8 +#: bookwyrm/templates/book/editions/format_filter.html:9 +#: bookwyrm/templates/book/editions/language_filter.html:9 msgid "Any" msgstr "Alle" -#: bookwyrm/templates/book/editions/language_filter.html:5 +#: bookwyrm/templates/book/editions/language_filter.html:6 #: bookwyrm/templates/preferences/edit_user.html:95 msgid "Language:" msgstr "Språk:" -#: bookwyrm/templates/book/editions/search_filter.html:5 +#: bookwyrm/templates/book/editions/search_filter.html:6 msgid "Search editions" msgstr "Søk etter utgaver" @@ -4108,7 +4116,7 @@ msgstr "Filtrert visning" msgid "Clear filters" msgstr "Tøm filtre" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 msgid "Apply filters" msgstr "Bruk filtre" diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index 2522c804acd3e1e728d920205c9a130983b537db..2a69662f733ae032362577fccc4a60dc62de2325 100644 GIT binary patch delta 21625 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 delta 21380 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 D>;?<= diff --git a/locale/pt_BR/LC_MESSAGES/django.po b/locale/pt_BR/LC_MESSAGES/django.po index 4845ae1bc..f1e78bae9 100644 --- a/locale/pt_BR/LC_MESSAGES/django.po +++ b/locale/pt_BR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 18:17+0000\n" -"PO-Revision-Date: 2022-01-30 19:38\n" +"POT-Creation-Date: 2022-02-02 20:09+0000\n" +"PO-Revision-Date: 2022-02-04 22:13\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt\n" @@ -17,62 +17,70 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:365 +#: bookwyrm/forms.py:239 +msgid "Domain is blocked. Don't try this url again." +msgstr "Domínio bloqueado. Não tente adicionar este endereço novamente." + +#: bookwyrm/forms.py:241 +msgid "Domain already pending. Please try later." +msgstr "Domínio já pendente. Por favor, tente novamente mais tarde." + +#: bookwyrm/forms.py:378 msgid "A user with this email already exists." msgstr "Já existe um usuário com este endereço de e-mail." -#: bookwyrm/forms.py:379 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Um dia" -#: bookwyrm/forms.py:380 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Uma semana" -#: bookwyrm/forms.py:381 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Um mês" -#: bookwyrm/forms.py:382 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "Não expira" -#: bookwyrm/forms.py:386 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} usos" -#: bookwyrm/forms.py:387 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Ilimitado" -#: bookwyrm/forms.py:489 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Ordem de inserção" -#: bookwyrm/forms.py:490 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Título do livro" -#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Avaliação" -#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Organizar por" -#: bookwyrm/forms.py:497 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Crescente" -#: bookwyrm/forms.py:498 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Decrescente" -#: bookwyrm/forms.py:511 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." msgstr "A data de término da leitura não pode ser anterior a de início." @@ -140,26 +148,26 @@ msgstr "Federado" msgid "Blocked" msgstr "Bloqueado" -#: bookwyrm/models/fields.py:29 +#: bookwyrm/models/fields.py:27 #, python-format msgid "%(value)s is not a valid remote_id" msgstr "%(value)s não é um remote_id válido" -#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 +#: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45 #, python-format msgid "%(value)s is not a valid username" msgstr "%(value)s não é um nome de usuário válido" -#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "nome de usuário" -#: bookwyrm/models/fields.py:188 +#: bookwyrm/models/fields.py:186 msgid "A user with that username already exists." msgstr "Já existe um usuário com este nome." -#: bookwyrm/models/fields.py:207 +#: bookwyrm/models/fields.py:205 #: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy_select.html:11 @@ -167,7 +175,7 @@ msgstr "Já existe um usuário com este nome." msgid "Public" msgstr "Público" -#: bookwyrm/models/fields.py:208 +#: bookwyrm/models/fields.py:206 #: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy_select.html:14 @@ -175,14 +183,14 @@ msgstr "Público" msgid "Unlisted" msgstr "Não listado" -#: bookwyrm/models/fields.py:209 +#: bookwyrm/models/fields.py:207 #: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/layout.html:11 msgid "Followers" msgstr "Seguidores" -#: bookwyrm/models/fields.py:210 +#: bookwyrm/models/fields.py:208 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 @@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Português Europeu)" #: bookwyrm/settings.py:258 -msgid "Swedish (Svenska)" -msgstr "Sueco (Svenska)" +msgid "Svenska (Swedish)" +msgstr "Svenska (Sueco)" #: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" @@ -369,7 +377,7 @@ msgstr "Admin" #: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 -#: bookwyrm/templates/snippets/user_options.html:13 +#: bookwyrm/templates/snippets/user_options.html:14 msgid "Send direct message" msgstr "Enviar mensagem direta" @@ -1017,7 +1025,7 @@ msgid "Physical Properties" msgstr "Propriedades físicas" #: bookwyrm/templates/book/edit/edit_book_form.html:199 -#: bookwyrm/templates/book/editions/format_filter.html:5 +#: bookwyrm/templates/book/editions/format_filter.html:6 msgid "Format:" msgstr "Formato:" @@ -1055,17 +1063,17 @@ msgstr "Edições de %(book_title)s" msgid "Editions of \"%(work_title)s\"" msgstr "Edições de \"%(work_title)s\"" -#: bookwyrm/templates/book/editions/format_filter.html:8 -#: bookwyrm/templates/book/editions/language_filter.html:8 +#: bookwyrm/templates/book/editions/format_filter.html:9 +#: bookwyrm/templates/book/editions/language_filter.html:9 msgid "Any" msgstr "Qualquer um" -#: bookwyrm/templates/book/editions/language_filter.html:5 +#: bookwyrm/templates/book/editions/language_filter.html:6 #: bookwyrm/templates/preferences/edit_user.html:95 msgid "Language:" msgstr "Idioma:" -#: bookwyrm/templates/book/editions/search_filter.html:5 +#: bookwyrm/templates/book/editions/search_filter.html:6 msgid "Search editions" msgstr "Procurar edições" @@ -4108,7 +4116,7 @@ msgstr "Filtros aplicados" msgid "Clear filters" msgstr "Limpar filtros" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 msgid "Apply filters" msgstr "Aplicar filtros" diff --git a/locale/pt_PT/LC_MESSAGES/django.mo b/locale/pt_PT/LC_MESSAGES/django.mo index 1ffe4140dddda96744e2702b0735223738c058fe..9dec68d2cb719db245ec8a10d19856bdd58eac14 100644 GIT binary patch delta 25 hcmX@HljX!tmJQ}>xQuiSOcaa^tqcq{JFaOj004fH2_FCe delta 25 hcmX@HljX!tmJQ}>xD0iT4HOJ5t&A-;JFaOj004gd2`>Nu diff --git a/locale/pt_PT/LC_MESSAGES/django.po b/locale/pt_PT/LC_MESSAGES/django.po index b241c4d51..4c229390b 100644 --- a/locale/pt_PT/LC_MESSAGES/django.po +++ b/locale/pt_PT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 18:17+0000\n" -"PO-Revision-Date: 2022-01-30 19:38\n" +"POT-Creation-Date: 2022-02-02 20:09+0000\n" +"PO-Revision-Date: 2022-02-04 21:00\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Portuguese\n" "Language: pt\n" @@ -17,62 +17,70 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:365 +#: bookwyrm/forms.py:239 +msgid "Domain is blocked. Don't try this url again." +msgstr "" + +#: bookwyrm/forms.py:241 +msgid "Domain already pending. Please try later." +msgstr "" + +#: bookwyrm/forms.py:378 msgid "A user with this email already exists." msgstr "Já existe um utilizador com este E-Mail." -#: bookwyrm/forms.py:379 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Um Dia" -#: bookwyrm/forms.py:380 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Uma Semana" -#: bookwyrm/forms.py:381 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Um Mês" -#: bookwyrm/forms.py:382 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "Não Expira" -#: bookwyrm/forms.py:386 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} utilizações" -#: bookwyrm/forms.py:387 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Ilimitado" -#: bookwyrm/forms.py:489 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Ordem da Lista" -#: bookwyrm/forms.py:490 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Título do livro" -#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Classificação" -#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Ordenar Por" -#: bookwyrm/forms.py:497 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Ascendente" -#: bookwyrm/forms.py:498 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Descendente" -#: bookwyrm/forms.py:511 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." msgstr "" @@ -140,26 +148,26 @@ msgstr "Federado" msgid "Blocked" msgstr "Bloqueado" -#: bookwyrm/models/fields.py:29 +#: bookwyrm/models/fields.py:27 #, python-format msgid "%(value)s is not a valid remote_id" msgstr "%(value)s não é um remote_id válido" -#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 +#: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45 #, python-format msgid "%(value)s is not a valid username" msgstr "%(value)s não é um nome de utilizador válido" -#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "nome de utilizador" -#: bookwyrm/models/fields.py:188 +#: bookwyrm/models/fields.py:186 msgid "A user with that username already exists." msgstr "Um utilizador com o mesmo nome de utilizador já existe." -#: bookwyrm/models/fields.py:207 +#: bookwyrm/models/fields.py:205 #: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy_select.html:11 @@ -167,7 +175,7 @@ msgstr "Um utilizador com o mesmo nome de utilizador já existe." msgid "Public" msgstr "Público" -#: bookwyrm/models/fields.py:208 +#: bookwyrm/models/fields.py:206 #: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy_select.html:14 @@ -175,14 +183,14 @@ msgstr "Público" msgid "Unlisted" msgstr "Não listado" -#: bookwyrm/models/fields.py:209 +#: bookwyrm/models/fields.py:207 #: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/layout.html:11 msgid "Followers" msgstr "Seguidores" -#: bookwyrm/models/fields.py:210 +#: bookwyrm/models/fields.py:208 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 @@ -283,7 +291,7 @@ msgid "Português Europeu (European Portuguese)" msgstr "Português (Português Europeu)" #: bookwyrm/settings.py:258 -msgid "Swedish (Svenska)" +msgid "Svenska (Swedish)" msgstr "" #: bookwyrm/settings.py:259 @@ -369,7 +377,7 @@ msgstr "Admin" #: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 -#: bookwyrm/templates/snippets/user_options.html:13 +#: bookwyrm/templates/snippets/user_options.html:14 msgid "Send direct message" msgstr "Enviar mensagem direta" @@ -1017,7 +1025,7 @@ msgid "Physical Properties" msgstr "Propriedades físicas" #: bookwyrm/templates/book/edit/edit_book_form.html:199 -#: bookwyrm/templates/book/editions/format_filter.html:5 +#: bookwyrm/templates/book/editions/format_filter.html:6 msgid "Format:" msgstr "Formato:" @@ -1055,17 +1063,17 @@ msgstr "Edições de %(book_title)s" msgid "Editions of \"%(work_title)s\"" msgstr "Edições de \"%(work_title)s\"" -#: bookwyrm/templates/book/editions/format_filter.html:8 -#: bookwyrm/templates/book/editions/language_filter.html:8 +#: bookwyrm/templates/book/editions/format_filter.html:9 +#: bookwyrm/templates/book/editions/language_filter.html:9 msgid "Any" msgstr "Qualquer" -#: bookwyrm/templates/book/editions/language_filter.html:5 +#: bookwyrm/templates/book/editions/language_filter.html:6 #: bookwyrm/templates/preferences/edit_user.html:95 msgid "Language:" msgstr "Idioma:" -#: bookwyrm/templates/book/editions/search_filter.html:5 +#: bookwyrm/templates/book/editions/search_filter.html:6 msgid "Search editions" msgstr "Pesquisar edições" @@ -4106,7 +4114,7 @@ msgstr "Filtros aplicados" msgid "Clear filters" msgstr "Limpar filtros" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 msgid "Apply filters" msgstr "Aplicar filtros" diff --git a/locale/sv_SE/LC_MESSAGES/django.mo b/locale/sv_SE/LC_MESSAGES/django.mo index 87a0038a5e7551fdf759fb77a75a0c546b31a921..8f66047d352cc3144eb4fabe960498806a59e1c0 100644 GIT binary patch delta 22045 zcmccmo#jCTYyCYTmZ=O33=FrK85m?37#P0DF)*mJGBBL61&J~+WCSrV7%(s}WCk%X zXfZG_%nD*)5M^LsI2y#jAPdqL#K7Rqz`*b`h=IY0fq}s_n1R8Dfq|hTn1MkLq%N3& zAq-@0Fatw80|SG12m`|*1_p-JAq)(!7#Qjq@l_3&7rJ#4s>0IL9zB@YgdiFf52+U@&1|VAv4Dz`(`8!0;3# z!N9=qA%=lL6%-4x3=Dh>3=C?qkdQKsWnjo+U|i4YfVO@zduP!a<}GAPKC7#I>67#Nl&F)-*dFfgzuGcX7;Fff=VGcc4gFfh0$ zGcf2dFfi;*hIr^zGQ^?sDUc}WN?~Ad0mXd^149+agDDL4U<5!;dpU%J_#K6FCH60RlFVYzpco-NMK10!G z;C2SY=WjC@7z`O07`|mdLPR4IVxE2`#N+i2nUJ9K$b?wvmkDuUbSA`rtW1cHi!&iU zDTmUHnGhd!L-ozhWMI%|U|?9039;}-CL}R(WkFKCZ5AY?g0mn|o0bJm6ZH&pvKSc5 zK#3*`;(#w%kPu+ZhB$;j8{z=DYzBsG1_lPDY)Cfi%Z6C6AseFpaW=$9AG0A2|C!Ce z04mv-au^sEF)%R9$bopkIu{aBuDKw7Jp)5vE+lB8b0IEF%7s{5nhS}NmRtq~2?hp+ z{#=L!D{>(gZh)%a2Nl1V%fP_Gz`$@b7vkf4xlj*5^)u!{LQE3#$J`0mMOH3m^{VD1?|VS;$Zi&ZqK)5QEeT zAqvb2AwG96gv6ykl#VC_#Tf%bB2+%R5aQtCLWqT}P{d|@F2gA@Y;!{$PW1I|I| zhlLCb{h&&z5Sss6iXaZ?DS|j)P7%c7wNQFn5yV0Jiy$F#9IF0G5v0<2QUvi4OEIJX z;wpxylPiWeOuHBo#gbRSL175~{ups(%txd^uGAmQrvnThDN)6q3De zl|tg^b1B5-Y-NzzPNIx~Ar(}QmqC0ms|;en(lUroHlhe37#J9~*FhY@P!EYh_Ie0k9!jg#gQBjUfkC$(lIZN}Ar^brLmHux^^lM$sE0VP zsUA`w_0>b-ZdEWE&GrU}xn~;~77 zkp97}Mo3$6Un3+fJZofNs0THVe>OtmgsBN)5j&I?ZGu>!+ywE7Q4_=h>n4apyqh3t zCA0|=LJ3U}pXET+)ip6N_%Sdr^ff`U;a#YCf1&Dmni=ZBty_s^NYH3DLkzHQhD1SN zGsIyT%@7N6q5R5bNR-tzGcc@YU|{HOhIB%$TOci+_7;f49=1R{@TLXgvEMC_w8Gg6 zN$mWs^^l-aZiV>Bq7~AYb82N^*Z?YWTOk_6+8_>)X@eN3(FO@}^EQY>?b;xHzR)&E zke9SU^wmK1H9`4(Z4mpWv_U+&vc3%x$Gh7gO{g<%5TCKML+W|Kc8Gxv?GOzf?T|7& zsvVLTOWPqu^Tc*Y6s>EAn76$h(#$>q75@hnXYYWhljwkiP`zRY#OFF4kVIhyr9C?! zE{*A6V8~=(U?_z0Z+Ac}{Lle$C~qf(mgw*{@1EnjwAW=B2 z3zF}5c0tU&2&JENF@U@2-@8D$qMm_4vK!(6+ipk?#=jfllX|FlCzPJu4M_uQyCHSK z&Thy+#jS2gRIv6y9IDs@G0&j~Vop#GG$eZpiNNmJw1?a_0b+k8ZqdF7#QCR3EI?NNS%_^3(2m{PyGFQohZp%-GYVIL%QTlGPF;0UF?`yd)a`ydXE?Smx7>^?|PxAj5dd|n?U z1U5nWN1*22=!1-e-0y=p@Mj-GJ%a`V1A|aM1A{gL1A}!x#KQD`h))XpAt6!*rJMU9 zmCS^GNRS@xhdAg)Kg8h=p!7?q_@{nI8v4}_2?@>#kZ!x=1c*NS3DC0JeFDS){|OM6 zM@)b?Bx?dBBuXYg;=XzUBr&y5fYj%+CP3nT{{)BywriqXcX`cug^_nsf5*0_G;+LWN z9!!Kd=sncD|4@1MNsuTInFP^SuQv(eA{(fHGn5}V31UD5l%E0R=TCwJef=azh)jX< z7fgcqa4S^(?n#iSIy4DV5Ph8l8OqU~49VW1lfmZHGvrK$j_+Uzevs z%wd=Yp*f~O1~3GsK}JSJra_`Sa2f-HFev|rO@mmFH4Wmzf@u&7YNkP=pm`c31SU^| z6g*3z{A1G~4!ki99Fz=Cq56MKgN&52O^3)^O^5i{eL5u0!=^*BY07j4hI-JTQN?tK zi&~~bvPUOW!}{qEAMAq~bZk1rCzq!)Fyt~YFkGJwDNtNzK#Jh78IX`GhSD`NARcI) z!2r(YQ)fV;cHaz$hu_bDw*SA*fMlz`Gav>E%!I_DB9zvi3Gunw zq=~a2mC4>&5Q87gf;jBOEQmut&4L)nJR9Ou(b!BJuXG7wACX~NmHl#@1FdLGJPe3)ipAGTJcc?msIS_{k%z=n2&ViVtH3#BQ zL#Vj*97rN}nFGlsX>%aCr@m$m#3j?`Kx(u3b097}1vTKt9Ei^z&4DDQPf!E@&w(_x zIOamsC(VTfb-`SSy85}0km;EV36XhoAr9O+7h=!8x#04lp5f(Ohy^n97#J)W7#MWs zF)&jt@-5~=@^{gENc}%&J|tvLLB$`K08+ku zS^&`}u#kaa69WT-#zIgUs%K!hy%3W4J}iWcf-^6I#ChBzNUCmJ1W6n77J)P{Fg#oY ziPLY3AgP#fF(k;@7ehjlZ!tt%Y%wIxWfn6qlrb_eXe@?!bp8@ZZd<>Efgu!>|FgIFlI3=-Fp%NQ7rGB7ZxFN1`{+hq(4(F_a> zKbAq_K4dvWUE*>GKOaihEQi#VolySLl zV*bgM5D#6cUkM4?TPq>;@}rdym;G4@8KD$f#Q>^D7#6L9IM8x6B&6I|L*hJeHN>FA z)e!mg)sWHj($$dJu{En9A@z4Pq#9OT1Bu$`H4F^985kJq+txs)#hlhMFvNjIxz|Ek zvG3M`^CtuEItB(u(B#rO28JNeblW;eHoUqHQo=E>hZHQz>mhSGuInKs=YjQ*vi{9_ zh=*i1Kpbqm0a8>uZvZ>6o*{DsB;W4Z00~;wjgV?oaw8x?y9uH%XA{IB6`LRq@7n}2zn+0%-6qKV-tJA1#3is9 zVzBsTNXT?;h6LI5&5)pG+5(9(jx7ufz6=Zu0$U)x+&CzI?G{ML{ocaBz{J47ptlt= zBVxFffgy>3fgyP-BuyRL%D})1%KtaFLW1W0R!HJ`zZDW!KejS3q=5|B268C_!_;k% zYIM;yh=r%OK|)SyI|G9=sI$5q;-HmK{`c*WsI%SyF}HRHq?g>b0}>*ab}%s1gQi69 z?SS}HdnZIe#ZE}v9oY#9nXgdVYZqh!asDm_@HqeHT@at>?1mJ<_PZfLp8)0O?S_O{ z|89r_rtXG>+&rlGvfT{z;CBC--H-{#8@nNi$8-+^!z2a?lkcr6reULHaCHoi{Y8e<9xb{QL?bu%riK~hG zAv2supb{DfAU-oZ07>002OtGV+5rZJFN_Qfod+NetvdvXl2wNwiTCm$h(n$qg3NX^ z9)^tnB_4)E(ayt=O78DrNUz$w{s;p@1!&6T2m`}a1_lPHqYMncK~tkgAw}hzW01BS z$8m^5ZH_|POa023iohKk^?Dh#rYxwmE zh{NkyPC^om?ny|4p!y^OgC-*b!?cr-5IAs(f#DWt8vYcd`doJ!Qa&6z4YBCyX-G)e zo`Gbm%rlTmr}GTNf(2(F+4~0_3Fkoldj^J-^N^71IM2XP z$iTp``#fYeT=xQqU(diW=K{oHzKaYDpxN-Gi;!9F;};=`Qu7joZo34D)5n(}xx@J~ zBtMs2h9t)8mm%eZ*%h$Q7!t2AFqAMbFw|UuG(+V3dz<9R~Z--K>7dp zRR#uE1_p)~R~Z7U|Br$Hh23a~GdL0sEIoBbHr~WzvgBt?_!_Mmviy3Y}(m?zT z$Q;qM8<1>w@dl&-x_$!^QnzkE>W664F-mK(82=7n-C2GHzC?S10<)PwQ zHzA3};3mW&o;M-cE9NG|z!a$Zyql1cuJR@%Ev&u?NeicMLekEon~);;7t|ciTMYH! zH6AjzAZft(7Q_ONTafBB8cOHhf@H6HsQlzxkleBC79{Qu-GW$f2WrljTacj~&f5@u zmbW45d~ZVvsPx;A5G%b69jje)8)D&(+mHg~)NP1MFW!duDWWy+KzwX=2NLAIcOZ#4?hYi1XWfC60}t*%$`h6PyAYqd--RfQxeLj!Gwwo4 zu3dK_4tswW5;BbUAU+Ve2XTPXJxKYXeh)H!xZob72)}U;qF&`b#KGoJ+TlI}!x9Dt z2G9Ep42MDW|2wF}rUwuo?0x`=+Y=8UKD+P$lHcz_!B<`+56}*24@fqhMNEGlrg7`r8 z5yWD(N03Bk_6Sm+J3N9I81@L_U*B~bqNcnS%c?57X|Tc1K4&;wOCx!$!(0Xi zhAGb=78yN<1fk7yNYMH{hgh8W93r3d9O8ho=MWz?J%?C4@i{nd8J0hXcGF-Yg-D zK!Tk4EhHql-a^ckehXG`IN&9e{}W1cyn|RQ{tjY}#yf~QyLS)=`n`kbPXvqCGcXjqgT!saJ4lmh z_B)8hSKdLg%fojN2mF8QwPW=LLz@{&dAl&%{;)BCqAhp@~FOZGaX_6_3jb>AQk+Vzcr;WPsS!{Kj` z5a|C7p{IWbhg3bo{O^#s-ufM4(Yf!CxV--z5_j*vL&^u{9}o-Ve?Y{|e?ZiG|A1H& z^8*qhsXrh=U+@EBQT-2ygWG>Va?he4knDZz2PhZRGca8K0qJi4{Q*fN#y=qjdi{hL z5d0Go^wCf{?+!^9vGkpMEhg>|$VGVEPTo zW_y1_Ix13sAW>8M2jbw)KhW{N*?%BuVC5f(MH~J=g8Jwmh!5}nfwT`^{9#}?4_bo# z7vg}se<21v{tGeq>t9I7G5&+36|R4fX12;dhqTK#AucBnp`RLpm6u{~@W~{XfK^KK~(cobn%HPW^vKuA2QHl2&&7ht#HL z{zGcNSN|anP+_QN1P?$OGBAP{3cE2df|p?XGcbbJ?M5*$f)|meFffAGfYvZDf;%iz z85qG!s@E_uf>*;!Gctk~pBpkVf)}3$GD6HrWMl-d2hL$+1TR#sWMl*{cCUx3n+;-s zmeH?fWCX8-JjuuiUT%MZ5n>@D6T|{3CPwfob^|Cskcknz7(JbdkpZ+)x{nEB(Gey_ z@Dl8cOpM?q+W(;HbeI{ztLKB68Nti^+nFIAt6##*2woz&hnW$)e)l>vBX}JTI}0PY zXtrWu1P{x{urPv~YSUO4!K>L9u|OQShXoRXS6LXr3z1*3K+F+hg?Pk?m5~9oh`pE< z5;8Mc8No}jSF(abvYuf(DKWM~LC?Vsafk{#BZCmA{cpk!@rgS-#DWBNM)0!P zY<5QQkjgT4h>PE`LoEKo4zZY-1EQW6N=tAsf)}4Fb3n{9=U@cykO+W^=W#$h+Qb2} zn1Nv;2O|S$Q4+%v4o2|eur(ZzpuNb!2p$!C&B4e3+Cm}D39;CXlaT?mdfk^39CQq! zoDhR@I3a1Eo)eN*wsJCpSJj;6WCSnIzrzU$*>{`}2mgkOvvDyp)Pq*9OK?F9(B^_z zlnA9WxFA8B&jm>=6184`tYc7Zbxws+vWVs;@ zP>0e++>G_$Y+=g{vDg_Z;RU5bxgpsmfg55`8aE_pi?|uV8wt9h`Yu2%xX#T8UWoh< zs$Y@^5&|kbkPtEBfkdS{55z&CJoS*EiRXdj-y9xD9QE)pg4c4-hVmEiKpeOpYQQ!g zNK_nw8hnNa5(0Oj@}GGiQN+j#@qh#`M7N7E#!w-)XEQu>)HH_;QchyytVAyFwJ$Ozg=QO}?t$Os<&QW1m%RhA&cAq9dE3)=)C z7WN8495P1`;^2jXkht9{$Ozsea$FD+avudD7I6td5~HXPB){7VF@ks5_zFQB&?E#h zx1NEaPY7brTp@_h*F*Wog&?W_rVu139|=K%kWUyAm(s!zi^PkaFWZRQ!twBn>f$Ldt#_QAqjWB?@t9r6?q-T0|l0=7};w*8lAig}CUj zD8z@?MIkj@AW>u?0kPN#%J-G1hg75C5|ALNlYm$-3#wqV1f<&B3pMbg z1jK>Nl8_MNmxP3XvLwWThLVinom7rc`8iPe4U&+M*e3~b*cC~Leb4G8AueK)VgxUd z;Dyp=QVhOeN#UQ&$U7SSeYNSgTwrIlnLl})e=#GFDINZObs!w8g88l-B*;zWAr>Ud zGctrSFfjDUL)1NzhlIdyc}ODWR)7S(paLZ5C7^sI1xRAnRA6K{z{pU~;HUrzQYIxx z{^nC+1aFTMR)T~~ff7W%S_xuMJ5+okls`ual2(>M)ooRRq=ADYc(JanWMqTunx5SPJ@wQ z76SuAlqMu7ziL7}z^VmtAiowQEh%V09ImPbi8>=KNG?dwf_QX~Rz0M#ct;D;aFEw# zWZ2BWz!0v@2;TF_t;5KW&cMKspab#A2^~ljJk){I--5b~;1$k(x)2NI>OykUXUk8+~pJ50o z>sJ^;8XWtf3LhFWg4Y9lGKA#kKqE%*L}j=UBY3~>1tUnUC}RwXTMuJM)CCwrLL}T6 zqHYW(P22ap_Vlzn8E;fTW=$RQr-qf5CJX_vu4sv)s1H*B1 zM({@B^X8DCQm|kIZ#LD1(zQ_ftOX2`W-b0U}Rtf?H^`fV0Z&s@&KBCh4NJx zAv5OAOpuAHM$kTD1_p+=pdHbmv^t%Ufx()Qf#E761H&GuW{_UcR1AoI%gDg+k%@uf zH4_8FXGR8wBOpNr28OeY3=FH785kZgF)&eCfg2+OLll(%60}Q_ zfdQPAq1qY#GchpKGSxFMY-eO((1TjM6e|kJEI0aSf%ftX~6M~EdP49!~N)Q3X;Q3!8CI*JBj0_C5 zP)+NZ7#Lg`85ov<_VqGC*6D!MUtwZkkY!|GsDY{jiOEA9sly1F#0H5ygUaVX%1HD7Ir_VCZFF zU|?fpU{GUZVA#sUz;Fv13Y<_2wlFg=T!X3yQB#;07*;beFeoxHFnBXEFlaI}FeouY z#)DFr8R{9jK^xAQ85l&N7Pc`lFwA0NVE7I-I14JC!oQp=@4II$>mBI01E(91{b>5=I7a3kuXRm1AUJ*uc!dum%+Wx=aiVZ6MvC zO@@pN3=IsBdHf8hVFpYL4C#yv3_?r{4C0Io43mLkklF!wsl~B}@zq^FWmbR8a{t1H(6{ z9B2nL3ljrF3^M}*6B7f2FCzm(I1>Yd6cYo(HUC$%7#SEC z85tOop=LZ`f~=T2&dk724?23`3X-eWL)n|4bTw2HXlZ6C69dCtMg|5IW(I~9Mg|6B zMh4J?ILICbGiC;c1SSRsTPDaVisj6ZVO@~q4+aK?2~3cMEPt377@Qax7}hW{Fq{I# zzbrEY!)pe}M8b0>$T;6-CI*Iwpu-|S%O^l4fDRb|B`hWehO^8J4B8+Apbk`EW?*oH zvRfD!7#f)v7!sk5{s-ES4h=<+F#${r44#aT-4mcgEwq^H85ruB85kZhF)&0jF)$oq zhMa@}+EjD~YREBW$apQtfa{<#-3^$n=7-lmwFr+du zFq{IJ%>-HZ(Z&o}(ig+Xz~E31H2|bBmJu>)Ihl!pp^TY<;S(bR!v|10U|?Wa%mf)a z1*rqAdIQlg+{47caG!yJp`D3=VKE~EgB&vhgDewdH4I42C1wVObxaHlEKrBfXJ%mF zWM*Ip1I7ObMh1pHs3Wd2GcbfOLPo1QnHd;D85tPTp>m)FW^bWv2Sx^l)r<@blb{BI zECJ!QObiSrpmH8m8bU)v0FF%NV?w85mwM zLWa@{nHd0%-k*5F-Oa z2-Jd=Py_cv>Bo!=4310;3~tN}3@;fW^F!>63=B`1AZx$M85tNhF)}bLfU0+b(jW^! z*pd-4c{PiXf#DJp1A{da149Q?O%XE#!wV*cdWOZI(=C`780r`q7?vS#Yk$TBN_C?8~TJd#gAXT@xT z%H=XKFz_=mFdSlHV8~!(U@!vZf6&=3w?T~$W(J0RObiT@m>3wYLR|@3ga|Sagh7YN z?1vh}!OXy*162c(I|)h;jF3qQ9cBiGPN-Zy)FHi4zB(fV!yHiA02S}@U}9jH!OXyL z8mizSBLjmn69YpgBLjmWBLjm469dCO&{hjZ$nsl|WuWDGl1vN?mzfzD_A)Ur#4$54 z_)PxjC|rM$8M0~!r0OU$149O=LBfHD85kNtg$FYO!v#?J42sNe zj0_A1L3?4K-r;6sU^oM6$}ll7STHhxJ8z)1@K7_r6zH%X5F?L?fnh2%TT^&B5Twrrs;3onn2#XHcc3Z?Bm+A2hnaz4AtM6= zE7VsY;WSXW2X!Eb4>}72M1!ybsD=SC7#J9iLDf6}wKSoY)G#wJXfQD_*fBCNl!Ka1 zAV)DVFnj^+LahfiIT#oi)-f|MG(atU0P0OLGcf2fLMGwnGBYsDU|?X_#mvC)18OMf zFdoo4e2~2pLA3?w6e17@v@jH8A=IoYP*gB7Fmy38Fl+~vvy2Q3`xzJ*ilFAyt1vMz zR5CFz%m=NDW@KPU1Stj$(tuJ5BLl-CW(EdECI$u{M#w4>s2yPHDAc!}P#PpS2XrbC zl>Y-tzX3^r4grE%x{Q&5As51~2cPN#I&@_wBLf2$BLhP}69YphM3P}Qs2v6Mi54RR z!#Pm>2sI2ufldwq(T6}SOHhb0LzY8YK`pL=ngcp<2&8Tr69YpR)I2^gUC+Q!0aXlA z5D3Z}px|d@U^t5;4w5^{$iVQJfq~%{69a=Z69afI4J2NNr0z0E0E*3+7#J=wGBC6; zGB8*%Gce3YQa2UK)&^DPpd+b-m?67|WuOw185tN3GchnEgQ_D?wFEU3)DgZ8b~yt> zE0k7XWMDYJ%)nsI#K0g76@w`U(LtbY3j+fKGt}(u3=9mQLSz~!QG*nq<9DFGFf#)~ z6%zx)3TDVE;c1Kv3=h-CzK9=#^D^O&+dW>d{C+el^M*CdH8Hl zVb8?C5Dzu0gpq+^FI4?+s8|t{-VHUco0)+@3sjjy?E%ky{$yfc;9~?IGX@q0og_7b z5pt50JtG4{0jN6yHAoax%P=x91cK58BLl-!sD&VnB1{YnNlf*JzMkX3|_ zq2g;87#LbWElD0`28Q<_4WJGgs67R0oIza)+9hbp$iVQ3k%3_*=r}5y6l4oLIxW>r9AP#EYK*i=m>1sv>23x59C!lfyRGGgAZPW&}6rrxtV`N~+ zV`gA@#{`+UzX2-up$3S75*o;GP=N$hKZlWlp%rv85LAsd)B;c_WI@$zU}RwU50wWU z_O%l#4zizNBQpcT0!9XgwV?7F)ZqfA8#@QJ z#FCkTVGC3qbea(8w74ZuxoS`g666Zd4izX3qCA-y82*AB4c2GPz;GMPU|{$Nl4W3E z@MmUVn8M7!unbg7F)}bzGBPk+gu1?uk%2)T6ctPi3>U!lC+Gk>&;e&+%nS^_p{hVL zt{}tunIWsILF`mee-+gK1Z{$1VqlmHRhz@Wz;FVTl0b?;d)Pp73=9k#85tM^nHU)C zp{`>CwZ1`}Cng4le~b(a`#@DAXfOn%Pm!5{ArNYyJE$WJWp_a7lZ=pc0E13XV`gBO2Wqy1Hm`w3TS0-%z`&5l2-&=#2kP=cBj_NgcMdm*f#EZ# zo5#$+;LpUs@Bt*pz`(E))R+d9$xwAqK`vlmVA#jZz`)DI!0--Kf3|~40#FkVbbuW* z14BNjp#uvx1_p);%nS_wp!{8+`VVT@YEZ_78hD(Ef#CqCtqD5hj*)@k850A;6i|bT ziGjfj)DdQ2U^u|Qz)--<03NXiX;T9=h(W9H1wc(f2FNaq9Z-vEK|N}yPm7ru!0Qao zfksh4IzeX+g5r~jf#DvgZ^_8O@DiMwK!*wDGcz!xfx60|ijVzF2olH!b-_UG2+*J)NC1jKs~%k2Np9B(->R zM7jo(i9&usNoIatVvYhxP@yCvu|%OfGbcwODODjQv$!B9u`)G9p**uBL!l%iRUs)q zKU;5eZRS#57LfYQ(&f4Qe8t6y>8T1usRj8(C8}7~* zsFUnZr>Dx{Pulz~!OT53-5;ceN83dM=pd5I~h3i(M{so5n8X+?*Z=7HRm zmk6~k!3ajn>@{Gr103st9g#Z8m delta 21131 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:rA{sOV%@#c0hc%xC2s5JT(GAI_AE7j34Vb@qX!SrwNaA`R7SHd2IBZ1^ z#Nzc(dS?#MuQzIOpkwgn&XXgm2UfG0?3SGP2>@3vpn2 zF9U-H0|P@tF9U-%0|Ud#UWkQPdm$dV-wO$mCs6uhFGD@Ja{1Q_2~xv8h)>-5ATIZV z(&13?gg!_j%IJfHM0p=%grprRzZObwh3ebe2XXkZK8QnZ^g$f{s1FqP3=A*(>LH2g zYagT@=jeyTy>36m0?&R(wu4Au+`3|pY;KGgR^g5+yIWE6{O0wgMoCqTp}>EVwZR;=p@TAm+cC0*S(pQy?M0IF*4x0hIrRr$Piwrb1lkHWd;D z!BZgyWK4zR>k_E^im4DEZ=DKBD@Ue6EWQL)|7sY5df90ZkLXN;*kdw{ zfuSBWs^vJ1fgzWHfx&eeq(Ip`4N?RjnFa~Ehfw;}G>8vAPlM!h=IM~Q)tL_QaqM)6 z1_;;_&ekdTX;0kNQ91|&CB&43I>PniK}8C{nUM0})J#a!T%8GV*h8p+@1gp>&xFJ|`z(k#e6t`W zs@yC{A~u@^aX@VSEQn81p$hY6K^#&C74M$~F=)mth!5vO#aGUPr1DL(Ai3nqEJ*Ho z1vQv;HpF4PvmyGVXG0vKIvW!Arn4dT);rCHG_Aa$8kWw61o395!b7tmA#fh5;n{3R zE%|;nq&$$C12Ncl4g-TF0|P_s90rDqpuuJ+KXWc5J1?FKuJ0Mn&V_`;Z-{t3gYY~^ zVz8aZz~IHezz_$eSI&dfhF|7E3KZq}5RH!WA!#LYJ|vOl&4&zLH_nH|?Vb6M#QT3f zBn`+cfT)jO0ExPi1(3vAzW@}n^$ZNH3m|dP1C^Mv01~&e7BDcBF)}bLTLAH)>>^0E z(p|*B5DFRpNZhI|hB(Y*F(gV{pz`^PAr@6Y)io?;U^vRaz|glC5&|Jh z7#N~K6B$dOvu zg#>ZlQcw^xFqABXWW#Ex`o&8jiG0mc==k5>rI2iQY$+u1-GCbS9Lncf21(_T%ODQW zUj}io%QA?Mf|fz_$1a1UiF~NKre%ukXfvis~8yK z7#JA7t%5XCLsvtxW65d;21f=4hUKdn7=joW7+$W1WILNRkOC}g4W!)YS_7Gisb8}O zQZ%Zsg_PyNYau>rSqpLTthJD$c-2~n123$FWK+d;kf6<32dO0+)jgX+u+z5%X{EZ9@z6=Zu9ONb zfvYEz zf8oa-$i$@fUWj=AUWm_T?1iN6)q5cY(%HQX3||--7(VQUIQ;2;NR$X3fFxe41N9J> z_#J@EPG=l|jO(2^0ErTXgOFM+(<% zGN)sZ)^5--h|9B&K~nLQW03m((J=-FO-2TWzsDdUpnigZ;T8h}gVhO0Z7F&ZQa%zEcn%tvm%uT>DNz z94d4g(z8)I4bImLai<~TnWrJ{A!uIjEM)e2%2^1X`5eUJ(sK+9pvmi#=OB~QdgmdDasrfodma*{UKb$Q zc+~|+BILaYDIan!f;?2uz%czH149X@y?+tX;84HBz+lh7zz}u`lAottf@GJ!mlzma z85kJkE;BGRF)%QsT!tjV=a(TX9K5eULTb?!NSfJtg@M71fq~)u6^O-VS0Qmf^(thl z=gd_G23Ao1XTJt1czCZtf=J*Rq|#8l2Fdr@*B~XM`87y3bh`#g^*+}iK^+PePq+q2 zD{0pt4ynHe$yJk}=FNhtUvdo+_v^1QFw}#VSe(BGNi5Hx7X5=7zX6vd)9As$h> z2?=4#n~=onb+aB4r)@VO`TfjINWmd+3*uwrTM&gFw;k}?_aOCr#yv<{=z}U)b`RpS1NR_7fAk*2fmiN9EWUdWl33r~gH+ewq2}@4 zhxl0OKBSdwdLI&UmiHkZ^S%!*U+Nhm?nA1@vil4S5ey6r2k%1?lhgwShA9jT40;bB zEXAU=Bh0OGJ;4bxI8d>-`(;`6LWkZf4;2ogp0Q1Nak zJ@pYJWadADID9LVJ_Djb`Ty}Fh>L$cg1A)lF{H9kd(6Nvmw|!7`!U3#myaPq`1vs; zXjz{?ES7izkym~Kae(d9 zr&fj~&mn2!&~u1|cb-F<>tCNkn$xl`ARd_U0+PxXLiy{U{OvCwiT20~NK~Gze*vj1 zZbKD{zJw@{dkJx|@=J(;+Akq-Xz~(baMVkPgVSF^d{X@q5`vvj{>+zK!Ri$x5&6G@Se*I_VqwuMh=C2SAVE6u z6~qAxp!^L`dOuX%IjH>oR}hE2hsf76FujIo6nqVdQ^nVimXOVBh=rxEA=#$sHN@hX zuOS93hw^v5hBRDGyoTh0kFO!Q;`eJv$g#bFG(h;@K-w2JZy+t8gf}1$)H5*jyn*;| z?i+~4&2JzU?Rx_;;LIC{1Fyb;So{=f&=06OnYWN2)_Mz3Z}=AC5UaP45OjG9iKu^<2{ zp7|c))7tltIB$W{lix#pzUVz9q*lL&IB@rSh{p~?^`CzaiOR=N{;&58_26}Rd>=q@ z!N4H)0b+sr2Z%;JsJPV!h(_-Z5DSu^bkPS$Hfs6+anO_x5Fal70P(;|sQCU5kQtG4 zA0Q6n{|J#6{|N2>>wbh(pJpE+4ha4T3Bst45Qn6Egw$dMA0a_k@)1(7w10#I`SOpD zY`f_rBqX*&=>s1j4mt^?&wqrp8LvX+E$cr)^0m_^h{YM7AQtC;g2Y+nCx{QHe1e3~ zvQLm~x*aNi@e?GD-+Y1$M*sQ*DJjiALmck^8RDSm&kPKwL5V_|nG%?`|q+D3?1!BPgsQ3-2`Zr%77XAGK2@$rhkSG!S3b9Dx zE5t(@Um@Ah`71bk*E6Jlg$xjue1&wQ=Y565^_8y>17AZ8`0^DJ^nai<|2K#QO5Y$B z8h(R>l+8DYg?>;v>>Jo3hPZDKk7j>^nBVvf)DEa;V3_d@(xiI!4dQdw?+^`Q-ywYE z?+~Axe23)c04SaM9TK-yQ1uN^e(!fk$W8vvz_5#ffno7?NXI1Z2c#pi`v)XyZ@`U$Zp@Fygw(|$sHSoagsF6jKpz;GV4-1aBL0d>D1K5zL2F?iZ9 zNXRYv1xYKbe?eN+N1@_>enHG*{S6)e6Zj3WSoSx>rz*c820B3Lpx+D(cA&)b8xjSJ ze?vw{w*7{r`WL?;4t@I@63486Am%9if#fQiKaeyO`3F*q=Kg_Hdfk5*>cPurkN$zU z_|hMU%WnUHUe*NYLN?3o+;IUr1E` z_zMXs)_)L(asPv;Q~y^Fagq5yNC<@fgAAp_{DWB7`wwElvVV~3au1Y$_a9`O@bf=N zqLum&u_)j_q_Tr-kFoGA8A7fwy539dmU<9v}P-0{R_n7n;8NrKIJs26mi`Nqw8Nus=%NQZ%%wuE( zFWW!I$jAU%L;jzU5xgp1m5C9&BHEOR5xly--kFIJ+yskaVgyG;CR9Ng6U4$6sQ3gX zM)2bFxlD}UCDtpL7#Tn-o!2ulf|qdaWMX8f11(}9RvC zwq%E-0e^Nz@CJl(c8E`>LG`U4&;CZOTH7Na%oe{h|?+w(V zPwbGO{m0G-Ue7Pi0dYtS2gG5?9E{*~!nqs}iYNb14kyGSYfgv(PMn~)V_*p2gcuyb2?>ErsC+#qB#L@D zAs$!)Rlkap5j_3AiIWk$N#z}9JtUiGb3syP3>U zIF%QYW)|==f;TkOui<3`k7{k;g#^_%UWh~f@IovU;)7Ty$p>+W1|P)1x_pqhb>w3N zZ`BCqgM?fyAHH@V#8gE)YXA8c+tgA_l+AWeRV&#j^SV17vI zPvwUMWgb5y2xsv_;(j?l#G>{55TEbjXJn{mU|=}H4~csR0Z7RgE&#TOp%zN_2tYhA z8!TVXz_4Bbk_N5{Ktg~`5aMDUL5Ra-1R)O76NI?jO%UR+AVEmE5e*e@5QL_s64d5S_D7A*=1sdQ0@&#Oft4(k+U z1aDxP36=i>mFEzHgn*bB#C#nwhyy&t7{Lpbg2n0~j2fuIrDBZWG27i@j0|5H7#Ntu z8Nn@|AL5WSVlDxpGbA9D%S;J~{_PTwwD3TJ5j^e2D#-|*VvUf5MA;Tei2MghNEC=l zL5gUzdMSvHL!}tO3ySlkAVGUf3S#gVDMs*Qv#c~kU9mL8$34=J#5zYB5=D!oAtAOB z%HJ#vNwmA985s^RGB8|{hJ@f`Sx7dXFUtttgjT;q77`?kau5YPau9s5;EtN7#a9L`TwO7B>VkPf&?k6GQ?mpWr)u-lpzM& zC_~iwD?=OOngdKPf|e zEU3cBunx2jP=%3U76Svrc@;=dW~oAaSfvVaV2dgw5lvNvIB1qCB+Z>s0E3-jarQ0O{n*@ z7{PPFcG~seRLIby4Y6R6HYCU{XhVE<8%n>>h6MRnZAMU&k%3W%ks%h87)Ai%Lv|1>#7H-^(N{; z;&!hdB<_ytK|nAK7^mH4=I?o=`(^Sv7hTh8Z58$A-P1s0HVLy01|aw29OY{ z?>B&?<|PJ@mdRQJMh4KH&j$t&AG;Vrq9ni&5@ZdAj0~O(3=HQCA#p2V1aUyL5k!8K z5hHkZ`-c(4;WoyM;BC4t#*mPjYRm}U(zysi*E4*AFc_RnAaOX!1XAK1F@Yo!DN_iY zZ^{T>DRIOUk{f=TLV}df43d2f%phsQ&I}Tw@n(=jn`#DeNIsMKPc; znn8k&$D9#76=Q1-$qkRpA(hHUbBMf;1tWMDY^?<(2=7}!#GhC|8XlsS5FbvoWCU+i zo@dDjo}j#B$q1euH@AW~^pq7OL~mFzG9-ZVKZi9$BGVd@-^;Bb1xL3vq-b4l&B(wA z+JL~oz#z)Rz_1&%N&&R70JO{s$~I+UU?^r}U|1 z5wZ=V3u@6SsD99fV$eL+JO&1aS&R$}8jK7KZx|RDTA}hqQ1zfqs?V4h7(AF6818}Q ze~Y0OfR@FA4B%sCV0g^Hz|hXjz!1yKz_5yufk7Lp`3y4yLn$KzgDE3qNktn}?*m52 zD4GD&G6O~i24^M)hLubV48hC{43`)g7=)P_7=C~p2UYWofq}u0sh)v>nUR6v6jYFf ziGkq&69a=6lz$8qjG&+cxeV$E(3+5)3=9l0P|HD5`OFLqPRtApo0%9GRGAsTr6(g3 z1A{#i1H*bo28JGH28J_G{pE}d43D5}@c!@LObiTLnHd;PFf%Z?K_%Wp>9~1TW@2D4WM*LCVq{>*V1SI-TxNpIUW1g> zKn?v5bp%LkHX{Q=3{?CT0|UcaMh1qrpv|bD1PYoxXM!wDDgf<>2gQF5GXuk7Mh1p- zX2=*2$dI|r3=DZtLqR*%L1LgC@|{c!3$;80W1Cj*o>0n}D_{9X7 zJ6Ofcz@P*QdL{;j`B3?#P+!YI9rqhdgYq9}r8*-6Ll9H}NPQ;*1H)q`28Kn9kaZu9 zObiUWm>C!XplU$Va`zb-z$GCoR1BoAm4Sg_GHBx|XrU2k<2qFCGb3azfD994K?`UH zHK>#Y51nK%F)&P>?C33AAHm4Lu!fO=;SOj^86yM3EhYwrY98w+5WvX5u!oU>p@WfufteXHXjj7o8OnmFVqo~f z#K6!CWMJ6K%)oG(nStRt z$W$oyWM*K9WM*IxXJTMj0rj#qGXuk3sC)$zWW@&Pz>5|p28QcQ3=A`&av;hI>d^g6 z3=H>}Aj?Bug3g*yU}j+G2Kke7 z2|D5dv|8&T69dCWkSz=h4ELaNrcgb(%#fv?%}{ZWvhR!x3hMkNI3@1Q}7#J8#7#SEW85zK*t$>8qfa?9%ObiT3 zj0_A_APJb|%nS_rObiTdObiT_9<(9ctN5 zX2^mz&}fw)6J*%`AtM9B3`Pb9D`p0U97YBPentj{YoJ62I+p^fzk`W^VGq;{Rft$U zLn4I1;0085tO^K-nMzE1(Xv14Ri`+yF|0hA?b2UIP{eufgL;uJ;(h6Iocp?oza28JgL3=Dgi85mA7GB9vLHMKA@FgQWkAd3^3 z7#JopLKZ@T`OFLqT~ISXgClWF3=GRa<5r9e3`|f*90L_zj0_C3LHQq~353f)Bc-6a z0BU#ysO^^1&hCLtyKn-9f28IG=28MJ-$g-cWP_sm# zG*lV5hu;l~|BayC6pRcEj~OA`dqK;w%b*6!F*7jSWP(i7A7^G@*a3AtXnm3~BLl-c zs5+3LYnd1rjG*$M?*AcX28QDx2~fO)whc2gFg#^qU|@r)VS_jbl>QkQ?lVEQZ-CaC zf%IrFLDqvNfm&e<3=GlC3=Hca8W?_o>IG&7hHDHA3|ko(7~Lb z1~n7pz;sad12Lc&w5U>xnSnut8Cw6^F)}bnfedA0U?`o1hwwiGg7<)G&|*AS}zwz#t9P z^Ouo^lc_ z$Rwy|tkE0`Qu7~lN*5CY!$na1r!q1ySTiv&sDK)ZP)*yJ8NkOkEeEM)U|=v{W?*Oq z^}3*jgM{ZYF)&0jF)#=+GcX(m8OFfCAj8bSkc^}zkcoleJdy(v7$K`V>X;Z9UNbT< zECI#81JqKGp;H+d816z103H8y5)^cxVw0JHVLM0x=uA3LBNeJ=6Eg$DTSf+k`HYY= z$v{d(7$M7t_cJgsbTdOvT?1_$tpS}u#>l{M7^)YfmVsfipEp~*2onRt8K||VpzhTK zB}Zlkh9)M+t^&|;cMecBA)vM^l>Go=4g)*X*eg)|v7ojSGXsMd$T=VC6la+n{3Qp!P5`1A`0H9Dhazh5}GY15(S(!0-v02N^a)HGt0D19@sAC?_*9 zFa$6$Ferl}22^x_jzME$V3-7IgfT<5FUW&RdPW9@C}swR7YqyxicoVvW^_U=T?$I` zQ1NVL$YMXxR47Od*#4bN3=A@$N|YIL#u8}1lp0h+7}VFwOpsMXMWB`+XcP(5$pu9n zXoWH}1A{9Q1H%!hg!2Efk%8efC=Y|AGcf#NWMKFQl7QkxObiSS3=9k(m>3v}m>3u`KrKQ>28QX33=CYL z;Q*+^nVA?E{y`moi2<@I%~Bn`B9kx8*}ZxG+#qcoSHuCalF zp{13v#pe45dWAO6z5JYY^R}CYjGO=8+Re22{aq)4&F=5s2yXRYte2SnTY~ZC_Ggle TJS^Ln%P~G?*}hDfahD7LNBJXP diff --git a/locale/sv_SE/LC_MESSAGES/django.po b/locale/sv_SE/LC_MESSAGES/django.po index 33fc8682a..9f1c72dfa 100644 --- a/locale/sv_SE/LC_MESSAGES/django.po +++ b/locale/sv_SE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 18:17+0000\n" -"PO-Revision-Date: 2022-01-30 19:38\n" +"POT-Creation-Date: 2022-02-02 20:09+0000\n" +"PO-Revision-Date: 2022-02-04 21:00\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Swedish\n" "Language: sv\n" @@ -17,62 +17,70 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:365 +#: bookwyrm/forms.py:239 +msgid "Domain is blocked. Don't try this url again." +msgstr "" + +#: bookwyrm/forms.py:241 +msgid "Domain already pending. Please try later." +msgstr "" + +#: bookwyrm/forms.py:378 msgid "A user with this email already exists." msgstr "En användare med den här e-postadressen existerar redan." -#: bookwyrm/forms.py:379 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "En dag" -#: bookwyrm/forms.py:380 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "En vecka" -#: bookwyrm/forms.py:381 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "En månad" -#: bookwyrm/forms.py:382 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "Slutar inte gälla" -#: bookwyrm/forms.py:386 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} använder" -#: bookwyrm/forms.py:387 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Obegränsad" -#: bookwyrm/forms.py:489 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Listordning" -#: bookwyrm/forms.py:490 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Bokens titel" -#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Betyg" -#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Sortera efter" -#: bookwyrm/forms.py:497 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Stigande" -#: bookwyrm/forms.py:498 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Fallande" -#: bookwyrm/forms.py:511 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." msgstr "Slutdatum för läsning kan inte vara före startdatum." @@ -140,26 +148,26 @@ msgstr "Federerad" msgid "Blocked" msgstr "Blockerad" -#: bookwyrm/models/fields.py:29 +#: bookwyrm/models/fields.py:27 #, python-format msgid "%(value)s is not a valid remote_id" msgstr "%(value)s är inte ett giltigt remote_id" -#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 +#: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45 #, python-format msgid "%(value)s is not a valid username" msgstr "%(value)s är inte ett giltigt användarnamn" -#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "användarnamn" -#: bookwyrm/models/fields.py:188 +#: bookwyrm/models/fields.py:186 msgid "A user with that username already exists." msgstr "En användare med det användarnamnet existerar redan." -#: bookwyrm/models/fields.py:207 +#: bookwyrm/models/fields.py:205 #: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy_select.html:11 @@ -167,7 +175,7 @@ msgstr "En användare med det användarnamnet existerar redan." msgid "Public" msgstr "Publik" -#: bookwyrm/models/fields.py:208 +#: bookwyrm/models/fields.py:206 #: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy_select.html:14 @@ -175,14 +183,14 @@ msgstr "Publik" msgid "Unlisted" msgstr "Ej listad" -#: bookwyrm/models/fields.py:209 +#: bookwyrm/models/fields.py:207 #: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/layout.html:11 msgid "Followers" msgstr "Följare" -#: bookwyrm/models/fields.py:210 +#: bookwyrm/models/fields.py:208 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 @@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Europeisk Portugisiska)" #: bookwyrm/settings.py:258 -msgid "Swedish (Svenska)" -msgstr "" +msgid "Svenska (Swedish)" +msgstr "Svenska (Svenska)" #: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" @@ -369,7 +377,7 @@ msgstr "Administratör" #: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 -#: bookwyrm/templates/snippets/user_options.html:13 +#: bookwyrm/templates/snippets/user_options.html:14 msgid "Send direct message" msgstr "Skicka direktmeddelande" @@ -1017,7 +1025,7 @@ msgid "Physical Properties" msgstr "Fysiska egenskaper" #: bookwyrm/templates/book/edit/edit_book_form.html:199 -#: bookwyrm/templates/book/editions/format_filter.html:5 +#: bookwyrm/templates/book/editions/format_filter.html:6 msgid "Format:" msgstr "Format:" @@ -1055,17 +1063,17 @@ msgstr "Utgåvor av %(book_title)s" msgid "Editions of \"%(work_title)s\"" msgstr "Utgåvor av \"%(work_title)s\"" -#: bookwyrm/templates/book/editions/format_filter.html:8 -#: bookwyrm/templates/book/editions/language_filter.html:8 +#: bookwyrm/templates/book/editions/format_filter.html:9 +#: bookwyrm/templates/book/editions/language_filter.html:9 msgid "Any" msgstr "Alla" -#: bookwyrm/templates/book/editions/language_filter.html:5 +#: bookwyrm/templates/book/editions/language_filter.html:6 #: bookwyrm/templates/preferences/edit_user.html:95 msgid "Language:" msgstr "Språk:" -#: bookwyrm/templates/book/editions/search_filter.html:5 +#: bookwyrm/templates/book/editions/search_filter.html:6 msgid "Search editions" msgstr "Sök efter utgåvor" @@ -2020,7 +2028,7 @@ msgstr "Försök igen" #: bookwyrm/templates/import/import_status.html:223 msgid "This import is in an old format that is no longer supported. If you would like to troubleshoot missing items from this import, click the button below to update the import format." -msgstr "" +msgstr "Den här importen är i ett gammalt format som inte längre stöds. Om du vill felsöka saknade objekt från denna import, klicka på knappen nedan för att uppdatera importformat." #: bookwyrm/templates/import/import_status.html:225 msgid "Update import" @@ -2250,12 +2258,12 @@ msgstr "BookWyrm's källkod är fritt tillgängligt. Du kan bidra eller rapporte #: bookwyrm/templates/lists/add_item_modal.html:8 #, python-format msgid "Add \"%(title)s\" to this list" -msgstr "" +msgstr "Lägg till \"%(title)s\" i den här listan" #: bookwyrm/templates/lists/add_item_modal.html:12 #, python-format msgid "Suggest \"%(title)s\" for this list" -msgstr "" +msgstr "Föreslå \"%(title)s\" för den här listan" #: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/list.html:249 @@ -2297,7 +2305,7 @@ msgstr "Nu är du klar!" #: bookwyrm/templates/lists/list.html:83 #, python-format msgid "%(username)s says:" -msgstr "" +msgstr "%(username)s säger:" #: bookwyrm/templates/lists/curate.html:55 msgid "Suggested by" @@ -2395,7 +2403,7 @@ msgstr "Anteckningar:" #: bookwyrm/templates/lists/item_notes_field.html:19 msgid "An optional note that will be displayed with the book." -msgstr "" +msgstr "En valfri anteckning som kommer att visas med boken." #: bookwyrm/templates/lists/list.html:36 msgid "You successfully suggested a book for this list!" @@ -2407,11 +2415,11 @@ msgstr "Du lade framgångsrikt till en bok i här listan!" #: bookwyrm/templates/lists/list.html:96 msgid "Edit notes" -msgstr "" +msgstr "Redigera anteckningar" #: bookwyrm/templates/lists/list.html:111 msgid "Add notes" -msgstr "" +msgstr "Lägg till anteckningar" #: bookwyrm/templates/lists/list.html:123 #, python-format @@ -3576,11 +3584,11 @@ msgstr "Tillbaka till rapporter" #: bookwyrm/templates/settings/reports/report.html:23 msgid "Message reporter" -msgstr "" +msgstr "Meddela rapportören" #: bookwyrm/templates/settings/reports/report.html:27 msgid "Update on your report:" -msgstr "" +msgstr "Uppdatering av din rapport:" #: bookwyrm/templates/settings/reports/report.html:35 msgid "Reported statuses" @@ -4108,7 +4116,7 @@ msgstr "Filtren är verkställda" msgid "Clear filters" msgstr "Rensa filtren" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 msgid "Apply filters" msgstr "Verkställ filtren" diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index 6b51efb86..78ed7c74b 100644 --- a/locale/zh_Hans/LC_MESSAGES/django.po +++ b/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 18:17+0000\n" -"PO-Revision-Date: 2022-01-30 19:38\n" +"POT-Creation-Date: 2022-02-02 20:09+0000\n" +"PO-Revision-Date: 2022-02-04 21:01\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Simplified\n" "Language: zh\n" @@ -17,62 +17,70 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:365 +#: bookwyrm/forms.py:239 +msgid "Domain is blocked. Don't try this url again." +msgstr "" + +#: bookwyrm/forms.py:241 +msgid "Domain already pending. Please try later." +msgstr "" + +#: bookwyrm/forms.py:378 msgid "A user with this email already exists." msgstr "已经存在使用该邮箱的用户。" -#: bookwyrm/forms.py:379 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "一天" -#: bookwyrm/forms.py:380 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "一周" -#: bookwyrm/forms.py:381 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "一个月" -#: bookwyrm/forms.py:382 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "永不失效" -#: bookwyrm/forms.py:386 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} 次使用" -#: bookwyrm/forms.py:387 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "不受限" -#: bookwyrm/forms.py:489 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "列表顺序" -#: bookwyrm/forms.py:490 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "书名" -#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "评价" -#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "排序方式" -#: bookwyrm/forms.py:497 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "升序" -#: bookwyrm/forms.py:498 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "降序" -#: bookwyrm/forms.py:511 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." msgstr "" @@ -140,26 +148,26 @@ msgstr "跨站" msgid "Blocked" msgstr "已屏蔽" -#: bookwyrm/models/fields.py:29 +#: bookwyrm/models/fields.py:27 #, python-format msgid "%(value)s is not a valid remote_id" msgstr "%(value)s 不是有效的 remote_id" -#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 +#: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45 #, python-format msgid "%(value)s is not a valid username" msgstr "%(value)s 不是有效的用户名" -#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "用户名" -#: bookwyrm/models/fields.py:188 +#: bookwyrm/models/fields.py:186 msgid "A user with that username already exists." msgstr "已经存在使用该用户名的用户。" -#: bookwyrm/models/fields.py:207 +#: bookwyrm/models/fields.py:205 #: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy_select.html:11 @@ -167,7 +175,7 @@ msgstr "已经存在使用该用户名的用户。" msgid "Public" msgstr "公开" -#: bookwyrm/models/fields.py:208 +#: bookwyrm/models/fields.py:206 #: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy_select.html:14 @@ -175,14 +183,14 @@ msgstr "公开" msgid "Unlisted" msgstr "不公开" -#: bookwyrm/models/fields.py:209 +#: bookwyrm/models/fields.py:207 #: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/layout.html:11 msgid "Followers" msgstr "关注者" -#: bookwyrm/models/fields.py:210 +#: bookwyrm/models/fields.py:208 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 @@ -283,7 +291,7 @@ msgid "Português Europeu (European Portuguese)" msgstr "" #: bookwyrm/settings.py:258 -msgid "Swedish (Svenska)" +msgid "Svenska (Swedish)" msgstr "" #: bookwyrm/settings.py:259 @@ -369,7 +377,7 @@ msgstr "管理员" #: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 -#: bookwyrm/templates/snippets/user_options.html:13 +#: bookwyrm/templates/snippets/user_options.html:14 msgid "Send direct message" msgstr "发送私信" @@ -1012,7 +1020,7 @@ msgid "Physical Properties" msgstr "实体性质" #: bookwyrm/templates/book/edit/edit_book_form.html:199 -#: bookwyrm/templates/book/editions/format_filter.html:5 +#: bookwyrm/templates/book/editions/format_filter.html:6 msgid "Format:" msgstr "格式:" @@ -1050,17 +1058,17 @@ msgstr "%(book_title)s 的各版本" msgid "Editions of \"%(work_title)s\"" msgstr "《%(work_title)s》 的各版本" -#: bookwyrm/templates/book/editions/format_filter.html:8 -#: bookwyrm/templates/book/editions/language_filter.html:8 +#: bookwyrm/templates/book/editions/format_filter.html:9 +#: bookwyrm/templates/book/editions/language_filter.html:9 msgid "Any" msgstr "所有" -#: bookwyrm/templates/book/editions/language_filter.html:5 +#: bookwyrm/templates/book/editions/language_filter.html:6 #: bookwyrm/templates/preferences/edit_user.html:95 msgid "Language:" msgstr "语言:" -#: bookwyrm/templates/book/editions/search_filter.html:5 +#: bookwyrm/templates/book/editions/search_filter.html:6 msgid "Search editions" msgstr "搜索版本" @@ -4089,7 +4097,7 @@ msgstr "" msgid "Clear filters" msgstr "清除过滤器" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 msgid "Apply filters" msgstr "应用过滤器" diff --git a/locale/zh_Hant/LC_MESSAGES/django.po b/locale/zh_Hant/LC_MESSAGES/django.po index daebda622..061a0802e 100644 --- a/locale/zh_Hant/LC_MESSAGES/django.po +++ b/locale/zh_Hant/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-30 18:17+0000\n" -"PO-Revision-Date: 2022-01-30 19:38\n" +"POT-Creation-Date: 2022-02-02 20:09+0000\n" +"PO-Revision-Date: 2022-02-04 21:01\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Traditional\n" "Language: zh\n" @@ -17,62 +17,70 @@ msgstr "" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 1553\n" -#: bookwyrm/forms.py:365 +#: bookwyrm/forms.py:239 +msgid "Domain is blocked. Don't try this url again." +msgstr "" + +#: bookwyrm/forms.py:241 +msgid "Domain already pending. Please try later." +msgstr "" + +#: bookwyrm/forms.py:378 msgid "A user with this email already exists." msgstr "已經存在使用該郵箱的使用者。" -#: bookwyrm/forms.py:379 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "一天" -#: bookwyrm/forms.py:380 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "一週" -#: bookwyrm/forms.py:381 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "一個月" -#: bookwyrm/forms.py:382 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "永不失效" -#: bookwyrm/forms.py:386 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "" -#: bookwyrm/forms.py:387 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "不受限" -#: bookwyrm/forms.py:489 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "列表順序" -#: bookwyrm/forms.py:490 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "書名" -#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "評價" -#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "排序方式" -#: bookwyrm/forms.py:497 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "升序" -#: bookwyrm/forms.py:498 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "降序" -#: bookwyrm/forms.py:511 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." msgstr "" @@ -140,26 +148,26 @@ msgstr "跨站" msgid "Blocked" msgstr "已封鎖" -#: bookwyrm/models/fields.py:29 +#: bookwyrm/models/fields.py:27 #, python-format msgid "%(value)s is not a valid remote_id" msgstr "%(value)s 不是有效的 remote_id" -#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 +#: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45 #, python-format msgid "%(value)s is not a valid username" msgstr "%(value)s 不是有效的使用者名稱" -#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 +#: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "使用者名稱" -#: bookwyrm/models/fields.py:188 +#: bookwyrm/models/fields.py:186 msgid "A user with that username already exists." msgstr "已經存在使用該名稱的使用者。" -#: bookwyrm/models/fields.py:207 +#: bookwyrm/models/fields.py:205 #: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy_select.html:11 @@ -167,7 +175,7 @@ msgstr "已經存在使用該名稱的使用者。" msgid "Public" msgstr "公開" -#: bookwyrm/models/fields.py:208 +#: bookwyrm/models/fields.py:206 #: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy_select.html:14 @@ -175,14 +183,14 @@ msgstr "公開" msgid "Unlisted" msgstr "不公開" -#: bookwyrm/models/fields.py:209 +#: bookwyrm/models/fields.py:207 #: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/layout.html:11 msgid "Followers" msgstr "關注者" -#: bookwyrm/models/fields.py:210 +#: bookwyrm/models/fields.py:208 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 @@ -283,7 +291,7 @@ msgid "Português Europeu (European Portuguese)" msgstr "" #: bookwyrm/settings.py:258 -msgid "Swedish (Svenska)" +msgid "Svenska (Swedish)" msgstr "" #: bookwyrm/settings.py:259 @@ -369,7 +377,7 @@ msgstr "管理員" #: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 -#: bookwyrm/templates/snippets/user_options.html:13 +#: bookwyrm/templates/snippets/user_options.html:14 msgid "Send direct message" msgstr "發送私信" @@ -1012,7 +1020,7 @@ msgid "Physical Properties" msgstr "實體性質" #: bookwyrm/templates/book/edit/edit_book_form.html:199 -#: bookwyrm/templates/book/editions/format_filter.html:5 +#: bookwyrm/templates/book/editions/format_filter.html:6 msgid "Format:" msgstr "格式:" @@ -1050,17 +1058,17 @@ msgstr "%(book_title)s 的各版本" msgid "Editions of \"%(work_title)s\"" msgstr "\"%(work_title)s\" 的各版本" -#: bookwyrm/templates/book/editions/format_filter.html:8 -#: bookwyrm/templates/book/editions/language_filter.html:8 +#: bookwyrm/templates/book/editions/format_filter.html:9 +#: bookwyrm/templates/book/editions/language_filter.html:9 msgid "Any" msgstr "所有" -#: bookwyrm/templates/book/editions/language_filter.html:5 +#: bookwyrm/templates/book/editions/language_filter.html:6 #: bookwyrm/templates/preferences/edit_user.html:95 msgid "Language:" msgstr "語言:" -#: bookwyrm/templates/book/editions/search_filter.html:5 +#: bookwyrm/templates/book/editions/search_filter.html:6 msgid "Search editions" msgstr "" @@ -4089,7 +4097,7 @@ msgstr "" msgid "Clear filters" msgstr "清除過濾器" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 msgid "Apply filters" msgstr "使用過濾器" From 7811a9920e27ac2be5d3d8e6e9676603f875ffaf Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 4 Feb 2022 18:34:17 -0800 Subject: [PATCH 41/88] Copy config from prod branch to main --- .env.example | 16 ++++++++++++++ bookwyrm/apps.py | 5 +++++ bookwyrm/management/commands/erase_streams.py | 1 + bookwyrm/settings.py | 4 ++++ bookwyrm/telemetry/open_telemetry.py | 22 +++++++++++++++++++ celerywyrm/apps.py | 13 +++++++++++ certbot.sh | 19 ---------------- docker-compose.yml | 10 ++++----- requirements.txt | 5 +++++ 9 files changed, 70 insertions(+), 25 deletions(-) create mode 100644 bookwyrm/telemetry/open_telemetry.py create mode 100644 celerywyrm/apps.py delete mode 100644 certbot.sh diff --git a/.env.example b/.env.example index ca6f65bb7..7769a67b1 100644 --- a/.env.example +++ b/.env.example @@ -89,3 +89,19 @@ PREVIEW_TEXT_COLOR=#363636 PREVIEW_IMG_WIDTH=1200 PREVIEW_IMG_HEIGHT=630 PREVIEW_DEFAULT_COVER_COLOR=#002549 + +# Below are example keys if you want to enable automatically +# sending telemetry to an OTLP-compatible service. Many of +# the main monitoring apps have OLTP collectors, including +# NewRelic, DataDog, and Honeycomb.io - consult their +# documentation for setup instructions, and what exactly to +# put below! +# +# Service name is an arbitrary tag that is attached to any +# data sent, used to distinguish different sources. Useful +# for sending prod and dev metrics to the same place and +# keeping them separate, for instance! + +OTEL_EXPORTER_OTLP_ENDPOINT= # API endpoint for your provider +OTEL_EXPORTER_OTLP_HEADERS= # Any headers required, usually authentication info +OTEL_SERVICE_NAME= # Service name to identify your app diff --git a/bookwyrm/apps.py b/bookwyrm/apps.py index 8940edccc..af3b064e9 100644 --- a/bookwyrm/apps.py +++ b/bookwyrm/apps.py @@ -33,6 +33,11 @@ class BookwyrmConfig(AppConfig): verbose_name = "BookWyrm" def ready(self): + if settings.OTEL_EXPORTER_OTLP_ENDPOINT: + from bookwyrm.telemetry import open_telemetry + + open_telemetry.instrumentDjango() + if settings.ENABLE_PREVIEW_IMAGES and settings.FONTS: # Download any fonts that we don't have yet logger.debug("Downloading fonts..") diff --git a/bookwyrm/management/commands/erase_streams.py b/bookwyrm/management/commands/erase_streams.py index 7b8074029..9d971d699 100644 --- a/bookwyrm/management/commands/erase_streams.py +++ b/bookwyrm/management/commands/erase_streams.py @@ -7,6 +7,7 @@ from bookwyrm import settings r = redis.Redis( host=settings.REDIS_ACTIVITY_HOST, port=settings.REDIS_ACTIVITY_PORT, + password=settings.REDIS_ACTIVITY_PASSWORD, db=settings.REDIS_ACTIVITY_DB_INDEX, ) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index e8cbe344b..e9f3d0585 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -333,3 +333,7 @@ else: MEDIA_URL = "/images/" MEDIA_FULL_URL = f"{PROTOCOL}://{DOMAIN}{MEDIA_URL}" STATIC_FULL_URL = f"{PROTOCOL}://{DOMAIN}{STATIC_URL}" + +OTEL_EXPORTER_OTLP_ENDPOINT = env("OTEL_EXPORTER_OTLP_ENDPOINT", None) +OTEL_EXPORTER_OTLP_HEADERS = env("OTEL_EXPORTER_OTLP_HEADERS", None) +OTEL_SERVICE_NAME = env("OTEL_SERVICE_NAME", None) diff --git a/bookwyrm/telemetry/open_telemetry.py b/bookwyrm/telemetry/open_telemetry.py new file mode 100644 index 000000000..0b38a04b1 --- /dev/null +++ b/bookwyrm/telemetry/open_telemetry.py @@ -0,0 +1,22 @@ +from opentelemetry import trace +from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter +from opentelemetry.sdk.trace import TracerProvider +from opentelemetry.sdk.trace.export import BatchSpanProcessor + +trace.set_tracer_provider(TracerProvider()) +trace.get_tracer_provider().add_span_processor(BatchSpanProcessor(OTLPSpanExporter())) + + +def instrumentDjango(): + from opentelemetry.instrumentation.django import DjangoInstrumentor + + DjangoInstrumentor().instrument() + + +def instrumentCelery(): + from opentelemetry.instrumentation.celery import CeleryInstrumentor + from celery.signals import worker_process_init + + @worker_process_init.connect(weak=False) + def init_celery_tracing(*args, **kwargs): + CeleryInstrumentor().instrument() diff --git a/celerywyrm/apps.py b/celerywyrm/apps.py new file mode 100644 index 000000000..6aae849cd --- /dev/null +++ b/celerywyrm/apps.py @@ -0,0 +1,13 @@ +from django.apps import AppConfig +from celerywyrm import settings + + +class CelerywyrmConfig(AppConfig): + name = "celerywyrm" + verbose_name = "BookWyrm Celery" + + def ready(self): + if settings.OTEL_EXPORTER_OTLP_ENDPOINT: + from bookwyrm.telemetry import open_telemetry + + open_telemetry.instrumentCelery() diff --git a/certbot.sh b/certbot.sh deleted file mode 100644 index 6d2c3cd90..000000000 --- a/certbot.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash -source .env; - -if [ "$CERTBOT_INIT" = "true" ] -then - certonly \ - --webroot \ - --webroot-path=/var/www/certbot \ - --email ${EMAIL} \ - --agree-tos \ - --no-eff-email \ - -d ${DOMAIN} \ - -d www.${DOMAIN} -else - renew \ - --webroot \ - --webroot-path \ - /var/www/certbot -fi diff --git a/docker-compose.yml b/docker-compose.yml index fa28dbee6..d3b47467c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -49,15 +49,13 @@ services: redis_broker: image: redis command: redis-server --requirepass ${REDIS_BROKER_PASSWORD} --appendonly yes --port ${REDIS_BROKER_PORT} - env_file: .env - ports: - - 6379 - networks: - - main - restart: on-failure volumes: - ./redis.conf:/etc/redis/redis.conf - redis_broker_data:/data + env_file: .env + networks: + - main + restart: on-failure celery_worker: env_file: .env build: . diff --git a/requirements.txt b/requirements.txt index 4bda6bd5a..638ed91b5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,6 +18,11 @@ pytz>=2021.1 boto3==1.17.88 django-storages==1.11.1 django-redis==5.2.0 +opentelemetry-api==1.8.0 +opentelemetry-sdk==1.8.0 +opentelemetry-exporter-otlp-proto-grpc==1.8.0 +opentelemetry-instrumentation-django==0.27b0 +opentelemetry-instrumentation-celery==0.27b0 # Dev black==21.4b2 From bc7aa91b97d7bf89feb3787c731ab76b1bd65e9d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 4 Feb 2022 18:50:57 -0800 Subject: [PATCH 42/88] Fixes pylint complaints --- bookwyrm/apps.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bookwyrm/apps.py b/bookwyrm/apps.py index af3b064e9..d494877d6 100644 --- a/bookwyrm/apps.py +++ b/bookwyrm/apps.py @@ -32,8 +32,11 @@ class BookwyrmConfig(AppConfig): name = "bookwyrm" verbose_name = "BookWyrm" + # pylint: disable=no-self-use def ready(self): + """set up OTLP and preview image files, if desired""" if settings.OTEL_EXPORTER_OTLP_ENDPOINT: + # pylint: disable=import-outside-toplevel from bookwyrm.telemetry import open_telemetry open_telemetry.instrumentDjango() From 28a8edfdc460dba2692790195f1eef44498cfb8f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 4 Feb 2022 19:06:47 -0800 Subject: [PATCH 43/88] Fixes author page query --- bookwyrm/views/author.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bookwyrm/views/author.py b/bookwyrm/views/author.py index 3310fef0e..b50653f9a 100644 --- a/bookwyrm/views/author.py +++ b/bookwyrm/views/author.py @@ -1,6 +1,7 @@ """ the good people stuff! the authors! """ from django.contrib.auth.decorators import login_required, permission_required from django.core.paginator import Paginator +from django.db.models import Q from django.shortcuts import get_object_or_404, redirect from django.template.response import TemplateResponse from django.utils.decorators import method_decorator @@ -26,7 +27,7 @@ class Author(View): return ActivitypubResponse(author.to_activity()) books = models.Work.objects.filter( - authors=author, editions__authors=author + Q(authors=author) | Q(editions__authors=author) ).distinct() paginated = Paginator(books, PAGE_LENGTH) From a9a6fd12429d41ec1b2f0ebeaa57ab080ab61793 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 4 Feb 2022 19:34:37 -0800 Subject: [PATCH 44/88] Adds test for author page bug --- bookwyrm/tests/views/test_author.py | 37 +++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/bookwyrm/tests/views/test_author.py b/bookwyrm/tests/views/test_author.py index ad5c069d3..71daef2a4 100644 --- a/bookwyrm/tests/views/test_author.py +++ b/bookwyrm/tests/views/test_author.py @@ -50,6 +50,43 @@ class AuthorViews(TestCase): models.SiteSettings.objects.create() def test_author_page(self): + """there are so many views, this just makes sure it LOADS""" + view = views.Author.as_view() + author = models.Author.objects.create(name="Jessica") + self.book.authors.add(author) + request = self.factory.get("") + request.user = self.local_user + with patch("bookwyrm.views.author.is_api_request") as is_api: + is_api.return_value = False + result = view(request, author.id) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + def test_author_page_edition_author(self): + """there are so many views, this just makes sure it LOADS""" + view = views.Author.as_view() + another_book = models.Edition.objects.create( + title="Example Edition", + remote_id="https://example.com/book/1", + parent_work=self.work, + isbn_13="9780300112511", + ) + author = models.Author.objects.create(name="Jessica") + self.book.authors.add(author) + request = self.factory.get("") + request.user = self.local_user + with patch("bookwyrm.views.author.is_api_request") as is_api: + is_api.return_value = False + result = view(request, author.id) + books = result.context_data["books"] + self.assertEqual(books.object_list.count(), 1) + + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + def test_author_page_empty(self): """there are so many views, this just makes sure it LOADS""" view = views.Author.as_view() author = models.Author.objects.create(name="Jessica") From 49ceb2a9780035dc9b7a4634b18110cda7e3a485 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 4 Feb 2022 19:41:21 -0800 Subject: [PATCH 45/88] Fixes warning in author view tests --- bookwyrm/views/author.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/views/author.py b/bookwyrm/views/author.py index b50653f9a..c3e456eff 100644 --- a/bookwyrm/views/author.py +++ b/bookwyrm/views/author.py @@ -28,7 +28,7 @@ class Author(View): books = models.Work.objects.filter( Q(authors=author) | Q(editions__authors=author) - ).distinct() + ).order_by("-published_date").distinct() paginated = Paginator(books, PAGE_LENGTH) page = paginated.get_page(request.GET.get("page")) From a73960a0da25fba82f4a6fb4185f69d102b3a000 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 4 Feb 2022 19:44:03 -0800 Subject: [PATCH 46/88] Python formatting --- bookwyrm/views/author.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/bookwyrm/views/author.py b/bookwyrm/views/author.py index c3e456eff..b4eb7ef56 100644 --- a/bookwyrm/views/author.py +++ b/bookwyrm/views/author.py @@ -26,9 +26,11 @@ class Author(View): if is_api_request(request): return ActivitypubResponse(author.to_activity()) - books = models.Work.objects.filter( - Q(authors=author) | Q(editions__authors=author) - ).order_by("-published_date").distinct() + books = ( + models.Work.objects.filter(Q(authors=author) | Q(editions__authors=author)) + .order_by("-published_date") + .distinct() + ) paginated = Paginator(books, PAGE_LENGTH) page = paginated.get_page(request.GET.get("page")) From 73b611d68ddc8fca6690ae5f87e4640293c1869d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 4 Feb 2022 20:12:26 -0800 Subject: [PATCH 47/88] Tick version number --- bookwyrm/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index e8cbe344b..fee197a74 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -9,7 +9,7 @@ from django.utils.translation import gettext_lazy as _ env = Env() env.read_env() DOMAIN = env("DOMAIN") -VERSION = "0.2.1" +VERSION = "0.3.0" PAGE_LENGTH = env("PAGE_LENGTH", 15) DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English") From 74fd13fb22e60913f376c9c2bdc34db69a086d53 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 6 Feb 2022 06:37:03 -0800 Subject: [PATCH 48/88] Consistent ordering of items in docker-compose file --- docker-compose.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index d3b47467c..672ea4c1a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -39,13 +39,13 @@ services: redis_activity: image: redis command: redis-server --requirepass ${REDIS_ACTIVITY_PASSWORD} --appendonly yes --port ${REDIS_ACTIVITY_PORT} + volumes: + - ./redis.conf:/etc/redis/redis.conf + - redis_activity_data:/data env_file: .env networks: - main restart: on-failure - volumes: - - ./redis.conf:/etc/redis/redis.conf - - redis_activity_data:/data redis_broker: image: redis command: redis-server --requirepass ${REDIS_BROKER_PASSWORD} --appendonly yes --port ${REDIS_BROKER_PORT} From e9e4f70ae4ff11329be0e5dc667f39bcd2941201 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 8 Feb 2022 09:17:42 -0500 Subject: [PATCH 49/88] Refresh web and celery in update command --- bw-dev | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bw-dev b/bw-dev index 11977ad07..ded796b84 100755 --- a/bw-dev +++ b/bw-dev @@ -143,6 +143,8 @@ case "$CMD" in runweb python manage.py migrate runweb python manage.py collectstatic --no-input docker-compose up -d + docker-compose restart web + docker-compose restart celery_worker ;; populate_streams) runweb python manage.py populate_streams "$@" From 6323b0e7005218c35a88f28d3067af8227347f61 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 9 Feb 2022 12:20:11 -0500 Subject: [PATCH 50/88] Use correct model type for federated links --- bookwyrm/activitypub/base_activity.py | 4 ++-- bookwyrm/tests/views/books/test_links.py | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/bookwyrm/activitypub/base_activity.py b/bookwyrm/activitypub/base_activity.py index 15ca5a938..7d2796eff 100644 --- a/bookwyrm/activitypub/base_activity.py +++ b/bookwyrm/activitypub/base_activity.py @@ -227,7 +227,7 @@ def set_related_field( model_field = getattr(model, related_field_name) if hasattr(model_field, "activitypub_field"): setattr(activity, getattr(model_field, "activitypub_field"), instance.remote_id) - item = activity.to_model() + item = activity.to_model(model=model) # if the related field isn't serialized (attachments on Status), then # we have to set it post-creation @@ -298,6 +298,7 @@ class Link(ActivityObject): mediaType: str = None id: str = None attributedTo: str = None + availability: str = None type: str = "Link" def serialize(self, **kwargs): @@ -305,7 +306,6 @@ class Link(ActivityObject): omit = ("id", "type", "@context") return super().serialize(omit=omit) - @dataclass(init=False) class Mention(Link): """a subtype of Link for mentioning an actor""" diff --git a/bookwyrm/tests/views/books/test_links.py b/bookwyrm/tests/views/books/test_links.py index 2aee5aed9..d98e95dae 100644 --- a/bookwyrm/tests/views/books/test_links.py +++ b/bookwyrm/tests/views/books/test_links.py @@ -80,6 +80,17 @@ class LinkViews(TestCase): activity = json.loads(mock.call_args[1]["args"][1]) self.assertEqual(activity["type"], "Update") self.assertEqual(activity["object"]["type"], "Edition") + self.assertIsInstance(activity["object"]["fileLinks"], list) + self.assertEqual( + activity["object"]["fileLinks"][0]["href"], "https://www.example.com" + ) + self.assertEqual( + activity["object"]["fileLinks"][0]["mediaType"], "HTML" + ) + self.assertEqual( + activity["object"]["fileLinks"][0]["attributedTo"], + self.local_user.remote_id + ) link = models.FileLink.objects.get() self.assertEqual(link.name, "www.example.com") From c06817e9ff8212c7bf5de413a4b4470aeed842f4 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 9 Feb 2022 12:23:01 -0500 Subject: [PATCH 51/88] Python formatting --- bookwyrm/activitypub/base_activity.py | 1 + bookwyrm/tests/models/test_book_model.py | 1 - bookwyrm/tests/views/books/test_links.py | 6 ++---- bookwyrm/tests/views/inbox/test_inbox_update.py | 1 - 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/bookwyrm/activitypub/base_activity.py b/bookwyrm/activitypub/base_activity.py index 7d2796eff..6bee25f62 100644 --- a/bookwyrm/activitypub/base_activity.py +++ b/bookwyrm/activitypub/base_activity.py @@ -306,6 +306,7 @@ class Link(ActivityObject): omit = ("id", "type", "@context") return super().serialize(omit=omit) + @dataclass(init=False) class Mention(Link): """a subtype of Link for mentioning an actor""" diff --git a/bookwyrm/tests/models/test_book_model.py b/bookwyrm/tests/models/test_book_model.py index d74fa4ca3..d4f59fa58 100644 --- a/bookwyrm/tests/models/test_book_model.py +++ b/bookwyrm/tests/models/test_book_model.py @@ -1,7 +1,6 @@ """ testing models """ from dateutil.parser import parse -from imagekit.models import ImageSpecField from django.test import TestCase from django.utils import timezone diff --git a/bookwyrm/tests/views/books/test_links.py b/bookwyrm/tests/views/books/test_links.py index d98e95dae..3379786b0 100644 --- a/bookwyrm/tests/views/books/test_links.py +++ b/bookwyrm/tests/views/books/test_links.py @@ -84,12 +84,10 @@ class LinkViews(TestCase): self.assertEqual( activity["object"]["fileLinks"][0]["href"], "https://www.example.com" ) - self.assertEqual( - activity["object"]["fileLinks"][0]["mediaType"], "HTML" - ) + self.assertEqual(activity["object"]["fileLinks"][0]["mediaType"], "HTML") self.assertEqual( activity["object"]["fileLinks"][0]["attributedTo"], - self.local_user.remote_id + self.local_user.remote_id, ) link = models.FileLink.objects.get() diff --git a/bookwyrm/tests/views/inbox/test_inbox_update.py b/bookwyrm/tests/views/inbox/test_inbox_update.py index 963742c83..18b2e5d59 100644 --- a/bookwyrm/tests/views/inbox/test_inbox_update.py +++ b/bookwyrm/tests/views/inbox/test_inbox_update.py @@ -6,7 +6,6 @@ from unittest.mock import patch from django.test import TestCase from bookwyrm import models, views -from bookwyrm.activitypub.base_activity import set_related_field # pylint: disable=too-many-public-methods From 046f51609123799aa4fd90196053f8fded836af1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 10 Feb 2022 13:02:16 +0000 Subject: [PATCH 52/88] Bump django from 3.2.11 to 3.2.12 Bumps [django](https://github.com/django/django) from 3.2.11 to 3.2.12. - [Release notes](https://github.com/django/django/releases) - [Commits](https://github.com/django/django/compare/3.2.11...3.2.12) --- updated-dependencies: - dependency-name: django dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 4bda6bd5a..191a6a92a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ celery==5.2.2 colorthief==0.2.1 -Django==3.2.11 +Django==3.2.12 django-imagekit==4.1.0 django-model-utils==4.0.0 environs==9.3.4 From 059fd84d06a3af1e385e1b0490803d158c4ad7ec Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 11 Feb 2022 13:33:42 -0500 Subject: [PATCH 53/88] Adds delete button to announcements list view It's handy to have it there --- .../settings/announcements/announcements.html | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/bookwyrm/templates/settings/announcements/announcements.html b/bookwyrm/templates/settings/announcements/announcements.html index c86ecf3e8..d60ef3761 100644 --- a/bookwyrm/templates/settings/announcements/announcements.html +++ b/bookwyrm/templates/settings/announcements/announcements.html @@ -38,6 +38,9 @@ {% trans "Status" as text %} {% include 'snippets/table-sort-header.html' with field="active" sort=sort text=text %} + + {% trans "Actions" %} + {% for announcement in announcements %} @@ -46,6 +49,15 @@ {{ announcement.start_date|naturaltime|default:'' }} {{ announcement.end_date|naturaltime|default:'' }} {% if announcement.active %}{% trans "active" %}{% else %}{% trans "inactive" %}{% endif %} + +

+ {% csrf_token %} + + + {% endfor %} {% if not announcements %} From 62741a5d2e9a9872ccca2cff349f9f50035a28e2 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 11 Feb 2022 13:36:08 -0500 Subject: [PATCH 54/88] Allow html in announcement header --- bookwyrm/templates/snippets/announcement.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/snippets/announcement.html b/bookwyrm/templates/snippets/announcement.html index 8b8563191..62dd4ea78 100644 --- a/bookwyrm/templates/snippets/announcement.html +++ b/bookwyrm/templates/snippets/announcement.html @@ -9,7 +9,7 @@ {% if announcement.event_date %} {{ announcement.event_date|naturalday|title }}: {% endif %} - {{ announcement.preview }} + {{ announcement.preview|safe }}
{% if announcement.content %}
From ee23aba9946361dc391891510d5f411ebc617299 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 11 Feb 2022 13:50:55 -0500 Subject: [PATCH 55/88] Use details and summary for announcement panel --- bookwyrm/static/css/bookwyrm.css | 4 +-- bookwyrm/templates/snippets/announcement.html | 29 +++++++++---------- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/bookwyrm/static/css/bookwyrm.css b/bookwyrm/static/css/bookwyrm.css index f05ea3c91..669493877 100644 --- a/bookwyrm/static/css/bookwyrm.css +++ b/bookwyrm/static/css/bookwyrm.css @@ -319,7 +319,7 @@ details.details-panel summary { position: relative; } -details.details-panel summary .details-close { +details summary .details-close { position: absolute; right: 0; top: 0; @@ -327,7 +327,7 @@ details.details-panel summary .details-close { transition: transform 0.2s ease; } -details[open].details-panel summary .details-close { +details[open] summary .details-close { transform: rotate(0deg); } diff --git a/bookwyrm/templates/snippets/announcement.html b/bookwyrm/templates/snippets/announcement.html index 62dd4ea78..c8eca6ad1 100644 --- a/bookwyrm/templates/snippets/announcement.html +++ b/bookwyrm/templates/snippets/announcement.html @@ -4,29 +4,26 @@ class="notification mb-1 p-3{% if not admin_mode %} is-hidden{% endif %} transition-y" {% if not admin_mode %}data-hide="hide_announcement_{{ announcement.id }}"{% endif %} > -
-
+
+ {% if announcement.event_date %} {{ announcement.event_date|naturalday|title }}: {% endif %} + {{ announcement.preview|safe }} -
+ + {% if announcement.content %} + + {% endif %} + {% if announcement.content %} -
- {% trans "Open" as button_text %} - {% include 'snippets/toggle/open_button.html' with text=button_text controls_text="announcement" class="is-small" controls_uid=uuid icon_with_text="arrow-down" %} - {% trans "Close" as button_text %} - {% include 'snippets/toggle/close_button.html' with text=button_text controls_text="announcement" class="is-small" controls_uid=uuid icon_with_text="arrow-up" %} +
+
+ {{ announcement.content|safe }} +
{% endif %} -
- {% if announcement.content %} -
-
- {{ announcement.content|safe }} -
-
- {% endif %} +

{% blocktrans with user_path=announcement.user.local_path username=announcement.user.display_name %}Posted by {{ username }}{% endblocktrans %}

{% if not admin_mode %} From cfa91e25704d8a0c73a6648761824e734458e6be Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 11 Feb 2022 14:00:01 -0500 Subject: [PATCH 56/88] Adds color options to announcements --- .../0134_announcement_display_type.py | 29 +++++++++++++++++++ bookwyrm/models/announcement.py | 18 ++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 bookwyrm/migrations/0134_announcement_display_type.py diff --git a/bookwyrm/migrations/0134_announcement_display_type.py b/bookwyrm/migrations/0134_announcement_display_type.py new file mode 100644 index 000000000..ba8450123 --- /dev/null +++ b/bookwyrm/migrations/0134_announcement_display_type.py @@ -0,0 +1,29 @@ +# Generated by Django 3.2.11 on 2022-02-11 18:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0133_alter_listitem_notes"), + ] + + operations = [ + migrations.AddField( + model_name="announcement", + name="display_type", + field=models.CharField( + choices=[ + ("white-ter", "None"), + ("primary-light", "Primary"), + ("success-light", "Success"), + ("link-light", "Link"), + ("warning-light", "Warning"), + ("danger-light", "Danger"), + ], + default="white-ter", + max_length=20, + ), + ), + ] diff --git a/bookwyrm/models/announcement.py b/bookwyrm/models/announcement.py index 498d50418..cbed38aee 100644 --- a/bookwyrm/models/announcement.py +++ b/bookwyrm/models/announcement.py @@ -2,10 +2,21 @@ from django.db import models from django.db.models import Q from django.utils import timezone +from django.utils.translation import gettext_lazy as _ from .base_model import BookWyrmModel +DisplayTypes = [ + ("white-ter", _("None")), + ("primary-light", _("Primary")), + ("success-light", _("Success")), + ("link-light", _("Link")), + ("warning-light", _("Warning")), + ("danger-light", _("Danger")), +] + + class Announcement(BookWyrmModel): """The admin has something to say""" @@ -16,6 +27,13 @@ class Announcement(BookWyrmModel): start_date = models.DateTimeField(blank=True, null=True) end_date = models.DateTimeField(blank=True, null=True) active = models.BooleanField(default=True) + display_type = models.CharField( + max_length=20, + blank=False, + null=False, + choices=DisplayTypes, + default="white-ter", + ) @classmethod def active_announcements(cls): From 01b52f023a19e20dd1c2af63a844c48de1d64eff Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 11 Feb 2022 14:38:13 -0500 Subject: [PATCH 57/88] Adds edit announcement view --- .../settings/announcements/announcement.html | 14 +-- .../announcements/announcement_form.html | 80 ------------- .../settings/announcements/announcements.html | 13 +-- .../announcements/edit_announcement.html | 105 ++++++++++++++++++ bookwyrm/urls.py | 10 ++ bookwyrm/views/__init__.py | 3 +- bookwyrm/views/admin/announcements.py | 62 ++++++----- 7 files changed, 165 insertions(+), 122 deletions(-) delete mode 100644 bookwyrm/templates/settings/announcements/announcement_form.html create mode 100644 bookwyrm/templates/settings/announcements/edit_announcement.html diff --git a/bookwyrm/templates/settings/announcements/announcement.html b/bookwyrm/templates/settings/announcements/announcement.html index 8b49f4f48..095013822 100644 --- a/bookwyrm/templates/settings/announcements/announcement.html +++ b/bookwyrm/templates/settings/announcements/announcement.html @@ -1,5 +1,7 @@ {% extends 'settings/layout.html' %} -{% load i18n %}{% load humanize %} +{% load i18n %} +{% load humanize %} + {% block title %}{% trans "Announcement" %} - {{ announcement.preview }}{% endblock %} {% block header %} @@ -8,10 +10,12 @@ {% endblock %} {% block edit-button %} -{% trans "Edit Announcement" as button_text %}
- {% include 'snippets/toggle/open_button.html' with controls_text="edit_announcement" icon_with_text="pencil" text=button_text focus="edit_announcement_header" %} + + + {% trans "Edit Announcement" %} +
{% csrf_token %} @@ -25,10 +29,6 @@ {% block panel %} - - {% include 'settings/announcements/announcement_form.html' with controls_text="edit_announcement" %} -
-
{% trans "Visible:" %}
diff --git a/bookwyrm/templates/settings/announcements/announcement_form.html b/bookwyrm/templates/settings/announcements/announcement_form.html deleted file mode 100644 index 8f68e2555..000000000 --- a/bookwyrm/templates/settings/announcements/announcement_form.html +++ /dev/null @@ -1,80 +0,0 @@ -{% extends 'components/inline_form.html' %} -{% load i18n %} - -{% block header %} -{% if announcement %} -{% trans "Edit Announcement" %} -{% else %} -{% trans "Create Announcement" %} -{% endif %} -{% endblock %} - -{% block form %} -{% csrf_token %} - -

- - {{ form.preview }} - - {% include 'snippets/form_errors.html' with errors_list=form.preview.errors id="desc_preview" %} -

-

- - {{ form.content }} - - {% include 'snippets/form_errors.html' with errors_list=form.content.errors id="desc_content" %} -

-

- - - - {% include 'snippets/form_errors.html' with errors_list=form.event_date.errors id="desc_event_date" %} -

- -
-
-

- - - - {% include 'snippets/form_errors.html' with errors_list=form.start_date.errors id="desc_start_date" %} -

-
-
-

- - - - {% include 'snippets/form_errors.html' with errors_list=form.end_date.errors id="desc_end_date" %} -

-
-
-

- - {{ form.active }} - - {% include 'snippets/form_errors.html' with errors_list=form.active.errors id="desc_active" %} -

-
-
- -
-
- -
-
-{% endblock %} diff --git a/bookwyrm/templates/settings/announcements/announcements.html b/bookwyrm/templates/settings/announcements/announcements.html index d60ef3761..6299ba3d9 100644 --- a/bookwyrm/templates/settings/announcements/announcements.html +++ b/bookwyrm/templates/settings/announcements/announcements.html @@ -5,16 +5,15 @@ {% block header %}{% trans "Announcements" %}{% endblock %} {% block edit-button %} -{% trans "Create Announcement" as button_text %} -{% include 'snippets/toggle/open_button.html' with controls_text="create_announcement" icon_with_text="plus" text=button_text focus="create_announcement_header" %} + + {% trans "Create Announcement" as text %} + + {{ text }} + {% endblock %} {% block panel %} -
- {% include 'settings/announcements/announcement_form.html' with controls_text="create_announcement" %} -
- -
+
diff --git a/bookwyrm/templates/settings/announcements/edit_announcement.html b/bookwyrm/templates/settings/announcements/edit_announcement.html new file mode 100644 index 000000000..ef10c2a02 --- /dev/null +++ b/bookwyrm/templates/settings/announcements/edit_announcement.html @@ -0,0 +1,105 @@ +{% extends 'settings/layout.html' %} +{% load i18n %} + +{% block header %} +{% if announcement %} +{% trans "Edit Announcement" %} +{% else %} +{% trans "Create Announcement" %} +{% endif %} +{% endblock %} + +{% block panel %} +
+ {% csrf_token %} + +

{% trans "Announcement content" %}

+
+

+ + {{ form.preview }} + + {% include 'snippets/form_errors.html' with errors_list=form.preview.errors id="desc_preview" %} +

+

+ + {{ form.content }} + + {% include 'snippets/form_errors.html' with errors_list=form.content.errors id="desc_content" %} +

+

+ + + + {% include 'snippets/form_errors.html' with errors_list=form.event_date.errors id="desc_event_date" %} +

+
+ +

{% trans "Display settings" %}

+
+
+
+

+ + + + {% include 'snippets/form_errors.html' with errors_list=form.start_date.errors id="desc_start_date" %} +

+
+
+

+ + + + {% include 'snippets/form_errors.html' with errors_list=form.end_date.errors id="desc_end_date" %} +

+
+
+ +
+ {{ form.display_type }} +
+ + {% include 'snippets/form_errors.html' with errors_list=form.active.errors id="desc_display_type" %} +
+
+

+ + + {% include 'snippets/form_errors.html' with errors_list=form.active.errors id="desc_active" %} +

+
+ +
+
+ +
+
+
+{% endblock %} diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 79d868c95..5ee09a3a4 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -93,6 +93,16 @@ urlpatterns = [ views.Announcement.as_view(), name="settings-announcements", ), + re_path( + r"^settings/announcements/create/?$", + views.EditAnnouncement.as_view(), + name="settings-announcements-edit", + ), + re_path( + r"^settings/announcements/(?P\d+)/edit/?$", + views.EditAnnouncement.as_view(), + name="settings-announcements-edit", + ), re_path( r"^settings/announcements/(?P\d+)/delete/?$", views.delete_announcement, diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index 359bee827..579e89cbc 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -1,6 +1,7 @@ """ make sure all our nice views are available """ # site admin -from .admin.announcements import Announcements, Announcement, delete_announcement +from .admin.announcements import Announcements, Announcement +from .admin.announcements import EditAnnouncement, delete_announcement from .admin.dashboard import Dashboard from .admin.federation import Federation, FederatedServer from .admin.federation import AddFederatedServer, ImportServerBlocklist diff --git a/bookwyrm/views/admin/announcements.py b/bookwyrm/views/admin/announcements.py index 92ec1766c..dd0ce862f 100644 --- a/bookwyrm/views/admin/announcements.py +++ b/bookwyrm/views/admin/announcements.py @@ -45,23 +45,6 @@ class Announcements(View): request, "settings/announcements/announcements.html", data ) - def post(self, request): - """edit the site settings""" - form = forms.AnnouncementForm(request.POST) - if form.is_valid(): - form.save() - # reset the create form - form = forms.AnnouncementForm() - data = { - "announcements": Paginator( - models.Announcement.objects.order_by("-created_date"), PAGE_LENGTH - ).get_page(request.GET.get("page")), - "form": form, - } - return TemplateResponse( - request, "settings/announcements/announcements.html", data - ) - @method_decorator(login_required, name="dispatch") @method_decorator( @@ -76,27 +59,52 @@ class Announcement(View): announcement = get_object_or_404(models.Announcement, id=announcement_id) data = { "announcement": announcement, - "form": forms.AnnouncementForm(instance=announcement), } return TemplateResponse( request, "settings/announcements/announcement.html", data ) - def post(self, request, announcement_id): - """edit announcement""" - announcement = get_object_or_404(models.Announcement, id=announcement_id) - form = forms.AnnouncementForm(request.POST, instance=announcement) - if form.is_valid(): - announcement = form.save() - form = forms.AnnouncementForm(instance=announcement) + + +@method_decorator(login_required, name="dispatch") +@method_decorator( + permission_required("bookwyrm.edit_instance_settings", raise_exception=True), + name="dispatch", +) +class EditAnnouncement(View): + """Create of edit an announcement""" + def get(self, request, announcement_id=None): + """announcement forms""" + announcement = None + if announcement_id: + announcement = get_object_or_404(models.Announcement, id=announcement_id) + data = { "announcement": announcement, - "form": form, + "form": forms.AnnouncementForm(instance=announcement), } return TemplateResponse( - request, "settings/announcements/announcement.html", data + request, "settings/announcements/edit_announcement.html", data ) + def post(self, request, announcement_id=None): + """edit announcement""" + announcement = None + if announcement_id: + announcement = get_object_or_404(models.Announcement, id=announcement_id) + + form = forms.AnnouncementForm(request.POST, instance=announcement) + if not form.is_valid(): + data = { + "announcement": announcement, + "form": form, + } + return TemplateResponse( + request, "settings/announcements/edit_announcement.html", data + ) + announcement = form.save() + return redirect("settings-announcements", announcement.id) + @login_required @permission_required("bookwyrm.edit_instance_settings", raise_exception=True) From b95f0ed287a9f3dcd25932060c79e3e9d4b0bd36 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 11 Feb 2022 14:43:37 -0500 Subject: [PATCH 58/88] Use color in announcement --- bookwyrm/templates/snippets/announcement.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/snippets/announcement.html b/bookwyrm/templates/snippets/announcement.html index c8eca6ad1..ec1555d8f 100644 --- a/bookwyrm/templates/snippets/announcement.html +++ b/bookwyrm/templates/snippets/announcement.html @@ -1,7 +1,7 @@ {% load humanize %}{% load i18n %}{% load utilities %} {% with announcement.id|uuid as uuid %}