diff --git a/.github/workflows/django-tests.yml b/.github/workflows/django-tests.yml index 00e08dadb..97a744813 100644 --- a/.github/workflows/django-tests.yml +++ b/.github/workflows/django-tests.yml @@ -55,5 +55,6 @@ jobs: EMAIL_HOST_PASSWORD: "" EMAIL_USE_TLS: true ENABLE_PREVIEW_IMAGES: false + ENABLE_THUMBNAIL_GENERATION: true run: | pytest -n 3 diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index 3d5f913bd..df9b2e43a 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -160,12 +160,13 @@ class Connector(AbstractConnector): def create_edition_from_data(self, work, edition_data, instance=None): """pass in the url as data and then call the version in abstract connector""" - try: - data = self.get_book_data(edition_data) - except ConnectorException: - # who, indeed, knows - return - super().create_edition_from_data(work, data, instance=instance) + if isinstance(edition_data, str): + try: + edition_data = self.get_book_data(edition_data) + except ConnectorException: + # who, indeed, knows + return + super().create_edition_from_data(work, edition_data, instance=instance) def get_cover_url(self, cover_blob, *_): """format the relative cover url into an absolute one: diff --git a/bookwyrm/emailing.py b/bookwyrm/emailing.py index 80aca071b..9349b8ae2 100644 --- a/bookwyrm/emailing.py +++ b/bookwyrm/emailing.py @@ -45,7 +45,8 @@ def moderation_report_email(report): """a report was created""" data = email_data() data["reporter"] = report.reporter.localname or report.reporter.username - data["reportee"] = report.user.localname or report.user.username + if report.user: + data["reportee"] = report.user.localname or report.user.username data["report_link"] = report.remote_id for admin in models.User.objects.filter( diff --git a/bookwyrm/forms/__init__.py b/bookwyrm/forms/__init__.py index 075752936..a37d126ac 100644 --- a/bookwyrm/forms/__init__.py +++ b/bookwyrm/forms/__init__.py @@ -10,3 +10,4 @@ from .landing import * from .links import * from .lists import * from .status import * +from .user_admin import * diff --git a/bookwyrm/forms/groups.py b/bookwyrm/forms/groups.py index 15b27c0ae..90aace3ba 100644 --- a/bookwyrm/forms/groups.py +++ b/bookwyrm/forms/groups.py @@ -4,12 +4,6 @@ from .custom_form import CustomForm # pylint: disable=missing-class-docstring -class UserGroupForm(CustomForm): - class Meta: - model = models.User - fields = ["groups"] - - class GroupForm(CustomForm): class Meta: model = models.Group diff --git a/bookwyrm/forms/user_admin.py b/bookwyrm/forms/user_admin.py new file mode 100644 index 000000000..a3bf6fa8e --- /dev/null +++ b/bookwyrm/forms/user_admin.py @@ -0,0 +1,10 @@ +""" using django model forms """ +from bookwyrm import models +from .custom_form import CustomForm + + +# pylint: disable=missing-class-docstring +class UserGroupForm(CustomForm): + class Meta: + model = models.User + fields = ["groups"] diff --git a/bookwyrm/migrations/0151_alter_report_user.py b/bookwyrm/migrations/0151_alter_report_user.py new file mode 100644 index 000000000..4c3f9dbda --- /dev/null +++ b/bookwyrm/migrations/0151_alter_report_user.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.13 on 2022-07-05 23:54 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0150_readthrough_stopped_date"), + ] + + operations = [ + migrations.AlterField( + model_name="report", + name="user", + field=models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.PROTECT, + to=settings.AUTH_USER_MODEL, + ), + ), + ] diff --git a/bookwyrm/migrations/0151_auto_20220705_0049.py b/bookwyrm/migrations/0151_auto_20220705_0049.py new file mode 100644 index 000000000..6010e38e5 --- /dev/null +++ b/bookwyrm/migrations/0151_auto_20220705_0049.py @@ -0,0 +1,90 @@ +# Generated by Django 3.2.13 on 2022-07-05 00:49 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0150_readthrough_stopped_date"), + ] + + operations = [ + migrations.RemoveField( + model_name="notification", + name="related_book", + ), + migrations.AddField( + model_name="notification", + name="related_list_items", + field=models.ManyToManyField( + related_name="notifications", to="bookwyrm.ListItem" + ), + ), + migrations.AddField( + model_name="notification", + name="related_reports", + field=models.ManyToManyField(to="bookwyrm.Report"), + ), + migrations.AddField( + model_name="notification", + name="related_users", + field=models.ManyToManyField( + related_name="notifications", to=settings.AUTH_USER_MODEL + ), + ), + migrations.AlterField( + model_name="notification", + name="related_list_item", + field=models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="notifications_tmp", + to="bookwyrm.listitem", + ), + ), + migrations.AlterField( + model_name="notification", + name="related_report", + field=models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="notifications_tmp", + to="bookwyrm.report", + ), + ), + migrations.RunSQL( + sql=""" + INSERT INTO bookwyrm_notification_related_users (notification_id, user_id) + SELECT id, related_user_id + FROM bookwyrm_notification + WHERE bookwyrm_notification.related_user_id IS NOT NULL; + + INSERT INTO bookwyrm_notification_related_list_items (notification_id, listitem_id) + SELECT id, related_list_item_id + FROM bookwyrm_notification + WHERE bookwyrm_notification.related_list_item_id IS NOT NULL; + + INSERT INTO bookwyrm_notification_related_reports (notification_id, report_id) + SELECT id, related_report_id + FROM bookwyrm_notification + WHERE bookwyrm_notification.related_report_id IS NOT NULL; + + """, + reverse_sql=migrations.RunSQL.noop, + ), + migrations.RemoveField( + model_name="notification", + name="related_list_item", + ), + migrations.RemoveField( + model_name="notification", + name="related_report", + ), + migrations.RemoveField( + model_name="notification", + name="related_user", + ), + ] diff --git a/bookwyrm/migrations/0152_alter_report_user.py b/bookwyrm/migrations/0152_alter_report_user.py new file mode 100644 index 000000000..1a67871c8 --- /dev/null +++ b/bookwyrm/migrations/0152_alter_report_user.py @@ -0,0 +1,25 @@ +# Generated by Django 3.2.13 on 2022-07-06 19:16 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0151_alter_report_user"), + ] + + operations = [ + migrations.AlterField( + model_name="report", + name="user", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + to=settings.AUTH_USER_MODEL, + ), + ), + ] diff --git a/bookwyrm/migrations/0152_remove_notification_notification_type_valid.py b/bookwyrm/migrations/0152_remove_notification_notification_type_valid.py new file mode 100644 index 000000000..f7471c0d2 --- /dev/null +++ b/bookwyrm/migrations/0152_remove_notification_notification_type_valid.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.13 on 2022-07-05 03:16 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0151_auto_20220705_0049"), + ] + + operations = [ + migrations.RemoveConstraint( + model_name="notification", + name="notification_type_valid", + ), + ] diff --git a/bookwyrm/migrations/0153_merge_20220706_2141.py b/bookwyrm/migrations/0153_merge_20220706_2141.py new file mode 100644 index 000000000..03959f9ef --- /dev/null +++ b/bookwyrm/migrations/0153_merge_20220706_2141.py @@ -0,0 +1,13 @@ +# Generated by Django 3.2.13 on 2022-07-06 21:41 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0152_alter_report_user"), + ("bookwyrm", "0152_remove_notification_notification_type_valid"), + ] + + operations = [] diff --git a/bookwyrm/models/antispam.py b/bookwyrm/models/antispam.py index f506b6f19..dd2a6df26 100644 --- a/bookwyrm/models/antispam.py +++ b/bookwyrm/models/antispam.py @@ -3,7 +3,7 @@ from functools import reduce import operator from django.apps import apps -from django.db import models +from django.db import models, transaction from django.db.models import Q from django.utils.translation import gettext_lazy as _ @@ -58,25 +58,20 @@ def automod_task(): return reporter = AutoMod.objects.first().created_by reports = automod_users(reporter) + automod_statuses(reporter) - if reports: - admins = User.objects.filter( - models.Q(user_permissions__name__in=["moderate_user", "moderate_post"]) - | models.Q(is_superuser=True) - ).all() - notification_model = apps.get_model( - "bookwyrm", "Notification", require_ready=True - ) + if not reports: + return + + admins = User.objects.filter( + models.Q(user_permissions__name__in=["moderate_user", "moderate_post"]) + | models.Q(is_superuser=True) + ).all() + notification_model = apps.get_model("bookwyrm", "Notification", require_ready=True) + with transaction.atomic(): for admin in admins: - notification_model.objects.bulk_create( - [ - notification_model( - user=admin, - related_report=r, - notification_type="REPORT", - ) - for r in reports - ] + notification, _ = notification_model.objects.get_or_create( + user=admin, notification_type=notification_model.REPORT, read=False ) + notification.related_repors.add(reports) def automod_users(reporter): diff --git a/bookwyrm/models/base_model.py b/bookwyrm/models/base_model.py index eeb2e940d..3ac220bc4 100644 --- a/bookwyrm/models/base_model.py +++ b/bookwyrm/models/base_model.py @@ -132,7 +132,7 @@ class BookWyrmModel(models.Model): return # but generally moderators can delete other people's stuff - if self.user == viewer or viewer.has_perm("moderate_post"): + if self.user == viewer or viewer.has_perm("bookwyrm.moderate_post"): return raise PermissionDenied() diff --git a/bookwyrm/models/fields.py b/bookwyrm/models/fields.py index 62c61cc40..785f3397c 100644 --- a/bookwyrm/models/fields.py +++ b/bookwyrm/models/fields.py @@ -16,7 +16,7 @@ from django.utils.encoding import filepath_to_uri from bookwyrm import activitypub from bookwyrm.connectors import get_image -from bookwyrm.sanitize_html import InputHtmlParser +from bookwyrm.utils.sanitizer import clean from bookwyrm.settings import MEDIA_FULL_URL @@ -497,9 +497,7 @@ class HtmlField(ActivitypubFieldMixin, models.TextField): def field_from_activity(self, value): if not value or value == MISSING: return None - sanitizer = InputHtmlParser() - sanitizer.feed(value) - return sanitizer.get_output() + return clean(value) class ArrayField(ActivitypubFieldMixin, DjangoArrayField): diff --git a/bookwyrm/models/group.py b/bookwyrm/models/group.py index 05ed39a27..003b23d02 100644 --- a/bookwyrm/models/group.py +++ b/bookwyrm/models/group.py @@ -140,16 +140,6 @@ class GroupMemberInvitation(models.Model): # make an invitation super().save(*args, **kwargs) - # now send the invite - model = apps.get_model("bookwyrm.Notification", require_ready=True) - notification_type = "INVITE" - model.objects.create( - user=self.user, - related_user=self.group.user, - related_group=self.group, - notification_type=notification_type, - ) - @transaction.atomic def accept(self): """turn this request into the real deal""" @@ -157,25 +147,24 @@ class GroupMemberInvitation(models.Model): model = apps.get_model("bookwyrm.Notification", require_ready=True) # tell the group owner - model.objects.create( - user=self.group.user, - related_user=self.user, + model.notify( + self.group.user, + self.user, related_group=self.group, - notification_type="ACCEPT", + notification_type=model.ACCEPT, ) # let the other members know about it for membership in self.group.memberships.all(): member = membership.user if member not in (self.user, self.group.user): - model.objects.create( - user=member, - related_user=self.user, + model.notify( + member, + self.user, related_group=self.group, - notification_type="JOIN", + notification_type=model.JOIN, ) def reject(self): """generate a Reject for this membership request""" - self.delete() diff --git a/bookwyrm/models/link.py b/bookwyrm/models/link.py index 0e4148ddd..56b096bc2 100644 --- a/bookwyrm/models/link.py +++ b/bookwyrm/models/link.py @@ -84,7 +84,7 @@ class LinkDomain(BookWyrmModel): ) def raise_not_editable(self, viewer): - if viewer.has_perm("moderate_post"): + if viewer.has_perm("bookwyrm.moderate_post"): return raise PermissionDenied() diff --git a/bookwyrm/models/list.py b/bookwyrm/models/list.py index 0195020e0..63dd5b23f 100644 --- a/bookwyrm/models/list.py +++ b/bookwyrm/models/list.py @@ -1,7 +1,6 @@ """ make a list of books!! """ import uuid -from django.apps import apps from django.core.exceptions import PermissionDenied from django.db import models from django.db.models import Q @@ -151,34 +150,12 @@ class ListItem(CollectionItemMixin, BookWyrmModel): collection_field = "book_list" def save(self, *args, **kwargs): - """create a notification too""" - created = not bool(self.id) + """Update the list's date""" super().save(*args, **kwargs) # tick the updated date on the parent list self.book_list.updated_date = timezone.now() self.book_list.save(broadcast=False, update_fields=["updated_date"]) - list_owner = self.book_list.user - model = apps.get_model("bookwyrm.Notification", require_ready=True) - # create a notification if somoene ELSE added to a local user's list - if created and list_owner.local and list_owner != self.user: - model.objects.create( - user=list_owner, - related_user=self.user, - related_list_item=self, - notification_type="ADD", - ) - - if self.book_list.group: - for membership in self.book_list.group.memberships.all(): - if membership.user != self.user: - model.objects.create( - user=membership.user, - related_user=self.user, - related_list_item=self, - notification_type="ADD", - ) - def raise_not_deletable(self, viewer): """the associated user OR the list owner can delete""" if self.book_list.user == viewer: diff --git a/bookwyrm/models/notification.py b/bookwyrm/models/notification.py index 417bf7591..818c7bd05 100644 --- a/bookwyrm/models/notification.py +++ b/bookwyrm/models/notification.py @@ -1,77 +1,123 @@ """ alert a user to activity """ -from django.db import models +from django.db import models, transaction from django.dispatch import receiver from .base_model import BookWyrmModel -from . import Boost, Favorite, ImportJob, Report, Status, User - -# pylint: disable=line-too-long -NotificationType = models.TextChoices( - "NotificationType", - "FAVORITE REPLY MENTION TAG FOLLOW FOLLOW_REQUEST BOOST IMPORT ADD REPORT INVITE ACCEPT JOIN LEAVE REMOVE GROUP_PRIVACY GROUP_NAME GROUP_DESCRIPTION", -) +from . import Boost, Favorite, GroupMemberInvitation, ImportJob, ListItem, Report +from . import Status, User, UserFollowRequest class Notification(BookWyrmModel): """you've been tagged, liked, followed, etc""" + # Status interactions + FAVORITE = "FAVORITE" + BOOST = "BOOST" + REPLY = "REPLY" + MENTION = "MENTION" + TAG = "TAG" + + # Relationships + FOLLOW = "FOLLOW" + FOLLOW_REQUEST = "FOLLOW_REQUEST" + + # Imports + IMPORT = "IMPORT" + + # List activity + ADD = "ADD" + + # Admin + REPORT = "REPORT" + + # Groups + INVITE = "INVITE" + ACCEPT = "ACCEPT" + JOIN = "JOIN" + LEAVE = "LEAVE" + REMOVE = "REMOVE" + GROUP_PRIVACY = "GROUP_PRIVACY" + GROUP_NAME = "GROUP_NAME" + GROUP_DESCRIPTION = "GROUP_DESCRIPTION" + + # pylint: disable=line-too-long + NotificationType = models.TextChoices( + # there has got be a better way to do this + "NotificationType", + f"{FAVORITE} {REPLY} {MENTION} {TAG} {FOLLOW} {FOLLOW_REQUEST} {BOOST} {IMPORT} {ADD} {REPORT} {INVITE} {ACCEPT} {JOIN} {LEAVE} {REMOVE} {GROUP_PRIVACY} {GROUP_NAME} {GROUP_DESCRIPTION}", + ) + user = models.ForeignKey("User", on_delete=models.CASCADE) - related_book = models.ForeignKey("Edition", on_delete=models.CASCADE, null=True) - related_user = models.ForeignKey( - "User", on_delete=models.CASCADE, null=True, related_name="related_user" + read = models.BooleanField(default=False) + notification_type = models.CharField( + max_length=255, choices=NotificationType.choices + ) + + related_users = models.ManyToManyField( + "User", symmetrical=False, related_name="notifications" ) related_group = models.ForeignKey( "Group", on_delete=models.CASCADE, null=True, related_name="notifications" ) related_status = models.ForeignKey("Status", on_delete=models.CASCADE, null=True) related_import = models.ForeignKey("ImportJob", on_delete=models.CASCADE, null=True) - related_list_item = models.ForeignKey( - "ListItem", on_delete=models.CASCADE, null=True - ) - related_report = models.ForeignKey("Report", on_delete=models.CASCADE, null=True) - read = models.BooleanField(default=False) - notification_type = models.CharField( - max_length=255, choices=NotificationType.choices + related_list_items = models.ManyToManyField( + "ListItem", symmetrical=False, related_name="notifications" ) + related_reports = models.ManyToManyField("Report", symmetrical=False) - def save(self, *args, **kwargs): - """save, but don't make dupes""" - # there's probably a better way to do this - if self.__class__.objects.filter( - user=self.user, - related_book=self.related_book, - related_user=self.related_user, - related_group=self.related_group, - related_status=self.related_status, - related_import=self.related_import, - related_list_item=self.related_list_item, - related_report=self.related_report, - notification_type=self.notification_type, - ).exists(): + @classmethod + @transaction.atomic + def notify(cls, user, related_user, **kwargs): + """Create a notification""" + if related_user and (not user.local or user == related_user): return - super().save(*args, **kwargs) + notification, _ = cls.objects.get_or_create(user=user, **kwargs) + if related_user: + notification.related_users.add(related_user) + notification.read = False + notification.save() - class Meta: - """checks if notifcation is in enum list for valid types""" - - constraints = [ - models.CheckConstraint( - check=models.Q(notification_type__in=NotificationType.values), - name="notification_type_valid", + @classmethod + @transaction.atomic + def notify_list_item(cls, user, list_item): + """Group the notifications around the list items, not the user""" + related_user = list_item.user + notification = cls.objects.filter( + user=user, + related_users=related_user, + related_list_items__book_list=list_item.book_list, + notification_type=Notification.ADD, + ).first() + if not notification: + notification = cls.objects.create( + user=user, notification_type=Notification.ADD ) - ] + notification.related_users.add(related_user) + notification.related_list_items.add(list_item) + notification.read = False + notification.save() + + @classmethod + def unnotify(cls, user, related_user, **kwargs): + """Remove a user from a notification and delete it if that was the only user""" + try: + notification = cls.objects.filter(user=user, **kwargs).get() + except Notification.DoesNotExist: + return + notification.related_users.remove(related_user) + if not notification.related_users.count(): + notification.delete() @receiver(models.signals.post_save, sender=Favorite) # pylint: disable=unused-argument def notify_on_fav(sender, instance, *args, **kwargs): """someone liked your content, you ARE loved""" - if not instance.status.user.local or instance.status.user == instance.user: - return - Notification.objects.create( - user=instance.status.user, - notification_type="FAVORITE", - related_user=instance.user, + Notification.notify( + instance.status.user, + instance.user, related_status=instance.status, + notification_type=Notification.FAVORITE, ) @@ -81,15 +127,16 @@ def notify_on_unfav(sender, instance, *args, **kwargs): """oops, didn't like that after all""" if not instance.status.user.local: return - Notification.objects.filter( - user=instance.status.user, - related_user=instance.user, + Notification.unnotify( + instance.status.user, + instance.user, related_status=instance.status, - notification_type="FAVORITE", - ).delete() + notification_type=Notification.FAVORITE, + ) @receiver(models.signals.post_save) +@transaction.atomic # pylint: disable=unused-argument def notify_user_on_mention(sender, instance, *args, **kwargs): """creating and deleting statuses with @ mentions and replies""" @@ -105,22 +152,23 @@ def notify_user_on_mention(sender, instance, *args, **kwargs): and instance.reply_parent.user != instance.user and instance.reply_parent.user.local ): - Notification.objects.create( - user=instance.reply_parent.user, - notification_type="REPLY", - related_user=instance.user, + Notification.notify( + instance.reply_parent.user, + instance.user, related_status=instance, + notification_type=Notification.REPLY, ) + for mention_user in instance.mention_users.all(): # avoid double-notifying about this status if not mention_user.local or ( instance.reply_parent and mention_user == instance.reply_parent.user ): continue - Notification.objects.create( - user=mention_user, - notification_type="MENTION", - related_user=instance.user, + Notification.notify( + mention_user, + instance.user, + notification_type=Notification.MENTION, related_status=instance, ) @@ -135,11 +183,11 @@ def notify_user_on_boost(sender, instance, *args, **kwargs): ): return - Notification.objects.create( - user=instance.boosted_status.user, + Notification.notify( + instance.boosted_status.user, + instance.user, related_status=instance.boosted_status, - related_user=instance.user, - notification_type="BOOST", + notification_type=Notification.BOOST, ) @@ -147,12 +195,12 @@ def notify_user_on_boost(sender, instance, *args, **kwargs): # pylint: disable=unused-argument def notify_user_on_unboost(sender, instance, *args, **kwargs): """unboosting a status""" - Notification.objects.filter( - user=instance.boosted_status.user, + Notification.unnotify( + instance.boosted_status.user, + instance.user, related_status=instance.boosted_status, - related_user=instance.user, - notification_type="BOOST", - ).delete() + notification_type=Notification.BOOST, + ) @receiver(models.signals.post_save, sender=ImportJob) @@ -166,23 +214,92 @@ def notify_user_on_import_complete( return Notification.objects.create( user=instance.user, - notification_type="IMPORT", + notification_type=Notification.IMPORT, related_import=instance, ) @receiver(models.signals.post_save, sender=Report) +@transaction.atomic # pylint: disable=unused-argument -def notify_admins_on_report(sender, instance, *args, **kwargs): +def notify_admins_on_report(sender, instance, created, *args, **kwargs): """something is up, make sure the admins know""" + if not created: + # otherwise you'll get a notification when you resolve a report + return + # moderators and superusers should be notified admins = User.objects.filter( models.Q(user_permissions__name__in=["moderate_user", "moderate_post"]) | models.Q(is_superuser=True) ).all() for admin in admins: - Notification.objects.create( + notification, _ = Notification.objects.get_or_create( user=admin, - related_report=instance, - notification_type="REPORT", + notification_type=Notification.REPORT, + read=False, + ) + notification.related_reports.add(instance) + + +@receiver(models.signals.post_save, sender=GroupMemberInvitation) +# pylint: disable=unused-argument +def notify_user_on_group_invite(sender, instance, *args, **kwargs): + """Cool kids club here we come""" + Notification.notify( + instance.user, + instance.group.user, + related_group=instance.group, + notification_type=Notification.INVITE, + ) + + +@receiver(models.signals.post_save, sender=ListItem) +@transaction.atomic +# pylint: disable=unused-argument +def notify_user_on_list_item_add(sender, instance, created, *args, **kwargs): + """Someone added to your list""" + if not created: + return + + list_owner = instance.book_list.user + # create a notification if somoene ELSE added to a local user's list + if list_owner.local and list_owner != instance.user: + # keep the related_user singular, group the items + Notification.notify_list_item(list_owner, instance) + + if instance.book_list.group: + for membership in instance.book_list.group.memberships.all(): + if membership.user != instance.user: + Notification.notify_list_item(membership.user, instance) + + +@receiver(models.signals.post_save, sender=UserFollowRequest) +@transaction.atomic +# pylint: disable=unused-argument +def notify_user_on_follow(sender, instance, created, *args, **kwargs): + """Someone added to your list""" + if not created or not instance.user_object.local: + return + + manually_approves = instance.user_object.manually_approves_followers + if manually_approves: + # don't group notifications + notification = Notification.objects.filter( + user=instance.user_object, + related_users=instance.user_subject, + notification_type=Notification.FOLLOW_REQUEST, + ).first() + if not notification: + notification = Notification.objects.create( + user=instance.user_object, notification_type=Notification.FOLLOW_REQUEST + ) + notification.related_users.set([instance.user_subject]) + notification.read = False + notification.save() + else: + Notification.notify( + instance.user_object, + instance.user_subject, + notification_type=Notification.FOLLOW, ) diff --git a/bookwyrm/models/relationship.py b/bookwyrm/models/relationship.py index 171f45840..082294c0e 100644 --- a/bookwyrm/models/relationship.py +++ b/bookwyrm/models/relationship.py @@ -1,5 +1,4 @@ """ defines relationships between users """ -from django.apps import apps from django.core.cache import cache from django.db import models, transaction, IntegrityError from django.db.models import Q @@ -148,14 +147,6 @@ class UserFollowRequest(ActivitypubMixin, UserRelationship): if not manually_approves: self.accept() - model = apps.get_model("bookwyrm.Notification", require_ready=True) - notification_type = "FOLLOW_REQUEST" if manually_approves else "FOLLOW" - model.objects.create( - user=self.user_object, - related_user=self.user_subject, - notification_type=notification_type, - ) - def get_accept_reject_id(self, status): """get id for sending an accept or reject of a local user""" @@ -218,7 +209,7 @@ def clear_cache(user_subject, user_object): """clear relationship cache""" cache.delete_many( [ - f"relationship-{user_subject.id}-{user_object.id}", - f"relationship-{user_object.id}-{user_subject.id}", + f"cached-relationship-{user_subject.id}-{user_object.id}", + f"cached-relationship-{user_object.id}-{user_subject.id}", ] ) diff --git a/bookwyrm/models/report.py b/bookwyrm/models/report.py index bf3184f52..d161c0349 100644 --- a/bookwyrm/models/report.py +++ b/bookwyrm/models/report.py @@ -11,7 +11,7 @@ class Report(BookWyrmModel): "User", related_name="reporter", on_delete=models.PROTECT ) note = models.TextField(null=True, blank=True) - user = models.ForeignKey("User", on_delete=models.PROTECT) + user = models.ForeignKey("User", on_delete=models.PROTECT, null=True, blank=True) status = models.ForeignKey( "Status", null=True, diff --git a/bookwyrm/models/shelf.py b/bookwyrm/models/shelf.py index 3291d5653..d955e8d07 100644 --- a/bookwyrm/models/shelf.py +++ b/bookwyrm/models/shelf.py @@ -103,12 +103,25 @@ class ShelfBook(CollectionItemMixin, BookWyrmModel): 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}") + # remove all caches related to all editions of this book + cache.delete_many( + [ + f"book-on-shelf-{book.id}-{self.shelf.id}" + for book in self.book.parent_work.editions.all() + ] + ) 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}") + cache.delete_many( + [ + f"book-on-shelf-{book}-{self.shelf.id}" + for book in self.book.parent_work.editions.values_list( + "id", flat=True + ) + ] + ) super().delete(*args, **kwargs) class Meta: diff --git a/bookwyrm/sanitize_html.py b/bookwyrm/sanitize_html.py deleted file mode 100644 index 4edd2818e..000000000 --- a/bookwyrm/sanitize_html.py +++ /dev/null @@ -1,71 +0,0 @@ -""" html parser to clean up incoming text from unknown sources """ -from html.parser import HTMLParser - - -class InputHtmlParser(HTMLParser): # pylint: disable=abstract-method - """Removes any html that isn't allowed_tagsed from a block""" - - def __init__(self): - HTMLParser.__init__(self) - self.allowed_tags = [ - "p", - "blockquote", - "br", - "b", - "i", - "strong", - "em", - "pre", - "a", - "span", - "ul", - "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 - self.allow_html = True - - def handle_starttag(self, tag, attrs): - """check if the tag is valid""" - if self.allow_html and tag in self.allowed_tags: - 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", "")) - - def handle_endtag(self, tag): - """keep the close tag""" - if not self.allow_html or tag not in self.allowed_tags: - self.output.append(("data", "")) - return - - if not self.tag_stack or self.tag_stack[-1] != tag: - # the end tag doesn't match the most recent start tag - self.allow_html = False - self.output.append(("data", "")) - return - - self.tag_stack = self.tag_stack[:-1] - self.output.append(("tag", f"")) - - def handle_data(self, data): - """extract the answer, if we're in an answer tag""" - self.output.append(("data", data)) - - def get_output(self): - """convert the output from a list of tuples to a string""" - if self.tag_stack: - self.allow_html = False - if not self.allow_html: - return "".join(v for (k, v) in self.output if k == "data") - return "".join(v for (k, v) in self.output) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index dc0d71f30..c1335edf6 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -11,7 +11,7 @@ from django.utils.translation import gettext_lazy as _ env = Env() env.read_env() DOMAIN = env("DOMAIN") -VERSION = "0.4.0" +VERSION = "0.4.2" RELEASE_API = env( "RELEASE_API", diff --git a/bookwyrm/status.py b/bookwyrm/status.py index 09fbdc06e..de7682ee7 100644 --- a/bookwyrm/status.py +++ b/bookwyrm/status.py @@ -2,15 +2,13 @@ from django.db import transaction from bookwyrm import models -from bookwyrm.sanitize_html import InputHtmlParser +from bookwyrm.utils import sanitizer def create_generated_note(user, content, mention_books=None, privacy="public"): """a note created by the app about user activity""" # sanitize input html - parser = InputHtmlParser() - parser.feed(content) - content = parser.get_output() + content = sanitizer.clean(content) with transaction.atomic(): # create but don't save diff --git a/bookwyrm/templates/book/file_links/edit_links.html b/bookwyrm/templates/book/file_links/edit_links.html index 44206ef77..fb722753f 100644 --- a/bookwyrm/templates/book/file_links/edit_links.html +++ b/bookwyrm/templates/book/file_links/edit_links.html @@ -42,7 +42,11 @@ {{ link.url }} + {% if link.added_by %} {{ link.added_by.display_name }} + {% else %} + {% trans "Unknown user" %} + {% endif %} {{ link.filelink.filetype }} @@ -50,7 +54,7 @@ {{ link.domain.name }}

- {% trans "Report spam" %} + {% trans "Report spam" %}

diff --git a/bookwyrm/templates/book/file_links/verification_modal.html b/bookwyrm/templates/book/file_links/verification_modal.html index 01f17f965..75678763f 100644 --- a/bookwyrm/templates/book/file_links/verification_modal.html +++ b/bookwyrm/templates/book/file_links/verification_modal.html @@ -19,7 +19,7 @@ Is that where you'd like to go? {% block modal-footer %} {% if request.user.is_authenticated %}
- {% trans "Report spam" %} + {% trans "Report spam" %}
diff --git a/bookwyrm/templates/email/moderation_report/html_content.html b/bookwyrm/templates/email/moderation_report/html_content.html index 10df380f2..3828ff70c 100644 --- a/bookwyrm/templates/email/moderation_report/html_content.html +++ b/bookwyrm/templates/email/moderation_report/html_content.html @@ -3,7 +3,19 @@ {% block content %}

-{% blocktrans %}@{{ reporter }} has flagged behavior by @{{ reportee }} for moderation. {% endblocktrans %} +{% if report_link %} + + {% blocktrans trimmed %} + @{{ reporter }} has flagged a link domain for moderation. + {% endblocktrans %} + +{% else %} + + {% blocktrans trimmed %} + @{{ reporter }} has flagged behavior by @{{ reportee }} for moderation. + {% endblocktrans %} + +{% endif %}

{% trans "View report" as text %} diff --git a/bookwyrm/templates/email/moderation_report/text_content.html b/bookwyrm/templates/email/moderation_report/text_content.html index 57d37d446..764a3c72a 100644 --- a/bookwyrm/templates/email/moderation_report/text_content.html +++ b/bookwyrm/templates/email/moderation_report/text_content.html @@ -2,7 +2,15 @@ {% load i18n %} {% block content %} -{% blocktrans %}@{{ reporter}} has flagged behavior by @{{ reportee }} for moderation. {% endblocktrans %} +{% if report_link %} +{% blocktrans trimmed %} +@{{ reporter }} has flagged a link domain for moderation. +{% endblocktrans %} +{% else %} +{% blocktrans trimmed %} +@{{ reporter }} has flagged behavior by @{{ reportee }} for moderation. +{% endblocktrans %} +{% endif %} {% trans "View report" %} {{ report_link }} diff --git a/bookwyrm/templates/landing/password_reset_request.html b/bookwyrm/templates/landing/password_reset_request.html index 5d877442f..b06668e57 100644 --- a/bookwyrm/templates/landing/password_reset_request.html +++ b/bookwyrm/templates/landing/password_reset_request.html @@ -9,7 +9,13 @@

{% trans "Reset Password" %}

- {% if message %}

{{ message }}

{% endif %} + {% if sent_message %} +

+ {% blocktrans trimmed %} + A password reset link will be sent to {{ email }} if there is an account using that email address. + {% endblocktrans %} +

+ {% endif %}

{% trans "A link to reset your password will be sent to your email address" %}

diff --git a/bookwyrm/templates/notifications/items/accept.html b/bookwyrm/templates/notifications/items/accept.html index 5f26008f4..f97c93c1c 100644 --- a/bookwyrm/templates/notifications/items/accept.html +++ b/bookwyrm/templates/notifications/items/accept.html @@ -13,8 +13,34 @@ {% block description %} +{% if other_user_count == 0 %} + {% blocktrans trimmed with group_name=notification.related_group.name group_path=notification.related_group.local_path %} - accepted your invitation to join group "{{ group_name }}" + {{ related_user }} + accepted your invitation to join group + "{{ group_name }}" {% endblocktrans %} +{% elif other_user_count == 1 %} + + {% blocktrans trimmed with group_name=notification.related_group.name group_path=notification.related_group.local_path %} + {{ related_user }} + and + {{ second_user }} + accepted your invitation to join group + "{{ group_name }}" + {% endblocktrans %} + +{% else %} + + {% blocktrans trimmed with group_name=notification.related_group.name group_path=notification.related_group.local_path %} + {{ related_user }} + and + {{ other_user_display_count }} others + accepted your invitation to join group + "{{ group_name }}" + {% endblocktrans %} + +{% endif %} + {% endblock %} diff --git a/bookwyrm/templates/notifications/items/add.html b/bookwyrm/templates/notifications/items/add.html index 6a0183ebe..fdd480ee1 100644 --- a/bookwyrm/templates/notifications/items/add.html +++ b/bookwyrm/templates/notifications/items/add.html @@ -1,14 +1,16 @@ {% extends 'notifications/items/layout.html' %} - {% load i18n %} {% load utilities %} +{% load humanize %} {% block primary_link %}{% spaceless %} -{% if notification.related_list_item.approved %} - {{ notification.related_list_item.book_list.local_path }} +{% with related_list=notification.related_list_items.first.book_list %} +{% if related_list.curation != "curated" %} + {{ related_list.local_path }} {% else %} - {% url 'list-curate' notification.related_list_item.book_list.id %} + {% url 'list-curate' related_list.id %} {% endif %} +{% endwith %} {% endspaceless %}{% endblock %} {% block icon %} @@ -16,25 +18,89 @@ {% endblock %} {% block description %} -{% with book_path=notification.related_list_item.book.local_path %} -{% with book_title=notification.related_list_item.book|book_title %} -{% with list_name=notification.related_list_item.book_list.name %} +{% with related_list=notification.related_list_items.first.book_list %} +{% with book_path=notification.related_list_items.first.book.local_path %} +{% with book_title=notification.related_list_items.first.book|book_title %} +{% with second_book_path=notification.related_list_items.all.1.book.local_path %} +{% with second_book_title=notification.related_list_items.all.1.book|book_title %} +{% with list_name=related_list.name %} - {% if notification.related_list_item.approved %} - {% blocktrans trimmed with list_path=notification.related_list_item.book_list.local_path %} +{% url 'list' related_list.id as list_path %} +{% url 'list-curate' related_list.id as list_curate_path %} - added {{ book_title }} to your list "{{ list_name }}" - - {% endblocktrans %} +{% if notification.related_list_items.count == 1 %} + {% if related_list.curation != "curated" %} + {% blocktrans trimmed %} + {{ related_user }} + added {{ book_title }} + to your list "{{ list_name }}" + {% endblocktrans %} {% else %} - {% url 'list-curate' notification.related_list_item.book_list.id as list_path %} - {% blocktrans trimmed with list_path=list_path %} - - suggested adding {{ book_title }} to your list "{{ list_name }}" - - {% endblocktrans %} + {% blocktrans trimmed %} + {{ related_user }} + suggested adding {{ book_title }} + to your list "{{ list_name }}" + {% endblocktrans %} {% endif %} +{% elif notification.related_list_items.count == 2 %} + {% if related_list.curation != "curated" %} + {% blocktrans trimmed %} + {{ related_user }} + added {{ book_title }} + and {{ second_book_title }} + to your list "{{ list_name }}" + {% endblocktrans %} + {% else %} + {% blocktrans trimmed %} + {{ related_user }} + suggested adding {{ book_title }} + and {{ second_book_title }} + to your list "{{ list_name }}" + {% endblocktrans %} + {% endif %} +{% else %} + {% with count=notification.related_list_items.count|add:"-2" %} + {% with display_count=count|intcomma %} + {% if related_list.curation != "curated" %} + {% blocktrans trimmed count counter=count %} + {{ related_user }} + added {{ book_title }}, + {{ second_book_title }}, + and {{ display_count }} other book + to your list "{{ list_name }}" + {% plural %} + {{ related_user }} + added {{ book_title }}, + {{ second_book_title }}, + and {{ display_count }} other books + to your list "{{ list_name }}" + {% endblocktrans %} + + {% else %} + + {% blocktrans trimmed count counter=count %} + {{ related_user }} + suggested adding {{ book_title }}, + {{ second_book_title }}, + and {{ display_count }} other book + to your list "{{ list_name }}" + {% plural %} + {{ related_user }} + suggested adding {{ book_title }}, + {{ second_book_title }}, + and {{ display_count }} other books + to your list "{{ list_name }}" + {% endblocktrans %} + + {% endif %} + {% endwith %} + {% endwith %} +{% endif %} + +{% endwith %} +{% endwith %} +{% endwith %} {% endwith %} {% endwith %} {% endwith %} diff --git a/bookwyrm/templates/notifications/items/boost.html b/bookwyrm/templates/notifications/items/boost.html index 5e3e11513..a1a0a24fb 100644 --- a/bookwyrm/templates/notifications/items/boost.html +++ b/bookwyrm/templates/notifications/items/boost.html @@ -16,29 +16,97 @@ {% with related_status.local_path as related_path %} {% if related_status.status_type == 'Review' %} - {% blocktrans trimmed %} + {% if other_user_count == 0 %} - boosted your review of {{ book_title }} + {% blocktrans trimmed %} + {{ related_user }} boosted your review of {{ book_title }} + {% endblocktrans %} - {% endblocktrans %} + {% elif other_user_count == 1 %} + + {% blocktrans trimmed %} + {{ related_user }} + and + {{ second_user }} + boosted your review of {{ book_title }} + {% endblocktrans %} + + {% else %} + + {% blocktrans trimmed %} + {{ related_user }} and {{ other_user_display_count }} others boosted your review of {{ book_title }} + {% endblocktrans %} + + {% endif %} {% elif related_status.status_type == 'Comment' %} - {% blocktrans trimmed %} + {% if other_user_count == 0 %} - boosted your comment on{{ book_title }} + {% blocktrans trimmed %} + {{ related_user }} boosted your comment on {{ book_title }} + {% endblocktrans %} - {% endblocktrans %} + {% elif other_user_count == 1 %} + + {% blocktrans trimmed %} + {{ related_user }} + and + {{ second_user }} + boosted your comment on {{ book_title }} + {% endblocktrans %} + + {% else %} + + {% blocktrans trimmed %} + {{ related_user }} and {{ other_user_display_count }} others boosted your comment on {{ book_title }} + {% endblocktrans %} + + {% endif %} {% elif related_status.status_type == 'Quotation' %} - {% blocktrans trimmed %} + {% if other_user_count == 0 %} - boosted your quote from {{ book_title }} + {% blocktrans trimmed %} + {{ related_user }} boosted your quote from {{ book_title }} + {% endblocktrans %} - {% endblocktrans %} + {% elif other_user_count == 1 %} + + {% blocktrans trimmed %} + {{ related_user }} + and + {{ second_user }} + boosted your quote from {{ book_title }} + {% endblocktrans %} + + {% else %} + + {% blocktrans trimmed %} + {{ related_user }} and {{ other_user_display_count }} others boosted your quote from {{ book_title }} + {% endblocktrans %} + + {% endif %} {% else %} - {% blocktrans trimmed %} + {% if other_user_count == 0 %} - boosted your status + {% blocktrans trimmed %} + {{ related_user }} boosted your status + {% endblocktrans %} - {% endblocktrans %} + {% elif other_user_count == 1 %} + + {% blocktrans trimmed %} + {{ related_user }} + and + {{ second_user }} + boosted your status + {% endblocktrans %} + + {% else %} + + {% blocktrans trimmed %} + {{ related_user }} and {{ other_user_display_count }} others boosted your status + {% endblocktrans %} + + {% endif %} {% endif %} {% endwith %} diff --git a/bookwyrm/templates/notifications/items/fav.html b/bookwyrm/templates/notifications/items/fav.html index eb29ebc26..0bface201 100644 --- a/bookwyrm/templates/notifications/items/fav.html +++ b/bookwyrm/templates/notifications/items/fav.html @@ -16,29 +16,98 @@ {% with related_status.local_path as related_path %} {% if related_status.status_type == 'Review' %} - {% blocktrans trimmed %} + {% if other_user_count == 0 %} - liked your review of {{ book_title }} + {% blocktrans trimmed %} + {{ related_user }} liked your review of {{ book_title }} + {% endblocktrans %} - {% endblocktrans %} + {% elif other_user_count == 1 %} + + {% blocktrans trimmed %} + {{ related_user }} + and + {{ second_user }} + liked your review of {{ book_title }} + {% endblocktrans %} + + {% else %} + + {% blocktrans trimmed %} + {{ related_user }} and {{ other_user_display_count }} others liked your review of {{ book_title }} + {% endblocktrans %} + + {% endif %} {% elif related_status.status_type == 'Comment' %} - {% blocktrans trimmed %} + {% if other_user_count == 0 %} - liked your comment on {{ book_title }} + {% blocktrans trimmed %} + {{ related_user }} liked your comment on {{ book_title }} + {% endblocktrans %} - {% endblocktrans %} + {% elif other_user_count == 1 %} + + {% blocktrans trimmed %} + {{ related_user }} + and + {{ second_user }} + liked your comment on {{ book_title }} + {% endblocktrans %} + + {% else %} + + {% blocktrans trimmed %} + {{ related_user }} and {{ other_user_display_count }} others liked your comment on {{ book_title }} + {% endblocktrans %} + + {% endif %} {% elif related_status.status_type == 'Quotation' %} - {% blocktrans trimmed %} + {% if other_user_count == 0 %} - liked your quote from {{ book_title }} + {% blocktrans trimmed %} + {{ related_user }} liked your quote from {{ book_title }} + {% endblocktrans %} - {% endblocktrans %} + {% elif other_user_count == 1 %} + + {% blocktrans trimmed %} + {{ related_user }} + and + {{ second_user }} + liked your quote from {{ book_title }} + {% endblocktrans %} + + {% else %} + + {% blocktrans trimmed %} + {{ related_user }} and {{ other_user_display_count }} others liked your quote from {{ book_title }} + {% endblocktrans %} + + {% endif %} {% else %} - {% blocktrans trimmed %} + {% if other_user_count == 0 %} - liked your status + {% blocktrans trimmed %} + {{ related_user }} liked your status + {% endblocktrans %} + + {% elif other_user_count == 1 %} + + {% blocktrans trimmed %} + {{ related_user }} + and + {{ second_user }} + liked your status + {% endblocktrans %} + + {% else %} + + {% blocktrans trimmed %} + {{ related_user }} and {{ other_user_display_count }} others liked your status + {% endblocktrans %} + + {% endif %} - {% endblocktrans %} {% endif %} {% endwith %} diff --git a/bookwyrm/templates/notifications/items/follow.html b/bookwyrm/templates/notifications/items/follow.html index 3518e7b1b..7303bb8b8 100644 --- a/bookwyrm/templates/notifications/items/follow.html +++ b/bookwyrm/templates/notifications/items/follow.html @@ -4,7 +4,7 @@ {% load utilities %} {% block primary_link %}{% spaceless %} - {{ notification.related_user.local_path }} +{% url 'user-followers' request.user.localname %} {% endspaceless %}{% endblock %} {% block icon %} @@ -12,6 +12,19 @@ {% endblock %} {% block description %} - {% trans "followed you" %} - {% include 'snippets/follow_button.html' with user=notification.related_user %} +{% if related_user_count == 1 %} + {% blocktrans trimmed %} + {{ related_user }} followed you + {% endblocktrans %} +{% elif related_user_count == 2 %} + {% blocktrans trimmed %} + {{ related_user }} and + {{ second_user }} followed you + {% endblocktrans %} +{% else %} + {% blocktrans trimmed %} + {{ related_user }} and {{ other_user_display_count }} others followed you + {% endblocktrans %} +{% endif %} + {% endblock %} diff --git a/bookwyrm/templates/notifications/items/follow_request.html b/bookwyrm/templates/notifications/items/follow_request.html index 9cec8116a..320c69e43 100644 --- a/bookwyrm/templates/notifications/items/follow_request.html +++ b/bookwyrm/templates/notifications/items/follow_request.html @@ -3,13 +3,19 @@ {% load i18n %} {% load utilities %} +{% block primary_link %}{% spaceless %} +{% url 'user-followers' request.user.localname %} +{% endspaceless %}{% endblock %} + {% block icon %} {% endblock %} {% block description %} - {% trans "sent you a follow request" %} + {% blocktrans trimmed %} + {{ related_user }} sent you a follow request + {% endblocktrans %}
- {% include 'snippets/follow_request_buttons.html' with user=notification.related_user %} + {% include 'snippets/follow_request_buttons.html' with user=notification.related_users.first %}
{% endblock %} diff --git a/bookwyrm/templates/notifications/items/invite.html b/bookwyrm/templates/notifications/items/invite.html index aff416b07..ab92be5a1 100644 --- a/bookwyrm/templates/notifications/items/invite.html +++ b/bookwyrm/templates/notifications/items/invite.html @@ -12,11 +12,15 @@ {% endblock %} {% block description %} + {% blocktrans trimmed with group_name=notification.related_group.name group_path=notification.related_group.local_path %} -invited you to join the group "{{ group_name }}" + {{ related_user }} + invited you to join the group + "{{ group_name }}" {% endblocktrans %} +
{% include 'snippets/join_invitation_buttons.html' with group=notification.related_group %}
-{% endblock %} +{% endblock %} diff --git a/bookwyrm/templates/notifications/items/layout.html b/bookwyrm/templates/notifications/items/layout.html index e7c3b3147..3830e7e40 100644 --- a/bookwyrm/templates/notifications/items/layout.html +++ b/bookwyrm/templates/notifications/items/layout.html @@ -1,5 +1,9 @@ {% load notification_page_tags %} +{% load humanize %} {% related_status notification as related_status %} + +{% with related_users=notification.related_users.all.distinct %} +{% with related_user_count=notification.related_users.count %}
@@ -9,14 +13,43 @@
+ {% if related_user_count > 1 %} +
+ +
+ {% endif %}
-

- {% if notification.related_user %} - {% include 'snippets/avatar.html' with user=notification.related_user %} - {{ notification.related_user.display_name }} - {% endif %} + {% if related_user_count == 1 %} + {% with user=related_users.first %} + {% spaceless %} + + {% include 'snippets/avatar.html' with user=user %} + + {% endspaceless %} + {% endwith %} + {% endif %} + + {% with related_user=related_users.first.display_name %} + {% with related_user_link=related_users.first.local_path %} + {% with second_user=related_users.1.display_name %} + {% with second_user_link=related_users.1.local_path %} + {% with other_user_count=related_user_count|add:"-1" %} + {% with other_user_display_count=other_user_count|intcomma %} {% block description %}{% endblock %} -

+ {% endwith %} + {% endwith %} + {% endwith %} + {% endwith %} + {% endwith %} + {% endwith %}
{% if related_status %} @@ -27,4 +60,5 @@
- +{% endwith %} +{% endwith %} diff --git a/bookwyrm/templates/notifications/items/leave.html b/bookwyrm/templates/notifications/items/leave.html index c17a1986e..99b6a2324 100644 --- a/bookwyrm/templates/notifications/items/leave.html +++ b/bookwyrm/templates/notifications/items/leave.html @@ -13,8 +13,34 @@ {% block description %} +{% if other_user_count == 0 %} + {% blocktrans trimmed with group_name=notification.related_group.name group_path=notification.related_group.local_path %} - has left your group "{{ group_name }}" + {{ related_user }} + has left your group + "{{ group_name }}" {% endblocktrans %} +{% elif other_user_count == 1 %} + + {% blocktrans trimmed with group_name=notification.related_group.name group_path=notification.related_group.local_path %} + {{ related_user }} + and + {{ second_user }} + have left your group + "{{ group_name }}" + {% endblocktrans %} + +{% else %} + + {% blocktrans trimmed with group_name=notification.related_group.name group_path=notification.related_group.local_path %} + {{ related_user }} + and + {{ other_user_display_count }} others + have left your group + "{{ group_name }}" + {% endblocktrans %} + +{% endif %} + {% endblock %} diff --git a/bookwyrm/templates/notifications/items/mention.html b/bookwyrm/templates/notifications/items/mention.html index e4e78a11e..864052635 100644 --- a/bookwyrm/templates/notifications/items/mention.html +++ b/bookwyrm/templates/notifications/items/mention.html @@ -19,25 +19,25 @@ {% if related_status.status_type == 'Review' %} {% blocktrans trimmed %} - mentioned you in a review of {{ book_title }} + {{ related_user }} mentioned you in a review of {{ book_title }} {% endblocktrans %} {% elif related_status.status_type == 'Comment' %} {% blocktrans trimmed %} - mentioned you in a comment on {{ book_title }} + {{ related_user }} mentioned you in a comment on {{ book_title }} {% endblocktrans %} {% elif related_status.status_type == 'Quotation' %} {% blocktrans trimmed %} - mentioned you in a quote from {{ book_title }} + {{ related_user }} mentioned you in a quote from {{ book_title }} {% endblocktrans %} {% else %} {% blocktrans trimmed %} - mentioned you in a status + {{ related_user }} mentioned you in a status {% endblocktrans %} {% endif %} diff --git a/bookwyrm/templates/notifications/items/reply.html b/bookwyrm/templates/notifications/items/reply.html index 30e7eff78..099e22078 100644 --- a/bookwyrm/templates/notifications/items/reply.html +++ b/bookwyrm/templates/notifications/items/reply.html @@ -20,25 +20,25 @@ {% if related_status.reply_parent.status_type == 'Review' %} {% blocktrans trimmed %} - replied to your review of {{ book_title }} + {{ related_user }} replied to your review of {{ book_title }} {% endblocktrans %} {% elif related_status.reply_parent.status_type == 'Comment' %} {% blocktrans trimmed %} - replied to your comment on {{ book_title }} + {{ related_user }} replied to your comment on {{ book_title }} {% endblocktrans %} {% elif related_status.reply_parent.status_type == 'Quotation' %} {% blocktrans trimmed %} - replied to your quote from {{ book_title }} + {{ related_user }} replied to your quote from {{ book_title }} {% endblocktrans %} {% else %} {% blocktrans trimmed %} - replied to your status + {{ related_user }} replied to your status {% endblocktrans %} {% endif %} diff --git a/bookwyrm/templates/notifications/items/report.html b/bookwyrm/templates/notifications/items/report.html index fdd5f0094..44756ce16 100644 --- a/bookwyrm/templates/notifications/items/report.html +++ b/bookwyrm/templates/notifications/items/report.html @@ -1,9 +1,9 @@ {% extends 'notifications/items/layout.html' %} - +{% load humanize %} {% load i18n %} {% block primary_link %}{% spaceless %} - {% url 'settings-report' notification.related_report.id %} +{% url 'settings-reports' %} {% endspaceless %}{% endblock %} {% block icon %} @@ -11,6 +11,10 @@ {% endblock %} {% block description %} - {% url 'settings-report' notification.related_report.id as path %} - {% blocktrans %}A new report needs moderation.{% endblocktrans %} + {% url 'settings-reports' as path %} + {% blocktrans trimmed count counter=notification.related_reports.count with display_count=notification.related_reports.count|intcomma %} + A new report needs moderation + {% plural %} + {{ display_count }} new reports need moderation + {% endblocktrans %} {% endblock %} diff --git a/bookwyrm/templates/search/barcode_modal.html b/bookwyrm/templates/search/barcode_modal.html index 07e95f59e..70481b20a 100644 --- a/bookwyrm/templates/search/barcode_modal.html +++ b/bookwyrm/templates/search/barcode_modal.html @@ -16,11 +16,11 @@
- +
- {% if reports %} - + {% if email_config_error %} + {% include 'settings/dashboard/warnings/email_config.html' with warning_level="danger" fullwidth=True %} {% endif %} - {% if pending_domains %} - + {% if current_version %} + {% include 'settings/dashboard/warnings/update_version.html' with warning_level="warning" fullwidth=True %} {% endif %} - {% if not site.allow_registration and site.allow_invite_requests and invite_requests %} -
- - {% blocktrans trimmed count counter=invite_requests with display_count=invite_requests|intcomma %} - {{ display_count }} invite request - {% plural %} - {{ display_count }} invite requests - {% endblocktrans %} - + {% if missing_privacy or missing_conduct %} +
+ {% if missing_privacy %} + {% include 'settings/dashboard/warnings/missing_privacy.html' with warning_level="danger" %} + {% endif %} + + {% if missing_conduct %} + {% include 'settings/dashboard/warnings/missing_conduct.html' with warning_level="warning" %} + {% endif %}
{% endif %} {% if current_version %} - + {% include 'settings/dashboard/warnings/update_version.html' with warning_level="warning" fullwidth=True %} + {% endif %} + + {% if reports %} + {% include 'settings/dashboard/warnings/reports.html' with warning_level="warning" %} + {% endif %} + + {% if pending_domains %} + {% include 'settings/dashboard/warnings/domain_review.html' with warning_level="primary" %} + {% endif %} + + {% if not site.allow_registration and site.allow_invite_requests and invite_requests %} + {% include 'settings/dashboard/warnings/invites.html' with warning_level="success" %} {% endif %}
diff --git a/bookwyrm/templates/settings/dashboard/warnings/domain_review.html b/bookwyrm/templates/settings/dashboard/warnings/domain_review.html new file mode 100644 index 000000000..d03971f92 --- /dev/null +++ b/bookwyrm/templates/settings/dashboard/warnings/domain_review.html @@ -0,0 +1,15 @@ +{% extends 'settings/dashboard/warnings/layout.html' %} +{% load i18n %} +{% load humanize %} + +{% block warning_link %}{% url 'settings-link-domain' %}{% endblock %} + +{% block warning_text %} + +{% blocktrans trimmed count counter=pending_domains with display_count=pending_domains|intcomma %} +{{ display_count }} domain needs review +{% plural %} +{{ display_count }} domains need review +{% endblocktrans %} + +{% endblock %} diff --git a/bookwyrm/templates/settings/dashboard/warnings/email_config.html b/bookwyrm/templates/settings/dashboard/warnings/email_config.html new file mode 100644 index 000000000..26ad5b1d7 --- /dev/null +++ b/bookwyrm/templates/settings/dashboard/warnings/email_config.html @@ -0,0 +1,13 @@ +{% extends 'settings/dashboard/warnings/layout.html' %} +{% load i18n %} + +{% block warning_link %}https://docs.joinbookwyrm.com/install-prod.html{% endblock %} + +{% block warning_text %} + +{% blocktrans trimmed %} +Your outgoing email address, {{ email_sender }}, may be misconfigured. +{% endblocktrans %} +{% trans "Check the EMAIL_SENDER_NAME and EMAIL_SENDER_DOMAIN in your .env file." %} + +{% endblock %} diff --git a/bookwyrm/templates/settings/dashboard/warnings/invites.html b/bookwyrm/templates/settings/dashboard/warnings/invites.html new file mode 100644 index 000000000..34d278f40 --- /dev/null +++ b/bookwyrm/templates/settings/dashboard/warnings/invites.html @@ -0,0 +1,15 @@ +{% extends 'settings/dashboard/warnings/layout.html' %} +{% load i18n %} +{% load humanize %} + +{% block warning_link %}{% url 'settings-invite-requests' %}{% endblock %} + +{% block warning_text %} + +{% blocktrans trimmed count counter=invite_requests with display_count=invite_requests|intcomma %} +{{ display_count }} invite request +{% plural %} +{{ display_count }} invite requests +{% endblocktrans %} + +{% endblock %} diff --git a/bookwyrm/templates/settings/dashboard/warnings/layout.html b/bookwyrm/templates/settings/dashboard/warnings/layout.html new file mode 100644 index 000000000..7284530fe --- /dev/null +++ b/bookwyrm/templates/settings/dashboard/warnings/layout.html @@ -0,0 +1,5 @@ + diff --git a/bookwyrm/templates/settings/dashboard/warnings/missing_conduct.html b/bookwyrm/templates/settings/dashboard/warnings/missing_conduct.html new file mode 100644 index 000000000..aa0b431f2 --- /dev/null +++ b/bookwyrm/templates/settings/dashboard/warnings/missing_conduct.html @@ -0,0 +1,10 @@ +{% extends 'settings/dashboard/warnings/layout.html' %} +{% load i18n %} + +{% block warning_link %}{% url 'settings-site' %}#instance-info{% endblock %} + +{% block warning_text %} + +{% trans "Your instance is missing a code of conduct." %} + +{% endblock %} diff --git a/bookwyrm/templates/settings/dashboard/warnings/missing_privacy.html b/bookwyrm/templates/settings/dashboard/warnings/missing_privacy.html new file mode 100644 index 000000000..87407632a --- /dev/null +++ b/bookwyrm/templates/settings/dashboard/warnings/missing_privacy.html @@ -0,0 +1,10 @@ +{% extends 'settings/dashboard/warnings/layout.html' %} +{% load i18n %} + +{% block warning_link %}{% url 'settings-site' %}#instance-info{% endblock %} + +{% block warning_text %} + +{% trans "Your instance is missing a privacy policy." %} + +{% endblock %} diff --git a/bookwyrm/templates/settings/dashboard/warnings/reports.html b/bookwyrm/templates/settings/dashboard/warnings/reports.html new file mode 100644 index 000000000..885f94789 --- /dev/null +++ b/bookwyrm/templates/settings/dashboard/warnings/reports.html @@ -0,0 +1,15 @@ +{% extends 'settings/dashboard/warnings/layout.html' %} +{% load i18n %} +{% load humanize %} + +{% block warning_link %}{% url 'settings-reports' %}{% endblock %} + +{% block warning_text %} + +{% blocktrans trimmed count counter=reports with display_count=reports|intcomma %} +{{ display_count }} open report +{% plural %} +{{ display_count }} open reports +{% endblocktrans %} + +{% endblock %} diff --git a/bookwyrm/templates/settings/dashboard/warnings/update_version.html b/bookwyrm/templates/settings/dashboard/warnings/update_version.html new file mode 100644 index 000000000..b04b0a624 --- /dev/null +++ b/bookwyrm/templates/settings/dashboard/warnings/update_version.html @@ -0,0 +1,12 @@ +{% extends 'settings/dashboard/warnings/layout.html' %} +{% load i18n %} + +{% block warning_link %}https://docs.joinbookwyrm.com/updating.html{% endblock %} + +{% block warning_text %} + +{% blocktrans trimmed with current=current_version available=available_version %} +An update is available! You're running v{{ current }} and the latest release is {{ available }}. +{% endblocktrans %} + +{% endblock %} diff --git a/bookwyrm/templates/settings/federation/instance.html b/bookwyrm/templates/settings/federation/instance.html index cb6b1fc37..0064c4ff3 100644 --- a/bookwyrm/templates/settings/federation/instance.html +++ b/bookwyrm/templates/settings/federation/instance.html @@ -56,7 +56,7 @@
{% trans "Users:" %}
{{ users.count }} - {% if server.user_set.count %}({% trans "View all" %}){% endif %} + {% if server.user_set.count %}({% trans "View all" %}){% endif %}
{% trans "Reports:" %}
diff --git a/bookwyrm/templates/settings/link_domains/link_table.html b/bookwyrm/templates/settings/link_domains/link_table.html index 5518477c8..a8ec18d22 100644 --- a/bookwyrm/templates/settings/link_domains/link_table.html +++ b/bookwyrm/templates/settings/link_domains/link_table.html @@ -15,7 +15,11 @@ {{ link.url }} + {% if link.added_by %} @{{ link.added_by|username }} + {% else %} + {% trans "Unknown user" %} + {% endif %} {% if link.filelink.filetype %} diff --git a/bookwyrm/templates/settings/reports/report.html b/bookwyrm/templates/settings/reports/report.html index 20fdeca36..ca105701f 100644 --- a/bookwyrm/templates/settings/reports/report.html +++ b/bookwyrm/templates/settings/reports/report.html @@ -55,9 +55,11 @@
{% endif %} +{% if report.user %} {% include 'settings/users/user_info.html' with user=report.user %} {% include 'settings/users/user_moderation_actions.html' with user=report.user %} +{% endif %}

{% trans "Moderator Comments" %}

diff --git a/bookwyrm/templates/settings/reports/report_header.html b/bookwyrm/templates/settings/reports/report_header.html index 878a825da..b77c6c6ae 100644 --- a/bookwyrm/templates/settings/reports/report_header.html +++ b/bookwyrm/templates/settings/reports/report_header.html @@ -9,9 +9,15 @@ Report #{{ report_id }}: Status posted by @{{ username }} {% elif report.links.exists %} -{% blocktrans trimmed with report_id=report.id username=report.user|username %} -Report #{{ report_id }}: Link added by @{{ username }} -{% endblocktrans %} + {% if report.user %} + {% blocktrans trimmed with report_id=report.id username=report.user|username %} + Report #{{ report_id }}: Link added by @{{ username }} + {% endblocktrans %} + {% else %} + {% blocktrans trimmed with report_id=report.id %} + Report #{{ report_id }}: Link domain + {% endblocktrans %} + {% endif %} {% else %} diff --git a/bookwyrm/templates/settings/users/user_admin.html b/bookwyrm/templates/settings/users/user_admin.html index 4144f0bde..9bc5805b1 100644 --- a/bookwyrm/templates/settings/users/user_admin.html +++ b/bookwyrm/templates/settings/users/user_admin.html @@ -24,6 +24,10 @@
  • {% trans "Local users" %}
  • + {% url 'settings-users' status="deleted" as url %} +
  • + {% trans "Deleted users" %} +
  • {% url 'settings-users' status="federated" as url %}
  • {% trans "Federated community" %} @@ -36,7 +40,7 @@ {% url 'settings-users' as url %} - @@ -52,7 +56,7 @@ {% trans "Status" as text %} {% include 'snippets/table-sort-header.html' with field="is_active" sort=sort text=text %} - {% if status != "local" %} + {% if status == "federated" %} {% for user in users %} - + @@ -72,6 +79,12 @@ {% trans "Active" %} + {% elif user.deactivation_reason == "moderator_deletion" or user.deactivation_reason == "self_deletion" %} + + {% trans "Deleted" %} + ({{ user.get_deactivation_reason_display }}) {% else %}
    + {% trans "Username" as text %} {% include 'snippets/table-sort-header.html' with field="username" sort=sort text=text %} {% trans "Remote instance" as text %} {% include 'snippets/table-sort-header.html' with field="federated_server__server_name" sort=sort text=text %} @@ -61,7 +65,10 @@
    + + {% include 'snippets/avatar.html' with user=user %} + {{ user|username }} {{ user.created_date }} {% if user.federated_server %} {{ user.federated_server.server_name }} diff --git a/bookwyrm/templates/setup/config.html b/bookwyrm/templates/setup/config.html index b14ad37d1..762fb5663 100644 --- a/bookwyrm/templates/setup/config.html +++ b/bookwyrm/templates/setup/config.html @@ -144,7 +144,7 @@ {% blocktrans trimmed %} You can change your instance settings in the .env file on your server. {% endblocktrans %} - + {% trans "View installation instructions" %}

    diff --git a/bookwyrm/templates/snippets/status/content_status.html b/bookwyrm/templates/snippets/status/content_status.html index d0d385153..bee4af1dc 100644 --- a/bookwyrm/templates/snippets/status/content_status.html +++ b/bookwyrm/templates/snippets/status/content_status.html @@ -112,9 +112,6 @@ {% with full=status.content|safe no_trim=status.content_warning itemprop="reviewBody" %} {% include 'snippets/trimmed_text.html' %} {% endwith %} - {% if status.progress %} -
    {% trans "page" %} {{ status.progress }}
    - {% endif %} {% endif %} {% if status.attachments.exists %} diff --git a/bookwyrm/templatetags/interaction.py b/bookwyrm/templatetags/interaction.py index 89a25420a..40f92dcd6 100644 --- a/bookwyrm/templatetags/interaction.py +++ b/bookwyrm/templatetags/interaction.py @@ -42,7 +42,7 @@ def get_relationship(context, user_object): """caches the relationship between the logged in user and another user""" user = context["request"].user return get_or_set( - f"relationship-{user.id}-{user_object.id}", + f"cached-relationship-{user.id}-{user_object.id}", get_relationship_name, user, user_object, @@ -61,6 +61,6 @@ def get_relationship_name(user, user_object): types["is_blocked"] = True elif user_object in user.following.all(): types["is_following"] = True - elif user_object in user.follower_requests.all(): + elif user in user_object.follower_requests.all(): types["is_follow_pending"] = True return types diff --git a/bookwyrm/templatetags/shelf_tags.py b/bookwyrm/templatetags/shelf_tags.py index 0eb1d8118..1fb799883 100644 --- a/bookwyrm/templatetags/shelf_tags.py +++ b/bookwyrm/templatetags/shelf_tags.py @@ -17,7 +17,7 @@ def get_is_book_on_shelf(book, shelf): lambda b, s: s.books.filter(id=b.id).exists(), book, shelf, - timeout=15552000, + timeout=60 * 60, # just cache this for an hour ) @@ -68,7 +68,7 @@ def active_shelf(context, book): ), user, book, - timeout=15552000, + timeout=60 * 60, ) or {"book": book} @@ -85,5 +85,5 @@ def latest_read_through(book, user): ), user, book, - timeout=15552000, + timeout=60 * 60, ) diff --git a/bookwyrm/templatetags/utilities.py b/bookwyrm/templatetags/utilities.py index 00fa4035c..834d39a14 100644 --- a/bookwyrm/templatetags/utilities.py +++ b/bookwyrm/templatetags/utilities.py @@ -53,7 +53,7 @@ def comparison_bool(str1, str2, reverse=False): @register.filter(is_safe=True) def truncatepath(value, arg): - """Truncate a path by removing all directories except the first and truncating .""" + """Truncate a path by removing all directories except the first and truncating""" path = os.path.normpath(value.name) path_list = path.split(os.sep) try: diff --git a/bookwyrm/tests/models/test_book_model.py b/bookwyrm/tests/models/test_book_model.py index d4f59fa58..5a2a6c3b6 100644 --- a/bookwyrm/tests/models/test_book_model.py +++ b/bookwyrm/tests/models/test_book_model.py @@ -1,6 +1,10 @@ """ testing models """ -from dateutil.parser import parse +from io import BytesIO +import pathlib +from dateutil.parser import parse +from PIL import Image +from django.core.files.base import ContentFile from django.test import TestCase from django.utils import timezone @@ -96,3 +100,28 @@ class Book(TestCase): self.first_edition.description = "hi" self.first_edition.save() self.assertEqual(self.first_edition.edition_rank, 1) + + def test_thumbnail_fields(self): + """Just hit them""" + 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) + + book = models.Edition.objects.create(title="hello") + book.cover.save("test.jpg", ContentFile(output.getvalue())) + + self.assertIsNotNone(book.cover_bw_book_xsmall_webp.url) + self.assertIsNotNone(book.cover_bw_book_xsmall_jpg.url) + self.assertIsNotNone(book.cover_bw_book_small_webp.url) + self.assertIsNotNone(book.cover_bw_book_small_jpg.url) + self.assertIsNotNone(book.cover_bw_book_medium_webp.url) + self.assertIsNotNone(book.cover_bw_book_medium_jpg.url) + self.assertIsNotNone(book.cover_bw_book_large_webp.url) + self.assertIsNotNone(book.cover_bw_book_large_jpg.url) + self.assertIsNotNone(book.cover_bw_book_xlarge_webp.url) + self.assertIsNotNone(book.cover_bw_book_xlarge_jpg.url) + self.assertIsNotNone(book.cover_bw_book_xxlarge_webp.url) + self.assertIsNotNone(book.cover_bw_book_xxlarge_jpg.url) diff --git a/bookwyrm/tests/models/test_list.py b/bookwyrm/tests/models/test_list.py index de6957b57..f7e64c6f2 100644 --- a/bookwyrm/tests/models/test_list.py +++ b/bookwyrm/tests/models/test_list.py @@ -7,6 +7,7 @@ from bookwyrm import models, settings @patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async") +@patch("bookwyrm.lists_stream.remove_list_task.delay") class List(TestCase): """some activitypub oddness ahead""" @@ -21,25 +22,15 @@ class List(TestCase): work = models.Work.objects.create(title="hello") self.book = models.Edition.objects.create(title="hi", parent_work=work) - def test_remote_id(self, _): + def test_remote_id(self, *_): """shelves use custom remote ids""" - with patch( - "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" - ), patch("bookwyrm.lists_stream.remove_list_task.delay"): - book_list = models.List.objects.create( - name="Test List", user=self.local_user - ) + book_list = models.List.objects.create(name="Test List", user=self.local_user) expected_id = f"https://{settings.DOMAIN}/list/{book_list.id}" self.assertEqual(book_list.get_remote_id(), expected_id) - def test_to_activity(self, _): + def test_to_activity(self, *_): """jsonify it""" - with patch( - "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" - ), patch("bookwyrm.lists_stream.remove_list_task.delay"): - book_list = models.List.objects.create( - name="Test List", user=self.local_user - ) + book_list = models.List.objects.create(name="Test List", user=self.local_user) activity_json = book_list.to_activity() self.assertIsInstance(activity_json, dict) self.assertEqual(activity_json["id"], book_list.remote_id) @@ -48,14 +39,11 @@ class List(TestCase): self.assertEqual(activity_json["name"], "Test List") self.assertEqual(activity_json["owner"], self.local_user.remote_id) - def test_list_item(self, _): + def test_list_item(self, *_): """a list entry""" - with patch( - "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" - ), patch("bookwyrm.lists_stream.remove_list_task.delay"): - book_list = models.List.objects.create( - name="Test List", user=self.local_user, privacy="unlisted" - ) + book_list = models.List.objects.create( + name="Test List", user=self.local_user, privacy="unlisted" + ) item = models.ListItem.objects.create( book_list=book_list, @@ -68,14 +56,9 @@ class List(TestCase): self.assertEqual(item.privacy, "unlisted") self.assertEqual(item.recipients, []) - def test_list_item_pending(self, _): + def test_list_item_pending(self, *_): """a list entry""" - with patch( - "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" - ), patch("bookwyrm.lists_stream.remove_list_task.delay"): - book_list = models.List.objects.create( - name="Test List", user=self.local_user - ) + book_list = models.List.objects.create(name="Test List", user=self.local_user) item = models.ListItem.objects.create( book_list=book_list, @@ -90,13 +73,8 @@ class List(TestCase): self.assertEqual(item.privacy, "direct") self.assertEqual(item.recipients, []) - def test_embed_key(self, _): + def test_embed_key(self, *_): """embed_key should never be empty""" - with patch( - "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" - ), patch("bookwyrm.lists_stream.remove_list_task.delay"): - book_list = models.List.objects.create( - name="Test List", user=self.local_user - ) + book_list = models.List.objects.create(name="Test List", user=self.local_user) self.assertIsInstance(book_list.embed_key, UUID) diff --git a/bookwyrm/tests/models/test_notification.py b/bookwyrm/tests/models/test_notification.py new file mode 100644 index 000000000..3d6025a5f --- /dev/null +++ b/bookwyrm/tests/models/test_notification.py @@ -0,0 +1,183 @@ +""" testing models """ +from unittest.mock import patch +from django.test import TestCase +from bookwyrm import models + + +class Notification(TestCase): + """let people know things""" + + def setUp(self): # pylint: disable=invalid-name + """useful things for creating a notification""" + 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", "mouse@mouse.mouse", "mouseword", local=True, localname="mouse" + ) + self.another_user = models.User.objects.create_user( + "rat", "rat@rat.rat", "ratword", local=True, localname="rat" + ) + with patch("bookwyrm.models.user.set_remote_server.delay"): + self.remote_user = models.User.objects.create_user( + "rat", + "rat@rat.com", + "ratword", + local=False, + remote_id="https://example.com/users/rat", + inbox="https://example.com/users/rat/inbox", + outbox="https://example.com/users/rat/outbox", + ) + self.work = models.Work.objects.create(title="Test Work") + self.book = models.Edition.objects.create( + title="Test Book", + isbn_13="1234567890123", + remote_id="https://example.com/book/1", + parent_work=self.work, + ) + self.another_book = models.Edition.objects.create( + title="Second Test Book", + parent_work=models.Work.objects.create(title="Test Work"), + ) + + def test_notification(self): + """New notifications are unread""" + notification = models.Notification.objects.create( + user=self.local_user, notification_type=models.Notification.FAVORITE + ) + self.assertFalse(notification.read) + + def test_notify(self): + """Create a notification""" + models.Notification.notify( + self.local_user, + self.remote_user, + notification_type=models.Notification.FAVORITE, + ) + self.assertTrue(models.Notification.objects.exists()) + + def test_notify_grouping(self): + """Bundle notifications""" + models.Notification.notify( + self.local_user, + self.remote_user, + notification_type=models.Notification.FAVORITE, + ) + self.assertEqual(models.Notification.objects.count(), 1) + notification = models.Notification.objects.get() + self.assertEqual(notification.related_users.count(), 1) + + models.Notification.notify( + self.local_user, + self.another_user, + notification_type=models.Notification.FAVORITE, + ) + self.assertEqual(models.Notification.objects.count(), 1) + notification.refresh_from_db() + self.assertEqual(notification.related_users.count(), 2) + + def test_notify_remote(self): + """Don't create notifications for remote users""" + models.Notification.notify( + self.remote_user, + self.local_user, + notification_type=models.Notification.FAVORITE, + ) + self.assertFalse(models.Notification.objects.exists()) + + def test_notify_self(self): + """Don't create notifications for yourself""" + models.Notification.notify( + self.local_user, + self.local_user, + notification_type=models.Notification.FAVORITE, + ) + self.assertFalse(models.Notification.objects.exists()) + + @patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async") + @patch("bookwyrm.lists_stream.remove_list_task.delay") + def test_notify_list_item_own_list(self, *_): + """Don't add list item notification for your own list""" + test_list = models.List.objects.create(user=self.local_user, name="hi") + + models.ListItem.objects.create( + user=self.local_user, book=self.book, book_list=test_list, order=1 + ) + self.assertFalse(models.Notification.objects.exists()) + + @patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async") + @patch("bookwyrm.lists_stream.remove_list_task.delay") + def test_notify_list_item_remote(self, *_): + """Don't add list item notification for a remote user""" + test_list = models.List.objects.create(user=self.remote_user, name="hi") + + models.ListItem.objects.create( + user=self.local_user, book=self.book, book_list=test_list, order=1 + ) + self.assertFalse(models.Notification.objects.exists()) + + @patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async") + @patch("bookwyrm.lists_stream.remove_list_task.delay") + def test_notify_list_item(self, *_): + """Add list item notification""" + test_list = models.List.objects.create(user=self.local_user, name="hi") + list_item = models.ListItem.objects.create( + user=self.remote_user, book=self.book, book_list=test_list, order=2 + ) + notification = models.Notification.objects.get() + self.assertEqual(notification.related_users.count(), 1) + self.assertEqual(notification.related_users.first(), self.remote_user) + self.assertEqual(notification.related_list_items.count(), 1) + self.assertEqual(notification.related_list_items.first(), list_item) + + models.ListItem.objects.create( + user=self.remote_user, book=self.another_book, book_list=test_list, order=3 + ) + notification = models.Notification.objects.get() + self.assertEqual(notification.related_users.count(), 1) + self.assertEqual(notification.related_users.first(), self.remote_user) + self.assertEqual(notification.related_list_items.count(), 2) + + def test_unnotify(self): + """Remove a notification""" + models.Notification.notify( + self.local_user, + self.remote_user, + notification_type=models.Notification.FAVORITE, + ) + self.assertTrue(models.Notification.objects.exists()) + + models.Notification.unnotify( + self.local_user, + self.remote_user, + notification_type=models.Notification.FAVORITE, + ) + self.assertFalse(models.Notification.objects.exists()) + + def test_unnotify_multiple_users(self): + """Remove a notification""" + models.Notification.notify( + self.local_user, + self.remote_user, + notification_type=models.Notification.FAVORITE, + ) + models.Notification.notify( + self.local_user, + self.another_user, + notification_type=models.Notification.FAVORITE, + ) + self.assertTrue(models.Notification.objects.exists()) + + models.Notification.unnotify( + self.local_user, + self.remote_user, + notification_type=models.Notification.FAVORITE, + ) + self.assertTrue(models.Notification.objects.exists()) + + models.Notification.unnotify( + self.local_user, + self.another_user, + notification_type=models.Notification.FAVORITE, + ) + self.assertFalse(models.Notification.objects.exists()) diff --git a/bookwyrm/tests/models/test_status_model.py b/bookwyrm/tests/models/test_status_model.py index 2f1e8670f..aae34b0a5 100644 --- a/bookwyrm/tests/models/test_status_model.py +++ b/bookwyrm/tests/models/test_status_model.py @@ -394,18 +394,6 @@ class Status(TestCase): self.assertEqual(activity["type"], "Announce") self.assertEqual(activity, boost.to_activity(pure=True)) - def test_notification(self, *_): - """a simple model""" - notification = models.Notification.objects.create( - user=self.local_user, notification_type="FAVORITE" - ) - self.assertFalse(notification.read) - - with self.assertRaises(IntegrityError): - models.Notification.objects.create( - user=self.local_user, notification_type="GLORB" - ) - # pylint: disable=unused-argument def test_create_broadcast(self, one, two, broadcast_mock, *_): """should send out two verions of a status on create""" diff --git a/bookwyrm/tests/templatetags/test_utilities.py b/bookwyrm/tests/templatetags/test_utilities.py index 0136ca8cd..7738a51d9 100644 --- a/bookwyrm/tests/templatetags/test_utilities.py +++ b/bookwyrm/tests/templatetags/test_utilities.py @@ -1,4 +1,5 @@ """ style fixes and lookups for templates """ +from collections import namedtuple import re from unittest.mock import patch @@ -61,3 +62,18 @@ class UtilitiesTags(TestCase): self.assertEqual(utilities.get_title(self.book), "Test Book") book = models.Edition.objects.create(title="Oh", subtitle="oh my") self.assertEqual(utilities.get_title(book), "Oh: oh my") + + def test_comparison_bool(self, *_): + """just a simple comparison""" + self.assertTrue(utilities.comparison_bool("a", "a")) + self.assertFalse(utilities.comparison_bool("a", "b")) + + self.assertFalse(utilities.comparison_bool("a", "a", reverse=True)) + self.assertTrue(utilities.comparison_bool("a", "b", reverse=True)) + + def test_truncatepath(self, *_): + """truncate a path""" + ValueMock = namedtuple("Value", ("name")) + value = ValueMock("home/one/two/three/four") + self.assertEqual(utilities.truncatepath(value, 2), "home/…ur") + self.assertEqual(utilities.truncatepath(value, "a"), "four") diff --git a/bookwyrm/tests/test_sanitize_html.py b/bookwyrm/tests/test_sanitize_html.py index 5814f2207..449acdafb 100644 --- a/bookwyrm/tests/test_sanitize_html.py +++ b/bookwyrm/tests/test_sanitize_html.py @@ -1,7 +1,7 @@ """ make sure only valid html gets to the app """ from django.test import TestCase -from bookwyrm.sanitize_html import InputHtmlParser +from bookwyrm.utils.sanitizer import clean class Sanitizer(TestCase): @@ -10,53 +10,39 @@ class Sanitizer(TestCase): def test_no_html(self): """just text""" input_text = "no html " - parser = InputHtmlParser() - parser.feed(input_text) - output = parser.get_output() + output = clean(input_text) self.assertEqual(input_text, output) def test_valid_html(self): """leave the html untouched""" input_text = "yes html" - parser = InputHtmlParser() - parser.feed(input_text) - output = parser.get_output() + output = clean(input_text) self.assertEqual(input_text, output) def test_valid_html_attrs(self): """and don't remove useful attributes""" input_text = 'yes html' - parser = InputHtmlParser() - parser.feed(input_text) - output = parser.get_output() + output = clean(input_text) 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() + output = clean(input_text) self.assertEqual(output, 'yes html') def test_invalid_html(self): - """remove all html when the html is malformed""" + """don't allow malformed html""" input_text = "yes html" - parser = InputHtmlParser() - parser.feed(input_text) - output = parser.get_output() - self.assertEqual("yes html", output) + output = clean(input_text) + self.assertEqual("yes html", output) input_text = "yes html " - parser = InputHtmlParser() - parser.feed(input_text) - output = parser.get_output() - self.assertEqual("yes html ", output) + output = clean(input_text) + self.assertEqual("yes html ", output) def test_disallowed_html(self): """remove disallowed html but keep allowed html""" input_text = "
    yes html
    " - parser = InputHtmlParser() - parser.feed(input_text) - output = parser.get_output() + output = clean(input_text) self.assertEqual(" yes html", output) diff --git a/bookwyrm/tests/test_utils.py b/bookwyrm/tests/test_utils.py new file mode 100644 index 000000000..183548975 --- /dev/null +++ b/bookwyrm/tests/test_utils.py @@ -0,0 +1,13 @@ +""" test searching for books """ +import re +from django.test import TestCase + +from bookwyrm.utils import regex + + +class TestUtils(TestCase): + """utility functions""" + + def test_regex(self): + """Regexes used throughout the app""" + self.assertTrue(re.match(regex.DOMAIN, "xn--69aa8bzb.xn--y9a3aq")) diff --git a/bookwyrm/tests/views/admin/test_automod.py b/bookwyrm/tests/views/admin/test_automod.py index 1ed36caf5..95db4d52f 100644 --- a/bookwyrm/tests/views/admin/test_automod.py +++ b/bookwyrm/tests/views/admin/test_automod.py @@ -1,11 +1,14 @@ """ test for app action functionality """ from unittest.mock import patch +from django.contrib.auth.models import Group from django.template.response import TemplateResponse from django.test import TestCase from django.test.client import RequestFactory +from django_celery_beat.models import PeriodicTask, IntervalSchedule from bookwyrm import forms, models, views +from bookwyrm.management.commands import initdb from bookwyrm.tests.validate_html import validate_html @@ -25,14 +28,52 @@ class AutomodViews(TestCase): local=True, localname="mouse", ) + initdb.init_groups() + initdb.init_permissions() + group = Group.objects.get(name="moderator") + self.local_user.groups.set([group]) models.SiteSettings.objects.create() def test_automod_rules_get(self): + """there are so many views, this just makes sure it LOADS""" + schedule = IntervalSchedule.objects.create(every=1, period="days") + PeriodicTask.objects.create( + interval=schedule, + name="automod-task", + task="bookwyrm.models.antispam.automod_task", + ) + models.AutoMod.objects.create(created_by=self.local_user, string_match="hello") + view = views.AutoMod.as_view() + 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) + + def test_automod_rules_get_empty_with_schedule(self): + """there are so many views, this just makes sure it LOADS""" + schedule = IntervalSchedule.objects.create(every=1, period="days") + PeriodicTask.objects.create( + interval=schedule, + name="automod-task", + task="bookwyrm.models.antispam.automod_task", + ) + view = views.AutoMod.as_view() + 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) + + def test_automod_rules_get_empty_without_schedule(self): """there are so many views, this just makes sure it LOADS""" view = views.AutoMod.as_view() request = self.factory.get("") request.user = self.local_user - request.user.is_superuser = True result = view(request) self.assertIsInstance(result, TemplateResponse) @@ -45,14 +86,33 @@ class AutomodViews(TestCase): form.data["string_match"] = "hello" form.data["flag_users"] = True form.data["flag_statuses"] = False - form.data["created_by"] = self.local_user + form.data["created_by"] = self.local_user.id view = views.AutoMod.as_view() 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) + + rule = models.AutoMod.objects.get() + self.assertTrue(rule.flag_users) + self.assertFalse(rule.flag_statuses) + + def test_schedule_automod_task(self): + """Schedule the task""" + self.assertFalse(IntervalSchedule.objects.exists()) + + form = forms.IntervalScheduleForm() + form.data["every"] = 1 + form.data["period"] = "days" + request = self.factory.post("", form.data) + request.user = self.local_user + + response = views.schedule_automod_task(request) + self.assertEqual(response.status_code, 302) + + self.assertTrue(IntervalSchedule.objects.exists()) diff --git a/bookwyrm/tests/views/admin/test_dashboard.py b/bookwyrm/tests/views/admin/test_dashboard.py index d05772c25..c36e2918f 100644 --- a/bookwyrm/tests/views/admin/test_dashboard.py +++ b/bookwyrm/tests/views/admin/test_dashboard.py @@ -1,10 +1,13 @@ """ test for app action functionality """ from unittest.mock import patch + +from django.contrib.auth.models import Group from django.template.response import TemplateResponse from django.test import TestCase from django.test.client import RequestFactory from bookwyrm import models, views +from bookwyrm.management.commands import initdb from bookwyrm.tests.validate_html import validate_html @@ -24,6 +27,10 @@ class DashboardViews(TestCase): local=True, localname="mouse", ) + initdb.init_groups() + initdb.init_permissions() + group = Group.objects.get(name="moderator") + self.local_user.groups.set([group]) models.SiteSettings.objects.create() @@ -32,7 +39,7 @@ class DashboardViews(TestCase): view = views.Dashboard.as_view() request = self.factory.get("") request.user = self.local_user - request.user.is_superuser = True + result = view(request) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) diff --git a/bookwyrm/tests/views/admin/test_email_blocks.py b/bookwyrm/tests/views/admin/test_email_blocks.py index 4fe9412e9..3c0f548e6 100644 --- a/bookwyrm/tests/views/admin/test_email_blocks.py +++ b/bookwyrm/tests/views/admin/test_email_blocks.py @@ -1,11 +1,13 @@ """ test for app action functionality """ from unittest.mock import patch +from django.contrib.auth.models import Group from django.template.response import TemplateResponse from django.test import TestCase from django.test.client import RequestFactory from bookwyrm import models, views +from bookwyrm.management.commands import initdb from bookwyrm.tests.validate_html import validate_html @@ -25,6 +27,10 @@ class EmailBlocklistViews(TestCase): local=True, localname="mouse", ) + initdb.init_groups() + initdb.init_permissions() + group = Group.objects.get(name="moderator") + self.local_user.groups.set([group]) models.SiteSettings.objects.create() @@ -33,7 +39,6 @@ class EmailBlocklistViews(TestCase): view = views.EmailBlocklist.as_view() request = self.factory.get("") request.user = self.local_user - request.user.is_superuser = True result = view(request) @@ -46,7 +51,6 @@ class EmailBlocklistViews(TestCase): view = views.EmailBlocklist.as_view() request = self.factory.post("", {"domain": "gmail.com"}) request.user = self.local_user - request.user.is_superuser = True result = view(request) @@ -65,7 +69,6 @@ class EmailBlocklistViews(TestCase): view = views.EmailBlocklist.as_view() request = self.factory.post("") request.user = self.local_user - request.user.is_superuser = True result = view(request, domain_id=domain.id) self.assertEqual(result.status_code, 302) diff --git a/bookwyrm/tests/views/admin/test_federation.py b/bookwyrm/tests/views/admin/test_federation.py index 340ed6052..33d7990b3 100644 --- a/bookwyrm/tests/views/admin/test_federation.py +++ b/bookwyrm/tests/views/admin/test_federation.py @@ -3,12 +3,14 @@ import os import json from unittest.mock import patch +from django.contrib.auth.models import Group from django.core.files.uploadedfile import SimpleUploadedFile from django.template.response import TemplateResponse from django.test import TestCase from django.test.client import RequestFactory from bookwyrm import forms, models, views +from bookwyrm.management.commands import initdb from bookwyrm.tests.validate_html import validate_html @@ -38,6 +40,10 @@ class FederationViews(TestCase): inbox="https://example.com/users/rat/inbox", outbox="https://example.com/users/rat/outbox", ) + initdb.init_groups() + initdb.init_permissions() + group = Group.objects.get(name="moderator") + self.local_user.groups.set([group]) models.SiteSettings.objects.create() @@ -46,7 +52,7 @@ class FederationViews(TestCase): view = views.Federation.as_view() request = self.factory.get("") request.user = self.local_user - request.user.is_superuser = True + result = view(request) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) @@ -58,7 +64,6 @@ class FederationViews(TestCase): view = views.FederatedServer.as_view() request = self.factory.get("") request.user = self.local_user - request.user.is_superuser = True result = view(request, server.id) self.assertIsInstance(result, TemplateResponse) @@ -81,7 +86,6 @@ class FederationViews(TestCase): view = views.block_server request = self.factory.post("") request.user = self.local_user - request.user.is_superuser = True with patch("bookwyrm.suggested_users.bulk_remove_instance_task.delay") as mock: view(request, server.id) @@ -121,7 +125,6 @@ class FederationViews(TestCase): request = self.factory.post("") request.user = self.local_user - request.user.is_superuser = True with patch("bookwyrm.suggested_users.bulk_add_instance_task.delay") as mock: views.unblock_server(request, server.id) @@ -147,7 +150,6 @@ class FederationViews(TestCase): view = views.AddFederatedServer.as_view() request = self.factory.get("") request.user = self.local_user - request.user.is_superuser = True result = view(request) self.assertIsInstance(result, TemplateResponse) @@ -164,7 +166,6 @@ class FederationViews(TestCase): view = views.AddFederatedServer.as_view() request = self.factory.post("", form.data) request.user = self.local_user - request.user.is_superuser = True view(request) server = models.FederatedServer.objects.get() @@ -196,7 +197,6 @@ class FederationViews(TestCase): }, ) request.user = self.local_user - request.user.is_superuser = True view(request) server.refresh_from_db() diff --git a/bookwyrm/tests/views/admin/test_ip_blocklist.py b/bookwyrm/tests/views/admin/test_ip_blocklist.py index af63ffaf3..a15a4d368 100644 --- a/bookwyrm/tests/views/admin/test_ip_blocklist.py +++ b/bookwyrm/tests/views/admin/test_ip_blocklist.py @@ -1,10 +1,13 @@ """ test for app action functionality """ from unittest.mock import patch + +from django.contrib.auth.models import Group from django.template.response import TemplateResponse from django.test import TestCase from django.test.client import RequestFactory from bookwyrm import forms, models, views +from bookwyrm.management.commands import initdb from bookwyrm.tests.validate_html import validate_html @@ -24,6 +27,10 @@ class IPBlocklistViews(TestCase): local=True, localname="mouse", ) + initdb.init_groups() + initdb.init_permissions() + group = Group.objects.get(name="moderator") + self.local_user.groups.set([group]) models.SiteSettings.objects.create() @@ -32,7 +39,6 @@ class IPBlocklistViews(TestCase): view = views.IPBlocklist.as_view() request = self.factory.get("") request.user = self.local_user - request.user.is_superuser = True result = view(request) @@ -48,7 +54,6 @@ class IPBlocklistViews(TestCase): request = self.factory.post("", form.data) request.user = self.local_user - request.user.is_superuser = True result = view(request) @@ -67,7 +72,6 @@ class IPBlocklistViews(TestCase): 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_link_domains.py b/bookwyrm/tests/views/admin/test_link_domains.py index 5d440dc50..5b2b8e025 100644 --- a/bookwyrm/tests/views/admin/test_link_domains.py +++ b/bookwyrm/tests/views/admin/test_link_domains.py @@ -1,11 +1,13 @@ """ test for app action functionality """ from unittest.mock import patch +from django.contrib.auth.models import Group from django.template.response import TemplateResponse from django.test import TestCase from django.test.client import RequestFactory from bookwyrm import models, views +from bookwyrm.management.commands import initdb from bookwyrm.tests.validate_html import validate_html @@ -25,6 +27,11 @@ class LinkDomainViews(TestCase): local=True, localname="mouse", ) + initdb.init_groups() + initdb.init_permissions() + group = Group.objects.get(name="moderator") + self.local_user.groups.set([group]) + self.book = models.Edition.objects.create(title="hello") models.FileLink.objects.create( book=self.book, @@ -39,7 +46,6 @@ class LinkDomainViews(TestCase): view = views.LinkDomain.as_view() request = self.factory.get("") request.user = self.local_user - request.user.is_superuser = True result = view(request, "pending") @@ -55,7 +61,6 @@ class LinkDomainViews(TestCase): view = views.LinkDomain.as_view() request = self.factory.post("", {"name": "ugh"}) request.user = self.local_user - request.user.is_superuser = True result = view(request, "pending", domain.id) self.assertEqual(result.status_code, 302) @@ -71,7 +76,6 @@ class LinkDomainViews(TestCase): view = views.update_domain_status request = self.factory.post("") request.user = self.local_user - request.user.is_superuser = True result = view(request, domain.id, "approved") self.assertEqual(result.status_code, 302) diff --git a/bookwyrm/tests/views/admin/test_reports.py b/bookwyrm/tests/views/admin/test_reports.py index d0875f2c2..e93b34341 100644 --- a/bookwyrm/tests/views/admin/test_reports.py +++ b/bookwyrm/tests/views/admin/test_reports.py @@ -2,11 +2,13 @@ import json from unittest.mock import patch +from django.contrib.auth.models import Group from django.template.response import TemplateResponse from django.test import TestCase from django.test.client import RequestFactory -from bookwyrm import forms, models, views +from bookwyrm import models, views +from bookwyrm.management.commands import initdb from bookwyrm.tests.validate_html import validate_html @@ -33,6 +35,10 @@ class ReportViews(TestCase): local=True, localname="rat", ) + initdb.init_groups() + initdb.init_permissions() + group = Group.objects.get(name="moderator") + self.local_user.groups.set([group]) models.SiteSettings.objects.create() def test_reports_page(self): @@ -40,7 +46,6 @@ class ReportViews(TestCase): view = views.ReportsAdmin.as_view() request = self.factory.get("") request.user = self.local_user - request.user.is_superuser = True result = view(request) self.assertIsInstance(result, TemplateResponse) @@ -52,7 +57,6 @@ class ReportViews(TestCase): view = views.ReportsAdmin.as_view() request = self.factory.get("") request.user = self.local_user - request.user.is_superuser = True models.Report.objects.create(reporter=self.local_user, user=self.rat) result = view(request) @@ -65,7 +69,6 @@ class ReportViews(TestCase): view = views.ReportAdmin.as_view() request = self.factory.get("") request.user = self.local_user - request.user.is_superuser = True report = models.Report.objects.create(reporter=self.local_user, user=self.rat) result = view(request, report.id) @@ -79,7 +82,6 @@ class ReportViews(TestCase): view = views.ReportAdmin.as_view() request = self.factory.post("", {"note": "hi"}) request.user = self.local_user - request.user.is_superuser = True report = models.Report.objects.create(reporter=self.local_user, user=self.rat) view(request, report.id) @@ -89,59 +91,12 @@ 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() - form.data["reporter"] = self.local_user.id - form.data["user"] = self.rat.id - request = self.factory.post("", form.data) - request.user = self.local_user - - views.Report.as_view()(request) - - report = models.Report.objects.get() - 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) self.assertFalse(report.resolved) request = self.factory.post("") request.user = self.local_user - request.user.is_superuser = True # resolve views.resolve_report(request, report.id) @@ -161,7 +116,6 @@ class ReportViews(TestCase): self.assertTrue(self.rat.is_active) request = self.factory.post("") request.user = self.local_user - request.user.is_superuser = True # de-activate views.suspend_user(request, self.rat.id) @@ -180,7 +134,6 @@ class ReportViews(TestCase): self.assertTrue(self.rat.is_active) request = self.factory.post("", {"password": "password"}) request.user = self.local_user - request.user.is_superuser = True # de-activate with patch( diff --git a/bookwyrm/tests/views/admin/test_site.py b/bookwyrm/tests/views/admin/test_site.py new file mode 100644 index 000000000..85f785027 --- /dev/null +++ b/bookwyrm/tests/views/admin/test_site.py @@ -0,0 +1,85 @@ +""" test for app action functionality """ +from unittest.mock import patch + +from django.contrib.auth.models import Group +from django.template.response import TemplateResponse +from django.test import TestCase +from django.test.client import RequestFactory + +from bookwyrm import forms, models, views +from bookwyrm.management.commands import initdb +from bookwyrm.tests.validate_html import validate_html + + +class SiteSettingsViews(TestCase): + """Edit site settings""" + + 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.mouse", + "password", + local=True, + localname="mouse", + ) + initdb.init_groups() + initdb.init_permissions() + group = Group.objects.get(name="admin") + self.local_user.groups.set([group]) + + self.site = models.SiteSettings.objects.create() + + def test_site_get(self): + """there are so many views, this just makes sure it LOADS""" + view = views.Site.as_view() + 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) + + def test_site_post(self): + """there are so many views, this just makes sure it LOADS""" + view = views.Site.as_view() + form = forms.SiteForm() + form.data["name"] = "Name!" + form.data["instance_tagline"] = "hi" + form.data["instance_description"] = "blah" + form.data["registration_closed_text"] = "blah" + form.data["invite_request_text"] = "blah" + form.data["code_of_conduct"] = "blah" + form.data["privacy_policy"] = "blah" + request = self.factory.post("", form.data) + request.user = self.local_user + + result = view(request) + + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + site = models.SiteSettings.objects.get() + self.assertEqual(site.name, "Name!") + + def test_site_post_invalid(self): + """there are so many views, this just makes sure it LOADS""" + view = views.Site.as_view() + form = forms.SiteForm() + request = self.factory.post("", form.data) + request.user = self.local_user + + result = view(request) + + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + self.site.refresh_from_db() + self.assertEqual(self.site.name, "BookWyrm") diff --git a/bookwyrm/tests/views/admin/test_user_admin.py b/bookwyrm/tests/views/admin/test_user_admin.py index 4cb3702d8..3f480d990 100644 --- a/bookwyrm/tests/views/admin/test_user_admin.py +++ b/bookwyrm/tests/views/admin/test_user_admin.py @@ -7,6 +7,7 @@ from django.test import TestCase from django.test.client import RequestFactory from bookwyrm import models, views +from bookwyrm.management.commands import initdb from bookwyrm.tests.validate_html import validate_html @@ -26,6 +27,10 @@ class UserAdminViews(TestCase): local=True, localname="mouse", ) + initdb.init_groups() + initdb.init_permissions() + group = Group.objects.get(name="moderator") + self.local_user.groups.set([group]) models.SiteSettings.objects.create() def test_user_admin_list_page(self): @@ -33,7 +38,7 @@ class UserAdminViews(TestCase): view = views.UserAdminList.as_view() request = self.factory.get("") request.user = self.local_user - request.user.is_superuser = True + result = view(request) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) @@ -44,7 +49,6 @@ class UserAdminViews(TestCase): view = views.UserAdmin.as_view() request = self.factory.get("") request.user = self.local_user - request.user.is_superuser = True result = view(request, self.local_user.id) @@ -57,15 +61,14 @@ class UserAdminViews(TestCase): @patch("bookwyrm.suggested_users.remove_user_task.delay") def test_user_admin_page_post(self, *_): """set the user's group""" - group = Group.objects.create(name="editor") + group = Group.objects.get(name="editor") self.assertEqual( - list(self.local_user.groups.values_list("name", flat=True)), [] + list(self.local_user.groups.values_list("name", flat=True)), ["moderator"] ) view = views.UserAdmin.as_view() request = self.factory.post("", {"groups": [group.id]}) request.user = self.local_user - request.user.is_superuser = True with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): result = view(request, self.local_user.id) diff --git a/bookwyrm/tests/views/books/test_edit_book.py b/bookwyrm/tests/views/books/test_edit_book.py index c7869807b..1ac8336d8 100644 --- a/bookwyrm/tests/views/books/test_edit_book.py +++ b/bookwyrm/tests/views/books/test_edit_book.py @@ -48,7 +48,7 @@ class EditBookViews(TestCase): models.SiteSettings.objects.create() - def test_edit_book_page(self): + def test_edit_book_get(self): """there are so many views, this just makes sure it LOADS""" view = views.EditBook.as_view() request = self.factory.get("") @@ -59,18 +59,7 @@ class EditBookViews(TestCase): validate_html(result.render()) self.assertEqual(result.status_code, 200) - def test_edit_book_create_page(self): - """there are so many views, this just makes sure it LOADS""" - view = views.CreateBook.as_view() - request = self.factory.get("") - 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) - - def test_edit_book(self): + def test_edit_book_post(self): """lets a user edit a book""" view = views.EditBook.as_view() self.local_user.groups.add(self.group) @@ -86,6 +75,23 @@ class EditBookViews(TestCase): self.book.refresh_from_db() self.assertEqual(self.book.title, "New Title") + def test_edit_book_post_invalid(self): + """book form is invalid""" + view = views.EditBook.as_view() + self.local_user.groups.add(self.group) + form = forms.EditionForm(instance=self.book) + form.data["title"] = "" + form.data["last_edited_by"] = self.local_user.id + request = self.factory.post("", form.data) + request.user = self.local_user + + result = view(request, self.book.id) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + # Title is unchanged + self.book.refresh_from_db() + self.assertEqual(self.book.title, "Example Edition") + def test_edit_book_add_author(self): """lets a user edit a book with new authors""" view = views.EditBook.as_view() @@ -234,3 +240,49 @@ class EditBookViews(TestCase): self.assertEqual(len(result["author_matches"]), 2) self.assertEqual(result["author_matches"][0]["name"], "Sappho") self.assertEqual(result["author_matches"][1]["name"], "Some Guy") + + def test_create_book_get(self): + """there are so many views, this just makes sure it LOADS""" + view = views.CreateBook.as_view() + request = self.factory.get("") + 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) + + def test_create_book_post_existing_work(self): + """Adding an edition to an existing work""" + author = models.Author.objects.create(name="Sappho") + view = views.CreateBook.as_view() + form = forms.EditionForm() + form.data["title"] = "A Title" + form.data["parent_work"] = self.work.id + form.data["authors"] = [author.id] + form.data["last_edited_by"] = self.local_user.id + request = self.factory.post("", form.data) + request.user = self.local_user + request.user.is_superuser = True + + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + result = view(request) + self.assertEqual(result.status_code, 302) + + new_edition = models.Edition.objects.get(title="A Title") + self.assertEqual(new_edition.parent_work, self.work) + self.assertEqual(new_edition.authors.first(), author) + + def test_create_book_post_invalid(self): + """book form is invalid""" + view = views.CreateBook.as_view() + self.local_user.groups.add(self.group) + form = forms.EditionForm(instance=self.book) + form.data["title"] = "" + form.data["last_edited_by"] = self.local_user.id + request = self.factory.post("", form.data) + request.user = self.local_user + + result = view(request) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) diff --git a/bookwyrm/tests/views/test_group.py b/bookwyrm/tests/views/test_group.py index e43b040ac..b0a0c925a 100644 --- a/bookwyrm/tests/views/test_group.py +++ b/bookwyrm/tests/views/test_group.py @@ -257,6 +257,29 @@ class GroupViews(TestCase): self.assertEqual(notification.related_group, self.testgroup) self.assertEqual(notification.notification_type, "REMOVE") + def test_remove_member_remove_self(self, _): + """Leave a group""" + models.GroupMember.objects.create( + user=self.rat, + group=self.testgroup, + ) + request = self.factory.post( + "", + { + "group": self.testgroup.id, + "user": self.rat.localname, + }, + ) + request.user = self.rat + result = views.remove_member(request) + self.assertEqual(result.status_code, 302) + self.assertEqual(models.GroupMember.objects.count(), 1) + self.assertEqual(models.GroupMember.objects.first().user, self.local_user) + notification = models.Notification.objects.get() + self.assertEqual(notification.user, self.local_user) + self.assertEqual(notification.related_group, self.testgroup) + self.assertEqual(notification.notification_type, "LEAVE") + def test_accept_membership(self, _): """accept an invite""" models.GroupMemberInvitation.objects.create( diff --git a/bookwyrm/tests/views/test_helpers.py b/bookwyrm/tests/views/test_helpers.py index a092a4c9a..ce1f6a735 100644 --- a/bookwyrm/tests/views/test_helpers.py +++ b/bookwyrm/tests/views/test_helpers.py @@ -112,7 +112,17 @@ class ViewsHelpers(TestCase): request = self.factory.get("", {"q": "Test Book"}, HTTP_USER_AGENT=USER_AGENT) self.assertTrue(views.helpers.is_bookwyrm_request(request)) - def test_existing_user(self, *_): + def test_handle_remote_webfinger_invalid(self, *_): + """Various ways you can send a bad query""" + # if there's no query, there's no result + result = views.helpers.handle_remote_webfinger(None) + self.assertIsNone(result) + + # malformed user + result = views.helpers.handle_remote_webfinger("noatsymbol") + self.assertIsNone(result) + + def test_handle_remote_webfinger_existing_user(self, *_): """simple database lookup by username""" result = views.helpers.handle_remote_webfinger("@mouse@local.com") self.assertEqual(result, self.local_user) @@ -124,7 +134,19 @@ class ViewsHelpers(TestCase): self.assertEqual(result, self.local_user) @responses.activate - def test_load_user(self, *_): + def test_handle_remote_webfinger_load_user_invalid_result(self, *_): + """find a remote user using webfinger, but fail""" + username = "mouse@example.com" + responses.add( + responses.GET, + f"https://example.com/.well-known/webfinger?resource=acct:{username}", + status=500, + ) + result = views.helpers.handle_remote_webfinger("@mouse@example.com") + self.assertIsNone(result) + + @responses.activate + def test_handle_remote_webfinger_load_user(self, *_): """find a remote user using webfinger""" username = "mouse@example.com" wellknown = { @@ -154,7 +176,7 @@ class ViewsHelpers(TestCase): self.assertIsInstance(result, models.User) self.assertEqual(result.username, "mouse@example.com") - def test_user_on_blocked_server(self, *_): + def test_handler_remote_webfinger_user_on_blocked_server(self, *_): """find a remote user using webfinger""" models.FederatedServer.objects.create( server_name="example.com", status="blocked" @@ -163,6 +185,38 @@ class ViewsHelpers(TestCase): result = views.helpers.handle_remote_webfinger("@mouse@example.com") self.assertIsNone(result) + @responses.activate + def test_subscribe_remote_webfinger(self, *_): + """remote subscribe templates""" + query = "mouse@example.com" + response = { + "subject": f"acct:{query}", + "links": [ + { + "rel": "self", + "type": "application/activity+json", + "href": "https://example.com/user/mouse", + "template": "hi", + }, + { + "rel": "http://ostatus.org/schema/1.0/subscribe", + "type": "application/activity+json", + "href": "https://example.com/user/mouse", + "template": "hello", + }, + ], + } + responses.add( + responses.GET, + f"https://example.com/.well-known/webfinger?resource=acct:{query}", + json=response, + status=200, + ) + template = views.helpers.subscribe_remote_webfinger(query) + self.assertEqual(template, "hello") + template = views.helpers.subscribe_remote_webfinger(f"@{query}") + self.assertEqual(template, "hello") + def test_handle_reading_status_to_read(self, *_): """posts shelve activities""" shelf = self.local_user.shelf_set.get(identifier="to-read") diff --git a/bookwyrm/tests/views/test_interaction.py b/bookwyrm/tests/views/test_interaction.py index 1d729f9a5..74878df7d 100644 --- a/bookwyrm/tests/views/test_interaction.py +++ b/bookwyrm/tests/views/test_interaction.py @@ -60,7 +60,7 @@ class InteractionViews(TestCase): notification = models.Notification.objects.get() self.assertEqual(notification.notification_type, "FAVORITE") self.assertEqual(notification.user, self.local_user) - self.assertEqual(notification.related_user, self.remote_user) + self.assertEqual(notification.related_users.first(), self.remote_user) def test_unfavorite(self, *_): """unfav a status""" @@ -98,7 +98,7 @@ class InteractionViews(TestCase): notification = models.Notification.objects.get() self.assertEqual(notification.notification_type, "BOOST") self.assertEqual(notification.user, self.local_user) - self.assertEqual(notification.related_user, self.remote_user) + self.assertEqual(notification.related_users.first(), self.remote_user) self.assertEqual(notification.related_status, status) def test_self_boost(self, *_): diff --git a/bookwyrm/tests/views/test_notifications.py b/bookwyrm/tests/views/test_notifications.py index 2a5cf7984..8e5dfa2b5 100644 --- a/bookwyrm/tests/views/test_notifications.py +++ b/bookwyrm/tests/views/test_notifications.py @@ -25,10 +25,12 @@ class NotificationViews(TestCase): local=True, localname="mouse", ) + self.another_user = models.User.objects.create_user( + "rat", "rat@rat.rat", "ratword", local=True, localname="rat" + ) with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): self.status = models.Status.objects.create( - content="hi", - user=self.local_user, + content="hi", user=self.local_user ) models.SiteSettings.objects.create() @@ -42,27 +44,31 @@ class NotificationViews(TestCase): validate_html(result.render()) self.assertEqual(result.status_code, 200) - def test_notifications_page_notifications(self): + def test_notifications_page_status_notifications(self): """there are so many views, this just makes sure it LOADS""" - models.Notification.objects.create( - user=self.local_user, + models.Notification.notify( + self.local_user, + self.another_user, notification_type="FAVORITE", related_status=self.status, ) - models.Notification.objects.create( - user=self.local_user, + models.Notification.notify( + self.local_user, + self.another_user, notification_type="BOOST", related_status=self.status, ) - models.Notification.objects.create( - user=self.local_user, + models.Notification.notify( + self.local_user, + self.another_user, notification_type="MENTION", related_status=self.status, ) self.status.reply_parent = self.status self.status.save(broadcast=False) - models.Notification.objects.create( - user=self.local_user, + models.Notification.notify( + self.local_user, + self.another_user, notification_type="REPLY", related_status=self.status, ) @@ -74,6 +80,200 @@ class NotificationViews(TestCase): validate_html(result.render()) self.assertEqual(result.status_code, 200) + def test_notifications_page_follow_request(self): + """import completed notification""" + models.Notification.notify( + self.local_user, + self.another_user, + notification_type="FOLLOW_REQUEST", + ) + view = views.Notifications.as_view() + request = self.factory.get("") + request.user = self.local_user + result = view(request) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + + def test_notifications_page_follows(self): + """import completed notification""" + models.Notification.notify( + self.local_user, + self.another_user, + notification_type="FOLLOW", + ) + view = views.Notifications.as_view() + request = self.factory.get("") + request.user = self.local_user + result = view(request) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + + def test_notifications_page_report(self): + """import completed notification""" + report = models.Report.objects.create( + user=self.another_user, + reporter=self.local_user, + ) + notification = models.Notification.objects.create( + user=self.local_user, + notification_type="REPORT", + ) + notification.related_reports.add(report) + + view = views.Notifications.as_view() + request = self.factory.get("") + request.user = self.local_user + result = view(request) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + + def test_notifications_page_import(self): + """import completed notification""" + import_job = models.ImportJob.objects.create(user=self.local_user, mappings={}) + models.Notification.objects.create( + user=self.local_user, notification_type="IMPORT", related_import=import_job + ) + view = views.Notifications.as_view() + 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) + + def test_notifications_page_list(self): + """Adding books to lists""" + book = models.Edition.objects.create(title="shape") + with patch( + "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" + ), patch("bookwyrm.lists_stream.remove_list_task.delay"): + book_list = models.List.objects.create(user=self.local_user, name="hi") + item = models.ListItem.objects.create( + book=book, user=self.another_user, book_list=book_list, order=1 + ) + models.Notification.notify_list_item(self.local_user, item) + view = views.Notifications.as_view() + 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) + + def test_notifications_page_group_invite(self): + """group related notifications""" + group = models.Group.objects.create(user=self.another_user, name="group") + models.Notification.notify( + self.local_user, + self.another_user, + notification_type="INVITE", + related_group=group, + ) + view = views.Notifications.as_view() + 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) + + def test_notifications_page_group_accept(self): + """group related notifications""" + group = models.Group.objects.create(user=self.another_user, name="group") + models.Notification.notify( + self.local_user, + self.another_user, + notification_type="ACCEPT", + related_group=group, + ) + view = views.Notifications.as_view() + 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) + + def test_notifications_page_group_join(self): + """group related notifications""" + group = models.Group.objects.create(user=self.another_user, name="group") + models.Notification.notify( + self.local_user, + self.another_user, + notification_type="JOIN", + related_group=group, + ) + view = views.Notifications.as_view() + 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) + + def test_notifications_page_group_leave(self): + """group related notifications""" + group = models.Group.objects.create(user=self.another_user, name="group") + models.Notification.notify( + self.local_user, + self.another_user, + notification_type="LEAVE", + related_group=group, + ) + view = views.Notifications.as_view() + 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) + + def test_notifications_page_group_remove(self): + """group related notifications""" + group = models.Group.objects.create(user=self.another_user, name="group") + models.Notification.notify( + self.local_user, + self.another_user, + notification_type="REMOVE", + related_group=group, + ) + view = views.Notifications.as_view() + 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) + + def test_notifications_page_group_changes(self): + """group related notifications""" + group = models.Group.objects.create(user=self.another_user, name="group") + models.Notification.notify( + self.local_user, + self.another_user, + notification_type="GROUP_PRIVACY", + related_group=group, + ) + models.Notification.notify( + self.local_user, + self.another_user, + notification_type="GROUP_NAME", + related_group=group, + ) + models.Notification.notify( + self.local_user, + self.another_user, + notification_type="GROUP_DESCRIPTION", + related_group=group, + ) + view = views.Notifications.as_view() + 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) + def test_clear_notifications(self): """erase notifications""" models.Notification.objects.create( diff --git a/bookwyrm/tests/views/test_report.py b/bookwyrm/tests/views/test_report.py new file mode 100644 index 000000000..85dca8aea --- /dev/null +++ b/bookwyrm/tests/views/test_report.py @@ -0,0 +1,109 @@ +""" test for app action functionality """ +from unittest.mock import patch + +from django.test import TestCase +from django.test.client import RequestFactory + +from bookwyrm import forms, models, views +from bookwyrm.tests.validate_html import validate_html + + +class ReportViews(TestCase): + """every response to a get request, html or json""" + + 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.mouse", + "password", + local=True, + localname="mouse", + ) + self.rat = models.User.objects.create_user( + "rat@local.com", + "rat@mouse.mouse", + "password", + local=True, + localname="rat", + ) + with patch( + "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" + ), patch("bookwyrm.activitystreams.add_status_task.delay"): + self.status = models.Status.objects.create( + user=self.local_user, + content="Test status", + ) + models.SiteSettings.objects.create() + + 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_report_modal_view_with_status(self): + """a user reports another user""" + request = self.factory.get("") + request.user = self.local_user + result = views.Report.as_view()( + request, user_id=self.local_user.id, status_id=self.status.id + ) + + validate_html(result.render()) + + def test_report_modal_view_with_link_domain(self): + """a user reports another user""" + link = models.Link.objects.create( + url="http://example.com/hi", + added_by=self.local_user, + ) + request = self.factory.get("") + request.user = self.local_user + result = views.Report.as_view()(request, link_id=link.id) + + validate_html(result.render()) + + def test_make_report(self): + """a user reports another user""" + form = forms.ReportForm() + form.data["reporter"] = self.local_user.id + form.data["user"] = self.rat.id + request = self.factory.post("", form.data) + request.user = self.local_user + + views.Report.as_view()(request) + + report = models.Report.objects.get() + 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") diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 9287c3705..ee5ed05db 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -126,7 +126,7 @@ urlpatterns = [ r"^settings/users/?$", views.UserAdminList.as_view(), name="settings-users" ), re_path( - r"^settings/users/(?P(local|federated))\/?$", + r"^settings/users/(?P(local|federated|deleted))\/?$", views.UserAdminList.as_view(), name="settings-users", ), @@ -287,7 +287,7 @@ urlpatterns = [ name="report-status", ), re_path( - r"^report/(?P\d+)/link/(?P\d+)?$", + r"^report/link/(?P\d+)?$", views.Report.as_view(), name="report-link", ), diff --git a/bookwyrm/utils/sanitizer.py b/bookwyrm/utils/sanitizer.py new file mode 100644 index 000000000..f6c87358c --- /dev/null +++ b/bookwyrm/utils/sanitizer.py @@ -0,0 +1,26 @@ +"""Clean user-provided text""" +import bleach + + +def clean(input_text): + """Run through "bleach" """ + return bleach.clean( + input_text, + tags=[ + "p", + "blockquote", + "br", + "b", + "i", + "strong", + "em", + "pre", + "a", + "span", + "ul", + "ol", + "li", + ], + attributes=["href", "rel", "src", "alt"], + strip=True, + ) diff --git a/bookwyrm/views/admin/automod.py b/bookwyrm/views/admin/automod.py index f8c3e8e67..65eae71a9 100644 --- a/bookwyrm/views/admin/automod.py +++ b/bookwyrm/views/admin/automod.py @@ -33,8 +33,7 @@ class AutoMod(View): def post(self, request): """add rule""" form = forms.AutoModRuleForm(request.POST) - success = form.is_valid() - if success: + if form.is_valid(): form.save() form = forms.AutoModRuleForm() diff --git a/bookwyrm/views/admin/dashboard.py b/bookwyrm/views/admin/dashboard.py index b06b6ba00..19583bfa1 100644 --- a/bookwyrm/views/admin/dashboard.py +++ b/bookwyrm/views/admin/dashboard.py @@ -1,5 +1,7 @@ """ instance overview """ from datetime import timedelta +import re + from dateutil.parser import parse from packaging import version @@ -13,6 +15,7 @@ from django.views import View from bookwyrm import models, settings from bookwyrm.connectors.abstract_connector import get_data from bookwyrm.connectors.connector_manager import ConnectorException +from bookwyrm.utils import regex # pylint: disable= no-self-use @@ -26,91 +29,32 @@ class Dashboard(View): def get(self, request): """list of users""" - interval = int(request.GET.get("days", 1)) - now = timezone.now() - start = request.GET.get("start") - if start: - start = timezone.make_aware(parse(start)) - else: - start = now - timedelta(days=6 * interval) + data = get_charts_and_stats(request) - end = request.GET.get("end") - end = timezone.make_aware(parse(end)) if end else now - start = start.replace(hour=0, minute=0, second=0) + # Make sure email looks properly configured + email_config_error = re.findall( + r"[\s\@]", settings.EMAIL_SENDER_DOMAIN + ) or not re.match(regex.DOMAIN, settings.EMAIL_SENDER_DOMAIN) - user_queryset = models.User.objects.filter(local=True) - user_chart = Chart( - queryset=user_queryset, - queries={ - "total": lambda q, s, e: q.filter( - Q(is_active=True) | Q(deactivation_date__gt=e), - created_date__lte=e, - ).count(), - "active": lambda q, s, e: q.filter( - Q(is_active=True) | Q(deactivation_date__gt=e), - created_date__lte=e, - ) - .filter( - last_active_date__gt=e - timedelta(days=31), - ) - .count(), - }, + data["email_config_error"] = email_config_error + # pylint: disable=line-too-long + data[ + "email_sender" + ] = f"{settings.EMAIL_SENDER_NAME}@{settings.EMAIL_SENDER_DOMAIN}" + + site = models.SiteSettings.objects.get() + # pylint: disable=protected-access + data["missing_conduct"] = ( + not site.code_of_conduct + or site.code_of_conduct + == site._meta.get_field("code_of_conduct").get_default() ) - - status_queryset = models.Status.objects.filter(user__local=True, deleted=False) - status_chart = Chart( - queryset=status_queryset, - queries={ - "total": lambda q, s, e: q.filter( - created_date__gt=s, - created_date__lte=e, - ).count() - }, + data["missing_privacy"] = ( + not site.privacy_policy + or site.privacy_policy + == site._meta.get_field("privacy_policy").get_default() ) - register_chart = Chart( - queryset=user_queryset, - queries={ - "total": lambda q, s, e: q.filter( - created_date__gt=s, - created_date__lte=e, - ).count() - }, - ) - - works_chart = Chart( - queryset=models.Work.objects, - queries={ - "total": lambda q, s, e: q.filter( - created_date__gt=s, - created_date__lte=e, - ).count() - }, - ) - - data = { - "start": start.strftime("%Y-%m-%d"), - "end": end.strftime("%Y-%m-%d"), - "interval": interval, - "users": user_queryset.filter(is_active=True).count(), - "active_users": user_queryset.filter( - is_active=True, last_active_date__gte=now - timedelta(days=31) - ).count(), - "statuses": status_queryset.count(), - "works": models.Work.objects.count(), - "reports": models.Report.objects.filter(resolved=False).count(), - "pending_domains": models.LinkDomain.objects.filter( - status="pending" - ).count(), - "invite_requests": models.InviteRequest.objects.filter( - ignored=False, invite__isnull=True - ).count(), - "user_stats": user_chart.get_chart(start, end, interval), - "status_stats": status_chart.get_chart(start, end, interval), - "register_stats": register_chart.get_chart(start, end, interval), - "works_stats": works_chart.get_chart(start, end, interval), - } - # check version try: release = get_data(settings.RELEASE_API, timeout=3) @@ -126,6 +70,91 @@ class Dashboard(View): return TemplateResponse(request, "settings/dashboard/dashboard.html", data) +def get_charts_and_stats(request): + """Defines the dashbaord charts""" + interval = int(request.GET.get("days", 1)) + now = timezone.now() + start = request.GET.get("start") + if start: + start = timezone.make_aware(parse(start)) + else: + start = now - timedelta(days=6 * interval) + + end = request.GET.get("end") + end = timezone.make_aware(parse(end)) if end else now + start = start.replace(hour=0, minute=0, second=0) + + user_queryset = models.User.objects.filter(local=True) + user_chart = Chart( + queryset=user_queryset, + queries={ + "total": lambda q, s, e: q.filter( + Q(is_active=True) | Q(deactivation_date__gt=e), + created_date__lte=e, + ).count(), + "active": lambda q, s, e: q.filter( + Q(is_active=True) | Q(deactivation_date__gt=e), + created_date__lte=e, + ) + .filter( + last_active_date__gt=e - timedelta(days=31), + ) + .count(), + }, + ) + + status_queryset = models.Status.objects.filter(user__local=True, deleted=False) + status_chart = Chart( + queryset=status_queryset, + queries={ + "total": lambda q, s, e: q.filter( + created_date__gt=s, + created_date__lte=e, + ).count() + }, + ) + + register_chart = Chart( + queryset=user_queryset, + queries={ + "total": lambda q, s, e: q.filter( + created_date__gt=s, + created_date__lte=e, + ).count() + }, + ) + + works_chart = Chart( + queryset=models.Work.objects, + queries={ + "total": lambda q, s, e: q.filter( + created_date__gt=s, + created_date__lte=e, + ).count() + }, + ) + return { + "start": start.strftime("%Y-%m-%d"), + "end": end.strftime("%Y-%m-%d"), + "interval": interval, + "users": user_queryset.filter(is_active=True).count(), + "active_users": user_queryset.filter( + is_active=True, last_active_date__gte=now - timedelta(days=31) + ).count(), + "statuses": status_queryset.count(), + "works": models.Work.objects.count(), + "reports": models.Report.objects.filter(resolved=False).count(), + "pending_domains": models.LinkDomain.objects.filter(status="pending").count(), + "invite_requests": models.InviteRequest.objects.filter( + ignored=False, invite__isnull=True + ).count(), + "user_stats": user_chart.get_chart(start, end, interval), + "status_stats": status_chart.get_chart(start, end, interval), + "register_stats": register_chart.get_chart(start, end, interval), + "works_stats": works_chart.get_chart(start, end, interval), + } + + class Chart: """Data for a chart""" diff --git a/bookwyrm/views/admin/link_domains.py b/bookwyrm/views/admin/link_domains.py index 5f9ec6c06..0b8674170 100644 --- a/bookwyrm/views/admin/link_domains.py +++ b/bookwyrm/views/admin/link_domains.py @@ -45,6 +45,7 @@ class LinkDomain(View): @require_POST @login_required +@permission_required("bookwyrm.moderate_user") def update_domain_status(request, domain_id, status): """This domain seems fine""" domain = get_object_or_404(models.LinkDomain, id=domain_id) diff --git a/bookwyrm/views/admin/reports.py b/bookwyrm/views/admin/reports.py index c19e3db4a..a0b222ebe 100644 --- a/bookwyrm/views/admin/reports.py +++ b/bookwyrm/views/admin/reports.py @@ -83,7 +83,7 @@ class ReportAdmin(View): @login_required -@permission_required("bookwyrm_moderate_user") +@permission_required("bookwyrm.moderate_user") def suspend_user(_, user_id): """mark an account as inactive""" user = get_object_or_404(models.User, id=user_id) @@ -95,7 +95,7 @@ def suspend_user(_, user_id): @login_required -@permission_required("bookwyrm_moderate_user") +@permission_required("bookwyrm.moderate_user") def unsuspend_user(_, user_id): """mark an account as inactive""" user = get_object_or_404(models.User, id=user_id) @@ -107,7 +107,7 @@ def unsuspend_user(_, user_id): @login_required -@permission_required("bookwyrm_moderate_user") +@permission_required("bookwyrm.moderate_user") def moderator_delete_user(request, user_id): """permanently delete a user""" user = get_object_or_404(models.User, id=user_id) @@ -132,7 +132,7 @@ def moderator_delete_user(request, user_id): @login_required -@permission_required("bookwyrm_moderate_post") +@permission_required("bookwyrm.moderate_post") def resolve_report(_, report_id): """mark a report as (un)resolved""" report = get_object_or_404(models.Report, id=report_id) diff --git a/bookwyrm/views/admin/user_admin.py b/bookwyrm/views/admin/user_admin.py index f1bb87a88..6ec6f93d2 100644 --- a/bookwyrm/views/admin/user_admin.py +++ b/bookwyrm/views/admin/user_admin.py @@ -22,21 +22,25 @@ class UserAdminList(View): def get(self, request, status="local"): """list of users""" filters = {} + exclusions = {} if server := request.GET.get("server"): server = models.FederatedServer.objects.filter(server_name=server).first() filters["federated_server"] = server filters["federated_server__isnull"] = False + if username := request.GET.get("username"): filters["username__icontains"] = username - scope = request.GET.get("scope") - if scope and scope == "local": - filters["local"] = True + if email := request.GET.get("email"): filters["email__endswith"] = email - filters["local"] = status == "local" + filters["local"] = status in ["local", "deleted"] + if status == "deleted": + filters["deactivation_reason__icontains"] = "deletion" + else: + exclusions["deactivation_reason__icontains"] = "deletion" - users = models.User.objects.filter(**filters) + users = models.User.objects.filter(**filters).exclude(**exclusions) sort = request.GET.get("sort", "-created_date") sort_fields = [ @@ -62,7 +66,7 @@ class UserAdminList(View): @method_decorator(login_required, name="dispatch") @method_decorator( - permission_required("bookwyrm.moderate_users", raise_exception=True), + permission_required("bookwyrm.moderate_user", raise_exception=True), name="dispatch", ) class UserAdmin(View): @@ -77,8 +81,13 @@ class UserAdmin(View): def post(self, request, user): """update user group""" user = get_object_or_404(models.User, id=user) - form = forms.UserGroupForm(request.POST, instance=user) - if form.is_valid(): - form.save() + + if request.POST.get("groups") == "": + user.groups.set([]) + form = forms.UserGroupForm(instance=user) + else: + form = forms.UserGroupForm(request.POST, instance=user) + if form.is_valid(): + form.save() data = {"user": user, "group_form": form} return TemplateResponse(request, "settings/users/user.html", data) diff --git a/bookwyrm/views/group.py b/bookwyrm/views/group.py index 9c282e48f..469f787d3 100644 --- a/bookwyrm/views/group.py +++ b/bookwyrm/views/group.py @@ -59,11 +59,11 @@ class Group(View): model = apps.get_model("bookwyrm.Notification", require_ready=True) for field in form.changed_data: notification_type = ( - "GROUP_PRIVACY" + model.GROUP_PRIVACY if field == "privacy" - else "GROUP_NAME" + else model.GROUP_NAME if field == "name" - else "GROUP_DESCRIPTION" + else model.GROUP_DESCRIPTION if field == "description" else None ) @@ -71,9 +71,9 @@ class Group(View): for membership in memberships: member = membership.user if member != request.user: - model.objects.create( - user=member, - related_user=request.user, + model.notify( + member, + request.user, related_group=user_group, notification_type=notification_type, ) @@ -244,24 +244,22 @@ def remove_member(request): memberships = models.GroupMember.objects.filter(group=group) model = apps.get_model("bookwyrm.Notification", require_ready=True) - notification_type = "LEAVE" if user == request.user else "REMOVE" + notification_type = model.LEAVE if user == request.user else model.REMOVE # let the other members know about it for membership in memberships: member = membership.user if member != request.user: - model.objects.create( - user=member, - related_user=user, + model.notify( + member, + user, related_group=group, notification_type=notification_type, ) # let the user (now ex-member) know as well, if they were removed - if notification_type == "REMOVE": - model.objects.create( - user=user, - related_group=group, - notification_type=notification_type, + if notification_type == model.REMOVE: + model.notify( + user, None, related_group=group, notification_type=notification_type ) return redirect(group.local_path) diff --git a/bookwyrm/views/helpers.py b/bookwyrm/views/helpers.py index 7d8eced7c..7be42a87b 100644 --- a/bookwyrm/views/helpers.py +++ b/bookwyrm/views/helpers.py @@ -148,13 +148,6 @@ def handle_reading_status(user, shelf, book, privacy): status.save() -def is_blocked(viewer, user): - """is this viewer blocked by the user?""" - if viewer.is_authenticated and viewer in user.blocks.all(): - return True - return False - - def load_date_in_user_tz_as_utc(date_str: str, user: models.User) -> datetime: """ensures that data is stored consistently in the UTC timezone""" if not date_str: diff --git a/bookwyrm/views/landing/password.py b/bookwyrm/views/landing/password.py index 90713e29d..a7eb001b0 100644 --- a/bookwyrm/views/landing/password.py +++ b/bookwyrm/views/landing/password.py @@ -3,7 +3,6 @@ from django.contrib.auth import login from django.core.exceptions import PermissionDenied from django.shortcuts import redirect from django.template.response import TemplateResponse -from django.utils.translation import gettext_lazy as _ from django.views import View from bookwyrm import models @@ -24,12 +23,13 @@ class PasswordResetRequest(View): def post(self, request): """create a password reset token""" email = request.POST.get("email") + data = {"sent_message": True, "email": email} try: user = models.User.viewer_aware_objects(request.user).get( email=email, email__isnull=False ) except models.User.DoesNotExist: - data = {"error": _("No user with that email address was found.")} + # Showing an error message would leak whether or not this email is in use return TemplateResponse( request, "landing/password_reset_request.html", data ) @@ -40,7 +40,6 @@ class PasswordResetRequest(View): # create a new reset code code = models.PasswordReset.objects.create(user=user) password_reset_email(code) - data = {"message": _(f"A password reset link was sent to {email}")} return TemplateResponse(request, "landing/password_reset_request.html", data) diff --git a/bookwyrm/views/notifications.py b/bookwyrm/views/notifications.py index 0a7a62002..e4549ba98 100644 --- a/bookwyrm/views/notifications.py +++ b/bookwyrm/views/notifications.py @@ -15,16 +15,17 @@ class Notifications(View): """people are interacting with you, get hyped""" notifications = ( request.user.notification_set.all() - .order_by("-created_date") + .order_by("-updated_date") .select_related( "related_status", "related_status__reply_parent", + "related_group", "related_import", - "related_report", - "related_user", - "related_book", - "related_list_item", - "related_list_item__book", + ) + .prefetch_related( + "related_reports", + "related_users", + "related_list_items", ) ) if notification_type == "mentions": diff --git a/bookwyrm/views/reading.py b/bookwyrm/views/reading.py index c1e6e5955..eb43e4ea4 100644 --- a/bookwyrm/views/reading.py +++ b/bookwyrm/views/reading.py @@ -52,9 +52,6 @@ class ReadingStatus(View): logger.exception("Invalid reading status type: %s", status) return HttpResponseBadRequest() - # invalidate related caches - cache.delete(f"active_shelf-{request.user.id}-{book_id}") - desired_shelf = get_object_or_404( models.Shelf, identifier=identifier, user=request.user ) @@ -65,6 +62,14 @@ class ReadingStatus(View): .get(id=book_id) ) + # invalidate related caches + cache.delete_many( + [ + f"active_shelf-{request.user.id}-{ed}" + for ed in book.parent_work.editions.values_list("id", flat=True) + ] + ) + # gets the first shelf that indicates a reading status, or None shelves = [ s diff --git a/bookwyrm/views/report.py b/bookwyrm/views/report.py index 6469f3cb0..118f67988 100644 --- a/bookwyrm/views/report.py +++ b/bookwyrm/views/report.py @@ -13,9 +13,13 @@ from bookwyrm import emailing, forms, models class Report(View): """Make reports""" - def get(self, request, user_id, status_id=None, link_id=None): + def get(self, request, user_id=None, status_id=None, link_id=None): """static view of report modal""" - data = {"user": get_object_or_404(models.User, id=user_id)} + data = {"user": None} + if user_id: + # but normally we should have an error if the user is not found + data["user"] = get_object_or_404(models.User, id=user_id) + if status_id: data["status"] = status_id if link_id: diff --git a/bookwyrm/views/status.py b/bookwyrm/views/status.py index 670ea5717..0dd9e0f80 100644 --- a/bookwyrm/views/status.py +++ b/bookwyrm/views/status.py @@ -16,9 +16,8 @@ from django.views.decorators.http import require_POST from markdown import markdown from bookwyrm import forms, models -from bookwyrm.sanitize_html import InputHtmlParser from bookwyrm.settings import DOMAIN -from bookwyrm.utils import regex +from bookwyrm.utils import regex, sanitizer from .helpers import handle_remote_webfinger, is_api_request from .helpers import load_date_in_user_tz_as_utc @@ -268,6 +267,4 @@ def to_markdown(content): content = format_links(content) content = markdown(content) # sanitize resulting html - sanitizer = InputHtmlParser() - sanitizer.feed(content) - return sanitizer.get_output() + return sanitizer.clean(content) diff --git a/bookwyrm/views/user.py b/bookwyrm/views/user.py index 1ee93347b..514769267 100644 --- a/bookwyrm/views/user.py +++ b/bookwyrm/views/user.py @@ -60,6 +60,12 @@ class User(View): request.user, ) .filter(user=user) + .exclude( + privacy="direct", + review__isnull=True, + comment__isnull=True, + quotation__isnull=True, + ) .select_related( "user", "reply_parent", diff --git a/bw-dev b/bw-dev index 4dd543c0a..7ecef5c34 100755 --- a/bw-dev +++ b/bw-dev @@ -103,6 +103,9 @@ case "$CMD" in pytest) runweb pytest --no-cov-on-fail "$@" ;; + pytest_coverage_report) + runweb pytest -n 3 --cov-report term-missing "$@" + ;; collectstatic) runweb python manage.py collectstatic --no-input ;; diff --git a/locale/de_DE/LC_MESSAGES/django.mo b/locale/de_DE/LC_MESSAGES/django.mo index 049645c44..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 21b885252..3b1fad3ba 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-05-31 23:50+0000\n" -"PO-Revision-Date: 2022-06-19 10:11\n" +"POT-Creation-Date: 2022-07-07 17:47+0000\n" +"PO-Revision-Date: 2022-07-07 18:12\n" "Last-Translator: Mouse Reeve \n" "Language-Team: German\n" "Language: de\n" @@ -121,9 +121,9 @@ msgstr "Warnung" msgid "Danger" msgstr "Gefahr" -#: bookwyrm/models/antispam.py:106 bookwyrm/models/antispam.py:140 +#: bookwyrm/models/antispam.py:101 bookwyrm/models/antispam.py:135 msgid "Automatically generated report" -msgstr "Automatisch generierter Report" +msgstr "Automatisch generierter Bericht" #: bookwyrm/models/base_model.py:18 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 @@ -405,7 +405,7 @@ msgstr "Lerne deine Admins kennen" #: bookwyrm/templates/about/about.html:101 #, 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 "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." +msgstr "Die Moderator*innen und Administrator*innen von %(site_name)s halten diese Seite am Laufen, setzen den Verhaltenskodex durch und reagieren, wenn Benutzer*innen Spam oder schlechtes Verhalten melden." #: bookwyrm/templates/about/about.html:115 msgid "Moderator" @@ -467,7 +467,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 "Lektürejahr für %(display_name)s" +msgstr "%(display_name)ss Lesejahr" #: bookwyrm/templates/annual_summary/layout.html:53 msgid "Share this page" @@ -740,7 +740,7 @@ msgstr "ISNI:" #: bookwyrm/templates/book/book.html:202 #: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 -#: bookwyrm/templates/book/file_links/edit_links.html:82 +#: bookwyrm/templates/book/file_links/edit_links.html:86 #: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 @@ -1016,19 +1016,19 @@ msgstr "Sprachen:" #: bookwyrm/templates/book/edit/edit_book_form.html:86 msgid "Subjects:" -msgstr "Betreff:" +msgstr "Themen:" #: bookwyrm/templates/book/edit/edit_book_form.html:90 msgid "Add subject" -msgstr "Betreff hinzufügen" +msgstr "Thema hinzufügen" #: bookwyrm/templates/book/edit/edit_book_form.html:108 msgid "Remove subject" -msgstr "Betreff entfernen" +msgstr "Thema entfernen" #: bookwyrm/templates/book/edit/edit_book_form.html:131 msgid "Add Another Subject" -msgstr "Weiteren Betreff hinzufügen" +msgstr "Weiteres Thema hinzufügen" #: bookwyrm/templates/book/edit/edit_book_form.html:139 msgid "Publication" @@ -1128,7 +1128,7 @@ msgstr "Ausgaben von \"%(work_title)s\"" #: bookwyrm/templates/book/editions/editions.html:55 msgid "Can't find the edition you're looking for?" -msgstr "Sie können die gesuchte Auflage nicht finden?" +msgstr "Du kannst die gesuchte Auflage nicht finden?" #: bookwyrm/templates/book/editions/editions.html:75 msgid "Add another edition" @@ -1218,16 +1218,21 @@ msgstr "Status" msgid "Actions" msgstr "Aktionen" -#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/edit_links.html:48 +#: bookwyrm/templates/settings/link_domains/link_table.html:21 +msgid "Unknown user" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:57 #: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Spam melden" -#: bookwyrm/templates/book/file_links/edit_links.html:97 +#: bookwyrm/templates/book/file_links/edit_links.html:101 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/edit_links.html:112 #: bookwyrm/templates/book/file_links/links.html:18 msgid "Add link to file" msgstr "Link zur Datei hinzufügen" @@ -1324,7 +1329,7 @@ msgstr "Bestätigungscode:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:81 -#: bookwyrm/templates/settings/dashboard/dashboard.html:116 +#: bookwyrm/templates/settings/dashboard/dashboard.html:127 #: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Absenden" @@ -1340,7 +1345,7 @@ msgstr "Bestätigungslink erneut senden" #: bookwyrm/templates/confirm_email/resend_modal.html:15 #: bookwyrm/templates/landing/layout.html:68 -#: bookwyrm/templates/landing/password_reset_request.html:18 +#: bookwyrm/templates/landing/password_reset_request.html:24 #: bookwyrm/templates/preferences/edit_user.html:53 #: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" @@ -1567,14 +1572,20 @@ msgstr "Du bist eingeladen, %(site_name)s beizutreten! Klicke auf den Link unten msgid "Learn more about %(site_name)s:" msgstr "Erfahre mehr über %(site_name)s:" -#: bookwyrm/templates/email/moderation_report/html_content.html:6 -#: bookwyrm/templates/email/moderation_report/text_content.html:5 +#: bookwyrm/templates/email/moderation_report/html_content.html:8 +#: bookwyrm/templates/email/moderation_report/text_content.html:6 #, python-format -msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " -msgstr "@%(reporter)s hat das Verhalten von @%(reportee)s zur Moderation gekennzeichnet. " +msgid "@%(reporter)s has flagged a link domain for moderation." +msgstr "" -#: bookwyrm/templates/email/moderation_report/html_content.html:9 -#: bookwyrm/templates/email/moderation_report/text_content.html:7 +#: bookwyrm/templates/email/moderation_report/html_content.html:14 +#: bookwyrm/templates/email/moderation_report/text_content.html:10 +#, python-format +msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation." +msgstr "" + +#: bookwyrm/templates/email/moderation_report/html_content.html:21 +#: bookwyrm/templates/email/moderation_report/text_content.html:15 msgid "View report" msgstr "Bericht anzeigen" @@ -1611,7 +1622,7 @@ msgstr "Passwort für %(site_name)s zurücksetzen" #: bookwyrm/templates/setup/layout.html:12 #, python-format msgid "%(site_name)s home page" -msgstr "%(site_name)s-Startseite" +msgstr "%(site_name)s Startseite" #: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:186 msgid "Contact site admin" @@ -1674,11 +1685,11 @@ msgstr "Hier sind noch keine Bücher! Versuche, nach Büchern zu suchen, um losz #: bookwyrm/templates/feed/suggested_books.html:13 msgid "Do you have book data from another service like GoodReads?" -msgstr "Haben Sie Buchdaten von einem anderen Service wie GoodReads?" +msgstr "Hast Du Buchdaten von einem anderen Service wie GoodReads?" #: bookwyrm/templates/feed/suggested_books.html:16 msgid "Import your reading history" -msgstr "Importieren Sie Ihren Leseverlauf" +msgstr "Importiere Deinen Leseverlauf" #: bookwyrm/templates/feed/suggested_users.html:5 #: bookwyrm/templates/get_started/users.html:6 @@ -2268,10 +2279,15 @@ msgid "Confirm password:" msgstr "Passwort bestätigen:" #: bookwyrm/templates/landing/password_reset_request.html:14 +#, python-format +msgid "A password reset link will be sent to %(email)s if there is an account using that email address." +msgstr "" + +#: bookwyrm/templates/landing/password_reset_request.html:20 msgid "A link to reset your password will be sent to your email address" msgstr "Ein Link zum Zurücksetzen deines Passworts wird an deine E-Mail-Adresse geschickt" -#: bookwyrm/templates/landing/password_reset_request.html:28 +#: bookwyrm/templates/landing/password_reset_request.html:34 msgid "Reset password" msgstr "Passwort zurücksetzen" @@ -2499,7 +2515,7 @@ msgstr "Notizen bearbeiten" #: bookwyrm/templates/lists/list.html:119 msgid "Add notes" -msgstr "Notiz hinzufügen" +msgstr "Notizen hinzufügen" #: bookwyrm/templates/lists/list.html:131 #, python-format @@ -2579,108 +2595,244 @@ msgstr "Alle Listen" msgid "Saved Lists" msgstr "Gespeicherte Listen" -#: bookwyrm/templates/notifications/items/accept.html:16 +#: bookwyrm/templates/notifications/items/accept.html:18 #, python-format -msgid "accepted your invitation to join group \"%(group_name)s\"" -msgstr "hat deine Einladung angenommen, der Gruppe „%(group_name)s“ beizutreten" +msgid "%(related_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:24 +#: bookwyrm/templates/notifications/items/accept.html:26 #, python-format -msgid "added %(book_title)s to your list \"%(list_name)s\"" -msgstr "%(book_title)s zu deiner Liste „%(list_name)s“ hinzugefügt" +msgid "%(related_user)s and %(second_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:31 +#: bookwyrm/templates/notifications/items/accept.html:36 #, python-format -msgid "suggested adding %(book_title)s to your list \"%(list_name)s\"" -msgstr "hat vorgeschlagen, %(book_title)s zu deiner Liste „%(list_name)s“ hinzuzufügen" +msgid "%(related_user)s and %(other_user_display_count)s others accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:19 +#: bookwyrm/templates/notifications/items/add.html:33 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "hat deine Besprechung von %(book_title)s geteilt" +msgid "%(related_user)s added %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:25 +#: bookwyrm/templates/notifications/items/add.html:39 #, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "hat deinen Kommentar zu%(book_title)s geteilt" +msgid "%(related_user)s suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:31 +#: bookwyrm/templates/notifications/items/add.html:47 #, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "hat dein Zitat aus %(book_title)s geteilt" +msgid "%(related_user)s added %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:37 +#: bookwyrm/templates/notifications/items/add.html:54 #, python-format -msgid "boosted your status" -msgstr "hat deinen Status geteilt" +msgid "%(related_user)s suggested adding %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:19 +#: bookwyrm/templates/notifications/items/add.html:66 #, python-format -msgid "liked your review of %(book_title)s" -msgstr "hat deine Besprechung von %(book_title)s favorisiert" +msgid "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:25 +#: bookwyrm/templates/notifications/items/add.html:82 #, python-format -msgid "liked your comment on %(book_title)s" -msgstr "hat deinen Kommentar zu %(book_title)s favorisiert" +msgid "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:31 +#: bookwyrm/templates/notifications/items/boost.html:21 #, python-format -msgid "liked your quote from %(book_title)s" -msgstr "hat dein Zitat aus %(book_title)s favorisiert" +msgid "%(related_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:37 +#: bookwyrm/templates/notifications/items/boost.html:27 #, python-format -msgid "liked your status" -msgstr "hat deinen Status favorisiert" +msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow.html:15 -msgid "followed you" -msgstr "folgt dir" +#: bookwyrm/templates/notifications/items/boost.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow_request.html:11 -msgid "sent you a follow request" -msgstr "möchte dir folgen" +#: bookwyrm/templates/notifications/items/boost.html:44 +#, python-format +msgid "%(related_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:67 +#, python-format +msgid "%(related_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:90 +#, python-format +msgid "%(related_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:21 +#, python-format +msgid "%(related_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:27 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:44 +#, python-format +msgid "%(related_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:67 +#, python-format +msgid "%(related_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:90 +#, python-format +msgid "%(related_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:16 +#, python-format +msgid "%(related_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:20 +#, python-format +msgid "%(related_user)s and %(second_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:25 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow_request.html:15 +#, python-format +msgid "%(related_user)s sent you a follow request" +msgstr "" #: bookwyrm/templates/notifications/items/import.html:14 #, python-format msgid "Your import completed." msgstr "Dein Import ist fertig." -#: bookwyrm/templates/notifications/items/invite.html:15 +#: bookwyrm/templates/notifications/items/invite.html:16 #, python-format -msgid "invited you to join the group \"%(group_name)s\"" -msgstr "hat dich eingeladen, der Gruppe „%(group_name)s“ beizutreten" +msgid "%(related_user)s invited you to join the group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/join.html:16 #, python-format msgid "has joined your group \"%(group_name)s\"" msgstr "ist deiner Gruppe „%(group_name)s“ beigetreten" -#: bookwyrm/templates/notifications/items/leave.html:16 +#: bookwyrm/templates/notifications/items/leave.html:18 #, python-format -msgid "has left your group \"%(group_name)s\"" -msgstr "hat deine Gruppe „%(group_name)s“ verlassen" +msgid "%(related_user)s has left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:26 +#, python-format +msgid "%(related_user)s and %(second_user)s have left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:20 #, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "hat dich in einer Besprechung von %(book_title)s erwähnt" +msgid "%(related_user)s mentioned you in a review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:26 #, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "hat dich in einem Kommentar zu %(book_title)s erwähnt" +msgid "%(related_user)s mentioned you in a comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:32 #, python-format -msgid "mentioned you in a quote from %(book_title)s" -msgstr "hat dich in einem Zitat von %(book_title)s erwähnt" +msgid "%(related_user)s mentioned you in a quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:38 #, python-format -msgid "mentioned you in a status" -msgstr "hat dich in einem Status erwähnt" +msgid "%(related_user)s mentioned you in a status" +msgstr "" #: bookwyrm/templates/notifications/items/remove.html:17 #, python-format @@ -2694,28 +2846,30 @@ msgstr "Du wurdest aus der Gruppe „%(group_name)sreplied to your review of %(book_title)s" -msgstr "hat auf deine Besprechung von %(book_title)s geantwortet" +msgid "%(related_user)s replied to your review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:27 #, python-format -msgid "replied to your comment on %(book_title)s" -msgstr "hat auf deinen Kommentar zu %(book_title)s geantwortet" +msgid "%(related_user)s replied to your comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:33 #, python-format -msgid "replied to your quote from %(book_title)s" -msgstr "hat auf dein Zitat aus %(book_title)s geantwortet" +msgid "%(related_user)s replied to your quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:39 #, python-format -msgid "replied to your status" -msgstr "hat auf deinen Status geantwortet" +msgid "%(related_user)s replied to your status" +msgstr "" #: bookwyrm/templates/notifications/items/report.html:15 #, python-format -msgid "A new report needs moderation." -msgstr "Eine neue Meldung muss moderiert werden." +msgid "A new report needs moderation" +msgid_plural "%(display_count)s new reports need moderation" +msgstr[0] "" +msgstr[1] "" #: bookwyrm/templates/notifications/items/update.html:16 #, python-format @@ -3199,13 +3353,13 @@ msgstr "Nein" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:105 msgid "Start date:" msgstr "Startdatum:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "End date:" msgstr "Enddatum:" @@ -3365,7 +3519,7 @@ msgid "Dashboard" msgstr "Übersicht" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:134 msgid "Total users" msgstr "Benutzer*innen insgesamt" @@ -3385,55 +3539,64 @@ msgstr "Werke" #: bookwyrm/templates/settings/dashboard/dashboard.html:43 #, python-format +msgid "Your outgoing email address, %(email_sender)s, may be misconfigured." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:46 +msgid "Check the EMAIL_SENDER_NAME and EMAIL_SENDER_DOMAIN in your .env." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#, python-format msgid "%(display_count)s open report" msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s offene Meldung" msgstr[1] "%(display_count)s offene Meldungen" -#: bookwyrm/templates/settings/dashboard/dashboard.html:55 +#: bookwyrm/templates/settings/dashboard/dashboard.html:66 #, 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:67 +#: bookwyrm/templates/settings/dashboard/dashboard.html:78 #, 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:79 +#: bookwyrm/templates/settings/dashboard/dashboard.html:90 #, python-format msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." -msgstr "Ein Update ist verfügbar! Sie verwenden v%(current)s, die neueste Version ist %(available)s." +msgstr "Ein Update ist verfügbar! Du verwendest v%(current)s, die neueste Version ist %(available)s." -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Instance Activity" msgstr "Instanzaktivität" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "Interval:" msgstr "Intervall:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:110 +#: bookwyrm/templates/settings/dashboard/dashboard.html:121 msgid "Days" msgstr "Tage" -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:122 msgid "Weeks" msgstr "Wochen" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:140 msgid "User signup activity" msgstr "Neuanmeldungen" -#: bookwyrm/templates/settings/dashboard/dashboard.html:135 +#: bookwyrm/templates/settings/dashboard/dashboard.html:146 msgid "Status activity" msgstr "Statusaktivitäten" -#: bookwyrm/templates/settings/dashboard/dashboard.html:141 +#: bookwyrm/templates/settings/dashboard/dashboard.html:152 msgid "Works created" msgstr "Erstellte Werke" @@ -3853,7 +4016,7 @@ msgstr "Derzeit keine zur Freigabe anstehenden Domains" msgid "No domains currently blocked" msgstr "Derzeit keine Domains gesperrt" -#: bookwyrm/templates/settings/link_domains/link_table.html:39 +#: bookwyrm/templates/settings/link_domains/link_table.html:43 msgid "No links available for this domain." msgstr "Keine Links für diese Domain vorhanden." @@ -3881,11 +4044,11 @@ msgstr "Statusmeldung gelöscht" msgid "Reported links" msgstr "Gemeldete Links" -#: bookwyrm/templates/settings/reports/report.html:63 +#: bookwyrm/templates/settings/reports/report.html:65 msgid "Moderator Comments" msgstr "Moderator*innenkommentare" -#: bookwyrm/templates/settings/reports/report.html:84 +#: bookwyrm/templates/settings/reports/report.html:86 #: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Kommentieren" @@ -3895,12 +4058,17 @@ msgstr "Kommentieren" 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_header.html:12 +#: bookwyrm/templates/settings/reports/report_header.html:13 #, 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_header.html:18 +#: bookwyrm/templates/settings/reports/report_header.html:17 +#, python-format +msgid "Report #%(report_id)s: Link domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_header.html:24 #, python-format msgid "Report #%(report_id)s: User @%(username)s" msgstr "Bericht #%(report_id)s: Benutzer @%(username)s" @@ -4163,11 +4331,15 @@ msgid "Active" msgstr "Aktiv" #: bookwyrm/templates/settings/users/user_admin.html:79 +msgid "Deleted" +msgstr "" + +#: bookwyrm/templates/settings/users/user_admin.html:85 #: bookwyrm/templates/settings/users/user_info.html:32 msgid "Inactive" msgstr "Inaktiv" -#: bookwyrm/templates/settings/users/user_admin.html:88 +#: bookwyrm/templates/settings/users/user_admin.html:94 #: bookwyrm/templates/settings/users/user_info.html:127 msgid "Not set" msgstr "Nicht festgelegt" @@ -5172,15 +5344,6 @@ msgstr "Keine gültige CSV-Datei" msgid "Username or password are incorrect" msgstr "Benutzer*inname oder Passwort falsch" -#: bookwyrm/views/landing/password.py:32 -msgid "No user with that email address was found." -msgstr "Es wurde kein*e Benutzer*in mit dieser E-Mail-Adresse gefunden." - -#: bookwyrm/views/landing/password.py:43 -#, python-brace-format -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:34 #, python-brace-format msgid "Status updates from {obj.display_name}" diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index 2ea1905ca..4476585f6 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-06-30 16:55+0000\n" +"POT-Creation-Date: 2022-07-08 22:40+0000\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -122,7 +122,7 @@ msgstr "" msgid "Danger" msgstr "" -#: bookwyrm/models/antispam.py:106 bookwyrm/models/antispam.py:140 +#: bookwyrm/models/antispam.py:101 bookwyrm/models/antispam.py:135 msgid "Automatically generated report" msgstr "" @@ -741,7 +741,7 @@ msgstr "" #: bookwyrm/templates/book/book.html:202 #: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 -#: bookwyrm/templates/book/file_links/edit_links.html:82 +#: bookwyrm/templates/book/file_links/edit_links.html:86 #: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 @@ -1206,7 +1206,7 @@ msgstr "" #: bookwyrm/templates/settings/announcements/announcements.html:37 #: bookwyrm/templates/settings/invites/manage_invite_requests.html:47 #: bookwyrm/templates/settings/invites/status_filter.html:5 -#: bookwyrm/templates/settings/users/user_admin.html:52 +#: bookwyrm/templates/settings/users/user_admin.html:56 #: bookwyrm/templates/settings/users/user_info.html:24 msgid "Status" msgstr "" @@ -1219,16 +1219,21 @@ msgstr "" msgid "Actions" msgstr "" -#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/edit_links.html:48 +#: bookwyrm/templates/settings/link_domains/link_table.html:21 +msgid "Unknown user" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:57 #: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "" -#: bookwyrm/templates/book/file_links/edit_links.html:97 +#: bookwyrm/templates/book/file_links/edit_links.html:101 msgid "No links available for this book." msgstr "" -#: bookwyrm/templates/book/file_links/edit_links.html:108 +#: bookwyrm/templates/book/file_links/edit_links.html:112 #: bookwyrm/templates/book/file_links/links.html:18 msgid "Add link to file" msgstr "" @@ -1325,7 +1330,7 @@ msgstr "" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:81 -#: bookwyrm/templates/settings/dashboard/dashboard.html:116 +#: bookwyrm/templates/settings/dashboard/dashboard.html:106 #: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "" @@ -1341,7 +1346,7 @@ msgstr "" #: bookwyrm/templates/confirm_email/resend_modal.html:15 #: bookwyrm/templates/landing/layout.html:68 -#: bookwyrm/templates/landing/password_reset_request.html:18 +#: bookwyrm/templates/landing/password_reset_request.html:24 #: bookwyrm/templates/preferences/edit_user.html:53 #: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" @@ -1365,7 +1370,7 @@ msgid "Local users" msgstr "" #: bookwyrm/templates/directory/community_filter.html:12 -#: bookwyrm/templates/settings/users/user_admin.html:29 +#: bookwyrm/templates/settings/users/user_admin.html:33 msgid "Federated community" msgstr "" @@ -1568,14 +1573,20 @@ msgstr "" msgid "Learn more about %(site_name)s:" msgstr "" -#: bookwyrm/templates/email/moderation_report/html_content.html:6 -#: bookwyrm/templates/email/moderation_report/text_content.html:5 +#: bookwyrm/templates/email/moderation_report/html_content.html:8 +#: bookwyrm/templates/email/moderation_report/text_content.html:6 #, python-format -msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " +msgid "@%(reporter)s has flagged a link domain for moderation." msgstr "" -#: bookwyrm/templates/email/moderation_report/html_content.html:9 -#: bookwyrm/templates/email/moderation_report/text_content.html:7 +#: bookwyrm/templates/email/moderation_report/html_content.html:14 +#: bookwyrm/templates/email/moderation_report/text_content.html:10 +#, python-format +msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation." +msgstr "" + +#: bookwyrm/templates/email/moderation_report/html_content.html:21 +#: bookwyrm/templates/email/moderation_report/text_content.html:15 msgid "View report" msgstr "" @@ -2269,10 +2280,15 @@ msgid "Confirm password:" msgstr "" #: bookwyrm/templates/landing/password_reset_request.html:14 +#, python-format +msgid "A password reset link will be sent to %(email)s if there is an account using that email address." +msgstr "" + +#: bookwyrm/templates/landing/password_reset_request.html:20 msgid "A link to reset your password will be sent to your email address" msgstr "" -#: bookwyrm/templates/landing/password_reset_request.html:28 +#: bookwyrm/templates/landing/password_reset_request.html:34 msgid "Reset password" msgstr "" @@ -2580,67 +2596,193 @@ msgstr "" msgid "Saved Lists" msgstr "" -#: bookwyrm/templates/notifications/items/accept.html:16 +#: bookwyrm/templates/notifications/items/accept.html:18 #, python-format -msgid "accepted your invitation to join group \"%(group_name)s\"" +msgid "%(related_user)s accepted your invitation to join group \"%(group_name)s\"" msgstr "" -#: bookwyrm/templates/notifications/items/add.html:24 +#: bookwyrm/templates/notifications/items/accept.html:26 #, python-format -msgid "added %(book_title)s to your list \"%(list_name)s\"" +msgid "%(related_user)s and %(second_user)s accepted your invitation to join group \"%(group_name)s\"" msgstr "" -#: bookwyrm/templates/notifications/items/add.html:31 +#: bookwyrm/templates/notifications/items/accept.html:36 #, python-format -msgid "suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgid "%(related_user)s and %(other_user_display_count)s others accepted your invitation to join group \"%(group_name)s\"" msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:19 +#: bookwyrm/templates/notifications/items/add.html:33 #, python-format -msgid "boosted your review of %(book_title)s" +msgid "%(related_user)s added %(book_title)s to your list \"%(list_name)s\"" msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:25 +#: bookwyrm/templates/notifications/items/add.html:39 #, python-format -msgid "boosted your comment on%(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s to your list \"%(list_name)s\"" msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:31 +#: bookwyrm/templates/notifications/items/add.html:47 #, python-format -msgid "boosted your quote from %(book_title)s" +msgid "%(related_user)s added %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:37 +#: bookwyrm/templates/notifications/items/add.html:54 #, python-format -msgid "boosted your status" +msgid "%(related_user)s suggested adding %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:19 +#: bookwyrm/templates/notifications/items/add.html:66 #, python-format -msgid "liked your review of %(book_title)s" -msgstr "" +msgid "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:25 +#: bookwyrm/templates/notifications/items/add.html:82 #, python-format -msgid "liked your comment on %(book_title)s" -msgstr "" +msgid "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:31 +#: bookwyrm/templates/notifications/items/boost.html:21 #, python-format -msgid "liked your quote from %(book_title)s" +msgid "%(related_user)s boosted your review of %(book_title)s" msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:37 +#: bookwyrm/templates/notifications/items/boost.html:27 #, python-format -msgid "liked your status" +msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s" msgstr "" -#: bookwyrm/templates/notifications/items/follow.html:15 -msgid "followed you" +#: bookwyrm/templates/notifications/items/boost.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s" msgstr "" -#: bookwyrm/templates/notifications/items/follow_request.html:11 -msgid "sent you a follow request" +#: bookwyrm/templates/notifications/items/boost.html:44 +#, python-format +msgid "%(related_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:67 +#, python-format +msgid "%(related_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:90 +#, python-format +msgid "%(related_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:21 +#, python-format +msgid "%(related_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:27 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:44 +#, python-format +msgid "%(related_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:67 +#, python-format +msgid "%(related_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:90 +#, python-format +msgid "%(related_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:16 +#, python-format +msgid "%(related_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:20 +#, python-format +msgid "%(related_user)s and %(second_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:25 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow_request.html:15 +#, python-format +msgid "%(related_user)s sent you a follow request" msgstr "" #: bookwyrm/templates/notifications/items/import.html:14 @@ -2648,9 +2790,9 @@ msgstr "" msgid "Your import completed." msgstr "" -#: bookwyrm/templates/notifications/items/invite.html:15 +#: bookwyrm/templates/notifications/items/invite.html:16 #, python-format -msgid "invited you to join the group \"%(group_name)s\"" +msgid "%(related_user)s invited you to join the group \"%(group_name)s\"" msgstr "" #: bookwyrm/templates/notifications/items/join.html:16 @@ -2658,29 +2800,39 @@ msgstr "" msgid "has joined your group \"%(group_name)s\"" msgstr "" -#: bookwyrm/templates/notifications/items/leave.html:16 +#: bookwyrm/templates/notifications/items/leave.html:18 #, python-format -msgid "has left your group \"%(group_name)s\"" +msgid "%(related_user)s has left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:26 +#, python-format +msgid "%(related_user)s and %(second_user)s have left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s\"" msgstr "" #: bookwyrm/templates/notifications/items/mention.html:20 #, python-format -msgid "mentioned you in a review of %(book_title)s" +msgid "%(related_user)s mentioned you in a review of %(book_title)s" msgstr "" #: bookwyrm/templates/notifications/items/mention.html:26 #, python-format -msgid "mentioned you in a comment on %(book_title)s" +msgid "%(related_user)s mentioned you in a comment on %(book_title)s" msgstr "" #: bookwyrm/templates/notifications/items/mention.html:32 #, python-format -msgid "mentioned you in a quote from %(book_title)s" +msgid "%(related_user)s mentioned you in a quote from %(book_title)s" msgstr "" #: bookwyrm/templates/notifications/items/mention.html:38 #, python-format -msgid "mentioned you in a status" +msgid "%(related_user)s mentioned you in a status" msgstr "" #: bookwyrm/templates/notifications/items/remove.html:17 @@ -2695,28 +2847,30 @@ msgstr "" #: bookwyrm/templates/notifications/items/reply.html:21 #, python-format -msgid "replied to your review of %(book_title)s" +msgid "%(related_user)s replied to your review of %(book_title)s" msgstr "" #: bookwyrm/templates/notifications/items/reply.html:27 #, python-format -msgid "replied to your comment on %(book_title)s" +msgid "%(related_user)s replied to your comment on %(book_title)s" msgstr "" #: bookwyrm/templates/notifications/items/reply.html:33 #, python-format -msgid "replied to your quote from %(book_title)s" +msgid "%(related_user)s replied to your quote from %(book_title)s" msgstr "" #: bookwyrm/templates/notifications/items/reply.html:39 #, python-format -msgid "replied to your status" +msgid "%(related_user)s replied to your status" msgstr "" #: bookwyrm/templates/notifications/items/report.html:15 #, python-format -msgid "A new report needs moderation." -msgstr "" +msgid "A new report needs moderation" +msgid_plural "%(display_count)s new reports need moderation" +msgstr[0] "" +msgstr[1] "" #: bookwyrm/templates/notifications/items/update.html:16 #, python-format @@ -3199,13 +3353,13 @@ msgstr "" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:84 msgid "Start date:" msgstr "" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:90 msgid "End date:" msgstr "" @@ -3365,7 +3519,7 @@ msgid "Dashboard" msgstr "" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:113 msgid "Total users" msgstr "" @@ -3383,57 +3537,31 @@ msgstr "" msgid "Works" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:43 -#, python-format -msgid "%(display_count)s open report" -msgid_plural "%(display_count)s open reports" -msgstr[0] "" -msgstr[1] "" - -#: bookwyrm/templates/settings/dashboard/dashboard.html:55 -#, 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:67 -#, python-format -msgid "%(display_count)s invite request" -msgid_plural "%(display_count)s invite requests" -msgstr[0] "" -msgstr[1] "" - -#: bookwyrm/templates/settings/dashboard/dashboard.html:79 -#, python-format -msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." -msgstr "" - -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:78 msgid "Instance Activity" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:96 msgid "Interval:" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:110 +#: bookwyrm/templates/settings/dashboard/dashboard.html:100 msgid "Days" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:101 msgid "Weeks" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:119 msgid "User signup activity" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:135 +#: bookwyrm/templates/settings/dashboard/dashboard.html:125 msgid "Status activity" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:141 +#: bookwyrm/templates/settings/dashboard/dashboard.html:131 msgid "Works created" msgstr "" @@ -3449,6 +3577,49 @@ msgstr "" msgid "Total" msgstr "" +#: bookwyrm/templates/settings/dashboard/warnings/domain_review.html:9 +#, python-format +msgid "%(display_count)s domain needs review" +msgid_plural "%(display_count)s domains need review" +msgstr[0] "" +msgstr[1] "" + +#: bookwyrm/templates/settings/dashboard/warnings/email_config.html:8 +#, python-format +msgid "Your outgoing email address, %(email_sender)s, may be misconfigured." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/warnings/email_config.html:11 +msgid "Check the EMAIL_SENDER_NAME and EMAIL_SENDER_DOMAIN in your .env file." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/warnings/invites.html:9 +#, python-format +msgid "%(display_count)s invite request" +msgid_plural "%(display_count)s invite requests" +msgstr[0] "" +msgstr[1] "" + +#: bookwyrm/templates/settings/dashboard/warnings/missing_conduct.html:8 +msgid "Your instance is missing a code of conduct." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/warnings/missing_privacy.html:8 +msgid "Your instance is missing a privacy policy." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/warnings/reports.html:9 +#, python-format +msgid "%(display_count)s open report" +msgid_plural "%(display_count)s open reports" +msgstr[0] "" +msgstr[1] "" + +#: bookwyrm/templates/settings/dashboard/warnings/update_version.html:8 +#, python-format +msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." +msgstr "" + #: bookwyrm/templates/settings/email_blocklist/domain_form.html:5 #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:10 msgid "Add domain" @@ -3853,7 +4024,7 @@ msgstr "" msgid "No domains currently blocked" msgstr "" -#: bookwyrm/templates/settings/link_domains/link_table.html:39 +#: bookwyrm/templates/settings/link_domains/link_table.html:43 msgid "No links available for this domain." msgstr "" @@ -3881,11 +4052,11 @@ msgstr "" msgid "Reported links" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:63 +#: bookwyrm/templates/settings/reports/report.html:65 msgid "Moderator Comments" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:84 +#: bookwyrm/templates/settings/reports/report.html:86 #: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "" @@ -3895,12 +4066,17 @@ msgstr "" msgid "Report #%(report_id)s: Status posted by @%(username)s" msgstr "" -#: bookwyrm/templates/settings/reports/report_header.html:12 +#: bookwyrm/templates/settings/reports/report_header.html:13 #, python-format msgid "Report #%(report_id)s: Link added by @%(username)s" msgstr "" -#: bookwyrm/templates/settings/reports/report_header.html:18 +#: bookwyrm/templates/settings/reports/report_header.html:17 +#, python-format +msgid "Report #%(report_id)s: Link domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_header.html:24 #, python-format msgid "Report #%(report_id)s: User @%(username)s" msgstr "" @@ -4140,34 +4316,42 @@ msgstr "" msgid "Users: %(instance_name)s" msgstr "" -#: bookwyrm/templates/settings/users/user_admin.html:40 +#: bookwyrm/templates/settings/users/user_admin.html:29 +msgid "Deleted users" +msgstr "" + +#: bookwyrm/templates/settings/users/user_admin.html:44 #: bookwyrm/templates/settings/users/username_filter.html:5 msgid "Username" msgstr "" -#: bookwyrm/templates/settings/users/user_admin.html:44 +#: bookwyrm/templates/settings/users/user_admin.html:48 msgid "Date Added" msgstr "" -#: bookwyrm/templates/settings/users/user_admin.html:48 +#: bookwyrm/templates/settings/users/user_admin.html:52 msgid "Last Active" msgstr "" -#: bookwyrm/templates/settings/users/user_admin.html:57 +#: bookwyrm/templates/settings/users/user_admin.html:61 msgid "Remote instance" msgstr "" -#: bookwyrm/templates/settings/users/user_admin.html:74 +#: bookwyrm/templates/settings/users/user_admin.html:81 #: bookwyrm/templates/settings/users/user_info.html:28 msgid "Active" msgstr "" -#: bookwyrm/templates/settings/users/user_admin.html:79 +#: bookwyrm/templates/settings/users/user_admin.html:86 +msgid "Deleted" +msgstr "" + +#: bookwyrm/templates/settings/users/user_admin.html:92 #: bookwyrm/templates/settings/users/user_info.html:32 msgid "Inactive" msgstr "" -#: bookwyrm/templates/settings/users/user_admin.html:88 +#: bookwyrm/templates/settings/users/user_admin.html:101 #: bookwyrm/templates/settings/users/user_info.html:127 msgid "Not set" msgstr "" @@ -4870,15 +5054,11 @@ msgstr "" msgid "(%(percent)s%%)" msgstr "" -#: bookwyrm/templates/snippets/status/content_status.html:116 -msgid "page" -msgstr "" - -#: bookwyrm/templates/snippets/status/content_status.html:129 +#: bookwyrm/templates/snippets/status/content_status.html:126 msgid "Open image in new window" msgstr "" -#: bookwyrm/templates/snippets/status/content_status.html:148 +#: bookwyrm/templates/snippets/status/content_status.html:145 msgid "Hide status" msgstr "" @@ -5176,15 +5356,6 @@ msgstr "" msgid "Username or password are incorrect" msgstr "" -#: bookwyrm/views/landing/password.py:32 -msgid "No user with that email address was found." -msgstr "" - -#: bookwyrm/views/landing/password.py:43 -#, python-brace-format -msgid "A password reset link was sent to {email}" -msgstr "" - #: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" diff --git a/locale/es_ES/LC_MESSAGES/django.mo b/locale/es_ES/LC_MESSAGES/django.mo index dc20de07a..49a5f2de8 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 dc8f4bb26..28404d726 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-05-31 23:50+0000\n" -"PO-Revision-Date: 2022-06-01 00:55\n" +"POT-Creation-Date: 2022-07-07 17:47+0000\n" +"PO-Revision-Date: 2022-07-07 18:12\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Spanish\n" "Language: es\n" @@ -121,7 +121,7 @@ msgstr "Aviso" msgid "Danger" msgstr "Cuidado" -#: bookwyrm/models/antispam.py:106 bookwyrm/models/antispam.py:140 +#: bookwyrm/models/antispam.py:101 bookwyrm/models/antispam.py:135 msgid "Automatically generated report" msgstr "Informe generado automáticamente" @@ -740,7 +740,7 @@ msgstr "ISNI:" #: bookwyrm/templates/book/book.html:202 #: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 -#: bookwyrm/templates/book/file_links/edit_links.html:82 +#: bookwyrm/templates/book/file_links/edit_links.html:86 #: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 @@ -1218,16 +1218,21 @@ msgstr "Estado" msgid "Actions" msgstr "Acciones" -#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/edit_links.html:48 +#: bookwyrm/templates/settings/link_domains/link_table.html:21 +msgid "Unknown user" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:57 #: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Denunciar spam" -#: bookwyrm/templates/book/file_links/edit_links.html:97 +#: bookwyrm/templates/book/file_links/edit_links.html:101 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/edit_links.html:112 #: bookwyrm/templates/book/file_links/links.html:18 msgid "Add link to file" msgstr "Añadir enlace a archivo" @@ -1324,7 +1329,7 @@ msgstr "Código de confirmación:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:81 -#: bookwyrm/templates/settings/dashboard/dashboard.html:116 +#: bookwyrm/templates/settings/dashboard/dashboard.html:127 #: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Enviar" @@ -1340,7 +1345,7 @@ msgstr "Reenviar enlace de confirmación" #: bookwyrm/templates/confirm_email/resend_modal.html:15 #: bookwyrm/templates/landing/layout.html:68 -#: bookwyrm/templates/landing/password_reset_request.html:18 +#: bookwyrm/templates/landing/password_reset_request.html:24 #: bookwyrm/templates/preferences/edit_user.html:53 #: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" @@ -1567,14 +1572,20 @@ msgstr "Estás invitado a unirte con %(site_name)s! Haz clic en el enlace a cont msgid "Learn more about %(site_name)s:" msgstr "Más información sobre %(site_name)s:" -#: bookwyrm/templates/email/moderation_report/html_content.html:6 -#: bookwyrm/templates/email/moderation_report/text_content.html:5 +#: bookwyrm/templates/email/moderation_report/html_content.html:8 +#: bookwyrm/templates/email/moderation_report/text_content.html:6 #, python-format -msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " -msgstr "@%(reporter)s ha marcado el comportamiento de @%(reportee)s para moderar. " +msgid "@%(reporter)s has flagged a link domain for moderation." +msgstr "" -#: bookwyrm/templates/email/moderation_report/html_content.html:9 -#: bookwyrm/templates/email/moderation_report/text_content.html:7 +#: bookwyrm/templates/email/moderation_report/html_content.html:14 +#: bookwyrm/templates/email/moderation_report/text_content.html:10 +#, python-format +msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation." +msgstr "" + +#: bookwyrm/templates/email/moderation_report/html_content.html:21 +#: bookwyrm/templates/email/moderation_report/text_content.html:15 msgid "View report" msgstr "Ver informe" @@ -2268,10 +2279,15 @@ msgid "Confirm password:" msgstr "Confirmar contraseña:" #: bookwyrm/templates/landing/password_reset_request.html:14 +#, python-format +msgid "A password reset link will be sent to %(email)s if there is an account using that email address." +msgstr "" + +#: bookwyrm/templates/landing/password_reset_request.html:20 msgid "A link to reset your password will be sent to your email address" msgstr "Un enlace para restablecer tu contraseña se enviará a tu dirección de correo electrónico" -#: bookwyrm/templates/landing/password_reset_request.html:28 +#: bookwyrm/templates/landing/password_reset_request.html:34 msgid "Reset password" msgstr "Restablecer contraseña" @@ -2579,108 +2595,244 @@ msgstr "Todas las listas" msgid "Saved Lists" msgstr "Listas guardadas" -#: bookwyrm/templates/notifications/items/accept.html:16 +#: bookwyrm/templates/notifications/items/accept.html:18 #, python-format -msgid "accepted your invitation to join group \"%(group_name)s\"" -msgstr "aceptó su invitación para unirse al grupo «%(group_name)s»" +msgid "%(related_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:24 +#: bookwyrm/templates/notifications/items/accept.html:26 #, python-format -msgid "added %(book_title)s to your list \"%(list_name)s\"" -msgstr "agregó %(book_title)s a su lista «%(list_name)s»" +msgid "%(related_user)s and %(second_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:31 +#: bookwyrm/templates/notifications/items/accept.html:36 #, python-format -msgid "suggested adding %(book_title)s to your list \"%(list_name)s\"" -msgstr "sugirió agregar %(book_title)s a su lista «%(list_name)s»" +msgid "%(related_user)s and %(other_user_display_count)s others accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:19 +#: bookwyrm/templates/notifications/items/add.html:33 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "difundió tu reseña de %(book_title)s" +msgid "%(related_user)s added %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:25 +#: bookwyrm/templates/notifications/items/add.html:39 #, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "difundió tu comentario en%(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:31 +#: bookwyrm/templates/notifications/items/add.html:47 #, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "difundió tu cita de %(book_title)s" +msgid "%(related_user)s added %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:37 +#: bookwyrm/templates/notifications/items/add.html:54 #, python-format -msgid "boosted your status" -msgstr "difundió tu estado" +msgid "%(related_user)s suggested adding %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:19 +#: bookwyrm/templates/notifications/items/add.html:66 #, python-format -msgid "liked your review of %(book_title)s" -msgstr "le gustó tu reseña de %(book_title)s" +msgid "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:25 +#: bookwyrm/templates/notifications/items/add.html:82 #, python-format -msgid "liked your comment on %(book_title)s" -msgstr "le gustó tu comentario sobre %(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:31 +#: bookwyrm/templates/notifications/items/boost.html:21 #, python-format -msgid "liked your quote from %(book_title)s" -msgstr "le gustó tu cita de %(book_title)s" +msgid "%(related_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:37 +#: bookwyrm/templates/notifications/items/boost.html:27 #, python-format -msgid "liked your status" -msgstr "le gustó tu estado" +msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow.html:15 -msgid "followed you" -msgstr "te siguió" +#: bookwyrm/templates/notifications/items/boost.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow_request.html:11 -msgid "sent you a follow request" -msgstr "te quiere seguir" +#: bookwyrm/templates/notifications/items/boost.html:44 +#, python-format +msgid "%(related_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:67 +#, python-format +msgid "%(related_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:90 +#, python-format +msgid "%(related_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:21 +#, python-format +msgid "%(related_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:27 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:44 +#, python-format +msgid "%(related_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:67 +#, python-format +msgid "%(related_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:90 +#, python-format +msgid "%(related_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:16 +#, python-format +msgid "%(related_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:20 +#, python-format +msgid "%(related_user)s and %(second_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:25 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow_request.html:15 +#, python-format +msgid "%(related_user)s sent you a follow request" +msgstr "" #: bookwyrm/templates/notifications/items/import.html:14 #, python-format msgid "Your import completed." msgstr "Tu importación ha terminado." -#: bookwyrm/templates/notifications/items/invite.html:15 +#: bookwyrm/templates/notifications/items/invite.html:16 #, python-format -msgid "invited you to join the group \"%(group_name)s\"" -msgstr "te invitó a unirte al grupo «%(group_name)s»" +msgid "%(related_user)s invited you to join the group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/join.html:16 #, python-format msgid "has joined your group \"%(group_name)s\"" msgstr "se ha unido a tu grupo «%(group_name)s»" -#: bookwyrm/templates/notifications/items/leave.html:16 +#: bookwyrm/templates/notifications/items/leave.html:18 #, python-format -msgid "has left your group \"%(group_name)s\"" -msgstr "ha dejado tu grupo «%(group_name)s»" +msgid "%(related_user)s has left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:26 +#, python-format +msgid "%(related_user)s and %(second_user)s have left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:20 #, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "te mencionó en una reseña de %(book_title)s" +msgid "%(related_user)s mentioned you in a review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:26 #, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "te mencionó en un comentario de %(book_title)s" +msgid "%(related_user)s mentioned you in a comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:32 #, python-format -msgid "mentioned you in a quote from %(book_title)s" -msgstr "te mencionó en una cita de %(book_title)s" +msgid "%(related_user)s mentioned you in a quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:38 #, python-format -msgid "mentioned you in a status" -msgstr "te mencionó en un estado" +msgid "%(related_user)s mentioned you in a status" +msgstr "" #: bookwyrm/templates/notifications/items/remove.html:17 #, python-format @@ -2694,28 +2846,30 @@ msgstr "Te han eliminado del grupo «%(group_name)sreplied to your review of %(book_title)s" -msgstr "respondió a tu reseña de %(book_title)s" +msgid "%(related_user)s replied to your review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:27 #, python-format -msgid "replied to your comment on %(book_title)s" -msgstr "respondió a tu comentario en %(book_title)s" +msgid "%(related_user)s replied to your comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:33 #, python-format -msgid "replied to your quote from %(book_title)s" -msgstr "respondió a tu cita de %(book_title)s" +msgid "%(related_user)s replied to your quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:39 #, python-format -msgid "replied to your status" -msgstr "respondió a tu estado" +msgid "%(related_user)s replied to your status" +msgstr "" #: bookwyrm/templates/notifications/items/report.html:15 #, python-format -msgid "A new report needs moderation." -msgstr "Un informe nuevo se requiere moderación." +msgid "A new report needs moderation" +msgid_plural "%(display_count)s new reports need moderation" +msgstr[0] "" +msgstr[1] "" #: bookwyrm/templates/notifications/items/update.html:16 #, python-format @@ -3199,13 +3353,13 @@ msgstr "Falso" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:105 msgid "Start date:" msgstr "Fecha de inicio:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "End date:" msgstr "Fecha final:" @@ -3365,7 +3519,7 @@ msgid "Dashboard" msgstr "Tablero" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:134 msgid "Total users" msgstr "Número de usuarios" @@ -3385,55 +3539,64 @@ msgstr "Obras" #: bookwyrm/templates/settings/dashboard/dashboard.html:43 #, python-format +msgid "Your outgoing email address, %(email_sender)s, may be misconfigured." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:46 +msgid "Check the EMAIL_SENDER_NAME and EMAIL_SENDER_DOMAIN in your .env." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#, python-format msgid "%(display_count)s open report" msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s informe abierto" msgstr[1] "%(display_count)s informes abiertos" -#: bookwyrm/templates/settings/dashboard/dashboard.html:55 +#: bookwyrm/templates/settings/dashboard/dashboard.html:66 #, 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:67 +#: bookwyrm/templates/settings/dashboard/dashboard.html:78 #, 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:79 +#: bookwyrm/templates/settings/dashboard/dashboard.html:90 #, python-format msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." msgstr "Hay una actualización disponible. La versión que estás usando es la %(current)s, mientras que la actual es %(available)s." -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Instance Activity" msgstr "Actividad de instancia" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "Interval:" msgstr "Intervalo:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:110 +#: bookwyrm/templates/settings/dashboard/dashboard.html:121 msgid "Days" msgstr "Dias" -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:122 msgid "Weeks" msgstr "Semanas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:140 msgid "User signup activity" msgstr "Actividad de inscripciones de usuarios" -#: bookwyrm/templates/settings/dashboard/dashboard.html:135 +#: bookwyrm/templates/settings/dashboard/dashboard.html:146 msgid "Status activity" msgstr "Actividad de estado" -#: bookwyrm/templates/settings/dashboard/dashboard.html:141 +#: bookwyrm/templates/settings/dashboard/dashboard.html:152 msgid "Works created" msgstr "Obras creadas" @@ -3853,7 +4016,7 @@ msgstr "Ningún dominio pendiente actualmente" msgid "No domains currently blocked" msgstr "No hay dominios bloqueados actualmente" -#: bookwyrm/templates/settings/link_domains/link_table.html:39 +#: bookwyrm/templates/settings/link_domains/link_table.html:43 msgid "No links available for this domain." msgstr "Ningún enlace disponible para este dominio." @@ -3881,11 +4044,11 @@ msgstr "El estado ha sido eliminado" msgid "Reported links" msgstr "Enlaces denunciados" -#: bookwyrm/templates/settings/reports/report.html:63 +#: bookwyrm/templates/settings/reports/report.html:65 msgid "Moderator Comments" msgstr "Comentarios de moderador" -#: bookwyrm/templates/settings/reports/report.html:84 +#: bookwyrm/templates/settings/reports/report.html:86 #: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Comentario" @@ -3895,12 +4058,17 @@ msgstr "Comentario" 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_header.html:12 +#: bookwyrm/templates/settings/reports/report_header.html:13 #, 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_header.html:18 +#: bookwyrm/templates/settings/reports/report_header.html:17 +#, python-format +msgid "Report #%(report_id)s: Link domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_header.html:24 #, python-format msgid "Report #%(report_id)s: User @%(username)s" msgstr "Reporte #%(report_id)s: Usuario @%(username)s" @@ -4163,11 +4331,15 @@ msgid "Active" msgstr "Activo" #: bookwyrm/templates/settings/users/user_admin.html:79 +msgid "Deleted" +msgstr "" + +#: bookwyrm/templates/settings/users/user_admin.html:85 #: bookwyrm/templates/settings/users/user_info.html:32 msgid "Inactive" msgstr "Inactivo" -#: bookwyrm/templates/settings/users/user_admin.html:88 +#: bookwyrm/templates/settings/users/user_admin.html:94 #: bookwyrm/templates/settings/users/user_info.html:127 msgid "Not set" msgstr "No establecido" @@ -5172,15 +5344,6 @@ msgstr "No un archivo csv válido" msgid "Username or password are incorrect" msgstr "Nombre de usuario o contraseña es incorrecta" -#: bookwyrm/views/landing/password.py:32 -msgid "No user with that email address was found." -msgstr "No se pudo encontrar un usuario con esa dirección de correo electrónico." - -#: bookwyrm/views/landing/password.py:43 -#, python-brace-format -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:34 #, python-brace-format msgid "Status updates from {obj.display_name}" diff --git a/locale/fi_FI/LC_MESSAGES/django.mo b/locale/fi_FI/LC_MESSAGES/django.mo index 4fdb39f56..492f9f547 100644 Binary files a/locale/fi_FI/LC_MESSAGES/django.mo and b/locale/fi_FI/LC_MESSAGES/django.mo differ diff --git a/locale/fi_FI/LC_MESSAGES/django.po b/locale/fi_FI/LC_MESSAGES/django.po index bb26b0a0b..f46e70898 100644 --- a/locale/fi_FI/LC_MESSAGES/django.po +++ b/locale/fi_FI/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-31 23:50+0000\n" -"PO-Revision-Date: 2022-06-01 09:05\n" +"POT-Creation-Date: 2022-07-07 17:47+0000\n" +"PO-Revision-Date: 2022-07-07 18:12\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Finnish\n" "Language: fi\n" @@ -121,7 +121,7 @@ msgstr "Varoitus" msgid "Danger" msgstr "Vaara" -#: bookwyrm/models/antispam.py:106 bookwyrm/models/antispam.py:140 +#: bookwyrm/models/antispam.py:101 bookwyrm/models/antispam.py:135 msgid "Automatically generated report" msgstr "Automaattisesti luotu raportti" @@ -740,7 +740,7 @@ msgstr "ISNI:" #: bookwyrm/templates/book/book.html:202 #: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 -#: bookwyrm/templates/book/file_links/edit_links.html:82 +#: bookwyrm/templates/book/file_links/edit_links.html:86 #: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 @@ -1218,16 +1218,21 @@ msgstr "Tila" msgid "Actions" msgstr "Toiminnot" -#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/edit_links.html:48 +#: bookwyrm/templates/settings/link_domains/link_table.html:21 +msgid "Unknown user" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:57 #: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Ilmoita roskapostiksi" -#: bookwyrm/templates/book/file_links/edit_links.html:97 +#: bookwyrm/templates/book/file_links/edit_links.html:101 msgid "No links available for this book." msgstr "Tähän kirjaan ei liity linkkejä." -#: bookwyrm/templates/book/file_links/edit_links.html:108 +#: bookwyrm/templates/book/file_links/edit_links.html:112 #: bookwyrm/templates/book/file_links/links.html:18 msgid "Add link to file" msgstr "Lisää linkki tiedostoon" @@ -1324,7 +1329,7 @@ msgstr "Vahvistuskoodi:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:81 -#: bookwyrm/templates/settings/dashboard/dashboard.html:116 +#: bookwyrm/templates/settings/dashboard/dashboard.html:127 #: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Lähetä" @@ -1340,7 +1345,7 @@ msgstr "Lähetä vahvistuslinkki uudelleen" #: bookwyrm/templates/confirm_email/resend_modal.html:15 #: bookwyrm/templates/landing/layout.html:68 -#: bookwyrm/templates/landing/password_reset_request.html:18 +#: bookwyrm/templates/landing/password_reset_request.html:24 #: bookwyrm/templates/preferences/edit_user.html:53 #: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" @@ -1567,14 +1572,20 @@ msgstr "%(site_name)s kutsuu liittymään! Luo käyttäjätili seuraavasta linki msgid "Learn more about %(site_name)s:" msgstr "Lue lisää %(site_name)s-yhteisöstä:" -#: bookwyrm/templates/email/moderation_report/html_content.html:6 -#: bookwyrm/templates/email/moderation_report/text_content.html:5 +#: bookwyrm/templates/email/moderation_report/html_content.html:8 +#: bookwyrm/templates/email/moderation_report/text_content.html:6 #, python-format -msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " -msgstr "@%(reporter)s on lähettänyt moderointipyynnön käyttäjästä @%(reportee)s. " +msgid "@%(reporter)s has flagged a link domain for moderation." +msgstr "" -#: bookwyrm/templates/email/moderation_report/html_content.html:9 -#: bookwyrm/templates/email/moderation_report/text_content.html:7 +#: bookwyrm/templates/email/moderation_report/html_content.html:14 +#: bookwyrm/templates/email/moderation_report/text_content.html:10 +#, python-format +msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation." +msgstr "" + +#: bookwyrm/templates/email/moderation_report/html_content.html:21 +#: bookwyrm/templates/email/moderation_report/text_content.html:15 msgid "View report" msgstr "Näytä raportti" @@ -2268,10 +2279,15 @@ msgid "Confirm password:" msgstr "Vahvista salasana:" #: bookwyrm/templates/landing/password_reset_request.html:14 +#, python-format +msgid "A password reset link will be sent to %(email)s if there is an account using that email address." +msgstr "" + +#: bookwyrm/templates/landing/password_reset_request.html:20 msgid "A link to reset your password will be sent to your email address" msgstr "Salasananpalautuslinkki lähetetään sähköpostiosoitteeseesi" -#: bookwyrm/templates/landing/password_reset_request.html:28 +#: bookwyrm/templates/landing/password_reset_request.html:34 msgid "Reset password" msgstr "Palauta salasana" @@ -2579,108 +2595,244 @@ msgstr "Kaikki listat" msgid "Saved Lists" msgstr "Tallennetut listat" -#: bookwyrm/templates/notifications/items/accept.html:16 +#: bookwyrm/templates/notifications/items/accept.html:18 #, python-format -msgid "accepted your invitation to join group \"%(group_name)s\"" -msgstr "hyväksyi kutsusi liittyä ryhmään ”%(group_name)s”" +msgid "%(related_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:24 +#: bookwyrm/templates/notifications/items/accept.html:26 #, python-format -msgid "added %(book_title)s to your list \"%(list_name)s\"" -msgstr "lisäsi teoksen %(book_title)s listaasi ”%(list_name)s”" +msgid "%(related_user)s and %(second_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:31 +#: bookwyrm/templates/notifications/items/accept.html:36 #, python-format -msgid "suggested adding %(book_title)s to your list \"%(list_name)s\"" -msgstr "ehdotti teosta %(book_title)s listaasi ”%(list_name)s”" +msgid "%(related_user)s and %(other_user_display_count)s others accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:19 +#: bookwyrm/templates/notifications/items/add.html:33 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "kaiutti arviotasi teoksesta %(book_title)s" +msgid "%(related_user)s added %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:25 +#: bookwyrm/templates/notifications/items/add.html:39 #, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "kaiutti teokseen %(book_title)s liittyvää kommenttiasi" +msgid "%(related_user)s suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:31 +#: bookwyrm/templates/notifications/items/add.html:47 #, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "kaiutti lainaustasi teoksesta %(book_title)s" +msgid "%(related_user)s added %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:37 +#: bookwyrm/templates/notifications/items/add.html:54 #, python-format -msgid "boosted your status" -msgstr "kaiutti tilapäivitystäsi" +msgid "%(related_user)s suggested adding %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:19 +#: bookwyrm/templates/notifications/items/add.html:66 #, python-format -msgid "liked your review of %(book_title)s" -msgstr "tykkäsi teosta %(book_title)s koskevasta arviostasi" +msgid "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:25 +#: bookwyrm/templates/notifications/items/add.html:82 #, python-format -msgid "liked your comment on %(book_title)s" -msgstr "tykkäsi teosta %(book_title)s koskevasta kommentistasi" +msgid "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:31 +#: bookwyrm/templates/notifications/items/boost.html:21 #, python-format -msgid "liked your quote from %(book_title)s" -msgstr "tykkäsi lainauksestasi teoksesta %(book_title)s" +msgid "%(related_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:37 +#: bookwyrm/templates/notifications/items/boost.html:27 #, python-format -msgid "liked your status" -msgstr "tykkäsi tilapäivityksestäsi" +msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow.html:15 -msgid "followed you" -msgstr "alkoi seurata sinua" +#: bookwyrm/templates/notifications/items/boost.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow_request.html:11 -msgid "sent you a follow request" -msgstr "lähetti pyynnön saada seurata sinua" +#: bookwyrm/templates/notifications/items/boost.html:44 +#, python-format +msgid "%(related_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:67 +#, python-format +msgid "%(related_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:90 +#, python-format +msgid "%(related_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:21 +#, python-format +msgid "%(related_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:27 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:44 +#, python-format +msgid "%(related_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:67 +#, python-format +msgid "%(related_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:90 +#, python-format +msgid "%(related_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:16 +#, python-format +msgid "%(related_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:20 +#, python-format +msgid "%(related_user)s and %(second_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:25 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow_request.html:15 +#, python-format +msgid "%(related_user)s sent you a follow request" +msgstr "" #: bookwyrm/templates/notifications/items/import.html:14 #, python-format msgid "Your import completed." msgstr "Tuonti valmis." -#: bookwyrm/templates/notifications/items/invite.html:15 +#: bookwyrm/templates/notifications/items/invite.html:16 #, python-format -msgid "invited you to join the group \"%(group_name)s\"" -msgstr "kutsui sinut ryhmään ”%(group_name)s”" +msgid "%(related_user)s invited you to join the group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/join.html:16 #, python-format msgid "has joined your group \"%(group_name)s\"" msgstr "liittyi ryhmääsi ”%(group_name)s”" -#: bookwyrm/templates/notifications/items/leave.html:16 +#: bookwyrm/templates/notifications/items/leave.html:18 #, python-format -msgid "has left your group \"%(group_name)s\"" -msgstr "on poistunut ryhmästäsi ”%(group_name)s”" +msgid "%(related_user)s has left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:26 +#, python-format +msgid "%(related_user)s and %(second_user)s have left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:20 #, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "mainitsi sinut teoksen %(book_title)s arviossa" +msgid "%(related_user)s mentioned you in a review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:26 #, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "mainitsi sinut teosta %(book_title)s koskevassa kommentissa" +msgid "%(related_user)s mentioned you in a comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:32 #, python-format -msgid "mentioned you in a quote from %(book_title)s" -msgstr "mainitsi sinut lainauksessa teoksesta %(book_title)s" +msgid "%(related_user)s mentioned you in a quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:38 #, python-format -msgid "mentioned you in a status" -msgstr "mainitsi sinut tilapäivityksessä" +msgid "%(related_user)s mentioned you in a status" +msgstr "" #: bookwyrm/templates/notifications/items/remove.html:17 #, python-format @@ -2694,28 +2846,30 @@ msgstr "Sinut on poistettu ryhmästä ”%(group_name #: bookwyrm/templates/notifications/items/reply.html:21 #, python-format -msgid "replied to your review of %(book_title)s" -msgstr "vastasi arvioosi teoksesta %(book_title)s" +msgid "%(related_user)s replied to your review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:27 #, python-format -msgid "replied to your comment on %(book_title)s" -msgstr "vastasi teosta %(book_title)s koskevaan kommenttiisi" +msgid "%(related_user)s replied to your comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:33 #, python-format -msgid "replied to your quote from %(book_title)s" -msgstr "vastasi lainaukseesi teoksesta %(book_title)s" +msgid "%(related_user)s replied to your quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:39 #, python-format -msgid "replied to your status" -msgstr "vastasi tilapäivitykseesi" +msgid "%(related_user)s replied to your status" +msgstr "" #: bookwyrm/templates/notifications/items/report.html:15 #, python-format -msgid "A new report needs moderation." -msgstr "Uusi raportti odottaa moderointipäätöstä." +msgid "A new report needs moderation" +msgid_plural "%(display_count)s new reports need moderation" +msgstr[0] "" +msgstr[1] "" #: bookwyrm/templates/notifications/items/update.html:16 #, python-format @@ -3199,13 +3353,13 @@ msgstr "Epätosi" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:105 msgid "Start date:" msgstr "Alkaen:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "End date:" msgstr "Päättyen:" @@ -3365,7 +3519,7 @@ msgid "Dashboard" msgstr "Kojelauta" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:134 msgid "Total users" msgstr "Käyttäjiä yhteensä" @@ -3385,55 +3539,64 @@ msgstr "Teoksia" #: bookwyrm/templates/settings/dashboard/dashboard.html:43 #, python-format +msgid "Your outgoing email address, %(email_sender)s, may be misconfigured." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:46 +msgid "Check the EMAIL_SENDER_NAME and EMAIL_SENDER_DOMAIN in your .env." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#, python-format msgid "%(display_count)s open report" msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s käsittelemätön raportti" msgstr[1] "%(display_count)s käsittelemätöntä raporttia" -#: bookwyrm/templates/settings/dashboard/dashboard.html:55 +#: bookwyrm/templates/settings/dashboard/dashboard.html:66 #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" msgstr[0] "%(display_count)s verkkotunnus vaatii tarkistusta" msgstr[1] "%(display_count)s verkkotunnusta vaatii tarkistusta" -#: bookwyrm/templates/settings/dashboard/dashboard.html:67 +#: bookwyrm/templates/settings/dashboard/dashboard.html:78 #, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "%(display_count)s kutsupyyntö" msgstr[1] "%(display_count)s kutsupyyntöä" -#: bookwyrm/templates/settings/dashboard/dashboard.html:79 +#: bookwyrm/templates/settings/dashboard/dashboard.html:90 #, python-format msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." msgstr "Päivitys saatavilla! Käytössäsi on versio %(current)s, ja viimeisin julkaistu versio on %(available)s." -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Instance Activity" msgstr "Palvelimen aktiivisuus" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "Interval:" msgstr "Aikaväli:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:110 +#: bookwyrm/templates/settings/dashboard/dashboard.html:121 msgid "Days" msgstr "päivä" -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:122 msgid "Weeks" msgstr "viikko" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:140 msgid "User signup activity" msgstr "Rekisteröityneitä käyttäjiä" -#: bookwyrm/templates/settings/dashboard/dashboard.html:135 +#: bookwyrm/templates/settings/dashboard/dashboard.html:146 msgid "Status activity" msgstr "Tilapäivityksiä" -#: bookwyrm/templates/settings/dashboard/dashboard.html:141 +#: bookwyrm/templates/settings/dashboard/dashboard.html:152 msgid "Works created" msgstr "Luotuja teoksia" @@ -3853,7 +4016,7 @@ msgstr "Ei odottavia verkkotunnuksia" msgid "No domains currently blocked" msgstr "Ei estettyjä verkkotunnuksia" -#: bookwyrm/templates/settings/link_domains/link_table.html:39 +#: bookwyrm/templates/settings/link_domains/link_table.html:43 msgid "No links available for this domain." msgstr "Verkkotunnukselle ei ole linkkejä." @@ -3881,11 +4044,11 @@ msgstr "Tilapäivitys on poistettu" msgid "Reported links" msgstr "Raportoidut linkit" -#: bookwyrm/templates/settings/reports/report.html:63 +#: bookwyrm/templates/settings/reports/report.html:65 msgid "Moderator Comments" msgstr "Moderaattorien kommentit" -#: bookwyrm/templates/settings/reports/report.html:84 +#: bookwyrm/templates/settings/reports/report.html:86 #: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Kommentti" @@ -3895,12 +4058,17 @@ msgstr "Kommentti" msgid "Report #%(report_id)s: Status posted by @%(username)s" msgstr "Raportti %(report_id)s: käyttäjän @%(username)s tilapäivitys" -#: bookwyrm/templates/settings/reports/report_header.html:12 +#: bookwyrm/templates/settings/reports/report_header.html:13 #, python-format msgid "Report #%(report_id)s: Link added by @%(username)s" msgstr "Raportti %(report_id)s: käyttäjän @%(username)s lisäämä linkki" -#: bookwyrm/templates/settings/reports/report_header.html:18 +#: bookwyrm/templates/settings/reports/report_header.html:17 +#, python-format +msgid "Report #%(report_id)s: Link domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_header.html:24 #, python-format msgid "Report #%(report_id)s: User @%(username)s" msgstr "Raportti %(report_id)s: käyttäjä @%(username)s" @@ -4163,11 +4331,15 @@ msgid "Active" msgstr "Aktiivinen" #: bookwyrm/templates/settings/users/user_admin.html:79 +msgid "Deleted" +msgstr "" + +#: bookwyrm/templates/settings/users/user_admin.html:85 #: bookwyrm/templates/settings/users/user_info.html:32 msgid "Inactive" msgstr "Ei aktiivinen" -#: bookwyrm/templates/settings/users/user_admin.html:88 +#: bookwyrm/templates/settings/users/user_admin.html:94 #: bookwyrm/templates/settings/users/user_info.html:127 msgid "Not set" msgstr "Ei asetettu" @@ -5172,15 +5344,6 @@ msgstr "Epäkelpo csv-tiedosto" msgid "Username or password are incorrect" msgstr "Käyttäjänimi tai salasana on virheellinen" -#: bookwyrm/views/landing/password.py:32 -msgid "No user with that email address was found." -msgstr "Tätä sähköpostiosoitetta käyttävää käyttäjää ei löytynyt." - -#: bookwyrm/views/landing/password.py:43 -#, python-brace-format -msgid "A password reset link was sent to {email}" -msgstr "Osoitteeseen {email} lähetettiin salasananpalautuslinkki" - #: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index 827080b0c..69fb18862 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 f1cbc5362..3e5bdf86f 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-05-31 23:50+0000\n" -"PO-Revision-Date: 2022-06-10 17:57\n" +"POT-Creation-Date: 2022-07-07 17:47+0000\n" +"PO-Revision-Date: 2022-07-08 17:00\n" "Last-Translator: Mouse Reeve \n" "Language-Team: French\n" "Language: fr\n" @@ -121,7 +121,7 @@ msgstr "Avertissement" msgid "Danger" msgstr "Danger" -#: bookwyrm/models/antispam.py:106 bookwyrm/models/antispam.py:140 +#: bookwyrm/models/antispam.py:101 bookwyrm/models/antispam.py:135 msgid "Automatically generated report" msgstr "Rapport généré automatiquement" @@ -740,7 +740,7 @@ msgstr "ISNI :" #: bookwyrm/templates/book/book.html:202 #: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 -#: bookwyrm/templates/book/file_links/edit_links.html:82 +#: bookwyrm/templates/book/file_links/edit_links.html:86 #: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 @@ -1218,16 +1218,21 @@ msgstr "Statut" msgid "Actions" msgstr "Actions" -#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/edit_links.html:48 +#: bookwyrm/templates/settings/link_domains/link_table.html:21 +msgid "Unknown user" +msgstr "Compte inconnu" + +#: bookwyrm/templates/book/file_links/edit_links.html:57 #: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Signaler un spam" -#: bookwyrm/templates/book/file_links/edit_links.html:97 +#: bookwyrm/templates/book/file_links/edit_links.html:101 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/edit_links.html:112 #: bookwyrm/templates/book/file_links/links.html:18 msgid "Add link to file" msgstr "Ajouter un lien vers un fichier" @@ -1324,7 +1329,7 @@ msgstr "Code de confirmation :" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:81 -#: bookwyrm/templates/settings/dashboard/dashboard.html:116 +#: bookwyrm/templates/settings/dashboard/dashboard.html:127 #: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Valider" @@ -1340,7 +1345,7 @@ msgstr "Envoyer le lien de confirmation de nouveau" #: bookwyrm/templates/confirm_email/resend_modal.html:15 #: bookwyrm/templates/landing/layout.html:68 -#: bookwyrm/templates/landing/password_reset_request.html:18 +#: bookwyrm/templates/landing/password_reset_request.html:24 #: bookwyrm/templates/preferences/edit_user.html:53 #: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" @@ -1567,14 +1572,20 @@ msgstr "Vous avez reçu une invitation à rejoindre %(site_name)s ! Cliquez le msgid "Learn more about %(site_name)s:" msgstr "En savoir plus sur %(site_name)s :" -#: bookwyrm/templates/email/moderation_report/html_content.html:6 -#: bookwyrm/templates/email/moderation_report/text_content.html:5 +#: bookwyrm/templates/email/moderation_report/html_content.html:8 +#: bookwyrm/templates/email/moderation_report/text_content.html:6 #, python-format -msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " -msgstr "@%(reporter)s a signalé un comportement de @%(reportee)s pour modération. " +msgid "@%(reporter)s has flagged a link domain for moderation." +msgstr "@%(reporter)s a signalé le domaine d’un lien pour modération." -#: bookwyrm/templates/email/moderation_report/html_content.html:9 -#: bookwyrm/templates/email/moderation_report/text_content.html:7 +#: bookwyrm/templates/email/moderation_report/html_content.html:14 +#: bookwyrm/templates/email/moderation_report/text_content.html:10 +#, python-format +msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation." +msgstr "@%(reporter)s a signalé un comportement de @%(reportee)s pour modération." + +#: bookwyrm/templates/email/moderation_report/html_content.html:21 +#: bookwyrm/templates/email/moderation_report/text_content.html:15 msgid "View report" msgstr "Voir le signalement" @@ -2268,10 +2279,15 @@ msgid "Confirm password:" msgstr "Confirmez le mot de passe :" #: bookwyrm/templates/landing/password_reset_request.html:14 +#, python-format +msgid "A password reset link will be sent to %(email)s if there is an account using that email address." +msgstr "Un lien de réinitialisation du mot de passe sera envoyé à %(email)s s'il y a un compte utilisant cette adresse e-mail." + +#: bookwyrm/templates/landing/password_reset_request.html:20 msgid "A link to reset your password will be sent to your email address" msgstr "Un lien pour changer votre mot de passe sera envoyé à votre addresse email" -#: bookwyrm/templates/landing/password_reset_request.html:28 +#: bookwyrm/templates/landing/password_reset_request.html:34 msgid "Reset password" msgstr "Changer de mot de passe" @@ -2579,108 +2595,244 @@ msgstr "Toutes les listes" msgid "Saved Lists" msgstr "Listes sauvegardées" -#: bookwyrm/templates/notifications/items/accept.html:16 +#: bookwyrm/templates/notifications/items/accept.html:18 #, python-format -msgid "accepted your invitation to join group \"%(group_name)s\"" -msgstr "a accepté votre invitation à rejoindre le groupe \"%(group_name)s\"" +msgid "%(related_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "%(related_user)s a accepté votre invitation à rejoindre le groupe \"%(group_name)s\"" -#: bookwyrm/templates/notifications/items/add.html:24 +#: bookwyrm/templates/notifications/items/accept.html:26 #, python-format -msgid "added %(book_title)s to your list \"%(list_name)s\"" -msgstr "a ajouté %(book_title)s à votre liste \"%(list_name)s\"" +msgid "%(related_user)s and %(second_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "%(related_user)s et %(second_user)s ont accepté votre invitation à rejoindre le groupe \"%(group_name)s\"" -#: bookwyrm/templates/notifications/items/add.html:31 +#: bookwyrm/templates/notifications/items/accept.html:36 #, python-format -msgid "suggested adding %(book_title)s to your list \"%(list_name)s\"" -msgstr "a suggéré d'ajouter %(book_title)s à votre liste \"%(list_name)s\"" +msgid "%(related_user)s and %(other_user_display_count)s others accepted your invitation to join group \"%(group_name)s\"" +msgstr "%(related_user)s et %(other_user_display_count)s autres ont accepté votre invitation à rejoindre le groupe \"%(group_name)s\"" -#: bookwyrm/templates/notifications/items/boost.html:19 +#: bookwyrm/templates/notifications/items/add.html:33 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "a partagé votre critique de %(book_title)s" +msgid "%(related_user)s added %(book_title)s to your list \"%(list_name)s\"" +msgstr "%(related_user)s a ajouté %(book_title)s à votre liste \"%(list_name)s\"" -#: bookwyrm/templates/notifications/items/boost.html:25 +#: bookwyrm/templates/notifications/items/add.html:39 #, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "a partagé votre commentaire sur %(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgstr "%(related_user)s a suggéré d'ajouter %(book_title)s à votre liste \"%(list_name)s\"" -#: bookwyrm/templates/notifications/items/boost.html:31 +#: bookwyrm/templates/notifications/items/add.html:47 #, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "a partagé votre citation de %(book_title)s" +msgid "%(related_user)s added %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "%(related_user)s a ajouté %(book_title)s et %(second_book_title)s à votre liste \"%(list_name)s\"" -#: bookwyrm/templates/notifications/items/boost.html:37 +#: bookwyrm/templates/notifications/items/add.html:54 #, python-format -msgid "boosted your status" -msgstr "a partagé votre statut" +msgid "%(related_user)s suggested adding %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "%(related_user)s a suggéré d'ajouter %(book_title)s et %(second_book_title)s à votre liste \"%(list_name)s\"" -#: bookwyrm/templates/notifications/items/fav.html:19 +#: bookwyrm/templates/notifications/items/add.html:66 #, python-format -msgid "liked your review of %(book_title)s" -msgstr "a ajouté votre critique de %(book_title)s à ses favoris" +msgid "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "%(related_user)s a ajouté %(book_title)s, %(second_book_title)s et %(display_count)s autre livre à votre liste \"%(list_name)s\"" +msgstr[1] "%(related_user)s a ajouté %(book_title)s, %(second_book_title)s et %(display_count)s autres livres dans votre liste \"%(list_name)s\"" -#: bookwyrm/templates/notifications/items/fav.html:25 +#: bookwyrm/templates/notifications/items/add.html:82 #, python-format -msgid "liked your comment on %(book_title)s" -msgstr "a ajouté votre commentaire sur %(book_title)s à ses favoris" +msgid "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "%(related_user)s a suggéré d'ajouter %(book_title)s, %(second_book_title)s et %(display_count)s autre livre à votre liste \"%(list_name)s\"" +msgstr[1] "%(related_user)s a suggéré d'ajouter %(book_title)s, %(second_book_title)s et %(display_count)s autres livres dans votre liste \"%(list_name)s\"" -#: bookwyrm/templates/notifications/items/fav.html:31 +#: bookwyrm/templates/notifications/items/boost.html:21 #, python-format -msgid "liked your quote from %(book_title)s" -msgstr "a ajouté votre citation de %(book_title)s à ses favoris" +msgid "%(related_user)s boosted your review of %(book_title)s" +msgstr "%(related_user)s a boosté votre critique de %(book_title)s" -#: bookwyrm/templates/notifications/items/fav.html:37 +#: bookwyrm/templates/notifications/items/boost.html:27 #, python-format -msgid "liked your status" -msgstr "a ajouté votre statut à ses favoris" +msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s" +msgstr "%(related_user)s et %(second_user)s ont boosté votre critique de %(book_title)s" -#: bookwyrm/templates/notifications/items/follow.html:15 -msgid "followed you" -msgstr "vous suit" +#: bookwyrm/templates/notifications/items/boost.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s" +msgstr "%(related_user)s et %(other_user_display_count)s autres ont boosté votre critique de %(book_title)s" -#: bookwyrm/templates/notifications/items/follow_request.html:11 -msgid "sent you a follow request" -msgstr "vous a envoyé une demande d’abonnement" +#: bookwyrm/templates/notifications/items/boost.html:44 +#, python-format +msgid "%(related_user)s boosted your comment on %(book_title)s" +msgstr "%(related_user)s a boosté votre commentaire sur %(book_title)s" + +#: bookwyrm/templates/notifications/items/boost.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s" +msgstr "%(related_user)s et %(second_user)s ont boosté votre commentaire sur %(book_title)s" + +#: bookwyrm/templates/notifications/items/boost.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s" +msgstr "%(related_user)s et %(other_user_display_count)s autres ont boosté votre commentaire sur %(book_title)s" + +#: bookwyrm/templates/notifications/items/boost.html:67 +#, python-format +msgid "%(related_user)s boosted your quote from %(book_title)s" +msgstr "%(related_user)s a boosté votre citation de %(book_title)s" + +#: bookwyrm/templates/notifications/items/boost.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s" +msgstr "%(related_user)s et %(second_user)s ont boosté votre citation de %(book_title)s" + +#: bookwyrm/templates/notifications/items/boost.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s" +msgstr "%(related_user)s et %(other_user_display_count)s autres ont boosté votre citation de %(book_title)s" + +#: bookwyrm/templates/notifications/items/boost.html:90 +#, python-format +msgid "%(related_user)s boosted your status" +msgstr "%(related_user)s a boosté votre statut" + +#: bookwyrm/templates/notifications/items/boost.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your status" +msgstr "%(related_user)s et %(second_user)s ont boosté votre statut" + +#: bookwyrm/templates/notifications/items/boost.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your status" +msgstr "%(related_user)s et %(other_user_display_count)s autres ont boosté votre statut" + +#: bookwyrm/templates/notifications/items/fav.html:21 +#, python-format +msgid "%(related_user)s liked your review of %(book_title)s" +msgstr "%(related_user)s a aimé votre critique de %(book_title)s" + +#: bookwyrm/templates/notifications/items/fav.html:27 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s" +msgstr "%(related_user)s et %(second_user)s ont aimé votre critique de %(book_title)s" + +#: bookwyrm/templates/notifications/items/fav.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your review of %(book_title)s" +msgstr "%(related_user)s et %(other_user_display_count)s autres ont aimé votre critique de %(book_title)s" + +#: bookwyrm/templates/notifications/items/fav.html:44 +#, python-format +msgid "%(related_user)s liked your comment on %(book_title)s" +msgstr "%(related_user)s a aimé votre commentaire sur %(book_title)s" + +#: bookwyrm/templates/notifications/items/fav.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s" +msgstr "%(related_user)s et %(second_user)s ont aimé votre commentaire sur %(book_title)s" + +#: bookwyrm/templates/notifications/items/fav.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your comment on %(book_title)s" +msgstr "%(related_user)s et %(other_user_display_count)s autres ont aimé votre commentaire sur %(book_title)s" + +#: bookwyrm/templates/notifications/items/fav.html:67 +#, python-format +msgid "%(related_user)s liked your quote from %(book_title)s" +msgstr "%(related_user)s a aimé votre citation de %(book_title)s" + +#: bookwyrm/templates/notifications/items/fav.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s" +msgstr "%(related_user)s et %(second_user)s ont aimé votre citation de %(book_title)s" + +#: bookwyrm/templates/notifications/items/fav.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your quote from %(book_title)s" +msgstr "%(related_user)s et %(other_user_display_count)s autres ont aimé votre citation de %(book_title)s" + +#: bookwyrm/templates/notifications/items/fav.html:90 +#, python-format +msgid "%(related_user)s liked your status" +msgstr "%(related_user)s a aimé votre statut" + +#: bookwyrm/templates/notifications/items/fav.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your status" +msgstr "%(related_user)s et %(second_user)s ont aimé votre statut" + +#: bookwyrm/templates/notifications/items/fav.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your status" +msgstr "%(related_user)s et %(other_user_display_count)s autres ont aimé votre statut" + +#: bookwyrm/templates/notifications/items/follow.html:16 +#, python-format +msgid "%(related_user)s followed you" +msgstr "%(related_user)s a commencé à vous suivre" + +#: bookwyrm/templates/notifications/items/follow.html:20 +#, python-format +msgid "%(related_user)s and %(second_user)s followed you" +msgstr "%(related_user)s et %(second_user)s ont commencé à vous suivre" + +#: bookwyrm/templates/notifications/items/follow.html:25 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others followed you" +msgstr "%(related_user)s et %(other_user_display_count)s autres ont commencé à vous suivre" + +#: bookwyrm/templates/notifications/items/follow_request.html:15 +#, python-format +msgid "%(related_user)s sent you a follow request" +msgstr "%(related_user)s vous a envoyé une demande d'abonnement" #: bookwyrm/templates/notifications/items/import.html:14 #, python-format msgid "Your import completed." msgstr "Votre importation est terminée." -#: bookwyrm/templates/notifications/items/invite.html:15 +#: bookwyrm/templates/notifications/items/invite.html:16 #, python-format -msgid "invited you to join the group \"%(group_name)s\"" -msgstr "vous a invité·e à rejoindre le groupe \"%(group_name)s\"" +msgid "%(related_user)s invited you to join the group \"%(group_name)s\"" +msgstr "%(related_user)s vous a invité à rejoindre le groupe \"%(group_name)s\"" #: bookwyrm/templates/notifications/items/join.html:16 #, python-format msgid "has joined your group \"%(group_name)s\"" msgstr "a rejoint votre groupe \"%(group_name)s\"" -#: bookwyrm/templates/notifications/items/leave.html:16 +#: bookwyrm/templates/notifications/items/leave.html:18 #, python-format -msgid "has left your group \"%(group_name)s\"" -msgstr "a quitté votre groupe \"%(group_name)s\"" +msgid "%(related_user)s has left your group \"%(group_name)s\"" +msgstr "%(related_user)s a quitté votre groupe \"%(group_name)s\"" + +#: bookwyrm/templates/notifications/items/leave.html:26 +#, python-format +msgid "%(related_user)s and %(second_user)s have left your group \"%(group_name)s\"" +msgstr "%(related_user)s et %(second_user)s ont quitté votre groupe \"%(group_name)s\"" + +#: bookwyrm/templates/notifications/items/leave.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s\"" +msgstr "%(related_user)s et %(other_user_display_count)s autres ont quitté votre groupe \"%(group_name)s\"" #: bookwyrm/templates/notifications/items/mention.html:20 #, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "vous a mentionné dans sa critique de %(book_title)s" +msgid "%(related_user)s mentioned you in a review of %(book_title)s" +msgstr "%(related_user)s vous a mentionné(e) dans une critique de %(book_title)s" #: bookwyrm/templates/notifications/items/mention.html:26 #, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "vous a mentionné dans son commentaire sur %(book_title)s" +msgid "%(related_user)s mentioned you in a comment on %(book_title)s" +msgstr "%(related_user)s vous a mentionné(e) dans un commentaire sur %(book_title)s" #: bookwyrm/templates/notifications/items/mention.html:32 #, python-format -msgid "mentioned you in a quote from %(book_title)s" -msgstr "vous a mentionné dans sa citation de %(book_title)s" +msgid "%(related_user)s mentioned you in a quote from %(book_title)s" +msgstr "%(related_user)s vous a mentionné(e) dans une citation de %(book_title)s" #: bookwyrm/templates/notifications/items/mention.html:38 #, python-format -msgid "mentioned you in a status" -msgstr "vous a mentionné dans son statut" +msgid "%(related_user)s mentioned you in a status" +msgstr "%(related_user)s vous a mentionné(e) dans un statut" #: bookwyrm/templates/notifications/items/remove.html:17 #, python-format @@ -2694,28 +2846,30 @@ msgstr "Vous avez été retiré·e du groupe \"%(grou #: bookwyrm/templates/notifications/items/reply.html:21 #, python-format -msgid "replied to your review of %(book_title)s" -msgstr "a répondu à votre critique de %(book_title)s" +msgid "%(related_user)s replied to your review of %(book_title)s" +msgstr "%(related_user)s a répondu à votre critique de %(book_title)s" #: bookwyrm/templates/notifications/items/reply.html:27 #, python-format -msgid "replied to your comment on %(book_title)s" -msgstr "a répondu à votre commentaire sur %(book_title)s" +msgid "%(related_user)s replied to your comment on %(book_title)s" +msgstr "%(related_user)s a répondu à votre commentaire sur %(book_title)s" #: bookwyrm/templates/notifications/items/reply.html:33 #, python-format -msgid "replied to your quote from %(book_title)s" -msgstr "a répondu à votre citation de %(book_title)s" +msgid "%(related_user)s replied to your quote from %(book_title)s" +msgstr "%(related_user)s a répondu à votre citation de %(book_title)s" #: bookwyrm/templates/notifications/items/reply.html:39 #, python-format -msgid "replied to your status" -msgstr "a répondu à votre statut" +msgid "%(related_user)s replied to your status" +msgstr "%(related_user)s a répondu à votre statut" #: bookwyrm/templates/notifications/items/report.html:15 #, python-format -msgid "A new report needs moderation." -msgstr "Un nouveau signalement a besoin d’être traité." +msgid "A new report needs moderation" +msgid_plural "%(display_count)s new reports need moderation" +msgstr[0] "Un nouveau signalement a besoin d’être traité" +msgstr[1] "%(display_count)s nouveaux signalements ont besoin d’être traités" #: bookwyrm/templates/notifications/items/update.html:16 #, python-format @@ -3199,13 +3353,13 @@ msgstr "Faux" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:105 msgid "Start date:" msgstr "Date de début :" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "End date:" msgstr "Date de fin :" @@ -3365,7 +3519,7 @@ msgid "Dashboard" msgstr "Tableau de bord" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:134 msgid "Total users" msgstr "Nombre total d'utilisateurs·rices" @@ -3385,55 +3539,64 @@ msgstr "Œuvres" #: bookwyrm/templates/settings/dashboard/dashboard.html:43 #, python-format +msgid "Your outgoing email address, %(email_sender)s, may be misconfigured." +msgstr "Votre adresse e-mail sortante, %(email_sender)s, pourrait être mal configurée." + +#: bookwyrm/templates/settings/dashboard/dashboard.html:46 +msgid "Check the EMAIL_SENDER_NAME and EMAIL_SENDER_DOMAIN in your .env." +msgstr "Vérifiez EMAIL_SENDER_NAME et EMAIL_SENDER_DOMAIN dans votre .env." + +#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#, python-format msgid "%(display_count)s open report" msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s signalement ouvert" msgstr[1] "%(display_count)s signalements ouverts" -#: bookwyrm/templates/settings/dashboard/dashboard.html:55 +#: bookwyrm/templates/settings/dashboard/dashboard.html:66 #, 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:67 +#: bookwyrm/templates/settings/dashboard/dashboard.html:78 #, 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:79 +#: bookwyrm/templates/settings/dashboard/dashboard.html:90 #, python-format msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." msgstr "Une mise à jour est disponible ! Vous utilisez la version%(current)s et la dernière version est %(available)s." -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Instance Activity" msgstr "Activité de l'instance" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "Interval:" msgstr "Intervalle :" -#: bookwyrm/templates/settings/dashboard/dashboard.html:110 +#: bookwyrm/templates/settings/dashboard/dashboard.html:121 msgid "Days" msgstr "Jours" -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:122 msgid "Weeks" msgstr "Semaines" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:140 msgid "User signup activity" msgstr "Nouvelles inscriptions" -#: bookwyrm/templates/settings/dashboard/dashboard.html:135 +#: bookwyrm/templates/settings/dashboard/dashboard.html:146 msgid "Status activity" msgstr "Nouveaux statuts" -#: bookwyrm/templates/settings/dashboard/dashboard.html:141 +#: bookwyrm/templates/settings/dashboard/dashboard.html:152 msgid "Works created" msgstr "Œuvres créées" @@ -3853,7 +4016,7 @@ msgstr "Aucun domaine en attente" msgid "No domains currently blocked" msgstr "Aucun domaine actuellement bloqué" -#: bookwyrm/templates/settings/link_domains/link_table.html:39 +#: bookwyrm/templates/settings/link_domains/link_table.html:43 msgid "No links available for this domain." msgstr "Aucun lien n’est disponible pour ce domaine." @@ -3881,11 +4044,11 @@ msgstr "Le statut a été supprimé" msgid "Reported links" msgstr "Liens signalés" -#: bookwyrm/templates/settings/reports/report.html:63 +#: bookwyrm/templates/settings/reports/report.html:65 msgid "Moderator Comments" msgstr "Commentaires de l’équipe de modération" -#: bookwyrm/templates/settings/reports/report.html:84 +#: bookwyrm/templates/settings/reports/report.html:86 #: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Commentaire" @@ -3895,12 +4058,17 @@ msgstr "Commentaire" 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_header.html:12 +#: bookwyrm/templates/settings/reports/report_header.html:13 #, 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_header.html:18 +#: bookwyrm/templates/settings/reports/report_header.html:17 +#, python-format +msgid "Report #%(report_id)s: Link domain" +msgstr "Rapport nº %(report_id)s : Domaine du lien" + +#: bookwyrm/templates/settings/reports/report_header.html:24 #, python-format msgid "Report #%(report_id)s: User @%(username)s" msgstr "Signalement #%(report_id)s : compte @%(username)s" @@ -4163,11 +4331,15 @@ msgid "Active" msgstr "Actif" #: bookwyrm/templates/settings/users/user_admin.html:79 +msgid "Deleted" +msgstr "Supprimé" + +#: bookwyrm/templates/settings/users/user_admin.html:85 #: bookwyrm/templates/settings/users/user_info.html:32 msgid "Inactive" msgstr "Inactif" -#: bookwyrm/templates/settings/users/user_admin.html:88 +#: bookwyrm/templates/settings/users/user_admin.html:94 #: bookwyrm/templates/settings/users/user_info.html:127 msgid "Not set" msgstr "Non défini" @@ -5172,15 +5344,6 @@ msgstr "Fichier CSV non valide" msgid "Username or password are incorrect" msgstr "Identifiant ou mot de passe incorrect" -#: bookwyrm/views/landing/password.py:32 -msgid "No user with that email address was found." -msgstr "Aucun compte avec cette adresse email n’a été trouvé." - -#: bookwyrm/views/landing/password.py:43 -#, python-brace-format -msgid "A password reset link was sent to {email}" -msgstr "Un lien de réinitialisation a été envoyé à {email}." - #: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" diff --git a/locale/gl_ES/LC_MESSAGES/django.mo b/locale/gl_ES/LC_MESSAGES/django.mo index 08eca4a48..ab178a376 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 ac0d16262..876afbf1e 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-05-31 23:50+0000\n" -"PO-Revision-Date: 2022-06-01 04:46\n" +"POT-Creation-Date: 2022-07-07 17:47+0000\n" +"PO-Revision-Date: 2022-07-08 13:09\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Galician\n" "Language: gl\n" @@ -121,7 +121,7 @@ msgstr "Advertencia" msgid "Danger" msgstr "Perigo" -#: bookwyrm/models/antispam.py:106 bookwyrm/models/antispam.py:140 +#: bookwyrm/models/antispam.py:101 bookwyrm/models/antispam.py:135 msgid "Automatically generated report" msgstr "Denuncia creada automáticamente" @@ -740,7 +740,7 @@ msgstr "ISNI:" #: bookwyrm/templates/book/book.html:202 #: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 -#: bookwyrm/templates/book/file_links/edit_links.html:82 +#: bookwyrm/templates/book/file_links/edit_links.html:86 #: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 @@ -1218,16 +1218,21 @@ msgstr "Estado" msgid "Actions" msgstr "Accións" -#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/edit_links.html:48 +#: bookwyrm/templates/settings/link_domains/link_table.html:21 +msgid "Unknown user" +msgstr "Usuaria descoñecida" + +#: bookwyrm/templates/book/file_links/edit_links.html:57 #: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Denunciar spam" -#: bookwyrm/templates/book/file_links/edit_links.html:97 +#: bookwyrm/templates/book/file_links/edit_links.html:101 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/edit_links.html:112 #: bookwyrm/templates/book/file_links/links.html:18 msgid "Add link to file" msgstr "Engadir ligazón ao ficheiro" @@ -1324,7 +1329,7 @@ msgstr "Código de confirmación:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:81 -#: bookwyrm/templates/settings/dashboard/dashboard.html:116 +#: bookwyrm/templates/settings/dashboard/dashboard.html:127 #: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Enviar" @@ -1340,7 +1345,7 @@ msgstr "Reenviar ligazón de confirmación" #: bookwyrm/templates/confirm_email/resend_modal.html:15 #: bookwyrm/templates/landing/layout.html:68 -#: bookwyrm/templates/landing/password_reset_request.html:18 +#: bookwyrm/templates/landing/password_reset_request.html:24 #: bookwyrm/templates/preferences/edit_user.html:53 #: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" @@ -1567,14 +1572,20 @@ msgstr "Foches convidada a unirte a %(site_name)s! Preme na ligazón para crear msgid "Learn more about %(site_name)s:" msgstr "Coñece máis acerca de %(site_name)s:" -#: bookwyrm/templates/email/moderation_report/html_content.html:6 -#: bookwyrm/templates/email/moderation_report/text_content.html:5 +#: bookwyrm/templates/email/moderation_report/html_content.html:8 +#: bookwyrm/templates/email/moderation_report/text_content.html:6 #, python-format -msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " -msgstr "@%(reporter)s marcou o comportamento de @%(reportee)s para revisión. " +msgid "@%(reporter)s has flagged a link domain for moderation." +msgstr "@%(reporter)s marcou o dominio dunha ligazón para revisar." -#: bookwyrm/templates/email/moderation_report/html_content.html:9 -#: bookwyrm/templates/email/moderation_report/text_content.html:7 +#: bookwyrm/templates/email/moderation_report/html_content.html:14 +#: bookwyrm/templates/email/moderation_report/text_content.html:10 +#, python-format +msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation." +msgstr "@%(reporter)s marcou o comportamento de @%(reportee)s para ser revisado." + +#: bookwyrm/templates/email/moderation_report/html_content.html:21 +#: bookwyrm/templates/email/moderation_report/text_content.html:15 msgid "View report" msgstr "Ver denuncia" @@ -2268,10 +2279,15 @@ msgid "Confirm password:" msgstr "Confirma o contrasinal:" #: bookwyrm/templates/landing/password_reset_request.html:14 +#, python-format +msgid "A password reset link will be sent to %(email)s if there is an account using that email address." +msgstr "" + +#: bookwyrm/templates/landing/password_reset_request.html:20 msgid "A link to reset your password will be sent to your email address" msgstr "Enviaremos unha ligazón ao teu email para restablecer o contrasinal" -#: bookwyrm/templates/landing/password_reset_request.html:28 +#: bookwyrm/templates/landing/password_reset_request.html:34 msgid "Reset password" msgstr "Restablecer contrasinal" @@ -2579,108 +2595,244 @@ msgstr "Tódalas listas" msgid "Saved Lists" msgstr "Listas gardadas" -#: bookwyrm/templates/notifications/items/accept.html:16 +#: bookwyrm/templates/notifications/items/accept.html:18 #, python-format -msgid "accepted your invitation to join group \"%(group_name)s\"" -msgstr "aceptou o teu convite para unirse ao grupo \"%(group_name)s\"" +msgid "%(related_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:24 +#: bookwyrm/templates/notifications/items/accept.html:26 #, python-format -msgid "added %(book_title)s to your list \"%(list_name)s\"" -msgstr "engadiu %(book_title)s á túa lista \"%(list_name)s\"" +msgid "%(related_user)s and %(second_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:31 +#: bookwyrm/templates/notifications/items/accept.html:36 #, python-format -msgid "suggested adding %(book_title)s to your list \"%(list_name)s\"" -msgstr "suxeriu engadir %(book_title)s á túa lista \"%(list_name)s\"" +msgid "%(related_user)s and %(other_user_display_count)s others accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:19 +#: bookwyrm/templates/notifications/items/add.html:33 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "promoveu a túa recensión de %(book_title)s" +msgid "%(related_user)s added %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:25 +#: bookwyrm/templates/notifications/items/add.html:39 #, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "promoveu o teu comentario acerca de %(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:31 +#: bookwyrm/templates/notifications/items/add.html:47 #, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "promoveu a túa cita acerca de %(book_title)s" +msgid "%(related_user)s added %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:37 +#: bookwyrm/templates/notifications/items/add.html:54 #, python-format -msgid "boosted your status" -msgstr "promoveu a túa publicación" +msgid "%(related_user)s suggested adding %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:19 +#: bookwyrm/templates/notifications/items/add.html:66 #, python-format -msgid "liked your review of %(book_title)s" -msgstr "gustoulle a túa recensión de %(book_title)s" +msgid "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:25 +#: bookwyrm/templates/notifications/items/add.html:82 #, python-format -msgid "liked your comment on %(book_title)s" -msgstr "gustoulle o teu comentario para %(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:31 +#: bookwyrm/templates/notifications/items/boost.html:21 #, python-format -msgid "liked your quote from %(book_title)s" -msgstr "gustoulle a túa cita de %(book_title)s" +msgid "%(related_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:37 +#: bookwyrm/templates/notifications/items/boost.html:27 #, python-format -msgid "liked your status" -msgstr "gustoulle a túa publicación" +msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow.html:15 -msgid "followed you" -msgstr "séguete" +#: bookwyrm/templates/notifications/items/boost.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow_request.html:11 -msgid "sent you a follow request" -msgstr "enviouche unha solicitude de seguimento" +#: bookwyrm/templates/notifications/items/boost.html:44 +#, python-format +msgid "%(related_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:67 +#, python-format +msgid "%(related_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:90 +#, python-format +msgid "%(related_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:21 +#, python-format +msgid "%(related_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:27 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:44 +#, python-format +msgid "%(related_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:67 +#, python-format +msgid "%(related_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:90 +#, python-format +msgid "%(related_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:16 +#, python-format +msgid "%(related_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:20 +#, python-format +msgid "%(related_user)s and %(second_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:25 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow_request.html:15 +#, python-format +msgid "%(related_user)s sent you a follow request" +msgstr "" #: bookwyrm/templates/notifications/items/import.html:14 #, python-format msgid "Your import completed." msgstr "A importación completouse." -#: bookwyrm/templates/notifications/items/invite.html:15 +#: bookwyrm/templates/notifications/items/invite.html:16 #, python-format -msgid "invited you to join the group \"%(group_name)s\"" -msgstr "convidoute a unirte ao grupo \"%(group_name)s\"" +msgid "%(related_user)s invited you to join the group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/join.html:16 #, python-format msgid "has joined your group \"%(group_name)s\"" msgstr "uniuse ao teu grupo \"%(group_name)s\"" -#: bookwyrm/templates/notifications/items/leave.html:16 +#: bookwyrm/templates/notifications/items/leave.html:18 #, python-format -msgid "has left your group \"%(group_name)s\"" -msgstr "deixou o teu grupo \"%(group_name)s\"" +msgid "%(related_user)s has left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:26 +#, python-format +msgid "%(related_user)s and %(second_user)s have left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:20 #, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "mencionoute nunha recensión sobre %(book_title)s" +msgid "%(related_user)s mentioned you in a review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:26 #, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "mencionoute nun comentario para %(book_title)s" +msgid "%(related_user)s mentioned you in a comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:32 #, python-format -msgid "mentioned you in a quote from %(book_title)s" -msgstr "mencionoute nunha cita en %(book_title)s" +msgid "%(related_user)s mentioned you in a quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:38 #, python-format -msgid "mentioned you in a status" -msgstr "mencionoute nun estado" +msgid "%(related_user)s mentioned you in a status" +msgstr "" #: bookwyrm/templates/notifications/items/remove.html:17 #, python-format @@ -2694,28 +2846,30 @@ msgstr "Foches eliminada do grupo \"%(group_name)sreplied to your review of %(book_title)s" -msgstr "respondeu á túa revisión de %(book_title)s" +msgid "%(related_user)s replied to your review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:27 #, python-format -msgid "replied to your comment on %(book_title)s" -msgstr "respondeu ao teu comentario en %(book_title)s" +msgid "%(related_user)s replied to your comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:33 #, python-format -msgid "replied to your quote from %(book_title)s" -msgstr "respondeu á túa cita de %(book_title)s" +msgid "%(related_user)s replied to your quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:39 #, python-format -msgid "replied to your status" -msgstr "respondeu ao teu estado" +msgid "%(related_user)s replied to your status" +msgstr "" #: bookwyrm/templates/notifications/items/report.html:15 #, python-format -msgid "A new report needs moderation." -msgstr "Hai unha nova denuncia para moderar." +msgid "A new report needs moderation" +msgid_plural "%(display_count)s new reports need moderation" +msgstr[0] "" +msgstr[1] "" #: bookwyrm/templates/notifications/items/update.html:16 #, python-format @@ -3199,13 +3353,13 @@ msgstr "Falso" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:105 msgid "Start date:" msgstr "Data de inicio:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "End date:" msgstr "Data de fin:" @@ -3365,7 +3519,7 @@ msgid "Dashboard" msgstr "Taboleiro" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:134 msgid "Total users" msgstr "Total de usuarias" @@ -3385,55 +3539,64 @@ msgstr "Traballos" #: bookwyrm/templates/settings/dashboard/dashboard.html:43 #, python-format +msgid "Your outgoing email address, %(email_sender)s, may be misconfigured." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:46 +msgid "Check the EMAIL_SENDER_NAME and EMAIL_SENDER_DOMAIN in your .env." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#, python-format msgid "%(display_count)s open report" msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s denuncia aberta" msgstr[1] "%(display_count)s denuncias abertas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:55 +#: bookwyrm/templates/settings/dashboard/dashboard.html:66 #, 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:67 +#: bookwyrm/templates/settings/dashboard/dashboard.html:78 #, 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:79 +#: bookwyrm/templates/settings/dashboard/dashboard.html:90 #, python-format msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." msgstr "Hai unha actualización dispoñible! Estás a executar v%(current)s e a última versión é %(available)s." -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Instance Activity" msgstr "Actividade na instancia" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "Interval:" msgstr "Intervalo:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:110 +#: bookwyrm/templates/settings/dashboard/dashboard.html:121 msgid "Days" msgstr "Días" -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:122 msgid "Weeks" msgstr "Semanas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:140 msgid "User signup activity" msgstr "Rexistros de usuarias" -#: bookwyrm/templates/settings/dashboard/dashboard.html:135 +#: bookwyrm/templates/settings/dashboard/dashboard.html:146 msgid "Status activity" msgstr "Actividade do estado" -#: bookwyrm/templates/settings/dashboard/dashboard.html:141 +#: bookwyrm/templates/settings/dashboard/dashboard.html:152 msgid "Works created" msgstr "Traballos creados" @@ -3853,7 +4016,7 @@ msgstr "Non hai dominios pendentes" msgid "No domains currently blocked" msgstr "Non hai dominios bloqueados" -#: bookwyrm/templates/settings/link_domains/link_table.html:39 +#: bookwyrm/templates/settings/link_domains/link_table.html:43 msgid "No links available for this domain." msgstr "Non hai ligazóns dispoñibles para este dominio." @@ -3881,11 +4044,11 @@ msgstr "O estado foi eliminado" msgid "Reported links" msgstr "Ligazóns denunciadas" -#: bookwyrm/templates/settings/reports/report.html:63 +#: bookwyrm/templates/settings/reports/report.html:65 msgid "Moderator Comments" msgstr "Comentarios da moderación" -#: bookwyrm/templates/settings/reports/report.html:84 +#: bookwyrm/templates/settings/reports/report.html:86 #: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Comentario" @@ -3895,12 +4058,17 @@ msgstr "Comentario" 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_header.html:12 +#: bookwyrm/templates/settings/reports/report_header.html:13 #, 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_header.html:18 +#: bookwyrm/templates/settings/reports/report_header.html:17 +#, python-format +msgid "Report #%(report_id)s: Link domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_header.html:24 #, python-format msgid "Report #%(report_id)s: User @%(username)s" msgstr "Denuncia #%(report_id)s: Usuaria @%(username)s" @@ -4163,11 +4331,15 @@ msgid "Active" msgstr "Activa" #: bookwyrm/templates/settings/users/user_admin.html:79 +msgid "Deleted" +msgstr "" + +#: bookwyrm/templates/settings/users/user_admin.html:85 #: bookwyrm/templates/settings/users/user_info.html:32 msgid "Inactive" msgstr "Inactiva" -#: bookwyrm/templates/settings/users/user_admin.html:88 +#: bookwyrm/templates/settings/users/user_admin.html:94 #: bookwyrm/templates/settings/users/user_info.html:127 msgid "Not set" msgstr "Non establecido" @@ -5172,15 +5344,6 @@ msgstr "Non é un ficheiro csv válido" msgid "Username or password are incorrect" msgstr "As credenciais non son correctas" -#: bookwyrm/views/landing/password.py:32 -msgid "No user with that email address was found." -msgstr "Non atopamos unha usuaria con ese email." - -#: bookwyrm/views/landing/password.py:43 -#, python-brace-format -msgid "A password reset link was sent to {email}" -msgstr "Enviamos unha ligazón de restablecemento a {email}" - #: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" diff --git a/locale/it_IT/LC_MESSAGES/django.mo b/locale/it_IT/LC_MESSAGES/django.mo index 97519011a..8eca15d71 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 9ee240bf2..4e3115f05 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-05-31 23:50+0000\n" -"PO-Revision-Date: 2022-06-01 00:55\n" +"POT-Creation-Date: 2022-07-07 17:47+0000\n" +"PO-Revision-Date: 2022-07-07 18:13\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Italian\n" "Language: it\n" @@ -121,7 +121,7 @@ msgstr "Avviso" msgid "Danger" msgstr "Attenzione" -#: bookwyrm/models/antispam.py:106 bookwyrm/models/antispam.py:140 +#: bookwyrm/models/antispam.py:101 bookwyrm/models/antispam.py:135 msgid "Automatically generated report" msgstr "Rapporto generato automaticamente" @@ -740,7 +740,7 @@ msgstr "ISNI:" #: bookwyrm/templates/book/book.html:202 #: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 -#: bookwyrm/templates/book/file_links/edit_links.html:82 +#: bookwyrm/templates/book/file_links/edit_links.html:86 #: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 @@ -1218,16 +1218,21 @@ msgstr "Stato" msgid "Actions" msgstr "Azioni" -#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/edit_links.html:48 +#: bookwyrm/templates/settings/link_domains/link_table.html:21 +msgid "Unknown user" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:57 #: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Segnala come spam" -#: bookwyrm/templates/book/file_links/edit_links.html:97 +#: bookwyrm/templates/book/file_links/edit_links.html:101 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/edit_links.html:112 #: bookwyrm/templates/book/file_links/links.html:18 msgid "Add link to file" msgstr "Aggiungi collegamento al file" @@ -1324,7 +1329,7 @@ msgstr "Codice di conferma:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:81 -#: bookwyrm/templates/settings/dashboard/dashboard.html:116 +#: bookwyrm/templates/settings/dashboard/dashboard.html:127 #: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Invia" @@ -1340,7 +1345,7 @@ msgstr "Invia di nuovo email di conferma" #: bookwyrm/templates/confirm_email/resend_modal.html:15 #: bookwyrm/templates/landing/layout.html:68 -#: bookwyrm/templates/landing/password_reset_request.html:18 +#: bookwyrm/templates/landing/password_reset_request.html:24 #: bookwyrm/templates/preferences/edit_user.html:53 #: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" @@ -1567,14 +1572,20 @@ msgstr "Sei invitato ad unirti a %(site_name)s! Clicca sul link qui sotto per cr msgid "Learn more about %(site_name)s:" msgstr "Ulteriori informazioni su %(site_name)s:" -#: bookwyrm/templates/email/moderation_report/html_content.html:6 -#: bookwyrm/templates/email/moderation_report/text_content.html:5 +#: bookwyrm/templates/email/moderation_report/html_content.html:8 +#: bookwyrm/templates/email/moderation_report/text_content.html:6 #, python-format -msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " -msgstr "@%(reporter)s ha contrassegnato il comportamento di @%(reportee)s per la moderazione. " +msgid "@%(reporter)s has flagged a link domain for moderation." +msgstr "" -#: bookwyrm/templates/email/moderation_report/html_content.html:9 -#: bookwyrm/templates/email/moderation_report/text_content.html:7 +#: bookwyrm/templates/email/moderation_report/html_content.html:14 +#: bookwyrm/templates/email/moderation_report/text_content.html:10 +#, python-format +msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation." +msgstr "" + +#: bookwyrm/templates/email/moderation_report/html_content.html:21 +#: bookwyrm/templates/email/moderation_report/text_content.html:15 msgid "View report" msgstr "Visualizza report" @@ -2268,10 +2279,15 @@ msgid "Confirm password:" msgstr "Conferma la password:" #: bookwyrm/templates/landing/password_reset_request.html:14 +#, python-format +msgid "A password reset link will be sent to %(email)s if there is an account using that email address." +msgstr "" + +#: bookwyrm/templates/landing/password_reset_request.html:20 msgid "A link to reset your password will be sent to your email address" msgstr "Il link per reimpostare la password è stato inviato al tuo indirizzo email" -#: bookwyrm/templates/landing/password_reset_request.html:28 +#: bookwyrm/templates/landing/password_reset_request.html:34 msgid "Reset password" msgstr "Reimposta password" @@ -2579,108 +2595,244 @@ msgstr "Tutte le liste" msgid "Saved Lists" msgstr "Liste Salvate" -#: bookwyrm/templates/notifications/items/accept.html:16 +#: bookwyrm/templates/notifications/items/accept.html:18 #, python-format -msgid "accepted your invitation to join group \"%(group_name)s\"" -msgstr "il tuo invito ad unirsi al gruppo \"%(group_name)s\" è stato accettato" +msgid "%(related_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:24 +#: bookwyrm/templates/notifications/items/accept.html:26 #, python-format -msgid "added %(book_title)s to your list \"%(list_name)s\"" -msgstr "aggiunto %(book_title)s alla tua lista \"%(list_name)s\"" +msgid "%(related_user)s and %(second_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:31 +#: bookwyrm/templates/notifications/items/accept.html:36 #, python-format -msgid "suggested adding %(book_title)s to your list \"%(list_name)s\"" -msgstr "suggerimento aggiunto %(book_title)s alla tua lista \"%(list_name)s\"" +msgid "%(related_user)s and %(other_user_display_count)s others accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:19 +#: bookwyrm/templates/notifications/items/add.html:33 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "ha potenziato la tua recensione di %(book_title)s" +msgid "%(related_user)s added %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:25 +#: bookwyrm/templates/notifications/items/add.html:39 #, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "ha potenziato il tuo commento su%(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:31 +#: bookwyrm/templates/notifications/items/add.html:47 #, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "ha potenziato la tua citazione da %(book_title)s" +msgid "%(related_user)s added %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:37 +#: bookwyrm/templates/notifications/items/add.html:54 #, python-format -msgid "boosted your status" -msgstr "ha potenziato il tuo stato" +msgid "%(related_user)s suggested adding %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:19 +#: bookwyrm/templates/notifications/items/add.html:66 #, python-format -msgid "liked your review of %(book_title)s" -msgstr "ha apprezzato la tua recensione di %(book_title)s" +msgid "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:25 +#: bookwyrm/templates/notifications/items/add.html:82 #, python-format -msgid "liked your comment on %(book_title)s" -msgstr "ha apprezzato il tuo commento su %(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:31 +#: bookwyrm/templates/notifications/items/boost.html:21 #, python-format -msgid "liked your quote from %(book_title)s" -msgstr "ha apprezzato la tua citazione da %(book_title)s" +msgid "%(related_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:37 +#: bookwyrm/templates/notifications/items/boost.html:27 #, python-format -msgid "liked your status" -msgstr "ha messo \"mi piace\" al tuo stato" +msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow.html:15 -msgid "followed you" -msgstr "ha iniziato a seguirti" +#: bookwyrm/templates/notifications/items/boost.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow_request.html:11 -msgid "sent you a follow request" -msgstr "ha richiesto di seguirti" +#: bookwyrm/templates/notifications/items/boost.html:44 +#, python-format +msgid "%(related_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:67 +#, python-format +msgid "%(related_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:90 +#, python-format +msgid "%(related_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:21 +#, python-format +msgid "%(related_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:27 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:44 +#, python-format +msgid "%(related_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:67 +#, python-format +msgid "%(related_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:90 +#, python-format +msgid "%(related_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:16 +#, python-format +msgid "%(related_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:20 +#, python-format +msgid "%(related_user)s and %(second_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:25 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow_request.html:15 +#, python-format +msgid "%(related_user)s sent you a follow request" +msgstr "" #: bookwyrm/templates/notifications/items/import.html:14 #, python-format msgid "Your import completed." msgstr "La tua importazione è stata completata." -#: bookwyrm/templates/notifications/items/invite.html:15 +#: bookwyrm/templates/notifications/items/invite.html:16 #, python-format -msgid "invited you to join the group \"%(group_name)s\"" -msgstr "ti ha invitato a partecipare al gruppo \"%(group_name)s\"" +msgid "%(related_user)s invited you to join the group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/join.html:16 #, python-format msgid "has joined your group \"%(group_name)s\"" msgstr "è entrato nel tuo gruppo \"%(group_name)s\"" -#: bookwyrm/templates/notifications/items/leave.html:16 +#: bookwyrm/templates/notifications/items/leave.html:18 #, python-format -msgid "has left your group \"%(group_name)s\"" -msgstr "ha abbandonato il tuo gruppo \"%(group_name)s\"" +msgid "%(related_user)s has left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:26 +#, python-format +msgid "%(related_user)s and %(second_user)s have left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:20 #, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "ti ha menzionato in una recensione di %(book_title)s" +msgid "%(related_user)s mentioned you in a review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:26 #, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "ti ha menzionato in un commento su %(book_title)s" +msgid "%(related_user)s mentioned you in a comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:32 #, python-format -msgid "mentioned you in a quote from %(book_title)s" -msgstr "ti ha menzionato in una citazione da %(book_title)s" +msgid "%(related_user)s mentioned you in a quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:38 #, python-format -msgid "mentioned you in a status" -msgstr "ti ha menzionato in uno stato " +msgid "%(related_user)s mentioned you in a status" +msgstr "" #: bookwyrm/templates/notifications/items/remove.html:17 #, python-format @@ -2694,28 +2846,30 @@ msgstr "Sei stato rimosso dal gruppo \"%(group_name)s #: bookwyrm/templates/notifications/items/reply.html:21 #, python-format -msgid "replied to your review of %(book_title)s" -msgstr "ha risposto alla tua recensione di %(book_title)s" +msgid "%(related_user)s replied to your review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:27 #, python-format -msgid "replied to your comment on %(book_title)s" -msgstr "ha risposto al tuo commento su %(book_title)s" +msgid "%(related_user)s replied to your comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:33 #, python-format -msgid "replied to your quote from %(book_title)s" -msgstr "ha risposto alla tua citazione da %(book_title)s" +msgid "%(related_user)s replied to your quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:39 #, python-format -msgid "replied to your status" -msgstr "ha risposto al tuo stato" +msgid "%(related_user)s replied to your status" +msgstr "" #: bookwyrm/templates/notifications/items/report.html:15 #, python-format -msgid "A new report needs moderation." -msgstr "Un nuovo report necessita di moderazione." +msgid "A new report needs moderation" +msgid_plural "%(display_count)s new reports need moderation" +msgstr[0] "" +msgstr[1] "" #: bookwyrm/templates/notifications/items/update.html:16 #, python-format @@ -3199,13 +3353,13 @@ msgstr "Falso" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:105 msgid "Start date:" msgstr "Data d'inizio:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "End date:" msgstr "Data di fine:" @@ -3365,7 +3519,7 @@ msgid "Dashboard" msgstr "Dashboard" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:134 msgid "Total users" msgstr "Totale utenti" @@ -3385,55 +3539,64 @@ msgstr "Lavori" #: bookwyrm/templates/settings/dashboard/dashboard.html:43 #, python-format +msgid "Your outgoing email address, %(email_sender)s, may be misconfigured." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:46 +msgid "Check the EMAIL_SENDER_NAME and EMAIL_SENDER_DOMAIN in your .env." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#, python-format msgid "%(display_count)s open report" msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s report aperto" msgstr[1] "%(display_count)s reports aperti" -#: bookwyrm/templates/settings/dashboard/dashboard.html:55 +#: bookwyrm/templates/settings/dashboard/dashboard.html:66 #, 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:67 +#: bookwyrm/templates/settings/dashboard/dashboard.html:78 #, 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:79 +#: bookwyrm/templates/settings/dashboard/dashboard.html:90 #, python-format msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." msgstr "È disponibile un aggiornamento! Stai eseguendo v%(current)s e l'ultima versione è %(available)s." -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Instance Activity" msgstr "Attività di Istanza" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "Interval:" msgstr "Intervallo:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:110 +#: bookwyrm/templates/settings/dashboard/dashboard.html:121 msgid "Days" msgstr "Giorni" -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:122 msgid "Weeks" msgstr "Settimane" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:140 msgid "User signup activity" msgstr "Attività di registrazione dell'utente" -#: bookwyrm/templates/settings/dashboard/dashboard.html:135 +#: bookwyrm/templates/settings/dashboard/dashboard.html:146 msgid "Status activity" msgstr "Attività di stato" -#: bookwyrm/templates/settings/dashboard/dashboard.html:141 +#: bookwyrm/templates/settings/dashboard/dashboard.html:152 msgid "Works created" msgstr "Opere create" @@ -3853,7 +4016,7 @@ msgstr "Nessun dominio attualmente in attesa" msgid "No domains currently blocked" msgstr "Nessun dominio attualmente bloccato" -#: bookwyrm/templates/settings/link_domains/link_table.html:39 +#: bookwyrm/templates/settings/link_domains/link_table.html:43 msgid "No links available for this domain." msgstr "Nessun collegamento disponibile per questo libro." @@ -3881,11 +4044,11 @@ msgstr "Lo stato è stato eliminato" msgid "Reported links" msgstr "Collegamenti segnalati" -#: bookwyrm/templates/settings/reports/report.html:63 +#: bookwyrm/templates/settings/reports/report.html:65 msgid "Moderator Comments" msgstr "Commenti del moderatore" -#: bookwyrm/templates/settings/reports/report.html:84 +#: bookwyrm/templates/settings/reports/report.html:86 #: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Commenta" @@ -3895,12 +4058,17 @@ msgstr "Commenta" 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_header.html:12 +#: bookwyrm/templates/settings/reports/report_header.html:13 #, 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_header.html:18 +#: bookwyrm/templates/settings/reports/report_header.html:17 +#, python-format +msgid "Report #%(report_id)s: Link domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_header.html:24 #, python-format msgid "Report #%(report_id)s: User @%(username)s" msgstr "Report #%(report_id)s: %(username)s" @@ -4163,11 +4331,15 @@ msgid "Active" msgstr "Attivo" #: bookwyrm/templates/settings/users/user_admin.html:79 +msgid "Deleted" +msgstr "" + +#: bookwyrm/templates/settings/users/user_admin.html:85 #: bookwyrm/templates/settings/users/user_info.html:32 msgid "Inactive" msgstr "Inattivo" -#: bookwyrm/templates/settings/users/user_admin.html:88 +#: bookwyrm/templates/settings/users/user_admin.html:94 #: bookwyrm/templates/settings/users/user_info.html:127 msgid "Not set" msgstr "Non impostato" @@ -5172,15 +5344,6 @@ msgstr "Non è un file di csv valido" msgid "Username or password are incorrect" msgstr "Nome utente o password errati" -#: bookwyrm/views/landing/password.py:32 -msgid "No user with that email address was found." -msgstr "Non è stato trovato nessun utente con questo indirizzo email." - -#: bookwyrm/views/landing/password.py:43 -#, python-brace-format -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:34 #, python-brace-format msgid "Status updates from {obj.display_name}" diff --git a/locale/lt_LT/LC_MESSAGES/django.mo b/locale/lt_LT/LC_MESSAGES/django.mo index 91350fa48..a3fa30e43 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 0f33bc60c..5efb3c922 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-05-31 23:50+0000\n" -"PO-Revision-Date: 2022-06-01 00:55\n" +"POT-Creation-Date: 2022-07-07 17:47+0000\n" +"PO-Revision-Date: 2022-07-07 18:12\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Lithuanian\n" "Language: lt\n" @@ -121,7 +121,7 @@ msgstr "Įspėjimas" msgid "Danger" msgstr "Pavojus" -#: bookwyrm/models/antispam.py:106 bookwyrm/models/antispam.py:140 +#: bookwyrm/models/antispam.py:101 bookwyrm/models/antispam.py:135 msgid "Automatically generated report" msgstr "Automatiškai sugeneruota ataskaita" @@ -748,7 +748,7 @@ msgstr "ISNI:" #: bookwyrm/templates/book/book.html:202 #: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 -#: bookwyrm/templates/book/file_links/edit_links.html:82 +#: bookwyrm/templates/book/file_links/edit_links.html:86 #: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 @@ -1230,16 +1230,21 @@ msgstr "Būsena" msgid "Actions" msgstr "Veiksmai" -#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/edit_links.html:48 +#: bookwyrm/templates/settings/link_domains/link_table.html:21 +msgid "Unknown user" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:57 #: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Pranešti apie brukalą" -#: bookwyrm/templates/book/file_links/edit_links.html:97 +#: bookwyrm/templates/book/file_links/edit_links.html:101 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/edit_links.html:112 #: bookwyrm/templates/book/file_links/links.html:18 msgid "Add link to file" msgstr "Pridėti nuorodą į failą" @@ -1336,7 +1341,7 @@ msgstr "Patvirtinimo kodas:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:81 -#: bookwyrm/templates/settings/dashboard/dashboard.html:116 +#: bookwyrm/templates/settings/dashboard/dashboard.html:127 #: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Siųsti" @@ -1352,7 +1357,7 @@ msgstr "Dar kartą išsiųsti patvirtinimo nuorodą" #: bookwyrm/templates/confirm_email/resend_modal.html:15 #: bookwyrm/templates/landing/layout.html:68 -#: bookwyrm/templates/landing/password_reset_request.html:18 +#: bookwyrm/templates/landing/password_reset_request.html:24 #: bookwyrm/templates/preferences/edit_user.html:53 #: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" @@ -1583,14 +1588,20 @@ msgstr "Esate pakviesti prisijungti prie %(site_name)s! Spauskite nuorodą žemi msgid "Learn more about %(site_name)s:" msgstr "Sužinoti daugiau apie %(site_name)s:" -#: bookwyrm/templates/email/moderation_report/html_content.html:6 -#: bookwyrm/templates/email/moderation_report/text_content.html:5 +#: bookwyrm/templates/email/moderation_report/html_content.html:8 +#: bookwyrm/templates/email/moderation_report/text_content.html:6 #, python-format -msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " -msgstr "@%(reporter)s pranešė apie netinkamą @%(reportee)s veiklą. " +msgid "@%(reporter)s has flagged a link domain for moderation." +msgstr "" -#: bookwyrm/templates/email/moderation_report/html_content.html:9 -#: bookwyrm/templates/email/moderation_report/text_content.html:7 +#: bookwyrm/templates/email/moderation_report/html_content.html:14 +#: bookwyrm/templates/email/moderation_report/text_content.html:10 +#, python-format +msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation." +msgstr "" + +#: bookwyrm/templates/email/moderation_report/html_content.html:21 +#: bookwyrm/templates/email/moderation_report/text_content.html:15 msgid "View report" msgstr "Peržiūrėti raportą" @@ -2292,10 +2303,15 @@ msgid "Confirm password:" msgstr "Patvirtinti slaptažodį:" #: bookwyrm/templates/landing/password_reset_request.html:14 +#, python-format +msgid "A password reset link will be sent to %(email)s if there is an account using that email address." +msgstr "" + +#: bookwyrm/templates/landing/password_reset_request.html:20 msgid "A link to reset your password will be sent to your email address" msgstr "Jūsų el. pašto adresu bus išsiųsta nuoroda pakeisti slaptažodį" -#: bookwyrm/templates/landing/password_reset_request.html:28 +#: bookwyrm/templates/landing/password_reset_request.html:34 msgid "Reset password" msgstr "Atstatyti slaptažodį" @@ -2603,108 +2619,248 @@ msgstr "Visi sąrašai" msgid "Saved Lists" msgstr "Išsaugoti sąrašai" -#: bookwyrm/templates/notifications/items/accept.html:16 +#: bookwyrm/templates/notifications/items/accept.html:18 #, python-format -msgid "accepted your invitation to join group \"%(group_name)s\"" -msgstr "priėmė jūsų kvietimą prisijungti prie grupės „%(group_name)s“" +msgid "%(related_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:24 +#: bookwyrm/templates/notifications/items/accept.html:26 #, python-format -msgid "added %(book_title)s to your list \"%(list_name)s\"" -msgstr "į jūsų sąrašą „%(list_name)s“ pridėta %(book_title)s" +msgid "%(related_user)s and %(second_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:31 +#: bookwyrm/templates/notifications/items/accept.html:36 #, python-format -msgid "suggested adding %(book_title)s to your list \"%(list_name)s\"" -msgstr "į sąrašą „%(list_name)s\" patariama pridėti %(book_title)s" +msgid "%(related_user)s and %(other_user_display_count)s others accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:19 +#: bookwyrm/templates/notifications/items/add.html:33 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "populiarino jūsų atsiliepimą apie %(book_title)s" +msgid "%(related_user)s added %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:25 +#: bookwyrm/templates/notifications/items/add.html:39 #, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "populiarino jūsų komentarą apie %(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:31 +#: bookwyrm/templates/notifications/items/add.html:47 #, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "populiarino jūsų citatą iš %(book_title)s" +msgid "%(related_user)s added %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:37 +#: bookwyrm/templates/notifications/items/add.html:54 #, python-format -msgid "boosted your status" -msgstr "populiarino jūsų būseną" +msgid "%(related_user)s suggested adding %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:19 +#: bookwyrm/templates/notifications/items/add.html:66 #, python-format -msgid "liked your review of %(book_title)s" -msgstr "patiko jūsų atsiliepimas apie %(book_title)s" +msgid "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: bookwyrm/templates/notifications/items/fav.html:25 +#: bookwyrm/templates/notifications/items/add.html:82 #, python-format -msgid "liked your comment on %(book_title)s" -msgstr "patiko jūsų komentaras apie %(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: bookwyrm/templates/notifications/items/fav.html:31 +#: bookwyrm/templates/notifications/items/boost.html:21 #, python-format -msgid "liked your quote from %(book_title)s" -msgstr "patiko jūsų citata iš %(book_title)s" +msgid "%(related_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:37 +#: bookwyrm/templates/notifications/items/boost.html:27 #, python-format -msgid "liked your status" -msgstr "patiko jūsų būsena" +msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow.html:15 -msgid "followed you" -msgstr "pradėjo jus sekti" +#: bookwyrm/templates/notifications/items/boost.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow_request.html:11 -msgid "sent you a follow request" -msgstr "nori jus sekti" +#: bookwyrm/templates/notifications/items/boost.html:44 +#, python-format +msgid "%(related_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:67 +#, python-format +msgid "%(related_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:90 +#, python-format +msgid "%(related_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:21 +#, python-format +msgid "%(related_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:27 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:44 +#, python-format +msgid "%(related_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:67 +#, python-format +msgid "%(related_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:90 +#, python-format +msgid "%(related_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:16 +#, python-format +msgid "%(related_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:20 +#, python-format +msgid "%(related_user)s and %(second_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:25 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow_request.html:15 +#, python-format +msgid "%(related_user)s sent you a follow request" +msgstr "" #: bookwyrm/templates/notifications/items/import.html:14 #, python-format msgid "Your import completed." msgstr "Jūsų importas baigtas." -#: bookwyrm/templates/notifications/items/invite.html:15 +#: bookwyrm/templates/notifications/items/invite.html:16 #, python-format -msgid "invited you to join the group \"%(group_name)s\"" -msgstr "jus pakvietė prisijungti prie grupės „%(group_name)s“" +msgid "%(related_user)s invited you to join the group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/join.html:16 #, python-format msgid "has joined your group \"%(group_name)s\"" msgstr "prisijungė prie jūsų grupės „%(group_name)s“" -#: bookwyrm/templates/notifications/items/leave.html:16 +#: bookwyrm/templates/notifications/items/leave.html:18 #, python-format -msgid "has left your group \"%(group_name)s\"" -msgstr "paliko jūsų grupę „%(group_name)s“" +msgid "%(related_user)s has left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:26 +#, python-format +msgid "%(related_user)s and %(second_user)s have left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:20 #, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "paminėjo jus atsiliepime apie %(book_title)s" +msgid "%(related_user)s mentioned you in a review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:26 #, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "paminėjo jus komentare apie %(book_title)s" +msgid "%(related_user)s mentioned you in a comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:32 #, python-format -msgid "mentioned you in a quote from %(book_title)s" -msgstr "paminėjo jus citatoje iš %(book_title)s" +msgid "%(related_user)s mentioned you in a quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:38 #, python-format -msgid "mentioned you in a status" -msgstr "paminėjo jus būsenoje" +msgid "%(related_user)s mentioned you in a status" +msgstr "" #: bookwyrm/templates/notifications/items/remove.html:17 #, python-format @@ -2718,28 +2874,32 @@ msgstr "Buvote pašalintas iš grupės „%(group_nam #: bookwyrm/templates/notifications/items/reply.html:21 #, python-format -msgid "replied to your review of %(book_title)s" -msgstr "atsakė į jūsų atsiliepimą apie %(book_title)s" +msgid "%(related_user)s replied to your review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:27 #, python-format -msgid "replied to your comment on %(book_title)s" -msgstr "atsakė į jūsų komentarą apie %(book_title)s" +msgid "%(related_user)s replied to your comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:33 #, python-format -msgid "replied to your quote from %(book_title)s" -msgstr "atsakė į jūsų citatą iš %(book_title)s" +msgid "%(related_user)s replied to your quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:39 #, python-format -msgid "replied to your status" -msgstr "atsakė į jūsų būseną" +msgid "%(related_user)s replied to your status" +msgstr "" #: bookwyrm/templates/notifications/items/report.html:15 #, python-format -msgid "A new report needs moderation." -msgstr "Reikia moderuoti pranešimą." +msgid "A new report needs moderation" +msgid_plural "%(display_count)s new reports need moderation" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" #: bookwyrm/templates/notifications/items/update.html:16 #, python-format @@ -3223,13 +3383,13 @@ msgstr "Netiesa" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:105 msgid "Start date:" msgstr "Pradžios data:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "End date:" msgstr "Pabaigos data:" @@ -3389,7 +3549,7 @@ msgid "Dashboard" msgstr "Suvestinė" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:134 msgid "Total users" msgstr "Iš viso naudotojų" @@ -3409,6 +3569,15 @@ msgstr "Darbai" #: bookwyrm/templates/settings/dashboard/dashboard.html:43 #, python-format +msgid "Your outgoing email address, %(email_sender)s, may be misconfigured." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:46 +msgid "Check the EMAIL_SENDER_NAME and EMAIL_SENDER_DOMAIN in your .env." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#, python-format msgid "%(display_count)s open report" msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s atvira ataskaita" @@ -3416,7 +3585,7 @@ msgstr[1] "%(display_count)s atviros ataskaitos" msgstr[2] "%(display_count)s atviros ataskaitos" msgstr[3] "%(display_count)s atvirų ataskaitų" -#: bookwyrm/templates/settings/dashboard/dashboard.html:55 +#: bookwyrm/templates/settings/dashboard/dashboard.html:66 #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" @@ -3425,7 +3594,7 @@ 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:67 +#: bookwyrm/templates/settings/dashboard/dashboard.html:78 #, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" @@ -3434,36 +3603,36 @@ 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:79 +#: bookwyrm/templates/settings/dashboard/dashboard.html:90 #, python-format msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." msgstr "Jau yra naujinys. Jūsų versija – %(current)s, o naujausia –%(available)s." -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Instance Activity" msgstr "Serverio statistika" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "Interval:" msgstr "Intervalas:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:110 +#: bookwyrm/templates/settings/dashboard/dashboard.html:121 msgid "Days" msgstr "Dienos" -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:122 msgid "Weeks" msgstr "Savaitės" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:140 msgid "User signup activity" msgstr "Naudotojo prisijungimo veikla" -#: bookwyrm/templates/settings/dashboard/dashboard.html:135 +#: bookwyrm/templates/settings/dashboard/dashboard.html:146 msgid "Status activity" msgstr "Būsenos" -#: bookwyrm/templates/settings/dashboard/dashboard.html:141 +#: bookwyrm/templates/settings/dashboard/dashboard.html:152 msgid "Works created" msgstr "Darbai sukurti" @@ -3885,7 +4054,7 @@ msgstr "Nėra domenų, laukiančių patvirtinimo" msgid "No domains currently blocked" msgstr "Šiuo metu užblokuotų domenų nėra" -#: bookwyrm/templates/settings/link_domains/link_table.html:39 +#: bookwyrm/templates/settings/link_domains/link_table.html:43 msgid "No links available for this domain." msgstr "Šiam domenui nuorodų nėra." @@ -3913,11 +4082,11 @@ msgstr "Būsena ištrinta" msgid "Reported links" msgstr "Raportuotos nuorodos" -#: bookwyrm/templates/settings/reports/report.html:63 +#: bookwyrm/templates/settings/reports/report.html:65 msgid "Moderator Comments" msgstr "Moderatoriaus komentarai" -#: bookwyrm/templates/settings/reports/report.html:84 +#: bookwyrm/templates/settings/reports/report.html:86 #: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Komentuoti" @@ -3927,12 +4096,17 @@ msgstr "Komentuoti" msgid "Report #%(report_id)s: Status posted by @%(username)s" msgstr "Pranešimas #%(report_id)s: publikavo @%(username)s" -#: bookwyrm/templates/settings/reports/report_header.html:12 +#: bookwyrm/templates/settings/reports/report_header.html:13 #, 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_header.html:18 +#: bookwyrm/templates/settings/reports/report_header.html:17 +#, python-format +msgid "Report #%(report_id)s: Link domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_header.html:24 #, python-format msgid "Report #%(report_id)s: User @%(username)s" msgstr "Pranešimas #%(report_id)s: naudotojas @%(username)s" @@ -4195,11 +4369,15 @@ msgid "Active" msgstr "Aktyvus" #: bookwyrm/templates/settings/users/user_admin.html:79 +msgid "Deleted" +msgstr "" + +#: bookwyrm/templates/settings/users/user_admin.html:85 #: bookwyrm/templates/settings/users/user_info.html:32 msgid "Inactive" msgstr "Neaktyvus" -#: bookwyrm/templates/settings/users/user_admin.html:88 +#: bookwyrm/templates/settings/users/user_admin.html:94 #: bookwyrm/templates/settings/users/user_info.html:127 msgid "Not set" msgstr "Nenustatytas" @@ -5222,15 +5400,6 @@ msgstr "Netinkamas csv failas" msgid "Username or password are incorrect" msgstr "Naudotojo vardas arba slaptažodis neteisingi" -#: bookwyrm/views/landing/password.py:32 -msgid "No user with that email address was found." -msgstr "Šiuo el. pašto adresu nerastas nei vienas narys." - -#: bookwyrm/views/landing/password.py:43 -#, python-brace-format -msgid "A password reset link was sent to {email}" -msgstr "Slaptažodžio atstatymo nuoroda išsiųsta į {email}" - #: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" diff --git a/locale/no_NO/LC_MESSAGES/django.mo b/locale/no_NO/LC_MESSAGES/django.mo index b7357cd25..e971057ad 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 4434f489b..8c05461f1 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-05-31 23:50+0000\n" -"PO-Revision-Date: 2022-06-01 00:55\n" +"POT-Creation-Date: 2022-07-07 17:47+0000\n" +"PO-Revision-Date: 2022-07-07 18:12\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Norwegian\n" "Language: no\n" @@ -121,7 +121,7 @@ msgstr "" msgid "Danger" msgstr "" -#: bookwyrm/models/antispam.py:106 bookwyrm/models/antispam.py:140 +#: bookwyrm/models/antispam.py:101 bookwyrm/models/antispam.py:135 msgid "Automatically generated report" msgstr "" @@ -740,7 +740,7 @@ msgstr "ISNI:" #: bookwyrm/templates/book/book.html:202 #: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 -#: bookwyrm/templates/book/file_links/edit_links.html:82 +#: bookwyrm/templates/book/file_links/edit_links.html:86 #: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 @@ -1218,16 +1218,21 @@ msgstr "Status" msgid "Actions" msgstr "Handlinger" -#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/edit_links.html:48 +#: bookwyrm/templates/settings/link_domains/link_table.html:21 +msgid "Unknown user" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:57 #: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Rapporter spam" -#: bookwyrm/templates/book/file_links/edit_links.html:97 +#: bookwyrm/templates/book/file_links/edit_links.html:101 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/edit_links.html:112 #: bookwyrm/templates/book/file_links/links.html:18 msgid "Add link to file" msgstr "Legg til lenke til fil" @@ -1324,7 +1329,7 @@ msgstr "Bekreftelseskode:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:81 -#: bookwyrm/templates/settings/dashboard/dashboard.html:116 +#: bookwyrm/templates/settings/dashboard/dashboard.html:127 #: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Send inn" @@ -1340,7 +1345,7 @@ msgstr "Send e-post på nytt" #: bookwyrm/templates/confirm_email/resend_modal.html:15 #: bookwyrm/templates/landing/layout.html:68 -#: bookwyrm/templates/landing/password_reset_request.html:18 +#: bookwyrm/templates/landing/password_reset_request.html:24 #: bookwyrm/templates/preferences/edit_user.html:53 #: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" @@ -1567,14 +1572,20 @@ msgstr "Du har blitt invitert til å delta i %(site_name)s! Klikk på lenken ned msgid "Learn more about %(site_name)s:" msgstr "Lær mer om %(site_name)s:" -#: bookwyrm/templates/email/moderation_report/html_content.html:6 -#: bookwyrm/templates/email/moderation_report/text_content.html:5 +#: bookwyrm/templates/email/moderation_report/html_content.html:8 +#: bookwyrm/templates/email/moderation_report/text_content.html:6 #, python-format -msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " -msgstr "@%(reporter)s har flagget @%(reportee)s sin adferd for moderering. " +msgid "@%(reporter)s has flagged a link domain for moderation." +msgstr "" -#: bookwyrm/templates/email/moderation_report/html_content.html:9 -#: bookwyrm/templates/email/moderation_report/text_content.html:7 +#: bookwyrm/templates/email/moderation_report/html_content.html:14 +#: bookwyrm/templates/email/moderation_report/text_content.html:10 +#, python-format +msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation." +msgstr "" + +#: bookwyrm/templates/email/moderation_report/html_content.html:21 +#: bookwyrm/templates/email/moderation_report/text_content.html:15 msgid "View report" msgstr "Vis rapport" @@ -2268,10 +2279,15 @@ msgid "Confirm password:" msgstr "Gjenta passordet:" #: bookwyrm/templates/landing/password_reset_request.html:14 +#, python-format +msgid "A password reset link will be sent to %(email)s if there is an account using that email address." +msgstr "" + +#: bookwyrm/templates/landing/password_reset_request.html:20 msgid "A link to reset your password will be sent to your email address" msgstr "Lenke som lar deg lage nytt passord blir sendt til e-postadressen din" -#: bookwyrm/templates/landing/password_reset_request.html:28 +#: bookwyrm/templates/landing/password_reset_request.html:34 msgid "Reset password" msgstr "Nullstill passordet" @@ -2579,108 +2595,244 @@ msgstr "Alle lister" msgid "Saved Lists" msgstr "Lagrede lister" -#: bookwyrm/templates/notifications/items/accept.html:16 +#: bookwyrm/templates/notifications/items/accept.html:18 #, python-format -msgid "accepted your invitation to join group \"%(group_name)s\"" -msgstr "aksepterte invitasjonen din om å bli med i gruppa \"%(group_name)s\"" +msgid "%(related_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:24 +#: bookwyrm/templates/notifications/items/accept.html:26 #, python-format -msgid "added %(book_title)s to your list \"%(list_name)s\"" -msgstr "la til %(book_title)s i lista di \"%(list_name)s\"" +msgid "%(related_user)s and %(second_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:31 +#: bookwyrm/templates/notifications/items/accept.html:36 #, python-format -msgid "suggested adding %(book_title)s to your list \"%(list_name)s\"" -msgstr "foreslo å legge til %(book_title)s i lista di \"%(list_name)s\"" +msgid "%(related_user)s and %(other_user_display_count)s others accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:19 +#: bookwyrm/templates/notifications/items/add.html:33 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "støttet anmeldelsen din av %(book_title)s" +msgid "%(related_user)s added %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:25 +#: bookwyrm/templates/notifications/items/add.html:39 #, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "støttet kommentaren din til %(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:31 +#: bookwyrm/templates/notifications/items/add.html:47 #, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "støttet sitatet ditt fra %(book_title)s" +msgid "%(related_user)s added %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:37 +#: bookwyrm/templates/notifications/items/add.html:54 #, python-format -msgid "boosted your status" -msgstr "støttet -statusen din" +msgid "%(related_user)s suggested adding %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:19 +#: bookwyrm/templates/notifications/items/add.html:66 #, python-format -msgid "liked your review of %(book_title)s" -msgstr "likte anmeldelsen din av %(book_title)s" +msgid "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:25 +#: bookwyrm/templates/notifications/items/add.html:82 #, python-format -msgid "liked your comment on %(book_title)s" -msgstr "likte kommentaren din om %(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:31 +#: bookwyrm/templates/notifications/items/boost.html:21 #, python-format -msgid "liked your quote from %(book_title)s" -msgstr "likte sitatet ditt fra %(book_title)s" +msgid "%(related_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:37 +#: bookwyrm/templates/notifications/items/boost.html:27 #, python-format -msgid "liked your status" -msgstr "likte statusen din" +msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow.html:15 -msgid "followed you" -msgstr "følger deg" +#: bookwyrm/templates/notifications/items/boost.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow_request.html:11 -msgid "sent you a follow request" -msgstr "har sendt deg en følgeforespørsel" +#: bookwyrm/templates/notifications/items/boost.html:44 +#, python-format +msgid "%(related_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:67 +#, python-format +msgid "%(related_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:90 +#, python-format +msgid "%(related_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:21 +#, python-format +msgid "%(related_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:27 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:44 +#, python-format +msgid "%(related_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:67 +#, python-format +msgid "%(related_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:90 +#, python-format +msgid "%(related_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:16 +#, python-format +msgid "%(related_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:20 +#, python-format +msgid "%(related_user)s and %(second_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:25 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow_request.html:15 +#, python-format +msgid "%(related_user)s sent you a follow request" +msgstr "" #: bookwyrm/templates/notifications/items/import.html:14 #, python-format msgid "Your import completed." msgstr "Importen din er fullført." -#: bookwyrm/templates/notifications/items/invite.html:15 +#: bookwyrm/templates/notifications/items/invite.html:16 #, python-format -msgid "invited you to join the group \"%(group_name)s\"" -msgstr "inviterte deg til å bli med i gruppa \"%(group_name)s\"" +msgid "%(related_user)s invited you to join the group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/join.html:16 #, python-format msgid "has joined your group \"%(group_name)s\"" msgstr "har blitt med i gruppa di \"%(group_name)s\"" -#: bookwyrm/templates/notifications/items/leave.html:16 +#: bookwyrm/templates/notifications/items/leave.html:18 #, python-format -msgid "has left your group \"%(group_name)s\"" -msgstr "har forlatt gruppa di\"%(group_name)s\"" +msgid "%(related_user)s has left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:26 +#, python-format +msgid "%(related_user)s and %(second_user)s have left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:20 #, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "nevnte deg i en anmeldelse av %(book_title)s" +msgid "%(related_user)s mentioned you in a review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:26 #, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "nevnte deg i en kommentar til %(book_title)s" +msgid "%(related_user)s mentioned you in a comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:32 #, python-format -msgid "mentioned you in a quote from %(book_title)s" -msgstr "nevnte deg i et sitat fra %(book_title)s" +msgid "%(related_user)s mentioned you in a quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:38 #, python-format -msgid "mentioned you in a status" -msgstr "nevnte deg i en status" +msgid "%(related_user)s mentioned you in a status" +msgstr "" #: bookwyrm/templates/notifications/items/remove.html:17 #, python-format @@ -2694,28 +2846,30 @@ msgstr "Du er fjernet fra %(group_name)s -gruppa" #: bookwyrm/templates/notifications/items/reply.html:21 #, python-format -msgid "replied to your review of %(book_title)s" -msgstr "svarte på anmeldelse din av %(book_title)s" +msgid "%(related_user)s replied to your review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:27 #, python-format -msgid "replied to your comment on %(book_title)s" -msgstr "svarte på kommentaren din til %(book_title)s" +msgid "%(related_user)s replied to your comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:33 #, python-format -msgid "replied to your quote from %(book_title)s" -msgstr "svarte på sitatet ditt fra %(book_title)s" +msgid "%(related_user)s replied to your quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:39 #, python-format -msgid "replied to your status" -msgstr "svarte på statusoppdateringen din" +msgid "%(related_user)s replied to your status" +msgstr "" #: bookwyrm/templates/notifications/items/report.html:15 #, python-format -msgid "A new report needs moderation." -msgstr "En ny rapport må gjennom moderering." +msgid "A new report needs moderation" +msgid_plural "%(display_count)s new reports need moderation" +msgstr[0] "" +msgstr[1] "" #: bookwyrm/templates/notifications/items/update.html:16 #, python-format @@ -3197,13 +3351,13 @@ msgstr "Usant" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:105 msgid "Start date:" msgstr "Startdato:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "End date:" msgstr "Sluttdato:" @@ -3363,7 +3517,7 @@ msgid "Dashboard" msgstr "Kontrollpanel" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:134 msgid "Total users" msgstr "Totalt antall brukere" @@ -3383,55 +3537,64 @@ msgstr "Verker" #: bookwyrm/templates/settings/dashboard/dashboard.html:43 #, python-format +msgid "Your outgoing email address, %(email_sender)s, may be misconfigured." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:46 +msgid "Check the EMAIL_SENDER_NAME and EMAIL_SENDER_DOMAIN in your .env." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#, python-format msgid "%(display_count)s open report" msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s åpen rapport" msgstr[1] "%(display_count)s åpne rapporter" -#: bookwyrm/templates/settings/dashboard/dashboard.html:55 +#: bookwyrm/templates/settings/dashboard/dashboard.html:66 #, 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:67 +#: bookwyrm/templates/settings/dashboard/dashboard.html:78 #, 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:79 +#: bookwyrm/templates/settings/dashboard/dashboard.html:90 #, python-format msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Instance Activity" msgstr "Instansaktivitet" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "Interval:" msgstr "Intervall:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:110 +#: bookwyrm/templates/settings/dashboard/dashboard.html:121 msgid "Days" msgstr "Dager" -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:122 msgid "Weeks" msgstr "Uker" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:140 msgid "User signup activity" msgstr "Brukerregistreringsaktivitet" -#: bookwyrm/templates/settings/dashboard/dashboard.html:135 +#: bookwyrm/templates/settings/dashboard/dashboard.html:146 msgid "Status activity" msgstr "Statusaktivitet" -#: bookwyrm/templates/settings/dashboard/dashboard.html:141 +#: bookwyrm/templates/settings/dashboard/dashboard.html:152 msgid "Works created" msgstr "Verker laget" @@ -3851,7 +4014,7 @@ msgstr "Ingen domener venter for tiden på godkjenning" msgid "No domains currently blocked" msgstr "Ingen domener er for øyeblikket blokkert" -#: bookwyrm/templates/settings/link_domains/link_table.html:39 +#: bookwyrm/templates/settings/link_domains/link_table.html:43 msgid "No links available for this domain." msgstr "Ingen lenker tilgjengelig til dette domenet." @@ -3879,11 +4042,11 @@ msgstr "Status er slettet" msgid "Reported links" msgstr "Rapporterte lenker" -#: bookwyrm/templates/settings/reports/report.html:63 +#: bookwyrm/templates/settings/reports/report.html:65 msgid "Moderator Comments" msgstr "Moderatorkommentarer" -#: bookwyrm/templates/settings/reports/report.html:84 +#: bookwyrm/templates/settings/reports/report.html:86 #: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Kommentar" @@ -3893,12 +4056,17 @@ msgstr "Kommentar" 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_header.html:12 +#: bookwyrm/templates/settings/reports/report_header.html:13 #, 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_header.html:18 +#: bookwyrm/templates/settings/reports/report_header.html:17 +#, python-format +msgid "Report #%(report_id)s: Link domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_header.html:24 #, python-format msgid "Report #%(report_id)s: User @%(username)s" msgstr "Rapportér #%(report_id)s: bruker @%(username)s" @@ -4161,11 +4329,15 @@ msgid "Active" msgstr "Aktiv" #: bookwyrm/templates/settings/users/user_admin.html:79 +msgid "Deleted" +msgstr "" + +#: bookwyrm/templates/settings/users/user_admin.html:85 #: bookwyrm/templates/settings/users/user_info.html:32 msgid "Inactive" msgstr "Inaktiv" -#: bookwyrm/templates/settings/users/user_admin.html:88 +#: bookwyrm/templates/settings/users/user_admin.html:94 #: bookwyrm/templates/settings/users/user_info.html:127 msgid "Not set" msgstr "Ikke angitt" @@ -5170,15 +5342,6 @@ msgstr "Ikke en gyldig csv-fil" msgid "Username or password are incorrect" msgstr "Feil brukernavn eller passord" -#: bookwyrm/views/landing/password.py:32 -msgid "No user with that email address was found." -msgstr "Ingen bruker med den e-postadressen ble funnet." - -#: bookwyrm/views/landing/password.py:43 -#, python-brace-format -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:34 #, python-brace-format msgid "Status updates from {obj.display_name}" diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index 917f0cd45..48000c2f2 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 aa0534052..10e311104 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-05-31 23:50+0000\n" -"PO-Revision-Date: 2022-06-01 00:55\n" +"POT-Creation-Date: 2022-07-07 17:47+0000\n" +"PO-Revision-Date: 2022-07-07 18:12\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt\n" @@ -121,7 +121,7 @@ msgstr "Atenção" msgid "Danger" msgstr "Perigo" -#: bookwyrm/models/antispam.py:106 bookwyrm/models/antispam.py:140 +#: bookwyrm/models/antispam.py:101 bookwyrm/models/antispam.py:135 msgid "Automatically generated report" msgstr "Relatório gerado automaticamente" @@ -740,7 +740,7 @@ msgstr "ISNI:" #: bookwyrm/templates/book/book.html:202 #: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 -#: bookwyrm/templates/book/file_links/edit_links.html:82 +#: bookwyrm/templates/book/file_links/edit_links.html:86 #: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 @@ -1218,16 +1218,21 @@ msgstr "Publicação" msgid "Actions" msgstr "Ações" -#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/edit_links.html:48 +#: bookwyrm/templates/settings/link_domains/link_table.html:21 +msgid "Unknown user" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:57 #: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Denunciar spam" -#: bookwyrm/templates/book/file_links/edit_links.html:97 +#: bookwyrm/templates/book/file_links/edit_links.html:101 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/edit_links.html:112 #: bookwyrm/templates/book/file_links/links.html:18 msgid "Add link to file" msgstr "Adicionar link ao arquivo" @@ -1324,7 +1329,7 @@ msgstr "Código de confirmação:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:81 -#: bookwyrm/templates/settings/dashboard/dashboard.html:116 +#: bookwyrm/templates/settings/dashboard/dashboard.html:127 #: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Enviar" @@ -1340,7 +1345,7 @@ msgstr "Reenviar link de confirmação" #: bookwyrm/templates/confirm_email/resend_modal.html:15 #: bookwyrm/templates/landing/layout.html:68 -#: bookwyrm/templates/landing/password_reset_request.html:18 +#: bookwyrm/templates/landing/password_reset_request.html:24 #: bookwyrm/templates/preferences/edit_user.html:53 #: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" @@ -1567,14 +1572,20 @@ msgstr "Você recebeu um convite para juntar-se a %(site_name)s! Clique no link msgid "Learn more about %(site_name)s:" msgstr "Saiba mais sobre %(site_name)s:" -#: bookwyrm/templates/email/moderation_report/html_content.html:6 -#: bookwyrm/templates/email/moderation_report/text_content.html:5 +#: bookwyrm/templates/email/moderation_report/html_content.html:8 +#: bookwyrm/templates/email/moderation_report/text_content.html:6 #, python-format -msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " -msgstr "@%(reporter)s sinalizou o comportamento de @%(reportee)s para moderação. " +msgid "@%(reporter)s has flagged a link domain for moderation." +msgstr "" -#: bookwyrm/templates/email/moderation_report/html_content.html:9 -#: bookwyrm/templates/email/moderation_report/text_content.html:7 +#: bookwyrm/templates/email/moderation_report/html_content.html:14 +#: bookwyrm/templates/email/moderation_report/text_content.html:10 +#, python-format +msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation." +msgstr "" + +#: bookwyrm/templates/email/moderation_report/html_content.html:21 +#: bookwyrm/templates/email/moderation_report/text_content.html:15 msgid "View report" msgstr "Ver denúncia" @@ -2268,10 +2279,15 @@ msgid "Confirm password:" msgstr "Confirmar senha:" #: bookwyrm/templates/landing/password_reset_request.html:14 +#, python-format +msgid "A password reset link will be sent to %(email)s if there is an account using that email address." +msgstr "" + +#: bookwyrm/templates/landing/password_reset_request.html:20 msgid "A link to reset your password will be sent to your email address" msgstr "Um link para redefinir sua senha será enviada para seu e-mail" -#: bookwyrm/templates/landing/password_reset_request.html:28 +#: bookwyrm/templates/landing/password_reset_request.html:34 msgid "Reset password" msgstr "Redefinir senha" @@ -2579,108 +2595,244 @@ msgstr "Todas as listas" msgid "Saved Lists" msgstr "Listas salvas" -#: bookwyrm/templates/notifications/items/accept.html:16 +#: bookwyrm/templates/notifications/items/accept.html:18 #, python-format -msgid "accepted your invitation to join group \"%(group_name)s\"" -msgstr "aceitou seu convite para participar do grupo \"%(group_name)s\"" +msgid "%(related_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:24 +#: bookwyrm/templates/notifications/items/accept.html:26 #, python-format -msgid "added %(book_title)s to your list \"%(list_name)s\"" -msgstr "adicionou %(book_title)s à sua lista \"%(list_name)s\"" +msgid "%(related_user)s and %(second_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:31 +#: bookwyrm/templates/notifications/items/accept.html:36 #, python-format -msgid "suggested adding %(book_title)s to your list \"%(list_name)s\"" -msgstr "sugeriu adicionar %(book_title)s à sua lista \"%(list_name)s\"" +msgid "%(related_user)s and %(other_user_display_count)s others accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:19 +#: bookwyrm/templates/notifications/items/add.html:33 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "compartilhou sua resenha de %(book_title)s" +msgid "%(related_user)s added %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:25 +#: bookwyrm/templates/notifications/items/add.html:39 #, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "compartilhou seu comentário sobre %(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:31 +#: bookwyrm/templates/notifications/items/add.html:47 #, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "compartilhou sua citação de %(book_title)s" +msgid "%(related_user)s added %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:37 +#: bookwyrm/templates/notifications/items/add.html:54 #, python-format -msgid "boosted your status" -msgstr "compartilhou sua publicação" +msgid "%(related_user)s suggested adding %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:19 +#: bookwyrm/templates/notifications/items/add.html:66 #, python-format -msgid "liked your review of %(book_title)s" -msgstr "curtiu sua resenha de %(book_title)s" +msgid "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:25 +#: bookwyrm/templates/notifications/items/add.html:82 #, python-format -msgid "liked your comment on %(book_title)s" -msgstr "curtiu seu comentário sobre %(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:31 +#: bookwyrm/templates/notifications/items/boost.html:21 #, python-format -msgid "liked your quote from %(book_title)s" -msgstr "curtiu sua citação de %(book_title)s" +msgid "%(related_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:37 +#: bookwyrm/templates/notifications/items/boost.html:27 #, python-format -msgid "liked your status" -msgstr "curtiu sua publicação" +msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow.html:15 -msgid "followed you" -msgstr "te seguiu" +#: bookwyrm/templates/notifications/items/boost.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow_request.html:11 -msgid "sent you a follow request" -msgstr "pediu para te seguir" +#: bookwyrm/templates/notifications/items/boost.html:44 +#, python-format +msgid "%(related_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:67 +#, python-format +msgid "%(related_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:90 +#, python-format +msgid "%(related_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:21 +#, python-format +msgid "%(related_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:27 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:44 +#, python-format +msgid "%(related_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:67 +#, python-format +msgid "%(related_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:90 +#, python-format +msgid "%(related_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:16 +#, python-format +msgid "%(related_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:20 +#, python-format +msgid "%(related_user)s and %(second_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:25 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow_request.html:15 +#, python-format +msgid "%(related_user)s sent you a follow request" +msgstr "" #: bookwyrm/templates/notifications/items/import.html:14 #, python-format msgid "Your import completed." msgstr "Sua importação foi concluída." -#: bookwyrm/templates/notifications/items/invite.html:15 +#: bookwyrm/templates/notifications/items/invite.html:16 #, python-format -msgid "invited you to join the group \"%(group_name)s\"" -msgstr "te convidou para participar do grupo \"%(group_name)s\"" +msgid "%(related_user)s invited you to join the group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/join.html:16 #, python-format msgid "has joined your group \"%(group_name)s\"" msgstr "entrou em seu grupo \"%(group_name)s\"" -#: bookwyrm/templates/notifications/items/leave.html:16 +#: bookwyrm/templates/notifications/items/leave.html:18 #, python-format -msgid "has left your group \"%(group_name)s\"" -msgstr "saiu de seu grupo \"%(group_name)s\"" +msgid "%(related_user)s has left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:26 +#, python-format +msgid "%(related_user)s and %(second_user)s have left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:20 #, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "te mencionou em uma resenha de %(book_title)s" +msgid "%(related_user)s mentioned you in a review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:26 #, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "te mencionou em um comentário sobre %(book_title)s" +msgid "%(related_user)s mentioned you in a comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:32 #, python-format -msgid "mentioned you in a quote from %(book_title)s" -msgstr "te mencionou em uma citação de %(book_title)s" +msgid "%(related_user)s mentioned you in a quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:38 #, python-format -msgid "mentioned you in a status" -msgstr "te mencionou em uma publicação" +msgid "%(related_user)s mentioned you in a status" +msgstr "" #: bookwyrm/templates/notifications/items/remove.html:17 #, python-format @@ -2694,28 +2846,30 @@ msgstr "Você foi excluído(a) do grupo \"%(group_nam #: bookwyrm/templates/notifications/items/reply.html:21 #, python-format -msgid "replied to your review of %(book_title)s" -msgstr "respondeu à sua resenha de %(book_title)s" +msgid "%(related_user)s replied to your review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:27 #, python-format -msgid "replied to your comment on %(book_title)s" -msgstr "respondeu ao seu comentário sobre %(book_title)s" +msgid "%(related_user)s replied to your comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:33 #, python-format -msgid "replied to your quote from %(book_title)s" -msgstr "respondeu à sua citação de %(book_title)s" +msgid "%(related_user)s replied to your quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:39 #, python-format -msgid "replied to your status" -msgstr "respondeu à sua publicação" +msgid "%(related_user)s replied to your status" +msgstr "" #: bookwyrm/templates/notifications/items/report.html:15 #, python-format -msgid "A new report needs moderation." -msgstr "Uma nova denúncia para moderação." +msgid "A new report needs moderation" +msgid_plural "%(display_count)s new reports need moderation" +msgstr[0] "" +msgstr[1] "" #: bookwyrm/templates/notifications/items/update.html:16 #, python-format @@ -3199,13 +3353,13 @@ msgstr "Falso" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:105 msgid "Start date:" msgstr "Data de início:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "End date:" msgstr "Data final:" @@ -3365,7 +3519,7 @@ msgid "Dashboard" msgstr "Painel" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:134 msgid "Total users" msgstr "Total de usuários" @@ -3385,55 +3539,64 @@ msgstr "Obras" #: bookwyrm/templates/settings/dashboard/dashboard.html:43 #, python-format +msgid "Your outgoing email address, %(email_sender)s, may be misconfigured." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:46 +msgid "Check the EMAIL_SENDER_NAME and EMAIL_SENDER_DOMAIN in your .env." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#, python-format msgid "%(display_count)s open report" msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s denúncia aberta" msgstr[1] "%(display_count)s denúncias abertas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:55 +#: bookwyrm/templates/settings/dashboard/dashboard.html:66 #, 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:67 +#: bookwyrm/templates/settings/dashboard/dashboard.html:78 #, 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:79 +#: bookwyrm/templates/settings/dashboard/dashboard.html:90 #, python-format msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." msgstr "Há uma atualização disponível! Você está usando a v%(current)s e o último lançamento é %(available)s." -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Instance Activity" msgstr "Atividade da instância" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "Interval:" msgstr "Intervalo:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:110 +#: bookwyrm/templates/settings/dashboard/dashboard.html:121 msgid "Days" msgstr "Dias" -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:122 msgid "Weeks" msgstr "Semanas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:140 msgid "User signup activity" msgstr "Novos usuários" -#: bookwyrm/templates/settings/dashboard/dashboard.html:135 +#: bookwyrm/templates/settings/dashboard/dashboard.html:146 msgid "Status activity" msgstr "Publicações" -#: bookwyrm/templates/settings/dashboard/dashboard.html:141 +#: bookwyrm/templates/settings/dashboard/dashboard.html:152 msgid "Works created" msgstr "Obras criadas" @@ -3853,7 +4016,7 @@ msgstr "Nenhum domínio pendente de aprovação" msgid "No domains currently blocked" msgstr "Nenhum domínio bloqueado" -#: bookwyrm/templates/settings/link_domains/link_table.html:39 +#: bookwyrm/templates/settings/link_domains/link_table.html:43 msgid "No links available for this domain." msgstr "Nenhum link disponível para este domínio." @@ -3881,11 +4044,11 @@ msgstr "A publicação foi excluída" msgid "Reported links" msgstr "Links denunciados" -#: bookwyrm/templates/settings/reports/report.html:63 +#: bookwyrm/templates/settings/reports/report.html:65 msgid "Moderator Comments" msgstr "Comentários da moderação" -#: bookwyrm/templates/settings/reports/report.html:84 +#: bookwyrm/templates/settings/reports/report.html:86 #: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Comentar" @@ -3895,12 +4058,17 @@ msgstr "Comentar" 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_header.html:12 +#: bookwyrm/templates/settings/reports/report_header.html:13 #, 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_header.html:18 +#: bookwyrm/templates/settings/reports/report_header.html:17 +#, python-format +msgid "Report #%(report_id)s: Link domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_header.html:24 #, python-format msgid "Report #%(report_id)s: User @%(username)s" msgstr "Denúncia #%(report_id)s: Usuário @%(username)s" @@ -4163,11 +4331,15 @@ msgid "Active" msgstr "Ativo" #: bookwyrm/templates/settings/users/user_admin.html:79 +msgid "Deleted" +msgstr "" + +#: bookwyrm/templates/settings/users/user_admin.html:85 #: bookwyrm/templates/settings/users/user_info.html:32 msgid "Inactive" msgstr "Inativo" -#: bookwyrm/templates/settings/users/user_admin.html:88 +#: bookwyrm/templates/settings/users/user_admin.html:94 #: bookwyrm/templates/settings/users/user_info.html:127 msgid "Not set" msgstr "Não definido" @@ -5172,15 +5344,6 @@ msgstr "Não é um arquivo csv válido" msgid "Username or password are incorrect" msgstr "Nome de usuário ou senha incorretos" -#: bookwyrm/views/landing/password.py:32 -msgid "No user with that email address was found." -msgstr "Não há nenhum usuário com este e-mail." - -#: bookwyrm/views/landing/password.py:43 -#, python-brace-format -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:34 #, python-brace-format msgid "Status updates from {obj.display_name}" diff --git a/locale/pt_PT/LC_MESSAGES/django.mo b/locale/pt_PT/LC_MESSAGES/django.mo index 07b9f009f..2134e8e11 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 cdfb2b890..2519ed976 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-05-31 23:50+0000\n" -"PO-Revision-Date: 2022-06-01 00:55\n" +"POT-Creation-Date: 2022-07-07 17:47+0000\n" +"PO-Revision-Date: 2022-07-07 18:12\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Portuguese\n" "Language: pt\n" @@ -121,7 +121,7 @@ msgstr "Alerta" msgid "Danger" msgstr "Perigo" -#: bookwyrm/models/antispam.py:106 bookwyrm/models/antispam.py:140 +#: bookwyrm/models/antispam.py:101 bookwyrm/models/antispam.py:135 msgid "Automatically generated report" msgstr "Relatório gerado automaticamente" @@ -740,7 +740,7 @@ msgstr "ISNI:" #: bookwyrm/templates/book/book.html:202 #: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 -#: bookwyrm/templates/book/file_links/edit_links.html:82 +#: bookwyrm/templates/book/file_links/edit_links.html:86 #: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 @@ -1218,16 +1218,21 @@ msgstr "Estado" msgid "Actions" msgstr "Acções" -#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/edit_links.html:48 +#: bookwyrm/templates/settings/link_domains/link_table.html:21 +msgid "Unknown user" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:57 #: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Denunciar spam" -#: bookwyrm/templates/book/file_links/edit_links.html:97 +#: bookwyrm/templates/book/file_links/edit_links.html:101 msgid "No links available for this book." msgstr "Não existem links disponíveis para este livro." -#: bookwyrm/templates/book/file_links/edit_links.html:108 +#: bookwyrm/templates/book/file_links/edit_links.html:112 #: bookwyrm/templates/book/file_links/links.html:18 msgid "Add link to file" msgstr "" @@ -1324,7 +1329,7 @@ msgstr "Código de confirmação:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:81 -#: bookwyrm/templates/settings/dashboard/dashboard.html:116 +#: bookwyrm/templates/settings/dashboard/dashboard.html:127 #: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Submeter" @@ -1340,7 +1345,7 @@ msgstr "Reenviar um E-Mail de confirmação" #: bookwyrm/templates/confirm_email/resend_modal.html:15 #: bookwyrm/templates/landing/layout.html:68 -#: bookwyrm/templates/landing/password_reset_request.html:18 +#: bookwyrm/templates/landing/password_reset_request.html:24 #: bookwyrm/templates/preferences/edit_user.html:53 #: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" @@ -1567,14 +1572,20 @@ msgstr "Estás convidado a juntar-te a %(site_name)s! Clica no link abaixo para msgid "Learn more about %(site_name)s:" msgstr "Saiba mais sobre %(site_name)s:" -#: bookwyrm/templates/email/moderation_report/html_content.html:6 -#: bookwyrm/templates/email/moderation_report/text_content.html:5 +#: bookwyrm/templates/email/moderation_report/html_content.html:8 +#: bookwyrm/templates/email/moderation_report/text_content.html:6 #, python-format -msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " -msgstr "@%(reporter)s marcou o comportamento de @%(reportee)s para moderação. " +msgid "@%(reporter)s has flagged a link domain for moderation." +msgstr "" -#: bookwyrm/templates/email/moderation_report/html_content.html:9 -#: bookwyrm/templates/email/moderation_report/text_content.html:7 +#: bookwyrm/templates/email/moderation_report/html_content.html:14 +#: bookwyrm/templates/email/moderation_report/text_content.html:10 +#, python-format +msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation." +msgstr "" + +#: bookwyrm/templates/email/moderation_report/html_content.html:21 +#: bookwyrm/templates/email/moderation_report/text_content.html:15 msgid "View report" msgstr "Ver denúncia" @@ -2268,10 +2279,15 @@ msgid "Confirm password:" msgstr "Confirmar palavra-passe:" #: bookwyrm/templates/landing/password_reset_request.html:14 +#, python-format +msgid "A password reset link will be sent to %(email)s if there is an account using that email address." +msgstr "" + +#: bookwyrm/templates/landing/password_reset_request.html:20 msgid "A link to reset your password will be sent to your email address" msgstr "O link para redefinir a tua palavra-passe foi enviado para o teu E-Mail" -#: bookwyrm/templates/landing/password_reset_request.html:28 +#: bookwyrm/templates/landing/password_reset_request.html:34 msgid "Reset password" msgstr "Redefinir palavra-passe" @@ -2579,108 +2595,244 @@ msgstr "Todas as listas" msgid "Saved Lists" msgstr "Listas salvas" -#: bookwyrm/templates/notifications/items/accept.html:16 +#: bookwyrm/templates/notifications/items/accept.html:18 #, python-format -msgid "accepted your invitation to join group \"%(group_name)s\"" -msgstr "aceitou o teu convite para participar no grupo \"%(group_name)s\"" +msgid "%(related_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:24 +#: bookwyrm/templates/notifications/items/accept.html:26 #, python-format -msgid "added %(book_title)s to your list \"%(list_name)s\"" -msgstr "adicionou o livro %(book_title)s à tua lista \"%(list_name)s\"" +msgid "%(related_user)s and %(second_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:31 +#: bookwyrm/templates/notifications/items/accept.html:36 #, python-format -msgid "suggested adding %(book_title)s to your list \"%(list_name)s\"" -msgstr "sugeriu adicionar o livro %(book_title)s à tua lista \"%(list_name)s\"" +msgid "%(related_user)s and %(other_user_display_count)s others accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:19 +#: bookwyrm/templates/notifications/items/add.html:33 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "partilhou a tua critica de %(book_title)s" +msgid "%(related_user)s added %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:25 +#: bookwyrm/templates/notifications/items/add.html:39 #, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "partilhou o teu comentário em %(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:31 +#: bookwyrm/templates/notifications/items/add.html:47 #, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "partilhou a tua citação de %(book_title)s" +msgid "%(related_user)s added %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:37 +#: bookwyrm/templates/notifications/items/add.html:54 #, python-format -msgid "boosted your status" -msgstr "partilhou o teu estado" +msgid "%(related_user)s suggested adding %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:19 +#: bookwyrm/templates/notifications/items/add.html:66 #, python-format -msgid "liked your review of %(book_title)s" -msgstr "gostou da tua critica de %(book_title)s" +msgid "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:25 +#: bookwyrm/templates/notifications/items/add.html:82 #, python-format -msgid "liked your comment on %(book_title)s" -msgstr "gostou do teu comentário em %(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:31 +#: bookwyrm/templates/notifications/items/boost.html:21 #, python-format -msgid "liked your quote from %(book_title)s" -msgstr "gostou da tua citação de %(book_title)s" +msgid "%(related_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:37 +#: bookwyrm/templates/notifications/items/boost.html:27 #, python-format -msgid "liked your status" -msgstr "gostou do teu estado" +msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow.html:15 -msgid "followed you" -msgstr "seguiu-te" +#: bookwyrm/templates/notifications/items/boost.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow_request.html:11 -msgid "sent you a follow request" -msgstr "enviou um pedido para seguir-te" +#: bookwyrm/templates/notifications/items/boost.html:44 +#, python-format +msgid "%(related_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:67 +#, python-format +msgid "%(related_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:90 +#, python-format +msgid "%(related_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:21 +#, python-format +msgid "%(related_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:27 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:44 +#, python-format +msgid "%(related_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:67 +#, python-format +msgid "%(related_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:90 +#, python-format +msgid "%(related_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:16 +#, python-format +msgid "%(related_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:20 +#, python-format +msgid "%(related_user)s and %(second_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:25 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow_request.html:15 +#, python-format +msgid "%(related_user)s sent you a follow request" +msgstr "" #: bookwyrm/templates/notifications/items/import.html:14 #, python-format msgid "Your import completed." msgstr "A tua importação de foi concluída." -#: bookwyrm/templates/notifications/items/invite.html:15 +#: bookwyrm/templates/notifications/items/invite.html:16 #, python-format -msgid "invited you to join the group \"%(group_name)s\"" -msgstr "convidou-te para participares no grupo \"%(group_name)s\"" +msgid "%(related_user)s invited you to join the group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/join.html:16 #, python-format msgid "has joined your group \"%(group_name)s\"" msgstr "juntou-se ao teu grupo \"%(group_name)s\"" -#: bookwyrm/templates/notifications/items/leave.html:16 +#: bookwyrm/templates/notifications/items/leave.html:18 #, python-format -msgid "has left your group \"%(group_name)s\"" -msgstr "saiu do teu grupo \"%(group_name)s\"" +msgid "%(related_user)s has left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:26 +#, python-format +msgid "%(related_user)s and %(second_user)s have left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:20 #, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "mencionou-te numa crítica de %(book_title)s" +msgid "%(related_user)s mentioned you in a review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:26 #, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "mencionou-te num comentário em %(book_title)s" +msgid "%(related_user)s mentioned you in a comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:32 #, python-format -msgid "mentioned you in a quote from %(book_title)s" -msgstr "mencionou-te numa citação de %(book_title)s" +msgid "%(related_user)s mentioned you in a quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:38 #, python-format -msgid "mentioned you in a status" -msgstr "mencionou-te num estado" +msgid "%(related_user)s mentioned you in a status" +msgstr "" #: bookwyrm/templates/notifications/items/remove.html:17 #, python-format @@ -2694,28 +2846,30 @@ msgstr "Tu foste removido do grupo \"%(group_name)sreplied to your review of %(book_title)s" -msgstr "respondeu à tua crítica de %(book_title)s" +msgid "%(related_user)s replied to your review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:27 #, python-format -msgid "replied to your comment on %(book_title)s" -msgstr "respondeu ao teu comentário em %(book_title)s" +msgid "%(related_user)s replied to your comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:33 #, python-format -msgid "replied to your quote from %(book_title)s" -msgstr "respondeu à tua citação de %(book_title)s" +msgid "%(related_user)s replied to your quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:39 #, python-format -msgid "replied to your status" -msgstr "respondeu ao teu estado" +msgid "%(related_user)s replied to your status" +msgstr "" #: bookwyrm/templates/notifications/items/report.html:15 #, python-format -msgid "A new report needs moderation." -msgstr "Uma nova denúncia precisa de moderação." +msgid "A new report needs moderation" +msgid_plural "%(display_count)s new reports need moderation" +msgstr[0] "" +msgstr[1] "" #: bookwyrm/templates/notifications/items/update.html:16 #, python-format @@ -3199,13 +3353,13 @@ msgstr "Falso" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:105 msgid "Start date:" msgstr "Data de início:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "End date:" msgstr "Data de conclusão:" @@ -3365,7 +3519,7 @@ msgid "Dashboard" msgstr "Painel de controlo" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:134 msgid "Total users" msgstr "Total de utilizadores" @@ -3385,55 +3539,64 @@ msgstr "Obras" #: bookwyrm/templates/settings/dashboard/dashboard.html:43 #, python-format +msgid "Your outgoing email address, %(email_sender)s, may be misconfigured." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:46 +msgid "Check the EMAIL_SENDER_NAME and EMAIL_SENDER_DOMAIN in your .env." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#, python-format msgid "%(display_count)s open report" msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s denúncia aberta" msgstr[1] "%(display_count)s denúncias abertas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:55 +#: bookwyrm/templates/settings/dashboard/dashboard.html:66 #, 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:67 +#: bookwyrm/templates/settings/dashboard/dashboard.html:78 #, 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:79 +#: bookwyrm/templates/settings/dashboard/dashboard.html:90 #, python-format msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." msgstr "Uma atualização está disponível! Estás a correr a versão v%(current)s e a mais recente é a %(available)s." -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Instance Activity" msgstr "Atividade do domínio" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "Interval:" msgstr "Intervalo:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:110 +#: bookwyrm/templates/settings/dashboard/dashboard.html:121 msgid "Days" msgstr "Dias" -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:122 msgid "Weeks" msgstr "Semanas" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:140 msgid "User signup activity" msgstr "Atividade de inscrição do utilizador" -#: bookwyrm/templates/settings/dashboard/dashboard.html:135 +#: bookwyrm/templates/settings/dashboard/dashboard.html:146 msgid "Status activity" msgstr "Atividade de estado" -#: bookwyrm/templates/settings/dashboard/dashboard.html:141 +#: bookwyrm/templates/settings/dashboard/dashboard.html:152 msgid "Works created" msgstr "Obras criadas" @@ -3853,7 +4016,7 @@ msgstr "Nenhum domínio pendente no momento" msgid "No domains currently blocked" msgstr "Sem domínios bloqueado no momento" -#: bookwyrm/templates/settings/link_domains/link_table.html:39 +#: bookwyrm/templates/settings/link_domains/link_table.html:43 msgid "No links available for this domain." msgstr "Não existem links disponíveis para este domínio." @@ -3881,11 +4044,11 @@ msgstr "O estado foi eliminado" msgid "Reported links" msgstr "Links reportados" -#: bookwyrm/templates/settings/reports/report.html:63 +#: bookwyrm/templates/settings/reports/report.html:65 msgid "Moderator Comments" msgstr "Comentários do Moderador" -#: bookwyrm/templates/settings/reports/report.html:84 +#: bookwyrm/templates/settings/reports/report.html:86 #: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Comentar" @@ -3895,12 +4058,17 @@ msgstr "Comentar" msgid "Report #%(report_id)s: Status posted by @%(username)s" msgstr "Reportar #%(report_id)s: Estado publicado por @%(username)s" -#: bookwyrm/templates/settings/reports/report_header.html:12 +#: bookwyrm/templates/settings/reports/report_header.html:13 #, python-format msgid "Report #%(report_id)s: Link added by @%(username)s" msgstr "Reportar #%(report_id)s: Link adicionado por @%(username)s" -#: bookwyrm/templates/settings/reports/report_header.html:18 +#: bookwyrm/templates/settings/reports/report_header.html:17 +#, python-format +msgid "Report #%(report_id)s: Link domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_header.html:24 #, python-format msgid "Report #%(report_id)s: User @%(username)s" msgstr "Reportar #%(report_id)s: Utilizador @%(username)s" @@ -4163,11 +4331,15 @@ msgid "Active" msgstr "Ativo" #: bookwyrm/templates/settings/users/user_admin.html:79 +msgid "Deleted" +msgstr "" + +#: bookwyrm/templates/settings/users/user_admin.html:85 #: bookwyrm/templates/settings/users/user_info.html:32 msgid "Inactive" msgstr "Inativo" -#: bookwyrm/templates/settings/users/user_admin.html:88 +#: bookwyrm/templates/settings/users/user_admin.html:94 #: bookwyrm/templates/settings/users/user_info.html:127 msgid "Not set" msgstr "Não definido" @@ -5172,15 +5344,6 @@ msgstr "Não é um ficheiro csv válido" msgid "Username or password are incorrect" msgstr "Nome de utilizador ou palavra-passe incorretos" -#: bookwyrm/views/landing/password.py:32 -msgid "No user with that email address was found." -msgstr "Não foi encontrado nenhum utilizador com este E-Mail." - -#: bookwyrm/views/landing/password.py:43 -#, python-brace-format -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:34 #, python-brace-format msgid "Status updates from {obj.display_name}" diff --git a/locale/ro_RO/LC_MESSAGES/django.mo b/locale/ro_RO/LC_MESSAGES/django.mo index 4134a5e33..b5af8e059 100644 Binary files a/locale/ro_RO/LC_MESSAGES/django.mo and b/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/locale/ro_RO/LC_MESSAGES/django.po b/locale/ro_RO/LC_MESSAGES/django.po index 0270a93fa..54af51b70 100644 --- a/locale/ro_RO/LC_MESSAGES/django.po +++ b/locale/ro_RO/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-31 23:50+0000\n" -"PO-Revision-Date: 2022-06-01 00:55\n" +"POT-Creation-Date: 2022-07-07 17:47+0000\n" +"PO-Revision-Date: 2022-07-07 18:12\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Romanian\n" "Language: ro\n" @@ -121,7 +121,7 @@ msgstr "Avertisment" msgid "Danger" msgstr "Pericol" -#: bookwyrm/models/antispam.py:106 bookwyrm/models/antispam.py:140 +#: bookwyrm/models/antispam.py:101 bookwyrm/models/antispam.py:135 msgid "Automatically generated report" msgstr "Raport generat automat" @@ -744,7 +744,7 @@ msgstr "ISNI:" #: bookwyrm/templates/book/book.html:202 #: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 -#: bookwyrm/templates/book/file_links/edit_links.html:82 +#: bookwyrm/templates/book/file_links/edit_links.html:86 #: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 @@ -1224,16 +1224,21 @@ msgstr "Status" msgid "Actions" msgstr "Acțiuni" -#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/edit_links.html:48 +#: bookwyrm/templates/settings/link_domains/link_table.html:21 +msgid "Unknown user" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:57 #: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Raportați spam" -#: bookwyrm/templates/book/file_links/edit_links.html:97 +#: bookwyrm/templates/book/file_links/edit_links.html:101 msgid "No links available for this book." msgstr "Nicio legătură disponibilă pentru această carte." -#: bookwyrm/templates/book/file_links/edit_links.html:108 +#: bookwyrm/templates/book/file_links/edit_links.html:112 #: bookwyrm/templates/book/file_links/links.html:18 msgid "Add link to file" msgstr "Adăugați o legătură către fișier" @@ -1330,7 +1335,7 @@ msgstr "Cod de confirmare:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:81 -#: bookwyrm/templates/settings/dashboard/dashboard.html:116 +#: bookwyrm/templates/settings/dashboard/dashboard.html:127 #: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Trimiteți" @@ -1346,7 +1351,7 @@ msgstr "Retrimiteți legătura de confirmare" #: bookwyrm/templates/confirm_email/resend_modal.html:15 #: bookwyrm/templates/landing/layout.html:68 -#: bookwyrm/templates/landing/password_reset_request.html:18 +#: bookwyrm/templates/landing/password_reset_request.html:24 #: bookwyrm/templates/preferences/edit_user.html:53 #: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" @@ -1575,14 +1580,20 @@ msgstr "Sunteți invitat să vă alăturați %(site_name)s! Clic pe legătura de msgid "Learn more about %(site_name)s:" msgstr "Aflați mai multe despre %(site_name)s:" -#: bookwyrm/templates/email/moderation_report/html_content.html:6 -#: bookwyrm/templates/email/moderation_report/text_content.html:5 +#: bookwyrm/templates/email/moderation_report/html_content.html:8 +#: bookwyrm/templates/email/moderation_report/text_content.html:6 #, python-format -msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " -msgstr "@%(reporter)s a marcat comportamentul (lui) %(reportee)s pentru moderare. " +msgid "@%(reporter)s has flagged a link domain for moderation." +msgstr "" -#: bookwyrm/templates/email/moderation_report/html_content.html:9 -#: bookwyrm/templates/email/moderation_report/text_content.html:7 +#: bookwyrm/templates/email/moderation_report/html_content.html:14 +#: bookwyrm/templates/email/moderation_report/text_content.html:10 +#, python-format +msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation." +msgstr "" + +#: bookwyrm/templates/email/moderation_report/html_content.html:21 +#: bookwyrm/templates/email/moderation_report/text_content.html:15 msgid "View report" msgstr "Vizualizați raportul" @@ -2280,10 +2291,15 @@ msgid "Confirm password:" msgstr "Confirmați parola:" #: bookwyrm/templates/landing/password_reset_request.html:14 +#, python-format +msgid "A password reset link will be sent to %(email)s if there is an account using that email address." +msgstr "" + +#: bookwyrm/templates/landing/password_reset_request.html:20 msgid "A link to reset your password will be sent to your email address" msgstr "O legătură pentru reinițializarea parolei dvs. va fi trimisă la adresa dvs." -#: bookwyrm/templates/landing/password_reset_request.html:28 +#: bookwyrm/templates/landing/password_reset_request.html:34 msgid "Reset password" msgstr "Reinițializați parola" @@ -2591,108 +2607,246 @@ msgstr "Toate listele" msgid "Saved Lists" msgstr "Listele salvate" -#: bookwyrm/templates/notifications/items/accept.html:16 +#: bookwyrm/templates/notifications/items/accept.html:18 #, python-format -msgid "accepted your invitation to join group \"%(group_name)s\"" -msgstr "a acceptat invitația dvs. de a se alătura grupului „%(group_name)s”" +msgid "%(related_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:24 +#: bookwyrm/templates/notifications/items/accept.html:26 #, python-format -msgid "added %(book_title)s to your list \"%(list_name)s\"" -msgstr "a adăugat %(book_title)s listei dvs. „%(list_name)s”" +msgid "%(related_user)s and %(second_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:31 +#: bookwyrm/templates/notifications/items/accept.html:36 #, python-format -msgid "suggested adding %(book_title)s to your list \"%(list_name)s\"" -msgstr "a sugerat adăugarea %(book_title)s la lista dvs. „%(list_name)s”" +msgid "%(related_user)s and %(other_user_display_count)s others accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:19 +#: bookwyrm/templates/notifications/items/add.html:33 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "a partajat recenzia dvs. a %(book_title)s" +msgid "%(related_user)s added %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:25 +#: bookwyrm/templates/notifications/items/add.html:39 #, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "a partajat comentariul dvs. despre %(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:31 +#: bookwyrm/templates/notifications/items/add.html:47 #, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "a partajat citatul dvs. din %(book_title)s" +msgid "%(related_user)s added %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:37 +#: bookwyrm/templates/notifications/items/add.html:54 #, python-format -msgid "boosted your status" -msgstr "a partajat statusul dvs." +msgid "%(related_user)s suggested adding %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:19 +#: bookwyrm/templates/notifications/items/add.html:66 #, python-format -msgid "liked your review of %(book_title)s" -msgstr "i-a plăcut recenzia dvs. despre %(book_title)s" +msgid "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: bookwyrm/templates/notifications/items/fav.html:25 +#: bookwyrm/templates/notifications/items/add.html:82 #, python-format -msgid "liked your comment on %(book_title)s" -msgstr "i-a plăcut comentariul dvs. despre %(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: bookwyrm/templates/notifications/items/fav.html:31 +#: bookwyrm/templates/notifications/items/boost.html:21 #, python-format -msgid "liked your quote from %(book_title)s" -msgstr "i-a plăcut citatul dvs. despre %(book_title)s" +msgid "%(related_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:37 +#: bookwyrm/templates/notifications/items/boost.html:27 #, python-format -msgid "liked your status" -msgstr "i-a plăcut statusul dvs." +msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow.html:15 -msgid "followed you" -msgstr "vă urmărește" +#: bookwyrm/templates/notifications/items/boost.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow_request.html:11 -msgid "sent you a follow request" -msgstr "v-a trimis o cerere de urmărire" +#: bookwyrm/templates/notifications/items/boost.html:44 +#, python-format +msgid "%(related_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:67 +#, python-format +msgid "%(related_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:90 +#, python-format +msgid "%(related_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:21 +#, python-format +msgid "%(related_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:27 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:44 +#, python-format +msgid "%(related_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:67 +#, python-format +msgid "%(related_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:90 +#, python-format +msgid "%(related_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:16 +#, python-format +msgid "%(related_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:20 +#, python-format +msgid "%(related_user)s and %(second_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:25 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow_request.html:15 +#, python-format +msgid "%(related_user)s sent you a follow request" +msgstr "" #: bookwyrm/templates/notifications/items/import.html:14 #, python-format msgid "Your import completed." msgstr "importul dvs. s-a terminat." -#: bookwyrm/templates/notifications/items/invite.html:15 +#: bookwyrm/templates/notifications/items/invite.html:16 #, python-format -msgid "invited you to join the group \"%(group_name)s\"" -msgstr "v-a invitat să vă alăturați grupului „%(group_name)s”" +msgid "%(related_user)s invited you to join the group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/join.html:16 #, python-format msgid "has joined your group \"%(group_name)s\"" msgstr "s-a alăturat grupului dvs „%(group_name)s”" -#: bookwyrm/templates/notifications/items/leave.html:16 +#: bookwyrm/templates/notifications/items/leave.html:18 #, python-format -msgid "has left your group \"%(group_name)s\"" -msgstr "a părăsit grupul dvs. „%(group_name)s”" +msgid "%(related_user)s has left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:26 +#, python-format +msgid "%(related_user)s and %(second_user)s have left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:20 #, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "v-a menționat într-o recenzie a %(book_title)s" +msgid "%(related_user)s mentioned you in a review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:26 #, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "v-a menționat într-un comentariu despre %(book_title)s" +msgid "%(related_user)s mentioned you in a comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:32 #, python-format -msgid "mentioned you in a quote from %(book_title)s" -msgstr "v-a menționat într-un citat despre %(book_title)s" +msgid "%(related_user)s mentioned you in a quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:38 #, python-format -msgid "mentioned you in a status" -msgstr "v-a menționat într-un status" +msgid "%(related_user)s mentioned you in a status" +msgstr "" #: bookwyrm/templates/notifications/items/remove.html:17 #, python-format @@ -2706,28 +2860,31 @@ msgstr "Ați fost înlăturat de la grupul „%(group #: bookwyrm/templates/notifications/items/reply.html:21 #, python-format -msgid "replied to your review of %(book_title)s" -msgstr "a răspuns recenziei dvs. despre %(book_title)s" +msgid "%(related_user)s replied to your review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:27 #, python-format -msgid "replied to your comment on %(book_title)s" -msgstr "a răspuns comentariului dvs. despre %(book_title)s" +msgid "%(related_user)s replied to your comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:33 #, python-format -msgid "replied to your quote from %(book_title)s" -msgstr "a răspuns citatului dvs. din %(book_title)s" +msgid "%(related_user)s replied to your quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:39 #, python-format -msgid "replied to your status" -msgstr "a răspuns statusului dvs." +msgid "%(related_user)s replied to your status" +msgstr "" #: bookwyrm/templates/notifications/items/report.html:15 #, python-format -msgid "A new report needs moderation." -msgstr "Un raport nou are nevoie de moderare." +msgid "A new report needs moderation" +msgid_plural "%(display_count)s new reports need moderation" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" #: bookwyrm/templates/notifications/items/update.html:16 #, python-format @@ -3210,13 +3367,13 @@ msgstr "Fals" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:105 msgid "Start date:" msgstr "Data de început:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "End date:" msgstr "Data de sfârșit:" @@ -3376,7 +3533,7 @@ msgid "Dashboard" msgstr "Tablou de bord" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:134 msgid "Total users" msgstr "Număr total de utilizatori" @@ -3396,13 +3553,22 @@ msgstr "Opere" #: bookwyrm/templates/settings/dashboard/dashboard.html:43 #, python-format +msgid "Your outgoing email address, %(email_sender)s, may be misconfigured." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:46 +msgid "Check the EMAIL_SENDER_NAME and EMAIL_SENDER_DOMAIN in your .env." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#, python-format msgid "%(display_count)s open report" msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s raport deschis" msgstr[1] "" msgstr[2] "%(display_count)s raporturi dechise" -#: bookwyrm/templates/settings/dashboard/dashboard.html:55 +#: bookwyrm/templates/settings/dashboard/dashboard.html:66 #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" @@ -3410,7 +3576,7 @@ msgstr[0] "%(display_count)s domeniu care necesită revizuire" msgstr[1] "" msgstr[2] "%(display_count)s domenii care necesită revizii" -#: bookwyrm/templates/settings/dashboard/dashboard.html:67 +#: bookwyrm/templates/settings/dashboard/dashboard.html:78 #, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" @@ -3418,36 +3584,36 @@ msgstr[0] "%(display_count)s cerere de invitare" msgstr[1] "" msgstr[2] "%(display_count)s cereri de invitare" -#: bookwyrm/templates/settings/dashboard/dashboard.html:79 +#: bookwyrm/templates/settings/dashboard/dashboard.html:90 #, python-format msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." msgstr "O actualizare este disponibilă! Rulați în prezent v%(current)s, iar cea mai nouă versiune este %(available)s." -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Instance Activity" msgstr "Activitatea instanței" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "Interval:" msgstr "Interval:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:110 +#: bookwyrm/templates/settings/dashboard/dashboard.html:121 msgid "Days" msgstr "Zile" -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:122 msgid "Weeks" msgstr "Săptămâni" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:140 msgid "User signup activity" msgstr "Activitate de înscriere a utilizatorilor" -#: bookwyrm/templates/settings/dashboard/dashboard.html:135 +#: bookwyrm/templates/settings/dashboard/dashboard.html:146 msgid "Status activity" msgstr "Activitate stare" -#: bookwyrm/templates/settings/dashboard/dashboard.html:141 +#: bookwyrm/templates/settings/dashboard/dashboard.html:152 msgid "Works created" msgstr "Opere create" @@ -3868,7 +4034,7 @@ msgstr "Niciun domeniu în așteptare" msgid "No domains currently blocked" msgstr "Niciun domeniu blocat" -#: bookwyrm/templates/settings/link_domains/link_table.html:39 +#: bookwyrm/templates/settings/link_domains/link_table.html:43 msgid "No links available for this domain." msgstr "Nicio legătură disponibilă pentru acest domeniu." @@ -3896,11 +4062,11 @@ msgstr "Statusul a fost șters" msgid "Reported links" msgstr "Raportați legături" -#: bookwyrm/templates/settings/reports/report.html:63 +#: bookwyrm/templates/settings/reports/report.html:65 msgid "Moderator Comments" msgstr "Comentarile moderatorului" -#: bookwyrm/templates/settings/reports/report.html:84 +#: bookwyrm/templates/settings/reports/report.html:86 #: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Comentariu" @@ -3910,12 +4076,17 @@ msgstr "Comentariu" msgid "Report #%(report_id)s: Status posted by @%(username)s" msgstr "Raport #%(report_id)s: statut postat de @%(username)s" -#: bookwyrm/templates/settings/reports/report_header.html:12 +#: bookwyrm/templates/settings/reports/report_header.html:13 #, python-format msgid "Report #%(report_id)s: Link added by @%(username)s" msgstr "Raport #%(report_id)s: legătură adăugată de @%(username)s" -#: bookwyrm/templates/settings/reports/report_header.html:18 +#: bookwyrm/templates/settings/reports/report_header.html:17 +#, python-format +msgid "Report #%(report_id)s: Link domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_header.html:24 #, python-format msgid "Report #%(report_id)s: User @%(username)s" msgstr "Raport #%(report_id)s: utilizator @%(username)s" @@ -4178,11 +4349,15 @@ msgid "Active" msgstr "Activ" #: bookwyrm/templates/settings/users/user_admin.html:79 +msgid "Deleted" +msgstr "" + +#: bookwyrm/templates/settings/users/user_admin.html:85 #: bookwyrm/templates/settings/users/user_info.html:32 msgid "Inactive" msgstr "Inactiv" -#: bookwyrm/templates/settings/users/user_admin.html:88 +#: bookwyrm/templates/settings/users/user_admin.html:94 #: bookwyrm/templates/settings/users/user_info.html:127 msgid "Not set" msgstr "Neconfigurat" @@ -5197,15 +5372,6 @@ msgstr "Nu este un fișier csv valid" msgid "Username or password are incorrect" msgstr "Numele de utilizator sau parola greșite" -#: bookwyrm/views/landing/password.py:32 -msgid "No user with that email address was found." -msgstr "Nu a fost găsit niciun utilizator cu această adresă de email." - -#: bookwyrm/views/landing/password.py:43 -#, python-brace-format -msgid "A password reset link was sent to {email}" -msgstr "O legătură cu resetarea parolei a fost trimisă la {email}" - #: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" diff --git a/locale/sv_SE/LC_MESSAGES/django.mo b/locale/sv_SE/LC_MESSAGES/django.mo index e565450b1..47c4f1939 100644 Binary files a/locale/sv_SE/LC_MESSAGES/django.mo and b/locale/sv_SE/LC_MESSAGES/django.mo differ diff --git a/locale/sv_SE/LC_MESSAGES/django.po b/locale/sv_SE/LC_MESSAGES/django.po index 093254edd..03002a581 100644 --- a/locale/sv_SE/LC_MESSAGES/django.po +++ b/locale/sv_SE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-31 23:50+0000\n" -"PO-Revision-Date: 2022-06-01 00:55\n" +"POT-Creation-Date: 2022-07-07 17:47+0000\n" +"PO-Revision-Date: 2022-07-07 18:12\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Swedish\n" "Language: sv\n" @@ -121,7 +121,7 @@ msgstr "Varning" msgid "Danger" msgstr "Observera" -#: bookwyrm/models/antispam.py:106 bookwyrm/models/antispam.py:140 +#: bookwyrm/models/antispam.py:101 bookwyrm/models/antispam.py:135 msgid "Automatically generated report" msgstr "Automatiskt genererad rapport" @@ -740,7 +740,7 @@ msgstr "ISNI:" #: bookwyrm/templates/book/book.html:202 #: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 -#: bookwyrm/templates/book/file_links/edit_links.html:82 +#: bookwyrm/templates/book/file_links/edit_links.html:86 #: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 @@ -1218,16 +1218,21 @@ msgstr "Status" msgid "Actions" msgstr "Åtgärder" -#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/edit_links.html:48 +#: bookwyrm/templates/settings/link_domains/link_table.html:21 +msgid "Unknown user" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:57 #: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "Rapportera skräppost" -#: bookwyrm/templates/book/file_links/edit_links.html:97 +#: bookwyrm/templates/book/file_links/edit_links.html:101 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/edit_links.html:112 #: bookwyrm/templates/book/file_links/links.html:18 msgid "Add link to file" msgstr "Lägg till länk till filen" @@ -1324,7 +1329,7 @@ msgstr "Bekräftelsekod:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:81 -#: bookwyrm/templates/settings/dashboard/dashboard.html:116 +#: bookwyrm/templates/settings/dashboard/dashboard.html:127 #: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "Skicka in" @@ -1340,7 +1345,7 @@ msgstr "Skicka bekräftelselänken igen" #: bookwyrm/templates/confirm_email/resend_modal.html:15 #: bookwyrm/templates/landing/layout.html:68 -#: bookwyrm/templates/landing/password_reset_request.html:18 +#: bookwyrm/templates/landing/password_reset_request.html:24 #: bookwyrm/templates/preferences/edit_user.html:53 #: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" @@ -1567,14 +1572,20 @@ msgstr "Du är inbjuden att gå med i %(site_name)s! Klicka på länken nedan f 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 +#: bookwyrm/templates/email/moderation_report/html_content.html:8 +#: bookwyrm/templates/email/moderation_report/text_content.html:6 #, python-format -msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " -msgstr "@%(reporter)s har flaggat beteende av @%(reportee)s för moderering. " +msgid "@%(reporter)s has flagged a link domain for moderation." +msgstr "" -#: bookwyrm/templates/email/moderation_report/html_content.html:9 -#: bookwyrm/templates/email/moderation_report/text_content.html:7 +#: bookwyrm/templates/email/moderation_report/html_content.html:14 +#: bookwyrm/templates/email/moderation_report/text_content.html:10 +#, python-format +msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation." +msgstr "" + +#: bookwyrm/templates/email/moderation_report/html_content.html:21 +#: bookwyrm/templates/email/moderation_report/text_content.html:15 msgid "View report" msgstr "Visa rapport" @@ -2268,10 +2279,15 @@ msgid "Confirm password:" msgstr "Bekräfta lösenordet:" #: bookwyrm/templates/landing/password_reset_request.html:14 +#, python-format +msgid "A password reset link will be sent to %(email)s if there is an account using that email address." +msgstr "" + +#: bookwyrm/templates/landing/password_reset_request.html:20 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 +#: bookwyrm/templates/landing/password_reset_request.html:34 msgid "Reset password" msgstr "Återställ lösenordet" @@ -2579,108 +2595,244 @@ msgstr "Alla listor" msgid "Saved Lists" msgstr "Sparade listor" -#: bookwyrm/templates/notifications/items/accept.html:16 +#: bookwyrm/templates/notifications/items/accept.html:18 #, python-format -msgid "accepted your invitation to join group \"%(group_name)s\"" -msgstr "accepterade din inbjudning att gå med i gruppen \"%(group_name)s\"" +msgid "%(related_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:24 +#: bookwyrm/templates/notifications/items/accept.html:26 #, 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\"" +msgid "%(related_user)s and %(second_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:31 +#: bookwyrm/templates/notifications/items/accept.html:36 #, 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\"" +msgid "%(related_user)s and %(other_user_display_count)s others accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:19 +#: bookwyrm/templates/notifications/items/add.html:33 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "ökade din recension av %(book_title)s" +msgid "%(related_user)s added %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:25 +#: bookwyrm/templates/notifications/items/add.html:39 #, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "ökade din kommentar på%(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:31 +#: bookwyrm/templates/notifications/items/add.html:47 #, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "ökade ditt citat på%(book_title)s" +msgid "%(related_user)s added %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:37 +#: bookwyrm/templates/notifications/items/add.html:54 #, python-format -msgid "boosted your status" -msgstr "ökade din status" +msgid "%(related_user)s suggested adding %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:19 +#: bookwyrm/templates/notifications/items/add.html:66 #, python-format -msgid "liked your review of %(book_title)s" -msgstr "gillade din recension av %(book_title)s" +msgid "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:25 +#: bookwyrm/templates/notifications/items/add.html:82 #, python-format -msgid "liked your comment on %(book_title)s" -msgstr "gillade din kommentar av %(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/notifications/items/fav.html:31 +#: bookwyrm/templates/notifications/items/boost.html:21 #, python-format -msgid "liked your quote from %(book_title)s" -msgstr "gillade ditt citat från %(book_title)s" +msgid "%(related_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:37 +#: bookwyrm/templates/notifications/items/boost.html:27 #, python-format -msgid "liked your status" -msgstr "gillade din status" +msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow.html:15 -msgid "followed you" -msgstr "följde dig" +#: bookwyrm/templates/notifications/items/boost.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s" +msgstr "" -#: 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/boost.html:44 +#, python-format +msgid "%(related_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:67 +#, python-format +msgid "%(related_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:90 +#, python-format +msgid "%(related_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:21 +#, python-format +msgid "%(related_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:27 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:44 +#, python-format +msgid "%(related_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:67 +#, python-format +msgid "%(related_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:90 +#, python-format +msgid "%(related_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:16 +#, python-format +msgid "%(related_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:20 +#, python-format +msgid "%(related_user)s and %(second_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:25 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow_request.html:15 +#, python-format +msgid "%(related_user)s sent you a follow request" +msgstr "" #: 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 +#: bookwyrm/templates/notifications/items/invite.html:16 #, 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\"" +msgid "%(related_user)s invited you to join the group \"%(group_name)s\"" +msgstr "" #: 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 +#: bookwyrm/templates/notifications/items/leave.html:18 #, python-format -msgid "has left your group \"%(group_name)s\"" -msgstr "har lämnat din grupp \"%(group_name)s\"" +msgid "%(related_user)s has left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:26 +#, python-format +msgid "%(related_user)s and %(second_user)s have left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s\"" +msgstr "" #: 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" +msgid "%(related_user)s mentioned you in a review of %(book_title)s" +msgstr "" #: 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" +msgid "%(related_user)s mentioned you in a comment on %(book_title)s" +msgstr "" #: 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" +msgid "%(related_user)s mentioned you in a quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:38 #, python-format -msgid "mentioned you in a status" -msgstr "nämnde dig i en status" +msgid "%(related_user)s mentioned you in a status" +msgstr "" #: bookwyrm/templates/notifications/items/remove.html:17 #, python-format @@ -2694,28 +2846,30 @@ msgstr "Du har tagits bort från gruppen \"%(group_na #: 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" +msgid "%(related_user)s replied to your review of %(book_title)s" +msgstr "" #: 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" +msgid "%(related_user)s replied to your comment on %(book_title)s" +msgstr "" #: 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" +msgid "%(related_user)s replied to your quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:39 #, python-format -msgid "replied to your status" -msgstr "svarade på din status" +msgid "%(related_user)s replied to your status" +msgstr "" #: bookwyrm/templates/notifications/items/report.html:15 #, python-format -msgid "A new report needs moderation." -msgstr "En ny rapport behöver moderering." +msgid "A new report needs moderation" +msgid_plural "%(display_count)s new reports need moderation" +msgstr[0] "" +msgstr[1] "" #: bookwyrm/templates/notifications/items/update.html:16 #, python-format @@ -3199,13 +3353,13 @@ msgstr "Falskt" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:105 msgid "Start date:" msgstr "Startdatum:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "End date:" msgstr "Slutdatum:" @@ -3365,7 +3519,7 @@ msgid "Dashboard" msgstr "Översiktspanel" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:134 msgid "Total users" msgstr "Totalt antal användare" @@ -3385,55 +3539,64 @@ msgstr "Verk" #: bookwyrm/templates/settings/dashboard/dashboard.html:43 #, python-format +msgid "Your outgoing email address, %(email_sender)s, may be misconfigured." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:46 +msgid "Check the EMAIL_SENDER_NAME and EMAIL_SENDER_DOMAIN in your .env." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#, 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:55 +#: bookwyrm/templates/settings/dashboard/dashboard.html:66 #, 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:67 +#: bookwyrm/templates/settings/dashboard/dashboard.html:78 #, 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:79 +#: bookwyrm/templates/settings/dashboard/dashboard.html:90 #, python-format msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." msgstr "En uppdatering är tillgänglig! Du kör v%(current)s och den senaste versionen är %(available)s." -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Instance Activity" msgstr "Instansaktivitet" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "Interval:" msgstr "Intervall:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:110 +#: bookwyrm/templates/settings/dashboard/dashboard.html:121 msgid "Days" msgstr "Dagar" -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:122 msgid "Weeks" msgstr "Veckor" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:140 msgid "User signup activity" msgstr "Användarens registreringsaktivitet" -#: bookwyrm/templates/settings/dashboard/dashboard.html:135 +#: bookwyrm/templates/settings/dashboard/dashboard.html:146 msgid "Status activity" msgstr "Statusaktivitet" -#: bookwyrm/templates/settings/dashboard/dashboard.html:141 +#: bookwyrm/templates/settings/dashboard/dashboard.html:152 msgid "Works created" msgstr "Skapade verk" @@ -3853,7 +4016,7 @@ msgstr "Inga domäner väntar för närvarande" msgid "No domains currently blocked" msgstr "Inga domäner är blockerade för närvarande" -#: bookwyrm/templates/settings/link_domains/link_table.html:39 +#: bookwyrm/templates/settings/link_domains/link_table.html:43 msgid "No links available for this domain." msgstr "Inga länkar tillgängliga för den här domänen." @@ -3881,11 +4044,11 @@ msgstr "Statusen har tagits bort" msgid "Reported links" msgstr "Rapporterade länkar" -#: bookwyrm/templates/settings/reports/report.html:63 +#: bookwyrm/templates/settings/reports/report.html:65 msgid "Moderator Comments" msgstr "Moderatorns kommentarer" -#: bookwyrm/templates/settings/reports/report.html:84 +#: bookwyrm/templates/settings/reports/report.html:86 #: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "Kommentar" @@ -3895,12 +4058,17 @@ msgstr "Kommentar" 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 +#: bookwyrm/templates/settings/reports/report_header.html:13 #, 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 +#: bookwyrm/templates/settings/reports/report_header.html:17 +#, python-format +msgid "Report #%(report_id)s: Link domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_header.html:24 #, python-format msgid "Report #%(report_id)s: User @%(username)s" msgstr "Rapport #%(report_id)s: Användare @%(username)s" @@ -4163,11 +4331,15 @@ msgid "Active" msgstr "Aktiv" #: bookwyrm/templates/settings/users/user_admin.html:79 +msgid "Deleted" +msgstr "" + +#: bookwyrm/templates/settings/users/user_admin.html:85 #: bookwyrm/templates/settings/users/user_info.html:32 msgid "Inactive" msgstr "Inaktiv" -#: bookwyrm/templates/settings/users/user_admin.html:88 +#: bookwyrm/templates/settings/users/user_admin.html:94 #: bookwyrm/templates/settings/users/user_info.html:127 msgid "Not set" msgstr "Inte inställd" @@ -5172,15 +5344,6 @@ msgstr "Inte en giltig csv-fil" 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}" diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo index 992a69576..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 5eb151b0a..effa15933 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-05-31 23:50+0000\n" -"PO-Revision-Date: 2022-06-01 00:55\n" +"POT-Creation-Date: 2022-07-07 17:47+0000\n" +"PO-Revision-Date: 2022-07-07 18:12\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Simplified\n" "Language: zh\n" @@ -121,7 +121,7 @@ msgstr "警告" msgid "Danger" msgstr "危险" -#: bookwyrm/models/antispam.py:106 bookwyrm/models/antispam.py:140 +#: bookwyrm/models/antispam.py:101 bookwyrm/models/antispam.py:135 msgid "Automatically generated report" msgstr "自动生成的举报" @@ -736,7 +736,7 @@ msgstr "ISNI:" #: bookwyrm/templates/book/book.html:202 #: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 -#: bookwyrm/templates/book/file_links/edit_links.html:82 +#: bookwyrm/templates/book/file_links/edit_links.html:86 #: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 @@ -1212,16 +1212,21 @@ msgstr "状态" msgid "Actions" msgstr "动作" -#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/edit_links.html:48 +#: bookwyrm/templates/settings/link_domains/link_table.html:21 +msgid "Unknown user" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:57 #: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "举报垃圾信息" -#: bookwyrm/templates/book/file_links/edit_links.html:97 +#: bookwyrm/templates/book/file_links/edit_links.html:101 msgid "No links available for this book." msgstr "此书没有可用链接。" -#: bookwyrm/templates/book/file_links/edit_links.html:108 +#: bookwyrm/templates/book/file_links/edit_links.html:112 #: bookwyrm/templates/book/file_links/links.html:18 msgid "Add link to file" msgstr "为文件添加链接" @@ -1318,7 +1323,7 @@ msgstr "确认代码:" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:81 -#: bookwyrm/templates/settings/dashboard/dashboard.html:116 +#: bookwyrm/templates/settings/dashboard/dashboard.html:127 #: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "提交" @@ -1334,7 +1339,7 @@ msgstr "重新发送确认链接" #: bookwyrm/templates/confirm_email/resend_modal.html:15 #: bookwyrm/templates/landing/layout.html:68 -#: bookwyrm/templates/landing/password_reset_request.html:18 +#: bookwyrm/templates/landing/password_reset_request.html:24 #: bookwyrm/templates/preferences/edit_user.html:53 #: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" @@ -1559,14 +1564,20 @@ msgstr "你受邀请加入 %(site_name)s!点击下面的连接来创建帐号 msgid "Learn more about %(site_name)s:" msgstr "进一步了解 %(site_name)s" -#: bookwyrm/templates/email/moderation_report/html_content.html:6 -#: bookwyrm/templates/email/moderation_report/text_content.html:5 +#: bookwyrm/templates/email/moderation_report/html_content.html:8 +#: bookwyrm/templates/email/moderation_report/text_content.html:6 #, python-format -msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " -msgstr "@%(reporter)s 标记了 @%(reportee)s 的行为需要进行审核。 " +msgid "@%(reporter)s has flagged a link domain for moderation." +msgstr "" -#: bookwyrm/templates/email/moderation_report/html_content.html:9 -#: bookwyrm/templates/email/moderation_report/text_content.html:7 +#: bookwyrm/templates/email/moderation_report/html_content.html:14 +#: bookwyrm/templates/email/moderation_report/text_content.html:10 +#, python-format +msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation." +msgstr "" + +#: bookwyrm/templates/email/moderation_report/html_content.html:21 +#: bookwyrm/templates/email/moderation_report/text_content.html:15 msgid "View report" msgstr "查看报告" @@ -2256,10 +2267,15 @@ msgid "Confirm password:" msgstr "确认密码:" #: bookwyrm/templates/landing/password_reset_request.html:14 +#, python-format +msgid "A password reset link will be sent to %(email)s if there is an account using that email address." +msgstr "" + +#: bookwyrm/templates/landing/password_reset_request.html:20 msgid "A link to reset your password will be sent to your email address" msgstr "重设你的密码的链接将会被发送到你的邮箱地址" -#: bookwyrm/templates/landing/password_reset_request.html:28 +#: bookwyrm/templates/landing/password_reset_request.html:34 msgid "Reset password" msgstr "重设密码" @@ -2567,108 +2583,242 @@ msgstr "所有列表" msgid "Saved Lists" msgstr "保存的列表" -#: bookwyrm/templates/notifications/items/accept.html:16 +#: bookwyrm/templates/notifications/items/accept.html:18 #, python-format -msgid "accepted your invitation to join group \"%(group_name)s\"" -msgstr "接受了您的邀请,加入了 \"%(group_name)s\" 群组" +msgid "%(related_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:24 +#: bookwyrm/templates/notifications/items/accept.html:26 #, python-format -msgid "added %(book_title)s to your list \"%(list_name)s\"" -msgstr "添加了 %(book_title)s 到你的列表 “%(list_name)s”" +msgid "%(related_user)s and %(second_user)s accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/add.html:31 +#: bookwyrm/templates/notifications/items/accept.html:36 #, python-format -msgid "suggested adding %(book_title)s to your list \"%(list_name)s\"" -msgstr "建议了添加 %(book_title)s 到你的列表 “%(list_name)s” 中" +msgid "%(related_user)s and %(other_user_display_count)s others accepted your invitation to join group \"%(group_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:19 +#: bookwyrm/templates/notifications/items/add.html:33 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "转发了你的 %(book_title)s 的书评" +msgid "%(related_user)s added %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:25 +#: bookwyrm/templates/notifications/items/add.html:39 #, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "转发了你的 %(book_title)s 的评论" +msgid "%(related_user)s suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:31 +#: bookwyrm/templates/notifications/items/add.html:47 #, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "转发了你的 %(book_title)s 的引用" +msgid "%(related_user)s added %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:37 +#: bookwyrm/templates/notifications/items/add.html:54 #, python-format -msgid "boosted your status" -msgstr "转发了你的 状态" +msgid "%(related_user)s suggested adding %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:19 +#: bookwyrm/templates/notifications/items/add.html:66 #, python-format -msgid "liked your review of %(book_title)s" -msgstr "喜欢了你 %(book_title)s 的书评" +msgid "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" -#: bookwyrm/templates/notifications/items/fav.html:25 +#: bookwyrm/templates/notifications/items/add.html:82 #, python-format -msgid "liked your comment on %(book_title)s" -msgstr "喜欢了你的 %(book_title)s 的评论" +msgid "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" -#: bookwyrm/templates/notifications/items/fav.html:31 +#: bookwyrm/templates/notifications/items/boost.html:21 #, python-format -msgid "liked your quote from %(book_title)s" -msgstr "喜欢了你的 %(book_title)s 的引用" +msgid "%(related_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:37 +#: bookwyrm/templates/notifications/items/boost.html:27 #, python-format -msgid "liked your status" -msgstr "喜欢了你的 状态" +msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow.html:15 -msgid "followed you" -msgstr "关注了你" +#: bookwyrm/templates/notifications/items/boost.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s" +msgstr "" -#: bookwyrm/templates/notifications/items/follow_request.html:11 -msgid "sent you a follow request" -msgstr "向你发送了关注请求" +#: bookwyrm/templates/notifications/items/boost.html:44 +#, python-format +msgid "%(related_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:67 +#, python-format +msgid "%(related_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:90 +#, python-format +msgid "%(related_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:21 +#, python-format +msgid "%(related_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:27 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:44 +#, python-format +msgid "%(related_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:67 +#, python-format +msgid "%(related_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:90 +#, python-format +msgid "%(related_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:16 +#, python-format +msgid "%(related_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:20 +#, python-format +msgid "%(related_user)s and %(second_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:25 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow_request.html:15 +#, python-format +msgid "%(related_user)s sent you a follow request" +msgstr "" #: bookwyrm/templates/notifications/items/import.html:14 #, python-format msgid "Your import completed." msgstr "你的 导入 已完成。" -#: bookwyrm/templates/notifications/items/invite.html:15 +#: bookwyrm/templates/notifications/items/invite.html:16 #, python-format -msgid "invited you to join the group \"%(group_name)s\"" -msgstr "邀请您加入群组 \"%(group_name)s\"" +msgid "%(related_user)s invited you to join the group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/join.html:16 #, python-format msgid "has joined your group \"%(group_name)s\"" msgstr "已加入您的群组 \"%(group_name)s\"" -#: bookwyrm/templates/notifications/items/leave.html:16 +#: bookwyrm/templates/notifications/items/leave.html:18 #, python-format -msgid "has left your group \"%(group_name)s\"" -msgstr "退出了您的群组 \"%(group_name)s\"" +msgid "%(related_user)s has left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:26 +#, python-format +msgid "%(related_user)s and %(second_user)s have left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s\"" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:20 #, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "在 %(book_title)s 的书评 里提到了你" +msgid "%(related_user)s mentioned you in a review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:26 #, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "在 %(book_title)s 的评论 里提到了你" +msgid "%(related_user)s mentioned you in a comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:32 #, python-format -msgid "mentioned you in a quote from %(book_title)s" -msgstr "在 %(book_title)s 的引用 中提到了你" +msgid "%(related_user)s mentioned you in a quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:38 #, python-format -msgid "mentioned you in a status" -msgstr "在 状态 中提到了你" +msgid "%(related_user)s mentioned you in a status" +msgstr "" #: bookwyrm/templates/notifications/items/remove.html:17 #, python-format @@ -2682,28 +2832,29 @@ msgstr "您已经被从 \"%(group_name)s\" 组中 #: bookwyrm/templates/notifications/items/reply.html:21 #, python-format -msgid "replied to your review of %(book_title)s" -msgstr "回复 了你的 %(book_title)s 的书评" +msgid "%(related_user)s replied to your review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:27 #, python-format -msgid "replied to your comment on %(book_title)s" -msgstr "回复 了你的 %(book_title)s 的评论" +msgid "%(related_user)s replied to your comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:33 #, python-format -msgid "replied to your quote from %(book_title)s" -msgstr "回复 了你 %(book_title)s 中的引用" +msgid "%(related_user)s replied to your quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:39 #, python-format -msgid "replied to your status" -msgstr "回复 了你的 状态" +msgid "%(related_user)s replied to your status" +msgstr "" #: bookwyrm/templates/notifications/items/report.html:15 #, python-format -msgid "A new report needs moderation." -msgstr "有新的 报告 需要仲裁。" +msgid "A new report needs moderation" +msgid_plural "%(display_count)s new reports need moderation" +msgstr[0] "" #: bookwyrm/templates/notifications/items/update.html:16 #, python-format @@ -3187,13 +3338,13 @@ msgstr "否" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:105 msgid "Start date:" msgstr "开始日期:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "End date:" msgstr "结束日期:" @@ -3353,7 +3504,7 @@ msgid "Dashboard" msgstr "仪表盘" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:134 msgid "Total users" msgstr "用户总数" @@ -3373,52 +3524,61 @@ msgstr "作品" #: bookwyrm/templates/settings/dashboard/dashboard.html:43 #, python-format +msgid "Your outgoing email address, %(email_sender)s, may be misconfigured." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:46 +msgid "Check the EMAIL_SENDER_NAME and EMAIL_SENDER_DOMAIN in your .env." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#, python-format msgid "%(display_count)s open report" msgid_plural "%(display_count)s open reports" msgstr[0] "%(display_count)s 条待处理报告" -#: bookwyrm/templates/settings/dashboard/dashboard.html:55 +#: bookwyrm/templates/settings/dashboard/dashboard.html:66 #, python-format msgid "%(display_count)s domain needs review" msgid_plural "%(display_count)s domains need review" msgstr[0] "%(display_count)s 个域名需要审核" -#: bookwyrm/templates/settings/dashboard/dashboard.html:67 +#: bookwyrm/templates/settings/dashboard/dashboard.html:78 #, 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:79 +#: bookwyrm/templates/settings/dashboard/dashboard.html:90 #, python-format msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." msgstr "有可用的更新!最新版本为:%(available)s,但你当前运行的版本为:%(current)s。" -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Instance Activity" msgstr "实例活动" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "Interval:" msgstr "区段:" -#: bookwyrm/templates/settings/dashboard/dashboard.html:110 +#: bookwyrm/templates/settings/dashboard/dashboard.html:121 msgid "Days" msgstr "天" -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:122 msgid "Weeks" msgstr "周" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:140 msgid "User signup activity" msgstr "用户注册活动" -#: bookwyrm/templates/settings/dashboard/dashboard.html:135 +#: bookwyrm/templates/settings/dashboard/dashboard.html:146 msgid "Status activity" msgstr "状态动态" -#: bookwyrm/templates/settings/dashboard/dashboard.html:141 +#: bookwyrm/templates/settings/dashboard/dashboard.html:152 msgid "Works created" msgstr "创建的作品" @@ -3837,7 +3997,7 @@ msgstr "没有当前待处理的域名" msgid "No domains currently blocked" msgstr "目前没有屏蔽的域名" -#: bookwyrm/templates/settings/link_domains/link_table.html:39 +#: bookwyrm/templates/settings/link_domains/link_table.html:43 msgid "No links available for this domain." msgstr "此域名没有可用链接。" @@ -3865,11 +4025,11 @@ msgstr "状态已被删除" msgid "Reported links" msgstr "报告的链接" -#: bookwyrm/templates/settings/reports/report.html:63 +#: bookwyrm/templates/settings/reports/report.html:65 msgid "Moderator Comments" msgstr "监察员评论" -#: bookwyrm/templates/settings/reports/report.html:84 +#: bookwyrm/templates/settings/reports/report.html:86 #: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "评论" @@ -3879,12 +4039,17 @@ msgstr "评论" msgid "Report #%(report_id)s: Status posted by @%(username)s" msgstr "报告 #%(report_id)s:由 @%(username)s 发布的状态" -#: bookwyrm/templates/settings/reports/report_header.html:12 +#: bookwyrm/templates/settings/reports/report_header.html:13 #, python-format msgid "Report #%(report_id)s: Link added by @%(username)s" msgstr "报告 #%(report_id)s:由 @%(username)s 添加的链接" -#: bookwyrm/templates/settings/reports/report_header.html:18 +#: bookwyrm/templates/settings/reports/report_header.html:17 +#, python-format +msgid "Report #%(report_id)s: Link domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_header.html:24 #, python-format msgid "Report #%(report_id)s: User @%(username)s" msgstr "报告 #%(report_id)s:用户 %(username)s" @@ -4147,11 +4312,15 @@ msgid "Active" msgstr "活跃" #: bookwyrm/templates/settings/users/user_admin.html:79 +msgid "Deleted" +msgstr "" + +#: bookwyrm/templates/settings/users/user_admin.html:85 #: bookwyrm/templates/settings/users/user_info.html:32 msgid "Inactive" msgstr "停用" -#: bookwyrm/templates/settings/users/user_admin.html:88 +#: bookwyrm/templates/settings/users/user_admin.html:94 #: bookwyrm/templates/settings/users/user_info.html:127 msgid "Not set" msgstr "未设置" @@ -5147,15 +5316,6 @@ msgstr "不是有效的 csv 文件" msgid "Username or password are incorrect" msgstr "用户名或密码不正确" -#: bookwyrm/views/landing/password.py:32 -msgid "No user with that email address was found." -msgstr "没有找到使用该邮箱的用户。" - -#: bookwyrm/views/landing/password.py:43 -#, python-brace-format -msgid "A password reset link was sent to {email}" -msgstr "密码重置连接已发送给 {email}" - #: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" diff --git a/locale/zh_Hant/LC_MESSAGES/django.mo b/locale/zh_Hant/LC_MESSAGES/django.mo index 50dfadffc..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 429a7f0b1..cb0c7244a 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-05-31 23:50+0000\n" -"PO-Revision-Date: 2022-06-01 00:55\n" +"POT-Creation-Date: 2022-07-07 17:47+0000\n" +"PO-Revision-Date: 2022-07-07 18:12\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Traditional\n" "Language: zh\n" @@ -121,7 +121,7 @@ msgstr "" msgid "Danger" msgstr "" -#: bookwyrm/models/antispam.py:106 bookwyrm/models/antispam.py:140 +#: bookwyrm/models/antispam.py:101 bookwyrm/models/antispam.py:135 msgid "Automatically generated report" msgstr "" @@ -736,7 +736,7 @@ msgstr "" #: bookwyrm/templates/book/book.html:202 #: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 -#: bookwyrm/templates/book/file_links/edit_links.html:82 +#: bookwyrm/templates/book/file_links/edit_links.html:86 #: bookwyrm/templates/groups/form.html:32 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/edit_item_form.html:15 @@ -1212,16 +1212,21 @@ msgstr "狀態" msgid "Actions" msgstr "動作" -#: bookwyrm/templates/book/file_links/edit_links.html:53 +#: bookwyrm/templates/book/file_links/edit_links.html:48 +#: bookwyrm/templates/settings/link_domains/link_table.html:21 +msgid "Unknown user" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:57 #: bookwyrm/templates/book/file_links/verification_modal.html:22 msgid "Report spam" msgstr "" -#: bookwyrm/templates/book/file_links/edit_links.html:97 +#: bookwyrm/templates/book/file_links/edit_links.html:101 msgid "No links available for this book." msgstr "" -#: bookwyrm/templates/book/file_links/edit_links.html:108 +#: bookwyrm/templates/book/file_links/edit_links.html:112 #: bookwyrm/templates/book/file_links/links.html:18 msgid "Add link to file" msgstr "" @@ -1318,7 +1323,7 @@ msgstr "" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:81 -#: bookwyrm/templates/settings/dashboard/dashboard.html:116 +#: bookwyrm/templates/settings/dashboard/dashboard.html:127 #: bookwyrm/templates/snippets/report_modal.html:53 msgid "Submit" msgstr "提交" @@ -1334,7 +1339,7 @@ msgstr "" #: bookwyrm/templates/confirm_email/resend_modal.html:15 #: bookwyrm/templates/landing/layout.html:68 -#: bookwyrm/templates/landing/password_reset_request.html:18 +#: bookwyrm/templates/landing/password_reset_request.html:24 #: bookwyrm/templates/preferences/edit_user.html:53 #: bookwyrm/templates/snippets/register_form.html:27 msgid "Email address:" @@ -1559,14 +1564,20 @@ msgstr "你受邀請加入 %(site_name)s!點選下面的連結來建立帳號 msgid "Learn more about %(site_name)s:" msgstr "" -#: bookwyrm/templates/email/moderation_report/html_content.html:6 -#: bookwyrm/templates/email/moderation_report/text_content.html:5 +#: bookwyrm/templates/email/moderation_report/html_content.html:8 +#: bookwyrm/templates/email/moderation_report/text_content.html:6 #, python-format -msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation. " +msgid "@%(reporter)s has flagged a link domain for moderation." msgstr "" -#: bookwyrm/templates/email/moderation_report/html_content.html:9 -#: bookwyrm/templates/email/moderation_report/text_content.html:7 +#: bookwyrm/templates/email/moderation_report/html_content.html:14 +#: bookwyrm/templates/email/moderation_report/text_content.html:10 +#, python-format +msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation." +msgstr "" + +#: bookwyrm/templates/email/moderation_report/html_content.html:21 +#: bookwyrm/templates/email/moderation_report/text_content.html:15 msgid "View report" msgstr "" @@ -2256,10 +2267,15 @@ msgid "Confirm password:" msgstr "確認密碼:" #: bookwyrm/templates/landing/password_reset_request.html:14 +#, python-format +msgid "A password reset link will be sent to %(email)s if there is an account using that email address." +msgstr "" + +#: bookwyrm/templates/landing/password_reset_request.html:20 msgid "A link to reset your password will be sent to your email address" msgstr "重設你的密碼的連結將會被發送到你的郵箱地址" -#: bookwyrm/templates/landing/password_reset_request.html:28 +#: bookwyrm/templates/landing/password_reset_request.html:34 msgid "Reset password" msgstr "重設密碼" @@ -2567,77 +2583,201 @@ msgstr "" msgid "Saved Lists" msgstr "" -#: bookwyrm/templates/notifications/items/accept.html:16 +#: bookwyrm/templates/notifications/items/accept.html:18 #, python-format -msgid "accepted your invitation to join group \"%(group_name)s\"" +msgid "%(related_user)s accepted your invitation to join group \"%(group_name)s\"" msgstr "" -#: bookwyrm/templates/notifications/items/add.html:24 +#: bookwyrm/templates/notifications/items/accept.html:26 #, python-format -msgid "added %(book_title)s to your list \"%(list_name)s\"" +msgid "%(related_user)s and %(second_user)s accepted your invitation to join group \"%(group_name)s\"" msgstr "" -#: bookwyrm/templates/notifications/items/add.html:31 +#: bookwyrm/templates/notifications/items/accept.html:36 #, python-format -msgid "suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgid "%(related_user)s and %(other_user_display_count)s others accepted your invitation to join group \"%(group_name)s\"" msgstr "" -#: bookwyrm/templates/notifications/items/boost.html:19 +#: bookwyrm/templates/notifications/items/add.html:33 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "轉發了你的 %(book_title)s 的書評" - -#: bookwyrm/templates/notifications/items/boost.html:25 -#, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "轉發了你的 %(book_title)s 的評論" - -#: bookwyrm/templates/notifications/items/boost.html:31 -#, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "轉發了你的 %(book_title)s 的引用" - -#: bookwyrm/templates/notifications/items/boost.html:37 -#, python-format -msgid "boosted your status" -msgstr "轉發了你的 狀態" - -#: bookwyrm/templates/notifications/items/fav.html:19 -#, python-format -msgid "liked your review of %(book_title)s" +msgid "%(related_user)s added %(book_title)s to your list \"%(list_name)s\"" msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:25 +#: bookwyrm/templates/notifications/items/add.html:39 #, python-format -msgid "liked your comment on %(book_title)s" +msgid "%(related_user)s suggested adding %(book_title)s to your list \"%(list_name)s\"" msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:31 +#: bookwyrm/templates/notifications/items/add.html:47 #, python-format -msgid "liked your quote from %(book_title)s" +msgid "%(related_user)s added %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" msgstr "" -#: bookwyrm/templates/notifications/items/fav.html:37 +#: bookwyrm/templates/notifications/items/add.html:54 #, python-format -msgid "liked your status" +msgid "%(related_user)s suggested adding %(book_title)s and %(second_book_title)s to your list \"%(list_name)s\"" msgstr "" -#: bookwyrm/templates/notifications/items/follow.html:15 -msgid "followed you" -msgstr "關注了你" +#: bookwyrm/templates/notifications/items/add.html:66 +#, python-format +msgid "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s added %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" -#: bookwyrm/templates/notifications/items/follow_request.html:11 -msgid "sent you a follow request" -msgstr "向你傳送了關注請求" +#: bookwyrm/templates/notifications/items/add.html:82 +#, python-format +msgid "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other book to your list \"%(list_name)s\"" +msgid_plural "%(related_user)s suggested adding %(book_title)s, %(second_book_title)s, and %(display_count)s other books to your list \"%(list_name)s\"" +msgstr[0] "" + +#: bookwyrm/templates/notifications/items/boost.html:21 +#, python-format +msgid "%(related_user)s boosted your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:27 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:44 +#, python-format +msgid "%(related_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:67 +#, python-format +msgid "%(related_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:90 +#, python-format +msgid "%(related_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/boost.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:21 +#, python-format +msgid "%(related_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:27 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:44 +#, python-format +msgid "%(related_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:50 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:59 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your comment on %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:67 +#, python-format +msgid "%(related_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:73 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:82 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:90 +#, python-format +msgid "%(related_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:96 +#, python-format +msgid "%(related_user)s and %(second_user)s liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/fav.html:105 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others liked your status" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:16 +#, python-format +msgid "%(related_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:20 +#, python-format +msgid "%(related_user)s and %(second_user)s followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow.html:25 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others followed you" +msgstr "" + +#: bookwyrm/templates/notifications/items/follow_request.html:15 +#, python-format +msgid "%(related_user)s sent you a follow request" +msgstr "" #: bookwyrm/templates/notifications/items/import.html:14 #, python-format msgid "Your import completed." msgstr "你的 匯入 已完成。" -#: bookwyrm/templates/notifications/items/invite.html:15 +#: bookwyrm/templates/notifications/items/invite.html:16 #, python-format -msgid "invited you to join the group \"%(group_name)s\"" +msgid "%(related_user)s invited you to join the group \"%(group_name)s\"" msgstr "" #: bookwyrm/templates/notifications/items/join.html:16 @@ -2645,30 +2785,40 @@ msgstr "" msgid "has joined your group \"%(group_name)s\"" msgstr "" -#: bookwyrm/templates/notifications/items/leave.html:16 +#: bookwyrm/templates/notifications/items/leave.html:18 #, python-format -msgid "has left your group \"%(group_name)s\"" +msgid "%(related_user)s has left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:26 +#, python-format +msgid "%(related_user)s and %(second_user)s have left your group \"%(group_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications/items/leave.html:36 +#, python-format +msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s\"" msgstr "" #: bookwyrm/templates/notifications/items/mention.html:20 #, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "在 %(book_title)s 的書評 裡提到了你" +msgid "%(related_user)s mentioned you in a review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:26 #, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "在 %(book_title)s 的評論 裡提到了你" +msgid "%(related_user)s mentioned you in a comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:32 #, python-format -msgid "mentioned you in a quote from %(book_title)s" -msgstr "在 %(book_title)s 的引用 中提到了你" +msgid "%(related_user)s mentioned you in a quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/mention.html:38 #, python-format -msgid "mentioned you in a status" -msgstr "在 狀態 中提到了你" +msgid "%(related_user)s mentioned you in a status" +msgstr "" #: bookwyrm/templates/notifications/items/remove.html:17 #, python-format @@ -2682,28 +2832,29 @@ msgstr "" #: bookwyrm/templates/notifications/items/reply.html:21 #, python-format -msgid "replied to your review of %(book_title)s" -msgstr "回覆 了你的 %(book_title)s 的書評" +msgid "%(related_user)s replied to your review of %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:27 #, python-format -msgid "replied to your comment on %(book_title)s" -msgstr "回覆 了你的 %(book_title)s 的評論" +msgid "%(related_user)s replied to your comment on %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:33 #, python-format -msgid "replied to your quote from %(book_title)s" -msgstr "回覆 了你 %(book_title)s 中的引用" +msgid "%(related_user)s replied to your quote from %(book_title)s" +msgstr "" #: bookwyrm/templates/notifications/items/reply.html:39 #, python-format -msgid "replied to your status" -msgstr "回覆 了你的 狀態" +msgid "%(related_user)s replied to your status" +msgstr "" #: bookwyrm/templates/notifications/items/report.html:15 #, python-format -msgid "A new report needs moderation." -msgstr "有新的 舉報 需要仲裁。" +msgid "A new report needs moderation" +msgid_plural "%(display_count)s new reports need moderation" +msgstr[0] "" #: bookwyrm/templates/notifications/items/update.html:16 #, python-format @@ -3185,13 +3336,13 @@ msgstr "否" #: bookwyrm/templates/settings/announcements/announcement.html:57 #: bookwyrm/templates/settings/announcements/edit_announcement.html:79 -#: bookwyrm/templates/settings/dashboard/dashboard.html:94 +#: bookwyrm/templates/settings/dashboard/dashboard.html:105 msgid "Start date:" msgstr "開始日期:" #: bookwyrm/templates/settings/announcements/announcement.html:62 #: bookwyrm/templates/settings/announcements/edit_announcement.html:89 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "End date:" msgstr "結束日期:" @@ -3351,7 +3502,7 @@ msgid "Dashboard" msgstr "" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:123 +#: bookwyrm/templates/settings/dashboard/dashboard.html:134 msgid "Total users" msgstr "" @@ -3371,52 +3522,61 @@ msgstr "" #: bookwyrm/templates/settings/dashboard/dashboard.html:43 #, python-format +msgid "Your outgoing email address, %(email_sender)s, may be misconfigured." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:46 +msgid "Check the EMAIL_SENDER_NAME and EMAIL_SENDER_DOMAIN in your .env." +msgstr "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:54 +#, python-format msgid "%(display_count)s open report" msgid_plural "%(display_count)s open reports" msgstr[0] "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:55 +#: bookwyrm/templates/settings/dashboard/dashboard.html:66 #, 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:67 +#: bookwyrm/templates/settings/dashboard/dashboard.html:78 #, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:79 +#: bookwyrm/templates/settings/dashboard/dashboard.html:90 #, python-format msgid "An update is available! You're running v%(current)s and the latest release is %(available)s." msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Instance Activity" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "Interval:" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:110 +#: bookwyrm/templates/settings/dashboard/dashboard.html:121 msgid "Days" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:111 +#: bookwyrm/templates/settings/dashboard/dashboard.html:122 msgid "Weeks" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:129 +#: bookwyrm/templates/settings/dashboard/dashboard.html:140 msgid "User signup activity" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:135 +#: bookwyrm/templates/settings/dashboard/dashboard.html:146 msgid "Status activity" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:141 +#: bookwyrm/templates/settings/dashboard/dashboard.html:152 msgid "Works created" msgstr "" @@ -3835,7 +3995,7 @@ msgstr "" msgid "No domains currently blocked" msgstr "" -#: bookwyrm/templates/settings/link_domains/link_table.html:39 +#: bookwyrm/templates/settings/link_domains/link_table.html:43 msgid "No links available for this domain." msgstr "" @@ -3863,11 +4023,11 @@ msgstr "狀態已被刪除" msgid "Reported links" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:63 +#: bookwyrm/templates/settings/reports/report.html:65 msgid "Moderator Comments" msgstr "監察員評論" -#: bookwyrm/templates/settings/reports/report.html:84 +#: bookwyrm/templates/settings/reports/report.html:86 #: bookwyrm/templates/snippets/create_status.html:26 msgid "Comment" msgstr "評論" @@ -3877,12 +4037,17 @@ msgstr "評論" msgid "Report #%(report_id)s: Status posted by @%(username)s" msgstr "" -#: bookwyrm/templates/settings/reports/report_header.html:12 +#: bookwyrm/templates/settings/reports/report_header.html:13 #, python-format msgid "Report #%(report_id)s: Link added by @%(username)s" msgstr "" -#: bookwyrm/templates/settings/reports/report_header.html:18 +#: bookwyrm/templates/settings/reports/report_header.html:17 +#, python-format +msgid "Report #%(report_id)s: Link domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_header.html:24 #, python-format msgid "Report #%(report_id)s: User @%(username)s" msgstr "" @@ -4145,11 +4310,15 @@ msgid "Active" msgstr "活躍" #: bookwyrm/templates/settings/users/user_admin.html:79 +msgid "Deleted" +msgstr "" + +#: bookwyrm/templates/settings/users/user_admin.html:85 #: bookwyrm/templates/settings/users/user_info.html:32 msgid "Inactive" msgstr "停用" -#: bookwyrm/templates/settings/users/user_admin.html:88 +#: bookwyrm/templates/settings/users/user_admin.html:94 #: bookwyrm/templates/settings/users/user_info.html:127 msgid "Not set" msgstr "未設定" @@ -5145,15 +5314,6 @@ msgstr "不是有效的 csv 檔案" msgid "Username or password are incorrect" msgstr "" -#: bookwyrm/views/landing/password.py:32 -msgid "No user with that email address was found." -msgstr "沒有找到使用該郵箱的使用者。" - -#: bookwyrm/views/landing/password.py:43 -#, python-brace-format -msgid "A password reset link was sent to {email}" -msgstr "密碼重置連結已傳送給 {email}" - #: bookwyrm/views/rss_feed.py:34 #, python-brace-format msgid "Status updates from {obj.display_name}" diff --git a/requirements.txt b/requirements.txt index 0155782cc..6ab3103b9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,8 @@ aiohttp==3.8.1 +bleach==5.0.1 celery==5.2.2 colorthief==0.2.1 -Django==3.2.13 +Django==3.2.14 django-celery-beat==2.2.1 django-compressor==2.4.1 django-imagekit==4.1.0