diff --git a/.env.example b/.env.example index bd4f6698e..7769a67b1 100644 --- a/.env.example +++ b/.env.example @@ -8,6 +8,8 @@ USE_HTTPS=true DOMAIN=your.domain.here EMAIL=your@email.here +# Instance defualt language (see options at bookwyrm/settings.py "LANGUAGES" +LANGUAGE_CODE="en-us" # Used for deciding which editions to prefer DEFAULT_LANGUAGE="English" diff --git a/bookwyrm/activitypub/verbs.py b/bookwyrm/activitypub/verbs.py index b32b04133..36898bc7e 100644 --- a/bookwyrm/activitypub/verbs.py +++ b/bookwyrm/activitypub/verbs.py @@ -38,7 +38,7 @@ class Create(Verb): class Delete(Verb): """Create activity""" - to: List[str] + to: List[str] = field(default_factory=lambda: []) cc: List[str] = field(default_factory=lambda: []) type: str = "Delete" @@ -137,8 +137,8 @@ class Accept(Verb): type: str = "Accept" def action(self): - """find and remove the activity object""" - obj = self.object.to_model(save=False, allow_create=False) + """accept a request""" + obj = self.object.to_model(save=False, allow_create=True) obj.accept() @@ -150,7 +150,7 @@ class Reject(Verb): type: str = "Reject" def action(self): - """find and remove the activity object""" + """reject a follow request""" obj = self.object.to_model(save=False, allow_create=False) obj.reject() diff --git a/bookwyrm/apps.py b/bookwyrm/apps.py index 8c9332cd2..af3b064e9 100644 --- a/bookwyrm/apps.py +++ b/bookwyrm/apps.py @@ -1,8 +1,34 @@ +"""Do further startup configuration and initialization""" +import os +import urllib +import logging + from django.apps import AppConfig + from bookwyrm import settings +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) + except: # pylint: disable=bare-except + logger.exception("Unknown error in file download") + class BookwyrmConfig(AppConfig): + """Handles additional configuration""" + name = "bookwyrm" verbose_name = "BookWyrm" @@ -11,3 +37,15 @@ class BookwyrmConfig(AppConfig): 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..") + 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/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index 5ed57df1f..d8b9c6300 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -1,7 +1,11 @@ """ 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 import requests from requests.exceptions import RequestException @@ -248,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}") @@ -280,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, @@ -290,10 +297,32 @@ 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 resp + 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, None + + 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: diff --git a/bookwyrm/emailing.py b/bookwyrm/emailing.py index efef12638..80aca071b 100644 --- a/bookwyrm/emailing.py +++ b/bookwyrm/emailing.py @@ -48,7 +48,9 @@ def moderation_report_email(report): data["reportee"] = report.user.localname or report.user.username data["report_link"] = report.remote_id - for admin in models.User.objects.filter(groups__name__in=["admin", "moderator"]): + for admin in models.User.objects.filter( + groups__name__in=["admin", "moderator"] + ).distinct(): data["user"] = admin.display_name send_email.delay(admin.email, *format_email("moderation_report", data)) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 5ab908955..564ea91b2 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 @@ -227,6 +228,34 @@ class FileLinkForm(CustomForm): 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") + 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": + # pylint: disable=line-too-long + 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(): + # pylint: disable=line-too-long + 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): class Meta: @@ -444,6 +473,12 @@ class ListForm(CustomForm): fields = ["user", "name", "description", "curation", "privacy", "group"] +class ListItemForm(CustomForm): + class Meta: + model = models.ListItem + fields = ["user", "book", "book_list", "notes"] + + class GroupForm(CustomForm): class Meta: model = models.Group @@ -500,7 +535,7 @@ class ReadThroughForm(CustomForm): cleaned_data = super().clean() start_date = cleaned_data.get("start_date") finish_date = cleaned_data.get("finish_date") - if start_date > finish_date: + if start_date and finish_date and start_date > finish_date: self.add_error( "finish_date", _("Reading finish date cannot be before start date.") ) diff --git a/bookwyrm/management/commands/initdb.py b/bookwyrm/management/commands/initdb.py index 37dd66af4..09d864626 100644 --- a/bookwyrm/management/commands/initdb.py +++ b/bookwyrm/management/commands/initdb.py @@ -19,9 +19,7 @@ def init_permissions(): { "codename": "edit_instance_settings", "name": "change the instance info", - "groups": [ - "admin", - ], + "groups": ["admin"], }, { "codename": "set_user_group", @@ -55,7 +53,7 @@ def init_permissions(): }, ] - content_type = models.ContentType.objects.get_for_model(User) + content_type = ContentType.objects.get_for_model(models.User) for permission in permissions: permission_obj = Permission.objects.create( codename=permission["codename"], @@ -66,15 +64,12 @@ def init_permissions(): for group_name in permission["groups"]: Group.objects.get(name=group_name).permissions.add(permission_obj) - # while the groups and permissions shouldn't be changed because the code - # depends on them, what permissions go with what groups should be editable - def init_connectors(): """access book data sources""" models.Connector.objects.create( identifier="bookwyrm.social", - name="BookWyrm dot Social", + name="Bookwyrm.social", connector_file="bookwyrm_connector", base_url="https://bookwyrm.social", books_url="https://bookwyrm.social/book", @@ -84,6 +79,7 @@ def init_connectors(): priority=2, ) + # pylint: disable=line-too-long models.Connector.objects.create( identifier="inventaire.io", name="Inventaire", @@ -127,7 +123,7 @@ def init_settings(): ) -def init_link_domains(*_): +def init_link_domains(): """safe book links""" domains = [ ("standardebooks.org", "Standard EBooks"), @@ -144,10 +140,15 @@ def init_link_domains(*_): ) +# pylint: disable=no-self-use +# pylint: disable=unused-argument class Command(BaseCommand): + """command-line options""" + help = "Initializes the database with starter data" def add_arguments(self, parser): + """specify which function to run""" parser.add_argument( "--limit", default=None, @@ -155,6 +156,7 @@ class Command(BaseCommand): ) def handle(self, *args, **options): + """execute init""" limit = options.get("limit") tables = [ "group", @@ -164,7 +166,7 @@ class Command(BaseCommand): "settings", "linkdomain", ] - if limit not in tables: + if limit and limit not in tables: raise Exception("Invalid table limit:", limit) if not limit or limit == "group": diff --git a/bookwyrm/migrations/0130_alter_listitem_notes.py b/bookwyrm/migrations/0130_alter_listitem_notes.py new file mode 100644 index 000000000..a12efd40d --- /dev/null +++ b/bookwyrm/migrations/0130_alter_listitem_notes.py @@ -0,0 +1,21 @@ +# Generated by Django 3.2.10 on 2022-01-24 20:01 + +import bookwyrm.models.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0129_auto_20220117_1716"), + ] + + operations = [ + migrations.AlterField( + model_name="listitem", + name="notes", + field=bookwyrm.models.fields.TextField( + blank=True, max_length=300, null=True + ), + ), + ] diff --git a/bookwyrm/migrations/0130_alter_user_preferred_language.py b/bookwyrm/migrations/0130_alter_user_preferred_language.py new file mode 100644 index 000000000..cd5a07eab --- /dev/null +++ b/bookwyrm/migrations/0130_alter_user_preferred_language.py @@ -0,0 +1,37 @@ +# Generated by Django 3.2.10 on 2022-01-24 17:32 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0129_auto_20220117_1716"), + ] + + 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", "Swedish (Svenska)"), + ("zh-hans", "简体中文 (Simplified Chinese)"), + ("zh-hant", "繁體中文 (Traditional Chinese)"), + ], + max_length=255, + null=True, + ), + ), + ] diff --git a/bookwyrm/migrations/0131_merge_20220125_1644.py b/bookwyrm/migrations/0131_merge_20220125_1644.py new file mode 100644 index 000000000..954ddacc4 --- /dev/null +++ b/bookwyrm/migrations/0131_merge_20220125_1644.py @@ -0,0 +1,13 @@ +# Generated by Django 3.2.10 on 2022-01-25 16:44 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0130_alter_listitem_notes"), + ("bookwyrm", "0130_alter_user_preferred_language"), + ] + + operations = [] 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, + ), + ), + ] 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/book.py b/bookwyrm/models/book.py index 8d1b70ae2..ffc03d3e6 100644 --- a/bookwyrm/models/book.py +++ b/bookwyrm/models/book.py @@ -342,6 +342,11 @@ class Edition(Book): # set rank self.edition_rank = self.get_rank() + # clear author cache + if self.id: + for author_id in self.authors.values_list("id", flat=True): + cache.delete(f"author-books-{author_id}") + return super().save(*args, **kwargs) @classmethod 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/models/list.py b/bookwyrm/models/list.py index d159bc4a8..ea524cc54 100644 --- a/bookwyrm/models/list.py +++ b/bookwyrm/models/list.py @@ -2,6 +2,7 @@ import uuid from django.apps import apps +from django.core.exceptions import PermissionDenied from django.db import models from django.db.models import Q from django.utils import timezone @@ -74,6 +75,22 @@ class List(OrderedCollectionMixin, BookWyrmModel): return super().raise_not_editable(viewer) + def raise_not_submittable(self, viewer): + """can the user submit a book to the list?""" + # if you can't view the list you can't submit to it + self.raise_visible_to_user(viewer) + + # all good if you're the owner or the list is open + if self.user == viewer or self.curation in ["open", "curated"]: + return + if self.curation == "group": + is_group_member = GroupMember.objects.filter( + group=self.group, user=viewer + ).exists() + if is_group_member: + return + raise PermissionDenied() + @classmethod def followers_filter(cls, queryset, viewer): """Override filter for "followers" privacy level to allow non-following @@ -125,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) + 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/models/report.py b/bookwyrm/models/report.py index a9f5b3b1e..bd2a1ef0e 100644 --- a/bookwyrm/models/report.py +++ b/bookwyrm/models/report.py @@ -1,5 +1,6 @@ """ flagged for moderation """ from django.db import models +from bookwyrm.settings import DOMAIN from .base_model import BookWyrmModel @@ -15,6 +16,9 @@ class Report(BookWyrmModel): links = models.ManyToManyField("Link", blank=True) resolved = models.BooleanField(default=False) + def get_remote_id(self): + return f"https://{DOMAIN}/settings/reports/{self.id}" + class Meta: """set order by default""" diff --git a/bookwyrm/models/shelf.py b/bookwyrm/models/shelf.py index c578f0827..320d495d2 100644 --- a/bookwyrm/models/shelf.py +++ b/bookwyrm/models/shelf.py @@ -1,5 +1,6 @@ """ puttin' books on shelves """ import re +from django.core.cache import cache from django.core.exceptions import PermissionDenied from django.db import models from django.utils import timezone @@ -94,8 +95,15 @@ class ShelfBook(CollectionItemMixin, BookWyrmModel): def save(self, *args, **kwargs): if not self.user: self.user = self.shelf.user + if self.id and self.user.local: + cache.delete(f"book-on-shelf-{self.book.id}-{self.shelf.id}") super().save(*args, **kwargs) + def delete(self, *args, **kwargs): + if self.id and self.user.local: + cache.delete(f"book-on-shelf-{self.book.id}-{self.shelf.id}") + super().delete(*args, **kwargs) + class Meta: """an opinionated constraint! you can't put a book on shelf twice""" diff --git a/bookwyrm/models/site.py b/bookwyrm/models/site.py index 5d91553e3..b2119e238 100644 --- a/bookwyrm/models/site.py +++ b/bookwyrm/models/site.py @@ -90,6 +90,14 @@ class SiteSettings(models.Model): return get_absolute_url(uploaded) return urljoin(STATIC_FULL_URL, default_path) + def save(self, *args, **kwargs): + """if require_confirm_email is disabled, make sure no users are pending""" + if not self.require_confirm_email: + User.objects.filter(is_active=False, deactivation_reason="pending").update( + is_active=True, deactivation_reason=None + ) + super().save(*args, **kwargs) + class SiteInvite(models.Model): """gives someone access to create an account on the instance""" diff --git a/bookwyrm/models/status.py b/bookwyrm/models/status.py index ee138d979..29b3ba9cc 100644 --- a/bookwyrm/models/status.py +++ b/bookwyrm/models/status.py @@ -3,6 +3,7 @@ from dataclasses import MISSING import re from django.apps import apps +from django.core.cache import cache from django.core.exceptions import PermissionDenied from django.core.validators import MaxValueValidator, MinValueValidator from django.db import models @@ -373,6 +374,12 @@ class Review(BookStatus): activity_serializer = activitypub.Review pure_type = "Article" + def save(self, *args, **kwargs): + """clear rating caches""" + if self.book.parent_work: + cache.delete(f"book-rating-{self.book.parent_work.id}-*") + super().save(*args, **kwargs) + class ReviewRating(Review): """a subtype of review that only contains a rating""" diff --git a/bookwyrm/preview_images.py b/bookwyrm/preview_images.py index a97ae2d5c..891c8b6da 100644 --- a/bookwyrm/preview_images.py +++ b/bookwyrm/preview_images.py @@ -4,6 +4,7 @@ import os import textwrap from io import BytesIO from uuid import uuid4 +import logging import colorsys from colorthief import ColorThief @@ -17,34 +18,49 @@ 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/public_sans") -def get_font(font_name, 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") +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"]) + 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): + """Gets a custom font with the given weight and size""" + font = get_imagefont(DEFAULT_FONT, size) 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") + except AttributeError: + pass return font diff --git a/bookwyrm/sanitize_html.py b/bookwyrm/sanitize_html.py index 8b0e3c4cb..4edd2818e 100644 --- a/bookwyrm/sanitize_html.py +++ b/bookwyrm/sanitize_html.py @@ -22,6 +22,7 @@ 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 +31,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/settings.py b/bookwyrm/settings.py index fe2c0ac76..8b715cc50 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -9,12 +9,12 @@ from django.utils.translation import gettext_lazy as _ env = Env() env.read_env() DOMAIN = env("DOMAIN") -VERSION = "0.2.0" +VERSION = "0.3.0" PAGE_LENGTH = env("PAGE_LENGTH", 15) DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English") -JS_CACHE = "76c5ff1f" +JS_CACHE = "7b5303af" # email EMAIL_BACKEND = env("EMAIL_BACKEND", "django.core.mail.backends.smtp.EmailBackend") @@ -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,17 @@ 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 = { + # pylint: disable=line-too-long + "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/ @@ -106,6 +120,61 @@ TEMPLATES = [ }, ] +LOG_LEVEL = env("LOG_LEVEL", "INFO").upper() +# Override aspects of the default handler to our taste +# See https://docs.djangoproject.com/en/3.2/topics/logging/#default-logging-configuration +# for a reference to the defaults we're overriding +# +# It seems that in order to override anything you have to include its +# entire dependency tree (handlers and filters) which makes this a +# bit verbose +LOGGING = { + "version": 1, + "disable_existing_loggers": False, + "filters": { + # These are copied from the default configuration, required for + # implementing mail_admins below + "require_debug_false": { + "()": "django.utils.log.RequireDebugFalse", + }, + "require_debug_true": { + "()": "django.utils.log.RequireDebugTrue", + }, + }, + "handlers": { + # Overrides the default handler to make it log to console + # regardless of the DEBUG setting (default is to not log to + # console if DEBUG=False) + "console": { + "level": LOG_LEVEL, + "class": "logging.StreamHandler", + }, + # This is copied as-is from the default logger, and is + # required for the django section below + "mail_admins": { + "level": "ERROR", + "filters": ["require_debug_false"], + "class": "django.utils.log.AdminEmailHandler", + }, + }, + "loggers": { + # Install our new console handler for Django's logger, and + # override the log level while we're at it + "django": { + "handlers": ["console", "mail_admins"], + "level": LOG_LEVEL, + }, + "django.utils.autoreload": { + "level": "INFO", + }, + # Add a bookwyrm-specific logger + "bookwyrm": { + "handlers": ["console"], + "level": LOG_LEVEL, + }, + }, +} + WSGI_APPLICATION = "bookwyrm.wsgi.application" @@ -196,7 +265,7 @@ AUTH_PASSWORD_VALIDATORS = [ # Internationalization # https://docs.djangoproject.com/en/3.2/topics/i18n/ -LANGUAGE_CODE = "en-us" +LANGUAGE_CODE = env("LANGUAGE_CODE", "en-us") LANGUAGES = [ ("en-us", _("English")), ("de-de", _("Deutsch (German)")), @@ -208,6 +277,7 @@ LANGUAGES = [ ("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)")), ] @@ -263,16 +333,11 @@ 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")) OTEL_EXPORTER_OTLP_ENDPOINT = env("OTEL_EXPORTER_OTLP_ENDPOINT", None) OTEL_EXPORTER_OTLP_HEADERS = env("OTEL_EXPORTER_OTLP_HEADERS", None) 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 diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js index 94163787d..cf3ce3032 100644 --- a/bookwyrm/static/js/bookwyrm.js +++ b/bookwyrm/static/js/bookwyrm.js @@ -122,39 +122,13 @@ let BookWyrm = new (class { */ updateCountElement(counter, data) { let count = data.count; - const count_by_type = data.count_by_type; + + if (count === undefined) { + return; + } + const currentCount = counter.innerText; const hasMentions = data.has_mentions; - const allowedStatusTypesEl = document.getElementById("unread-notifications-wrapper"); - - // If we're on the right counter element - if (counter.closest("[data-poll-wrapper]").contains(allowedStatusTypesEl)) { - const allowedStatusTypes = JSON.parse(allowedStatusTypesEl.textContent); - - // For keys in common between allowedStatusTypes and count_by_type - // This concerns 'review', 'quotation', 'comment' - count = allowedStatusTypes.reduce(function (prev, currentKey) { - const currentValue = count_by_type[currentKey] | 0; - - return prev + currentValue; - }, 0); - - // Add all the "other" in count_by_type if 'everything' is allowed - if (allowedStatusTypes.includes("everything")) { - // Clone count_by_type with 0 for reviews/quotations/comments - const count_by_everything_else = Object.assign({}, count_by_type, { - review: 0, - quotation: 0, - comment: 0, - }); - - count = Object.keys(count_by_everything_else).reduce(function (prev, currentKey) { - const currentValue = count_by_everything_else[currentKey] | 0; - - return prev + currentValue; - }, count); - } - } if (count != currentCount) { this.addRemoveClass(counter.closest("[data-poll-wrapper]"), "is-hidden", count < 1); @@ -517,7 +491,7 @@ let BookWyrm = new (class { duplicateInput(event) { const trigger = event.currentTarget; - const input_id = trigger.dataset["duplicate"]; + const input_id = trigger.dataset.duplicate; const orig = document.getElementById(input_id); const parent = orig.parentNode; const new_count = parent.querySelectorAll("input").length + 1; diff --git a/bookwyrm/templates/about/about.html b/bookwyrm/templates/about/about.html index d39d70486..6f16aa675 100644 --- a/bookwyrm/templates/about/about.html +++ b/bookwyrm/templates/about/about.html @@ -2,7 +2,7 @@ {% load humanize %} {% load i18n %} {% load utilities %} -{% load bookwyrm_tags %} +{% load landing_page_tags %} {% load cache %} {% block title %} @@ -12,6 +12,7 @@ {% block about_content %} {# seven day cache #} {% cache 604800 about_page %} + {% get_book_superlatives as superlatives %}

@@ -26,8 +27,8 @@

- {% if top_rated %} - {% with book=superlatives.top_rated.default_edition rating=top_rated.rating %} + {% if superlatives.top_rated %} + {% with book=superlatives.top_rated.default_edition rating=superlatives.top_rated.rating %}
@@ -45,7 +46,7 @@ {% endwith %} {% endif %} - {% if wanted %} + {% if superlatives.wanted %} {% with book=superlatives.wanted.default_edition %}
@@ -64,7 +65,7 @@ {% endwith %} {% endif %} - {% if controversial %} + {% if superlatives.controversial %} {% with book=superlatives.controversial.default_edition %}
@@ -95,7 +96,7 @@

{% trans "Meet your admins" %}

{% url "conduct" as coc_path %} - {% blocktrans with site_name=site.name %} + {% blocktrans trimmed with site_name=site.name %} {{ site_name }}'s moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior. {% endblocktrans %}

diff --git a/bookwyrm/templates/author/author.html b/bookwyrm/templates/author/author.html index 27beeb468..afbf31784 100644 --- a/bookwyrm/templates/author/author.html +++ b/bookwyrm/templates/author/author.html @@ -66,7 +66,7 @@
{% if author.wikipedia_link %} @@ -74,7 +74,7 @@ {% if author.isni %} @@ -83,7 +83,7 @@ {% trans "Load data" as button_text %} {% if author.openlibrary_key %}
- + {% trans "View on OpenLibrary" %} {% if request.user.is_authenticated and perms.bookwyrm.edit_book %} @@ -98,7 +98,7 @@ {% if author.inventaire_id %}
- + {% trans "View on Inventaire" %} @@ -114,7 +114,7 @@ {% if author.librarything_key %} @@ -122,7 +122,7 @@ {% if author.goodreads_key %} @@ -141,12 +141,14 @@

{% blocktrans with name=author.name %}Books by {{ name }}{% endblocktrans %}

{% for book in books %} + {% with book=book.default_edition %}
{% include 'landing/small-book.html' with book=book %}
{% include 'snippets/shelve_button/shelve_button.html' with book=book %}
+ {% endwith %} {% endfor %}
diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index f6d9929dd..e15b656cf 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -1,6 +1,6 @@ {% extends 'layout.html' %} {% load i18n %} -{% load bookwyrm_tags %} +{% load book_display_tags %} {% load humanize %} {% load utilities %} {% load static %} @@ -122,7 +122,7 @@ {% trans "Load data" as button_text %} {% if book.openlibrary_key %}

- + {% trans "View on OpenLibrary" %} {% if request.user.is_authenticated and perms.bookwyrm.edit_book %} @@ -136,7 +136,7 @@ {% endif %} {% if book.inventaire_id %}

- + {% trans "View on Inventaire" %} @@ -356,10 +356,11 @@

{% csrf_token %} +
- {% for list in user.list_set.all %} {% endfor %} diff --git a/bookwyrm/templates/book/editions/format_filter.html b/bookwyrm/templates/book/editions/format_filter.html index c722b24f8..4e0f3c9b6 100644 --- a/bookwyrm/templates/book/editions/format_filter.html +++ b/bookwyrm/templates/book/editions/format_filter.html @@ -2,15 +2,17 @@ {% load i18n %} {% block filter %} - -
- +
+ +
+ +
{% endblock %} diff --git a/bookwyrm/templates/book/editions/language_filter.html b/bookwyrm/templates/book/editions/language_filter.html index d9051fd81..d14e3353c 100644 --- a/bookwyrm/templates/book/editions/language_filter.html +++ b/bookwyrm/templates/book/editions/language_filter.html @@ -2,15 +2,17 @@ {% load i18n %} {% block filter %} - -
- +
+ +
+ +
{% endblock %} diff --git a/bookwyrm/templates/book/editions/search_filter.html b/bookwyrm/templates/book/editions/search_filter.html index f2345a688..91c76422d 100644 --- a/bookwyrm/templates/book/editions/search_filter.html +++ b/bookwyrm/templates/book/editions/search_filter.html @@ -2,7 +2,9 @@ {% load i18n %} {% block filter %} - - +
+ + +
{% endblock %} 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/book/file_links/edit_links.html b/bookwyrm/templates/book/file_links/edit_links.html index 8dad6c40a..39d3b998b 100644 --- a/bookwyrm/templates/book/file_links/edit_links.html +++ b/bookwyrm/templates/book/file_links/edit_links.html @@ -39,7 +39,7 @@ {% for link in links %} - {{ link.url }} + {{ link.url }} {{ link.added_by.display_name }} diff --git a/bookwyrm/templates/book/file_links/links.html b/bookwyrm/templates/book/file_links/links.html index 25e0ba89a..2147bf6e0 100644 --- a/bookwyrm/templates/book/file_links/links.html +++ b/bookwyrm/templates/book/file_links/links.html @@ -1,5 +1,5 @@ {% load i18n %} -{% load bookwyrm_tags %} +{% load book_display_tags %} {% load utilities %} {% get_book_file_links book as links %} @@ -28,7 +28,7 @@ {% for link in links.all %} {% join "verify" link.id as verify_modal %}
  • - {{ link.name }} + {{ link.name }} ({{ link.filetype }}) {% if link.availability != "free" %} diff --git a/bookwyrm/templates/book/file_links/verification_modal.html b/bookwyrm/templates/book/file_links/verification_modal.html index 1d53c1ef2..81685da0f 100644 --- a/bookwyrm/templates/book/file_links/verification_modal.html +++ b/bookwyrm/templates/book/file_links/verification_modal.html @@ -17,7 +17,7 @@ Is that where you'd like to go? {% block modal-footer %} -{% trans "Continue" %} +{% trans "Continue" %} {% if request.user.is_authenticated %} diff --git a/bookwyrm/templates/discover/large-book.html b/bookwyrm/templates/discover/large-book.html index 1fa0afb92..a6ff0aca0 100644 --- a/bookwyrm/templates/discover/large-book.html +++ b/bookwyrm/templates/discover/large-book.html @@ -1,4 +1,4 @@ -{% load bookwyrm_tags %} +{% load rating_tags %} {% load i18n %} {% load utilities %} {% load status_display %} diff --git a/bookwyrm/templates/discover/small-book.html b/bookwyrm/templates/discover/small-book.html index 76732ca14..2da93d522 100644 --- a/bookwyrm/templates/discover/small-book.html +++ b/bookwyrm/templates/discover/small-book.html @@ -1,4 +1,4 @@ -{% load bookwyrm_tags %} +{% load landing_page_tags %} {% load utilities %} {% load i18n %} {% load status_display %} diff --git a/bookwyrm/templates/feed/feed.html b/bookwyrm/templates/feed/feed.html index dbbc650f5..9e625313f 100644 --- a/bookwyrm/templates/feed/feed.html +++ b/bookwyrm/templates/feed/feed.html @@ -24,9 +24,12 @@ {# announcements and system messages #} {% if not activities.number > 1 %} - {% if request.user.show_goal and not goal and tab.key == 'home' %} diff --git a/bookwyrm/templates/feed/status.html b/bookwyrm/templates/feed/status.html index e7b9280d7..ed828ae01 100644 --- a/bookwyrm/templates/feed/status.html +++ b/bookwyrm/templates/feed/status.html @@ -1,6 +1,6 @@ {% extends 'feed/layout.html' %} +{% load feed_page_tags %} {% load i18n %} -{% load bookwyrm_tags %} {% block opengraph_images %} diff --git a/bookwyrm/templates/feed/suggested_books.html b/bookwyrm/templates/feed/suggested_books.html index a3d3f1fad..435d4f513 100644 --- a/bookwyrm/templates/feed/suggested_books.html +++ b/bookwyrm/templates/feed/suggested_books.html @@ -1,5 +1,5 @@ {% load i18n %} -{% load bookwyrm_tags %} +{% load feed_page_tags %} {% suggested_books as suggested_books %}
    diff --git a/bookwyrm/templates/get_started/layout.html b/bookwyrm/templates/get_started/layout.html index 32db56d5d..b8e7c861b 100644 --- a/bookwyrm/templates/get_started/layout.html +++ b/bookwyrm/templates/get_started/layout.html @@ -9,7 +9,7 @@
  • {% if group.user == request.user %} 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/templates/import/tooltip.html b/bookwyrm/templates/import/tooltip.html index 311cce82c..f2712b7e9 100644 --- a/bookwyrm/templates/import/tooltip.html +++ b/bookwyrm/templates/import/tooltip.html @@ -3,6 +3,6 @@ {% block tooltip_content %} -{% trans 'You can download your Goodreads data from the Import/Export page of your Goodreads account.' %} +{% trans 'You can download your Goodreads data from the Import/Export page of your Goodreads account.' %} {% endblock %} diff --git a/bookwyrm/templates/landing/landing.html b/bookwyrm/templates/landing/landing.html index c37717597..ec8bcee06 100644 --- a/bookwyrm/templates/landing/landing.html +++ b/bookwyrm/templates/landing/landing.html @@ -1,7 +1,7 @@ {% extends 'landing/layout.html' %} {% load i18n %} {% load cache %} -{% load bookwyrm_tags %} +{% load landing_page_tags %} {% block panel %} diff --git a/bookwyrm/templates/landing/large-book.html b/bookwyrm/templates/landing/large-book.html index 03ec718ba..9b4fd1f93 100644 --- a/bookwyrm/templates/landing/large-book.html +++ b/bookwyrm/templates/landing/large-book.html @@ -1,4 +1,5 @@ -{% load bookwyrm_tags %} +{% load book_display_tags %} +{% load rating_tags %} {% load markdown %} {% load i18n %} diff --git a/bookwyrm/templates/landing/small-book.html b/bookwyrm/templates/landing/small-book.html index 813fb797d..31b095803 100644 --- a/bookwyrm/templates/landing/small-book.html +++ b/bookwyrm/templates/landing/small-book.html @@ -1,4 +1,4 @@ -{% load bookwyrm_tags %} +{% load rating_tags %} {% load i18n %} {% if book %} diff --git a/bookwyrm/templates/lists/add_item_modal.html b/bookwyrm/templates/lists/add_item_modal.html new file mode 100644 index 000000000..5c210d462 --- /dev/null +++ b/bookwyrm/templates/lists/add_item_modal.html @@ -0,0 +1,45 @@ +{% extends 'components/modal.html' %} +{% load i18n %} +{% load utilities %} +{% load group_tags %} + +{% block modal-title %} +{% if list.curation == 'open' or request.user == list.user or list.group|is_member:request.user %} + {% blocktrans trimmed with title=book|book_title %} + Add "{{ title }}" to this list + {% endblocktrans %} +{% else %} + {% blocktrans trimmed with title=book|book_title %} + Suggest "{{ title }}" for this list + {% endblocktrans %} +{% endif %} +{% endblock %} + +{% block modal-form-open %} +
    +{% endblock %} + +{% block modal-body %} + {% csrf_token %} + + + + {% include "lists/item_notes_field.html" with form_id=id show_label=True %} +{% endblock %} + +{% block modal-footer %} + + +{% endblock %} + +{% block modal-form-close %}
    {% endblock %} diff --git a/bookwyrm/templates/lists/curate.html b/bookwyrm/templates/lists/curate.html index 927fb5b6a..9b484eb40 100644 --- a/bookwyrm/templates/lists/curate.html +++ b/bookwyrm/templates/lists/curate.html @@ -1,5 +1,6 @@ {% extends 'lists/layout.html' %} {% load i18n %} +{% load utilities %} {% block breadcrumbs %}
    -
    +
    - +
    diff --git a/bookwyrm/templates/snippets/generated_status/review_pure_name.html b/bookwyrm/templates/snippets/generated_status/review_pure_name.html index d67fd0180..27e1cf189 100644 --- a/bookwyrm/templates/snippets/generated_status/review_pure_name.html +++ b/bookwyrm/templates/snippets/generated_status/review_pure_name.html @@ -2,15 +2,15 @@ {% if rating %} {% blocktrans trimmed with book_title=book.title|safe book_path=book.local_path display_rating=rating|floatformat:"-1" review_title=name|safe count counter=rating %} -Review of "{{ book_title }}" ({{ display_rating }} star): {{ review_title }} +Review of "{{ book_title }}" ({{ display_rating }} star): {{ review_title }} {% plural %} -Review of "{{ book_title }}" ({{ display_rating }} stars): {{ review_title }} +Review of "{{ book_title }}" ({{ display_rating }} stars): {{ review_title }} {% endblocktrans %} {% else %} {% blocktrans trimmed with book_title=book.title|safe book_path=book.local_path review_title=name|safe %} -Review of "{{ book_title }}": {{ review_title }} +Review of "{{ book_title }}": {{ review_title }} {% endblocktrans %} {% endif %} diff --git a/bookwyrm/templates/snippets/join_invitation_buttons.html b/bookwyrm/templates/snippets/join_invitation_buttons.html index 46c4071d4..b77ce43cb 100644 --- a/bookwyrm/templates/snippets/join_invitation_buttons.html +++ b/bookwyrm/templates/snippets/join_invitation_buttons.html @@ -1,5 +1,6 @@ {% load i18n %} -{% load bookwyrm_group_tags %} +{% load group_tags %} + {% if group|is_invited:request.user %}
    diff --git a/bookwyrm/templates/snippets/rate_action.html b/bookwyrm/templates/snippets/rate_action.html index 767039a3d..6ecbceffc 100644 --- a/bookwyrm/templates/snippets/rate_action.html +++ b/bookwyrm/templates/snippets/rate_action.html @@ -1,5 +1,6 @@ {% load i18n %} -{% load bookwyrm_tags %} +{% load rating_tags %} + {% if request.user.is_authenticated %} {% trans "Leave a rating" %}
    diff --git a/bookwyrm/templates/snippets/remove_from_group_button.html b/bookwyrm/templates/snippets/remove_from_group_button.html index 1672e0388..2e08760f3 100644 --- a/bookwyrm/templates/snippets/remove_from_group_button.html +++ b/bookwyrm/templates/snippets/remove_from_group_button.html @@ -1,5 +1,6 @@ {% load i18n %} -{% load bookwyrm_group_tags %} +{% load group_tags %} + {% if request.user == user or not request.user == group.user or not request.user.is_authenticated %} {% else %} {% if user in request.user.blocks.all %} diff --git a/bookwyrm/templates/snippets/report_modal.html b/bookwyrm/templates/snippets/report_modal.html index 7d2e52b64..f65cab590 100644 --- a/bookwyrm/templates/snippets/report_modal.html +++ b/bookwyrm/templates/snippets/report_modal.html @@ -22,7 +22,7 @@ {% csrf_token %} -{% if status %} +{% if status_id %} {% endif %} {% if link %} @@ -50,9 +50,7 @@ {% block modal-footer %} -{% if not static %} - -{% endif %} + {% endblock %} diff --git a/bookwyrm/templates/snippets/shelf_selector.html b/bookwyrm/templates/snippets/shelf_selector.html index 323e04a27..197cf5b6c 100644 --- a/bookwyrm/templates/snippets/shelf_selector.html +++ b/bookwyrm/templates/snippets/shelf_selector.html @@ -1,7 +1,7 @@ {% extends 'components/dropdown.html' %} -{% load i18n %} -{% load bookwyrm_tags %} +{% load shelf_tags %} {% load utilities %} +{% load i18n %} {% block dropdown-trigger %} {% trans "Move book" %} @@ -17,7 +17,7 @@ {% if shelf.editable %} @@ -58,7 +58,7 @@ {% if active_shelf.shelf %}
    {% endwith %} - {% endcache %} {% endif %} {% endspaceless %} diff --git a/bookwyrm/templates/snippets/user_options.html b/bookwyrm/templates/snippets/user_options.html index 3db3c2b17..35abc98c2 100644 --- a/bookwyrm/templates/snippets/user_options.html +++ b/bookwyrm/templates/snippets/user_options.html @@ -10,7 +10,9 @@ {% block dropdown-list %}
  • - {% trans "Send direct message" %} +
  • {% include 'snippets/report_button.html' with user=user class="is-fullwidth" %} diff --git a/bookwyrm/templates/user/layout.html b/bookwyrm/templates/user/layout.html index 03e3dfce8..65b6a9ac9 100755 --- a/bookwyrm/templates/user/layout.html +++ b/bookwyrm/templates/user/layout.html @@ -4,7 +4,7 @@ {% load utilities %} {% load markdown %} {% load layout %} -{% load bookwyrm_group_tags %} +{% load group_tags %} {% block title %}{{ user.display_name }}{% endblock %} diff --git a/bookwyrm/templates/user/user_preview.html b/bookwyrm/templates/user/user_preview.html index c46563e59..23dd3ab55 100755 --- a/bookwyrm/templates/user/user_preview.html +++ b/bookwyrm/templates/user/user_preview.html @@ -1,7 +1,7 @@ {% load i18n %} {% load humanize %} {% load utilities %} -{% load bookwyrm_tags %} +{% load user_page_tags %}
    diff --git a/bookwyrm/templatetags/book_display_tags.py b/bookwyrm/templatetags/book_display_tags.py new file mode 100644 index 000000000..9db79f8e4 --- /dev/null +++ b/bookwyrm/templatetags/book_display_tags.py @@ -0,0 +1,17 @@ +""" template filters """ +from django import template + + +register = template.Library() + + +@register.filter(name="book_description") +def get_book_description(book): + """use the work's text if the book doesn't have it""" + return book.description or book.parent_work.description + + +@register.simple_tag(takes_context=False) +def get_book_file_links(book): + """links for a book""" + return book.file_links.filter(domain__status="approved") diff --git a/bookwyrm/templatetags/bookwyrm_tags.py b/bookwyrm/templatetags/bookwyrm_tags.py deleted file mode 100644 index a3e89d9e5..000000000 --- a/bookwyrm/templatetags/bookwyrm_tags.py +++ /dev/null @@ -1,206 +0,0 @@ -""" template filters """ -from django import template -from django.db.models import Avg, StdDev, Count, F, Q - -from bookwyrm import models -from bookwyrm.utils import cache -from bookwyrm.views.feed import get_suggested_books - - -register = template.Library() - - -@register.filter(name="rating") -def get_rating(book, user): - """get the overall rating of a book""" - queryset = models.Review.privacy_filter(user).filter( - book__parent_work__editions=book - ) - return queryset.aggregate(Avg("rating"))["rating__avg"] - - -@register.filter(name="user_rating") -def get_user_rating(book, user): - """get a user's rating of a book""" - rating = ( - models.Review.objects.filter( - user=user, - book=book, - rating__isnull=False, - deleted=False, - ) - .order_by("-published_date") - .first() - ) - if rating: - return rating.rating - return 0 - - -@register.filter(name="book_description") -def get_book_description(book): - """use the work's text if the book doesn't have it""" - return book.description or book.parent_work.description - - -@register.filter(name="next_shelf") -def get_next_shelf(current_shelf): - """shelf you'd use to update reading progress""" - if current_shelf == "to-read": - return "reading" - if current_shelf == "reading": - return "read" - if current_shelf == "read": - return "complete" - return "to-read" - - -@register.filter(name="load_subclass") -def load_subclass(status): - """sometimes you didn't select_subclass""" - if hasattr(status, "quotation"): - return status.quotation - if hasattr(status, "review"): - return status.review - if hasattr(status, "comment"): - return status.comment - if hasattr(status, "generatednote"): - return status.generatednote - return status - - -@register.simple_tag(takes_context=False) -def get_book_superlatives(): - """get book stats for the about page""" - total_ratings = models.Review.objects.filter(local=True, deleted=False).count() - data = {} - data["top_rated"] = ( - models.Work.objects.annotate( - rating=Avg( - "editions__review__rating", - filter=Q(editions__review__local=True, editions__review__deleted=False), - ), - rating_count=Count( - "editions__review", - filter=Q(editions__review__local=True, editions__review__deleted=False), - ), - ) - .annotate(weighted=F("rating") * F("rating_count") / total_ratings) - .filter(rating__gt=4, weighted__gt=0) - .order_by("-weighted") - .first() - ) - - data["controversial"] = ( - models.Work.objects.annotate( - deviation=StdDev( - "editions__review__rating", - filter=Q(editions__review__local=True, editions__review__deleted=False), - ), - rating_count=Count( - "editions__review", - filter=Q(editions__review__local=True, editions__review__deleted=False), - ), - ) - .annotate(weighted=F("deviation") * F("rating_count") / total_ratings) - .filter(weighted__gt=0) - .order_by("-weighted") - .first() - ) - - data["wanted"] = ( - models.Work.objects.annotate( - shelf_count=Count( - "editions__shelves", filter=Q(editions__shelves__identifier="to-read") - ) - ) - .order_by("-shelf_count") - .first() - ) - return data - - -@register.simple_tag(takes_context=False) -def related_status(notification): - """for notifications""" - if not notification.related_status: - return None - return load_subclass(notification.related_status) - - -@register.simple_tag(takes_context=True) -def active_shelf(context, book): - """check what shelf a user has a book on, if any""" - user = context["request"].user - return ( - cache.get_or_set( - f"active_shelf-{user.id}-{book.id}", - lambda u, b: ( - models.ShelfBook.objects.filter( - shelf__user=u, - book__parent_work__editions=b, - ).first() - ), - user, - book, - timeout=15552000, - ) - or {"book": book} - ) - - -@register.simple_tag(takes_context=False) -def latest_read_through(book, user): - """the most recent read activity""" - return cache.get_or_set( - f"latest_read_through-{user.id}-{book.id}", - lambda u, b: ( - models.ReadThrough.objects.filter(user=u, book=b, is_active=True) - .order_by("-start_date") - .first() - ), - user, - book, - timeout=15552000, - ) - - -@register.simple_tag(takes_context=False) -def get_landing_books(): - """list of books for the landing page""" - return list( - set( - models.Edition.objects.filter( - review__published_date__isnull=False, - review__deleted=False, - review__user__local=True, - review__privacy__in=["public", "unlisted"], - ) - .exclude(cover__exact="") - .distinct() - .order_by("-review__published_date")[:6] - ) - ) - - -@register.simple_tag(takes_context=True) -def mutuals_count(context, user): - """how many users that you follow, follow them""" - viewer = context["request"].user - if not viewer.is_authenticated: - return None - return user.followers.filter(followers=viewer).count() - - -@register.simple_tag(takes_context=True) -def suggested_books(context): - """get books for suggested books panel""" - # this happens here instead of in the view so that the template snippet can - # be cached in the template - return get_suggested_books(context["request"].user) - - -@register.simple_tag(takes_context=False) -def get_book_file_links(book): - """links for a book""" - return book.file_links.filter(domain__status="approved") diff --git a/bookwyrm/templatetags/feed_page_tags.py b/bookwyrm/templatetags/feed_page_tags.py new file mode 100644 index 000000000..3d346b9a2 --- /dev/null +++ b/bookwyrm/templatetags/feed_page_tags.py @@ -0,0 +1,28 @@ +""" tags used on the feed pages """ +from django import template +from bookwyrm.views.feed import get_suggested_books + + +register = template.Library() + + +@register.filter(name="load_subclass") +def load_subclass(status): + """sometimes you didn't select_subclass""" + if hasattr(status, "quotation"): + return status.quotation + if hasattr(status, "review"): + return status.review + if hasattr(status, "comment"): + return status.comment + if hasattr(status, "generatednote"): + return status.generatednote + return status + + +@register.simple_tag(takes_context=True) +def suggested_books(context): + """get books for suggested books panel""" + # this happens here instead of in the view so that the template snippet can + # be cached in the template + return get_suggested_books(context["request"].user) diff --git a/bookwyrm/templatetags/bookwyrm_group_tags.py b/bookwyrm/templatetags/group_tags.py similarity index 100% rename from bookwyrm/templatetags/bookwyrm_group_tags.py rename to bookwyrm/templatetags/group_tags.py diff --git a/bookwyrm/templatetags/landing_page_tags.py b/bookwyrm/templatetags/landing_page_tags.py new file mode 100644 index 000000000..e7d943603 --- /dev/null +++ b/bookwyrm/templatetags/landing_page_tags.py @@ -0,0 +1,76 @@ +""" template filters """ +from django import template +from django.db.models import Avg, StdDev, Count, F, Q + +from bookwyrm import models + +register = template.Library() + + +@register.simple_tag(takes_context=False) +def get_book_superlatives(): + """get book stats for the about page""" + total_ratings = models.Review.objects.filter(local=True, deleted=False).count() + data = {} + data["top_rated"] = ( + models.Work.objects.annotate( + rating=Avg( + "editions__review__rating", + filter=Q(editions__review__local=True, editions__review__deleted=False), + ), + rating_count=Count( + "editions__review", + filter=Q(editions__review__local=True, editions__review__deleted=False), + ), + ) + .annotate(weighted=F("rating") * F("rating_count") / total_ratings) + .filter(rating__gt=4, weighted__gt=0) + .order_by("-weighted") + .first() + ) + + data["controversial"] = ( + models.Work.objects.annotate( + deviation=StdDev( + "editions__review__rating", + filter=Q(editions__review__local=True, editions__review__deleted=False), + ), + rating_count=Count( + "editions__review", + filter=Q(editions__review__local=True, editions__review__deleted=False), + ), + ) + .annotate(weighted=F("deviation") * F("rating_count") / total_ratings) + .filter(weighted__gt=0) + .order_by("-weighted") + .first() + ) + + data["wanted"] = ( + models.Work.objects.annotate( + shelf_count=Count( + "editions__shelves", filter=Q(editions__shelves__identifier="to-read") + ) + ) + .order_by("-shelf_count") + .first() + ) + return data + + +@register.simple_tag(takes_context=False) +def get_landing_books(): + """list of books for the landing page""" + return list( + set( + models.Edition.objects.filter( + review__published_date__isnull=False, + review__deleted=False, + review__user__local=True, + review__privacy__in=["public", "unlisted"], + ) + .exclude(cover__exact="") + .distinct() + .order_by("-review__published_date")[:6] + ) + ) diff --git a/bookwyrm/templatetags/notification_page_tags.py b/bookwyrm/templatetags/notification_page_tags.py new file mode 100644 index 000000000..28fa2afb5 --- /dev/null +++ b/bookwyrm/templatetags/notification_page_tags.py @@ -0,0 +1,14 @@ +""" tags used on the feed pages """ +from django import template +from bookwyrm.templatetags.feed_page_tags import load_subclass + + +register = template.Library() + + +@register.simple_tag(takes_context=False) +def related_status(notification): + """for notifications""" + if not notification.related_status: + return None + return load_subclass(notification.related_status) diff --git a/bookwyrm/templatetags/rating_tags.py b/bookwyrm/templatetags/rating_tags.py new file mode 100644 index 000000000..670599e25 --- /dev/null +++ b/bookwyrm/templatetags/rating_tags.py @@ -0,0 +1,42 @@ +""" template filters """ +from django import template +from django.db.models import Avg + +from bookwyrm import models +from bookwyrm.utils import cache + + +register = template.Library() + + +@register.filter(name="rating") +def get_rating(book, user): + """get the overall rating of a book""" + return cache.get_or_set( + f"book-rating-{book.parent_work.id}-{user.id}", + lambda u, b: models.Review.privacy_filter(u) + .filter(book__parent_work__editions=b, rating__gt=0) + .aggregate(Avg("rating"))["rating__avg"] + or 0, + user, + book, + timeout=15552000, + ) + + +@register.filter(name="user_rating") +def get_user_rating(book, user): + """get a user's rating of a book""" + rating = ( + models.Review.objects.filter( + user=user, + book=book, + rating__isnull=False, + deleted=False, + ) + .order_by("-published_date") + .first() + ) + if rating: + return rating.rating + return 0 diff --git a/bookwyrm/templatetags/shelf_tags.py b/bookwyrm/templatetags/shelf_tags.py new file mode 100644 index 000000000..6c4f59c36 --- /dev/null +++ b/bookwyrm/templatetags/shelf_tags.py @@ -0,0 +1,68 @@ +""" Filters and tags related to shelving books """ +from django import template + +from bookwyrm import models +from bookwyrm.utils import cache + + +register = template.Library() + + +@register.filter(name="is_book_on_shelf") +def get_is_book_on_shelf(book, shelf): + """is a book on a shelf""" + return cache.get_or_set( + f"book-on-shelf-{book.id}-{shelf.id}", + lambda b, s: s.books.filter(id=b.id).exists(), + book, + shelf, + timeout=15552000, + ) + + +@register.filter(name="next_shelf") +def get_next_shelf(current_shelf): + """shelf you'd use to update reading progress""" + if current_shelf == "to-read": + return "reading" + if current_shelf == "reading": + return "read" + if current_shelf == "read": + return "complete" + return "to-read" + + +@register.simple_tag(takes_context=True) +def active_shelf(context, book): + """check what shelf a user has a book on, if any""" + user = context["request"].user + return cache.get_or_set( + f"active_shelf-{user.id}-{book.id}", + lambda u, b: ( + models.ShelfBook.objects.filter( + shelf__user=u, + book__parent_work__editions=b, + ).first() + or False + ), + user, + book, + timeout=15552000, + ) or {"book": book} + + +@register.simple_tag(takes_context=False) +def latest_read_through(book, user): + """the most recent read activity""" + return cache.get_or_set( + f"latest_read_through-{user.id}-{book.id}", + lambda u, b: ( + models.ReadThrough.objects.filter(user=u, book=b, is_active=True) + .order_by("-start_date") + .first() + or False + ), + user, + book, + timeout=15552000, + ) diff --git a/bookwyrm/templatetags/user_page_tags.py b/bookwyrm/templatetags/user_page_tags.py new file mode 100644 index 000000000..b3a82597e --- /dev/null +++ b/bookwyrm/templatetags/user_page_tags.py @@ -0,0 +1,14 @@ +""" template filters """ +from django import template + + +register = template.Library() + + +@register.simple_tag(takes_context=True) +def mutuals_count(context, user): + """how many users that you follow, follow them""" + viewer = context["request"].user + if not viewer.is_authenticated: + return None + return user.followers.filter(followers=viewer).count() diff --git a/bookwyrm/tests/activitystreams/test_abstractstream.py b/bookwyrm/tests/activitystreams/test_abstractstream.py index 2c5cf6102..af94233f0 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(), status2) + self.assertEqual(result.last(), status) + self.assertIsInstance(result.first(), 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") 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") diff --git a/bookwyrm/tests/management/test_initdb.py b/bookwyrm/tests/management/test_initdb.py new file mode 100644 index 000000000..e0a037160 --- /dev/null +++ b/bookwyrm/tests/management/test_initdb.py @@ -0,0 +1,113 @@ +""" test populating user streams """ +from django.contrib.auth.models import Group, Permission +from django.test import TestCase + +from bookwyrm import models +from bookwyrm.management.commands import initdb + + +class InitDB(TestCase): + """gotta init that db""" + + def test_init_groups(self): + """Create groups""" + initdb.init_groups() + self.assertEqual(Group.objects.count(), 3) + self.assertTrue(Group.objects.filter(name="admin").exists()) + self.assertTrue(Group.objects.filter(name="moderator").exists()) + self.assertTrue(Group.objects.filter(name="editor").exists()) + + def test_init_permissions(self): + """User permissions""" + initdb.init_groups() + initdb.init_permissions() + + group = Group.objects.get(name="admin") + self.assertTrue( + group.permissions.filter(codename="edit_instance_settings").exists() + ) + self.assertTrue(group.permissions.filter(codename="set_user_group").exists()) + self.assertTrue( + group.permissions.filter(codename="control_federation").exists() + ) + self.assertTrue(group.permissions.filter(codename="create_invites").exists()) + self.assertTrue(group.permissions.filter(codename="moderate_user").exists()) + self.assertTrue(group.permissions.filter(codename="moderate_post").exists()) + self.assertTrue(group.permissions.filter(codename="edit_book").exists()) + + group = Group.objects.get(name="moderator") + self.assertTrue(group.permissions.filter(codename="set_user_group").exists()) + self.assertTrue( + group.permissions.filter(codename="control_federation").exists() + ) + self.assertTrue(group.permissions.filter(codename="create_invites").exists()) + self.assertTrue(group.permissions.filter(codename="moderate_user").exists()) + self.assertTrue(group.permissions.filter(codename="moderate_post").exists()) + self.assertTrue(group.permissions.filter(codename="edit_book").exists()) + + group = Group.objects.get(name="editor") + self.assertTrue(group.permissions.filter(codename="edit_book").exists()) + + def test_init_connectors(self): + """Outside data sources""" + initdb.init_connectors() + self.assertTrue( + models.Connector.objects.filter(identifier="bookwyrm.social").exists() + ) + self.assertTrue( + models.Connector.objects.filter(identifier="inventaire.io").exists() + ) + self.assertTrue( + models.Connector.objects.filter(identifier="openlibrary.org").exists() + ) + + def test_init_settings(self): + """Create the settings file""" + initdb.init_settings() + settings = models.SiteSettings.objects.get() + self.assertEqual(settings.name, "BookWyrm") + + def test_init_link_domains(self): + """Common trusted domains for links""" + initdb.init_link_domains() + self.assertTrue( + models.LinkDomain.objects.filter( + status="approved", domain="standardebooks.org" + ).exists() + ) + self.assertTrue( + models.LinkDomain.objects.filter( + status="approved", domain="theanarchistlibrary.org" + ).exists() + ) + + def test_command_no_args(self): + """command line calls""" + command = initdb.Command() + command.handle() + + # everything should have been called + self.assertEqual(Group.objects.count(), 3) + self.assertTrue(Permission.objects.exists()) + self.assertEqual(models.Connector.objects.count(), 3) + self.assertEqual(models.FederatedServer.objects.count(), 2) + self.assertEqual(models.SiteSettings.objects.count(), 1) + self.assertEqual(models.LinkDomain.objects.count(), 5) + + def test_command_with_args(self): + """command line calls""" + command = initdb.Command() + command.handle(limit="group") + + # everything should have been called + self.assertEqual(Group.objects.count(), 3) + self.assertEqual(models.Connector.objects.count(), 0) + self.assertEqual(models.FederatedServer.objects.count(), 0) + self.assertEqual(models.SiteSettings.objects.count(), 0) + self.assertEqual(models.LinkDomain.objects.count(), 0) + + def test_command_invalid_args(self): + """command line calls""" + command = initdb.Command() + with self.assertRaises(Exception): + command.handle(limit="sdkfjhsdkjf") diff --git a/bookwyrm/tests/models/test_fields.py b/bookwyrm/tests/models/test_fields.py index 935a62632..f7386c2e4 100644 --- a/bookwyrm/tests/models/test_fields.py +++ b/bookwyrm/tests/models/test_fields.py @@ -430,7 +430,7 @@ class ModelFields(TestCase): output = instance.field_to_activity(user.avatar) self.assertIsNotNone( re.match( - fr"https:\/\/{DOMAIN}\/.*\.jpg", + rf"https:\/\/{DOMAIN}\/.*\.jpg", output.url, ) ) @@ -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/bookwyrm/tests/models/test_site.py b/bookwyrm/tests/models/test_site.py index d23f79881..05882268e 100644 --- a/bookwyrm/tests/models/test_site.py +++ b/bookwyrm/tests/models/test_site.py @@ -93,3 +93,48 @@ class SiteModels(TestCase): token = models.PasswordReset.objects.create(user=self.local_user, code="hello") self.assertTrue(token.valid()) self.assertEqual(token.link, f"https://{settings.DOMAIN}/password-reset/hello") + + @patch("bookwyrm.suggested_users.rerank_suggestions_task.delay") + @patch("bookwyrm.suggested_users.remove_user_task.delay") + @patch("bookwyrm.activitystreams.populate_stream_task.delay") + @patch("bookwyrm.lists_stream.populate_lists_task.delay") + def test_change_confirmation_scheme(self, *_): + """Switch from requiring email confirmation to not""" + site = models.SiteSettings.objects.create( + id=1, name="Fish Town", require_confirm_email=True + ) + banned_user = models.User.objects.create_user( + "rat@local.com", + "rat@rat.com", + "ratword", + local=True, + localname="rat", + remote_id="https://example.com/users/rat", + confirmation_code="HELLO", + ) + banned_user.is_active = False + banned_user.deactivation_reason = "banned" + banned_user.save(broadcast=False) + + pending_user = models.User.objects.create_user( + "nutria@local.com", + "nutria@nutria.com", + "nutriaword", + local=True, + localname="nutria", + remote_id="https://example.com/users/nutria", + confirmation_code="HELLO", + ) + pending_user.is_active = False + pending_user.deactivation_reason = "pending" + pending_user.save(broadcast=False) + site.require_confirm_email = False + site.save() + + pending_user.refresh_from_db() + self.assertTrue(pending_user.is_active) + self.assertIsNone(pending_user.deactivation_reason) + + banned_user.refresh_from_db() + self.assertFalse(banned_user.is_active) + self.assertIsNotNone(banned_user.deactivation_reason) diff --git a/bookwyrm/tests/models/test_status_model.py b/bookwyrm/tests/models/test_status_model.py index 69895d9ba..837cd41df 100644 --- a/bookwyrm/tests/models/test_status_model.py +++ b/bookwyrm/tests/models/test_status_model.py @@ -301,7 +301,7 @@ class Status(TestCase): self.assertEqual(activity["type"], "Article") self.assertEqual( activity["name"], - f"Review of \"{self.book.title}\" (3 stars): Review's name", + f'Review of "{self.book.title}" (3 stars): Review\'s name', ) self.assertEqual(activity["content"], "test content") self.assertEqual(activity["attachment"][0].type, "Document") @@ -326,7 +326,7 @@ class Status(TestCase): self.assertEqual(activity["type"], "Article") self.assertEqual( activity["name"], - f"Review of \"{self.book.title}\": Review name", + f'Review of "{self.book.title}": Review name', ) self.assertEqual(activity["content"], "test content") self.assertEqual(activity["attachment"][0].type, "Document") diff --git a/bookwyrm/tests/templatetags/test_book_display_tags.py b/bookwyrm/tests/templatetags/test_book_display_tags.py new file mode 100644 index 000000000..54ae8806b --- /dev/null +++ b/bookwyrm/tests/templatetags/test_book_display_tags.py @@ -0,0 +1,62 @@ +""" style fixes and lookups for templates """ +from unittest.mock import patch + +from django.test import TestCase + +from bookwyrm import models +from bookwyrm.templatetags import book_display_tags + + +@patch("bookwyrm.activitystreams.add_status_task.delay") +@patch("bookwyrm.activitystreams.remove_status_task.delay") +@patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async") +class BookDisplayTags(TestCase): + """lotta different things here""" + + def setUp(self): + """create some filler objects""" + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ), patch("bookwyrm.lists_stream.populate_lists_task.delay"): + self.user = models.User.objects.create_user( + "mouse@example.com", + "mouse@mouse.mouse", + "mouseword", + local=True, + localname="mouse", + ) + self.book = models.Edition.objects.create(title="Test Book") + + def test_get_book_description(self, *_): + """grab it from the edition or the parent""" + work = models.Work.objects.create(title="Test Work") + self.book.parent_work = work + self.book.save() + + self.assertIsNone(book_display_tags.get_book_description(self.book)) + + work.description = "hi" + work.save() + self.assertEqual(book_display_tags.get_book_description(self.book), "hi") + + self.book.description = "hello" + self.book.save() + self.assertEqual(book_display_tags.get_book_description(self.book), "hello") + + def test_get_book_file_links(self, *_): + """load approved links""" + link = models.FileLink.objects.create( + book=self.book, + url="https://web.site/hello", + ) + links = book_display_tags.get_book_file_links(self.book) + # the link is pending + self.assertFalse(links.exists()) + + domain = link.domain + domain.status = "approved" + domain.save() + + links = book_display_tags.get_book_file_links(self.book) + self.assertTrue(links.exists()) + self.assertEqual(links[0], link) diff --git a/bookwyrm/tests/templatetags/test_bookwyrm_tags.py b/bookwyrm/tests/templatetags/test_bookwyrm_tags.py deleted file mode 100644 index 7b8d199de..000000000 --- a/bookwyrm/tests/templatetags/test_bookwyrm_tags.py +++ /dev/null @@ -1,101 +0,0 @@ -""" style fixes and lookups for templates """ -from unittest.mock import patch - -from django.test import TestCase - -from bookwyrm import models -from bookwyrm.templatetags import bookwyrm_tags - - -@patch("bookwyrm.activitystreams.add_status_task.delay") -@patch("bookwyrm.activitystreams.remove_status_task.delay") -class BookWyrmTags(TestCase): - """lotta different things here""" - - def setUp(self): - """create some filler objects""" - with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( - "bookwyrm.activitystreams.populate_stream_task.delay" - ), patch("bookwyrm.lists_stream.populate_lists_task.delay"): - self.user = models.User.objects.create_user( - "mouse@example.com", - "mouse@mouse.mouse", - "mouseword", - local=True, - localname="mouse", - ) - with patch("bookwyrm.models.user.set_remote_server.delay"): - self.remote_user = models.User.objects.create_user( - "rat", - "rat@rat.rat", - "ratword", - remote_id="http://example.com/rat", - local=False, - ) - self.book = models.Edition.objects.create(title="Test Book") - - def test_get_user_rating(self, *_): - """get a user's most recent rating of a book""" - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - models.Review.objects.create(user=self.user, book=self.book, rating=3) - self.assertEqual(bookwyrm_tags.get_user_rating(self.book, self.user), 3) - - def test_get_user_rating_doesnt_exist(self, *_): - """there is no rating available""" - self.assertEqual(bookwyrm_tags.get_user_rating(self.book, self.user), 0) - - def test_get_book_description(self, *_): - """grab it from the edition or the parent""" - work = models.Work.objects.create(title="Test Work") - self.book.parent_work = work - self.book.save() - - self.assertIsNone(bookwyrm_tags.get_book_description(self.book)) - - work.description = "hi" - work.save() - self.assertEqual(bookwyrm_tags.get_book_description(self.book), "hi") - - self.book.description = "hello" - self.book.save() - self.assertEqual(bookwyrm_tags.get_book_description(self.book), "hello") - - def test_get_next_shelf(self, *_): - """self progress helper""" - self.assertEqual(bookwyrm_tags.get_next_shelf("to-read"), "reading") - self.assertEqual(bookwyrm_tags.get_next_shelf("reading"), "read") - self.assertEqual(bookwyrm_tags.get_next_shelf("read"), "complete") - self.assertEqual(bookwyrm_tags.get_next_shelf("blooooga"), "to-read") - - @patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async") - def test_load_subclass(self, *_): - """get a status' real type""" - review = models.Review.objects.create(user=self.user, book=self.book, rating=3) - status = models.Status.objects.get(id=review.id) - self.assertIsInstance(status, models.Status) - self.assertIsInstance(bookwyrm_tags.load_subclass(status), models.Review) - - quote = models.Quotation.objects.create( - user=self.user, book=self.book, content="hi" - ) - status = models.Status.objects.get(id=quote.id) - self.assertIsInstance(status, models.Status) - self.assertIsInstance(bookwyrm_tags.load_subclass(status), models.Quotation) - - comment = models.Comment.objects.create( - user=self.user, book=self.book, content="hi" - ) - status = models.Status.objects.get(id=comment.id) - self.assertIsInstance(status, models.Status) - self.assertIsInstance(bookwyrm_tags.load_subclass(status), models.Comment) - - def test_related_status(self, *_): - """gets the subclass model for a notification status""" - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - status = models.Status.objects.create(content="hi", user=self.user) - notification = models.Notification.objects.create( - user=self.user, notification_type="MENTION", related_status=status - ) - - result = bookwyrm_tags.related_status(notification) - self.assertIsInstance(result, models.Status) diff --git a/bookwyrm/tests/templatetags/test_feed_page_tags.py b/bookwyrm/tests/templatetags/test_feed_page_tags.py new file mode 100644 index 000000000..5e5dc2357 --- /dev/null +++ b/bookwyrm/tests/templatetags/test_feed_page_tags.py @@ -0,0 +1,49 @@ +""" style fixes and lookups for templates """ +from unittest.mock import patch + +from django.test import TestCase + +from bookwyrm import models +from bookwyrm.templatetags import feed_page_tags + + +@patch("bookwyrm.activitystreams.add_status_task.delay") +@patch("bookwyrm.activitystreams.remove_status_task.delay") +class FeedPageTags(TestCase): + """lotta different things here""" + + def setUp(self): + """create some filler objects""" + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ), patch("bookwyrm.lists_stream.populate_lists_task.delay"): + self.user = models.User.objects.create_user( + "mouse@example.com", + "mouse@mouse.mouse", + "mouseword", + local=True, + localname="mouse", + ) + self.book = models.Edition.objects.create(title="Test Book") + + @patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async") + def test_load_subclass(self, *_): + """get a status' real type""" + review = models.Review.objects.create(user=self.user, book=self.book, rating=3) + status = models.Status.objects.get(id=review.id) + self.assertIsInstance(status, models.Status) + self.assertIsInstance(feed_page_tags.load_subclass(status), models.Review) + + quote = models.Quotation.objects.create( + user=self.user, book=self.book, content="hi" + ) + status = models.Status.objects.get(id=quote.id) + self.assertIsInstance(status, models.Status) + self.assertIsInstance(feed_page_tags.load_subclass(status), models.Quotation) + + comment = models.Comment.objects.create( + user=self.user, book=self.book, content="hi" + ) + status = models.Status.objects.get(id=comment.id) + self.assertIsInstance(status, models.Status) + self.assertIsInstance(feed_page_tags.load_subclass(status), models.Comment) diff --git a/bookwyrm/tests/templatetags/test_notification_page_tags.py b/bookwyrm/tests/templatetags/test_notification_page_tags.py new file mode 100644 index 000000000..3c92181b2 --- /dev/null +++ b/bookwyrm/tests/templatetags/test_notification_page_tags.py @@ -0,0 +1,37 @@ +""" style fixes and lookups for templates """ +from unittest.mock import patch + +from django.test import TestCase + +from bookwyrm import models +from bookwyrm.templatetags import notification_page_tags + + +@patch("bookwyrm.activitystreams.add_status_task.delay") +@patch("bookwyrm.activitystreams.remove_status_task.delay") +class NotificationPageTags(TestCase): + """lotta different things here""" + + def setUp(self): + """create some filler objects""" + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ), patch("bookwyrm.lists_stream.populate_lists_task.delay"): + self.user = models.User.objects.create_user( + "mouse@example.com", + "mouse@mouse.mouse", + "mouseword", + local=True, + localname="mouse", + ) + + def test_related_status(self, *_): + """gets the subclass model for a notification status""" + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + status = models.Status.objects.create(content="hi", user=self.user) + notification = models.Notification.objects.create( + user=self.user, notification_type="MENTION", related_status=status + ) + + result = notification_page_tags.related_status(notification) + self.assertIsInstance(result, models.Status) diff --git a/bookwyrm/tests/templatetags/test_rating_tags.py b/bookwyrm/tests/templatetags/test_rating_tags.py new file mode 100644 index 000000000..c00f20726 --- /dev/null +++ b/bookwyrm/tests/templatetags/test_rating_tags.py @@ -0,0 +1,80 @@ +""" Gettings book ratings """ +from unittest.mock import patch + +from django.test import TestCase + +from bookwyrm import models +from bookwyrm.templatetags import rating_tags + + +@patch("bookwyrm.activitystreams.add_status_task.delay") +@patch("bookwyrm.activitystreams.remove_status_task.delay") +class RatingTags(TestCase): + """lotta different things here""" + + def setUp(self): + """create some filler objects""" + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ), patch("bookwyrm.lists_stream.populate_lists_task.delay"): + self.local_user = models.User.objects.create_user( + "mouse@example.com", + "mouse@mouse.mouse", + "mouseword", + local=True, + localname="mouse", + ) + with patch("bookwyrm.models.user.set_remote_server.delay"): + self.remote_user = models.User.objects.create_user( + "rat", + "rat@rat.rat", + "ratword", + remote_id="http://example.com/rat", + local=False, + ) + work = models.Work.objects.create(title="Work title") + self.book = models.Edition.objects.create( + title="Test Book", + parent_work=work, + ) + + @patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async") + def test_get_rating(self, *_): + """privacy filtered rating""" + # follows-only: not included + models.ReviewRating.objects.create( + user=self.remote_user, + rating=5, + book=self.book, + privacy="followers", + ) + self.assertEqual(rating_tags.get_rating(self.book, self.local_user), 0) + + # public: included + models.ReviewRating.objects.create( + user=self.remote_user, + rating=5, + book=self.book, + privacy="public", + ) + self.assertEqual(rating_tags.get_rating(self.book, self.local_user), 5) + + # rating unset: not included + models.Review.objects.create( + name="blah", + user=self.local_user, + rating=0, + book=self.book, + privacy="public", + ) + self.assertEqual(rating_tags.get_rating(self.book, self.local_user), 5) + + def test_get_user_rating(self, *_): + """get a user's most recent rating of a book""" + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + models.Review.objects.create(user=self.local_user, book=self.book, rating=3) + self.assertEqual(rating_tags.get_user_rating(self.book, self.local_user), 3) + + def test_get_user_rating_doesnt_exist(self, *_): + """there is no rating available""" + self.assertEqual(rating_tags.get_user_rating(self.book, self.local_user), 0) diff --git a/bookwyrm/tests/templatetags/test_shelf_tags.py b/bookwyrm/tests/templatetags/test_shelf_tags.py new file mode 100644 index 000000000..5a88604dd --- /dev/null +++ b/bookwyrm/tests/templatetags/test_shelf_tags.py @@ -0,0 +1,70 @@ +""" style fixes and lookups for templates """ +from unittest.mock import patch + +from django.test import TestCase +from django.test.client import RequestFactory + +from bookwyrm import models +from bookwyrm.templatetags import shelf_tags + + +@patch("bookwyrm.activitystreams.add_status_task.delay") +@patch("bookwyrm.activitystreams.remove_status_task.delay") +@patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async") +@patch("bookwyrm.activitystreams.add_book_statuses_task.delay") +class ShelfTags(TestCase): + """lotta different things here""" + + def setUp(self): + """create some filler objects""" + self.factory = RequestFactory() + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ), patch("bookwyrm.lists_stream.populate_lists_task.delay"): + self.local_user = models.User.objects.create_user( + "mouse@example.com", + "mouse@mouse.mouse", + "mouseword", + local=True, + localname="mouse", + ) + with patch("bookwyrm.models.user.set_remote_server.delay"): + self.remote_user = models.User.objects.create_user( + "rat", + "rat@rat.rat", + "ratword", + remote_id="http://example.com/rat", + local=False, + ) + self.book = models.Edition.objects.create( + title="Test Book", + parent_work=models.Work.objects.create(title="Test work"), + ) + + def test_get_is_book_on_shelf(self, *_): + """check if a book is on a shelf""" + shelf = self.local_user.shelf_set.first() + self.assertFalse(shelf_tags.get_is_book_on_shelf(self.book, shelf)) + models.ShelfBook.objects.create( + shelf=shelf, book=self.book, user=self.local_user + ) + self.assertTrue(shelf_tags.get_is_book_on_shelf(self.book, shelf)) + + def test_get_next_shelf(self, *_): + """self progress helper""" + self.assertEqual(shelf_tags.get_next_shelf("to-read"), "reading") + self.assertEqual(shelf_tags.get_next_shelf("reading"), "read") + self.assertEqual(shelf_tags.get_next_shelf("read"), "complete") + self.assertEqual(shelf_tags.get_next_shelf("blooooga"), "to-read") + + def test_active_shelf(self, *_): + """get the shelf a book is on""" + shelf = self.local_user.shelf_set.first() + request = self.factory.get("") + request.user = self.local_user + context = {"request": request} + self.assertIsInstance(shelf_tags.active_shelf(context, self.book), dict) + models.ShelfBook.objects.create( + shelf=shelf, book=self.book, user=self.local_user + ) + self.assertEqual(shelf_tags.active_shelf(context, self.book).shelf, shelf) diff --git a/bookwyrm/tests/templatetags/test_status_display.py b/bookwyrm/tests/templatetags/test_status_display.py index 50c5571e2..af2fc9420 100644 --- a/bookwyrm/tests/templatetags/test_status_display.py +++ b/bookwyrm/tests/templatetags/test_status_display.py @@ -1,4 +1,5 @@ """ style fixes and lookups for templates """ +from datetime import datetime from unittest.mock import patch from django.test import TestCase @@ -35,6 +36,12 @@ class StatusDisplayTags(TestCase): ) self.book = models.Edition.objects.create(title="Test Book") + def test_get_mentions(self, *_): + """list of people mentioned""" + status = models.Status.objects.create(content="hi", user=self.remote_user) + result = status_display.get_mentions(status, self.user) + self.assertEqual(result, "@rat@example.com ") + @patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async") def test_get_replies(self, *_): """direct replies to a status""" @@ -83,8 +90,16 @@ class StatusDisplayTags(TestCase): self.assertIsInstance(boosted, models.Review) self.assertEqual(boosted, status) - def test_get_mentions(self, *_): - """list of people mentioned""" - status = models.Status.objects.create(content="hi", user=self.remote_user) - result = status_display.get_mentions(status, self.user) - self.assertEqual(result, "@rat@example.com ") + def test_get_published_date(self, *_): + """date formatting""" + date = datetime(2020, 1, 1, 0, 0, tzinfo=timezone.utc) + with patch("django.utils.timezone.now") as timezone_mock: + timezone_mock.return_value = datetime(2022, 1, 1, 0, 0, tzinfo=timezone.utc) + result = status_display.get_published_date(date) + self.assertEqual(result, "Jan. 1, 2020") + + date = datetime(2022, 1, 1, 0, 0, tzinfo=timezone.utc) + with patch("django.utils.timezone.now") as timezone_mock: + timezone_mock.return_value = datetime(2022, 1, 8, 0, 0, tzinfo=timezone.utc) + result = status_display.get_published_date(date) + self.assertEqual(result, "Jan 1") diff --git a/bookwyrm/tests/templatetags/test_utilities.py b/bookwyrm/tests/templatetags/test_utilities.py index e41cd21ad..0136ca8cd 100644 --- a/bookwyrm/tests/templatetags/test_utilities.py +++ b/bookwyrm/tests/templatetags/test_utilities.py @@ -35,6 +35,15 @@ class UtilitiesTags(TestCase): ) self.book = models.Edition.objects.create(title="Test Book") + def test_get_uuid(self, *_): + """uuid functionality""" + uuid = utilities.get_uuid("hi") + self.assertTrue(re.match(r"hi[A-Za-z0-9\-]", uuid)) + + def test_join(self, *_): + """concats things with underscores""" + self.assertEqual(utilities.join("hi", 5, "blah", 0.75), "hi_5_blah_0.75") + def test_get_user_identifer_local(self, *_): """fall back to the simplest uid available""" self.assertNotEqual(self.user.username, self.user.localname) @@ -46,11 +55,6 @@ class UtilitiesTags(TestCase): utilities.get_user_identifier(self.remote_user), "rat@example.com" ) - def test_get_uuid(self, *_): - """uuid functionality""" - uuid = utilities.get_uuid("hi") - self.assertTrue(re.match(r"hi[A-Za-z0-9\-]", uuid)) - def test_get_title(self, *_): """the title of a book""" self.assertEqual(utilities.get_title(None), "") diff --git a/bookwyrm/tests/test_sanitize_html.py b/bookwyrm/tests/test_sanitize_html.py index 6c4053483..5814f2207 100644 --- a/bookwyrm/tests/test_sanitize_html.py +++ b/bookwyrm/tests/test_sanitize_html.py @@ -24,13 +24,21 @@ 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" diff --git a/bookwyrm/tests/views/admin/test_federation.py b/bookwyrm/tests/views/admin/test_federation.py index deed5bd38..340ed6052 100644 --- a/bookwyrm/tests/views/admin/test_federation.py +++ b/bookwyrm/tests/views/admin/test_federation.py @@ -1,4 +1,5 @@ """ test for app action functionality """ +import os import json from unittest.mock import patch @@ -207,3 +208,6 @@ class FederationViews(TestCase): created = models.FederatedServer.objects.get(server_name="server.name") self.assertEqual(created.status, "blocked") self.assertEqual(created.notes, "https://explanation.url") + + # remove file.json after test + os.remove("file.json") diff --git a/bookwyrm/tests/views/admin/test_ip_blocklist.py b/bookwyrm/tests/views/admin/test_ip_blocklist.py index e23abd8b1..af63ffaf3 100644 --- a/bookwyrm/tests/views/admin/test_ip_blocklist.py +++ b/bookwyrm/tests/views/admin/test_ip_blocklist.py @@ -4,7 +4,7 @@ from django.template.response import TemplateResponse from django.test import TestCase from django.test.client import RequestFactory -from bookwyrm import models, views +from bookwyrm import forms, models, views from bookwyrm.tests.validate_html import validate_html @@ -39,3 +39,35 @@ class IPBlocklistViews(TestCase): self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200) + + def test_blocklist_page_post(self): + """there are so many views, this just makes sure it LOADS""" + view = views.IPBlocklist.as_view() + form = forms.IPBlocklistForm() + form.data["address"] = "0.0.0.0" + + request = self.factory.post("", form.data) + request.user = self.local_user + request.user.is_superuser = True + + result = view(request) + + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + block = models.IPBlocklist.objects.get() + self.assertEqual(block.address, "0.0.0.0") + self.assertTrue(block.is_active) + + def test_blocklist_page_delete(self): + """there are so many views, this just makes sure it LOADS""" + block = models.IPBlocklist.objects.create(address="0.0.0.0") + view = views.IPBlocklist.as_view() + + request = self.factory.post("") + request.user = self.local_user + request.user.is_superuser = True + + view(request, block.id) + self.assertFalse(models.IPBlocklist.objects.exists()) diff --git a/bookwyrm/tests/views/admin/test_reports.py b/bookwyrm/tests/views/admin/test_reports.py index d0f2e9d91..d0875f2c2 100644 --- a/bookwyrm/tests/views/admin/test_reports.py +++ b/bookwyrm/tests/views/admin/test_reports.py @@ -89,6 +89,14 @@ class ReportViews(TestCase): self.assertEqual(comment.note, "hi") self.assertEqual(comment.report, report) + def test_report_modal_view(self): + """a user reports another user""" + request = self.factory.get("") + request.user = self.local_user + result = views.Report.as_view()(request, self.local_user.id) + + validate_html(result.render()) + def test_make_report(self): """a user reports another user""" form = forms.ReportForm() @@ -103,6 +111,30 @@ class ReportViews(TestCase): self.assertEqual(report.reporter, self.local_user) self.assertEqual(report.user, self.rat) + def test_report_link(self): + """a user reports a link as spam""" + book = models.Edition.objects.create(title="hi") + link = models.FileLink.objects.create( + book=book, added_by=self.local_user, url="https://skdjfs.sdf" + ) + domain = link.domain + domain.status = "approved" + domain.save() + + form = forms.ReportForm() + form.data["reporter"] = self.local_user.id + form.data["user"] = self.rat.id + form.data["links"] = link.id + request = self.factory.post("", form.data) + request.user = self.local_user + + views.Report.as_view()(request) + + report = models.Report.objects.get() + domain.refresh_from_db() + self.assertEqual(report.links.first().id, link.id) + self.assertEqual(domain.status, "pending") + def test_resolve_report(self): """toggle report resolution status""" report = models.Report.objects.create(reporter=self.local_user, user=self.rat) diff --git a/bookwyrm/tests/views/inbox/test_inbox_add.py b/bookwyrm/tests/views/inbox/test_inbox_add.py index a9a809825..fccd1a50f 100644 --- a/bookwyrm/tests/views/inbox/test_inbox_add.py +++ b/bookwyrm/tests/views/inbox/test_inbox_add.py @@ -118,6 +118,7 @@ class InboxAdd(TestCase): "type": "ListItem", "book": self.book.remote_id, "id": "https://example.com/listbook/6189", + "notes": "hi hello", "order": 1, }, "target": "https://example.com/user/mouse/list/to-read", @@ -130,3 +131,4 @@ class InboxAdd(TestCase): self.assertEqual(booklist.name, "Test List") self.assertEqual(booklist.books.first(), self.book) self.assertEqual(listitem.remote_id, "https://example.com/listbook/6189") + self.assertEqual(listitem.notes, "hi hello") diff --git a/bookwyrm/tests/views/lists/__init__.py b/bookwyrm/tests/views/lists/__init__.py new file mode 100644 index 000000000..b6e690fd5 --- /dev/null +++ b/bookwyrm/tests/views/lists/__init__.py @@ -0,0 +1 @@ +from . import * diff --git a/bookwyrm/tests/views/lists/test_curate.py b/bookwyrm/tests/views/lists/test_curate.py new file mode 100644 index 000000000..9be8c2a15 --- /dev/null +++ b/bookwyrm/tests/views/lists/test_curate.py @@ -0,0 +1,129 @@ +""" test for app action functionality """ +import json +from unittest.mock import patch + +from django.contrib.auth.models import AnonymousUser +from django.template.response import TemplateResponse +from django.test import TestCase +from django.test.client import RequestFactory + +from bookwyrm import models, views +from bookwyrm.tests.validate_html import validate_html + + +# pylint: disable=unused-argument +class ListViews(TestCase): + """list view""" + + def setUp(self): + """we need basic test data and mocks""" + self.factory = RequestFactory() + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ), patch("bookwyrm.lists_stream.populate_lists_task.delay"): + self.local_user = models.User.objects.create_user( + "mouse@local.com", + "mouse@mouse.com", + "mouseword", + local=True, + localname="mouse", + remote_id="https://example.com/users/mouse", + ) + work = models.Work.objects.create(title="Work") + self.book = models.Edition.objects.create( + title="Example Edition", + remote_id="https://example.com/book/1", + parent_work=work, + ) + + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + self.list = models.List.objects.create( + name="Test List", user=self.local_user + ) + self.anonymous_user = AnonymousUser + self.anonymous_user.is_authenticated = False + + models.SiteSettings.objects.create() + + def test_curate_page(self): + """there are so many views, this just makes sure it LOADS""" + view = views.Curate.as_view() + request = self.factory.get("") + request.user = self.local_user + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book, + approved=False, + order=1, + ) + + result = view(request, self.list.id) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + request.user = self.anonymous_user + result = view(request, self.list.id) + self.assertEqual(result.status_code, 302) + + def test_curate_approve(self): + """approve a pending item""" + view = views.Curate.as_view() + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + pending = models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book, + approved=False, + order=1, + ) + + request = self.factory.post( + "", + {"item": pending.id, "approved": "true"}, + ) + request.user = self.local_user + + with patch( + "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" + ) as mock: + view(request, self.list.id) + + self.assertEqual(mock.call_count, 2) + activity = json.loads(mock.call_args[1]["args"][1]) + self.assertEqual(activity["type"], "Add") + self.assertEqual(activity["actor"], self.local_user.remote_id) + self.assertEqual(activity["target"], self.list.remote_id) + + pending.refresh_from_db() + self.assertEqual(self.list.books.count(), 1) + self.assertEqual(self.list.listitem_set.first(), pending) + self.assertTrue(pending.approved) + + def test_curate_reject(self): + """approve a pending item""" + view = views.Curate.as_view() + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + pending = models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book, + approved=False, + order=1, + ) + + request = self.factory.post( + "", + { + "item": pending.id, + "approved": "false", + }, + ) + request.user = self.local_user + + view(request, self.list.id) + + self.assertFalse(self.list.books.exists()) + self.assertFalse(models.ListItem.objects.exists()) diff --git a/bookwyrm/tests/views/lists/test_embed.py b/bookwyrm/tests/views/lists/test_embed.py new file mode 100644 index 000000000..dc61736d3 --- /dev/null +++ b/bookwyrm/tests/views/lists/test_embed.py @@ -0,0 +1,89 @@ +""" test for app action functionality """ +from unittest.mock import patch + +from django.contrib.auth.models import AnonymousUser +from django.http.response import Http404 +from django.template.response import TemplateResponse +from django.test import TestCase +from django.test.client import RequestFactory + +from bookwyrm import models, views +from bookwyrm.tests.validate_html import validate_html + + +# pylint: disable=unused-argument +class ListViews(TestCase): + """list view""" + + def setUp(self): + """we need basic test data and mocks""" + self.factory = RequestFactory() + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ), patch("bookwyrm.lists_stream.populate_lists_task.delay"): + self.local_user = models.User.objects.create_user( + "mouse@local.com", + "mouse@mouse.com", + "mouseword", + local=True, + localname="mouse", + remote_id="https://example.com/users/mouse", + ) + work = models.Work.objects.create(title="Work") + self.book = models.Edition.objects.create( + title="Example Edition", + remote_id="https://example.com/book/1", + parent_work=work, + ) + + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + self.list = models.List.objects.create( + name="Test List", user=self.local_user + ) + self.anonymous_user = AnonymousUser + self.anonymous_user.is_authenticated = False + + models.SiteSettings.objects.create() + + def test_embed_call_without_key(self): + """there are so many views, this just makes sure it DOESN’T load""" + view = views.unsafe_embed_list + request = self.factory.get("") + request.user = self.anonymous_user + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book, + approved=True, + order=1, + ) + + with patch("bookwyrm.views.list.list.is_api_request") as is_api: + is_api.return_value = False + with self.assertRaises(Http404): + view(request, self.list.id, "") + + def test_embed_call_with_key(self): + """there are so many views, this just makes sure it LOADS""" + view = views.unsafe_embed_list + request = self.factory.get("") + request.user = self.anonymous_user + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book, + approved=True, + order=1, + ) + + embed_key = str(self.list.embed_key.hex) + + with patch("bookwyrm.views.list.list.is_api_request") as is_api: + is_api.return_value = False + result = view(request, self.list.id, embed_key) + + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) diff --git a/bookwyrm/tests/views/test_list_actions.py b/bookwyrm/tests/views/lists/test_list.py similarity index 67% rename from bookwyrm/tests/views/test_list_actions.py rename to bookwyrm/tests/views/lists/test_list.py index 7f57fae30..bcec0822f 100644 --- a/bookwyrm/tests/views/test_list_actions.py +++ b/bookwyrm/tests/views/lists/test_list.py @@ -4,14 +4,19 @@ from unittest.mock import patch from django.contrib.auth.models import AnonymousUser from django.core.exceptions import PermissionDenied +from django.template.response import TemplateResponse from django.test import TestCase from django.test.client import RequestFactory from bookwyrm import models, views +from bookwyrm.activitypub import ActivitypubResponse +from bookwyrm.tests.validate_html import validate_html + # pylint: disable=unused-argument -class ListActionViews(TestCase): - """tag views""" +# pylint: disable=too-many-public-methods +class ListViews(TestCase): + """list view""" def setUp(self): """we need basic test data and mocks""" @@ -35,7 +40,6 @@ class ListActionViews(TestCase): localname="rat", remote_id="https://example.com/users/rat", ) - work = models.Work.objects.create(title="Work") self.book = models.Edition.objects.create( title="Example Edition", @@ -67,8 +71,196 @@ class ListActionViews(TestCase): ) self.anonymous_user = AnonymousUser self.anonymous_user.is_authenticated = False + models.SiteSettings.objects.create() + def test_list_page(self): + """there are so many views, this just makes sure it LOADS""" + view = views.List.as_view() + request = self.factory.get("") + request.user = self.local_user + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book, + approved=True, + notes="hello", + order=1, + ) + + with patch("bookwyrm.views.list.list.is_api_request") as is_api: + is_api.return_value = False + result = view(request, self.list.id) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + def test_list_page_with_query(self): + """searching for a book to add""" + view = views.List.as_view() + request = self.factory.get("", {"q": "Example Edition"}) + request.user = self.local_user + + with patch("bookwyrm.views.list.list.is_api_request") as is_api: + is_api.return_value = False + result = view(request, self.list.id) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + def test_list_page_sorted(self): + """there are so many views, this just makes sure it LOADS""" + view = views.List.as_view() + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + for (i, book) in enumerate([self.book, self.book_two, self.book_three]): + models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=book, + approved=True, + order=i + 1, + ) + + request = self.factory.get("/?sort_by=order") + request.user = self.local_user + with patch("bookwyrm.views.list.list.is_api_request") as is_api: + is_api.return_value = False + result = view(request, self.list.id) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + request = self.factory.get("/?sort_by=title") + request.user = self.local_user + with patch("bookwyrm.views.list.list.is_api_request") as is_api: + is_api.return_value = False + result = view(request, self.list.id) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + request = self.factory.get("/?sort_by=rating") + request.user = self.local_user + with patch("bookwyrm.views.list.list.is_api_request") as is_api: + is_api.return_value = False + result = view(request, self.list.id) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + request = self.factory.get("/?sort_by=sdkfh") + request.user = self.local_user + with patch("bookwyrm.views.list.list.is_api_request") as is_api: + is_api.return_value = False + result = view(request, self.list.id) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + def test_list_page_empty(self): + """there are so many views, this just makes sure it LOADS""" + view = views.List.as_view() + request = self.factory.get("") + request.user = self.local_user + + with patch("bookwyrm.views.list.list.is_api_request") as is_api: + is_api.return_value = False + result = view(request, self.list.id) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + def test_list_page_logged_out(self): + """there are so many views, this just makes sure it LOADS""" + view = views.List.as_view() + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book, + notes="hi hello", + approved=True, + order=1, + ) + + request = self.factory.get("") + request.user = self.anonymous_user + with patch("bookwyrm.views.list.list.is_api_request") as is_api: + is_api.return_value = False + result = view(request, self.list.id) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + def test_list_page_json_view(self): + """there are so many views, this just makes sure it LOADS""" + view = views.List.as_view() + request = self.factory.get("") + request.user = self.local_user + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book, + approved=True, + order=1, + ) + + with patch("bookwyrm.views.list.list.is_api_request") as is_api: + is_api.return_value = True + result = view(request, self.list.id) + self.assertIsInstance(result, ActivitypubResponse) + self.assertEqual(result.status_code, 200) + + def test_list_page_json_view_page(self): + """there are so many views, this just makes sure it LOADS""" + view = views.List.as_view() + request = self.factory.get("") + request.user = self.local_user + + request = self.factory.get("/?page=1") + request.user = self.local_user + with patch("bookwyrm.views.list.list.is_api_request") as is_api: + is_api.return_value = True + result = view(request, self.list.id) + self.assertIsInstance(result, ActivitypubResponse) + self.assertEqual(result.status_code, 200) + + def test_list_edit(self): + """edit a list""" + view = views.List.as_view() + request = self.factory.post( + "", + { + "name": "New Name", + "description": "wow", + "privacy": "direct", + "curation": "curated", + "user": self.local_user.id, + }, + ) + request.user = self.local_user + + with patch( + "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" + ) as mock: + result = view(request, self.list.id) + + self.assertEqual(mock.call_count, 1) + activity = json.loads(mock.call_args[1]["args"][1]) + self.assertEqual(activity["type"], "Update") + self.assertEqual(activity["actor"], self.local_user.remote_id) + self.assertEqual(activity["object"]["id"], self.list.remote_id) + + self.assertEqual(result.status_code, 302) + + self.list.refresh_from_db() + self.assertEqual(self.list.name, "New Name") + self.assertEqual(self.list.description, "wow") + self.assertEqual(self.list.privacy, "direct") + self.assertEqual(self.list.curation, "curated") + def test_delete_list(self): """delete an entire list""" with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): @@ -110,73 +302,14 @@ class ListActionViews(TestCase): with self.assertRaises(PermissionDenied): views.delete_list(request, self.list.id) - def test_curate_approve(self): - """approve a pending item""" - view = views.Curate.as_view() - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - pending = models.ListItem.objects.create( - book_list=self.list, - user=self.local_user, - book=self.book, - approved=False, - order=1, - ) - - request = self.factory.post( - "", - {"item": pending.id, "approved": "true"}, - ) - request.user = self.local_user - - with patch( - "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" - ) as mock: - view(request, self.list.id) - - self.assertEqual(mock.call_count, 2) - activity = json.loads(mock.call_args[1]["args"][1]) - self.assertEqual(activity["type"], "Add") - self.assertEqual(activity["actor"], self.local_user.remote_id) - self.assertEqual(activity["target"], self.list.remote_id) - - pending.refresh_from_db() - self.assertEqual(self.list.books.count(), 1) - self.assertEqual(self.list.listitem_set.first(), pending) - self.assertTrue(pending.approved) - - def test_curate_reject(self): - """approve a pending item""" - view = views.Curate.as_view() - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - pending = models.ListItem.objects.create( - book_list=self.list, - user=self.local_user, - book=self.book, - approved=False, - order=1, - ) - - request = self.factory.post( - "", - { - "item": pending.id, - "approved": "false", - }, - ) - request.user = self.local_user - - view(request, self.list.id) - - self.assertFalse(self.list.books.exists()) - self.assertFalse(models.ListItem.objects.exists()) - def test_add_book(self): """put a book on a list""" request = self.factory.post( "", { "book": self.book.id, - "list": self.list.id, + "book_list": self.list.id, + "user": self.local_user.id, }, ) request.user = self.local_user @@ -184,7 +317,7 @@ class ListActionViews(TestCase): with patch( "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" ) as mock: - views.list.add_book(request) + views.add_book(request) self.assertEqual(mock.call_count, 1) activity = json.loads(mock.call_args[1]["args"][1]) self.assertEqual(activity["type"], "Add") @@ -205,7 +338,8 @@ class ListActionViews(TestCase): "", { "book": self.book.id, - "list": self.list.id, + "book_list": self.list.id, + "user": self.local_user.id, }, ) request_one.user = self.local_user @@ -214,13 +348,14 @@ class ListActionViews(TestCase): "", { "book": self.book_two.id, - "list": self.list.id, + "book_list": self.list.id, + "user": self.local_user.id, }, ) request_two.user = self.local_user with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - views.list.add_book(request_one) - views.list.add_book(request_two) + views.add_book(request_one) + views.add_book(request_two) items = self.list.listitem_set.order_by("order").all() self.assertEqual(items[0].book, self.book) @@ -237,7 +372,8 @@ class ListActionViews(TestCase): "", { "book": self.book.id, - "list": self.list.id, + "book_list": self.list.id, + "user": self.local_user.id, }, ) request_one.user = self.local_user @@ -246,7 +382,8 @@ class ListActionViews(TestCase): "", { "book": self.book_two.id, - "list": self.list.id, + "book_list": self.list.id, + "user": self.local_user.id, }, ) request_two.user = self.local_user @@ -255,15 +392,16 @@ class ListActionViews(TestCase): "", { "book": self.book_three.id, - "list": self.list.id, + "book_list": self.list.id, + "user": self.local_user.id, }, ) request_three.user = self.local_user with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - views.list.add_book(request_one) - views.list.add_book(request_two) - views.list.add_book(request_three) + views.add_book(request_one) + views.add_book(request_two) + views.add_book(request_three) items = self.list.listitem_set.order_by("order").all() self.assertEqual(items[0].book, self.book) @@ -276,7 +414,7 @@ class ListActionViews(TestCase): remove_request = self.factory.post("", {"item": items[1].id}) remove_request.user = self.local_user with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - views.list.remove_book(remove_request, self.list.id) + views.remove_book(remove_request, self.list.id) items = self.list.listitem_set.order_by("order").all() self.assertEqual(items[0].book, self.book) self.assertEqual(items[1].book, self.book_three) @@ -293,7 +431,8 @@ class ListActionViews(TestCase): "", { "book": self.book_three.id, - "list": self.list.id, + "book_list": self.list.id, + "user": self.local_user.id, }, ) request.user = self.local_user @@ -312,7 +451,7 @@ class ListActionViews(TestCase): approved=False, order=2, ) - views.list.add_book(request) + views.add_book(request) items = self.list.listitem_set.order_by("order").all() self.assertEqual(items[0].book, self.book) @@ -403,7 +542,8 @@ class ListActionViews(TestCase): "", { "book": self.book.id, - "list": self.list.id, + "book_list": self.list.id, + "user": self.local_user.id, }, ) request_one.user = self.local_user @@ -412,7 +552,8 @@ class ListActionViews(TestCase): "", { "book": self.book_two.id, - "list": self.list.id, + "book_list": self.list.id, + "user": self.local_user.id, }, ) request_two.user = self.local_user @@ -421,15 +562,16 @@ class ListActionViews(TestCase): "", { "book": self.book_three.id, - "list": self.list.id, + "book_list": self.list.id, + "user": self.local_user.id, }, ) request_three.user = self.local_user with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - views.list.add_book(request_one) - views.list.add_book(request_two) - views.list.add_book(request_three) + views.add_book(request_one) + views.add_book(request_two) + views.add_book(request_three) items = self.list.listitem_set.order_by("order").all() self.assertEqual(items[0].book, self.book) @@ -442,7 +584,7 @@ class ListActionViews(TestCase): set_position_request = self.factory.post("", {"position": 1}) set_position_request.user = self.local_user with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - views.list.set_book_position(set_position_request, items[2].id) + views.set_book_position(set_position_request, items[2].id) items = self.list.listitem_set.order_by("order").all() self.assertEqual(items[0].book, self.book_three) self.assertEqual(items[1].book, self.book) @@ -459,7 +601,8 @@ class ListActionViews(TestCase): "", { "book": self.book.id, - "list": self.list.id, + "book_list": self.list.id, + "user": self.rat.id, }, ) request.user = self.rat @@ -467,7 +610,7 @@ class ListActionViews(TestCase): with patch( "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" ) as mock: - views.list.add_book(request) + views.add_book(request) self.assertEqual(mock.call_count, 1) activity = json.loads(mock.call_args[1]["args"][1]) self.assertEqual(activity["type"], "Add") @@ -487,7 +630,8 @@ class ListActionViews(TestCase): "", { "book": self.book.id, - "list": self.list.id, + "book_list": self.list.id, + "user": self.rat.id, }, ) request.user = self.rat @@ -495,7 +639,7 @@ class ListActionViews(TestCase): with patch( "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" ) as mock: - views.list.add_book(request) + views.add_book(request) self.assertEqual(mock.call_count, 1) activity = json.loads(mock.call_args[1]["args"][1]) @@ -519,7 +663,8 @@ class ListActionViews(TestCase): "", { "book": self.book.id, - "list": self.list.id, + "book_list": self.list.id, + "user": self.local_user.id, }, ) request.user = self.local_user @@ -527,7 +672,7 @@ class ListActionViews(TestCase): with patch( "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" ) as mock: - views.list.add_book(request) + views.add_book(request) self.assertEqual(mock.call_count, 1) activity = json.loads(mock.call_args[1]["args"][1]) self.assertEqual(activity["type"], "Add") @@ -539,6 +684,23 @@ class ListActionViews(TestCase): self.assertEqual(item.user, self.local_user) self.assertTrue(item.approved) + def test_add_book_permission_denied(self): + """you can't add to that list""" + self.list.curation = "closed" + self.list.save(broadcast=False) + request = self.factory.post( + "", + { + "book": self.book.id, + "book_list": self.list.id, + "user": self.rat.id, + }, + ) + request.user = self.rat + + with self.assertRaises(PermissionDenied): + views.add_book(request) + def test_remove_book(self): """take an item off a list""" @@ -555,7 +717,7 @@ class ListActionViews(TestCase): request.user = self.local_user with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - views.list.remove_book(request, self.list.id) + views.remove_book(request, self.list.id) self.assertFalse(self.list.listitem_set.exists()) def test_remove_book_unauthorized(self): @@ -569,7 +731,7 @@ class ListActionViews(TestCase): request.user = self.rat with self.assertRaises(PermissionDenied): - views.list.remove_book(request, self.list.id) + views.remove_book(request, self.list.id) self.assertTrue(self.list.listitem_set.exists()) def test_save_unsave_list(self): diff --git a/bookwyrm/tests/views/lists/test_list_item.py b/bookwyrm/tests/views/lists/test_list_item.py new file mode 100644 index 000000000..50be3c286 --- /dev/null +++ b/bookwyrm/tests/views/lists/test_list_item.py @@ -0,0 +1,70 @@ +""" test for app action functionality """ +from unittest.mock import patch + +from django.test import TestCase +from django.test.client import RequestFactory + +from bookwyrm import models, views + + +# pylint: disable=unused-argument +# pylint: disable=too-many-public-methods +class ListItemViews(TestCase): + """list view""" + + def setUp(self): + """we need basic test data and mocks""" + self.factory = RequestFactory() + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ), patch("bookwyrm.lists_stream.populate_lists_task.delay"): + self.local_user = models.User.objects.create_user( + "mouse@local.com", + "mouse@mouse.com", + "mouseword", + local=True, + localname="mouse", + remote_id="https://example.com/users/mouse", + ) + work = models.Work.objects.create(title="Work") + self.book = models.Edition.objects.create( + title="Example Edition", + remote_id="https://example.com/book/1", + parent_work=work, + ) + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + self.list = models.List.objects.create( + name="Test List", user=self.local_user + ) + + models.SiteSettings.objects.create() + + def test_add_list_item_notes(self): + """there are so many views, this just makes sure it LOADS""" + view = views.ListItem.as_view() + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + item = models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book, + approved=True, + order=1, + ) + request = self.factory.post( + "", + { + "book_list": self.list.id, + "book": self.book.id, + "user": self.local_user.id, + "notes": "beep boop", + }, + ) + request.user = self.local_user + with patch( + "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" + ) as mock: + view(request, self.list.id, item.id) + self.assertEqual(mock.call_count, 1) + + item.refresh_from_db() + self.assertEqual(item.notes, "

    beep boop

    ") diff --git a/bookwyrm/tests/views/lists/test_lists.py b/bookwyrm/tests/views/lists/test_lists.py new file mode 100644 index 000000000..f65d2e4c2 --- /dev/null +++ b/bookwyrm/tests/views/lists/test_lists.py @@ -0,0 +1,161 @@ +""" test for app action functionality """ +import json +from unittest.mock import patch + +from django.contrib.auth.models import AnonymousUser +from django.template.response import TemplateResponse +from django.test import TestCase +from django.test.client import RequestFactory + +from bookwyrm import models, views +from bookwyrm.tests.validate_html import validate_html + +# pylint: disable=unused-argument +class ListViews(TestCase): + """lists of lists""" + + def setUp(self): + """we need basic test data and mocks""" + self.factory = RequestFactory() + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ), patch("bookwyrm.lists_stream.populate_lists_task.delay"): + self.local_user = models.User.objects.create_user( + "mouse@local.com", + "mouse@mouse.com", + "mouseword", + local=True, + localname="mouse", + remote_id="https://example.com/users/mouse", + ) + self.anonymous_user = AnonymousUser + self.anonymous_user.is_authenticated = False + + models.SiteSettings.objects.create() + + @patch("bookwyrm.lists_stream.ListsStream.get_list_stream") + def test_lists_page(self, _): + """there are so many views, this just makes sure it LOADS""" + view = views.Lists.as_view() + with patch( + "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" + ), patch("bookwyrm.lists_stream.add_list_task.delay"): + models.List.objects.create(name="Public list", user=self.local_user) + models.List.objects.create( + name="Private list", privacy="direct", user=self.local_user + ) + request = self.factory.get("") + request.user = self.local_user + + result = view(request) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + request.user = self.anonymous_user + + result = view(request) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + def test_saved_lists_page(self): + """there are so many views, this just makes sure it LOADS""" + view = views.SavedLists.as_view() + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + booklist = models.List.objects.create( + name="Public list", user=self.local_user + ) + models.List.objects.create( + name="Private list", privacy="direct", user=self.local_user + ) + self.local_user.saved_lists.add(booklist) + request = self.factory.get("") + request.user = self.local_user + + result = view(request) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + self.assertEqual(result.context_data["lists"].object_list, [booklist]) + + def test_saved_lists_page_empty(self): + """there are so many views, this just makes sure it LOADS""" + view = views.SavedLists.as_view() + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + models.List.objects.create(name="Public list", user=self.local_user) + models.List.objects.create( + name="Private list", privacy="direct", user=self.local_user + ) + request = self.factory.get("") + request.user = self.local_user + + result = view(request) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + self.assertEqual(len(result.context_data["lists"].object_list), 0) + + def test_saved_lists_page_logged_out(self): + """logged out saved lists""" + view = views.SavedLists.as_view() + request = self.factory.get("") + request.user = self.anonymous_user + + result = view(request) + self.assertEqual(result.status_code, 302) + + def test_user_lists_page(self): + """there are so many views, this just makes sure it LOADS""" + view = views.UserLists.as_view() + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + models.List.objects.create(name="Public list", user=self.local_user) + models.List.objects.create( + name="Private list", privacy="direct", user=self.local_user + ) + request = self.factory.get("") + request.user = self.local_user + + result = view(request, self.local_user.localname) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + def test_user_lists_page_logged_out(self): + """there are so many views, this just makes sure it LOADS""" + view = views.UserLists.as_view() + request = self.factory.get("") + request.user = self.anonymous_user + + result = view(request, self.local_user.username) + self.assertEqual(result.status_code, 302) + + def test_lists_create(self): + """create list view""" + view = views.Lists.as_view() + request = self.factory.post( + "", + { + "name": "A list", + "description": "wow", + "privacy": "unlisted", + "curation": "open", + "user": self.local_user.id, + }, + ) + request.user = self.local_user + with patch( + "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" + ) as mock: + result = view(request) + + self.assertEqual(mock.call_count, 1) + activity = json.loads(mock.call_args[1]["args"][1]) + self.assertEqual(activity["type"], "Create") + self.assertEqual(activity["actor"], self.local_user.remote_id) + + self.assertEqual(result.status_code, 302) + new_list = models.List.objects.filter(name="A list").get() + self.assertEqual(new_list.description, "wow") + self.assertEqual(new_list.privacy, "unlisted") + self.assertEqual(new_list.curation, "open") diff --git a/bookwyrm/tests/views/shelf/test_shelf.py b/bookwyrm/tests/views/shelf/test_shelf.py index 4a74ffb62..9aec632f7 100644 --- a/bookwyrm/tests/views/shelf/test_shelf.py +++ b/bookwyrm/tests/views/shelf/test_shelf.py @@ -51,6 +51,11 @@ class ShelfViews(TestCase): def test_shelf_page_all_books(self, *_): """there are so many views, this just makes sure it LOADS""" + models.ShelfBook.objects.create( + book=self.book, + shelf=self.shelf, + user=self.local_user, + ) view = views.Shelf.as_view() request = self.factory.get("") request.user = self.local_user @@ -61,6 +66,41 @@ class ShelfViews(TestCase): validate_html(result.render()) self.assertEqual(result.status_code, 200) + def test_shelf_page_all_books_empty(self, *_): + """No books shelved""" + view = views.Shelf.as_view() + request = self.factory.get("") + request.user = self.local_user + with patch("bookwyrm.views.shelf.shelf.is_api_request") as is_api: + is_api.return_value = False + result = view(request, self.local_user.username) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + def test_shelf_page_all_books_avoid_duplicates(self, *_): + """Make sure books aren't showing up twice on the all shelves view""" + models.ShelfBook.objects.create( + book=self.book, + shelf=self.shelf, + user=self.local_user, + ) + models.ShelfBook.objects.create( + book=self.book, + shelf=self.local_user.shelf_set.first(), + user=self.local_user, + ) + view = views.Shelf.as_view() + request = self.factory.get("") + request.user = self.local_user + with patch("bookwyrm.views.shelf.shelf.is_api_request") as is_api: + is_api.return_value = False + result = view(request, self.local_user.username) + self.assertEqual(result.context_data["books"].object_list.count(), 1) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + def test_shelf_page_all_books_json(self, *_): """there is no json view here""" view = views.Shelf.as_view() diff --git a/bookwyrm/tests/views/test_annual_summary.py b/bookwyrm/tests/views/test_annual_summary.py index 2d597be7f..aeb70794b 100644 --- a/bookwyrm/tests/views/test_annual_summary.py +++ b/bookwyrm/tests/views/test_annual_summary.py @@ -140,3 +140,14 @@ class AnnualSummary(TestCase): self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200) + + def test_personal_annual_summary(self, *_): + """redirect to unique user url""" + view = views.personal_annual_summary + request = self.factory.get("") + request.user = self.local_user + + result = view(request, 2020) + + self.assertEqual(result.status_code, 302) + self.assertEqual(result.url, "/user/mouse/2020-in-the-books") 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") diff --git a/bookwyrm/tests/views/test_list.py b/bookwyrm/tests/views/test_list.py deleted file mode 100644 index d36f88e59..000000000 --- a/bookwyrm/tests/views/test_list.py +++ /dev/null @@ -1,438 +0,0 @@ -""" test for app action functionality """ -import json -from unittest.mock import patch - -from django.contrib.auth.models import AnonymousUser -from django.http.response import Http404 -from django.template.response import TemplateResponse -from django.test import TestCase -from django.test.client import RequestFactory - -from bookwyrm import models, views -from bookwyrm.activitypub import ActivitypubResponse -from bookwyrm.tests.validate_html import validate_html - -# pylint: disable=unused-argument -class ListViews(TestCase): - """tag views""" - - def setUp(self): - """we need basic test data and mocks""" - self.factory = RequestFactory() - with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( - "bookwyrm.activitystreams.populate_stream_task.delay" - ), patch("bookwyrm.lists_stream.populate_lists_task.delay"): - self.local_user = models.User.objects.create_user( - "mouse@local.com", - "mouse@mouse.com", - "mouseword", - local=True, - localname="mouse", - remote_id="https://example.com/users/mouse", - ) - self.rat = models.User.objects.create_user( - "rat@local.com", - "rat@rat.com", - "ratword", - local=True, - localname="rat", - remote_id="https://example.com/users/rat", - ) - work = models.Work.objects.create(title="Work") - self.book = models.Edition.objects.create( - title="Example Edition", - remote_id="https://example.com/book/1", - parent_work=work, - ) - work_two = models.Work.objects.create(title="Labori") - self.book_two = models.Edition.objects.create( - title="Example Edition 2", - remote_id="https://example.com/book/2", - parent_work=work_two, - ) - work_three = models.Work.objects.create(title="Trabajar") - self.book_three = models.Edition.objects.create( - title="Example Edition 3", - remote_id="https://example.com/book/3", - parent_work=work_three, - ) - work_four = models.Work.objects.create(title="Travailler") - self.book_four = models.Edition.objects.create( - title="Example Edition 4", - remote_id="https://example.com/book/4", - parent_work=work_four, - ) - - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - self.list = models.List.objects.create( - name="Test List", user=self.local_user - ) - self.anonymous_user = AnonymousUser - self.anonymous_user.is_authenticated = False - - models.SiteSettings.objects.create() - - @patch("bookwyrm.lists_stream.ListsStream.get_list_stream") - def test_lists_page(self, _): - """there are so many views, this just makes sure it LOADS""" - view = views.Lists.as_view() - with patch( - "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" - ), patch("bookwyrm.lists_stream.add_list_task.delay"): - models.List.objects.create(name="Public list", user=self.local_user) - models.List.objects.create( - name="Private list", privacy="direct", user=self.local_user - ) - request = self.factory.get("") - request.user = self.local_user - - result = view(request) - self.assertIsInstance(result, TemplateResponse) - validate_html(result.render()) - self.assertEqual(result.status_code, 200) - - request.user = self.anonymous_user - - result = view(request) - self.assertIsInstance(result, TemplateResponse) - validate_html(result.render()) - self.assertEqual(result.status_code, 200) - - def test_saved_lists_page(self): - """there are so many views, this just makes sure it LOADS""" - view = views.SavedLists.as_view() - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - booklist = models.List.objects.create( - name="Public list", user=self.local_user - ) - models.List.objects.create( - name="Private list", privacy="direct", user=self.local_user - ) - self.local_user.saved_lists.add(booklist) - request = self.factory.get("") - request.user = self.local_user - - result = view(request) - self.assertIsInstance(result, TemplateResponse) - validate_html(result.render()) - self.assertEqual(result.status_code, 200) - self.assertEqual(result.context_data["lists"].object_list, [booklist]) - - def test_saved_lists_page_empty(self): - """there are so many views, this just makes sure it LOADS""" - view = views.SavedLists.as_view() - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - models.List.objects.create(name="Public list", user=self.local_user) - models.List.objects.create( - name="Private list", privacy="direct", user=self.local_user - ) - request = self.factory.get("") - request.user = self.local_user - - result = view(request) - self.assertIsInstance(result, TemplateResponse) - validate_html(result.render()) - self.assertEqual(result.status_code, 200) - self.assertEqual(len(result.context_data["lists"].object_list), 0) - - def test_saved_lists_page_logged_out(self): - """logged out saved lists""" - view = views.SavedLists.as_view() - request = self.factory.get("") - request.user = self.anonymous_user - - result = view(request) - self.assertEqual(result.status_code, 302) - - def test_lists_create(self): - """create list view""" - view = views.Lists.as_view() - request = self.factory.post( - "", - { - "name": "A list", - "description": "wow", - "privacy": "unlisted", - "curation": "open", - "user": self.local_user.id, - }, - ) - request.user = self.local_user - with patch( - "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" - ) as mock: - result = view(request) - - self.assertEqual(mock.call_count, 1) - activity = json.loads(mock.call_args[1]["args"][1]) - self.assertEqual(activity["type"], "Create") - self.assertEqual(activity["actor"], self.local_user.remote_id) - - self.assertEqual(result.status_code, 302) - new_list = models.List.objects.filter(name="A list").get() - self.assertEqual(new_list.description, "wow") - self.assertEqual(new_list.privacy, "unlisted") - self.assertEqual(new_list.curation, "open") - - def test_list_page(self): - """there are so many views, this just makes sure it LOADS""" - view = views.List.as_view() - request = self.factory.get("") - request.user = self.local_user - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - models.ListItem.objects.create( - book_list=self.list, - user=self.local_user, - book=self.book, - approved=True, - order=1, - ) - - with patch("bookwyrm.views.list.is_api_request") as is_api: - is_api.return_value = False - result = view(request, self.list.id) - self.assertIsInstance(result, TemplateResponse) - validate_html(result.render()) - self.assertEqual(result.status_code, 200) - - def test_list_page_sorted(self): - """there are so many views, this just makes sure it LOADS""" - view = views.List.as_view() - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - for (i, book) in enumerate([self.book, self.book_two, self.book_three]): - models.ListItem.objects.create( - book_list=self.list, - user=self.local_user, - book=book, - approved=True, - order=i + 1, - ) - - request = self.factory.get("/?sort_by=order") - request.user = self.local_user - with patch("bookwyrm.views.list.is_api_request") as is_api: - is_api.return_value = False - result = view(request, self.list.id) - self.assertIsInstance(result, TemplateResponse) - validate_html(result.render()) - self.assertEqual(result.status_code, 200) - - request = self.factory.get("/?sort_by=title") - request.user = self.local_user - with patch("bookwyrm.views.list.is_api_request") as is_api: - is_api.return_value = False - result = view(request, self.list.id) - self.assertIsInstance(result, TemplateResponse) - validate_html(result.render()) - self.assertEqual(result.status_code, 200) - - request = self.factory.get("/?sort_by=rating") - request.user = self.local_user - with patch("bookwyrm.views.list.is_api_request") as is_api: - is_api.return_value = False - result = view(request, self.list.id) - self.assertIsInstance(result, TemplateResponse) - validate_html(result.render()) - self.assertEqual(result.status_code, 200) - - request = self.factory.get("/?sort_by=sdkfh") - request.user = self.local_user - with patch("bookwyrm.views.list.is_api_request") as is_api: - is_api.return_value = False - result = view(request, self.list.id) - self.assertIsInstance(result, TemplateResponse) - validate_html(result.render()) - self.assertEqual(result.status_code, 200) - - def test_list_page_empty(self): - """there are so many views, this just makes sure it LOADS""" - view = views.List.as_view() - request = self.factory.get("") - request.user = self.local_user - - with patch("bookwyrm.views.list.is_api_request") as is_api: - is_api.return_value = False - result = view(request, self.list.id) - self.assertIsInstance(result, TemplateResponse) - validate_html(result.render()) - self.assertEqual(result.status_code, 200) - - def test_list_page_logged_out(self): - """there are so many views, this just makes sure it LOADS""" - view = views.List.as_view() - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - models.ListItem.objects.create( - book_list=self.list, - user=self.local_user, - book=self.book, - approved=True, - order=1, - ) - - request = self.factory.get("") - request.user = self.anonymous_user - with patch("bookwyrm.views.list.is_api_request") as is_api: - is_api.return_value = False - result = view(request, self.list.id) - self.assertIsInstance(result, TemplateResponse) - validate_html(result.render()) - self.assertEqual(result.status_code, 200) - - def test_list_page_json_view(self): - """there are so many views, this just makes sure it LOADS""" - view = views.List.as_view() - request = self.factory.get("") - request.user = self.local_user - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - models.ListItem.objects.create( - book_list=self.list, - user=self.local_user, - book=self.book, - approved=True, - order=1, - ) - - with patch("bookwyrm.views.list.is_api_request") as is_api: - is_api.return_value = True - result = view(request, self.list.id) - self.assertIsInstance(result, ActivitypubResponse) - self.assertEqual(result.status_code, 200) - - def test_list_page_json_view_page(self): - """there are so many views, this just makes sure it LOADS""" - view = views.List.as_view() - request = self.factory.get("") - request.user = self.local_user - - request = self.factory.get("/?page=1") - request.user = self.local_user - with patch("bookwyrm.views.list.is_api_request") as is_api: - is_api.return_value = True - result = view(request, self.list.id) - self.assertIsInstance(result, ActivitypubResponse) - self.assertEqual(result.status_code, 200) - - def test_list_edit(self): - """edit a list""" - view = views.List.as_view() - request = self.factory.post( - "", - { - "name": "New Name", - "description": "wow", - "privacy": "direct", - "curation": "curated", - "user": self.local_user.id, - }, - ) - request.user = self.local_user - - with patch( - "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" - ) as mock: - result = view(request, self.list.id) - - self.assertEqual(mock.call_count, 1) - activity = json.loads(mock.call_args[1]["args"][1]) - self.assertEqual(activity["type"], "Update") - self.assertEqual(activity["actor"], self.local_user.remote_id) - self.assertEqual(activity["object"]["id"], self.list.remote_id) - - self.assertEqual(result.status_code, 302) - - self.list.refresh_from_db() - self.assertEqual(self.list.name, "New Name") - self.assertEqual(self.list.description, "wow") - self.assertEqual(self.list.privacy, "direct") - self.assertEqual(self.list.curation, "curated") - - def test_curate_page(self): - """there are so many views, this just makes sure it LOADS""" - view = views.Curate.as_view() - request = self.factory.get("") - request.user = self.local_user - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - models.ListItem.objects.create( - book_list=self.list, - user=self.local_user, - book=self.book, - approved=False, - order=1, - ) - - result = view(request, self.list.id) - self.assertIsInstance(result, TemplateResponse) - validate_html(result.render()) - self.assertEqual(result.status_code, 200) - - request.user = self.anonymous_user - result = view(request, self.list.id) - self.assertEqual(result.status_code, 302) - - def test_user_lists_page(self): - """there are so many views, this just makes sure it LOADS""" - view = views.UserLists.as_view() - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - models.List.objects.create(name="Public list", user=self.local_user) - models.List.objects.create( - name="Private list", privacy="direct", user=self.local_user - ) - request = self.factory.get("") - request.user = self.local_user - - result = view(request, self.local_user.localname) - self.assertIsInstance(result, TemplateResponse) - validate_html(result.render()) - self.assertEqual(result.status_code, 200) - - def test_user_lists_page_logged_out(self): - """there are so many views, this just makes sure it LOADS""" - view = views.UserLists.as_view() - request = self.factory.get("") - request.user = self.anonymous_user - - result = view(request, self.local_user.username) - self.assertEqual(result.status_code, 302) - - def test_embed_call_without_key(self): - """there are so many views, this just makes sure it DOESN’T load""" - view = views.unsafe_embed_list - request = self.factory.get("") - request.user = self.anonymous_user - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - models.ListItem.objects.create( - book_list=self.list, - user=self.local_user, - book=self.book, - approved=True, - order=1, - ) - - with patch("bookwyrm.views.list.is_api_request") as is_api: - is_api.return_value = False - with self.assertRaises(Http404): - view(request, self.list.id, "") - - def test_embed_call_with_key(self): - """there are so many views, this just makes sure it LOADS""" - view = views.unsafe_embed_list - request = self.factory.get("") - request.user = self.anonymous_user - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - models.ListItem.objects.create( - book_list=self.list, - user=self.local_user, - book=self.book, - approved=True, - order=1, - ) - - embed_key = str(self.list.embed_key.hex) - - with patch("bookwyrm.views.list.is_api_request") as is_api: - is_api.return_value = False - result = view(request, self.list.id, embed_key) - - self.assertIsInstance(result, TemplateResponse) - validate_html(result.render()) - self.assertEqual(result.status_code, 200) diff --git a/bookwyrm/tests/views/test_updates.py b/bookwyrm/tests/views/test_updates.py index 4ca704fcf..03cf58668 100644 --- a/bookwyrm/tests/views/test_updates.py +++ b/bookwyrm/tests/views/test_updates.py @@ -45,31 +45,51 @@ class UpdateViews(TestCase): data = json.loads(result.getvalue()) self.assertEqual(data["count"], 1) - def test_get_unread_status_count(self): + def test_get_unread_status_string(self): """there are so many views, this just makes sure it LOADS""" request = self.factory.get("") request.user = self.local_user with patch( "bookwyrm.activitystreams.ActivityStream.get_unread_count" - ) as mock_count: - with patch( - # pylint:disable=line-too-long - "bookwyrm.activitystreams.ActivityStream.get_unread_count_by_status_type" - ) as mock_count_by_status: - mock_count.return_value = 3 - mock_count_by_status.return_value = {"review": 5} - result = views.get_unread_status_count(request, "home") + ) as mock_count, patch( + "bookwyrm.activitystreams.ActivityStream.get_unread_count_by_status_type" + ) as mock_count_by_status: + mock_count.return_value = 3 + mock_count_by_status.return_value = {"review": 5} + result = views.get_unread_status_string(request, "home") self.assertIsInstance(result, JsonResponse) data = json.loads(result.getvalue()) - self.assertEqual(data["count"], 3) - self.assertEqual(data["count_by_type"]["review"], 5) + self.assertEqual(data["count"], "Load 5 unread statuses") - def test_get_unread_status_count_invalid_stream(self): + def test_get_unread_status_string_with_filters(self): + """there are so many views, this just makes sure it LOADS""" + self.local_user.feed_status_types = ["comment", "everything"] + request = self.factory.get("") + request.user = self.local_user + + with patch( + "bookwyrm.activitystreams.ActivityStream.get_unread_count" + ) as mock_count, patch( + "bookwyrm.activitystreams.ActivityStream.get_unread_count_by_status_type" + ) as mock_count_by_status: + mock_count.return_value = 3 + mock_count_by_status.return_value = { + "generated_note": 1, + "comment": 1, + "review": 10, + } + result = views.get_unread_status_string(request, "home") + + self.assertIsInstance(result, JsonResponse) + data = json.loads(result.getvalue()) + self.assertEqual(data["count"], "Load 2 unread statuses") + + def test_get_unread_status_string_invalid_stream(self): """there are so many views, this just makes sure it LOADS""" request = self.factory.get("") request.user = self.local_user with self.assertRaises(Http404): - views.get_unread_status_count(request, "fish") + views.get_unread_status_string(request, "fish") diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index ac25e878b..79d868c95 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -55,7 +55,7 @@ urlpatterns = [ ), re_path( "^api/updates/stream/(?P[a-z]+)/?$", - views.get_unread_status_count, + views.get_unread_status_string, name="stream-updates", ), # authentication @@ -369,16 +369,21 @@ urlpatterns = [ re_path(r"^list/?$", views.Lists.as_view(), name="lists"), re_path(r"^list/saved/?$", views.SavedLists.as_view(), name="saved-lists"), re_path(r"^list/(?P\d+)(.json)?/?$", views.List.as_view(), name="list"), + re_path( + r"^list/(?P\d+)/item/(?P\d+)/?$", + views.ListItem.as_view(), + name="list-item", + ), re_path(r"^list/delete/(?P\d+)/?$", views.delete_list, name="delete-list"), - re_path(r"^list/add-book/?$", views.list.add_book, name="list-add-book"), + re_path(r"^list/add-book/?$", views.add_book, name="list-add-book"), re_path( r"^list/(?P\d+)/remove/?$", - views.list.remove_book, + views.remove_book, name="list-remove-book", ), re_path( r"^list-item/(?P\d+)/set-position$", - views.list.set_book_position, + views.set_book_position, name="list-set-book-position", ), re_path( diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index 3f57c274a..359bee827 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -61,6 +61,21 @@ from .imports.manually_review import ( delete_import_item, ) +# lists +from .list.curate import Curate +from .list.embed import unsafe_embed_list +from .list.list_item import ListItem +from .list.lists import Lists, SavedLists, UserLists +from .list.list import ( + List, + save_list, + unsave_list, + delete_list, + add_book, + remove_book, + set_book_position, +) + # misc views from .author import Author, EditAuthor, update_author_from_remote from .directory import Directory @@ -90,8 +105,6 @@ from .group import ( from .inbox import Inbox from .interaction import Favorite, Unfavorite, Boost, Unboost from .isbn import Isbn -from .list import Lists, SavedLists, List, Curate, UserLists -from .list import save_list, unsave_list, delete_list, unsafe_embed_list from .notifications import Notifications from .outbox import Outbox from .reading import ReadThrough, delete_readthrough, delete_progressupdate @@ -101,7 +114,7 @@ from .rss_feed import RssFeed from .search import Search from .status import CreateStatus, EditStatus, DeleteStatus, update_progress from .status import edit_readthrough -from .updates import get_notification_count, get_unread_status_count +from .updates import get_notification_count, get_unread_status_string from .user import User, Followers, Following, hide_suggestions, user_redirect from .wellknown import * from .annual_summary import ( diff --git a/bookwyrm/views/admin/reports.py b/bookwyrm/views/admin/reports.py index a25357bab..bf9553e52 100644 --- a/bookwyrm/views/admin/reports.py +++ b/bookwyrm/views/admin/reports.py @@ -58,6 +58,7 @@ class ReportAdmin(View): """load a report""" data = { "report": get_object_or_404(models.Report, id=report_id), + "group_form": forms.UserGroupForm(), } return TemplateResponse(request, "settings/reports/report.html", data) diff --git a/bookwyrm/views/author.py b/bookwyrm/views/author.py index 2acb3b19a..b4eb7ef56 100644 --- a/bookwyrm/views/author.py +++ b/bookwyrm/views/author.py @@ -1,7 +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 OuterRef, Subquery, F, Q +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,18 +26,11 @@ class Author(View): if is_api_request(request): return ActivitypubResponse(author.to_activity()) - default_editions = models.Edition.objects.filter( - parent_work=OuterRef("parent_work") - ).order_by("-edition_rank") - books = ( - models.Edition.viewer_aware_objects(request.user) - .filter(Q(authors=author) | Q(parent_work__authors=author)) - .annotate(default_id=Subquery(default_editions.values("id")[:1])) - .filter(default_id=F("id")) - .order_by("-first_published_date", "-published_date", "-created_date") - .prefetch_related("authors") - ).distinct() + 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")) 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] diff --git a/bookwyrm/views/feed.py b/bookwyrm/views/feed.py index cb16371b8..a8d8edd5e 100644 --- a/bookwyrm/views/feed.py +++ b/bookwyrm/views/feed.py @@ -62,7 +62,6 @@ class Feed(View): "streams": STREAMS, "goal_form": forms.GoalForm(), "feed_status_types_options": FeedFilterChoices, - "allowed_status_types": request.user.feed_status_types, "filters_applied": filters_applied, "path": f"/{tab['key']}", "annual_summary_year": get_annual_summary_year(), diff --git a/bookwyrm/views/get_started.py b/bookwyrm/views/get_started.py index 48423b118..3285c076f 100644 --- a/bookwyrm/views/get_started.py +++ b/bookwyrm/views/get_started.py @@ -57,14 +57,7 @@ class GetStartedBooks(View): if len(book_results) < 5: popular_books = ( models.Edition.objects.exclude( - # exclude already shelved - Q( - parent_work__in=[ - b.book.parent_work - for b in request.user.shelfbook_set.distinct().all() - ] - ) - | Q( # and exclude if it's already in search results + Q( # exclude if it's already in search results parent_work__in=[b.parent_work for b in book_results] ) ) 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) diff --git a/bookwyrm/views/inbox.py b/bookwyrm/views/inbox.py index 239824958..6320b450f 100644 --- a/bookwyrm/views/inbox.py +++ b/bookwyrm/views/inbox.py @@ -1,7 +1,10 @@ """ incoming activities """ import json import re +import logging + from urllib.parse import urldefrag +import requests from django.http import HttpResponse, Http404 from django.core.exceptions import BadRequest, PermissionDenied @@ -9,13 +12,14 @@ from django.shortcuts import get_object_or_404 from django.utils.decorators import method_decorator from django.views import View from django.views.decorators.csrf import csrf_exempt -import requests from bookwyrm import activitypub, models from bookwyrm.tasks import app from bookwyrm.signatures import Signature from bookwyrm.utils import regex +logger = logging.getLogger(__name__) + @method_decorator(csrf_exempt, name="dispatch") # pylint: disable=no-self-use @@ -71,6 +75,7 @@ def raise_is_blocked_user_agent(request): return url = url.group() if models.FederatedServer.is_blocked(url): + logger.debug("%s is blocked, denying request based on user agent", url) raise PermissionDenied() @@ -78,16 +83,18 @@ def raise_is_blocked_activity(activity_json): """get the sender out of activity json and check if it's blocked""" actor = activity_json.get("actor") - # check if the user is banned/deleted - existing = models.User.find_existing_by_remote_id(actor) - if existing and existing.deleted: - raise PermissionDenied() - if not actor: # well I guess it's not even a valid activity so who knows return + # check if the user is banned/deleted + existing = models.User.find_existing_by_remote_id(actor) + if existing and existing.deleted: + logger.debug("%s is banned/deleted, denying request based on actor", actor) + raise PermissionDenied() + if models.FederatedServer.is_blocked(actor): + logger.debug("%s is blocked, denying request based on actor", actor) raise PermissionDenied() diff --git a/bookwyrm/views/list/curate.py b/bookwyrm/views/list/curate.py new file mode 100644 index 000000000..924f37709 --- /dev/null +++ b/bookwyrm/views/list/curate.py @@ -0,0 +1,55 @@ +""" book list views""" +from django.contrib.auth.decorators import login_required +from django.db.models import Max +from django.shortcuts import get_object_or_404, redirect +from django.template.response import TemplateResponse +from django.utils.decorators import method_decorator +from django.views import View + +from bookwyrm import forms, models +from bookwyrm.views.list.list import increment_order_in_reverse +from bookwyrm.views.list.list import normalize_book_list_ordering + + +# pylint: disable=no-self-use +@method_decorator(login_required, name="dispatch") +class Curate(View): + """approve or discard list suggestsions""" + + def get(self, request, list_id): + """display a pending list""" + book_list = get_object_or_404(models.List, id=list_id) + book_list.raise_not_editable(request.user) + + data = { + "list": book_list, + "pending": book_list.listitem_set.filter(approved=False), + "list_form": forms.ListForm(instance=book_list), + } + return TemplateResponse(request, "lists/curate.html", data) + + def post(self, request, list_id): + """edit a book_list""" + book_list = get_object_or_404(models.List, id=list_id) + book_list.raise_not_editable(request.user) + + suggestion = get_object_or_404(models.ListItem, id=request.POST.get("item")) + approved = request.POST.get("approved") == "true" + if approved: + # update the book and set it to be the last in the order of approved books, + # before any pending books + suggestion.approved = True + order_max = ( + book_list.listitem_set.filter(approved=True).aggregate(Max("order"))[ + "order__max" + ] + or 0 + ) + 1 + suggestion.order = order_max + increment_order_in_reverse(book_list.id, order_max) + suggestion.save() + else: + deleted_order = suggestion.order + suggestion.delete(broadcast=False) + normalize_book_list_ordering(book_list.id, start=deleted_order) + return redirect("list-curate", book_list.id) diff --git a/bookwyrm/views/list/embed.py b/bookwyrm/views/list/embed.py new file mode 100644 index 000000000..9d0078b65 --- /dev/null +++ b/bookwyrm/views/list/embed.py @@ -0,0 +1,75 @@ +""" book list views""" +from django.core.paginator import Paginator +from django.db.models import Avg, DecimalField +from django.db.models.functions import Coalesce +from django.http import Http404 +from django.shortcuts import get_object_or_404 +from django.template.response import TemplateResponse +from django.views import View +from django.views.decorators.clickjacking import xframe_options_exempt + +from bookwyrm import models +from bookwyrm.settings import PAGE_LENGTH + + +# pylint: disable=no-self-use +class EmbedList(View): + """embeded book list page""" + + def get(self, request, list_id, list_key): + """display a book list""" + book_list = get_object_or_404(models.List, id=list_id) + + embed_key = str(book_list.embed_key.hex) + + if list_key != embed_key: + raise Http404() + + # sort_by shall be "order" unless a valid alternative is given + sort_by = request.GET.get("sort_by", "order") + if sort_by not in ("order", "title", "rating"): + sort_by = "order" + + # direction shall be "ascending" unless a valid alternative is given + direction = request.GET.get("direction", "ascending") + if direction not in ("ascending", "descending"): + direction = "ascending" + + directional_sort_by = { + "order": "order", + "title": "book__title", + "rating": "average_rating", + }[sort_by] + if direction == "descending": + directional_sort_by = "-" + directional_sort_by + + items = book_list.listitem_set.prefetch_related("user", "book", "book__authors") + if sort_by == "rating": + items = items.annotate( + average_rating=Avg( + Coalesce("book__review__rating", 0.0), + output_field=DecimalField(), + ) + ) + items = items.filter(approved=True).order_by(directional_sort_by) + + paginated = Paginator(items, PAGE_LENGTH) + + page = paginated.get_page(request.GET.get("page")) + + data = { + "list": book_list, + "items": page, + "page_range": paginated.get_elided_page_range( + page.number, on_each_side=2, on_ends=1 + ), + } + return TemplateResponse(request, "lists/embed-list.html", data) + + +@xframe_options_exempt +def unsafe_embed_list(request, *args, **kwargs): + """allows the EmbedList view to be loaded through unsafe iframe origins""" + + embed_list_view = EmbedList.as_view() + return embed_list_view(request, *args, **kwargs) diff --git a/bookwyrm/views/list.py b/bookwyrm/views/list/list.py similarity index 54% rename from bookwyrm/views/list.py rename to bookwyrm/views/list/list.py index 804234acf..fbbbee9fe 100644 --- a/bookwyrm/views/list.py +++ b/bookwyrm/views/list/list.py @@ -3,96 +3,26 @@ from typing import Optional from urllib.parse import urlencode from django.contrib.auth.decorators import login_required +from django.core.exceptions import PermissionDenied from django.core.paginator import Paginator from django.db import IntegrityError, transaction from django.db.models import Avg, DecimalField, Q, Max from django.db.models.functions import Coalesce -from django.http import HttpResponseBadRequest, HttpResponse, Http404 +from django.http import HttpResponseBadRequest, HttpResponse from django.shortcuts import get_object_or_404, redirect from django.template.response import TemplateResponse from django.urls import reverse from django.utils.decorators import method_decorator from django.views import View from django.views.decorators.http import require_POST -from django.views.decorators.clickjacking import xframe_options_exempt from bookwyrm import book_search, forms, models from bookwyrm.activitypub import ActivitypubResponse -from bookwyrm.lists_stream import ListsStream from bookwyrm.settings import PAGE_LENGTH -from .helpers import is_api_request -from .helpers import get_user_from_username +from bookwyrm.views.helpers import is_api_request # pylint: disable=no-self-use -class Lists(View): - """book list page""" - - def get(self, request): - """display a book list""" - lists = ListsStream().get_list_stream(request.user) - paginated = Paginator(lists, 12) - data = { - "lists": paginated.get_page(request.GET.get("page")), - "list_form": forms.ListForm(), - "path": "/list", - } - return TemplateResponse(request, "lists/lists.html", data) - - @method_decorator(login_required, name="dispatch") - # pylint: disable=unused-argument - def post(self, request): - """create a book_list""" - form = forms.ListForm(request.POST) - if not form.is_valid(): - return redirect("lists") - book_list = form.save() - # list should not have a group if it is not group curated - if not book_list.curation == "group": - book_list.group = None - book_list.save(broadcast=False) - - return redirect(book_list.local_path) - - -@method_decorator(login_required, name="dispatch") -class SavedLists(View): - """saved book list page""" - - def get(self, request): - """display book lists""" - # hide lists with no approved books - lists = request.user.saved_lists.order_by("-updated_date") - - paginated = Paginator(lists, 12) - data = { - "lists": paginated.get_page(request.GET.get("page")), - "list_form": forms.ListForm(), - "path": "/list", - } - return TemplateResponse(request, "lists/lists.html", data) - - -@method_decorator(login_required, name="dispatch") -class UserLists(View): - """a user's book list page""" - - def get(self, request, username): - """display a book list""" - user = get_user_from_username(request.user, username) - lists = models.List.privacy_filter(request.user).filter(user=user) - paginated = Paginator(lists, 12) - - data = { - "user": user, - "is_self": request.user.id == user.id, - "lists": paginated.get_page(request.GET.get("page")), - "list_form": forms.ListForm(), - "path": user.local_path + "/lists", - } - return TemplateResponse(request, "user/lists.html", data) - - class List(View): """book list page""" @@ -191,7 +121,8 @@ class List(View): form = forms.ListForm(request.POST, instance=book_list) if not form.is_valid(): - return redirect("list", book_list.id) + # this shouldn't happen + raise Exception(form.errors) book_list = form.save() if not book_list.curation == "group": book_list.group = None @@ -200,103 +131,6 @@ class List(View): return redirect(book_list.local_path) -class EmbedList(View): - """embeded book list page""" - - def get(self, request, list_id, list_key): - """display a book list""" - book_list = get_object_or_404(models.List, id=list_id) - - embed_key = str(book_list.embed_key.hex) - - if list_key != embed_key: - raise Http404() - - # sort_by shall be "order" unless a valid alternative is given - sort_by = request.GET.get("sort_by", "order") - if sort_by not in ("order", "title", "rating"): - sort_by = "order" - - # direction shall be "ascending" unless a valid alternative is given - direction = request.GET.get("direction", "ascending") - if direction not in ("ascending", "descending"): - direction = "ascending" - - directional_sort_by = { - "order": "order", - "title": "book__title", - "rating": "average_rating", - }[sort_by] - if direction == "descending": - directional_sort_by = "-" + directional_sort_by - - items = book_list.listitem_set.prefetch_related("user", "book", "book__authors") - if sort_by == "rating": - items = items.annotate( - average_rating=Avg( - Coalesce("book__review__rating", 0.0), - output_field=DecimalField(), - ) - ) - items = items.filter(approved=True).order_by(directional_sort_by) - - paginated = Paginator(items, PAGE_LENGTH) - - page = paginated.get_page(request.GET.get("page")) - - data = { - "list": book_list, - "items": page, - "page_range": paginated.get_elided_page_range( - page.number, on_each_side=2, on_ends=1 - ), - } - return TemplateResponse(request, "lists/embed-list.html", data) - - -@method_decorator(login_required, name="dispatch") -class Curate(View): - """approve or discard list suggestsions""" - - def get(self, request, list_id): - """display a pending list""" - book_list = get_object_or_404(models.List, id=list_id) - book_list.raise_not_editable(request.user) - - data = { - "list": book_list, - "pending": book_list.listitem_set.filter(approved=False), - "list_form": forms.ListForm(instance=book_list), - } - return TemplateResponse(request, "lists/curate.html", data) - - def post(self, request, list_id): - """edit a book_list""" - book_list = get_object_or_404(models.List, id=list_id) - book_list.raise_not_editable(request.user) - - suggestion = get_object_or_404(models.ListItem, id=request.POST.get("item")) - approved = request.POST.get("approved") == "true" - if approved: - # update the book and set it to be the last in the order of approved books, - # before any pending books - suggestion.approved = True - order_max = ( - book_list.listitem_set.filter(approved=True).aggregate(Max("order"))[ - "order__max" - ] - or 0 - ) + 1 - suggestion.order = order_max - increment_order_in_reverse(book_list.id, order_max) - suggestion.save() - else: - deleted_order = suggestion.order - suggestion.delete(broadcast=False) - normalize_book_list_ordering(book_list.id, start=deleted_order) - return redirect("list-curate", book_list.id) - - @require_POST @login_required def save_list(request, list_id): @@ -330,53 +164,41 @@ def delete_list(request, list_id): @require_POST @login_required +@transaction.atomic def add_book(request): """put a book on a list""" - book_list = get_object_or_404(models.List, id=request.POST.get("list")) - is_group_member = False - if book_list.curation == "group": - is_group_member = models.GroupMember.objects.filter( - group=book_list.group, user=request.user - ).exists() - + book_list = get_object_or_404(models.List, id=request.POST.get("book_list")) + # make sure the user is allowed to submit to this list book_list.raise_visible_to_user(request.user) + if request.user != book_list.user and book_list.curation == "closed": + raise PermissionDenied() + + is_group_member = models.GroupMember.objects.filter( + group=book_list.group, user=request.user + ).exists() + + form = forms.ListItemForm(request.POST) + if not form.is_valid(): + # this shouldn't happen, there aren't validated fields + raise Exception(form.errors) + item = form.save(commit=False) + + if book_list.curation == "curated": + # make a pending entry at the end of the list + order_max = (book_list.listitem_set.aggregate(Max("order"))["order__max"]) or 0 + item.approved = is_group_member or request.user == book_list.user + else: + # add the book at the latest order of approved books, before pending books + order_max = ( + book_list.listitem_set.filter(approved=True).aggregate(Max("order"))[ + "order__max" + ] + ) or 0 + increment_order_in_reverse(book_list.id, order_max + 1) + item.order = order_max + 1 - book = get_object_or_404(models.Edition, id=request.POST.get("book")) - # do you have permission to add to the list? try: - if ( - request.user == book_list.user - or is_group_member - or book_list.curation == "open" - ): - # add the book at the latest order of approved books, before pending books - order_max = ( - book_list.listitem_set.filter(approved=True).aggregate(Max("order"))[ - "order__max" - ] - ) or 0 - increment_order_in_reverse(book_list.id, order_max + 1) - models.ListItem.objects.create( - book=book, - book_list=book_list, - user=request.user, - order=order_max + 1, - ) - elif book_list.curation == "curated": - # make a pending entry at the end of the list - order_max = ( - book_list.listitem_set.aggregate(Max("order"))["order__max"] - ) or 0 - models.ListItem.objects.create( - approved=False, - book=book, - book_list=book_list, - user=request.user, - order=order_max + 1, - ) - else: - # you can't add to this list, what were you THINKING - return HttpResponseBadRequest() + item.save() except IntegrityError: # if the book is already on the list, don't flip out pass @@ -499,11 +321,3 @@ def normalize_book_list_ordering(book_list_id, start=0, add_offset=0): if item.order != effective_order: item.order = effective_order item.save() - - -@xframe_options_exempt -def unsafe_embed_list(request, *args, **kwargs): - """allows the EmbedList view to be loaded through unsafe iframe origins""" - - embed_list_view = EmbedList.as_view() - return embed_list_view(request, *args, **kwargs) diff --git a/bookwyrm/views/list/list_item.py b/bookwyrm/views/list/list_item.py new file mode 100644 index 000000000..6dca908fb --- /dev/null +++ b/bookwyrm/views/list/list_item.py @@ -0,0 +1,27 @@ +""" book list views""" +from django.contrib.auth.decorators import login_required +from django.shortcuts import get_object_or_404, redirect +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 +@method_decorator(login_required, name="dispatch") +class ListItem(View): + """book list page""" + + def post(self, request, list_id, list_item): + """Edit a list item's notes""" + list_item = get_object_or_404(models.ListItem, id=list_item, book_list=list_id) + list_item.raise_not_editable(request.user) + form = forms.ListItemForm(request.POST, instance=list_item) + if form.is_valid(): + 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) diff --git a/bookwyrm/views/list/lists.py b/bookwyrm/views/list/lists.py new file mode 100644 index 000000000..635ad4bc7 --- /dev/null +++ b/bookwyrm/views/list/lists.py @@ -0,0 +1,80 @@ +""" book list views""" +from django.contrib.auth.decorators import login_required +from django.core.paginator import Paginator +from django.shortcuts import redirect +from django.template.response import TemplateResponse +from django.utils.decorators import method_decorator +from django.views import View + +from bookwyrm import forms, models +from bookwyrm.lists_stream import ListsStream +from bookwyrm.views.helpers import get_user_from_username + + +# pylint: disable=no-self-use +class Lists(View): + """book list page""" + + def get(self, request): + """display a book list""" + lists = ListsStream().get_list_stream(request.user) + paginated = Paginator(lists, 12) + data = { + "lists": paginated.get_page(request.GET.get("page")), + "list_form": forms.ListForm(), + "path": "/list", + } + return TemplateResponse(request, "lists/lists.html", data) + + @method_decorator(login_required, name="dispatch") + # pylint: disable=unused-argument + def post(self, request): + """create a book_list""" + form = forms.ListForm(request.POST) + if not form.is_valid(): + return redirect("lists") + book_list = form.save() + # list should not have a group if it is not group curated + if not book_list.curation == "group": + book_list.group = None + book_list.save(broadcast=False) + + return redirect(book_list.local_path) + + +@method_decorator(login_required, name="dispatch") +class SavedLists(View): + """saved book list page""" + + def get(self, request): + """display book lists""" + # hide lists with no approved books + lists = request.user.saved_lists.order_by("-updated_date") + + paginated = Paginator(lists, 12) + data = { + "lists": paginated.get_page(request.GET.get("page")), + "list_form": forms.ListForm(), + "path": "/list", + } + return TemplateResponse(request, "lists/lists.html", data) + + +@method_decorator(login_required, name="dispatch") +class UserLists(View): + """a user's book list page""" + + def get(self, request, username): + """display a book list""" + user = get_user_from_username(request.user, username) + lists = models.List.privacy_filter(request.user).filter(user=user) + paginated = Paginator(lists, 12) + + data = { + "user": user, + "is_self": request.user.id == user.id, + "lists": paginated.get_page(request.GET.get("page")), + "list_form": forms.ListForm(), + "path": user.local_path + "/lists", + } + return TemplateResponse(request, "user/lists.html", data) diff --git a/bookwyrm/views/reading.py b/bookwyrm/views/reading.py index d90c0e9dc..2cd05202c 100644 --- a/bookwyrm/views/reading.py +++ b/bookwyrm/views/reading.py @@ -46,9 +46,7 @@ class ReadingStatus(View): return HttpResponseBadRequest() # invalidate related caches - cache.delete( - f"active_shelf-{request.user.id}-{book_id}", - ) + cache.delete(f"active_shelf-{request.user.id}-{book_id}") desired_shelf = get_object_or_404( models.Shelf, identifier=identifier, user=request.user diff --git a/bookwyrm/views/rss_feed.py b/bookwyrm/views/rss_feed.py index b924095cc..1e9d57460 100644 --- a/bookwyrm/views/rss_feed.py +++ b/bookwyrm/views/rss_feed.py @@ -4,7 +4,6 @@ from django.contrib.syndication.views import Feed from django.template.loader import get_template from django.utils.translation import gettext_lazy as _ -from bookwyrm import models from .helpers import get_user_from_username # pylint: disable=no-self-use, unused-argument @@ -36,10 +35,9 @@ class RssFeed(Feed): def items(self, obj): """the user's activity feed""" - return models.Status.privacy_filter( - obj, - privacy_levels=["public", "unlisted"], - ).filter(user=obj) + return obj.status_set.select_subclasses().filter( + privacy__in=["public", "unlisted"], + )[:10] def item_link(self, item): """link to the status""" diff --git a/bookwyrm/views/shelf/shelf.py b/bookwyrm/views/shelf/shelf.py index 0662f302d..378b346b3 100644 --- a/bookwyrm/views/shelf/shelf.py +++ b/bookwyrm/views/shelf/shelf.py @@ -1,7 +1,7 @@ """ shelf views """ from collections import namedtuple -from django.db.models import OuterRef, Subquery, F +from django.db.models import OuterRef, Subquery, F, Max from django.contrib.auth.decorators import login_required from django.core.paginator import Paginator from django.http import HttpResponseBadRequest @@ -72,11 +72,7 @@ class Shelf(View): "start_date" ) - if shelf_identifier: - books = books.annotate(shelved_date=F("shelfbook__shelved_date")) - else: - # sorting by shelved date will cause duplicates in the "all books" view - books = books.annotate(shelved_date=F("updated_date")) + books = books.annotate(shelved_date=Max("shelfbook__shelved_date")) books = books.annotate( rating=Subquery(reviews.values("rating")[:1]), start_date=Subquery(reading.values("start_date")[:1]), diff --git a/bookwyrm/views/updates.py b/bookwyrm/views/updates.py index 765865ef5..82e857648 100644 --- a/bookwyrm/views/updates.py +++ b/bookwyrm/views/updates.py @@ -1,6 +1,7 @@ """ endpoints for getting updates about activity """ from django.contrib.auth.decorators import login_required from django.http import Http404, JsonResponse +from django.utils.translation import ngettext from bookwyrm import activitystreams @@ -17,14 +18,31 @@ def get_notification_count(request): @login_required -def get_unread_status_count(request, stream="home"): +def get_unread_status_string(request, stream="home"): """any unread statuses for this feed?""" stream = activitystreams.streams.get(stream) if not stream: raise Http404 - return JsonResponse( - { - "count": stream.get_unread_count(request.user), - "count_by_type": stream.get_unread_count_by_status_type(request.user), - } - ) + + counts_by_type = stream.get_unread_count_by_status_type(request.user).items() + if counts_by_type == {}: + count = stream.get_unread_count(request.user) + else: + # only consider the types that are visible in the feed + allowed_status_types = request.user.feed_status_types + count = sum(c for (k, c) in counts_by_type if k in allowed_status_types) + # if "everything else" is allowed, add other types to the sum + count += sum( + c + for (k, c) in counts_by_type + if k not in ["review", "comment", "quotation"] + ) + + if not count: + return JsonResponse({}) + + translation_string = lambda c: ngettext( + "Load %(count)d unread status", "Load %(count)d unread statuses", c + ) % {"count": c} + + return JsonResponse({"count": translation_string(count)}) diff --git a/bookwyrm/views/user.py b/bookwyrm/views/user.py index 9deea14b7..15ed5d29f 100644 --- a/bookwyrm/views/user.py +++ b/bookwyrm/views/user.py @@ -30,17 +30,20 @@ class User(View): shelf_preview = [] - # only show other shelves that should be visible - shelves = user.shelf_set + # 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) + 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() - for user_shelf in shelves.all(): - if not user_shelf.books.count(): - continue + for user_shelf in shelves.all()[:3]: shelf_preview.append( { "name": user_shelf.name, @@ -49,8 +52,6 @@ class User(View): "size": user_shelf.books.count(), } ) - if len(shelf_preview) > 2: - break # user's posts activities = ( diff --git a/bw-dev b/bw-dev index 2b9a70de3..ac34c3de3 100755 --- a/bw-dev +++ b/bw-dev @@ -27,8 +27,8 @@ 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 awscommand { diff --git a/docker-compose.yml b/docker-compose.yml index d158c8c11..a940dc0a5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -49,7 +49,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} @@ -86,10 +86,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: diff --git a/locale/de_DE/LC_MESSAGES/django.mo b/locale/de_DE/LC_MESSAGES/django.mo index 45e2a74bd..4ce83f72b 100644 Binary files a/locale/de_DE/LC_MESSAGES/django.mo and b/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index 336eed79d..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-13 16:54+0000\n" -"PO-Revision-Date: 2022-01-13 17:50\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" @@ -17,64 +17,72 @@ 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:351 +#: 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 "Es existiert bereits ein Benutzer*inkonto mit dieser E-Mail-Adresse." -#: bookwyrm/forms.py:365 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Ein Tag" -#: bookwyrm/forms.py:366 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Eine Woche" -#: bookwyrm/forms.py:367 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Ein Monat" -#: bookwyrm/forms.py:368 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "Läuft nicht ab" -#: bookwyrm/forms.py:372 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i}-mal verwendbar" -#: bookwyrm/forms.py:373 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Unbegrenzt" -#: bookwyrm/forms.py:469 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Reihenfolge der Liste" -#: bookwyrm/forms.py:470 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Buchtitel" -#: bookwyrm/forms.py:471 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:33 +#: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Bewertung" -#: bookwyrm/forms.py:473 bookwyrm/templates/lists/list.html:134 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Sortieren nach" -#: bookwyrm/forms.py:477 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Aufsteigend" -#: bookwyrm/forms.py:478 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Absteigend" -#: bookwyrm/forms.py:491 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." -msgstr "Du kannst das Buch nicht abgeschlossen haben bevor du es begonnen hast." +msgstr "Enddatum darf nicht vor dem Startdatum liegen." #: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 msgid "Error loading book" @@ -84,8 +92,9 @@ msgstr "Fehler beim Laden des Buches" msgid "Could not find a match for book" msgstr "Keine Übereinstimmung für das Buch gefunden" -#: bookwyrm/models/base_model.py:17 +#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 +#: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "Ausstehend" @@ -105,23 +114,23 @@ msgstr "Moderator*in löschen" msgid "Domain block" msgstr "Domainsperrung" -#: bookwyrm/models/book.py:250 +#: bookwyrm/models/book.py:253 msgid "Audiobook" msgstr "Hörbuch" -#: bookwyrm/models/book.py:251 +#: bookwyrm/models/book.py:254 msgid "eBook" msgstr "E-Book" -#: bookwyrm/models/book.py:252 +#: bookwyrm/models/book.py:255 msgid "Graphic novel" msgstr "Graphic Novel" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:256 msgid "Hardcover" msgstr "Hardcover" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:257 msgid "Paperback" msgstr "Taschenbuch" @@ -131,33 +140,34 @@ msgstr "Taschenbuch" msgid "Federated" msgstr "Föderiert" -#: bookwyrm/models/federated_server.py:12 +#: bookwyrm/models/federated_server.py:12 bookwyrm/models/link.py:71 #: bookwyrm/templates/settings/federation/edit_instance.html:44 #: bookwyrm/templates/settings/federation/instance.html:10 #: bookwyrm/templates/settings/federation/instance_list.html:23 +#: bookwyrm/templates/settings/link_domains/link_domains.html:27 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 @@ -165,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 @@ -173,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 @@ -189,6 +199,23 @@ msgstr "Follower*innen" msgid "Private" msgstr "Privat" +#: bookwyrm/models/link.py:51 +msgid "Free" +msgstr "Kostenlos" + +#: bookwyrm/models/link.py:52 +msgid "Purchasable" +msgstr "Käuflich erhältlich" + +#: bookwyrm/models/link.py:53 +msgid "Available for loan" +msgstr "Zum Liehen erhältlich" + +#: bookwyrm/models/link.py:70 +#: bookwyrm/templates/settings/link_domains/link_domains.html:23 +msgid "Approved" +msgstr "Bestätigt" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Besprechungen" @@ -203,71 +230,75 @@ msgstr "Zitate" #: bookwyrm/models/user.py:35 msgid "Everything else" -msgstr "Alles Andere" +msgstr "Alles andere" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home Timeline" msgstr "Start-Zeitleiste" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home" msgstr "Startseite" -#: bookwyrm/settings.py:122 +#: bookwyrm/settings.py:174 msgid "Books Timeline" msgstr "Bücher-Zeitleiste" -#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Bücher" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:248 msgid "English" msgstr "English (Englisch)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:249 msgid "Deutsch (German)" msgstr "Deutsch" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:250 msgid "Español (Spanish)" msgstr "Español (Spanisch)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:251 msgid "Galego (Galician)" msgstr "Galego (Galizisch)" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:252 msgid "Italiano (Italian)" -msgstr "" +msgstr "Italiano (Italienisch)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:253 msgid "Français (French)" msgstr "Français (Französisch)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:254 msgid "Lietuvių (Lithuanian)" -msgstr "Litauisch (Lithuanian)" +msgstr "Lietuvių (Litauisch)" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:255 msgid "Norsk (Norwegian)" -msgstr "" +msgstr "Norsk (Norwegisch)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:256 msgid "Português do Brasil (Brazilian Portuguese)" -msgstr "Portugiesisch (Brasilien)" +msgstr "Português do Brasil (brasilianisches Portugiesisch)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:257 msgid "Português Europeu (European Portuguese)" -msgstr "Portugiesisch (Portugal)" +msgstr "Português Europeu (Portugiesisch)" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:258 +msgid "Svenska (Swedish)" +msgstr "Svenska (Schwedisch)" + +#: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (vereinfachtes Chinesisch)" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:260 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinesisch, traditionell)" @@ -294,63 +325,59 @@ msgstr "Etwas ist schief gelaufen! Tut uns leid." #: bookwyrm/templates/about/about.html:9 #: bookwyrm/templates/about/layout.html:35 msgid "About" -msgstr "Allgemein" +msgstr "Über" -#: bookwyrm/templates/about/about.html:18 +#: bookwyrm/templates/about/about.html:19 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "Willkommen auf %(site_name)s!" -#: bookwyrm/templates/about/about.html:22 +#: 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 "%(site_name)s ist Teil von BookWyrm, ein Netzwerk unabhängiger, selbst verwalteter Communities von Bücherfreunden. Obwohl du dich nahtlos mit anderen Benutzern irgendwo im Netzwerk von BookWyrm austauschen kannst, ist jede Community einzigartig." +msgstr "%(site_name)s ist Teil von BookWyrm, ein Netzwerk unabhängiger, selbstverwalteter Gemeinschaften für Leser*innen. Obwohl du dich nahtlos mit anderen Benutzer*innen überall im BookWyrm-Netzwerk austauschen kannst, ist diese Gemeinschaft einzigartig." -#: bookwyrm/templates/about/about.html:39 +#: bookwyrm/templates/about/about.html:40 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "%(title)s ist mit einer durchschnittlichen Bewertung von %(rating)s (von 5) das beliebtestes Buch auf %(site_name)s." -#: bookwyrm/templates/about/about.html:58 +#: bookwyrm/templates/about/about.html:59 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "Das Buch %(title)s wollen mehr Benutzer*innen von %(site_name)s lesen als jedes andere Buch." -#: bookwyrm/templates/about/about.html:77 +#: bookwyrm/templates/about/about.html:78 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "%(title)s hat die unterschiedlichsten Bewertungen aller Bücher auf %(site_name)s." -#: bookwyrm/templates/about/about.html:88 +#: 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 "Verfolge deine Lektüre, sprich über Bücher, schreibe Besprechungen und entdecke, was Du als Nächstes lesen könntest. BookWyrm ist eine Software im menschlichen Maßstab, die immer übersichtlich, werbefrei, persönlich, und gemeinschaftsorientiert sein wird. Wenn du Feature-Anfragen, Fehlerberichte oder große Träume hast, wende dich an und verschaffe dir Gehör." -#: bookwyrm/templates/about/about.html:95 +#: bookwyrm/templates/about/about.html:96 msgid "Meet your admins" msgstr "Lerne deinen Admins kennen" -#: bookwyrm/templates/about/about.html:98 +#: bookwyrm/templates/about/about.html:99 #, python-format -msgid "\n" -" %(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.\n" -" " -msgstr "\n" -" die Moderatoren und Administratoren von %(site_name)s halten diese Seite am laufen, setzen die Verhaltensregeln durch und reagieren auf Meldungen über Spam oder schlechtes Benehmen von Nutzer*innen.\n" -" " +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 "Die Moderator*innen und Administrator*innen von %(site_name)s halten diese Seite am Laufen. Beachte den Verhaltenskodex und melde, wenn andere Benutzer*innen dagegen verstoßen oder Spam verbreiten." -#: bookwyrm/templates/about/about.html:112 +#: bookwyrm/templates/about/about.html:113 msgid "Moderator" -msgstr "Moderator" +msgstr "Moderator*in" -#: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 msgid "Admin" msgstr "Administration" -#: bookwyrm/templates/about/about.html:130 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:13 +#: 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" @@ -362,11 +389,11 @@ msgstr "Verhaltenskodex" #: bookwyrm/templates/about/layout.html:11 msgid "Active users:" -msgstr "Aktive Nutzer*innen:" +msgstr "Aktive Benutzer*innen:" #: bookwyrm/templates/about/layout.html:15 msgid "Statuses posted:" -msgstr "Veröffentlichte Status:" +msgstr "Veröffentlichte Statusmeldungen:" #: bookwyrm/templates/about/layout.html:19 msgid "Software version:" @@ -398,7 +425,7 @@ msgstr "Rückblick auf %(year)s" #: bookwyrm/templates/annual_summary/layout.html:47 #, python-format msgid "%(display_name)s’s year of reading" -msgstr "%(display_name)s’s Jahr mit Büchern" +msgstr "Lektürejahr für %(display_name)s" #: bookwyrm/templates/annual_summary/layout.html:53 msgid "Share this page" @@ -409,7 +436,7 @@ msgid "Copy address" msgstr "Adresse kopieren" #: bookwyrm/templates/annual_summary/layout.html:68 -#: bookwyrm/templates/lists/list.html:230 +#: bookwyrm/templates/lists/list.html:269 msgid "Copied!" msgstr "Kopiert!" @@ -419,7 +446,7 @@ msgstr "Freigabestatus: öffentlich mit Schlüssel" #: bookwyrm/templates/annual_summary/layout.html:78 msgid "The page can be seen by anyone with the complete address." -msgstr "Diese Seite kann jeder sehen, der die vollständige Adresse kennt." +msgstr "Diese Seite können alle sehen, die die vollständige Adresse kennen." #: bookwyrm/templates/annual_summary/layout.html:83 msgid "Make page private" @@ -427,7 +454,7 @@ msgstr "Seite auf privat stellen" #: bookwyrm/templates/annual_summary/layout.html:89 msgid "Sharing status: private" -msgstr "Freigabestatus: private" +msgstr "Freigabestatus: privat" #: bookwyrm/templates/annual_summary/layout.html:90 msgid "The page is private, only you can see it." @@ -439,19 +466,19 @@ msgstr "Seite öffentlich machen" #: bookwyrm/templates/annual_summary/layout.html:99 msgid "When you make your page private, the old key won’t give access to the page anymore. A new key will be created if the page is once again made public." -msgstr "Wenn du diese Seite auf privat stellen wird der alte Schlüssel ungültig. Ein neuer Schlüssel wird erzeugt solltest du die Seite erneut freigeben." +msgstr "Wenn du diese Seite auf privat stellst, wird der alte Schlüssel ungültig. Ein neuer Schlüssel wird erzeugt, solltest du die Seite erneut freigeben." #: bookwyrm/templates/annual_summary/layout.html:112 #, python-format msgid "Sadly %(display_name)s didn’t finish any books in %(year)s" -msgstr "Leider hat %(display_name)s keine Bücher in %(year)s zu Ende gelesen" +msgstr "Leider hat %(display_name)s %(year)s keine Bücher zu Ende gelesen" #: bookwyrm/templates/annual_summary/layout.html:118 #, python-format msgid "In %(year)s, %(display_name)s read %(books_total)s book
    for a total of %(pages_total)s pages!" msgid_plural "In %(year)s, %(display_name)s read %(books_total)s books
    for a total of %(pages_total)s pages!" -msgstr[0] "Im Jahr %(year)s las %(display_name)s %(books_total)s Buch
    mit %(pages_total)s Seiten!" -msgstr[1] "Im Jahr %(year)s las %(display_name)s %(books_total)s Bücher
    mit zusammen %(pages_total)s Seiten!" +msgstr[0] "%(year)s hat %(display_name)s %(books_total)s Buch gelesen
    insgesamt %(pages_total)s Seiten!" +msgstr[1] "%(year)s hat %(display_name)s %(books_total)s Bücher gelesen
    insgesamt %(pages_total)s Seiten!" #: bookwyrm/templates/annual_summary/layout.html:124 msgid "That’s great!" @@ -466,19 +493,19 @@ msgstr "Im Durchschnitt waren das %(pages)s Seiten pro Buch." #, python-format msgid "(%(no_page_number)s book doesn’t have pages)" msgid_plural "(%(no_page_number)s books don’t have pages)" -msgstr[0] "(zu %(no_page_number)s Buch ist keine Seitenzahl angegeben)" -msgstr[1] "(zu %(no_page_number)s Büchern ist keine Seitenzahl angegeben)" +msgstr[0] "(für %(no_page_number)s Buch ist keine Seitenzahl bekannt)" +msgstr[1] "(für %(no_page_number)s Bücher sind keine Seitenzahlen bekannt)" #: bookwyrm/templates/annual_summary/layout.html:148 msgid "Their shortest read this year…" -msgstr "Das am schnellsten gelesene Buch dieses Jahr…" +msgstr "Das am schnellsten gelesene Buch dieses Jahr …" #: bookwyrm/templates/annual_summary/layout.html:155 #: bookwyrm/templates/annual_summary/layout.html:176 #: bookwyrm/templates/annual_summary/layout.html:245 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 -#: bookwyrm/templates/landing/large-book.html:25 +#: bookwyrm/templates/landing/large-book.html:26 #: bookwyrm/templates/landing/small-book.html:18 msgid "by" msgstr "von" @@ -491,14 +518,14 @@ msgstr "%(pages)s Seiten" #: bookwyrm/templates/annual_summary/layout.html:169 msgid "…and the longest" -msgstr "…und das am längsten" +msgstr "… und das längste" #: bookwyrm/templates/annual_summary/layout.html:200 #, python-format msgid "%(display_name)s set a goal of reading %(goal)s book in %(year)s,
    and achieved %(goal_percent)s%% of that goal" msgid_plural "%(display_name)s set a goal of reading %(goal)s books in %(year)s,
    and achieved %(goal_percent)s%% of that goal" -msgstr[0] "%(display_name)s hat sich als Ziel gesetzt, %(goal)s Buch in %(year)s zu lesen
    und hat %(goal_percent)s%% dieses Ziels erreicht" -msgstr[1] "%(display_name)s hat sich als Ziel gesetzt, %(goal)s Bücher in %(year)s zu lesen
    und hat %(goal_percent)s%% dieses Ziels erreicht" +msgstr[0] "%(display_name)s hat sich als Ziel gesetzt, %(year)s %(goal)s Buch zu lesen
    und hat %(goal_percent)s% % dieses Ziels erreicht" +msgstr[1] "%(display_name)s hat sich als Ziel gesetzt, %(year)s %(goal)s Bücher zu lesen
    und hat %(goal_percent)s% % dieses Ziels erreicht" #: bookwyrm/templates/annual_summary/layout.html:209 msgid "Way to go!" @@ -508,12 +535,12 @@ msgstr "Weiter so!" #, python-format msgid "%(display_name)s left %(ratings_total)s rating,
    their average rating is %(rating_average)s" msgid_plural "%(display_name)s left %(ratings_total)s ratings,
    their average rating is %(rating_average)s" -msgstr[0] "%(display_name)s hat %(ratings_total)s Rezensionen mit einer durchschnittlichen Bewertung von %(rating_average)s geschrieben" -msgstr[1] "%(display_name)s hat %(ratings_total)s Rezensionen mit einer durchschnittlichen Bewertung von %(rating_average)s geschrieben" +msgstr[0] "%(display_name)s hat %(ratings_total)s Bewertung geschrieben,
    die durchschnittliche Bewertung ist %(rating_average)s" +msgstr[1] "%(display_name)s hat %(ratings_total)s Bewertungen geschrieben,
    die durchschnittliche Bewertung ist %(rating_average)s" #: bookwyrm/templates/annual_summary/layout.html:238 msgid "Their best rated review" -msgstr "Ihre oder Seine bestbewertete Rezension" +msgstr "Am besten bewertete Besprechung" #: bookwyrm/templates/annual_summary/layout.html:251 #, python-format @@ -523,68 +550,68 @@ msgstr "Ihre Bewertung: %(rating)s" #: bookwyrm/templates/annual_summary/layout.html:268 #, python-format msgid "All the books %(display_name)s read in %(year)s" -msgstr "Alle Bücher die %(display_name)s im Jahr %(year)s gelesen hat" +msgstr "Alle Bücher, die %(display_name)s %(year)s gelesen hat" #: bookwyrm/templates/author/author.html:18 #: bookwyrm/templates/author/author.html:19 msgid "Edit Author" msgstr "Autor*in bearbeiten" -#: bookwyrm/templates/author/author.html:40 +#: bookwyrm/templates/author/author.html:35 msgid "Author details" -msgstr "Über den Autor" +msgstr "Autor*in-Details" -#: bookwyrm/templates/author/author.html:44 +#: bookwyrm/templates/author/author.html:39 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "Alternative Namen:" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:48 msgid "Born:" msgstr "Geboren:" -#: bookwyrm/templates/author/author.html:60 +#: bookwyrm/templates/author/author.html:55 msgid "Died:" msgstr "Gestorben:" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:65 msgid "External links" msgstr "Externe Links" -#: bookwyrm/templates/author/author.html:75 +#: bookwyrm/templates/author/author.html:70 msgid "Wikipedia" msgstr "Wikipedia" -#: bookwyrm/templates/author/author.html:83 +#: bookwyrm/templates/author/author.html:78 msgid "View ISNI record" msgstr "ISNI-Datensatz anzeigen" -#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/author.html:83 #: bookwyrm/templates/author/sync_modal.html:5 #: bookwyrm/templates/book/book.html:122 #: bookwyrm/templates/book/sync_modal.html:5 msgid "Load data" msgstr "Lade Daten" -#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/author/author.html:87 #: bookwyrm/templates/book/book.html:126 msgid "View on OpenLibrary" msgstr "Auf OpenLibrary ansehen" -#: bookwyrm/templates/author/author.html:107 +#: bookwyrm/templates/author/author.html:102 #: bookwyrm/templates/book/book.html:140 msgid "View on Inventaire" msgstr "Auf Inventaire anzeigen" -#: bookwyrm/templates/author/author.html:123 +#: bookwyrm/templates/author/author.html:118 msgid "View on LibraryThing" msgstr "Auf LibraryThing anzeigen" -#: bookwyrm/templates/author/author.html:131 +#: bookwyrm/templates/author/author.html:126 msgid "View on Goodreads" msgstr "Auf Goodreads ansehen" -#: bookwyrm/templates/author/author.html:145 +#: bookwyrm/templates/author/author.html:141 #, python-format msgid "Books by %(name)s" msgstr "Bücher von %(name)s" @@ -614,7 +641,9 @@ msgid "Metadata" msgstr "Metadaten" #: bookwyrm/templates/author/edit_author.html:35 -#: bookwyrm/templates/lists/form.html:9 bookwyrm/templates/shelf/form.html:9 +#: bookwyrm/templates/lists/form.html:9 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:14 +#: bookwyrm/templates/shelf/form.html:9 msgid "Name:" msgstr "Name:" @@ -663,13 +692,16 @@ msgstr "Goodreads-Schlüssel:" #: bookwyrm/templates/author/edit_author.html:105 msgid "ISNI:" -msgstr "" +msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 +#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: 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 @@ -677,7 +709,7 @@ msgstr "" #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 #: bookwyrm/templates/settings/site.html:133 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:68 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 msgid "Save" @@ -689,27 +721,31 @@ msgstr "Speichern" #: 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/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/settings/federation/instance.html:88 -#: bookwyrm/templates/snippets/report_modal.html:38 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 +#: bookwyrm/templates/snippets/report_modal.html:54 msgid "Cancel" msgstr "Abbrechen" #: bookwyrm/templates/author/sync_modal.html:15 #, python-format msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." -msgstr "Das Nachladen von Daten wird eine Verbindung zu %(source_name)s aufbauen und überprüfen ob Informationen über den Autor ergänzt werden konnten die hier noch nicht vorliegen. Bestehende Informationen werden nicht überschrieben." +msgstr "Das Laden von Daten wird eine Verbindung zu %(source_name)s aufbauen und überprüfen, ob Autor*in-Informationen vorliegen, die hier noch nicht bekannt sind. Bestehende Informationen werden nicht überschrieben." #: bookwyrm/templates/author/sync_modal.html:22 #: bookwyrm/templates/book/edit/edit_book.html:108 #: bookwyrm/templates/book/sync_modal.html:22 -#: bookwyrm/templates/groups/members.html:30 +#: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 -#: bookwyrm/templates/snippets/remove_from_group_button.html:16 +#: bookwyrm/templates/snippets/remove_from_group_button.html:17 msgid "Confirm" msgstr "Bestätigen" @@ -719,7 +755,7 @@ msgstr "Buch bearbeiten" #: bookwyrm/templates/book/book.html:79 bookwyrm/templates/book/book.html:82 msgid "Click to add cover" -msgstr "Cover durch Klicken hinzufügen" +msgstr "Titelbild durch klicken hinzufügen" #: bookwyrm/templates/book/book.html:88 msgid "Failed to load cover" @@ -727,7 +763,7 @@ msgstr "Fehler beim Laden des Titelbilds" #: bookwyrm/templates/book/book.html:99 msgid "Click to enlarge" -msgstr "Zum Vergrößern anklicken" +msgstr "Zum vergrößern anklicken" #: bookwyrm/templates/book/book.html:170 #, python-format @@ -753,7 +789,7 @@ msgstr "%(count)s Ausgaben" #: bookwyrm/templates/book/book.html:211 msgid "You have shelved this edition in:" -msgstr "Du hast diese Ausgabe eingeordnet unter:" +msgstr "Du hast diese Ausgabe im folgenden Regal:" #: bookwyrm/templates/book/book.html:226 #, python-format @@ -793,8 +829,8 @@ msgid "Places" msgstr "Orte" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 -#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: 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 @@ -808,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:208 +#: 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" @@ -844,7 +881,7 @@ msgstr "Titelbild von URL laden:" #: bookwyrm/templates/book/cover_show_modal.html:6 msgid "Book cover preview" -msgstr "Vorschau auf das Cover" +msgstr "Vorschau des Titelbilds" #: bookwyrm/templates/book/cover_show_modal.html:11 #: bookwyrm/templates/components/inline_form.html:8 @@ -876,7 +913,7 @@ msgstr "Buchinfo bestätigen" #: bookwyrm/templates/book/edit/edit_book.html:56 #, python-format msgid "Is \"%(name)s\" one of these authors?" -msgstr "Ist \"%(name)s\" einer dieser Autoren?" +msgstr "Ist „%(name)s“ einer dieser Autor*innen?" #: bookwyrm/templates/book/edit/edit_book.html:67 #: bookwyrm/templates/book/edit/edit_book.html:69 @@ -885,7 +922,7 @@ msgstr "Autor*in von " #: bookwyrm/templates/book/edit/edit_book.html:69 msgid "Find more information at isni.org" -msgstr "Weitere Informationen finden Sie auf isni.org" +msgstr "Weitere Informationen auf isni.org finden" #: bookwyrm/templates/book/edit/edit_book.html:79 msgid "This is a new author" @@ -910,7 +947,7 @@ msgid "Back" msgstr "Zurück" #: bookwyrm/templates/book/edit/edit_book_form.html:21 -#: bookwyrm/templates/snippets/create_status/review.html:16 +#: bookwyrm/templates/snippets/create_status/review.html:15 msgid "Title:" msgstr "Titel:" @@ -972,11 +1009,11 @@ msgstr "Autor*in hinzufügen" #: bookwyrm/templates/book/edit/edit_book_form.html:146 #: bookwyrm/templates/book/edit/edit_book_form.html:149 msgid "Jane Doe" -msgstr "" +msgstr "Lisa Musterfrau" #: bookwyrm/templates/book/edit/edit_book_form.html:152 msgid "Add Another Author" -msgstr "Weiteren Autor hinzufügen" +msgstr "Weitere*n Autor*in hinzufügen" #: bookwyrm/templates/book/edit/edit_book_form.html:160 #: bookwyrm/templates/shelf/shelf.html:146 @@ -988,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:" @@ -1026,20 +1063,132 @@ 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" +#: bookwyrm/templates/book/file_links/add_link_modal.html:6 +msgid "Add file link" +msgstr "Datei-Link hinzufügen" + +#: 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 "Links zu unbekannten Domains müssen von eine*r Moderator*in genehmigt werden, bevor sie hinzugefügt werden." + +#: bookwyrm/templates/book/file_links/add_link_modal.html:24 +msgid "URL:" +msgstr "URL:" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:29 +msgid "File type:" +msgstr "Dateityp:" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:48 +msgid "Availability:" +msgstr "Verfügbarkeit:" + +#: 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 "Links bearbeiten" + +#: bookwyrm/templates/book/file_links/edit_links.html:11 +#, python-format +msgid "\n" +" Links for \"%(title)s\"\n" +" " +msgstr "\n" +" Links für „%(title)s“\n" +" " + +#: bookwyrm/templates/book/file_links/edit_links.html:32 +#: bookwyrm/templates/settings/link_domains/link_table.html:6 +msgid "URL" +msgstr "URL" + +#: bookwyrm/templates/book/file_links/edit_links.html:33 +#: bookwyrm/templates/settings/link_domains/link_table.html:7 +msgid "Added by" +msgstr "Hinzugefügt von" + +#: bookwyrm/templates/book/file_links/edit_links.html:34 +#: bookwyrm/templates/settings/link_domains/link_table.html:8 +msgid "Filetype" +msgstr "Dateityp" + +#: bookwyrm/templates/book/file_links/edit_links.html:35 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 +#: bookwyrm/templates/settings/reports/report_links_table.html:5 +msgid "Domain" +msgstr "Domain" + +#: bookwyrm/templates/book/file_links/edit_links.html:36 +#: bookwyrm/templates/import/import_status.html:127 +#: bookwyrm/templates/settings/announcements/announcements.html:38 +#: bookwyrm/templates/settings/federation/instance_list.html:46 +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 +#: bookwyrm/templates/settings/invites/status_filter.html:5 +#: bookwyrm/templates/settings/users/user_admin.html:34 +#: bookwyrm/templates/settings/users/user_info.html:20 +msgid "Status" +msgstr "Status" + +#: bookwyrm/templates/book/file_links/edit_links.html:37 +#: bookwyrm/templates/settings/federation/instance.html:94 +#: bookwyrm/templates/settings/reports/report_links_table.html:6 +msgid "Actions" +msgstr "Aktionen" + +#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 +msgid "Report spam" +msgstr "Spam melden" + +#: bookwyrm/templates/book/file_links/edit_links.html:97 +msgid "No links available for this book." +msgstr "Keine Links für dieses Buch vorhanden." + +#: bookwyrm/templates/book/file_links/edit_links.html:108 +#: bookwyrm/templates/book/file_links/links.html:18 +msgid "Add link to file" +msgstr "Link zur Datei hinzufügen" + +#: bookwyrm/templates/book/file_links/file_link_page.html:6 +msgid "File Links" +msgstr "Datei-Links" + +#: bookwyrm/templates/book/file_links/links.html:9 +msgid "Get a copy" +msgstr "Kopie erhalten" + +#: bookwyrm/templates/book/file_links/links.html:47 +msgid "No links available" +msgstr "Keine Links vorhanden" + +#: bookwyrm/templates/book/file_links/verification_modal.html:5 +msgid "Leaving BookWyrm" +msgstr "BookWyrm verlassen" + +#: 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 "Dieser Link führt zu: %(link_url)s.
    Möchtest du dorthin wechseln?" + +#: bookwyrm/templates/book/file_links/verification_modal.html:20 +msgid "Continue" +msgstr "Weiter" + #: bookwyrm/templates/book/publisher_info.html:23 #, python-format msgid "%(format)s, %(pages)s pages" @@ -1077,7 +1226,7 @@ msgstr "bewertet" #: bookwyrm/templates/book/sync_modal.html:15 #, python-format msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten." -msgstr "Das Nachladen von Daten wird eine Verbindung zu %(source_name)s aufbauen und überprüfen ob Informationen über das Buch ergänzt werden konnten die hier noch nicht vorliegen. Bestehende Informationen werden nicht überschrieben." +msgstr "Das Laden von Daten wird eine Verbindung zu %(source_name)s aufbauen und überprüfen, ob Buch-Informationen vorliegen, die hier noch nicht bekannt sind. Bestehende Informationen werden nicht überschrieben." #: bookwyrm/templates/components/tooltip.html:3 msgid "Help" @@ -1110,8 +1259,8 @@ msgstr "Bestätigungscode:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:93 -#: bookwyrm/templates/snippets/report_modal.html:37 +#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Absenden" @@ -1159,7 +1308,7 @@ msgstr "Mach dein Profil entdeckbar für andere BookWyrm-Benutzer*innen." #: bookwyrm/templates/directory/directory.html:21 msgid "Join Directory" -msgstr "" +msgstr "Verzeichnis beitreten" #: bookwyrm/templates/directory/directory.html:24 #, python-format @@ -1245,7 +1394,7 @@ msgstr "%(username)s hat %(username)s started reading %(book_title)s" -msgstr "%(username)s hat angefangen %(book_title)s zu lesen" +msgstr "%(username)s hat angefangen, %(book_title)s zu lesen" #: bookwyrm/templates/discover/card-header.html:23 #, python-format @@ -1350,7 +1499,7 @@ msgstr "Erfahre mehr über %(site_name)s:" #: bookwyrm/templates/email/moderation_report/text_content.html:5 #, python-format msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " -msgstr "" +msgstr "@%(reporter)s hat das Verhalten von @%(reportee)s zur Moderation gekennzeichnet. " #: bookwyrm/templates/email/moderation_report/html_content.html:9 #: bookwyrm/templates/email/moderation_report/text_content.html:7 @@ -1389,7 +1538,7 @@ msgstr "Passwort für %(site_name)s zurücksetzen" #: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:39 #, python-format msgid "%(site_name)s home page" -msgstr "" +msgstr "%(site_name)s-Startseite" #: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:233 msgid "Contact site admin" @@ -1417,18 +1566,13 @@ 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 "" +msgstr "Alternativ könntest du auch weitere Statustypen aktivieren" #: bookwyrm/templates/feed/goal_card.html:6 #: bookwyrm/templates/feed/layout.html:15 @@ -1470,7 +1614,7 @@ msgstr "Verzeichnis anzeigen" #: bookwyrm/templates/feed/summary_card.html:21 msgid "The end of the year is the best moment to take stock of all the books read during the last 12 months. How many pages have you read? Which book is your best-rated of the year? We compiled these stats, and more!" -msgstr "Das Ende des Jahrs ist der beste Zeitpunkt um auf all die Bücher zurückzublicken die du in den letzten zwölf Monaten gelesen hast. Wie viele Seiten das wohl waren? Welches Buch hat dir am besten gefallen? Wir haben diese und andere Statistiken für dich zusammengestellt!" +msgstr "Das Ende des Jahrs ist der beste Zeitpunkt, um auf all die Bücher zurückzublicken, die du in den letzten zwölf Monaten gelesen hast. Wie viele Seiten waren es? Welches Buch hat dir am besten gefallen? Wir haben diese und andere Statistiken für dich zusammengestellt!" #: bookwyrm/templates/feed/summary_card.html:26 #, python-format @@ -1515,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:162 +#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:205 msgid "Search for a book" msgstr "Nach einem Buch suchen" @@ -1533,9 +1677,9 @@ msgstr "Du kannst Bücher hinzufügen, wenn du %(site_name)s benutzt." #: bookwyrm/templates/get_started/books.html:17 #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166 +#: 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/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -1551,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:179 +#: bookwyrm/templates/lists/list.html:222 msgid "No books found" msgstr "Keine Bücher gefunden" @@ -1632,16 +1776,16 @@ msgstr "Keine Benutzer*innen für „%(query)s“ gefunden" #: bookwyrm/templates/groups/create_form.html:5 msgid "Create Group" -msgstr "Lesezirkel erstellen" +msgstr "Gruppe erstellen" #: bookwyrm/templates/groups/created_text.html:4 #, python-format msgid "Managed by %(username)s" -msgstr "Verwaltet von %(username)s" +msgstr "Verantwortlich: %(username)s" #: bookwyrm/templates/groups/delete_group_modal.html:4 msgid "Delete this group?" -msgstr "Diesen Lesezirkel löschen?" +msgstr "Diese Gruppe löschen?" #: bookwyrm/templates/groups/delete_group_modal.html:7 #: bookwyrm/templates/lists/delete_list_modal.html:7 @@ -1656,53 +1800,53 @@ msgstr "Diese Aktion kann nicht rückgängig gemacht werden" #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 #: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:14 msgid "Delete" msgstr "Löschen" #: bookwyrm/templates/groups/edit_form.html:5 msgid "Edit Group" -msgstr "Lesezirkel bearbeiten" +msgstr "Gruppe bearbeiten" #: bookwyrm/templates/groups/form.html:8 msgid "Group Name:" -msgstr "Name des Lesezirkels:" +msgstr "Gruppenname:" #: bookwyrm/templates/groups/form.html:12 msgid "Group Description:" -msgstr "Beschreibung des Lesezirkels:" +msgstr "Gruppenbeschreibung:" #: bookwyrm/templates/groups/form.html:21 msgid "Delete group" -msgstr "Lesezirkel löschen" +msgstr "Gruppe löschen" -#: bookwyrm/templates/groups/group.html:22 +#: bookwyrm/templates/groups/group.html:21 msgid "Members of this group can create group-curated lists." -msgstr "Mitglieder dieses Lesezirkels können durch den Zirkel zu kuratierende Listen anlegen." +msgstr "Mitglieder dieser Gruppe können von der Gruppe kuratierte Listen anlegen." -#: bookwyrm/templates/groups/group.html:27 +#: bookwyrm/templates/groups/group.html:26 #: bookwyrm/templates/lists/create_form.html:5 #: bookwyrm/templates/lists/lists.html:20 msgid "Create List" msgstr "Liste erstellen" -#: bookwyrm/templates/groups/group.html:40 +#: bookwyrm/templates/groups/group.html:39 msgid "This group has no lists" -msgstr "Dieser Lesezirkel hat keine Listen" +msgstr "Diese Gruppe enthält keine Listen" #: bookwyrm/templates/groups/layout.html:17 msgid "Edit group" -msgstr "Lesezirkel bearbeiten" +msgstr "Gruppe bearbeiten" -#: bookwyrm/templates/groups/members.html:12 +#: bookwyrm/templates/groups/members.html:11 msgid "Search to add a user" msgstr "Hinzuzufügende*n Benutzer*in suchen" -#: bookwyrm/templates/groups/members.html:33 +#: bookwyrm/templates/groups/members.html:32 msgid "Leave group" -msgstr "Lesezirkel verlassen" +msgstr "Gruppe verlassen" -#: bookwyrm/templates/groups/members.html:55 +#: bookwyrm/templates/groups/members.html:54 #: bookwyrm/templates/groups/suggested_users.html:35 #: bookwyrm/templates/snippets/suggested_users.html:31 #: bookwyrm/templates/user/user_preview.html:36 @@ -1718,7 +1862,7 @@ msgstr "Mitglieder hinzufügen!" #, python-format msgid "%(mutuals)s follower you follow" msgid_plural "%(mutuals)s followers you follow" -msgstr[0] "%(mutuals)s Follower*in, der du folgst" +msgstr[0] "%(mutuals)s Follower*in, der*die du folgst" msgstr[1] "%(mutuals)s Follower*innen, denen du folgst" #: bookwyrm/templates/groups/suggested_users.html:27 @@ -1736,7 +1880,7 @@ msgstr "Keine potentiellen Mitglieder für „%(user_query)s“ gefunden" #: bookwyrm/templates/groups/user_groups.html:15 msgid "Manager" -msgstr "Verwalter*in" +msgstr "Verantwortlich" #: bookwyrm/templates/import/import.html:5 #: bookwyrm/templates/import/import.html:9 @@ -1782,11 +1926,11 @@ msgstr "Importstatus" #: bookwyrm/templates/import/import_status.html:13 #: bookwyrm/templates/import/import_status.html:27 msgid "Retry Status" -msgstr "" +msgstr "Wiederholungsstatus" #: bookwyrm/templates/import/import_status.html:22 msgid "Imports" -msgstr "" +msgstr "Importe" #: bookwyrm/templates/import/import_status.html:39 msgid "Import started:" @@ -1794,7 +1938,7 @@ msgstr "Import gestartet:" #: bookwyrm/templates/import/import_status.html:48 msgid "In progress" -msgstr "" +msgstr "In Arbeit" #: bookwyrm/templates/import/import_status.html:50 msgid "Refresh" @@ -1804,28 +1948,28 @@ msgstr "Aktualisieren" #, python-format msgid "%(display_counter)s item needs manual approval." msgid_plural "%(display_counter)s items need manual approval." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(display_counter)s Element muss manuell geprüft werden." +msgstr[1] "%(display_counter)s Elemente müssen manuell geprüft werden." #: bookwyrm/templates/import/import_status.html:76 #: bookwyrm/templates/import/manual_review.html:8 msgid "Review items" -msgstr "" +msgstr "Zu prüfende Elemente" #: bookwyrm/templates/import/import_status.html:82 #, python-format msgid "%(display_counter)s item failed to import." msgid_plural "%(display_counter)s items failed to import." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(display_counter)s Element konnte nicht importiert werden." +msgstr[1] "%(display_counter)s Elemente konnten nicht importiert werden." #: bookwyrm/templates/import/import_status.html:88 msgid "View and troubleshoot failed items" -msgstr "" +msgstr "Fehlgeschlagene Elemente anzeigen und bearbeiten" #: bookwyrm/templates/import/import_status.html:100 msgid "Row" -msgstr "" +msgstr "Zeile" #: bookwyrm/templates/import/import_status.html:103 #: bookwyrm/templates/shelf/shelf.html:147 @@ -1839,7 +1983,7 @@ msgstr "ISBN" #: bookwyrm/templates/import/import_status.html:110 msgid "Openlibrary key" -msgstr "" +msgstr "Openlibrary-Schlüssel" #: bookwyrm/templates/import/import_status.html:114 #: bookwyrm/templates/shelf/shelf.html:148 @@ -1858,26 +2002,17 @@ msgid "Review" msgstr "Besprechen" #: bookwyrm/templates/import/import_status.html:124 +#: bookwyrm/templates/settings/link_domains/link_table.html:9 msgid "Book" msgstr "Buch" -#: bookwyrm/templates/import/import_status.html:127 -#: bookwyrm/templates/settings/announcements/announcements.html:38 -#: bookwyrm/templates/settings/federation/instance_list.html:46 -#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 -#: bookwyrm/templates/settings/invites/status_filter.html:5 -#: bookwyrm/templates/settings/users/user_admin.html:34 -#: bookwyrm/templates/settings/users/user_info.html:20 -msgid "Status" -msgstr "Status" - #: bookwyrm/templates/import/import_status.html:135 msgid "Import preview unavailable." -msgstr "" +msgstr "Importvorschau nicht verfügbar." #: bookwyrm/templates/import/import_status.html:172 msgid "View imported review" -msgstr "" +msgstr "Importbericht ansehen" #: bookwyrm/templates/import/import_status.html:186 msgid "Imported" @@ -1885,7 +2020,7 @@ msgstr "Importiert" #: bookwyrm/templates/import/import_status.html:192 msgid "Needs manual review" -msgstr "" +msgstr "Manuelle Überprüfung benötigt" #: bookwyrm/templates/import/import_status.html:205 msgid "Retry" @@ -1893,61 +2028,62 @@ msgstr "Erneut versuchen" #: 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 "Dieser Import ist in einem alten Format, das nicht mehr unterstützt wird. Wenn Sie fehlende Elemente aus diesem Import bearbeiten möchten, klicken Sie auf die Schaltfläche unten, um das Importformat zu aktualisieren." #: bookwyrm/templates/import/import_status.html:225 msgid "Update import" -msgstr "" +msgstr "Import aktualisieren" #: bookwyrm/templates/import/manual_review.html:5 #: bookwyrm/templates/import/troubleshoot.html:4 msgid "Import Troubleshooting" -msgstr "" +msgstr "Problembehebung für Importe" #: bookwyrm/templates/import/manual_review.html:21 msgid "Approving a suggestion will permanently add the suggested book to your shelves and associate your reading dates, reviews, and ratings with that book." -msgstr "" +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" #: bookwyrm/templates/import/manual_review.html:66 msgid "Reject" -msgstr "" +msgstr "Ablehnen" #: bookwyrm/templates/import/tooltip.html:6 -msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." -msgstr "Du kannst deine Goodreads-Daten von der Import/Export-Seite deines Goodreads-Kontos downloaden." +msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." +msgstr "Du kannst deine Goodreads-Daten von der Import / Export-Seite deines Goodreads-Kontos downloaden." #: bookwyrm/templates/import/troubleshoot.html:7 msgid "Failed items" -msgstr "" +msgstr "Fehlgeschlagene Elemente" #: bookwyrm/templates/import/troubleshoot.html:12 msgid "Troubleshooting" -msgstr "" +msgstr "Fehlerbehebung" #: bookwyrm/templates/import/troubleshoot.html:20 msgid "Re-trying an import can fix missing items in cases such as:" -msgstr "" +msgstr "Ein erneutes Ausprobieren eines Imports kann bei fehlgeschlagenen Elementen in folgenden Fällen helfen:" #: bookwyrm/templates/import/troubleshoot.html:23 msgid "The book has been added to the instance since this import" -msgstr "" +msgstr "Das Buch wurde seit diesem Import zur Instanz hinzugefügt" #: bookwyrm/templates/import/troubleshoot.html:24 msgid "A transient error or timeout caused the external data source to be unavailable." -msgstr "" +msgstr "Ein vorübergehender Fehler oder ein Timeout haben dazu geführt, dass die externe Datenquelle nicht verfügbar war." #: bookwyrm/templates/import/troubleshoot.html:25 msgid "BookWyrm has been updated since this import with a bug fix" -msgstr "" +msgstr "BookWyrm wurde seit diesem Import mit einem Bugfix aktualisiert" #: bookwyrm/templates/import/troubleshoot.html:28 msgid "Contact your admin or open an issue if you are seeing unexpected failed items." -msgstr "" +msgstr "Kontaktiere deine*n Administrator*in oder melde ein Problem, wenn Importe unerwartet fehlschlagen." #: bookwyrm/templates/landing/invite.html:4 #: bookwyrm/templates/landing/invite.html:8 @@ -2119,6 +2255,21 @@ 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 +#, python-format +msgid "Add \"%(title)s\" to this list" +msgstr "\"%(title)s\" zu dieser Liste hinzufügen" + +#: bookwyrm/templates/lists/add_item_modal.html:12 +#, python-format +msgid "Suggest \"%(title)s\" for this list" +msgstr "\"%(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" @@ -2138,23 +2289,29 @@ 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 +#, python-format +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" @@ -2167,18 +2324,18 @@ msgstr "Diese Liste löschen?" msgid "Edit List" msgstr "Liste bearbeiten" -#: bookwyrm/templates/lists/embed-list.html:7 +#: bookwyrm/templates/lists/embed-list.html:8 #, python-format msgid "%(list_name)s, a list by %(owner)s" msgstr "%(list_name)s, eine Liste von %(owner)s" -#: bookwyrm/templates/lists/embed-list.html:17 +#: bookwyrm/templates/lists/embed-list.html:18 #, python-format msgid "on %(site_name)s" msgstr "auf %(site_name)s" -#: bookwyrm/templates/lists/embed-list.html:26 -#: bookwyrm/templates/lists/list.html:42 +#: bookwyrm/templates/lists/embed-list.html:27 +#: bookwyrm/templates/lists/list.html:44 msgid "This list is currently empty" msgstr "Diese Liste ist momentan leer" @@ -2213,101 +2370,115 @@ msgstr "Jede*r kann Bücher hinzufügen" #: bookwyrm/templates/lists/form.html:82 msgid "Group" -msgstr "Lesezirkel" +msgstr "Gruppe" #: bookwyrm/templates/lists/form.html:85 msgid "Group members can add to and remove from this list" -msgstr "Mitglieder*innen können Bücher zu dieser Liste hinzufügen und von dieser entfernen" +msgstr "Gruppenmitglieder können Bücher zu dieser Liste hinzufügen und von dieser entfernen" #: bookwyrm/templates/lists/form.html:90 msgid "Select Group" -msgstr "Lesezirkel auswählen" +msgstr "Gruppe auswählen" #: bookwyrm/templates/lists/form.html:94 msgid "Select a group" -msgstr "Einen Lesezirkel auswählen" +msgstr "Eine Gruppe auswählen" #: bookwyrm/templates/lists/form.html:105 msgid "You don't have any Groups yet!" -msgstr "Du bist noch nicht in einem Lesezirkel!" +msgstr "Du hast noch keine Gruppen!" #: bookwyrm/templates/lists/form.html:107 msgid "Create a Group" -msgstr "Lesezirkel erstellen" +msgstr "Gruppe erstellen" #: bookwyrm/templates/lists/form.html:121 msgid "Delete list" msgstr "Liste löschen" -#: bookwyrm/templates/lists/list.html:34 +#: 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 Notiz die zusammen 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:36 +#: 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:80 +#: bookwyrm/templates/lists/list.html:96 +msgid "Edit notes" +msgstr "Notizen bearbeiten" + +#: bookwyrm/templates/lists/list.html:111 +msgid "Add notes" +msgstr "Notiz 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:95 +#: bookwyrm/templates/lists/list.html:138 msgid "List position" msgstr "Listenposition" -#: bookwyrm/templates/lists/list.html:101 +#: 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:116 -#: bookwyrm/templates/snippets/remove_from_group_button.html:19 +#: bookwyrm/templates/lists/list.html:159 +#: bookwyrm/templates/snippets/remove_from_group_button.html:20 msgid "Remove" msgstr "Entfernen" -#: bookwyrm/templates/lists/list.html:130 -#: bookwyrm/templates/lists/list.html:147 +#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:190 msgid "Sort List" msgstr "Liste sortieren" -#: bookwyrm/templates/lists/list.html:140 +#: bookwyrm/templates/lists/list.html:183 msgid "Direction" msgstr "Reihenfolge" -#: bookwyrm/templates/lists/list.html:154 +#: bookwyrm/templates/lists/list.html:197 msgid "Add Books" msgstr "Bücher hinzufügen" -#: bookwyrm/templates/lists/list.html:156 +#: bookwyrm/templates/lists/list.html:199 msgid "Suggest Books" msgstr "Bücher vorschlagen" -#: bookwyrm/templates/lists/list.html:167 +#: bookwyrm/templates/lists/list.html:210 msgid "search" msgstr "suchen" -#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:216 msgid "Clear search" msgstr "Suche zurücksetzen" -#: bookwyrm/templates/lists/list.html:178 +#: 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:210 -msgid "Suggest" -msgstr "Vorschlagen" - -#: bookwyrm/templates/lists/list.html:221 +#: 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:229 +#: bookwyrm/templates/lists/list.html:268 msgid "Copy embed code" -msgstr "Code zum Einbetten kopieren" +msgstr "Code zum einbetten kopieren" -#: bookwyrm/templates/lists/list.html:231 +#: 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" @@ -2331,7 +2502,7 @@ msgstr "Gespeicherte Listen" #: bookwyrm/templates/notifications/items/accept.html:16 #, python-format msgid "accepted your invitation to join group \"%(group_name)s\"" -msgstr "hat deine Einladung angenommen, dem Lesezirkel „%(group_name)s“ beizutreten" +msgstr "hat deine Einladung angenommen, der Gruppe „%(group_name)s“ beizutreten" #: bookwyrm/templates/notifications/items/add.html:24 #, python-format @@ -2404,12 +2575,12 @@ msgstr "hat dich eingeladen, der Gruppe „%(group_na #: bookwyrm/templates/notifications/items/join.html:16 #, python-format msgid "has joined your group \"%(group_name)s\"" -msgstr "ist deinem Lesezirkel „%(group_name)s“ beigetreten" +msgstr "ist deiner Gruppe „%(group_name)s“ beigetreten" #: bookwyrm/templates/notifications/items/leave.html:16 #, python-format msgid "has left your group \"%(group_name)s\"" -msgstr "hat deinen Lesezirkel „%(group_name)s“ verlassen" +msgstr "hat deine Gruppe „%(group_name)s“ verlassen" #: bookwyrm/templates/notifications/items/mention.html:20 #, python-format @@ -2434,12 +2605,12 @@ msgstr "hat dich in einem Status erwähnt" #: bookwyrm/templates/notifications/items/remove.html:17 #, python-format msgid "has been removed from your group \"%(group_name)s\"" -msgstr "wurde aus deinem Lesezirkel „%(group_name)s“ entfernt" +msgstr "wurde aus deiner Gruppe „%(group_name)s“ entfernt" #: bookwyrm/templates/notifications/items/remove.html:23 #, python-format msgid "You have been removed from the \"%(group_name)s\" group" -msgstr "Du wurdest aus dem Lesezirkel „%(group_name)s“ entfernt" +msgstr "Du wurdest aus der Gruppe „%(group_name)s“ entfernt" #: bookwyrm/templates/notifications/items/reply.html:21 #, python-format @@ -2500,36 +2671,36 @@ msgstr "Du bist auf dem neusten Stand!" #: bookwyrm/templates/ostatus/error.html:7 #, python-format msgid "%(account)s is not a valid username" -msgstr "%(account)s ist kein gültiger Benutzername" +msgstr "%(account)s ist kein gültiger Benutzer*inname" #: bookwyrm/templates/ostatus/error.html:8 #: bookwyrm/templates/ostatus/error.html:13 msgid "Check you have the correct username before trying again" -msgstr "" +msgstr "Überprüfe, ob du den richtigen Benutzernamen benutzt, bevor du es erneut versuchst" #: bookwyrm/templates/ostatus/error.html:12 #, python-format msgid "%(account)s could not be found or %(remote_domain)s does not support identity discovery" -msgstr "" +msgstr "%(account)s konnte nicht gefunden werden oder %(remote_domain)s unterstützt keine Identitätsfindung" #: bookwyrm/templates/ostatus/error.html:17 #, python-format msgid "%(account)s was found but %(remote_domain)s does not support 'remote follow'" -msgstr "" +msgstr "%(account)s wurde gefunden, aber %(remote_domain)s unterstützt kein ‚remote follow‘" #: bookwyrm/templates/ostatus/error.html:18 #, python-format msgid "Try searching for %(user)s on %(remote_domain)s instead" -msgstr "" +msgstr "Versuche stattdessen, nach %(user)s auf %(remote_domain)s zu suchen" #: bookwyrm/templates/ostatus/error.html:46 #, python-format msgid "Something went wrong trying to follow %(account)s" -msgstr "" +msgstr "Etwas ist schiefgelaufen beim Versuch, %(account)s zu folgen" #: bookwyrm/templates/ostatus/error.html:47 msgid "Check you have the correct username before trying again." -msgstr "" +msgstr "Überprüfe, ob du den richtigen Benutzernamen benutzt, bevor du es erneut versuchst." #: bookwyrm/templates/ostatus/error.html:51 #, python-format @@ -2539,7 +2710,7 @@ msgstr "Du hast %(account)s blockiert" #: bookwyrm/templates/ostatus/error.html:55 #, python-format msgid "%(account)s has blocked you" -msgstr "" +msgstr "%(account)s hat dich blockiert" #: bookwyrm/templates/ostatus/error.html:59 #, python-format @@ -2549,7 +2720,7 @@ msgstr "Du folgst %(account)s bereits" #: bookwyrm/templates/ostatus/error.html:63 #, python-format msgid "You have already requested to follow %(account)s" -msgstr "Du hast bei %(account)s bereits angefragt ob du folgen darfst" +msgstr "Du hast bei %(account)s bereits angefragt, ob du folgen darfst" #: bookwyrm/templates/ostatus/remote_follow.html:6 #, python-format @@ -2563,7 +2734,7 @@ msgstr "Folge %(username)s von einem anderen Konto im Fediverse wie BookWyrm, Ma #: bookwyrm/templates/ostatus/remote_follow.html:40 msgid "User handle to follow from:" -msgstr "" +msgstr "Benutzerkennung, mit der gefolgt wird:" #: bookwyrm/templates/ostatus/remote_follow.html:42 msgid "Follow!" @@ -2575,7 +2746,7 @@ msgstr "Folge im Fediverse" #: bookwyrm/templates/ostatus/remote_follow_button.html:12 msgid "This link opens in a pop-up window" -msgstr "Dieser Link wird in einem Popupfenster geöffnet" +msgstr "Dieser Link öffnet sich in einem Popup-Fenster" #: bookwyrm/templates/ostatus/subscribe.html:8 #, python-format @@ -2585,13 +2756,13 @@ msgstr "Einloggen auf %(sitename)s" #: bookwyrm/templates/ostatus/subscribe.html:10 #, python-format msgid "Error following from %(sitename)s" -msgstr "" +msgstr "Fehler beim Folgen aus %(sitename)s" #: bookwyrm/templates/ostatus/subscribe.html:12 #: bookwyrm/templates/ostatus/subscribe.html:22 #, python-format msgid "Follow from %(sitename)s" -msgstr "" +msgstr "Folgen aus %(sitename)s" #: bookwyrm/templates/ostatus/subscribe.html:18 msgid "Uh oh..." @@ -2599,7 +2770,7 @@ msgstr "Oh oh..." #: bookwyrm/templates/ostatus/subscribe.html:20 msgid "Let's log in first..." -msgstr "" +msgstr "Zuerst einloggen …" #: bookwyrm/templates/ostatus/subscribe.html:51 #, python-format @@ -2672,7 +2843,7 @@ msgstr "Privatsphäre" #: bookwyrm/templates/preferences/edit_user.html:69 msgid "Show reading goal prompt in feed" -msgstr "" +msgstr "Zeige Leseziel-Erinnerung im Feed an" #: bookwyrm/templates/preferences/edit_user.html:75 msgid "Show suggested users" @@ -2680,7 +2851,7 @@ msgstr "Vorgeschlagene Benutzer*innen anzeigen" #: bookwyrm/templates/preferences/edit_user.html:81 msgid "Show this account in suggested users" -msgstr "" +msgstr "Dieses Benutzer*inkonto in vorgeschlagene Benutzer*innen einschließen" #: bookwyrm/templates/preferences/edit_user.html:85 #, python-format @@ -2693,7 +2864,7 @@ msgstr "Bevorzugte Zeitzone:" #: bookwyrm/templates/preferences/edit_user.html:111 msgid "Manually approve followers" -msgstr "" +msgstr "Follower*innen manuell bestätigen" #: bookwyrm/templates/preferences/edit_user.html:116 msgid "Default post privacy:" @@ -2735,7 +2906,7 @@ msgstr "Du löscht diesen Leseforschritt und %(count)s zugehörige Zwischenstän #: bookwyrm/templates/readthrough/readthrough_modal.html:8 #, python-format msgid "Update read dates for \"%(title)s\"" -msgstr "" +msgstr "Lesedaten für „%(title)s“ aktualisieren" #: bookwyrm/templates/readthrough/readthrough_form.html:10 #: bookwyrm/templates/readthrough/readthrough_modal.html:31 @@ -2786,11 +2957,16 @@ msgstr "Diese Lesedaten löschen" #: bookwyrm/templates/readthrough/readthrough_modal.html:12 #, python-format msgid "Add read dates for \"%(title)s\"" -msgstr "" +msgstr "Lesedaten für „%(title)s“ hinzufügen" + +#: bookwyrm/templates/report.html:5 +#: bookwyrm/templates/snippets/report_button.html:13 +msgid "Report" +msgstr "Melden" #: bookwyrm/templates/search/book.html:44 msgid "Results from" -msgstr "" +msgstr "Ergebnisse von" #: bookwyrm/templates/search/book.html:80 msgid "Import book" @@ -2860,13 +3036,13 @@ msgstr "Nein" #: bookwyrm/templates/settings/announcements/announcement.html:46 #: bookwyrm/templates/settings/announcements/announcement_form.html:44 -#: bookwyrm/templates/settings/dashboard/dashboard.html:71 +#: bookwyrm/templates/settings/dashboard/dashboard.html:82 msgid "Start date:" msgstr "Startdatum:" #: bookwyrm/templates/settings/announcements/announcement.html:51 #: bookwyrm/templates/settings/announcements/announcement_form.html:54 -#: bookwyrm/templates/settings/dashboard/dashboard.html:77 +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "End date:" msgstr "Enddatum:" @@ -2894,7 +3070,7 @@ msgstr "Ereignisdatum:" #: bookwyrm/templates/settings/announcements/announcements.html:3 #: bookwyrm/templates/settings/announcements/announcements.html:5 -#: bookwyrm/templates/settings/layout.html:72 +#: bookwyrm/templates/settings/layout.html:76 msgid "Announcements" msgstr "Ankündigungen" @@ -2934,7 +3110,7 @@ msgid "Dashboard" msgstr "Übersicht" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Total users" msgstr "Benutzer*innen insgesamt" @@ -2961,36 +3137,43 @@ msgstr[1] "%(display_count)s offene Meldungen" #: bookwyrm/templates/settings/dashboard/dashboard.html:54 #, python-format +msgid "%(display_count)s domain needs review" +msgid_plural "%(display_count)s domains need review" +msgstr[0] "%(display_count)s Domain muss überprüft werden" +msgstr[1] "%(display_count)s Domains müssen überprüft werden" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s Einladungsanfrage" msgstr[1] "%(display_count)s Einladungsanfragen" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:76 msgid "Instance Activity" msgstr "Instanzaktivität" -#: bookwyrm/templates/settings/dashboard/dashboard.html:83 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Interval:" msgstr "Intervall:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:87 +#: bookwyrm/templates/settings/dashboard/dashboard.html:98 msgid "Days" msgstr "Tage" -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Weeks" msgstr "Wochen" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "User signup activity" msgstr "Neuanmeldungen" -#: bookwyrm/templates/settings/dashboard/dashboard.html:112 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Status activity" msgstr "Statusaktivitäten" -#: bookwyrm/templates/settings/dashboard/dashboard.html:118 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "Works created" msgstr "Erstellte Werke" @@ -3025,10 +3208,6 @@ msgstr "E-Mail-Sperrliste" msgid "When someone tries to register with an email from this domain, no account will be created. The registration process will appear to have worked." msgstr "Wenn sich jemand mit einer E-Mail-Adresse von dieser Domain zu registrieren versucht, wird kein Benutzer*inkonto erstellt. Es wird aber so aussehen, als ob die Registrierung funktioniert hätte." -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 -msgid "Domain" -msgstr "Domain" - #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:29 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:27 msgid "Options" @@ -3087,10 +3266,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" @@ -3140,12 +3315,8 @@ msgstr "Ändern" msgid "No notes" msgstr "Keine Anmerkungen" -#: bookwyrm/templates/settings/federation/instance.html:94 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 -msgid "Actions" -msgstr "Aktionen" - #: bookwyrm/templates/settings/federation/instance.html:98 +#: bookwyrm/templates/settings/link_domains/link_domains.html:87 #: bookwyrm/templates/snippets/block_button.html:5 msgid "Block" msgstr "Sperren" @@ -3358,62 +3529,121 @@ msgstr "Moderation" msgid "Reports" msgstr "Meldungen" -#: bookwyrm/templates/settings/layout.html:68 +#: bookwyrm/templates/settings/layout.html:67 +#: bookwyrm/templates/settings/link_domains/link_domains.html:5 +#: bookwyrm/templates/settings/link_domains/link_domains.html:7 +msgid "Link Domains" +msgstr "Domains verlinken" + +#: bookwyrm/templates/settings/layout.html:72 msgid "Instance Settings" msgstr "Instanzeinstellungen" -#: bookwyrm/templates/settings/layout.html:76 +#: bookwyrm/templates/settings/layout.html:80 #: bookwyrm/templates/settings/site.html:4 #: bookwyrm/templates/settings/site.html:6 msgid "Site Settings" msgstr "Seiteneinstellungen" -#: bookwyrm/templates/settings/reports/report.html:5 -#: bookwyrm/templates/settings/reports/report.html:8 -#: bookwyrm/templates/settings/reports/report_preview.html:6 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5 #, python-format -msgid "Report #%(report_id)s: %(username)s" -msgstr "Meldung #%(report_id)s: %(username)s" +msgid "Set display name for %(url)s" +msgstr "Anzeigename für %(url)s festlegen" -#: bookwyrm/templates/settings/reports/report.html:9 +#: 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 "Link-Domains müssen freigegeben werden, bevor sie auf Buchseiten angezeigt werden. Bitte stelle sicher, dass die Domains nicht Spam, bösartigen Code oder irreführende Links beherbergen, bevor sie freigegeben werden." + +#: bookwyrm/templates/settings/link_domains/link_domains.html:45 +msgid "Set display name" +msgstr "Anzeigename festlegen" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:53 +msgid "View links" +msgstr "Links anzeigen" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:96 +msgid "No domains currently approved" +msgstr "Derzeit keine Domains freigegeben" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:98 +msgid "No domains currently pending" +msgstr "Derzeit keine zur Freigabe anstehenden Domains" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:100 +msgid "No domains currently blocked" +msgstr "Derzeit keine Domains gesperrt" + +#: bookwyrm/templates/settings/link_domains/link_table.html:39 +msgid "No links available for this domain." +msgstr "Keine Links für diese Domain vorhanden." + +#: bookwyrm/templates/settings/reports/report.html:11 msgid "Back to reports" msgstr "Zurück zu den Meldungen" #: 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:40 +msgid "Status has been deleted" +msgstr "Statusmeldung gelöscht" + +#: bookwyrm/templates/settings/reports/report.html:52 +msgid "Reported links" +msgstr "Gemeldete Links" + +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Moderator*innenkommentare" -#: bookwyrm/templates/settings/reports/report.html:41 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Kommentieren" -#: bookwyrm/templates/settings/reports/report.html:46 -msgid "Reported statuses" -msgstr "Gemeldete Statusmeldungen" +#: bookwyrm/templates/settings/reports/report_header.html:6 +#, python-format +msgid "Report #%(report_id)s: Status posted by @%(username)s" +msgstr "Bericht #%(report_id)s: Status gepostet von @%(username)s" -#: bookwyrm/templates/settings/reports/report.html:48 -msgid "No statuses reported" -msgstr "Keine Statusmeldungen gemeldet" +#: bookwyrm/templates/settings/reports/report_header.html:12 +#, python-format +msgid "Report #%(report_id)s: Link added by @%(username)s" +msgstr "Bericht #%(report_id)s: Link hinzugefügt von @%(username)s" -#: bookwyrm/templates/settings/reports/report.html:54 -msgid "Status has been deleted" -msgstr "Statusmeldung gelöscht" +#: bookwyrm/templates/settings/reports/report_header.html:18 +#, python-format +msgid "Report #%(report_id)s: User @%(username)s" +msgstr "Bericht #%(report_id)s: Benutzer @%(username)s" -#: bookwyrm/templates/settings/reports/report_preview.html:13 +#: bookwyrm/templates/settings/reports/report_links_table.html:17 +msgid "Block domain" +msgstr "Domain blockieren" + +#: bookwyrm/templates/settings/reports/report_preview.html:17 msgid "No notes provided" msgstr "Keine Notizen angegeben." -#: bookwyrm/templates/settings/reports/report_preview.html:20 +#: bookwyrm/templates/settings/reports/report_preview.html:24 #, python-format -msgid "Reported by %(username)s" -msgstr "Gemeldet von %(username)s" +msgid "Reported by @%(username)s" +msgstr "Gemeldet von @%(username)s" -#: bookwyrm/templates/settings/reports/report_preview.html:30 +#: bookwyrm/templates/settings/reports/report_preview.html:34 msgid "Re-open" msgstr "Erneut öffnen" -#: bookwyrm/templates/settings/reports/report_preview.html:32 +#: bookwyrm/templates/settings/reports/report_preview.html:36 msgid "Resolve" msgstr "Beheben" @@ -3541,7 +3771,7 @@ msgid "Invite request text:" msgstr "Hinweis für Einladungsanfragen:" #: bookwyrm/templates/settings/users/delete_user_form.html:5 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:31 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:32 msgid "Permanently delete user" msgstr "Benutzer*in dauerhaft löschen" @@ -3651,15 +3881,19 @@ msgstr "Instanz anzeigen" msgid "Permanently deleted" msgstr "Dauerhaft gelöscht" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:20 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 +msgid "User Actions" +msgstr "Benutzeraktionen" + +#: bookwyrm/templates/settings/users/user_moderation_actions.html:21 msgid "Suspend user" msgstr "Benutzer*in vorläufig sperren" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:25 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:26 msgid "Un-suspend user" msgstr "Vorläufige Sperre für Benutzer*in aufheben" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:47 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:48 msgid "Access level:" msgstr "Zugriffsstufe:" @@ -3673,7 +3907,7 @@ msgstr "Regal bearbeiten" #: bookwyrm/templates/shelf/shelf.html:24 msgid "User profile" -msgstr "Benutzerprofil" +msgstr "Benutzer*inprofil" #: bookwyrm/templates/shelf/shelf.html:39 #: bookwyrm/templates/snippets/translated_shelf_name.html:3 @@ -3724,15 +3958,15 @@ msgstr "Abgeschlossen" msgid "This shelf is empty." msgstr "Dieses Regal ist leer." -#: bookwyrm/templates/snippets/add_to_group_button.html:15 +#: bookwyrm/templates/snippets/add_to_group_button.html:16 msgid "Invite" msgstr "Einladen" -#: bookwyrm/templates/snippets/add_to_group_button.html:24 +#: bookwyrm/templates/snippets/add_to_group_button.html:25 msgid "Uninvite" msgstr "Einladung stornieren" -#: bookwyrm/templates/snippets/add_to_group_button.html:28 +#: bookwyrm/templates/snippets/add_to_group_button.html:29 #, python-format msgid "Remove @%(username)s" msgstr "@%(username)s entfernen" @@ -3797,14 +4031,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" @@ -3820,7 +4054,7 @@ msgstr "Spoileralarm!" msgid "Include spoiler alert" msgstr "Spoileralarm aktivieren" -#: bookwyrm/templates/snippets/create_status/layout.html:48 +#: bookwyrm/templates/snippets/create_status/layout.html:47 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Kommentar:" @@ -3829,33 +4063,33 @@ msgstr "Kommentar:" msgid "Post" msgstr "Veröffentlichen" -#: bookwyrm/templates/snippets/create_status/quotation.html:17 +#: bookwyrm/templates/snippets/create_status/quotation.html:16 msgid "Quote:" msgstr "Zitat:" -#: bookwyrm/templates/snippets/create_status/quotation.html:25 +#: bookwyrm/templates/snippets/create_status/quotation.html:24 #, python-format msgid "An excerpt from '%(book_title)s'" msgstr "Ein Auszug aus „%(book_title)s“" -#: bookwyrm/templates/snippets/create_status/quotation.html:32 +#: bookwyrm/templates/snippets/create_status/quotation.html:31 msgid "Position:" msgstr "Position:" -#: bookwyrm/templates/snippets/create_status/quotation.html:45 +#: bookwyrm/templates/snippets/create_status/quotation.html:44 msgid "On page:" msgstr "Auf Seite:" -#: bookwyrm/templates/snippets/create_status/quotation.html:51 +#: bookwyrm/templates/snippets/create_status/quotation.html:50 msgid "At percent:" msgstr "Bei Prozentsatz:" -#: bookwyrm/templates/snippets/create_status/review.html:25 +#: bookwyrm/templates/snippets/create_status/review.html:24 #, python-format msgid "Your review of '%(book_title)s'" msgstr "Deine Besprechung von „%(book_title)s“" -#: bookwyrm/templates/snippets/create_status/review.html:40 +#: bookwyrm/templates/snippets/create_status/review.html:39 msgid "Review:" msgstr "Besprechung:" @@ -3882,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" @@ -3909,7 +4143,7 @@ msgid "Unfollow" msgstr "Entfolgen" #: bookwyrm/templates/snippets/follow_request_buttons.html:7 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:8 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:9 msgid "Accept" msgstr "Annehmen" @@ -3949,15 +4183,15 @@ msgstr[1] "hat %(title)s mit %(display_rating) #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "" -msgstr[1] "" +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] "Rezension von \"%(book_title)s\" (%(display_rating)s Stern): %(review_title)s" +msgstr[1] "Rezension von \"%(book_title)s\" (%(display_rating)s Sterne): %(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 "" +msgid "Review of \"%(book_title)s\": %(review_title)s" +msgstr "Rezension von \"%(book_title)s\": %(review_title)s" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4027,11 +4261,11 @@ msgstr "Nur für Follower*innen" msgid "Post privacy" msgstr "Beitragssichtbarkeit" -#: bookwyrm/templates/snippets/rate_action.html:4 +#: bookwyrm/templates/snippets/rate_action.html:5 msgid "Leave a rating" msgstr "Bewerten" -#: bookwyrm/templates/snippets/rate_action.html:19 +#: bookwyrm/templates/snippets/rate_action.html:20 msgid "Rate" msgstr "Bewerten" @@ -4063,21 +4297,31 @@ msgstr "„%(book_title)s“ auf Leseliste setzen" msgid "Sign Up" msgstr "Registrieren" -#: bookwyrm/templates/snippets/report_button.html:13 -msgid "Report" -msgstr "Melden" +#: bookwyrm/templates/snippets/report_modal.html:8 +#, python-format +msgid "Report @%(username)s's status" +msgstr "Melde Status von @%(username)s" -#: bookwyrm/templates/snippets/report_modal.html:6 +#: bookwyrm/templates/snippets/report_modal.html:10 +#, python-format +msgid "Report %(domain)s link" +msgstr "Melde Link zu %(domain)s" + +#: bookwyrm/templates/snippets/report_modal.html:12 #, python-format msgid "Report @%(username)s" msgstr "@%(username)s melden" -#: bookwyrm/templates/snippets/report_modal.html:23 +#: bookwyrm/templates/snippets/report_modal.html:34 #, python-format msgid "This report will be sent to %(site_name)s's moderators for review." msgstr "Diese Meldung wird an die Moderato*innen von %(site_name)s weitergeleitet." -#: bookwyrm/templates/snippets/report_modal.html:26 +#: bookwyrm/templates/snippets/report_modal.html:36 +msgid "Links from this domain will be removed until your report has been reviewed." +msgstr "Links von dieser Domain werden entfernt, bis deine Meldung überprüft wurde." + +#: bookwyrm/templates/snippets/report_modal.html:41 msgid "More info about this report:" msgstr "Weitere Angaben zu dieser Meldung:" @@ -4115,29 +4359,29 @@ msgstr "Aus %(name)s entfernen" msgid "Finish reading" msgstr "Lesen abschließen" -#: bookwyrm/templates/snippets/status/content_status.html:75 +#: bookwyrm/templates/snippets/status/content_status.html:73 msgid "Content warning" msgstr "Inhaltswarnung" -#: bookwyrm/templates/snippets/status/content_status.html:82 +#: bookwyrm/templates/snippets/status/content_status.html:80 msgid "Show status" msgstr "Status anzeigen" -#: bookwyrm/templates/snippets/status/content_status.html:104 +#: bookwyrm/templates/snippets/status/content_status.html:102 #, python-format msgid "(Page %(page)s)" msgstr "(Seite %(page)s)" -#: bookwyrm/templates/snippets/status/content_status.html:106 +#: bookwyrm/templates/snippets/status/content_status.html:104 #, python-format msgid "(%(percent)s%%)" msgstr "(%(percent)s%%)" -#: bookwyrm/templates/snippets/status/content_status.html:128 +#: bookwyrm/templates/snippets/status/content_status.html:126 msgid "Open image in new window" msgstr "Bild in neuem Fenster öffnen" -#: bookwyrm/templates/snippets/status/content_status.html:147 +#: bookwyrm/templates/snippets/status/content_status.html:145 msgid "Hide status" msgstr "Status ausblenden" @@ -4149,7 +4393,7 @@ msgstr "%(date)s bearbeitet" #: bookwyrm/templates/snippets/status/headers/comment.html:8 #, python-format msgid "commented on %(book)s by %(author_name)s" -msgstr "Kommentar zu %(book)s von %(author_name)s" +msgstr "hat %(book)s von %(author_name)s kommentiert" #: bookwyrm/templates/snippets/status/headers/comment.html:15 #, python-format @@ -4164,7 +4408,7 @@ msgstr "hat auf die Statusmeldung von %(book)s by %(author_name)s" -msgstr "zitiert aus %(book)s durch %(author_name)s" +msgstr "hat aus %(book)s von %(author_name)s zitiert" #: bookwyrm/templates/snippets/status/headers/quotation.html:15 #, python-format @@ -4179,7 +4423,7 @@ msgstr "hat %(book)s bewertet:" #: bookwyrm/templates/snippets/status/headers/read.html:10 #, python-format msgid "finished reading %(book)s by %(author_name)s" -msgstr "%(book)s abgeschlossen von %(author_name)s" +msgstr "%(book)s von %(author_name)s zu Ende gelesen" #: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format @@ -4189,7 +4433,7 @@ msgstr "hat %(book)s abgeschlossen" #: bookwyrm/templates/snippets/status/headers/reading.html:10 #, python-format msgid "started reading %(book)s by %(author_name)s" -msgstr "%(author_name)s beginnt %(book)s zu lesen" +msgstr "hat begonnen, %(book)s von %(author_name)s zu lesen" #: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format @@ -4199,7 +4443,7 @@ msgstr "hat angefangen, %(book)s zu lesen" #: bookwyrm/templates/snippets/status/headers/review.html:8 #, python-format msgid "reviewed %(book)s by %(author_name)s" -msgstr "%(author_name)s hat %(book)s rezensiert" +msgstr "hat %(book)s von %(author_name)s besprochen" #: bookwyrm/templates/snippets/status/headers/review.html:15 #, python-format @@ -4209,7 +4453,7 @@ msgstr "hat %(book)s besprochen" #: bookwyrm/templates/snippets/status/headers/to_read.html:10 #, python-format msgid "wants to read %(book)s by %(author_name)s" -msgstr "%(author_name)s will %(book)s lesen" +msgstr "will %(book)s von %(author_name)s lesen" #: bookwyrm/templates/snippets/status/headers/to_read.html:17 #, python-format @@ -4295,7 +4539,7 @@ msgstr "Bücher von %(username)s %(year)s" #: bookwyrm/templates/user/groups.html:9 msgid "Your Groups" -msgstr "Deine Lesezirkel" +msgstr "Deine Gruppen" #: bookwyrm/templates/user/groups.html:11 #, python-format @@ -4320,7 +4564,7 @@ msgstr "Leseziel" #: bookwyrm/templates/user/layout.html:79 msgid "Groups" -msgstr "Lesezirkel" +msgstr "Gruppen" #: bookwyrm/templates/user/lists.html:11 #, python-format @@ -4430,8 +4674,15 @@ msgstr "Es wurde kein*e Benutzer*in mit dieser E-Mail-Adresse gefunden." msgid "A password reset link was sent to {email}" msgstr "Ein Link zum Zurücksetzen des Passworts wurde an {email} gesendet" -#: bookwyrm/views/rss_feed.py:35 +#: bookwyrm/views/rss_feed.py:34 #, python-brace-format 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] "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 9b22e27c2..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-01-17 16:05+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,62 +18,70 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: bookwyrm/forms.py:365 +#: bookwyrm/forms.py:245 +msgid "This domain is blocked. Please contact your administrator if you think this is an error." +msgstr "" + +#: 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:379 +#: bookwyrm/forms.py:408 msgid "One Day" msgstr "" -#: bookwyrm/forms.py:380 +#: bookwyrm/forms.py:409 msgid "One Week" msgstr "" -#: bookwyrm/forms.py:381 +#: bookwyrm/forms.py:410 msgid "One Month" msgstr "" -#: bookwyrm/forms.py:382 +#: bookwyrm/forms.py:411 msgid "Does Not Expire" msgstr "" -#: bookwyrm/forms.py:386 +#: bookwyrm/forms.py:415 #, python-brace-format msgid "{i} uses" msgstr "" -#: bookwyrm/forms.py:387 +#: bookwyrm/forms.py:416 msgid "Unlimited" msgstr "" -#: bookwyrm/forms.py:483 +#: bookwyrm/forms.py:518 msgid "List Order" msgstr "" -#: bookwyrm/forms.py:484 +#: bookwyrm/forms.py:519 msgid "Book Title" msgstr "" -#: bookwyrm/forms.py:485 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:33 +#: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "" -#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:134 +#: bookwyrm/forms.py:522 bookwyrm/templates/lists/list.html:175 msgid "Sort By" msgstr "" -#: bookwyrm/forms.py:491 +#: bookwyrm/forms.py:526 msgid "Ascending" msgstr "" -#: bookwyrm/forms.py:492 +#: bookwyrm/forms.py:527 msgid "Descending" msgstr "" -#: bookwyrm/forms.py:505 +#: bookwyrm/forms.py:540 msgid "Reading finish date cannot be before start date." msgstr "" @@ -85,7 +93,7 @@ msgstr "" msgid "Could not find a match for book" msgstr "" -#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:62 +#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 #: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" @@ -133,7 +141,7 @@ msgstr "" msgid "Federated" msgstr "" -#: bookwyrm/models/federated_server.py:12 bookwyrm/models/link.py:61 +#: bookwyrm/models/federated_server.py:12 bookwyrm/models/link.py:71 #: bookwyrm/templates/settings/federation/edit_instance.html:44 #: bookwyrm/templates/settings/federation/instance.html:10 #: bookwyrm/templates/settings/federation/instance_list.html:23 @@ -141,26 +149,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 +176,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 +184,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 @@ -192,7 +200,19 @@ msgstr "" msgid "Private" msgstr "" -#: bookwyrm/models/link.py:60 +#: bookwyrm/models/link.py:51 +msgid "Free" +msgstr "" + +#: bookwyrm/models/link.py:52 +msgid "Purchasable" +msgstr "" + +#: bookwyrm/models/link.py:53 +msgid "Available for loan" +msgstr "" + +#: bookwyrm/models/link.py:70 #: bookwyrm/templates/settings/link_domains/link_domains.html:23 msgid "Approved" msgstr "" @@ -213,69 +233,73 @@ msgstr "" msgid "Everything else" msgstr "" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:190 msgid "Home Timeline" msgstr "" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:190 msgid "Home" msgstr "" -#: bookwyrm/settings.py:122 +#: bookwyrm/settings.py:191 msgid "Books Timeline" msgstr "" -#: bookwyrm/settings.py:122 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:196 +#: bookwyrm/settings.py:265 msgid "English" msgstr "" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:266 msgid "Deutsch (German)" msgstr "" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:267 msgid "Español (Spanish)" msgstr "" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:268 msgid "Galego (Galician)" msgstr "" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:269 msgid "Italiano (Italian)" msgstr "" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:270 msgid "Français (French)" msgstr "" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:271 msgid "Lietuvių (Lithuanian)" msgstr "" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:272 msgid "Norsk (Norwegian)" msgstr "" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:273 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:274 msgid "Português Europeu (European Portuguese)" msgstr "" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:275 +msgid "Svenska (Swedish)" +msgstr "" + +#: bookwyrm/settings.py:276 msgid "简体中文 (Simplified Chinese)" msgstr "" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:277 msgid "繁體中文 (Traditional Chinese)" msgstr "" @@ -304,60 +328,57 @@ msgstr "" msgid "About" msgstr "" -#: bookwyrm/templates/about/about.html:18 +#: bookwyrm/templates/about/about.html:19 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "" -#: bookwyrm/templates/about/about.html:22 +#: 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 "" -#: bookwyrm/templates/about/about.html:39 +#: bookwyrm/templates/about/about.html:40 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "" -#: bookwyrm/templates/about/about.html:58 +#: bookwyrm/templates/about/about.html:59 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "" -#: bookwyrm/templates/about/about.html:77 +#: bookwyrm/templates/about/about.html:78 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "" -#: bookwyrm/templates/about/about.html:88 +#: 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 "" -#: bookwyrm/templates/about/about.html:95 +#: bookwyrm/templates/about/about.html:96 msgid "Meet your admins" msgstr "" -#: bookwyrm/templates/about/about.html:98 +#: bookwyrm/templates/about/about.html:99 #, python-format -msgid "" -"\n" -" %(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.\n" -" " +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 "" -#: bookwyrm/templates/about/about.html:112 +#: bookwyrm/templates/about/about.html:113 msgid "Moderator" msgstr "" -#: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 msgid "Admin" msgstr "" -#: bookwyrm/templates/about/about.html:130 +#: 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 "" @@ -416,7 +437,7 @@ msgid "Copy address" msgstr "" #: bookwyrm/templates/annual_summary/layout.html:68 -#: bookwyrm/templates/lists/list.html:230 +#: bookwyrm/templates/lists/list.html:267 msgid "Copied!" msgstr "" @@ -485,7 +506,7 @@ msgstr "" #: bookwyrm/templates/annual_summary/layout.html:245 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 -#: bookwyrm/templates/landing/large-book.html:25 +#: bookwyrm/templates/landing/large-book.html:26 #: bookwyrm/templates/landing/small-book.html:18 msgid "by" msgstr "" @@ -677,9 +698,11 @@ msgstr "" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/file_links/add_link_modal.html:50 +#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: 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 @@ -699,16 +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:52 +#: 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 "" @@ -720,9 +744,9 @@ msgstr "" #: bookwyrm/templates/author/sync_modal.html:22 #: bookwyrm/templates/book/edit/edit_book.html:108 #: bookwyrm/templates/book/sync_modal.html:22 -#: bookwyrm/templates/groups/members.html:30 +#: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 -#: bookwyrm/templates/snippets/remove_from_group_button.html:16 +#: bookwyrm/templates/snippets/remove_from_group_button.html:17 msgid "Confirm" msgstr "" @@ -806,8 +830,8 @@ msgid "Places" msgstr "" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 -#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: 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 @@ -815,13 +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/list.html:208 +#: bookwyrm/templates/lists/add_item_modal.html:37 +#: 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" @@ -923,7 +948,7 @@ msgid "Back" msgstr "" #: bookwyrm/templates/book/edit/edit_book_form.html:21 -#: bookwyrm/templates/snippets/create_status/review.html:16 +#: bookwyrm/templates/snippets/create_status/review.html:15 msgid "Title:" msgstr "" @@ -1001,7 +1026,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 "" @@ -1039,17 +1064,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 "" @@ -1069,9 +1094,13 @@ msgstr "" msgid "File type:" msgstr "" +#: bookwyrm/templates/book/file_links/add_link_modal.html:48 +msgid "Availability:" +msgstr "" + #: 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:47 +#: bookwyrm/templates/book/file_links/links.html:53 msgid "Edit links" msgstr "" @@ -1105,21 +1134,32 @@ msgid "Domain" msgstr "" #: bookwyrm/templates/book/file_links/edit_links.html:36 +#: bookwyrm/templates/import/import_status.html:127 +#: bookwyrm/templates/settings/announcements/announcements.html:38 +#: bookwyrm/templates/settings/federation/instance_list.html:46 +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 +#: bookwyrm/templates/settings/invites/status_filter.html:5 +#: bookwyrm/templates/settings/users/user_admin.html:34 +#: bookwyrm/templates/settings/users/user_info.html:20 +msgid "Status" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:37 #: bookwyrm/templates/settings/federation/instance.html:94 #: bookwyrm/templates/settings/reports/report_links_table.html:6 msgid "Actions" msgstr "" -#: bookwyrm/templates/book/file_links/edit_links.html:52 +#: bookwyrm/templates/book/file_links/edit_links.html:53 #: bookwyrm/templates/book/file_links/verification_modal.html:25 msgid "Report spam" msgstr "" -#: bookwyrm/templates/book/file_links/edit_links.html:65 +#: bookwyrm/templates/book/file_links/edit_links.html:97 msgid "No links available for this book." msgstr "" -#: bookwyrm/templates/book/file_links/edit_links.html:76 +#: bookwyrm/templates/book/file_links/edit_links.html:108 #: bookwyrm/templates/book/file_links/links.html:18 msgid "Add link to file" msgstr "" @@ -1132,7 +1172,7 @@ msgstr "" msgid "Get a copy" msgstr "" -#: bookwyrm/templates/book/file_links/links.html:41 +#: bookwyrm/templates/book/file_links/links.html:47 msgid "No links available" msgstr "" @@ -1526,16 +1566,11 @@ msgstr "" msgid "You have no messages right now." msgstr "" -#: bookwyrm/templates/feed/feed.html:28 -#, python-format -msgid "load 0 unread status(es)" -msgstr "" - -#: 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 "" -#: bookwyrm/templates/feed/feed.html:52 +#: bookwyrm/templates/feed/feed.html:55 msgid "Alternatively, you can try enabling more status types" msgstr "" @@ -1624,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:162 +#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:203 msgid "Search for a book" msgstr "" @@ -1642,9 +1677,9 @@ msgstr "" #: bookwyrm/templates/get_started/books.html:17 #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166 +#: 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:207 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -1660,7 +1695,7 @@ msgid "Popular on %(site_name)s" msgstr "" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:179 +#: bookwyrm/templates/lists/list.html:220 msgid "No books found" msgstr "" @@ -1765,7 +1800,7 @@ msgstr "" #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 #: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:14 msgid "Delete" msgstr "" @@ -1785,17 +1820,17 @@ msgstr "" msgid "Delete group" msgstr "" -#: bookwyrm/templates/groups/group.html:22 +#: bookwyrm/templates/groups/group.html:21 msgid "Members of this group can create group-curated lists." msgstr "" -#: bookwyrm/templates/groups/group.html:27 +#: bookwyrm/templates/groups/group.html:26 #: bookwyrm/templates/lists/create_form.html:5 #: bookwyrm/templates/lists/lists.html:20 msgid "Create List" msgstr "" -#: bookwyrm/templates/groups/group.html:40 +#: bookwyrm/templates/groups/group.html:39 msgid "This group has no lists" msgstr "" @@ -1803,15 +1838,15 @@ msgstr "" msgid "Edit group" msgstr "" -#: bookwyrm/templates/groups/members.html:12 +#: bookwyrm/templates/groups/members.html:11 msgid "Search to add a user" msgstr "" -#: bookwyrm/templates/groups/members.html:33 +#: bookwyrm/templates/groups/members.html:32 msgid "Leave group" msgstr "" -#: bookwyrm/templates/groups/members.html:55 +#: bookwyrm/templates/groups/members.html:54 #: bookwyrm/templates/groups/suggested_users.html:35 #: bookwyrm/templates/snippets/suggested_users.html:31 #: bookwyrm/templates/user/user_preview.html:36 @@ -1971,16 +2006,6 @@ msgstr "" msgid "Book" msgstr "" -#: bookwyrm/templates/import/import_status.html:127 -#: bookwyrm/templates/settings/announcements/announcements.html:38 -#: bookwyrm/templates/settings/federation/instance_list.html:46 -#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 -#: bookwyrm/templates/settings/invites/status_filter.html:5 -#: bookwyrm/templates/settings/users/user_admin.html:34 -#: bookwyrm/templates/settings/users/user_info.html:20 -msgid "Status" -msgstr "" - #: bookwyrm/templates/import/import_status.html:135 msgid "Import preview unavailable." msgstr "" @@ -2019,7 +2044,7 @@ msgid "Approving a suggestion will permanently add the suggested book to your sh msgstr "" #: 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 "" @@ -2029,7 +2054,7 @@ msgid "Reject" msgstr "" #: bookwyrm/templates/import/tooltip.html:6 -msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." +msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." msgstr "" #: bookwyrm/templates/import/troubleshoot.html:7 @@ -2230,6 +2255,21 @@ msgstr "" msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "" +#: bookwyrm/templates/lists/add_item_modal.html:8 +#, python-format +msgid "Add \"%(title)s\" to this list" +msgstr "" + +#: bookwyrm/templates/lists/add_item_modal.html:12 +#, python-format +msgid "Suggest \"%(title)s\" for this list" +msgstr "" + +#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/list.html:247 +msgid "Suggest" +msgstr "" + #: bookwyrm/templates/lists/bookmark_button.html:30 msgid "Un-save" msgstr "" @@ -2249,23 +2289,29 @@ msgstr "" msgid "Created by %(username)s" msgstr "" -#: bookwyrm/templates/lists/curate.html:11 +#: bookwyrm/templates/lists/curate.html:12 msgid "Curate" msgstr "" -#: bookwyrm/templates/lists/curate.html:20 +#: bookwyrm/templates/lists/curate.html:21 msgid "Pending Books" msgstr "" -#: bookwyrm/templates/lists/curate.html:23 +#: bookwyrm/templates/lists/curate.html:24 msgid "You're all set!" msgstr "" -#: bookwyrm/templates/lists/curate.html:43 +#: bookwyrm/templates/lists/curate.html:45 +#: bookwyrm/templates/lists/list.html:83 +#, python-format +msgid "%(username)s says:" +msgstr "" + +#: bookwyrm/templates/lists/curate.html:55 msgid "Suggested by" msgstr "" -#: bookwyrm/templates/lists/curate.html:65 +#: bookwyrm/templates/lists/curate.html:77 msgid "Discard" msgstr "" @@ -2278,18 +2324,18 @@ msgstr "" msgid "Edit List" msgstr "" -#: bookwyrm/templates/lists/embed-list.html:7 +#: bookwyrm/templates/lists/embed-list.html:8 #, python-format msgid "%(list_name)s, a list by %(owner)s" msgstr "" -#: bookwyrm/templates/lists/embed-list.html:17 +#: bookwyrm/templates/lists/embed-list.html:18 #, python-format msgid "on %(site_name)s" msgstr "" -#: bookwyrm/templates/lists/embed-list.html:26 -#: bookwyrm/templates/lists/list.html:42 +#: bookwyrm/templates/lists/embed-list.html:27 +#: bookwyrm/templates/lists/list.html:44 msgid "This list is currently empty" msgstr "" @@ -2350,76 +2396,89 @@ msgstr "" msgid "Delete list" msgstr "" -#: bookwyrm/templates/lists/list.html:34 -msgid "You successfully suggested a book for this list!" +#: bookwyrm/templates/lists/item_notes_field.html:7 +#: bookwyrm/templates/settings/federation/edit_instance.html:74 +msgid "Notes:" +msgstr "" + +#: bookwyrm/templates/lists/item_notes_field.html:19 +msgid "An optional note that will be displayed with the book." msgstr "" #: bookwyrm/templates/lists/list.html:36 +msgid "You successfully suggested a book for this list!" +msgstr "" + +#: bookwyrm/templates/lists/list.html:38 msgid "You successfully added a book to this list!" msgstr "" -#: bookwyrm/templates/lists/list.html:80 +#: bookwyrm/templates/lists/list.html:94 +msgid "Edit notes" +msgstr "" + +#: bookwyrm/templates/lists/list.html:109 +msgid "Add notes" +msgstr "" + +#: bookwyrm/templates/lists/list.html:121 #, python-format msgid "Added by %(username)s" msgstr "" -#: bookwyrm/templates/lists/list.html:95 +#: bookwyrm/templates/lists/list.html:136 msgid "List position" msgstr "" -#: bookwyrm/templates/lists/list.html:101 +#: bookwyrm/templates/lists/list.html:142 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 msgid "Set" msgstr "" -#: bookwyrm/templates/lists/list.html:116 -#: bookwyrm/templates/snippets/remove_from_group_button.html:19 +#: bookwyrm/templates/lists/list.html:157 +#: bookwyrm/templates/snippets/remove_from_group_button.html:20 msgid "Remove" msgstr "" -#: bookwyrm/templates/lists/list.html:130 -#: bookwyrm/templates/lists/list.html:147 +#: bookwyrm/templates/lists/list.html:171 +#: bookwyrm/templates/lists/list.html:188 msgid "Sort List" msgstr "" -#: bookwyrm/templates/lists/list.html:140 +#: bookwyrm/templates/lists/list.html:181 msgid "Direction" msgstr "" -#: bookwyrm/templates/lists/list.html:154 +#: bookwyrm/templates/lists/list.html:195 msgid "Add Books" msgstr "" -#: bookwyrm/templates/lists/list.html:156 +#: bookwyrm/templates/lists/list.html:197 msgid "Suggest Books" msgstr "" -#: bookwyrm/templates/lists/list.html:167 +#: bookwyrm/templates/lists/list.html:208 msgid "search" msgstr "" -#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:214 msgid "Clear search" msgstr "" -#: bookwyrm/templates/lists/list.html:178 +#: bookwyrm/templates/lists/list.html:219 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "" -#: bookwyrm/templates/lists/list.html:210 -msgid "Suggest" -msgstr "" - -#: bookwyrm/templates/lists/list.html:221 +#: bookwyrm/templates/lists/list.html:258 msgid "Embed this list on a website" msgstr "" -#: bookwyrm/templates/lists/list.html:229 +#: bookwyrm/templates/lists/list.html:266 msgid "Copy embed code" msgstr "" -#: bookwyrm/templates/lists/list.html:231 +#: bookwyrm/templates/lists/list.html:268 #, python-format msgid "%(list_name)s, a list by %(owner)s on %(site_name)s" msgstr "" @@ -3207,10 +3266,6 @@ msgstr "" msgid "Version:" msgstr "" -#: bookwyrm/templates/settings/federation/edit_instance.html:74 -msgid "Notes:" -msgstr "" - #: bookwyrm/templates/settings/federation/instance.html:19 msgid "Details" msgstr "" @@ -3527,23 +3582,31 @@ msgstr "" msgid "Back to reports" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:22 -msgid "Reported statuses" +#: 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: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 "" @@ -3895,15 +3958,15 @@ msgstr "" msgid "This shelf is empty." msgstr "" -#: bookwyrm/templates/snippets/add_to_group_button.html:15 +#: bookwyrm/templates/snippets/add_to_group_button.html:16 msgid "Invite" msgstr "" -#: bookwyrm/templates/snippets/add_to_group_button.html:24 +#: bookwyrm/templates/snippets/add_to_group_button.html:25 msgid "Uninvite" msgstr "" -#: bookwyrm/templates/snippets/add_to_group_button.html:28 +#: bookwyrm/templates/snippets/add_to_group_button.html:29 #, python-format msgid "Remove @%(username)s" msgstr "" @@ -3968,14 +4031,14 @@ msgstr "" msgid "of %(pages)s pages" msgstr "" -#: 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 "" @@ -3991,7 +4054,7 @@ msgstr "" msgid "Include spoiler alert" msgstr "" -#: bookwyrm/templates/snippets/create_status/layout.html:48 +#: bookwyrm/templates/snippets/create_status/layout.html:47 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "" @@ -4000,33 +4063,33 @@ msgstr "" msgid "Post" msgstr "" -#: bookwyrm/templates/snippets/create_status/quotation.html:17 +#: bookwyrm/templates/snippets/create_status/quotation.html:16 msgid "Quote:" msgstr "" -#: bookwyrm/templates/snippets/create_status/quotation.html:25 +#: bookwyrm/templates/snippets/create_status/quotation.html:24 #, python-format msgid "An excerpt from '%(book_title)s'" msgstr "" -#: bookwyrm/templates/snippets/create_status/quotation.html:32 +#: bookwyrm/templates/snippets/create_status/quotation.html:31 msgid "Position:" msgstr "" -#: bookwyrm/templates/snippets/create_status/quotation.html:45 +#: bookwyrm/templates/snippets/create_status/quotation.html:44 msgid "On page:" msgstr "" -#: bookwyrm/templates/snippets/create_status/quotation.html:51 +#: bookwyrm/templates/snippets/create_status/quotation.html:50 msgid "At percent:" msgstr "" -#: bookwyrm/templates/snippets/create_status/review.html:25 +#: bookwyrm/templates/snippets/create_status/review.html:24 #, python-format msgid "Your review of '%(book_title)s'" msgstr "" -#: bookwyrm/templates/snippets/create_status/review.html:40 +#: bookwyrm/templates/snippets/create_status/review.html:39 msgid "Review:" msgstr "" @@ -4053,7 +4116,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 "" @@ -4080,7 +4143,7 @@ msgid "Unfollow" msgstr "" #: bookwyrm/templates/snippets/follow_request_buttons.html:7 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:8 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:9 msgid "Accept" msgstr "" @@ -4120,14 +4183,14 @@ msgstr[1] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +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] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": %(review_title)s" +msgid "Review of \"%(book_title)s\": %(review_title)s" msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 @@ -4198,11 +4261,11 @@ msgstr "" msgid "Post privacy" msgstr "" -#: bookwyrm/templates/snippets/rate_action.html:4 +#: bookwyrm/templates/snippets/rate_action.html:5 msgid "Leave a rating" msgstr "" -#: bookwyrm/templates/snippets/rate_action.html:19 +#: bookwyrm/templates/snippets/rate_action.html:20 msgid "Rate" msgstr "" @@ -4296,29 +4359,29 @@ msgstr "" msgid "Finish reading" msgstr "" -#: bookwyrm/templates/snippets/status/content_status.html:75 +#: bookwyrm/templates/snippets/status/content_status.html:73 msgid "Content warning" msgstr "" -#: bookwyrm/templates/snippets/status/content_status.html:82 +#: bookwyrm/templates/snippets/status/content_status.html:80 msgid "Show status" msgstr "" -#: bookwyrm/templates/snippets/status/content_status.html:104 +#: bookwyrm/templates/snippets/status/content_status.html:102 #, python-format msgid "(Page %(page)s)" msgstr "" -#: bookwyrm/templates/snippets/status/content_status.html:106 +#: bookwyrm/templates/snippets/status/content_status.html:104 #, python-format msgid "(%(percent)s%%)" msgstr "" -#: bookwyrm/templates/snippets/status/content_status.html:128 +#: bookwyrm/templates/snippets/status/content_status.html:126 msgid "Open image in new window" msgstr "" -#: bookwyrm/templates/snippets/status/content_status.html:147 +#: bookwyrm/templates/snippets/status/content_status.html:145 msgid "Hide status" msgstr "" @@ -4611,7 +4674,14 @@ msgstr "" msgid "A password reset link was sent to {email}" msgstr "" -#: bookwyrm/views/rss_feed.py:35 +#: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" msgstr "" + +#: bookwyrm/views/updates.py:45 +#, python-format +msgid "Load %(count)d unread status" +msgid_plural "Load %(count)d unread statuses" +msgstr[0] "" +msgstr[1] "" diff --git a/locale/es_ES/LC_MESSAGES/django.mo b/locale/es_ES/LC_MESSAGES/django.mo index 04887d7d0..3a668fda9 100644 Binary files a/locale/es_ES/LC_MESSAGES/django.mo and b/locale/es_ES/LC_MESSAGES/django.mo differ diff --git a/locale/es_ES/LC_MESSAGES/django.po b/locale/es_ES/LC_MESSAGES/django.po index 50336a34e..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-13 16:54+0000\n" -"PO-Revision-Date: 2022-01-13 18:45\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:351 +#: 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:365 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Un día" -#: bookwyrm/forms.py:366 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Una semana" -#: bookwyrm/forms.py:367 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Un mes" -#: bookwyrm/forms.py:368 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "No expira" -#: bookwyrm/forms.py:372 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} usos" -#: bookwyrm/forms.py:373 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Sin límite" -#: bookwyrm/forms.py:469 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Orden de la lista" -#: bookwyrm/forms.py:470 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Título" -#: bookwyrm/forms.py:471 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:33 +#: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Valoración" -#: bookwyrm/forms.py:473 bookwyrm/templates/lists/list.html:134 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Ordenar por" -#: bookwyrm/forms.py:477 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Ascendente" -#: bookwyrm/forms.py:478 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Descendente" -#: bookwyrm/forms.py:491 +#: 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." @@ -84,8 +92,9 @@ msgstr "Error en cargar libro" msgid "Could not find a match for book" msgstr "No se pudo encontrar el libro" -#: bookwyrm/models/base_model.py:17 +#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 +#: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "Pendiente" @@ -105,23 +114,23 @@ msgstr "Eliminación de moderador" msgid "Domain block" msgstr "Bloqueo de dominio" -#: bookwyrm/models/book.py:250 +#: bookwyrm/models/book.py:253 msgid "Audiobook" msgstr "Audio libro" -#: bookwyrm/models/book.py:251 +#: bookwyrm/models/book.py:254 msgid "eBook" msgstr "Libro electrónico" -#: bookwyrm/models/book.py:252 +#: bookwyrm/models/book.py:255 msgid "Graphic novel" msgstr "Novela gráfica" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:256 msgid "Hardcover" msgstr "Tapa dura" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:257 msgid "Paperback" msgstr "Tapa blanda" @@ -131,33 +140,34 @@ msgstr "Tapa blanda" msgid "Federated" msgstr "Federalizado" -#: bookwyrm/models/federated_server.py:12 +#: bookwyrm/models/federated_server.py:12 bookwyrm/models/link.py:71 #: bookwyrm/templates/settings/federation/edit_instance.html:44 #: bookwyrm/templates/settings/federation/instance.html:10 #: bookwyrm/templates/settings/federation/instance_list.html:23 +#: bookwyrm/templates/settings/link_domains/link_domains.html:27 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 @@ -165,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 @@ -173,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 @@ -189,6 +199,23 @@ msgstr "Seguidores" msgid "Private" msgstr "Privado" +#: bookwyrm/models/link.py:51 +msgid "Free" +msgstr "Gratuito" + +#: bookwyrm/models/link.py:52 +msgid "Purchasable" +msgstr "Disponible para compra" + +#: bookwyrm/models/link.py:53 +msgid "Available for loan" +msgstr "Disponible para préstamo" + +#: bookwyrm/models/link.py:70 +#: bookwyrm/templates/settings/link_domains/link_domains.html:23 +msgid "Approved" +msgstr "Aprobado" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Reseñas" @@ -205,69 +232,73 @@ msgstr "Citas" msgid "Everything else" msgstr "Todo lo demás" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home Timeline" msgstr "Línea de tiempo principal" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home" msgstr "Inicio" -#: bookwyrm/settings.py:122 +#: bookwyrm/settings.py:174 msgid "Books Timeline" msgstr "Línea temporal de libros" -#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Libros" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:248 msgid "English" msgstr "English (Inglés)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:249 msgid "Deutsch (German)" msgstr "Deutsch (Alemán)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:250 msgid "Español (Spanish)" msgstr "Español" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:251 msgid "Galego (Galician)" msgstr "Galego (Gallego)" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:252 msgid "Italiano (Italian)" msgstr "Italiano" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:253 msgid "Français (French)" msgstr "Français (Francés)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:254 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituano)" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:255 msgid "Norsk (Norwegian)" msgstr "Norsk (Noruego)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:256 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portugués brasileño)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:257 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugués europeo)" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:258 +msgid "Svenska (Swedish)" +msgstr "Svenska (Sueco)" + +#: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chino simplificado)" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:260 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chino tradicional)" @@ -296,61 +327,57 @@ msgstr "¡Algo salió mal! Disculpa." msgid "About" msgstr "Acerca de" -#: bookwyrm/templates/about/about.html:18 +#: bookwyrm/templates/about/about.html:19 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "¡Bienvenido a %(site_name)s!" -#: bookwyrm/templates/about/about.html:22 +#: 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 "%(site_name)s es parte de BookWyrm, una red de comunidades independientes y autogestionadas para lectores. Aunque puedes interactuar sin problemas con los usuarios de cualquier parte de la red BookWyrm, esta comunidad es única." -#: bookwyrm/templates/about/about.html:39 +#: bookwyrm/templates/about/about.html:40 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "%(title)s es el libro más querido de %(site_name)s, con una valoración promedio de %(rating)s sobre 5." -#: bookwyrm/templates/about/about.html:58 +#: bookwyrm/templates/about/about.html:59 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "Los usuarios de %(site_name)s quieren leer %(title)s más que cualquier otro libro." -#: bookwyrm/templates/about/about.html:77 +#: bookwyrm/templates/about/about.html:78 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "Las valoraciones de %(title)s están más divididas que las de cualquier otro libro en %(site_name)s." -#: bookwyrm/templates/about/about.html:88 +#: 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 "Haz un registro de tu lectura, habla sobre libros, escribe reseñas y descubre qué leer a continuación. BookWyrm es un software de escala humana, siempre sin anuncios, anticorporativo y orientado a la comunidad, diseñado para ser pequeño y personal. Si tienes solicitudes de características, informes de errores o grandes sueños, contacta y hazte oír." -#: bookwyrm/templates/about/about.html:95 +#: bookwyrm/templates/about/about.html:96 msgid "Meet your admins" msgstr "Conoce a tus administradores" -#: bookwyrm/templates/about/about.html:98 +#: bookwyrm/templates/about/about.html:99 #, python-format -msgid "\n" -" %(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.\n" -" " -msgstr "\n" -" Los moderadores y administradores de %(site_name)s mantienen el sitio en funcionamiento, hacen cumplir el código de conducta y responden cuando los usuarios reportan spam y mal comportamiento.\n" -" " +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 "Los moderadores y administradores de %(site_name)s mantienen el sitio en funcionamiento, hacen cumplir el código de conducta y responden cuando los usuarios informan de spam y mal comportamiento." -#: bookwyrm/templates/about/about.html:112 +#: bookwyrm/templates/about/about.html:113 msgid "Moderator" msgstr "Moderador" -#: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 msgid "Admin" msgstr "Administrador" -#: bookwyrm/templates/about/about.html:130 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:13 +#: 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" @@ -409,7 +436,7 @@ msgid "Copy address" msgstr "Copiar dirección" #: bookwyrm/templates/annual_summary/layout.html:68 -#: bookwyrm/templates/lists/list.html:230 +#: bookwyrm/templates/lists/list.html:269 msgid "Copied!" msgstr "¡Copiado!" @@ -478,7 +505,7 @@ msgstr "Su lectura más corta de este año…" #: bookwyrm/templates/annual_summary/layout.html:245 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 -#: bookwyrm/templates/landing/large-book.html:25 +#: bookwyrm/templates/landing/large-book.html:26 #: bookwyrm/templates/landing/small-book.html:18 msgid "by" msgstr "por" @@ -530,61 +557,61 @@ msgstr "Todos los libros que ha leído %(display_name)s en %(year)s" msgid "Edit Author" msgstr "Editar Autor/Autora" -#: bookwyrm/templates/author/author.html:40 +#: bookwyrm/templates/author/author.html:35 msgid "Author details" msgstr "Detalles sobre el/la autor/a" -#: bookwyrm/templates/author/author.html:44 +#: bookwyrm/templates/author/author.html:39 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "Alias:" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:48 msgid "Born:" msgstr "Nacido:" -#: bookwyrm/templates/author/author.html:60 +#: bookwyrm/templates/author/author.html:55 msgid "Died:" msgstr "Muerto:" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:65 msgid "External links" msgstr "Enlaces externos" -#: bookwyrm/templates/author/author.html:75 +#: bookwyrm/templates/author/author.html:70 msgid "Wikipedia" msgstr "Wikipedia" -#: bookwyrm/templates/author/author.html:83 +#: bookwyrm/templates/author/author.html:78 msgid "View ISNI record" msgstr "Ver registro ISNI" -#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/author.html:83 #: bookwyrm/templates/author/sync_modal.html:5 #: bookwyrm/templates/book/book.html:122 #: bookwyrm/templates/book/sync_modal.html:5 msgid "Load data" msgstr "Cargar datos" -#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/author/author.html:87 #: bookwyrm/templates/book/book.html:126 msgid "View on OpenLibrary" msgstr "Ver en OpenLibrary" -#: bookwyrm/templates/author/author.html:107 +#: bookwyrm/templates/author/author.html:102 #: bookwyrm/templates/book/book.html:140 msgid "View on Inventaire" msgstr "Ver en Inventaire" -#: bookwyrm/templates/author/author.html:123 +#: bookwyrm/templates/author/author.html:118 msgid "View on LibraryThing" msgstr "Ver en LibraryThing" -#: bookwyrm/templates/author/author.html:131 +#: bookwyrm/templates/author/author.html:126 msgid "View on Goodreads" msgstr "Ver en Goodreads" -#: bookwyrm/templates/author/author.html:145 +#: bookwyrm/templates/author/author.html:141 #, python-format msgid "Books by %(name)s" msgstr "Libros de %(name)s" @@ -614,7 +641,9 @@ msgid "Metadata" msgstr "Metadatos" #: bookwyrm/templates/author/edit_author.html:35 -#: bookwyrm/templates/lists/form.html:9 bookwyrm/templates/shelf/form.html:9 +#: bookwyrm/templates/lists/form.html:9 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:14 +#: bookwyrm/templates/shelf/form.html:9 msgid "Name:" msgstr "Nombre:" @@ -668,8 +697,11 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 +#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: 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 @@ -677,7 +709,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 #: bookwyrm/templates/settings/site.html:133 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:68 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 msgid "Save" @@ -689,13 +721,17 @@ msgstr "Guardar" #: 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/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/settings/federation/instance.html:88 -#: bookwyrm/templates/snippets/report_modal.html:38 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 +#: bookwyrm/templates/snippets/report_modal.html:54 msgid "Cancel" msgstr "Cancelar" @@ -707,9 +743,9 @@ msgstr "La carga de datos se conectará a %(source_name)s y com #: bookwyrm/templates/author/sync_modal.html:22 #: bookwyrm/templates/book/edit/edit_book.html:108 #: bookwyrm/templates/book/sync_modal.html:22 -#: bookwyrm/templates/groups/members.html:30 +#: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 -#: bookwyrm/templates/snippets/remove_from_group_button.html:16 +#: bookwyrm/templates/snippets/remove_from_group_button.html:17 msgid "Confirm" msgstr "Confirmar" @@ -793,8 +829,8 @@ msgid "Places" msgstr "Lugares" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 -#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: 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 @@ -808,7 +844,8 @@ msgstr "Agregar a lista" #: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/list.html:208 +#: 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" @@ -910,7 +947,7 @@ msgid "Back" msgstr "Volver" #: bookwyrm/templates/book/edit/edit_book_form.html:21 -#: bookwyrm/templates/snippets/create_status/review.html:16 +#: bookwyrm/templates/snippets/create_status/review.html:15 msgid "Title:" msgstr "Título:" @@ -988,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:" @@ -1026,20 +1063,132 @@ 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" +#: bookwyrm/templates/book/file_links/add_link_modal.html:6 +msgid "Add file link" +msgstr "Añadir enlace a archivo" + +#: 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 "Los enlaces de dominios desconocidos tendrán que ser aprobados por un moderador antes de ser añadidos." + +#: bookwyrm/templates/book/file_links/add_link_modal.html:24 +msgid "URL:" +msgstr "URL:" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:29 +msgid "File type:" +msgstr "Tipo de archivo:" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:48 +msgid "Availability:" +msgstr "Disponibilidad:" + +#: 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 "Editar enlaces" + +#: bookwyrm/templates/book/file_links/edit_links.html:11 +#, python-format +msgid "\n" +" Links for \"%(title)s\"\n" +" " +msgstr "\n" +" Enlaces de \"%(title)s\"\n" +" " + +#: bookwyrm/templates/book/file_links/edit_links.html:32 +#: bookwyrm/templates/settings/link_domains/link_table.html:6 +msgid "URL" +msgstr "URL" + +#: bookwyrm/templates/book/file_links/edit_links.html:33 +#: bookwyrm/templates/settings/link_domains/link_table.html:7 +msgid "Added by" +msgstr "Añadido por" + +#: bookwyrm/templates/book/file_links/edit_links.html:34 +#: bookwyrm/templates/settings/link_domains/link_table.html:8 +msgid "Filetype" +msgstr "Tipo de archivo" + +#: bookwyrm/templates/book/file_links/edit_links.html:35 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 +#: bookwyrm/templates/settings/reports/report_links_table.html:5 +msgid "Domain" +msgstr "Dominio" + +#: bookwyrm/templates/book/file_links/edit_links.html:36 +#: bookwyrm/templates/import/import_status.html:127 +#: bookwyrm/templates/settings/announcements/announcements.html:38 +#: bookwyrm/templates/settings/federation/instance_list.html:46 +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 +#: bookwyrm/templates/settings/invites/status_filter.html:5 +#: bookwyrm/templates/settings/users/user_admin.html:34 +#: bookwyrm/templates/settings/users/user_info.html:20 +msgid "Status" +msgstr "Estado" + +#: bookwyrm/templates/book/file_links/edit_links.html:37 +#: bookwyrm/templates/settings/federation/instance.html:94 +#: bookwyrm/templates/settings/reports/report_links_table.html:6 +msgid "Actions" +msgstr "Acciones" + +#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 +msgid "Report spam" +msgstr "Denunciar spam" + +#: bookwyrm/templates/book/file_links/edit_links.html:97 +msgid "No links available for this book." +msgstr "Ningún enlace disponible para este libro." + +#: bookwyrm/templates/book/file_links/edit_links.html:108 +#: bookwyrm/templates/book/file_links/links.html:18 +msgid "Add link to file" +msgstr "Añadir enlace a archivo" + +#: bookwyrm/templates/book/file_links/file_link_page.html:6 +msgid "File Links" +msgstr "Enlaces a archivos" + +#: bookwyrm/templates/book/file_links/links.html:9 +msgid "Get a copy" +msgstr "Obtener una copia" + +#: bookwyrm/templates/book/file_links/links.html:47 +msgid "No links available" +msgstr "Ningún enlace disponible" + +#: bookwyrm/templates/book/file_links/verification_modal.html:5 +msgid "Leaving BookWyrm" +msgstr "Saliendo de BookWyrm" + +#: bookwyrm/templates/book/file_links/verification_modal.html:11 +#, python-format +msgid "This link is taking you to: %(link_url)s.
    Is that where you'd like to go?" +msgstr "Este enlace te lleva a: %(link_url)s.
    ¿Es ahí adonde quieres ir?" + +#: bookwyrm/templates/book/file_links/verification_modal.html:20 +msgid "Continue" +msgstr "Continuar" + #: bookwyrm/templates/book/publisher_info.html:23 #, python-format msgid "%(format)s, %(pages)s pages" @@ -1110,8 +1259,8 @@ msgstr "Código de confirmación:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:93 -#: bookwyrm/templates/snippets/report_modal.html:37 +#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Enviar" @@ -1417,16 +1566,11 @@ msgstr "Todos los mensajes" msgid "You have no messages right now." msgstr "No tienes ningún mensaje en este momento." -#: bookwyrm/templates/feed/feed.html:28 -#, python-format -msgid "load 0 unread status(es)" -msgstr "cargar 0 estado(s) no leído(s)" - -#: 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 "¡No hay actividad ahora mismo! Sigue a otro usuario para empezar" -#: bookwyrm/templates/feed/feed.html:52 +#: bookwyrm/templates/feed/feed.html:55 msgid "Alternatively, you can try enabling more status types" msgstr "Alternativamente, puedes intentar habilitar más tipos de estado" @@ -1515,7 +1659,7 @@ msgid "What are you reading?" msgstr "¿Qué estás leyendo?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162 +#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:205 msgid "Search for a book" msgstr "Buscar libros" @@ -1533,9 +1677,9 @@ msgstr "Puedes agregar libros cuando comiences a usar %(site_name)s." #: bookwyrm/templates/get_started/books.html:17 #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166 +#: 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/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -1551,7 +1695,7 @@ msgid "Popular on %(site_name)s" msgstr "Popular en %(site_name)s" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:179 +#: bookwyrm/templates/lists/list.html:222 msgid "No books found" msgstr "No se encontró ningún libro" @@ -1656,7 +1800,7 @@ msgstr "Esta acción no se puede deshacer" #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 #: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:14 msgid "Delete" msgstr "Eliminar" @@ -1676,17 +1820,17 @@ msgstr "Descripción del grupo:" msgid "Delete group" msgstr "Eliminar grupo" -#: bookwyrm/templates/groups/group.html:22 +#: bookwyrm/templates/groups/group.html:21 msgid "Members of this group can create group-curated lists." msgstr "Los miembros de este grupo pueden crear listas comisariadas en grupo." -#: bookwyrm/templates/groups/group.html:27 +#: bookwyrm/templates/groups/group.html:26 #: bookwyrm/templates/lists/create_form.html:5 #: bookwyrm/templates/lists/lists.html:20 msgid "Create List" msgstr "Crear lista" -#: bookwyrm/templates/groups/group.html:40 +#: bookwyrm/templates/groups/group.html:39 msgid "This group has no lists" msgstr "Este grupo no tiene listas" @@ -1694,15 +1838,15 @@ msgstr "Este grupo no tiene listas" msgid "Edit group" msgstr "Editar grupo" -#: bookwyrm/templates/groups/members.html:12 +#: bookwyrm/templates/groups/members.html:11 msgid "Search to add a user" msgstr "Buscar para agregar un usuario" -#: bookwyrm/templates/groups/members.html:33 +#: bookwyrm/templates/groups/members.html:32 msgid "Leave group" msgstr "Dejar grupo" -#: bookwyrm/templates/groups/members.html:55 +#: bookwyrm/templates/groups/members.html:54 #: bookwyrm/templates/groups/suggested_users.html:35 #: bookwyrm/templates/snippets/suggested_users.html:31 #: bookwyrm/templates/user/user_preview.html:36 @@ -1858,19 +2002,10 @@ msgid "Review" msgstr "Reseña" #: bookwyrm/templates/import/import_status.html:124 +#: bookwyrm/templates/settings/link_domains/link_table.html:9 msgid "Book" msgstr "Libro" -#: bookwyrm/templates/import/import_status.html:127 -#: bookwyrm/templates/settings/announcements/announcements.html:38 -#: bookwyrm/templates/settings/federation/instance_list.html:46 -#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 -#: bookwyrm/templates/settings/invites/status_filter.html:5 -#: bookwyrm/templates/settings/users/user_admin.html:34 -#: bookwyrm/templates/settings/users/user_info.html:20 -msgid "Status" -msgstr "Estado" - #: bookwyrm/templates/import/import_status.html:135 msgid "Import preview unavailable." msgstr "Previsualización de la importación no disponible." @@ -1909,7 +2044,8 @@ msgid "Approving a suggestion will permanently add the suggested book to your sh msgstr "La aprobación de una sugerencia añadirá permanentemente el libro sugerido a tus estanterías y asociará tus fechas de lectura, tus reseñas y tus valoraciones a ese libro." #: 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 "Aprobar" @@ -1918,8 +2054,8 @@ msgid "Reject" msgstr "Rechazar" #: bookwyrm/templates/import/tooltip.html:6 -msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." -msgstr "Puede descargar sus datos de Goodreads desde la página de Importación/Exportación de su cuenta de Goodreads." +msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." +msgstr "Puedes descargar tus datos de Goodreads desde la página de importación/exportación de tu cuenta de Goodreads." #: bookwyrm/templates/import/troubleshoot.html:7 msgid "Failed items" @@ -2119,6 +2255,21 @@ msgstr "Apoyar %(site_name)s en % msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "BookWyrm es software de código abierto. Puedes contribuir o reportar problemas en GitHub." +#: bookwyrm/templates/lists/add_item_modal.html:8 +#, python-format +msgid "Add \"%(title)s\" to this list" +msgstr "Añadir «%(title)s» a esta lista" + +#: bookwyrm/templates/lists/add_item_modal.html:12 +#, python-format +msgid "Suggest \"%(title)s\" for this list" +msgstr "Sugerir «%(title)s» para esta lista" + +#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/list.html:249 +msgid "Suggest" +msgstr "Sugerir" + #: bookwyrm/templates/lists/bookmark_button.html:30 msgid "Un-save" msgstr "Des-guardar" @@ -2138,23 +2289,29 @@ msgstr "Agregado y comisariado por %(username)s" msgid "Created by %(username)s" msgstr "Creado por %(username)s" -#: bookwyrm/templates/lists/curate.html:11 +#: bookwyrm/templates/lists/curate.html:12 msgid "Curate" msgstr "Comisariar" -#: bookwyrm/templates/lists/curate.html:20 +#: bookwyrm/templates/lists/curate.html:21 msgid "Pending Books" msgstr "Libros pendientes" -#: bookwyrm/templates/lists/curate.html:23 +#: bookwyrm/templates/lists/curate.html:24 msgid "You're all set!" msgstr "¡Está todo listo!" -#: bookwyrm/templates/lists/curate.html:43 +#: bookwyrm/templates/lists/curate.html:45 +#: bookwyrm/templates/lists/list.html:83 +#, python-format +msgid "%(username)s says:" +msgstr "%(username)s dice:" + +#: bookwyrm/templates/lists/curate.html:55 msgid "Suggested by" msgstr "Sugerido por" -#: bookwyrm/templates/lists/curate.html:65 +#: bookwyrm/templates/lists/curate.html:77 msgid "Discard" msgstr "Descartar" @@ -2167,18 +2324,18 @@ msgstr "¿Eliminar esta lista?" msgid "Edit List" msgstr "Editar lista" -#: bookwyrm/templates/lists/embed-list.html:7 +#: bookwyrm/templates/lists/embed-list.html:8 #, python-format msgid "%(list_name)s, a list by %(owner)s" msgstr "%(list_name)s, una lista de %(owner)s" -#: bookwyrm/templates/lists/embed-list.html:17 +#: bookwyrm/templates/lists/embed-list.html:18 #, python-format msgid "on %(site_name)s" msgstr "en %(site_name)s" -#: bookwyrm/templates/lists/embed-list.html:26 -#: bookwyrm/templates/lists/list.html:42 +#: bookwyrm/templates/lists/embed-list.html:27 +#: bookwyrm/templates/lists/list.html:44 msgid "This list is currently empty" msgstr "Esta lista está vacia" @@ -2239,75 +2396,89 @@ msgstr "Crear un grupo" msgid "Delete list" msgstr "Eliminar lista" -#: bookwyrm/templates/lists/list.html:34 +#: bookwyrm/templates/lists/item_notes_field.html:7 +#: bookwyrm/templates/settings/federation/edit_instance.html:74 +msgid "Notes:" +msgstr "Notas:" + +#: bookwyrm/templates/lists/item_notes_field.html:19 +msgid "An optional note that will be displayed with the book." +msgstr "Una nota opcional que se mostrará con el libro." + +#: bookwyrm/templates/lists/list.html:36 msgid "You successfully suggested a book for this list!" msgstr "¡Has sugerido un libro para esta lista exitosamente!" -#: bookwyrm/templates/lists/list.html:36 +#: bookwyrm/templates/lists/list.html:38 msgid "You successfully added a book to this list!" msgstr "¡Has agregado un libro a esta lista exitosamente!" -#: bookwyrm/templates/lists/list.html:80 +#: bookwyrm/templates/lists/list.html:96 +msgid "Edit notes" +msgstr "Editar notas" + +#: bookwyrm/templates/lists/list.html:111 +msgid "Add notes" +msgstr "Añadir notas" + +#: bookwyrm/templates/lists/list.html:123 #, python-format msgid "Added by %(username)s" msgstr "Agregado por %(username)s" -#: bookwyrm/templates/lists/list.html:95 +#: bookwyrm/templates/lists/list.html:138 msgid "List position" msgstr "Posición" -#: bookwyrm/templates/lists/list.html:101 +#: bookwyrm/templates/lists/list.html:144 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 msgid "Set" msgstr "Establecido" -#: bookwyrm/templates/lists/list.html:116 -#: bookwyrm/templates/snippets/remove_from_group_button.html:19 +#: bookwyrm/templates/lists/list.html:159 +#: bookwyrm/templates/snippets/remove_from_group_button.html:20 msgid "Remove" msgstr "Quitar" -#: bookwyrm/templates/lists/list.html:130 -#: bookwyrm/templates/lists/list.html:147 +#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:190 msgid "Sort List" msgstr "Ordena la lista" -#: bookwyrm/templates/lists/list.html:140 +#: bookwyrm/templates/lists/list.html:183 msgid "Direction" msgstr "Dirección" -#: bookwyrm/templates/lists/list.html:154 +#: bookwyrm/templates/lists/list.html:197 msgid "Add Books" msgstr "Agregar libros" -#: bookwyrm/templates/lists/list.html:156 +#: bookwyrm/templates/lists/list.html:199 msgid "Suggest Books" msgstr "Sugerir libros" -#: bookwyrm/templates/lists/list.html:167 +#: bookwyrm/templates/lists/list.html:210 msgid "search" msgstr "buscar" -#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:216 msgid "Clear search" msgstr "Borrar búsqueda" -#: bookwyrm/templates/lists/list.html:178 +#: bookwyrm/templates/lists/list.html:221 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "No se encontró ningún libro correspondiente a la búsqueda: \"%(query)s\"" -#: bookwyrm/templates/lists/list.html:210 -msgid "Suggest" -msgstr "Sugerir" - -#: bookwyrm/templates/lists/list.html:221 +#: bookwyrm/templates/lists/list.html:260 msgid "Embed this list on a website" msgstr "Incrustar esta lista en un sitio web" -#: bookwyrm/templates/lists/list.html:229 +#: bookwyrm/templates/lists/list.html:268 msgid "Copy embed code" msgstr "Copiar código para incrustar" -#: bookwyrm/templates/lists/list.html:231 +#: 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, una lista de %(owner)s en %(site_name)s" @@ -2788,6 +2959,11 @@ msgstr "Eliminar estas fechas de lectura" msgid "Add read dates for \"%(title)s\"" msgstr "Añadir fechas de lectura de «%(title)s»" +#: bookwyrm/templates/report.html:5 +#: bookwyrm/templates/snippets/report_button.html:13 +msgid "Report" +msgstr "Reportar" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "Resultados de" @@ -2860,13 +3036,13 @@ msgstr "Falso" #: bookwyrm/templates/settings/announcements/announcement.html:46 #: bookwyrm/templates/settings/announcements/announcement_form.html:44 -#: bookwyrm/templates/settings/dashboard/dashboard.html:71 +#: bookwyrm/templates/settings/dashboard/dashboard.html:82 msgid "Start date:" msgstr "Fecha de inicio:" #: bookwyrm/templates/settings/announcements/announcement.html:51 #: bookwyrm/templates/settings/announcements/announcement_form.html:54 -#: bookwyrm/templates/settings/dashboard/dashboard.html:77 +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "End date:" msgstr "Fecha final:" @@ -2894,7 +3070,7 @@ msgstr "Fecha de evento:" #: bookwyrm/templates/settings/announcements/announcements.html:3 #: bookwyrm/templates/settings/announcements/announcements.html:5 -#: bookwyrm/templates/settings/layout.html:72 +#: bookwyrm/templates/settings/layout.html:76 msgid "Announcements" msgstr "Anuncios" @@ -2934,7 +3110,7 @@ msgid "Dashboard" msgstr "Tablero" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Total users" msgstr "Número de usuarios" @@ -2961,36 +3137,43 @@ msgstr[1] "%(display_count)s informes abiertos" #: bookwyrm/templates/settings/dashboard/dashboard.html:54 #, python-format +msgid "%(display_count)s domain needs review" +msgid_plural "%(display_count)s domains need review" +msgstr[0] "%(display_count)s dominio necesita revisión" +msgstr[1] "%(display_count)s dominios necesitan revisión" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s solicitación de invitado" msgstr[1] "%(display_count)s solicitaciones de invitado" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:76 msgid "Instance Activity" msgstr "Actividad de instancia" -#: bookwyrm/templates/settings/dashboard/dashboard.html:83 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Interval:" msgstr "Intervalo:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:87 +#: bookwyrm/templates/settings/dashboard/dashboard.html:98 msgid "Days" msgstr "Dias" -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Weeks" msgstr "Semanas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "User signup activity" msgstr "Actividad de inscripciones de usuarios" -#: bookwyrm/templates/settings/dashboard/dashboard.html:112 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Status activity" msgstr "Actividad de estado" -#: bookwyrm/templates/settings/dashboard/dashboard.html:118 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "Works created" msgstr "Obras creadas" @@ -3025,10 +3208,6 @@ msgstr "Lista de bloqueo de correos electrónicos" msgid "When someone tries to register with an email from this domain, no account will be created. The registration process will appear to have worked." msgstr "Cuando alguien intenta registrarse con un correo electrónico de este dominio, ningun cuenta se creerá. El proceso de registración se parecerá a funcionado." -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 -msgid "Domain" -msgstr "Dominio" - #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:29 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:27 msgid "Options" @@ -3087,10 +3266,6 @@ msgstr "Software:" msgid "Version:" msgstr "Versión:" -#: bookwyrm/templates/settings/federation/edit_instance.html:74 -msgid "Notes:" -msgstr "Notas:" - #: bookwyrm/templates/settings/federation/instance.html:19 msgid "Details" msgstr "Detalles" @@ -3140,12 +3315,8 @@ msgstr "Editar" msgid "No notes" msgstr "Sin notas" -#: bookwyrm/templates/settings/federation/instance.html:94 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 -msgid "Actions" -msgstr "Acciones" - #: bookwyrm/templates/settings/federation/instance.html:98 +#: bookwyrm/templates/settings/link_domains/link_domains.html:87 #: bookwyrm/templates/snippets/block_button.html:5 msgid "Block" msgstr "Bloquear" @@ -3358,62 +3529,121 @@ msgstr "Moderación" msgid "Reports" msgstr "Informes" -#: bookwyrm/templates/settings/layout.html:68 +#: bookwyrm/templates/settings/layout.html:67 +#: bookwyrm/templates/settings/link_domains/link_domains.html:5 +#: bookwyrm/templates/settings/link_domains/link_domains.html:7 +msgid "Link Domains" +msgstr "Dominios de enlaces" + +#: bookwyrm/templates/settings/layout.html:72 msgid "Instance Settings" msgstr "Configuración de instancia" -#: bookwyrm/templates/settings/layout.html:76 +#: bookwyrm/templates/settings/layout.html:80 #: bookwyrm/templates/settings/site.html:4 #: bookwyrm/templates/settings/site.html:6 msgid "Site Settings" msgstr "Configuración de sitio" -#: bookwyrm/templates/settings/reports/report.html:5 -#: bookwyrm/templates/settings/reports/report.html:8 -#: bookwyrm/templates/settings/reports/report_preview.html:6 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5 #, python-format -msgid "Report #%(report_id)s: %(username)s" -msgstr "Reportar #%(report_id)s: %(username)s" +msgid "Set display name for %(url)s" +msgstr "Establecer nombre con el que mostrar %(url)s" -#: bookwyrm/templates/settings/reports/report.html:9 +#: 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 "Los dominios de enlaces deben ser aprobados antes de que se muestren en las páginas de libros. Por favor, asegúrate de que los dominios no contienen spam, código malicioso o enlaces engañosos antes de aprobarlos." + +#: bookwyrm/templates/settings/link_domains/link_domains.html:45 +msgid "Set display name" +msgstr "Establecer nombre para mostrar" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:53 +msgid "View links" +msgstr "Ver enlaces" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:96 +msgid "No domains currently approved" +msgstr "Ningún dominio aprobado actualmente" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:98 +msgid "No domains currently pending" +msgstr "Ningún dominio pendiente actualmente" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:100 +msgid "No domains currently blocked" +msgstr "No hay dominios bloqueados actualmente" + +#: bookwyrm/templates/settings/link_domains/link_table.html:39 +msgid "No links available for this domain." +msgstr "Ningún enlace disponible para este dominio." + +#: bookwyrm/templates/settings/reports/report.html:11 msgid "Back to reports" msgstr "Volver a los informes" #: 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:40 +msgid "Status has been deleted" +msgstr "El estado ha sido eliminado" + +#: bookwyrm/templates/settings/reports/report.html:52 +msgid "Reported links" +msgstr "Enlaces denunciados" + +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Comentarios de moderador" -#: bookwyrm/templates/settings/reports/report.html:41 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Comentario" -#: bookwyrm/templates/settings/reports/report.html:46 -msgid "Reported statuses" -msgstr "Estados reportados" +#: bookwyrm/templates/settings/reports/report_header.html:6 +#, python-format +msgid "Report #%(report_id)s: Status posted by @%(username)s" +msgstr "Reporte #%(report_id)s: Estado publicado por @%(username)s" -#: bookwyrm/templates/settings/reports/report.html:48 -msgid "No statuses reported" -msgstr "No se reportaron estados" +#: bookwyrm/templates/settings/reports/report_header.html:12 +#, python-format +msgid "Report #%(report_id)s: Link added by @%(username)s" +msgstr "Reporte #%(report_id)s: Enlace añadido por @%(username)s" -#: bookwyrm/templates/settings/reports/report.html:54 -msgid "Status has been deleted" -msgstr "El estado ha sido eliminado" +#: bookwyrm/templates/settings/reports/report_header.html:18 +#, python-format +msgid "Report #%(report_id)s: User @%(username)s" +msgstr "Reporte #%(report_id)s: Usuario @%(username)s" -#: bookwyrm/templates/settings/reports/report_preview.html:13 +#: bookwyrm/templates/settings/reports/report_links_table.html:17 +msgid "Block domain" +msgstr "Bloquear dominio" + +#: bookwyrm/templates/settings/reports/report_preview.html:17 msgid "No notes provided" msgstr "No se proporcionó notas" -#: bookwyrm/templates/settings/reports/report_preview.html:20 +#: bookwyrm/templates/settings/reports/report_preview.html:24 #, python-format -msgid "Reported by %(username)s" -msgstr "Reportado por %(username)s" +msgid "Reported by @%(username)s" +msgstr "Denunciado por @%(username)s" -#: bookwyrm/templates/settings/reports/report_preview.html:30 +#: bookwyrm/templates/settings/reports/report_preview.html:34 msgid "Re-open" msgstr "Reabrir" -#: bookwyrm/templates/settings/reports/report_preview.html:32 +#: bookwyrm/templates/settings/reports/report_preview.html:36 msgid "Resolve" msgstr "Resolver" @@ -3541,7 +3771,7 @@ msgid "Invite request text:" msgstr "Texto de solicitud de invitación:" #: bookwyrm/templates/settings/users/delete_user_form.html:5 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:31 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:32 msgid "Permanently delete user" msgstr "Eliminar usuario permanentemente" @@ -3651,15 +3881,19 @@ msgstr "Ver instancia" msgid "Permanently deleted" msgstr "Eliminado permanentemente" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:20 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 +msgid "User Actions" +msgstr "Acciones de usuario" + +#: bookwyrm/templates/settings/users/user_moderation_actions.html:21 msgid "Suspend user" msgstr "Suspender usuario" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:25 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:26 msgid "Un-suspend user" msgstr "Des-suspender usuario" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:47 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:48 msgid "Access level:" msgstr "Nivel de acceso:" @@ -3724,15 +3958,15 @@ msgstr "Terminado" msgid "This shelf is empty." msgstr "Esta estantería está vacía." -#: bookwyrm/templates/snippets/add_to_group_button.html:15 +#: bookwyrm/templates/snippets/add_to_group_button.html:16 msgid "Invite" msgstr "Invitar" -#: bookwyrm/templates/snippets/add_to_group_button.html:24 +#: bookwyrm/templates/snippets/add_to_group_button.html:25 msgid "Uninvite" msgstr "Anular la invitación" -#: bookwyrm/templates/snippets/add_to_group_button.html:28 +#: bookwyrm/templates/snippets/add_to_group_button.html:29 #, python-format msgid "Remove @%(username)s" msgstr "Eliminar a @%(username)s" @@ -3797,14 +4031,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" @@ -3820,7 +4054,7 @@ msgstr "¡Advertencia, ya vienen spoilers!" msgid "Include spoiler alert" msgstr "Incluir alerta de spoiler" -#: bookwyrm/templates/snippets/create_status/layout.html:48 +#: bookwyrm/templates/snippets/create_status/layout.html:47 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Comentario:" @@ -3829,33 +4063,33 @@ msgstr "Comentario:" msgid "Post" msgstr "Compartir" -#: bookwyrm/templates/snippets/create_status/quotation.html:17 +#: bookwyrm/templates/snippets/create_status/quotation.html:16 msgid "Quote:" msgstr "Cita:" -#: bookwyrm/templates/snippets/create_status/quotation.html:25 +#: bookwyrm/templates/snippets/create_status/quotation.html:24 #, python-format msgid "An excerpt from '%(book_title)s'" msgstr "Un extracto de '%(book_title)s'" -#: bookwyrm/templates/snippets/create_status/quotation.html:32 +#: bookwyrm/templates/snippets/create_status/quotation.html:31 msgid "Position:" msgstr "Posición:" -#: bookwyrm/templates/snippets/create_status/quotation.html:45 +#: bookwyrm/templates/snippets/create_status/quotation.html:44 msgid "On page:" msgstr "En la página:" -#: bookwyrm/templates/snippets/create_status/quotation.html:51 +#: bookwyrm/templates/snippets/create_status/quotation.html:50 msgid "At percent:" msgstr "Al por ciento:" -#: bookwyrm/templates/snippets/create_status/review.html:25 +#: bookwyrm/templates/snippets/create_status/review.html:24 #, python-format msgid "Your review of '%(book_title)s'" msgstr "Tu reseña de '%(book_title)s'" -#: bookwyrm/templates/snippets/create_status/review.html:40 +#: bookwyrm/templates/snippets/create_status/review.html:39 msgid "Review:" msgstr "Reseña:" @@ -3882,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" @@ -3909,7 +4143,7 @@ msgid "Unfollow" msgstr "Dejar de seguir" #: bookwyrm/templates/snippets/follow_request_buttons.html:7 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:8 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:9 msgid "Accept" msgstr "Aceptar" @@ -3949,15 +4183,15 @@ msgstr[1] "valoró %(title)s: %(display_rating #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Reseña de «%(book_title)s» (%(display_rating)s estrella): %(review_title)s" -msgstr[1] "Reseña de «%(book_title)s» (%(display_rating)s estrellas): %(review_title)s" +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] "Reseña de «%(book_title)s» (%(display_rating)s estrella): %(review_title)s" +msgstr[1] "Reseña de «%(book_title)s» (%(display_rating)s estrellas): %(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 "Reseña de «%(book_title)s»: %(review_title)s" +msgid "Review of \"%(book_title)s\": %(review_title)s" +msgstr "Reseña de «%(book_title)s»: %(review_title)s" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4027,11 +4261,11 @@ msgstr "Solo seguidores" msgid "Post privacy" msgstr "Privacidad de publicación" -#: bookwyrm/templates/snippets/rate_action.html:4 +#: bookwyrm/templates/snippets/rate_action.html:5 msgid "Leave a rating" msgstr "Da una valoración" -#: bookwyrm/templates/snippets/rate_action.html:19 +#: bookwyrm/templates/snippets/rate_action.html:20 msgid "Rate" msgstr "Valorar" @@ -4063,21 +4297,31 @@ msgstr "Quiero leer \"%(book_title)s\"" msgid "Sign Up" msgstr "Inscribirse" -#: bookwyrm/templates/snippets/report_button.html:13 -msgid "Report" -msgstr "Reportar" +#: bookwyrm/templates/snippets/report_modal.html:8 +#, python-format +msgid "Report @%(username)s's status" +msgstr "Denunciar el estado de @%(username)s" -#: bookwyrm/templates/snippets/report_modal.html:6 +#: bookwyrm/templates/snippets/report_modal.html:10 +#, python-format +msgid "Report %(domain)s link" +msgstr "Denunciar el enlace a %(domain)s" + +#: bookwyrm/templates/snippets/report_modal.html:12 #, python-format msgid "Report @%(username)s" msgstr "Reportar @%(username)s" -#: bookwyrm/templates/snippets/report_modal.html:23 +#: bookwyrm/templates/snippets/report_modal.html:34 #, python-format msgid "This report will be sent to %(site_name)s's moderators for review." msgstr "Este informe se enviará a los moderadores de %(site_name)s para la revisión." -#: bookwyrm/templates/snippets/report_modal.html:26 +#: bookwyrm/templates/snippets/report_modal.html:36 +msgid "Links from this domain will be removed until your report has been reviewed." +msgstr "Los enlaces a este dominio se eliminarán hasta que tu denuncia haya sido revisada." + +#: bookwyrm/templates/snippets/report_modal.html:41 msgid "More info about this report:" msgstr "Más información sobre este informe:" @@ -4115,29 +4359,29 @@ msgstr "Quitar de %(name)s" msgid "Finish reading" msgstr "Terminar de leer" -#: bookwyrm/templates/snippets/status/content_status.html:75 +#: bookwyrm/templates/snippets/status/content_status.html:73 msgid "Content warning" msgstr "Advertencia de contenido" -#: bookwyrm/templates/snippets/status/content_status.html:82 +#: bookwyrm/templates/snippets/status/content_status.html:80 msgid "Show status" msgstr "Mostrar estado" -#: bookwyrm/templates/snippets/status/content_status.html:104 +#: bookwyrm/templates/snippets/status/content_status.html:102 #, python-format msgid "(Page %(page)s)" msgstr "(Página %(page)s)" -#: bookwyrm/templates/snippets/status/content_status.html:106 +#: bookwyrm/templates/snippets/status/content_status.html:104 #, python-format msgid "(%(percent)s%%)" msgstr "(%(percent)s%%)" -#: bookwyrm/templates/snippets/status/content_status.html:128 +#: bookwyrm/templates/snippets/status/content_status.html:126 msgid "Open image in new window" msgstr "Abrir imagen en una nueva ventana" -#: bookwyrm/templates/snippets/status/content_status.html:147 +#: bookwyrm/templates/snippets/status/content_status.html:145 msgid "Hide status" msgstr "Ocultar estado" @@ -4430,8 +4674,15 @@ msgstr "No se pudo encontrar un usuario con esa dirección de correo electrónic msgid "A password reset link was sent to {email}" msgstr "Un enlace para reestablecer tu contraseña se envió a {email}" -#: bookwyrm/views/rss_feed.py:35 +#: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" msgstr "Actualizaciones de status de {obj.display_name}" +#: bookwyrm/views/updates.py:45 +#, python-format +msgid "Load %(count)d unread status" +msgid_plural "Load %(count)d unread statuses" +msgstr[0] "Cargar %(count)d estado no leído" +msgstr[1] "Cargar %(count)d estados no leídos" + diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index 32c8441e0..4cdcbf8ea 100644 Binary files a/locale/fr_FR/LC_MESSAGES/django.mo and b/locale/fr_FR/LC_MESSAGES/django.mo differ diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index 4f2873d10..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-13 16:54+0000\n" -"PO-Revision-Date: 2022-01-13 17:50\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,64 +17,72 @@ 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:351 +#: 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:365 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Un jour" -#: bookwyrm/forms.py:366 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Une semaine" -#: bookwyrm/forms.py:367 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Un mois" -#: bookwyrm/forms.py:368 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "Sans expiration" -#: bookwyrm/forms.py:372 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} utilisations" -#: bookwyrm/forms.py:373 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Sans limite" -#: bookwyrm/forms.py:469 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Ordre de la liste" -#: bookwyrm/forms.py:470 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Titre du livre" -#: bookwyrm/forms.py:471 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:33 +#: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Note" -#: bookwyrm/forms.py:473 bookwyrm/templates/lists/list.html:134 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Trier par" -#: bookwyrm/forms.py:477 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Ordre croissant" -#: bookwyrm/forms.py:478 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Ordre décroissant" -#: bookwyrm/forms.py:491 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." -msgstr "" +msgstr "La date de fin de lecture ne peut pas être antérieure à la date de début." #: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 msgid "Error loading book" @@ -84,8 +92,9 @@ msgstr "Erreur lors du chargement du livre" msgid "Could not find a match for book" msgstr "Impossible de trouver une correspondance pour le livre" -#: bookwyrm/models/base_model.py:17 +#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 +#: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "En attente" @@ -105,23 +114,23 @@ msgstr "Suppression du modérateur" msgid "Domain block" msgstr "Blocage de domaine" -#: bookwyrm/models/book.py:250 +#: bookwyrm/models/book.py:253 msgid "Audiobook" msgstr "Livre audio" -#: bookwyrm/models/book.py:251 +#: bookwyrm/models/book.py:254 msgid "eBook" msgstr "eBook" -#: bookwyrm/models/book.py:252 +#: bookwyrm/models/book.py:255 msgid "Graphic novel" msgstr "Roman Graphique" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:256 msgid "Hardcover" msgstr "Couverture rigide" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:257 msgid "Paperback" msgstr "Couverture souple" @@ -131,33 +140,34 @@ msgstr "Couverture souple" msgid "Federated" msgstr "Fédéré" -#: bookwyrm/models/federated_server.py:12 +#: bookwyrm/models/federated_server.py:12 bookwyrm/models/link.py:71 #: bookwyrm/templates/settings/federation/edit_instance.html:44 #: bookwyrm/templates/settings/federation/instance.html:10 #: bookwyrm/templates/settings/federation/instance_list.html:23 +#: bookwyrm/templates/settings/link_domains/link_domains.html:27 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 @@ -165,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 @@ -173,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 @@ -189,6 +199,23 @@ msgstr "Abonné(e)s" msgid "Private" msgstr "Privé" +#: bookwyrm/models/link.py:51 +msgid "Free" +msgstr "Gratuit" + +#: bookwyrm/models/link.py:52 +msgid "Purchasable" +msgstr "Disponible à l’achat" + +#: bookwyrm/models/link.py:53 +msgid "Available for loan" +msgstr "Disponible à l’emprunt" + +#: bookwyrm/models/link.py:70 +#: bookwyrm/templates/settings/link_domains/link_domains.html:23 +msgid "Approved" +msgstr "Approuvé" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Critiques" @@ -205,69 +232,73 @@ msgstr "Citations" msgid "Everything else" msgstr "Tout le reste" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home Timeline" msgstr "Mon fil d’actualité" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home" msgstr "Accueil" -#: bookwyrm/settings.py:122 +#: bookwyrm/settings.py:174 msgid "Books Timeline" msgstr "Actualité de mes livres" -#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Livres" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:248 msgid "English" msgstr "English" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:249 msgid "Deutsch (German)" msgstr "Deutsch" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:250 msgid "Español (Spanish)" msgstr "Español" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:251 msgid "Galego (Galician)" msgstr "Galego (Galicien)" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:252 msgid "Italiano (Italian)" msgstr "Italiano (italien)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:253 msgid "Français (French)" msgstr "Français" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:254 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituanien)" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:255 msgid "Norsk (Norwegian)" msgstr "Norsk (norvégien)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:256 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portugais brésilien)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:257 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugais européen)" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:258 +msgid "Svenska (Swedish)" +msgstr "Svenska (Suédois)" + +#: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" msgstr "简化字" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:260 msgid "繁體中文 (Traditional Chinese)" msgstr "Infos supplémentaires :" @@ -296,61 +327,57 @@ msgstr "Une erreur s’est produite ; désolé !" msgid "About" msgstr "À propos" -#: bookwyrm/templates/about/about.html:18 +#: bookwyrm/templates/about/about.html:19 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "Bienvenue sur %(site_name)s !" -#: bookwyrm/templates/about/about.html:22 +#: 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 "%(site_name)s fait partie de BookWyrm, un réseau de communautés indépendantes et autogérées, à destination des lecteurs. Bien que vous puissiez interagir apparemment avec les comptes n'importe où dans le réseau BookWyrm, cette communauté est unique." -#: bookwyrm/templates/about/about.html:39 +#: bookwyrm/templates/about/about.html:40 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "%(title)s est le livre le plus aimé de %(site_name)s, avec une note moyenne de %(rating)s sur 5." -#: bookwyrm/templates/about/about.html:58 +#: bookwyrm/templates/about/about.html:59 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "Sur %(site_name)s, c’est %(title)s que tout le monde veut lire plus que n’importe quel autre livre." -#: bookwyrm/templates/about/about.html:77 +#: bookwyrm/templates/about/about.html:78 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "%(title)s divise les critiques plus que n’importe quel autre livre sur %(site_name)s." -#: bookwyrm/templates/about/about.html:88 +#: 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 "Gardez trace de vos lectures, parlez de livres, écrivez des commentaires et découvrez quoi lire ensuite. BookWyrm est un logiciel à échelle humaine, sans publicité, anti-capitaliste et axé sur la communauté, conçu pour rester petit et personnel. Si vous avez des demandes de fonctionnalités, des rapports de bogue ou des rêves grandioses, rejoignez-nous et faites-vous entendre." -#: bookwyrm/templates/about/about.html:95 +#: bookwyrm/templates/about/about.html:96 msgid "Meet your admins" msgstr "Rencontrez vos admins" -#: bookwyrm/templates/about/about.html:98 +#: bookwyrm/templates/about/about.html:99 #, python-format -msgid "\n" -" %(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.\n" -" " -msgstr "\n" -" Les admins et modérateurs/modératrices de %(site_name)s maintiennent le site opérationnel, font respecter le code de conduite, et répondent lorsque les utilisateurs signalent spam et mauvais comportements.\n" -" " +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 "L’administration et la modération de %(site_name)s maintiennent le site opérationnel, font respecter le code de conduite, et répondent lorsque les utilisateurs signalent le spam et les mauvais comportements." -#: bookwyrm/templates/about/about.html:112 +#: bookwyrm/templates/about/about.html:113 msgid "Moderator" msgstr "Modérateur/modératrice" -#: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 msgid "Admin" msgstr "Admin" -#: bookwyrm/templates/about/about.html:130 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:13 +#: 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" @@ -409,7 +436,7 @@ msgid "Copy address" msgstr "Copier l’adresse" #: bookwyrm/templates/annual_summary/layout.html:68 -#: bookwyrm/templates/lists/list.html:230 +#: bookwyrm/templates/lists/list.html:269 msgid "Copied!" msgstr "Copié !" @@ -478,7 +505,7 @@ msgstr "Sa lecture la plus courte l’année…" #: bookwyrm/templates/annual_summary/layout.html:245 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 -#: bookwyrm/templates/landing/large-book.html:25 +#: bookwyrm/templates/landing/large-book.html:26 #: bookwyrm/templates/landing/small-book.html:18 msgid "by" msgstr "de" @@ -530,61 +557,61 @@ msgstr "Tous les livres que %(display_name)s a lus en %(year)s" msgid "Edit Author" msgstr "Modifier l’auteur ou autrice" -#: bookwyrm/templates/author/author.html:40 +#: bookwyrm/templates/author/author.html:35 msgid "Author details" msgstr "Informations sur l’auteur ou l’autrice" -#: bookwyrm/templates/author/author.html:44 +#: bookwyrm/templates/author/author.html:39 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "Pseudonymes :" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:48 msgid "Born:" msgstr "Naissance :" -#: bookwyrm/templates/author/author.html:60 +#: bookwyrm/templates/author/author.html:55 msgid "Died:" msgstr "Décès :" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:65 msgid "External links" msgstr "Liens externes" -#: bookwyrm/templates/author/author.html:75 +#: bookwyrm/templates/author/author.html:70 msgid "Wikipedia" msgstr "Wikipedia" -#: bookwyrm/templates/author/author.html:83 +#: bookwyrm/templates/author/author.html:78 msgid "View ISNI record" msgstr "Voir l’enregistrement ISNI" -#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/author.html:83 #: bookwyrm/templates/author/sync_modal.html:5 #: bookwyrm/templates/book/book.html:122 #: bookwyrm/templates/book/sync_modal.html:5 msgid "Load data" msgstr "Charger les données" -#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/author/author.html:87 #: bookwyrm/templates/book/book.html:126 msgid "View on OpenLibrary" msgstr "Voir sur OpenLibrary" -#: bookwyrm/templates/author/author.html:107 +#: bookwyrm/templates/author/author.html:102 #: bookwyrm/templates/book/book.html:140 msgid "View on Inventaire" msgstr "Voir sur Inventaire" -#: bookwyrm/templates/author/author.html:123 +#: bookwyrm/templates/author/author.html:118 msgid "View on LibraryThing" msgstr "Voir sur LibraryThing" -#: bookwyrm/templates/author/author.html:131 +#: bookwyrm/templates/author/author.html:126 msgid "View on Goodreads" msgstr "Voir sur Goodreads" -#: bookwyrm/templates/author/author.html:145 +#: bookwyrm/templates/author/author.html:141 #, python-format msgid "Books by %(name)s" msgstr "Livres de %(name)s" @@ -614,7 +641,9 @@ msgid "Metadata" msgstr "Métadonnées" #: bookwyrm/templates/author/edit_author.html:35 -#: bookwyrm/templates/lists/form.html:9 bookwyrm/templates/shelf/form.html:9 +#: bookwyrm/templates/lists/form.html:9 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:14 +#: bookwyrm/templates/shelf/form.html:9 msgid "Name:" msgstr "Nom :" @@ -668,8 +697,11 @@ msgstr "ISNI :" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 +#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: 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 @@ -677,7 +709,7 @@ msgstr "ISNI :" #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 #: bookwyrm/templates/settings/site.html:133 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:68 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 msgid "Save" @@ -689,13 +721,17 @@ msgstr "Enregistrer" #: 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/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/settings/federation/instance.html:88 -#: bookwyrm/templates/snippets/report_modal.html:38 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 +#: bookwyrm/templates/snippets/report_modal.html:54 msgid "Cancel" msgstr "Annuler" @@ -707,9 +743,9 @@ msgstr "Le chargement des données se connectera à %(source_name)s\"%(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" +#: bookwyrm/templates/book/file_links/add_link_modal.html:6 +msgid "Add file link" +msgstr "Ajouter un lien vers un fichier" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:19 +msgid "Links from unknown domains will need to be approved by a moderator before they are added." +msgstr "Les liens vers des domaines inconnus devront être modérés avant d'être ajoutés." + +#: bookwyrm/templates/book/file_links/add_link_modal.html:24 +msgid "URL:" +msgstr "URL :" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:29 +msgid "File type:" +msgstr "Type de fichier :" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:48 +msgid "Availability:" +msgstr "Disponibilité :" + +#: 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 "Modifier les liens" + +#: bookwyrm/templates/book/file_links/edit_links.html:11 +#, python-format +msgid "\n" +" Links for \"%(title)s\"\n" +" " +msgstr "\n" +" Liens pour \"%(title)s\"\n" +" " + +#: bookwyrm/templates/book/file_links/edit_links.html:32 +#: bookwyrm/templates/settings/link_domains/link_table.html:6 +msgid "URL" +msgstr "URL" + +#: bookwyrm/templates/book/file_links/edit_links.html:33 +#: bookwyrm/templates/settings/link_domains/link_table.html:7 +msgid "Added by" +msgstr "Ajouté par" + +#: bookwyrm/templates/book/file_links/edit_links.html:34 +#: bookwyrm/templates/settings/link_domains/link_table.html:8 +msgid "Filetype" +msgstr "Type de fichier" + +#: bookwyrm/templates/book/file_links/edit_links.html:35 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 +#: bookwyrm/templates/settings/reports/report_links_table.html:5 +msgid "Domain" +msgstr "Domaine" + +#: bookwyrm/templates/book/file_links/edit_links.html:36 +#: bookwyrm/templates/import/import_status.html:127 +#: bookwyrm/templates/settings/announcements/announcements.html:38 +#: bookwyrm/templates/settings/federation/instance_list.html:46 +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 +#: bookwyrm/templates/settings/invites/status_filter.html:5 +#: bookwyrm/templates/settings/users/user_admin.html:34 +#: bookwyrm/templates/settings/users/user_info.html:20 +msgid "Status" +msgstr "Statut" + +#: bookwyrm/templates/book/file_links/edit_links.html:37 +#: bookwyrm/templates/settings/federation/instance.html:94 +#: bookwyrm/templates/settings/reports/report_links_table.html:6 +msgid "Actions" +msgstr "Actions" + +#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 +msgid "Report spam" +msgstr "Signaler un spam" + +#: bookwyrm/templates/book/file_links/edit_links.html:97 +msgid "No links available for this book." +msgstr "Aucun lien disponible pour ce livre." + +#: bookwyrm/templates/book/file_links/edit_links.html:108 +#: bookwyrm/templates/book/file_links/links.html:18 +msgid "Add link to file" +msgstr "Ajouter un lien vers un fichier" + +#: bookwyrm/templates/book/file_links/file_link_page.html:6 +msgid "File Links" +msgstr "Liens vers un fichier" + +#: bookwyrm/templates/book/file_links/links.html:9 +msgid "Get a copy" +msgstr "Obtenir une copie" + +#: bookwyrm/templates/book/file_links/links.html:47 +msgid "No links available" +msgstr "Aucun lien disponible" + +#: bookwyrm/templates/book/file_links/verification_modal.html:5 +msgid "Leaving BookWyrm" +msgstr "Vous quittez BookWyrm" + +#: bookwyrm/templates/book/file_links/verification_modal.html:11 +#, python-format +msgid "This link is taking you to: %(link_url)s.
    Is that where you'd like to go?" +msgstr "Ce lien vous amène à %(link_url)s.
    Est-ce là que vous souhaitez aller ?" + +#: bookwyrm/templates/book/file_links/verification_modal.html:20 +msgid "Continue" +msgstr "Continuer" + #: bookwyrm/templates/book/publisher_info.html:23 #, python-format msgid "%(format)s, %(pages)s pages" @@ -1110,8 +1259,8 @@ msgstr "Code de confirmation :" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:93 -#: bookwyrm/templates/snippets/report_modal.html:37 +#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Valider" @@ -1417,16 +1566,11 @@ msgstr "Tous les messages" msgid "You have no messages right now." msgstr "Vous n’avez aucun message pour l’instant." -#: bookwyrm/templates/feed/feed.html:28 -#, python-format -msgid "load 0 unread status(es)" -msgstr "charger 0 statut(s) non lus" - -#: 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 "Aucune activité pour l’instant ! Abonnez‑vous à quelqu’un pour commencer" -#: bookwyrm/templates/feed/feed.html:52 +#: bookwyrm/templates/feed/feed.html:55 msgid "Alternatively, you can try enabling more status types" msgstr "Sinon, vous pouvez essayer d’activer plus de types de statuts" @@ -1515,7 +1659,7 @@ msgid "What are you reading?" msgstr "Que lisez‑vous ?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162 +#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:205 msgid "Search for a book" msgstr "Chercher un livre" @@ -1533,9 +1677,9 @@ msgstr "Vous pourrez ajouter des livres lorsque vous commencerez à utiliser %(s #: bookwyrm/templates/get_started/books.html:17 #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166 +#: 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/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -1551,7 +1695,7 @@ msgid "Popular on %(site_name)s" msgstr "Populaire sur %(site_name)s" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:179 +#: bookwyrm/templates/lists/list.html:222 msgid "No books found" msgstr "Aucun livre trouvé" @@ -1656,7 +1800,7 @@ msgstr "Cette action ne peut pas être annulée" #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 #: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:14 msgid "Delete" msgstr "Supprimer" @@ -1676,17 +1820,17 @@ msgstr "Description du groupe :" msgid "Delete group" msgstr "Supprimer le groupe" -#: bookwyrm/templates/groups/group.html:22 +#: bookwyrm/templates/groups/group.html:21 msgid "Members of this group can create group-curated lists." msgstr "Les membres de ce groupe peuvent créer des listes gérées par le groupe." -#: bookwyrm/templates/groups/group.html:27 +#: bookwyrm/templates/groups/group.html:26 #: bookwyrm/templates/lists/create_form.html:5 #: bookwyrm/templates/lists/lists.html:20 msgid "Create List" msgstr "Créer une liste" -#: bookwyrm/templates/groups/group.html:40 +#: bookwyrm/templates/groups/group.html:39 msgid "This group has no lists" msgstr "Ce groupe n'a pas de liste" @@ -1694,15 +1838,15 @@ msgstr "Ce groupe n'a pas de liste" msgid "Edit group" msgstr "Modifier le groupe" -#: bookwyrm/templates/groups/members.html:12 +#: bookwyrm/templates/groups/members.html:11 msgid "Search to add a user" msgstr "Chercher et ajouter un·e utilisateur·rice" -#: bookwyrm/templates/groups/members.html:33 +#: bookwyrm/templates/groups/members.html:32 msgid "Leave group" msgstr "Quitter le groupe" -#: bookwyrm/templates/groups/members.html:55 +#: bookwyrm/templates/groups/members.html:54 #: bookwyrm/templates/groups/suggested_users.html:35 #: bookwyrm/templates/snippets/suggested_users.html:31 #: bookwyrm/templates/user/user_preview.html:36 @@ -1858,19 +2002,10 @@ msgid "Review" msgstr "Critique" #: bookwyrm/templates/import/import_status.html:124 +#: bookwyrm/templates/settings/link_domains/link_table.html:9 msgid "Book" msgstr "Livre" -#: bookwyrm/templates/import/import_status.html:127 -#: bookwyrm/templates/settings/announcements/announcements.html:38 -#: bookwyrm/templates/settings/federation/instance_list.html:46 -#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 -#: bookwyrm/templates/settings/invites/status_filter.html:5 -#: bookwyrm/templates/settings/users/user_admin.html:34 -#: bookwyrm/templates/settings/users/user_info.html:20 -msgid "Status" -msgstr "Statut" - #: bookwyrm/templates/import/import_status.html:135 msgid "Import preview unavailable." msgstr "Aperçu de l'importation indisponible." @@ -1909,7 +2044,8 @@ msgid "Approving a suggestion will permanently add the suggested book to your sh msgstr "Approuver une suggestion ajoutera définitivement le livre suggéré à vos étagères et associera vos dates, critiques et notes de lecture à ce livre." #: 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 "Approuver" @@ -1918,8 +2054,8 @@ msgid "Reject" msgstr "Rejeter" #: bookwyrm/templates/import/tooltip.html:6 -msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." -msgstr "Vous pouvez télécharger vos données GoodReads depuis la page Import/Export de votre compte GoodReads." +msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." +msgstr "Vous pouvez télécharger vos données Goodreads depuis la page Import/Export de votre compte Goodreads." #: bookwyrm/templates/import/troubleshoot.html:7 msgid "Failed items" @@ -2119,6 +2255,21 @@ msgstr "Soutenez %(site_name)s avec GitHub." msgstr "BookWyrm est un logiciel libre. Vous pouvez contribuer ou faire des rapports de bogues via GitHub." +#: bookwyrm/templates/lists/add_item_modal.html:8 +#, python-format +msgid "Add \"%(title)s\" to this list" +msgstr "Ajouter « %(title)s » à cette liste" + +#: bookwyrm/templates/lists/add_item_modal.html:12 +#, python-format +msgid "Suggest \"%(title)s\" for this list" +msgstr "Suggérer « %(title)s » pour cette liste" + +#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/list.html:249 +msgid "Suggest" +msgstr "Suggérer" + #: bookwyrm/templates/lists/bookmark_button.html:30 msgid "Un-save" msgstr "Annuler la sauvegarde" @@ -2138,23 +2289,29 @@ msgstr "Créée et modérée par %(username)s" msgid "Created by %(username)s" msgstr "Créée par %(username)s" -#: bookwyrm/templates/lists/curate.html:11 +#: bookwyrm/templates/lists/curate.html:12 msgid "Curate" msgstr "Organiser" -#: bookwyrm/templates/lists/curate.html:20 +#: bookwyrm/templates/lists/curate.html:21 msgid "Pending Books" msgstr "Livres en attente de modération" -#: bookwyrm/templates/lists/curate.html:23 +#: bookwyrm/templates/lists/curate.html:24 msgid "You're all set!" msgstr "Aucun livre en attente de validation !" -#: bookwyrm/templates/lists/curate.html:43 +#: bookwyrm/templates/lists/curate.html:45 +#: bookwyrm/templates/lists/list.html:83 +#, python-format +msgid "%(username)s says:" +msgstr "%(username)s a dit :" + +#: bookwyrm/templates/lists/curate.html:55 msgid "Suggested by" msgstr "Suggéré par" -#: bookwyrm/templates/lists/curate.html:65 +#: bookwyrm/templates/lists/curate.html:77 msgid "Discard" msgstr "Rejeter" @@ -2167,18 +2324,18 @@ msgstr "Supprimer cette liste ?" msgid "Edit List" msgstr "Modifier la liste" -#: bookwyrm/templates/lists/embed-list.html:7 +#: bookwyrm/templates/lists/embed-list.html:8 #, python-format msgid "%(list_name)s, a list by %(owner)s" msgstr "%(list_name)s, une liste de %(owner)s" -#: bookwyrm/templates/lists/embed-list.html:17 +#: bookwyrm/templates/lists/embed-list.html:18 #, python-format msgid "on %(site_name)s" msgstr "sur %(site_name)s" -#: bookwyrm/templates/lists/embed-list.html:26 -#: bookwyrm/templates/lists/list.html:42 +#: bookwyrm/templates/lists/embed-list.html:27 +#: bookwyrm/templates/lists/list.html:44 msgid "This list is currently empty" msgstr "Cette liste est actuellement vide" @@ -2239,75 +2396,89 @@ msgstr "Créer un Groupe" msgid "Delete list" msgstr "Supprimer la liste" -#: bookwyrm/templates/lists/list.html:34 +#: bookwyrm/templates/lists/item_notes_field.html:7 +#: bookwyrm/templates/settings/federation/edit_instance.html:74 +msgid "Notes:" +msgstr "Remarques :" + +#: bookwyrm/templates/lists/item_notes_field.html:19 +msgid "An optional note that will be displayed with the book." +msgstr "Une note facultative qui sera affichée avec le livre." + +#: bookwyrm/templates/lists/list.html:36 msgid "You successfully suggested a book for this list!" msgstr "Vous avez suggéré un livre à cette liste !" -#: bookwyrm/templates/lists/list.html:36 +#: bookwyrm/templates/lists/list.html:38 msgid "You successfully added a book to this list!" msgstr "Vous avez ajouté un livre à cette liste !" -#: bookwyrm/templates/lists/list.html:80 +#: bookwyrm/templates/lists/list.html:96 +msgid "Edit notes" +msgstr "Modifier les notes" + +#: bookwyrm/templates/lists/list.html:111 +msgid "Add notes" +msgstr "Ajouter des notes" + +#: bookwyrm/templates/lists/list.html:123 #, python-format msgid "Added by %(username)s" msgstr "Ajouté par %(username)s" -#: bookwyrm/templates/lists/list.html:95 +#: bookwyrm/templates/lists/list.html:138 msgid "List position" msgstr "Position" -#: bookwyrm/templates/lists/list.html:101 +#: bookwyrm/templates/lists/list.html:144 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 msgid "Set" msgstr "Appliquer" -#: bookwyrm/templates/lists/list.html:116 -#: bookwyrm/templates/snippets/remove_from_group_button.html:19 +#: bookwyrm/templates/lists/list.html:159 +#: bookwyrm/templates/snippets/remove_from_group_button.html:20 msgid "Remove" msgstr "Retirer" -#: bookwyrm/templates/lists/list.html:130 -#: bookwyrm/templates/lists/list.html:147 +#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:190 msgid "Sort List" msgstr "Trier la liste" -#: bookwyrm/templates/lists/list.html:140 +#: bookwyrm/templates/lists/list.html:183 msgid "Direction" msgstr "Direction" -#: bookwyrm/templates/lists/list.html:154 +#: bookwyrm/templates/lists/list.html:197 msgid "Add Books" msgstr "Ajouter des livres" -#: bookwyrm/templates/lists/list.html:156 +#: bookwyrm/templates/lists/list.html:199 msgid "Suggest Books" msgstr "Suggérer des livres" -#: bookwyrm/templates/lists/list.html:167 +#: bookwyrm/templates/lists/list.html:210 msgid "search" msgstr "chercher" -#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:216 msgid "Clear search" msgstr "Vider la requête" -#: bookwyrm/templates/lists/list.html:178 +#: bookwyrm/templates/lists/list.html:221 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "Aucun livre trouvé pour la requête « %(query)s »" -#: bookwyrm/templates/lists/list.html:210 -msgid "Suggest" -msgstr "Suggérer" - -#: bookwyrm/templates/lists/list.html:221 +#: bookwyrm/templates/lists/list.html:260 msgid "Embed this list on a website" msgstr "Intégrez cette liste sur un autre site internet" -#: bookwyrm/templates/lists/list.html:229 +#: bookwyrm/templates/lists/list.html:268 msgid "Copy embed code" msgstr "Copier le code d'intégration" -#: bookwyrm/templates/lists/list.html:231 +#: 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, une liste de %(owner)s sur %(site_name)s" @@ -2735,7 +2906,7 @@ msgstr "Vous avez supprimé ce résumé et ses %(count)s progressions associées #: bookwyrm/templates/readthrough/readthrough_modal.html:8 #, python-format msgid "Update read dates for \"%(title)s\"" -msgstr "" +msgstr "Mettre à jour les dates de lecture pour « %(title)s »" #: bookwyrm/templates/readthrough/readthrough_form.html:10 #: bookwyrm/templates/readthrough/readthrough_modal.html:31 @@ -2786,7 +2957,12 @@ msgstr "Supprimer ces dates de lecture" #: bookwyrm/templates/readthrough/readthrough_modal.html:12 #, python-format msgid "Add read dates for \"%(title)s\"" -msgstr "" +msgstr "Ajouter des dates de lecture pour « %(title)s »" + +#: bookwyrm/templates/report.html:5 +#: bookwyrm/templates/snippets/report_button.html:13 +msgid "Report" +msgstr "Signaler" #: bookwyrm/templates/search/book.html:44 msgid "Results from" @@ -2860,13 +3036,13 @@ msgstr "Faux" #: bookwyrm/templates/settings/announcements/announcement.html:46 #: bookwyrm/templates/settings/announcements/announcement_form.html:44 -#: bookwyrm/templates/settings/dashboard/dashboard.html:71 +#: bookwyrm/templates/settings/dashboard/dashboard.html:82 msgid "Start date:" msgstr "Date de début :" #: bookwyrm/templates/settings/announcements/announcement.html:51 #: bookwyrm/templates/settings/announcements/announcement_form.html:54 -#: bookwyrm/templates/settings/dashboard/dashboard.html:77 +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "End date:" msgstr "Date de fin :" @@ -2894,7 +3070,7 @@ msgstr "Date de l'événement :" #: bookwyrm/templates/settings/announcements/announcements.html:3 #: bookwyrm/templates/settings/announcements/announcements.html:5 -#: bookwyrm/templates/settings/layout.html:72 +#: bookwyrm/templates/settings/layout.html:76 msgid "Announcements" msgstr "Annonces" @@ -2934,7 +3110,7 @@ msgid "Dashboard" msgstr "Tableau de bord" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Total users" msgstr "Nombre total d'utilisateurs·rices" @@ -2961,36 +3137,43 @@ msgstr[1] "%(display_count)s signalements ouverts" #: bookwyrm/templates/settings/dashboard/dashboard.html:54 #, python-format +msgid "%(display_count)s domain needs review" +msgid_plural "%(display_count)s domains need review" +msgstr[0] "%(display_count)s domaine doit être vérifié" +msgstr[1] "%(display_count)s domaines doivent être vérifiés" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s demande d'invitation" msgstr[1] "%(display_count)s demandes d'invitation" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:76 msgid "Instance Activity" msgstr "Activité de l'instance" -#: bookwyrm/templates/settings/dashboard/dashboard.html:83 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Interval:" msgstr "Intervalle :" -#: bookwyrm/templates/settings/dashboard/dashboard.html:87 +#: bookwyrm/templates/settings/dashboard/dashboard.html:98 msgid "Days" msgstr "Jours" -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Weeks" msgstr "Semaines" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "User signup activity" msgstr "Nouvelles inscriptions" -#: bookwyrm/templates/settings/dashboard/dashboard.html:112 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Status activity" msgstr "Nouveaux statuts" -#: bookwyrm/templates/settings/dashboard/dashboard.html:118 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "Works created" msgstr "Œuvres créées" @@ -3025,10 +3208,6 @@ msgstr "Liste des e-mails bloqués" msgid "When someone tries to register with an email from this domain, no account will be created. The registration process will appear to have worked." msgstr "Quand quelqu'un essaiera de s'inscrire avec un e-mail de ce domaine, aucun compte ne sera créé. Le processus d'inscription semblera avoir fonctionné." -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 -msgid "Domain" -msgstr "Domaine" - #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:29 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:27 msgid "Options" @@ -3087,10 +3266,6 @@ msgstr "Logiciel :" msgid "Version:" msgstr "Description :" -#: bookwyrm/templates/settings/federation/edit_instance.html:74 -msgid "Notes:" -msgstr "Remarques :" - #: bookwyrm/templates/settings/federation/instance.html:19 msgid "Details" msgstr "Détails" @@ -3140,12 +3315,8 @@ msgstr "Modifier" msgid "No notes" msgstr "Aucune note" -#: bookwyrm/templates/settings/federation/instance.html:94 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 -msgid "Actions" -msgstr "Actions" - #: bookwyrm/templates/settings/federation/instance.html:98 +#: bookwyrm/templates/settings/link_domains/link_domains.html:87 #: bookwyrm/templates/snippets/block_button.html:5 msgid "Block" msgstr "Bloquer" @@ -3358,62 +3529,121 @@ msgstr "Modération" msgid "Reports" msgstr "Signalements" -#: bookwyrm/templates/settings/layout.html:68 +#: bookwyrm/templates/settings/layout.html:67 +#: bookwyrm/templates/settings/link_domains/link_domains.html:5 +#: bookwyrm/templates/settings/link_domains/link_domains.html:7 +msgid "Link Domains" +msgstr "Domaines liés" + +#: bookwyrm/templates/settings/layout.html:72 msgid "Instance Settings" msgstr "Paramètres de l’instance" -#: bookwyrm/templates/settings/layout.html:76 +#: bookwyrm/templates/settings/layout.html:80 #: bookwyrm/templates/settings/site.html:4 #: bookwyrm/templates/settings/site.html:6 msgid "Site Settings" msgstr "Paramètres du site" -#: bookwyrm/templates/settings/reports/report.html:5 -#: bookwyrm/templates/settings/reports/report.html:8 -#: bookwyrm/templates/settings/reports/report_preview.html:6 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5 #, python-format -msgid "Report #%(report_id)s: %(username)s" -msgstr "Signalement #%(report_id)s : %(username)s" +msgid "Set display name for %(url)s" +msgstr "Définir le nom affiché pour %(url)s" -#: bookwyrm/templates/settings/reports/report.html:9 +#: 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 "Les domaines liés doivent être approuvés avant d’être montrés sur les pages des livres. Assurez-vous que ces domaines n’hébergent pas du spam, du code malicieux ou des liens falsifiés avant de les approuver." + +#: bookwyrm/templates/settings/link_domains/link_domains.html:45 +msgid "Set display name" +msgstr "Définir le nom à afficher" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:53 +msgid "View links" +msgstr "Voir les liens" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:96 +msgid "No domains currently approved" +msgstr "Aucun domaine actuellement approuvé" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:98 +msgid "No domains currently pending" +msgstr "Aucun domaine en attente" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:100 +msgid "No domains currently blocked" +msgstr "Aucun domaine actuellement bloqué" + +#: bookwyrm/templates/settings/link_domains/link_table.html:39 +msgid "No links available for this domain." +msgstr "Aucun lien n’est disponible pour ce domaine." + +#: bookwyrm/templates/settings/reports/report.html:11 msgid "Back to reports" msgstr "Retour aux signalements" #: bookwyrm/templates/settings/reports/report.html:23 +msgid "Message reporter" +msgstr "Rapporteur du message" + +#: bookwyrm/templates/settings/reports/report.html:27 +msgid "Update on your report:" +msgstr "Mise à jour de votre rapport :" + +#: bookwyrm/templates/settings/reports/report.html:35 +msgid "Reported statuses" +msgstr "Statuts signalés" + +#: bookwyrm/templates/settings/reports/report.html:40 +msgid "Status has been deleted" +msgstr "Le statut a été supprimé" + +#: bookwyrm/templates/settings/reports/report.html:52 +msgid "Reported links" +msgstr "Liens signalés" + +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Commentaires de l’équipe de modération" -#: bookwyrm/templates/settings/reports/report.html:41 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Commentaire" -#: bookwyrm/templates/settings/reports/report.html:46 -msgid "Reported statuses" -msgstr "Statuts signalés" +#: bookwyrm/templates/settings/reports/report_header.html:6 +#, python-format +msgid "Report #%(report_id)s: Status posted by @%(username)s" +msgstr "Signalement #%(report_id)s : statut posté par @%(username)s" -#: bookwyrm/templates/settings/reports/report.html:48 -msgid "No statuses reported" -msgstr "Aucun statut signalé" +#: bookwyrm/templates/settings/reports/report_header.html:12 +#, python-format +msgid "Report #%(report_id)s: Link added by @%(username)s" +msgstr "Signalement #%(report_id)s : lien ajouté par @%(username)s" -#: bookwyrm/templates/settings/reports/report.html:54 -msgid "Status has been deleted" -msgstr "Le statut a été supprimé" +#: bookwyrm/templates/settings/reports/report_header.html:18 +#, python-format +msgid "Report #%(report_id)s: User @%(username)s" +msgstr "Signalement #%(report_id)s : compte @%(username)s" -#: bookwyrm/templates/settings/reports/report_preview.html:13 +#: bookwyrm/templates/settings/reports/report_links_table.html:17 +msgid "Block domain" +msgstr "Bloquer le domaine" + +#: bookwyrm/templates/settings/reports/report_preview.html:17 msgid "No notes provided" msgstr "Aucune note fournie" -#: bookwyrm/templates/settings/reports/report_preview.html:20 +#: bookwyrm/templates/settings/reports/report_preview.html:24 #, python-format -msgid "Reported by %(username)s" -msgstr "Signalé par %(username)s" +msgid "Reported by @%(username)s" +msgstr "Signalé par @%(username)s" -#: bookwyrm/templates/settings/reports/report_preview.html:30 +#: bookwyrm/templates/settings/reports/report_preview.html:34 msgid "Re-open" msgstr "Réouvrir" -#: bookwyrm/templates/settings/reports/report_preview.html:32 +#: bookwyrm/templates/settings/reports/report_preview.html:36 msgid "Resolve" msgstr "Résoudre" @@ -3541,7 +3771,7 @@ msgid "Invite request text:" msgstr "Texte de la demande d'invitation :" #: bookwyrm/templates/settings/users/delete_user_form.html:5 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:31 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:32 msgid "Permanently delete user" msgstr "Supprimer définitivement l'utilisateur" @@ -3651,15 +3881,19 @@ msgstr "Voir l’instance" msgid "Permanently deleted" msgstr "Supprimé définitivement" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:20 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 +msgid "User Actions" +msgstr "Actions de l'utilisateur" + +#: bookwyrm/templates/settings/users/user_moderation_actions.html:21 msgid "Suspend user" msgstr "Suspendre le compte" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:25 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:26 msgid "Un-suspend user" msgstr "Rétablir le compte" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:47 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:48 msgid "Access level:" msgstr "Niveau d’accès :" @@ -3724,15 +3958,15 @@ msgstr "Terminé" msgid "This shelf is empty." msgstr "Cette étagère est vide" -#: bookwyrm/templates/snippets/add_to_group_button.html:15 +#: bookwyrm/templates/snippets/add_to_group_button.html:16 msgid "Invite" msgstr "Inviter" -#: bookwyrm/templates/snippets/add_to_group_button.html:24 +#: bookwyrm/templates/snippets/add_to_group_button.html:25 msgid "Uninvite" msgstr "Annuler l'invitation" -#: bookwyrm/templates/snippets/add_to_group_button.html:28 +#: bookwyrm/templates/snippets/add_to_group_button.html:29 #, python-format msgid "Remove @%(username)s" msgstr "Retirer @%(username)s" @@ -3797,14 +4031,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" @@ -3820,7 +4054,7 @@ msgstr "Attention spoilers !" msgid "Include spoiler alert" msgstr "Afficher une alerte spoiler" -#: bookwyrm/templates/snippets/create_status/layout.html:48 +#: bookwyrm/templates/snippets/create_status/layout.html:47 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Commentaire :" @@ -3829,33 +4063,33 @@ msgstr "Commentaire :" msgid "Post" msgstr "Publier" -#: bookwyrm/templates/snippets/create_status/quotation.html:17 +#: bookwyrm/templates/snippets/create_status/quotation.html:16 msgid "Quote:" msgstr "Citation :" -#: bookwyrm/templates/snippets/create_status/quotation.html:25 +#: bookwyrm/templates/snippets/create_status/quotation.html:24 #, python-format msgid "An excerpt from '%(book_title)s'" msgstr "Un extrait de '%(book_title)s'" -#: bookwyrm/templates/snippets/create_status/quotation.html:32 +#: bookwyrm/templates/snippets/create_status/quotation.html:31 msgid "Position:" msgstr "Emplacement :" -#: bookwyrm/templates/snippets/create_status/quotation.html:45 +#: bookwyrm/templates/snippets/create_status/quotation.html:44 msgid "On page:" msgstr "À la page :" -#: bookwyrm/templates/snippets/create_status/quotation.html:51 +#: bookwyrm/templates/snippets/create_status/quotation.html:50 msgid "At percent:" msgstr "Au pourcentage :" -#: bookwyrm/templates/snippets/create_status/review.html:25 +#: bookwyrm/templates/snippets/create_status/review.html:24 #, python-format msgid "Your review of '%(book_title)s'" msgstr "Votre critique de '%(book_title)s'" -#: bookwyrm/templates/snippets/create_status/review.html:40 +#: bookwyrm/templates/snippets/create_status/review.html:39 msgid "Review:" msgstr "Critique :" @@ -3882,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" @@ -3909,7 +4143,7 @@ msgid "Unfollow" msgstr "Se désabonner" #: bookwyrm/templates/snippets/follow_request_buttons.html:7 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:8 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:9 msgid "Accept" msgstr "Accepter" @@ -3949,15 +4183,15 @@ msgstr[1] "a noté %(title)s : %(display_ratin #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "" -msgstr[1] "" +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] "Critique de « %(book_title)s » (%(display_rating)s étoile) : %(review_title)s" +msgstr[1] "Critique de « %(book_title)s » (%(display_rating)s étoiles) : %(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 "" +msgid "Review of \"%(book_title)s\": %(review_title)s" +msgstr "Critique de « %(book_title)s » : %(review_title)s" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4027,11 +4261,11 @@ msgstr "Abonnemé(e)s uniquement" msgid "Post privacy" msgstr "Confidentialité du statut" -#: bookwyrm/templates/snippets/rate_action.html:4 +#: bookwyrm/templates/snippets/rate_action.html:5 msgid "Leave a rating" msgstr "Laisser une note" -#: bookwyrm/templates/snippets/rate_action.html:19 +#: bookwyrm/templates/snippets/rate_action.html:20 msgid "Rate" msgstr "Noter" @@ -4063,21 +4297,31 @@ msgstr "Ajouter « %(book_title)s » aux envies de lecture" msgid "Sign Up" msgstr "S’enregistrer" -#: bookwyrm/templates/snippets/report_button.html:13 -msgid "Report" -msgstr "Signaler" +#: bookwyrm/templates/snippets/report_modal.html:8 +#, python-format +msgid "Report @%(username)s's status" +msgstr "Signaler le statut de @%(username)s" -#: bookwyrm/templates/snippets/report_modal.html:6 +#: bookwyrm/templates/snippets/report_modal.html:10 +#, python-format +msgid "Report %(domain)s link" +msgstr "Signaler le lien de %(domain)s" + +#: bookwyrm/templates/snippets/report_modal.html:12 #, python-format msgid "Report @%(username)s" msgstr "Signaler @%(username)s" -#: bookwyrm/templates/snippets/report_modal.html:23 +#: bookwyrm/templates/snippets/report_modal.html:34 #, python-format msgid "This report will be sent to %(site_name)s's moderators for review." msgstr "Ce signalement sera envoyé à l’équipe de modération de %(site_name)s pour traitement." -#: bookwyrm/templates/snippets/report_modal.html:26 +#: bookwyrm/templates/snippets/report_modal.html:36 +msgid "Links from this domain will be removed until your report has been reviewed." +msgstr "Les liens vers ce domaine seront retirés jusqu’à ce que votre signalement ait été vérifié." + +#: bookwyrm/templates/snippets/report_modal.html:41 msgid "More info about this report:" msgstr "En savoir plus sur ce signalement :" @@ -4115,29 +4359,29 @@ msgstr "Retirer de %(name)s" msgid "Finish reading" msgstr "Terminer la lecture" -#: bookwyrm/templates/snippets/status/content_status.html:75 +#: bookwyrm/templates/snippets/status/content_status.html:73 msgid "Content warning" msgstr "Avertissement sur le contenu" -#: bookwyrm/templates/snippets/status/content_status.html:82 +#: bookwyrm/templates/snippets/status/content_status.html:80 msgid "Show status" msgstr "Afficher le statut" -#: bookwyrm/templates/snippets/status/content_status.html:104 +#: bookwyrm/templates/snippets/status/content_status.html:102 #, python-format msgid "(Page %(page)s)" msgstr "(Page %(page)s)" -#: bookwyrm/templates/snippets/status/content_status.html:106 +#: bookwyrm/templates/snippets/status/content_status.html:104 #, python-format msgid "(%(percent)s%%)" msgstr "(%(percent)s%%)" -#: bookwyrm/templates/snippets/status/content_status.html:128 +#: bookwyrm/templates/snippets/status/content_status.html:126 msgid "Open image in new window" msgstr "Ouvrir l’image dans une nouvelle fenêtre" -#: bookwyrm/templates/snippets/status/content_status.html:147 +#: bookwyrm/templates/snippets/status/content_status.html:145 msgid "Hide status" msgstr "Masquer le statut" @@ -4149,7 +4393,7 @@ msgstr "modifié le %(date)s" #: bookwyrm/templates/snippets/status/headers/comment.html:8 #, python-format msgid "commented on %(book)s by %(author_name)s" -msgstr "" +msgstr "a commenté %(book)s par %(author_name)s" #: bookwyrm/templates/snippets/status/headers/comment.html:15 #, python-format @@ -4164,7 +4408,7 @@ msgstr "a répondu au statut de %(book)s by %(author_name)s" -msgstr "" +msgstr "a cité %(book)s par %(author_name)s" #: bookwyrm/templates/snippets/status/headers/quotation.html:15 #, python-format @@ -4179,7 +4423,7 @@ msgstr "a noté %(book)s :" #: bookwyrm/templates/snippets/status/headers/read.html:10 #, python-format msgid "finished reading %(book)s by %(author_name)s" -msgstr "" +msgstr "a terminé la lecture de %(book)s par %(author_name)s" #: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format @@ -4189,7 +4433,7 @@ msgstr "a terminé %(book)s" #: bookwyrm/templates/snippets/status/headers/reading.html:10 #, python-format msgid "started reading %(book)s by %(author_name)s" -msgstr "" +msgstr "a commencé la lecture de %(book)s par %(author_name)s" #: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format @@ -4199,7 +4443,7 @@ msgstr "a commencé %(book)s" #: bookwyrm/templates/snippets/status/headers/review.html:8 #, python-format msgid "reviewed %(book)s by %(author_name)s" -msgstr "" +msgstr "a publié une critique de %(book)s par %(author_name)s" #: bookwyrm/templates/snippets/status/headers/review.html:15 #, python-format @@ -4209,12 +4453,12 @@ msgstr "a critiqué %(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 "veut lire %(book)s par %(author_name)s" #: bookwyrm/templates/snippets/status/headers/to_read.html:17 #, python-format msgid "wants to read %(book)s" -msgstr "" +msgstr "veut lire %(book)s" #: bookwyrm/templates/snippets/status/layout.html:24 #: bookwyrm/templates/snippets/status/status_options.html:17 @@ -4430,8 +4674,15 @@ msgstr "Aucun compte avec cette adresse email n’a été trouvé." msgid "A password reset link was sent to {email}" msgstr "Un lien de réinitialisation a été envoyé à {email}." -#: bookwyrm/views/rss_feed.py:35 +#: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" msgstr "Mises à jour de statut de {obj.display_name}" +#: bookwyrm/views/updates.py:45 +#, python-format +msgid "Load %(count)d unread status" +msgid_plural "Load %(count)d unread statuses" +msgstr[0] "Charger %(count)d statut non lu" +msgstr[1] "Charger %(count)d statuts non lus" + diff --git a/locale/gl_ES/LC_MESSAGES/django.mo b/locale/gl_ES/LC_MESSAGES/django.mo index 918936d8d..8a6a74da4 100644 Binary files a/locale/gl_ES/LC_MESSAGES/django.mo and b/locale/gl_ES/LC_MESSAGES/django.mo differ diff --git a/locale/gl_ES/LC_MESSAGES/django.po b/locale/gl_ES/LC_MESSAGES/django.po index 798be463c..f643d3f86 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-13 16:54+0000\n" -"PO-Revision-Date: 2022-01-14 07:13\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: 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:351 +#: 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:365 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Un día" -#: bookwyrm/forms.py:366 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Unha semana" -#: bookwyrm/forms.py:367 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Un mes" -#: bookwyrm/forms.py:368 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "Non caduca" -#: bookwyrm/forms.py:372 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} usos" -#: bookwyrm/forms.py:373 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Sen límite" -#: bookwyrm/forms.py:469 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Orde da listaxe" -#: bookwyrm/forms.py:470 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Título do libro" -#: bookwyrm/forms.py:471 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:33 +#: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Puntuación" -#: bookwyrm/forms.py:473 bookwyrm/templates/lists/list.html:134 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Ordenar por" -#: bookwyrm/forms.py:477 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Ascendente" -#: bookwyrm/forms.py:478 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Descendente" -#: bookwyrm/forms.py:491 +#: 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." @@ -84,8 +92,9 @@ msgstr "Erro ao cargar o libro" msgid "Could not find a match for book" msgstr "Non se atopan coincidencias para o libro" -#: bookwyrm/models/base_model.py:17 +#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 +#: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "Pendente" @@ -105,23 +114,23 @@ msgstr "Eliminado pola moderación" msgid "Domain block" msgstr "Bloqueo de dominio" -#: bookwyrm/models/book.py:250 +#: bookwyrm/models/book.py:253 msgid "Audiobook" msgstr "Audiolibro" -#: bookwyrm/models/book.py:251 +#: bookwyrm/models/book.py:254 msgid "eBook" msgstr "eBook" -#: bookwyrm/models/book.py:252 +#: bookwyrm/models/book.py:255 msgid "Graphic novel" msgstr "Novela gráfica" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:256 msgid "Hardcover" msgstr "Portada dura" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:257 msgid "Paperback" msgstr "En rústica" @@ -131,33 +140,34 @@ msgstr "En rústica" msgid "Federated" msgstr "Federado" -#: bookwyrm/models/federated_server.py:12 +#: bookwyrm/models/federated_server.py:12 bookwyrm/models/link.py:71 #: bookwyrm/templates/settings/federation/edit_instance.html:44 #: bookwyrm/templates/settings/federation/instance.html:10 #: bookwyrm/templates/settings/federation/instance_list.html:23 +#: bookwyrm/templates/settings/link_domains/link_domains.html:27 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 @@ -165,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 @@ -173,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 @@ -189,6 +199,23 @@ msgstr "Seguidoras" msgid "Private" msgstr "Privado" +#: bookwyrm/models/link.py:51 +msgid "Free" +msgstr "Gratuíto" + +#: bookwyrm/models/link.py:52 +msgid "Purchasable" +msgstr "Dispoñible" + +#: bookwyrm/models/link.py:53 +msgid "Available for loan" +msgstr "Dispoñible para aluguer" + +#: bookwyrm/models/link.py:70 +#: bookwyrm/templates/settings/link_domains/link_domains.html:23 +msgid "Approved" +msgstr "Aprobado" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Recensións" @@ -205,69 +232,73 @@ msgstr "Citas" msgid "Everything else" msgstr "As outras cousas" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home Timeline" msgstr "Cronoloxía de Inicio" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home" msgstr "Inicio" -#: bookwyrm/settings.py:122 +#: bookwyrm/settings.py:174 msgid "Books Timeline" msgstr "Cronoloxía de libros" -#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Libros" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:248 msgid "English" msgstr "English (Inglés)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:249 msgid "Deutsch (German)" msgstr "Alemán (Alemaña)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:250 msgid "Español (Spanish)" msgstr "Español (España)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:251 msgid "Galego (Galician)" msgstr "Galego (Galician)" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:252 msgid "Italiano (Italian)" msgstr "Italiano (Italian)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:253 msgid "Français (French)" msgstr "Francés (Francia)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:254 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lithuanian)" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:255 msgid "Norsk (Norwegian)" msgstr "Noruegués (Norwegian)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:256 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portugués brasileiro)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:257 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugués europeo)" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:258 +msgid "Svenska (Swedish)" +msgstr "Sueco (Swedish)" + +#: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chinés simplificado)" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:260 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinés tradicional)" @@ -296,61 +327,57 @@ msgstr "Algo fallou! Lamentámolo." msgid "About" msgstr "Acerca de" -#: bookwyrm/templates/about/about.html:18 +#: bookwyrm/templates/about/about.html:19 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "Sexas ben vida a %(site_name)s!" -#: bookwyrm/templates/about/about.html:22 +#: 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 "%(site_name)s é parte de BookWyrm, unha rede independente, auto-xestionada por comunidades de persoas lectoras. Aínda que podes interactuar con outras usuarias da rede BookWyrm, esta comunidade é única." -#: bookwyrm/templates/about/about.html:39 +#: bookwyrm/templates/about/about.html:40 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "%(title)s é o libro máis querido de %(site_name)s, cunha valoración media de %(rating)s sobre 5." -#: bookwyrm/templates/about/about.html:58 +#: bookwyrm/templates/about/about.html:59 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "%(title)s é o libro que máis queren ler as usuarias de %(site_name)s." -#: bookwyrm/templates/about/about.html:77 +#: bookwyrm/templates/about/about.html:78 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "%(title)s é o libro con valoracións máis diverxentes en %(site_name)s." -#: bookwyrm/templates/about/about.html:88 +#: 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 "Rexistra as túas lecturas, conversa acerca dos libros, escribe recensións e descubre próximas lecturas. Sempre sen publicidade, anti-corporacións e orientado á comunidade, BookWyrm é software a escala humana, deseñado para ser pequeno e persoal. Se queres propoñer novas ferramentas, informar de fallos, ou colaborar, contacta con nós e deixa oír a túa voz." -#: bookwyrm/templates/about/about.html:95 +#: bookwyrm/templates/about/about.html:96 msgid "Meet your admins" msgstr "Contacta coa administración" -#: bookwyrm/templates/about/about.html:98 +#: bookwyrm/templates/about/about.html:99 #, python-format -msgid "\n" -" %(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.\n" -" " -msgstr "\n" -"A moderación e administración de %(site_name)s coidan e xestionan o sitio web, fan cumprir co código de conducta e responden ás denuncias das usuarias sobre spam e mal comportamento.\n" -" " +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 "A moderación e administración de %(site_name)s coidan e xestionan o sitio web, fan cumprir co código de conduta e responden ás denuncias das usuarias sobre spam e mal comportamento." -#: bookwyrm/templates/about/about.html:112 +#: bookwyrm/templates/about/about.html:113 msgid "Moderator" msgstr "Moderación" -#: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 msgid "Admin" msgstr "Admin" -#: bookwyrm/templates/about/about.html:130 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:13 +#: 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" @@ -409,7 +436,7 @@ msgid "Copy address" msgstr "Copiar enderezo" #: bookwyrm/templates/annual_summary/layout.html:68 -#: bookwyrm/templates/lists/list.html:230 +#: bookwyrm/templates/lists/list.html:269 msgid "Copied!" msgstr "Copiado!" @@ -478,7 +505,7 @@ msgstr "A lectura máis curta deste ano…" #: bookwyrm/templates/annual_summary/layout.html:245 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 -#: bookwyrm/templates/landing/large-book.html:25 +#: bookwyrm/templates/landing/large-book.html:26 #: bookwyrm/templates/landing/small-book.html:18 msgid "by" msgstr "por" @@ -530,61 +557,61 @@ msgstr "Tódolos libros que %(display_name)s leu en %(year)s" msgid "Edit Author" msgstr "Editar Autora" -#: bookwyrm/templates/author/author.html:40 +#: bookwyrm/templates/author/author.html:35 msgid "Author details" msgstr "Detalles da autoría" -#: bookwyrm/templates/author/author.html:44 +#: bookwyrm/templates/author/author.html:39 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "Alias:" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:48 msgid "Born:" msgstr "Nacemento:" -#: bookwyrm/templates/author/author.html:60 +#: bookwyrm/templates/author/author.html:55 msgid "Died:" msgstr "Morte:" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:65 msgid "External links" msgstr "Ligazóns externas" -#: bookwyrm/templates/author/author.html:75 +#: bookwyrm/templates/author/author.html:70 msgid "Wikipedia" msgstr "Wikipedia" -#: bookwyrm/templates/author/author.html:83 +#: bookwyrm/templates/author/author.html:78 msgid "View ISNI record" msgstr "Ver rexistro ISNI" -#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/author.html:83 #: bookwyrm/templates/author/sync_modal.html:5 #: bookwyrm/templates/book/book.html:122 #: bookwyrm/templates/book/sync_modal.html:5 msgid "Load data" msgstr "Cargar datos" -#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/author/author.html:87 #: bookwyrm/templates/book/book.html:126 msgid "View on OpenLibrary" msgstr "Ver en OpenLibrary" -#: bookwyrm/templates/author/author.html:107 +#: bookwyrm/templates/author/author.html:102 #: bookwyrm/templates/book/book.html:140 msgid "View on Inventaire" msgstr "Ver en Inventaire" -#: bookwyrm/templates/author/author.html:123 +#: bookwyrm/templates/author/author.html:118 msgid "View on LibraryThing" msgstr "Ver en LibraryThing" -#: bookwyrm/templates/author/author.html:131 +#: bookwyrm/templates/author/author.html:126 msgid "View on Goodreads" msgstr "Ver en Goodreads" -#: bookwyrm/templates/author/author.html:145 +#: bookwyrm/templates/author/author.html:141 #, python-format msgid "Books by %(name)s" msgstr "Libros de %(name)s" @@ -614,7 +641,9 @@ msgid "Metadata" msgstr "Metadatos" #: bookwyrm/templates/author/edit_author.html:35 -#: bookwyrm/templates/lists/form.html:9 bookwyrm/templates/shelf/form.html:9 +#: bookwyrm/templates/lists/form.html:9 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:14 +#: bookwyrm/templates/shelf/form.html:9 msgid "Name:" msgstr "Nome:" @@ -668,8 +697,11 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 +#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: 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 @@ -677,7 +709,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 #: bookwyrm/templates/settings/site.html:133 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:68 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 msgid "Save" @@ -689,13 +721,17 @@ msgstr "Gardar" #: 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/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/settings/federation/instance.html:88 -#: bookwyrm/templates/snippets/report_modal.html:38 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 +#: bookwyrm/templates/snippets/report_modal.html:54 msgid "Cancel" msgstr "Cancelar" @@ -707,9 +743,9 @@ msgstr "Ao cargar os datos vas conectar con %(source_name)s e c #: bookwyrm/templates/author/sync_modal.html:22 #: bookwyrm/templates/book/edit/edit_book.html:108 #: bookwyrm/templates/book/sync_modal.html:22 -#: bookwyrm/templates/groups/members.html:30 +#: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 -#: bookwyrm/templates/snippets/remove_from_group_button.html:16 +#: bookwyrm/templates/snippets/remove_from_group_button.html:17 msgid "Confirm" msgstr "Confirmar" @@ -793,8 +829,8 @@ msgid "Places" msgstr "Lugares" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 -#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: 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 @@ -808,7 +844,8 @@ msgstr "Engadir a listaxe" #: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/list.html:208 +#: 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" @@ -910,7 +947,7 @@ msgid "Back" msgstr "Atrás" #: bookwyrm/templates/book/edit/edit_book_form.html:21 -#: bookwyrm/templates/snippets/create_status/review.html:16 +#: bookwyrm/templates/snippets/create_status/review.html:15 msgid "Title:" msgstr "Título:" @@ -988,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:" @@ -1026,20 +1063,132 @@ 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" +#: bookwyrm/templates/book/file_links/add_link_modal.html:6 +msgid "Add file link" +msgstr "Engadir ligazón ao ficheiro" + +#: 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 "As ligazóns a dominios descoñecidos teñen que ser aprobados pola moderación antes de ser engadidos." + +#: bookwyrm/templates/book/file_links/add_link_modal.html:24 +msgid "URL:" +msgstr "URL:" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:29 +msgid "File type:" +msgstr "Tipo de ficheiro:" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:48 +msgid "Availability:" +msgstr "Dispoñibilidade:" + +#: 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 "Editar ligazóns" + +#: bookwyrm/templates/book/file_links/edit_links.html:11 +#, python-format +msgid "\n" +" Links for \"%(title)s\"\n" +" " +msgstr "\n" +"Ligazóns para \"%(title)s\"\n" +" " + +#: bookwyrm/templates/book/file_links/edit_links.html:32 +#: bookwyrm/templates/settings/link_domains/link_table.html:6 +msgid "URL" +msgstr "URL" + +#: bookwyrm/templates/book/file_links/edit_links.html:33 +#: bookwyrm/templates/settings/link_domains/link_table.html:7 +msgid "Added by" +msgstr "Engadido por" + +#: bookwyrm/templates/book/file_links/edit_links.html:34 +#: bookwyrm/templates/settings/link_domains/link_table.html:8 +msgid "Filetype" +msgstr "Tipo de ficheiro" + +#: bookwyrm/templates/book/file_links/edit_links.html:35 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 +#: bookwyrm/templates/settings/reports/report_links_table.html:5 +msgid "Domain" +msgstr "Dominio" + +#: bookwyrm/templates/book/file_links/edit_links.html:36 +#: bookwyrm/templates/import/import_status.html:127 +#: bookwyrm/templates/settings/announcements/announcements.html:38 +#: bookwyrm/templates/settings/federation/instance_list.html:46 +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 +#: bookwyrm/templates/settings/invites/status_filter.html:5 +#: bookwyrm/templates/settings/users/user_admin.html:34 +#: bookwyrm/templates/settings/users/user_info.html:20 +msgid "Status" +msgstr "Estado" + +#: bookwyrm/templates/book/file_links/edit_links.html:37 +#: bookwyrm/templates/settings/federation/instance.html:94 +#: bookwyrm/templates/settings/reports/report_links_table.html:6 +msgid "Actions" +msgstr "Accións" + +#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 +msgid "Report spam" +msgstr "Denunciar spam" + +#: bookwyrm/templates/book/file_links/edit_links.html:97 +msgid "No links available for this book." +msgstr "Sen ligazóns para para este libro." + +#: bookwyrm/templates/book/file_links/edit_links.html:108 +#: bookwyrm/templates/book/file_links/links.html:18 +msgid "Add link to file" +msgstr "Engadir ligazón ao ficheiro" + +#: bookwyrm/templates/book/file_links/file_link_page.html:6 +msgid "File Links" +msgstr "Ligazóns do ficheiro" + +#: bookwyrm/templates/book/file_links/links.html:9 +msgid "Get a copy" +msgstr "Obter unha copia" + +#: bookwyrm/templates/book/file_links/links.html:47 +msgid "No links available" +msgstr "Sen ligazóns dispoñibles" + +#: bookwyrm/templates/book/file_links/verification_modal.html:5 +msgid "Leaving BookWyrm" +msgstr "Saír de BookWyrm" + +#: bookwyrm/templates/book/file_links/verification_modal.html:11 +#, python-format +msgid "This link is taking you to: %(link_url)s.
    Is that where you'd like to go?" +msgstr "Esta ligazón vaite levar a: %(link_url)s.
    É ahí a onde queres ir?" + +#: bookwyrm/templates/book/file_links/verification_modal.html:20 +msgid "Continue" +msgstr "Continuar" + #: bookwyrm/templates/book/publisher_info.html:23 #, python-format msgid "%(format)s, %(pages)s pages" @@ -1110,8 +1259,8 @@ msgstr "Código de confirmación:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:93 -#: bookwyrm/templates/snippets/report_modal.html:37 +#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Enviar" @@ -1417,16 +1566,11 @@ msgstr "Tódalas mensaxes" msgid "You have no messages right now." msgstr "Non tes mensaxes por agora." -#: bookwyrm/templates/feed/feed.html:28 -#, python-format -msgid "load 0 unread status(es)" -msgstr "cargar 0 estado(s) non lidos" - -#: 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 "Non hai actividade por agora! Proba a seguir algunha persoa para comezar" -#: bookwyrm/templates/feed/feed.html:52 +#: bookwyrm/templates/feed/feed.html:55 msgid "Alternatively, you can try enabling more status types" msgstr "De xeito alternativo, podes activar máis tipos de estados" @@ -1515,7 +1659,7 @@ msgid "What are you reading?" msgstr "Que estás a ler?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162 +#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:205 msgid "Search for a book" msgstr "Buscar un libro" @@ -1533,9 +1677,9 @@ msgstr "Podes engadir libros cando comeces a usar %(site_name)s." #: bookwyrm/templates/get_started/books.html:17 #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166 +#: 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/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -1551,7 +1695,7 @@ msgid "Popular on %(site_name)s" msgstr "Populares en %(site_name)s" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:179 +#: bookwyrm/templates/lists/list.html:222 msgid "No books found" msgstr "Non se atopan libros" @@ -1656,7 +1800,7 @@ msgstr "Esta acción non ten volta atrás" #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 #: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:14 msgid "Delete" msgstr "Eliminar" @@ -1676,17 +1820,17 @@ msgstr "Descrición do grupo:" msgid "Delete group" msgstr "Eliminar grupo" -#: bookwyrm/templates/groups/group.html:22 +#: bookwyrm/templates/groups/group.html:21 msgid "Members of this group can create group-curated lists." msgstr "Os membros deste grupo poden crear listas xestionadas comunitariamente." -#: bookwyrm/templates/groups/group.html:27 +#: bookwyrm/templates/groups/group.html:26 #: bookwyrm/templates/lists/create_form.html:5 #: bookwyrm/templates/lists/lists.html:20 msgid "Create List" msgstr "Crear lista" -#: bookwyrm/templates/groups/group.html:40 +#: bookwyrm/templates/groups/group.html:39 msgid "This group has no lists" msgstr "Este grupo non ten listaxes" @@ -1694,15 +1838,15 @@ msgstr "Este grupo non ten listaxes" msgid "Edit group" msgstr "Editar grupo" -#: bookwyrm/templates/groups/members.html:12 +#: bookwyrm/templates/groups/members.html:11 msgid "Search to add a user" msgstr "Buscar para engadir usuaria" -#: bookwyrm/templates/groups/members.html:33 +#: bookwyrm/templates/groups/members.html:32 msgid "Leave group" msgstr "Saír do grupo" -#: bookwyrm/templates/groups/members.html:55 +#: bookwyrm/templates/groups/members.html:54 #: bookwyrm/templates/groups/suggested_users.html:35 #: bookwyrm/templates/snippets/suggested_users.html:31 #: bookwyrm/templates/user/user_preview.html:36 @@ -1858,19 +2002,10 @@ msgid "Review" msgstr "Revisar" #: bookwyrm/templates/import/import_status.html:124 +#: bookwyrm/templates/settings/link_domains/link_table.html:9 msgid "Book" msgstr "Libro" -#: bookwyrm/templates/import/import_status.html:127 -#: bookwyrm/templates/settings/announcements/announcements.html:38 -#: bookwyrm/templates/settings/federation/instance_list.html:46 -#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 -#: bookwyrm/templates/settings/invites/status_filter.html:5 -#: bookwyrm/templates/settings/users/user_admin.html:34 -#: bookwyrm/templates/settings/users/user_info.html:20 -msgid "Status" -msgstr "Estado" - #: bookwyrm/templates/import/import_status.html:135 msgid "Import preview unavailable." msgstr "Non dispoñible vista previa da importación." @@ -1909,7 +2044,8 @@ msgid "Approving a suggestion will permanently add the suggested book to your sh msgstr "Ao aceptar unha suxestión engadirá permanentemente o libro suxerido aos teus estantes e asociará as túas datas de lectura, revisións e valoracións a ese libro." #: 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 "Admitir" @@ -1918,8 +2054,8 @@ msgid "Reject" msgstr "Rexeitar" #: bookwyrm/templates/import/tooltip.html:6 -msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." -msgstr "Podes descargar os teus datos en Goodreads desde a páxina de Importación/Exportación na túa conta Goodreads." +msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." +msgstr "Podes descargar os teus datos de Goodreads desde a páxina de Exportación/Importación da túa conta Goodreads." #: bookwyrm/templates/import/troubleshoot.html:7 msgid "Failed items" @@ -2119,6 +2255,21 @@ msgstr "Axuda a %(site_name)s en msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "O código fonte de BookWyrm é público. Podes colaborar ou informar de problemas en GitHub." +#: bookwyrm/templates/lists/add_item_modal.html:8 +#, python-format +msgid "Add \"%(title)s\" to this list" +msgstr "Engadir \"%(title)s\" a esta lista" + +#: bookwyrm/templates/lists/add_item_modal.html:12 +#, python-format +msgid "Suggest \"%(title)s\" for this list" +msgstr "Suxerir \"%(title)s\" para esta lista" + +#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/list.html:249 +msgid "Suggest" +msgstr "Suxire" + #: bookwyrm/templates/lists/bookmark_button.html:30 msgid "Un-save" msgstr "Reverter" @@ -2138,23 +2289,29 @@ msgstr "Creada e mantida por %(username)s" msgid "Created by %(username)s" msgstr "Creada por %(username)s" -#: bookwyrm/templates/lists/curate.html:11 +#: bookwyrm/templates/lists/curate.html:12 msgid "Curate" msgstr "Xestionar" -#: bookwyrm/templates/lists/curate.html:20 +#: bookwyrm/templates/lists/curate.html:21 msgid "Pending Books" msgstr "Libros pendentes" -#: bookwyrm/templates/lists/curate.html:23 +#: bookwyrm/templates/lists/curate.html:24 msgid "You're all set!" msgstr "Remataches!" -#: bookwyrm/templates/lists/curate.html:43 +#: bookwyrm/templates/lists/curate.html:45 +#: bookwyrm/templates/lists/list.html:83 +#, python-format +msgid "%(username)s says:" +msgstr "%(username)s di:" + +#: bookwyrm/templates/lists/curate.html:55 msgid "Suggested by" msgstr "Suxerido por" -#: bookwyrm/templates/lists/curate.html:65 +#: bookwyrm/templates/lists/curate.html:77 msgid "Discard" msgstr "Descartar" @@ -2167,18 +2324,18 @@ msgstr "Eliminar esta lista?" msgid "Edit List" msgstr "Editar lista" -#: bookwyrm/templates/lists/embed-list.html:7 +#: bookwyrm/templates/lists/embed-list.html:8 #, python-format msgid "%(list_name)s, a list by %(owner)s" msgstr "%(list_name)s, unha lista de %(owner)s" -#: bookwyrm/templates/lists/embed-list.html:17 +#: bookwyrm/templates/lists/embed-list.html:18 #, python-format msgid "on %(site_name)s" msgstr "en %(site_name)s" -#: bookwyrm/templates/lists/embed-list.html:26 -#: bookwyrm/templates/lists/list.html:42 +#: bookwyrm/templates/lists/embed-list.html:27 +#: bookwyrm/templates/lists/list.html:44 msgid "This list is currently empty" msgstr "A lista está baleira neste intre" @@ -2239,75 +2396,89 @@ msgstr "Crea un Grupo" msgid "Delete list" msgstr "Eliminar lista" -#: bookwyrm/templates/lists/list.html:34 +#: bookwyrm/templates/lists/item_notes_field.html:7 +#: bookwyrm/templates/settings/federation/edit_instance.html:74 +msgid "Notes:" +msgstr "Notas:" + +#: bookwyrm/templates/lists/item_notes_field.html:19 +msgid "An optional note that will be displayed with the book." +msgstr "Unha nota optativa que aparecerá xunto ao libro." + +#: bookwyrm/templates/lists/list.html:36 msgid "You successfully suggested a book for this list!" msgstr "Suxeriches correctamente un libro para esta lista!" -#: bookwyrm/templates/lists/list.html:36 +#: bookwyrm/templates/lists/list.html:38 msgid "You successfully added a book to this list!" msgstr "Engadiches correctamente un libro a esta lista!" -#: bookwyrm/templates/lists/list.html:80 +#: bookwyrm/templates/lists/list.html:96 +msgid "Edit notes" +msgstr "Editar notas" + +#: bookwyrm/templates/lists/list.html:111 +msgid "Add notes" +msgstr "Engadir notas" + +#: bookwyrm/templates/lists/list.html:123 #, python-format msgid "Added by %(username)s" msgstr "Engadido por %(username)s" -#: bookwyrm/templates/lists/list.html:95 +#: bookwyrm/templates/lists/list.html:138 msgid "List position" msgstr "Posición da lista" -#: bookwyrm/templates/lists/list.html:101 +#: bookwyrm/templates/lists/list.html:144 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 msgid "Set" msgstr "Establecer" -#: bookwyrm/templates/lists/list.html:116 -#: bookwyrm/templates/snippets/remove_from_group_button.html:19 +#: bookwyrm/templates/lists/list.html:159 +#: bookwyrm/templates/snippets/remove_from_group_button.html:20 msgid "Remove" msgstr "Eliminar" -#: bookwyrm/templates/lists/list.html:130 -#: bookwyrm/templates/lists/list.html:147 +#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:190 msgid "Sort List" msgstr "Ordenar lista" -#: bookwyrm/templates/lists/list.html:140 +#: bookwyrm/templates/lists/list.html:183 msgid "Direction" msgstr "Dirección" -#: bookwyrm/templates/lists/list.html:154 +#: bookwyrm/templates/lists/list.html:197 msgid "Add Books" msgstr "Engadir Libros" -#: bookwyrm/templates/lists/list.html:156 +#: bookwyrm/templates/lists/list.html:199 msgid "Suggest Books" msgstr "Suxerir Libros" -#: bookwyrm/templates/lists/list.html:167 +#: bookwyrm/templates/lists/list.html:210 msgid "search" msgstr "buscar" -#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:216 msgid "Clear search" msgstr "Limpar busca" -#: bookwyrm/templates/lists/list.html:178 +#: bookwyrm/templates/lists/list.html:221 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "Non se atopan libros coa consulta \"%(query)s\"" -#: bookwyrm/templates/lists/list.html:210 -msgid "Suggest" -msgstr "Suxire" - -#: bookwyrm/templates/lists/list.html:221 +#: bookwyrm/templates/lists/list.html:260 msgid "Embed this list on a website" msgstr "Utiliza esta lista nunha páxina web" -#: bookwyrm/templates/lists/list.html:229 +#: bookwyrm/templates/lists/list.html:268 msgid "Copy embed code" msgstr "Copia o código a incluír" -#: bookwyrm/templates/lists/list.html:231 +#: 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, unha lista de %(owner)s en %(site_name)s" @@ -2788,6 +2959,11 @@ msgstr "Eliminar estas datas da lectura" msgid "Add read dates for \"%(title)s\"" msgstr "Engadir datas de lectura para \"%(title)s\"" +#: bookwyrm/templates/report.html:5 +#: bookwyrm/templates/snippets/report_button.html:13 +msgid "Report" +msgstr "Denunciar" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "Resultados de" @@ -2860,13 +3036,13 @@ msgstr "Falso" #: bookwyrm/templates/settings/announcements/announcement.html:46 #: bookwyrm/templates/settings/announcements/announcement_form.html:44 -#: bookwyrm/templates/settings/dashboard/dashboard.html:71 +#: bookwyrm/templates/settings/dashboard/dashboard.html:82 msgid "Start date:" msgstr "Data de inicio:" #: bookwyrm/templates/settings/announcements/announcement.html:51 #: bookwyrm/templates/settings/announcements/announcement_form.html:54 -#: bookwyrm/templates/settings/dashboard/dashboard.html:77 +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "End date:" msgstr "Data de fin:" @@ -2894,7 +3070,7 @@ msgstr "Data do evento:" #: bookwyrm/templates/settings/announcements/announcements.html:3 #: bookwyrm/templates/settings/announcements/announcements.html:5 -#: bookwyrm/templates/settings/layout.html:72 +#: bookwyrm/templates/settings/layout.html:76 msgid "Announcements" msgstr "Anuncios" @@ -2934,7 +3110,7 @@ msgid "Dashboard" msgstr "Taboleiro" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Total users" msgstr "Total de usuarias" @@ -2961,36 +3137,43 @@ msgstr[1] "%(display_count)s denuncias abertas" #: bookwyrm/templates/settings/dashboard/dashboard.html:54 #, python-format +msgid "%(display_count)s domain needs review" +msgid_plural "%(display_count)s domains need review" +msgstr[0] "hai que revisar %(display_count)s dominio" +msgstr[1] "hai que revisar %(display_count)s dominios" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s solicitude de convite" msgstr[1] "%(display_count)s solicitudes de convite" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:76 msgid "Instance Activity" msgstr "Actividade na instancia" -#: bookwyrm/templates/settings/dashboard/dashboard.html:83 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Interval:" msgstr "Intervalo:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:87 +#: bookwyrm/templates/settings/dashboard/dashboard.html:98 msgid "Days" msgstr "Días" -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Weeks" msgstr "Semanas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "User signup activity" msgstr "Rexistros de usuarias" -#: bookwyrm/templates/settings/dashboard/dashboard.html:112 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Status activity" msgstr "Actividade do estado" -#: bookwyrm/templates/settings/dashboard/dashboard.html:118 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "Works created" msgstr "Traballos creados" @@ -3025,10 +3208,6 @@ msgstr "Lista de bloqueo de email" msgid "When someone tries to register with an email from this domain, no account will be created. The registration process will appear to have worked." msgstr "Non se creará a conta cando alguén se intente rexistrar usando un email deste dominio. O proceso de rexistro aparentará terse completado." -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 -msgid "Domain" -msgstr "Dominio" - #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:29 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:27 msgid "Options" @@ -3087,10 +3266,6 @@ msgstr "Software:" msgid "Version:" msgstr "Versión:" -#: bookwyrm/templates/settings/federation/edit_instance.html:74 -msgid "Notes:" -msgstr "Notas:" - #: bookwyrm/templates/settings/federation/instance.html:19 msgid "Details" msgstr "Detalles" @@ -3140,12 +3315,8 @@ msgstr "Editar" msgid "No notes" msgstr "Sen notas" -#: bookwyrm/templates/settings/federation/instance.html:94 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 -msgid "Actions" -msgstr "Accións" - #: bookwyrm/templates/settings/federation/instance.html:98 +#: bookwyrm/templates/settings/link_domains/link_domains.html:87 #: bookwyrm/templates/snippets/block_button.html:5 msgid "Block" msgstr "Bloquear" @@ -3358,62 +3529,121 @@ msgstr "Moderación" msgid "Reports" msgstr "Denuncias" -#: bookwyrm/templates/settings/layout.html:68 +#: bookwyrm/templates/settings/layout.html:67 +#: bookwyrm/templates/settings/link_domains/link_domains.html:5 +#: bookwyrm/templates/settings/link_domains/link_domains.html:7 +msgid "Link Domains" +msgstr "Dominios das ligazóns" + +#: bookwyrm/templates/settings/layout.html:72 msgid "Instance Settings" msgstr "Axustes da instancia" -#: bookwyrm/templates/settings/layout.html:76 +#: bookwyrm/templates/settings/layout.html:80 #: bookwyrm/templates/settings/site.html:4 #: bookwyrm/templates/settings/site.html:6 msgid "Site Settings" msgstr "Axustes da web" -#: bookwyrm/templates/settings/reports/report.html:5 -#: bookwyrm/templates/settings/reports/report.html:8 -#: bookwyrm/templates/settings/reports/report_preview.html:6 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5 #, python-format -msgid "Report #%(report_id)s: %(username)s" -msgstr "Denuncia #%(report_id)s: %(username)s" +msgid "Set display name for %(url)s" +msgstr "Nome público para %(url)s" -#: bookwyrm/templates/settings/reports/report.html:9 +#: 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 "As ligazóns a dominios teñen que ser aprobadas para mostralas nas páxinas dos libros. Pon coidado en que non sexan spam, código pernicioso, ou ligazóns estragadas antes de aprobalas." + +#: bookwyrm/templates/settings/link_domains/link_domains.html:45 +msgid "Set display name" +msgstr "Establecer nome público" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:53 +msgid "View links" +msgstr "Ver ligazóns" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:96 +msgid "No domains currently approved" +msgstr "Non hai dominios aprobados" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:98 +msgid "No domains currently pending" +msgstr "Non hai dominios pendentes" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:100 +msgid "No domains currently blocked" +msgstr "Non hai dominios bloqueados" + +#: bookwyrm/templates/settings/link_domains/link_table.html:39 +msgid "No links available for this domain." +msgstr "Non hai ligazóns dispoñibles para este dominio." + +#: bookwyrm/templates/settings/reports/report.html:11 msgid "Back to reports" msgstr "Volver a denuncias" #: 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:40 +msgid "Status has been deleted" +msgstr "O estado foi eliminado" + +#: bookwyrm/templates/settings/reports/report.html:52 +msgid "Reported links" +msgstr "Ligazóns denunciadas" + +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Comentarios da moderación" -#: bookwyrm/templates/settings/reports/report.html:41 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Comentario" -#: bookwyrm/templates/settings/reports/report.html:46 -msgid "Reported statuses" -msgstr "Estados dununciados" +#: bookwyrm/templates/settings/reports/report_header.html:6 +#, python-format +msgid "Report #%(report_id)s: Status posted by @%(username)s" +msgstr "Denuncia #%(report_id)s: Estado publicado por @%(username)s" -#: bookwyrm/templates/settings/reports/report.html:48 -msgid "No statuses reported" -msgstr "Sen denuncias sobre estados" +#: bookwyrm/templates/settings/reports/report_header.html:12 +#, python-format +msgid "Report #%(report_id)s: Link added by @%(username)s" +msgstr "Denuncia #%(report_id)s: Ligazón engadida por @%(username)s" -#: bookwyrm/templates/settings/reports/report.html:54 -msgid "Status has been deleted" -msgstr "O estado foi eliminado" +#: bookwyrm/templates/settings/reports/report_header.html:18 +#, python-format +msgid "Report #%(report_id)s: User @%(username)s" +msgstr "Denuncia #%(report_id)s: Usuaria @%(username)s" -#: bookwyrm/templates/settings/reports/report_preview.html:13 +#: bookwyrm/templates/settings/reports/report_links_table.html:17 +msgid "Block domain" +msgstr "Bloquear dominio" + +#: bookwyrm/templates/settings/reports/report_preview.html:17 msgid "No notes provided" msgstr "Non hai notas" -#: bookwyrm/templates/settings/reports/report_preview.html:20 +#: bookwyrm/templates/settings/reports/report_preview.html:24 #, python-format -msgid "Reported by %(username)s" -msgstr "Denunciado por %(username)s" +msgid "Reported by @%(username)s" +msgstr "Denunciado por @%(username)s" -#: bookwyrm/templates/settings/reports/report_preview.html:30 +#: bookwyrm/templates/settings/reports/report_preview.html:34 msgid "Re-open" msgstr "Volver a abrir" -#: bookwyrm/templates/settings/reports/report_preview.html:32 +#: bookwyrm/templates/settings/reports/report_preview.html:36 msgid "Resolve" msgstr "Resolver" @@ -3541,7 +3771,7 @@ msgid "Invite request text:" msgstr "Texto para a solicitude do convite:" #: bookwyrm/templates/settings/users/delete_user_form.html:5 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:31 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:32 msgid "Permanently delete user" msgstr "Eliminar definitivamente a usuaria" @@ -3651,15 +3881,19 @@ msgstr "Ver instancia" msgid "Permanently deleted" msgstr "Eliminada definitivamente" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:20 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 +msgid "User Actions" +msgstr "Accións da usuaria" + +#: bookwyrm/templates/settings/users/user_moderation_actions.html:21 msgid "Suspend user" msgstr "Usuaria suspendida" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:25 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:26 msgid "Un-suspend user" msgstr "Usuaria reactivada" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:47 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:48 msgid "Access level:" msgstr "Nivel de acceso:" @@ -3724,15 +3958,15 @@ msgstr "Rematado" msgid "This shelf is empty." msgstr "Este estante esta baleiro." -#: bookwyrm/templates/snippets/add_to_group_button.html:15 +#: bookwyrm/templates/snippets/add_to_group_button.html:16 msgid "Invite" msgstr "Convidar" -#: bookwyrm/templates/snippets/add_to_group_button.html:24 +#: bookwyrm/templates/snippets/add_to_group_button.html:25 msgid "Uninvite" msgstr "Retirar convite" -#: bookwyrm/templates/snippets/add_to_group_button.html:28 +#: bookwyrm/templates/snippets/add_to_group_button.html:29 #, python-format msgid "Remove @%(username)s" msgstr "Eliminar @%(username)s" @@ -3797,14 +4031,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" @@ -3820,7 +4054,7 @@ msgstr "Contén Spoilers!" msgid "Include spoiler alert" msgstr "Incluír alerta de spoiler" -#: bookwyrm/templates/snippets/create_status/layout.html:48 +#: bookwyrm/templates/snippets/create_status/layout.html:47 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Comentario:" @@ -3829,33 +4063,33 @@ msgstr "Comentario:" msgid "Post" msgstr "Publicación" -#: bookwyrm/templates/snippets/create_status/quotation.html:17 +#: bookwyrm/templates/snippets/create_status/quotation.html:16 msgid "Quote:" msgstr "Cita:" -#: bookwyrm/templates/snippets/create_status/quotation.html:25 +#: bookwyrm/templates/snippets/create_status/quotation.html:24 #, python-format msgid "An excerpt from '%(book_title)s'" msgstr "Un extracto de '%(book_title)s'" -#: bookwyrm/templates/snippets/create_status/quotation.html:32 +#: bookwyrm/templates/snippets/create_status/quotation.html:31 msgid "Position:" msgstr "Posición:" -#: bookwyrm/templates/snippets/create_status/quotation.html:45 +#: bookwyrm/templates/snippets/create_status/quotation.html:44 msgid "On page:" msgstr "Na páxina:" -#: bookwyrm/templates/snippets/create_status/quotation.html:51 +#: bookwyrm/templates/snippets/create_status/quotation.html:50 msgid "At percent:" msgstr "Na porcentaxe:" -#: bookwyrm/templates/snippets/create_status/review.html:25 +#: bookwyrm/templates/snippets/create_status/review.html:24 #, python-format msgid "Your review of '%(book_title)s'" msgstr "A túa recensión de '%(book_title)s'" -#: bookwyrm/templates/snippets/create_status/review.html:40 +#: bookwyrm/templates/snippets/create_status/review.html:39 msgid "Review:" msgstr "Recensión:" @@ -3882,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" @@ -3909,7 +4143,7 @@ msgid "Unfollow" msgstr "Non seguir" #: bookwyrm/templates/snippets/follow_request_buttons.html:7 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:8 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:9 msgid "Accept" msgstr "Aceptar" @@ -3949,15 +4183,15 @@ msgstr[1] "valorado %(title)s: %(display_ratin #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Recensión de \"%(book_title)s\" (%(display_rating)s estrela): %(review_title)s" -msgstr[1] "Recensión de \"%(book_title)s\" (%(display_rating)s estrelas): %(review_title)s" +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] "Recensión de \"%(book_title)s\" (%(display_rating)s estrela): %(review_title)s" +msgstr[1] "Recensión de \"%(book_title)s\" (%(display_rating)s estrelas): %(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 "Recensión de \"%(book_title)s\" %(review_title)s" +msgid "Review of \"%(book_title)s\": %(review_title)s" +msgstr "Recensión de \"%(book_title)s\": %(review_title)s" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4027,11 +4261,11 @@ msgstr "Só seguidoras" msgid "Post privacy" msgstr "Privacidade da publicación" -#: bookwyrm/templates/snippets/rate_action.html:4 +#: bookwyrm/templates/snippets/rate_action.html:5 msgid "Leave a rating" msgstr "Fai unha valoración" -#: bookwyrm/templates/snippets/rate_action.html:19 +#: bookwyrm/templates/snippets/rate_action.html:20 msgid "Rate" msgstr "Valorar" @@ -4063,21 +4297,31 @@ msgstr "Quero ler \"%(book_title)s\"" msgid "Sign Up" msgstr "Inscribirse" -#: bookwyrm/templates/snippets/report_button.html:13 -msgid "Report" -msgstr "Denunciar" +#: bookwyrm/templates/snippets/report_modal.html:8 +#, python-format +msgid "Report @%(username)s's status" +msgstr "Denunciar o estado de @%(username)s" -#: bookwyrm/templates/snippets/report_modal.html:6 +#: bookwyrm/templates/snippets/report_modal.html:10 +#, python-format +msgid "Report %(domain)s link" +msgstr "Denunciar ligazón %(domain)s" + +#: bookwyrm/templates/snippets/report_modal.html:12 #, python-format msgid "Report @%(username)s" msgstr "Denunciar a @%(username)s" -#: bookwyrm/templates/snippets/report_modal.html:23 +#: bookwyrm/templates/snippets/report_modal.html:34 #, python-format msgid "This report will be sent to %(site_name)s's moderators for review." msgstr "Esta denuncia vaise enviar á moderación en %(site_name)s para o seu análise." -#: bookwyrm/templates/snippets/report_modal.html:26 +#: bookwyrm/templates/snippets/report_modal.html:36 +msgid "Links from this domain will be removed until your report has been reviewed." +msgstr "As ligazóns deste dominio van ser eliminadas ata que se revise a denuncia." + +#: bookwyrm/templates/snippets/report_modal.html:41 msgid "More info about this report:" msgstr "Máis info acerca desta denuncia:" @@ -4115,29 +4359,29 @@ msgstr "Eliminar de %(name)s" msgid "Finish reading" msgstr "Rematar a lectura" -#: bookwyrm/templates/snippets/status/content_status.html:75 +#: bookwyrm/templates/snippets/status/content_status.html:73 msgid "Content warning" msgstr "Aviso sobre o contido" -#: bookwyrm/templates/snippets/status/content_status.html:82 +#: bookwyrm/templates/snippets/status/content_status.html:80 msgid "Show status" msgstr "Mostrar estado" -#: bookwyrm/templates/snippets/status/content_status.html:104 +#: bookwyrm/templates/snippets/status/content_status.html:102 #, python-format msgid "(Page %(page)s)" msgstr "(Páxina %(page)s)" -#: bookwyrm/templates/snippets/status/content_status.html:106 +#: bookwyrm/templates/snippets/status/content_status.html:104 #, python-format msgid "(%(percent)s%%)" msgstr "(%(percent)s%%)" -#: bookwyrm/templates/snippets/status/content_status.html:128 +#: bookwyrm/templates/snippets/status/content_status.html:126 msgid "Open image in new window" msgstr "Abrir imaxe en nova ventá" -#: bookwyrm/templates/snippets/status/content_status.html:147 +#: bookwyrm/templates/snippets/status/content_status.html:145 msgid "Hide status" msgstr "Agochar estado" @@ -4430,8 +4674,15 @@ msgstr "Non atopamos unha usuaria con ese email." msgid "A password reset link was sent to {email}" msgstr "Enviamos unha ligazón de restablecemento a {email}" -#: bookwyrm/views/rss_feed.py:35 +#: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" msgstr "Actualizacións de estados desde {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] "Cargar %(count)d estado non lido" +msgstr[1] "Cargar %(count)d estados non lidos" + diff --git a/locale/it_IT/LC_MESSAGES/django.mo b/locale/it_IT/LC_MESSAGES/django.mo index ddc3628ee..c3ed2bbc0 100644 Binary files a/locale/it_IT/LC_MESSAGES/django.mo and b/locale/it_IT/LC_MESSAGES/django.mo differ diff --git a/locale/it_IT/LC_MESSAGES/django.po b/locale/it_IT/LC_MESSAGES/django.po index c63d61ebf..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-13 16:54+0000\n" -"PO-Revision-Date: 2022-01-16 19:12\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:351 +#: 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:365 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Un giorno" -#: bookwyrm/forms.py:366 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Una settimana" -#: bookwyrm/forms.py:367 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Un mese" -#: bookwyrm/forms.py:368 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "Non scade" -#: bookwyrm/forms.py:372 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} usi" -#: bookwyrm/forms.py:373 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Illimitato" -#: bookwyrm/forms.py:469 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Ordina Lista" -#: bookwyrm/forms.py:470 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Titolo del libro" -#: bookwyrm/forms.py:471 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:33 +#: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Valutazione" -#: bookwyrm/forms.py:473 bookwyrm/templates/lists/list.html:134 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Ordina per" -#: bookwyrm/forms.py:477 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Crescente" -#: bookwyrm/forms.py:478 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Decrescente" -#: bookwyrm/forms.py:491 +#: 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." @@ -84,8 +92,9 @@ msgstr "Errore nel caricamento del libro" msgid "Could not find a match for book" msgstr "Impossibile trovare una corrispondenza per il libro" -#: bookwyrm/models/base_model.py:17 +#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 +#: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "In attesa" @@ -105,23 +114,23 @@ msgstr "Cancellazione del moderatore" msgid "Domain block" msgstr "Blocco del dominio" -#: bookwyrm/models/book.py:250 +#: bookwyrm/models/book.py:253 msgid "Audiobook" msgstr "Audiolibro" -#: bookwyrm/models/book.py:251 +#: bookwyrm/models/book.py:254 msgid "eBook" msgstr "eBook" -#: bookwyrm/models/book.py:252 +#: bookwyrm/models/book.py:255 msgid "Graphic novel" msgstr "Graphic novel" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:256 msgid "Hardcover" msgstr "Copertina rigida" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:257 msgid "Paperback" msgstr "Brossura" @@ -131,33 +140,34 @@ msgstr "Brossura" msgid "Federated" msgstr "Federato" -#: bookwyrm/models/federated_server.py:12 +#: bookwyrm/models/federated_server.py:12 bookwyrm/models/link.py:71 #: bookwyrm/templates/settings/federation/edit_instance.html:44 #: bookwyrm/templates/settings/federation/instance.html:10 #: bookwyrm/templates/settings/federation/instance_list.html:23 +#: bookwyrm/templates/settings/link_domains/link_domains.html:27 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 @@ -165,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 @@ -173,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 @@ -189,6 +199,23 @@ msgstr "Followers" msgid "Private" msgstr "Privata" +#: bookwyrm/models/link.py:51 +msgid "Free" +msgstr "Libero" + +#: bookwyrm/models/link.py:52 +msgid "Purchasable" +msgstr "Acquistabile" + +#: bookwyrm/models/link.py:53 +msgid "Available for loan" +msgstr "Disponibile per il prestito" + +#: bookwyrm/models/link.py:70 +#: bookwyrm/templates/settings/link_domains/link_domains.html:23 +msgid "Approved" +msgstr "Approvato" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Recensioni" @@ -205,69 +232,73 @@ msgstr "Citazioni" msgid "Everything else" msgstr "Tutto il resto" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home Timeline" msgstr "La tua timeline" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home" msgstr "Home" -#: bookwyrm/settings.py:122 +#: bookwyrm/settings.py:174 msgid "Books Timeline" msgstr "Timeline dei libri" -#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Libri" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:248 msgid "English" msgstr "English (Inglese)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:249 msgid "Deutsch (German)" msgstr "Deutsch (Tedesco)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:250 msgid "Español (Spanish)" msgstr "Español (Spagnolo)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:251 msgid "Galego (Galician)" msgstr "Galego (Galiziano)" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:252 msgid "Italiano (Italian)" msgstr "Italiano (Italiano)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:253 msgid "Français (French)" msgstr "Français (Francese)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:254 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituano)" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:255 msgid "Norsk (Norwegian)" msgstr "Norsk (Norvegese)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:256 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portoghese Brasiliano)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:257 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portoghese europeo)" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:258 +msgid "Svenska (Swedish)" +msgstr "Svenska (Svedese)" + +#: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Cinese Semplificato)" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:260 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Cinese Tradizionale)" @@ -296,61 +327,57 @@ msgstr "Qualcosa è andato storto! Ci dispiace." msgid "About" msgstr "Informazioni su" -#: bookwyrm/templates/about/about.html:18 +#: bookwyrm/templates/about/about.html:19 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "Benvenuto su %(site_name)s!" -#: bookwyrm/templates/about/about.html:22 +#: 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 "%(site_name)s fa parte di BookWyrm, una rete di comunità indipendenti e autogestite per i lettori. Mentre puoi interagire apparentemente con gli utenti ovunque nella rete di BookWyrm, questa comunità è unica." -#: bookwyrm/templates/about/about.html:39 +#: bookwyrm/templates/about/about.html:40 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "%(title)s è il libro più amato di %(site_name)s, con un punteggio medio di %(rating)s su 5." -#: bookwyrm/templates/about/about.html:58 +#: bookwyrm/templates/about/about.html:59 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "Più %(site_name)s utenti vogliono leggere %(title)s rispetto a qualsiasi altro libro." -#: bookwyrm/templates/about/about.html:77 +#: bookwyrm/templates/about/about.html:78 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "%(title)s ha le valutazioni più divisive di ogni libro su %(site_name)s." -#: bookwyrm/templates/about/about.html:88 +#: 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 "Traccia la tue letture, parla di libri, scrivi recensioni, e scopri cosa leggere dopo. BookWyrm, sempre libero, anti-corporate, orientato alla comunità, è un software a misura d'uomo, progettato per rimanere piccolo e personale. Se hai richieste di funzionalità, segnalazioni di bug o grandi sogni, contatta e fai sentire la tua voce." -#: bookwyrm/templates/about/about.html:95 +#: bookwyrm/templates/about/about.html:96 msgid "Meet your admins" msgstr "Incontra gli amministratori" -#: bookwyrm/templates/about/about.html:98 +#: bookwyrm/templates/about/about.html:99 #, python-format -msgid "\n" -" %(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.\n" -" " -msgstr "\n" -"I moderatori e gli amministratori di %(site_name)s mantengono il sito attivo e funzionante, applicano il codice di condotta, e rispondono quando gli utenti segnalano spam o comportamenti non adeguati.\n" -" " +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 "I moderatori e gli amministratori di %(site_name)s mantengono il sito attivo e funzionante, applicano il codice di condotta, e rispondono quando gli utenti segnalano spam o comportamenti non adeguati." -#: bookwyrm/templates/about/about.html:112 +#: bookwyrm/templates/about/about.html:113 msgid "Moderator" msgstr "Moderatori" -#: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 msgid "Admin" msgstr "Admin" -#: bookwyrm/templates/about/about.html:130 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:13 +#: 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" @@ -409,7 +436,7 @@ msgid "Copy address" msgstr "Copia l'indirizzo" #: bookwyrm/templates/annual_summary/layout.html:68 -#: bookwyrm/templates/lists/list.html:230 +#: bookwyrm/templates/lists/list.html:269 msgid "Copied!" msgstr "Copiato!" @@ -478,7 +505,7 @@ msgstr "La loro lettura più breve quest’anno…" #: bookwyrm/templates/annual_summary/layout.html:245 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 -#: bookwyrm/templates/landing/large-book.html:25 +#: bookwyrm/templates/landing/large-book.html:26 #: bookwyrm/templates/landing/small-book.html:18 msgid "by" msgstr "di" @@ -530,61 +557,61 @@ msgstr "Tutti i libri %(display_name)s letti nel %(year)s" msgid "Edit Author" msgstr "Modifica autore" -#: bookwyrm/templates/author/author.html:40 +#: bookwyrm/templates/author/author.html:35 msgid "Author details" msgstr "Dettagli autore" -#: bookwyrm/templates/author/author.html:44 +#: bookwyrm/templates/author/author.html:39 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "Alias:" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:48 msgid "Born:" msgstr "Nascita:" -#: bookwyrm/templates/author/author.html:60 +#: bookwyrm/templates/author/author.html:55 msgid "Died:" msgstr "Morte:" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:65 msgid "External links" msgstr "Collegamenti esterni" -#: bookwyrm/templates/author/author.html:75 +#: bookwyrm/templates/author/author.html:70 msgid "Wikipedia" msgstr "Wikipedia" -#: bookwyrm/templates/author/author.html:83 +#: bookwyrm/templates/author/author.html:78 msgid "View ISNI record" msgstr "Visualizza record ISNI" -#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/author.html:83 #: bookwyrm/templates/author/sync_modal.html:5 #: bookwyrm/templates/book/book.html:122 #: bookwyrm/templates/book/sync_modal.html:5 msgid "Load data" msgstr "Carica dati" -#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/author/author.html:87 #: bookwyrm/templates/book/book.html:126 msgid "View on OpenLibrary" msgstr "Visualizza su OpenLibrary" -#: bookwyrm/templates/author/author.html:107 +#: bookwyrm/templates/author/author.html:102 #: bookwyrm/templates/book/book.html:140 msgid "View on Inventaire" msgstr "Visualizza su Inventaire" -#: bookwyrm/templates/author/author.html:123 +#: bookwyrm/templates/author/author.html:118 msgid "View on LibraryThing" msgstr "Visualizza su LibraryThing" -#: bookwyrm/templates/author/author.html:131 +#: bookwyrm/templates/author/author.html:126 msgid "View on Goodreads" msgstr "Visualizza su Goodreads" -#: bookwyrm/templates/author/author.html:145 +#: bookwyrm/templates/author/author.html:141 #, python-format msgid "Books by %(name)s" msgstr "Libri di %(name)s" @@ -614,7 +641,9 @@ msgid "Metadata" msgstr "Metadati" #: bookwyrm/templates/author/edit_author.html:35 -#: bookwyrm/templates/lists/form.html:9 bookwyrm/templates/shelf/form.html:9 +#: bookwyrm/templates/lists/form.html:9 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:14 +#: bookwyrm/templates/shelf/form.html:9 msgid "Name:" msgstr "Nome:" @@ -668,8 +697,11 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 +#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: 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 @@ -677,7 +709,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 #: bookwyrm/templates/settings/site.html:133 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:68 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 msgid "Save" @@ -689,13 +721,17 @@ msgstr "Salva" #: 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/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/settings/federation/instance.html:88 -#: bookwyrm/templates/snippets/report_modal.html:38 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 +#: bookwyrm/templates/snippets/report_modal.html:54 msgid "Cancel" msgstr "Cancella" @@ -707,9 +743,9 @@ msgstr "Il caricamento dei dati si collegherà a %(source_name)s\"%(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" +#: bookwyrm/templates/book/file_links/add_link_modal.html:6 +msgid "Add file link" +msgstr "Aggiungi collegamento al file" + +#: 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 "I link da domini sconosciuti dovranno essere approvati da un moderatore prima di essere aggiunti." + +#: bookwyrm/templates/book/file_links/add_link_modal.html:24 +msgid "URL:" +msgstr "URL:" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:29 +msgid "File type:" +msgstr "Tipo di file:" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:48 +msgid "Availability:" +msgstr "Disponibilità:" + +#: 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 "Modifica collegamenti" + +#: bookwyrm/templates/book/file_links/edit_links.html:11 +#, python-format +msgid "\n" +" Links for \"%(title)s\"\n" +" " +msgstr "\n" +" Link per \"%(title)s\"\n" +" " + +#: bookwyrm/templates/book/file_links/edit_links.html:32 +#: bookwyrm/templates/settings/link_domains/link_table.html:6 +msgid "URL" +msgstr "URL" + +#: bookwyrm/templates/book/file_links/edit_links.html:33 +#: bookwyrm/templates/settings/link_domains/link_table.html:7 +msgid "Added by" +msgstr "Aggiunto da" + +#: bookwyrm/templates/book/file_links/edit_links.html:34 +#: bookwyrm/templates/settings/link_domains/link_table.html:8 +msgid "Filetype" +msgstr "Tipo di file" + +#: bookwyrm/templates/book/file_links/edit_links.html:35 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 +#: bookwyrm/templates/settings/reports/report_links_table.html:5 +msgid "Domain" +msgstr "Dominio" + +#: bookwyrm/templates/book/file_links/edit_links.html:36 +#: bookwyrm/templates/import/import_status.html:127 +#: bookwyrm/templates/settings/announcements/announcements.html:38 +#: bookwyrm/templates/settings/federation/instance_list.html:46 +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 +#: bookwyrm/templates/settings/invites/status_filter.html:5 +#: bookwyrm/templates/settings/users/user_admin.html:34 +#: bookwyrm/templates/settings/users/user_info.html:20 +msgid "Status" +msgstr "Stato" + +#: bookwyrm/templates/book/file_links/edit_links.html:37 +#: bookwyrm/templates/settings/federation/instance.html:94 +#: bookwyrm/templates/settings/reports/report_links_table.html:6 +msgid "Actions" +msgstr "Azioni" + +#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 +msgid "Report spam" +msgstr "Segnala come spam" + +#: bookwyrm/templates/book/file_links/edit_links.html:97 +msgid "No links available for this book." +msgstr "Nessun collegamento disponibile per questo libro." + +#: bookwyrm/templates/book/file_links/edit_links.html:108 +#: bookwyrm/templates/book/file_links/links.html:18 +msgid "Add link to file" +msgstr "Aggiungi collegamento al file" + +#: bookwyrm/templates/book/file_links/file_link_page.html:6 +msgid "File Links" +msgstr "Collegamenti ai file" + +#: bookwyrm/templates/book/file_links/links.html:9 +msgid "Get a copy" +msgstr "Ottieni una copia" + +#: bookwyrm/templates/book/file_links/links.html:47 +msgid "No links available" +msgstr "Nessun collegamento disponibile" + +#: bookwyrm/templates/book/file_links/verification_modal.html:5 +msgid "Leaving BookWyrm" +msgstr "Esci da 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 "Questo link ti sta portando a: %(link_url)s.
    È qui che vuoi andare?" + +#: bookwyrm/templates/book/file_links/verification_modal.html:20 +msgid "Continue" +msgstr "Continua" + #: bookwyrm/templates/book/publisher_info.html:23 #, python-format msgid "%(format)s, %(pages)s pages" @@ -1110,8 +1259,8 @@ msgstr "Codice di conferma:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:93 -#: bookwyrm/templates/snippets/report_modal.html:37 +#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Invia" @@ -1417,16 +1566,11 @@ msgstr "Tutti i messaggi" msgid "You have no messages right now." msgstr "Non hai messaggi in questo momento." -#: bookwyrm/templates/feed/feed.html:28 -#, python-format -msgid "load 0 unread status(es)" -msgstr "carica 0 stato non letto/i" - -#: 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 "Non ci sono attività in questo momento! Prova a seguire qualcuno per iniziare" -#: bookwyrm/templates/feed/feed.html:52 +#: bookwyrm/templates/feed/feed.html:55 msgid "Alternatively, you can try enabling more status types" msgstr "In alternativa, puoi provare ad abilitare più tipi di stato" @@ -1515,7 +1659,7 @@ msgid "What are you reading?" msgstr "Cosa stai leggendo?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162 +#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:205 msgid "Search for a book" msgstr "Cerca un libro" @@ -1533,9 +1677,9 @@ msgstr "Puoi aggiungere libri quando inizi a usare %(site_name)s." #: bookwyrm/templates/get_started/books.html:17 #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166 +#: 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/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -1551,7 +1695,7 @@ msgid "Popular on %(site_name)s" msgstr "Popolare su %(site_name)s" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:179 +#: bookwyrm/templates/lists/list.html:222 msgid "No books found" msgstr "Nessun libro trovato" @@ -1656,7 +1800,7 @@ msgstr "Questa azione non può essere annullata" #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 #: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:14 msgid "Delete" msgstr "Elimina" @@ -1676,17 +1820,17 @@ msgstr "Descrizione gruppo:" msgid "Delete group" msgstr "Elimina gruppo" -#: bookwyrm/templates/groups/group.html:22 +#: bookwyrm/templates/groups/group.html:21 msgid "Members of this group can create group-curated lists." msgstr "I membri di questo gruppo possono creare liste curate dal gruppo." -#: bookwyrm/templates/groups/group.html:27 +#: bookwyrm/templates/groups/group.html:26 #: bookwyrm/templates/lists/create_form.html:5 #: bookwyrm/templates/lists/lists.html:20 msgid "Create List" msgstr "Crea Lista" -#: bookwyrm/templates/groups/group.html:40 +#: bookwyrm/templates/groups/group.html:39 msgid "This group has no lists" msgstr "Questo gruppo non ha alcuna lista" @@ -1694,15 +1838,15 @@ msgstr "Questo gruppo non ha alcuna lista" msgid "Edit group" msgstr "Modifica gruppo" -#: bookwyrm/templates/groups/members.html:12 +#: bookwyrm/templates/groups/members.html:11 msgid "Search to add a user" msgstr "Cerca o aggiungi utente" -#: bookwyrm/templates/groups/members.html:33 +#: bookwyrm/templates/groups/members.html:32 msgid "Leave group" msgstr "Lascia il gruppo" -#: bookwyrm/templates/groups/members.html:55 +#: bookwyrm/templates/groups/members.html:54 #: bookwyrm/templates/groups/suggested_users.html:35 #: bookwyrm/templates/snippets/suggested_users.html:31 #: bookwyrm/templates/user/user_preview.html:36 @@ -1858,19 +2002,10 @@ msgid "Review" msgstr "Recensione" #: bookwyrm/templates/import/import_status.html:124 +#: bookwyrm/templates/settings/link_domains/link_table.html:9 msgid "Book" msgstr "Libro" -#: bookwyrm/templates/import/import_status.html:127 -#: bookwyrm/templates/settings/announcements/announcements.html:38 -#: bookwyrm/templates/settings/federation/instance_list.html:46 -#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 -#: bookwyrm/templates/settings/invites/status_filter.html:5 -#: bookwyrm/templates/settings/users/user_admin.html:34 -#: bookwyrm/templates/settings/users/user_info.html:20 -msgid "Status" -msgstr "Stato" - #: bookwyrm/templates/import/import_status.html:135 msgid "Import preview unavailable." msgstr "Anteprima di importazione non disponibile." @@ -1909,7 +2044,8 @@ msgid "Approving a suggestion will permanently add the suggested book to your sh msgstr "Approvare un suggerimento aggiungerà in modo permanente il libro suggerito agli scaffali e assocerà dati, recensioni e valutazioni a quel libro." #: 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 "Approvato" @@ -1918,8 +2054,8 @@ msgid "Reject" msgstr "Rifiutato" #: bookwyrm/templates/import/tooltip.html:6 -msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." -msgstr "Puoi scaricare i tuoi dati Goodreads dalla pagina Importa/Esportazione del tuo account Goodreads." +msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." +msgstr "Puoi scaricare i tuoi dati Goodreads dalla pagina \"Importa/Esporta\" del tuo account Goodreads." #: bookwyrm/templates/import/troubleshoot.html:7 msgid "Failed items" @@ -2119,6 +2255,21 @@ msgstr "Supporta %(site_name)s su GitHub." msgstr "Il codice sorgente di BookWyrm è disponibile liberamente. Puoi contribuire o segnalare problemi su GitHub." +#: bookwyrm/templates/lists/add_item_modal.html:8 +#, python-format +msgid "Add \"%(title)s\" to this list" +msgstr "Aggiungi \"%(title)s\" a questa lista" + +#: bookwyrm/templates/lists/add_item_modal.html:12 +#, python-format +msgid "Suggest \"%(title)s\" for this list" +msgstr "Suggerisci \"%(title)s\" per questa lista" + +#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/list.html:249 +msgid "Suggest" +msgstr "Suggerisci" + #: bookwyrm/templates/lists/bookmark_button.html:30 msgid "Un-save" msgstr "Annulla salvataggio" @@ -2138,23 +2289,29 @@ msgstr "Creato e curato da %(username)s" msgid "Created by %(username)s" msgstr "Gestito da %(username)s" -#: bookwyrm/templates/lists/curate.html:11 +#: bookwyrm/templates/lists/curate.html:12 msgid "Curate" msgstr "Curato" -#: bookwyrm/templates/lists/curate.html:20 +#: bookwyrm/templates/lists/curate.html:21 msgid "Pending Books" msgstr "Libri in sospeso" -#: bookwyrm/templates/lists/curate.html:23 +#: bookwyrm/templates/lists/curate.html:24 msgid "You're all set!" msgstr "é tutto pronto!" -#: bookwyrm/templates/lists/curate.html:43 +#: bookwyrm/templates/lists/curate.html:45 +#: bookwyrm/templates/lists/list.html:83 +#, python-format +msgid "%(username)s says:" +msgstr "%(username)s dice:" + +#: bookwyrm/templates/lists/curate.html:55 msgid "Suggested by" msgstr "Suggerito da" -#: bookwyrm/templates/lists/curate.html:65 +#: bookwyrm/templates/lists/curate.html:77 msgid "Discard" msgstr "Scarta" @@ -2167,18 +2324,18 @@ msgstr "Vuoi eliminare la lista selezionata?" msgid "Edit List" msgstr "Modifica lista" -#: bookwyrm/templates/lists/embed-list.html:7 +#: bookwyrm/templates/lists/embed-list.html:8 #, python-format msgid "%(list_name)s, a list by %(owner)s" msgstr "%(list_name)s, una lista di %(owner)s" -#: bookwyrm/templates/lists/embed-list.html:17 +#: bookwyrm/templates/lists/embed-list.html:18 #, python-format msgid "on %(site_name)s" msgstr "su %(site_name)s" -#: bookwyrm/templates/lists/embed-list.html:26 -#: bookwyrm/templates/lists/list.html:42 +#: bookwyrm/templates/lists/embed-list.html:27 +#: bookwyrm/templates/lists/list.html:44 msgid "This list is currently empty" msgstr "Questa lista è attualmente vuota" @@ -2239,75 +2396,89 @@ msgstr "Crea un gruppo" msgid "Delete list" msgstr "Elimina lista" -#: bookwyrm/templates/lists/list.html:34 +#: bookwyrm/templates/lists/item_notes_field.html:7 +#: bookwyrm/templates/settings/federation/edit_instance.html:74 +msgid "Notes:" +msgstr "Note:" + +#: bookwyrm/templates/lists/item_notes_field.html:19 +msgid "An optional note that will be displayed with the book." +msgstr "Una nota opzionale che verrà visualizzata con il libro." + +#: bookwyrm/templates/lists/list.html:36 msgid "You successfully suggested a book for this list!" msgstr "Hai consigliato con successo un libro per questa lista!" -#: bookwyrm/templates/lists/list.html:36 +#: bookwyrm/templates/lists/list.html:38 msgid "You successfully added a book to this list!" msgstr "Hai consigliato con successo un libro per questa lista!" -#: bookwyrm/templates/lists/list.html:80 +#: bookwyrm/templates/lists/list.html:96 +msgid "Edit notes" +msgstr "Modifica note" + +#: bookwyrm/templates/lists/list.html:111 +msgid "Add notes" +msgstr "Aggiungi note" + +#: bookwyrm/templates/lists/list.html:123 #, python-format msgid "Added by %(username)s" msgstr "Aggiunto da %(username)s" -#: bookwyrm/templates/lists/list.html:95 +#: bookwyrm/templates/lists/list.html:138 msgid "List position" msgstr "Posizione elenco" -#: bookwyrm/templates/lists/list.html:101 +#: bookwyrm/templates/lists/list.html:144 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 msgid "Set" msgstr "Imposta" -#: bookwyrm/templates/lists/list.html:116 -#: bookwyrm/templates/snippets/remove_from_group_button.html:19 +#: bookwyrm/templates/lists/list.html:159 +#: bookwyrm/templates/snippets/remove_from_group_button.html:20 msgid "Remove" msgstr "Elimina" -#: bookwyrm/templates/lists/list.html:130 -#: bookwyrm/templates/lists/list.html:147 +#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:190 msgid "Sort List" msgstr "Ordine lista" -#: bookwyrm/templates/lists/list.html:140 +#: bookwyrm/templates/lists/list.html:183 msgid "Direction" msgstr "Direzione" -#: bookwyrm/templates/lists/list.html:154 +#: bookwyrm/templates/lists/list.html:197 msgid "Add Books" msgstr "Aggiungi Libri" -#: bookwyrm/templates/lists/list.html:156 +#: bookwyrm/templates/lists/list.html:199 msgid "Suggest Books" msgstr "Libri consigliati" -#: bookwyrm/templates/lists/list.html:167 +#: bookwyrm/templates/lists/list.html:210 msgid "search" msgstr "cerca" -#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:216 msgid "Clear search" msgstr "Cancella ricerca" -#: bookwyrm/templates/lists/list.html:178 +#: bookwyrm/templates/lists/list.html:221 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "Nessun libro trovato corrispondente alla query \"%(query)s\"" -#: bookwyrm/templates/lists/list.html:210 -msgid "Suggest" -msgstr "Suggerisci" - -#: bookwyrm/templates/lists/list.html:221 +#: bookwyrm/templates/lists/list.html:260 msgid "Embed this list on a website" msgstr "Incorpora questa lista in un sito web" -#: bookwyrm/templates/lists/list.html:229 +#: bookwyrm/templates/lists/list.html:268 msgid "Copy embed code" msgstr "Copia codice di incorporamento" -#: bookwyrm/templates/lists/list.html:231 +#: 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, una lista di %(owner)s su %(site_name)s" @@ -2788,6 +2959,11 @@ msgstr "Elimina queste date di lettura" msgid "Add read dates for \"%(title)s\"" msgstr "Aggiungi date di lettura per \"%(title)s\"" +#: bookwyrm/templates/report.html:5 +#: bookwyrm/templates/snippets/report_button.html:13 +msgid "Report" +msgstr "Report" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "Risultati da" @@ -2860,13 +3036,13 @@ msgstr "Falso" #: bookwyrm/templates/settings/announcements/announcement.html:46 #: bookwyrm/templates/settings/announcements/announcement_form.html:44 -#: bookwyrm/templates/settings/dashboard/dashboard.html:71 +#: bookwyrm/templates/settings/dashboard/dashboard.html:82 msgid "Start date:" msgstr "Data d'inizio:" #: bookwyrm/templates/settings/announcements/announcement.html:51 #: bookwyrm/templates/settings/announcements/announcement_form.html:54 -#: bookwyrm/templates/settings/dashboard/dashboard.html:77 +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "End date:" msgstr "Data di fine:" @@ -2894,7 +3070,7 @@ msgstr "Data evento:" #: bookwyrm/templates/settings/announcements/announcements.html:3 #: bookwyrm/templates/settings/announcements/announcements.html:5 -#: bookwyrm/templates/settings/layout.html:72 +#: bookwyrm/templates/settings/layout.html:76 msgid "Announcements" msgstr "Annunci" @@ -2934,7 +3110,7 @@ msgid "Dashboard" msgstr "Dashboard" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Total users" msgstr "Totale utenti" @@ -2961,36 +3137,43 @@ msgstr[1] "%(display_count)s reports aperti" #: bookwyrm/templates/settings/dashboard/dashboard.html:54 #, python-format +msgid "%(display_count)s domain needs review" +msgid_plural "%(display_count)s domains need review" +msgstr[0] "%(display_count)s dominio necessita di una revisione" +msgstr[1] "%(display_count)s domini necessitano di una revisione" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s richiesta d'invito" msgstr[1] "%(display_count)s richieste d'invito" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:76 msgid "Instance Activity" msgstr "Attività di Istanza" -#: bookwyrm/templates/settings/dashboard/dashboard.html:83 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Interval:" msgstr "Intervallo:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:87 +#: bookwyrm/templates/settings/dashboard/dashboard.html:98 msgid "Days" msgstr "Giorni" -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Weeks" msgstr "Settimane" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "User signup activity" msgstr "Attività di registrazione dell'utente" -#: bookwyrm/templates/settings/dashboard/dashboard.html:112 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Status activity" msgstr "Attività di stato" -#: bookwyrm/templates/settings/dashboard/dashboard.html:118 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "Works created" msgstr "Opere create" @@ -3025,10 +3208,6 @@ msgstr "Lista email bloccate" msgid "When someone tries to register with an email from this domain, no account will be created. The registration process will appear to have worked." msgstr "Quando qualcuno tenta di registrarsi con un'email da questo dominio, non verrà creato alcun account. Il processo di registrazione apparirà aver funzionato." -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 -msgid "Domain" -msgstr "Dominio" - #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:29 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:27 msgid "Options" @@ -3087,10 +3266,6 @@ msgstr "Software:" msgid "Version:" msgstr "Versione:" -#: bookwyrm/templates/settings/federation/edit_instance.html:74 -msgid "Notes:" -msgstr "Note:" - #: bookwyrm/templates/settings/federation/instance.html:19 msgid "Details" msgstr "Dettagli" @@ -3140,12 +3315,8 @@ msgstr "Modifica" msgid "No notes" msgstr "Nessuna nota" -#: bookwyrm/templates/settings/federation/instance.html:94 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 -msgid "Actions" -msgstr "Azioni" - #: bookwyrm/templates/settings/federation/instance.html:98 +#: bookwyrm/templates/settings/link_domains/link_domains.html:87 #: bookwyrm/templates/snippets/block_button.html:5 msgid "Block" msgstr "Blocca" @@ -3358,62 +3529,121 @@ msgstr "Moderazione" msgid "Reports" msgstr "Reports" -#: bookwyrm/templates/settings/layout.html:68 +#: bookwyrm/templates/settings/layout.html:67 +#: bookwyrm/templates/settings/link_domains/link_domains.html:5 +#: bookwyrm/templates/settings/link_domains/link_domains.html:7 +msgid "Link Domains" +msgstr "Link ai domini" + +#: bookwyrm/templates/settings/layout.html:72 msgid "Instance Settings" msgstr "Impostazioni dell'istanza" -#: bookwyrm/templates/settings/layout.html:76 +#: bookwyrm/templates/settings/layout.html:80 #: bookwyrm/templates/settings/site.html:4 #: bookwyrm/templates/settings/site.html:6 msgid "Site Settings" msgstr "Impostazioni Sito" -#: bookwyrm/templates/settings/reports/report.html:5 -#: bookwyrm/templates/settings/reports/report.html:8 -#: bookwyrm/templates/settings/reports/report_preview.html:6 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5 #, python-format -msgid "Report #%(report_id)s: %(username)s" -msgstr "Report #%(report_id)s: %(username)s" +msgid "Set display name for %(url)s" +msgstr "Imposta il nome visualizzato per %(url)s" -#: bookwyrm/templates/settings/reports/report.html:9 +#: 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 "I collegamenti a domini devono essere approvati prima di essere visualizzati nelle pagine dei libri. Si prega di assicurarsi che i domini non ospitino spam, codice dannoso o link ingannevoli prima dell'approvazione." + +#: bookwyrm/templates/settings/link_domains/link_domains.html:45 +msgid "Set display name" +msgstr "Imposta nome visualizzato" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:53 +msgid "View links" +msgstr "Visualizza collegamenti" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:96 +msgid "No domains currently approved" +msgstr "Nessun dominio attualmente approvato" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:98 +msgid "No domains currently pending" +msgstr "Nessun dominio attualmente in attesa" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:100 +msgid "No domains currently blocked" +msgstr "Nessun dominio attualmente bloccato" + +#: bookwyrm/templates/settings/link_domains/link_table.html:39 +msgid "No links available for this domain." +msgstr "Nessun collegamento disponibile per questo libro." + +#: bookwyrm/templates/settings/reports/report.html:11 msgid "Back to reports" msgstr "Tornare all'elenco dei report" #: 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:40 +msgid "Status has been deleted" +msgstr "Lo stato è stato eliminato" + +#: bookwyrm/templates/settings/reports/report.html:52 +msgid "Reported links" +msgstr "Collegamenti segnalati" + +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Commenti del moderatore" -#: bookwyrm/templates/settings/reports/report.html:41 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Commenta" -#: bookwyrm/templates/settings/reports/report.html:46 -msgid "Reported statuses" -msgstr "Stati segnalati" +#: bookwyrm/templates/settings/reports/report_header.html:6 +#, python-format +msgid "Report #%(report_id)s: Status posted by @%(username)s" +msgstr "Report #%(report_id)s: Stato pubblicato da @%(username)s" -#: bookwyrm/templates/settings/reports/report.html:48 -msgid "No statuses reported" -msgstr "Nessuno stato segnalato" +#: bookwyrm/templates/settings/reports/report_header.html:12 +#, python-format +msgid "Report #%(report_id)s: Link added by @%(username)s" +msgstr "Report #%(report_id)s: Collegamento aggiunto da @%(username)s" -#: bookwyrm/templates/settings/reports/report.html:54 -msgid "Status has been deleted" -msgstr "Lo stato è stato eliminato" +#: bookwyrm/templates/settings/reports/report_header.html:18 +#, python-format +msgid "Report #%(report_id)s: User @%(username)s" +msgstr "Report #%(report_id)s: %(username)s" -#: bookwyrm/templates/settings/reports/report_preview.html:13 +#: bookwyrm/templates/settings/reports/report_links_table.html:17 +msgid "Block domain" +msgstr "Domini bloccati" + +#: bookwyrm/templates/settings/reports/report_preview.html:17 msgid "No notes provided" msgstr "Nessuna nota disponibile" -#: bookwyrm/templates/settings/reports/report_preview.html:20 +#: bookwyrm/templates/settings/reports/report_preview.html:24 #, python-format -msgid "Reported by %(username)s" +msgid "Reported by @%(username)s" msgstr "Segnalato da %(username)s" -#: bookwyrm/templates/settings/reports/report_preview.html:30 +#: bookwyrm/templates/settings/reports/report_preview.html:34 msgid "Re-open" msgstr "Riapri" -#: bookwyrm/templates/settings/reports/report_preview.html:32 +#: bookwyrm/templates/settings/reports/report_preview.html:36 msgid "Resolve" msgstr "Risolvi" @@ -3541,7 +3771,7 @@ msgid "Invite request text:" msgstr "Testo della richiesta di invito:" #: bookwyrm/templates/settings/users/delete_user_form.html:5 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:31 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:32 msgid "Permanently delete user" msgstr "Elimina definitivamente utente" @@ -3651,15 +3881,19 @@ msgstr "Visualizza istanza" msgid "Permanently deleted" msgstr "Elimina definitivamente" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:20 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 +msgid "User Actions" +msgstr "Azioni dell'utente" + +#: bookwyrm/templates/settings/users/user_moderation_actions.html:21 msgid "Suspend user" msgstr "Sospendere utente" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:25 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:26 msgid "Un-suspend user" msgstr "Annulla sospensione utente" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:47 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:48 msgid "Access level:" msgstr "Livello di accesso:" @@ -3724,15 +3958,15 @@ msgstr "Completato" msgid "This shelf is empty." msgstr "Questo scaffale è vuoto." -#: bookwyrm/templates/snippets/add_to_group_button.html:15 +#: bookwyrm/templates/snippets/add_to_group_button.html:16 msgid "Invite" msgstr "Invita" -#: bookwyrm/templates/snippets/add_to_group_button.html:24 +#: bookwyrm/templates/snippets/add_to_group_button.html:25 msgid "Uninvite" msgstr "Revoca invito" -#: bookwyrm/templates/snippets/add_to_group_button.html:28 +#: bookwyrm/templates/snippets/add_to_group_button.html:29 #, python-format msgid "Remove @%(username)s" msgstr "Rimuovi %(username)s" @@ -3797,14 +4031,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" @@ -3820,7 +4054,7 @@ msgstr "Attenzione Spoiler!" msgid "Include spoiler alert" msgstr "Includi avviso spoiler" -#: bookwyrm/templates/snippets/create_status/layout.html:48 +#: bookwyrm/templates/snippets/create_status/layout.html:47 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Commenta:" @@ -3829,33 +4063,33 @@ msgstr "Commenta:" msgid "Post" msgstr "Pubblica" -#: bookwyrm/templates/snippets/create_status/quotation.html:17 +#: bookwyrm/templates/snippets/create_status/quotation.html:16 msgid "Quote:" msgstr "Citazione:" -#: bookwyrm/templates/snippets/create_status/quotation.html:25 +#: bookwyrm/templates/snippets/create_status/quotation.html:24 #, python-format msgid "An excerpt from '%(book_title)s'" msgstr "Un estratto da '%(book_title)s'" -#: bookwyrm/templates/snippets/create_status/quotation.html:32 +#: bookwyrm/templates/snippets/create_status/quotation.html:31 msgid "Position:" msgstr "Posizione:" -#: bookwyrm/templates/snippets/create_status/quotation.html:45 +#: bookwyrm/templates/snippets/create_status/quotation.html:44 msgid "On page:" msgstr "Alla pagina:" -#: bookwyrm/templates/snippets/create_status/quotation.html:51 +#: bookwyrm/templates/snippets/create_status/quotation.html:50 msgid "At percent:" msgstr "Alla percentuale:" -#: bookwyrm/templates/snippets/create_status/review.html:25 +#: bookwyrm/templates/snippets/create_status/review.html:24 #, python-format msgid "Your review of '%(book_title)s'" msgstr "La tua recensione di '%(book_title)s'" -#: bookwyrm/templates/snippets/create_status/review.html:40 +#: bookwyrm/templates/snippets/create_status/review.html:39 msgid "Review:" msgstr "Recensione:" @@ -3882,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" @@ -3909,7 +4143,7 @@ msgid "Unfollow" msgstr "Smetti di seguire" #: bookwyrm/templates/snippets/follow_request_buttons.html:7 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:8 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:9 msgid "Accept" msgstr "Accetta" @@ -3949,15 +4183,15 @@ msgstr[1] "valutato %(title)s: %(display_ratin #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Recensione di \"%(book_title)s\" (%(display_rating)s stella): %(review_title)s" -msgstr[1] "Recensione di \"%(book_title)s\" (%(display_rating)s stelle): %(review_title)s" +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] "Recensione di \"%(book_title)s\" (%(display_rating)s stella): %(review_title)s" +msgstr[1] "Recensione di \"%(book_title)s\" (%(display_rating)s stelle): %(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 "Recensione di \"%(book_title)s\": %(review_title)s" +msgid "Review of \"%(book_title)s\": %(review_title)s" +msgstr "Recensione di \"%(book_title)s\": %(review_title)s" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4027,11 +4261,11 @@ msgstr "Solo Followers" msgid "Post privacy" msgstr "Privacy dei post" -#: bookwyrm/templates/snippets/rate_action.html:4 +#: bookwyrm/templates/snippets/rate_action.html:5 msgid "Leave a rating" msgstr "Lascia una recensione" -#: bookwyrm/templates/snippets/rate_action.html:19 +#: bookwyrm/templates/snippets/rate_action.html:20 msgid "Rate" msgstr "Vota" @@ -4063,21 +4297,31 @@ msgstr "Vuoi leggere \"%(book_title)s \"" msgid "Sign Up" msgstr "Iscriviti" -#: bookwyrm/templates/snippets/report_button.html:13 -msgid "Report" -msgstr "Report" +#: bookwyrm/templates/snippets/report_modal.html:8 +#, python-format +msgid "Report @%(username)s's status" +msgstr "Segnala lo stato di%(username)s" -#: bookwyrm/templates/snippets/report_modal.html:6 +#: bookwyrm/templates/snippets/report_modal.html:10 +#, python-format +msgid "Report %(domain)s link" +msgstr "Segnala il link %(domain)s" + +#: bookwyrm/templates/snippets/report_modal.html:12 #, python-format msgid "Report @%(username)s" msgstr "Report%(username)s" -#: bookwyrm/templates/snippets/report_modal.html:23 +#: bookwyrm/templates/snippets/report_modal.html:34 #, python-format msgid "This report will be sent to %(site_name)s's moderators for review." msgstr "Questo report verrà inviato ai moderatori di %(site_name)s per la revisione." -#: bookwyrm/templates/snippets/report_modal.html:26 +#: bookwyrm/templates/snippets/report_modal.html:36 +msgid "Links from this domain will be removed until your report has been reviewed." +msgstr "I collegamenti da questo dominio verranno rimossi fino a quando il rapporto non sarà stato rivisto." + +#: bookwyrm/templates/snippets/report_modal.html:41 msgid "More info about this report:" msgstr "Maggiori informazioni su questo report:" @@ -4115,29 +4359,29 @@ msgstr "Rimuovi da %(name)s" msgid "Finish reading" msgstr "Finito di leggere" -#: bookwyrm/templates/snippets/status/content_status.html:75 +#: bookwyrm/templates/snippets/status/content_status.html:73 msgid "Content warning" msgstr "Avviso sul contenuto" -#: bookwyrm/templates/snippets/status/content_status.html:82 +#: bookwyrm/templates/snippets/status/content_status.html:80 msgid "Show status" msgstr "Mostra stato" -#: bookwyrm/templates/snippets/status/content_status.html:104 +#: bookwyrm/templates/snippets/status/content_status.html:102 #, python-format msgid "(Page %(page)s)" msgstr "(Pagina %(page)s)" -#: bookwyrm/templates/snippets/status/content_status.html:106 +#: bookwyrm/templates/snippets/status/content_status.html:104 #, python-format msgid "(%(percent)s%%)" msgstr "(%(percent)s%%)" -#: bookwyrm/templates/snippets/status/content_status.html:128 +#: bookwyrm/templates/snippets/status/content_status.html:126 msgid "Open image in new window" msgstr "Apri immagine in una nuova finestra" -#: bookwyrm/templates/snippets/status/content_status.html:147 +#: bookwyrm/templates/snippets/status/content_status.html:145 msgid "Hide status" msgstr "Nascondi lo stato" @@ -4179,7 +4423,7 @@ msgstr "valutato %(book)s:" #: bookwyrm/templates/snippets/status/headers/read.html:10 #, python-format msgid "finished reading %(book)s by %(author_name)s" -msgstr "lettura del libro %(book)s di %(author_name)s completata" +msgstr "ha finito di leggere %(book)s di %(author_name)s" #: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format @@ -4189,7 +4433,7 @@ msgstr "lettura di %(book)s completata" #: bookwyrm/templates/snippets/status/headers/reading.html:10 #, python-format msgid "started reading %(book)s by %(author_name)s" -msgstr "lettura del libro %(book)s di %(author_name)s iniziata" +msgstr "ha iniziato a leggere %(book)s di %(author_name)s" #: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format @@ -4209,7 +4453,7 @@ msgstr "recensito %(book)s" #: bookwyrm/templates/snippets/status/headers/to_read.html:10 #, python-format msgid "wants to read %(book)s by %(author_name)s" -msgstr "da leggere %(book)s da %(author_name)s" +msgstr "vuole leggere %(book)s di %(author_name)s" #: bookwyrm/templates/snippets/status/headers/to_read.html:17 #, python-format @@ -4362,7 +4606,7 @@ msgstr "Visualizza tutti i libri" #: bookwyrm/templates/user/user.html:58 #, python-format msgid "%(current_year)s Reading Goal" -msgstr "Obiettivo di lettura del %(current_year)s" +msgstr "Obiettivo di lettura %(current_year)s" #: bookwyrm/templates/user/user.html:65 msgid "User Activity" @@ -4430,8 +4674,15 @@ msgstr "Non è stato trovato nessun utente con questo indirizzo email." msgid "A password reset link was sent to {email}" msgstr "Il link per reimpostare la password è stato inviato a {email}" -#: bookwyrm/views/rss_feed.py:35 +#: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" msgstr "Aggiornamenti di stato da {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] "Carica %(count)d stato non letto" +msgstr[1] "Carica %(count)d stati non letti" + diff --git a/locale/lt_LT/LC_MESSAGES/django.mo b/locale/lt_LT/LC_MESSAGES/django.mo index c5862461b..d9043ac25 100644 Binary files a/locale/lt_LT/LC_MESSAGES/django.mo and b/locale/lt_LT/LC_MESSAGES/django.mo differ diff --git a/locale/lt_LT/LC_MESSAGES/django.po b/locale/lt_LT/LC_MESSAGES/django.po index a057889e5..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-13 16:54+0000\n" -"PO-Revision-Date: 2022-01-14 00:49\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,64 +17,72 @@ 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:351 +#: 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:365 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Diena" -#: bookwyrm/forms.py:366 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Savaitė" -#: bookwyrm/forms.py:367 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Mėnuo" -#: bookwyrm/forms.py:368 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "Galiojimas nesibaigia" -#: bookwyrm/forms.py:372 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} naudoja" -#: bookwyrm/forms.py:373 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Neribota" -#: bookwyrm/forms.py:469 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Kaip pridėta į sąrašą" -#: bookwyrm/forms.py:470 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Knygos antraštė" -#: bookwyrm/forms.py:471 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:33 +#: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Įvertinimas" -#: bookwyrm/forms.py:473 bookwyrm/templates/lists/list.html:134 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Rūšiuoti pagal" -#: bookwyrm/forms.py:477 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Didėjančia tvarka" -#: bookwyrm/forms.py:478 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Mažėjančia tvarka" -#: bookwyrm/forms.py:491 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." -msgstr "" +msgstr "Skaitymo pabaigos data negali būti prieš skaitymo pradžios datą." #: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 msgid "Error loading book" @@ -84,8 +92,9 @@ msgstr "Klaida įkeliant knygą" msgid "Could not find a match for book" msgstr "Nepavyko rasti tokios knygos" -#: bookwyrm/models/base_model.py:17 +#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 +#: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "Laukiama" @@ -105,23 +114,23 @@ msgstr "Moderatorius ištrynė" msgid "Domain block" msgstr "Blokuoti pagal domeną" -#: bookwyrm/models/book.py:250 +#: bookwyrm/models/book.py:253 msgid "Audiobook" msgstr "Audioknyga" -#: bookwyrm/models/book.py:251 +#: bookwyrm/models/book.py:254 msgid "eBook" msgstr "Elektroninė knyga" -#: bookwyrm/models/book.py:252 +#: bookwyrm/models/book.py:255 msgid "Graphic novel" msgstr "Grafinė novelė" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:256 msgid "Hardcover" msgstr "Knyga kietais viršeliais" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:257 msgid "Paperback" msgstr "Knyga minkštais viršeliais" @@ -131,33 +140,34 @@ msgstr "Knyga minkštais viršeliais" msgid "Federated" msgstr "Susijungę" -#: bookwyrm/models/federated_server.py:12 +#: bookwyrm/models/federated_server.py:12 bookwyrm/models/link.py:71 #: bookwyrm/templates/settings/federation/edit_instance.html:44 #: bookwyrm/templates/settings/federation/instance.html:10 #: bookwyrm/templates/settings/federation/instance_list.html:23 +#: bookwyrm/templates/settings/link_domains/link_domains.html:27 msgid "Blocked" -msgstr "Užblokuota" +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 @@ -165,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 @@ -173,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 @@ -189,6 +199,23 @@ msgstr "Sekėjai" msgid "Private" msgstr "Privatu" +#: bookwyrm/models/link.py:51 +msgid "Free" +msgstr "Nemokama" + +#: bookwyrm/models/link.py:52 +msgid "Purchasable" +msgstr "Galima nusipirkti" + +#: bookwyrm/models/link.py:53 +msgid "Available for loan" +msgstr "Galima pasiskolinti" + +#: bookwyrm/models/link.py:70 +#: bookwyrm/templates/settings/link_domains/link_domains.html:23 +msgid "Approved" +msgstr "Patvirtinti puslapiai" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Apžvalgos" @@ -205,69 +232,73 @@ msgstr "Citatos" msgid "Everything else" msgstr "Visa kita" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home Timeline" msgstr "Pagrindinė siena" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home" msgstr "Pagrindinis" -#: bookwyrm/settings.py:122 +#: bookwyrm/settings.py:174 msgid "Books Timeline" msgstr "Knygų siena" -#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Knygos" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:248 msgid "English" msgstr "English (Anglų)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:249 msgid "Deutsch (German)" msgstr "Deutsch (Vokiečių)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:250 msgid "Español (Spanish)" msgstr "Español (Ispanų)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:251 msgid "Galego (Galician)" msgstr "Galego (galisų)" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:252 msgid "Italiano (Italian)" -msgstr "" +msgstr "Italų (Italian)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:253 msgid "Français (French)" msgstr "Français (Prancūzų)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:254 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:255 msgid "Norsk (Norwegian)" -msgstr "" +msgstr "Norvegų (Norwegian)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:256 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português brasileiro (Brazilijos portugalų)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:257 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Europos portugalų)" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:258 +msgid "Svenska (Swedish)" +msgstr "Svenska (Švedų)" + +#: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Supaprastinta kinų)" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:260 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Tradicinė kinų)" @@ -294,61 +325,59 @@ msgstr "Kažkas nepavyko. Atsiprašome." #: bookwyrm/templates/about/about.html:9 #: bookwyrm/templates/about/layout.html:35 msgid "About" -msgstr "" +msgstr "Apie" -#: bookwyrm/templates/about/about.html:18 +#: bookwyrm/templates/about/about.html:19 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "Sveiki atvykę į %(site_name)s!" -#: bookwyrm/templates/about/about.html:22 +#: 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 yra BookWyrmdalis, tinklo nepriklausomų skaitytojų bendruomenių. Jūs galite bendrauti su nariais iš šio BookWyrm tinklo, tačiau ši bendruomenė yra unikali." -#: bookwyrm/templates/about/about.html:39 +#: bookwyrm/templates/about/about.html:40 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." -msgstr "" +msgstr "%(title)s yra %(site_name)s's mėgstamiausia knyga, kurios vidutinis įvertinimas yra %(rating)s iš 5." -#: bookwyrm/templates/about/about.html:58 +#: bookwyrm/templates/about/about.html:59 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." -msgstr "" +msgstr "Daugiau %(site_name)s narių nori perskaityti %(title)s negu bet kurią kitą knygą." -#: bookwyrm/templates/about/about.html:77 +#: bookwyrm/templates/about/about.html:78 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." -msgstr "" +msgstr "%(title)s labiausiai kontroversiškai reitinguota %(site_name)s." -#: bookwyrm/templates/about/about.html:88 +#: 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:95 +#: bookwyrm/templates/about/about.html:96 msgid "Meet your admins" -msgstr "" +msgstr "Šio serverio administratoriai" -#: bookwyrm/templates/about/about.html:98 +#: bookwyrm/templates/about/about.html:99 #, python-format -msgid "\n" -" %(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.\n" -" " -msgstr "" +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 "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:112 +#: bookwyrm/templates/about/about.html:113 msgid "Moderator" -msgstr "" +msgstr "Moderatorius" -#: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 msgid "Admin" msgstr "Administravimas" -#: bookwyrm/templates/about/about.html:130 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:13 +#: 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ę" @@ -360,15 +389,15 @@ msgstr "Elgesio kodeksas" #: bookwyrm/templates/about/layout.html:11 msgid "Active users:" -msgstr "" +msgstr "Aktyvūs vartotojai:" #: bookwyrm/templates/about/layout.html:15 msgid "Statuses posted:" -msgstr "" +msgstr "Publikuotos būsenos:" #: bookwyrm/templates/about/layout.html:19 msgid "Software version:" -msgstr "" +msgstr "Serverio programinės įrangos versija:" #: bookwyrm/templates/about/layout.html:30 #: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 @@ -407,7 +436,7 @@ msgid "Copy address" msgstr "Kopijuoti adresą" #: bookwyrm/templates/annual_summary/layout.html:68 -#: bookwyrm/templates/lists/list.html:230 +#: bookwyrm/templates/lists/list.html:269 msgid "Copied!" msgstr "Nukopijuota" @@ -442,7 +471,7 @@ msgstr "Jei padarysite puslapį privačiu - senas raktas nustos galioti. Ateityj #: bookwyrm/templates/annual_summary/layout.html:112 #, python-format msgid "Sadly %(display_name)s didn’t finish any books in %(year)s" -msgstr "" +msgstr "Gaila, bet %(display_name)s %(year)s metais neperskaitė nei vienos knygos" #: bookwyrm/templates/annual_summary/layout.html:118 #, python-format @@ -480,7 +509,7 @@ msgstr "Trumpiausias skaitinys tais metais…" #: bookwyrm/templates/annual_summary/layout.html:245 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 -#: bookwyrm/templates/landing/large-book.html:25 +#: bookwyrm/templates/landing/large-book.html:26 #: bookwyrm/templates/landing/small-book.html:18 msgid "by" msgstr " " @@ -536,61 +565,61 @@ msgstr "Visos %(display_name)s %(year)s metais perskaitytos knygos" msgid "Edit Author" msgstr "Keisti autorių" -#: bookwyrm/templates/author/author.html:40 +#: bookwyrm/templates/author/author.html:35 msgid "Author details" msgstr "Informacija apie autorių" -#: bookwyrm/templates/author/author.html:44 +#: bookwyrm/templates/author/author.html:39 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "Pseudonimai:" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:48 msgid "Born:" msgstr "Gimęs:" -#: bookwyrm/templates/author/author.html:60 +#: bookwyrm/templates/author/author.html:55 msgid "Died:" msgstr "Mirė:" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:65 msgid "External links" msgstr "Išorinės nuorodos" -#: bookwyrm/templates/author/author.html:75 +#: bookwyrm/templates/author/author.html:70 msgid "Wikipedia" msgstr "Wikipedia" -#: bookwyrm/templates/author/author.html:83 +#: bookwyrm/templates/author/author.html:78 msgid "View ISNI record" msgstr "Peržiūrėti ISNI įrašą" -#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/author.html:83 #: bookwyrm/templates/author/sync_modal.html:5 #: bookwyrm/templates/book/book.html:122 #: bookwyrm/templates/book/sync_modal.html:5 msgid "Load data" msgstr "Įkelti duomenis" -#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/author/author.html:87 #: bookwyrm/templates/book/book.html:126 msgid "View on OpenLibrary" msgstr "Žiūrėti „OpenLibrary“" -#: bookwyrm/templates/author/author.html:107 +#: bookwyrm/templates/author/author.html:102 #: bookwyrm/templates/book/book.html:140 msgid "View on Inventaire" msgstr "Žiūrėti „Inventaire“" -#: bookwyrm/templates/author/author.html:123 +#: bookwyrm/templates/author/author.html:118 msgid "View on LibraryThing" msgstr "Žiūrėti „LibraryThing“" -#: bookwyrm/templates/author/author.html:131 +#: bookwyrm/templates/author/author.html:126 msgid "View on Goodreads" msgstr "Žiūrėti „Goodreads“" -#: bookwyrm/templates/author/author.html:145 +#: bookwyrm/templates/author/author.html:141 #, python-format msgid "Books by %(name)s" msgstr "%(name)s knygos" @@ -620,7 +649,9 @@ msgid "Metadata" msgstr "Meta duomenys" #: bookwyrm/templates/author/edit_author.html:35 -#: bookwyrm/templates/lists/form.html:9 bookwyrm/templates/shelf/form.html:9 +#: bookwyrm/templates/lists/form.html:9 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:14 +#: bookwyrm/templates/shelf/form.html:9 msgid "Name:" msgstr "Vardas:" @@ -674,8 +705,11 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 +#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: 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 @@ -683,7 +717,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 #: bookwyrm/templates/settings/site.html:133 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:68 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 msgid "Save" @@ -695,13 +729,17 @@ msgstr "Išsaugoti" #: 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/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/settings/federation/instance.html:88 -#: bookwyrm/templates/snippets/report_modal.html:38 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 +#: bookwyrm/templates/snippets/report_modal.html:54 msgid "Cancel" msgstr "Atšaukti" @@ -713,9 +751,9 @@ msgstr "Duomenų įkėlimas prisijungs prie %(source_name)s ir #: bookwyrm/templates/author/sync_modal.html:22 #: bookwyrm/templates/book/edit/edit_book.html:108 #: bookwyrm/templates/book/sync_modal.html:22 -#: bookwyrm/templates/groups/members.html:30 +#: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 -#: bookwyrm/templates/snippets/remove_from_group_button.html:16 +#: bookwyrm/templates/snippets/remove_from_group_button.html:17 msgid "Confirm" msgstr "Patvirtinti" @@ -801,8 +839,8 @@ msgid "Places" msgstr "Vietos" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 -#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: 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 @@ -816,7 +854,8 @@ msgstr "Pridėti prie sąrašo" #: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/list.html:208 +#: 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" @@ -918,7 +957,7 @@ msgid "Back" msgstr "Atgal" #: bookwyrm/templates/book/edit/edit_book_form.html:21 -#: bookwyrm/templates/snippets/create_status/review.html:16 +#: bookwyrm/templates/snippets/create_status/review.html:15 msgid "Title:" msgstr "Pavadinimas:" @@ -996,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:" @@ -1034,20 +1073,131 @@ 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" +#: bookwyrm/templates/book/file_links/add_link_modal.html:6 +msgid "Add file link" +msgstr "Pridėti nuorodą į failą" + +#: 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 "Nuorodos iš nežinomų domenų turi būti patvirtintos moderatorių." + +#: bookwyrm/templates/book/file_links/add_link_modal.html:24 +msgid "URL:" +msgstr "Nuoroda:" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:29 +msgid "File type:" +msgstr "Failo tipas:" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:48 +msgid "Availability:" +msgstr "Prieinamumas:" + +#: 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 "Redaguoti nuorodas" + +#: bookwyrm/templates/book/file_links/edit_links.html:11 +#, python-format +msgid "\n" +" Links for \"%(title)s\"\n" +" " +msgstr "\"%(title)s\" nuorodos\n" +" " + +#: bookwyrm/templates/book/file_links/edit_links.html:32 +#: bookwyrm/templates/settings/link_domains/link_table.html:6 +msgid "URL" +msgstr "Nuoroda" + +#: bookwyrm/templates/book/file_links/edit_links.html:33 +#: bookwyrm/templates/settings/link_domains/link_table.html:7 +msgid "Added by" +msgstr "Pridėjo" + +#: bookwyrm/templates/book/file_links/edit_links.html:34 +#: bookwyrm/templates/settings/link_domains/link_table.html:8 +msgid "Filetype" +msgstr "Failo tipas" + +#: bookwyrm/templates/book/file_links/edit_links.html:35 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 +#: bookwyrm/templates/settings/reports/report_links_table.html:5 +msgid "Domain" +msgstr "Domenas" + +#: bookwyrm/templates/book/file_links/edit_links.html:36 +#: bookwyrm/templates/import/import_status.html:127 +#: bookwyrm/templates/settings/announcements/announcements.html:38 +#: bookwyrm/templates/settings/federation/instance_list.html:46 +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 +#: bookwyrm/templates/settings/invites/status_filter.html:5 +#: bookwyrm/templates/settings/users/user_admin.html:34 +#: bookwyrm/templates/settings/users/user_info.html:20 +msgid "Status" +msgstr "Būsena" + +#: bookwyrm/templates/book/file_links/edit_links.html:37 +#: bookwyrm/templates/settings/federation/instance.html:94 +#: bookwyrm/templates/settings/reports/report_links_table.html:6 +msgid "Actions" +msgstr "Veiksmai" + +#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 +msgid "Report spam" +msgstr "Pranešti apie brukalą" + +#: bookwyrm/templates/book/file_links/edit_links.html:97 +msgid "No links available for this book." +msgstr "Šiai knygai nuorodų nėra." + +#: bookwyrm/templates/book/file_links/edit_links.html:108 +#: bookwyrm/templates/book/file_links/links.html:18 +msgid "Add link to file" +msgstr "Pridėti nuorodą į failą" + +#: bookwyrm/templates/book/file_links/file_link_page.html:6 +msgid "File Links" +msgstr "Nuorodos į failus" + +#: bookwyrm/templates/book/file_links/links.html:9 +msgid "Get a copy" +msgstr "Gauti kopiją" + +#: bookwyrm/templates/book/file_links/links.html:47 +msgid "No links available" +msgstr "Nuorodų nėra" + +#: bookwyrm/templates/book/file_links/verification_modal.html:5 +msgid "Leaving BookWyrm" +msgstr "Tęsti naršymą ne 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 "Nuoroda veda į: %(link_url)s.
    Ar tikrai norite ten nueiti?" + +#: bookwyrm/templates/book/file_links/verification_modal.html:20 +msgid "Continue" +msgstr "Tęsti" + #: bookwyrm/templates/book/publisher_info.html:23 #, python-format msgid "%(format)s, %(pages)s pages" @@ -1118,8 +1268,8 @@ msgstr "Patvirtinimo kodas:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:93 -#: bookwyrm/templates/snippets/report_modal.html:37 +#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Siųsti" @@ -1163,7 +1313,7 @@ msgstr "Bendruomenė" #: bookwyrm/templates/directory/directory.html:17 msgid "Make your profile discoverable to other BookWyrm users." -msgstr "Savo paskyrą leiskite atrasti kitiems „BookWyrm“ nariems." +msgstr "Savo paskyrą leiskite atrasti kitiems „BookWyrm“ nariams." #: bookwyrm/templates/directory/directory.html:21 msgid "Join Directory" @@ -1429,16 +1579,11 @@ msgstr "Visos žinutės" msgid "You have no messages right now." msgstr "Neturite žinučių." -#: bookwyrm/templates/feed/feed.html:28 -#, python-format -msgid "load 0 unread status(es)" -msgstr "įkelti 0 neperskaitytas būsenas" - -#: 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 "Šiuo metu įrašų nėra. Norėdami matyti, sekite narį." -#: bookwyrm/templates/feed/feed.html:52 +#: bookwyrm/templates/feed/feed.html:55 msgid "Alternatively, you can try enabling more status types" msgstr "Taip pat galite pasirinkti daugiau būsenos tipų" @@ -1510,7 +1655,7 @@ msgstr "Norimos perskaityti" #: bookwyrm/templates/snippets/translated_shelf_name.html:7 #: bookwyrm/templates/user/user.html:34 msgid "Currently Reading" -msgstr "Šiuo metu skaitoma" +msgstr "Šiuo metu skaitomos" #: bookwyrm/templates/get_started/book_preview.html:12 #: bookwyrm/templates/shelf/shelf.html:88 @@ -1520,14 +1665,14 @@ msgstr "Šiuo metu skaitoma" #: bookwyrm/templates/snippets/translated_shelf_name.html:9 #: bookwyrm/templates/user/user.html:35 msgid "Read" -msgstr "Perskaityta" +msgstr "Perskaitytos" #: bookwyrm/templates/get_started/books.html:6 msgid "What are you reading?" msgstr "Ką skaitome?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162 +#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:205 msgid "Search for a book" msgstr "Ieškoti knygos" @@ -1545,9 +1690,9 @@ msgstr "Kai pradedate naudotis %(site_name)s, galite pridėti knygų." #: bookwyrm/templates/get_started/books.html:17 #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166 +#: 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/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -1563,7 +1708,7 @@ msgid "Popular on %(site_name)s" msgstr "%(site_name)s populiaru" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:179 +#: bookwyrm/templates/lists/list.html:222 msgid "No books found" msgstr "Knygų nerasta" @@ -1605,7 +1750,7 @@ msgstr "Baigti" #: bookwyrm/templates/get_started/profile.html:15 #: bookwyrm/templates/preferences/edit_user.html:41 msgid "Display name:" -msgstr "Rodyti vardą:" +msgstr "Rodomas vardą:" #: bookwyrm/templates/get_started/profile.html:29 #: bookwyrm/templates/preferences/edit_user.html:47 @@ -1668,7 +1813,7 @@ msgstr "Nebegalite atšaukti šio veiksmo" #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 #: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:14 msgid "Delete" msgstr "Ištrinti" @@ -1688,17 +1833,17 @@ msgstr "Grupės aprašymas:" msgid "Delete group" msgstr "Ištrinti grupę" -#: bookwyrm/templates/groups/group.html:22 +#: bookwyrm/templates/groups/group.html:21 msgid "Members of this group can create group-curated lists." -msgstr "" +msgstr "Šios grupės nariai gali kurti grupės kuruojamus sąrašus." -#: bookwyrm/templates/groups/group.html:27 +#: bookwyrm/templates/groups/group.html:26 #: bookwyrm/templates/lists/create_form.html:5 #: bookwyrm/templates/lists/lists.html:20 msgid "Create List" msgstr "Sukurti sąrašą" -#: bookwyrm/templates/groups/group.html:40 +#: bookwyrm/templates/groups/group.html:39 msgid "This group has no lists" msgstr "Šioje grupėje nėra sąrašų" @@ -1706,15 +1851,15 @@ msgstr "Šioje grupėje nėra sąrašų" msgid "Edit group" msgstr "Redaguoti grupę" -#: bookwyrm/templates/groups/members.html:12 +#: bookwyrm/templates/groups/members.html:11 msgid "Search to add a user" msgstr "Ieškokite, kad pridėtumėte naudotoją" -#: bookwyrm/templates/groups/members.html:33 +#: bookwyrm/templates/groups/members.html:32 msgid "Leave group" msgstr "Išeiti iš grupės" -#: bookwyrm/templates/groups/members.html:55 +#: bookwyrm/templates/groups/members.html:54 #: bookwyrm/templates/groups/suggested_users.html:35 #: bookwyrm/templates/snippets/suggested_users.html:31 #: bookwyrm/templates/user/user_preview.html:36 @@ -1878,19 +2023,10 @@ msgid "Review" msgstr "Apžvalga" #: bookwyrm/templates/import/import_status.html:124 +#: bookwyrm/templates/settings/link_domains/link_table.html:9 msgid "Book" msgstr "Knyga" -#: bookwyrm/templates/import/import_status.html:127 -#: bookwyrm/templates/settings/announcements/announcements.html:38 -#: bookwyrm/templates/settings/federation/instance_list.html:46 -#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 -#: bookwyrm/templates/settings/invites/status_filter.html:5 -#: bookwyrm/templates/settings/users/user_admin.html:34 -#: bookwyrm/templates/settings/users/user_info.html:20 -msgid "Status" -msgstr "Būsena" - #: bookwyrm/templates/import/import_status.html:135 msgid "Import preview unavailable." msgstr "Nepavyko įkelti peržiūros." @@ -1929,7 +2065,8 @@ msgid "Approving a suggestion will permanently add the suggested book to your sh msgstr "Jei patvirtinsite siūlymą, siūloma knyga visam laikui bus įkelta į Jūsų lentyną, susieta su skaitymo datomis, atsiliepimais ir knygos reitingais." #: 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 "Patvirtinti" @@ -1938,8 +2075,8 @@ msgid "Reject" msgstr "Atmesti" #: bookwyrm/templates/import/tooltip.html:6 -msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." -msgstr "Galite atsisiųsti savo „Goodreads“ duomenis iš Importavimo ir eksportavimo puslapio, esančio jūsų „Goodreads“ paskyroje." +msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." +msgstr "Galite atsisiųsti savo „Goodreads“ duomenis iš Importavimo ir eksportavimo puslapio, esančio jūsų „Goodreads“ paskyroje." #: bookwyrm/templates/import/troubleshoot.html:7 msgid "Failed items" @@ -2139,6 +2276,21 @@ msgstr "Paremkite %(site_name)s per GitHub." msgstr "„BookWyrm“ šaltinio kodas yra laisvai prieinamas. Galite prisidėti arba pranešti apie klaidas per GitHub." +#: bookwyrm/templates/lists/add_item_modal.html:8 +#, python-format +msgid "Add \"%(title)s\" to this list" +msgstr "Pridėti \"%(title)s\" į šį sąrašą" + +#: bookwyrm/templates/lists/add_item_modal.html:12 +#, python-format +msgid "Suggest \"%(title)s\" for this list" +msgstr "Siūlyti \"%(title)s\" į šį sąrašą" + +#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/list.html:249 +msgid "Suggest" +msgstr "Siūlyti" + #: bookwyrm/templates/lists/bookmark_button.html:30 msgid "Un-save" msgstr "Nebesaugoti" @@ -2158,23 +2310,29 @@ msgstr "Sukūrė ir kuruoja %(username)s" msgid "Created by %(username)s" msgstr "Sukūrė %(username)s" -#: bookwyrm/templates/lists/curate.html:11 +#: bookwyrm/templates/lists/curate.html:12 msgid "Curate" msgstr "Kuruoti" -#: bookwyrm/templates/lists/curate.html:20 +#: bookwyrm/templates/lists/curate.html:21 msgid "Pending Books" msgstr "Patvirtinimo laukiančios knygos" -#: bookwyrm/templates/lists/curate.html:23 +#: bookwyrm/templates/lists/curate.html:24 msgid "You're all set!" msgstr "Viskas atlikta!" -#: bookwyrm/templates/lists/curate.html:43 +#: bookwyrm/templates/lists/curate.html:45 +#: bookwyrm/templates/lists/list.html:83 +#, python-format +msgid "%(username)s says:" +msgstr "%(username)s sako:" + +#: bookwyrm/templates/lists/curate.html:55 msgid "Suggested by" msgstr "Pasiūlė" -#: bookwyrm/templates/lists/curate.html:65 +#: bookwyrm/templates/lists/curate.html:77 msgid "Discard" msgstr "Atmesti" @@ -2187,18 +2345,18 @@ msgstr "Ištrinti šį sąrašą?" msgid "Edit List" msgstr "Redaguoti sąrašą" -#: bookwyrm/templates/lists/embed-list.html:7 +#: bookwyrm/templates/lists/embed-list.html:8 #, python-format msgid "%(list_name)s, a list by %(owner)s" msgstr "%(list_name)s, sąrašą sudarė %(owner)s" -#: bookwyrm/templates/lists/embed-list.html:17 +#: bookwyrm/templates/lists/embed-list.html:18 #, python-format msgid "on %(site_name)s" msgstr "per %(site_name)s" -#: bookwyrm/templates/lists/embed-list.html:26 -#: bookwyrm/templates/lists/list.html:42 +#: bookwyrm/templates/lists/embed-list.html:27 +#: bookwyrm/templates/lists/list.html:44 msgid "This list is currently empty" msgstr "Šiuo metu sąrašas tuščias" @@ -2259,75 +2417,89 @@ msgstr "Sukurti grupę" msgid "Delete list" msgstr "Ištrinti sąrašą" -#: bookwyrm/templates/lists/list.html:34 +#: bookwyrm/templates/lists/item_notes_field.html:7 +#: bookwyrm/templates/settings/federation/edit_instance.html:74 +msgid "Notes:" +msgstr "Užrašai:" + +#: bookwyrm/templates/lists/item_notes_field.html:19 +msgid "An optional note that will be displayed with the book." +msgstr "Papildomi užrašai, kurie rodomi kartu su knyga." + +#: bookwyrm/templates/lists/list.html:36 msgid "You successfully suggested a book for this list!" msgstr "Sėkmingai pasiūlėte knygą šiam sąrašui!" -#: bookwyrm/templates/lists/list.html:36 +#: bookwyrm/templates/lists/list.html:38 msgid "You successfully added a book to this list!" msgstr "Sėkmingai pridėjote knygą į šį sąrašą!" -#: bookwyrm/templates/lists/list.html:80 +#: bookwyrm/templates/lists/list.html:96 +msgid "Edit notes" +msgstr "Redaguoti užrašus" + +#: bookwyrm/templates/lists/list.html:111 +msgid "Add notes" +msgstr "Pridėti užrašus" + +#: bookwyrm/templates/lists/list.html:123 #, python-format msgid "Added by %(username)s" msgstr "Pridėjo %(username)s" -#: bookwyrm/templates/lists/list.html:95 +#: bookwyrm/templates/lists/list.html:138 msgid "List position" msgstr "Sąrašo pozicija" -#: bookwyrm/templates/lists/list.html:101 +#: bookwyrm/templates/lists/list.html:144 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 msgid "Set" msgstr "Nustatyti" -#: bookwyrm/templates/lists/list.html:116 -#: bookwyrm/templates/snippets/remove_from_group_button.html:19 +#: bookwyrm/templates/lists/list.html:159 +#: bookwyrm/templates/snippets/remove_from_group_button.html:20 msgid "Remove" msgstr "Pašalinti" -#: bookwyrm/templates/lists/list.html:130 -#: bookwyrm/templates/lists/list.html:147 +#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:190 msgid "Sort List" msgstr "Rūšiuoti sąrašą" -#: bookwyrm/templates/lists/list.html:140 +#: bookwyrm/templates/lists/list.html:183 msgid "Direction" msgstr "Kryptis" -#: bookwyrm/templates/lists/list.html:154 +#: bookwyrm/templates/lists/list.html:197 msgid "Add Books" msgstr "Pridėti knygų" -#: bookwyrm/templates/lists/list.html:156 +#: bookwyrm/templates/lists/list.html:199 msgid "Suggest Books" msgstr "Siūlyti knygų" -#: bookwyrm/templates/lists/list.html:167 +#: bookwyrm/templates/lists/list.html:210 msgid "search" msgstr "paieška" -#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:216 msgid "Clear search" msgstr "Išvalyti paiešką" -#: bookwyrm/templates/lists/list.html:178 +#: bookwyrm/templates/lists/list.html:221 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "Pagal paiešką „%(query)s“ knygų nerasta" -#: bookwyrm/templates/lists/list.html:210 -msgid "Suggest" -msgstr "Siūlyti" - -#: bookwyrm/templates/lists/list.html:221 +#: bookwyrm/templates/lists/list.html:260 msgid "Embed this list on a website" msgstr "Įdėkite šį sąrašą į tinklalapį" -#: bookwyrm/templates/lists/list.html:229 +#: bookwyrm/templates/lists/list.html:268 msgid "Copy embed code" -msgstr "Nukopijuokite įterptinį kodą" +msgstr "Nukopijuokite kodą įterpimui" -#: bookwyrm/templates/lists/list.html:231 +#: 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, sąrašą sudarė %(owner)s, per %(site_name)s" @@ -2672,13 +2844,13 @@ msgstr "Nebegalėsite atstatyti ištrintos paskyros. Ateityje nebegalėsite naud #: bookwyrm/templates/preferences/edit_user.html:7 #: bookwyrm/templates/preferences/layout.html:15 msgid "Edit Profile" -msgstr "Redaguoti profilį" +msgstr "Redaguoti paskyrą" #: bookwyrm/templates/preferences/edit_user.html:12 #: bookwyrm/templates/preferences/edit_user.html:25 #: bookwyrm/templates/settings/users/user_info.html:7 msgid "Profile" -msgstr "Profilis" +msgstr "Paskyra" #: bookwyrm/templates/preferences/edit_user.html:13 #: bookwyrm/templates/preferences/edit_user.html:64 @@ -2755,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 @@ -2806,7 +2978,12 @@ 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 +msgid "Report" +msgstr "Pranešti" #: bookwyrm/templates/search/book.html:44 msgid "Results from" @@ -2880,13 +3057,13 @@ msgstr "Netiesa" #: bookwyrm/templates/settings/announcements/announcement.html:46 #: bookwyrm/templates/settings/announcements/announcement_form.html:44 -#: bookwyrm/templates/settings/dashboard/dashboard.html:71 +#: bookwyrm/templates/settings/dashboard/dashboard.html:82 msgid "Start date:" msgstr "Pradžios data:" #: bookwyrm/templates/settings/announcements/announcement.html:51 #: bookwyrm/templates/settings/announcements/announcement_form.html:54 -#: bookwyrm/templates/settings/dashboard/dashboard.html:77 +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "End date:" msgstr "Pabaigos data:" @@ -2914,7 +3091,7 @@ msgstr "Įvykio data:" #: bookwyrm/templates/settings/announcements/announcements.html:3 #: bookwyrm/templates/settings/announcements/announcements.html:5 -#: bookwyrm/templates/settings/layout.html:72 +#: bookwyrm/templates/settings/layout.html:76 msgid "Announcements" msgstr "Pranešimai" @@ -2954,7 +3131,7 @@ msgid "Dashboard" msgstr "Suvestinė" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Total users" msgstr "Iš viso naudotojų" @@ -2983,6 +3160,15 @@ msgstr[3] "%(display_count)s atvirų ataskaitų" #: bookwyrm/templates/settings/dashboard/dashboard.html:54 #, python-format +msgid "%(display_count)s domain needs review" +msgid_plural "%(display_count)s domains need review" +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 msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s prašymas pakviesti" @@ -2990,31 +3176,31 @@ msgstr[1] "%(display_count)s prašymai pakviesti" msgstr[2] "%(display_count)s prašymų pakviesti" msgstr[3] "%(display_count)s prašymai pakviesti" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:76 msgid "Instance Activity" msgstr "Serverio statistika" -#: bookwyrm/templates/settings/dashboard/dashboard.html:83 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Interval:" msgstr "Intervalas:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:87 +#: bookwyrm/templates/settings/dashboard/dashboard.html:98 msgid "Days" msgstr "Dienos" -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Weeks" msgstr "Savaitės" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "User signup activity" msgstr "Naudotojo prisijungimo veikla" -#: bookwyrm/templates/settings/dashboard/dashboard.html:112 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Status activity" msgstr "Būsenos" -#: bookwyrm/templates/settings/dashboard/dashboard.html:118 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "Works created" msgstr "Darbai sukurti" @@ -3049,10 +3235,6 @@ msgstr "El. pašto blokavimo sąrašas" msgid "When someone tries to register with an email from this domain, no account will be created. The registration process will appear to have worked." msgstr "Jei kažkas bandys registruotis prie šio domeno šiuo el. pašto adresu, paskyra nebus sukurta. Registracijos pricesas bus suveikęs." -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 -msgid "Domain" -msgstr "Domenas" - #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:29 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:27 msgid "Options" @@ -3113,10 +3295,6 @@ msgstr "Programinė įranga:" msgid "Version:" msgstr "Versija:" -#: bookwyrm/templates/settings/federation/edit_instance.html:74 -msgid "Notes:" -msgstr "Užrašai:" - #: bookwyrm/templates/settings/federation/instance.html:19 msgid "Details" msgstr "Išsami informacija" @@ -3166,12 +3344,8 @@ msgstr "Redaguoti" msgid "No notes" msgstr "Užrašų nėra" -#: bookwyrm/templates/settings/federation/instance.html:94 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 -msgid "Actions" -msgstr "Veiksmai" - #: bookwyrm/templates/settings/federation/instance.html:98 +#: bookwyrm/templates/settings/link_domains/link_domains.html:87 #: bookwyrm/templates/snippets/block_button.html:5 msgid "Block" msgstr "Blokuoti" @@ -3384,62 +3558,121 @@ msgstr "Moderavimas" msgid "Reports" msgstr "Pranešimai" -#: bookwyrm/templates/settings/layout.html:68 +#: bookwyrm/templates/settings/layout.html:67 +#: bookwyrm/templates/settings/link_domains/link_domains.html:5 +#: bookwyrm/templates/settings/link_domains/link_domains.html:7 +msgid "Link Domains" +msgstr "Nuorodų puslapiai" + +#: bookwyrm/templates/settings/layout.html:72 msgid "Instance Settings" msgstr "Serverio nustatymai" -#: bookwyrm/templates/settings/layout.html:76 +#: bookwyrm/templates/settings/layout.html:80 #: bookwyrm/templates/settings/site.html:4 #: bookwyrm/templates/settings/site.html:6 msgid "Site Settings" msgstr "Puslapio nustatymai" -#: bookwyrm/templates/settings/reports/report.html:5 -#: bookwyrm/templates/settings/reports/report.html:8 -#: bookwyrm/templates/settings/reports/report_preview.html:6 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5 #, python-format -msgid "Report #%(report_id)s: %(username)s" -msgstr "Pranešti apie #%(report_id)s: %(username)s" +msgid "Set display name for %(url)s" +msgstr "Nurodykite pavadinimą puslapiui %(url)s" -#: bookwyrm/templates/settings/reports/report.html:9 +#: 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 "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" +msgstr "Nurodyti pavadinimą" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:53 +msgid "View links" +msgstr "Peržiūrėti nuorodas" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:96 +msgid "No domains currently approved" +msgstr "Nėra patvirtintų domenų" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:98 +msgid "No domains currently pending" +msgstr "Nėra domenų, laukiančių patvirtinimo" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:100 +msgid "No domains currently blocked" +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 "Šiam domenui nuorodų nėra." + +#: bookwyrm/templates/settings/reports/report.html:11 msgid "Back to reports" msgstr "Atgal į pranešimus" #: bookwyrm/templates/settings/reports/report.html:23 +msgid "Message reporter" +msgstr "Žinučių pranešėjas" + +#: bookwyrm/templates/settings/reports/report.html:27 +msgid "Update on your report:" +msgstr "Naujausia informacija apie jūsų pranešimą:" + +#: bookwyrm/templates/settings/reports/report.html:35 +msgid "Reported statuses" +msgstr "Praneštos būsenos" + +#: bookwyrm/templates/settings/reports/report.html:40 +msgid "Status has been deleted" +msgstr "Būsena ištrinta" + +#: bookwyrm/templates/settings/reports/report.html:52 +msgid "Reported links" +msgstr "Raportuotos nuorodos" + +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Moderatoriaus komentarai" -#: bookwyrm/templates/settings/reports/report.html:41 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Komentuoti" -#: bookwyrm/templates/settings/reports/report.html:46 -msgid "Reported statuses" -msgstr "Praneštos būsenos" +#: bookwyrm/templates/settings/reports/report_header.html:6 +#, python-format +msgid "Report #%(report_id)s: Status posted by @%(username)s" +msgstr "Pranešimas #%(report_id)s: publikavo @%(username)s" -#: bookwyrm/templates/settings/reports/report.html:48 -msgid "No statuses reported" -msgstr "Nepranešta apie būsenas" +#: bookwyrm/templates/settings/reports/report_header.html:12 +#, python-format +msgid "Report #%(report_id)s: Link added by @%(username)s" +msgstr "Pranešimas #%(report_id)s: nuorodą pridėjo @%(username)s" -#: bookwyrm/templates/settings/reports/report.html:54 -msgid "Status has been deleted" -msgstr "Būsena ištrinta" +#: bookwyrm/templates/settings/reports/report_header.html:18 +#, python-format +msgid "Report #%(report_id)s: User @%(username)s" +msgstr "Pranešimas #%(report_id)s: naudotojas @%(username)s" -#: bookwyrm/templates/settings/reports/report_preview.html:13 +#: bookwyrm/templates/settings/reports/report_links_table.html:17 +msgid "Block domain" +msgstr "Užblokuoti domeną" + +#: bookwyrm/templates/settings/reports/report_preview.html:17 msgid "No notes provided" msgstr "Užrašų nepateikta" -#: bookwyrm/templates/settings/reports/report_preview.html:20 +#: bookwyrm/templates/settings/reports/report_preview.html:24 #, python-format -msgid "Reported by %(username)s" -msgstr "Pranešė %(username)s" +msgid "Reported by @%(username)s" +msgstr "Pranešė @%(username)s" -#: bookwyrm/templates/settings/reports/report_preview.html:30 +#: bookwyrm/templates/settings/reports/report_preview.html:34 msgid "Re-open" msgstr "Atidaryti pakartotinai" -#: bookwyrm/templates/settings/reports/report_preview.html:32 +#: bookwyrm/templates/settings/reports/report_preview.html:36 msgid "Resolve" msgstr "Išspręsti" @@ -3567,7 +3800,7 @@ msgid "Invite request text:" msgstr "Kvietimo prašymo tekstas:" #: bookwyrm/templates/settings/users/delete_user_form.html:5 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:31 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:32 msgid "Permanently delete user" msgstr "Visam laikui ištrinti vartotoją" @@ -3623,7 +3856,7 @@ msgstr "Nenustatytas" #: bookwyrm/templates/settings/users/user_info.html:16 msgid "View user profile" -msgstr "Peržiūrėti vartotojo profilį" +msgstr "Peržiūrėti nario paskyrą" #: bookwyrm/templates/settings/users/user_info.html:36 msgid "Local" @@ -3677,15 +3910,19 @@ msgstr "Peržiūrėti serverį" msgid "Permanently deleted" msgstr "Visam laikui ištrintas" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:20 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 +msgid "User Actions" +msgstr "Nario veiksmai" + +#: bookwyrm/templates/settings/users/user_moderation_actions.html:21 msgid "Suspend user" msgstr "Laikinai išjungti vartotoją" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:25 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:26 msgid "Un-suspend user" msgstr "Atblokuoti narį" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:47 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:48 msgid "Access level:" msgstr "Priėjimo lygis:" @@ -3699,7 +3936,7 @@ msgstr "Redaguoti lentyną" #: bookwyrm/templates/shelf/shelf.html:24 msgid "User profile" -msgstr "" +msgstr "Nario paskyra" #: bookwyrm/templates/shelf/shelf.html:39 #: bookwyrm/templates/snippets/translated_shelf_name.html:3 @@ -3752,15 +3989,15 @@ msgstr "Baigta" msgid "This shelf is empty." msgstr "Ši lentyna tuščia." -#: bookwyrm/templates/snippets/add_to_group_button.html:15 +#: bookwyrm/templates/snippets/add_to_group_button.html:16 msgid "Invite" msgstr "Pakviesti" -#: bookwyrm/templates/snippets/add_to_group_button.html:24 +#: bookwyrm/templates/snippets/add_to_group_button.html:25 msgid "Uninvite" msgstr "Atšaukti kvietimą" -#: bookwyrm/templates/snippets/add_to_group_button.html:28 +#: bookwyrm/templates/snippets/add_to_group_button.html:29 #, python-format msgid "Remove @%(username)s" msgstr "Pašalinti @%(username)s" @@ -3827,14 +4064,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" @@ -3850,7 +4087,7 @@ msgstr "Galimas turinio atskleidimas!" msgid "Include spoiler alert" msgstr "Įdėti įspėjimą apie turinio atskleidimą" -#: bookwyrm/templates/snippets/create_status/layout.html:48 +#: bookwyrm/templates/snippets/create_status/layout.html:47 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Komentuoti:" @@ -3859,33 +4096,33 @@ msgstr "Komentuoti:" msgid "Post" msgstr "Publikuoti" -#: bookwyrm/templates/snippets/create_status/quotation.html:17 +#: bookwyrm/templates/snippets/create_status/quotation.html:16 msgid "Quote:" msgstr "Citata:" -#: bookwyrm/templates/snippets/create_status/quotation.html:25 +#: bookwyrm/templates/snippets/create_status/quotation.html:24 #, python-format msgid "An excerpt from '%(book_title)s'" msgstr "Ištrauka iš „%(book_title)s“" -#: bookwyrm/templates/snippets/create_status/quotation.html:32 +#: bookwyrm/templates/snippets/create_status/quotation.html:31 msgid "Position:" msgstr "Pozicija:" -#: bookwyrm/templates/snippets/create_status/quotation.html:45 +#: bookwyrm/templates/snippets/create_status/quotation.html:44 msgid "On page:" msgstr "Puslapyje:" -#: bookwyrm/templates/snippets/create_status/quotation.html:51 +#: bookwyrm/templates/snippets/create_status/quotation.html:50 msgid "At percent:" msgstr "Proc.:" -#: bookwyrm/templates/snippets/create_status/review.html:25 +#: bookwyrm/templates/snippets/create_status/review.html:24 #, python-format msgid "Your review of '%(book_title)s'" msgstr "Jūsų apžvalga apie „%(book_title)s“" -#: bookwyrm/templates/snippets/create_status/review.html:40 +#: bookwyrm/templates/snippets/create_status/review.html:39 msgid "Review:" msgstr "Atsiliepimas:" @@ -3912,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" @@ -3939,7 +4176,7 @@ msgid "Unfollow" msgstr "Nebesekti" #: bookwyrm/templates/snippets/follow_request_buttons.html:7 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:8 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:9 msgid "Accept" msgstr "Sutikti" @@ -3987,17 +4224,17 @@ msgstr[3] "įvertinta %(title)s: %(display_rat #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +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] "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 "" +msgid "Review of \"%(book_title)s\": %(review_title)s" +msgstr "Knygos „%(book_title)s“ apžvalga: %(review_title)s" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4067,11 +4304,11 @@ msgstr "Tik sekėjai" msgid "Post privacy" msgstr "Įrašo privatumas" -#: bookwyrm/templates/snippets/rate_action.html:4 +#: bookwyrm/templates/snippets/rate_action.html:5 msgid "Leave a rating" msgstr "Palikti įvertinimą" -#: bookwyrm/templates/snippets/rate_action.html:19 +#: bookwyrm/templates/snippets/rate_action.html:20 msgid "Rate" msgstr "Įvertinti" @@ -4103,21 +4340,31 @@ msgstr "Noriu perskaityti „%(book_title)s“" msgid "Sign Up" msgstr "Registruotis" -#: bookwyrm/templates/snippets/report_button.html:13 -msgid "Report" -msgstr "Pranešti" +#: bookwyrm/templates/snippets/report_modal.html:8 +#, python-format +msgid "Report @%(username)s's status" +msgstr "Pranešti apie @%(username)s būseną" -#: bookwyrm/templates/snippets/report_modal.html:6 +#: bookwyrm/templates/snippets/report_modal.html:10 +#, python-format +msgid "Report %(domain)s link" +msgstr "Pranešti apie %(domain)s nuorodą" + +#: bookwyrm/templates/snippets/report_modal.html:12 #, python-format msgid "Report @%(username)s" msgstr "Pranešti apie @%(username)s" -#: bookwyrm/templates/snippets/report_modal.html:23 +#: bookwyrm/templates/snippets/report_modal.html:34 #, python-format msgid "This report will be sent to %(site_name)s's moderators for review." msgstr "Šis pranešimas bus nusiųstas peržiūrėti %(site_name)s puslapio moderatoriams." -#: bookwyrm/templates/snippets/report_modal.html:26 +#: bookwyrm/templates/snippets/report_modal.html:36 +msgid "Links from this domain will be removed until your report has been reviewed." +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:" msgstr "Daugiau informacijos apie šį pranešimą:" @@ -4155,29 +4402,29 @@ msgstr "Pašalinti iš %(name)s" msgid "Finish reading" msgstr "Baigti skaityti" -#: bookwyrm/templates/snippets/status/content_status.html:75 +#: bookwyrm/templates/snippets/status/content_status.html:73 msgid "Content warning" msgstr "Įspėjimas dėl turinio" -#: bookwyrm/templates/snippets/status/content_status.html:82 +#: bookwyrm/templates/snippets/status/content_status.html:80 msgid "Show status" msgstr "Rodyti būseną" -#: bookwyrm/templates/snippets/status/content_status.html:104 +#: bookwyrm/templates/snippets/status/content_status.html:102 #, python-format msgid "(Page %(page)s)" msgstr "(Psl. %(page)s)" -#: bookwyrm/templates/snippets/status/content_status.html:106 +#: bookwyrm/templates/snippets/status/content_status.html:104 #, python-format msgid "(%(percent)s%%)" msgstr "(%(percent)s%%)" -#: bookwyrm/templates/snippets/status/content_status.html:128 +#: bookwyrm/templates/snippets/status/content_status.html:126 msgid "Open image in new window" msgstr "Atidaryti paveikslėlį naujame lange" -#: bookwyrm/templates/snippets/status/content_status.html:147 +#: bookwyrm/templates/snippets/status/content_status.html:145 msgid "Hide status" msgstr "Slėpti būseną" @@ -4189,7 +4436,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 @@ -4204,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 @@ -4219,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 @@ -4229,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 @@ -4239,7 +4486,7 @@ msgstr "pradėjo skaityti %(book)s" #: bookwyrm/templates/snippets/status/headers/review.html:8 #, python-format msgid "reviewed %(book)s by %(author_name)s" -msgstr "" +msgstr "apžvelgė autoriaus %(author_name)s knygą %(book)s" #: bookwyrm/templates/snippets/status/headers/review.html:15 #, python-format @@ -4249,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 @@ -4348,7 +4595,7 @@ msgstr "Sukurti grupę" #: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10 msgid "User Profile" -msgstr "Naudotojo paskyra" +msgstr "Nario paskyra" #: bookwyrm/templates/user/layout.html:48 msgid "Follow Requests" @@ -4474,8 +4721,17 @@ msgstr "Šiuo el. pašto adresu nerastas nei vienas narys." msgid "A password reset link was sent to {email}" msgstr "Slaptažodžio atstatymo nuoroda išsiųsta į {email}" -#: bookwyrm/views/rss_feed.py:35 +#: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" msgstr "Būsenos atnaujinimai iš {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] "Į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 329cba873..a272adbcb 100644 Binary files a/locale/no_NO/LC_MESSAGES/django.mo and b/locale/no_NO/LC_MESSAGES/django.mo differ diff --git a/locale/no_NO/LC_MESSAGES/django.po b/locale/no_NO/LC_MESSAGES/django.po index dba610b31..f8aaf0a46 100644 --- a/locale/no_NO/LC_MESSAGES/django.po +++ b/locale/no_NO/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-13 16:54+0000\n" -"PO-Revision-Date: 2022-01-13 17:50\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: 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:351 +#: 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:365 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Én dag" -#: bookwyrm/forms.py:366 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Én uke" -#: bookwyrm/forms.py:367 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Én måned" -#: bookwyrm/forms.py:368 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "Uendelig" -#: bookwyrm/forms.py:372 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} ganger" -#: bookwyrm/forms.py:373 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Ubegrenset" -#: bookwyrm/forms.py:469 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Liste rekkefølge" -#: bookwyrm/forms.py:470 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Boktittel" -#: bookwyrm/forms.py:471 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:33 +#: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Vurdering" -#: bookwyrm/forms.py:473 bookwyrm/templates/lists/list.html:134 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Sorter etter" -#: bookwyrm/forms.py:477 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Stigende" -#: bookwyrm/forms.py:478 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Synkende" -#: bookwyrm/forms.py:491 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." msgstr "Sluttdato kan ikke være før startdato." @@ -84,8 +92,9 @@ msgstr "Feilet ved lasting av bok" msgid "Could not find a match for book" msgstr "Fant ikke den boka" -#: bookwyrm/models/base_model.py:17 +#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 +#: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "Avventer" @@ -105,23 +114,23 @@ msgstr "Moderatør sletting" msgid "Domain block" msgstr "Domeneblokkering" -#: bookwyrm/models/book.py:250 +#: bookwyrm/models/book.py:253 msgid "Audiobook" msgstr "Lydbok" -#: bookwyrm/models/book.py:251 +#: bookwyrm/models/book.py:254 msgid "eBook" msgstr "e-bok" -#: bookwyrm/models/book.py:252 +#: bookwyrm/models/book.py:255 msgid "Graphic novel" msgstr "Tegneserie" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:256 msgid "Hardcover" msgstr "Innbundet" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:257 msgid "Paperback" msgstr "Paperback" @@ -131,33 +140,34 @@ msgstr "Paperback" msgid "Federated" msgstr "Føderert" -#: bookwyrm/models/federated_server.py:12 +#: bookwyrm/models/federated_server.py:12 bookwyrm/models/link.py:71 #: bookwyrm/templates/settings/federation/edit_instance.html:44 #: bookwyrm/templates/settings/federation/instance.html:10 #: bookwyrm/templates/settings/federation/instance_list.html:23 +#: bookwyrm/templates/settings/link_domains/link_domains.html:27 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 @@ -165,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 @@ -173,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 @@ -189,6 +199,23 @@ msgstr "Følgere" msgid "Private" msgstr "Privat" +#: bookwyrm/models/link.py:51 +msgid "Free" +msgstr "Gratis" + +#: bookwyrm/models/link.py:52 +msgid "Purchasable" +msgstr "Tilgjengelig for kjøp" + +#: bookwyrm/models/link.py:53 +msgid "Available for loan" +msgstr "Tilgjengelig for utlån" + +#: bookwyrm/models/link.py:70 +#: bookwyrm/templates/settings/link_domains/link_domains.html:23 +msgid "Approved" +msgstr "Godkjent" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Anmeldelser" @@ -205,69 +232,73 @@ msgstr "Sitater" msgid "Everything else" msgstr "Andre ting" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home Timeline" msgstr "Lokal tidslinje" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home" msgstr "Hjem" -#: bookwyrm/settings.py:122 +#: bookwyrm/settings.py:174 msgid "Books Timeline" msgstr "Boktidslinja" -#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Bøker" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:248 msgid "English" msgstr "English (Engelsk)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:249 msgid "Deutsch (German)" msgstr "Deutsch (Tysk)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:250 msgid "Español (Spanish)" msgstr "Español (Spansk)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:251 msgid "Galego (Galician)" msgstr "Galego (Gallisk)" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:252 msgid "Italiano (Italian)" msgstr "Italiano (Italiensk)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:253 msgid "Français (French)" msgstr "Français (Fransk)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:254 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Litauisk)" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:255 msgid "Norsk (Norwegian)" msgstr "Norsk (Norsk)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:256 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português - Brasil (Brasiliansk portugisisk)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:257 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Europeisk Portugisisk)" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:258 +msgid "Svenska (Swedish)" +msgstr "Svenska (Svensk)" + +#: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Forenklet kinesisk)" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:260 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Tradisjonelt kinesisk)" @@ -296,61 +327,57 @@ msgstr "Beklager, noe gikk galt! Leit, det der." msgid "About" msgstr "Om" -#: bookwyrm/templates/about/about.html:18 +#: bookwyrm/templates/about/about.html:19 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "Velkommen til %(site_name)s!" -#: bookwyrm/templates/about/about.html:22 +#: 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:39 +#: bookwyrm/templates/about/about.html:40 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "%(title)s er %(site_name)s sin favorittbok, med en gjennomsnittlig vurdering på %(rating)s av 5." -#: bookwyrm/templates/about/about.html:58 +#: bookwyrm/templates/about/about.html:59 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "Flere av %(site_name)s sine medlemmer ønsker å lese %(title)s enn noen annen bok." -#: bookwyrm/templates/about/about.html:77 +#: bookwyrm/templates/about/about.html:78 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "%(title)s er den boka på %(site_name)s med de mest polariserte vurderingene." -#: bookwyrm/templates/about/about.html:88 +#: 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 "Journalfør lesingen din, snakk om bøker, skriv anmeldelser, og oppdag din neste bok. BookWyrm er reklamefri, ukommers og fellesskapsorientert, programvare for mennesker, designet for å forbli liten og nær. Hvis du har ønsker, feilrapporter eller store vyer, ta kontakt og bli hørt." -#: bookwyrm/templates/about/about.html:95 +#: bookwyrm/templates/about/about.html:96 msgid "Meet your admins" msgstr "Møt administratorene" -#: bookwyrm/templates/about/about.html:98 +#: bookwyrm/templates/about/about.html:99 #, python-format -msgid "\n" -" %(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.\n" -" " -msgstr "\n" -" %(site_name)s sine moderatorer og administratorer holder nettsida oppe og tilgjengelig, håndhever atferdskoden, og svarer på brukernes rapporterer om spam og dårlig atferd.\n" -" " +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 "%(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:112 +#: bookwyrm/templates/about/about.html:113 msgid "Moderator" msgstr "Moderator" -#: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 msgid "Admin" msgstr "Admin" -#: bookwyrm/templates/about/about.html:130 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:13 +#: 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" @@ -409,7 +436,7 @@ msgid "Copy address" msgstr "Kopiér adresse" #: bookwyrm/templates/annual_summary/layout.html:68 -#: bookwyrm/templates/lists/list.html:230 +#: bookwyrm/templates/lists/list.html:269 msgid "Copied!" msgstr "Kopiert!" @@ -478,7 +505,7 @@ msgstr "Den korteste teksten lest i år…" #: bookwyrm/templates/annual_summary/layout.html:245 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 -#: bookwyrm/templates/landing/large-book.html:25 +#: bookwyrm/templates/landing/large-book.html:26 #: bookwyrm/templates/landing/small-book.html:18 msgid "by" msgstr "av" @@ -530,61 +557,61 @@ msgstr "Alle bøkene %(display_name)s leste i %(year)s" msgid "Edit Author" msgstr "Rediger forfatter" -#: bookwyrm/templates/author/author.html:40 +#: bookwyrm/templates/author/author.html:35 msgid "Author details" msgstr "Detaljer om forfatter" -#: bookwyrm/templates/author/author.html:44 +#: bookwyrm/templates/author/author.html:39 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "Kallenavn:" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:48 msgid "Born:" msgstr "Født:" -#: bookwyrm/templates/author/author.html:60 +#: bookwyrm/templates/author/author.html:55 msgid "Died:" msgstr "Død:" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:65 msgid "External links" msgstr "Eksterne lenker" -#: bookwyrm/templates/author/author.html:75 +#: bookwyrm/templates/author/author.html:70 msgid "Wikipedia" msgstr "Wikipedia" -#: bookwyrm/templates/author/author.html:83 +#: bookwyrm/templates/author/author.html:78 msgid "View ISNI record" msgstr "Vis ISNI -oppføring" -#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/author.html:83 #: bookwyrm/templates/author/sync_modal.html:5 #: bookwyrm/templates/book/book.html:122 #: bookwyrm/templates/book/sync_modal.html:5 msgid "Load data" msgstr "Last inn data" -#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/author/author.html:87 #: bookwyrm/templates/book/book.html:126 msgid "View on OpenLibrary" msgstr "Vis på OpenLibrary" -#: bookwyrm/templates/author/author.html:107 +#: bookwyrm/templates/author/author.html:102 #: bookwyrm/templates/book/book.html:140 msgid "View on Inventaire" msgstr "Vis på Inventaire" -#: bookwyrm/templates/author/author.html:123 +#: bookwyrm/templates/author/author.html:118 msgid "View on LibraryThing" msgstr "Vis på LibraryThing" -#: bookwyrm/templates/author/author.html:131 +#: bookwyrm/templates/author/author.html:126 msgid "View on Goodreads" msgstr "Vis på Goodreads" -#: bookwyrm/templates/author/author.html:145 +#: bookwyrm/templates/author/author.html:141 #, python-format msgid "Books by %(name)s" msgstr "Bøker av %(name)s" @@ -614,7 +641,9 @@ msgid "Metadata" msgstr "Metadata" #: bookwyrm/templates/author/edit_author.html:35 -#: bookwyrm/templates/lists/form.html:9 bookwyrm/templates/shelf/form.html:9 +#: bookwyrm/templates/lists/form.html:9 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:14 +#: bookwyrm/templates/shelf/form.html:9 msgid "Name:" msgstr "Navn:" @@ -668,8 +697,11 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 +#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: 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 @@ -677,7 +709,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 #: bookwyrm/templates/settings/site.html:133 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:68 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 msgid "Save" @@ -689,13 +721,17 @@ msgstr "Lagre" #: 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/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/settings/federation/instance.html:88 -#: bookwyrm/templates/snippets/report_modal.html:38 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 +#: bookwyrm/templates/snippets/report_modal.html:54 msgid "Cancel" msgstr "Avbryt" @@ -707,9 +743,9 @@ msgstr "Laster inn data kobler til %(source_name)s og finner me #: bookwyrm/templates/author/sync_modal.html:22 #: bookwyrm/templates/book/edit/edit_book.html:108 #: bookwyrm/templates/book/sync_modal.html:22 -#: bookwyrm/templates/groups/members.html:30 +#: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 -#: bookwyrm/templates/snippets/remove_from_group_button.html:16 +#: bookwyrm/templates/snippets/remove_from_group_button.html:17 msgid "Confirm" msgstr "Bekreft" @@ -793,8 +829,8 @@ msgid "Places" msgstr "Steder" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 -#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: 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 @@ -808,7 +844,8 @@ msgstr "Legg til i liste" #: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/list.html:208 +#: 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" @@ -910,7 +947,7 @@ msgid "Back" msgstr "Tilbake" #: bookwyrm/templates/book/edit/edit_book_form.html:21 -#: bookwyrm/templates/snippets/create_status/review.html:16 +#: bookwyrm/templates/snippets/create_status/review.html:15 msgid "Title:" msgstr "Tittel:" @@ -988,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:" @@ -1026,20 +1063,132 @@ 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" +#: bookwyrm/templates/book/file_links/add_link_modal.html:6 +msgid "Add file link" +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 "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 "URL:" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:29 +msgid "File type:" +msgstr "Filtype:" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:48 +msgid "Availability:" +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 "Rediger lenker" + +#: bookwyrm/templates/book/file_links/edit_links.html:11 +#, python-format +msgid "\n" +" Links for \"%(title)s\"\n" +" " +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 "URL" + +#: bookwyrm/templates/book/file_links/edit_links.html:33 +#: bookwyrm/templates/settings/link_domains/link_table.html:7 +msgid "Added by" +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 "Filtype" + +#: bookwyrm/templates/book/file_links/edit_links.html:35 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 +#: bookwyrm/templates/settings/reports/report_links_table.html:5 +msgid "Domain" +msgstr "Domene" + +#: bookwyrm/templates/book/file_links/edit_links.html:36 +#: bookwyrm/templates/import/import_status.html:127 +#: bookwyrm/templates/settings/announcements/announcements.html:38 +#: bookwyrm/templates/settings/federation/instance_list.html:46 +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 +#: bookwyrm/templates/settings/invites/status_filter.html:5 +#: bookwyrm/templates/settings/users/user_admin.html:34 +#: bookwyrm/templates/settings/users/user_info.html:20 +msgid "Status" +msgstr "Status" + +#: bookwyrm/templates/book/file_links/edit_links.html:37 +#: bookwyrm/templates/settings/federation/instance.html:94 +#: bookwyrm/templates/settings/reports/report_links_table.html:6 +msgid "Actions" +msgstr "Handlinger" + +#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 +msgid "Report spam" +msgstr "Rapporter spam" + +#: bookwyrm/templates/book/file_links/edit_links.html:97 +msgid "No links available for this book." +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 "Legg til lenke til fil" + +#: bookwyrm/templates/book/file_links/file_link_page.html:6 +msgid "File Links" +msgstr "Fillenker" + +#: bookwyrm/templates/book/file_links/links.html:9 +msgid "Get a copy" +msgstr "Få en kopi" + +#: bookwyrm/templates/book/file_links/links.html:47 +msgid "No links available" +msgstr "Ingen tilgjengelige lenker" + +#: bookwyrm/templates/book/file_links/verification_modal.html:5 +msgid "Leaving BookWyrm" +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 "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 "Fortsett" + #: bookwyrm/templates/book/publisher_info.html:23 #, python-format msgid "%(format)s, %(pages)s pages" @@ -1110,8 +1259,8 @@ msgstr "Bekreftelseskode:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:93 -#: bookwyrm/templates/snippets/report_modal.html:37 +#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Send inn" @@ -1417,16 +1566,11 @@ msgstr "Alle meldinger" msgid "You have no messages right now." msgstr "Du har ingen meldinger." -#: bookwyrm/templates/feed/feed.html:28 -#, python-format -msgid "load 0 unread status(es)" -msgstr "last 0 uleste status(er)" - -#: 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 "Det er ingen aktiviteter akkurat nå! Prøv å følge en bruker for å komme i gang" -#: bookwyrm/templates/feed/feed.html:52 +#: bookwyrm/templates/feed/feed.html:55 msgid "Alternatively, you can try enabling more status types" msgstr "Eller, du kan prøve å aktivere flere statustyper" @@ -1515,7 +1659,7 @@ msgid "What are you reading?" msgstr "Hva er det du leser nå?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162 +#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:205 msgid "Search for a book" msgstr "Søk etter en bok" @@ -1533,9 +1677,9 @@ msgstr "Du kan legge til bøker når du begynner å bruke %(site_name)s." #: bookwyrm/templates/get_started/books.html:17 #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166 +#: 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/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -1551,7 +1695,7 @@ msgid "Popular on %(site_name)s" msgstr "Populært på %(site_name)s" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:179 +#: bookwyrm/templates/lists/list.html:222 msgid "No books found" msgstr "Ingen bøker funnet" @@ -1656,7 +1800,7 @@ msgstr "Denne handlingen er endelig" #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 #: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:14 msgid "Delete" msgstr "Slett" @@ -1676,17 +1820,17 @@ msgstr "Gruppebeskrivelse:" msgid "Delete group" msgstr "Slett gruppa" -#: bookwyrm/templates/groups/group.html:22 +#: bookwyrm/templates/groups/group.html:21 msgid "Members of this group can create group-curated lists." msgstr "Medlemmer av denne gruppen kan opprette gruppekontrollerte lister." -#: bookwyrm/templates/groups/group.html:27 +#: bookwyrm/templates/groups/group.html:26 #: bookwyrm/templates/lists/create_form.html:5 #: bookwyrm/templates/lists/lists.html:20 msgid "Create List" msgstr "Opprett liste" -#: bookwyrm/templates/groups/group.html:40 +#: bookwyrm/templates/groups/group.html:39 msgid "This group has no lists" msgstr "Denne gruppa har ingen lister" @@ -1694,15 +1838,15 @@ msgstr "Denne gruppa har ingen lister" msgid "Edit group" msgstr "Rediger gruppe" -#: bookwyrm/templates/groups/members.html:12 +#: bookwyrm/templates/groups/members.html:11 msgid "Search to add a user" msgstr "Søk for å legge til et medlem" -#: bookwyrm/templates/groups/members.html:33 +#: bookwyrm/templates/groups/members.html:32 msgid "Leave group" msgstr "Forlat gruppa" -#: bookwyrm/templates/groups/members.html:55 +#: bookwyrm/templates/groups/members.html:54 #: bookwyrm/templates/groups/suggested_users.html:35 #: bookwyrm/templates/snippets/suggested_users.html:31 #: bookwyrm/templates/user/user_preview.html:36 @@ -1858,19 +2002,10 @@ msgid "Review" msgstr "Anmeldelse" #: bookwyrm/templates/import/import_status.html:124 +#: bookwyrm/templates/settings/link_domains/link_table.html:9 msgid "Book" msgstr "Bok" -#: bookwyrm/templates/import/import_status.html:127 -#: bookwyrm/templates/settings/announcements/announcements.html:38 -#: bookwyrm/templates/settings/federation/instance_list.html:46 -#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 -#: bookwyrm/templates/settings/invites/status_filter.html:5 -#: bookwyrm/templates/settings/users/user_admin.html:34 -#: bookwyrm/templates/settings/users/user_info.html:20 -msgid "Status" -msgstr "Status" - #: bookwyrm/templates/import/import_status.html:135 msgid "Import preview unavailable." msgstr "Forhåndsvisning av import er ikke tilgjengelig." @@ -1909,7 +2044,8 @@ msgid "Approving a suggestion will permanently add the suggested book to your sh msgstr "Aksept av et forslag legger boka til i hyllene dine permanent, og kobler dine lesedatoer, anmeldelser og vurderinger til boka." #: 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 "Godkjenn" @@ -1918,8 +2054,8 @@ msgid "Reject" 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 "Du kan laste ned Goodread-dataene fra Import/Export sida på Goodread-kontoen din." +msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." +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" @@ -2119,6 +2255,21 @@ msgstr "Støtt %(site_name)s på msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "BookWyrms kildekode er fritt tilgjengelig. Du kan bidra eller rapportere problemer på GitHub." +#: bookwyrm/templates/lists/add_item_modal.html:8 +#, python-format +msgid "Add \"%(title)s\" to this list" +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 "Foreslå \"%(title)s\" for denne lista" + +#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/list.html:249 +msgid "Suggest" +msgstr "Foreslå" + #: bookwyrm/templates/lists/bookmark_button.html:30 msgid "Un-save" msgstr "Fjern lagring" @@ -2138,23 +2289,29 @@ msgstr "Opprettet og forvaltet av %(username)s" msgid "Created by %(username)s" msgstr "Opprettet av %(username)s" -#: bookwyrm/templates/lists/curate.html:11 +#: bookwyrm/templates/lists/curate.html:12 msgid "Curate" msgstr "Forvalt" -#: bookwyrm/templates/lists/curate.html:20 +#: bookwyrm/templates/lists/curate.html:21 msgid "Pending Books" msgstr "Ventende bøker" -#: bookwyrm/templates/lists/curate.html:23 +#: bookwyrm/templates/lists/curate.html:24 msgid "You're all set!" msgstr "Nå er du klar!" -#: bookwyrm/templates/lists/curate.html:43 +#: bookwyrm/templates/lists/curate.html:45 +#: bookwyrm/templates/lists/list.html:83 +#, python-format +msgid "%(username)s says:" +msgstr "%(username)s sier:" + +#: bookwyrm/templates/lists/curate.html:55 msgid "Suggested by" msgstr "Foreslått av" -#: bookwyrm/templates/lists/curate.html:65 +#: bookwyrm/templates/lists/curate.html:77 msgid "Discard" msgstr "Forkast" @@ -2167,18 +2324,18 @@ msgstr "Slett denne lista?" msgid "Edit List" msgstr "Redigér lista" -#: bookwyrm/templates/lists/embed-list.html:7 +#: bookwyrm/templates/lists/embed-list.html:8 #, python-format msgid "%(list_name)s, a list by %(owner)s" msgstr "%(list_name)s, ei liste av %(owner)s" -#: bookwyrm/templates/lists/embed-list.html:17 +#: bookwyrm/templates/lists/embed-list.html:18 #, python-format msgid "on %(site_name)s" msgstr "på %(site_name)s" -#: bookwyrm/templates/lists/embed-list.html:26 -#: bookwyrm/templates/lists/list.html:42 +#: bookwyrm/templates/lists/embed-list.html:27 +#: bookwyrm/templates/lists/list.html:44 msgid "This list is currently empty" msgstr "Denne lista er for tida tom" @@ -2239,75 +2396,89 @@ msgstr "Opprett ei gruppe" msgid "Delete list" msgstr "Slett liste" -#: bookwyrm/templates/lists/list.html:34 +#: bookwyrm/templates/lists/item_notes_field.html:7 +#: bookwyrm/templates/settings/federation/edit_instance.html:74 +msgid "Notes:" +msgstr "Notater:" + +#: bookwyrm/templates/lists/item_notes_field.html:19 +msgid "An optional note that will be displayed with the book." +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!" msgstr "Du har nå foreslått en bok for denne lista!" -#: bookwyrm/templates/lists/list.html:36 +#: bookwyrm/templates/lists/list.html:38 msgid "You successfully added a book to this list!" msgstr "Du har nå lagt til ei bok i denne lista!" -#: bookwyrm/templates/lists/list.html:80 +#: bookwyrm/templates/lists/list.html:96 +msgid "Edit notes" +msgstr "Rediger merknader" + +#: bookwyrm/templates/lists/list.html:111 +msgid "Add notes" +msgstr "Legg til merknader" + +#: bookwyrm/templates/lists/list.html:123 #, python-format msgid "Added by %(username)s" msgstr "Lagt til av %(username)s" -#: bookwyrm/templates/lists/list.html:95 +#: bookwyrm/templates/lists/list.html:138 msgid "List position" msgstr "Listeposisjon" -#: bookwyrm/templates/lists/list.html:101 +#: bookwyrm/templates/lists/list.html:144 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 msgid "Set" msgstr "Bruk" -#: bookwyrm/templates/lists/list.html:116 -#: bookwyrm/templates/snippets/remove_from_group_button.html:19 +#: bookwyrm/templates/lists/list.html:159 +#: bookwyrm/templates/snippets/remove_from_group_button.html:20 msgid "Remove" msgstr "Fjern" -#: bookwyrm/templates/lists/list.html:130 -#: bookwyrm/templates/lists/list.html:147 +#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:190 msgid "Sort List" msgstr "Sorter liste" -#: bookwyrm/templates/lists/list.html:140 +#: bookwyrm/templates/lists/list.html:183 msgid "Direction" msgstr "Retning" -#: bookwyrm/templates/lists/list.html:154 +#: bookwyrm/templates/lists/list.html:197 msgid "Add Books" msgstr "Legg til bøker" -#: bookwyrm/templates/lists/list.html:156 +#: bookwyrm/templates/lists/list.html:199 msgid "Suggest Books" msgstr "Foreslå bøker" -#: bookwyrm/templates/lists/list.html:167 +#: bookwyrm/templates/lists/list.html:210 msgid "search" msgstr "søk" -#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:216 msgid "Clear search" msgstr "Nullstill søk" -#: bookwyrm/templates/lists/list.html:178 +#: bookwyrm/templates/lists/list.html:221 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "Ingen bøker funnet for søket\"%(query)s\"" -#: bookwyrm/templates/lists/list.html:210 -msgid "Suggest" -msgstr "Foreslå" - -#: bookwyrm/templates/lists/list.html:221 +#: bookwyrm/templates/lists/list.html:260 msgid "Embed this list on a website" msgstr "Legg denne lista inn på et nettsted" -#: bookwyrm/templates/lists/list.html:229 +#: bookwyrm/templates/lists/list.html:268 msgid "Copy embed code" msgstr "Kopier kode som legger inn lista" -#: bookwyrm/templates/lists/list.html:231 +#: 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, en liste av %(owner)s på %(site_name)s" @@ -2788,6 +2959,11 @@ msgstr "Slett disse lesedatoene" msgid "Add read dates for \"%(title)s\"" msgstr "Legg til lesedatoer for \"%(title)s\"" +#: bookwyrm/templates/report.html:5 +#: bookwyrm/templates/snippets/report_button.html:13 +msgid "Report" +msgstr "Rapport" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "Resultat fra" @@ -2860,13 +3036,13 @@ msgstr "Usant" #: bookwyrm/templates/settings/announcements/announcement.html:46 #: bookwyrm/templates/settings/announcements/announcement_form.html:44 -#: bookwyrm/templates/settings/dashboard/dashboard.html:71 +#: bookwyrm/templates/settings/dashboard/dashboard.html:82 msgid "Start date:" msgstr "Startdato:" #: bookwyrm/templates/settings/announcements/announcement.html:51 #: bookwyrm/templates/settings/announcements/announcement_form.html:54 -#: bookwyrm/templates/settings/dashboard/dashboard.html:77 +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "End date:" msgstr "Sluttdato:" @@ -2894,7 +3070,7 @@ msgstr "Dato for hendelsen:" #: bookwyrm/templates/settings/announcements/announcements.html:3 #: bookwyrm/templates/settings/announcements/announcements.html:5 -#: bookwyrm/templates/settings/layout.html:72 +#: bookwyrm/templates/settings/layout.html:76 msgid "Announcements" msgstr "Kunngjøringer" @@ -2934,7 +3110,7 @@ msgid "Dashboard" msgstr "Kontrollpanel" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Total users" msgstr "Totalt antall brukere" @@ -2961,36 +3137,43 @@ msgstr[1] "%(display_count)s åpne rapporter" #: bookwyrm/templates/settings/dashboard/dashboard.html:54 #, python-format +msgid "%(display_count)s domain needs review" +msgid_plural "%(display_count)s domains need review" +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 msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s invitasjonsforespørsel" msgstr[1] "%(display_count)s invitasjonsforespørsler" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:76 msgid "Instance Activity" msgstr "Instansaktivitet" -#: bookwyrm/templates/settings/dashboard/dashboard.html:83 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Interval:" msgstr "Intervall:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:87 +#: bookwyrm/templates/settings/dashboard/dashboard.html:98 msgid "Days" msgstr "Dager" -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Weeks" msgstr "Uker" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "User signup activity" msgstr "Brukerregistreringsaktivitet" -#: bookwyrm/templates/settings/dashboard/dashboard.html:112 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Status activity" msgstr "Statusaktivitet" -#: bookwyrm/templates/settings/dashboard/dashboard.html:118 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "Works created" msgstr "Verker laget" @@ -3025,10 +3208,6 @@ msgstr "E-post blokkeringsliste" msgid "When someone tries to register with an email from this domain, no account will be created. The registration process will appear to have worked." msgstr "Når noen prøver å registrere seg med en e-post fra dette domenet, vil ingen konto bli opprettet, men registreringsprosessen vil se ut til å ha virket." -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 -msgid "Domain" -msgstr "Domene" - #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:29 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:27 msgid "Options" @@ -3087,10 +3266,6 @@ msgstr "Programvare:" msgid "Version:" msgstr "Versjon:" -#: bookwyrm/templates/settings/federation/edit_instance.html:74 -msgid "Notes:" -msgstr "Notater:" - #: bookwyrm/templates/settings/federation/instance.html:19 msgid "Details" msgstr "Detaljer" @@ -3140,12 +3315,8 @@ msgstr "Rediger" msgid "No notes" msgstr "Ingen notater" -#: bookwyrm/templates/settings/federation/instance.html:94 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 -msgid "Actions" -msgstr "Handlinger" - #: bookwyrm/templates/settings/federation/instance.html:98 +#: bookwyrm/templates/settings/link_domains/link_domains.html:87 #: bookwyrm/templates/snippets/block_button.html:5 msgid "Block" msgstr "Blokkér" @@ -3358,62 +3529,121 @@ msgstr "Moderering" msgid "Reports" msgstr "Rapporter" -#: bookwyrm/templates/settings/layout.html:68 +#: bookwyrm/templates/settings/layout.html:67 +#: bookwyrm/templates/settings/link_domains/link_domains.html:5 +#: bookwyrm/templates/settings/link_domains/link_domains.html:7 +msgid "Link Domains" +msgstr "Lenkedomener" + +#: bookwyrm/templates/settings/layout.html:72 msgid "Instance Settings" msgstr "Instansdetaljer" -#: bookwyrm/templates/settings/layout.html:76 +#: bookwyrm/templates/settings/layout.html:80 #: bookwyrm/templates/settings/site.html:4 #: bookwyrm/templates/settings/site.html:6 msgid "Site Settings" msgstr "Sideinnstillinger" -#: bookwyrm/templates/settings/reports/report.html:5 -#: bookwyrm/templates/settings/reports/report.html:8 -#: bookwyrm/templates/settings/reports/report_preview.html:6 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5 #, python-format -msgid "Report #%(report_id)s: %(username)s" -msgstr "Rapport #%(report_id)s: %(username)s" +msgid "Set display name for %(url)s" +msgstr "Angi visningsnavn for %(url)s" -#: bookwyrm/templates/settings/reports/report.html:9 +#: 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 "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 "Angi visningsnavn" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:53 +msgid "View links" +msgstr "Vis lenker" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:96 +msgid "No domains currently approved" +msgstr "Ingen domener er hittil godkjent" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:98 +msgid "No domains currently pending" +msgstr "Ingen domener venter for tiden på godkjenning" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:100 +msgid "No domains currently blocked" +msgstr "Ingen domener er for øyeblikket blokkert" + +#: bookwyrm/templates/settings/link_domains/link_table.html:39 +msgid "No links available for this domain." +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: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:40 +msgid "Status has been deleted" +msgstr "Status er slettet" + +#: bookwyrm/templates/settings/reports/report.html:52 +msgid "Reported links" +msgstr "Rapporterte lenker" + +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Moderatorkommentarer" -#: bookwyrm/templates/settings/reports/report.html:41 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Kommentar" -#: bookwyrm/templates/settings/reports/report.html:46 -msgid "Reported statuses" -msgstr "Rapporterte statuser" +#: bookwyrm/templates/settings/reports/report_header.html:6 +#, python-format +msgid "Report #%(report_id)s: Status posted by @%(username)s" +msgstr "Rapportér #%(report_id)s: Status postet av @%(username)s" -#: bookwyrm/templates/settings/reports/report.html:48 -msgid "No statuses reported" -msgstr "Ingen statuser rapportert" +#: bookwyrm/templates/settings/reports/report_header.html:12 +#, python-format +msgid "Report #%(report_id)s: Link added by @%(username)s" +msgstr "Rapportér #%(report_id)s: Lenke lagt til av @%(username)s" -#: bookwyrm/templates/settings/reports/report.html:54 -msgid "Status has been deleted" -msgstr "Status er slettet" +#: bookwyrm/templates/settings/reports/report_header.html:18 +#, python-format +msgid "Report #%(report_id)s: User @%(username)s" +msgstr "Rapportér #%(report_id)s: bruker @%(username)s" -#: bookwyrm/templates/settings/reports/report_preview.html:13 +#: bookwyrm/templates/settings/reports/report_links_table.html:17 +msgid "Block domain" +msgstr "Blokkér domene" + +#: bookwyrm/templates/settings/reports/report_preview.html:17 msgid "No notes provided" msgstr "Ingen merknader finnes" -#: bookwyrm/templates/settings/reports/report_preview.html:20 +#: bookwyrm/templates/settings/reports/report_preview.html:24 #, python-format -msgid "Reported by %(username)s" +msgid "Reported by @%(username)s" msgstr "Rapportert av %(username)s" -#: bookwyrm/templates/settings/reports/report_preview.html:30 +#: bookwyrm/templates/settings/reports/report_preview.html:34 msgid "Re-open" msgstr "Gjenåpne" -#: bookwyrm/templates/settings/reports/report_preview.html:32 +#: bookwyrm/templates/settings/reports/report_preview.html:36 msgid "Resolve" msgstr "Løs" @@ -3541,7 +3771,7 @@ msgid "Invite request text:" msgstr "Invitasjonsforespørsel tekst:" #: bookwyrm/templates/settings/users/delete_user_form.html:5 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:31 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:32 msgid "Permanently delete user" msgstr "Slett medlem for godt" @@ -3651,15 +3881,19 @@ msgstr "Vis instans" msgid "Permanently deleted" msgstr "Slettet for godt" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:20 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 +msgid "User Actions" +msgstr "Brukerhandlinger" + +#: bookwyrm/templates/settings/users/user_moderation_actions.html:21 msgid "Suspend user" msgstr "Deaktiver bruker" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:25 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:26 msgid "Un-suspend user" msgstr "Reaktivér bruker" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:47 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:48 msgid "Access level:" msgstr "Tilgangsnivå:" @@ -3724,15 +3958,15 @@ msgstr "Fullført" msgid "This shelf is empty." msgstr "Denne hylla er tom." -#: bookwyrm/templates/snippets/add_to_group_button.html:15 +#: bookwyrm/templates/snippets/add_to_group_button.html:16 msgid "Invite" msgstr "Invitér" -#: bookwyrm/templates/snippets/add_to_group_button.html:24 +#: bookwyrm/templates/snippets/add_to_group_button.html:25 msgid "Uninvite" msgstr "Avlys invitasjon" -#: bookwyrm/templates/snippets/add_to_group_button.html:28 +#: bookwyrm/templates/snippets/add_to_group_button.html:29 #, python-format msgid "Remove @%(username)s" msgstr "Fjern %(username)s" @@ -3797,14 +4031,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" @@ -3820,7 +4054,7 @@ msgstr "Spoilers forut!" msgid "Include spoiler alert" msgstr "Inkluder spoiler-varsel" -#: bookwyrm/templates/snippets/create_status/layout.html:48 +#: bookwyrm/templates/snippets/create_status/layout.html:47 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Kommentar:" @@ -3829,33 +4063,33 @@ msgstr "Kommentar:" msgid "Post" msgstr "Innlegg" -#: bookwyrm/templates/snippets/create_status/quotation.html:17 +#: bookwyrm/templates/snippets/create_status/quotation.html:16 msgid "Quote:" msgstr "Sitat:" -#: bookwyrm/templates/snippets/create_status/quotation.html:25 +#: bookwyrm/templates/snippets/create_status/quotation.html:24 #, python-format msgid "An excerpt from '%(book_title)s'" msgstr "En utdrag fra '%(book_title)s'" -#: bookwyrm/templates/snippets/create_status/quotation.html:32 +#: bookwyrm/templates/snippets/create_status/quotation.html:31 msgid "Position:" msgstr "Plassering:" -#: bookwyrm/templates/snippets/create_status/quotation.html:45 +#: bookwyrm/templates/snippets/create_status/quotation.html:44 msgid "On page:" msgstr "På side:" -#: bookwyrm/templates/snippets/create_status/quotation.html:51 +#: bookwyrm/templates/snippets/create_status/quotation.html:50 msgid "At percent:" msgstr "Ved prosent:" -#: bookwyrm/templates/snippets/create_status/review.html:25 +#: bookwyrm/templates/snippets/create_status/review.html:24 #, python-format msgid "Your review of '%(book_title)s'" msgstr "Din anmeldelse av '%(book_title)s" -#: bookwyrm/templates/snippets/create_status/review.html:40 +#: bookwyrm/templates/snippets/create_status/review.html:39 msgid "Review:" msgstr "Anmeldelse:" @@ -3882,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" @@ -3909,7 +4143,7 @@ msgid "Unfollow" msgstr "Slutt å følge" #: bookwyrm/templates/snippets/follow_request_buttons.html:7 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:8 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:9 msgid "Accept" msgstr "Godta" @@ -3949,15 +4183,15 @@ msgstr[1] "vurderte %(title)s til: %(display_r #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "" -msgstr[1] "" +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] "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 "" +msgid "Review of \"%(book_title)s\": %(review_title)s" +msgstr "Anmeldelse av \"%(book_title)s\": %(review_title)s" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4027,11 +4261,11 @@ msgstr "Kun følgere" msgid "Post privacy" msgstr "Delingsinstilling for post" -#: bookwyrm/templates/snippets/rate_action.html:4 +#: bookwyrm/templates/snippets/rate_action.html:5 msgid "Leave a rating" msgstr "Legg inn en vurdering" -#: bookwyrm/templates/snippets/rate_action.html:19 +#: bookwyrm/templates/snippets/rate_action.html:20 msgid "Rate" msgstr "Vurdér" @@ -4063,21 +4297,31 @@ msgstr "Har lyst til å lese \"%(book_title)s\"" msgid "Sign Up" msgstr "Registrer deg" -#: bookwyrm/templates/snippets/report_button.html:13 -msgid "Report" -msgstr "Rapport" +#: bookwyrm/templates/snippets/report_modal.html:8 +#, python-format +msgid "Report @%(username)s's status" +msgstr "Rapportér @%(username)s sin status" -#: bookwyrm/templates/snippets/report_modal.html:6 +#: bookwyrm/templates/snippets/report_modal.html:10 +#, python-format +msgid "Report %(domain)s link" +msgstr "Rapportér %(domain)s lenke" + +#: bookwyrm/templates/snippets/report_modal.html:12 #, python-format msgid "Report @%(username)s" msgstr "Rapporter @%(username)s" -#: bookwyrm/templates/snippets/report_modal.html:23 +#: bookwyrm/templates/snippets/report_modal.html:34 #, python-format msgid "This report will be sent to %(site_name)s's moderators for review." msgstr "Denne rapporten vil bli sendt til %(site_name)s sine moderatorer for gjennomsyn." -#: bookwyrm/templates/snippets/report_modal.html:26 +#: bookwyrm/templates/snippets/report_modal.html:36 +msgid "Links from this domain will be removed until your report has been reviewed." +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:" msgstr "Mer informasjon om denne rapporten:" @@ -4115,29 +4359,29 @@ msgstr "Fjern fra %(name)s" msgid "Finish reading" msgstr "Fullfør lesing" -#: bookwyrm/templates/snippets/status/content_status.html:75 +#: bookwyrm/templates/snippets/status/content_status.html:73 msgid "Content warning" msgstr "Varsel om følsomt innhold" -#: bookwyrm/templates/snippets/status/content_status.html:82 +#: bookwyrm/templates/snippets/status/content_status.html:80 msgid "Show status" msgstr "Vis status" -#: bookwyrm/templates/snippets/status/content_status.html:104 +#: bookwyrm/templates/snippets/status/content_status.html:102 #, python-format msgid "(Page %(page)s)" msgstr "(side %(page)s)" -#: bookwyrm/templates/snippets/status/content_status.html:106 +#: bookwyrm/templates/snippets/status/content_status.html:104 #, python-format msgid "(%(percent)s%%)" msgstr "(%(percent)s%%)" -#: bookwyrm/templates/snippets/status/content_status.html:128 +#: bookwyrm/templates/snippets/status/content_status.html:126 msgid "Open image in new window" msgstr "Åpne bilde i nytt vindu" -#: bookwyrm/templates/snippets/status/content_status.html:147 +#: bookwyrm/templates/snippets/status/content_status.html:145 msgid "Hide status" msgstr "Skjul status" @@ -4430,8 +4674,15 @@ msgstr "Ingen bruker med den e-postadressen ble funnet." msgid "A password reset link was sent to {email}" msgstr "En lenke for tilbakestilling av passord er sendt til {email}" -#: bookwyrm/views/rss_feed.py:35 +#: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" msgstr "Statusoppdateringer fra {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] "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 f856b3b60..2a69662f7 100644 Binary files a/locale/pt_BR/LC_MESSAGES/django.mo and b/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/locale/pt_BR/LC_MESSAGES/django.po b/locale/pt_BR/LC_MESSAGES/django.po index 0cead21f6..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-13 16:54+0000\n" -"PO-Revision-Date: 2022-01-13 21:04\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:351 +#: 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:365 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Um dia" -#: bookwyrm/forms.py:366 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Uma semana" -#: bookwyrm/forms.py:367 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Um mês" -#: bookwyrm/forms.py:368 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "Não expira" -#: bookwyrm/forms.py:372 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} usos" -#: bookwyrm/forms.py:373 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Ilimitado" -#: bookwyrm/forms.py:469 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Ordem de inserção" -#: bookwyrm/forms.py:470 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Título do livro" -#: bookwyrm/forms.py:471 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:33 +#: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Avaliação" -#: bookwyrm/forms.py:473 bookwyrm/templates/lists/list.html:134 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Organizar por" -#: bookwyrm/forms.py:477 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Crescente" -#: bookwyrm/forms.py:478 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Decrescente" -#: bookwyrm/forms.py:491 +#: 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." @@ -84,8 +92,9 @@ msgstr "Erro ao carregar livro" msgid "Could not find a match for book" msgstr "Não foi possível encontrar o livro" -#: bookwyrm/models/base_model.py:17 +#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 +#: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "Pendente" @@ -105,23 +114,23 @@ msgstr "Exclusão de moderador" msgid "Domain block" msgstr "Bloqueio de domínio" -#: bookwyrm/models/book.py:250 +#: bookwyrm/models/book.py:253 msgid "Audiobook" msgstr "Audiolivro" -#: bookwyrm/models/book.py:251 +#: bookwyrm/models/book.py:254 msgid "eBook" msgstr "e-book" -#: bookwyrm/models/book.py:252 +#: bookwyrm/models/book.py:255 msgid "Graphic novel" msgstr "Graphic novel" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:256 msgid "Hardcover" msgstr "Capa dura" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:257 msgid "Paperback" msgstr "Capa mole" @@ -131,33 +140,34 @@ msgstr "Capa mole" msgid "Federated" msgstr "Federado" -#: bookwyrm/models/federated_server.py:12 +#: bookwyrm/models/federated_server.py:12 bookwyrm/models/link.py:71 #: bookwyrm/templates/settings/federation/edit_instance.html:44 #: bookwyrm/templates/settings/federation/instance.html:10 #: bookwyrm/templates/settings/federation/instance_list.html:23 +#: bookwyrm/templates/settings/link_domains/link_domains.html:27 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 @@ -165,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 @@ -173,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 @@ -189,6 +199,23 @@ msgstr "Seguidores" msgid "Private" msgstr "Particular" +#: bookwyrm/models/link.py:51 +msgid "Free" +msgstr "Gratuito" + +#: bookwyrm/models/link.py:52 +msgid "Purchasable" +msgstr "Comprável" + +#: bookwyrm/models/link.py:53 +msgid "Available for loan" +msgstr "Disponível para empréstimo" + +#: bookwyrm/models/link.py:70 +#: bookwyrm/templates/settings/link_domains/link_domains.html:23 +msgid "Approved" +msgstr "Aprovado" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Resenhas" @@ -205,69 +232,73 @@ msgstr "Citações" msgid "Everything else" msgstr "Todo o resto" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home Timeline" msgstr "Linha do tempo" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home" msgstr "Página inicial" -#: bookwyrm/settings.py:122 +#: bookwyrm/settings.py:174 msgid "Books Timeline" msgstr "Linha do tempo dos livros" -#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Livros" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:248 msgid "English" msgstr "English (Inglês)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:249 msgid "Deutsch (German)" msgstr "Deutsch (Alemão)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:250 msgid "Español (Spanish)" msgstr "Español (Espanhol)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:251 msgid "Galego (Galician)" msgstr "Galego (Galego)" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:252 msgid "Italiano (Italian)" msgstr "Italiano (Italiano)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:253 msgid "Français (French)" msgstr "Français (Francês)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:254 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituano)" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:255 msgid "Norsk (Norwegian)" msgstr "Norsk (Norueguês)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:256 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Português do Brasil)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:257 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Português Europeu)" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:258 +msgid "Svenska (Swedish)" +msgstr "Svenska (Sueco)" + +#: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chinês simplificado)" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:260 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinês tradicional)" @@ -296,60 +327,57 @@ msgstr "Algo deu errado! Foi mal." msgid "About" msgstr "Sobre" -#: bookwyrm/templates/about/about.html:18 +#: bookwyrm/templates/about/about.html:19 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "Bem-vindol(a) a %(site_name)s!" -#: bookwyrm/templates/about/about.html:22 +#: 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 "%(site_name)s é parte da BookWyrm, uma rede independente e autogestionada para leitores. Apesar de você poder interagir diretamente com usuários de toda a rede BookWyrm, esta comunidade é única." -#: bookwyrm/templates/about/about.html:39 +#: bookwyrm/templates/about/about.html:40 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "%(title)s é o livro favorito da instância %(site_name)s, com uma avaliação média de %(rating)s em 5." -#: bookwyrm/templates/about/about.html:58 +#: bookwyrm/templates/about/about.html:59 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "O livro mais desejado de toda a instância %(site_name)s é %(title)s." -#: bookwyrm/templates/about/about.html:77 +#: bookwyrm/templates/about/about.html:78 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "%(title)s tem a avaliação mais polêmica de toda a instância %(site_name)s." -#: bookwyrm/templates/about/about.html:88 +#: 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 "Registre o andamento de suas leituras, fale sobre livros, escreva resenhas e ache o que ler em seguida. Sempre sem propagandas, anticorporativa e voltada à comunidade, a BookWyrm é um software em escala humana desenvolvido para permanecer pequeno e pessoal. Se você tem sugestões de funções, avisos sobre bugs ou grandes sonhos para o projeto, fale conosco e faça sua voz ser ouvida." -#: bookwyrm/templates/about/about.html:95 +#: bookwyrm/templates/about/about.html:96 msgid "Meet your admins" msgstr "Conheça a administração" -#: bookwyrm/templates/about/about.html:98 +#: bookwyrm/templates/about/about.html:99 #, python-format -msgid "\n" -" %(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.\n" -" " -msgstr "\n" -" Moderadores/as e administradores/as da instância %(site_name)s mantêm o site em funcionamento, aplicam o código de conduta e respondem às denúncias de spam e mau comportamento na rede. " +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 "Moderadores/as e administradores/as de %(site_name)s mantêm o site funcionando, aplicam o código de conduta e respondem quando usuários denunciam spam e mau comportamento." -#: bookwyrm/templates/about/about.html:112 +#: bookwyrm/templates/about/about.html:113 msgid "Moderator" msgstr "Moderador/a" -#: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 msgid "Admin" msgstr "Admin" -#: bookwyrm/templates/about/about.html:130 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:13 +#: 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" @@ -408,7 +436,7 @@ msgid "Copy address" msgstr "Copiar endereço" #: bookwyrm/templates/annual_summary/layout.html:68 -#: bookwyrm/templates/lists/list.html:230 +#: bookwyrm/templates/lists/list.html:269 msgid "Copied!" msgstr "Copiado!" @@ -477,7 +505,7 @@ msgstr "A leitura mais curta do ano…" #: bookwyrm/templates/annual_summary/layout.html:245 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 -#: bookwyrm/templates/landing/large-book.html:25 +#: bookwyrm/templates/landing/large-book.html:26 #: bookwyrm/templates/landing/small-book.html:18 msgid "by" msgstr "de" @@ -529,61 +557,61 @@ msgstr "Todos os livros lidos por %(display_name)s em %(year)s" msgid "Edit Author" msgstr "Editar autor/a" -#: bookwyrm/templates/author/author.html:40 +#: bookwyrm/templates/author/author.html:35 msgid "Author details" msgstr "Detalhes do/a autor/a" -#: bookwyrm/templates/author/author.html:44 +#: bookwyrm/templates/author/author.html:39 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "Pseudônimos:" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:48 msgid "Born:" msgstr "Nascimento:" -#: bookwyrm/templates/author/author.html:60 +#: bookwyrm/templates/author/author.html:55 msgid "Died:" msgstr "Morte:" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:65 msgid "External links" msgstr "Links externos" -#: bookwyrm/templates/author/author.html:75 +#: bookwyrm/templates/author/author.html:70 msgid "Wikipedia" msgstr "Wikipédia" -#: bookwyrm/templates/author/author.html:83 +#: bookwyrm/templates/author/author.html:78 msgid "View ISNI record" msgstr "Ver registro ISNI" -#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/author.html:83 #: bookwyrm/templates/author/sync_modal.html:5 #: bookwyrm/templates/book/book.html:122 #: bookwyrm/templates/book/sync_modal.html:5 msgid "Load data" msgstr "Carregar informações" -#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/author/author.html:87 #: bookwyrm/templates/book/book.html:126 msgid "View on OpenLibrary" msgstr "Ver na OpenLibrary" -#: bookwyrm/templates/author/author.html:107 +#: bookwyrm/templates/author/author.html:102 #: bookwyrm/templates/book/book.html:140 msgid "View on Inventaire" msgstr "Ver no Inventaire" -#: bookwyrm/templates/author/author.html:123 +#: bookwyrm/templates/author/author.html:118 msgid "View on LibraryThing" msgstr "Ver no LibraryThing" -#: bookwyrm/templates/author/author.html:131 +#: bookwyrm/templates/author/author.html:126 msgid "View on Goodreads" msgstr "Ver no Goodreads" -#: bookwyrm/templates/author/author.html:145 +#: bookwyrm/templates/author/author.html:141 #, python-format msgid "Books by %(name)s" msgstr "Livros de %(name)s" @@ -613,7 +641,9 @@ msgid "Metadata" msgstr "Metadados" #: bookwyrm/templates/author/edit_author.html:35 -#: bookwyrm/templates/lists/form.html:9 bookwyrm/templates/shelf/form.html:9 +#: bookwyrm/templates/lists/form.html:9 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:14 +#: bookwyrm/templates/shelf/form.html:9 msgid "Name:" msgstr "Nome:" @@ -667,8 +697,11 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 +#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: 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 @@ -676,7 +709,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 #: bookwyrm/templates/settings/site.html:133 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:68 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 msgid "Save" @@ -688,13 +721,17 @@ msgstr "Salvar" #: 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/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/settings/federation/instance.html:88 -#: bookwyrm/templates/snippets/report_modal.html:38 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 +#: bookwyrm/templates/snippets/report_modal.html:54 msgid "Cancel" msgstr "Cancelar" @@ -706,9 +743,9 @@ msgstr "Para carregar informações nos conectaremos a %(source_name)s\"%(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" +#: bookwyrm/templates/book/file_links/add_link_modal.html:6 +msgid "Add file link" +msgstr "Adicionar link do arquivo" + +#: 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 "Links de domínios desconhecidos precisarão ser aprovados por um/a moderador/a antes de serem adicionados." + +#: bookwyrm/templates/book/file_links/add_link_modal.html:24 +msgid "URL:" +msgstr "URL:" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:29 +msgid "File type:" +msgstr "Tipo do arquivo:" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:48 +msgid "Availability:" +msgstr "Disponibilidade:" + +#: 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 "Editar links" + +#: bookwyrm/templates/book/file_links/edit_links.html:11 +#, python-format +msgid "\n" +" Links for \"%(title)s\"\n" +" " +msgstr "\n" +" Links de \"%(title)s\"\n" +" " + +#: bookwyrm/templates/book/file_links/edit_links.html:32 +#: bookwyrm/templates/settings/link_domains/link_table.html:6 +msgid "URL" +msgstr "URL" + +#: bookwyrm/templates/book/file_links/edit_links.html:33 +#: bookwyrm/templates/settings/link_domains/link_table.html:7 +msgid "Added by" +msgstr "Adicionado por" + +#: bookwyrm/templates/book/file_links/edit_links.html:34 +#: bookwyrm/templates/settings/link_domains/link_table.html:8 +msgid "Filetype" +msgstr "Tipo do arquivo" + +#: bookwyrm/templates/book/file_links/edit_links.html:35 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 +#: bookwyrm/templates/settings/reports/report_links_table.html:5 +msgid "Domain" +msgstr "Domínio" + +#: bookwyrm/templates/book/file_links/edit_links.html:36 +#: bookwyrm/templates/import/import_status.html:127 +#: bookwyrm/templates/settings/announcements/announcements.html:38 +#: bookwyrm/templates/settings/federation/instance_list.html:46 +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 +#: bookwyrm/templates/settings/invites/status_filter.html:5 +#: bookwyrm/templates/settings/users/user_admin.html:34 +#: bookwyrm/templates/settings/users/user_info.html:20 +msgid "Status" +msgstr "Publicação" + +#: bookwyrm/templates/book/file_links/edit_links.html:37 +#: bookwyrm/templates/settings/federation/instance.html:94 +#: bookwyrm/templates/settings/reports/report_links_table.html:6 +msgid "Actions" +msgstr "Ações" + +#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 +msgid "Report spam" +msgstr "Denunciar spam" + +#: bookwyrm/templates/book/file_links/edit_links.html:97 +msgid "No links available for this book." +msgstr "Nenhum link disponível para este livro." + +#: bookwyrm/templates/book/file_links/edit_links.html:108 +#: bookwyrm/templates/book/file_links/links.html:18 +msgid "Add link to file" +msgstr "Adicionar link ao arquivo" + +#: bookwyrm/templates/book/file_links/file_link_page.html:6 +msgid "File Links" +msgstr "Links de arquivo" + +#: bookwyrm/templates/book/file_links/links.html:9 +msgid "Get a copy" +msgstr "Obter uma cópia" + +#: bookwyrm/templates/book/file_links/links.html:47 +msgid "No links available" +msgstr "Nenhum link disponível" + +#: bookwyrm/templates/book/file_links/verification_modal.html:5 +msgid "Leaving BookWyrm" +msgstr "Saindo da 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 "Este link te levará a: %(link_url)s.
    Você quer mesmo ir?" + +#: bookwyrm/templates/book/file_links/verification_modal.html:20 +msgid "Continue" +msgstr "Continuar" + #: bookwyrm/templates/book/publisher_info.html:23 #, python-format msgid "%(format)s, %(pages)s pages" @@ -1109,8 +1259,8 @@ msgstr "Código de confirmação:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:93 -#: bookwyrm/templates/snippets/report_modal.html:37 +#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Enviar" @@ -1416,16 +1566,11 @@ msgstr "Todas as mensagens" msgid "You have no messages right now." msgstr "Você não tem mensagens." -#: bookwyrm/templates/feed/feed.html:28 -#, python-format -msgid "load 0 unread status(es)" -msgstr "carregar 0 publicações não lida(s)" - -#: 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 "Não há nenhuma atividade! Tente seguir um usuário para começar" -#: bookwyrm/templates/feed/feed.html:52 +#: bookwyrm/templates/feed/feed.html:55 msgid "Alternatively, you can try enabling more status types" msgstr "Uma outra opção é habilitar mais tipos de publicação" @@ -1514,7 +1659,7 @@ msgid "What are you reading?" msgstr "O que você está lendo?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162 +#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:205 msgid "Search for a book" msgstr "Pesquisar livro" @@ -1532,9 +1677,9 @@ msgstr "Você pode adicionar livros quando começar a usar o %(site_name)s." #: bookwyrm/templates/get_started/books.html:17 #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166 +#: 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/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -1550,7 +1695,7 @@ msgid "Popular on %(site_name)s" msgstr "Popular em %(site_name)s" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:179 +#: bookwyrm/templates/lists/list.html:222 msgid "No books found" msgstr "Nenhum livro encontrado" @@ -1655,7 +1800,7 @@ msgstr "Esta ação não pode ser desfeita" #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 #: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:14 msgid "Delete" msgstr "Excluir" @@ -1675,17 +1820,17 @@ msgstr "Descrição do grupo:" msgid "Delete group" msgstr "Excluir grupo" -#: bookwyrm/templates/groups/group.html:22 +#: bookwyrm/templates/groups/group.html:21 msgid "Members of this group can create group-curated lists." msgstr "Membros deste grupo podem criar listas organizadas coletivamente." -#: bookwyrm/templates/groups/group.html:27 +#: bookwyrm/templates/groups/group.html:26 #: bookwyrm/templates/lists/create_form.html:5 #: bookwyrm/templates/lists/lists.html:20 msgid "Create List" msgstr "Criar lista" -#: bookwyrm/templates/groups/group.html:40 +#: bookwyrm/templates/groups/group.html:39 msgid "This group has no lists" msgstr "Este grupo não tem listas" @@ -1693,15 +1838,15 @@ msgstr "Este grupo não tem listas" msgid "Edit group" msgstr "Editar grupo" -#: bookwyrm/templates/groups/members.html:12 +#: bookwyrm/templates/groups/members.html:11 msgid "Search to add a user" msgstr "Pesquisar usuário para adicionar" -#: bookwyrm/templates/groups/members.html:33 +#: bookwyrm/templates/groups/members.html:32 msgid "Leave group" msgstr "Sair do grupo" -#: bookwyrm/templates/groups/members.html:55 +#: bookwyrm/templates/groups/members.html:54 #: bookwyrm/templates/groups/suggested_users.html:35 #: bookwyrm/templates/snippets/suggested_users.html:31 #: bookwyrm/templates/user/user_preview.html:36 @@ -1857,19 +2002,10 @@ msgid "Review" msgstr "Resenhar" #: bookwyrm/templates/import/import_status.html:124 +#: bookwyrm/templates/settings/link_domains/link_table.html:9 msgid "Book" msgstr "Livro" -#: bookwyrm/templates/import/import_status.html:127 -#: bookwyrm/templates/settings/announcements/announcements.html:38 -#: bookwyrm/templates/settings/federation/instance_list.html:46 -#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 -#: bookwyrm/templates/settings/invites/status_filter.html:5 -#: bookwyrm/templates/settings/users/user_admin.html:34 -#: bookwyrm/templates/settings/users/user_info.html:20 -msgid "Status" -msgstr "Publicação" - #: bookwyrm/templates/import/import_status.html:135 msgid "Import preview unavailable." msgstr "Pré-visualização de importação indisponível." @@ -1908,7 +2044,8 @@ msgid "Approving a suggestion will permanently add the suggested book to your sh msgstr "Aprovar uma sugestão adicionará permanentemente o livro sugerido às suas estantes e associará suas datas de leitura, resenhas e avaliações aos do livro." #: 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 "Aprovar" @@ -1917,8 +2054,8 @@ msgid "Reject" msgstr "Rejeitar" #: bookwyrm/templates/import/tooltip.html:6 -msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." -msgstr "Você pode baixar seus dados do Goodreads na página de Importar/Exportar da sua conta." +msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." +msgstr "Você pode baixar seus dados do Goodreads na página de Importar/Exportar da sua conta." #: bookwyrm/templates/import/troubleshoot.html:7 msgid "Failed items" @@ -2118,6 +2255,21 @@ msgstr "Apoie a instância %(site_name)s: GitHub." msgstr "O código-fonte da BookWyrm está disponível gratuitamente. Você pode contribuir ou reportar problemas no GitHub." +#: bookwyrm/templates/lists/add_item_modal.html:8 +#, python-format +msgid "Add \"%(title)s\" to this list" +msgstr "Adicionar \"%(title)s\" a esta lista" + +#: bookwyrm/templates/lists/add_item_modal.html:12 +#, python-format +msgid "Suggest \"%(title)s\" for this list" +msgstr "Sugerir \"%(title)s\" para esta lista" + +#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/list.html:249 +msgid "Suggest" +msgstr "Sugerir" + #: bookwyrm/templates/lists/bookmark_button.html:30 msgid "Un-save" msgstr "Restaurar" @@ -2137,23 +2289,29 @@ msgstr "Criada e organizada por %(username)s" msgid "Created by %(username)s" msgstr "Criada por %(username)s" -#: bookwyrm/templates/lists/curate.html:11 +#: bookwyrm/templates/lists/curate.html:12 msgid "Curate" msgstr "Moderar" -#: bookwyrm/templates/lists/curate.html:20 +#: bookwyrm/templates/lists/curate.html:21 msgid "Pending Books" msgstr "Livros pendentes" -#: bookwyrm/templates/lists/curate.html:23 +#: bookwyrm/templates/lists/curate.html:24 msgid "You're all set!" msgstr "Tudo pronto!" -#: bookwyrm/templates/lists/curate.html:43 +#: bookwyrm/templates/lists/curate.html:45 +#: bookwyrm/templates/lists/list.html:83 +#, python-format +msgid "%(username)s says:" +msgstr "%(username)s diz:" + +#: bookwyrm/templates/lists/curate.html:55 msgid "Suggested by" msgstr "Sugerido por" -#: bookwyrm/templates/lists/curate.html:65 +#: bookwyrm/templates/lists/curate.html:77 msgid "Discard" msgstr "Descartar" @@ -2166,18 +2324,18 @@ msgstr "Deletar esta lista?" msgid "Edit List" msgstr "Editar lista" -#: bookwyrm/templates/lists/embed-list.html:7 +#: bookwyrm/templates/lists/embed-list.html:8 #, python-format msgid "%(list_name)s, a list by %(owner)s" msgstr "%(list_name)s, uma lista de %(owner)s" -#: bookwyrm/templates/lists/embed-list.html:17 +#: bookwyrm/templates/lists/embed-list.html:18 #, python-format msgid "on %(site_name)s" msgstr "em %(site_name)s" -#: bookwyrm/templates/lists/embed-list.html:26 -#: bookwyrm/templates/lists/list.html:42 +#: bookwyrm/templates/lists/embed-list.html:27 +#: bookwyrm/templates/lists/list.html:44 msgid "This list is currently empty" msgstr "Esta lista está vazia" @@ -2238,75 +2396,89 @@ msgstr "Criar grupo" msgid "Delete list" msgstr "Excluir lista" -#: bookwyrm/templates/lists/list.html:34 +#: bookwyrm/templates/lists/item_notes_field.html:7 +#: bookwyrm/templates/settings/federation/edit_instance.html:74 +msgid "Notes:" +msgstr "Notas:" + +#: bookwyrm/templates/lists/item_notes_field.html:19 +msgid "An optional note that will be displayed with the book." +msgstr "Uma anotação opcional será mostrada com o livro." + +#: bookwyrm/templates/lists/list.html:36 msgid "You successfully suggested a book for this list!" msgstr "Você sugeriu um livro para esta lista com sucesso!" -#: bookwyrm/templates/lists/list.html:36 +#: bookwyrm/templates/lists/list.html:38 msgid "You successfully added a book to this list!" msgstr "Você adicionou um livro a esta lista com sucesso!" -#: bookwyrm/templates/lists/list.html:80 +#: bookwyrm/templates/lists/list.html:96 +msgid "Edit notes" +msgstr "Editar anotações" + +#: bookwyrm/templates/lists/list.html:111 +msgid "Add notes" +msgstr "Adicionar anotações" + +#: bookwyrm/templates/lists/list.html:123 #, python-format msgid "Added by %(username)s" msgstr "Adicionado por %(username)s" -#: bookwyrm/templates/lists/list.html:95 +#: bookwyrm/templates/lists/list.html:138 msgid "List position" msgstr "Posição na lista" -#: bookwyrm/templates/lists/list.html:101 +#: bookwyrm/templates/lists/list.html:144 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 msgid "Set" msgstr "Definir" -#: bookwyrm/templates/lists/list.html:116 -#: bookwyrm/templates/snippets/remove_from_group_button.html:19 +#: bookwyrm/templates/lists/list.html:159 +#: bookwyrm/templates/snippets/remove_from_group_button.html:20 msgid "Remove" msgstr "Remover" -#: bookwyrm/templates/lists/list.html:130 -#: bookwyrm/templates/lists/list.html:147 +#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:190 msgid "Sort List" msgstr "Ordenar lista" -#: bookwyrm/templates/lists/list.html:140 +#: bookwyrm/templates/lists/list.html:183 msgid "Direction" msgstr "Sentido" -#: bookwyrm/templates/lists/list.html:154 +#: bookwyrm/templates/lists/list.html:197 msgid "Add Books" msgstr "Adicionar livros" -#: bookwyrm/templates/lists/list.html:156 +#: bookwyrm/templates/lists/list.html:199 msgid "Suggest Books" msgstr "Sugerir livros" -#: bookwyrm/templates/lists/list.html:167 +#: bookwyrm/templates/lists/list.html:210 msgid "search" msgstr "pesquisar" -#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:216 msgid "Clear search" msgstr "Limpar pesquisa" -#: bookwyrm/templates/lists/list.html:178 +#: bookwyrm/templates/lists/list.html:221 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "Nenhum livro encontrado para \"%(query)s\"" -#: bookwyrm/templates/lists/list.html:210 -msgid "Suggest" -msgstr "Sugerir" - -#: bookwyrm/templates/lists/list.html:221 +#: bookwyrm/templates/lists/list.html:260 msgid "Embed this list on a website" msgstr "Incorpore esta lista em um site" -#: bookwyrm/templates/lists/list.html:229 +#: bookwyrm/templates/lists/list.html:268 msgid "Copy embed code" msgstr "Copiar código de incorporação" -#: bookwyrm/templates/lists/list.html:231 +#: 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, uma lista de %(owner)s em %(site_name)s" @@ -2787,6 +2959,11 @@ msgstr "Excluir estas datas de leitura" msgid "Add read dates for \"%(title)s\"" msgstr "Adicionar datas de leitura de \"%(title)s\"" +#: bookwyrm/templates/report.html:5 +#: bookwyrm/templates/snippets/report_button.html:13 +msgid "Report" +msgstr "Denunciar" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "Resultados de" @@ -2859,13 +3036,13 @@ msgstr "Falso" #: bookwyrm/templates/settings/announcements/announcement.html:46 #: bookwyrm/templates/settings/announcements/announcement_form.html:44 -#: bookwyrm/templates/settings/dashboard/dashboard.html:71 +#: bookwyrm/templates/settings/dashboard/dashboard.html:82 msgid "Start date:" msgstr "Data de início:" #: bookwyrm/templates/settings/announcements/announcement.html:51 #: bookwyrm/templates/settings/announcements/announcement_form.html:54 -#: bookwyrm/templates/settings/dashboard/dashboard.html:77 +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "End date:" msgstr "Data final:" @@ -2893,7 +3070,7 @@ msgstr "Data do evento:" #: bookwyrm/templates/settings/announcements/announcements.html:3 #: bookwyrm/templates/settings/announcements/announcements.html:5 -#: bookwyrm/templates/settings/layout.html:72 +#: bookwyrm/templates/settings/layout.html:76 msgid "Announcements" msgstr "Avisos" @@ -2933,7 +3110,7 @@ msgid "Dashboard" msgstr "Painel" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Total users" msgstr "Total de usuários" @@ -2960,36 +3137,43 @@ msgstr[1] "%(display_count)s denúncias abertas" #: bookwyrm/templates/settings/dashboard/dashboard.html:54 #, python-format +msgid "%(display_count)s domain needs review" +msgid_plural "%(display_count)s domains need review" +msgstr[0] "%(display_count)s domínio precisa ser analisado" +msgstr[1] "%(display_count)s domínios precisam ser analisados" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s pedido de convite" msgstr[1] "%(display_count)s pedidos de convite" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:76 msgid "Instance Activity" msgstr "Atividade da instância" -#: bookwyrm/templates/settings/dashboard/dashboard.html:83 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Interval:" msgstr "Intervalo:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:87 +#: bookwyrm/templates/settings/dashboard/dashboard.html:98 msgid "Days" msgstr "Dias" -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Weeks" msgstr "Semanas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "User signup activity" msgstr "Novos usuários" -#: bookwyrm/templates/settings/dashboard/dashboard.html:112 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Status activity" msgstr "Publicações" -#: bookwyrm/templates/settings/dashboard/dashboard.html:118 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "Works created" msgstr "Obras criadas" @@ -3024,10 +3208,6 @@ msgstr "Lista de bloqueio de e-mails" msgid "When someone tries to register with an email from this domain, no account will be created. The registration process will appear to have worked." msgstr "Quando alguém tentar se registrar com um e-mail desta domínio a conta não será criada. O processo de registro apenas parecerá ter funcionado." -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 -msgid "Domain" -msgstr "Domínio" - #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:29 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:27 msgid "Options" @@ -3086,10 +3266,6 @@ msgstr "Software:" msgid "Version:" msgstr "Versão:" -#: bookwyrm/templates/settings/federation/edit_instance.html:74 -msgid "Notes:" -msgstr "Notas:" - #: bookwyrm/templates/settings/federation/instance.html:19 msgid "Details" msgstr "Detalhes" @@ -3139,12 +3315,8 @@ msgstr "Editar" msgid "No notes" msgstr "Sem notas" -#: bookwyrm/templates/settings/federation/instance.html:94 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 -msgid "Actions" -msgstr "Ações" - #: bookwyrm/templates/settings/federation/instance.html:98 +#: bookwyrm/templates/settings/link_domains/link_domains.html:87 #: bookwyrm/templates/snippets/block_button.html:5 msgid "Block" msgstr "Bloquear" @@ -3357,62 +3529,121 @@ msgstr "Moderação" msgid "Reports" msgstr "Denúncias" -#: bookwyrm/templates/settings/layout.html:68 +#: bookwyrm/templates/settings/layout.html:67 +#: bookwyrm/templates/settings/link_domains/link_domains.html:5 +#: bookwyrm/templates/settings/link_domains/link_domains.html:7 +msgid "Link Domains" +msgstr "Domínios de links" + +#: bookwyrm/templates/settings/layout.html:72 msgid "Instance Settings" msgstr "Configurações da instância" -#: bookwyrm/templates/settings/layout.html:76 +#: bookwyrm/templates/settings/layout.html:80 #: bookwyrm/templates/settings/site.html:4 #: bookwyrm/templates/settings/site.html:6 msgid "Site Settings" msgstr "Configurações do site" -#: bookwyrm/templates/settings/reports/report.html:5 -#: bookwyrm/templates/settings/reports/report.html:8 -#: bookwyrm/templates/settings/reports/report_preview.html:6 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5 #, python-format -msgid "Report #%(report_id)s: %(username)s" -msgstr "Denúncia #%(report_id)s: %(username)s" +msgid "Set display name for %(url)s" +msgstr "Definir nome de exibição para %(url)s" -#: bookwyrm/templates/settings/reports/report.html:9 +#: 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 "Os domínios devem ser aprovados antes de poderem ser exibidos nas páginas dos livros. Certifique-se de que os domínios não estejam hospedando spam, códigos maliciosos ou links enganosos antes de aprová-los." + +#: bookwyrm/templates/settings/link_domains/link_domains.html:45 +msgid "Set display name" +msgstr "Definir nome de exibição" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:53 +msgid "View links" +msgstr "Ver links" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:96 +msgid "No domains currently approved" +msgstr "Nenhum domínio aprovado atualmente" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:98 +msgid "No domains currently pending" +msgstr "Nenhum domínio pendente de aprovação" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:100 +msgid "No domains currently blocked" +msgstr "Nenhum domínio bloqueado" + +#: bookwyrm/templates/settings/link_domains/link_table.html:39 +msgid "No links available for this domain." +msgstr "Nenhum link disponível para este domínio." + +#: bookwyrm/templates/settings/reports/report.html:11 msgid "Back to reports" msgstr "Voltar às denúncias" #: 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:40 +msgid "Status has been deleted" +msgstr "A publicação foi excluída" + +#: bookwyrm/templates/settings/reports/report.html:52 +msgid "Reported links" +msgstr "Links denunciados" + +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Comentários da moderação" -#: bookwyrm/templates/settings/reports/report.html:41 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Comentar" -#: bookwyrm/templates/settings/reports/report.html:46 -msgid "Reported statuses" -msgstr "Publicações denunciadas" +#: bookwyrm/templates/settings/reports/report_header.html:6 +#, python-format +msgid "Report #%(report_id)s: Status posted by @%(username)s" +msgstr "Denúncia #%(report_id)s: Publicação de @%(username)s" -#: bookwyrm/templates/settings/reports/report.html:48 -msgid "No statuses reported" -msgstr "Nenhuma publicação denunciada" +#: bookwyrm/templates/settings/reports/report_header.html:12 +#, python-format +msgid "Report #%(report_id)s: Link added by @%(username)s" +msgstr "Denúncia #%(report_id)s: Link adicionado por @%(username)s" -#: bookwyrm/templates/settings/reports/report.html:54 -msgid "Status has been deleted" -msgstr "A publicação foi excluída" +#: bookwyrm/templates/settings/reports/report_header.html:18 +#, python-format +msgid "Report #%(report_id)s: User @%(username)s" +msgstr "Denúncia #%(report_id)s: Usuário @%(username)s" -#: bookwyrm/templates/settings/reports/report_preview.html:13 +#: bookwyrm/templates/settings/reports/report_links_table.html:17 +msgid "Block domain" +msgstr "Bloquear domínio" + +#: bookwyrm/templates/settings/reports/report_preview.html:17 msgid "No notes provided" msgstr "Nenhum comentário foi feito" -#: bookwyrm/templates/settings/reports/report_preview.html:20 +#: bookwyrm/templates/settings/reports/report_preview.html:24 #, python-format -msgid "Reported by %(username)s" -msgstr "Denunciado por %(username)s" +msgid "Reported by @%(username)s" +msgstr "Denunciado por @%(username)s" -#: bookwyrm/templates/settings/reports/report_preview.html:30 +#: bookwyrm/templates/settings/reports/report_preview.html:34 msgid "Re-open" msgstr "Reabrir" -#: bookwyrm/templates/settings/reports/report_preview.html:32 +#: bookwyrm/templates/settings/reports/report_preview.html:36 msgid "Resolve" msgstr "Concluir" @@ -3540,7 +3771,7 @@ msgid "Invite request text:" msgstr "Texto solicitação de convite:" #: bookwyrm/templates/settings/users/delete_user_form.html:5 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:31 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:32 msgid "Permanently delete user" msgstr "Excluir usuário permanentemente" @@ -3650,15 +3881,19 @@ msgstr "Ver instância" msgid "Permanently deleted" msgstr "Excluído permanentemente" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:20 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 +msgid "User Actions" +msgstr "Ações do usuário" + +#: bookwyrm/templates/settings/users/user_moderation_actions.html:21 msgid "Suspend user" msgstr "Suspender usuário" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:25 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:26 msgid "Un-suspend user" msgstr "Reativar usuário" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:47 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:48 msgid "Access level:" msgstr "Nível de acesso:" @@ -3723,15 +3958,15 @@ msgstr "Terminado" msgid "This shelf is empty." msgstr "Esta estante está vazia." -#: bookwyrm/templates/snippets/add_to_group_button.html:15 +#: bookwyrm/templates/snippets/add_to_group_button.html:16 msgid "Invite" msgstr "Convidar" -#: bookwyrm/templates/snippets/add_to_group_button.html:24 +#: bookwyrm/templates/snippets/add_to_group_button.html:25 msgid "Uninvite" msgstr "Desconvidar" -#: bookwyrm/templates/snippets/add_to_group_button.html:28 +#: bookwyrm/templates/snippets/add_to_group_button.html:29 #, python-format msgid "Remove @%(username)s" msgstr "Excluir @%(username)s" @@ -3796,14 +4031,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" @@ -3819,7 +4054,7 @@ msgstr "Alerta de spoiler!" msgid "Include spoiler alert" msgstr "Incluir alerta de spoiler" -#: bookwyrm/templates/snippets/create_status/layout.html:48 +#: bookwyrm/templates/snippets/create_status/layout.html:47 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Comentário:" @@ -3828,33 +4063,33 @@ msgstr "Comentário:" msgid "Post" msgstr "Publicar" -#: bookwyrm/templates/snippets/create_status/quotation.html:17 +#: bookwyrm/templates/snippets/create_status/quotation.html:16 msgid "Quote:" msgstr "Citação:" -#: bookwyrm/templates/snippets/create_status/quotation.html:25 +#: bookwyrm/templates/snippets/create_status/quotation.html:24 #, python-format msgid "An excerpt from '%(book_title)s'" msgstr "Um trecho de '%(book_title)s'" -#: bookwyrm/templates/snippets/create_status/quotation.html:32 +#: bookwyrm/templates/snippets/create_status/quotation.html:31 msgid "Position:" msgstr "Posição:" -#: bookwyrm/templates/snippets/create_status/quotation.html:45 +#: bookwyrm/templates/snippets/create_status/quotation.html:44 msgid "On page:" msgstr "Na página:" -#: bookwyrm/templates/snippets/create_status/quotation.html:51 +#: bookwyrm/templates/snippets/create_status/quotation.html:50 msgid "At percent:" msgstr "Na porcentagem:" -#: bookwyrm/templates/snippets/create_status/review.html:25 +#: bookwyrm/templates/snippets/create_status/review.html:24 #, python-format msgid "Your review of '%(book_title)s'" msgstr "Sua resenha de '%(book_title)s'" -#: bookwyrm/templates/snippets/create_status/review.html:40 +#: bookwyrm/templates/snippets/create_status/review.html:39 msgid "Review:" msgstr "Resenha:" @@ -3881,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" @@ -3908,7 +4143,7 @@ msgid "Unfollow" msgstr "Deixar de seguir" #: bookwyrm/templates/snippets/follow_request_buttons.html:7 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:8 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:9 msgid "Accept" msgstr "Aceitar" @@ -3948,15 +4183,15 @@ msgstr[1] "avaliou %(title)s: %(display_rating #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Resenha de \"%(book_title)s\" (%(display_rating)s estrela): %(review_title)s" -msgstr[1] "Resenha de \"%(book_title)s\" (%(display_rating)s estrelas): %(review_title)s" +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] "Resenha de \"%(book_title)s\" (%(display_rating)s estrela): %(review_title)s" +msgstr[1] "Resenha de \"%(book_title)s\" (%(display_rating)s estrelas): %(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 "Resenha de \"%(book_title)s\": %(review_title)s" +msgid "Review of \"%(book_title)s\": %(review_title)s" +msgstr "Resenha de \"%(book_title)s\": %(review_title)s" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4026,11 +4261,11 @@ msgstr "Apenas seguidores" msgid "Post privacy" msgstr "Privacidade da publicação" -#: bookwyrm/templates/snippets/rate_action.html:4 +#: bookwyrm/templates/snippets/rate_action.html:5 msgid "Leave a rating" msgstr "Deixe uma avaliação" -#: bookwyrm/templates/snippets/rate_action.html:19 +#: bookwyrm/templates/snippets/rate_action.html:20 msgid "Rate" msgstr "Avaliar" @@ -4062,21 +4297,31 @@ msgstr "Quero ler \"%(book_title)s\"" msgid "Sign Up" msgstr "Cadastrar" -#: bookwyrm/templates/snippets/report_button.html:13 -msgid "Report" -msgstr "Denunciar" +#: bookwyrm/templates/snippets/report_modal.html:8 +#, python-format +msgid "Report @%(username)s's status" +msgstr "Denunciar publicação de @%(username)s" -#: bookwyrm/templates/snippets/report_modal.html:6 +#: bookwyrm/templates/snippets/report_modal.html:10 +#, python-format +msgid "Report %(domain)s link" +msgstr "Denunciar link %(domain)s" + +#: bookwyrm/templates/snippets/report_modal.html:12 #, python-format msgid "Report @%(username)s" msgstr "Denunciar @%(username)s" -#: bookwyrm/templates/snippets/report_modal.html:23 +#: bookwyrm/templates/snippets/report_modal.html:34 #, python-format msgid "This report will be sent to %(site_name)s's moderators for review." msgstr "Esta denúncia será encaminhada à equipe de moderadores de %(site_name)s para análise." -#: bookwyrm/templates/snippets/report_modal.html:26 +#: bookwyrm/templates/snippets/report_modal.html:36 +msgid "Links from this domain will be removed until your report has been reviewed." +msgstr "Links deste domínio serão excluídos até sua denúncia ser analisada." + +#: bookwyrm/templates/snippets/report_modal.html:41 msgid "More info about this report:" msgstr "Mais informações sobre esta denúncia:" @@ -4114,29 +4359,29 @@ msgstr "Remover de %(name)s" msgid "Finish reading" msgstr "Terminar de ler" -#: bookwyrm/templates/snippets/status/content_status.html:75 +#: bookwyrm/templates/snippets/status/content_status.html:73 msgid "Content warning" msgstr "Aviso de conteúdo" -#: bookwyrm/templates/snippets/status/content_status.html:82 +#: bookwyrm/templates/snippets/status/content_status.html:80 msgid "Show status" msgstr "Mostrar publicação" -#: bookwyrm/templates/snippets/status/content_status.html:104 +#: bookwyrm/templates/snippets/status/content_status.html:102 #, python-format msgid "(Page %(page)s)" msgstr "(Página %(page)s)" -#: bookwyrm/templates/snippets/status/content_status.html:106 +#: bookwyrm/templates/snippets/status/content_status.html:104 #, python-format msgid "(%(percent)s%%)" msgstr "(%(percent)s%%)" -#: bookwyrm/templates/snippets/status/content_status.html:128 +#: bookwyrm/templates/snippets/status/content_status.html:126 msgid "Open image in new window" msgstr "Abrir imagem em nova janela" -#: bookwyrm/templates/snippets/status/content_status.html:147 +#: bookwyrm/templates/snippets/status/content_status.html:145 msgid "Hide status" msgstr "Esconder publicação" @@ -4429,8 +4674,15 @@ msgstr "Não há nenhum usuário com este e-mail." msgid "A password reset link was sent to {email}" msgstr "Um link para redefinição da senha foi enviado para {email}" -#: bookwyrm/views/rss_feed.py:35 +#: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" msgstr "Novas publicações de {obj.display_name}" +#: bookwyrm/views/updates.py:45 +#, python-format +msgid "Load %(count)d unread status" +msgid_plural "Load %(count)d unread statuses" +msgstr[0] "Carregar %(count)d publicação não lida" +msgstr[1] "Carregar %(count)d publicações não lidas" + diff --git a/locale/pt_PT/LC_MESSAGES/django.mo b/locale/pt_PT/LC_MESSAGES/django.mo index f0c8c4c7a..9dec68d2c 100644 Binary files a/locale/pt_PT/LC_MESSAGES/django.mo and b/locale/pt_PT/LC_MESSAGES/django.mo differ diff --git a/locale/pt_PT/LC_MESSAGES/django.po b/locale/pt_PT/LC_MESSAGES/django.po index 597b7da2d..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-13 16:54+0000\n" -"PO-Revision-Date: 2022-01-13 17:50\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:351 +#: 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:365 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "Um Dia" -#: bookwyrm/forms.py:366 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "Uma Semana" -#: bookwyrm/forms.py:367 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "Um Mês" -#: bookwyrm/forms.py:368 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "Não Expira" -#: bookwyrm/forms.py:372 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} utilizações" -#: bookwyrm/forms.py:373 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "Ilimitado" -#: bookwyrm/forms.py:469 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "Ordem da Lista" -#: bookwyrm/forms.py:470 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "Título do livro" -#: bookwyrm/forms.py:471 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:33 +#: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "Classificação" -#: bookwyrm/forms.py:473 bookwyrm/templates/lists/list.html:134 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "Ordenar Por" -#: bookwyrm/forms.py:477 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "Ascendente" -#: bookwyrm/forms.py:478 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "Descendente" -#: bookwyrm/forms.py:491 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." msgstr "" @@ -84,8 +92,9 @@ msgstr "Erro ao carregar o livro" msgid "Could not find a match for book" msgstr "Não foi possível encontrar um resultado para o livro pedido" -#: bookwyrm/models/base_model.py:17 +#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 +#: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "Pendente" @@ -105,23 +114,23 @@ msgstr "Exclusão do moderador" msgid "Domain block" msgstr "Bloqueio de domínio" -#: bookwyrm/models/book.py:250 +#: bookwyrm/models/book.py:253 msgid "Audiobook" msgstr "Livro-áudio" -#: bookwyrm/models/book.py:251 +#: bookwyrm/models/book.py:254 msgid "eBook" msgstr "eBook" -#: bookwyrm/models/book.py:252 +#: bookwyrm/models/book.py:255 msgid "Graphic novel" msgstr "Novela gráfica" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:256 msgid "Hardcover" msgstr "Capa dura" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:257 msgid "Paperback" msgstr "Capa mole" @@ -131,33 +140,34 @@ msgstr "Capa mole" msgid "Federated" msgstr "Federado" -#: bookwyrm/models/federated_server.py:12 +#: bookwyrm/models/federated_server.py:12 bookwyrm/models/link.py:71 #: bookwyrm/templates/settings/federation/edit_instance.html:44 #: bookwyrm/templates/settings/federation/instance.html:10 #: bookwyrm/templates/settings/federation/instance_list.html:23 +#: bookwyrm/templates/settings/link_domains/link_domains.html:27 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 @@ -165,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 @@ -173,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 @@ -189,6 +199,23 @@ msgstr "Seguidores" msgid "Private" msgstr "Privado" +#: bookwyrm/models/link.py:51 +msgid "Free" +msgstr "" + +#: bookwyrm/models/link.py:52 +msgid "Purchasable" +msgstr "" + +#: bookwyrm/models/link.py:53 +msgid "Available for loan" +msgstr "" + +#: bookwyrm/models/link.py:70 +#: bookwyrm/templates/settings/link_domains/link_domains.html:23 +msgid "Approved" +msgstr "" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Criticas" @@ -205,69 +232,73 @@ msgstr "Citações" msgid "Everything else" msgstr "Tudo o resto" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home Timeline" msgstr "Cronograma Inicial" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home" msgstr "Início" -#: bookwyrm/settings.py:122 +#: bookwyrm/settings.py:174 msgid "Books Timeline" msgstr "Cronograma de Livros" -#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Livros" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:248 msgid "English" msgstr "Inglês" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:249 msgid "Deutsch (German)" msgstr "Deutsch (Alemão)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:250 msgid "Español (Spanish)" msgstr "Español (Espanhol)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:251 msgid "Galego (Galician)" msgstr "Galego (Galician)" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:252 msgid "Italiano (Italian)" msgstr "Italiano (Italiano)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:253 msgid "Français (French)" msgstr "Français (Francês)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:254 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (lituano)" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:255 msgid "Norsk (Norwegian)" msgstr "Norsk (Norueguês)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:256 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Português brasileiro)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:257 msgid "Português Europeu (European Portuguese)" msgstr "Português (Português Europeu)" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:258 +msgid "Svenska (Swedish)" +msgstr "" + +#: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chinês simplificado)" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:260 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinês tradicional)" @@ -296,59 +327,57 @@ msgstr "Ocorreu um erro! Pedimos desculpa por isto." msgid "About" msgstr "Sobre" -#: bookwyrm/templates/about/about.html:18 +#: bookwyrm/templates/about/about.html:19 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "Bem-vindo(a) ao %(site_name)s!" -#: bookwyrm/templates/about/about.html:22 +#: 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 "%(site_name)s faz parte do BookWyrm, uma rede de comunidades independentes, focada nos leitores. Enquanto podes interagir continuamente com utilizadores por todo o lado na Rede Boomwyrm, esta comunidade é única." -#: bookwyrm/templates/about/about.html:39 +#: bookwyrm/templates/about/about.html:40 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "" -#: bookwyrm/templates/about/about.html:58 +#: bookwyrm/templates/about/about.html:59 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "" -#: bookwyrm/templates/about/about.html:77 +#: bookwyrm/templates/about/about.html:78 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "" -#: bookwyrm/templates/about/about.html:88 +#: 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 "" -#: bookwyrm/templates/about/about.html:95 +#: bookwyrm/templates/about/about.html:96 msgid "Meet your admins" msgstr "Conheça os nossos administradores" -#: bookwyrm/templates/about/about.html:98 +#: bookwyrm/templates/about/about.html:99 #, python-format -msgid "\n" -" %(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.\n" -" " +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 "" -#: bookwyrm/templates/about/about.html:112 +#: bookwyrm/templates/about/about.html:113 msgid "Moderator" msgstr "Moderador" -#: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 msgid "Admin" msgstr "Admin" -#: bookwyrm/templates/about/about.html:130 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:13 +#: 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" @@ -407,7 +436,7 @@ msgid "Copy address" msgstr "Copiar endereço" #: bookwyrm/templates/annual_summary/layout.html:68 -#: bookwyrm/templates/lists/list.html:230 +#: bookwyrm/templates/lists/list.html:269 msgid "Copied!" msgstr "Copiado!" @@ -476,7 +505,7 @@ msgstr "A sua menor leitura este ano…" #: bookwyrm/templates/annual_summary/layout.html:245 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 -#: bookwyrm/templates/landing/large-book.html:25 +#: bookwyrm/templates/landing/large-book.html:26 #: bookwyrm/templates/landing/small-book.html:18 msgid "by" msgstr "por" @@ -528,61 +557,61 @@ msgstr "Todos os livros que %(display_name)s leu em %(year)s" msgid "Edit Author" msgstr "Editar Autor(a)" -#: bookwyrm/templates/author/author.html:40 +#: bookwyrm/templates/author/author.html:35 msgid "Author details" msgstr "Detalhes do autor" -#: bookwyrm/templates/author/author.html:44 +#: bookwyrm/templates/author/author.html:39 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "Pseudónimos:" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:48 msgid "Born:" msgstr "Nascido a:" -#: bookwyrm/templates/author/author.html:60 +#: bookwyrm/templates/author/author.html:55 msgid "Died:" msgstr "Morreu em:" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:65 msgid "External links" msgstr "Links externos" -#: bookwyrm/templates/author/author.html:75 +#: bookwyrm/templates/author/author.html:70 msgid "Wikipedia" msgstr "Wikipédia" -#: bookwyrm/templates/author/author.html:83 +#: bookwyrm/templates/author/author.html:78 msgid "View ISNI record" msgstr "Ver registro do ISNI" -#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/author.html:83 #: bookwyrm/templates/author/sync_modal.html:5 #: bookwyrm/templates/book/book.html:122 #: bookwyrm/templates/book/sync_modal.html:5 msgid "Load data" msgstr "Carregar dados" -#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/author/author.html:87 #: bookwyrm/templates/book/book.html:126 msgid "View on OpenLibrary" msgstr "Ver na OpenLibrary" -#: bookwyrm/templates/author/author.html:107 +#: bookwyrm/templates/author/author.html:102 #: bookwyrm/templates/book/book.html:140 msgid "View on Inventaire" msgstr "Ver no Inventaire" -#: bookwyrm/templates/author/author.html:123 +#: bookwyrm/templates/author/author.html:118 msgid "View on LibraryThing" msgstr "Ver na LibraryThing" -#: bookwyrm/templates/author/author.html:131 +#: bookwyrm/templates/author/author.html:126 msgid "View on Goodreads" msgstr "Ver na Goodreads" -#: bookwyrm/templates/author/author.html:145 +#: bookwyrm/templates/author/author.html:141 #, python-format msgid "Books by %(name)s" msgstr "Livros por %(name)s" @@ -612,7 +641,9 @@ msgid "Metadata" msgstr "Metadados" #: bookwyrm/templates/author/edit_author.html:35 -#: bookwyrm/templates/lists/form.html:9 bookwyrm/templates/shelf/form.html:9 +#: bookwyrm/templates/lists/form.html:9 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:14 +#: bookwyrm/templates/shelf/form.html:9 msgid "Name:" msgstr "Nome:" @@ -666,8 +697,11 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 +#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: 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 @@ -675,7 +709,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 #: bookwyrm/templates/settings/site.html:133 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:68 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 msgid "Save" @@ -687,13 +721,17 @@ msgstr "Salvar" #: 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/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/settings/federation/instance.html:88 -#: bookwyrm/templates/snippets/report_modal.html:38 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 +#: bookwyrm/templates/snippets/report_modal.html:54 msgid "Cancel" msgstr "Cancelar" @@ -705,9 +743,9 @@ msgstr "Carregar os dados irá conectar a %(source_name)s e ver #: bookwyrm/templates/author/sync_modal.html:22 #: bookwyrm/templates/book/edit/edit_book.html:108 #: bookwyrm/templates/book/sync_modal.html:22 -#: bookwyrm/templates/groups/members.html:30 +#: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 -#: bookwyrm/templates/snippets/remove_from_group_button.html:16 +#: bookwyrm/templates/snippets/remove_from_group_button.html:17 msgid "Confirm" msgstr "Confirmar" @@ -791,8 +829,8 @@ msgid "Places" msgstr "Lugares" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 -#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: 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 @@ -806,7 +844,8 @@ msgstr "Adicionar à lista" #: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/list.html:208 +#: 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" @@ -908,7 +947,7 @@ msgid "Back" msgstr "Voltar" #: bookwyrm/templates/book/edit/edit_book_form.html:21 -#: bookwyrm/templates/snippets/create_status/review.html:16 +#: bookwyrm/templates/snippets/create_status/review.html:15 msgid "Title:" msgstr "Título:" @@ -986,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:" @@ -1024,20 +1063,130 @@ 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" +#: bookwyrm/templates/book/file_links/add_link_modal.html:6 +msgid "Add file link" +msgstr "" + +#: 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 "" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:24 +msgid "URL:" +msgstr "" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:29 +msgid "File type:" +msgstr "" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:48 +msgid "Availability:" +msgstr "" + +#: 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 "" + +#: bookwyrm/templates/book/file_links/edit_links.html:11 +#, python-format +msgid "\n" +" Links for \"%(title)s\"\n" +" " +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:32 +#: bookwyrm/templates/settings/link_domains/link_table.html:6 +msgid "URL" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:33 +#: bookwyrm/templates/settings/link_domains/link_table.html:7 +msgid "Added by" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:34 +#: bookwyrm/templates/settings/link_domains/link_table.html:8 +msgid "Filetype" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:35 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 +#: bookwyrm/templates/settings/reports/report_links_table.html:5 +msgid "Domain" +msgstr "Domínio" + +#: bookwyrm/templates/book/file_links/edit_links.html:36 +#: bookwyrm/templates/import/import_status.html:127 +#: bookwyrm/templates/settings/announcements/announcements.html:38 +#: bookwyrm/templates/settings/federation/instance_list.html:46 +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 +#: bookwyrm/templates/settings/invites/status_filter.html:5 +#: bookwyrm/templates/settings/users/user_admin.html:34 +#: bookwyrm/templates/settings/users/user_info.html:20 +msgid "Status" +msgstr "Estado" + +#: bookwyrm/templates/book/file_links/edit_links.html:37 +#: bookwyrm/templates/settings/federation/instance.html:94 +#: bookwyrm/templates/settings/reports/report_links_table.html:6 +msgid "Actions" +msgstr "Acções" + +#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 +msgid "Report spam" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:97 +msgid "No links available for this book." +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:108 +#: bookwyrm/templates/book/file_links/links.html:18 +msgid "Add link to file" +msgstr "" + +#: bookwyrm/templates/book/file_links/file_link_page.html:6 +msgid "File Links" +msgstr "" + +#: bookwyrm/templates/book/file_links/links.html:9 +msgid "Get a copy" +msgstr "" + +#: bookwyrm/templates/book/file_links/links.html:47 +msgid "No links available" +msgstr "" + +#: bookwyrm/templates/book/file_links/verification_modal.html:5 +msgid "Leaving BookWyrm" +msgstr "" + +#: 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 "" + +#: bookwyrm/templates/book/file_links/verification_modal.html:20 +msgid "Continue" +msgstr "" + #: bookwyrm/templates/book/publisher_info.html:23 #, python-format msgid "%(format)s, %(pages)s pages" @@ -1108,8 +1257,8 @@ msgstr "Código de confirmação:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:93 -#: bookwyrm/templates/snippets/report_modal.html:37 +#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "Submeter" @@ -1415,16 +1564,11 @@ msgstr "Todas as mensagens" msgid "You have no messages right now." msgstr "Ainda não tem mensagens." -#: bookwyrm/templates/feed/feed.html:28 -#, python-format -msgid "load 0 unread status(es)" -msgstr "carregar 0 estado(s) não lido(s)" - -#: 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 "Não existem atividades agora! Experimenta seguir um utilizador para começar" -#: bookwyrm/templates/feed/feed.html:52 +#: bookwyrm/templates/feed/feed.html:55 msgid "Alternatively, you can try enabling more status types" msgstr "Alternativamente, podes tentar ativar mais tipos de estado" @@ -1513,7 +1657,7 @@ msgid "What are you reading?" msgstr "O que andas a ler?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162 +#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:205 msgid "Search for a book" msgstr "Pesquisar por um livro" @@ -1531,9 +1675,9 @@ msgstr "Podes adicionar livros quando começas a usar %(site_name)s." #: bookwyrm/templates/get_started/books.html:17 #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166 +#: 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/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -1549,7 +1693,7 @@ msgid "Popular on %(site_name)s" msgstr "Populares em %(site_name)s" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:179 +#: bookwyrm/templates/lists/list.html:222 msgid "No books found" msgstr "Nenhum livro encontrado" @@ -1654,7 +1798,7 @@ msgstr "Esta ação não pode ser desfeita" #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 #: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:14 msgid "Delete" msgstr "Apagar" @@ -1674,17 +1818,17 @@ msgstr "Descrição do Grupo:" msgid "Delete group" msgstr "Apagar grupo" -#: bookwyrm/templates/groups/group.html:22 +#: bookwyrm/templates/groups/group.html:21 msgid "Members of this group can create group-curated lists." msgstr "Os membros deste grupo podem criar listas administradas apenas pelo grupo." -#: bookwyrm/templates/groups/group.html:27 +#: bookwyrm/templates/groups/group.html:26 #: bookwyrm/templates/lists/create_form.html:5 #: bookwyrm/templates/lists/lists.html:20 msgid "Create List" msgstr "Criar Lista" -#: bookwyrm/templates/groups/group.html:40 +#: bookwyrm/templates/groups/group.html:39 msgid "This group has no lists" msgstr "Este grupo não tem listas" @@ -1692,15 +1836,15 @@ msgstr "Este grupo não tem listas" msgid "Edit group" msgstr "Editar grupo" -#: bookwyrm/templates/groups/members.html:12 +#: bookwyrm/templates/groups/members.html:11 msgid "Search to add a user" msgstr "Procura para adicionares um utilizador" -#: bookwyrm/templates/groups/members.html:33 +#: bookwyrm/templates/groups/members.html:32 msgid "Leave group" msgstr "Sair do grupo" -#: bookwyrm/templates/groups/members.html:55 +#: bookwyrm/templates/groups/members.html:54 #: bookwyrm/templates/groups/suggested_users.html:35 #: bookwyrm/templates/snippets/suggested_users.html:31 #: bookwyrm/templates/user/user_preview.html:36 @@ -1856,19 +2000,10 @@ msgid "Review" msgstr "Critica" #: bookwyrm/templates/import/import_status.html:124 +#: bookwyrm/templates/settings/link_domains/link_table.html:9 msgid "Book" msgstr "Livro" -#: bookwyrm/templates/import/import_status.html:127 -#: bookwyrm/templates/settings/announcements/announcements.html:38 -#: bookwyrm/templates/settings/federation/instance_list.html:46 -#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 -#: bookwyrm/templates/settings/invites/status_filter.html:5 -#: bookwyrm/templates/settings/users/user_admin.html:34 -#: bookwyrm/templates/settings/users/user_info.html:20 -msgid "Status" -msgstr "Estado" - #: bookwyrm/templates/import/import_status.html:135 msgid "Import preview unavailable." msgstr "Importação de pré-visualização indisponível." @@ -1907,7 +2042,8 @@ msgid "Approving a suggestion will permanently add the suggested book to your sh msgstr "Aprovar uma sugestão adicionará permanentemente o livro sugerido às tuas prateleiras e associará as tuas datas de leitura, análises, avaliações e criticas a esse livro." #: 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 "Aprovar" @@ -1916,8 +2052,8 @@ msgid "Reject" msgstr "Rejeitar" #: bookwyrm/templates/import/tooltip.html:6 -msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." -msgstr "Podes fazer download dos teus dados do Goodreads na Importar/Exportar página da tua conta do Goodreads." +msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." +msgstr "" #: bookwyrm/templates/import/troubleshoot.html:7 msgid "Failed items" @@ -2117,6 +2253,21 @@ msgstr "Apoia %(site_name)s em %( msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "O código de fonte do BookWyrm está disponível gratuitamente. E também podes contribuir ou reportar problemas no GitHub." +#: bookwyrm/templates/lists/add_item_modal.html:8 +#, python-format +msgid "Add \"%(title)s\" to this list" +msgstr "" + +#: bookwyrm/templates/lists/add_item_modal.html:12 +#, python-format +msgid "Suggest \"%(title)s\" for this list" +msgstr "" + +#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/list.html:249 +msgid "Suggest" +msgstr "Sugerir" + #: bookwyrm/templates/lists/bookmark_button.html:30 msgid "Un-save" msgstr "Des-gravar" @@ -2136,23 +2287,29 @@ msgstr "Criado e curado por %(username)s" msgid "Created by %(username)s" msgstr "Criado por %(username)s" -#: bookwyrm/templates/lists/curate.html:11 +#: bookwyrm/templates/lists/curate.html:12 msgid "Curate" msgstr "Administrar" -#: bookwyrm/templates/lists/curate.html:20 +#: bookwyrm/templates/lists/curate.html:21 msgid "Pending Books" msgstr "Livros pendentes" -#: bookwyrm/templates/lists/curate.html:23 +#: bookwyrm/templates/lists/curate.html:24 msgid "You're all set!" msgstr "Está tudo pronto!" -#: bookwyrm/templates/lists/curate.html:43 +#: bookwyrm/templates/lists/curate.html:45 +#: bookwyrm/templates/lists/list.html:83 +#, python-format +msgid "%(username)s says:" +msgstr "" + +#: bookwyrm/templates/lists/curate.html:55 msgid "Suggested by" msgstr "Sugerido por" -#: bookwyrm/templates/lists/curate.html:65 +#: bookwyrm/templates/lists/curate.html:77 msgid "Discard" msgstr "Descartar" @@ -2165,18 +2322,18 @@ msgstr "Apagar esta lista?" msgid "Edit List" msgstr "Editar lista" -#: bookwyrm/templates/lists/embed-list.html:7 +#: bookwyrm/templates/lists/embed-list.html:8 #, python-format msgid "%(list_name)s, a list by %(owner)s" msgstr "%(list_name)s, uma lista de %(owner)s" -#: bookwyrm/templates/lists/embed-list.html:17 +#: bookwyrm/templates/lists/embed-list.html:18 #, python-format msgid "on %(site_name)s" msgstr "em %(site_name)s" -#: bookwyrm/templates/lists/embed-list.html:26 -#: bookwyrm/templates/lists/list.html:42 +#: bookwyrm/templates/lists/embed-list.html:27 +#: bookwyrm/templates/lists/list.html:44 msgid "This list is currently empty" msgstr "Esta lista está vazia" @@ -2237,75 +2394,89 @@ msgstr "Criar um Grupo" msgid "Delete list" msgstr "Apagar lista" -#: bookwyrm/templates/lists/list.html:34 +#: bookwyrm/templates/lists/item_notes_field.html:7 +#: bookwyrm/templates/settings/federation/edit_instance.html:74 +msgid "Notes:" +msgstr "Notas:" + +#: bookwyrm/templates/lists/item_notes_field.html:19 +msgid "An optional note that will be displayed with the book." +msgstr "" + +#: bookwyrm/templates/lists/list.html:36 msgid "You successfully suggested a book for this list!" msgstr "Sugeriste um livro para esta lista com sucesso!" -#: bookwyrm/templates/lists/list.html:36 +#: bookwyrm/templates/lists/list.html:38 msgid "You successfully added a book to this list!" msgstr "Adicionaste um livro a esta lista com sucesso!" -#: bookwyrm/templates/lists/list.html:80 +#: bookwyrm/templates/lists/list.html:96 +msgid "Edit notes" +msgstr "" + +#: bookwyrm/templates/lists/list.html:111 +msgid "Add notes" +msgstr "" + +#: bookwyrm/templates/lists/list.html:123 #, python-format msgid "Added by %(username)s" msgstr "Adicionado por %(username)s" -#: bookwyrm/templates/lists/list.html:95 +#: bookwyrm/templates/lists/list.html:138 msgid "List position" msgstr "Posição da lista" -#: bookwyrm/templates/lists/list.html:101 +#: bookwyrm/templates/lists/list.html:144 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 msgid "Set" msgstr "Definir" -#: bookwyrm/templates/lists/list.html:116 -#: bookwyrm/templates/snippets/remove_from_group_button.html:19 +#: bookwyrm/templates/lists/list.html:159 +#: bookwyrm/templates/snippets/remove_from_group_button.html:20 msgid "Remove" msgstr "Remover" -#: bookwyrm/templates/lists/list.html:130 -#: bookwyrm/templates/lists/list.html:147 +#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:190 msgid "Sort List" msgstr "Ordenar lista" -#: bookwyrm/templates/lists/list.html:140 +#: bookwyrm/templates/lists/list.html:183 msgid "Direction" msgstr "Direcção" -#: bookwyrm/templates/lists/list.html:154 +#: bookwyrm/templates/lists/list.html:197 msgid "Add Books" msgstr "Adicionar Livros" -#: bookwyrm/templates/lists/list.html:156 +#: bookwyrm/templates/lists/list.html:199 msgid "Suggest Books" msgstr "Sugerir Livros" -#: bookwyrm/templates/lists/list.html:167 +#: bookwyrm/templates/lists/list.html:210 msgid "search" msgstr "pesquisar" -#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:216 msgid "Clear search" msgstr "Limpar Pesquisa" -#: bookwyrm/templates/lists/list.html:178 +#: bookwyrm/templates/lists/list.html:221 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "Nenhum livro encontrado que corresponda à consulta \"%(query)s\"" -#: bookwyrm/templates/lists/list.html:210 -msgid "Suggest" -msgstr "Sugerir" - -#: bookwyrm/templates/lists/list.html:221 +#: bookwyrm/templates/lists/list.html:260 msgid "Embed this list on a website" msgstr "Incorporar esta lista num website" -#: bookwyrm/templates/lists/list.html:229 +#: bookwyrm/templates/lists/list.html:268 msgid "Copy embed code" msgstr "Copiar código de incorporação" -#: bookwyrm/templates/lists/list.html:231 +#: 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, uma lista de %(owner)s no %(site_name)s" @@ -2786,6 +2957,11 @@ msgstr "Excluir estas datas de leitura" msgid "Add read dates for \"%(title)s\"" msgstr "" +#: bookwyrm/templates/report.html:5 +#: bookwyrm/templates/snippets/report_button.html:13 +msgid "Report" +msgstr "Denunciar" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "Resultados de" @@ -2858,13 +3034,13 @@ msgstr "Falso" #: bookwyrm/templates/settings/announcements/announcement.html:46 #: bookwyrm/templates/settings/announcements/announcement_form.html:44 -#: bookwyrm/templates/settings/dashboard/dashboard.html:71 +#: bookwyrm/templates/settings/dashboard/dashboard.html:82 msgid "Start date:" msgstr "Data de início:" #: bookwyrm/templates/settings/announcements/announcement.html:51 #: bookwyrm/templates/settings/announcements/announcement_form.html:54 -#: bookwyrm/templates/settings/dashboard/dashboard.html:77 +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "End date:" msgstr "Data de conclusão:" @@ -2892,7 +3068,7 @@ msgstr "Data do evento:" #: bookwyrm/templates/settings/announcements/announcements.html:3 #: bookwyrm/templates/settings/announcements/announcements.html:5 -#: bookwyrm/templates/settings/layout.html:72 +#: bookwyrm/templates/settings/layout.html:76 msgid "Announcements" msgstr "Comunicados" @@ -2932,7 +3108,7 @@ msgid "Dashboard" msgstr "Painel de controlo" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Total users" msgstr "Total de utilizadores" @@ -2959,36 +3135,43 @@ msgstr[1] "%(display_count)s denúncias abertas" #: bookwyrm/templates/settings/dashboard/dashboard.html:54 #, python-format +msgid "%(display_count)s domain needs review" +msgid_plural "%(display_count)s domains need review" +msgstr[0] "" +msgstr[1] "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s pedido de convite" msgstr[1] "%(display_count)s pedidos de convite" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:76 msgid "Instance Activity" msgstr "Atividade do domínio" -#: bookwyrm/templates/settings/dashboard/dashboard.html:83 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Interval:" msgstr "Intervalo:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:87 +#: bookwyrm/templates/settings/dashboard/dashboard.html:98 msgid "Days" msgstr "Dias" -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Weeks" msgstr "Semanas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "User signup activity" msgstr "Atividade de inscrição do utilizador" -#: bookwyrm/templates/settings/dashboard/dashboard.html:112 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Status activity" msgstr "Atividade de estado" -#: bookwyrm/templates/settings/dashboard/dashboard.html:118 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "Works created" msgstr "Obras criadas" @@ -3023,10 +3206,6 @@ msgstr "Lista de E-Mails bloqueados" msgid "When someone tries to register with an email from this domain, no account will be created. The registration process will appear to have worked." msgstr "Quando alguém se tenta registrar com um E-Mail deste domínio, nenhuma conta será criada. O processo de registro parecerá ter funcionado." -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 -msgid "Domain" -msgstr "Domínio" - #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:29 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:27 msgid "Options" @@ -3085,10 +3264,6 @@ msgstr "Software:" msgid "Version:" msgstr "Versão:" -#: bookwyrm/templates/settings/federation/edit_instance.html:74 -msgid "Notes:" -msgstr "Notas:" - #: bookwyrm/templates/settings/federation/instance.html:19 msgid "Details" msgstr "Detalhes" @@ -3138,12 +3313,8 @@ msgstr "Editar" msgid "No notes" msgstr "Sem notas" -#: bookwyrm/templates/settings/federation/instance.html:94 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 -msgid "Actions" -msgstr "Acções" - #: bookwyrm/templates/settings/federation/instance.html:98 +#: bookwyrm/templates/settings/link_domains/link_domains.html:87 #: bookwyrm/templates/snippets/block_button.html:5 msgid "Block" msgstr "Bloquear" @@ -3356,62 +3527,121 @@ msgstr "Moderação" msgid "Reports" msgstr "Denúncias" -#: bookwyrm/templates/settings/layout.html:68 +#: bookwyrm/templates/settings/layout.html:67 +#: bookwyrm/templates/settings/link_domains/link_domains.html:5 +#: bookwyrm/templates/settings/link_domains/link_domains.html:7 +msgid "Link Domains" +msgstr "" + +#: bookwyrm/templates/settings/layout.html:72 msgid "Instance Settings" msgstr "Configurações do domínio" -#: bookwyrm/templates/settings/layout.html:76 +#: bookwyrm/templates/settings/layout.html:80 #: bookwyrm/templates/settings/site.html:4 #: bookwyrm/templates/settings/site.html:6 msgid "Site Settings" msgstr "Configurações do site" -#: bookwyrm/templates/settings/reports/report.html:5 -#: bookwyrm/templates/settings/reports/report.html:8 -#: bookwyrm/templates/settings/reports/report_preview.html:6 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5 #, python-format -msgid "Report #%(report_id)s: %(username)s" -msgstr "Denunciar #%(report_id)s: %(username)s" +msgid "Set display name for %(url)s" +msgstr "" -#: bookwyrm/templates/settings/reports/report.html:9 +#: 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 "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:45 +msgid "Set display name" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:53 +msgid "View links" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:96 +msgid "No domains currently approved" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:98 +msgid "No domains currently pending" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:100 +msgid "No domains currently blocked" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_table.html:39 +msgid "No links available for this domain." +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:11 msgid "Back to reports" msgstr "Voltar para denúncias" #: 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:40 +msgid "Status has been deleted" +msgstr "O estado foi eliminado" + +#: bookwyrm/templates/settings/reports/report.html:52 +msgid "Reported links" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "Comentários do Moderador" -#: bookwyrm/templates/settings/reports/report.html:41 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "Comentar" -#: bookwyrm/templates/settings/reports/report.html:46 -msgid "Reported statuses" -msgstr "Estados denunciados" +#: bookwyrm/templates/settings/reports/report_header.html:6 +#, python-format +msgid "Report #%(report_id)s: Status posted by @%(username)s" +msgstr "" -#: bookwyrm/templates/settings/reports/report.html:48 -msgid "No statuses reported" -msgstr "Nenhum estado denunciado" +#: bookwyrm/templates/settings/reports/report_header.html:12 +#, python-format +msgid "Report #%(report_id)s: Link added by @%(username)s" +msgstr "" -#: bookwyrm/templates/settings/reports/report.html:54 -msgid "Status has been deleted" -msgstr "O estado foi eliminado" +#: bookwyrm/templates/settings/reports/report_header.html:18 +#, python-format +msgid "Report #%(report_id)s: User @%(username)s" +msgstr "" -#: bookwyrm/templates/settings/reports/report_preview.html:13 +#: bookwyrm/templates/settings/reports/report_links_table.html:17 +msgid "Block domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_preview.html:17 msgid "No notes provided" msgstr "Nenhuma nota fornecida" -#: bookwyrm/templates/settings/reports/report_preview.html:20 +#: bookwyrm/templates/settings/reports/report_preview.html:24 #, python-format -msgid "Reported by %(username)s" -msgstr "Denúnciado por %(username)s" +msgid "Reported by @%(username)s" +msgstr "" -#: bookwyrm/templates/settings/reports/report_preview.html:30 +#: bookwyrm/templates/settings/reports/report_preview.html:34 msgid "Re-open" msgstr "Reabrir" -#: bookwyrm/templates/settings/reports/report_preview.html:32 +#: bookwyrm/templates/settings/reports/report_preview.html:36 msgid "Resolve" msgstr "Resolver" @@ -3539,7 +3769,7 @@ msgid "Invite request text:" msgstr "Texto da solicitação de convite:" #: bookwyrm/templates/settings/users/delete_user_form.html:5 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:31 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:32 msgid "Permanently delete user" msgstr "Apagar permanentemente o utilizador" @@ -3649,15 +3879,19 @@ msgstr "Ver domínio" msgid "Permanently deleted" msgstr "Apagar permanentemente" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:20 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 +msgid "User Actions" +msgstr "" + +#: bookwyrm/templates/settings/users/user_moderation_actions.html:21 msgid "Suspend user" msgstr "Suspender utilizador" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:25 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:26 msgid "Un-suspend user" msgstr "Retirar a suspensão do utilizador" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:47 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:48 msgid "Access level:" msgstr "Nível de acesso:" @@ -3722,15 +3956,15 @@ msgstr "Concluído" msgid "This shelf is empty." msgstr "Esta prateleira está vazia." -#: bookwyrm/templates/snippets/add_to_group_button.html:15 +#: bookwyrm/templates/snippets/add_to_group_button.html:16 msgid "Invite" msgstr "Convidar" -#: bookwyrm/templates/snippets/add_to_group_button.html:24 +#: bookwyrm/templates/snippets/add_to_group_button.html:25 msgid "Uninvite" msgstr "Cancelar convite" -#: bookwyrm/templates/snippets/add_to_group_button.html:28 +#: bookwyrm/templates/snippets/add_to_group_button.html:29 #, python-format msgid "Remove @%(username)s" msgstr "Remover %(username)s" @@ -3795,14 +4029,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" @@ -3818,7 +4052,7 @@ msgstr "Alerta de spoiler!" msgid "Include spoiler alert" msgstr "Incluir aviso de spoiler" -#: bookwyrm/templates/snippets/create_status/layout.html:48 +#: bookwyrm/templates/snippets/create_status/layout.html:47 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "Comentar:" @@ -3827,33 +4061,33 @@ msgstr "Comentar:" msgid "Post" msgstr "Publicação" -#: bookwyrm/templates/snippets/create_status/quotation.html:17 +#: bookwyrm/templates/snippets/create_status/quotation.html:16 msgid "Quote:" msgstr "Citação:" -#: bookwyrm/templates/snippets/create_status/quotation.html:25 +#: bookwyrm/templates/snippets/create_status/quotation.html:24 #, python-format msgid "An excerpt from '%(book_title)s'" msgstr "Um excerto de '%(book_title)s'" -#: bookwyrm/templates/snippets/create_status/quotation.html:32 +#: bookwyrm/templates/snippets/create_status/quotation.html:31 msgid "Position:" msgstr "Posição:" -#: bookwyrm/templates/snippets/create_status/quotation.html:45 +#: bookwyrm/templates/snippets/create_status/quotation.html:44 msgid "On page:" msgstr "Na página:" -#: bookwyrm/templates/snippets/create_status/quotation.html:51 +#: bookwyrm/templates/snippets/create_status/quotation.html:50 msgid "At percent:" msgstr "Na percentagem:" -#: bookwyrm/templates/snippets/create_status/review.html:25 +#: bookwyrm/templates/snippets/create_status/review.html:24 #, python-format msgid "Your review of '%(book_title)s'" msgstr "A tua critica de '%(book_title)s'" -#: bookwyrm/templates/snippets/create_status/review.html:40 +#: bookwyrm/templates/snippets/create_status/review.html:39 msgid "Review:" msgstr "Critica:" @@ -3880,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" @@ -3907,7 +4141,7 @@ msgid "Unfollow" msgstr "Deixar de seguir" #: bookwyrm/templates/snippets/follow_request_buttons.html:7 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:8 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:9 msgid "Accept" msgstr "Aceitar" @@ -3947,14 +4181,14 @@ msgstr[1] "avaliado %(title)s: %(display_ratin #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +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] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": %(review_title)s" +msgid "Review of \"%(book_title)s\": %(review_title)s" msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 @@ -4025,11 +4259,11 @@ msgstr "Apenas seguidores" msgid "Post privacy" msgstr "Privacidade de publicação" -#: bookwyrm/templates/snippets/rate_action.html:4 +#: bookwyrm/templates/snippets/rate_action.html:5 msgid "Leave a rating" msgstr "Deixar uma avaliação" -#: bookwyrm/templates/snippets/rate_action.html:19 +#: bookwyrm/templates/snippets/rate_action.html:20 msgid "Rate" msgstr "Avaliação" @@ -4061,21 +4295,31 @@ msgstr "Queres ler \"%(book_title)s\"\"" msgid "Sign Up" msgstr "Criar conta" -#: bookwyrm/templates/snippets/report_button.html:13 -msgid "Report" -msgstr "Denunciar" +#: bookwyrm/templates/snippets/report_modal.html:8 +#, python-format +msgid "Report @%(username)s's status" +msgstr "" -#: bookwyrm/templates/snippets/report_modal.html:6 +#: bookwyrm/templates/snippets/report_modal.html:10 +#, python-format +msgid "Report %(domain)s link" +msgstr "" + +#: bookwyrm/templates/snippets/report_modal.html:12 #, python-format msgid "Report @%(username)s" msgstr "Denunciar @%(username)s" -#: bookwyrm/templates/snippets/report_modal.html:23 +#: bookwyrm/templates/snippets/report_modal.html:34 #, python-format msgid "This report will be sent to %(site_name)s's moderators for review." msgstr "Esta denúncia será enviada aos moderadores de %(site_name)s para revisão." -#: bookwyrm/templates/snippets/report_modal.html:26 +#: bookwyrm/templates/snippets/report_modal.html:36 +msgid "Links from this domain will be removed until your report has been reviewed." +msgstr "" + +#: bookwyrm/templates/snippets/report_modal.html:41 msgid "More info about this report:" msgstr "Mais informações sobre esta denúncia:" @@ -4113,29 +4357,29 @@ msgstr "Remover de %(name)s" msgid "Finish reading" msgstr "Terminar leitura" -#: bookwyrm/templates/snippets/status/content_status.html:75 +#: bookwyrm/templates/snippets/status/content_status.html:73 msgid "Content warning" msgstr "Aviso de Conteúdo" -#: bookwyrm/templates/snippets/status/content_status.html:82 +#: bookwyrm/templates/snippets/status/content_status.html:80 msgid "Show status" msgstr "Mostrar o estado" -#: bookwyrm/templates/snippets/status/content_status.html:104 +#: bookwyrm/templates/snippets/status/content_status.html:102 #, python-format msgid "(Page %(page)s)" msgstr "(Página %(page)s)" -#: bookwyrm/templates/snippets/status/content_status.html:106 +#: bookwyrm/templates/snippets/status/content_status.html:104 #, python-format msgid "(%(percent)s%%)" msgstr "(%(percent)s%%)" -#: bookwyrm/templates/snippets/status/content_status.html:128 +#: bookwyrm/templates/snippets/status/content_status.html:126 msgid "Open image in new window" msgstr "Abrir imagem numa nova janela" -#: bookwyrm/templates/snippets/status/content_status.html:147 +#: bookwyrm/templates/snippets/status/content_status.html:145 msgid "Hide status" msgstr "Ocultar estado" @@ -4428,8 +4672,15 @@ msgstr "Não foi encontrado nenhum utilizador com este E-Mail." msgid "A password reset link was sent to {email}" msgstr "Um link para redefinir a palavra-passe foi enviado para este {email}" -#: bookwyrm/views/rss_feed.py:35 +#: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" msgstr "Actualização de estado fornecido por {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] "" + diff --git a/locale/sv_SE/LC_MESSAGES/django.mo b/locale/sv_SE/LC_MESSAGES/django.mo new file mode 100644 index 000000000..8f66047d3 Binary files /dev/null and b/locale/sv_SE/LC_MESSAGES/django.mo differ diff --git a/locale/sv_SE/LC_MESSAGES/django.po b/locale/sv_SE/LC_MESSAGES/django.po new file mode 100644 index 000000000..9f1c72dfa --- /dev/null +++ b/locale/sv_SE/LC_MESSAGES/django.po @@ -0,0 +1,4688 @@ +msgid "" +msgstr "" +"Project-Id-Version: bookwyrm\n" +"Report-Msgid-Bugs-To: \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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: bookwyrm\n" +"X-Crowdin-Project-ID: 479239\n" +"X-Crowdin-Language: sv-SE\n" +"X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 1553\n" + +#: 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:392 +msgid "One Day" +msgstr "En dag" + +#: bookwyrm/forms.py:393 +msgid "One Week" +msgstr "En vecka" + +#: bookwyrm/forms.py:394 +msgid "One Month" +msgstr "En månad" + +#: bookwyrm/forms.py:395 +msgid "Does Not Expire" +msgstr "Slutar inte gälla" + +#: bookwyrm/forms.py:399 +#, python-brace-format +msgid "{i} uses" +msgstr "{i} använder" + +#: bookwyrm/forms.py:400 +msgid "Unlimited" +msgstr "Obegränsad" + +#: bookwyrm/forms.py:502 +msgid "List Order" +msgstr "Listordning" + +#: bookwyrm/forms.py:503 +msgid "Book Title" +msgstr "Bokens titel" + +#: 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:506 bookwyrm/templates/lists/list.html:177 +msgid "Sort By" +msgstr "Sortera efter" + +#: bookwyrm/forms.py:510 +msgid "Ascending" +msgstr "Stigande" + +#: bookwyrm/forms.py:511 +msgid "Descending" +msgstr "Fallande" + +#: 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." + +#: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 +msgid "Error loading book" +msgstr "Fel uppstod vid inläsning av boken" + +#: bookwyrm/importers/importer.py:154 +msgid "Could not find a match for book" +msgstr "Kunde inte hitta en träff för boken" + +#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 +#: bookwyrm/templates/import/import_status.html:200 +#: bookwyrm/templates/settings/link_domains/link_domains.html:19 +msgid "Pending" +msgstr "Pågående" + +#: bookwyrm/models/base_model.py:18 +msgid "Self deletion" +msgstr "Självborttagning" + +#: bookwyrm/models/base_model.py:19 +msgid "Moderator suspension" +msgstr "Moderator-avstängning" + +#: bookwyrm/models/base_model.py:20 +msgid "Moderator deletion" +msgstr "Borttagning av moderator" + +#: bookwyrm/models/base_model.py:21 +msgid "Domain block" +msgstr "Domänblockering" + +#: bookwyrm/models/book.py:253 +msgid "Audiobook" +msgstr "Ljudbok" + +#: bookwyrm/models/book.py:254 +msgid "eBook" +msgstr "eBok" + +#: bookwyrm/models/book.py:255 +msgid "Graphic novel" +msgstr "Grafisk novell" + +#: bookwyrm/models/book.py:256 +msgid "Hardcover" +msgstr "Inbunden" + +#: bookwyrm/models/book.py:257 +msgid "Paperback" +msgstr "Pocketbok" + +#: bookwyrm/models/federated_server.py:11 +#: bookwyrm/templates/settings/federation/edit_instance.html:43 +#: bookwyrm/templates/settings/federation/instance_list.html:19 +msgid "Federated" +msgstr "Federerad" + +#: bookwyrm/models/federated_server.py:12 bookwyrm/models/link.py:71 +#: bookwyrm/templates/settings/federation/edit_instance.html:44 +#: bookwyrm/templates/settings/federation/instance.html:10 +#: bookwyrm/templates/settings/federation/instance_list.html:23 +#: bookwyrm/templates/settings/link_domains/link_domains.html:27 +msgid "Blocked" +msgstr "Blockerad" + +#: 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: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:181 bookwyrm/templates/layout.html:170 +#: bookwyrm/templates/ostatus/error.html:29 +msgid "username" +msgstr "användarnamn" + +#: 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:205 +#: bookwyrm/templates/snippets/privacy-icons.html:3 +#: bookwyrm/templates/snippets/privacy-icons.html:4 +#: bookwyrm/templates/snippets/privacy_select.html:11 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 +msgid "Public" +msgstr "Publik" + +#: 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 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 +msgid "Unlisted" +msgstr "Ej listad" + +#: 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: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 +#: bookwyrm/templates/snippets/privacy_select.html:20 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 +msgid "Private" +msgstr "Privat" + +#: bookwyrm/models/link.py:51 +msgid "Free" +msgstr "Gratis" + +#: bookwyrm/models/link.py:52 +msgid "Purchasable" +msgstr "Kan köpas" + +#: bookwyrm/models/link.py:53 +msgid "Available for loan" +msgstr "Tillgänglig för lån" + +#: bookwyrm/models/link.py:70 +#: bookwyrm/templates/settings/link_domains/link_domains.html:23 +msgid "Approved" +msgstr "Godkänd" + +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 +msgid "Reviews" +msgstr "Recensioner" + +#: bookwyrm/models/user.py:33 +msgid "Comments" +msgstr "Kommentarer" + +#: bookwyrm/models/user.py:34 +msgid "Quotations" +msgstr "Citationer" + +#: bookwyrm/models/user.py:35 +msgid "Everything else" +msgstr "Allt annat" + +#: bookwyrm/settings.py:173 +msgid "Home Timeline" +msgstr "Tidslinje för Hem" + +#: bookwyrm/settings.py:173 +msgid "Home" +msgstr "Hem" + +#: bookwyrm/settings.py:174 +msgid "Books Timeline" +msgstr "Tidslinjer för böcker" + +#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/templates/search/layout.html:42 +#: bookwyrm/templates/user/layout.html:91 +msgid "Books" +msgstr "Böcker" + +#: bookwyrm/settings.py:248 +msgid "English" +msgstr "Engelska" + +#: bookwyrm/settings.py:249 +msgid "Deutsch (German)" +msgstr "Tyska (Tysk)" + +#: bookwyrm/settings.py:250 +msgid "Español (Spanish)" +msgstr "Spanska (Spansk)" + +#: bookwyrm/settings.py:251 +msgid "Galego (Galician)" +msgstr "Galego (Gallisk)" + +#: bookwyrm/settings.py:252 +msgid "Italiano (Italian)" +msgstr "Italienska (Italiensk)" + +#: bookwyrm/settings.py:253 +msgid "Français (French)" +msgstr "Franska (Fransk)" + +#: bookwyrm/settings.py:254 +msgid "Lietuvių (Lithuanian)" +msgstr "Litauiska (Litauisk)" + +#: bookwyrm/settings.py:255 +msgid "Norsk (Norwegian)" +msgstr "Norska (Norska)" + +#: bookwyrm/settings.py:256 +msgid "Português do Brasil (Brazilian Portuguese)" +msgstr "Português d Brasil (Brasiliansk Portugisiska)" + +#: bookwyrm/settings.py:257 +msgid "Português Europeu (European Portuguese)" +msgstr "Português Europeu (Europeisk Portugisiska)" + +#: bookwyrm/settings.py:258 +msgid "Svenska (Swedish)" +msgstr "Svenska (Svenska)" + +#: bookwyrm/settings.py:259 +msgid "简体中文 (Simplified Chinese)" +msgstr "简体中文 (Förenklad Kinesiska)" + +#: bookwyrm/settings.py:260 +msgid "繁體中文 (Traditional Chinese)" +msgstr "繁體中文 (Traditionell Kinesiska)" + +#: bookwyrm/templates/404.html:4 bookwyrm/templates/404.html:8 +msgid "Not Found" +msgstr "Hittades inte" + +#: bookwyrm/templates/404.html:9 +msgid "The page you requested doesn't seem to exist!" +msgstr "Sidan som du efterfrågade verkar inte existera!" + +#: bookwyrm/templates/500.html:4 +msgid "Oops!" +msgstr "Hoppsan!" + +#: bookwyrm/templates/500.html:8 +msgid "Server Error" +msgstr "Server-fel" + +#: bookwyrm/templates/500.html:9 +msgid "Something went wrong! Sorry about that." +msgstr "Något gick fel! Förlåt för det." + +#: bookwyrm/templates/about/about.html:9 +#: bookwyrm/templates/about/layout.html:35 +msgid "About" +msgstr "Om" + +#: bookwyrm/templates/about/about.html:19 +#: bookwyrm/templates/get_started/layout.html:20 +#, python-format +msgid "Welcome to %(site_name)s!" +msgstr "Välkommen till %(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 "%(site_name)s är en del av BookWyrm, ett nätverk av oberoende, självstyrda gemenskaper för läsare. Medan du kan interagera sömlöst med användare var som helst i BookWyrm-nätverketså är den här gemenskapen unik." + +#: bookwyrm/templates/about/about.html:40 +#, python-format +msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." +msgstr "%(title)s är %(site_name)s's mest omtyckta bok med ett genomsnittligt betyg på %(rating)s utav 5." + +#: bookwyrm/templates/about/about.html:59 +#, python-format +msgid "More %(site_name)s users want to read %(title)s than any other book." +msgstr "Flera %(site_name)s användare vill läsa %(title)s än någon annan bok." + +#: bookwyrm/templates/about/about.html:78 +#, python-format +msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." +msgstr "%(title)s har de mest splittrade betygen av alla böcker på %(site_name)s." + +#: 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 "Följ din läsning, prata om böcker, skriv recensioner och upptäck vad som ska läsas härnäst. BookWyrm är alltid annonsfri, företagsfientlig och gemenskapsorienterad, och är en mänsklig programvara som är utformad för att förbli liten och personlig. Om du har förfrågningar om funktioner, felrapporter eller storslagna drömmar, ta kontakt och gör dig själv hörd." + +#: bookwyrm/templates/about/about.html:96 +msgid "Meet your admins" +msgstr "Träffa dina administratörer" + +#: 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 "%(site_name)s's moderatorer och administratörer håller hemsidan uppe och fungerande, upprätthåller uppförandekoden och svarar när användarna rapporterar skräppost och dåligt uppförande." + +#: bookwyrm/templates/about/about.html:113 +msgid "Moderator" +msgstr "Moderator" + +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 +msgid "Admin" +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:14 +msgid "Send direct message" +msgstr "Skicka direktmeddelande" + +#: bookwyrm/templates/about/conduct.html:4 +#: bookwyrm/templates/about/conduct.html:9 +#: bookwyrm/templates/about/layout.html:41 +msgid "Code of Conduct" +msgstr "Uppförandekod" + +#: bookwyrm/templates/about/layout.html:11 +msgid "Active users:" +msgstr "Aktiva användare:" + +#: bookwyrm/templates/about/layout.html:15 +msgid "Statuses posted:" +msgstr "Utlagda statusar:" + +#: bookwyrm/templates/about/layout.html:19 +msgid "Software version:" +msgstr "Programvaruversion:" + +#: bookwyrm/templates/about/layout.html:30 +#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 +#, python-format +msgid "About %(site_name)s" +msgstr "Om %(site_name)s" + +#: bookwyrm/templates/about/layout.html:47 +#: bookwyrm/templates/about/privacy.html:4 +#: bookwyrm/templates/about/privacy.html:9 +msgid "Privacy Policy" +msgstr "Integritetspolicy" + +#: bookwyrm/templates/annual_summary/layout.html:7 +#: bookwyrm/templates/feed/summary_card.html:8 +#, python-format +msgid "%(year)s in the books" +msgstr "%(year)s i böckerna" + +#: bookwyrm/templates/annual_summary/layout.html:43 +#, python-format +msgid "%(year)s in the books" +msgstr "%(year)s i böckerna" + +#: bookwyrm/templates/annual_summary/layout.html:47 +#, python-format +msgid "%(display_name)s’s year of reading" +msgstr "%(display_name)s'sår av läsning" + +#: bookwyrm/templates/annual_summary/layout.html:53 +msgid "Share this page" +msgstr "Dela den här sidan" + +#: bookwyrm/templates/annual_summary/layout.html:67 +msgid "Copy address" +msgstr "Kopiera adress" + +#: bookwyrm/templates/annual_summary/layout.html:68 +#: bookwyrm/templates/lists/list.html:269 +msgid "Copied!" +msgstr "Kopierades!" + +#: bookwyrm/templates/annual_summary/layout.html:77 +msgid "Sharing status: public with key" +msgstr "Delar status: publik med nyckel" + +#: bookwyrm/templates/annual_summary/layout.html:78 +msgid "The page can be seen by anyone with the complete address." +msgstr "Sidan kan ses av vem som helst med den fullständiga adressen." + +#: bookwyrm/templates/annual_summary/layout.html:83 +msgid "Make page private" +msgstr "Gör sidan privat" + +#: bookwyrm/templates/annual_summary/layout.html:89 +msgid "Sharing status: private" +msgstr "Delar status: privat" + +#: bookwyrm/templates/annual_summary/layout.html:90 +msgid "The page is private, only you can see it." +msgstr "Den här sidan är privat, endast du kan se den." + +#: bookwyrm/templates/annual_summary/layout.html:95 +msgid "Make page public" +msgstr "Gör sidan publik" + +#: bookwyrm/templates/annual_summary/layout.html:99 +msgid "When you make your page private, the old key won’t give access to the page anymore. A new key will be created if the page is once again made public." +msgstr "När du gör din sida privat så kan inte den gamla nyckeln ge åtkomst till sidan längre. En ny nyckel kommer att skapas om sidan återigen blir publik." + +#: bookwyrm/templates/annual_summary/layout.html:112 +#, python-format +msgid "Sadly %(display_name)s didn’t finish any books in %(year)s" +msgstr "%(display_name)s avslutade tyvärr inte några böcker under %(year)s" + +#: bookwyrm/templates/annual_summary/layout.html:118 +#, python-format +msgid "In %(year)s, %(display_name)s read %(books_total)s book
    for a total of %(pages_total)s pages!" +msgid_plural "In %(year)s, %(display_name)s read %(books_total)s books
    for a total of %(pages_total)s pages!" +msgstr[0] "Under %(year)s så läste %(display_name)s %(books_total)s bok
    , totalt %(pages_total)s sidor!" +msgstr[1] "Under %(year)s så läste %(display_name)s %(books_total)s böcker
    , totalt %(pages_total)s sidor!" + +#: bookwyrm/templates/annual_summary/layout.html:124 +msgid "That’s great!" +msgstr "Det är ju jättebra!" + +#: bookwyrm/templates/annual_summary/layout.html:127 +#, python-format +msgid "That makes an average of %(pages)s pages per book." +msgstr "Det är i snitt %(pages)s sidor per bok." + +#: bookwyrm/templates/annual_summary/layout.html:132 +#, python-format +msgid "(%(no_page_number)s book doesn’t have pages)" +msgid_plural "(%(no_page_number)s books don’t have pages)" +msgstr[0] "(%(no_page_number)s bok har inga sidor)" +msgstr[1] "(%(no_page_number)s böcker har inga sidor)" + +#: bookwyrm/templates/annual_summary/layout.html:148 +msgid "Their shortest read this year…" +msgstr "Det kortast lästa det här året…" + +#: bookwyrm/templates/annual_summary/layout.html:155 +#: bookwyrm/templates/annual_summary/layout.html:176 +#: bookwyrm/templates/annual_summary/layout.html:245 +#: bookwyrm/templates/book/book.html:47 +#: bookwyrm/templates/discover/large-book.html:22 +#: bookwyrm/templates/landing/large-book.html:26 +#: bookwyrm/templates/landing/small-book.html:18 +msgid "by" +msgstr "av" + +#: bookwyrm/templates/annual_summary/layout.html:161 +#: bookwyrm/templates/annual_summary/layout.html:182 +#, python-format +msgid "%(pages)s pages" +msgstr "%(pages)s sidor" + +#: bookwyrm/templates/annual_summary/layout.html:169 +msgid "…and the longest" +msgstr "…och den längsta" + +#: bookwyrm/templates/annual_summary/layout.html:200 +#, python-format +msgid "%(display_name)s set a goal of reading %(goal)s book in %(year)s,
    and achieved %(goal_percent)s%% of that goal" +msgid_plural "%(display_name)s set a goal of reading %(goal)s books in %(year)s,
    and achieved %(goal_percent)s%% of that goal" +msgstr[0] "%(display_name)s satte ett mål att läsa %(goal)s bok under %(year)s,
    och uppnådde %(goal_percent)s%% av det målet" +msgstr[1] "%(display_name)s satte ett mål att läsa %(goal)s böcker under %(year)s,
    och uppnådde %(goal_percent)s%% av det målet" + +#: bookwyrm/templates/annual_summary/layout.html:209 +msgid "Way to go!" +msgstr "Bra gjort!" + +#: bookwyrm/templates/annual_summary/layout.html:224 +#, python-format +msgid "%(display_name)s left %(ratings_total)s rating,
    their average rating is %(rating_average)s" +msgid_plural "%(display_name)s left %(ratings_total)s ratings,
    their average rating is %(rating_average)s" +msgstr[0] "%(display_name)s lämnade %(ratings_total)s betyg,
    deras genomsnittliga betyg är %(rating_average)s" +msgstr[1] "%(display_name)s lämnade %(ratings_total)s betyg,
    deras genomsnittliga betyg är %(rating_average)s" + +#: bookwyrm/templates/annual_summary/layout.html:238 +msgid "Their best rated review" +msgstr "Deras bäst rankade recension" + +#: bookwyrm/templates/annual_summary/layout.html:251 +#, python-format +msgid "Their rating: %(rating)s" +msgstr "Deras betyg: %(rating)s" + +#: bookwyrm/templates/annual_summary/layout.html:268 +#, python-format +msgid "All the books %(display_name)s read in %(year)s" +msgstr "Alla böcker %(display_name)s som har lästs under %(year)s" + +#: bookwyrm/templates/author/author.html:18 +#: bookwyrm/templates/author/author.html:19 +msgid "Edit Author" +msgstr "Redigera författare" + +#: bookwyrm/templates/author/author.html:35 +msgid "Author details" +msgstr "Författarens detaljer" + +#: bookwyrm/templates/author/author.html:39 +#: bookwyrm/templates/author/edit_author.html:42 +msgid "Aliases:" +msgstr "Aliaser:" + +#: bookwyrm/templates/author/author.html:48 +msgid "Born:" +msgstr "Född:" + +#: bookwyrm/templates/author/author.html:55 +msgid "Died:" +msgstr "Dog:" + +#: bookwyrm/templates/author/author.html:65 +msgid "External links" +msgstr "Externa länkar" + +#: bookwyrm/templates/author/author.html:70 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: bookwyrm/templates/author/author.html:78 +msgid "View ISNI record" +msgstr "Visa ISNI-samling" + +#: bookwyrm/templates/author/author.html:83 +#: bookwyrm/templates/author/sync_modal.html:5 +#: bookwyrm/templates/book/book.html:122 +#: bookwyrm/templates/book/sync_modal.html:5 +msgid "Load data" +msgstr "Ladda data" + +#: bookwyrm/templates/author/author.html:87 +#: bookwyrm/templates/book/book.html:126 +msgid "View on OpenLibrary" +msgstr "Visa i OpenLibrary" + +#: bookwyrm/templates/author/author.html:102 +#: bookwyrm/templates/book/book.html:140 +msgid "View on Inventaire" +msgstr "Visa i Inventaire" + +#: bookwyrm/templates/author/author.html:118 +msgid "View on LibraryThing" +msgstr "Visa i LibraryThing" + +#: bookwyrm/templates/author/author.html:126 +msgid "View on Goodreads" +msgstr "Visa i Goodreads" + +#: bookwyrm/templates/author/author.html:141 +#, python-format +msgid "Books by %(name)s" +msgstr "Böcker efter %(name)s" + +#: bookwyrm/templates/author/edit_author.html:5 +msgid "Edit Author:" +msgstr "Redigera författare:" + +#: bookwyrm/templates/author/edit_author.html:13 +#: bookwyrm/templates/book/edit/edit_book.html:19 +msgid "Added:" +msgstr "Lades till:" + +#: bookwyrm/templates/author/edit_author.html:14 +#: bookwyrm/templates/book/edit/edit_book.html:22 +msgid "Updated:" +msgstr "Uppdaterades:" + +#: bookwyrm/templates/author/edit_author.html:16 +#: bookwyrm/templates/book/edit/edit_book.html:26 +msgid "Last edited by:" +msgstr "Redigerades senast av:" + +#: bookwyrm/templates/author/edit_author.html:33 +#: bookwyrm/templates/book/edit/edit_book_form.html:16 +msgid "Metadata" +msgstr "Metadata" + +#: bookwyrm/templates/author/edit_author.html:35 +#: bookwyrm/templates/lists/form.html:9 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:14 +#: bookwyrm/templates/shelf/form.html:9 +msgid "Name:" +msgstr "Namn:" + +#: bookwyrm/templates/author/edit_author.html:44 +#: bookwyrm/templates/book/edit/edit_book_form.html:75 +#: bookwyrm/templates/book/edit/edit_book_form.html:94 +msgid "Separate multiple values with commas." +msgstr "Separera flertalet värden med kommatecken." + +#: bookwyrm/templates/author/edit_author.html:50 +msgid "Bio:" +msgstr "Bio:" + +#: bookwyrm/templates/author/edit_author.html:56 +msgid "Wikipedia link:" +msgstr "Wikipedia-länk:" + +#: bookwyrm/templates/author/edit_author.html:61 +msgid "Birth date:" +msgstr "Födelsedatum:" + +#: bookwyrm/templates/author/edit_author.html:68 +msgid "Death date:" +msgstr "Dödsdatum:" + +#: bookwyrm/templates/author/edit_author.html:75 +msgid "Author Identifiers" +msgstr "Identifierare för författare" + +#: bookwyrm/templates/author/edit_author.html:77 +msgid "Openlibrary key:" +msgstr "Nyckel för Openlibrary:" + +#: bookwyrm/templates/author/edit_author.html:84 +#: bookwyrm/templates/book/edit/edit_book_form.html:265 +msgid "Inventaire ID:" +msgstr "Inventarie-ID:" + +#: bookwyrm/templates/author/edit_author.html:91 +msgid "Librarything key:" +msgstr "Librarything-nyckel:" + +#: bookwyrm/templates/author/edit_author.html:98 +msgid "Goodreads key:" +msgstr "Goodreads-nyckel:" + +#: bookwyrm/templates/author/edit_author.html:105 +msgid "ISNI:" +msgstr "ISNI:" + +#: bookwyrm/templates/author/edit_author.html:115 +#: bookwyrm/templates/book/book.html:193 +#: bookwyrm/templates/book/edit/edit_book.html:121 +#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: 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 +#: bookwyrm/templates/settings/announcements/announcement_form.html:76 +#: bookwyrm/templates/settings/federation/edit_instance.html:82 +#: bookwyrm/templates/settings/federation/instance.html:87 +#: bookwyrm/templates/settings/site.html:133 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:69 +#: bookwyrm/templates/shelf/form.html:25 +#: bookwyrm/templates/snippets/reading_modals/layout.html:18 +msgid "Save" +msgstr "Spara" + +#: bookwyrm/templates/author/edit_author.html:116 +#: bookwyrm/templates/author/sync_modal.html:23 +#: bookwyrm/templates/book/book.html:194 +#: 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/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/settings/federation/instance.html:88 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 +#: bookwyrm/templates/snippets/report_modal.html:54 +msgid "Cancel" +msgstr "Avbryt" + +#: bookwyrm/templates/author/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." +msgstr "Att ladda in data kommer att ansluta till %(source_name)s och kontrollera eventuella metadata om den här författaren som inte finns här. Befintliga metadata kommer inte att skrivas över." + +#: bookwyrm/templates/author/sync_modal.html:22 +#: bookwyrm/templates/book/edit/edit_book.html:108 +#: bookwyrm/templates/book/sync_modal.html:22 +#: bookwyrm/templates/groups/members.html:29 +#: bookwyrm/templates/landing/password_reset.html:42 +#: bookwyrm/templates/snippets/remove_from_group_button.html:17 +msgid "Confirm" +msgstr "Bekräfta" + +#: bookwyrm/templates/book/book.html:55 bookwyrm/templates/book/book.html:56 +msgid "Edit Book" +msgstr "Redigera bok" + +#: bookwyrm/templates/book/book.html:79 bookwyrm/templates/book/book.html:82 +msgid "Click to add cover" +msgstr "Klicka för att lägga till omslag" + +#: bookwyrm/templates/book/book.html:88 +msgid "Failed to load cover" +msgstr "Misslyckades med att ladda omslaget" + +#: bookwyrm/templates/book/book.html:99 +msgid "Click to enlarge" +msgstr "Klicka för att förstora" + +#: bookwyrm/templates/book/book.html:170 +#, python-format +msgid "(%(review_count)s review)" +msgid_plural "(%(review_count)s reviews)" +msgstr[0] "(%(review_count)s recension)" +msgstr[1] "(%(review_count)s recensioner)" + +#: bookwyrm/templates/book/book.html:182 +msgid "Add Description" +msgstr "Lägg till beskrivning" + +#: bookwyrm/templates/book/book.html:189 +#: bookwyrm/templates/book/edit/edit_book_form.html:39 +#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17 +msgid "Description:" +msgstr "Beskrivning:" + +#: bookwyrm/templates/book/book.html:203 +#, python-format +msgid "%(count)s editions" +msgstr "%(count)s utgåvor" + +#: bookwyrm/templates/book/book.html:211 +msgid "You have shelved this edition in:" +msgstr "Du har lagt den här versionen i hylla:" + +#: bookwyrm/templates/book/book.html:226 +#, python-format +msgid "A different edition of this book is on your %(shelf_name)s shelf." +msgstr "En annorlunda utgåva av den här boken finns i din %(shelf_name)s hylla." + +#: bookwyrm/templates/book/book.html:237 +msgid "Your reading activity" +msgstr "Din läsningsaktivitet" + +#: bookwyrm/templates/book/book.html:243 +msgid "Add read dates" +msgstr "Lägg till läsdatum" + +#: bookwyrm/templates/book/book.html:251 +msgid "You don't have any reading activity for this book." +msgstr "Du har ingen läsaktivitet för den här boken." + +#: bookwyrm/templates/book/book.html:277 +msgid "Your reviews" +msgstr "Dina recensioner" + +#: bookwyrm/templates/book/book.html:283 +msgid "Your comments" +msgstr "Dina kommentarer" + +#: bookwyrm/templates/book/book.html:289 +msgid "Your quotes" +msgstr "Dina citationer" + +#: bookwyrm/templates/book/book.html:325 +msgid "Subjects" +msgstr "Ämnen" + +#: bookwyrm/templates/book/book.html:337 +msgid "Places" +msgstr "Platser" + +#: bookwyrm/templates/book/book.html:348 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: 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 +#: bookwyrm/templates/user/layout.html:85 +msgid "Lists" +msgstr "Listor" + +#: bookwyrm/templates/book/book.html:359 +msgid "Add to list" +msgstr "Lägg till i listan" + +#: bookwyrm/templates/book/book.html:369 +#: bookwyrm/templates/book/cover_add_modal.html:31 +#: 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" +msgstr "Lägg till" + +#: bookwyrm/templates/book/book_identifiers.html:8 +msgid "ISBN:" +msgstr "ISBN:" + +#: bookwyrm/templates/book/book_identifiers.html:15 +#: bookwyrm/templates/book/edit/edit_book_form.html:274 +msgid "OCLC Number:" +msgstr "OCLC-nummer:" + +#: bookwyrm/templates/book/book_identifiers.html:22 +#: bookwyrm/templates/book/edit/edit_book_form.html:283 +msgid "ASIN:" +msgstr "ASIN:" + +#: bookwyrm/templates/book/cover_add_modal.html:5 +msgid "Add cover" +msgstr "Lägg till omslag" + +#: bookwyrm/templates/book/cover_add_modal.html:17 +#: bookwyrm/templates/book/edit/edit_book_form.html:173 +msgid "Upload cover:" +msgstr "Ladda upp omslag:" + +#: bookwyrm/templates/book/cover_add_modal.html:23 +#: bookwyrm/templates/book/edit/edit_book_form.html:179 +msgid "Load cover from url:" +msgstr "Ladda omslag från url:" + +#: bookwyrm/templates/book/cover_show_modal.html:6 +msgid "Book cover preview" +msgstr "Förhandsvisning av bokomslag" + +#: bookwyrm/templates/book/cover_show_modal.html:11 +#: bookwyrm/templates/components/inline_form.html:8 +#: bookwyrm/templates/components/modal.html:13 +#: bookwyrm/templates/components/modal.html:30 +#: bookwyrm/templates/components/tooltip.html:7 +#: bookwyrm/templates/feed/suggested_books.html:62 +#: bookwyrm/templates/get_started/layout.html:25 +#: bookwyrm/templates/get_started/layout.html:58 +#: bookwyrm/templates/snippets/announcement.html:18 +msgid "Close" +msgstr "Stäng" + +#: bookwyrm/templates/book/edit/edit_book.html:6 +#: bookwyrm/templates/book/edit/edit_book.html:12 +#, python-format +msgid "Edit \"%(book_title)s\"" +msgstr "Redigera \"%(book_title)s\"" + +#: bookwyrm/templates/book/edit/edit_book.html:6 +#: bookwyrm/templates/book/edit/edit_book.html:14 +msgid "Add Book" +msgstr "Lägg till bok" + +#: bookwyrm/templates/book/edit/edit_book.html:48 +msgid "Confirm Book Info" +msgstr "Bekräfta bokens info" + +#: bookwyrm/templates/book/edit/edit_book.html:56 +#, python-format +msgid "Is \"%(name)s\" one of these authors?" +msgstr "Är \"%(name)s\" en utav dessa författare?" + +#: bookwyrm/templates/book/edit/edit_book.html:67 +#: bookwyrm/templates/book/edit/edit_book.html:69 +msgid "Author of " +msgstr "Författare av " + +#: bookwyrm/templates/book/edit/edit_book.html:69 +msgid "Find more information at isni.org" +msgstr "Hitta mer information på isni.org" + +#: bookwyrm/templates/book/edit/edit_book.html:79 +msgid "This is a new author" +msgstr "Det här är en ny författare" + +#: bookwyrm/templates/book/edit/edit_book.html:86 +#, python-format +msgid "Creating a new author: %(name)s" +msgstr "Skapar en ny författare: %(name)s" + +#: bookwyrm/templates/book/edit/edit_book.html:93 +msgid "Is this an edition of an existing work?" +msgstr "Är det här en version av ett redan befintligt verk?" + +#: bookwyrm/templates/book/edit/edit_book.html:101 +msgid "This is a new work" +msgstr "Det här är ett ny verk" + +#: bookwyrm/templates/book/edit/edit_book.html:110 +#: bookwyrm/templates/feed/status.html:21 +msgid "Back" +msgstr "Bakåt" + +#: bookwyrm/templates/book/edit/edit_book_form.html:21 +#: bookwyrm/templates/snippets/create_status/review.html:15 +msgid "Title:" +msgstr "Titel:" + +#: bookwyrm/templates/book/edit/edit_book_form.html:30 +msgid "Subtitle:" +msgstr "Undertext:" + +#: bookwyrm/templates/book/edit/edit_book_form.html:50 +msgid "Series:" +msgstr "Serier:" + +#: bookwyrm/templates/book/edit/edit_book_form.html:60 +msgid "Series number:" +msgstr "Serienummer:" + +#: bookwyrm/templates/book/edit/edit_book_form.html:71 +msgid "Languages:" +msgstr "Språk:" + +#: bookwyrm/templates/book/edit/edit_book_form.html:85 +msgid "Publication" +msgstr "Publicering" + +#: bookwyrm/templates/book/edit/edit_book_form.html:90 +msgid "Publisher:" +msgstr "Utgivare:" + +#: bookwyrm/templates/book/edit/edit_book_form.html:102 +msgid "First published date:" +msgstr "Första publiceringsdatum:" + +#: bookwyrm/templates/book/edit/edit_book_form.html:111 +msgid "Published date:" +msgstr "Publiceringsdatum:" + +#: bookwyrm/templates/book/edit/edit_book_form.html:122 +msgid "Authors" +msgstr "Författare" + +#: bookwyrm/templates/book/edit/edit_book_form.html:131 +#, python-format +msgid "Remove %(name)s" +msgstr "Ta bort %(name)s" + +#: bookwyrm/templates/book/edit/edit_book_form.html:134 +#, python-format +msgid "Author page for %(name)s" +msgstr "Författarsida för %(name)s" + +#: bookwyrm/templates/book/edit/edit_book_form.html:142 +msgid "Add Authors:" +msgstr "Lägg till författare:" + +#: bookwyrm/templates/book/edit/edit_book_form.html:145 +#: bookwyrm/templates/book/edit/edit_book_form.html:148 +msgid "Add Author" +msgstr "Lägg till författare" + +#: bookwyrm/templates/book/edit/edit_book_form.html:146 +#: bookwyrm/templates/book/edit/edit_book_form.html:149 +msgid "Jane Doe" +msgstr "Jane Doe" + +#: bookwyrm/templates/book/edit/edit_book_form.html:152 +msgid "Add Another Author" +msgstr "Lägg till en annan författare" + +#: bookwyrm/templates/book/edit/edit_book_form.html:160 +#: bookwyrm/templates/shelf/shelf.html:146 +msgid "Cover" +msgstr "Omslag" + +#: bookwyrm/templates/book/edit/edit_book_form.html:192 +msgid "Physical Properties" +msgstr "Fysiska egenskaper" + +#: bookwyrm/templates/book/edit/edit_book_form.html:199 +#: bookwyrm/templates/book/editions/format_filter.html:6 +msgid "Format:" +msgstr "Format:" + +#: bookwyrm/templates/book/edit/edit_book_form.html:211 +msgid "Format details:" +msgstr "Formatets detaljer:" + +#: bookwyrm/templates/book/edit/edit_book_form.html:222 +msgid "Pages:" +msgstr "Sidor:" + +#: bookwyrm/templates/book/edit/edit_book_form.html:233 +msgid "Book Identifiers" +msgstr "Bok-identifierare" + +#: bookwyrm/templates/book/edit/edit_book_form.html:238 +msgid "ISBN 13:" +msgstr "ISBN 13:" + +#: bookwyrm/templates/book/edit/edit_book_form.html:247 +msgid "ISBN 10:" +msgstr "ISBN 10:" + +#: bookwyrm/templates/book/edit/edit_book_form.html:256 +msgid "Openlibrary ID:" +msgstr "Openlibrary-ID:" + +#: bookwyrm/templates/book/editions/editions.html:4 +#, python-format +msgid "Editions of %(book_title)s" +msgstr "Utgåvor av %(book_title)s" + +#: bookwyrm/templates/book/editions/editions.html:8 +#, python-format +msgid "Editions of \"%(work_title)s\"" +msgstr "Utgåvor av \"%(work_title)s\"" + +#: 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:6 +#: bookwyrm/templates/preferences/edit_user.html:95 +msgid "Language:" +msgstr "Språk:" + +#: bookwyrm/templates/book/editions/search_filter.html:6 +msgid "Search editions" +msgstr "Sök efter utgåvor" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:6 +msgid "Add file link" +msgstr "Lägg till fillänk" + +#: 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 "Länkar från okända domäner kommer att behöva godkännas av en moderator innan de läggs till." + +#: bookwyrm/templates/book/file_links/add_link_modal.html:24 +msgid "URL:" +msgstr "Webbadress:" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:29 +msgid "File type:" +msgstr "Typ av fil:" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:48 +msgid "Availability:" +msgstr "Tillgänglighet:" + +#: 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 "Redigera länkar" + +#: bookwyrm/templates/book/file_links/edit_links.html:11 +#, python-format +msgid "\n" +" Links for \"%(title)s\"\n" +" " +msgstr "\n" +"Länkar för \"%(title)s\"\n" +" " + +#: bookwyrm/templates/book/file_links/edit_links.html:32 +#: bookwyrm/templates/settings/link_domains/link_table.html:6 +msgid "URL" +msgstr "Webbadress" + +#: bookwyrm/templates/book/file_links/edit_links.html:33 +#: bookwyrm/templates/settings/link_domains/link_table.html:7 +msgid "Added by" +msgstr "Lades till av" + +#: bookwyrm/templates/book/file_links/edit_links.html:34 +#: bookwyrm/templates/settings/link_domains/link_table.html:8 +msgid "Filetype" +msgstr "Filtyp" + +#: bookwyrm/templates/book/file_links/edit_links.html:35 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 +#: bookwyrm/templates/settings/reports/report_links_table.html:5 +msgid "Domain" +msgstr "Domän" + +#: bookwyrm/templates/book/file_links/edit_links.html:36 +#: bookwyrm/templates/import/import_status.html:127 +#: bookwyrm/templates/settings/announcements/announcements.html:38 +#: bookwyrm/templates/settings/federation/instance_list.html:46 +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 +#: bookwyrm/templates/settings/invites/status_filter.html:5 +#: bookwyrm/templates/settings/users/user_admin.html:34 +#: bookwyrm/templates/settings/users/user_info.html:20 +msgid "Status" +msgstr "Status" + +#: bookwyrm/templates/book/file_links/edit_links.html:37 +#: bookwyrm/templates/settings/federation/instance.html:94 +#: bookwyrm/templates/settings/reports/report_links_table.html:6 +msgid "Actions" +msgstr "Åtgärder" + +#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 +msgid "Report spam" +msgstr "Rapportera skräppost" + +#: bookwyrm/templates/book/file_links/edit_links.html:97 +msgid "No links available for this book." +msgstr "Inga länkar tillgängliga för den här boken." + +#: bookwyrm/templates/book/file_links/edit_links.html:108 +#: bookwyrm/templates/book/file_links/links.html:18 +msgid "Add link to file" +msgstr "Lägg till länk till filen" + +#: bookwyrm/templates/book/file_links/file_link_page.html:6 +msgid "File Links" +msgstr "Fillänkar" + +#: bookwyrm/templates/book/file_links/links.html:9 +msgid "Get a copy" +msgstr "Hämta en kopia" + +#: bookwyrm/templates/book/file_links/links.html:47 +msgid "No links available" +msgstr "Inga länkar tillgängliga" + +#: bookwyrm/templates/book/file_links/verification_modal.html:5 +msgid "Leaving BookWyrm" +msgstr "Lämnar 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 "Den här länken tar dig till: %(link_url)s.
    Är det dit du vill åka?" + +#: bookwyrm/templates/book/file_links/verification_modal.html:20 +msgid "Continue" +msgstr "Fortsätt" + +#: bookwyrm/templates/book/publisher_info.html:23 +#, python-format +msgid "%(format)s, %(pages)s pages" +msgstr "%(format)s, %(pages)s sidor" + +#: bookwyrm/templates/book/publisher_info.html:25 +#, python-format +msgid "%(pages)s pages" +msgstr "%(pages)s sidor" + +#: bookwyrm/templates/book/publisher_info.html:38 +#, python-format +msgid "%(languages)s language" +msgstr "%(languages)s språk" + +#: bookwyrm/templates/book/publisher_info.html:65 +#, python-format +msgid "Published %(date)s by %(publisher)s." +msgstr "Publicerades %(date)s av %(publisher)s." + +#: bookwyrm/templates/book/publisher_info.html:67 +#, python-format +msgid "Published %(date)s" +msgstr "Publicerades %(date)s" + +#: bookwyrm/templates/book/publisher_info.html:69 +#, python-format +msgid "Published by %(publisher)s." +msgstr "Publicerades av %(publisher)s." + +#: bookwyrm/templates/book/rating.html:13 +msgid "rated it" +msgstr "betygsatte den" + +#: bookwyrm/templates/book/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten." +msgstr "" + +#: bookwyrm/templates/components/tooltip.html:3 +msgid "Help" +msgstr "Hjälp" + +#: bookwyrm/templates/compose.html:5 bookwyrm/templates/compose.html:8 +msgid "Edit status" +msgstr "Redigera status" + +#: bookwyrm/templates/confirm_email/confirm_email.html:4 +msgid "Confirm email" +msgstr "Bekräfta e-postadress" + +#: bookwyrm/templates/confirm_email/confirm_email.html:7 +msgid "Confirm your email address" +msgstr "Bekräfta din e-postadress" + +#: bookwyrm/templates/confirm_email/confirm_email.html:13 +msgid "A confirmation code has been sent to the email address you used to register your account." +msgstr "En bekräftelsekod har skickats till e-postadressen som du använde för att registrera ditt konto." + +#: bookwyrm/templates/confirm_email/confirm_email.html:15 +msgid "Sorry! We couldn't find that code." +msgstr "Tyvärr! Vi kunde inte hitta den där koden." + +#: bookwyrm/templates/confirm_email/confirm_email.html:19 +#: bookwyrm/templates/settings/users/user_info.html:85 +msgid "Confirmation code:" +msgstr "Bekräftelsekod:" + +#: bookwyrm/templates/confirm_email/confirm_email.html:25 +#: bookwyrm/templates/landing/layout.html:73 +#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/snippets/report_modal.html:52 +msgid "Submit" +msgstr "Skicka in" + +#: bookwyrm/templates/confirm_email/confirm_email.html:32 +msgid "Can't find your code?" +msgstr "Kan du inte hitta din kod?" + +#: bookwyrm/templates/confirm_email/resend_form.html:4 +msgid "Resend confirmation link" +msgstr "Skicka bekräftelselänken igen" + +#: bookwyrm/templates/confirm_email/resend_form.html:11 +#: bookwyrm/templates/landing/layout.html:68 +#: bookwyrm/templates/landing/password_reset_request.html:18 +#: bookwyrm/templates/preferences/edit_user.html:53 +#: bookwyrm/templates/snippets/register_form.html:12 +msgid "Email address:" +msgstr "E-postadress:" + +#: bookwyrm/templates/confirm_email/resend_form.html:17 +msgid "Resend link" +msgstr "Skicka länken igen" + +#: bookwyrm/templates/directory/community_filter.html:5 +msgid "Community" +msgstr "Gemenskap" + +#: bookwyrm/templates/directory/community_filter.html:8 +msgid "Local users" +msgstr "Lokala användare" + +#: bookwyrm/templates/directory/community_filter.html:12 +msgid "Federated community" +msgstr "Federerad gemenskap" + +#: bookwyrm/templates/directory/directory.html:4 +#: bookwyrm/templates/directory/directory.html:9 +#: bookwyrm/templates/layout.html:100 +msgid "Directory" +msgstr "Mapp" + +#: bookwyrm/templates/directory/directory.html:17 +msgid "Make your profile discoverable to other BookWyrm users." +msgstr "Möjliggör för BookWyrm-användare att upptäcka ditt konto." + +#: bookwyrm/templates/directory/directory.html:21 +msgid "Join Directory" +msgstr "Gå med i Mapp" + +#: bookwyrm/templates/directory/directory.html:24 +#, python-format +msgid "You can opt-out at any time in your profile settings." +msgstr "Du kan säga upp när som helst i din profils inställningar." + +#: bookwyrm/templates/directory/directory.html:29 +#: bookwyrm/templates/directory/directory.html:31 +#: bookwyrm/templates/feed/goal_card.html:17 +#: bookwyrm/templates/feed/summary_card.html:12 +#: bookwyrm/templates/feed/summary_card.html:14 +#: bookwyrm/templates/snippets/announcement.html:34 +msgid "Dismiss message" +msgstr "Avfärda meddelande" + +#: bookwyrm/templates/directory/sort_filter.html:5 +msgid "Order by" +msgstr "Sortera efter" + +#: bookwyrm/templates/directory/sort_filter.html:9 +msgid "Recently active" +msgstr "Senaste aktiv" + +#: bookwyrm/templates/directory/sort_filter.html:10 +msgid "Suggested" +msgstr "Föreslagna" + +#: bookwyrm/templates/directory/user_card.html:17 +#: bookwyrm/templates/directory/user_card.html:18 +#: bookwyrm/templates/ostatus/remote_follow.html:21 +#: bookwyrm/templates/ostatus/remote_follow.html:22 +#: bookwyrm/templates/ostatus/subscribe.html:41 +#: bookwyrm/templates/ostatus/subscribe.html:42 +#: bookwyrm/templates/ostatus/success.html:17 +#: bookwyrm/templates/ostatus/success.html:18 +#: bookwyrm/templates/user/user_preview.html:16 +#: bookwyrm/templates/user/user_preview.html:17 +msgid "Locked account" +msgstr "Låst konto" + +#: bookwyrm/templates/directory/user_card.html:40 +msgid "follower you follow" +msgid_plural "followers you follow" +msgstr[0] "följare som du följer" +msgstr[1] "följare som du följer" + +#: bookwyrm/templates/directory/user_card.html:47 +msgid "book on your shelves" +msgid_plural "books on your shelves" +msgstr[0] "bok på dina hyllor" +msgstr[1] "böcker på dina hyllor" + +#: bookwyrm/templates/directory/user_card.html:55 +msgid "posts" +msgstr "inlägg" + +#: bookwyrm/templates/directory/user_card.html:61 +msgid "last active" +msgstr "senast aktiv" + +#: bookwyrm/templates/directory/user_type_filter.html:5 +msgid "User type" +msgstr "Typ av användare" + +#: bookwyrm/templates/directory/user_type_filter.html:8 +msgid "BookWyrm users" +msgstr "BookWyrm-användare" + +#: bookwyrm/templates/directory/user_type_filter.html:12 +msgid "All known users" +msgstr "Alla kända användare" + +#: bookwyrm/templates/discover/card-header.html:8 +#, python-format +msgid "%(username)s wants to read %(book_title)s" +msgstr "%(username)s vill läsa %(book_title)s" + +#: bookwyrm/templates/discover/card-header.html:13 +#, python-format +msgid "%(username)s finished reading %(book_title)s" +msgstr "%(username)s slutade läsa %(book_title)s" + +#: bookwyrm/templates/discover/card-header.html:18 +#, python-format +msgid "%(username)s started reading %(book_title)s" +msgstr "%(username)s började läsa %(book_title)s" + +#: bookwyrm/templates/discover/card-header.html:23 +#, python-format +msgid "%(username)s rated %(book_title)s" +msgstr "%(username)sbetygsatte%(book_title)s" + +#: bookwyrm/templates/discover/card-header.html:27 +#, python-format +msgid "%(username)s reviewed %(book_title)s" +msgstr "%(username)s recenserade %(book_title)s" + +#: bookwyrm/templates/discover/card-header.html:31 +#, python-format +msgid "%(username)s commented on %(book_title)s" +msgstr "%(username)s kommenterade på %(book_title)s" + +#: bookwyrm/templates/discover/card-header.html:35 +#, python-format +msgid "%(username)s quoted %(book_title)s" +msgstr "%(username)s citerade %(book_title)s" + +#: bookwyrm/templates/discover/discover.html:4 +#: bookwyrm/templates/discover/discover.html:10 +#: bookwyrm/templates/layout.html:77 +msgid "Discover" +msgstr "Upptäck" + +#: bookwyrm/templates/discover/discover.html:12 +#, python-format +msgid "See what's new in the local %(site_name)s community" +msgstr "Se det som är nytt i %(site_name)s lokala gemenskap" + +#: bookwyrm/templates/discover/large-book.html:52 +#: bookwyrm/templates/discover/small-book.html:36 +msgid "View status" +msgstr "Visa status" + +#: bookwyrm/templates/email/confirm/html_content.html:6 +#: bookwyrm/templates/email/confirm/text_content.html:4 +#, python-format +msgid "One last step before you join %(site_name)s! Please confirm your email address by clicking the link below:" +msgstr "Ett sista steg innan du går med i %(site_name)s! Vänligen bekräfta din e-postadress genom att klicka på länken nedanför:" + +#: bookwyrm/templates/email/confirm/html_content.html:11 +msgid "Confirm Email" +msgstr "Bekräfta e-postadress" + +#: bookwyrm/templates/email/confirm/html_content.html:15 +#, python-format +msgid "Or enter the code \"%(confirmation_code)s\" at login." +msgstr "Eller ange koden \"%(confirmation_code)s\" vid inloggningen." + +#: bookwyrm/templates/email/confirm/subject.html:2 +msgid "Please confirm your email" +msgstr "Vänligen bekräfta din e-postadress" + +#: bookwyrm/templates/email/confirm/text_content.html:10 +#, python-format +msgid "Or enter the code \"%(confirmation_code)s\" at login." +msgstr "Eller ange koden \"%(confirmation_code)s\" vid inloggningen." + +#: bookwyrm/templates/email/html_layout.html:15 +#: bookwyrm/templates/email/text_layout.html:2 +msgid "Hi there," +msgstr "Hej där," + +#: bookwyrm/templates/email/html_layout.html:21 +#, python-format +msgid "BookWyrm hosted on %(site_name)s" +msgstr "BookWyrm körs på%(site_name)s" + +#: bookwyrm/templates/email/html_layout.html:23 +msgid "Email preference" +msgstr "E-postinställning" + +#: bookwyrm/templates/email/invite/html_content.html:6 +#: bookwyrm/templates/email/invite/subject.html:2 +#, python-format +msgid "You're invited to join %(site_name)s!" +msgstr "Du är inbjuden att gå med i %(site_name)s!" + +#: bookwyrm/templates/email/invite/html_content.html:9 +msgid "Join Now" +msgstr "Gå med nu" + +#: bookwyrm/templates/email/invite/html_content.html:15 +#, python-format +msgid "Learn more about %(site_name)s." +msgstr "Lär dig mer om %(site_name)s." + +#: bookwyrm/templates/email/invite/text_content.html:4 +#, python-format +msgid "You're invited to join %(site_name)s! Click the link below to create an account." +msgstr "Du är inbjuden att gå med i %(site_name)s! Klicka på länken nedan för att skapa ett konto." + +#: bookwyrm/templates/email/invite/text_content.html:8 +#, python-format +msgid "Learn more about %(site_name)s:" +msgstr "Lär dig mer om %(site_name)s:" + +#: bookwyrm/templates/email/moderation_report/html_content.html:6 +#: bookwyrm/templates/email/moderation_report/text_content.html:5 +#, python-format +msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " +msgstr "@%(reporter)s har flaggat beteende av @%(reportee)s för moderering. " + +#: bookwyrm/templates/email/moderation_report/html_content.html:9 +#: bookwyrm/templates/email/moderation_report/text_content.html:7 +msgid "View report" +msgstr "Visa rapport" + +#: bookwyrm/templates/email/moderation_report/subject.html:2 +#, python-format +msgid "New report for %(site_name)s" +msgstr "Ny rapport för %(site_name)s" + +#: bookwyrm/templates/email/password_reset/html_content.html:6 +#: bookwyrm/templates/email/password_reset/text_content.html:4 +#, python-format +msgid "You requested to reset your %(site_name)s password. Click the link below to set a new password and log in to your account." +msgstr "Du begärde att återställa ditt %(site_name)s-lösenord. Klicka på länken nedan för att ställa in ett nytt lösenord och logga in på ditt konto." + +#: bookwyrm/templates/email/password_reset/html_content.html:9 +#: bookwyrm/templates/landing/password_reset.html:4 +#: bookwyrm/templates/landing/password_reset.html:10 +#: bookwyrm/templates/landing/password_reset_request.html:4 +#: bookwyrm/templates/landing/password_reset_request.html:10 +msgid "Reset Password" +msgstr "Återställ lösenord" + +#: bookwyrm/templates/email/password_reset/html_content.html:13 +#: bookwyrm/templates/email/password_reset/text_content.html:8 +msgid "If you didn't request to reset your password, you can ignore this email." +msgstr "Om du inte begärde att återställa ditt lösenord så kan du ignorera det här e-postmeddelandet." + +#: bookwyrm/templates/email/password_reset/subject.html:2 +#, python-format +msgid "Reset your %(site_name)s password" +msgstr "Återställ lösenordet för %(site_name)s" + +#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:39 +#, python-format +msgid "%(site_name)s home page" +msgstr "Hemsida för %(site_name)s" + +#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:233 +msgid "Contact site admin" +msgstr "Kontakta webbplatsens administratör" + +#: bookwyrm/templates/embed-layout.html:46 +msgid "Join Bookwyrm" +msgstr "Gå med i BookWyrm" + +#: bookwyrm/templates/feed/direct_messages.html:8 +#, python-format +msgid "Direct Messages with %(username)s" +msgstr "Direktmeddelanden med %(username)s" + +#: bookwyrm/templates/feed/direct_messages.html:10 +#: bookwyrm/templates/layout.html:110 +msgid "Direct Messages" +msgstr "Direktmeddelanden" + +#: bookwyrm/templates/feed/direct_messages.html:13 +msgid "All messages" +msgstr "Alla meddelanden" + +#: bookwyrm/templates/feed/direct_messages.html:22 +msgid "You have no messages right now." +msgstr "Du har inga meddelanden just nu." + +#: bookwyrm/templates/feed/feed.html:54 +msgid "There aren't any activities right now! Try following a user to get started" +msgstr "Det finns inga aktiviteter just nu! Försök att följa en användare för att komma igång" + +#: bookwyrm/templates/feed/feed.html:55 +msgid "Alternatively, you can try enabling more status types" +msgstr "Alternativt så kan du prova att aktivera fler status-typer" + +#: bookwyrm/templates/feed/goal_card.html:6 +#: bookwyrm/templates/feed/layout.html:15 +#: bookwyrm/templates/user/goal_form.html:6 +#, python-format +msgid "%(year)s Reading Goal" +msgstr "%(year)s läs-mål" + +#: bookwyrm/templates/feed/goal_card.html:18 +#, python-format +msgid "You can set or change your reading goal any time from your profile page" +msgstr "Du kan ställa in eller ändra ditt läsmål när som helst från din profilsida" + +#: bookwyrm/templates/feed/layout.html:5 +msgid "Updates" +msgstr "Uppdateringar" + +#: bookwyrm/templates/feed/suggested_books.html:6 +#: bookwyrm/templates/layout.html:105 +msgid "Your Books" +msgstr "Dina böcker" + +#: bookwyrm/templates/feed/suggested_books.html:8 +msgid "There are no books here right now! Try searching for a book to get started" +msgstr "Det finns inga böcker här ännu! Försök att söka efter en bok för att börja" + +#: bookwyrm/templates/feed/suggested_users.html:5 +#: bookwyrm/templates/get_started/users.html:6 +msgid "Who to follow" +msgstr "Vem ska följas" + +#: bookwyrm/templates/feed/suggested_users.html:9 +msgid "Don't show suggested users" +msgstr "Visa inte föreslagna användare" + +#: bookwyrm/templates/feed/suggested_users.html:14 +msgid "View directory" +msgstr "Visa mapp" + +#: bookwyrm/templates/feed/summary_card.html:21 +msgid "The end of the year is the best moment to take stock of all the books read during the last 12 months. How many pages have you read? Which book is your best-rated of the year? We compiled these stats, and more!" +msgstr "Slutet av året är det bästa ögonblicket för att inventera alla böcker som lästs under de senaste 12 månaderna. Hur många sidor har du läst? Vilken bok är din mest betygsatta under året? Vi sammanställde den här statistiken och mer!" + +#: bookwyrm/templates/feed/summary_card.html:26 +#, python-format +msgid "Discover your stats for %(year)s!" +msgstr "Upptäck din statistik för %(year)s!" + +#: bookwyrm/templates/get_started/book_preview.html:6 +#, python-format +msgid "Have you read %(book_title)s?" +msgstr "Har du läst %(book_title)s?" + +#: bookwyrm/templates/get_started/book_preview.html:7 +msgid "Add to your books" +msgstr "Lägg till i dina böcker" + +#: bookwyrm/templates/get_started/book_preview.html:10 +#: bookwyrm/templates/shelf/shelf.html:86 +#: bookwyrm/templates/snippets/translated_shelf_name.html:5 +#: bookwyrm/templates/user/user.html:33 +msgid "To Read" +msgstr "Att läsa" + +#: bookwyrm/templates/get_started/book_preview.html:11 +#: bookwyrm/templates/shelf/shelf.html:87 +#: bookwyrm/templates/snippets/translated_shelf_name.html:7 +#: bookwyrm/templates/user/user.html:34 +msgid "Currently Reading" +msgstr "Läser just nu" + +#: bookwyrm/templates/get_started/book_preview.html:12 +#: bookwyrm/templates/shelf/shelf.html:88 +#: bookwyrm/templates/snippets/shelf_selector.html:47 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 +#: bookwyrm/templates/snippets/translated_shelf_name.html:9 +#: bookwyrm/templates/user/user.html:35 +msgid "Read" +msgstr "Lästa" + +#: bookwyrm/templates/get_started/books.html:6 +msgid "What are you reading?" +msgstr "Vad läser du?" + +#: bookwyrm/templates/get_started/books.html:9 +#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:205 +msgid "Search for a book" +msgstr "Sök efter en bok" + +#: bookwyrm/templates/get_started/books.html:11 +#, python-format +msgid "No books found for \"%(query)s\"" +msgstr "Inga böcker för \"%(query)s\" hittades" + +#: bookwyrm/templates/get_started/books.html:11 +#, python-format +msgid "You can add books when you start using %(site_name)s." +msgstr "Du kan lägga till böcker när du börjar använda %(site_name)s." + +#: bookwyrm/templates/get_started/books.html:16 +#: bookwyrm/templates/get_started/books.html:17 +#: bookwyrm/templates/get_started/users.html:18 +#: bookwyrm/templates/get_started/users.html:19 +#: bookwyrm/templates/groups/members.html:15 +#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53 +#: 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" +msgstr "Sök" + +#: bookwyrm/templates/get_started/books.html:27 +msgid "Suggested Books" +msgstr "Föreslagna böcker" + +#: bookwyrm/templates/get_started/books.html:46 +#, python-format +msgid "Popular on %(site_name)s" +msgstr "Populära i %(site_name)s" + +#: bookwyrm/templates/get_started/books.html:58 +#: bookwyrm/templates/lists/list.html:222 +msgid "No books found" +msgstr "Inga böcker hittades" + +#: bookwyrm/templates/get_started/books.html:63 +#: bookwyrm/templates/get_started/profile.html:64 +msgid "Save & continue" +msgstr "Spara & fortsätt" + +#: bookwyrm/templates/get_started/layout.html:5 +#: bookwyrm/templates/landing/layout.html:5 +msgid "Welcome" +msgstr "Välkommen" + +#: bookwyrm/templates/get_started/layout.html:22 +msgid "These are some first steps to get you started." +msgstr "Dessa är några första steg för att du ska komma igång." + +#: bookwyrm/templates/get_started/layout.html:36 +#: bookwyrm/templates/get_started/profile.html:6 +msgid "Create your profile" +msgstr "Skapa din profil" + +#: bookwyrm/templates/get_started/layout.html:40 +msgid "Add books" +msgstr "Lägg till böcker" + +#: bookwyrm/templates/get_started/layout.html:44 +msgid "Find friends" +msgstr "Hitta vänner" + +#: bookwyrm/templates/get_started/layout.html:50 +msgid "Skip this step" +msgstr "Hoppa över det här steget" + +#: bookwyrm/templates/get_started/layout.html:54 +msgid "Finish" +msgstr "Avsluta" + +#: bookwyrm/templates/get_started/profile.html:15 +#: bookwyrm/templates/preferences/edit_user.html:41 +msgid "Display name:" +msgstr "Visningsnamn:" + +#: bookwyrm/templates/get_started/profile.html:29 +#: bookwyrm/templates/preferences/edit_user.html:47 +msgid "Summary:" +msgstr "Sammanfattning:" + +#: bookwyrm/templates/get_started/profile.html:34 +msgid "A little bit about you" +msgstr "Lite om dig själv" + +#: bookwyrm/templates/get_started/profile.html:43 +#: bookwyrm/templates/preferences/edit_user.html:27 +msgid "Avatar:" +msgstr "Avatar:" + +#: bookwyrm/templates/get_started/profile.html:52 +msgid "Manually approve followers:" +msgstr "Godkänn följare manuellt:" + +#: bookwyrm/templates/get_started/profile.html:58 +msgid "Show this account in suggested users:" +msgstr "Visa det här kontot i föreslagna användare:" + +#: bookwyrm/templates/get_started/profile.html:62 +msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users." +msgstr "Ditt konto kommer att dyka upp i mappen och kan rekommenderas till andra BookWyrm-användare." + +#: bookwyrm/templates/get_started/users.html:11 +msgid "Search for a user" +msgstr "Sök efter en användare" + +#: bookwyrm/templates/get_started/users.html:13 +#, python-format +msgid "No users found for \"%(query)s\"" +msgstr "Ingen användare \"%(query)s\" hittades" + +#: bookwyrm/templates/groups/create_form.html:5 +msgid "Create Group" +msgstr "Skapa grupp" + +#: bookwyrm/templates/groups/created_text.html:4 +#, python-format +msgid "Managed by %(username)s" +msgstr "Hanteras utav %(username)s" + +#: bookwyrm/templates/groups/delete_group_modal.html:4 +msgid "Delete this group?" +msgstr "Ta bort den här gruppen?" + +#: bookwyrm/templates/groups/delete_group_modal.html:7 +#: bookwyrm/templates/lists/delete_list_modal.html:7 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:12 +msgid "This action cannot be un-done" +msgstr "Den här åtgärden kan inte ångras" + +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/delete_list_modal.html:15 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/settings/announcements/announcement.html:20 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:14 +msgid "Delete" +msgstr "Ta bort" + +#: bookwyrm/templates/groups/edit_form.html:5 +msgid "Edit Group" +msgstr "Redigera gruppen" + +#: bookwyrm/templates/groups/form.html:8 +msgid "Group Name:" +msgstr "Gruppens namn:" + +#: bookwyrm/templates/groups/form.html:12 +msgid "Group Description:" +msgstr "Gruppens beskrivning:" + +#: bookwyrm/templates/groups/form.html:21 +msgid "Delete group" +msgstr "Ta bort grupp" + +#: bookwyrm/templates/groups/group.html:21 +msgid "Members of this group can create group-curated lists." +msgstr "Medlemmarna i denna grupp kan skapa gruppkurerade listor." + +#: bookwyrm/templates/groups/group.html:26 +#: bookwyrm/templates/lists/create_form.html:5 +#: bookwyrm/templates/lists/lists.html:20 +msgid "Create List" +msgstr "Skapa lista" + +#: bookwyrm/templates/groups/group.html:39 +msgid "This group has no lists" +msgstr "Den här gruppen har inga listor" + +#: bookwyrm/templates/groups/layout.html:17 +msgid "Edit group" +msgstr "Redigera grupp" + +#: bookwyrm/templates/groups/members.html:11 +msgid "Search to add a user" +msgstr "Sök för att lägga till en användare" + +#: bookwyrm/templates/groups/members.html:32 +msgid "Leave group" +msgstr "Lämna grupp" + +#: bookwyrm/templates/groups/members.html:54 +#: bookwyrm/templates/groups/suggested_users.html:35 +#: bookwyrm/templates/snippets/suggested_users.html:31 +#: bookwyrm/templates/user/user_preview.html:36 +msgid "Follows you" +msgstr "Följer dig" + +#: bookwyrm/templates/groups/suggested_users.html:7 +msgid "Add new members!" +msgstr "Lägg till nya medlemmar!" + +#: bookwyrm/templates/groups/suggested_users.html:20 +#: bookwyrm/templates/snippets/suggested_users.html:16 +#, python-format +msgid "%(mutuals)s follower you follow" +msgid_plural "%(mutuals)s followers you follow" +msgstr[0] "%(mutuals)s följare som du följer" +msgstr[1] "%(mutuals)s följare som du följer" + +#: bookwyrm/templates/groups/suggested_users.html:27 +#: bookwyrm/templates/snippets/suggested_users.html:23 +#, python-format +msgid "%(shared_books)s book on your shelves" +msgid_plural "%(shared_books)s books on your shelves" +msgstr[0] "%(shared_books)s bok på dina hyllor" +msgstr[1] "%(shared_books)s böcker på dina hyllor" + +#: bookwyrm/templates/groups/suggested_users.html:43 +#, python-format +msgid "No potential members found for \"%(user_query)s\"" +msgstr "Inga potentiella medlemmar hittades för \"%(user_query)s\"" + +#: bookwyrm/templates/groups/user_groups.html:15 +msgid "Manager" +msgstr "Chef" + +#: bookwyrm/templates/import/import.html:5 +#: bookwyrm/templates/import/import.html:9 +#: bookwyrm/templates/shelf/shelf.html:64 +msgid "Import Books" +msgstr "Importera böcker" + +#: bookwyrm/templates/import/import.html:18 +msgid "Data source:" +msgstr "Datakälla:" + +#: bookwyrm/templates/import/import.html:40 +msgid "Data file:" +msgstr "Datafil:" + +#: bookwyrm/templates/import/import.html:48 +msgid "Include reviews" +msgstr "Inkludera recensioner" + +#: bookwyrm/templates/import/import.html:53 +msgid "Privacy setting for imported reviews:" +msgstr "Integritetsinställning för importerade recensioner:" + +#: bookwyrm/templates/import/import.html:59 +#: bookwyrm/templates/settings/federation/instance_blocklist.html:64 +msgid "Import" +msgstr "Importera" + +#: bookwyrm/templates/import/import.html:64 +msgid "Recent Imports" +msgstr "Senaste importer" + +#: bookwyrm/templates/import/import.html:66 +msgid "No recent imports" +msgstr "Ingen importering nyligen" + +#: bookwyrm/templates/import/import_status.html:6 +#: bookwyrm/templates/import/import_status.html:15 +#: bookwyrm/templates/import/import_status.html:29 +msgid "Import Status" +msgstr "Importera status" + +#: bookwyrm/templates/import/import_status.html:13 +#: bookwyrm/templates/import/import_status.html:27 +msgid "Retry Status" +msgstr "Status för nytt försök" + +#: bookwyrm/templates/import/import_status.html:22 +msgid "Imports" +msgstr "Importer" + +#: bookwyrm/templates/import/import_status.html:39 +msgid "Import started:" +msgstr "Importeringen startade:" + +#: bookwyrm/templates/import/import_status.html:48 +msgid "In progress" +msgstr "Pågår" + +#: bookwyrm/templates/import/import_status.html:50 +msgid "Refresh" +msgstr "Uppdatera" + +#: bookwyrm/templates/import/import_status.html:71 +#, python-format +msgid "%(display_counter)s item needs manual approval." +msgid_plural "%(display_counter)s items need manual approval." +msgstr[0] "%(display_counter)s artikel behöver manuellt godkännande." +msgstr[1] "%(display_counter)s artiklar behöver manuellt godkännande." + +#: bookwyrm/templates/import/import_status.html:76 +#: bookwyrm/templates/import/manual_review.html:8 +msgid "Review items" +msgstr "Recensera objekt" + +#: bookwyrm/templates/import/import_status.html:82 +#, python-format +msgid "%(display_counter)s item failed to import." +msgid_plural "%(display_counter)s items failed to import." +msgstr[0] "%(display_counter)s föremål kunde inte importeras." +msgstr[1] "%(display_counter)s föremål kunde inte importeras." + +#: bookwyrm/templates/import/import_status.html:88 +msgid "View and troubleshoot failed items" +msgstr "Visa och felsök misslyckade objekt" + +#: bookwyrm/templates/import/import_status.html:100 +msgid "Row" +msgstr "Rad" + +#: bookwyrm/templates/import/import_status.html:103 +#: bookwyrm/templates/shelf/shelf.html:147 +#: bookwyrm/templates/shelf/shelf.html:169 +msgid "Title" +msgstr "Titel" + +#: bookwyrm/templates/import/import_status.html:106 +msgid "ISBN" +msgstr "ISBN" + +#: bookwyrm/templates/import/import_status.html:110 +msgid "Openlibrary key" +msgstr "Openlibrary-nyckel" + +#: bookwyrm/templates/import/import_status.html:114 +#: bookwyrm/templates/shelf/shelf.html:148 +#: bookwyrm/templates/shelf/shelf.html:172 +msgid "Author" +msgstr "Författare" + +#: bookwyrm/templates/import/import_status.html:117 +msgid "Shelf" +msgstr "Hylla" + +#: bookwyrm/templates/import/import_status.html:120 +#: bookwyrm/templates/import/manual_review.html:13 +#: bookwyrm/templates/snippets/create_status.html:17 +msgid "Review" +msgstr "Recension" + +#: bookwyrm/templates/import/import_status.html:124 +#: bookwyrm/templates/settings/link_domains/link_table.html:9 +msgid "Book" +msgstr "Bok" + +#: bookwyrm/templates/import/import_status.html:135 +msgid "Import preview unavailable." +msgstr "Förhandsgranskning för importering är inte tillgängligt." + +#: bookwyrm/templates/import/import_status.html:172 +msgid "View imported review" +msgstr "Visa importerad recension" + +#: bookwyrm/templates/import/import_status.html:186 +msgid "Imported" +msgstr "Importerade" + +#: bookwyrm/templates/import/import_status.html:192 +msgid "Needs manual review" +msgstr "Behöver manuell granskning" + +#: bookwyrm/templates/import/import_status.html:205 +msgid "Retry" +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 "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" +msgstr "Uppdatera importering" + +#: bookwyrm/templates/import/manual_review.html:5 +#: bookwyrm/templates/import/troubleshoot.html:4 +msgid "Import Troubleshooting" +msgstr "Importera problemsökning" + +#: bookwyrm/templates/import/manual_review.html:21 +msgid "Approving a suggestion will permanently add the suggested book to your shelves and associate your reading dates, reviews, and ratings with that book." +msgstr "Godkännandet av ett förslag kommer permanent lägga till den föreslagna boken till dina hyllor och associera dina läsdatum, recensioner och betyg med den boken." + +#: bookwyrm/templates/import/manual_review.html:58 +#: bookwyrm/templates/lists/curate.html:71 +#: bookwyrm/templates/settings/link_domains/link_domains.html:76 +msgid "Approve" +msgstr "Godkänn" + +#: bookwyrm/templates/import/manual_review.html:66 +msgid "Reject" +msgstr "Neka" + +#: bookwyrm/templates/import/tooltip.html:6 +msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." +msgstr "Du kan ladda ner Goodreads-data från Import/Export-sidan på ditt Goodreads-konto." + +#: bookwyrm/templates/import/troubleshoot.html:7 +msgid "Failed items" +msgstr "Misslyckade objekt" + +#: bookwyrm/templates/import/troubleshoot.html:12 +msgid "Troubleshooting" +msgstr "Felsökning" + +#: bookwyrm/templates/import/troubleshoot.html:20 +msgid "Re-trying an import can fix missing items in cases such as:" +msgstr "Att prova en importering igen kan lösa objekt som saknades så som:" + +#: bookwyrm/templates/import/troubleshoot.html:23 +msgid "The book has been added to the instance since this import" +msgstr "Den här boken har lagts till i instansen sedan den här importeringen" + +#: bookwyrm/templates/import/troubleshoot.html:24 +msgid "A transient error or timeout caused the external data source to be unavailable." +msgstr "Ett tillfälligt fel eller timeout orsakade att den externa datakällan inte var tillgänglig." + +#: bookwyrm/templates/import/troubleshoot.html:25 +msgid "BookWyrm has been updated since this import with a bug fix" +msgstr "BookWyrm har blivit uppdaterad sedan den här importen med en fel-lösning" + +#: bookwyrm/templates/import/troubleshoot.html:28 +msgid "Contact your admin or open an issue if you are seeing unexpected failed items." +msgstr "Kontakta din administratör eller öppna ett problem om du ser oväntade misslyckade objekt." + +#: bookwyrm/templates/landing/invite.html:4 +#: bookwyrm/templates/landing/invite.html:8 +#: bookwyrm/templates/landing/login.html:48 +msgid "Create an Account" +msgstr "Skapa ett konto" + +#: bookwyrm/templates/landing/invite.html:21 +msgid "Permission Denied" +msgstr "Åtkomst nekas" + +#: bookwyrm/templates/landing/invite.html:22 +msgid "Sorry! This invite code is no longer valid." +msgstr "Tyvärr! Den här inbjudningskoden är inte längre giltig." + +#: bookwyrm/templates/landing/landing.html:9 +msgid "Recent Books" +msgstr "Senaste böckerna" + +#: bookwyrm/templates/landing/layout.html:17 +msgid "Decentralized" +msgstr "Desentraliserad" + +#: bookwyrm/templates/landing/layout.html:23 +msgid "Friendly" +msgstr "Vänskaplig" + +#: bookwyrm/templates/landing/layout.html:29 +msgid "Anti-Corporate" +msgstr "Anti-företag" + +#: bookwyrm/templates/landing/layout.html:46 +#, python-format +msgid "Join %(name)s" +msgstr "Gå med i %(name)s" + +#: bookwyrm/templates/landing/layout.html:48 +msgid "Request an Invitation" +msgstr "Begär en inbjudning" + +#: bookwyrm/templates/landing/layout.html:50 +#, python-format +msgid "%(name)s registration is closed" +msgstr "%(name)s registrering är stängd" + +#: bookwyrm/templates/landing/layout.html:61 +msgid "Thank you! Your request has been received." +msgstr "Tack! Din förfrågning har tagits emot." + +#: bookwyrm/templates/landing/layout.html:82 +msgid "Your Account" +msgstr "Ditt konto" + +#: bookwyrm/templates/landing/login.html:4 +msgid "Login" +msgstr "Inloggning" + +#: bookwyrm/templates/landing/login.html:7 +#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:178 +#: bookwyrm/templates/ostatus/error.html:37 +msgid "Log in" +msgstr "Logga in" + +#: bookwyrm/templates/landing/login.html:15 +msgid "Success! Email address confirmed." +msgstr "Lyckades! E-postadressen bekräftades." + +#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:169 +#: bookwyrm/templates/ostatus/error.html:28 +#: bookwyrm/templates/snippets/register_form.html:4 +msgid "Username:" +msgstr "Användarnamn:" + +#: bookwyrm/templates/landing/login.html:27 +#: bookwyrm/templates/landing/password_reset.html:26 +#: bookwyrm/templates/layout.html:173 bookwyrm/templates/ostatus/error.html:32 +#: bookwyrm/templates/snippets/register_form.html:20 +msgid "Password:" +msgstr "Lösenord:" + +#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:175 +#: bookwyrm/templates/ostatus/error.html:34 +msgid "Forgot your password?" +msgstr "Glömt ditt lösenord?" + +#: bookwyrm/templates/landing/login.html:61 +msgid "More about this site" +msgstr "Mer om den här sidan" + +#: bookwyrm/templates/landing/password_reset.html:34 +#: bookwyrm/templates/preferences/change_password.html:18 +#: bookwyrm/templates/preferences/delete_user.html:20 +msgid "Confirm password:" +msgstr "Bekräfta lösenordet:" + +#: bookwyrm/templates/landing/password_reset_request.html:14 +msgid "A link to reset your password will be sent to your email address" +msgstr "En länk för att återställa ditt lösenord kommer att skickas till din e-postadress" + +#: bookwyrm/templates/landing/password_reset_request.html:28 +msgid "Reset password" +msgstr "Återställ lösenordet" + +#: bookwyrm/templates/layout.html:13 +#, python-format +msgid "%(site_name)s search" +msgstr "%(site_name)s sök" + +#: bookwyrm/templates/layout.html:45 +msgid "Search for a book, user, or list" +msgstr "Sök efter en bok, användare eller lista" + +#: bookwyrm/templates/layout.html:63 +msgid "Main navigation menu" +msgstr "Huvudsaklig navigeringsmeny" + +#: bookwyrm/templates/layout.html:71 +msgid "Feed" +msgstr "Flöde" + +#: bookwyrm/templates/layout.html:115 +msgid "Settings" +msgstr "Inställningar" + +#: bookwyrm/templates/layout.html:124 +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:15 +#: bookwyrm/templates/settings/invites/manage_invites.html:3 +#: bookwyrm/templates/settings/invites/manage_invites.html:15 +#: bookwyrm/templates/settings/layout.html:40 +msgid "Invites" +msgstr "Inbjudningar" + +#: bookwyrm/templates/layout.html:138 +msgid "Log out" +msgstr "Logga ut" + +#: bookwyrm/templates/layout.html:146 bookwyrm/templates/layout.html:147 +#: bookwyrm/templates/notifications/notifications_page.html:5 +#: bookwyrm/templates/notifications/notifications_page.html:10 +msgid "Notifications" +msgstr "Aviseringar" + +#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:33 +msgid "password" +msgstr "lösenord" + +#: bookwyrm/templates/layout.html:186 +msgid "Join" +msgstr "Gå med" + +#: bookwyrm/templates/layout.html:220 +msgid "Successfully posted status" +msgstr "Statusen har publicerats" + +#: bookwyrm/templates/layout.html:221 +msgid "Error posting status" +msgstr "Fel uppstod när statusen skulle publiceras" + +#: bookwyrm/templates/layout.html:237 +msgid "Documentation" +msgstr "Dokumentation" + +#: bookwyrm/templates/layout.html:244 +#, python-format +msgid "Support %(site_name)s on %(support_title)s" +msgstr "Stötta %(site_name)s på %(support_title)s" + +#: bookwyrm/templates/layout.html:248 +msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." +msgstr "BookWyrm's källkod är fritt tillgängligt. Du kan bidra eller rapportera problem på GitHub." + +#: bookwyrm/templates/lists/add_item_modal.html:8 +#, python-format +msgid "Add \"%(title)s\" to this list" +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 "Föreslå \"%(title)s\" för den här listan" + +#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/list.html:249 +msgid "Suggest" +msgstr "Föreslå" + +#: bookwyrm/templates/lists/bookmark_button.html:30 +msgid "Un-save" +msgstr "Ta bort sparning" + +#: bookwyrm/templates/lists/created_text.html:5 +#, python-format +msgid "Created by %(username)s and managed by %(groupname)s" +msgstr "Skapades av %(username)s och hanteras av %(groupname)s" + +#: bookwyrm/templates/lists/created_text.html:7 +#, python-format +msgid "Created and curated by %(username)s" +msgstr "Skapades och kurerades av %(username)s" + +#: bookwyrm/templates/lists/created_text.html:9 +#, python-format +msgid "Created by %(username)s" +msgstr "Skapades av %(username)s" + +#: bookwyrm/templates/lists/curate.html:12 +msgid "Curate" +msgstr "Kurera" + +#: bookwyrm/templates/lists/curate.html:21 +msgid "Pending Books" +msgstr "Böcker som väntar" + +#: bookwyrm/templates/lists/curate.html:24 +msgid "You're all set!" +msgstr "Nu är du klar!" + +#: bookwyrm/templates/lists/curate.html:45 +#: bookwyrm/templates/lists/list.html:83 +#, python-format +msgid "%(username)s says:" +msgstr "%(username)s säger:" + +#: bookwyrm/templates/lists/curate.html:55 +msgid "Suggested by" +msgstr "Föreslogs av" + +#: bookwyrm/templates/lists/curate.html:77 +msgid "Discard" +msgstr "Kassera" + +#: bookwyrm/templates/lists/delete_list_modal.html:4 +msgid "Delete this list?" +msgstr "Ta bort den här listan?" + +#: bookwyrm/templates/lists/edit_form.html:5 +#: bookwyrm/templates/lists/layout.html:17 +msgid "Edit List" +msgstr "Redigera lista" + +#: bookwyrm/templates/lists/embed-list.html:8 +#, python-format +msgid "%(list_name)s, a list by %(owner)s" +msgstr "%(list_name)s, en lista av %(owner)s" + +#: bookwyrm/templates/lists/embed-list.html:18 +#, python-format +msgid "on %(site_name)s" +msgstr "på %(site_name)s" + +#: bookwyrm/templates/lists/embed-list.html:27 +#: bookwyrm/templates/lists/list.html:44 +msgid "This list is currently empty" +msgstr "Den här listan är för närvarande tom" + +#: bookwyrm/templates/lists/form.html:19 +msgid "List curation:" +msgstr "Listans kurering:" + +#: bookwyrm/templates/lists/form.html:31 +msgid "Closed" +msgstr "Stängd" + +#: bookwyrm/templates/lists/form.html:34 +msgid "Only you can add and remove books to this list" +msgstr "Endast du kan lägga till och ta bort böcker till den här listan" + +#: bookwyrm/templates/lists/form.html:48 +msgid "Curated" +msgstr "Kurerad" + +#: bookwyrm/templates/lists/form.html:51 +msgid "Anyone can suggest books, subject to your approval" +msgstr "Vem som helst kan föreslå böcker, med förbehåll för ditt godkännande" + +#: bookwyrm/templates/lists/form.html:65 +msgctxt "curation type" +msgid "Open" +msgstr "Öppna" + +#: bookwyrm/templates/lists/form.html:68 +msgid "Anyone can add books to this list" +msgstr "Vem som helst kan lägga till böcker i den här listan" + +#: bookwyrm/templates/lists/form.html:82 +msgid "Group" +msgstr "Grupp" + +#: bookwyrm/templates/lists/form.html:85 +msgid "Group members can add to and remove from this list" +msgstr "Gruppmedlemmar kan lägga till och ta bort från den här listan" + +#: bookwyrm/templates/lists/form.html:90 +msgid "Select Group" +msgstr "Välj grupp" + +#: bookwyrm/templates/lists/form.html:94 +msgid "Select a group" +msgstr "Välj en grupp" + +#: bookwyrm/templates/lists/form.html:105 +msgid "You don't have any Groups yet!" +msgstr "Du har inga grupper än!" + +#: bookwyrm/templates/lists/form.html:107 +msgid "Create a Group" +msgstr "Skapa en grupp" + +#: bookwyrm/templates/lists/form.html:121 +msgid "Delete list" +msgstr "Ta bort lista" + +#: bookwyrm/templates/lists/item_notes_field.html:7 +#: bookwyrm/templates/settings/federation/edit_instance.html:74 +msgid "Notes:" +msgstr "Anteckningar:" + +#: bookwyrm/templates/lists/item_notes_field.html:19 +msgid "An optional note that will be displayed with the book." +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!" +msgstr "Du föreslog framgångsrikt en bok för den här listan!" + +#: bookwyrm/templates/lists/list.html:38 +msgid "You successfully added a book to this list!" +msgstr "Du lade framgångsrikt till en bok i här listan!" + +#: bookwyrm/templates/lists/list.html:96 +msgid "Edit notes" +msgstr "Redigera anteckningar" + +#: bookwyrm/templates/lists/list.html:111 +msgid "Add notes" +msgstr "Lägg till anteckningar" + +#: bookwyrm/templates/lists/list.html:123 +#, python-format +msgid "Added by %(username)s" +msgstr "Lades till av %(username)s" + +#: bookwyrm/templates/lists/list.html:138 +msgid "List position" +msgstr "Listans plats" + +#: bookwyrm/templates/lists/list.html:144 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 +msgid "Set" +msgstr "Ställ in" + +#: bookwyrm/templates/lists/list.html:159 +#: bookwyrm/templates/snippets/remove_from_group_button.html:20 +msgid "Remove" +msgstr "Ta bort" + +#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:190 +msgid "Sort List" +msgstr "Sortera lista" + +#: bookwyrm/templates/lists/list.html:183 +msgid "Direction" +msgstr "Riktning" + +#: bookwyrm/templates/lists/list.html:197 +msgid "Add Books" +msgstr "Lägg till böcker" + +#: bookwyrm/templates/lists/list.html:199 +msgid "Suggest Books" +msgstr "Föreslå böcker" + +#: bookwyrm/templates/lists/list.html:210 +msgid "search" +msgstr "sök" + +#: bookwyrm/templates/lists/list.html:216 +msgid "Clear search" +msgstr "Rensa sökning" + +#: bookwyrm/templates/lists/list.html:221 +#, python-format +msgid "No books found matching the query \"%(query)s\"" +msgstr "Inga böcker hittades som matchar frågan \"%(query)s\"" + +#: bookwyrm/templates/lists/list.html:260 +msgid "Embed this list on a website" +msgstr "Bädda in den här listan på en hemsida" + +#: bookwyrm/templates/lists/list.html:268 +msgid "Copy embed code" +msgstr "Kopiera inbäddad kod" + +#: 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, en lista av %(owner)s på %(site_name)s" + +#: bookwyrm/templates/lists/list_items.html:15 +msgid "Saved" +msgstr "Sparad" + +#: bookwyrm/templates/lists/lists.html:14 bookwyrm/templates/user/lists.html:9 +msgid "Your Lists" +msgstr "Dina listor" + +#: bookwyrm/templates/lists/lists.html:36 +msgid "All Lists" +msgstr "Alla listor" + +#: bookwyrm/templates/lists/lists.html:40 +msgid "Saved Lists" +msgstr "Sparade listor" + +#: bookwyrm/templates/notifications/items/accept.html:16 +#, python-format +msgid "accepted your invitation to join group \"%(group_name)s\"" +msgstr "accepterade din inbjudning att gå med i gruppen \"%(group_name)s\"" + +#: bookwyrm/templates/notifications/items/add.html:24 +#, python-format +msgid "added %(book_title)s to your list \"%(list_name)s\"" +msgstr "lade till %(book_title)s till din lista \"%(list_name)s\"" + +#: bookwyrm/templates/notifications/items/add.html:31 +#, python-format +msgid "suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgstr "föreslog att du skulle lägga till %(book_title)s till din lista \"%(list_name)s\"" + +#: bookwyrm/templates/notifications/items/boost.html:19 +#, python-format +msgid "boosted your review of %(book_title)s" +msgstr "ökade din recension av %(book_title)s" + +#: bookwyrm/templates/notifications/items/boost.html:25 +#, python-format +msgid "boosted your comment on%(book_title)s" +msgstr "ökade din kommentar på%(book_title)s" + +#: bookwyrm/templates/notifications/items/boost.html:31 +#, python-format +msgid "boosted your quote from %(book_title)s" +msgstr "ökade ditt citat på%(book_title)s" + +#: bookwyrm/templates/notifications/items/boost.html:37 +#, python-format +msgid "boosted your status" +msgstr "ökade din status" + +#: bookwyrm/templates/notifications/items/fav.html:19 +#, python-format +msgid "liked your review of %(book_title)s" +msgstr "gillade din recension av %(book_title)s" + +#: bookwyrm/templates/notifications/items/fav.html:25 +#, python-format +msgid "liked your comment on %(book_title)s" +msgstr "gillade din kommentar av %(book_title)s" + +#: bookwyrm/templates/notifications/items/fav.html:31 +#, python-format +msgid "liked your quote from %(book_title)s" +msgstr "gillade ditt citat från %(book_title)s" + +#: bookwyrm/templates/notifications/items/fav.html:37 +#, python-format +msgid "liked your status" +msgstr "gillade din status" + +#: bookwyrm/templates/notifications/items/follow.html:15 +msgid "followed you" +msgstr "följde dig" + +#: bookwyrm/templates/notifications/items/follow_request.html:11 +msgid "sent you a follow request" +msgstr "skickade en förfrågning om att följa till dig" + +#: bookwyrm/templates/notifications/items/import.html:14 +#, python-format +msgid "Your import completed." +msgstr "Din import slutfördes." + +#: bookwyrm/templates/notifications/items/invite.html:15 +#, python-format +msgid "invited you to join the group \"%(group_name)s\"" +msgstr "bjöd in dig att gå med i gruppen \"%(group_name)s\"" + +#: bookwyrm/templates/notifications/items/join.html:16 +#, python-format +msgid "has joined your group \"%(group_name)s\"" +msgstr "har anslutit sig till din grupp \"%(group_name)s\"" + +#: bookwyrm/templates/notifications/items/leave.html:16 +#, python-format +msgid "has left your group \"%(group_name)s\"" +msgstr "har lämnat din grupp \"%(group_name)s\"" + +#: bookwyrm/templates/notifications/items/mention.html:20 +#, python-format +msgid "mentioned you in a review of %(book_title)s" +msgstr "nämnde dig i en recension av %(book_title)s" + +#: bookwyrm/templates/notifications/items/mention.html:26 +#, python-format +msgid "mentioned you in a comment on %(book_title)s" +msgstr "nämnde dig i en kommentar på %(book_title)s" + +#: bookwyrm/templates/notifications/items/mention.html:32 +#, python-format +msgid "mentioned you in a quote from %(book_title)s" +msgstr "nämnde dig i ett citat från %(book_title)s" + +#: bookwyrm/templates/notifications/items/mention.html:38 +#, python-format +msgid "mentioned you in a status" +msgstr "nämnde dig i en status" + +#: bookwyrm/templates/notifications/items/remove.html:17 +#, python-format +msgid "has been removed from your group \"%(group_name)s\"" +msgstr "har tagits bort från din grupp \"%(group_name)s\"" + +#: bookwyrm/templates/notifications/items/remove.html:23 +#, python-format +msgid "You have been removed from the \"%(group_name)s\" group" +msgstr "Du har tagits bort från gruppen \"%(group_name)s\"" + +#: bookwyrm/templates/notifications/items/reply.html:21 +#, python-format +msgid "replied to your review of %(book_title)s" +msgstr "svarade på din recension av %(book_title)s" + +#: bookwyrm/templates/notifications/items/reply.html:27 +#, python-format +msgid "replied to your comment on %(book_title)s" +msgstr "svarade på din kommentar av %(book_title)s" + +#: bookwyrm/templates/notifications/items/reply.html:33 +#, python-format +msgid "replied to your quote from %(book_title)s" +msgstr "svarade på ditt citat av %(book_title)s" + +#: bookwyrm/templates/notifications/items/reply.html:39 +#, python-format +msgid "replied to your status" +msgstr "svarade på din status" + +#: bookwyrm/templates/notifications/items/report.html:15 +#, python-format +msgid "A new report needs moderation." +msgstr "En ny rapport behöver moderering." + +#: bookwyrm/templates/notifications/items/update.html:16 +#, python-format +msgid "has changed the privacy level for %(group_name)s" +msgstr "har ändrat integritetsnivån för %(group_name)s" + +#: bookwyrm/templates/notifications/items/update.html:20 +#, python-format +msgid "has changed the name of %(group_name)s" +msgstr "har ändrat namnet på %(group_name)s" + +#: bookwyrm/templates/notifications/items/update.html:24 +#, python-format +msgid "has changed the description of %(group_name)s" +msgstr "har ändrat beskrivningen på %(group_name)s" + +#: bookwyrm/templates/notifications/notifications_page.html:18 +msgid "Delete notifications" +msgstr "Ta bort aviseringar" + +#: bookwyrm/templates/notifications/notifications_page.html:29 +msgid "All" +msgstr "Alla" + +#: bookwyrm/templates/notifications/notifications_page.html:33 +msgid "Mentions" +msgstr "Omnämningar" + +#: bookwyrm/templates/notifications/notifications_page.html:45 +msgid "You're all caught up!" +msgstr "Du har hunnit ikapp!" + +#: bookwyrm/templates/ostatus/error.html:7 +#, python-format +msgid "%(account)s is not a valid username" +msgstr "%(account)s är inte ett giltigt användarnamn" + +#: bookwyrm/templates/ostatus/error.html:8 +#: bookwyrm/templates/ostatus/error.html:13 +msgid "Check you have the correct username before trying again" +msgstr "Kontrollera att du har det korrekta användarnamnet innan du försöker igen" + +#: bookwyrm/templates/ostatus/error.html:12 +#, python-format +msgid "%(account)s could not be found or %(remote_domain)s does not support identity discovery" +msgstr "%(account)s kunde inte hittas eller %(remote_domain)s stöder inte identitetsupptäckt" + +#: bookwyrm/templates/ostatus/error.html:17 +#, python-format +msgid "%(account)s was found but %(remote_domain)s does not support 'remote follow'" +msgstr "%(account)s hittades, men %(remote_domain)s stöder inte \"remote follow\"" + +#: bookwyrm/templates/ostatus/error.html:18 +#, python-format +msgid "Try searching for %(user)s on %(remote_domain)s instead" +msgstr "Prova att söka efter %(user)s%(remote_domain)s istället" + +#: bookwyrm/templates/ostatus/error.html:46 +#, python-format +msgid "Something went wrong trying to follow %(account)s" +msgstr "Något gick fel när jag försökte följa %(account)s" + +#: bookwyrm/templates/ostatus/error.html:47 +msgid "Check you have the correct username before trying again." +msgstr "Kontrollera att du har det korrekta användarnamnet innan du försöker igen." + +#: bookwyrm/templates/ostatus/error.html:51 +#, python-format +msgid "You have blocked %(account)s" +msgstr "Du har blockerat %(account)s" + +#: bookwyrm/templates/ostatus/error.html:55 +#, python-format +msgid "%(account)s has blocked you" +msgstr "%(account)s har blockerat dig" + +#: bookwyrm/templates/ostatus/error.html:59 +#, python-format +msgid "You are already following %(account)s" +msgstr "Du följer redan %(account)s" + +#: bookwyrm/templates/ostatus/error.html:63 +#, python-format +msgid "You have already requested to follow %(account)s" +msgstr "Du har redan begärt att följa %(account)s" + +#: bookwyrm/templates/ostatus/remote_follow.html:6 +#, python-format +msgid "Follow %(username)s on the fediverse" +msgstr "Följ %(username)s på fediversen" + +#: bookwyrm/templates/ostatus/remote_follow.html:33 +#, python-format +msgid "Follow %(username)s from another Fediverse account like BookWyrm, Mastodon, or Pleroma." +msgstr "Följ %(username)s från ett annat Fediverse-konto så som BookWyrm, Mastodon eller Pleroma." + +#: bookwyrm/templates/ostatus/remote_follow.html:40 +msgid "User handle to follow from:" +msgstr "Användarnamn att följa från:" + +#: bookwyrm/templates/ostatus/remote_follow.html:42 +msgid "Follow!" +msgstr "Följ!" + +#: bookwyrm/templates/ostatus/remote_follow_button.html:8 +msgid "Follow on Fediverse" +msgstr "Följ på Fediverse" + +#: bookwyrm/templates/ostatus/remote_follow_button.html:12 +msgid "This link opens in a pop-up window" +msgstr "Den här länken öppnas i ett popup-fönster" + +#: bookwyrm/templates/ostatus/subscribe.html:8 +#, python-format +msgid "Log in to %(sitename)s" +msgstr "Logga in på %(sitename)s" + +#: bookwyrm/templates/ostatus/subscribe.html:10 +#, python-format +msgid "Error following from %(sitename)s" +msgstr "Fel uppstod vid följning från %(sitename)s" + +#: bookwyrm/templates/ostatus/subscribe.html:12 +#: bookwyrm/templates/ostatus/subscribe.html:22 +#, python-format +msgid "Follow from %(sitename)s" +msgstr "Följ från %(sitename)s" + +#: bookwyrm/templates/ostatus/subscribe.html:18 +msgid "Uh oh..." +msgstr "Oj då..." + +#: bookwyrm/templates/ostatus/subscribe.html:20 +msgid "Let's log in first..." +msgstr "Låt oss logga in först..." + +#: bookwyrm/templates/ostatus/subscribe.html:51 +#, python-format +msgid "Follow %(username)s" +msgstr "Följ %(username)s" + +#: bookwyrm/templates/ostatus/success.html:28 +#, python-format +msgid "You are now following %(display_name)s!" +msgstr "Du följer nu %(display_name)s!" + +#: bookwyrm/templates/preferences/blocks.html:4 +#: bookwyrm/templates/preferences/blocks.html:7 +#: bookwyrm/templates/preferences/layout.html:31 +msgid "Blocked Users" +msgstr "Blockerade användare" + +#: bookwyrm/templates/preferences/blocks.html:12 +msgid "No users currently blocked." +msgstr "Inga användare är för närvarande blockerade." + +#: bookwyrm/templates/preferences/change_password.html:4 +#: bookwyrm/templates/preferences/change_password.html:7 +#: bookwyrm/templates/preferences/change_password.html:21 +#: bookwyrm/templates/preferences/layout.html:20 +msgid "Change Password" +msgstr "Ändra lösenord" + +#: bookwyrm/templates/preferences/change_password.html:14 +msgid "New password:" +msgstr "Nytt lösenord:" + +#: bookwyrm/templates/preferences/delete_user.html:4 +#: bookwyrm/templates/preferences/delete_user.html:7 +#: bookwyrm/templates/preferences/delete_user.html:25 +#: bookwyrm/templates/preferences/layout.html:24 +#: bookwyrm/templates/settings/users/delete_user_form.html:22 +msgid "Delete Account" +msgstr "Ta bort kontot" + +#: bookwyrm/templates/preferences/delete_user.html:12 +msgid "Permanently delete account" +msgstr "Ta bort kontot permanent" + +#: bookwyrm/templates/preferences/delete_user.html:14 +msgid "Deleting your account cannot be undone. The username will not be available to register in the future." +msgstr "Borttagning av ditt konto kan inte ångras. Användarnamnet kommer inte att vara tillgängligt att registrera i framtiden." + +#: bookwyrm/templates/preferences/edit_user.html:4 +#: bookwyrm/templates/preferences/edit_user.html:7 +#: bookwyrm/templates/preferences/layout.html:15 +msgid "Edit Profile" +msgstr "Redigera profil" + +#: bookwyrm/templates/preferences/edit_user.html:12 +#: bookwyrm/templates/preferences/edit_user.html:25 +#: bookwyrm/templates/settings/users/user_info.html:7 +msgid "Profile" +msgstr "Profil" + +#: bookwyrm/templates/preferences/edit_user.html:13 +#: bookwyrm/templates/preferences/edit_user.html:64 +msgid "Display preferences" +msgstr "Visa egenskaper" + +#: bookwyrm/templates/preferences/edit_user.html:14 +#: bookwyrm/templates/preferences/edit_user.html:106 +msgid "Privacy" +msgstr "Integritet" + +#: bookwyrm/templates/preferences/edit_user.html:69 +msgid "Show reading goal prompt in feed" +msgstr "Visa uppmaning om läsmål i flödet" + +#: bookwyrm/templates/preferences/edit_user.html:75 +msgid "Show suggested users" +msgstr "Visa föreslagna användare" + +#: bookwyrm/templates/preferences/edit_user.html:81 +msgid "Show this account in suggested users" +msgstr "Visa det här kontot i föreslagna användare" + +#: bookwyrm/templates/preferences/edit_user.html:85 +#, python-format +msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users." +msgstr "Ditt konto kommer att dyka upp i mappen och kan komma att rekommenderas till andra BookWyrm-användare." + +#: bookwyrm/templates/preferences/edit_user.html:89 +msgid "Preferred Timezone: " +msgstr "Föredragen tidszon: " + +#: bookwyrm/templates/preferences/edit_user.html:111 +msgid "Manually approve followers" +msgstr "Godkänn följare manuellt" + +#: bookwyrm/templates/preferences/edit_user.html:116 +msgid "Default post privacy:" +msgstr "Standardsekretess för inlägg:" + +#: bookwyrm/templates/preferences/layout.html:11 +msgid "Account" +msgstr "Konto" + +#: bookwyrm/templates/preferences/layout.html:27 +msgid "Relationships" +msgstr "Förhållanden" + +#: bookwyrm/templates/reading_progress/finish.html:5 +#, python-format +msgid "Finish \"%(book_title)s\"" +msgstr "Avsluta \"%(book_title)s\"" + +#: bookwyrm/templates/reading_progress/start.html:5 +#, python-format +msgid "Start \"%(book_title)s\"" +msgstr "Påbörja \"%(book_title)s\"" + +#: bookwyrm/templates/reading_progress/want.html:5 +#, python-format +msgid "Want to Read \"%(book_title)s\"" +msgstr "Vill läsa \"%(book_title)s\"" + +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:4 +msgid "Delete these read dates?" +msgstr "Ta bort de här läs-datumen?" + +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:8 +#, python-format +msgid "You are deleting this readthrough and its %(count)s associated progress updates." +msgstr "Du tar bort den här genomläsningen och dess %(count)s associerade förloppsuppdateringar." + +#: bookwyrm/templates/readthrough/readthrough.html:6 +#: bookwyrm/templates/readthrough/readthrough_modal.html:8 +#, python-format +msgid "Update read dates for \"%(title)s\"" +msgstr "Uppdatera läsdatum för \"%(title)s\"" + +#: bookwyrm/templates/readthrough/readthrough_form.html:10 +#: bookwyrm/templates/readthrough/readthrough_modal.html:31 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 +#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 +msgid "Started reading" +msgstr "Började läsa" + +#: bookwyrm/templates/readthrough/readthrough_form.html:18 +#: bookwyrm/templates/readthrough/readthrough_modal.html:49 +msgid "Progress" +msgstr "Förlopp" + +#: bookwyrm/templates/readthrough/readthrough_form.html:24 +#: bookwyrm/templates/readthrough/readthrough_modal.html:56 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 +msgid "Finished reading" +msgstr "Slutade läsa" + +#: bookwyrm/templates/readthrough/readthrough_list.html:9 +msgid "Progress Updates:" +msgstr "Förloppsuppdateringar:" + +#: bookwyrm/templates/readthrough/readthrough_list.html:14 +msgid "finished" +msgstr "avslutad" + +#: bookwyrm/templates/readthrough/readthrough_list.html:25 +msgid "Show all updates" +msgstr "Visa alla uppdateringar" + +#: bookwyrm/templates/readthrough/readthrough_list.html:41 +msgid "Delete this progress update" +msgstr "Ta bort den här förloppsuppdateringen" + +#: bookwyrm/templates/readthrough/readthrough_list.html:53 +msgid "started" +msgstr "påbörjades" + +#: bookwyrm/templates/readthrough/readthrough_list.html:60 +msgid "Edit read dates" +msgstr "Redigera läsdatum" + +#: bookwyrm/templates/readthrough/readthrough_list.html:68 +msgid "Delete these read dates" +msgstr "Ta bort de här läsdatumen" + +#: bookwyrm/templates/readthrough/readthrough_modal.html:12 +#, python-format +msgid "Add read dates for \"%(title)s\"" +msgstr "Lägg till läs-datum för \"%(title)s\"" + +#: bookwyrm/templates/report.html:5 +#: bookwyrm/templates/snippets/report_button.html:13 +msgid "Report" +msgstr "Rapport" + +#: bookwyrm/templates/search/book.html:44 +msgid "Results from" +msgstr "Resultat från" + +#: bookwyrm/templates/search/book.html:80 +msgid "Import book" +msgstr "Importera bok" + +#: bookwyrm/templates/search/book.html:106 +msgid "Load results from other catalogues" +msgstr "Ladda resultat från andra kataloger" + +#: bookwyrm/templates/search/book.html:110 +msgid "Manually add book" +msgstr "Lägg till bok manuellt" + +#: bookwyrm/templates/search/book.html:115 +msgid "Log in to import or add books." +msgstr "Logga in för att importera eller lägga till böcker." + +#: bookwyrm/templates/search/layout.html:16 +msgid "Search query" +msgstr "Sökfråga" + +#: bookwyrm/templates/search/layout.html:19 +msgid "Search type" +msgstr "Typ av sökning" + +#: bookwyrm/templates/search/layout.html:23 +#: bookwyrm/templates/search/layout.html:46 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:27 +#: bookwyrm/templates/settings/federation/instance_list.html:44 +#: bookwyrm/templates/settings/layout.html:34 +#: bookwyrm/templates/settings/users/user_admin.html:3 +#: bookwyrm/templates/settings/users/user_admin.html:10 +msgid "Users" +msgstr "Användare" + +#: bookwyrm/templates/search/layout.html:58 +#, python-format +msgid "No results found for \"%(query)s\"" +msgstr "Inga resultat hittades för \"%(query)s\"" + +#: bookwyrm/templates/settings/announcements/announcement.html:3 +#: bookwyrm/templates/settings/announcements/announcement.html:6 +msgid "Announcement" +msgstr "Tillkännagivande" + +#: bookwyrm/templates/settings/announcements/announcement.html:7 +#: bookwyrm/templates/settings/federation/instance.html:13 +msgid "Back to list" +msgstr "Tillbaka till listan" + +#: bookwyrm/templates/settings/announcements/announcement.html:11 +#: bookwyrm/templates/settings/announcements/announcement_form.html:6 +msgid "Edit Announcement" +msgstr "Redigera tillkännagivandet" + +#: bookwyrm/templates/settings/announcements/announcement.html:34 +msgid "Visible:" +msgstr "Synlig:" + +#: bookwyrm/templates/settings/announcements/announcement.html:38 +msgid "True" +msgstr "Sant" + +#: bookwyrm/templates/settings/announcements/announcement.html:40 +msgid "False" +msgstr "Falskt" + +#: bookwyrm/templates/settings/announcements/announcement.html:46 +#: bookwyrm/templates/settings/announcements/announcement_form.html:44 +#: bookwyrm/templates/settings/dashboard/dashboard.html:82 +msgid "Start date:" +msgstr "Startdatum:" + +#: bookwyrm/templates/settings/announcements/announcement.html:51 +#: bookwyrm/templates/settings/announcements/announcement_form.html:54 +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +msgid "End date:" +msgstr "Slutdatum:" + +#: bookwyrm/templates/settings/announcements/announcement.html:55 +#: bookwyrm/templates/settings/announcements/announcement_form.html:64 +msgid "Active:" +msgstr "Aktiva:" + +#: bookwyrm/templates/settings/announcements/announcement_form.html:8 +#: bookwyrm/templates/settings/announcements/announcements.html:8 +msgid "Create Announcement" +msgstr "Skapa ett tillkännagivande" + +#: bookwyrm/templates/settings/announcements/announcement_form.html:17 +msgid "Preview:" +msgstr "Förhandsgranska:" + +#: bookwyrm/templates/settings/announcements/announcement_form.html:25 +msgid "Content:" +msgstr "Innehåll:" + +#: bookwyrm/templates/settings/announcements/announcement_form.html:33 +msgid "Event date:" +msgstr "Datum för evenemang:" + +#: bookwyrm/templates/settings/announcements/announcements.html:3 +#: bookwyrm/templates/settings/announcements/announcements.html:5 +#: bookwyrm/templates/settings/layout.html:76 +msgid "Announcements" +msgstr "Tillkännagivanden" + +#: bookwyrm/templates/settings/announcements/announcements.html:22 +#: bookwyrm/templates/settings/federation/instance_list.html:36 +msgid "Date added" +msgstr "Datumet lades till" + +#: bookwyrm/templates/settings/announcements/announcements.html:26 +msgid "Preview" +msgstr "Förhandsgranska" + +#: bookwyrm/templates/settings/announcements/announcements.html:30 +msgid "Start date" +msgstr "Startdatum" + +#: bookwyrm/templates/settings/announcements/announcements.html:34 +msgid "End date" +msgstr "Slutdatum" + +#: bookwyrm/templates/settings/announcements/announcements.html:48 +msgid "active" +msgstr "aktiv" + +#: bookwyrm/templates/settings/announcements/announcements.html:48 +msgid "inactive" +msgstr "inaktiv" + +#: bookwyrm/templates/settings/announcements/announcements.html:52 +msgid "No announcements found" +msgstr "Inga tillkännagivanden hittades" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:6 +#: bookwyrm/templates/settings/dashboard/dashboard.html:8 +#: bookwyrm/templates/settings/layout.html:26 +msgid "Dashboard" +msgstr "Översiktspanel" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:15 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +msgid "Total users" +msgstr "Totalt antal användare" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:21 +#: bookwyrm/templates/settings/dashboard/user_chart.html:16 +msgid "Active this month" +msgstr "Aktiva den här månaden" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:27 +msgid "Statuses" +msgstr "Statusar" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:33 +#: bookwyrm/templates/settings/dashboard/works_chart.html:11 +msgid "Works" +msgstr "Verk" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:43 +#, python-format +msgid "%(display_count)s open report" +msgid_plural "%(display_count)s open reports" +msgstr[0] "%(display_count)s öppen rapport" +msgstr[1] "%(display_count)s öppna rapporter" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#, python-format +msgid "%(display_count)s domain needs review" +msgid_plural "%(display_count)s domains need review" +msgstr[0] "%(display_count)s domänen behöver granskning" +msgstr[1] "%(display_count)s domänerna behöver granskning" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#, python-format +msgid "%(display_count)s invite request" +msgid_plural "%(display_count)s invite requests" +msgstr[0] "%(display_count)s inbjudningsförfrågning" +msgstr[1] "%(display_count)s inbjudningsförfrågningar" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:76 +msgid "Instance Activity" +msgstr "Instansaktivitet" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +msgid "Interval:" +msgstr "Intervall:" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:98 +msgid "Days" +msgstr "Dagar" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 +msgid "Weeks" +msgstr "Veckor" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 +msgid "User signup activity" +msgstr "Användarens registreringsaktivitet" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +msgid "Status activity" +msgstr "Statusaktivitet" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +msgid "Works created" +msgstr "Skapade verk" + +#: bookwyrm/templates/settings/dashboard/registration_chart.html:10 +msgid "Registrations" +msgstr "Registreringar" + +#: bookwyrm/templates/settings/dashboard/status_chart.html:11 +msgid "Statuses posted" +msgstr "Utlagda statusar" + +#: bookwyrm/templates/settings/dashboard/user_chart.html:11 +msgid "Total" +msgstr "Totalt" + +#: bookwyrm/templates/settings/email_blocklist/domain_form.html:5 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:10 +msgid "Add domain" +msgstr "Lägg till domän" + +#: bookwyrm/templates/settings/email_blocklist/domain_form.html:11 +msgid "Domain:" +msgstr "Domän:" + +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:5 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:7 +#: bookwyrm/templates/settings/layout.html:59 +msgid "Email Blocklist" +msgstr "Blocklista för e-post" + +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:18 +msgid "When someone tries to register with an email from this domain, no account will be created. The registration process will appear to have worked." +msgstr "När någon försöker registrera sig med en e-post från den här domänen så kommer inget konto att skapas. Det kommer att se ut som om registreringsprocessen har lyckats." + +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:29 +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:27 +msgid "Options" +msgstr "Alternativ" + +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:38 +#, python-format +msgid "%(display_count)s user" +msgid_plural "%(display_count)s users" +msgstr[0] "%(display_count)s användare" +msgstr[1] "%(display_count)s användare" + +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:59 +msgid "No email domains currently blocked" +msgstr "Inga e-postdomäner är för närvarande blockerade" + +#: bookwyrm/templates/settings/federation/edit_instance.html:3 +#: bookwyrm/templates/settings/federation/edit_instance.html:6 +#: bookwyrm/templates/settings/federation/edit_instance.html:20 +#: bookwyrm/templates/settings/federation/instance_blocklist.html:3 +#: bookwyrm/templates/settings/federation/instance_blocklist.html:20 +#: bookwyrm/templates/settings/federation/instance_list.html:9 +#: bookwyrm/templates/settings/federation/instance_list.html:10 +msgid "Add instance" +msgstr "Lägg till instans" + +#: bookwyrm/templates/settings/federation/edit_instance.html:7 +#: bookwyrm/templates/settings/federation/instance_blocklist.html:7 +msgid "Back to instance list" +msgstr "Bakåt till instans-lista" + +#: bookwyrm/templates/settings/federation/edit_instance.html:16 +#: bookwyrm/templates/settings/federation/instance_blocklist.html:16 +msgid "Import block list" +msgstr "Importera blockeringslista" + +#: bookwyrm/templates/settings/federation/edit_instance.html:31 +msgid "Instance:" +msgstr "Instans:" + +#: bookwyrm/templates/settings/federation/edit_instance.html:40 +#: bookwyrm/templates/settings/federation/instance.html:28 +#: bookwyrm/templates/settings/users/user_info.html:106 +msgid "Status:" +msgstr "Status:" + +#: bookwyrm/templates/settings/federation/edit_instance.html:54 +#: bookwyrm/templates/settings/federation/instance.html:22 +#: bookwyrm/templates/settings/users/user_info.html:100 +msgid "Software:" +msgstr "Programvara:" + +#: bookwyrm/templates/settings/federation/edit_instance.html:64 +#: bookwyrm/templates/settings/federation/instance.html:25 +#: bookwyrm/templates/settings/users/user_info.html:103 +msgid "Version:" +msgstr "Version:" + +#: bookwyrm/templates/settings/federation/instance.html:19 +msgid "Details" +msgstr "Detaljer" + +#: bookwyrm/templates/settings/federation/instance.html:35 +#: bookwyrm/templates/user/layout.html:67 +msgid "Activity" +msgstr "Aktivitet" + +#: bookwyrm/templates/settings/federation/instance.html:38 +msgid "Users:" +msgstr "Användare:" + +#: bookwyrm/templates/settings/federation/instance.html:41 +#: bookwyrm/templates/settings/federation/instance.html:47 +msgid "View all" +msgstr "Visa alla" + +#: bookwyrm/templates/settings/federation/instance.html:44 +#: bookwyrm/templates/settings/users/user_info.html:56 +msgid "Reports:" +msgstr "Rapporter:" + +#: bookwyrm/templates/settings/federation/instance.html:50 +msgid "Followed by us:" +msgstr "Följs av oss:" + +#: bookwyrm/templates/settings/federation/instance.html:55 +msgid "Followed by them:" +msgstr "Följs av dem:" + +#: bookwyrm/templates/settings/federation/instance.html:60 +msgid "Blocked by us:" +msgstr "Blockerade av oss:" + +#: bookwyrm/templates/settings/federation/instance.html:72 +#: bookwyrm/templates/settings/users/user_info.html:110 +msgid "Notes" +msgstr "Anteckningar" + +#: bookwyrm/templates/settings/federation/instance.html:75 +#: bookwyrm/templates/snippets/status/status_options.html:25 +msgid "Edit" +msgstr "Redigera" + +#: bookwyrm/templates/settings/federation/instance.html:79 +msgid "No notes" +msgstr "Inga anteckningar" + +#: bookwyrm/templates/settings/federation/instance.html:98 +#: bookwyrm/templates/settings/link_domains/link_domains.html:87 +#: bookwyrm/templates/snippets/block_button.html:5 +msgid "Block" +msgstr "Blockera" + +#: bookwyrm/templates/settings/federation/instance.html:99 +msgid "All users from this instance will be deactivated." +msgstr "Alla användare från den här instansen kommer att bli inaktiverade." + +#: bookwyrm/templates/settings/federation/instance.html:104 +#: bookwyrm/templates/snippets/block_button.html:10 +msgid "Un-block" +msgstr "Avblockera" + +#: bookwyrm/templates/settings/federation/instance.html:105 +msgid "All users from this instance will be re-activated." +msgstr "Alla användare från den här instansen kommer att återaktiveras." + +#: bookwyrm/templates/settings/federation/instance_blocklist.html:6 +msgid "Import Blocklist" +msgstr "Importera blockeringslista" + +#: bookwyrm/templates/settings/federation/instance_blocklist.html:26 +#: bookwyrm/templates/snippets/goal_progress.html:7 +msgid "Success!" +msgstr "Lyckades!" + +#: bookwyrm/templates/settings/federation/instance_blocklist.html:30 +msgid "Successfully blocked:" +msgstr "Blockerades framgångsrikt:" + +#: bookwyrm/templates/settings/federation/instance_blocklist.html:32 +msgid "Failed:" +msgstr "Misslyckades:" + +#: bookwyrm/templates/settings/federation/instance_list.html:3 +#: bookwyrm/templates/settings/federation/instance_list.html:5 +#: bookwyrm/templates/settings/layout.html:45 +msgid "Federated Instances" +msgstr "Federerade instanser" + +#: bookwyrm/templates/settings/federation/instance_list.html:32 +#: bookwyrm/templates/settings/users/server_filter.html:5 +msgid "Instance name" +msgstr "Namn på instans" + +#: bookwyrm/templates/settings/federation/instance_list.html:40 +msgid "Software" +msgstr "Mjukvara" + +#: bookwyrm/templates/settings/federation/instance_list.html:63 +msgid "No instances found" +msgstr "Inga instanser hittades" + +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:4 +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:11 +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:25 +#: bookwyrm/templates/settings/invites/manage_invites.html:11 +msgid "Invite Requests" +msgstr "Inbjudningsförfrågningar" + +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:23 +msgid "Ignored Invite Requests" +msgstr "Ignorerade inbjudningsförfrågningar" + +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:35 +msgid "Date requested" +msgstr "Datum för förfrågningen" + +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:39 +msgid "Date accepted" +msgstr "Datum för godkännande" + +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:42 +msgid "Email" +msgstr "E-postadress" + +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:47 +msgid "Action" +msgstr "Åtgärd" + +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:50 +msgid "No requests" +msgstr "Inga förfrågningar" + +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:59 +#: bookwyrm/templates/settings/invites/status_filter.html:16 +msgid "Accepted" +msgstr "Accepterade" + +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:61 +#: bookwyrm/templates/settings/invites/status_filter.html:12 +msgid "Sent" +msgstr "Skickade" + +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:63 +#: bookwyrm/templates/settings/invites/status_filter.html:8 +msgid "Requested" +msgstr "Förfrågade" + +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:73 +msgid "Send invite" +msgstr "Skicka inbjudning" + +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:75 +msgid "Re-send invite" +msgstr "Skicka inbjudningen igen" + +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:95 +msgid "Ignore" +msgstr "Ignorera" + +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:97 +msgid "Un-ignore" +msgstr "Sluta ignorera" + +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:108 +msgid "Back to pending requests" +msgstr "Bakåt till väntande förfrågningar" + +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:110 +msgid "View ignored requests" +msgstr "Visa ignorerade förfrågningar" + +#: bookwyrm/templates/settings/invites/manage_invites.html:21 +msgid "Generate New Invite" +msgstr "Generera ny inbjudning" + +#: bookwyrm/templates/settings/invites/manage_invites.html:27 +msgid "Expiry:" +msgstr "Utgått:" + +#: bookwyrm/templates/settings/invites/manage_invites.html:33 +msgid "Use limit:" +msgstr "Gräns för användning:" + +#: bookwyrm/templates/settings/invites/manage_invites.html:40 +msgid "Create Invite" +msgstr "Skapa inbjudning" + +#: bookwyrm/templates/settings/invites/manage_invites.html:47 +msgid "Link" +msgstr "Länk" + +#: bookwyrm/templates/settings/invites/manage_invites.html:48 +msgid "Expires" +msgstr "Slutar gälla" + +#: bookwyrm/templates/settings/invites/manage_invites.html:49 +msgid "Max uses" +msgstr "Maximal användning" + +#: bookwyrm/templates/settings/invites/manage_invites.html:50 +msgid "Times used" +msgstr "Gånger använt" + +#: bookwyrm/templates/settings/invites/manage_invites.html:53 +msgid "No active invites" +msgstr "Inga aktiva inbjudningar" + +#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:5 +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:10 +msgid "Add IP address" +msgstr "Lägg till IP-adress" + +#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:11 +msgid "Use IP address blocks with caution, and consider using blocks only temporarily, as IP addresses are often shared or change hands. If you block your own IP, you will not be able to access this page." +msgstr "Använd blockering av IP-adress med försiktighet och överväg att endast använda blockeringar tillfälligt eftersom att IP-adresser ofta delas eller byter händer. Om du blockerar din egen IP så kommer du inte att kunna komma åt den här sidan." + +#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:18 +msgid "IP Address:" +msgstr "IP-adress:" + +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:5 +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:7 +#: bookwyrm/templates/settings/layout.html:63 +msgid "IP Address Blocklist" +msgstr "Blockeringslista för IP-adress" + +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:18 +msgid "Any traffic from this IP address will get a 404 response when trying to access any part of the application." +msgstr "All trafik från den här IP-adressen kommer att få ett 404-svar när du försöker komma åt någon del av programmet." + +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:24 +msgid "Address" +msgstr "Adress" + +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:46 +msgid "No IP addresses currently blocked" +msgstr "Inga IP-adresser är för närvarande blockerade" + +#: bookwyrm/templates/settings/ip_blocklist/ip_tooltip.html:6 +msgid "You can block IP ranges using CIDR syntax." +msgstr "Du kan blockera IP-intervall med hjälp av CIDR-syntax." + +#: bookwyrm/templates/settings/layout.html:4 +msgid "Administration" +msgstr "Administrering" + +#: bookwyrm/templates/settings/layout.html:29 +msgid "Manage Users" +msgstr "Hantera användare" + +#: bookwyrm/templates/settings/layout.html:51 +msgid "Moderation" +msgstr "Moderering" + +#: bookwyrm/templates/settings/layout.html:55 +#: bookwyrm/templates/settings/reports/reports.html:8 +#: bookwyrm/templates/settings/reports/reports.html:17 +msgid "Reports" +msgstr "Rapporter" + +#: bookwyrm/templates/settings/layout.html:67 +#: bookwyrm/templates/settings/link_domains/link_domains.html:5 +#: bookwyrm/templates/settings/link_domains/link_domains.html:7 +msgid "Link Domains" +msgstr "Länka domäner" + +#: bookwyrm/templates/settings/layout.html:72 +msgid "Instance Settings" +msgstr "Inställningar för instans" + +#: bookwyrm/templates/settings/layout.html:80 +#: bookwyrm/templates/settings/site.html:4 +#: bookwyrm/templates/settings/site.html:6 +msgid "Site Settings" +msgstr "Inställningar för sidan" + +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5 +#, python-format +msgid "Set display name for %(url)s" +msgstr "Ställ in visningsnamnet för %(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 "Länkdomäner måste godkännas innan de visas på bok-sidor. Vänligen se till så att domänerna inte är lagrar skräppost, skadlig kod eller vilseledande länkar innan du godkänner." + +#: bookwyrm/templates/settings/link_domains/link_domains.html:45 +msgid "Set display name" +msgstr "Ställ in visningsnamn" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:53 +msgid "View links" +msgstr "Visa länkar" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:96 +msgid "No domains currently approved" +msgstr "Inga domäner är för närvarande godkända" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:98 +msgid "No domains currently pending" +msgstr "Inga domäner väntar för närvarande" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:100 +msgid "No domains currently blocked" +msgstr "Inga domäner är blockerade för närvarande" + +#: bookwyrm/templates/settings/link_domains/link_table.html:39 +msgid "No links available for this domain." +msgstr "Inga länkar tillgängliga för den här domänen." + +#: bookwyrm/templates/settings/reports/report.html:11 +msgid "Back to reports" +msgstr "Tillbaka till rapporter" + +#: bookwyrm/templates/settings/reports/report.html:23 +msgid "Message reporter" +msgstr "Meddela rapportören" + +#: bookwyrm/templates/settings/reports/report.html:27 +msgid "Update on your report:" +msgstr "Uppdatering av din rapport:" + +#: bookwyrm/templates/settings/reports/report.html:35 +msgid "Reported statuses" +msgstr "Rapporterade statusar" + +#: bookwyrm/templates/settings/reports/report.html:40 +msgid "Status has been deleted" +msgstr "Statusen har tagits bort" + +#: bookwyrm/templates/settings/reports/report.html:52 +msgid "Reported links" +msgstr "Rapporterade länkar" + +#: bookwyrm/templates/settings/reports/report.html:68 +msgid "Moderator Comments" +msgstr "Moderatorns kommentarer" + +#: bookwyrm/templates/settings/reports/report.html:89 +#: bookwyrm/templates/snippets/create_status.html:28 +msgid "Comment" +msgstr "Kommentar" + +#: bookwyrm/templates/settings/reports/report_header.html:6 +#, python-format +msgid "Report #%(report_id)s: Status posted by @%(username)s" +msgstr "Rapport #%(report_id)s: Status publicerades av @%(username)s" + +#: bookwyrm/templates/settings/reports/report_header.html:12 +#, python-format +msgid "Report #%(report_id)s: Link added by @%(username)s" +msgstr "Rapport #%(report_id)s: Länken lades till av @%(username)s" + +#: bookwyrm/templates/settings/reports/report_header.html:18 +#, python-format +msgid "Report #%(report_id)s: User @%(username)s" +msgstr "Rapport #%(report_id)s: Användare @%(username)s" + +#: bookwyrm/templates/settings/reports/report_links_table.html:17 +msgid "Block domain" +msgstr "Blockera domän" + +#: bookwyrm/templates/settings/reports/report_preview.html:17 +msgid "No notes provided" +msgstr "Inga anteckningar tillhandahålls" + +#: bookwyrm/templates/settings/reports/report_preview.html:24 +#, python-format +msgid "Reported by @%(username)s" +msgstr "Rapporterades av @%(username)s" + +#: bookwyrm/templates/settings/reports/report_preview.html:34 +msgid "Re-open" +msgstr "Öppna igen" + +#: bookwyrm/templates/settings/reports/report_preview.html:36 +msgid "Resolve" +msgstr "Lös" + +#: bookwyrm/templates/settings/reports/reports.html:6 +#, python-format +msgid "Reports: %(instance_name)s" +msgstr "Rapporter: %(instance_name)s" + +#: bookwyrm/templates/settings/reports/reports.html:14 +#, python-format +msgid "Reports: %(instance_name)s" +msgstr "Rapporter: %(instance_name)s" + +#: bookwyrm/templates/settings/reports/reports.html:25 +#: bookwyrm/templates/snippets/announcement.html:16 +msgid "Open" +msgstr "Öppna" + +#: bookwyrm/templates/settings/reports/reports.html:28 +msgid "Resolved" +msgstr "Lösta" + +#: bookwyrm/templates/settings/reports/reports.html:37 +msgid "No reports found." +msgstr "Inga rapporter hittades." + +#: bookwyrm/templates/settings/site.html:10 +#: bookwyrm/templates/settings/site.html:21 +msgid "Instance Info" +msgstr "Info om instans" + +#: bookwyrm/templates/settings/site.html:11 +#: bookwyrm/templates/settings/site.html:54 +msgid "Images" +msgstr "Bilder" + +#: bookwyrm/templates/settings/site.html:12 +#: bookwyrm/templates/settings/site.html:74 +msgid "Footer Content" +msgstr "Sidfotens innehåll" + +#: bookwyrm/templates/settings/site.html:13 +#: bookwyrm/templates/settings/site.html:98 +msgid "Registration" +msgstr "Registrering" + +#: bookwyrm/templates/settings/site.html:24 +msgid "Instance Name:" +msgstr "Namn på instansen:" + +#: bookwyrm/templates/settings/site.html:28 +msgid "Tagline:" +msgstr "Tagglinje:" + +#: bookwyrm/templates/settings/site.html:32 +msgid "Instance description:" +msgstr "Beskrivning av instans:" + +#: bookwyrm/templates/settings/site.html:36 +msgid "Short description:" +msgstr "Kort beskrivning:" + +#: bookwyrm/templates/settings/site.html:37 +msgid "Used when the instance is previewed on joinbookwyrm.com. Does not support HTML or Markdown." +msgstr "Används när instansen förhandsgranskas på joinbookwyrm.com. Stödjer inte HTML eller Markdown." + +#: bookwyrm/templates/settings/site.html:41 +msgid "Code of conduct:" +msgstr "Uppförandekod:" + +#: bookwyrm/templates/settings/site.html:45 +msgid "Privacy Policy:" +msgstr "Integritetspolicy:" + +#: bookwyrm/templates/settings/site.html:57 +msgid "Logo:" +msgstr "Logga:" + +#: bookwyrm/templates/settings/site.html:61 +msgid "Logo small:" +msgstr "Liten logga:" + +#: bookwyrm/templates/settings/site.html:65 +msgid "Favicon:" +msgstr "Favikon:" + +#: bookwyrm/templates/settings/site.html:77 +msgid "Support link:" +msgstr "Länk för support:" + +#: bookwyrm/templates/settings/site.html:81 +msgid "Support title:" +msgstr "Supporttitel:" + +#: bookwyrm/templates/settings/site.html:85 +msgid "Admin email:" +msgstr "Administratörens e-postadress:" + +#: bookwyrm/templates/settings/site.html:89 +msgid "Additional info:" +msgstr "Ytterligare info:" + +#: bookwyrm/templates/settings/site.html:103 +msgid "Allow registration" +msgstr "Tillåt registrering" + +#: bookwyrm/templates/settings/site.html:109 +msgid "Allow invite requests" +msgstr "Tillåt inbjudningsförfrågningar" + +#: bookwyrm/templates/settings/site.html:115 +msgid "Require users to confirm email address" +msgstr "Kräv att användarna ska bekräfta e-postadressen" + +#: bookwyrm/templates/settings/site.html:117 +msgid "(Recommended if registration is open)" +msgstr "(Rekommenderas om registreringen är öppen)" + +#: bookwyrm/templates/settings/site.html:120 +msgid "Registration closed text:" +msgstr "Text för stängd registrering:" + +#: bookwyrm/templates/settings/site.html:124 +msgid "Invite request text:" +msgstr "Text för inbjudningsförfrågning:" + +#: bookwyrm/templates/settings/users/delete_user_form.html:5 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:32 +msgid "Permanently delete user" +msgstr "Ta bort användaren permanent" + +#: bookwyrm/templates/settings/users/delete_user_form.html:12 +#, python-format +msgid "Are you sure you want to delete %(username)s's account? This action cannot be undone. To proceed, please enter your password to confirm deletion." +msgstr "Är du säker på att du vill ta bort %(username)ss konto? Den här åtgärden kan inte ångras. För att fortsätta, vänligen ange ditt lösenord för att bekräfta raderingen." + +#: bookwyrm/templates/settings/users/delete_user_form.html:17 +msgid "Your password:" +msgstr "Ditt lösenord:" + +#: bookwyrm/templates/settings/users/user.html:7 +msgid "Back to users" +msgstr "Tillbaka till användarna" + +#: bookwyrm/templates/settings/users/user_admin.html:7 +#, python-format +msgid "Users: %(instance_name)s" +msgstr "Användare: %(instance_name)s" + +#: bookwyrm/templates/settings/users/user_admin.html:22 +#: bookwyrm/templates/settings/users/username_filter.html:5 +msgid "Username" +msgstr "Användarnamn" + +#: bookwyrm/templates/settings/users/user_admin.html:26 +msgid "Date Added" +msgstr "Lades till datum" + +#: bookwyrm/templates/settings/users/user_admin.html:30 +msgid "Last Active" +msgstr "Senast aktiv" + +#: bookwyrm/templates/settings/users/user_admin.html:38 +msgid "Remote instance" +msgstr "Fjärrinstans" + +#: bookwyrm/templates/settings/users/user_admin.html:47 +#: bookwyrm/templates/settings/users/user_info.html:24 +msgid "Active" +msgstr "Aktiv" + +#: bookwyrm/templates/settings/users/user_admin.html:47 +#: bookwyrm/templates/settings/users/user_info.html:28 +msgid "Inactive" +msgstr "Inaktiv" + +#: bookwyrm/templates/settings/users/user_admin.html:52 +#: bookwyrm/templates/settings/users/user_info.html:120 +msgid "Not set" +msgstr "Inte inställd" + +#: bookwyrm/templates/settings/users/user_info.html:16 +msgid "View user profile" +msgstr "Visa användarens profil" + +#: bookwyrm/templates/settings/users/user_info.html:36 +msgid "Local" +msgstr "Lokal" + +#: bookwyrm/templates/settings/users/user_info.html:38 +msgid "Remote" +msgstr "Fjärr" + +#: bookwyrm/templates/settings/users/user_info.html:47 +msgid "User details" +msgstr "Användardetaljer" + +#: bookwyrm/templates/settings/users/user_info.html:51 +msgid "Email:" +msgstr "E-postadress:" + +#: bookwyrm/templates/settings/users/user_info.html:61 +msgid "(View reports)" +msgstr "(Visa rapporter)" + +#: bookwyrm/templates/settings/users/user_info.html:67 +msgid "Blocked by count:" +msgstr "Blockerade av antal:" + +#: bookwyrm/templates/settings/users/user_info.html:70 +msgid "Last active date:" +msgstr "Senaste aktiva datum:" + +#: bookwyrm/templates/settings/users/user_info.html:73 +msgid "Manually approved followers:" +msgstr "Manuellt godkända följare:" + +#: bookwyrm/templates/settings/users/user_info.html:76 +msgid "Discoverable:" +msgstr "Upptäckbar:" + +#: bookwyrm/templates/settings/users/user_info.html:80 +msgid "Deactivation reason:" +msgstr "Orsak till inaktivering:" + +#: bookwyrm/templates/settings/users/user_info.html:95 +msgid "Instance details" +msgstr "Instansens detaljer" + +#: bookwyrm/templates/settings/users/user_info.html:117 +msgid "View instance" +msgstr "Visa instansen" + +#: bookwyrm/templates/settings/users/user_moderation_actions.html:5 +msgid "Permanently deleted" +msgstr "Togs bort permanent" + +#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 +msgid "User Actions" +msgstr "Användaråtgärder" + +#: bookwyrm/templates/settings/users/user_moderation_actions.html:21 +msgid "Suspend user" +msgstr "Stäng av användaren" + +#: bookwyrm/templates/settings/users/user_moderation_actions.html:26 +msgid "Un-suspend user" +msgstr "Ta bort avstängning för användaren" + +#: bookwyrm/templates/settings/users/user_moderation_actions.html:48 +msgid "Access level:" +msgstr "Åtkomstnivå:" + +#: bookwyrm/templates/shelf/create_shelf_form.html:5 +msgid "Create Shelf" +msgstr "Skapa hylla" + +#: bookwyrm/templates/shelf/edit_shelf_form.html:5 +msgid "Edit Shelf" +msgstr "Redigera hylla" + +#: bookwyrm/templates/shelf/shelf.html:24 +msgid "User profile" +msgstr "Användarprofil" + +#: bookwyrm/templates/shelf/shelf.html:39 +#: bookwyrm/templates/snippets/translated_shelf_name.html:3 +#: bookwyrm/views/shelf/shelf.py:53 +msgid "All books" +msgstr "Alla böcker" + +#: bookwyrm/templates/shelf/shelf.html:72 +msgid "Create shelf" +msgstr "Skapa hylla" + +#: bookwyrm/templates/shelf/shelf.html:96 +#, python-format +msgid "%(formatted_count)s book" +msgid_plural "%(formatted_count)s books" +msgstr[0] "%(formatted_count)s bok" +msgstr[1] "%(formatted_count)s böcker" + +#: bookwyrm/templates/shelf/shelf.html:103 +#, python-format +msgid "(showing %(start)s-%(end)s)" +msgstr "(visar %(start)s-%(end)s)" + +#: bookwyrm/templates/shelf/shelf.html:115 +msgid "Edit shelf" +msgstr "Redigera hylla" + +#: bookwyrm/templates/shelf/shelf.html:123 +msgid "Delete shelf" +msgstr "Ta bort hylla" + +#: bookwyrm/templates/shelf/shelf.html:151 +#: bookwyrm/templates/shelf/shelf.html:177 +msgid "Shelved" +msgstr "Lagd på hyllan" + +#: bookwyrm/templates/shelf/shelf.html:152 +#: bookwyrm/templates/shelf/shelf.html:180 +msgid "Started" +msgstr "Påbörjade" + +#: bookwyrm/templates/shelf/shelf.html:153 +#: bookwyrm/templates/shelf/shelf.html:183 +msgid "Finished" +msgstr "Avslutade" + +#: bookwyrm/templates/shelf/shelf.html:209 +msgid "This shelf is empty." +msgstr "Den här hyllan är tom." + +#: bookwyrm/templates/snippets/add_to_group_button.html:16 +msgid "Invite" +msgstr "Bjud in" + +#: bookwyrm/templates/snippets/add_to_group_button.html:25 +msgid "Uninvite" +msgstr "Dra tillbaka inbjudningen" + +#: bookwyrm/templates/snippets/add_to_group_button.html:29 +#, python-format +msgid "Remove @%(username)s" +msgstr "Ta bort @%(username)s" + +#: bookwyrm/templates/snippets/announcement.html:31 +#, python-format +msgid "Posted by %(username)s" +msgstr "Lades upp av %(username)s" + +#: bookwyrm/templates/snippets/authors.html:22 +#: bookwyrm/templates/snippets/trimmed_list.html:14 +#, python-format +msgid "and %(remainder_count_display)s other" +msgid_plural "and %(remainder_count_display)s others" +msgstr[0] "och %(remainder_count_display)s annan" +msgstr[1] "och %(remainder_count_display)s andra" + +#: bookwyrm/templates/snippets/book_cover.html:61 +msgid "No cover" +msgstr "Inget omslag" + +#: bookwyrm/templates/snippets/book_titleby.html:10 +#, python-format +msgid "%(title)s by" +msgstr "%(title)s av" + +#: bookwyrm/templates/snippets/boost_button.html:20 +#: bookwyrm/templates/snippets/boost_button.html:21 +msgid "Boost" +msgstr "Öka" + +#: bookwyrm/templates/snippets/boost_button.html:33 +#: bookwyrm/templates/snippets/boost_button.html:34 +msgid "Un-boost" +msgstr "Öka inte" + +#: bookwyrm/templates/snippets/create_status.html:39 +msgid "Quote" +msgstr "Citat" + +#: bookwyrm/templates/snippets/create_status/comment.html:15 +msgid "Some thoughts on the book" +msgstr "Några tankar om boken" + +#: bookwyrm/templates/snippets/create_status/comment.html:27 +#: bookwyrm/templates/snippets/reading_modals/progress_update_modal.html:17 +msgid "Progress:" +msgstr "Förlopp:" + +#: bookwyrm/templates/snippets/create_status/comment.html:53 +#: bookwyrm/templates/snippets/progress_field.html:18 +msgid "pages" +msgstr "sidor" + +#: bookwyrm/templates/snippets/create_status/comment.html:59 +#: bookwyrm/templates/snippets/progress_field.html:23 +msgid "percent" +msgstr "procent" + +#: bookwyrm/templates/snippets/create_status/comment.html:66 +#, python-format +msgid "of %(pages)s pages" +msgstr "av %(pages)s sidor" + +#: 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:18 +msgid "Content" +msgstr "Innehåll" + +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:10 +msgid "Content warning:" +msgstr "Innehållsvarning:" + +#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18 +msgid "Spoilers ahead!" +msgstr "Varning för spoiler!" + +#: bookwyrm/templates/snippets/create_status/content_warning_toggle.html:13 +msgid "Include spoiler alert" +msgstr "Inkludera spoilervarning" + +#: bookwyrm/templates/snippets/create_status/layout.html:47 +#: bookwyrm/templates/snippets/reading_modals/form.html:7 +msgid "Comment:" +msgstr "Kommentar:" + +#: bookwyrm/templates/snippets/create_status/post_options_block.html:21 +msgid "Post" +msgstr "Inlägg" + +#: bookwyrm/templates/snippets/create_status/quotation.html:16 +msgid "Quote:" +msgstr "Citat:" + +#: bookwyrm/templates/snippets/create_status/quotation.html:24 +#, python-format +msgid "An excerpt from '%(book_title)s'" +msgstr "Ett utdrag från '%(book_title)s'" + +#: bookwyrm/templates/snippets/create_status/quotation.html:31 +msgid "Position:" +msgstr "Plats:" + +#: bookwyrm/templates/snippets/create_status/quotation.html:44 +msgid "On page:" +msgstr "På sidan:" + +#: bookwyrm/templates/snippets/create_status/quotation.html:50 +msgid "At percent:" +msgstr "Vid procent:" + +#: bookwyrm/templates/snippets/create_status/review.html:24 +#, python-format +msgid "Your review of '%(book_title)s'" +msgstr "Din recension av '%(book_title)s'" + +#: bookwyrm/templates/snippets/create_status/review.html:39 +msgid "Review:" +msgstr "Recension:" + +#: bookwyrm/templates/snippets/fav_button.html:16 +#: bookwyrm/templates/snippets/fav_button.html:17 +msgid "Like" +msgstr "Gilla" + +#: bookwyrm/templates/snippets/fav_button.html:30 +#: bookwyrm/templates/snippets/fav_button.html:31 +msgid "Un-like" +msgstr "Sluta gilla" + +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:5 +msgid "Filters" +msgstr "Filter" + +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:10 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:17 +msgid "Filters are applied" +msgstr "Filtren är verkställda" + +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:20 +msgid "Clear filters" +msgstr "Rensa filtren" + +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 +msgid "Apply filters" +msgstr "Verkställ filtren" + +#: bookwyrm/templates/snippets/follow_button.html:20 +#, python-format +msgid "Follow @%(username)s" +msgstr "Följ @%(username)s" + +#: bookwyrm/templates/snippets/follow_button.html:22 +msgid "Follow" +msgstr "Följ" + +#: bookwyrm/templates/snippets/follow_button.html:31 +msgid "Undo follow request" +msgstr "Ångra följdförfrågning" + +#: bookwyrm/templates/snippets/follow_button.html:36 +#, python-format +msgid "Unfollow @%(username)s" +msgstr "Sluta följ @%(username)s" + +#: bookwyrm/templates/snippets/follow_button.html:38 +msgid "Unfollow" +msgstr "Sluta följ" + +#: bookwyrm/templates/snippets/follow_request_buttons.html:7 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:9 +msgid "Accept" +msgstr "Acceptera" + +#: bookwyrm/templates/snippets/form_rate_stars.html:20 +#: bookwyrm/templates/snippets/stars.html:13 +msgid "No rating" +msgstr "Inget betyg" + +#: bookwyrm/templates/snippets/form_rate_stars.html:28 +#, python-format +msgid "%(half_rating)s star" +msgid_plural "%(half_rating)s stars" +msgstr[0] "%(half_rating)s stjärna" +msgstr[1] "%(half_rating)s stjärnor" + +#: bookwyrm/templates/snippets/form_rate_stars.html:64 +#: bookwyrm/templates/snippets/stars.html:7 +#, python-format +msgid "%(rating)s star" +msgid_plural "%(rating)s stars" +msgstr[0] "%(rating)s stjärna" +msgstr[1] "%(rating)s stjärnor" + +#: bookwyrm/templates/snippets/generated_status/goal.html:2 +#, python-format +msgid "set a goal to read %(counter)s book in %(year)s" +msgid_plural "set a goal to read %(counter)s books in %(year)s" +msgstr[0] "ställ in ett mål att läsa %(counter)s bok under %(year)s" +msgstr[1] "ställ in ett mål att läsa %(counter)s böcker under %(year)s" + +#: bookwyrm/templates/snippets/generated_status/rating.html:3 +#, python-format +msgid "rated %(title)s: %(display_rating)s star" +msgid_plural "rated %(title)s: %(display_rating)s stars" +msgstr[0] "betygsatte %(title)s: %(display_rating)s stjärna" +msgstr[1] "betygsatte %(title)s: %(display_rating)s stjärnor" + +#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 +#, python-format +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "Recension av \"%(book_title)s\" (%(display_rating)s stjärna): %(review_title)s" +msgstr[1] "Recension av \"%(book_title)s\" (%(display_rating)s stjärnor): %(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 "Recension av \"%(book_title)s\": %(review_title)s" + +#: bookwyrm/templates/snippets/goal_form.html:4 +#, python-format +msgid "Set a goal for how many books you'll finish reading in %(year)s, and track your progress throughout the year." +msgstr "Sätt upp ett mål för hur många böcker som du läser färdigt under %(year)s och spåra dina framsteg under hela året." + +#: bookwyrm/templates/snippets/goal_form.html:16 +msgid "Reading goal:" +msgstr "Läs-mål:" + +#: bookwyrm/templates/snippets/goal_form.html:21 +msgid "books" +msgstr "böcker" + +#: bookwyrm/templates/snippets/goal_form.html:26 +msgid "Goal privacy:" +msgstr "Målintegritet:" + +#: bookwyrm/templates/snippets/goal_form.html:33 +#: bookwyrm/templates/snippets/reading_modals/layout.html:13 +msgid "Post to feed" +msgstr "Skicka till flöde" + +#: bookwyrm/templates/snippets/goal_form.html:37 +msgid "Set goal" +msgstr "Ställ in mål" + +#: bookwyrm/templates/snippets/goal_progress.html:9 +#, python-format +msgid "%(percent)s%% complete!" +msgstr "%(percent)s%% slutfört!" + +#: bookwyrm/templates/snippets/goal_progress.html:12 +#, python-format +msgid "You've read %(read_count)s of %(goal_count)s books." +msgstr "Du har läst %(read_count)s av %(goal_count)s böcker." + +#: bookwyrm/templates/snippets/goal_progress.html:14 +#, python-format +msgid "%(username)s has read %(read_count)s of %(goal_count)s books." +msgstr "%(username)s har läst %(read_count)s av %(goal_count)s böcker." + +#: bookwyrm/templates/snippets/page_text.html:8 +#, python-format +msgid "page %(page)s of %(total_pages)s" +msgstr "sida %(page)s av %(total_pages)s" + +#: bookwyrm/templates/snippets/page_text.html:14 +#, python-format +msgid "page %(page)s" +msgstr "sida %(page)s" + +#: bookwyrm/templates/snippets/pagination.html:12 +msgid "Previous" +msgstr "Föregående" + +#: bookwyrm/templates/snippets/pagination.html:23 +msgid "Next" +msgstr "Nästa" + +#: bookwyrm/templates/snippets/privacy-icons.html:12 +msgid "Followers-only" +msgstr "Endast följare" + +#: bookwyrm/templates/snippets/privacy_select.html:6 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:6 +msgid "Post privacy" +msgstr "Sekretess för inlägg" + +#: bookwyrm/templates/snippets/rate_action.html:5 +msgid "Leave a rating" +msgstr "Lämna ett betyg" + +#: bookwyrm/templates/snippets/rate_action.html:20 +msgid "Rate" +msgstr "Betygsätt" + +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:6 +#, python-format +msgid "Finish \"%(book_title)s\"" +msgstr "Avsluta \"%(book_title)s\"" + +#: bookwyrm/templates/snippets/reading_modals/form.html:9 +msgid "(Optional)" +msgstr "(Valfritt)" + +#: bookwyrm/templates/snippets/reading_modals/progress_update_modal.html:6 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:54 +msgid "Update progress" +msgstr "Uppdateringsförlopp" + +#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:6 +#, python-format +msgid "Start \"%(book_title)s\"" +msgstr "Börja \"%(book_title)s\"" + +#: bookwyrm/templates/snippets/reading_modals/want_to_read_modal.html:6 +#, python-format +msgid "Want to Read \"%(book_title)s\"" +msgstr "Vill läsa \"%(book_title)s\"" + +#: bookwyrm/templates/snippets/register_form.html:30 +msgid "Sign Up" +msgstr "Registrera" + +#: bookwyrm/templates/snippets/report_modal.html:8 +#, python-format +msgid "Report @%(username)s's status" +msgstr "Rapportera @%(username)s's status" + +#: bookwyrm/templates/snippets/report_modal.html:10 +#, python-format +msgid "Report %(domain)s link" +msgstr "Rapportera %(domain)s länk" + +#: bookwyrm/templates/snippets/report_modal.html:12 +#, python-format +msgid "Report @%(username)s" +msgstr "Rapportera @%(username)s" + +#: bookwyrm/templates/snippets/report_modal.html:34 +#, python-format +msgid "This report will be sent to %(site_name)s's moderators for review." +msgstr "Den här rapporten kommer att skickas till %(site_name)s moderatorer för granskning." + +#: bookwyrm/templates/snippets/report_modal.html:36 +msgid "Links from this domain will be removed until your report has been reviewed." +msgstr "Länkarna från den här domänen kommer att tas bort tills din rapport har blivit granskad." + +#: bookwyrm/templates/snippets/report_modal.html:41 +msgid "More info about this report:" +msgstr "Mer info om den här rapporten:" + +#: bookwyrm/templates/snippets/shelf_selector.html:7 +msgid "Move book" +msgstr "Flytta boken" + +#: bookwyrm/templates/snippets/shelf_selector.html:39 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:17 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:24 +msgid "Start reading" +msgstr "Börja läsa" + +#: bookwyrm/templates/snippets/shelf_selector.html:54 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:31 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:38 +msgid "Want to read" +msgstr "Vill läsa" + +#: bookwyrm/templates/snippets/shelf_selector.html:74 +#: bookwyrm/templates/snippets/shelf_selector.html:86 +msgid "Remove from" +msgstr "Ta bort från" + +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown.html:5 +msgid "More shelves" +msgstr "Mer hyllor" + +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:66 +#, python-format +msgid "Remove from %(name)s" +msgstr "Ta bort från %(name)s" + +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:31 +msgid "Finish reading" +msgstr "Sluta läs" + +#: bookwyrm/templates/snippets/status/content_status.html:73 +msgid "Content warning" +msgstr "Innehållsvarning" + +#: bookwyrm/templates/snippets/status/content_status.html:80 +msgid "Show status" +msgstr "Visa status" + +#: bookwyrm/templates/snippets/status/content_status.html:102 +#, python-format +msgid "(Page %(page)s)" +msgstr "(Sida %(page)s)" + +#: bookwyrm/templates/snippets/status/content_status.html:104 +#, python-format +msgid "(%(percent)s%%)" +msgstr "(%(percent)s%%)" + +#: bookwyrm/templates/snippets/status/content_status.html:126 +msgid "Open image in new window" +msgstr "Öppna bild i nytt fönster" + +#: bookwyrm/templates/snippets/status/content_status.html:145 +msgid "Hide status" +msgstr "Göm status" + +#: bookwyrm/templates/snippets/status/header.html:45 +#, python-format +msgid "edited %(date)s" +msgstr "redigerades %(date)s" + +#: bookwyrm/templates/snippets/status/headers/comment.html:8 +#, python-format +msgid "commented on %(book)s by %(author_name)s" +msgstr "kommenterade %(book)s av %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/comment.html:15 +#, python-format +msgid "commented on %(book)s" +msgstr "kommenterade på %(book)s" + +#: bookwyrm/templates/snippets/status/headers/note.html:8 +#, python-format +msgid "replied to %(username)s's status" +msgstr "svarade på %(username)ss status" + +#: bookwyrm/templates/snippets/status/headers/quotation.html:8 +#, python-format +msgid "quoted %(book)s by %(author_name)s" +msgstr "citerade %(book)s av %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/quotation.html:15 +#, python-format +msgid "quoted %(book)s" +msgstr "citerade %(book)s" + +#: bookwyrm/templates/snippets/status/headers/rating.html:3 +#, python-format +msgid "rated %(book)s:" +msgstr "betygsatte %(book)s:" + +#: bookwyrm/templates/snippets/status/headers/read.html:10 +#, python-format +msgid "finished reading %(book)s by %(author_name)s" +msgstr "slutade läsa %(book)s av %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/read.html:17 +#, python-format +msgid "finished reading %(book)s" +msgstr "slutade läsa %(book)s" + +#: bookwyrm/templates/snippets/status/headers/reading.html:10 +#, python-format +msgid "started reading %(book)s by %(author_name)s" +msgstr "började läsa %(book)s av %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/reading.html:17 +#, python-format +msgid "started reading %(book)s" +msgstr "började läsa %(book)s" + +#: bookwyrm/templates/snippets/status/headers/review.html:8 +#, python-format +msgid "reviewed %(book)s by %(author_name)s" +msgstr "recenserade %(book)s av %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/review.html:15 +#, python-format +msgid "reviewed %(book)s" +msgstr "recenserade %(book)s" + +#: bookwyrm/templates/snippets/status/headers/to_read.html:10 +#, python-format +msgid "wants to read %(book)s by %(author_name)s" +msgstr "vill läsa %(book)s av %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/to_read.html:17 +#, python-format +msgid "wants to read %(book)s" +msgstr "vill läsa %(book)s" + +#: bookwyrm/templates/snippets/status/layout.html:24 +#: bookwyrm/templates/snippets/status/status_options.html:17 +msgid "Delete status" +msgstr "Ta bort status" + +#: bookwyrm/templates/snippets/status/layout.html:57 +#: bookwyrm/templates/snippets/status/layout.html:58 +msgid "Boost status" +msgstr "Statusökning" + +#: bookwyrm/templates/snippets/status/layout.html:61 +#: bookwyrm/templates/snippets/status/layout.html:62 +msgid "Like status" +msgstr "Gilla status" + +#: bookwyrm/templates/snippets/status/status.html:10 +msgid "boosted" +msgstr "ökade" + +#: bookwyrm/templates/snippets/status/status_options.html:7 +#: bookwyrm/templates/snippets/user_options.html:7 +msgid "More options" +msgstr "Fler alternativ" + +#: bookwyrm/templates/snippets/switch_edition_button.html:5 +msgid "Switch to this edition" +msgstr "Byt till den här versionen" + +#: bookwyrm/templates/snippets/table-sort-header.html:6 +msgid "Sorted ascending" +msgstr "Sortera stigande" + +#: bookwyrm/templates/snippets/table-sort-header.html:10 +msgid "Sorted descending" +msgstr "Sortera fallande" + +#: bookwyrm/templates/snippets/trimmed_text.html:17 +msgid "Show more" +msgstr "Visa mer" + +#: bookwyrm/templates/snippets/trimmed_text.html:35 +msgid "Show less" +msgstr "Visa mindre" + +#: bookwyrm/templates/user/books_header.html:4 +msgid "Your books" +msgstr "Dina böcker" + +#: bookwyrm/templates/user/books_header.html:9 +#, python-format +msgid "%(username)s's books" +msgstr "%(username)s's böcker" + +#: bookwyrm/templates/user/goal.html:8 +#, python-format +msgid "%(year)s Reading Progress" +msgstr "%(year)s Läsningsförlopp" + +#: bookwyrm/templates/user/goal.html:12 +msgid "Edit Goal" +msgstr "Redigera mål" + +#: bookwyrm/templates/user/goal.html:28 +#, python-format +msgid "%(name)s hasn't set a reading goal for %(year)s." +msgstr "%(name)s har inte ställt in ett läsmål för %(year)s." + +#: bookwyrm/templates/user/goal.html:40 +#, python-format +msgid "Your %(year)s Books" +msgstr "Dina %(year)s böcker" + +#: bookwyrm/templates/user/goal.html:42 +#, python-format +msgid "%(username)s's %(year)s Books" +msgstr "%(username)s's böcker %(year)s" + +#: bookwyrm/templates/user/groups.html:9 +msgid "Your Groups" +msgstr "Dina grupper" + +#: bookwyrm/templates/user/groups.html:11 +#, python-format +msgid "Groups: %(username)s" +msgstr "Grupper: %(username)s" + +#: bookwyrm/templates/user/groups.html:17 +msgid "Create group" +msgstr "Skapa grupp" + +#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10 +msgid "User Profile" +msgstr "Användarprofil" + +#: bookwyrm/templates/user/layout.html:48 +msgid "Follow Requests" +msgstr "Följdförfrågningar" + +#: bookwyrm/templates/user/layout.html:73 +msgid "Reading Goal" +msgstr "Läs-mål" + +#: bookwyrm/templates/user/layout.html:79 +msgid "Groups" +msgstr "Grupper" + +#: bookwyrm/templates/user/lists.html:11 +#, python-format +msgid "Lists: %(username)s" +msgstr "Listor: %(username)s" + +#: bookwyrm/templates/user/lists.html:17 bookwyrm/templates/user/lists.html:29 +msgid "Create list" +msgstr "Skapa lista" + +#: bookwyrm/templates/user/relationships/followers.html:12 +#, python-format +msgid "%(username)s has no followers" +msgstr "%(username)s har inga följare" + +#: bookwyrm/templates/user/relationships/following.html:6 +#: bookwyrm/templates/user/relationships/layout.html:15 +msgid "Following" +msgstr "Följer" + +#: bookwyrm/templates/user/relationships/following.html:12 +#, python-format +msgid "%(username)s isn't following any users" +msgstr "%(username)s följer inte någon användare" + +#: bookwyrm/templates/user/user.html:16 +msgid "Edit profile" +msgstr "Redigera profil" + +#: bookwyrm/templates/user/user.html:37 +#, python-format +msgid "View all %(size)s" +msgstr "Visa alla %(size)s" + +#: bookwyrm/templates/user/user.html:51 +msgid "View all books" +msgstr "Visa alla böcker" + +#: bookwyrm/templates/user/user.html:58 +#, python-format +msgid "%(current_year)s Reading Goal" +msgstr "%(current_year)s läsmål" + +#: bookwyrm/templates/user/user.html:65 +msgid "User Activity" +msgstr "Användaraktivitet" + +#: bookwyrm/templates/user/user.html:69 +msgid "RSS feed" +msgstr "RSS-flöde" + +#: bookwyrm/templates/user/user.html:80 +msgid "No activities yet!" +msgstr "Inga aktiviteter än!" + +#: bookwyrm/templates/user/user_preview.html:22 +#, python-format +msgid "Joined %(date)s" +msgstr "Gick med %(date)s" + +#: bookwyrm/templates/user/user_preview.html:26 +#, python-format +msgid "%(counter)s follower" +msgid_plural "%(counter)s followers" +msgstr[0] "%(counter)s följer" +msgstr[1] "%(counter)s följare" + +#: bookwyrm/templates/user/user_preview.html:27 +#, python-format +msgid "%(counter)s following" +msgstr "%(counter)s följer" + +#: bookwyrm/templates/user/user_preview.html:34 +#, python-format +msgid "%(mutuals_display)s follower you follow" +msgid_plural "%(mutuals_display)s followers you follow" +msgstr[0] "%(mutuals_display)s följare som du följer" +msgstr[1] "%(mutuals_display)s följare som du följer" + +#: bookwyrm/templates/user/user_preview.html:38 +msgid "No followers you follow" +msgstr "Inga följare som du följer" + +#: bookwyrm/templates/widgets/clearable_file_input_with_warning.html:28 +msgid "File exceeds maximum size: 10MB" +msgstr "Filen överskrider maximal storlek: 10 MB" + +#: bookwyrm/templatetags/utilities.py:39 +#, python-format +msgid "%(title)s: %(subtitle)s" +msgstr "%(title)s: %(subtitle)s" + +#: bookwyrm/views/imports/import_data.py:67 +msgid "Not a valid csv file" +msgstr "Inte en giltig csv-fil" + +#: bookwyrm/views/landing/login.py:70 +msgid "Username or password are incorrect" +msgstr "Användarnamnet eller lösenordet är felaktigt" + +#: bookwyrm/views/landing/password.py:32 +msgid "No user with that email address was found." +msgstr "Ingen användare med den e-postadress hittades." + +#: bookwyrm/views/landing/password.py:43 +#, python-brace-format +msgid "A password reset link was sent to {email}" +msgstr "En länk för återställning av lösenordet har skickats till {email}" + +#: bookwyrm/views/rss_feed.py:34 +#, python-brace-format +msgid "Status updates from {obj.display_name}" +msgstr "Status-uppdateringar från {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] "" + diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo index 0d956c433..1d1227f80 100644 Binary files a/locale/zh_Hans/LC_MESSAGES/django.mo and b/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index c18f876a3..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-13 16:54+0000\n" -"PO-Revision-Date: 2022-01-13 17:50\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:351 +#: 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:365 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "一天" -#: bookwyrm/forms.py:366 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "一周" -#: bookwyrm/forms.py:367 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "一个月" -#: bookwyrm/forms.py:368 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "永不失效" -#: bookwyrm/forms.py:372 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "{i} 次使用" -#: bookwyrm/forms.py:373 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "不受限" -#: bookwyrm/forms.py:469 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "列表顺序" -#: bookwyrm/forms.py:470 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "书名" -#: bookwyrm/forms.py:471 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:33 +#: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "评价" -#: bookwyrm/forms.py:473 bookwyrm/templates/lists/list.html:134 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "排序方式" -#: bookwyrm/forms.py:477 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "升序" -#: bookwyrm/forms.py:478 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "降序" -#: bookwyrm/forms.py:491 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." msgstr "" @@ -84,8 +92,9 @@ msgstr "加载书籍时出错" msgid "Could not find a match for book" msgstr "找不到匹配的书" -#: bookwyrm/models/base_model.py:17 +#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 +#: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "待处理" @@ -105,23 +114,23 @@ msgstr "仲裁员删除" msgid "Domain block" msgstr "域名屏蔽" -#: bookwyrm/models/book.py:250 +#: bookwyrm/models/book.py:253 msgid "Audiobook" msgstr "有声书籍" -#: bookwyrm/models/book.py:251 +#: bookwyrm/models/book.py:254 msgid "eBook" msgstr "电子书" -#: bookwyrm/models/book.py:252 +#: bookwyrm/models/book.py:255 msgid "Graphic novel" msgstr "图像小说" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:256 msgid "Hardcover" msgstr "精装" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:257 msgid "Paperback" msgstr "平装" @@ -131,33 +140,34 @@ msgstr "平装" msgid "Federated" msgstr "跨站" -#: bookwyrm/models/federated_server.py:12 +#: bookwyrm/models/federated_server.py:12 bookwyrm/models/link.py:71 #: bookwyrm/templates/settings/federation/edit_instance.html:44 #: bookwyrm/templates/settings/federation/instance.html:10 #: bookwyrm/templates/settings/federation/instance_list.html:23 +#: bookwyrm/templates/settings/link_domains/link_domains.html:27 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 @@ -165,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 @@ -173,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 @@ -189,6 +199,23 @@ msgstr "关注者" msgid "Private" msgstr "私密" +#: bookwyrm/models/link.py:51 +msgid "Free" +msgstr "" + +#: bookwyrm/models/link.py:52 +msgid "Purchasable" +msgstr "" + +#: bookwyrm/models/link.py:53 +msgid "Available for loan" +msgstr "" + +#: bookwyrm/models/link.py:70 +#: bookwyrm/templates/settings/link_domains/link_domains.html:23 +msgid "Approved" +msgstr "" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "书评" @@ -205,69 +232,73 @@ msgstr "引用" msgid "Everything else" msgstr "所有其它内容" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home Timeline" msgstr "主页时间线" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home" msgstr "主页" -#: bookwyrm/settings.py:122 +#: bookwyrm/settings.py:174 msgid "Books Timeline" msgstr "书目时间线" -#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "书目" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:248 msgid "English" msgstr "English(英语)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:249 msgid "Deutsch (German)" msgstr "Deutsch(德语)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:250 msgid "Español (Spanish)" msgstr "Español(西班牙语)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:251 msgid "Galego (Galician)" msgstr "Galego(加利西亚语)" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:252 msgid "Italiano (Italian)" msgstr "" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:253 msgid "Français (French)" msgstr "Français(法语)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:254 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių(立陶宛语)" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:255 msgid "Norsk (Norwegian)" msgstr "" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:256 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:257 msgid "Português Europeu (European Portuguese)" msgstr "" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:258 +msgid "Svenska (Swedish)" +msgstr "" + +#: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:260 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文(繁体中文)" @@ -296,59 +327,57 @@ msgstr "某些东西出错了!对不起啦。" msgid "About" msgstr "" -#: bookwyrm/templates/about/about.html:18 +#: bookwyrm/templates/about/about.html:19 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "欢迎来到 %(site_name)s!" -#: bookwyrm/templates/about/about.html:22 +#: 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 "" -#: bookwyrm/templates/about/about.html:39 +#: bookwyrm/templates/about/about.html:40 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "" -#: bookwyrm/templates/about/about.html:58 +#: bookwyrm/templates/about/about.html:59 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "" -#: bookwyrm/templates/about/about.html:77 +#: bookwyrm/templates/about/about.html:78 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "" -#: bookwyrm/templates/about/about.html:88 +#: 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 "" -#: bookwyrm/templates/about/about.html:95 +#: bookwyrm/templates/about/about.html:96 msgid "Meet your admins" msgstr "" -#: bookwyrm/templates/about/about.html:98 +#: bookwyrm/templates/about/about.html:99 #, python-format -msgid "\n" -" %(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.\n" -" " +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 "" -#: bookwyrm/templates/about/about.html:112 +#: bookwyrm/templates/about/about.html:113 msgid "Moderator" msgstr "" -#: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 msgid "Admin" msgstr "管理员" -#: bookwyrm/templates/about/about.html:130 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:13 +#: 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 "发送私信" @@ -407,7 +436,7 @@ msgid "Copy address" msgstr "复制地址" #: bookwyrm/templates/annual_summary/layout.html:68 -#: bookwyrm/templates/lists/list.html:230 +#: bookwyrm/templates/lists/list.html:269 msgid "Copied!" msgstr "复制成功!" @@ -474,7 +503,7 @@ msgstr "TA 今年阅读最短的…" #: bookwyrm/templates/annual_summary/layout.html:245 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 -#: bookwyrm/templates/landing/large-book.html:25 +#: bookwyrm/templates/landing/large-book.html:26 #: bookwyrm/templates/landing/small-book.html:18 msgid "by" msgstr "作者" @@ -524,61 +553,61 @@ msgstr "在 %(year)s 里 %(display_name)s 阅读的所有书" msgid "Edit Author" msgstr "编辑作者" -#: bookwyrm/templates/author/author.html:40 +#: bookwyrm/templates/author/author.html:35 msgid "Author details" msgstr "作者详情" -#: bookwyrm/templates/author/author.html:44 +#: bookwyrm/templates/author/author.html:39 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "别名:" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:48 msgid "Born:" msgstr "出生:" -#: bookwyrm/templates/author/author.html:60 +#: bookwyrm/templates/author/author.html:55 msgid "Died:" msgstr "逝世:" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:65 msgid "External links" msgstr "外部链接" -#: bookwyrm/templates/author/author.html:75 +#: bookwyrm/templates/author/author.html:70 msgid "Wikipedia" msgstr "维基百科" -#: bookwyrm/templates/author/author.html:83 +#: bookwyrm/templates/author/author.html:78 msgid "View ISNI record" msgstr "查看 ISNI 记录" -#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/author.html:83 #: bookwyrm/templates/author/sync_modal.html:5 #: bookwyrm/templates/book/book.html:122 #: bookwyrm/templates/book/sync_modal.html:5 msgid "Load data" msgstr "加载数据" -#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/author/author.html:87 #: bookwyrm/templates/book/book.html:126 msgid "View on OpenLibrary" msgstr "在 OpenLibrary 查看" -#: bookwyrm/templates/author/author.html:107 +#: bookwyrm/templates/author/author.html:102 #: bookwyrm/templates/book/book.html:140 msgid "View on Inventaire" msgstr "在 Inventaire 查看" -#: bookwyrm/templates/author/author.html:123 +#: bookwyrm/templates/author/author.html:118 msgid "View on LibraryThing" msgstr "在 LibraryThing 查看" -#: bookwyrm/templates/author/author.html:131 +#: bookwyrm/templates/author/author.html:126 msgid "View on Goodreads" msgstr "在 Goodreads 查看" -#: bookwyrm/templates/author/author.html:145 +#: bookwyrm/templates/author/author.html:141 #, python-format msgid "Books by %(name)s" msgstr "%(name)s 所著的书" @@ -608,7 +637,9 @@ msgid "Metadata" msgstr "元数据" #: bookwyrm/templates/author/edit_author.html:35 -#: bookwyrm/templates/lists/form.html:9 bookwyrm/templates/shelf/form.html:9 +#: bookwyrm/templates/lists/form.html:9 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:14 +#: bookwyrm/templates/shelf/form.html:9 msgid "Name:" msgstr "名称:" @@ -662,8 +693,11 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 +#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: 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 @@ -671,7 +705,7 @@ msgstr "ISNI:" #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 #: bookwyrm/templates/settings/site.html:133 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:68 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 msgid "Save" @@ -683,13 +717,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/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/settings/federation/instance.html:88 -#: bookwyrm/templates/snippets/report_modal.html:38 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 +#: bookwyrm/templates/snippets/report_modal.html:54 msgid "Cancel" msgstr "取消" @@ -701,9 +739,9 @@ msgstr "加载数据会连接到 %(source_name)s 并检查这 #: bookwyrm/templates/author/sync_modal.html:22 #: bookwyrm/templates/book/edit/edit_book.html:108 #: bookwyrm/templates/book/sync_modal.html:22 -#: bookwyrm/templates/groups/members.html:30 +#: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 -#: bookwyrm/templates/snippets/remove_from_group_button.html:16 +#: bookwyrm/templates/snippets/remove_from_group_button.html:17 msgid "Confirm" msgstr "确认" @@ -786,8 +824,8 @@ msgid "Places" msgstr "地点" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 -#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: 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 @@ -801,7 +839,8 @@ msgstr "添加到列表" #: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/list.html:208 +#: 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" @@ -903,7 +942,7 @@ msgid "Back" msgstr "返回" #: bookwyrm/templates/book/edit/edit_book_form.html:21 -#: bookwyrm/templates/snippets/create_status/review.html:16 +#: bookwyrm/templates/snippets/create_status/review.html:15 msgid "Title:" msgstr "标题:" @@ -981,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 "格式:" @@ -1019,20 +1058,130 @@ 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 "搜索版本" +#: bookwyrm/templates/book/file_links/add_link_modal.html:6 +msgid "Add file link" +msgstr "" + +#: 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 "" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:24 +msgid "URL:" +msgstr "" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:29 +msgid "File type:" +msgstr "" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:48 +msgid "Availability:" +msgstr "" + +#: 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 "" + +#: bookwyrm/templates/book/file_links/edit_links.html:11 +#, python-format +msgid "\n" +" Links for \"%(title)s\"\n" +" " +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:32 +#: bookwyrm/templates/settings/link_domains/link_table.html:6 +msgid "URL" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:33 +#: bookwyrm/templates/settings/link_domains/link_table.html:7 +msgid "Added by" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:34 +#: bookwyrm/templates/settings/link_domains/link_table.html:8 +msgid "Filetype" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:35 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 +#: bookwyrm/templates/settings/reports/report_links_table.html:5 +msgid "Domain" +msgstr "域名" + +#: bookwyrm/templates/book/file_links/edit_links.html:36 +#: bookwyrm/templates/import/import_status.html:127 +#: bookwyrm/templates/settings/announcements/announcements.html:38 +#: bookwyrm/templates/settings/federation/instance_list.html:46 +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 +#: bookwyrm/templates/settings/invites/status_filter.html:5 +#: bookwyrm/templates/settings/users/user_admin.html:34 +#: bookwyrm/templates/settings/users/user_info.html:20 +msgid "Status" +msgstr "状态" + +#: bookwyrm/templates/book/file_links/edit_links.html:37 +#: bookwyrm/templates/settings/federation/instance.html:94 +#: bookwyrm/templates/settings/reports/report_links_table.html:6 +msgid "Actions" +msgstr "动作" + +#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 +msgid "Report spam" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:97 +msgid "No links available for this book." +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:108 +#: bookwyrm/templates/book/file_links/links.html:18 +msgid "Add link to file" +msgstr "" + +#: bookwyrm/templates/book/file_links/file_link_page.html:6 +msgid "File Links" +msgstr "" + +#: bookwyrm/templates/book/file_links/links.html:9 +msgid "Get a copy" +msgstr "" + +#: bookwyrm/templates/book/file_links/links.html:47 +msgid "No links available" +msgstr "" + +#: bookwyrm/templates/book/file_links/verification_modal.html:5 +msgid "Leaving BookWyrm" +msgstr "" + +#: 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 "" + +#: bookwyrm/templates/book/file_links/verification_modal.html:20 +msgid "Continue" +msgstr "" + #: bookwyrm/templates/book/publisher_info.html:23 #, python-format msgid "%(format)s, %(pages)s pages" @@ -1103,8 +1252,8 @@ msgstr "确认代码:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:93 -#: bookwyrm/templates/snippets/report_modal.html:37 +#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "提交" @@ -1408,16 +1557,11 @@ msgstr "所有消息" msgid "You have no messages right now." msgstr "你现在没有消息。" -#: bookwyrm/templates/feed/feed.html:28 -#, python-format -msgid "load 0 unread status(es)" -msgstr "加载 0 条未读状态" - -#: 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 "现在还没有任何活动!尝试从关注一个用户开始吧" -#: bookwyrm/templates/feed/feed.html:52 +#: bookwyrm/templates/feed/feed.html:55 msgid "Alternatively, you can try enabling more status types" msgstr "或者,您可以尝试启用更多的状态种类" @@ -1506,7 +1650,7 @@ msgid "What are you reading?" msgstr "你在阅读什么?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162 +#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:205 msgid "Search for a book" msgstr "搜索书目" @@ -1524,9 +1668,9 @@ msgstr "你可以在开始使用 %(site_name)s 后添加书目。" #: bookwyrm/templates/get_started/books.html:17 #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166 +#: 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/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -1542,7 +1686,7 @@ msgid "Popular on %(site_name)s" msgstr "%(site_name)s 上的热门" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:179 +#: bookwyrm/templates/lists/list.html:222 msgid "No books found" msgstr "没有找到书目" @@ -1647,7 +1791,7 @@ msgstr "此操作无法被撤销" #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 #: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:14 msgid "Delete" msgstr "删除" @@ -1667,17 +1811,17 @@ msgstr "群组描述" msgid "Delete group" msgstr "删除群组" -#: bookwyrm/templates/groups/group.html:22 +#: bookwyrm/templates/groups/group.html:21 msgid "Members of this group can create group-curated lists." msgstr "" -#: bookwyrm/templates/groups/group.html:27 +#: bookwyrm/templates/groups/group.html:26 #: bookwyrm/templates/lists/create_form.html:5 #: bookwyrm/templates/lists/lists.html:20 msgid "Create List" msgstr "创建列表" -#: bookwyrm/templates/groups/group.html:40 +#: bookwyrm/templates/groups/group.html:39 msgid "This group has no lists" msgstr "这个群组没有任何列表" @@ -1685,15 +1829,15 @@ msgstr "这个群组没有任何列表" msgid "Edit group" msgstr "编辑群组" -#: bookwyrm/templates/groups/members.html:12 +#: bookwyrm/templates/groups/members.html:11 msgid "Search to add a user" msgstr "搜索或添加用户" -#: bookwyrm/templates/groups/members.html:33 +#: bookwyrm/templates/groups/members.html:32 msgid "Leave group" msgstr "退出群组" -#: bookwyrm/templates/groups/members.html:55 +#: bookwyrm/templates/groups/members.html:54 #: bookwyrm/templates/groups/suggested_users.html:35 #: bookwyrm/templates/snippets/suggested_users.html:31 #: bookwyrm/templates/user/user_preview.html:36 @@ -1845,19 +1989,10 @@ msgid "Review" msgstr "书评" #: bookwyrm/templates/import/import_status.html:124 +#: bookwyrm/templates/settings/link_domains/link_table.html:9 msgid "Book" msgstr "书目" -#: bookwyrm/templates/import/import_status.html:127 -#: bookwyrm/templates/settings/announcements/announcements.html:38 -#: bookwyrm/templates/settings/federation/instance_list.html:46 -#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 -#: bookwyrm/templates/settings/invites/status_filter.html:5 -#: bookwyrm/templates/settings/users/user_admin.html:34 -#: bookwyrm/templates/settings/users/user_info.html:20 -msgid "Status" -msgstr "状态" - #: bookwyrm/templates/import/import_status.html:135 msgid "Import preview unavailable." msgstr "导入预览不可用。" @@ -1896,7 +2031,8 @@ msgid "Approving a suggestion will permanently add the suggested book to your sh msgstr "批准建议后,被提议的书将会永久添加到您的书架上并与您的阅读日期、书评、评分联系起来。" #: 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 "批准" @@ -1905,8 +2041,8 @@ msgid "Reject" msgstr "驳回" #: bookwyrm/templates/import/tooltip.html:6 -msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." -msgstr "您可以从 导入/导出页面 下载或导出您的 Goodread 数据。" +msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." +msgstr "" #: bookwyrm/templates/import/troubleshoot.html:7 msgid "Failed items" @@ -2106,6 +2242,21 @@ msgstr "在 %(support_title)s msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "BookWyrm 是开源软件。你可以在 GitHub 贡献或报告问题。" +#: bookwyrm/templates/lists/add_item_modal.html:8 +#, python-format +msgid "Add \"%(title)s\" to this list" +msgstr "" + +#: bookwyrm/templates/lists/add_item_modal.html:12 +#, python-format +msgid "Suggest \"%(title)s\" for this list" +msgstr "" + +#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/list.html:249 +msgid "Suggest" +msgstr "推荐" + #: bookwyrm/templates/lists/bookmark_button.html:30 msgid "Un-save" msgstr "取消保存" @@ -2125,23 +2276,29 @@ msgstr "由 %(username)s 创建并策展" msgid "Created by %(username)s" msgstr "由 %(username)s 创建" -#: bookwyrm/templates/lists/curate.html:11 +#: bookwyrm/templates/lists/curate.html:12 msgid "Curate" msgstr "" -#: bookwyrm/templates/lists/curate.html:20 +#: bookwyrm/templates/lists/curate.html:21 msgid "Pending Books" msgstr "等候中的书目" -#: bookwyrm/templates/lists/curate.html:23 +#: bookwyrm/templates/lists/curate.html:24 msgid "You're all set!" msgstr "都弄好了!" -#: bookwyrm/templates/lists/curate.html:43 +#: bookwyrm/templates/lists/curate.html:45 +#: bookwyrm/templates/lists/list.html:83 +#, python-format +msgid "%(username)s says:" +msgstr "" + +#: bookwyrm/templates/lists/curate.html:55 msgid "Suggested by" msgstr "推荐来自" -#: bookwyrm/templates/lists/curate.html:65 +#: bookwyrm/templates/lists/curate.html:77 msgid "Discard" msgstr "削除" @@ -2154,18 +2311,18 @@ msgstr "删除此列表?" msgid "Edit List" msgstr "编辑列表" -#: bookwyrm/templates/lists/embed-list.html:7 +#: bookwyrm/templates/lists/embed-list.html:8 #, python-format msgid "%(list_name)s, a list by %(owner)s" msgstr "%(list_name)s,来自 %(owner)s 的列表" -#: bookwyrm/templates/lists/embed-list.html:17 +#: bookwyrm/templates/lists/embed-list.html:18 #, python-format msgid "on %(site_name)s" msgstr "在 %(site_name)s" -#: bookwyrm/templates/lists/embed-list.html:26 -#: bookwyrm/templates/lists/list.html:42 +#: bookwyrm/templates/lists/embed-list.html:27 +#: bookwyrm/templates/lists/list.html:44 msgid "This list is currently empty" msgstr "此列表当前是空的" @@ -2226,75 +2383,89 @@ msgstr "创建一个群组" msgid "Delete list" msgstr "删除列表" -#: bookwyrm/templates/lists/list.html:34 +#: bookwyrm/templates/lists/item_notes_field.html:7 +#: bookwyrm/templates/settings/federation/edit_instance.html:74 +msgid "Notes:" +msgstr "备注:" + +#: bookwyrm/templates/lists/item_notes_field.html:19 +msgid "An optional note that will be displayed with the book." +msgstr "" + +#: bookwyrm/templates/lists/list.html:36 msgid "You successfully suggested a book for this list!" msgstr "你成功向该列表推荐了一本书!" -#: bookwyrm/templates/lists/list.html:36 +#: bookwyrm/templates/lists/list.html:38 msgid "You successfully added a book to this list!" msgstr "你成功向此列表添加了一本书!" -#: bookwyrm/templates/lists/list.html:80 +#: bookwyrm/templates/lists/list.html:96 +msgid "Edit notes" +msgstr "" + +#: bookwyrm/templates/lists/list.html:111 +msgid "Add notes" +msgstr "" + +#: bookwyrm/templates/lists/list.html:123 #, python-format msgid "Added by %(username)s" msgstr "由 %(username)s 添加" -#: bookwyrm/templates/lists/list.html:95 +#: bookwyrm/templates/lists/list.html:138 msgid "List position" msgstr "列表位置:" -#: bookwyrm/templates/lists/list.html:101 +#: bookwyrm/templates/lists/list.html:144 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 msgid "Set" msgstr "设定" -#: bookwyrm/templates/lists/list.html:116 -#: bookwyrm/templates/snippets/remove_from_group_button.html:19 +#: bookwyrm/templates/lists/list.html:159 +#: bookwyrm/templates/snippets/remove_from_group_button.html:20 msgid "Remove" msgstr "移除" -#: bookwyrm/templates/lists/list.html:130 -#: bookwyrm/templates/lists/list.html:147 +#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:190 msgid "Sort List" msgstr "排序列表" -#: bookwyrm/templates/lists/list.html:140 +#: bookwyrm/templates/lists/list.html:183 msgid "Direction" msgstr "方向" -#: bookwyrm/templates/lists/list.html:154 +#: bookwyrm/templates/lists/list.html:197 msgid "Add Books" msgstr "添加书目" -#: bookwyrm/templates/lists/list.html:156 +#: bookwyrm/templates/lists/list.html:199 msgid "Suggest Books" msgstr "推荐书目" -#: bookwyrm/templates/lists/list.html:167 +#: bookwyrm/templates/lists/list.html:210 msgid "search" msgstr "搜索" -#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:216 msgid "Clear search" msgstr "清除搜索" -#: bookwyrm/templates/lists/list.html:178 +#: bookwyrm/templates/lists/list.html:221 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "没有符合 “%(query)s” 请求的书目" -#: bookwyrm/templates/lists/list.html:210 -msgid "Suggest" -msgstr "推荐" - -#: bookwyrm/templates/lists/list.html:221 +#: bookwyrm/templates/lists/list.html:260 msgid "Embed this list on a website" msgstr "将此列表嵌入到网站" -#: bookwyrm/templates/lists/list.html:229 +#: bookwyrm/templates/lists/list.html:268 msgid "Copy embed code" msgstr "复制嵌入代码" -#: bookwyrm/templates/lists/list.html:231 +#: 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,%(owner)s 在 %(site_name)s 上的列表" @@ -2775,6 +2946,11 @@ msgstr "删除这些阅读日期" msgid "Add read dates for \"%(title)s\"" msgstr "" +#: bookwyrm/templates/report.html:5 +#: bookwyrm/templates/snippets/report_button.html:13 +msgid "Report" +msgstr "报告" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "结果来自" @@ -2847,13 +3023,13 @@ msgstr "否" #: bookwyrm/templates/settings/announcements/announcement.html:46 #: bookwyrm/templates/settings/announcements/announcement_form.html:44 -#: bookwyrm/templates/settings/dashboard/dashboard.html:71 +#: bookwyrm/templates/settings/dashboard/dashboard.html:82 msgid "Start date:" msgstr "开始日期:" #: bookwyrm/templates/settings/announcements/announcement.html:51 #: bookwyrm/templates/settings/announcements/announcement_form.html:54 -#: bookwyrm/templates/settings/dashboard/dashboard.html:77 +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "End date:" msgstr "结束日期:" @@ -2881,7 +3057,7 @@ msgstr "事件日期:" #: bookwyrm/templates/settings/announcements/announcements.html:3 #: bookwyrm/templates/settings/announcements/announcements.html:5 -#: bookwyrm/templates/settings/layout.html:72 +#: bookwyrm/templates/settings/layout.html:76 msgid "Announcements" msgstr "公告" @@ -2921,7 +3097,7 @@ msgid "Dashboard" msgstr "仪表盘" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Total users" msgstr "用户总数" @@ -2947,35 +3123,41 @@ msgstr[0] "%(display_count)s 条待处理报告" #: bookwyrm/templates/settings/dashboard/dashboard.html:54 #, python-format +msgid "%(display_count)s domain needs review" +msgid_plural "%(display_count)s domains need review" +msgstr[0] "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s 条邀请请求" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:76 msgid "Instance Activity" msgstr "实例活动" -#: bookwyrm/templates/settings/dashboard/dashboard.html:83 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Interval:" msgstr "区段:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:87 +#: bookwyrm/templates/settings/dashboard/dashboard.html:98 msgid "Days" msgstr "天" -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Weeks" msgstr "周" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "User signup activity" msgstr "用户注册活动" -#: bookwyrm/templates/settings/dashboard/dashboard.html:112 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Status activity" msgstr "状态动态" -#: bookwyrm/templates/settings/dashboard/dashboard.html:118 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "Works created" msgstr "创建的作品" @@ -3010,10 +3192,6 @@ msgstr "邮件屏蔽列表" msgid "When someone tries to register with an email from this domain, no account will be created. The registration process will appear to have worked." msgstr "当有人试图使用此域名的电子邮件注册时,帐户将不会被创建,但注册过程看起来会像是成功了的样子。" -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 -msgid "Domain" -msgstr "域名" - #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:29 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:27 msgid "Options" @@ -3071,10 +3249,6 @@ msgstr "软件:" msgid "Version:" msgstr "版本:" -#: bookwyrm/templates/settings/federation/edit_instance.html:74 -msgid "Notes:" -msgstr "备注:" - #: bookwyrm/templates/settings/federation/instance.html:19 msgid "Details" msgstr "详细" @@ -3124,12 +3298,8 @@ msgstr "编辑" msgid "No notes" msgstr "没有备注" -#: bookwyrm/templates/settings/federation/instance.html:94 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 -msgid "Actions" -msgstr "动作" - #: bookwyrm/templates/settings/federation/instance.html:98 +#: bookwyrm/templates/settings/link_domains/link_domains.html:87 #: bookwyrm/templates/snippets/block_button.html:5 msgid "Block" msgstr "屏蔽" @@ -3342,62 +3512,121 @@ msgstr "仲裁" msgid "Reports" msgstr "报告" -#: bookwyrm/templates/settings/layout.html:68 +#: bookwyrm/templates/settings/layout.html:67 +#: bookwyrm/templates/settings/link_domains/link_domains.html:5 +#: bookwyrm/templates/settings/link_domains/link_domains.html:7 +msgid "Link Domains" +msgstr "" + +#: bookwyrm/templates/settings/layout.html:72 msgid "Instance Settings" msgstr "实例设置" -#: bookwyrm/templates/settings/layout.html:76 +#: bookwyrm/templates/settings/layout.html:80 #: bookwyrm/templates/settings/site.html:4 #: bookwyrm/templates/settings/site.html:6 msgid "Site Settings" msgstr "站点设置" -#: bookwyrm/templates/settings/reports/report.html:5 -#: bookwyrm/templates/settings/reports/report.html:8 -#: bookwyrm/templates/settings/reports/report_preview.html:6 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5 #, python-format -msgid "Report #%(report_id)s: %(username)s" -msgstr "报告 #%(report_id)s: %(username)s" +msgid "Set display name for %(url)s" +msgstr "" -#: bookwyrm/templates/settings/reports/report.html:9 +#: 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 "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:45 +msgid "Set display name" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:53 +msgid "View links" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:96 +msgid "No domains currently approved" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:98 +msgid "No domains currently pending" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:100 +msgid "No domains currently blocked" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_table.html:39 +msgid "No links available for this domain." +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:11 msgid "Back to reports" msgstr "回到报告" #: 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:40 +msgid "Status has been deleted" +msgstr "状态已被删除" + +#: bookwyrm/templates/settings/reports/report.html:52 +msgid "Reported links" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "监察员评论" -#: bookwyrm/templates/settings/reports/report.html:41 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "评论" -#: bookwyrm/templates/settings/reports/report.html:46 -msgid "Reported statuses" -msgstr "被报告的状态" +#: bookwyrm/templates/settings/reports/report_header.html:6 +#, python-format +msgid "Report #%(report_id)s: Status posted by @%(username)s" +msgstr "" -#: bookwyrm/templates/settings/reports/report.html:48 -msgid "No statuses reported" -msgstr "没有被报告的状态" +#: bookwyrm/templates/settings/reports/report_header.html:12 +#, python-format +msgid "Report #%(report_id)s: Link added by @%(username)s" +msgstr "" -#: bookwyrm/templates/settings/reports/report.html:54 -msgid "Status has been deleted" -msgstr "状态已被删除" +#: bookwyrm/templates/settings/reports/report_header.html:18 +#, python-format +msgid "Report #%(report_id)s: User @%(username)s" +msgstr "" -#: bookwyrm/templates/settings/reports/report_preview.html:13 +#: bookwyrm/templates/settings/reports/report_links_table.html:17 +msgid "Block domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_preview.html:17 msgid "No notes provided" msgstr "没有提供摘记" -#: bookwyrm/templates/settings/reports/report_preview.html:20 +#: bookwyrm/templates/settings/reports/report_preview.html:24 #, python-format -msgid "Reported by %(username)s" -msgstr "由 %(username)s 报告" +msgid "Reported by @%(username)s" +msgstr "" -#: bookwyrm/templates/settings/reports/report_preview.html:30 +#: bookwyrm/templates/settings/reports/report_preview.html:34 msgid "Re-open" msgstr "重新开启" -#: bookwyrm/templates/settings/reports/report_preview.html:32 +#: bookwyrm/templates/settings/reports/report_preview.html:36 msgid "Resolve" msgstr "已解决" @@ -3525,7 +3754,7 @@ msgid "Invite request text:" msgstr "邀请请求文本:" #: bookwyrm/templates/settings/users/delete_user_form.html:5 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:31 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:32 msgid "Permanently delete user" msgstr "永久删除用户" @@ -3635,15 +3864,19 @@ msgstr "查看实例" msgid "Permanently deleted" msgstr "已永久删除" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:20 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 +msgid "User Actions" +msgstr "" + +#: bookwyrm/templates/settings/users/user_moderation_actions.html:21 msgid "Suspend user" msgstr "停用用户" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:25 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:26 msgid "Un-suspend user" msgstr "取消停用用户" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:47 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:48 msgid "Access level:" msgstr "访问级别:" @@ -3707,15 +3940,15 @@ msgstr "完成时间" msgid "This shelf is empty." msgstr "此书架是空的。" -#: bookwyrm/templates/snippets/add_to_group_button.html:15 +#: bookwyrm/templates/snippets/add_to_group_button.html:16 msgid "Invite" msgstr "邀请" -#: bookwyrm/templates/snippets/add_to_group_button.html:24 +#: bookwyrm/templates/snippets/add_to_group_button.html:25 msgid "Uninvite" msgstr "移除邀请" -#: bookwyrm/templates/snippets/add_to_group_button.html:28 +#: bookwyrm/templates/snippets/add_to_group_button.html:29 #, python-format msgid "Remove @%(username)s" msgstr "移除 @%(username)s" @@ -3779,14 +4012,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 "内容" @@ -3802,7 +4035,7 @@ msgstr "前有剧透!" msgid "Include spoiler alert" msgstr "加入剧透警告" -#: bookwyrm/templates/snippets/create_status/layout.html:48 +#: bookwyrm/templates/snippets/create_status/layout.html:47 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "评论:" @@ -3811,33 +4044,33 @@ msgstr "评论:" msgid "Post" msgstr "发布" -#: bookwyrm/templates/snippets/create_status/quotation.html:17 +#: bookwyrm/templates/snippets/create_status/quotation.html:16 msgid "Quote:" msgstr "引用:" -#: bookwyrm/templates/snippets/create_status/quotation.html:25 +#: bookwyrm/templates/snippets/create_status/quotation.html:24 #, python-format msgid "An excerpt from '%(book_title)s'" msgstr "摘自《%(book_title)s》的节录" -#: bookwyrm/templates/snippets/create_status/quotation.html:32 +#: bookwyrm/templates/snippets/create_status/quotation.html:31 msgid "Position:" msgstr "位置:" -#: bookwyrm/templates/snippets/create_status/quotation.html:45 +#: bookwyrm/templates/snippets/create_status/quotation.html:44 msgid "On page:" msgstr "页码:" -#: bookwyrm/templates/snippets/create_status/quotation.html:51 +#: bookwyrm/templates/snippets/create_status/quotation.html:50 msgid "At percent:" msgstr "百分比:" -#: bookwyrm/templates/snippets/create_status/review.html:25 +#: bookwyrm/templates/snippets/create_status/review.html:24 #, python-format msgid "Your review of '%(book_title)s'" msgstr "你对《%(book_title)s》的书评" -#: bookwyrm/templates/snippets/create_status/review.html:40 +#: bookwyrm/templates/snippets/create_status/review.html:39 msgid "Review:" msgstr "书评:" @@ -3864,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 "应用过滤器" @@ -3891,7 +4124,7 @@ msgid "Unfollow" msgstr "取消关注" #: bookwyrm/templates/snippets/follow_request_buttons.html:7 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:8 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:9 msgid "Accept" msgstr "接受" @@ -3927,13 +4160,13 @@ msgstr[0] "为 %(title)s 打了分: %(display_ #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +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] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": %(review_title)s" +msgid "Review of \"%(book_title)s\": %(review_title)s" msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 @@ -4004,11 +4237,11 @@ msgstr "仅关注者" msgid "Post privacy" msgstr "发文隐私" -#: bookwyrm/templates/snippets/rate_action.html:4 +#: bookwyrm/templates/snippets/rate_action.html:5 msgid "Leave a rating" msgstr "留下评价" -#: bookwyrm/templates/snippets/rate_action.html:19 +#: bookwyrm/templates/snippets/rate_action.html:20 msgid "Rate" msgstr "评价" @@ -4040,21 +4273,31 @@ msgstr "想要阅读《%(book_title)s》" msgid "Sign Up" msgstr "注册" -#: bookwyrm/templates/snippets/report_button.html:13 -msgid "Report" -msgstr "报告" +#: bookwyrm/templates/snippets/report_modal.html:8 +#, python-format +msgid "Report @%(username)s's status" +msgstr "" -#: bookwyrm/templates/snippets/report_modal.html:6 +#: bookwyrm/templates/snippets/report_modal.html:10 +#, python-format +msgid "Report %(domain)s link" +msgstr "" + +#: bookwyrm/templates/snippets/report_modal.html:12 #, python-format msgid "Report @%(username)s" msgstr "报告 %(username)s" -#: bookwyrm/templates/snippets/report_modal.html:23 +#: bookwyrm/templates/snippets/report_modal.html:34 #, python-format msgid "This report will be sent to %(site_name)s's moderators for review." msgstr "本报告会被发送至 %(site_name)s 的监察员以复查。" -#: bookwyrm/templates/snippets/report_modal.html:26 +#: bookwyrm/templates/snippets/report_modal.html:36 +msgid "Links from this domain will be removed until your report has been reviewed." +msgstr "" + +#: bookwyrm/templates/snippets/report_modal.html:41 msgid "More info about this report:" msgstr "关于本报告的更多信息" @@ -4092,29 +4335,29 @@ msgstr "从 %(name)s 移除" msgid "Finish reading" msgstr "完成阅读" -#: bookwyrm/templates/snippets/status/content_status.html:75 +#: bookwyrm/templates/snippets/status/content_status.html:73 msgid "Content warning" msgstr "内容警告" -#: bookwyrm/templates/snippets/status/content_status.html:82 +#: bookwyrm/templates/snippets/status/content_status.html:80 msgid "Show status" msgstr "显示状态" -#: bookwyrm/templates/snippets/status/content_status.html:104 +#: bookwyrm/templates/snippets/status/content_status.html:102 #, python-format msgid "(Page %(page)s)" msgstr "(第 %(page)s 页)" -#: bookwyrm/templates/snippets/status/content_status.html:106 +#: bookwyrm/templates/snippets/status/content_status.html:104 #, python-format msgid "(%(percent)s%%)" msgstr "(%(percent)s%%)" -#: bookwyrm/templates/snippets/status/content_status.html:128 +#: bookwyrm/templates/snippets/status/content_status.html:126 msgid "Open image in new window" msgstr "在新窗口中打开图像" -#: bookwyrm/templates/snippets/status/content_status.html:147 +#: bookwyrm/templates/snippets/status/content_status.html:145 msgid "Hide status" msgstr "隐藏状态" @@ -4405,8 +4648,14 @@ msgstr "没有找到使用该邮箱的用户。" msgid "A password reset link was sent to {email}" msgstr "密码重置连接已发送给 {email}" -#: bookwyrm/views/rss_feed.py:35 +#: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" msgstr "{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] "" + diff --git a/locale/zh_Hant/LC_MESSAGES/django.mo b/locale/zh_Hant/LC_MESSAGES/django.mo index 9ae22f1eb..f9ca27be9 100644 Binary files a/locale/zh_Hant/LC_MESSAGES/django.mo and b/locale/zh_Hant/LC_MESSAGES/django.mo differ diff --git a/locale/zh_Hant/LC_MESSAGES/django.po b/locale/zh_Hant/LC_MESSAGES/django.po index 5856a5a60..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-13 16:54+0000\n" -"PO-Revision-Date: 2022-01-13 17:50\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:351 +#: 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:365 +#: bookwyrm/forms.py:392 msgid "One Day" msgstr "一天" -#: bookwyrm/forms.py:366 +#: bookwyrm/forms.py:393 msgid "One Week" msgstr "一週" -#: bookwyrm/forms.py:367 +#: bookwyrm/forms.py:394 msgid "One Month" msgstr "一個月" -#: bookwyrm/forms.py:368 +#: bookwyrm/forms.py:395 msgid "Does Not Expire" msgstr "永不失效" -#: bookwyrm/forms.py:372 +#: bookwyrm/forms.py:399 #, python-brace-format msgid "{i} uses" msgstr "" -#: bookwyrm/forms.py:373 +#: bookwyrm/forms.py:400 msgid "Unlimited" msgstr "不受限" -#: bookwyrm/forms.py:469 +#: bookwyrm/forms.py:502 msgid "List Order" msgstr "列表順序" -#: bookwyrm/forms.py:470 +#: bookwyrm/forms.py:503 msgid "Book Title" msgstr "書名" -#: bookwyrm/forms.py:471 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:33 +#: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "評價" -#: bookwyrm/forms.py:473 bookwyrm/templates/lists/list.html:134 +#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177 msgid "Sort By" msgstr "排序方式" -#: bookwyrm/forms.py:477 +#: bookwyrm/forms.py:510 msgid "Ascending" msgstr "升序" -#: bookwyrm/forms.py:478 +#: bookwyrm/forms.py:511 msgid "Descending" msgstr "降序" -#: bookwyrm/forms.py:491 +#: bookwyrm/forms.py:524 msgid "Reading finish date cannot be before start date." msgstr "" @@ -84,8 +92,9 @@ msgstr "" msgid "Could not find a match for book" msgstr "" -#: bookwyrm/models/base_model.py:17 +#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 +#: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "" @@ -105,23 +114,23 @@ msgstr "" msgid "Domain block" msgstr "" -#: bookwyrm/models/book.py:250 +#: bookwyrm/models/book.py:253 msgid "Audiobook" msgstr "" -#: bookwyrm/models/book.py:251 +#: bookwyrm/models/book.py:254 msgid "eBook" msgstr "" -#: bookwyrm/models/book.py:252 +#: bookwyrm/models/book.py:255 msgid "Graphic novel" msgstr "" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:256 msgid "Hardcover" msgstr "" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:257 msgid "Paperback" msgstr "" @@ -131,33 +140,34 @@ msgstr "" msgid "Federated" msgstr "跨站" -#: bookwyrm/models/federated_server.py:12 +#: bookwyrm/models/federated_server.py:12 bookwyrm/models/link.py:71 #: bookwyrm/templates/settings/federation/edit_instance.html:44 #: bookwyrm/templates/settings/federation/instance.html:10 #: bookwyrm/templates/settings/federation/instance_list.html:23 +#: bookwyrm/templates/settings/link_domains/link_domains.html:27 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 @@ -165,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 @@ -173,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 @@ -189,6 +199,23 @@ msgstr "關注者" msgid "Private" msgstr "私密" +#: bookwyrm/models/link.py:51 +msgid "Free" +msgstr "" + +#: bookwyrm/models/link.py:52 +msgid "Purchasable" +msgstr "" + +#: bookwyrm/models/link.py:53 +msgid "Available for loan" +msgstr "" + +#: bookwyrm/models/link.py:70 +#: bookwyrm/templates/settings/link_domains/link_domains.html:23 +msgid "Approved" +msgstr "" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "書評" @@ -205,69 +232,73 @@ msgstr "" msgid "Everything else" msgstr "" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home Timeline" msgstr "主頁時間線" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:173 msgid "Home" msgstr "主頁" -#: bookwyrm/settings.py:122 +#: bookwyrm/settings.py:174 msgid "Books Timeline" msgstr "" -#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "書目" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:248 msgid "English" msgstr "English(英語)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:249 msgid "Deutsch (German)" msgstr "Deutsch(德語)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:250 msgid "Español (Spanish)" msgstr "Español(西班牙語)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:251 msgid "Galego (Galician)" msgstr "" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:252 msgid "Italiano (Italian)" msgstr "" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:253 msgid "Français (French)" msgstr "Français(法語)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:254 msgid "Lietuvių (Lithuanian)" msgstr "" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:255 msgid "Norsk (Norwegian)" msgstr "" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:256 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:257 msgid "Português Europeu (European Portuguese)" msgstr "" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:258 +msgid "Svenska (Swedish)" +msgstr "" + +#: bookwyrm/settings.py:259 msgid "简体中文 (Simplified Chinese)" msgstr "簡體中文" -#: bookwyrm/settings.py:207 +#: bookwyrm/settings.py:260 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文" @@ -296,59 +327,57 @@ msgstr "某些東西出錯了!抱歉。" msgid "About" msgstr "" -#: bookwyrm/templates/about/about.html:18 +#: bookwyrm/templates/about/about.html:19 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "歡迎來到 %(site_name)s!" -#: bookwyrm/templates/about/about.html:22 +#: 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 "" -#: bookwyrm/templates/about/about.html:39 +#: bookwyrm/templates/about/about.html:40 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "" -#: bookwyrm/templates/about/about.html:58 +#: bookwyrm/templates/about/about.html:59 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "" -#: bookwyrm/templates/about/about.html:77 +#: bookwyrm/templates/about/about.html:78 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "" -#: bookwyrm/templates/about/about.html:88 +#: 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 "" -#: bookwyrm/templates/about/about.html:95 +#: bookwyrm/templates/about/about.html:96 msgid "Meet your admins" msgstr "" -#: bookwyrm/templates/about/about.html:98 +#: bookwyrm/templates/about/about.html:99 #, python-format -msgid "\n" -" %(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.\n" -" " +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 "" -#: bookwyrm/templates/about/about.html:112 +#: bookwyrm/templates/about/about.html:113 msgid "Moderator" msgstr "" -#: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131 +#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131 msgid "Admin" msgstr "管理員" -#: bookwyrm/templates/about/about.html:130 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:13 +#: 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 "發送私信" @@ -407,7 +436,7 @@ msgid "Copy address" msgstr "" #: bookwyrm/templates/annual_summary/layout.html:68 -#: bookwyrm/templates/lists/list.html:230 +#: bookwyrm/templates/lists/list.html:269 msgid "Copied!" msgstr "" @@ -474,7 +503,7 @@ msgstr "" #: bookwyrm/templates/annual_summary/layout.html:245 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 -#: bookwyrm/templates/landing/large-book.html:25 +#: bookwyrm/templates/landing/large-book.html:26 #: bookwyrm/templates/landing/small-book.html:18 msgid "by" msgstr "作者" @@ -524,61 +553,61 @@ msgstr "" msgid "Edit Author" msgstr "編輯作者" -#: bookwyrm/templates/author/author.html:40 +#: bookwyrm/templates/author/author.html:35 msgid "Author details" msgstr "" -#: bookwyrm/templates/author/author.html:44 +#: bookwyrm/templates/author/author.html:39 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "別名:" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:48 msgid "Born:" msgstr "出生:" -#: bookwyrm/templates/author/author.html:60 +#: bookwyrm/templates/author/author.html:55 msgid "Died:" msgstr "逝世:" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:65 msgid "External links" msgstr "" -#: bookwyrm/templates/author/author.html:75 +#: bookwyrm/templates/author/author.html:70 msgid "Wikipedia" msgstr "維基百科" -#: bookwyrm/templates/author/author.html:83 +#: bookwyrm/templates/author/author.html:78 msgid "View ISNI record" msgstr "" -#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/author.html:83 #: bookwyrm/templates/author/sync_modal.html:5 #: bookwyrm/templates/book/book.html:122 #: bookwyrm/templates/book/sync_modal.html:5 msgid "Load data" msgstr "" -#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/author/author.html:87 #: bookwyrm/templates/book/book.html:126 msgid "View on OpenLibrary" msgstr "在 OpenLibrary 檢視" -#: bookwyrm/templates/author/author.html:107 +#: bookwyrm/templates/author/author.html:102 #: bookwyrm/templates/book/book.html:140 msgid "View on Inventaire" msgstr "在 Inventaire 檢視" -#: bookwyrm/templates/author/author.html:123 +#: bookwyrm/templates/author/author.html:118 msgid "View on LibraryThing" msgstr "" -#: bookwyrm/templates/author/author.html:131 +#: bookwyrm/templates/author/author.html:126 msgid "View on Goodreads" msgstr "" -#: bookwyrm/templates/author/author.html:145 +#: bookwyrm/templates/author/author.html:141 #, python-format msgid "Books by %(name)s" msgstr "%(name)s 所著的書" @@ -608,7 +637,9 @@ msgid "Metadata" msgstr "元資料" #: bookwyrm/templates/author/edit_author.html:35 -#: bookwyrm/templates/lists/form.html:9 bookwyrm/templates/shelf/form.html:9 +#: bookwyrm/templates/lists/form.html:9 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:14 +#: bookwyrm/templates/shelf/form.html:9 msgid "Name:" msgstr "名稱:" @@ -662,8 +693,11 @@ msgstr "" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 +#: bookwyrm/templates/book/file_links/add_link_modal.html:58 +#: 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 @@ -671,7 +705,7 @@ msgstr "" #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 #: bookwyrm/templates/settings/site.html:133 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:68 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 msgid "Save" @@ -683,13 +717,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/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/settings/federation/instance.html:88 -#: bookwyrm/templates/snippets/report_modal.html:38 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 +#: bookwyrm/templates/snippets/report_modal.html:54 msgid "Cancel" msgstr "取消" @@ -701,9 +739,9 @@ msgstr "" #: bookwyrm/templates/author/sync_modal.html:22 #: bookwyrm/templates/book/edit/edit_book.html:108 #: bookwyrm/templates/book/sync_modal.html:22 -#: bookwyrm/templates/groups/members.html:30 +#: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 -#: bookwyrm/templates/snippets/remove_from_group_button.html:16 +#: bookwyrm/templates/snippets/remove_from_group_button.html:17 msgid "Confirm" msgstr "確認" @@ -786,8 +824,8 @@ msgid "Places" msgstr "地點" #: bookwyrm/templates/book/book.html:348 -#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 -#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 +#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74 +#: 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 @@ -801,7 +839,8 @@ msgstr "新增到列表" #: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/cover_add_modal.html:31 -#: bookwyrm/templates/lists/list.html:208 +#: 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" @@ -903,7 +942,7 @@ msgid "Back" msgstr "返回" #: bookwyrm/templates/book/edit/edit_book_form.html:21 -#: bookwyrm/templates/snippets/create_status/review.html:16 +#: bookwyrm/templates/snippets/create_status/review.html:15 msgid "Title:" msgstr "標題:" @@ -981,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 "格式:" @@ -1019,20 +1058,130 @@ 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 "" +#: bookwyrm/templates/book/file_links/add_link_modal.html:6 +msgid "Add file link" +msgstr "" + +#: 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 "" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:24 +msgid "URL:" +msgstr "" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:29 +msgid "File type:" +msgstr "" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:48 +msgid "Availability:" +msgstr "" + +#: 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 "" + +#: bookwyrm/templates/book/file_links/edit_links.html:11 +#, python-format +msgid "\n" +" Links for \"%(title)s\"\n" +" " +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:32 +#: bookwyrm/templates/settings/link_domains/link_table.html:6 +msgid "URL" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:33 +#: bookwyrm/templates/settings/link_domains/link_table.html:7 +msgid "Added by" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:34 +#: bookwyrm/templates/settings/link_domains/link_table.html:8 +msgid "Filetype" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:35 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 +#: bookwyrm/templates/settings/reports/report_links_table.html:5 +msgid "Domain" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:36 +#: bookwyrm/templates/import/import_status.html:127 +#: bookwyrm/templates/settings/announcements/announcements.html:38 +#: bookwyrm/templates/settings/federation/instance_list.html:46 +#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 +#: bookwyrm/templates/settings/invites/status_filter.html:5 +#: bookwyrm/templates/settings/users/user_admin.html:34 +#: bookwyrm/templates/settings/users/user_info.html:20 +msgid "Status" +msgstr "狀態" + +#: bookwyrm/templates/book/file_links/edit_links.html:37 +#: bookwyrm/templates/settings/federation/instance.html:94 +#: bookwyrm/templates/settings/reports/report_links_table.html:6 +msgid "Actions" +msgstr "動作" + +#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 +msgid "Report spam" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:97 +msgid "No links available for this book." +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:108 +#: bookwyrm/templates/book/file_links/links.html:18 +msgid "Add link to file" +msgstr "" + +#: bookwyrm/templates/book/file_links/file_link_page.html:6 +msgid "File Links" +msgstr "" + +#: bookwyrm/templates/book/file_links/links.html:9 +msgid "Get a copy" +msgstr "" + +#: bookwyrm/templates/book/file_links/links.html:47 +msgid "No links available" +msgstr "" + +#: bookwyrm/templates/book/file_links/verification_modal.html:5 +msgid "Leaving BookWyrm" +msgstr "" + +#: 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 "" + +#: bookwyrm/templates/book/file_links/verification_modal.html:20 +msgid "Continue" +msgstr "" + #: bookwyrm/templates/book/publisher_info.html:23 #, python-format msgid "%(format)s, %(pages)s pages" @@ -1103,8 +1252,8 @@ msgstr "" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:93 -#: bookwyrm/templates/snippets/report_modal.html:37 +#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "提交" @@ -1408,16 +1557,11 @@ msgstr "所有訊息" msgid "You have no messages right now." msgstr "你現在沒有訊息。" -#: bookwyrm/templates/feed/feed.html:28 -#, python-format -msgid "load 0 unread status(es)" -msgstr "" - -#: 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 "現在還沒有任何活動!嘗試著從關注一個使用者開始吧" -#: bookwyrm/templates/feed/feed.html:52 +#: bookwyrm/templates/feed/feed.html:55 msgid "Alternatively, you can try enabling more status types" msgstr "" @@ -1506,7 +1650,7 @@ msgid "What are you reading?" msgstr "你在閱讀什麼?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162 +#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:205 msgid "Search for a book" msgstr "搜尋書目" @@ -1524,9 +1668,9 @@ msgstr "你可以在開始使用 %(site_name)s 後新增書目。" #: bookwyrm/templates/get_started/books.html:17 #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166 +#: 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/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -1542,7 +1686,7 @@ msgid "Popular on %(site_name)s" msgstr "%(site_name)s 上的熱門" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:179 +#: bookwyrm/templates/lists/list.html:222 msgid "No books found" msgstr "沒有找到書目" @@ -1647,7 +1791,7 @@ msgstr "" #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 #: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:14 msgid "Delete" msgstr "刪除" @@ -1667,17 +1811,17 @@ msgstr "" msgid "Delete group" msgstr "" -#: bookwyrm/templates/groups/group.html:22 +#: bookwyrm/templates/groups/group.html:21 msgid "Members of this group can create group-curated lists." msgstr "" -#: bookwyrm/templates/groups/group.html:27 +#: bookwyrm/templates/groups/group.html:26 #: bookwyrm/templates/lists/create_form.html:5 #: bookwyrm/templates/lists/lists.html:20 msgid "Create List" msgstr "建立列表" -#: bookwyrm/templates/groups/group.html:40 +#: bookwyrm/templates/groups/group.html:39 msgid "This group has no lists" msgstr "" @@ -1685,15 +1829,15 @@ msgstr "" msgid "Edit group" msgstr "" -#: bookwyrm/templates/groups/members.html:12 +#: bookwyrm/templates/groups/members.html:11 msgid "Search to add a user" msgstr "" -#: bookwyrm/templates/groups/members.html:33 +#: bookwyrm/templates/groups/members.html:32 msgid "Leave group" msgstr "" -#: bookwyrm/templates/groups/members.html:55 +#: bookwyrm/templates/groups/members.html:54 #: bookwyrm/templates/groups/suggested_users.html:35 #: bookwyrm/templates/snippets/suggested_users.html:31 #: bookwyrm/templates/user/user_preview.html:36 @@ -1845,19 +1989,10 @@ msgid "Review" msgstr "書評" #: bookwyrm/templates/import/import_status.html:124 +#: bookwyrm/templates/settings/link_domains/link_table.html:9 msgid "Book" msgstr "書目" -#: bookwyrm/templates/import/import_status.html:127 -#: bookwyrm/templates/settings/announcements/announcements.html:38 -#: bookwyrm/templates/settings/federation/instance_list.html:46 -#: bookwyrm/templates/settings/invites/manage_invite_requests.html:44 -#: bookwyrm/templates/settings/invites/status_filter.html:5 -#: bookwyrm/templates/settings/users/user_admin.html:34 -#: bookwyrm/templates/settings/users/user_info.html:20 -msgid "Status" -msgstr "狀態" - #: bookwyrm/templates/import/import_status.html:135 msgid "Import preview unavailable." msgstr "" @@ -1896,7 +2031,8 @@ msgid "Approving a suggestion will permanently add the suggested book to your sh msgstr "" #: 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 "批准" @@ -1905,7 +2041,7 @@ msgid "Reject" msgstr "" #: bookwyrm/templates/import/tooltip.html:6 -msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." +msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." msgstr "" #: bookwyrm/templates/import/troubleshoot.html:7 @@ -2106,6 +2242,21 @@ msgstr "在 %(support_title)s msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "BookWyrm 是開源軟體。你可以在 GitHub 貢獻或報告問題。" +#: bookwyrm/templates/lists/add_item_modal.html:8 +#, python-format +msgid "Add \"%(title)s\" to this list" +msgstr "" + +#: bookwyrm/templates/lists/add_item_modal.html:12 +#, python-format +msgid "Suggest \"%(title)s\" for this list" +msgstr "" + +#: bookwyrm/templates/lists/add_item_modal.html:39 +#: bookwyrm/templates/lists/list.html:249 +msgid "Suggest" +msgstr "推薦" + #: bookwyrm/templates/lists/bookmark_button.html:30 msgid "Un-save" msgstr "" @@ -2125,23 +2276,29 @@ msgstr "由 %(username)s 建立並管理" msgid "Created by %(username)s" msgstr "由 %(username)s 建立" -#: bookwyrm/templates/lists/curate.html:11 +#: bookwyrm/templates/lists/curate.html:12 msgid "Curate" msgstr "" -#: bookwyrm/templates/lists/curate.html:20 +#: bookwyrm/templates/lists/curate.html:21 msgid "Pending Books" msgstr "等候中的書目" -#: bookwyrm/templates/lists/curate.html:23 +#: bookwyrm/templates/lists/curate.html:24 msgid "You're all set!" msgstr "都弄好了!" -#: bookwyrm/templates/lists/curate.html:43 +#: bookwyrm/templates/lists/curate.html:45 +#: bookwyrm/templates/lists/list.html:83 +#, python-format +msgid "%(username)s says:" +msgstr "" + +#: bookwyrm/templates/lists/curate.html:55 msgid "Suggested by" msgstr "推薦來自" -#: bookwyrm/templates/lists/curate.html:65 +#: bookwyrm/templates/lists/curate.html:77 msgid "Discard" msgstr "放棄" @@ -2154,18 +2311,18 @@ msgstr "" msgid "Edit List" msgstr "編輯列表" -#: bookwyrm/templates/lists/embed-list.html:7 +#: bookwyrm/templates/lists/embed-list.html:8 #, python-format msgid "%(list_name)s, a list by %(owner)s" msgstr "" -#: bookwyrm/templates/lists/embed-list.html:17 +#: bookwyrm/templates/lists/embed-list.html:18 #, python-format msgid "on %(site_name)s" msgstr "" -#: bookwyrm/templates/lists/embed-list.html:26 -#: bookwyrm/templates/lists/list.html:42 +#: bookwyrm/templates/lists/embed-list.html:27 +#: bookwyrm/templates/lists/list.html:44 msgid "This list is currently empty" msgstr "此列表當前是空的" @@ -2226,75 +2383,89 @@ msgstr "" msgid "Delete list" msgstr "" -#: bookwyrm/templates/lists/list.html:34 +#: bookwyrm/templates/lists/item_notes_field.html:7 +#: bookwyrm/templates/settings/federation/edit_instance.html:74 +msgid "Notes:" +msgstr "備註:" + +#: bookwyrm/templates/lists/item_notes_field.html:19 +msgid "An optional note that will be displayed with the book." +msgstr "" + +#: bookwyrm/templates/lists/list.html:36 msgid "You successfully suggested a book for this list!" msgstr "你成功!向該列表推薦了一本書" -#: bookwyrm/templates/lists/list.html:36 +#: bookwyrm/templates/lists/list.html:38 msgid "You successfully added a book to this list!" msgstr "你成功在此列表新增了一本書!" -#: bookwyrm/templates/lists/list.html:80 +#: bookwyrm/templates/lists/list.html:96 +msgid "Edit notes" +msgstr "" + +#: bookwyrm/templates/lists/list.html:111 +msgid "Add notes" +msgstr "" + +#: bookwyrm/templates/lists/list.html:123 #, python-format msgid "Added by %(username)s" msgstr "由 %(username)s 新增" -#: bookwyrm/templates/lists/list.html:95 +#: bookwyrm/templates/lists/list.html:138 msgid "List position" msgstr "列表位置:" -#: bookwyrm/templates/lists/list.html:101 +#: bookwyrm/templates/lists/list.html:144 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 msgid "Set" msgstr "設定" -#: bookwyrm/templates/lists/list.html:116 -#: bookwyrm/templates/snippets/remove_from_group_button.html:19 +#: bookwyrm/templates/lists/list.html:159 +#: bookwyrm/templates/snippets/remove_from_group_button.html:20 msgid "Remove" msgstr "移除" -#: bookwyrm/templates/lists/list.html:130 -#: bookwyrm/templates/lists/list.html:147 +#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:190 msgid "Sort List" msgstr "排序列表" -#: bookwyrm/templates/lists/list.html:140 +#: bookwyrm/templates/lists/list.html:183 msgid "Direction" msgstr "方向" -#: bookwyrm/templates/lists/list.html:154 +#: bookwyrm/templates/lists/list.html:197 msgid "Add Books" msgstr "新增書目" -#: bookwyrm/templates/lists/list.html:156 +#: bookwyrm/templates/lists/list.html:199 msgid "Suggest Books" msgstr "推薦書目" -#: bookwyrm/templates/lists/list.html:167 +#: bookwyrm/templates/lists/list.html:210 msgid "search" msgstr "搜尋" -#: bookwyrm/templates/lists/list.html:173 +#: bookwyrm/templates/lists/list.html:216 msgid "Clear search" msgstr "清除搜尋" -#: bookwyrm/templates/lists/list.html:178 +#: bookwyrm/templates/lists/list.html:221 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "沒有符合 \"%(query)s\" 請求的書目" -#: bookwyrm/templates/lists/list.html:210 -msgid "Suggest" -msgstr "推薦" - -#: bookwyrm/templates/lists/list.html:221 +#: bookwyrm/templates/lists/list.html:260 msgid "Embed this list on a website" msgstr "" -#: bookwyrm/templates/lists/list.html:229 +#: bookwyrm/templates/lists/list.html:268 msgid "Copy embed code" msgstr "" -#: bookwyrm/templates/lists/list.html:231 +#: bookwyrm/templates/lists/list.html:270 #, python-format msgid "%(list_name)s, a list by %(owner)s on %(site_name)s" msgstr "" @@ -2775,6 +2946,11 @@ msgstr "刪除這些閱讀日期" msgid "Add read dates for \"%(title)s\"" msgstr "" +#: bookwyrm/templates/report.html:5 +#: bookwyrm/templates/snippets/report_button.html:13 +msgid "Report" +msgstr "舉報" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "" @@ -2847,13 +3023,13 @@ msgstr "否" #: bookwyrm/templates/settings/announcements/announcement.html:46 #: bookwyrm/templates/settings/announcements/announcement_form.html:44 -#: bookwyrm/templates/settings/dashboard/dashboard.html:71 +#: bookwyrm/templates/settings/dashboard/dashboard.html:82 msgid "Start date:" msgstr "開始日期:" #: bookwyrm/templates/settings/announcements/announcement.html:51 #: bookwyrm/templates/settings/announcements/announcement_form.html:54 -#: bookwyrm/templates/settings/dashboard/dashboard.html:77 +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "End date:" msgstr "結束日期:" @@ -2881,7 +3057,7 @@ msgstr "" #: bookwyrm/templates/settings/announcements/announcements.html:3 #: bookwyrm/templates/settings/announcements/announcements.html:5 -#: bookwyrm/templates/settings/layout.html:72 +#: bookwyrm/templates/settings/layout.html:76 msgid "Announcements" msgstr "公告" @@ -2921,7 +3097,7 @@ msgid "Dashboard" msgstr "" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Total users" msgstr "" @@ -2947,35 +3123,41 @@ msgstr[0] "" #: bookwyrm/templates/settings/dashboard/dashboard.html:54 #, python-format +msgid "%(display_count)s domain needs review" +msgid_plural "%(display_count)s domains need review" +msgstr[0] "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:76 msgid "Instance Activity" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:83 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Interval:" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:87 +#: bookwyrm/templates/settings/dashboard/dashboard.html:98 msgid "Days" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Weeks" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "User signup activity" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:112 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Status activity" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:118 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "Works created" msgstr "" @@ -3010,10 +3192,6 @@ msgstr "" msgid "When someone tries to register with an email from this domain, no account will be created. The registration process will appear to have worked." msgstr "" -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 -msgid "Domain" -msgstr "" - #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:29 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:27 msgid "Options" @@ -3071,10 +3249,6 @@ msgstr "軟件:" msgid "Version:" msgstr "版本:" -#: bookwyrm/templates/settings/federation/edit_instance.html:74 -msgid "Notes:" -msgstr "備註:" - #: bookwyrm/templates/settings/federation/instance.html:19 msgid "Details" msgstr "詳細" @@ -3124,12 +3298,8 @@ msgstr "編輯" msgid "No notes" msgstr "" -#: bookwyrm/templates/settings/federation/instance.html:94 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 -msgid "Actions" -msgstr "動作" - #: bookwyrm/templates/settings/federation/instance.html:98 +#: bookwyrm/templates/settings/link_domains/link_domains.html:87 #: bookwyrm/templates/snippets/block_button.html:5 msgid "Block" msgstr "封鎖" @@ -3342,62 +3512,121 @@ msgstr "" msgid "Reports" msgstr "舉報" -#: bookwyrm/templates/settings/layout.html:68 +#: bookwyrm/templates/settings/layout.html:67 +#: bookwyrm/templates/settings/link_domains/link_domains.html:5 +#: bookwyrm/templates/settings/link_domains/link_domains.html:7 +msgid "Link Domains" +msgstr "" + +#: bookwyrm/templates/settings/layout.html:72 msgid "Instance Settings" msgstr "實例設定" -#: bookwyrm/templates/settings/layout.html:76 +#: bookwyrm/templates/settings/layout.html:80 #: bookwyrm/templates/settings/site.html:4 #: bookwyrm/templates/settings/site.html:6 msgid "Site Settings" msgstr "網站設定" -#: bookwyrm/templates/settings/reports/report.html:5 -#: bookwyrm/templates/settings/reports/report.html:8 -#: bookwyrm/templates/settings/reports/report_preview.html:6 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5 #, python-format -msgid "Report #%(report_id)s: %(username)s" -msgstr "舉報 #%(report_id)s: %(username)s" +msgid "Set display name for %(url)s" +msgstr "" -#: bookwyrm/templates/settings/reports/report.html:9 +#: 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 "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:45 +msgid "Set display name" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:53 +msgid "View links" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:96 +msgid "No domains currently approved" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:98 +msgid "No domains currently pending" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:100 +msgid "No domains currently blocked" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_table.html:39 +msgid "No links available for this domain." +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:11 msgid "Back to reports" msgstr "回到舉報" #: 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:40 +msgid "Status has been deleted" +msgstr "狀態已被刪除" + +#: bookwyrm/templates/settings/reports/report.html:52 +msgid "Reported links" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:68 msgid "Moderator Comments" msgstr "監察員評論" -#: bookwyrm/templates/settings/reports/report.html:41 +#: bookwyrm/templates/settings/reports/report.html:89 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "評論" -#: bookwyrm/templates/settings/reports/report.html:46 -msgid "Reported statuses" -msgstr "被舉報的狀態" +#: bookwyrm/templates/settings/reports/report_header.html:6 +#, python-format +msgid "Report #%(report_id)s: Status posted by @%(username)s" +msgstr "" -#: bookwyrm/templates/settings/reports/report.html:48 -msgid "No statuses reported" -msgstr "沒有被舉報的狀態" +#: bookwyrm/templates/settings/reports/report_header.html:12 +#, python-format +msgid "Report #%(report_id)s: Link added by @%(username)s" +msgstr "" -#: bookwyrm/templates/settings/reports/report.html:54 -msgid "Status has been deleted" -msgstr "狀態已被刪除" +#: bookwyrm/templates/settings/reports/report_header.html:18 +#, python-format +msgid "Report #%(report_id)s: User @%(username)s" +msgstr "" -#: bookwyrm/templates/settings/reports/report_preview.html:13 +#: bookwyrm/templates/settings/reports/report_links_table.html:17 +msgid "Block domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_preview.html:17 msgid "No notes provided" msgstr "沒有提供摘記" -#: bookwyrm/templates/settings/reports/report_preview.html:20 +#: bookwyrm/templates/settings/reports/report_preview.html:24 #, python-format -msgid "Reported by %(username)s" -msgstr "由 %(username)s 舉報" +msgid "Reported by @%(username)s" +msgstr "" -#: bookwyrm/templates/settings/reports/report_preview.html:30 +#: bookwyrm/templates/settings/reports/report_preview.html:34 msgid "Re-open" msgstr "重新開啟" -#: bookwyrm/templates/settings/reports/report_preview.html:32 +#: bookwyrm/templates/settings/reports/report_preview.html:36 msgid "Resolve" msgstr "已解決" @@ -3525,7 +3754,7 @@ msgid "Invite request text:" msgstr "" #: bookwyrm/templates/settings/users/delete_user_form.html:5 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:31 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:32 msgid "Permanently delete user" msgstr "" @@ -3635,15 +3864,19 @@ msgstr "檢視實例" msgid "Permanently deleted" msgstr "" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:20 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 +msgid "User Actions" +msgstr "" + +#: bookwyrm/templates/settings/users/user_moderation_actions.html:21 msgid "Suspend user" msgstr "停用使用者" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:25 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:26 msgid "Un-suspend user" msgstr "取消停用使用者" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:47 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:48 msgid "Access level:" msgstr "訪問權限:" @@ -3707,15 +3940,15 @@ msgstr "完成時間" msgid "This shelf is empty." msgstr "此書架是空的。" -#: bookwyrm/templates/snippets/add_to_group_button.html:15 +#: bookwyrm/templates/snippets/add_to_group_button.html:16 msgid "Invite" msgstr "" -#: bookwyrm/templates/snippets/add_to_group_button.html:24 +#: bookwyrm/templates/snippets/add_to_group_button.html:25 msgid "Uninvite" msgstr "" -#: bookwyrm/templates/snippets/add_to_group_button.html:28 +#: bookwyrm/templates/snippets/add_to_group_button.html:29 #, python-format msgid "Remove @%(username)s" msgstr "" @@ -3779,14 +4012,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 "內容" @@ -3802,7 +4035,7 @@ msgstr "前有劇透!" msgid "Include spoiler alert" msgstr "加入劇透警告" -#: bookwyrm/templates/snippets/create_status/layout.html:48 +#: bookwyrm/templates/snippets/create_status/layout.html:47 #: bookwyrm/templates/snippets/reading_modals/form.html:7 msgid "Comment:" msgstr "評論:" @@ -3811,33 +4044,33 @@ msgstr "評論:" msgid "Post" msgstr "釋出" -#: bookwyrm/templates/snippets/create_status/quotation.html:17 +#: bookwyrm/templates/snippets/create_status/quotation.html:16 msgid "Quote:" msgstr "引用:" -#: bookwyrm/templates/snippets/create_status/quotation.html:25 +#: bookwyrm/templates/snippets/create_status/quotation.html:24 #, python-format msgid "An excerpt from '%(book_title)s'" msgstr "" -#: bookwyrm/templates/snippets/create_status/quotation.html:32 +#: bookwyrm/templates/snippets/create_status/quotation.html:31 msgid "Position:" msgstr "" -#: bookwyrm/templates/snippets/create_status/quotation.html:45 +#: bookwyrm/templates/snippets/create_status/quotation.html:44 msgid "On page:" msgstr "" -#: bookwyrm/templates/snippets/create_status/quotation.html:51 +#: bookwyrm/templates/snippets/create_status/quotation.html:50 msgid "At percent:" msgstr "" -#: bookwyrm/templates/snippets/create_status/review.html:25 +#: bookwyrm/templates/snippets/create_status/review.html:24 #, python-format msgid "Your review of '%(book_title)s'" msgstr "" -#: bookwyrm/templates/snippets/create_status/review.html:40 +#: bookwyrm/templates/snippets/create_status/review.html:39 msgid "Review:" msgstr "書評:" @@ -3864,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 "使用過濾器" @@ -3891,7 +4124,7 @@ msgid "Unfollow" msgstr "取消關注" #: bookwyrm/templates/snippets/follow_request_buttons.html:7 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:8 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:9 msgid "Accept" msgstr "接受" @@ -3927,13 +4160,13 @@ msgstr[0] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +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] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": %(review_title)s" +msgid "Review of \"%(book_title)s\": %(review_title)s" msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 @@ -4004,11 +4237,11 @@ msgstr "僅關注者" msgid "Post privacy" msgstr "發文隱私" -#: bookwyrm/templates/snippets/rate_action.html:4 +#: bookwyrm/templates/snippets/rate_action.html:5 msgid "Leave a rating" msgstr "留下評價" -#: bookwyrm/templates/snippets/rate_action.html:19 +#: bookwyrm/templates/snippets/rate_action.html:20 msgid "Rate" msgstr "評價" @@ -4040,21 +4273,31 @@ msgstr "想要閱讀 \"%(book_title)s\"" msgid "Sign Up" msgstr "註冊" -#: bookwyrm/templates/snippets/report_button.html:13 -msgid "Report" -msgstr "舉報" +#: bookwyrm/templates/snippets/report_modal.html:8 +#, python-format +msgid "Report @%(username)s's status" +msgstr "" -#: bookwyrm/templates/snippets/report_modal.html:6 +#: bookwyrm/templates/snippets/report_modal.html:10 +#, python-format +msgid "Report %(domain)s link" +msgstr "" + +#: bookwyrm/templates/snippets/report_modal.html:12 #, python-format msgid "Report @%(username)s" msgstr "舉報 %(username)s" -#: bookwyrm/templates/snippets/report_modal.html:23 +#: bookwyrm/templates/snippets/report_modal.html:34 #, python-format msgid "This report will be sent to %(site_name)s's moderators for review." msgstr "本舉報會被發送至 %(site_name)s 的監察員以複查。" -#: bookwyrm/templates/snippets/report_modal.html:26 +#: bookwyrm/templates/snippets/report_modal.html:36 +msgid "Links from this domain will be removed until your report has been reviewed." +msgstr "" + +#: bookwyrm/templates/snippets/report_modal.html:41 msgid "More info about this report:" msgstr "關於本舉報的更多資訊" @@ -4092,29 +4335,29 @@ msgstr "從 %(name)s 移除" msgid "Finish reading" msgstr "完成閱讀" -#: bookwyrm/templates/snippets/status/content_status.html:75 +#: bookwyrm/templates/snippets/status/content_status.html:73 msgid "Content warning" msgstr "" -#: bookwyrm/templates/snippets/status/content_status.html:82 +#: bookwyrm/templates/snippets/status/content_status.html:80 msgid "Show status" msgstr "" -#: bookwyrm/templates/snippets/status/content_status.html:104 +#: bookwyrm/templates/snippets/status/content_status.html:102 #, python-format msgid "(Page %(page)s)" msgstr "" -#: bookwyrm/templates/snippets/status/content_status.html:106 +#: bookwyrm/templates/snippets/status/content_status.html:104 #, python-format msgid "(%(percent)s%%)" msgstr "" -#: bookwyrm/templates/snippets/status/content_status.html:128 +#: bookwyrm/templates/snippets/status/content_status.html:126 msgid "Open image in new window" msgstr "在新視窗中開啟圖片" -#: bookwyrm/templates/snippets/status/content_status.html:147 +#: bookwyrm/templates/snippets/status/content_status.html:145 msgid "Hide status" msgstr "" @@ -4405,8 +4648,14 @@ msgstr "沒有找到使用該郵箱的使用者。" msgid "A password reset link was sent to {email}" msgstr "密碼重置連結已傳送給 {email}" -#: bookwyrm/views/rss_feed.py:35 +#: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" msgstr "" +#: bookwyrm/views/updates.py:45 +#, python-format +msgid "Load %(count)d unread status" +msgid_plural "Load %(count)d unread statuses" +msgstr[0] "" + diff --git a/poetry.lock b/poetry.lock index f0976b4f8..664ed8c9e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -19,11 +19,11 @@ python-versions = "*" [[package]] name = "asgiref" -version = "3.4.1" +version = "3.5.0" description = "ASGI specs, helper code, and adapters" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.extras] tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] @@ -90,14 +90,14 @@ d = ["aiohttp (>=3.3.2)", "aiohttp-cors"] [[package]] name = "boto3" -version = "1.20.37" +version = "1.20.49" description = "The AWS SDK for Python" category = "main" optional = false python-versions = ">= 3.6" [package.dependencies] -botocore = ">=1.23.37,<1.24.0" +botocore = ">=1.23.49,<1.24.0" jmespath = ">=0.7.1,<1.0.0" s3transfer = ">=0.5.0,<0.6.0" @@ -106,7 +106,7 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.23.37" +version = "1.23.49" description = "Low-level, data-driven core of boto 3." category = "main" optional = false @@ -282,7 +282,7 @@ dev = ["tox", "bump2version (<1)", "sphinx (<2)", "importlib-metadata (<3)", "im [[package]] name = "django" -version = "3.2.11" +version = "3.2.12" description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design." category = "main" optional = false @@ -459,7 +459,7 @@ tornado = ["tornado (>=0.2)"] [[package]] name = "humanize" -version = "3.13.1" +version = "3.14.0" description = "Python humanize utilities" category = "main" optional = false @@ -736,18 +736,18 @@ dev = ["pre-commit", "tox"] [[package]] name = "prometheus-client" -version = "0.12.0" +version = "0.13.1" description = "Python client for the Prometheus monitoring system." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.6" [package.extras] twisted = ["twisted"] [[package]] name = "prompt-toolkit" -version = "3.0.24" +version = "3.0.26" description = "Library for building powerful interactive command lines in Python" category = "main" optional = false @@ -758,7 +758,7 @@ wcwidth = "*" [[package]] name = "protobuf" -version = "3.19.3" +version = "3.19.4" description = "Protocol Buffers" category = "main" optional = false @@ -790,7 +790,7 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "pyparsing" -version = "3.0.6" +version = "3.0.7" description = "Python parsing module" category = "dev" optional = false @@ -894,7 +894,7 @@ hiredis = ["hiredis (>=0.1.3)"] [[package]] name = "regex" -version = "2021.11.10" +version = "2022.1.18" description = "Alternative regular expression module, to replace re." category = "dev" optional = false @@ -935,7 +935,7 @@ tests = ["coverage (>=3.7.1,<5.0.0)", "pytest-cov", "pytest-localserver", "flake [[package]] name = "s3transfer" -version = "0.5.0" +version = "0.5.1" description = "An Amazon S3 Transfer Manager" category = "main" optional = false @@ -981,7 +981,7 @@ python-versions = ">= 3.5" [[package]] name = "typed-ast" -version = "1.5.1" +version = "1.5.2" description = "a fork of Python 2 and 3 ast modules with type comment support" category = "dev" optional = false @@ -1047,8 +1047,8 @@ appdirs = [ {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, ] asgiref = [ - {file = "asgiref-3.4.1-py3-none-any.whl", hash = "sha256:ffc141aa908e6f175673e7b1b3b7af4fdb0ecb738fc5c8b88f69f055c2415214"}, - {file = "asgiref-3.4.1.tar.gz", hash = "sha256:4ef1ab46b484e3c706329cedeff284a5d40824200638503f5768edb6de7d58e9"}, + {file = "asgiref-3.5.0-py3-none-any.whl", hash = "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9"}, + {file = "asgiref-3.5.0.tar.gz", hash = "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0"}, ] atomicwrites = [ {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, @@ -1070,12 +1070,12 @@ black = [ {file = "black-20.8b1.tar.gz", hash = "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea"}, ] boto3 = [ - {file = "boto3-1.20.37-py3-none-any.whl", hash = "sha256:55c7004af4296648ee497417dfc454d9c39770c265f67e28e1c5f10e11f3b644"}, - {file = "boto3-1.20.37.tar.gz", hash = "sha256:0e2f8aa8ee71f144d8afbe9ff7d0bb40525b94535e0695bdb200687970c9f452"}, + {file = "boto3-1.20.49-py3-none-any.whl", hash = "sha256:09d7ffbbfcc212d22c92acf127ebc8c8ab89a2c03fa6360ab35b14d52b0df8ab"}, + {file = "boto3-1.20.49.tar.gz", hash = "sha256:34d170d24d10adb8ffe2a907ff35878e22ed2ceb24d16d191f8070053f11fc18"}, ] botocore = [ - {file = "botocore-1.23.37-py3-none-any.whl", hash = "sha256:9ea3eb6e507684900418ad100e5accd1d98979d41c49bacf15f970f0d72f75d4"}, - {file = "botocore-1.23.37.tar.gz", hash = "sha256:f3077f1ca19e6ab6b7a84c61e01e136a97c7732078a8d806908aee44f1042f5f"}, + {file = "botocore-1.23.49-py3-none-any.whl", hash = "sha256:3f72d20c65c89b694d9c7d164eb499877331783577f0207739088d11eaf315e7"}, + {file = "botocore-1.23.49.tar.gz", hash = "sha256:b013b2911379d1de896eb6ef375126bb2fc2b77b3e0af75821661b7ea817d029"}, ] celery = [ {file = "celery-5.2.2-py3-none-any.whl", hash = "sha256:5a68a351076cfac4f678fa5ffd898105c28825a2224902da006970005196d061"}, @@ -1151,8 +1151,8 @@ deprecated = [ {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"}, ] django = [ - {file = "Django-3.2.11-py3-none-any.whl", hash = "sha256:0a0a37f0b93aef30c4bf3a839c187e1175bcdeb7e177341da0cb7b8194416891"}, - {file = "Django-3.2.11.tar.gz", hash = "sha256:69c94abe5d6b1b088bf475e09b7b74403f943e34da107e798465d2045da27e75"}, + {file = "Django-3.2.12-py3-none-any.whl", hash = "sha256:9b06c289f9ba3a8abea16c9c9505f25107809fb933676f6c891ded270039d965"}, + {file = "Django-3.2.12.tar.gz", hash = "sha256:9772e6935703e59e993960832d66a614cf0233a1c5123bc6224ecc6ad69e41e2"}, ] django-appconf = [ {file = "django-appconf-1.0.5.tar.gz", hash = "sha256:be3db0be6c81fa84742000b89a81c016d70ae66a7ccb620cdef592b1f1a6aaa4"}, @@ -1241,8 +1241,8 @@ gunicorn = [ {file = "gunicorn-20.0.4.tar.gz", hash = "sha256:1904bb2b8a43658807108d59c3f3d56c2b6121a701161de0ddf9ad140073c626"}, ] humanize = [ - {file = "humanize-3.13.1-py3-none-any.whl", hash = "sha256:a6f7cc1597db69a4e571ad5e19b4da07ee871da5a9de2b233dbfab02d98e9754"}, - {file = "humanize-3.13.1.tar.gz", hash = "sha256:12f113f2e369dac7f35d3823f49262934f4a22a53a6d3d4c86b736f50db88c7b"}, + {file = "humanize-3.14.0-py3-none-any.whl", hash = "sha256:32bcf712ac98ff5e73627a9d31e1ba5650619008d6d13543b5d53b48e8ab8d43"}, + {file = "humanize-3.14.0.tar.gz", hash = "sha256:60dd8c952b1df1ad83f0903844dec50a34ba7a04eea22a6b14204ffb62dbb0a4"}, ] idna = [ {file = "idna-2.8-py2.py3-none-any.whl", hash = "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"}, @@ -1371,40 +1371,40 @@ pluggy = [ {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, ] prometheus-client = [ - {file = "prometheus_client-0.12.0-py2.py3-none-any.whl", hash = "sha256:317453ebabff0a1b02df7f708efbab21e3489e7072b61cb6957230dd004a0af0"}, - {file = "prometheus_client-0.12.0.tar.gz", hash = "sha256:1b12ba48cee33b9b0b9de64a1047cbd3c5f2d0ab6ebcead7ddda613a750ec3c5"}, + {file = "prometheus_client-0.13.1-py3-none-any.whl", hash = "sha256:357a447fd2359b0a1d2e9b311a0c5778c330cfbe186d880ad5a6b39884652316"}, + {file = "prometheus_client-0.13.1.tar.gz", hash = "sha256:ada41b891b79fca5638bd5cfe149efa86512eaa55987893becd2c6d8d0a5dfc5"}, ] prompt-toolkit = [ - {file = "prompt_toolkit-3.0.24-py3-none-any.whl", hash = "sha256:e56f2ff799bacecd3e88165b1e2f5ebf9bcd59e80e06d395fa0cc4b8bd7bb506"}, - {file = "prompt_toolkit-3.0.24.tar.gz", hash = "sha256:1bb05628c7d87b645974a1bad3f17612be0c29fa39af9f7688030163f680bad6"}, + {file = "prompt_toolkit-3.0.26-py3-none-any.whl", hash = "sha256:4bcf119be2200c17ed0d518872ef922f1de336eb6d1ddbd1e089ceb6447d97c6"}, + {file = "prompt_toolkit-3.0.26.tar.gz", hash = "sha256:a51d41a6a45fd9def54365bca8f0402c8f182f2b6f7e29c74d55faeb9fb38ac4"}, ] protobuf = [ - {file = "protobuf-3.19.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1cb2ed66aac593adbf6dca4f07cd7ee7e2958b17bbc85b2cc8bc564ebeb258ec"}, - {file = "protobuf-3.19.3-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:898bda9cd37ec0c781b598891e86435de80c3bfa53eb483a9dac5a11ec93e942"}, - {file = "protobuf-3.19.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ad761ef3be34c8bdc7285bec4b40372a8dad9e70cfbdc1793cd3cf4c1a4ce74"}, - {file = "protobuf-3.19.3-cp310-cp310-win32.whl", hash = "sha256:2cddcbcc222f3144765ccccdb35d3621dc1544da57a9aca7e1944c1a4fe3db11"}, - {file = "protobuf-3.19.3-cp310-cp310-win_amd64.whl", hash = "sha256:6202df8ee8457cb00810c6e76ced480f22a1e4e02c899a14e7b6e6e1de09f938"}, - {file = "protobuf-3.19.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:397d82f1c58b76445469c8c06b8dee1ff67b3053639d054f52599a458fac9bc6"}, - {file = "protobuf-3.19.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e54b8650e849ee8e95e481024bff92cf98f5ec61c7650cb838d928a140adcb63"}, - {file = "protobuf-3.19.3-cp36-cp36m-win32.whl", hash = "sha256:3bf3a07d17ba3511fe5fa916afb7351f482ab5dbab5afe71a7a384274a2cd550"}, - {file = "protobuf-3.19.3-cp36-cp36m-win_amd64.whl", hash = "sha256:afa8122de8064fd577f49ae9eef433561c8ace97a0a7b969d56e8b1d39b5d177"}, - {file = "protobuf-3.19.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:18c40a1b8721026a85187640f1786d52407dc9c1ba8ec38accb57a46e84015f6"}, - {file = "protobuf-3.19.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:af7238849fa79285d448a24db686517570099739527a03c9c2971cce99cc5ae2"}, - {file = "protobuf-3.19.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e765e6dfbbb02c55e4d6d1145743401a84fc0b508f5a81b2c5a738cf86353139"}, - {file = "protobuf-3.19.3-cp37-cp37m-win32.whl", hash = "sha256:c781402ed5396ab56358d7b866d78c03a77cbc26ba0598d8bb0ac32084b1a257"}, - {file = "protobuf-3.19.3-cp37-cp37m-win_amd64.whl", hash = "sha256:544fe9705189b249380fae07952d220c97f5c6c9372a6f936cc83a79601dcb70"}, - {file = "protobuf-3.19.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:84bf3aa3efb00dbe1c7ed55da0f20800b0662541e582d7e62b3e1464d61ed365"}, - {file = "protobuf-3.19.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:3f80a3491eaca767cdd86cb8660dc778f634b44abdb0dffc9b2a8e8d0cd617d0"}, - {file = "protobuf-3.19.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9401d96552befcc7311f5ef8f0fa7dba0ef5fd805466b158b141606cd0ab6a8"}, - {file = "protobuf-3.19.3-cp38-cp38-win32.whl", hash = "sha256:ef02d112c025e83db5d1188a847e358beab3e4bbfbbaf10eaf69e67359af51b2"}, - {file = "protobuf-3.19.3-cp38-cp38-win_amd64.whl", hash = "sha256:1291a0a7db7d792745c99d4657b4c5c4942695c8b1ac1bfb993a34035ec123f7"}, - {file = "protobuf-3.19.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:49677e5e9c7ea1245a90c2e8a00d304598f22ea3aa0628f0e0a530a9e70665fa"}, - {file = "protobuf-3.19.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:df2ba379ee42427e8fcc6a0a76843bff6efb34ef5266b17f95043939b5e25b69"}, - {file = "protobuf-3.19.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2acd7ca329be544d1a603d5f13a4e34a3791c90d651ebaf130ba2e43ae5397c6"}, - {file = "protobuf-3.19.3-cp39-cp39-win32.whl", hash = "sha256:b53519b2ebec70cfe24b4ddda21e9843f0918d7c3627a785393fb35d402ab8ad"}, - {file = "protobuf-3.19.3-cp39-cp39-win_amd64.whl", hash = "sha256:8ceaf5fdb72c8e1fcb7be9f2b3b07482ce058a3548180c0bdd5c7e4ac5e14165"}, - {file = "protobuf-3.19.3-py2.py3-none-any.whl", hash = "sha256:f6d4b5b7595a57e69eb7314c67bef4a3c745b4caf91accaf72913d8e0635111b"}, - {file = "protobuf-3.19.3.tar.gz", hash = "sha256:d975a6314fbf5c524d4981e24294739216b5fb81ef3c14b86fb4b045d6690907"}, + {file = "protobuf-3.19.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f51d5a9f137f7a2cec2d326a74b6e3fc79d635d69ffe1b036d39fc7d75430d37"}, + {file = "protobuf-3.19.4-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:09297b7972da685ce269ec52af761743714996b4381c085205914c41fcab59fb"}, + {file = "protobuf-3.19.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:072fbc78d705d3edc7ccac58a62c4c8e0cec856987da7df8aca86e647be4e35c"}, + {file = "protobuf-3.19.4-cp310-cp310-win32.whl", hash = "sha256:7bb03bc2873a2842e5ebb4801f5c7ff1bfbdf426f85d0172f7644fcda0671ae0"}, + {file = "protobuf-3.19.4-cp310-cp310-win_amd64.whl", hash = "sha256:f358aa33e03b7a84e0d91270a4d4d8f5df6921abe99a377828839e8ed0c04e07"}, + {file = "protobuf-3.19.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1c91ef4110fdd2c590effb5dca8fdbdcb3bf563eece99287019c4204f53d81a4"}, + {file = "protobuf-3.19.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c438268eebb8cf039552897d78f402d734a404f1360592fef55297285f7f953f"}, + {file = "protobuf-3.19.4-cp36-cp36m-win32.whl", hash = "sha256:835a9c949dc193953c319603b2961c5c8f4327957fe23d914ca80d982665e8ee"}, + {file = "protobuf-3.19.4-cp36-cp36m-win_amd64.whl", hash = "sha256:4276cdec4447bd5015453e41bdc0c0c1234eda08420b7c9a18b8d647add51e4b"}, + {file = "protobuf-3.19.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6cbc312be5e71869d9d5ea25147cdf652a6781cf4d906497ca7690b7b9b5df13"}, + {file = "protobuf-3.19.4-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:54a1473077f3b616779ce31f477351a45b4fef8c9fd7892d6d87e287a38df368"}, + {file = "protobuf-3.19.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:435bb78b37fc386f9275a7035fe4fb1364484e38980d0dd91bc834a02c5ec909"}, + {file = "protobuf-3.19.4-cp37-cp37m-win32.whl", hash = "sha256:16f519de1313f1b7139ad70772e7db515b1420d208cb16c6d7858ea989fc64a9"}, + {file = "protobuf-3.19.4-cp37-cp37m-win_amd64.whl", hash = "sha256:cdc076c03381f5c1d9bb1abdcc5503d9ca8b53cf0a9d31a9f6754ec9e6c8af0f"}, + {file = "protobuf-3.19.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:69da7d39e39942bd52848438462674c463e23963a1fdaa84d88df7fbd7e749b2"}, + {file = "protobuf-3.19.4-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:48ed3877fa43e22bcacc852ca76d4775741f9709dd9575881a373bd3e85e54b2"}, + {file = "protobuf-3.19.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd95d1dfb9c4f4563e6093a9aa19d9c186bf98fa54da5252531cc0d3a07977e7"}, + {file = "protobuf-3.19.4-cp38-cp38-win32.whl", hash = "sha256:b38057450a0c566cbd04890a40edf916db890f2818e8682221611d78dc32ae26"}, + {file = "protobuf-3.19.4-cp38-cp38-win_amd64.whl", hash = "sha256:7ca7da9c339ca8890d66958f5462beabd611eca6c958691a8fe6eccbd1eb0c6e"}, + {file = "protobuf-3.19.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:36cecbabbda242915529b8ff364f2263cd4de7c46bbe361418b5ed859677ba58"}, + {file = "protobuf-3.19.4-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:c1068287025f8ea025103e37d62ffd63fec8e9e636246b89c341aeda8a67c934"}, + {file = "protobuf-3.19.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96bd766831596d6014ca88d86dc8fe0fb2e428c0b02432fd9db3943202bf8c5e"}, + {file = "protobuf-3.19.4-cp39-cp39-win32.whl", hash = "sha256:84123274d982b9e248a143dadd1b9815049f4477dc783bf84efe6250eb4b836a"}, + {file = "protobuf-3.19.4-cp39-cp39-win_amd64.whl", hash = "sha256:3112b58aac3bac9c8be2b60a9daf6b558ca3f7681c130dcdd788ade7c9ffbdca"}, + {file = "protobuf-3.19.4-py2.py3-none-any.whl", hash = "sha256:8961c3a78ebfcd000920c9060a262f082f29838682b1f7201889300c1fbe0616"}, + {file = "protobuf-3.19.4.tar.gz", hash = "sha256:9df0c10adf3e83015ced42a9a7bd64e13d06c4cf45c340d2c63020ea04499d0a"}, ] psycopg2 = [ {file = "psycopg2-2.8.4-cp27-cp27m-win32.whl", hash = "sha256:72772181d9bad1fa349792a1e7384dde56742c14af2b9986013eb94a240f005b"}, @@ -1460,8 +1460,8 @@ pycryptodome = [ {file = "pycryptodome-3.9.4.tar.gz", hash = "sha256:a168e73879619b467072509a223282a02c8047d932a48b74fbd498f27224aa04"}, ] pyparsing = [ - {file = "pyparsing-3.0.6-py3-none-any.whl", hash = "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4"}, - {file = "pyparsing-3.0.6.tar.gz", hash = "sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81"}, + {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"}, + {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, ] pytest = [ {file = "pytest-6.1.2-py3-none-any.whl", hash = "sha256:4288fed0d9153d9646bfcdf0c0428197dba1ecb27a33bb6e031d002fa88653fe"}, @@ -1492,80 +1492,80 @@ redis = [ {file = "redis-3.4.1.tar.gz", hash = "sha256:0dcfb335921b88a850d461dc255ff4708294943322bd55de6cfd68972490ca1f"}, ] regex = [ - {file = "regex-2021.11.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9345b6f7ee578bad8e475129ed40123d265464c4cfead6c261fd60fc9de00bcf"}, - {file = "regex-2021.11.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:416c5f1a188c91e3eb41e9c8787288e707f7d2ebe66e0a6563af280d9b68478f"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0538c43565ee6e703d3a7c3bdfe4037a5209250e8502c98f20fea6f5fdf2965"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ee1227cf08b6716c85504aebc49ac827eb88fcc6e51564f010f11a406c0a667"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6650f16365f1924d6014d2ea770bde8555b4a39dc9576abb95e3cd1ff0263b36"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30ab804ea73972049b7a2a5c62d97687d69b5a60a67adca07eb73a0ddbc9e29f"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:68a067c11463de2a37157930d8b153005085e42bcb7ad9ca562d77ba7d1404e0"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:162abfd74e88001d20cb73ceaffbfe601469923e875caf9118333b1a4aaafdc4"}, - {file = "regex-2021.11.10-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b9ed0b1e5e0759d6b7f8e2f143894b2a7f3edd313f38cf44e1e15d360e11749b"}, - {file = "regex-2021.11.10-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:473e67837f786404570eae33c3b64a4b9635ae9f00145250851a1292f484c063"}, - {file = "regex-2021.11.10-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2fee3ed82a011184807d2127f1733b4f6b2ff6ec7151d83ef3477f3b96a13d03"}, - {file = "regex-2021.11.10-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d5fd67df77bab0d3f4ea1d7afca9ef15c2ee35dfb348c7b57ffb9782a6e4db6e"}, - {file = "regex-2021.11.10-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5d408a642a5484b9b4d11dea15a489ea0928c7e410c7525cd892f4d04f2f617b"}, - {file = "regex-2021.11.10-cp310-cp310-win32.whl", hash = "sha256:98ba568e8ae26beb726aeea2273053c717641933836568c2a0278a84987b2a1a"}, - {file = "regex-2021.11.10-cp310-cp310-win_amd64.whl", hash = "sha256:780b48456a0f0ba4d390e8b5f7c661fdd218934388cde1a974010a965e200e12"}, - {file = "regex-2021.11.10-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:dba70f30fd81f8ce6d32ddeef37d91c8948e5d5a4c63242d16a2b2df8143aafc"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1f54b9b4b6c53369f40028d2dd07a8c374583417ee6ec0ea304e710a20f80a0"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbb9dc00e39f3e6c0ef48edee202f9520dafb233e8b51b06b8428cfcb92abd30"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666abff54e474d28ff42756d94544cdfd42e2ee97065857413b72e8a2d6a6345"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5537f71b6d646f7f5f340562ec4c77b6e1c915f8baae822ea0b7e46c1f09b733"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2e07c6a26ed4bea91b897ee2b0835c21716d9a469a96c3e878dc5f8c55bb23"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ca5f18a75e1256ce07494e245cdb146f5a9267d3c702ebf9b65c7f8bd843431e"}, - {file = "regex-2021.11.10-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:74cbeac0451f27d4f50e6e8a8f3a52ca074b5e2da9f7b505c4201a57a8ed6286"}, - {file = "regex-2021.11.10-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:3598893bde43091ee5ca0a6ad20f08a0435e93a69255eeb5f81b85e81e329264"}, - {file = "regex-2021.11.10-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:50a7ddf3d131dc5633dccdb51417e2d1910d25cbcf842115a3a5893509140a3a"}, - {file = "regex-2021.11.10-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:61600a7ca4bcf78a96a68a27c2ae9389763b5b94b63943d5158f2a377e09d29a"}, - {file = "regex-2021.11.10-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:563d5f9354e15e048465061509403f68424fef37d5add3064038c2511c8f5e00"}, - {file = "regex-2021.11.10-cp36-cp36m-win32.whl", hash = "sha256:93a5051fcf5fad72de73b96f07d30bc29665697fb8ecdfbc474f3452c78adcf4"}, - {file = "regex-2021.11.10-cp36-cp36m-win_amd64.whl", hash = "sha256:b483c9d00a565633c87abd0aaf27eb5016de23fed952e054ecc19ce32f6a9e7e"}, - {file = "regex-2021.11.10-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fff55f3ce50a3ff63ec8e2a8d3dd924f1941b250b0aac3d3d42b687eeff07a8e"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32d2a2b02ccbef10145df9135751abea1f9f076e67a4e261b05f24b94219e36"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:53db2c6be8a2710b359bfd3d3aa17ba38f8aa72a82309a12ae99d3c0c3dcd74d"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2207ae4f64ad3af399e2d30dde66f0b36ae5c3129b52885f1bffc2f05ec505c8"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5ca078bb666c4a9d1287a379fe617a6dccd18c3e8a7e6c7e1eb8974330c626a"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd33eb9bdcfbabab3459c9ee651d94c842bc8a05fabc95edf4ee0c15a072495e"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05b7d6d7e64efe309972adab77fc2af8907bb93217ec60aa9fe12a0dad35874f"}, - {file = "regex-2021.11.10-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:42b50fa6666b0d50c30a990527127334d6b96dd969011e843e726a64011485da"}, - {file = "regex-2021.11.10-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6e1d2cc79e8dae442b3fa4a26c5794428b98f81389af90623ffcc650ce9f6732"}, - {file = "regex-2021.11.10-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:0416f7399e918c4b0e074a0f66e5191077ee2ca32a0f99d4c187a62beb47aa05"}, - {file = "regex-2021.11.10-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:ce298e3d0c65bd03fa65ffcc6db0e2b578e8f626d468db64fdf8457731052942"}, - {file = "regex-2021.11.10-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:dc07f021ee80510f3cd3af2cad5b6a3b3a10b057521d9e6aaeb621730d320c5a"}, - {file = "regex-2021.11.10-cp37-cp37m-win32.whl", hash = "sha256:e71255ba42567d34a13c03968736c5d39bb4a97ce98188fafb27ce981115beec"}, - {file = "regex-2021.11.10-cp37-cp37m-win_amd64.whl", hash = "sha256:07856afef5ffcc052e7eccf3213317fbb94e4a5cd8177a2caa69c980657b3cb4"}, - {file = "regex-2021.11.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ba05430e819e58544e840a68b03b28b6d328aff2e41579037e8bab7653b37d83"}, - {file = "regex-2021.11.10-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7f301b11b9d214f83ddaf689181051e7f48905568b0c7017c04c06dfd065e244"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aaa4e0705ef2b73dd8e36eeb4c868f80f8393f5f4d855e94025ce7ad8525f50"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:788aef3549f1924d5c38263104dae7395bf020a42776d5ec5ea2b0d3d85d6646"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f8af619e3be812a2059b212064ea7a640aff0568d972cd1b9e920837469eb3cb"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85bfa6a5413be0ee6c5c4a663668a2cad2cbecdee367630d097d7823041bdeec"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f23222527b307970e383433daec128d769ff778d9b29343fb3496472dc20dabe"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:da1a90c1ddb7531b1d5ff1e171b4ee61f6345119be7351104b67ff413843fe94"}, - {file = "regex-2021.11.10-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f5be7805e53dafe94d295399cfbe5227f39995a997f4fd8539bf3cbdc8f47ca8"}, - {file = "regex-2021.11.10-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a955b747d620a50408b7fdf948e04359d6e762ff8a85f5775d907ceced715129"}, - {file = "regex-2021.11.10-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:139a23d1f5d30db2cc6c7fd9c6d6497872a672db22c4ae1910be22d4f4b2068a"}, - {file = "regex-2021.11.10-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:ca49e1ab99593438b204e00f3970e7a5f70d045267051dfa6b5f4304fcfa1dbf"}, - {file = "regex-2021.11.10-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:96fc32c16ea6d60d3ca7f63397bff5c75c5a562f7db6dec7d412f7c4d2e78ec0"}, - {file = "regex-2021.11.10-cp38-cp38-win32.whl", hash = "sha256:0617383e2fe465732af4509e61648b77cbe3aee68b6ac8c0b6fe934db90be5cc"}, - {file = "regex-2021.11.10-cp38-cp38-win_amd64.whl", hash = "sha256:a3feefd5e95871872673b08636f96b61ebef62971eab044f5124fb4dea39919d"}, - {file = "regex-2021.11.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f7f325be2804246a75a4f45c72d4ce80d2443ab815063cdf70ee8fb2ca59ee1b"}, - {file = "regex-2021.11.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:537ca6a3586931b16a85ac38c08cc48f10fc870a5b25e51794c74df843e9966d"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eef2afb0fd1747f33f1ee3e209bce1ed582d1896b240ccc5e2697e3275f037c7"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:432bd15d40ed835a51617521d60d0125867f7b88acf653e4ed994a1f8e4995dc"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b43c2b8a330a490daaef5a47ab114935002b13b3f9dc5da56d5322ff218eeadb"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:962b9a917dd7ceacbe5cd424556914cb0d636001e393b43dc886ba31d2a1e449"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa8c626d6441e2d04b6ee703ef2d1e17608ad44c7cb75258c09dd42bacdfc64b"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3c5fb32cc6077abad3bbf0323067636d93307c9fa93e072771cf9a64d1c0f3ef"}, - {file = "regex-2021.11.10-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:cd410a1cbb2d297c67d8521759ab2ee3f1d66206d2e4328502a487589a2cb21b"}, - {file = "regex-2021.11.10-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e6096b0688e6e14af6a1b10eaad86b4ff17935c49aa774eac7c95a57a4e8c296"}, - {file = "regex-2021.11.10-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:529801a0d58809b60b3531ee804d3e3be4b412c94b5d267daa3de7fadef00f49"}, - {file = "regex-2021.11.10-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0f594b96fe2e0821d026365f72ac7b4f0b487487fb3d4aaf10dd9d97d88a9737"}, - {file = "regex-2021.11.10-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2409b5c9cef7054dde93a9803156b411b677affc84fca69e908b1cb2c540025d"}, - {file = "regex-2021.11.10-cp39-cp39-win32.whl", hash = "sha256:3b5df18db1fccd66de15aa59c41e4f853b5df7550723d26aa6cb7f40e5d9da5a"}, - {file = "regex-2021.11.10-cp39-cp39-win_amd64.whl", hash = "sha256:83ee89483672b11f8952b158640d0c0ff02dc43d9cb1b70c1564b49abe92ce29"}, - {file = "regex-2021.11.10.tar.gz", hash = "sha256:f341ee2df0999bfdf7a95e448075effe0db212a59387de1a70690e4acb03d4c6"}, + {file = "regex-2022.1.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:34316bf693b1d2d29c087ee7e4bb10cdfa39da5f9c50fa15b07489b4ab93a1b5"}, + {file = "regex-2022.1.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a0b9f6a1a15d494b35f25ed07abda03209fa76c33564c09c9e81d34f4b919d7"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f99112aed4fb7cee00c7f77e8b964a9b10f69488cdff626ffd797d02e2e4484f"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a2bf98ac92f58777c0fafc772bf0493e67fcf677302e0c0a630ee517a43b949"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8618d9213a863c468a865e9d2ec50221015f7abf52221bc927152ef26c484b4c"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b52cc45e71657bc4743a5606d9023459de929b2a198d545868e11898ba1c3f59"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e12949e5071c20ec49ef00c75121ed2b076972132fc1913ddf5f76cae8d10b4"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b02e3e72665cd02afafb933453b0c9f6c59ff6e3708bd28d0d8580450e7e88af"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:abfcb0ef78df0ee9df4ea81f03beea41849340ce33a4c4bd4dbb99e23ec781b6"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6213713ac743b190ecbf3f316d6e41d099e774812d470422b3a0f137ea635832"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:61ebbcd208d78658b09e19c78920f1ad38936a0aa0f9c459c46c197d11c580a0"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:b013f759cd69cb0a62de954d6d2096d648bc210034b79b1881406b07ed0a83f9"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9187500d83fd0cef4669385cbb0961e227a41c0c9bc39219044e35810793edf7"}, + {file = "regex-2022.1.18-cp310-cp310-win32.whl", hash = "sha256:94c623c331a48a5ccc7d25271399aff29729fa202c737ae3b4b28b89d2b0976d"}, + {file = "regex-2022.1.18-cp310-cp310-win_amd64.whl", hash = "sha256:1a171eaac36a08964d023eeff740b18a415f79aeb212169080c170ec42dd5184"}, + {file = "regex-2022.1.18-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:49810f907dfe6de8da5da7d2b238d343e6add62f01a15d03e2195afc180059ed"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d2f5c3f7057530afd7b739ed42eb04f1011203bc5e4663e1e1d01bb50f813e3"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:85ffd6b1cb0dfb037ede50ff3bef80d9bf7fa60515d192403af6745524524f3b"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ba37f11e1d020969e8a779c06b4af866ffb6b854d7229db63c5fdddfceaa917f"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637e27ea1ebe4a561db75a880ac659ff439dec7f55588212e71700bb1ddd5af9"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:37978254d9d00cda01acc1997513f786b6b971e57b778fbe7c20e30ae81a97f3"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e54a1eb9fd38f2779e973d2f8958fd575b532fe26013405d1afb9ee2374e7ab8"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:768632fd8172ae03852e3245f11c8a425d95f65ff444ce46b3e673ae5b057b74"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:de2923886b5d3214be951bc2ce3f6b8ac0d6dfd4a0d0e2a4d2e5523d8046fdfb"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:1333b3ce73269f986b1fa4d5d395643810074dc2de5b9d262eb258daf37dc98f"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:d19a34f8a3429bd536996ad53597b805c10352a8561d8382e05830df389d2b43"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d2f355a951f60f0843f2368b39970e4667517e54e86b1508e76f92b44811a8a"}, + {file = "regex-2022.1.18-cp36-cp36m-win32.whl", hash = "sha256:2245441445099411b528379dee83e56eadf449db924648e5feb9b747473f42e3"}, + {file = "regex-2022.1.18-cp36-cp36m-win_amd64.whl", hash = "sha256:25716aa70a0d153cd844fe861d4f3315a6ccafce22b39d8aadbf7fcadff2b633"}, + {file = "regex-2022.1.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7e070d3aef50ac3856f2ef5ec7214798453da878bb5e5a16c16a61edf1817cc3"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22709d701e7037e64dae2a04855021b62efd64a66c3ceed99dfd684bfef09e38"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9099bf89078675c372339011ccfc9ec310310bf6c292b413c013eb90ffdcafc"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04611cc0f627fc4a50bc4a9a2e6178a974c6a6a4aa9c1cca921635d2c47b9c87"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:552a39987ac6655dad4bf6f17dd2b55c7b0c6e949d933b8846d2e312ee80005a"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e031899cb2bc92c0cf4d45389eff5b078d1936860a1be3aa8c94fa25fb46ed8"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2dacb3dae6b8cc579637a7b72f008bff50a94cde5e36e432352f4ca57b9e54c4"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e5c31d70a478b0ca22a9d2d76d520ae996214019d39ed7dd93af872c7f301e52"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bb804c7d0bfbd7e3f33924ff49757de9106c44e27979e2492819c16972ec0da2"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:36b2d700a27e168fa96272b42d28c7ac3ff72030c67b32f37c05616ebd22a202"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:16f81025bb3556eccb0681d7946e2b35ff254f9f888cff7d2120e8826330315c"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:da80047524eac2acf7c04c18ac7a7da05a9136241f642dd2ed94269ef0d0a45a"}, + {file = "regex-2022.1.18-cp37-cp37m-win32.whl", hash = "sha256:6ca45359d7a21644793de0e29de497ef7f1ae7268e346c4faf87b421fea364e6"}, + {file = "regex-2022.1.18-cp37-cp37m-win_amd64.whl", hash = "sha256:38289f1690a7e27aacd049e420769b996826f3728756859420eeee21cc857118"}, + {file = "regex-2022.1.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6014038f52b4b2ac1fa41a58d439a8a00f015b5c0735a0cd4b09afe344c94899"}, + {file = "regex-2022.1.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0b5d6f9aed3153487252d00a18e53f19b7f52a1651bc1d0c4b5844bc286dfa52"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9d24b03daf7415f78abc2d25a208f234e2c585e5e6f92f0204d2ab7b9ab48e3"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bf594cc7cc9d528338d66674c10a5b25e3cde7dd75c3e96784df8f371d77a298"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd914db437ec25bfa410f8aa0aa2f3ba87cdfc04d9919d608d02330947afaeab"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90b6840b6448203228a9d8464a7a0d99aa8fa9f027ef95fe230579abaf8a6ee1"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11772be1eb1748e0e197a40ffb82fb8fd0d6914cd147d841d9703e2bef24d288"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a602bdc8607c99eb5b391592d58c92618dcd1537fdd87df1813f03fed49957a6"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7e26eac9e52e8ce86f915fd33380f1b6896a2b51994e40bb094841e5003429b4"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:519c0b3a6fbb68afaa0febf0d28f6c4b0a1074aefc484802ecb9709faf181607"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3c7ea86b9ca83e30fa4d4cd0eaf01db3ebcc7b2726a25990966627e39577d729"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:51f02ca184518702975b56affde6c573ebad4e411599005ce4468b1014b4786c"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:385ccf6d011b97768a640e9d4de25412204fbe8d6b9ae39ff115d4ff03f6fe5d"}, + {file = "regex-2022.1.18-cp38-cp38-win32.whl", hash = "sha256:1f8c0ae0a0de4e19fddaaff036f508db175f6f03db318c80bbc239a1def62d02"}, + {file = "regex-2022.1.18-cp38-cp38-win_amd64.whl", hash = "sha256:760c54ad1b8a9b81951030a7e8e7c3ec0964c1cb9fee585a03ff53d9e531bb8e"}, + {file = "regex-2022.1.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:93c20777a72cae8620203ac11c4010365706062aa13aaedd1a21bb07adbb9d5d"}, + {file = "regex-2022.1.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6aa427c55a0abec450bca10b64446331b5ca8f79b648531138f357569705bc4a"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c38baee6bdb7fe1b110b6b3aaa555e6e872d322206b7245aa39572d3fc991ee4"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:752e7ddfb743344d447367baa85bccd3629c2c3940f70506eb5f01abce98ee68"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8acef4d8a4353f6678fd1035422a937c2170de58a2b29f7da045d5249e934101"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c73d2166e4b210b73d1429c4f1ca97cea9cc090e5302df2a7a0a96ce55373f1c"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24c89346734a4e4d60ecf9b27cac4c1fee3431a413f7aa00be7c4d7bbacc2c4d"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:596f5ae2eeddb79b595583c2e0285312b2783b0ec759930c272dbf02f851ff75"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ecfe51abf7f045e0b9cdde71ca9e153d11238679ef7b5da6c82093874adf3338"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1d6301f5288e9bdca65fab3de6b7de17362c5016d6bf8ee4ba4cbe833b2eda0f"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:93cce7d422a0093cfb3606beae38a8e47a25232eea0f292c878af580a9dc7605"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cf0db26a1f76aa6b3aa314a74b8facd586b7a5457d05b64f8082a62c9c49582a"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:defa0652696ff0ba48c8aff5a1fac1eef1ca6ac9c660b047fc8e7623c4eb5093"}, + {file = "regex-2022.1.18-cp39-cp39-win32.whl", hash = "sha256:6db1b52c6f2c04fafc8da17ea506608e6be7086715dab498570c3e55e4f8fbd1"}, + {file = "regex-2022.1.18-cp39-cp39-win_amd64.whl", hash = "sha256:ebaeb93f90c0903233b11ce913a7cb8f6ee069158406e056f884854c737d2442"}, + {file = "regex-2022.1.18.tar.gz", hash = "sha256:97f32dc03a8054a4c4a5ab5d761ed4861e828b2c200febd4e46857069a483916"}, ] requests = [ {file = "requests-2.22.0-py2.py3-none-any.whl", hash = "sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31"}, @@ -1576,8 +1576,8 @@ responses = [ {file = "responses-0.10.14.tar.gz", hash = "sha256:1a78bc010b20a5022a2c0cb76b8ee6dc1e34d887972615ebd725ab9a166a4960"}, ] s3transfer = [ - {file = "s3transfer-0.5.0-py3-none-any.whl", hash = "sha256:9c1dc369814391a6bda20ebbf4b70a0f34630592c9aa520856bf384916af2803"}, - {file = "s3transfer-0.5.0.tar.gz", hash = "sha256:50ed823e1dc5868ad40c8dc92072f757aa0e653a192845c94a3b676f4a62da4c"}, + {file = "s3transfer-0.5.1-py3-none-any.whl", hash = "sha256:25c140f5c66aa79e1ac60be50dcd45ddc59e83895f062a3aab263b870102911f"}, + {file = "s3transfer-0.5.1.tar.gz", hash = "sha256:69d264d3e760e569b78aaa0f22c97e955891cd22e32b10c51f784eeda4d9d10a"}, ] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, @@ -1635,25 +1635,30 @@ tornado = [ {file = "tornado-6.1.tar.gz", hash = "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791"}, ] typed-ast = [ - {file = "typed_ast-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d8314c92414ce7481eee7ad42b353943679cf6f30237b5ecbf7d835519e1212"}, - {file = "typed_ast-1.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b53ae5de5500529c76225d18eeb060efbcec90ad5e030713fe8dab0fb4531631"}, - {file = "typed_ast-1.5.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:24058827d8f5d633f97223f5148a7d22628099a3d2efe06654ce872f46f07cdb"}, - {file = "typed_ast-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:a6d495c1ef572519a7bac9534dbf6d94c40e5b6a608ef41136133377bba4aa08"}, - {file = "typed_ast-1.5.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:de4ecae89c7d8b56169473e08f6bfd2df7f95015591f43126e4ea7865928677e"}, - {file = "typed_ast-1.5.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:256115a5bc7ea9e665c6314ed6671ee2c08ca380f9d5f130bd4d2c1f5848d695"}, - {file = "typed_ast-1.5.1-cp36-cp36m-win_amd64.whl", hash = "sha256:7c42707ab981b6cf4b73490c16e9d17fcd5227039720ca14abe415d39a173a30"}, - {file = "typed_ast-1.5.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:71dcda943a471d826ea930dd449ac7e76db7be778fcd722deb63642bab32ea3f"}, - {file = "typed_ast-1.5.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4f30a2bcd8e68adbb791ce1567fdb897357506f7ea6716f6bbdd3053ac4d9471"}, - {file = "typed_ast-1.5.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ca9e8300d8ba0b66d140820cf463438c8e7b4cdc6fd710c059bfcfb1531d03fb"}, - {file = "typed_ast-1.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9caaf2b440efb39ecbc45e2fabde809cbe56272719131a6318fd9bf08b58e2cb"}, - {file = "typed_ast-1.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c9bcad65d66d594bffab8575f39420fe0ee96f66e23c4d927ebb4e24354ec1af"}, - {file = "typed_ast-1.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:591bc04e507595887160ed7aa8d6785867fb86c5793911be79ccede61ae96f4d"}, - {file = "typed_ast-1.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:a80d84f535642420dd17e16ae25bb46c7f4c16ee231105e7f3eb43976a89670a"}, - {file = "typed_ast-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:38cf5c642fa808300bae1281460d4f9b7617cf864d4e383054a5ef336e344d32"}, - {file = "typed_ast-1.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5b6ab14c56bc9c7e3c30228a0a0b54b915b1579613f6e463ba6f4eb1382e7fd4"}, - {file = "typed_ast-1.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2b8d7007f6280e36fa42652df47087ac7b0a7d7f09f9468f07792ba646aac2d"}, - {file = "typed_ast-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:b6d17f37f6edd879141e64a5db17b67488cfeffeedad8c5cec0392305e9bc775"}, - {file = "typed_ast-1.5.1.tar.gz", hash = "sha256:484137cab8ecf47e137260daa20bafbba5f4e3ec7fda1c1e69ab299b75fa81c5"}, + {file = "typed_ast-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:183b183b7771a508395d2cbffd6db67d6ad52958a5fdc99f450d954003900266"}, + {file = "typed_ast-1.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:676d051b1da67a852c0447621fdd11c4e104827417bf216092ec3e286f7da596"}, + {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc2542e83ac8399752bc16e0b35e038bdb659ba237f4222616b4e83fb9654985"}, + {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74cac86cc586db8dfda0ce65d8bcd2bf17b58668dfcc3652762f3ef0e6677e76"}, + {file = "typed_ast-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:18fe320f354d6f9ad3147859b6e16649a0781425268c4dde596093177660e71a"}, + {file = "typed_ast-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:31d8c6b2df19a777bc8826770b872a45a1f30cfefcfd729491baa5237faae837"}, + {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:963a0ccc9a4188524e6e6d39b12c9ca24cc2d45a71cfdd04a26d883c922b4b78"}, + {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0eb77764ea470f14fcbb89d51bc6bbf5e7623446ac4ed06cbd9ca9495b62e36e"}, + {file = "typed_ast-1.5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:294a6903a4d087db805a7656989f613371915fc45c8cc0ddc5c5a0a8ad9bea4d"}, + {file = "typed_ast-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:26a432dc219c6b6f38be20a958cbe1abffcc5492821d7e27f08606ef99e0dffd"}, + {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7407cfcad702f0b6c0e0f3e7ab876cd1d2c13b14ce770e412c0c4b9728a0f88"}, + {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f30ddd110634c2d7534b2d4e0e22967e88366b0d356b24de87419cc4410c41b7"}, + {file = "typed_ast-1.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:8c08d6625bb258179b6e512f55ad20f9dfef019bbfbe3095247401e053a3ea30"}, + {file = "typed_ast-1.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:90904d889ab8e81a956f2c0935a523cc4e077c7847a836abee832f868d5c26a4"}, + {file = "typed_ast-1.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bbebc31bf11762b63bf61aaae232becb41c5bf6b3461b80a4df7e791fabb3aca"}, + {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c29dd9a3a9d259c9fa19d19738d021632d673f6ed9b35a739f48e5f807f264fb"}, + {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:58ae097a325e9bb7a684572d20eb3e1809802c5c9ec7108e85da1eb6c1a3331b"}, + {file = "typed_ast-1.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:da0a98d458010bf4fe535f2d1e367a2e2060e105978873c04c04212fb20543f7"}, + {file = "typed_ast-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:33b4a19ddc9fc551ebabca9765d54d04600c4a50eda13893dadf67ed81d9a098"}, + {file = "typed_ast-1.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1098df9a0592dd4c8c0ccfc2e98931278a6c6c53cb3a3e2cf7e9ee3b06153344"}, + {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42c47c3b43fe3a39ddf8de1d40dbbfca60ac8530a36c9b198ea5b9efac75c09e"}, + {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f290617f74a610849bd8f5514e34ae3d09eafd521dceaa6cf68b3f4414266d4e"}, + {file = "typed_ast-1.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:df05aa5b241e2e8045f5f4367a9f6187b09c4cdf8578bb219861c4e27c443db5"}, + {file = "typed_ast-1.5.2.tar.gz", hash = "sha256:525a2d4088e70a9f75b08b3f87a51acc9cde640e19cc523c7e41aa355564ae27"}, ] typing-extensions = [ {file = "typing_extensions-4.0.1-py3-none-any.whl", hash = "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b"},