mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-11-25 19:11:09 +00:00
Merge branch 'main' into main
This commit is contained in:
commit
bbed08e182
114 changed files with 5114 additions and 2390 deletions
|
@ -5,3 +5,4 @@ __pycache__
|
|||
.git
|
||||
.github
|
||||
.pytest*
|
||||
.env
|
||||
|
|
|
@ -82,6 +82,12 @@ AWS_SECRET_ACCESS_KEY=
|
|||
# AWS_S3_REGION_NAME=None # "fr-par"
|
||||
# AWS_S3_ENDPOINT_URL=None # "https://s3.fr-par.scw.cloud"
|
||||
|
||||
# Commented are example values if you use Azure Blob Storage
|
||||
# USE_AZURE=true
|
||||
# AZURE_ACCOUNT_NAME= # "example-account-name"
|
||||
# AZURE_ACCOUNT_KEY= # "base64-encoded-access-key"
|
||||
# AZURE_CONTAINER= # "example-blob-container-name"
|
||||
# AZURE_CUSTOM_DOMAIN= # "example-account-name.blob.core.windows.net"
|
||||
|
||||
# Preview image generation can be computing and storage intensive
|
||||
ENABLE_PREVIEW_IMAGES=False
|
||||
|
|
|
@ -3,7 +3,7 @@ import inspect
|
|||
import sys
|
||||
|
||||
from .base_activity import ActivityEncoder, Signature, naive_parse
|
||||
from .base_activity import Link, Mention
|
||||
from .base_activity import Link, Mention, Hashtag
|
||||
from .base_activity import ActivitySerializerError, resolve_remote_id
|
||||
from .image import Document, Image
|
||||
from .note import Note, GeneratedNote, Article, Comment, Quotation
|
||||
|
|
|
@ -100,9 +100,27 @@ class ActivityObject:
|
|||
|
||||
# pylint: disable=too-many-locals,too-many-branches,too-many-arguments
|
||||
def to_model(
|
||||
self, model=None, instance=None, allow_create=True, save=True, overwrite=True
|
||||
self,
|
||||
model=None,
|
||||
instance=None,
|
||||
allow_create=True,
|
||||
save=True,
|
||||
overwrite=True,
|
||||
allow_external_connections=True,
|
||||
):
|
||||
"""convert from an activity to a model instance"""
|
||||
"""convert from an activity to a model instance. Args:
|
||||
model: the django model that this object is being converted to
|
||||
(will guess if not known)
|
||||
instance: an existing database entry that is going to be updated by
|
||||
this activity
|
||||
allow_create: whether a new object should be created if there is no
|
||||
existing object is provided or found matching the remote_id
|
||||
save: store in the database if true, return an unsaved model obj if false
|
||||
overwrite: replace fields in the database with this activity if true,
|
||||
only update blank fields if false
|
||||
allow_external_connections: look up missing data if true,
|
||||
throw an exception if false and an external connection is needed
|
||||
"""
|
||||
model = model or get_model_from_type(self.type)
|
||||
|
||||
# only reject statuses if we're potentially creating them
|
||||
|
@ -127,7 +145,10 @@ class ActivityObject:
|
|||
for field in instance.simple_fields:
|
||||
try:
|
||||
changed = field.set_field_from_activity(
|
||||
instance, self, overwrite=overwrite
|
||||
instance,
|
||||
self,
|
||||
overwrite=overwrite,
|
||||
allow_external_connections=allow_external_connections,
|
||||
)
|
||||
if changed:
|
||||
update_fields.append(field.name)
|
||||
|
@ -138,7 +159,11 @@ class ActivityObject:
|
|||
# too early and jank up users
|
||||
for field in instance.image_fields:
|
||||
changed = field.set_field_from_activity(
|
||||
instance, self, save=save, overwrite=overwrite
|
||||
instance,
|
||||
self,
|
||||
save=save,
|
||||
overwrite=overwrite,
|
||||
allow_external_connections=allow_external_connections,
|
||||
)
|
||||
if changed:
|
||||
update_fields.append(field.name)
|
||||
|
@ -161,8 +186,12 @@ class ActivityObject:
|
|||
|
||||
# add many to many fields, which have to be set post-save
|
||||
for field in instance.many_to_many_fields:
|
||||
# mention books/users, for example
|
||||
field.set_field_from_activity(instance, self)
|
||||
# mention books/users/hashtags, for example
|
||||
field.set_field_from_activity(
|
||||
instance,
|
||||
self,
|
||||
allow_external_connections=allow_external_connections,
|
||||
)
|
||||
|
||||
# reversed relationships in the models
|
||||
for (
|
||||
|
@ -212,7 +241,7 @@ class ActivityObject:
|
|||
return data
|
||||
|
||||
|
||||
@app.task(queue=MEDIUM)
|
||||
@app.task(queue=MEDIUM, ignore_result=True)
|
||||
@transaction.atomic
|
||||
def set_related_field(
|
||||
model_name, origin_model_name, related_field_name, related_remote_id, data
|
||||
|
@ -266,10 +295,22 @@ def get_model_from_type(activity_type):
|
|||
return model[0]
|
||||
|
||||
|
||||
# pylint: disable=too-many-arguments
|
||||
def resolve_remote_id(
|
||||
remote_id, model=None, refresh=False, save=True, get_activity=False
|
||||
remote_id,
|
||||
model=None,
|
||||
refresh=False,
|
||||
save=True,
|
||||
get_activity=False,
|
||||
allow_external_connections=True,
|
||||
):
|
||||
"""take a remote_id and return an instance, creating if necessary"""
|
||||
"""take a remote_id and return an instance, creating if necessary. Args:
|
||||
remote_id: the unique url for looking up the object in the db or by http
|
||||
model: a string or object representing the model that corresponds to the object
|
||||
save: whether to return an unsaved database entry or a saved one
|
||||
get_activity: whether to return the activitypub object or the model object
|
||||
allow_external_connections: whether to make http connections
|
||||
"""
|
||||
if model: # a bonus check we can do if we already know the model
|
||||
if isinstance(model, str):
|
||||
model = apps.get_model(f"bookwyrm.{model}", require_ready=True)
|
||||
|
@ -277,6 +318,13 @@ def resolve_remote_id(
|
|||
if result and not refresh:
|
||||
return result if not get_activity else result.to_activity_dataclass()
|
||||
|
||||
# The above block will return the object if it already exists in the database.
|
||||
# If it doesn't, an external connection would be needed, so check if that's cool
|
||||
if not allow_external_connections:
|
||||
raise ActivitySerializerError(
|
||||
"Unable to serialize object without making external HTTP requests"
|
||||
)
|
||||
|
||||
# load the data and create the object
|
||||
try:
|
||||
data = get_data(remote_id)
|
||||
|
@ -378,3 +426,10 @@ class Mention(Link):
|
|||
"""a subtype of Link for mentioning an actor"""
|
||||
|
||||
type: str = "Mention"
|
||||
|
||||
|
||||
@dataclass(init=False)
|
||||
class Hashtag(Link):
|
||||
"""a subtype of Link for mentioning a hashtag"""
|
||||
|
||||
type: str = "Hashtag"
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
""" note serializer and children thereof """
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Dict, List
|
||||
from django.apps import apps
|
||||
import re
|
||||
|
||||
from .base_activity import ActivityObject, Link
|
||||
from django.apps import apps
|
||||
from django.db import IntegrityError, transaction
|
||||
|
||||
from .base_activity import ActivityObject, ActivitySerializerError, Link
|
||||
from .image import Document
|
||||
|
||||
|
||||
|
@ -38,6 +41,47 @@ class Note(ActivityObject):
|
|||
updated: str = None
|
||||
type: str = "Note"
|
||||
|
||||
# pylint: disable=too-many-arguments
|
||||
def to_model(
|
||||
self,
|
||||
model=None,
|
||||
instance=None,
|
||||
allow_create=True,
|
||||
save=True,
|
||||
overwrite=True,
|
||||
allow_external_connections=True,
|
||||
):
|
||||
instance = super().to_model(
|
||||
model, instance, allow_create, save, overwrite, allow_external_connections
|
||||
)
|
||||
|
||||
if instance is None:
|
||||
return instance
|
||||
|
||||
# Replace links to hashtags in content with local URLs
|
||||
changed_content = False
|
||||
for hashtag in instance.mention_hashtags.all():
|
||||
updated_content = re.sub(
|
||||
rf'(<a href=")[^"]*(" data-mention="hashtag">{hashtag.name}</a>)',
|
||||
rf"\1{hashtag.remote_id}\2",
|
||||
instance.content,
|
||||
flags=re.IGNORECASE,
|
||||
)
|
||||
if instance.content != updated_content:
|
||||
instance.content = updated_content
|
||||
changed_content = True
|
||||
|
||||
if not save or not changed_content:
|
||||
return instance
|
||||
|
||||
with transaction.atomic():
|
||||
try:
|
||||
instance.save(broadcast=False, update_fields=["content"])
|
||||
except IntegrityError as e:
|
||||
raise ActivitySerializerError(e)
|
||||
|
||||
return instance
|
||||
|
||||
|
||||
@dataclass(init=False)
|
||||
class Article(Note):
|
||||
|
|
|
@ -14,12 +14,12 @@ class Verb(ActivityObject):
|
|||
actor: str
|
||||
object: ActivityObject
|
||||
|
||||
def action(self):
|
||||
def action(self, allow_external_connections=True):
|
||||
"""usually we just want to update and save"""
|
||||
# self.object may return None if the object is invalid in an expected way
|
||||
# ie, Question type
|
||||
if self.object:
|
||||
self.object.to_model()
|
||||
self.object.to_model(allow_external_connections=allow_external_connections)
|
||||
|
||||
|
||||
# pylint: disable=invalid-name
|
||||
|
@ -42,7 +42,7 @@ class Delete(Verb):
|
|||
cc: List[str] = field(default_factory=lambda: [])
|
||||
type: str = "Delete"
|
||||
|
||||
def action(self):
|
||||
def action(self, allow_external_connections=True):
|
||||
"""find and delete the activity object"""
|
||||
if not self.object:
|
||||
return
|
||||
|
@ -52,7 +52,11 @@ class Delete(Verb):
|
|||
model = apps.get_model("bookwyrm.User")
|
||||
obj = model.find_existing_by_remote_id(self.object)
|
||||
else:
|
||||
obj = self.object.to_model(save=False, allow_create=False)
|
||||
obj = self.object.to_model(
|
||||
save=False,
|
||||
allow_create=False,
|
||||
allow_external_connections=allow_external_connections,
|
||||
)
|
||||
|
||||
if obj:
|
||||
obj.delete()
|
||||
|
@ -67,11 +71,13 @@ class Update(Verb):
|
|||
to: List[str]
|
||||
type: str = "Update"
|
||||
|
||||
def action(self):
|
||||
def action(self, allow_external_connections=True):
|
||||
"""update a model instance from the dataclass"""
|
||||
if not self.object:
|
||||
return
|
||||
self.object.to_model(allow_create=False)
|
||||
self.object.to_model(
|
||||
allow_create=False, allow_external_connections=allow_external_connections
|
||||
)
|
||||
|
||||
|
||||
@dataclass(init=False)
|
||||
|
@ -80,7 +86,7 @@ class Undo(Verb):
|
|||
|
||||
type: str = "Undo"
|
||||
|
||||
def action(self):
|
||||
def action(self, allow_external_connections=True):
|
||||
"""find and remove the activity object"""
|
||||
if isinstance(self.object, str):
|
||||
# it may be that something should be done with these, but idk what
|
||||
|
@ -92,13 +98,28 @@ class Undo(Verb):
|
|||
model = None
|
||||
if self.object.type == "Follow":
|
||||
model = apps.get_model("bookwyrm.UserFollows")
|
||||
obj = self.object.to_model(model=model, save=False, allow_create=False)
|
||||
obj = self.object.to_model(
|
||||
model=model,
|
||||
save=False,
|
||||
allow_create=False,
|
||||
allow_external_connections=allow_external_connections,
|
||||
)
|
||||
if not obj:
|
||||
# this could be a follow request not a follow proper
|
||||
model = apps.get_model("bookwyrm.UserFollowRequest")
|
||||
obj = self.object.to_model(model=model, save=False, allow_create=False)
|
||||
obj = self.object.to_model(
|
||||
model=model,
|
||||
save=False,
|
||||
allow_create=False,
|
||||
allow_external_connections=allow_external_connections,
|
||||
)
|
||||
else:
|
||||
obj = self.object.to_model(model=model, save=False, allow_create=False)
|
||||
obj = self.object.to_model(
|
||||
model=model,
|
||||
save=False,
|
||||
allow_create=False,
|
||||
allow_external_connections=allow_external_connections,
|
||||
)
|
||||
if not obj:
|
||||
# if we don't have the object, we can't undo it. happens a lot with boosts
|
||||
return
|
||||
|
@ -112,9 +133,9 @@ class Follow(Verb):
|
|||
object: str
|
||||
type: str = "Follow"
|
||||
|
||||
def action(self):
|
||||
def action(self, allow_external_connections=True):
|
||||
"""relationship save"""
|
||||
self.to_model()
|
||||
self.to_model(allow_external_connections=allow_external_connections)
|
||||
|
||||
|
||||
@dataclass(init=False)
|
||||
|
@ -124,9 +145,9 @@ class Block(Verb):
|
|||
object: str
|
||||
type: str = "Block"
|
||||
|
||||
def action(self):
|
||||
def action(self, allow_external_connections=True):
|
||||
"""relationship save"""
|
||||
self.to_model()
|
||||
self.to_model(allow_external_connections=allow_external_connections)
|
||||
|
||||
|
||||
@dataclass(init=False)
|
||||
|
@ -136,7 +157,7 @@ class Accept(Verb):
|
|||
object: Follow
|
||||
type: str = "Accept"
|
||||
|
||||
def action(self):
|
||||
def action(self, allow_external_connections=True):
|
||||
"""accept a request"""
|
||||
obj = self.object.to_model(save=False, allow_create=True)
|
||||
obj.accept()
|
||||
|
@ -149,7 +170,7 @@ class Reject(Verb):
|
|||
object: Follow
|
||||
type: str = "Reject"
|
||||
|
||||
def action(self):
|
||||
def action(self, allow_external_connections=True):
|
||||
"""reject a follow request"""
|
||||
obj = self.object.to_model(save=False, allow_create=False)
|
||||
obj.reject()
|
||||
|
@ -163,7 +184,7 @@ class Add(Verb):
|
|||
object: CollectionItem
|
||||
type: str = "Add"
|
||||
|
||||
def action(self):
|
||||
def action(self, allow_external_connections=True):
|
||||
"""figure out the target to assign the item to a collection"""
|
||||
target = resolve_remote_id(self.target)
|
||||
item = self.object.to_model(save=False)
|
||||
|
@ -177,7 +198,7 @@ class Remove(Add):
|
|||
|
||||
type: str = "Remove"
|
||||
|
||||
def action(self):
|
||||
def action(self, allow_external_connections=True):
|
||||
"""find and remove the activity object"""
|
||||
obj = self.object.to_model(save=False, allow_create=False)
|
||||
if obj:
|
||||
|
@ -191,9 +212,9 @@ class Like(Verb):
|
|||
object: str
|
||||
type: str = "Like"
|
||||
|
||||
def action(self):
|
||||
def action(self, allow_external_connections=True):
|
||||
"""like"""
|
||||
self.to_model()
|
||||
self.to_model(allow_external_connections=allow_external_connections)
|
||||
|
||||
|
||||
# pylint: disable=invalid-name
|
||||
|
@ -207,6 +228,6 @@ class Announce(Verb):
|
|||
object: str
|
||||
type: str = "Announce"
|
||||
|
||||
def action(self):
|
||||
def action(self, allow_external_connections=True):
|
||||
"""boost"""
|
||||
self.to_model()
|
||||
self.to_model(allow_external_connections=allow_external_connections)
|
||||
|
|
|
@ -13,18 +13,18 @@ from bookwyrm.tasks import app, LOW, MEDIUM, HIGH
|
|||
class ActivityStream(RedisStore):
|
||||
"""a category of activity stream (like home, local, books)"""
|
||||
|
||||
def stream_id(self, user):
|
||||
def stream_id(self, user_id):
|
||||
"""the redis key for this user's instance of this stream"""
|
||||
return f"{user.id}-{self.key}"
|
||||
return f"{user_id}-{self.key}"
|
||||
|
||||
def unread_id(self, user):
|
||||
def unread_id(self, user_id):
|
||||
"""the redis key for this user's unread count for this stream"""
|
||||
stream_id = self.stream_id(user)
|
||||
stream_id = self.stream_id(user_id)
|
||||
return f"{stream_id}-unread"
|
||||
|
||||
def unread_by_status_type_id(self, user):
|
||||
def unread_by_status_type_id(self, user_id):
|
||||
"""the redis key for this user's unread count for this stream"""
|
||||
stream_id = self.stream_id(user)
|
||||
stream_id = self.stream_id(user_id)
|
||||
return f"{stream_id}-unread-by-type"
|
||||
|
||||
def get_rank(self, obj): # pylint: disable=no-self-use
|
||||
|
@ -37,12 +37,12 @@ class ActivityStream(RedisStore):
|
|||
pipeline = self.add_object_to_related_stores(status, execute=False)
|
||||
|
||||
if increment_unread:
|
||||
for user in self.get_audience(status):
|
||||
for user_id in self.get_audience(status):
|
||||
# add to the unread status count
|
||||
pipeline.incr(self.unread_id(user))
|
||||
pipeline.incr(self.unread_id(user_id))
|
||||
# add to the unread status count for status type
|
||||
pipeline.hincrby(
|
||||
self.unread_by_status_type_id(user), get_status_type(status), 1
|
||||
self.unread_by_status_type_id(user_id), get_status_type(status), 1
|
||||
)
|
||||
|
||||
# and go!
|
||||
|
@ -52,21 +52,21 @@ class ActivityStream(RedisStore):
|
|||
"""add a user's statuses to another user's feed"""
|
||||
# only add the statuses that the viewer should be able to see (ie, not dms)
|
||||
statuses = models.Status.privacy_filter(viewer).filter(user=user)
|
||||
self.bulk_add_objects_to_store(statuses, self.stream_id(viewer))
|
||||
self.bulk_add_objects_to_store(statuses, self.stream_id(viewer.id))
|
||||
|
||||
def remove_user_statuses(self, viewer, user):
|
||||
"""remove a user's status from another user's feed"""
|
||||
# remove all so that followers only statuses are removed
|
||||
statuses = user.status_set.all()
|
||||
self.bulk_remove_objects_from_store(statuses, self.stream_id(viewer))
|
||||
self.bulk_remove_objects_from_store(statuses, self.stream_id(viewer.id))
|
||||
|
||||
def get_activity_stream(self, user):
|
||||
"""load the statuses to be displayed"""
|
||||
# clear unreads for this feed
|
||||
r.set(self.unread_id(user), 0)
|
||||
r.delete(self.unread_by_status_type_id(user))
|
||||
r.set(self.unread_id(user.id), 0)
|
||||
r.delete(self.unread_by_status_type_id(user.id))
|
||||
|
||||
statuses = self.get_store(self.stream_id(user))
|
||||
statuses = self.get_store(self.stream_id(user.id))
|
||||
return (
|
||||
models.Status.objects.select_subclasses()
|
||||
.filter(id__in=statuses)
|
||||
|
@ -83,11 +83,11 @@ class ActivityStream(RedisStore):
|
|||
|
||||
def get_unread_count(self, user):
|
||||
"""get the unread status count for this user's feed"""
|
||||
return int(r.get(self.unread_id(user)) or 0)
|
||||
return int(r.get(self.unread_id(user.id)) or 0)
|
||||
|
||||
def get_unread_count_by_status_type(self, user):
|
||||
"""get the unread status count for this user's feed's status types"""
|
||||
status_types = r.hgetall(self.unread_by_status_type_id(user))
|
||||
status_types = r.hgetall(self.unread_by_status_type_id(user.id))
|
||||
return {
|
||||
str(key.decode("utf-8")): int(value) or 0
|
||||
for key, value in status_types.items()
|
||||
|
@ -95,9 +95,9 @@ class ActivityStream(RedisStore):
|
|||
|
||||
def populate_streams(self, user):
|
||||
"""go from zero to a timeline"""
|
||||
self.populate_store(self.stream_id(user))
|
||||
self.populate_store(self.stream_id(user.id))
|
||||
|
||||
def get_audience(self, status): # pylint: disable=no-self-use
|
||||
def _get_audience(self, status): # pylint: disable=no-self-use
|
||||
"""given a status, what users should see it"""
|
||||
# direct messages don't appeard in feeds, direct comments/reviews/etc do
|
||||
if status.privacy == "direct" and status.status_type == "Note":
|
||||
|
@ -136,8 +136,12 @@ class ActivityStream(RedisStore):
|
|||
)
|
||||
return audience.distinct()
|
||||
|
||||
def get_audience(self, status): # pylint: disable=no-self-use
|
||||
"""given a status, what users should see it"""
|
||||
return [user.id for user in self._get_audience(status)]
|
||||
|
||||
def get_stores_for_object(self, obj):
|
||||
return [self.stream_id(u) for u in self.get_audience(obj)]
|
||||
return [self.stream_id(user_id) for user_id in self.get_audience(obj)]
|
||||
|
||||
def get_statuses_for_user(self, user): # pylint: disable=no-self-use
|
||||
"""given a user, what statuses should they see on this stream"""
|
||||
|
@ -157,13 +161,14 @@ class HomeStream(ActivityStream):
|
|||
key = "home"
|
||||
|
||||
def get_audience(self, status):
|
||||
audience = super().get_audience(status)
|
||||
audience = super()._get_audience(status)
|
||||
if not audience:
|
||||
return []
|
||||
return audience.filter(
|
||||
Q(id=status.user.id) # if the user is the post's author
|
||||
| Q(following=status.user) # if the user is following the author
|
||||
).distinct()
|
||||
# if the user is the post's author
|
||||
ids_self = [user.id for user in audience.filter(Q(id=status.user.id))]
|
||||
# if the user is following the author
|
||||
ids_following = [user.id for user in audience.filter(Q(following=status.user))]
|
||||
return ids_self + ids_following
|
||||
|
||||
def get_statuses_for_user(self, user):
|
||||
return models.Status.privacy_filter(
|
||||
|
@ -183,11 +188,11 @@ class LocalStream(ActivityStream):
|
|||
|
||||
key = "local"
|
||||
|
||||
def get_audience(self, status):
|
||||
def _get_audience(self, status):
|
||||
# this stream wants no part in non-public statuses
|
||||
if status.privacy != "public" or not status.user.local:
|
||||
return []
|
||||
return super().get_audience(status)
|
||||
return super()._get_audience(status)
|
||||
|
||||
def get_statuses_for_user(self, user):
|
||||
# all public statuses by a local user
|
||||
|
@ -202,7 +207,7 @@ class BooksStream(ActivityStream):
|
|||
|
||||
key = "books"
|
||||
|
||||
def get_audience(self, status):
|
||||
def _get_audience(self, status):
|
||||
"""anyone with the mentioned book on their shelves"""
|
||||
# only show public statuses on the books feed,
|
||||
# and only statuses that mention books
|
||||
|
@ -217,7 +222,7 @@ class BooksStream(ActivityStream):
|
|||
else status.mention_books.first().parent_work
|
||||
)
|
||||
|
||||
audience = super().get_audience(status)
|
||||
audience = super()._get_audience(status)
|
||||
if not audience:
|
||||
return []
|
||||
return audience.filter(shelfbook__book__parent_work=work).distinct()
|
||||
|
@ -244,38 +249,38 @@ class BooksStream(ActivityStream):
|
|||
def add_book_statuses(self, user, book):
|
||||
"""add statuses about a book to a user's feed"""
|
||||
work = book.parent_work
|
||||
statuses = (
|
||||
models.Status.privacy_filter(
|
||||
user,
|
||||
privacy_levels=["public"],
|
||||
)
|
||||
.filter(
|
||||
Q(comment__book__parent_work=work)
|
||||
| Q(quotation__book__parent_work=work)
|
||||
| Q(review__book__parent_work=work)
|
||||
| Q(mention_books__parent_work=work)
|
||||
)
|
||||
.distinct()
|
||||
statuses = models.Status.privacy_filter(
|
||||
user,
|
||||
privacy_levels=["public"],
|
||||
)
|
||||
self.bulk_add_objects_to_store(statuses, self.stream_id(user))
|
||||
|
||||
book_comments = statuses.filter(Q(comment__book__parent_work=work))
|
||||
book_quotations = statuses.filter(Q(quotation__book__parent_work=work))
|
||||
book_reviews = statuses.filter(Q(review__book__parent_work=work))
|
||||
book_mentions = statuses.filter(Q(mention_books__parent_work=work))
|
||||
|
||||
self.bulk_add_objects_to_store(book_comments, self.stream_id(user.id))
|
||||
self.bulk_add_objects_to_store(book_quotations, self.stream_id(user.id))
|
||||
self.bulk_add_objects_to_store(book_reviews, self.stream_id(user.id))
|
||||
self.bulk_add_objects_to_store(book_mentions, self.stream_id(user.id))
|
||||
|
||||
def remove_book_statuses(self, user, book):
|
||||
"""add statuses about a book to a user's feed"""
|
||||
work = book.parent_work
|
||||
statuses = (
|
||||
models.Status.privacy_filter(
|
||||
user,
|
||||
privacy_levels=["public"],
|
||||
)
|
||||
.filter(
|
||||
Q(comment__book__parent_work=work)
|
||||
| Q(quotation__book__parent_work=work)
|
||||
| Q(review__book__parent_work=work)
|
||||
| Q(mention_books__parent_work=work)
|
||||
)
|
||||
.distinct()
|
||||
statuses = models.Status.privacy_filter(
|
||||
user,
|
||||
privacy_levels=["public"],
|
||||
)
|
||||
self.bulk_remove_objects_from_store(statuses, self.stream_id(user))
|
||||
|
||||
book_comments = statuses.filter(Q(comment__book__parent_work=work))
|
||||
book_quotations = statuses.filter(Q(quotation__book__parent_work=work))
|
||||
book_reviews = statuses.filter(Q(review__book__parent_work=work))
|
||||
book_mentions = statuses.filter(Q(mention_books__parent_work=work))
|
||||
|
||||
self.bulk_remove_objects_from_store(book_comments, self.stream_id(user.id))
|
||||
self.bulk_remove_objects_from_store(book_quotations, self.stream_id(user.id))
|
||||
self.bulk_remove_objects_from_store(book_reviews, self.stream_id(user.id))
|
||||
self.bulk_remove_objects_from_store(book_mentions, self.stream_id(user.id))
|
||||
|
||||
|
||||
# determine which streams are enabled in settings.py
|
||||
|
@ -466,7 +471,7 @@ def remove_statuses_on_unshelve(sender, instance, *args, **kwargs):
|
|||
# ---- TASKS
|
||||
|
||||
|
||||
@app.task(queue=LOW)
|
||||
@app.task(queue=LOW, ignore_result=True)
|
||||
def add_book_statuses_task(user_id, book_id):
|
||||
"""add statuses related to a book on shelve"""
|
||||
user = models.User.objects.get(id=user_id)
|
||||
|
@ -474,7 +479,7 @@ def add_book_statuses_task(user_id, book_id):
|
|||
BooksStream().add_book_statuses(user, book)
|
||||
|
||||
|
||||
@app.task(queue=LOW)
|
||||
@app.task(queue=LOW, ignore_result=True)
|
||||
def remove_book_statuses_task(user_id, book_id):
|
||||
"""remove statuses about a book from a user's books feed"""
|
||||
user = models.User.objects.get(id=user_id)
|
||||
|
@ -482,7 +487,7 @@ def remove_book_statuses_task(user_id, book_id):
|
|||
BooksStream().remove_book_statuses(user, book)
|
||||
|
||||
|
||||
@app.task(queue=MEDIUM)
|
||||
@app.task(queue=MEDIUM, ignore_result=True)
|
||||
def populate_stream_task(stream, user_id):
|
||||
"""background task for populating an empty activitystream"""
|
||||
user = models.User.objects.get(id=user_id)
|
||||
|
@ -490,7 +495,7 @@ def populate_stream_task(stream, user_id):
|
|||
stream.populate_streams(user)
|
||||
|
||||
|
||||
@app.task(queue=MEDIUM)
|
||||
@app.task(queue=MEDIUM, ignore_result=True)
|
||||
def remove_status_task(status_ids):
|
||||
"""remove a status from any stream it might be in"""
|
||||
# this can take an id or a list of ids
|
||||
|
@ -503,7 +508,7 @@ def remove_status_task(status_ids):
|
|||
stream.remove_object_from_related_stores(status)
|
||||
|
||||
|
||||
@app.task(queue=HIGH)
|
||||
@app.task(queue=HIGH, ignore_result=True)
|
||||
def add_status_task(status_id, increment_unread=False):
|
||||
"""add a status to any stream it should be in"""
|
||||
status = models.Status.objects.select_subclasses().get(id=status_id)
|
||||
|
@ -515,7 +520,7 @@ def add_status_task(status_id, increment_unread=False):
|
|||
stream.add_status(status, increment_unread=increment_unread)
|
||||
|
||||
|
||||
@app.task(queue=MEDIUM)
|
||||
@app.task(queue=MEDIUM, ignore_result=True)
|
||||
def remove_user_statuses_task(viewer_id, user_id, stream_list=None):
|
||||
"""remove all statuses by a user from a viewer's stream"""
|
||||
stream_list = [streams[s] for s in stream_list] if stream_list else streams.values()
|
||||
|
@ -525,7 +530,7 @@ def remove_user_statuses_task(viewer_id, user_id, stream_list=None):
|
|||
stream.remove_user_statuses(viewer, user)
|
||||
|
||||
|
||||
@app.task(queue=MEDIUM)
|
||||
@app.task(queue=MEDIUM, ignore_result=True)
|
||||
def add_user_statuses_task(viewer_id, user_id, stream_list=None):
|
||||
"""add all statuses by a user to a viewer's stream"""
|
||||
stream_list = [streams[s] for s in stream_list] if stream_list else streams.values()
|
||||
|
@ -535,7 +540,7 @@ def add_user_statuses_task(viewer_id, user_id, stream_list=None):
|
|||
stream.add_user_statuses(viewer, user)
|
||||
|
||||
|
||||
@app.task(queue=MEDIUM)
|
||||
@app.task(queue=MEDIUM, ignore_result=True)
|
||||
def handle_boost_task(boost_id):
|
||||
"""remove the original post and other, earlier boosts"""
|
||||
instance = models.Status.objects.get(id=boost_id)
|
||||
|
|
|
@ -35,7 +35,7 @@ class BookwyrmConfig(AppConfig):
|
|||
# pylint: disable=no-self-use
|
||||
def ready(self):
|
||||
"""set up OTLP and preview image files, if desired"""
|
||||
if settings.OTEL_EXPORTER_OTLP_ENDPOINT:
|
||||
if settings.OTEL_EXPORTER_OTLP_ENDPOINT or settings.OTEL_EXPORTER_CONSOLE:
|
||||
# pylint: disable=import-outside-toplevel
|
||||
from bookwyrm.telemetry import open_telemetry
|
||||
|
||||
|
|
|
@ -143,7 +143,7 @@ def get_or_create_connector(remote_id):
|
|||
return load_connector(connector_info)
|
||||
|
||||
|
||||
@app.task(queue=LOW)
|
||||
@app.task(queue=LOW, ignore_result=True)
|
||||
def load_more_data(connector_id, book_id):
|
||||
"""background the work of getting all 10,000 editions of LoTR"""
|
||||
connector_info = models.Connector.objects.get(id=connector_id)
|
||||
|
@ -152,7 +152,7 @@ def load_more_data(connector_id, book_id):
|
|||
connector.expand_book_data(book)
|
||||
|
||||
|
||||
@app.task(queue=LOW)
|
||||
@app.task(queue=LOW, ignore_result=True)
|
||||
def create_edition_task(connector_id, work_id, data):
|
||||
"""separate task for each of the 10,000 editions of LoTR"""
|
||||
connector_info = models.Connector.objects.get(id=connector_id)
|
||||
|
|
|
@ -75,7 +75,7 @@ def format_email(email_name, data):
|
|||
return (subject, html_content, text_content)
|
||||
|
||||
|
||||
@app.task(queue=HIGH)
|
||||
@app.task(queue=HIGH, ignore_result=True)
|
||||
def send_email(recipient, subject, html_content, text_content):
|
||||
"""use a task to send the email"""
|
||||
email = EmailMultiAlternatives(
|
||||
|
|
|
@ -217,14 +217,14 @@ def add_list_on_account_create_command(user_id):
|
|||
|
||||
|
||||
# ---- TASKS
|
||||
@app.task(queue=MEDIUM)
|
||||
@app.task(queue=MEDIUM, ignore_result=True)
|
||||
def populate_lists_task(user_id):
|
||||
"""background task for populating an empty list stream"""
|
||||
user = models.User.objects.get(id=user_id)
|
||||
ListsStream().populate_lists(user)
|
||||
|
||||
|
||||
@app.task(queue=MEDIUM)
|
||||
@app.task(queue=MEDIUM, ignore_result=True)
|
||||
def remove_list_task(list_id, re_add=False):
|
||||
"""remove a list from any stream it might be in"""
|
||||
stores = models.User.objects.filter(local=True, is_active=True).values_list(
|
||||
|
@ -239,14 +239,14 @@ def remove_list_task(list_id, re_add=False):
|
|||
add_list_task.delay(list_id)
|
||||
|
||||
|
||||
@app.task(queue=HIGH)
|
||||
@app.task(queue=HIGH, ignore_result=True)
|
||||
def add_list_task(list_id):
|
||||
"""add a list to any stream it should be in"""
|
||||
book_list = models.List.objects.get(id=list_id)
|
||||
ListsStream().add_list(book_list)
|
||||
|
||||
|
||||
@app.task(queue=MEDIUM)
|
||||
@app.task(queue=MEDIUM, ignore_result=True)
|
||||
def remove_user_lists_task(viewer_id, user_id, exclude_privacy=None):
|
||||
"""remove all lists by a user from a viewer's stream"""
|
||||
viewer = models.User.objects.get(id=viewer_id)
|
||||
|
@ -254,7 +254,7 @@ def remove_user_lists_task(viewer_id, user_id, exclude_privacy=None):
|
|||
ListsStream().remove_user_lists(viewer, user, exclude_privacy=exclude_privacy)
|
||||
|
||||
|
||||
@app.task(queue=MEDIUM)
|
||||
@app.task(queue=MEDIUM, ignore_result=True)
|
||||
def add_user_lists_task(viewer_id, user_id):
|
||||
"""add all lists by a user to a viewer's stream"""
|
||||
viewer = models.User.objects.get(id=viewer_id)
|
||||
|
|
46
bookwyrm/migrations/0174_auto_20230222_1742.py
Normal file
46
bookwyrm/migrations/0174_auto_20230222_1742.py
Normal file
|
@ -0,0 +1,46 @@
|
|||
# Generated by Django 3.2.18 on 2023-02-22 17:42
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("bookwyrm", "0174_auto_20230130_1240"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="notification",
|
||||
name="related_link_domains",
|
||||
field=models.ManyToManyField(to="bookwyrm.LinkDomain"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="notification",
|
||||
name="notification_type",
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
("FAVORITE", "Favorite"),
|
||||
("REPLY", "Reply"),
|
||||
("MENTION", "Mention"),
|
||||
("TAG", "Tag"),
|
||||
("FOLLOW", "Follow"),
|
||||
("FOLLOW_REQUEST", "Follow Request"),
|
||||
("BOOST", "Boost"),
|
||||
("IMPORT", "Import"),
|
||||
("ADD", "Add"),
|
||||
("REPORT", "Report"),
|
||||
("LINK_DOMAIN", "Link Domain"),
|
||||
("INVITE", "Invite"),
|
||||
("ACCEPT", "Accept"),
|
||||
("JOIN", "Join"),
|
||||
("LEAVE", "Leave"),
|
||||
("REMOVE", "Remove"),
|
||||
("GROUP_PRIVACY", "Group Privacy"),
|
||||
("GROUP_NAME", "Group Name"),
|
||||
("GROUP_DESCRIPTION", "Group Description"),
|
||||
],
|
||||
max_length=255,
|
||||
),
|
||||
),
|
||||
]
|
53
bookwyrm/migrations/0176_hashtag_support.py
Normal file
53
bookwyrm/migrations/0176_hashtag_support.py
Normal file
|
@ -0,0 +1,53 @@
|
|||
# Generated by Django 3.2.16 on 2022-12-17 19:28
|
||||
|
||||
import bookwyrm.models.fields
|
||||
import django.contrib.postgres.fields.citext
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("bookwyrm", "0174_auto_20230130_1240"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="Hashtag",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("created_date", models.DateTimeField(auto_now_add=True)),
|
||||
("updated_date", models.DateTimeField(auto_now=True)),
|
||||
(
|
||||
"remote_id",
|
||||
bookwyrm.models.fields.RemoteIdField(
|
||||
max_length=255,
|
||||
null=True,
|
||||
validators=[bookwyrm.models.fields.validate_remote_id],
|
||||
),
|
||||
),
|
||||
(
|
||||
"name",
|
||||
django.contrib.postgres.fields.citext.CICharField(max_length=256),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="status",
|
||||
name="mention_hashtags",
|
||||
field=bookwyrm.models.fields.TagField(
|
||||
related_name="mention_hashtag", to="bookwyrm.Hashtag"
|
||||
),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,13 @@
|
|||
# Generated by Django 3.2.18 on 2023-03-12 23:41
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("bookwyrm", "0174_auto_20230222_1742"),
|
||||
("bookwyrm", "0176_hashtag_support"),
|
||||
]
|
||||
|
||||
operations = []
|
|
@ -34,6 +34,8 @@ from .antispam import EmailBlocklist, IPBlocklist, AutoMod, automod_task
|
|||
|
||||
from .notification import Notification
|
||||
|
||||
from .hashtag import Hashtag
|
||||
|
||||
cls_members = inspect.getmembers(sys.modules[__name__], inspect.isclass)
|
||||
activity_models = {
|
||||
c[1].activity_serializer.__name__: c[1]
|
||||
|
|
|
@ -506,7 +506,7 @@ def unfurl_related_field(related_field, sort_field=None):
|
|||
return related_field.remote_id
|
||||
|
||||
|
||||
@app.task(queue=BROADCAST)
|
||||
@app.task(queue=BROADCAST, ignore_result=True)
|
||||
def broadcast_task(sender_id: int, activity: str, recipients: List[str]):
|
||||
"""the celery task for broadcast"""
|
||||
user_model = apps.get_model("bookwyrm.User", require_ready=True)
|
||||
|
|
|
@ -65,7 +65,7 @@ class AutoMod(AdminModel):
|
|||
created_by = models.ForeignKey("User", on_delete=models.PROTECT)
|
||||
|
||||
|
||||
@app.task(queue=LOW)
|
||||
@app.task(queue=LOW, ignore_result=True)
|
||||
def automod_task():
|
||||
"""Create reports"""
|
||||
if not AutoMod.objects.exists():
|
||||
|
|
|
@ -7,6 +7,7 @@ from urllib.parse import urljoin
|
|||
import dateutil.parser
|
||||
from dateutil.parser import ParserError
|
||||
from django.contrib.postgres.fields import ArrayField as DjangoArrayField
|
||||
from django.contrib.postgres.fields import CICharField as DjangoCICharField
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.db import models
|
||||
from django.forms import ClearableFileInput, ImageField as DjangoImageField
|
||||
|
@ -67,7 +68,9 @@ class ActivitypubFieldMixin:
|
|||
self.activitypub_field = activitypub_field
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def set_field_from_activity(self, instance, data, overwrite=True):
|
||||
def set_field_from_activity(
|
||||
self, instance, data, overwrite=True, allow_external_connections=True
|
||||
):
|
||||
"""helper function for assinging a value to the field. Returns if changed"""
|
||||
try:
|
||||
value = getattr(data, self.get_activitypub_field())
|
||||
|
@ -76,7 +79,9 @@ class ActivitypubFieldMixin:
|
|||
if self.get_activitypub_field() != "attributedTo":
|
||||
raise
|
||||
value = getattr(data, "actor")
|
||||
formatted = self.field_from_activity(value)
|
||||
formatted = self.field_from_activity(
|
||||
value, allow_external_connections=allow_external_connections
|
||||
)
|
||||
if formatted is None or formatted is MISSING or formatted == {}:
|
||||
return False
|
||||
|
||||
|
@ -116,7 +121,8 @@ class ActivitypubFieldMixin:
|
|||
return {self.activitypub_wrapper: value}
|
||||
return value
|
||||
|
||||
def field_from_activity(self, value):
|
||||
# pylint: disable=unused-argument
|
||||
def field_from_activity(self, value, allow_external_connections=True):
|
||||
"""formatter to convert activitypub into a model value"""
|
||||
if value and hasattr(self, "activitypub_wrapper"):
|
||||
value = value.get(self.activitypub_wrapper)
|
||||
|
@ -138,7 +144,7 @@ class ActivitypubRelatedFieldMixin(ActivitypubFieldMixin):
|
|||
self.load_remote = load_remote
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def field_from_activity(self, value):
|
||||
def field_from_activity(self, value, allow_external_connections=True):
|
||||
if not value:
|
||||
return None
|
||||
|
||||
|
@ -159,7 +165,11 @@ class ActivitypubRelatedFieldMixin(ActivitypubFieldMixin):
|
|||
if not self.load_remote:
|
||||
# only look in the local database
|
||||
return related_model.find_existing_by_remote_id(value)
|
||||
return activitypub.resolve_remote_id(value, model=related_model)
|
||||
return activitypub.resolve_remote_id(
|
||||
value,
|
||||
model=related_model,
|
||||
allow_external_connections=allow_external_connections,
|
||||
)
|
||||
|
||||
|
||||
class RemoteIdField(ActivitypubFieldMixin, models.CharField):
|
||||
|
@ -219,7 +229,9 @@ class PrivacyField(ActivitypubFieldMixin, models.CharField):
|
|||
super().__init__(*args, max_length=255, choices=PrivacyLevels, default="public")
|
||||
|
||||
# pylint: disable=invalid-name
|
||||
def set_field_from_activity(self, instance, data, overwrite=True):
|
||||
def set_field_from_activity(
|
||||
self, instance, data, overwrite=True, allow_external_connections=True
|
||||
):
|
||||
if not overwrite:
|
||||
return False
|
||||
|
||||
|
@ -234,7 +246,11 @@ class PrivacyField(ActivitypubFieldMixin, models.CharField):
|
|||
break
|
||||
if not user_field:
|
||||
raise ValidationError("No user field found for privacy", data)
|
||||
user = activitypub.resolve_remote_id(getattr(data, user_field), model="User")
|
||||
user = activitypub.resolve_remote_id(
|
||||
getattr(data, user_field),
|
||||
model="User",
|
||||
allow_external_connections=allow_external_connections,
|
||||
)
|
||||
|
||||
if to == [self.public]:
|
||||
setattr(instance, self.name, "public")
|
||||
|
@ -295,13 +311,17 @@ class ManyToManyField(ActivitypubFieldMixin, models.ManyToManyField):
|
|||
self.link_only = link_only
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def set_field_from_activity(self, instance, data, overwrite=True):
|
||||
def set_field_from_activity(
|
||||
self, instance, data, overwrite=True, allow_external_connections=True
|
||||
):
|
||||
"""helper function for assigning a value to the field"""
|
||||
if not overwrite and getattr(instance, self.name).exists():
|
||||
return False
|
||||
|
||||
value = getattr(data, self.get_activitypub_field())
|
||||
formatted = self.field_from_activity(value)
|
||||
formatted = self.field_from_activity(
|
||||
value, allow_external_connections=allow_external_connections
|
||||
)
|
||||
if formatted is None or formatted is MISSING:
|
||||
return False
|
||||
getattr(instance, self.name).set(formatted)
|
||||
|
@ -313,7 +333,7 @@ class ManyToManyField(ActivitypubFieldMixin, models.ManyToManyField):
|
|||
return f"{value.instance.remote_id}/{self.name}"
|
||||
return [i.remote_id for i in value.all()]
|
||||
|
||||
def field_from_activity(self, value):
|
||||
def field_from_activity(self, value, allow_external_connections=True):
|
||||
if value is None or value is MISSING:
|
||||
return None
|
||||
if not isinstance(value, list):
|
||||
|
@ -326,7 +346,11 @@ class ManyToManyField(ActivitypubFieldMixin, models.ManyToManyField):
|
|||
except ValidationError:
|
||||
continue
|
||||
items.append(
|
||||
activitypub.resolve_remote_id(remote_id, model=self.related_model)
|
||||
activitypub.resolve_remote_id(
|
||||
remote_id,
|
||||
model=self.related_model,
|
||||
allow_external_connections=allow_external_connections,
|
||||
)
|
||||
)
|
||||
return items
|
||||
|
||||
|
@ -353,7 +377,7 @@ class TagField(ManyToManyField):
|
|||
)
|
||||
return tags
|
||||
|
||||
def field_from_activity(self, value):
|
||||
def field_from_activity(self, value, allow_external_connections=True):
|
||||
if not isinstance(value, list):
|
||||
return None
|
||||
items = []
|
||||
|
@ -365,9 +389,22 @@ class TagField(ManyToManyField):
|
|||
if tag_type != self.related_model.activity_serializer.type:
|
||||
# tags can contain multiple types
|
||||
continue
|
||||
items.append(
|
||||
activitypub.resolve_remote_id(link.href, model=self.related_model)
|
||||
)
|
||||
|
||||
if tag_type == "Hashtag":
|
||||
# we already have all data to create hashtags,
|
||||
# no need to fetch from remote
|
||||
item = self.related_model.activity_serializer(**link_json)
|
||||
hashtag = item.to_model(model=self.related_model, save=True)
|
||||
items.append(hashtag)
|
||||
else:
|
||||
# for other tag types we fetch them remotely
|
||||
items.append(
|
||||
activitypub.resolve_remote_id(
|
||||
link.href,
|
||||
model=self.related_model,
|
||||
allow_external_connections=allow_external_connections,
|
||||
)
|
||||
)
|
||||
return items
|
||||
|
||||
|
||||
|
@ -390,11 +427,15 @@ class ImageField(ActivitypubFieldMixin, models.ImageField):
|
|||
self.alt_field = alt_field
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
# pylint: disable=arguments-differ,arguments-renamed
|
||||
def set_field_from_activity(self, instance, data, save=True, overwrite=True):
|
||||
# pylint: disable=arguments-differ,arguments-renamed,too-many-arguments
|
||||
def set_field_from_activity(
|
||||
self, instance, data, save=True, overwrite=True, allow_external_connections=True
|
||||
):
|
||||
"""helper function for assinging a value to the field"""
|
||||
value = getattr(data, self.get_activitypub_field())
|
||||
formatted = self.field_from_activity(value)
|
||||
formatted = self.field_from_activity(
|
||||
value, allow_external_connections=allow_external_connections
|
||||
)
|
||||
if formatted is None or formatted is MISSING:
|
||||
return False
|
||||
|
||||
|
@ -426,7 +467,7 @@ class ImageField(ActivitypubFieldMixin, models.ImageField):
|
|||
|
||||
return activitypub.Document(url=url, name=alt)
|
||||
|
||||
def field_from_activity(self, value):
|
||||
def field_from_activity(self, value, allow_external_connections=True):
|
||||
image_slug = value
|
||||
# when it's an inline image (User avatar/icon, Book cover), it's a json
|
||||
# blob, but when it's an attached image, it's just a url
|
||||
|
@ -481,7 +522,7 @@ class DateTimeField(ActivitypubFieldMixin, models.DateTimeField):
|
|||
return None
|
||||
return value.isoformat()
|
||||
|
||||
def field_from_activity(self, value):
|
||||
def field_from_activity(self, value, allow_external_connections=True):
|
||||
try:
|
||||
date_value = dateutil.parser.parse(value)
|
||||
try:
|
||||
|
@ -495,7 +536,7 @@ class DateTimeField(ActivitypubFieldMixin, models.DateTimeField):
|
|||
class HtmlField(ActivitypubFieldMixin, models.TextField):
|
||||
"""a text field for storing html"""
|
||||
|
||||
def field_from_activity(self, value):
|
||||
def field_from_activity(self, value, allow_external_connections=True):
|
||||
if not value or value == MISSING:
|
||||
return None
|
||||
return clean(value)
|
||||
|
@ -515,6 +556,10 @@ class CharField(ActivitypubFieldMixin, models.CharField):
|
|||
"""activitypub-aware char field"""
|
||||
|
||||
|
||||
class CICharField(ActivitypubFieldMixin, DjangoCICharField):
|
||||
"""activitypub-aware cichar field"""
|
||||
|
||||
|
||||
class URLField(ActivitypubFieldMixin, models.URLField):
|
||||
"""activitypub-aware url field"""
|
||||
|
||||
|
|
23
bookwyrm/models/hashtag.py
Normal file
23
bookwyrm/models/hashtag.py
Normal file
|
@ -0,0 +1,23 @@
|
|||
""" model for tags """
|
||||
from bookwyrm import activitypub
|
||||
from .activitypub_mixin import ActivitypubMixin
|
||||
from .base_model import BookWyrmModel
|
||||
from .fields import CICharField
|
||||
|
||||
|
||||
class Hashtag(ActivitypubMixin, BookWyrmModel):
|
||||
"a hashtag which can be used in statuses"
|
||||
|
||||
name = CICharField(
|
||||
max_length=256,
|
||||
blank=False,
|
||||
null=False,
|
||||
activitypub_field="name",
|
||||
deduplication_field=True,
|
||||
)
|
||||
|
||||
name_field = "name"
|
||||
activity_serializer = activitypub.Hashtag
|
||||
|
||||
def __repr__(self):
|
||||
return f"<{self.__class__} id={self.id} name={self.name}>"
|
|
@ -327,7 +327,7 @@ class ImportItem(models.Model):
|
|||
)
|
||||
|
||||
|
||||
@app.task(queue=IMPORTS)
|
||||
@app.task(queue=IMPORTS, ignore_result=True)
|
||||
def start_import_task(job_id):
|
||||
"""trigger the child tasks for each row"""
|
||||
job = ImportJob.objects.get(id=job_id)
|
||||
|
@ -346,7 +346,7 @@ def start_import_task(job_id):
|
|||
job.save()
|
||||
|
||||
|
||||
@app.task(queue=IMPORTS)
|
||||
@app.task(queue=IMPORTS, ignore_result=True)
|
||||
def import_item_task(item_id):
|
||||
"""resolve a row into a book"""
|
||||
item = ImportItem.objects.get(id=item_id)
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
from django.db import models, transaction
|
||||
from django.dispatch import receiver
|
||||
from .base_model import BookWyrmModel
|
||||
from . import Boost, Favorite, GroupMemberInvitation, ImportJob, ListItem, Report
|
||||
from . import Status, User, UserFollowRequest
|
||||
from . import Boost, Favorite, GroupMemberInvitation, ImportJob, LinkDomain
|
||||
from . import ListItem, Report, Status, User, UserFollowRequest
|
||||
|
||||
|
||||
class Notification(BookWyrmModel):
|
||||
|
@ -28,6 +28,7 @@ class Notification(BookWyrmModel):
|
|||
|
||||
# Admin
|
||||
REPORT = "REPORT"
|
||||
LINK_DOMAIN = "LINK_DOMAIN"
|
||||
|
||||
# Groups
|
||||
INVITE = "INVITE"
|
||||
|
@ -43,7 +44,7 @@ class Notification(BookWyrmModel):
|
|||
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}",
|
||||
f"{FAVORITE} {REPLY} {MENTION} {TAG} {FOLLOW} {FOLLOW_REQUEST} {BOOST} {IMPORT} {ADD} {REPORT} {LINK_DOMAIN} {INVITE} {ACCEPT} {JOIN} {LEAVE} {REMOVE} {GROUP_PRIVACY} {GROUP_NAME} {GROUP_DESCRIPTION}",
|
||||
)
|
||||
|
||||
user = models.ForeignKey("User", on_delete=models.CASCADE)
|
||||
|
@ -64,6 +65,7 @@ class Notification(BookWyrmModel):
|
|||
"ListItem", symmetrical=False, related_name="notifications"
|
||||
)
|
||||
related_reports = models.ManyToManyField("Report", symmetrical=False)
|
||||
related_link_domains = models.ManyToManyField("LinkDomain", symmetrical=False)
|
||||
|
||||
@classmethod
|
||||
@transaction.atomic
|
||||
|
@ -241,6 +243,26 @@ def notify_admins_on_report(sender, instance, created, *args, **kwargs):
|
|||
notification.related_reports.add(instance)
|
||||
|
||||
|
||||
@receiver(models.signals.post_save, sender=LinkDomain)
|
||||
@transaction.atomic
|
||||
# pylint: disable=unused-argument
|
||||
def notify_admins_on_link_domain(sender, instance, created, *args, **kwargs):
|
||||
"""a new link domain needs to be verified"""
|
||||
if not created:
|
||||
# otherwise you'll get a notification when you approve a domain
|
||||
return
|
||||
|
||||
# moderators and superusers should be notified
|
||||
admins = User.admins()
|
||||
for admin in admins:
|
||||
notification, _ = Notification.objects.get_or_create(
|
||||
user=admin,
|
||||
notification_type=Notification.LINK_DOMAIN,
|
||||
read=False,
|
||||
)
|
||||
notification.related_link_domains.add(instance)
|
||||
|
||||
|
||||
@receiver(models.signals.post_save, sender=GroupMemberInvitation)
|
||||
# pylint: disable=unused-argument
|
||||
def notify_user_on_group_invite(sender, instance, *args, **kwargs):
|
||||
|
|
|
@ -171,7 +171,11 @@ class UserFollowRequest(ActivitypubMixin, UserRelationship):
|
|||
return
|
||||
|
||||
with transaction.atomic():
|
||||
UserFollows.from_request(self)
|
||||
try:
|
||||
UserFollows.from_request(self)
|
||||
except IntegrityError:
|
||||
# this just means we already saved this relationship
|
||||
pass
|
||||
if self.id:
|
||||
self.delete()
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@ class Status(OrderedCollectionPageMixin, BookWyrmModel):
|
|||
raw_content = models.TextField(blank=True, null=True)
|
||||
mention_users = fields.TagField("User", related_name="mention_user")
|
||||
mention_books = fields.TagField("Edition", related_name="mention_book")
|
||||
mention_hashtags = fields.TagField("Hashtag", related_name="mention_hashtag")
|
||||
local = models.BooleanField(default=True)
|
||||
content_warning = fields.CharField(
|
||||
max_length=500, blank=True, null=True, activitypub_field="summary"
|
||||
|
|
|
@ -469,7 +469,7 @@ class KeyPair(ActivitypubMixin, BookWyrmModel):
|
|||
return super().save(*args, **kwargs)
|
||||
|
||||
|
||||
@app.task(queue=LOW)
|
||||
@app.task(queue=LOW, ignore_result=True)
|
||||
def set_remote_server(user_id):
|
||||
"""figure out the user's remote server in the background"""
|
||||
user = User.objects.get(id=user_id)
|
||||
|
@ -513,7 +513,7 @@ def get_or_create_remote_server(domain, refresh=False):
|
|||
return server
|
||||
|
||||
|
||||
@app.task(queue=LOW)
|
||||
@app.task(queue=LOW, ignore_result=True)
|
||||
def get_remote_reviews(outbox):
|
||||
"""ingest reviews by a new remote bookwyrm user"""
|
||||
outbox_page = outbox + "?page=true&type=Review"
|
||||
|
|
|
@ -420,7 +420,7 @@ def save_and_cleanup(image, instance=None):
|
|||
|
||||
|
||||
# pylint: disable=invalid-name
|
||||
@app.task(queue=LOW)
|
||||
@app.task(queue=LOW, ignore_result=True)
|
||||
def generate_site_preview_image_task():
|
||||
"""generate preview_image for the website"""
|
||||
if not settings.ENABLE_PREVIEW_IMAGES:
|
||||
|
@ -445,7 +445,7 @@ def generate_site_preview_image_task():
|
|||
|
||||
|
||||
# pylint: disable=invalid-name
|
||||
@app.task(queue=LOW)
|
||||
@app.task(queue=LOW, ignore_result=True)
|
||||
def generate_edition_preview_image_task(book_id):
|
||||
"""generate preview_image for a book"""
|
||||
if not settings.ENABLE_PREVIEW_IMAGES:
|
||||
|
@ -470,7 +470,7 @@ def generate_edition_preview_image_task(book_id):
|
|||
save_and_cleanup(image, instance=book)
|
||||
|
||||
|
||||
@app.task(queue=LOW)
|
||||
@app.task(queue=LOW, ignore_result=True)
|
||||
def generate_user_preview_image_task(user_id):
|
||||
"""generate preview_image for a user"""
|
||||
if not settings.ENABLE_PREVIEW_IMAGES:
|
||||
|
@ -496,7 +496,7 @@ def generate_user_preview_image_task(user_id):
|
|||
save_and_cleanup(image, instance=user)
|
||||
|
||||
|
||||
@app.task(queue=LOW)
|
||||
@app.task(queue=LOW, ignore_result=True)
|
||||
def remove_user_preview_image_task(user_id):
|
||||
"""remove preview_image for a user"""
|
||||
if not settings.ENABLE_PREVIEW_IMAGES:
|
||||
|
|
|
@ -4,6 +4,7 @@ from environs import Env
|
|||
|
||||
import requests
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
|
||||
|
||||
# pylint: disable=line-too-long
|
||||
|
@ -11,22 +12,22 @@ from django.utils.translation import gettext_lazy as _
|
|||
env = Env()
|
||||
env.read_env()
|
||||
DOMAIN = env("DOMAIN")
|
||||
VERSION = "0.5.5"
|
||||
VERSION = "0.6.0"
|
||||
|
||||
RELEASE_API = env(
|
||||
"RELEASE_API",
|
||||
"https://api.github.com/repos/bookwyrm-social/bookwyrm/releases/latest",
|
||||
)
|
||||
|
||||
PAGE_LENGTH = env("PAGE_LENGTH", 15)
|
||||
PAGE_LENGTH = env.int("PAGE_LENGTH", 15)
|
||||
DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English")
|
||||
|
||||
JS_CACHE = "cd848b9a"
|
||||
JS_CACHE = "a7d4e720"
|
||||
|
||||
# email
|
||||
EMAIL_BACKEND = env("EMAIL_BACKEND", "django.core.mail.backends.smtp.EmailBackend")
|
||||
EMAIL_HOST = env("EMAIL_HOST")
|
||||
EMAIL_PORT = env("EMAIL_PORT", 587)
|
||||
EMAIL_PORT = env.int("EMAIL_PORT", 587)
|
||||
EMAIL_HOST_USER = env("EMAIL_HOST_USER")
|
||||
EMAIL_HOST_PASSWORD = env("EMAIL_HOST_PASSWORD")
|
||||
EMAIL_USE_TLS = env.bool("EMAIL_USE_TLS", True)
|
||||
|
@ -68,13 +69,15 @@ FONT_DIR = os.path.join(STATIC_ROOT, "fonts")
|
|||
# Quick-start development settings - unsuitable for production
|
||||
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
|
||||
|
||||
# SECURITY WARNING: keep the secret key used in production secret!
|
||||
SECRET_KEY = env("SECRET_KEY")
|
||||
|
||||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = env.bool("DEBUG", True)
|
||||
USE_HTTPS = env.bool("USE_HTTPS", not DEBUG)
|
||||
|
||||
# SECURITY WARNING: keep the secret key used in production secret!
|
||||
SECRET_KEY = env("SECRET_KEY")
|
||||
if not DEBUG and SECRET_KEY == "7(2w1sedok=aznpq)ta1mc4i%4h=xx@hxwx*o57ctsuml0x%fr":
|
||||
raise ImproperlyConfigured("You must change the SECRET_KEY env variable")
|
||||
|
||||
ALLOWED_HOSTS = env.list("ALLOWED_HOSTS", ["*"])
|
||||
|
||||
# Application definition
|
||||
|
@ -205,14 +208,14 @@ WSGI_APPLICATION = "bookwyrm.wsgi.application"
|
|||
|
||||
# redis/activity streams settings
|
||||
REDIS_ACTIVITY_HOST = env("REDIS_ACTIVITY_HOST", "localhost")
|
||||
REDIS_ACTIVITY_PORT = env("REDIS_ACTIVITY_PORT", 6379)
|
||||
REDIS_ACTIVITY_PORT = env.int("REDIS_ACTIVITY_PORT", 6379)
|
||||
REDIS_ACTIVITY_PASSWORD = requests.utils.quote(env("REDIS_ACTIVITY_PASSWORD", ""))
|
||||
REDIS_ACTIVITY_DB_INDEX = env("REDIS_ACTIVITY_DB_INDEX", 0)
|
||||
REDIS_ACTIVITY_DB_INDEX = env.int("REDIS_ACTIVITY_DB_INDEX", 0)
|
||||
REDIS_ACTIVITY_URL = env(
|
||||
"REDIS_ACTIVITY_URL",
|
||||
f"redis://:{REDIS_ACTIVITY_PASSWORD}@{REDIS_ACTIVITY_HOST}:{REDIS_ACTIVITY_PORT}/{REDIS_ACTIVITY_DB_INDEX}",
|
||||
)
|
||||
MAX_STREAM_LENGTH = int(env("MAX_STREAM_LENGTH", 200))
|
||||
MAX_STREAM_LENGTH = env.int("MAX_STREAM_LENGTH", 200)
|
||||
|
||||
STREAMS = [
|
||||
{"key": "home", "name": _("Home Timeline"), "shortname": _("Home")},
|
||||
|
@ -221,12 +224,12 @@ STREAMS = [
|
|||
|
||||
# Search configuration
|
||||
# total time in seconds that the instance will spend searching connectors
|
||||
SEARCH_TIMEOUT = int(env("SEARCH_TIMEOUT", 8))
|
||||
SEARCH_TIMEOUT = env.int("SEARCH_TIMEOUT", 8)
|
||||
# timeout for a query to an individual connector
|
||||
QUERY_TIMEOUT = int(env("QUERY_TIMEOUT", 5))
|
||||
QUERY_TIMEOUT = env.int("QUERY_TIMEOUT", 5)
|
||||
|
||||
# Redis cache backend
|
||||
if env("USE_DUMMY_CACHE", False):
|
||||
if env.bool("USE_DUMMY_CACHE", False):
|
||||
CACHES = {
|
||||
"default": {
|
||||
"BACKEND": "django.core.cache.backends.dummy.DummyCache",
|
||||
|
@ -256,7 +259,7 @@ DATABASES = {
|
|||
"USER": env("POSTGRES_USER", "bookwyrm"),
|
||||
"PASSWORD": env("POSTGRES_PASSWORD", "bookwyrm"),
|
||||
"HOST": env("POSTGRES_HOST", ""),
|
||||
"PORT": env("PGPORT", 5432),
|
||||
"PORT": env.int("PGPORT", 5432),
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -341,6 +344,7 @@ if USE_HTTPS:
|
|||
CSRF_COOKIE_SECURE = True
|
||||
|
||||
USE_S3 = env.bool("USE_S3", False)
|
||||
USE_AZURE = env.bool("USE_AZURE", False)
|
||||
|
||||
if USE_S3:
|
||||
# AWS settings
|
||||
|
@ -364,6 +368,27 @@ if USE_S3:
|
|||
DEFAULT_FILE_STORAGE = "bookwyrm.storage_backends.ImagesStorage"
|
||||
CSP_DEFAULT_SRC = ["'self'", AWS_S3_CUSTOM_DOMAIN] + CSP_ADDITIONAL_HOSTS
|
||||
CSP_SCRIPT_SRC = ["'self'", AWS_S3_CUSTOM_DOMAIN] + CSP_ADDITIONAL_HOSTS
|
||||
elif USE_AZURE:
|
||||
AZURE_ACCOUNT_NAME = env("AZURE_ACCOUNT_NAME")
|
||||
AZURE_ACCOUNT_KEY = env("AZURE_ACCOUNT_KEY")
|
||||
AZURE_CONTAINER = env("AZURE_CONTAINER")
|
||||
AZURE_CUSTOM_DOMAIN = env("AZURE_CUSTOM_DOMAIN")
|
||||
# Azure Static settings
|
||||
STATIC_LOCATION = "static"
|
||||
STATIC_URL = (
|
||||
f"{PROTOCOL}://{AZURE_CUSTOM_DOMAIN}/{AZURE_CONTAINER}/{STATIC_LOCATION}/"
|
||||
)
|
||||
STATICFILES_STORAGE = "bookwyrm.storage_backends.AzureStaticStorage"
|
||||
# Azure Media settings
|
||||
MEDIA_LOCATION = "images"
|
||||
MEDIA_URL = (
|
||||
f"{PROTOCOL}://{AZURE_CUSTOM_DOMAIN}/{AZURE_CONTAINER}/{MEDIA_LOCATION}/"
|
||||
)
|
||||
MEDIA_FULL_URL = MEDIA_URL
|
||||
STATIC_FULL_URL = STATIC_URL
|
||||
DEFAULT_FILE_STORAGE = "bookwyrm.storage_backends.AzureImagesStorage"
|
||||
CSP_DEFAULT_SRC = ["'self'", AZURE_CUSTOM_DOMAIN] + CSP_ADDITIONAL_HOSTS
|
||||
CSP_SCRIPT_SRC = ["'self'", AZURE_CUSTOM_DOMAIN] + CSP_ADDITIONAL_HOSTS
|
||||
else:
|
||||
STATIC_URL = "/static/"
|
||||
MEDIA_URL = "/images/"
|
||||
|
@ -377,6 +402,7 @@ CSP_INCLUDE_NONCE_IN = ["script-src"]
|
|||
OTEL_EXPORTER_OTLP_ENDPOINT = env("OTEL_EXPORTER_OTLP_ENDPOINT", None)
|
||||
OTEL_EXPORTER_OTLP_HEADERS = env("OTEL_EXPORTER_OTLP_HEADERS", None)
|
||||
OTEL_SERVICE_NAME = env("OTEL_SERVICE_NAME", None)
|
||||
OTEL_EXPORTER_CONSOLE = env.bool("OTEL_EXPORTER_CONSOLE", False)
|
||||
|
||||
TWO_FACTOR_LOGIN_MAX_SECONDS = env.int("TWO_FACTOR_LOGIN_MAX_SECONDS", 60)
|
||||
TWO_FACTOR_LOGIN_VALIDITY_WINDOW = env.int("TWO_FACTOR_LOGIN_VALIDITY_WINDOW", 2)
|
||||
|
|
|
@ -95,7 +95,6 @@ let BookWyrm = new (class {
|
|||
|
||||
/**
|
||||
* Update a counter with recurring requests to the API
|
||||
* The delay is slightly randomized and increased on each cycle.
|
||||
*
|
||||
* @param {Object} counter - DOM node
|
||||
* @param {int} delay - frequency for polling in ms
|
||||
|
@ -104,16 +103,19 @@ let BookWyrm = new (class {
|
|||
polling(counter, delay) {
|
||||
const bookwyrm = this;
|
||||
|
||||
delay = delay || 10000;
|
||||
delay += Math.random() * 1000;
|
||||
delay = delay || 5 * 60 * 1000 + (Math.random() - 0.5) * 30 * 1000;
|
||||
|
||||
setTimeout(
|
||||
function () {
|
||||
fetch("/api/updates/" + counter.dataset.poll)
|
||||
.then((response) => response.json())
|
||||
.then((data) => bookwyrm.updateCountElement(counter, data));
|
||||
|
||||
bookwyrm.polling(counter, delay * 1.25);
|
||||
.then((data) => {
|
||||
bookwyrm.updateCountElement(counter, data);
|
||||
bookwyrm.polling(counter);
|
||||
})
|
||||
.catch(() => {
|
||||
bookwyrm.polling(counter, delay * 1.1);
|
||||
});
|
||||
},
|
||||
delay,
|
||||
counter
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
import os
|
||||
from tempfile import SpooledTemporaryFile
|
||||
from storages.backends.s3boto3 import S3Boto3Storage
|
||||
from storages.backends.azure_storage import AzureStorage
|
||||
|
||||
|
||||
class StaticStorage(S3Boto3Storage): # pylint: disable=abstract-method
|
||||
|
@ -47,3 +48,16 @@ class ImagesStorage(S3Boto3Storage): # pylint: disable=abstract-method
|
|||
# Upload the object which will auto close the
|
||||
# content_autoclose instance
|
||||
return super()._save(name, content_autoclose)
|
||||
|
||||
|
||||
class AzureStaticStorage(AzureStorage): # pylint: disable=abstract-method
|
||||
"""Storage class for Static contents"""
|
||||
|
||||
location = "static"
|
||||
|
||||
|
||||
class AzureImagesStorage(AzureStorage): # pylint: disable=abstract-method
|
||||
"""Storage class for Image files"""
|
||||
|
||||
location = "images"
|
||||
overwrite_files = False
|
||||
|
|
|
@ -237,41 +237,41 @@ def domain_level_update(sender, instance, created, update_fields=None, **kwargs)
|
|||
# ------------------- TASKS
|
||||
|
||||
|
||||
@app.task(queue=LOW)
|
||||
@app.task(queue=LOW, ignore_result=True)
|
||||
def rerank_suggestions_task(user_id):
|
||||
"""do the hard work in celery"""
|
||||
suggested_users.rerank_user_suggestions(user_id)
|
||||
|
||||
|
||||
@app.task(queue=LOW)
|
||||
@app.task(queue=LOW, ignore_result=True)
|
||||
def rerank_user_task(user_id, update_only=False):
|
||||
"""do the hard work in celery"""
|
||||
user = models.User.objects.get(id=user_id)
|
||||
suggested_users.rerank_obj(user, update_only=update_only)
|
||||
|
||||
|
||||
@app.task(queue=LOW)
|
||||
@app.task(queue=LOW, ignore_result=True)
|
||||
def remove_user_task(user_id):
|
||||
"""do the hard work in celery"""
|
||||
user = models.User.objects.get(id=user_id)
|
||||
suggested_users.remove_object_from_related_stores(user)
|
||||
|
||||
|
||||
@app.task(queue=MEDIUM)
|
||||
@app.task(queue=MEDIUM, ignore_result=True)
|
||||
def remove_suggestion_task(user_id, suggested_user_id):
|
||||
"""remove a specific user from a specific user's suggestions"""
|
||||
suggested_user = models.User.objects.get(id=suggested_user_id)
|
||||
suggested_users.remove_suggestion(user_id, suggested_user)
|
||||
|
||||
|
||||
@app.task(queue=LOW)
|
||||
@app.task(queue=LOW, ignore_result=True)
|
||||
def bulk_remove_instance_task(instance_id):
|
||||
"""remove a bunch of users from recs"""
|
||||
for user in models.User.objects.filter(federated_server__id=instance_id):
|
||||
suggested_users.remove_object_from_related_stores(user)
|
||||
|
||||
|
||||
@app.task(queue=LOW)
|
||||
@app.task(queue=LOW, ignore_result=True)
|
||||
def bulk_add_instance_task(instance_id):
|
||||
"""remove a bunch of users from recs"""
|
||||
for user in models.User.objects.filter(federated_server__id=instance_id):
|
||||
|
|
|
@ -1,10 +1,19 @@
|
|||
from opentelemetry import trace
|
||||
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
|
||||
from opentelemetry.sdk.trace import TracerProvider
|
||||
from opentelemetry.sdk.trace.export import BatchSpanProcessor
|
||||
from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter
|
||||
|
||||
from bookwyrm import settings
|
||||
|
||||
trace.set_tracer_provider(TracerProvider())
|
||||
trace.get_tracer_provider().add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))
|
||||
if settings.OTEL_EXPORTER_CONSOLE:
|
||||
trace.get_tracer_provider().add_span_processor(
|
||||
BatchSpanProcessor(ConsoleSpanExporter())
|
||||
)
|
||||
else:
|
||||
trace.get_tracer_provider().add_span_processor(
|
||||
BatchSpanProcessor(OTLPSpanExporter())
|
||||
)
|
||||
|
||||
|
||||
def instrumentDjango():
|
||||
|
|
|
@ -82,6 +82,8 @@
|
|||
src="{% static "images/no_cover.jpg" %}"
|
||||
alt=""
|
||||
aria-hidden="true"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
>
|
||||
<span class="cover-caption">
|
||||
<span>{{ book.alt_text }}</span>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<div class="modal-background" data-modal-close></div><!-- modal background -->
|
||||
<div class="modal-card is-align-items-center" role="dialog" aria-modal="true" tabindex="-1" aria-label="{% trans 'Book cover preview' %}">
|
||||
<div class="cover-container">
|
||||
<img class="book-cover" src="{% get_media_prefix %}{{ book.cover }}" itemprop="thumbnailUrl" alt="">
|
||||
<img class="book-cover" src="{% get_media_prefix %}{{ book.cover }}" itemprop="thumbnailUrl" alt="" loading="lazy" decoding="async">
|
||||
</div>
|
||||
</div>
|
||||
<button type="button" data-modal-close class="modal-close is-large" aria-label="{% trans 'Close' %}"></button>
|
||||
|
|
|
@ -37,6 +37,14 @@
|
|||
{% endif %}
|
||||
</header>
|
||||
|
||||
{% if form.errors %}
|
||||
<div class="block">
|
||||
<p class="notification is-danger is-light">
|
||||
{% trans "Failed to save book, see errors below for more information." %}
|
||||
</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<form
|
||||
class="block"
|
||||
{% if book.id %}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<div style="font-family: BlinkMacSystemFont,-apple-system,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Fira Sans','Droid Sans','Helvetica Neue',Helvetica,Arial,sans-serif; border-radius: 6px; background-color: #efefef; max-width: 632px;">
|
||||
<div style="padding: 1rem; overflow: auto;">
|
||||
<div style="float: left; margin-right: 1rem;">
|
||||
<a style="color: #3273dc;" href="https://{{ domain }}" style="text-decoration: none;"><img src="{{ logo }}" alt="logo"></a>
|
||||
<a style="color: #3273dc;" href="https://{{ domain }}" style="text-decoration: none;"><img src="{{ logo }}" alt="logo" loading="lazy" decoding="async"></a>
|
||||
</div>
|
||||
<div>
|
||||
<a style="color: black; text-decoration: none" href="https://{{ domain }}" style="text-decoration: none;"><strong>{{ site_name }}</strong><br>
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
<header class="section py-3">
|
||||
<a href="/" class="is-flex is-align-items-center">
|
||||
<img class="image logo is-flex-shrink-0" style="height: 32px" src="{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static "images/logo-small.png" %}{% endif %}" alt="{% blocktrans with site_name=site.name %}{{ site_name }} home page{% endblocktrans %}">
|
||||
<img class="image logo is-flex-shrink-0" style="height: 32px" src="{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static "images/logo-small.png" %}{% endif %}" alt="{% blocktrans with site_name=site.name %}{{ site_name }} home page{% endblocktrans %}" loading="lazy" decoding="async">
|
||||
<span class="title is-5 ml-2">{{ site.name }}</span>
|
||||
</a>
|
||||
</header>
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
{% block panel %}{% endblock %}
|
||||
|
||||
{% if activities %}
|
||||
{% include 'snippets/pagination.html' with page=activities path=path anchor="#feed" %}
|
||||
{% include 'snippets/pagination.html' with page=activities path=path anchor="#feed" mode="chronological" %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
src="{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static "images/logo-small.png" %}{% endif %}"
|
||||
aria-hidden="true"
|
||||
alt="{{ site.name }}"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
>
|
||||
<h1 class="modal-card-title" id="get_started_header">
|
||||
{% blocktrans %}Welcome to {{ site_name }}!{% endblocktrans %}
|
||||
|
|
32
bookwyrm/templates/hashtag.html
Normal file
32
bookwyrm/templates/hashtag.html
Normal file
|
@ -0,0 +1,32 @@
|
|||
{% extends "layout.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{{ hashtag }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container is-max-desktop">
|
||||
<section class="block">
|
||||
<header class="block content has-text-centered">
|
||||
<h1 class="title">{{ hashtag }}</h1>
|
||||
<p class="subtitle">
|
||||
{% blocktrans trimmed with site_name=site.name %}
|
||||
See tagged statuses in the local {{ site_name }} community
|
||||
{% endblocktrans %}
|
||||
</p>
|
||||
</header>
|
||||
|
||||
{% for activity in activities %}
|
||||
<div class="block">
|
||||
{% include 'snippets/status/status.html' with status=activity %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% if not activities %}
|
||||
<div class="block">
|
||||
<p>{% trans "No activities for this hashtag yet!" %}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% include 'snippets/pagination.html' with page=activities path=path %}
|
||||
</section>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -28,7 +28,7 @@
|
|||
{% with notification_count=request.user.unread_notification_count has_unread_mentions=request.user.has_unread_mentions %}
|
||||
<div class="navbar-brand">
|
||||
<a class="navbar-item" href="/">
|
||||
<img class="image logo" src="{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static "images/logo-small.png" %}{% endif %}" alt="{% blocktrans with site_name=site.name %}{{ site_name }} home page{% endblocktrans %}">
|
||||
<img class="image logo" src="{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static "images/logo-small.png" %}{% endif %}" alt="{% blocktrans with site_name=site.name %}{{ site_name }} home page{% endblocktrans %}" loading="lazy" decoding="async">
|
||||
</a>
|
||||
<form class="navbar-item column is-align-items-start pt-5" action="{% url 'search' %}">
|
||||
<div class="field has-addons">
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
{% include 'notifications/items/add.html' %}
|
||||
{% elif notification.notification_type == 'REPORT' %}
|
||||
{% include 'notifications/items/report.html' %}
|
||||
{% elif notification.notification_type == 'LINK_DOMAIN' %}
|
||||
{% include 'notifications/items/link_domain.html' %}
|
||||
{% elif notification.notification_type == 'INVITE' %}
|
||||
{% include 'notifications/items/invite.html' %}
|
||||
{% elif notification.notification_type == 'ACCEPT' %}
|
||||
|
|
20
bookwyrm/templates/notifications/items/link_domain.html
Normal file
20
bookwyrm/templates/notifications/items/link_domain.html
Normal file
|
@ -0,0 +1,20 @@
|
|||
{% extends 'notifications/items/layout.html' %}
|
||||
{% load humanize %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block primary_link %}{% spaceless %}
|
||||
{% url 'settings-link-domain' %}
|
||||
{% endspaceless %}{% endblock %}
|
||||
|
||||
{% block icon %}
|
||||
<span class="icon icon-warning"></span>
|
||||
{% endblock %}
|
||||
|
||||
{% block description %}
|
||||
{% url 'settings-link-domain' as path %}
|
||||
{% blocktrans trimmed count counter=notification.related_link_domains.count with display_count=notification.related_link_domains.count|intcomma %}
|
||||
A new <a href="{{ path }}">link domain</a> needs review
|
||||
{% plural %}
|
||||
{{ display_count }} new <a href="{{ path }}">link domains</a> need moderation
|
||||
{% endblocktrans %}
|
||||
{% endblock %}
|
|
@ -21,7 +21,7 @@
|
|||
<nav class="navbar" aria-label="main navigation">
|
||||
<div class="container">
|
||||
<div class="navbar-brand">
|
||||
<img class="image logo navbar-item" src="{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static 'images/logo-small.png' %}{% endif %}" alt="Home page">
|
||||
<img class="image logo navbar-item" src="{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static 'images/logo-small.png' %}{% endif %}" alt="Home page" loading="lazy" decoding="async">
|
||||
<h2 class="navbar-item subtitle">{% block heading %}{% endblock %}</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
class="image logo"
|
||||
src="{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static "images/logo-small.png" %}{% endif %}"
|
||||
alt="{% blocktrans with site_name=site.name %}{{ site_name }} home page{% endblocktrans %}"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
>
|
||||
</span>
|
||||
<div class="navbar-item is-align-items-start pt-5 is-flex-grow-1">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<div class="columns">
|
||||
<div class="column is-narrow is-hidden-mobile">
|
||||
<figure class="block is-w-{% if size %}{{ size }}{% else %}xl{% endif %}">
|
||||
<img src="{% if site.logo %}{% get_media_prefix %}{{ site.logo }}{% else %}{% static "images/logo.png" %}{% endif %}" alt="BookWyrm logo">
|
||||
<img src="{% if site.logo %}{% get_media_prefix %}{{ site.logo }}{% else %}{% static "images/logo.png" %}{% endif %}" alt="BookWyrm logo" loading="lazy" decoding="async">
|
||||
</figure>
|
||||
</div>
|
||||
<div class="content">
|
||||
|
|
|
@ -5,4 +5,6 @@
|
|||
src="{% if user.avatar %}{% get_media_prefix %}{{ user.avatar }}{% else %}{% static "images/default_avi.jpg" %}{% endif %}"
|
||||
{% if ariaHide %}aria-hidden="true"{% endif %}
|
||||
alt="{{ user.alt_text }}"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
>
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
src="{{ book.cover }}"
|
||||
itemprop="thumbnailUrl"
|
||||
alt="{{ book.alt_text|default:'' }}"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
>
|
||||
{% else %}
|
||||
|
||||
|
|
|
@ -9,7 +9,11 @@
|
|||
{% endif %}>
|
||||
|
||||
<span class="icon icon-arrow-left" aria-hidden="true"></span>
|
||||
{% trans "Older" %}
|
||||
{% if mode == "chronological" %}
|
||||
{% trans "Newer" %}
|
||||
{% else %}
|
||||
{% trans "Previous" %}
|
||||
{% endif %}
|
||||
</a>
|
||||
|
||||
<a
|
||||
|
@ -20,7 +24,11 @@
|
|||
aria-hidden="true"
|
||||
{% endif %}>
|
||||
|
||||
{% trans "Newer" %}
|
||||
{% if mode == "chronological" %}
|
||||
{% trans "Older" %}
|
||||
{% else %}
|
||||
{% trans "Next" %}
|
||||
{% endif %}
|
||||
<span class="icon icon-arrow-right" aria-hidden="true"></span>
|
||||
</a>
|
||||
|
||||
|
|
|
@ -133,6 +133,8 @@
|
|||
alt="{{ attachment.caption }}"
|
||||
title="{{ attachment.caption }}"
|
||||
{% endif %}
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
>
|
||||
</a>
|
||||
</figure>
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<div class="container">
|
||||
<div class="navbar-brand">
|
||||
<a class="navbar-item" href="/">
|
||||
<img class="image logo" src="{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static "images/logo-small.png" %}{% endif %}" alt="{% blocktrans with site_name=site.name %}{{ site_name }} home page{% endblocktrans %}">
|
||||
<img class="image logo" src="{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static "images/logo-small.png" %}{% endif %}" alt="{% blocktrans with site_name=site.name %}{{ site_name }} home page{% endblocktrans %}" loading="lazy" decoding="async">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<div class="container">
|
||||
<div class="navbar-brand">
|
||||
<a class="navbar-item" href="/">
|
||||
<img class="image logo" src="{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static "images/logo-small.png" %}{% endif %}" alt="{% blocktrans with site_name=site.name %}{{ site_name }} home page{% endblocktrans %}">
|
||||
<img class="image logo" src="{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static "images/logo-small.png" %}{% endif %}" alt="{% blocktrans with site_name=site.name %}{{ site_name }} home page{% endblocktrans %}" loading="lazy" decoding="async">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -25,6 +25,6 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% include 'snippets/pagination.html' with page=activities path=path %}
|
||||
{% include 'snippets/pagination.html' with page=activities path=path mode="chronological" %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
{% trans "Back" %}
|
||||
</span>
|
||||
</summary>
|
||||
|
||||
|
||||
<div class="dropdown-menu">
|
||||
<ul
|
||||
class="dropdown-content"
|
||||
|
@ -130,7 +130,7 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% include 'snippets/pagination.html' with page=activities path=user.local_path anchor="#feed" %}
|
||||
{% include 'snippets/pagination.html' with page=activities path=user.local_path anchor="#feed" mode="chronological" %}
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -183,12 +183,21 @@ class BaseActivity(TestCase):
|
|||
"name": "gerald j. books",
|
||||
"href": "http://book.com/book",
|
||||
},
|
||||
{
|
||||
"type": "Hashtag",
|
||||
"name": "#BookClub",
|
||||
"href": "http://example.com/tags/BookClub",
|
||||
},
|
||||
],
|
||||
)
|
||||
update_data.to_model(model=models.Status, instance=status)
|
||||
self.assertEqual(status.mention_users.first(), self.user)
|
||||
self.assertEqual(status.mention_books.first(), book)
|
||||
|
||||
hashtag = models.Hashtag.objects.filter(name="#BookClub").first()
|
||||
self.assertIsNotNone(hashtag)
|
||||
self.assertEqual(status.mention_hashtags.first(), hashtag)
|
||||
|
||||
@responses.activate
|
||||
def test_to_model_one_to_many(self, *_):
|
||||
"""these are reversed relationships, where the secondary object
|
||||
|
|
64
bookwyrm/tests/activitypub/test_note.py
Normal file
64
bookwyrm/tests/activitypub/test_note.py
Normal file
|
@ -0,0 +1,64 @@
|
|||
""" tests functionality specifically for the Note ActivityPub dataclass"""
|
||||
from unittest.mock import patch
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from bookwyrm import activitypub
|
||||
from bookwyrm import models
|
||||
|
||||
|
||||
class Note(TestCase):
|
||||
"""the model-linked ActivityPub dataclass for Note-based types"""
|
||||
|
||||
# pylint: disable=invalid-name
|
||||
def setUp(self):
|
||||
"""create a shared user"""
|
||||
with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch(
|
||||
"bookwyrm.activitystreams.populate_stream_task.delay"
|
||||
), patch("bookwyrm.lists_stream.populate_lists_task.delay"):
|
||||
self.user = models.User.objects.create_user(
|
||||
"mouse", "mouse@mouse.mouse", "mouseword", local=True, localname="mouse"
|
||||
)
|
||||
self.user.remote_id = "https://test-instance.org/user/critic"
|
||||
self.user.save(broadcast=False, update_fields=["remote_id"])
|
||||
|
||||
self.book = models.Edition.objects.create(
|
||||
title="Test Edition", remote_id="http://book.com/book"
|
||||
)
|
||||
|
||||
def test_to_model_hashtag_postprocess_content(self):
|
||||
"""test that hashtag links are post-processed and link to local URLs"""
|
||||
update_data = activitypub.Comment(
|
||||
id="https://test-instance.org/user/critic/comment/42",
|
||||
attributedTo=self.user.remote_id,
|
||||
inReplyToBook=self.book.remote_id,
|
||||
content="<p>This is interesting "
|
||||
+ '<a href="https://test-instance.org/hashtag/2" data-mention="hashtag">'
|
||||
+ "#bookclub</a></p>",
|
||||
published="2023-02-17T23:12:59.398030+00:00",
|
||||
to=[],
|
||||
cc=[],
|
||||
tag=[
|
||||
{
|
||||
"type": "Edition",
|
||||
"name": "gerald j. books",
|
||||
"href": "http://book.com/book",
|
||||
},
|
||||
{
|
||||
"type": "Hashtag",
|
||||
"name": "#BookClub",
|
||||
"href": "https://test-instance.org/hashtag/2",
|
||||
},
|
||||
],
|
||||
)
|
||||
|
||||
instance = update_data.to_model(model=models.Status)
|
||||
self.assertIsNotNone(instance)
|
||||
hashtag = models.Hashtag.objects.filter(name="#BookClub").first()
|
||||
self.assertIsNotNone(hashtag)
|
||||
self.assertEqual(
|
||||
instance.content,
|
||||
"<p>This is interesting "
|
||||
+ f'<a href="{hashtag.remote_id}" data-mention="hashtag">'
|
||||
+ "#bookclub</a></p>",
|
||||
)
|
|
@ -53,18 +53,18 @@ class Activitystreams(TestCase):
|
|||
def test_activitystream_class_ids(self, *_):
|
||||
"""the abstract base class for stream objects"""
|
||||
self.assertEqual(
|
||||
self.test_stream.stream_id(self.local_user),
|
||||
self.test_stream.stream_id(self.local_user.id),
|
||||
f"{self.local_user.id}-test",
|
||||
)
|
||||
self.assertEqual(
|
||||
self.test_stream.unread_id(self.local_user),
|
||||
self.test_stream.unread_id(self.local_user.id),
|
||||
f"{self.local_user.id}-test-unread",
|
||||
)
|
||||
|
||||
def test_unread_by_status_type_id(self, *_):
|
||||
"""stream for status type"""
|
||||
self.assertEqual(
|
||||
self.test_stream.unread_by_status_type_id(self.local_user),
|
||||
self.test_stream.unread_by_status_type_id(self.local_user.id),
|
||||
f"{self.local_user.id}-test-unread-by-type",
|
||||
)
|
||||
|
||||
|
@ -118,9 +118,9 @@ class Activitystreams(TestCase):
|
|||
)
|
||||
users = self.test_stream.get_audience(status)
|
||||
# remote users don't have feeds
|
||||
self.assertFalse(self.remote_user in users)
|
||||
self.assertTrue(self.local_user in users)
|
||||
self.assertTrue(self.another_user in users)
|
||||
self.assertFalse(self.remote_user.id in users)
|
||||
self.assertTrue(self.local_user.id in users)
|
||||
self.assertTrue(self.another_user.id in users)
|
||||
|
||||
def test_abstractstream_get_audience_direct(self, *_):
|
||||
"""get a list of users that should see a status"""
|
||||
|
@ -141,9 +141,9 @@ class Activitystreams(TestCase):
|
|||
)
|
||||
status.mention_users.add(self.local_user)
|
||||
users = self.test_stream.get_audience(status)
|
||||
self.assertTrue(self.local_user in users)
|
||||
self.assertFalse(self.another_user in users)
|
||||
self.assertFalse(self.remote_user in users)
|
||||
self.assertTrue(self.local_user.id in users)
|
||||
self.assertFalse(self.another_user.id in users)
|
||||
self.assertFalse(self.remote_user.id in users)
|
||||
|
||||
def test_abstractstream_get_audience_followers_remote_user(self, *_):
|
||||
"""get a list of users that should see a status"""
|
||||
|
@ -153,7 +153,7 @@ class Activitystreams(TestCase):
|
|||
privacy="followers",
|
||||
)
|
||||
users = self.test_stream.get_audience(status)
|
||||
self.assertFalse(users.exists())
|
||||
self.assertEqual(users, [])
|
||||
|
||||
def test_abstractstream_get_audience_followers_self(self, *_):
|
||||
"""get a list of users that should see a status"""
|
||||
|
@ -164,9 +164,9 @@ class Activitystreams(TestCase):
|
|||
book=self.book,
|
||||
)
|
||||
users = self.test_stream.get_audience(status)
|
||||
self.assertTrue(self.local_user in users)
|
||||
self.assertFalse(self.another_user in users)
|
||||
self.assertFalse(self.remote_user in users)
|
||||
self.assertTrue(self.local_user.id in users)
|
||||
self.assertFalse(self.another_user.id in users)
|
||||
self.assertFalse(self.remote_user.id in users)
|
||||
|
||||
def test_abstractstream_get_audience_followers_with_mention(self, *_):
|
||||
"""get a list of users that should see a status"""
|
||||
|
@ -179,9 +179,9 @@ class Activitystreams(TestCase):
|
|||
status.mention_users.add(self.local_user)
|
||||
|
||||
users = self.test_stream.get_audience(status)
|
||||
self.assertTrue(self.local_user in users)
|
||||
self.assertFalse(self.another_user in users)
|
||||
self.assertFalse(self.remote_user in users)
|
||||
self.assertTrue(self.local_user.id in users)
|
||||
self.assertFalse(self.another_user.id in users)
|
||||
self.assertFalse(self.remote_user.id in users)
|
||||
|
||||
def test_abstractstream_get_audience_followers_with_relationship(self, *_):
|
||||
"""get a list of users that should see a status"""
|
||||
|
@ -193,6 +193,6 @@ class Activitystreams(TestCase):
|
|||
book=self.book,
|
||||
)
|
||||
users = self.test_stream.get_audience(status)
|
||||
self.assertFalse(self.local_user in users)
|
||||
self.assertFalse(self.another_user in users)
|
||||
self.assertFalse(self.remote_user in users)
|
||||
self.assertFalse(self.local_user.id in users)
|
||||
self.assertFalse(self.another_user.id in users)
|
||||
self.assertFalse(self.remote_user.id in users)
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
""" testing activitystreams """
|
||||
import itertools
|
||||
|
||||
from unittest.mock import patch
|
||||
from django.test import TestCase
|
||||
from bookwyrm import activitystreams, models
|
||||
|
@ -69,12 +71,29 @@ class Activitystreams(TestCase):
|
|||
shelf=self.local_user.shelf_set.first(),
|
||||
book=self.book,
|
||||
)
|
||||
|
||||
class RedisMockCounter:
|
||||
"""keep track of calls to mock redis store"""
|
||||
|
||||
calls = []
|
||||
|
||||
def bulk_add_objects_to_store(self, objs, store):
|
||||
"""keep track of bulk_add_objects_to_store calls"""
|
||||
self.calls.append((objs, store))
|
||||
|
||||
redis_mock_counter = RedisMockCounter()
|
||||
with patch(
|
||||
"bookwyrm.activitystreams.BooksStream.bulk_add_objects_to_store"
|
||||
) as redis_mock:
|
||||
redis_mock.side_effect = redis_mock_counter.bulk_add_objects_to_store
|
||||
activitystreams.BooksStream().add_book_statuses(self.local_user, self.book)
|
||||
args = redis_mock.call_args[0]
|
||||
queryset = args[0]
|
||||
self.assertEqual(queryset.count(), 1)
|
||||
self.assertTrue(status in queryset)
|
||||
self.assertEqual(args[1], f"{self.local_user.id}-books")
|
||||
|
||||
self.assertEqual(sum(map(lambda x: x[0].count(), redis_mock_counter.calls)), 1)
|
||||
self.assertTrue(
|
||||
status
|
||||
in itertools.chain.from_iterable(
|
||||
map(lambda x: x[0], redis_mock_counter.calls)
|
||||
)
|
||||
)
|
||||
for call in redis_mock_counter.calls:
|
||||
self.assertEqual(call[1], f"{self.local_user.id}-books")
|
||||
|
|
|
@ -44,7 +44,7 @@ class Activitystreams(TestCase):
|
|||
user=self.remote_user, content="hi", privacy="public"
|
||||
)
|
||||
users = activitystreams.HomeStream().get_audience(status)
|
||||
self.assertFalse(users.exists())
|
||||
self.assertEqual(users, [])
|
||||
|
||||
def test_homestream_get_audience_with_mentions(self, *_):
|
||||
"""get a list of users that should see a status"""
|
||||
|
@ -53,8 +53,8 @@ class Activitystreams(TestCase):
|
|||
)
|
||||
status.mention_users.add(self.local_user)
|
||||
users = activitystreams.HomeStream().get_audience(status)
|
||||
self.assertFalse(self.local_user in users)
|
||||
self.assertFalse(self.another_user in users)
|
||||
self.assertFalse(self.local_user.id in users)
|
||||
self.assertFalse(self.another_user.id in users)
|
||||
|
||||
def test_homestream_get_audience_with_relationship(self, *_):
|
||||
"""get a list of users that should see a status"""
|
||||
|
@ -63,5 +63,5 @@ class Activitystreams(TestCase):
|
|||
user=self.remote_user, content="hi", privacy="public"
|
||||
)
|
||||
users = activitystreams.HomeStream().get_audience(status)
|
||||
self.assertTrue(self.local_user in users)
|
||||
self.assertFalse(self.another_user in users)
|
||||
self.assertTrue(self.local_user.id in users)
|
||||
self.assertFalse(self.another_user.id in users)
|
||||
|
|
|
@ -54,8 +54,8 @@ class Activitystreams(TestCase):
|
|||
user=self.local_user, content="hi", privacy="public"
|
||||
)
|
||||
users = activitystreams.LocalStream().get_audience(status)
|
||||
self.assertTrue(self.local_user in users)
|
||||
self.assertTrue(self.another_user in users)
|
||||
self.assertTrue(self.local_user.id in users)
|
||||
self.assertTrue(self.another_user.id in users)
|
||||
|
||||
def test_localstream_get_audience_unlisted(self, *_):
|
||||
"""get a list of users that should see a status"""
|
||||
|
@ -88,7 +88,7 @@ class Activitystreams(TestCase):
|
|||
)
|
||||
# yes book, yes audience
|
||||
audience = activitystreams.BooksStream().get_audience(status)
|
||||
self.assertTrue(self.local_user in audience)
|
||||
self.assertTrue(self.local_user.id in audience)
|
||||
|
||||
def test_localstream_get_audience_books_book_field(self, *_):
|
||||
"""get a list of users that should see a status"""
|
||||
|
@ -102,7 +102,7 @@ class Activitystreams(TestCase):
|
|||
)
|
||||
# yes book, yes audience
|
||||
audience = activitystreams.BooksStream().get_audience(status)
|
||||
self.assertTrue(self.local_user in audience)
|
||||
self.assertTrue(self.local_user.id in audience)
|
||||
|
||||
def test_localstream_get_audience_books_alternate_edition(self, *_):
|
||||
"""get a list of users that should see a status"""
|
||||
|
@ -119,7 +119,7 @@ class Activitystreams(TestCase):
|
|||
)
|
||||
# yes book, yes audience
|
||||
audience = activitystreams.BooksStream().get_audience(status)
|
||||
self.assertTrue(self.local_user in audience)
|
||||
self.assertTrue(self.local_user.id in audience)
|
||||
|
||||
def test_localstream_get_audience_books_non_public(self, *_):
|
||||
"""get a list of users that should see a status"""
|
||||
|
|
|
@ -265,7 +265,7 @@ class Status(TestCase):
|
|||
self.assertEqual(activity["attachment"][0]["type"], "Document")
|
||||
self.assertTrue(
|
||||
re.match(
|
||||
r"https:\/\/your.domain.here\/images\/covers\/test_[A-z0-9]+.jpg",
|
||||
r"https:\/\/your.domain.here\/images\/covers\/test(_[A-z0-9]+)?.jpg",
|
||||
activity["attachment"][0]["url"],
|
||||
)
|
||||
)
|
||||
|
|
|
@ -95,7 +95,8 @@ class Signature(TestCase):
|
|||
|
||||
def test_correct_signature(self):
|
||||
"""this one should just work"""
|
||||
response = self.send_test_request(sender=self.mouse)
|
||||
with patch("bookwyrm.models.relationship.UserFollowRequest.accept"):
|
||||
response = self.send_test_request(sender=self.mouse)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_wrong_signature(self):
|
||||
|
@ -124,8 +125,12 @@ class Signature(TestCase):
|
|||
)
|
||||
|
||||
with patch("bookwyrm.models.user.get_remote_reviews.delay"):
|
||||
response = self.send_test_request(sender=self.fake_remote)
|
||||
with patch(
|
||||
"bookwyrm.models.relationship.UserFollowRequest.accept"
|
||||
) as accept_mock:
|
||||
response = self.send_test_request(sender=self.fake_remote)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTrue(accept_mock.called)
|
||||
|
||||
@responses.activate
|
||||
def test_key_needs_refresh(self):
|
||||
|
@ -148,16 +153,28 @@ class Signature(TestCase):
|
|||
|
||||
with patch("bookwyrm.models.user.get_remote_reviews.delay"):
|
||||
# Key correct:
|
||||
response = self.send_test_request(sender=self.fake_remote)
|
||||
with patch(
|
||||
"bookwyrm.models.relationship.UserFollowRequest.accept"
|
||||
) as accept_mock:
|
||||
response = self.send_test_request(sender=self.fake_remote)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTrue(accept_mock.called)
|
||||
|
||||
# Old key is cached, so still works:
|
||||
response = self.send_test_request(sender=self.fake_remote)
|
||||
with patch(
|
||||
"bookwyrm.models.relationship.UserFollowRequest.accept"
|
||||
) as accept_mock:
|
||||
response = self.send_test_request(sender=self.fake_remote)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTrue(accept_mock.called)
|
||||
|
||||
# Try with new key:
|
||||
response = self.send_test_request(sender=new_sender)
|
||||
with patch(
|
||||
"bookwyrm.models.relationship.UserFollowRequest.accept"
|
||||
) as accept_mock:
|
||||
response = self.send_test_request(sender=new_sender)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTrue(accept_mock.called)
|
||||
|
||||
# Now the old key will fail:
|
||||
response = self.send_test_request(sender=self.fake_remote)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
""" test for app action functionality """
|
||||
from unittest.mock import patch
|
||||
|
||||
from django.http import StreamingHttpResponse
|
||||
from django.http import HttpResponse
|
||||
from django.test import TestCase
|
||||
from django.test.client import RequestFactory
|
||||
|
||||
|
@ -57,13 +57,12 @@ class ExportViews(TestCase):
|
|||
request = self.factory.post("")
|
||||
request.user = self.local_user
|
||||
export = views.Export.as_view()(request)
|
||||
self.assertIsInstance(export, StreamingHttpResponse)
|
||||
self.assertIsInstance(export, HttpResponse)
|
||||
self.assertEqual(export.status_code, 200)
|
||||
result = list(export.streaming_content)
|
||||
# pylint: disable=line-too-long
|
||||
self.assertEqual(
|
||||
result[0],
|
||||
b"title,author_text,remote_id,openlibrary_key,inventaire_id,librarything_key,goodreads_key,bnf_id,viaf,wikidata,asin,aasin,isfdb,isbn_10,isbn_13,oclc_number,rating,review_name,review_cw,review_content\r\n",
|
||||
export.content,
|
||||
b"title,author_text,remote_id,openlibrary_key,inventaire_id,librarything_key,goodreads_key,bnf_id,viaf,wikidata,asin,aasin,isfdb,isbn_10,isbn_13,oclc_number,rating,review_name,review_cw,review_content\r\nTest Book,,"
|
||||
+ self.book.remote_id.encode("utf-8")
|
||||
+ b",,,,,beep,,,,,,123456789X,9781234567890,,,,,\r\n",
|
||||
)
|
||||
expected = f"Test Book,,{self.book.remote_id},,,,,beep,,,,,,123456789X,9781234567890,,,,,\r\n"
|
||||
self.assertEqual(result[1].decode("utf-8"), expected)
|
||||
|
|
197
bookwyrm/tests/views/test_hashtag.py
Normal file
197
bookwyrm/tests/views/test_hashtag.py
Normal file
|
@ -0,0 +1,197 @@
|
|||
""" tests for hashtag view """
|
||||
from unittest.mock import patch
|
||||
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
from django.http import Http404
|
||||
from django.template.response import TemplateResponse
|
||||
from django.test import TestCase
|
||||
from django.test.client import RequestFactory
|
||||
|
||||
from bookwyrm import models, views
|
||||
from bookwyrm.tests.validate_html import validate_html
|
||||
|
||||
|
||||
class HashtagView(TestCase):
|
||||
"""hashtag view"""
|
||||
|
||||
def setUp(self):
|
||||
self.factory = RequestFactory()
|
||||
with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch(
|
||||
"bookwyrm.activitystreams.populate_stream_task.delay"
|
||||
), patch("bookwyrm.lists_stream.populate_lists_task.delay"):
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
"mouse@mouse.com",
|
||||
"mouseword",
|
||||
local=True,
|
||||
localname="mouse",
|
||||
remote_id="https://example.com/users/mouse",
|
||||
)
|
||||
self.follower_user = models.User.objects.create_user(
|
||||
"follower@local.com",
|
||||
"follower@email.com",
|
||||
"followerword",
|
||||
local=True,
|
||||
localname="follower",
|
||||
remote_id="https://example.com/users/follower",
|
||||
)
|
||||
self.local_user.followers.add(self.follower_user)
|
||||
self.other_user = models.User.objects.create_user(
|
||||
"other@local.com",
|
||||
"other@email.com",
|
||||
"otherword",
|
||||
local=True,
|
||||
localname="other",
|
||||
remote_id="https://example.com/users/other",
|
||||
)
|
||||
|
||||
self.work = models.Work.objects.create(title="Test Work")
|
||||
self.book = models.Edition.objects.create(
|
||||
title="Example Edition",
|
||||
remote_id="https://example.com/book/1",
|
||||
parent_work=self.work,
|
||||
)
|
||||
|
||||
self.hashtag_bookclub = models.Hashtag.objects.create(name="#BookClub")
|
||||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"
|
||||
), patch("bookwyrm.activitystreams.add_status_task.delay"):
|
||||
self.statuses_bookclub = [
|
||||
models.Comment.objects.create(
|
||||
book=self.book, user=self.local_user, content="#BookClub"
|
||||
),
|
||||
]
|
||||
for status in self.statuses_bookclub:
|
||||
status.mention_hashtags.add(self.hashtag_bookclub)
|
||||
|
||||
self.anonymous_user = AnonymousUser
|
||||
self.anonymous_user.is_authenticated = False
|
||||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_hashtag_page(self):
|
||||
"""just make sure it loads"""
|
||||
view = views.Hashtag.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
result = view(request, self.hashtag_bookclub.id)
|
||||
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
self.assertEqual(len(result.context_data["activities"]), 1)
|
||||
|
||||
def test_privacy_direct(self):
|
||||
"""ensure statuses with privacy set to direct are always filtered out"""
|
||||
view = views.Hashtag.as_view()
|
||||
request = self.factory.get("")
|
||||
|
||||
hashtag = models.Hashtag.objects.create(name="#test")
|
||||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"
|
||||
), patch("bookwyrm.activitystreams.add_status_task.delay"):
|
||||
status = models.Comment.objects.create(
|
||||
user=self.local_user, book=self.book, content="#test", privacy="direct"
|
||||
)
|
||||
status.mention_hashtags.add(hashtag)
|
||||
|
||||
for user in [
|
||||
self.local_user,
|
||||
self.follower_user,
|
||||
self.other_user,
|
||||
self.anonymous_user,
|
||||
]:
|
||||
request.user = user
|
||||
result = view(request, hashtag.id)
|
||||
self.assertNotIn(status, result.context_data["activities"])
|
||||
|
||||
def test_privacy_unlisted(self):
|
||||
"""ensure statuses with privacy set to unlisted are always filtered out"""
|
||||
view = views.Hashtag.as_view()
|
||||
request = self.factory.get("")
|
||||
|
||||
hashtag = models.Hashtag.objects.create(name="#test")
|
||||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"
|
||||
), patch("bookwyrm.activitystreams.add_status_task.delay"):
|
||||
status = models.Comment.objects.create(
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
content="#test",
|
||||
privacy="unlisted",
|
||||
)
|
||||
status.mention_hashtags.add(hashtag)
|
||||
|
||||
for user in [
|
||||
self.local_user,
|
||||
self.follower_user,
|
||||
self.other_user,
|
||||
self.anonymous_user,
|
||||
]:
|
||||
request.user = user
|
||||
result = view(request, hashtag.id)
|
||||
self.assertNotIn(status, result.context_data["activities"])
|
||||
|
||||
def test_privacy_following(self):
|
||||
"""ensure only creator and followers can see statuses with privacy
|
||||
set to followers"""
|
||||
view = views.Hashtag.as_view()
|
||||
request = self.factory.get("")
|
||||
|
||||
hashtag = models.Hashtag.objects.create(name="#test")
|
||||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"
|
||||
), patch("bookwyrm.activitystreams.add_status_task.delay"):
|
||||
status = models.Comment.objects.create(
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
content="#test",
|
||||
privacy="followers",
|
||||
)
|
||||
status.mention_hashtags.add(hashtag)
|
||||
|
||||
for user in [self.local_user, self.follower_user]:
|
||||
request.user = user
|
||||
result = view(request, hashtag.id)
|
||||
self.assertIn(status, result.context_data["activities"])
|
||||
|
||||
for user in [self.other_user, self.anonymous_user]:
|
||||
request.user = user
|
||||
result = view(request, hashtag.id)
|
||||
self.assertNotIn(status, result.context_data["activities"])
|
||||
|
||||
def test_not_found(self):
|
||||
"""make sure 404 is rendered"""
|
||||
view = views.Hashtag.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
with self.assertRaises(Http404):
|
||||
view(request, 42)
|
||||
|
||||
def test_empty(self):
|
||||
"""hashtag without any statuses should still render"""
|
||||
view = views.Hashtag.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
hashtag_empty = models.Hashtag.objects.create(name="#empty")
|
||||
result = view(request, hashtag_empty.id)
|
||||
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
self.assertEqual(len(result.context_data["activities"]), 0)
|
||||
|
||||
def test_logged_out(self):
|
||||
"""make sure it loads all activities"""
|
||||
view = views.Hashtag.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.anonymous_user
|
||||
|
||||
result = view(request, self.hashtag_bookclub.id)
|
||||
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
self.assertEqual(len(result.context_data["activities"]), 1)
|
|
@ -6,7 +6,7 @@ from django.test import TestCase, TransactionTestCase
|
|||
from django.test.client import RequestFactory
|
||||
|
||||
from bookwyrm import forms, models, views
|
||||
from bookwyrm.views.status import find_mentions
|
||||
from bookwyrm.views.status import find_mentions, find_or_create_hashtags
|
||||
from bookwyrm.settings import DOMAIN
|
||||
|
||||
from bookwyrm.tests.validate_html import validate_html
|
||||
|
@ -95,6 +95,7 @@ class StatusViews(TestCase):
|
|||
local=True,
|
||||
localname="nutria",
|
||||
)
|
||||
self.existing_hashtag = models.Hashtag.objects.create(name="#existing")
|
||||
with patch("bookwyrm.models.user.set_remote_server"):
|
||||
self.remote_user = models.User.objects.create_user(
|
||||
"rat",
|
||||
|
@ -333,6 +334,71 @@ class StatusViews(TestCase):
|
|||
result = find_mentions(self.local_user, "@beep@beep.com")
|
||||
self.assertEqual(result, {})
|
||||
|
||||
def test_create_status_hashtags(self, *_):
|
||||
"""#mention a hashtag in a post"""
|
||||
view = views.CreateStatus.as_view()
|
||||
form = forms.CommentForm(
|
||||
{
|
||||
"content": "this is an #EXISTING hashtag but all uppercase, "
|
||||
+ "this one is #NewTag.",
|
||||
"user": self.local_user.id,
|
||||
"book": self.book.id,
|
||||
"privacy": "public",
|
||||
}
|
||||
)
|
||||
request = self.factory.post("", form.data)
|
||||
request.user = self.local_user
|
||||
|
||||
view(request, "comment")
|
||||
status = models.Status.objects.get()
|
||||
|
||||
hashtags = models.Hashtag.objects.all()
|
||||
self.assertEqual(len(hashtags), 2)
|
||||
self.assertEqual(list(status.mention_hashtags.all()), list(hashtags))
|
||||
|
||||
hashtag_exising = models.Hashtag.objects.filter(name="#existing").first()
|
||||
hashtag_new = models.Hashtag.objects.filter(name="#NewTag").first()
|
||||
self.assertEqual(
|
||||
status.content,
|
||||
"<p>this is an "
|
||||
+ f'<a href="{hashtag_exising.remote_id}" data-mention="hashtag">'
|
||||
+ "#EXISTING</a> hashtag but all uppercase, this one is "
|
||||
+ f'<a href="{hashtag_new.remote_id}" data-mention="hashtag">'
|
||||
+ "#NewTag</a>.</p>",
|
||||
)
|
||||
|
||||
def test_find_or_create_hashtags(self, *_):
|
||||
"""detect and look up #hashtags"""
|
||||
result = find_or_create_hashtags("no hashtag to be found here")
|
||||
self.assertEqual(result, {})
|
||||
|
||||
result = find_or_create_hashtags("#existing")
|
||||
self.assertEqual(result["#existing"], self.existing_hashtag)
|
||||
|
||||
result = find_or_create_hashtags("leading text #existing")
|
||||
self.assertEqual(result["#existing"], self.existing_hashtag)
|
||||
|
||||
result = find_or_create_hashtags("leading #existing trailing")
|
||||
self.assertEqual(result["#existing"], self.existing_hashtag)
|
||||
|
||||
self.assertIsNone(models.Hashtag.objects.filter(name="new").first())
|
||||
result = find_or_create_hashtags("leading #new trailing")
|
||||
new_hashtag = models.Hashtag.objects.filter(name="#new").first()
|
||||
self.assertIsNotNone(new_hashtag)
|
||||
self.assertEqual(result["#new"], new_hashtag)
|
||||
|
||||
result = find_or_create_hashtags("leading #existing #new trailing")
|
||||
self.assertEqual(result["#existing"], self.existing_hashtag)
|
||||
self.assertEqual(result["#new"], new_hashtag)
|
||||
|
||||
result = find_or_create_hashtags("#Braunbär")
|
||||
hashtag = models.Hashtag.objects.filter(name="#Braunbär").first()
|
||||
self.assertEqual(result["#Braunbär"], hashtag)
|
||||
|
||||
result = find_or_create_hashtags("#ひぐま")
|
||||
hashtag = models.Hashtag.objects.filter(name="#ひぐま").first()
|
||||
self.assertEqual(result["#ひぐま"], hashtag)
|
||||
|
||||
def test_format_links_simple_url(self, *_):
|
||||
"""find and format urls into a tags"""
|
||||
url = "http://www.fish.com/"
|
||||
|
|
|
@ -356,6 +356,15 @@ urlpatterns = [
|
|||
name="notifications",
|
||||
),
|
||||
re_path(r"^directory/?", views.Directory.as_view(), name="directory"),
|
||||
# hashtag
|
||||
re_path(
|
||||
r"^hashtag/(?P<hashtag_id>\d+)/?$", views.Hashtag.as_view(), name="hashtag"
|
||||
),
|
||||
re_path(
|
||||
rf"^hashtag/(?P<hashtag_id>\d+){regex.SLUG}/?$",
|
||||
views.Hashtag.as_view(),
|
||||
name="hashtag",
|
||||
),
|
||||
# Get started
|
||||
re_path(
|
||||
r"^get-started/profile/?$",
|
||||
|
@ -764,3 +773,6 @@ urlpatterns = [
|
|||
),
|
||||
path("guided-tour/<tour>", views.toggle_guided_tour),
|
||||
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||
|
||||
# pylint: disable=invalid-name
|
||||
handler500 = "bookwyrm.views.server_error"
|
||||
|
|
|
@ -7,5 +7,6 @@ USERNAME = rf"{LOCALNAME}(@{DOMAIN})?"
|
|||
STRICT_USERNAME = rf"(\B{STRICT_LOCALNAME}(@{DOMAIN})?\b)"
|
||||
FULL_USERNAME = rf"{LOCALNAME}@{DOMAIN}\b"
|
||||
SLUG = r"/s/(?P<slug>[-_a-z0-9]*)"
|
||||
HASHTAG = r"(#[^!@#$%^&*(),.?\":{}|<>\s]+)"
|
||||
# should match (BookWyrm/1.0.0; or (BookWyrm/99.1.2;
|
||||
BOOKWYRM_USER_AGENT = r"\(BookWyrm/[0-9]+\.[0-9]+\.[0-9]+;"
|
||||
|
|
|
@ -21,6 +21,6 @@ def clean(input_text):
|
|||
"ol",
|
||||
"li",
|
||||
],
|
||||
attributes=["href", "rel", "src", "alt"],
|
||||
attributes=["href", "rel", "src", "alt", "data-mention"],
|
||||
strip=True,
|
||||
)
|
||||
|
|
|
@ -130,6 +130,7 @@ from .group import (
|
|||
accept_membership,
|
||||
reject_membership,
|
||||
)
|
||||
from .hashtag import Hashtag
|
||||
from .inbox import Inbox
|
||||
from .interaction import Favorite, Unfavorite, Boost, Unboost
|
||||
from .isbn import Isbn
|
||||
|
@ -164,3 +165,4 @@ from .annual_summary import (
|
|||
summary_add_key,
|
||||
summary_revoke_key,
|
||||
)
|
||||
from .server_error import server_error
|
||||
|
|
|
@ -16,7 +16,6 @@ from csp.decorators import csp_update
|
|||
|
||||
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
|
||||
|
||||
|
||||
|
@ -61,6 +60,7 @@ class Dashboard(View):
|
|||
)
|
||||
|
||||
# check version
|
||||
|
||||
try:
|
||||
release = get_data(settings.RELEASE_API, timeout=3)
|
||||
available_version = release.get("tag_name", None)
|
||||
|
@ -69,7 +69,7 @@ class Dashboard(View):
|
|||
):
|
||||
data["current_version"] = settings.VERSION
|
||||
data["available_version"] = available_version
|
||||
except ConnectorException:
|
||||
except: # pylint: disable= bare-except
|
||||
pass
|
||||
|
||||
return TemplateResponse(request, "settings/dashboard/dashboard.html", data)
|
||||
|
|
54
bookwyrm/views/hashtag.py
Normal file
54
bookwyrm/views/hashtag.py
Normal file
|
@ -0,0 +1,54 @@
|
|||
""" listing statuses for a given hashtag """
|
||||
from django.core.paginator import Paginator
|
||||
from django.db.models import Q
|
||||
from django.views import View
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.template.response import TemplateResponse
|
||||
|
||||
from bookwyrm import models
|
||||
from bookwyrm.settings import PAGE_LENGTH
|
||||
from bookwyrm.views.helpers import maybe_redirect_local_path
|
||||
|
||||
|
||||
# pylint: disable= no-self-use
|
||||
class Hashtag(View):
|
||||
"""listing statuses for a given hashtag"""
|
||||
|
||||
# pylint: disable=unused-argument
|
||||
def get(self, request, hashtag_id, slug=None):
|
||||
"""show hashtag with related statuses"""
|
||||
hashtag = get_object_or_404(models.Hashtag, id=hashtag_id)
|
||||
|
||||
if redirect_local_path := maybe_redirect_local_path(request, hashtag):
|
||||
return redirect_local_path
|
||||
|
||||
activities = (
|
||||
models.Status.privacy_filter(
|
||||
request.user,
|
||||
)
|
||||
.filter(
|
||||
Q(mention_hashtags=hashtag),
|
||||
)
|
||||
.exclude(
|
||||
privacy__in=["direct", "unlisted"],
|
||||
)
|
||||
.select_related(
|
||||
"user",
|
||||
"reply_parent",
|
||||
"review__book",
|
||||
"comment__book",
|
||||
"quotation__book",
|
||||
)
|
||||
.prefetch_related(
|
||||
"mention_books",
|
||||
"mention_users",
|
||||
"attachments",
|
||||
)
|
||||
)
|
||||
paginated = Paginator(activities, PAGE_LENGTH)
|
||||
|
||||
data = {
|
||||
"hashtag": hashtag.name,
|
||||
"activities": paginated.get_page(request.GET.get("page", 1)),
|
||||
}
|
||||
return TemplateResponse(request, "hashtag.html", data)
|
|
@ -64,7 +64,7 @@ class Inbox(View):
|
|||
high = ["Follow", "Accept", "Reject", "Block", "Unblock", "Undo"]
|
||||
|
||||
priority = HIGH if activity_json["type"] in high else MEDIUM
|
||||
activity_task.apply_async(args=(activity_json,), queue=priority)
|
||||
sometimes_async_activity_task(activity_json, queue=priority)
|
||||
return HttpResponse()
|
||||
|
||||
|
||||
|
@ -102,7 +102,20 @@ def raise_is_blocked_activity(activity_json):
|
|||
raise PermissionDenied()
|
||||
|
||||
|
||||
@app.task(queue=MEDIUM)
|
||||
def sometimes_async_activity_task(activity_json, queue=MEDIUM):
|
||||
"""Sometimes we can effectively respond to a request without queuing a new task,
|
||||
and whever that is possible, we should do it."""
|
||||
activity = activitypub.parse(activity_json)
|
||||
|
||||
# try resolving this activity without making any http requests
|
||||
try:
|
||||
activity.action(allow_external_connections=False)
|
||||
except activitypub.ActivitySerializerError:
|
||||
# if that doesn't work, run it asynchronously
|
||||
activity_task.apply_async(args=(activity_json,), queue=queue)
|
||||
|
||||
|
||||
@app.task(queue=MEDIUM, ignore_result=True)
|
||||
def activity_task(activity_json):
|
||||
"""do something with this json we think is legit"""
|
||||
# lets see if the activitypub module can make sense of this json
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
""" Let users export their book data """
|
||||
import csv
|
||||
import io
|
||||
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.db.models import Q
|
||||
from django.http import StreamingHttpResponse
|
||||
from django.http import HttpResponse
|
||||
from django.template.response import TemplateResponse
|
||||
from django.views import View
|
||||
from django.utils.decorators import method_decorator
|
||||
|
@ -20,76 +21,66 @@ class Export(View):
|
|||
return TemplateResponse(request, "preferences/export.html")
|
||||
|
||||
def post(self, request):
|
||||
"""Streaming the csv file of a user's book data"""
|
||||
data = (
|
||||
models.Edition.viewer_aware_objects(request.user)
|
||||
.filter(
|
||||
Q(shelves__user=request.user)
|
||||
| Q(readthrough__user=request.user)
|
||||
| Q(review__user=request.user)
|
||||
| Q(comment__user=request.user)
|
||||
| Q(quotation__user=request.user)
|
||||
)
|
||||
.distinct()
|
||||
"""Download the csv file of a user's book data"""
|
||||
books = models.Edition.viewer_aware_objects(request.user)
|
||||
books_shelves = books.filter(Q(shelves__user=request.user)).distinct()
|
||||
books_readthrough = books.filter(Q(readthrough__user=request.user)).distinct()
|
||||
books_review = books.filter(Q(review__user=request.user)).distinct()
|
||||
books_comment = books.filter(Q(comment__user=request.user)).distinct()
|
||||
books_quotation = books.filter(Q(quotation__user=request.user)).distinct()
|
||||
|
||||
books = set(
|
||||
list(books_shelves)
|
||||
+ list(books_readthrough)
|
||||
+ list(books_review)
|
||||
+ list(books_comment)
|
||||
+ list(books_quotation)
|
||||
)
|
||||
|
||||
generator = csv_row_generator(data, request.user)
|
||||
csv_string = io.StringIO()
|
||||
writer = csv.writer(csv_string)
|
||||
|
||||
pseudo_buffer = Echo()
|
||||
writer = csv.writer(pseudo_buffer)
|
||||
# for testing, if you want to see the results in the browser:
|
||||
# from django.http import JsonResponse
|
||||
# return JsonResponse(list(generator), safe=False)
|
||||
return StreamingHttpResponse(
|
||||
(writer.writerow(row) for row in generator),
|
||||
deduplication_fields = [
|
||||
f.name
|
||||
for f in models.Edition._meta.get_fields() # pylint: disable=protected-access
|
||||
if getattr(f, "deduplication_field", False)
|
||||
]
|
||||
fields = (
|
||||
["title", "author_text"]
|
||||
+ deduplication_fields
|
||||
+ ["rating", "review_name", "review_cw", "review_content"]
|
||||
)
|
||||
writer.writerow(fields)
|
||||
|
||||
for book in books:
|
||||
# I think this is more efficient than doing a subquery in the view? but idk
|
||||
review_rating = (
|
||||
models.Review.objects.filter(
|
||||
user=request.user, book=book, rating__isnull=False
|
||||
)
|
||||
.order_by("-published_date")
|
||||
.first()
|
||||
)
|
||||
|
||||
book.rating = review_rating.rating if review_rating else None
|
||||
|
||||
review = (
|
||||
models.Review.objects.filter(
|
||||
user=request.user, book=book, content__isnull=False
|
||||
)
|
||||
.order_by("-published_date")
|
||||
.first()
|
||||
)
|
||||
if review:
|
||||
book.review_name = review.name
|
||||
book.review_cw = review.content_warning
|
||||
book.review_content = review.raw_content
|
||||
writer.writerow([getattr(book, field, "") or "" for field in fields])
|
||||
|
||||
return HttpResponse(
|
||||
csv_string.getvalue(),
|
||||
content_type="text/csv",
|
||||
headers={
|
||||
"Content-Disposition": 'attachment; filename="bookwyrm-export.csv"'
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
def csv_row_generator(books, user):
|
||||
"""generate a csv entry for the user's book"""
|
||||
deduplication_fields = [
|
||||
f.name
|
||||
for f in models.Edition._meta.get_fields() # pylint: disable=protected-access
|
||||
if getattr(f, "deduplication_field", False)
|
||||
]
|
||||
fields = (
|
||||
["title", "author_text"]
|
||||
+ deduplication_fields
|
||||
+ ["rating", "review_name", "review_cw", "review_content"]
|
||||
)
|
||||
yield fields
|
||||
for book in books:
|
||||
# I think this is more efficient than doing a subquery in the view? but idk
|
||||
review_rating = (
|
||||
models.Review.objects.filter(user=user, book=book, rating__isnull=False)
|
||||
.order_by("-published_date")
|
||||
.first()
|
||||
)
|
||||
|
||||
book.rating = review_rating.rating if review_rating else None
|
||||
|
||||
review = (
|
||||
models.Review.objects.filter(user=user, book=book, content__isnull=False)
|
||||
.order_by("-published_date")
|
||||
.first()
|
||||
)
|
||||
if review:
|
||||
book.review_name = review.name
|
||||
book.review_cw = review.content_warning
|
||||
book.review_content = review.raw_content
|
||||
yield [getattr(book, field, "") or "" for field in fields]
|
||||
|
||||
|
||||
class Echo:
|
||||
"""An object that implements just the write method of the file-like
|
||||
interface. (https://docs.djangoproject.com/en/3.2/howto/outputting-csv/)
|
||||
"""
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
def write(self, value):
|
||||
"""Write the value by returning it, instead of storing in a buffer."""
|
||||
return value
|
||||
|
|
8
bookwyrm/views/server_error.py
Normal file
8
bookwyrm/views/server_error.py
Normal file
|
@ -0,0 +1,8 @@
|
|||
"""custom 500 handler to enable context processors"""
|
||||
from django.template.response import TemplateResponse
|
||||
|
||||
|
||||
def server_error(request):
|
||||
"""server error page"""
|
||||
|
||||
return TemplateResponse(request, "500.html")
|
|
@ -115,6 +115,19 @@ class CreateStatus(View):
|
|||
if status.reply_parent:
|
||||
status.mention_users.add(status.reply_parent.user)
|
||||
|
||||
# inspect the text for hashtags
|
||||
for (mention_text, mention_hashtag) in find_or_create_hashtags(content).items():
|
||||
# add them to status mentions fk
|
||||
status.mention_hashtags.add(mention_hashtag)
|
||||
|
||||
# turn the mention into a link
|
||||
content = re.sub(
|
||||
rf"{mention_text}\b(?!@)",
|
||||
rf'<a href="{mention_hashtag.remote_id}" data-mention="hashtag">'
|
||||
+ rf"{mention_text}</a>",
|
||||
content,
|
||||
)
|
||||
|
||||
# deduplicate mentions
|
||||
status.mention_users.set(set(status.mention_users.all()))
|
||||
|
||||
|
@ -237,6 +250,38 @@ def find_mentions(user, content):
|
|||
return username_dict
|
||||
|
||||
|
||||
def find_or_create_hashtags(content):
|
||||
"""detect #hashtags in raw status content
|
||||
|
||||
it stores hashtags case-sensitive, but ensures that an existing
|
||||
hashtag with different case are found and re-used. for example,
|
||||
an existing #BookWyrm hashtag will be found and used even if the
|
||||
status content is using #bookwyrm.
|
||||
"""
|
||||
if not content:
|
||||
return {}
|
||||
|
||||
found_hashtags = {t.lower(): t for t in re.findall(regex.HASHTAG, content)}
|
||||
if len(found_hashtags) == 0:
|
||||
return {}
|
||||
|
||||
known_hashtags = {
|
||||
t.name.lower(): t
|
||||
for t in models.Hashtag.objects.filter(
|
||||
Q(name__in=found_hashtags.keys())
|
||||
).distinct()
|
||||
}
|
||||
|
||||
not_found = found_hashtags.keys() - known_hashtags.keys()
|
||||
for lower_name in not_found:
|
||||
tag_name = found_hashtags[lower_name]
|
||||
mention_hashtag = models.Hashtag(name=tag_name)
|
||||
mention_hashtag.save()
|
||||
known_hashtags[lower_name] = mention_hashtag
|
||||
|
||||
return {found_hashtags[k]: v for k, v in known_hashtags.items()}
|
||||
|
||||
|
||||
def format_links(content):
|
||||
"""detect and format links"""
|
||||
validator = URLValidator()
|
||||
|
|
8
bw-dev
8
bw-dev
|
@ -1,4 +1,4 @@
|
|||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# exit on errors
|
||||
set -e
|
||||
|
@ -32,8 +32,8 @@ function runweb {
|
|||
docker-compose run --rm web "$@"
|
||||
}
|
||||
|
||||
function rundb {
|
||||
docker-compose run --rm db $@
|
||||
function execdb {
|
||||
docker-compose exec db $@
|
||||
}
|
||||
|
||||
function execweb {
|
||||
|
@ -110,7 +110,7 @@ case "$CMD" in
|
|||
runweb python manage.py shell
|
||||
;;
|
||||
dbshell)
|
||||
rundb psql -U ${POSTGRES_USER} ${POSTGRES_DB}
|
||||
execdb psql -U ${POSTGRES_USER} ${POSTGRES_DB}
|
||||
;;
|
||||
restart_celery)
|
||||
docker-compose restart celery_worker
|
||||
|
|
|
@ -7,7 +7,7 @@ class CelerywyrmConfig(AppConfig):
|
|||
verbose_name = "BookWyrm Celery"
|
||||
|
||||
def ready(self):
|
||||
if settings.OTEL_EXPORTER_OTLP_ENDPOINT:
|
||||
if settings.OTEL_EXPORTER_OTLP_ENDPOINT or settings.OTEL_EXPORTER_CONSOLE:
|
||||
from bookwyrm.telemetry import open_telemetry
|
||||
|
||||
open_telemetry.instrumentCelery()
|
||||
|
|
|
@ -6,8 +6,8 @@ from bookwyrm.settings import *
|
|||
# pylint: disable=line-too-long
|
||||
REDIS_BROKER_PASSWORD = requests.utils.quote(env("REDIS_BROKER_PASSWORD", ""))
|
||||
REDIS_BROKER_HOST = env("REDIS_BROKER_HOST", "redis_broker")
|
||||
REDIS_BROKER_PORT = env("REDIS_BROKER_PORT", 6379)
|
||||
REDIS_BROKER_DB_INDEX = env("REDIS_BROKER_DB_INDEX", 0)
|
||||
REDIS_BROKER_PORT = env.int("REDIS_BROKER_PORT", 6379)
|
||||
REDIS_BROKER_DB_INDEX = env.int("REDIS_BROKER_DB_INDEX", 0)
|
||||
REDIS_BROKER_URL = env(
|
||||
"REDIS_BROKER_URL",
|
||||
f"redis://:{REDIS_BROKER_PASSWORD}@{REDIS_BROKER_HOST}:{REDIS_BROKER_PORT}/{REDIS_BROKER_DB_INDEX}",
|
||||
|
@ -26,7 +26,10 @@ CELERY_RESULT_SERIALIZER = "json"
|
|||
CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers:DatabaseScheduler"
|
||||
CELERY_TIMEZONE = env("TIME_ZONE", "UTC")
|
||||
|
||||
FLOWER_PORT = env("FLOWER_PORT")
|
||||
CELERY_WORKER_CONCURRENCY = env("CELERY_WORKER_CONCURRENCY", None)
|
||||
CELERY_TASK_SOFT_TIME_LIMIT = env("CELERY_TASK_SOFT_TIME_LIMIT", None)
|
||||
|
||||
FLOWER_PORT = env.int("FLOWER_PORT", 8888)
|
||||
|
||||
INSTALLED_APPS = INSTALLED_APPS + [
|
||||
"celerywyrm",
|
||||
|
|
|
@ -6,7 +6,7 @@ After=network.target postgresql.service redis.service
|
|||
User=bookwyrm
|
||||
Group=bookwyrm
|
||||
WorkingDirectory=/opt/bookwyrm/
|
||||
ExecStart=/opt/bookwyrm/venv/bin/celery -A celerywyrm worker -l info -Q high_priority,medium_priority,low_priority,import,broadcast
|
||||
ExecStart=/opt/bookwyrm/venv/bin/celery -A celerywyrm worker -l info -Q high_priority,medium_priority,low_priority,imports,broadcast
|
||||
StandardOutput=journal
|
||||
StandardError=inherit
|
||||
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-11 22:46+0000\n"
|
||||
"PO-Revision-Date: 2023-01-13 10:51\n"
|
||||
"POT-Creation-Date: 2023-01-30 08:21+0000\n"
|
||||
"PO-Revision-Date: 2023-01-30 19:36\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Catalan\n"
|
||||
"Language: ca\n"
|
||||
|
@ -256,14 +256,14 @@ msgstr "Seguidors"
|
|||
msgid "Private"
|
||||
msgstr "Privat"
|
||||
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:157
|
||||
#: bookwyrm/templates/settings/imports/imports.html:67
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:168
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/settings/users/user_admin.html:81
|
||||
#: bookwyrm/templates/settings/users/user_info.html:28
|
||||
msgid "Active"
|
||||
msgstr "Actiu"
|
||||
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:155
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:166
|
||||
msgid "Complete"
|
||||
msgstr "Complet"
|
||||
|
||||
|
@ -316,19 +316,19 @@ msgstr "Citacions"
|
|||
msgid "Everything else"
|
||||
msgstr "Tota la resta"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home Timeline"
|
||||
msgstr "Línia de temps Inici"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home"
|
||||
msgstr "Inici"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
msgid "Books Timeline"
|
||||
msgstr "Cronologia dels llibres"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:101
|
||||
#: bookwyrm/templates/search/layout.html:22
|
||||
#: bookwyrm/templates/search/layout.html:43
|
||||
|
@ -336,75 +336,75 @@ msgstr "Cronologia dels llibres"
|
|||
msgid "Books"
|
||||
msgstr "Llibres"
|
||||
|
||||
#: bookwyrm/settings.py:287
|
||||
#: bookwyrm/settings.py:290
|
||||
msgid "English"
|
||||
msgstr "English (Anglès)"
|
||||
|
||||
#: bookwyrm/settings.py:288
|
||||
#: bookwyrm/settings.py:291
|
||||
msgid "Català (Catalan)"
|
||||
msgstr "Català"
|
||||
|
||||
#: bookwyrm/settings.py:289
|
||||
#: bookwyrm/settings.py:292
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (Alemany)"
|
||||
|
||||
#: bookwyrm/settings.py:290
|
||||
#: bookwyrm/settings.py:293
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (espanyol)"
|
||||
|
||||
#: bookwyrm/settings.py:291
|
||||
#: bookwyrm/settings.py:294
|
||||
msgid "Euskara (Basque)"
|
||||
msgstr "Euskera (Basc)"
|
||||
|
||||
#: bookwyrm/settings.py:292
|
||||
#: bookwyrm/settings.py:295
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (gallec)"
|
||||
|
||||
#: bookwyrm/settings.py:293
|
||||
#: bookwyrm/settings.py:296
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (italià)"
|
||||
|
||||
#: bookwyrm/settings.py:294
|
||||
#: bookwyrm/settings.py:297
|
||||
msgid "Suomi (Finnish)"
|
||||
msgstr "Suomi (finès)"
|
||||
|
||||
#: bookwyrm/settings.py:295
|
||||
#: bookwyrm/settings.py:298
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (francès)"
|
||||
|
||||
#: bookwyrm/settings.py:296
|
||||
#: bookwyrm/settings.py:299
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Lituà)"
|
||||
|
||||
#: bookwyrm/settings.py:297
|
||||
#: bookwyrm/settings.py:300
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (noruec)"
|
||||
|
||||
#: bookwyrm/settings.py:298
|
||||
#: bookwyrm/settings.py:301
|
||||
msgid "Polski (Polish)"
|
||||
msgstr "Polski (polonès)"
|
||||
|
||||
#: bookwyrm/settings.py:299
|
||||
#: bookwyrm/settings.py:302
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (portuguès del Brasil)"
|
||||
|
||||
#: bookwyrm/settings.py:300
|
||||
#: bookwyrm/settings.py:303
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Portuguès europeu)"
|
||||
|
||||
#: bookwyrm/settings.py:301
|
||||
#: bookwyrm/settings.py:304
|
||||
msgid "Română (Romanian)"
|
||||
msgstr "Română (romanès)"
|
||||
|
||||
#: bookwyrm/settings.py:302
|
||||
#: bookwyrm/settings.py:305
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (suec)"
|
||||
|
||||
#: bookwyrm/settings.py:303
|
||||
#: bookwyrm/settings.py:306
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (xinès simplificat)"
|
||||
|
||||
#: bookwyrm/settings.py:304
|
||||
#: bookwyrm/settings.py:307
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (xinès tradicional)"
|
||||
|
||||
|
@ -847,10 +847,10 @@ msgstr "ISNI:"
|
|||
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
|
||||
#: bookwyrm/templates/settings/federation/edit_instance.html:98
|
||||
#: bookwyrm/templates/settings/federation/instance.html:105
|
||||
#: bookwyrm/templates/settings/registration.html:79
|
||||
#: bookwyrm/templates/settings/registration.html:96
|
||||
#: bookwyrm/templates/settings/registration_limited.html:76
|
||||
#: bookwyrm/templates/settings/site.html:144
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:69
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:75
|
||||
#: bookwyrm/templates/shelf/form.html:25
|
||||
#: bookwyrm/templates/snippets/reading_modals/layout.html:18
|
||||
msgid "Save"
|
||||
|
@ -1160,7 +1160,7 @@ msgstr "Es tracta d'una publicació nova"
|
|||
#: bookwyrm/templates/guided_tour/user_profile.html:89
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:112
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:135
|
||||
#: bookwyrm/templates/user_menu.html:18
|
||||
#: bookwyrm/templates/user/user.html:87 bookwyrm/templates/user_menu.html:18
|
||||
msgid "Back"
|
||||
msgstr "Enrere"
|
||||
|
||||
|
@ -1372,7 +1372,7 @@ msgid "Domain"
|
|||
msgstr "Domini"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:36
|
||||
#: bookwyrm/templates/import/import.html:122
|
||||
#: bookwyrm/templates/import/import.html:133
|
||||
#: bookwyrm/templates/import/import_status.html:134
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:37
|
||||
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:48
|
||||
|
@ -1385,7 +1385,7 @@ msgstr "Estat"
|
|||
#: bookwyrm/templates/book/file_links/edit_links.html:37
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:41
|
||||
#: bookwyrm/templates/settings/federation/instance.html:112
|
||||
#: bookwyrm/templates/settings/imports/imports.html:110
|
||||
#: bookwyrm/templates/settings/imports/imports.html:141
|
||||
#: bookwyrm/templates/settings/reports/report_links_table.html:6
|
||||
#: bookwyrm/templates/settings/themes.html:99
|
||||
msgid "Actions"
|
||||
|
@ -1905,13 +1905,13 @@ msgid "Add to your books"
|
|||
msgstr "Afegir als vostres llibres"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:10
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:33
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:37
|
||||
#: bookwyrm/templatetags/shelf_tags.py:48
|
||||
msgid "To Read"
|
||||
msgstr "Pendent de llegir"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:11
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:34
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templatetags/shelf_tags.py:50
|
||||
msgid "Currently Reading"
|
||||
msgstr "Lectures actuals"
|
||||
|
@ -1921,12 +1921,12 @@ msgstr "Lectures actuals"
|
|||
#: bookwyrm/templates/snippets/shelf_selector.html:46
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12
|
||||
#: bookwyrm/templates/user/user.html:35 bookwyrm/templatetags/shelf_tags.py:52
|
||||
#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:52
|
||||
msgid "Read"
|
||||
msgstr "Llegits"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:13
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:36
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:40
|
||||
msgid "Stopped Reading"
|
||||
msgstr "Deixat de llegir"
|
||||
|
||||
|
@ -2642,7 +2642,7 @@ msgid "This is your user profile. All your latest activities will be listed here
|
|||
msgstr "Aquesta és la vostra pàgina d'usuari. Totes les vostres activitats es mostraran aquí. Altres membres de Bookwyrm poden veure parts d'aquesta pàgina, depèn de com tingueu la configuració de privacitat."
|
||||
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:11
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:14
|
||||
msgid "User Profile"
|
||||
msgstr "Perfil de l'usuari"
|
||||
|
||||
|
@ -2689,85 +2689,100 @@ msgstr "Importa Llibres"
|
|||
msgid "Not a valid CSV file"
|
||||
msgstr "Fitxer CSV no vàlid"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:22
|
||||
#: bookwyrm/templates/import/import.html:20
|
||||
#, python-format
|
||||
msgid "Currently you are allowed to import %(import_size_limit)s books every %(import_limit_reset)s days."
|
||||
msgstr "Actualment es permet la importació de %(import_size_limit)s llibres cada %(import_limit_reset)s dies."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:21
|
||||
#, python-format
|
||||
msgid "You have %(allowed_imports)s left."
|
||||
msgstr "Et resten %(allowed_imports)s per importar."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:28
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(hours)s hours."
|
||||
msgstr "Les importacions recents han durat %(hours)s de mitjana."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:26
|
||||
#: bookwyrm/templates/import/import.html:32
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(minutes)s minutes."
|
||||
msgstr "Les importacions recents han durat %(minutes)s de mitjana."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:41
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
msgid "Data source:"
|
||||
msgstr "Font de la informació:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
msgid "Goodreads (CSV)"
|
||||
msgstr "Goodreads (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:50
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
msgid "Storygraph (CSV)"
|
||||
msgstr "Storygraph (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
msgid "LibraryThing (TSV)"
|
||||
msgstr "LibraryThing (TSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
#: bookwyrm/templates/import/import.html:62
|
||||
msgid "OpenLibrary (CSV)"
|
||||
msgstr "OpenLibrary (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
msgid "Calibre (CSV)"
|
||||
msgstr "Calibre (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
#: bookwyrm/templates/import/import.html:71
|
||||
msgid "You can download your Goodreads data from the <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Import/Export page</a> of your Goodreads account."
|
||||
msgstr "Podeu descarregar-vos les vostres dades de Goodreads des de la pàgina d'<a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Importa/Exporta</a> del vostre compte de Goodreads."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:74
|
||||
#: bookwyrm/templates/import/import.html:80
|
||||
msgid "Data file:"
|
||||
msgstr "Arxiu de dades:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:82
|
||||
#: bookwyrm/templates/import/import.html:88
|
||||
msgid "Include reviews"
|
||||
msgstr "Inclou ressenyes"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:87
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
msgid "Privacy setting for imported reviews:"
|
||||
msgstr "Configuració de privacitat per les ressenyes importades:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
#: bookwyrm/templates/import/import.html:100
|
||||
#: bookwyrm/templates/import/import.html:102
|
||||
#: bookwyrm/templates/preferences/layout.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:78
|
||||
msgid "Import"
|
||||
msgstr "Importa"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:101
|
||||
#: bookwyrm/templates/import/import.html:103
|
||||
msgid "You've reached the import limit."
|
||||
msgstr "Has arribat al límit d'importacions."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:112
|
||||
msgid "Imports are temporarily disabled; thank you for your patience."
|
||||
msgstr "Les importacions es troben temporalment deshabilitades; gràcies per la vostra paciència."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:108
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
msgid "Recent Imports"
|
||||
msgstr "Importacions recents"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:113
|
||||
#: bookwyrm/templates/settings/imports/imports.html:89
|
||||
#: bookwyrm/templates/import/import.html:124
|
||||
#: bookwyrm/templates/settings/imports/imports.html:120
|
||||
msgid "Date Created"
|
||||
msgstr "Data de creació"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:116
|
||||
#: bookwyrm/templates/import/import.html:127
|
||||
msgid "Last Updated"
|
||||
msgstr "Darrera actualització"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/import/import.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:129
|
||||
msgid "Items"
|
||||
msgstr "Items"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:128
|
||||
#: bookwyrm/templates/import/import.html:139
|
||||
msgid "No recent imports"
|
||||
msgstr "No hi ha cap importació recent"
|
||||
|
||||
|
@ -2783,6 +2798,7 @@ msgid "Retry Status"
|
|||
msgstr "Estat del reintent"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:22
|
||||
#: bookwyrm/templates/settings/celery.html:36
|
||||
#: bookwyrm/templates/settings/imports/imports.html:6
|
||||
#: bookwyrm/templates/settings/imports/imports.html:9
|
||||
#: bookwyrm/templates/settings/layout.html:82
|
||||
|
@ -2802,7 +2818,7 @@ msgid "Refresh"
|
|||
msgstr "Refresca"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:72
|
||||
#: bookwyrm/templates/settings/imports/imports.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:161
|
||||
msgid "Stop import"
|
||||
msgstr "Atura la importació"
|
||||
|
||||
|
@ -2920,7 +2936,7 @@ msgid "Reject"
|
|||
msgstr "Rebutja"
|
||||
|
||||
#: bookwyrm/templates/import/troubleshoot.html:7
|
||||
#: bookwyrm/templates/settings/imports/imports.html:107
|
||||
#: bookwyrm/templates/settings/imports/imports.html:138
|
||||
msgid "Failed items"
|
||||
msgstr "Elements fallits"
|
||||
|
||||
|
@ -3171,7 +3187,7 @@ msgid "Delete this list?"
|
|||
msgstr "Suprimir aquesta llista?"
|
||||
|
||||
#: bookwyrm/templates/lists/edit_form.html:5
|
||||
#: bookwyrm/templates/lists/layout.html:18
|
||||
#: bookwyrm/templates/lists/layout.html:23
|
||||
msgid "Edit List"
|
||||
msgstr "Edita la llista"
|
||||
|
||||
|
@ -4429,48 +4445,48 @@ msgstr "Prioritat mitja"
|
|||
msgid "High priority"
|
||||
msgstr "Prioritat alta"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:40
|
||||
#: bookwyrm/templates/settings/celery.html:46
|
||||
msgid "Could not connect to Redis broker"
|
||||
msgstr "No s'ha pogut connectar al Redis broker"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:48
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
msgid "Active Tasks"
|
||||
msgstr "Tasques actives"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
#: bookwyrm/templates/settings/celery.html:59
|
||||
#: bookwyrm/templates/settings/imports/imports.html:113
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
#: bookwyrm/templates/settings/celery.html:60
|
||||
msgid "Task name"
|
||||
msgstr "Nom de la tasca"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:55
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
msgid "Run time"
|
||||
msgstr "Temps d'execució"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:56
|
||||
#: bookwyrm/templates/settings/celery.html:62
|
||||
msgid "Priority"
|
||||
msgstr "Prioritat"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
#: bookwyrm/templates/settings/celery.html:67
|
||||
msgid "No active tasks"
|
||||
msgstr "Cap tasca activa"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:79
|
||||
#: bookwyrm/templates/settings/celery.html:85
|
||||
msgid "Workers"
|
||||
msgstr "Workers"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:84
|
||||
#: bookwyrm/templates/settings/celery.html:90
|
||||
msgid "Uptime:"
|
||||
msgstr "Temps de funcionament:"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:94
|
||||
#: bookwyrm/templates/settings/celery.html:100
|
||||
msgid "Could not connect to Celery"
|
||||
msgstr "No s'ha pogut connectar al Celery"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:101
|
||||
#: bookwyrm/templates/settings/celery.html:107
|
||||
msgid "Errors"
|
||||
msgstr "Errors"
|
||||
|
||||
|
@ -4850,27 +4866,55 @@ msgstr "Els usuaris no poden iniciar noves importacions actualment"
|
|||
msgid "Enable imports"
|
||||
msgstr "Habilitar les importacions"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:71
|
||||
#: bookwyrm/templates/settings/imports/imports.html:63
|
||||
msgid "Limit the amount of imports"
|
||||
msgstr "Limita la quantitat d'importacions"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:74
|
||||
msgid "Some users might try to import a large number of books, which you want to limit."
|
||||
msgstr "Alguns usuaris poden intentar importar una gran quantitat de llibres, cosa que podries voler limitar."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:75
|
||||
msgid "Set the value to 0 to not enforce any limit."
|
||||
msgstr "Estableix el valor a 0 per tal de no especificar cap limitació."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:78
|
||||
msgid "Set import limit to"
|
||||
msgstr "Estableix el límit d'importacions en"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:80
|
||||
msgid "books every"
|
||||
msgstr "llibres cada"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
msgid "days."
|
||||
msgstr "dies."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:86
|
||||
msgid "Set limit"
|
||||
msgstr "Estableix el límit"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:102
|
||||
msgid "Completed"
|
||||
msgstr "Completat"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:85
|
||||
#: bookwyrm/templates/settings/imports/imports.html:116
|
||||
msgid "User"
|
||||
msgstr "Usuari"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:94
|
||||
#: bookwyrm/templates/settings/imports/imports.html:125
|
||||
msgid "Date Updated"
|
||||
msgstr "Data actualització"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:101
|
||||
#: bookwyrm/templates/settings/imports/imports.html:132
|
||||
msgid "Pending items"
|
||||
msgstr "Elements pendents"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:104
|
||||
#: bookwyrm/templates/settings/imports/imports.html:135
|
||||
msgid "Successful items"
|
||||
msgstr "Ítems amb èxit"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:139
|
||||
#: bookwyrm/templates/settings/imports/imports.html:170
|
||||
msgid "No matching imports found."
|
||||
msgstr "No s'han trobat importacions coincidents."
|
||||
|
||||
|
@ -5131,34 +5175,38 @@ msgstr "No s'ha pogut desar la configuració"
|
|||
msgid "Allow registration"
|
||||
msgstr "Permet el registre"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:44
|
||||
#: bookwyrm/templates/settings/registration.html:43
|
||||
msgid "Default access level:"
|
||||
msgstr "Nivell d'accés per defecte:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:61
|
||||
msgid "Require users to confirm email address"
|
||||
msgstr "Requereix els usuaris que confirmin les seves adreces de correu"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:46
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
msgid "(Recommended if registration is open)"
|
||||
msgstr "(Recomanat si el registre està obert)"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:51
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
msgid "Allow invite requests"
|
||||
msgstr "Permet peticions d'invitació"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:55
|
||||
#: bookwyrm/templates/settings/registration.html:72
|
||||
#: bookwyrm/templates/settings/registration_limited.html:42
|
||||
msgid "Invite request text:"
|
||||
msgstr "Text de sol·licitud d'invitació:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
#: bookwyrm/templates/settings/registration.html:80
|
||||
#: bookwyrm/templates/settings/registration_limited.html:50
|
||||
msgid "Set a question for invite requests"
|
||||
msgstr "Estableix una pregunta per les sol·licituds d'invitació"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
#: bookwyrm/templates/settings/registration.html:85
|
||||
#: bookwyrm/templates/settings/registration_limited.html:55
|
||||
msgid "Question:"
|
||||
msgstr "Pregunta:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:73
|
||||
#: bookwyrm/templates/settings/registration.html:90
|
||||
#: bookwyrm/templates/settings/registration_limited.html:67
|
||||
msgid "Registration closed text:"
|
||||
msgstr "Text de registre tancat:"
|
||||
|
@ -5400,7 +5448,7 @@ msgid "Remove theme"
|
|||
msgstr "Elimina el tema"
|
||||
|
||||
#: bookwyrm/templates/settings/users/delete_user_form.html:5
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:38
|
||||
msgid "Permanently delete user"
|
||||
msgstr "Suprimeix l'usuari de manera permanent"
|
||||
|
||||
|
@ -5522,14 +5570,18 @@ msgid "User Actions"
|
|||
msgstr "Accions d'usuari"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:21
|
||||
msgid "Activate user"
|
||||
msgstr "Activa l'usuari/a"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:27
|
||||
msgid "Suspend user"
|
||||
msgstr "Suspèn usuari"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:26
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
msgid "Un-suspend user"
|
||||
msgstr "Deixa de suspendre l'usuari"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:48
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:54
|
||||
msgid "Access level:"
|
||||
msgstr "Nivell d'accés:"
|
||||
|
||||
|
@ -6379,33 +6431,53 @@ msgstr "%(username)s no està seguint a ningú"
|
|||
msgid "No reviews or comments yet!"
|
||||
msgstr "Sense ressenyes o comentaris actualment!"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:16
|
||||
#: bookwyrm/templates/user/user.html:20
|
||||
msgid "Edit profile"
|
||||
msgstr "Edita el perfil"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templates/user/user.html:42
|
||||
#, python-format
|
||||
msgid "View all %(size)s"
|
||||
msgstr "Mostra totes les %(size)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:52
|
||||
#: bookwyrm/templates/user/user.html:56
|
||||
msgid "View all books"
|
||||
msgstr "Mostra tots els llibres"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:59
|
||||
#: bookwyrm/templates/user/user.html:63
|
||||
#, python-format
|
||||
msgid "%(current_year)s Reading Goal"
|
||||
msgstr "Objectiu de lectura del %(current_year)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:66
|
||||
#: bookwyrm/templates/user/user.html:70
|
||||
msgid "User Activity"
|
||||
msgstr "Activitat d'usuari"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:71
|
||||
#: bookwyrm/templates/user/user.html:76
|
||||
msgid "Show RSS Options"
|
||||
msgstr "Mostra les Opcions RSS"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:82
|
||||
msgid "RSS feed"
|
||||
msgstr "Canal RSS"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:83
|
||||
#: bookwyrm/templates/user/user.html:98
|
||||
msgid "Complete feed"
|
||||
msgstr "Activitat completa"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:103
|
||||
msgid "Reviews only"
|
||||
msgstr "Només ressenyes"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:108
|
||||
msgid "Quotes only"
|
||||
msgstr "Només cites"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:113
|
||||
msgid "Comments only"
|
||||
msgstr "Només comentaris"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:129
|
||||
msgid "No activities yet!"
|
||||
msgstr "Encara no hi ha activitats."
|
||||
|
||||
|
@ -6449,16 +6521,43 @@ msgstr "Desconnecta"
|
|||
msgid "File exceeds maximum size: 10MB"
|
||||
msgstr "El fitxer sobrepassa la mida màxima: 10MB"
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:14
|
||||
#, python-format
|
||||
msgid "Book List: %(name)s"
|
||||
msgstr "Llista de Llibres: %(name)s"
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:22
|
||||
#, python-format
|
||||
msgid "%(num)d book - by %(user)s"
|
||||
msgid_plural "%(num)d books - by %(user)s"
|
||||
msgstr[0] "%(num)d llibre - per %(user)s"
|
||||
msgstr[1] "%(num)d llibres - per %(user)s"
|
||||
|
||||
#: bookwyrm/templatetags/utilities.py:39
|
||||
#, python-format
|
||||
msgid "%(title)s: %(subtitle)s"
|
||||
msgstr "%(title)s: %(subtitle)s"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:34
|
||||
#: bookwyrm/views/rss_feed.py:35
|
||||
#, python-brace-format
|
||||
msgid "Status updates from {obj.display_name}"
|
||||
msgstr "Actualitzacions d'estat de {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:72
|
||||
#, python-brace-format
|
||||
msgid "Reviews from {obj.display_name}"
|
||||
msgstr "Ressenyes de {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:110
|
||||
#, python-brace-format
|
||||
msgid "Quotes from {obj.display_name}"
|
||||
msgstr "Cites de {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:148
|
||||
#, python-brace-format
|
||||
msgid "Comments from {obj.display_name}"
|
||||
msgstr "Comentaris de {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/updates.py:45
|
||||
#, python-format
|
||||
msgid "Load %(count)d unread status"
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-11 22:46+0000\n"
|
||||
"PO-Revision-Date: 2023-01-14 17:13\n"
|
||||
"POT-Creation-Date: 2023-01-30 08:21+0000\n"
|
||||
"PO-Revision-Date: 2023-02-25 19:46\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: German\n"
|
||||
"Language: de\n"
|
||||
|
@ -256,14 +256,14 @@ msgstr "Follower*innen"
|
|||
msgid "Private"
|
||||
msgstr "Privat"
|
||||
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:157
|
||||
#: bookwyrm/templates/settings/imports/imports.html:67
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:168
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/settings/users/user_admin.html:81
|
||||
#: bookwyrm/templates/settings/users/user_info.html:28
|
||||
msgid "Active"
|
||||
msgstr "Aktiv"
|
||||
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:155
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:166
|
||||
msgid "Complete"
|
||||
msgstr "Abgeschlossen"
|
||||
|
||||
|
@ -316,19 +316,19 @@ msgstr "Zitate"
|
|||
msgid "Everything else"
|
||||
msgstr "Alles andere"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home Timeline"
|
||||
msgstr "Start-Zeitleiste"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home"
|
||||
msgstr "Startseite"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
msgid "Books Timeline"
|
||||
msgstr "Bücher-Timeline"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:101
|
||||
#: bookwyrm/templates/search/layout.html:22
|
||||
#: bookwyrm/templates/search/layout.html:43
|
||||
|
@ -336,75 +336,75 @@ msgstr "Bücher-Timeline"
|
|||
msgid "Books"
|
||||
msgstr "Bücher"
|
||||
|
||||
#: bookwyrm/settings.py:287
|
||||
#: bookwyrm/settings.py:290
|
||||
msgid "English"
|
||||
msgstr "English (Englisch)"
|
||||
|
||||
#: bookwyrm/settings.py:288
|
||||
#: bookwyrm/settings.py:291
|
||||
msgid "Català (Catalan)"
|
||||
msgstr "Català (Katalanisch)"
|
||||
|
||||
#: bookwyrm/settings.py:289
|
||||
#: bookwyrm/settings.py:292
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch"
|
||||
|
||||
#: bookwyrm/settings.py:290
|
||||
#: bookwyrm/settings.py:293
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (Spanisch)"
|
||||
|
||||
#: bookwyrm/settings.py:291
|
||||
#: bookwyrm/settings.py:294
|
||||
msgid "Euskara (Basque)"
|
||||
msgstr "Euskara (Baskisch)"
|
||||
|
||||
#: bookwyrm/settings.py:292
|
||||
#: bookwyrm/settings.py:295
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (Galizisch)"
|
||||
|
||||
#: bookwyrm/settings.py:293
|
||||
#: bookwyrm/settings.py:296
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (Italienisch)"
|
||||
|
||||
#: bookwyrm/settings.py:294
|
||||
#: bookwyrm/settings.py:297
|
||||
msgid "Suomi (Finnish)"
|
||||
msgstr "Suomi (Finnisch)"
|
||||
|
||||
#: bookwyrm/settings.py:295
|
||||
#: bookwyrm/settings.py:298
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (Französisch)"
|
||||
|
||||
#: bookwyrm/settings.py:296
|
||||
#: bookwyrm/settings.py:299
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Litauisch)"
|
||||
|
||||
#: bookwyrm/settings.py:297
|
||||
#: bookwyrm/settings.py:300
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (Norwegisch)"
|
||||
|
||||
#: bookwyrm/settings.py:298
|
||||
#: bookwyrm/settings.py:301
|
||||
msgid "Polski (Polish)"
|
||||
msgstr "Polski (Polnisch)"
|
||||
|
||||
#: bookwyrm/settings.py:299
|
||||
#: bookwyrm/settings.py:302
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (brasilianisches Portugiesisch)"
|
||||
|
||||
#: bookwyrm/settings.py:300
|
||||
#: bookwyrm/settings.py:303
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Portugiesisch)"
|
||||
|
||||
#: bookwyrm/settings.py:301
|
||||
#: bookwyrm/settings.py:304
|
||||
msgid "Română (Romanian)"
|
||||
msgstr "Română (Rumänisch)"
|
||||
|
||||
#: bookwyrm/settings.py:302
|
||||
#: bookwyrm/settings.py:305
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Schwedisch)"
|
||||
|
||||
#: bookwyrm/settings.py:303
|
||||
#: bookwyrm/settings.py:306
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (vereinfachtes Chinesisch)"
|
||||
|
||||
#: bookwyrm/settings.py:304
|
||||
#: bookwyrm/settings.py:307
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (Chinesisch, traditionell)"
|
||||
|
||||
|
@ -442,7 +442,7 @@ msgstr "Willkommen auf %(site_name)s!"
|
|||
#: bookwyrm/templates/about/about.html:25
|
||||
#, python-format
|
||||
msgid "%(site_name)s is part of <em>BookWyrm</em>, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the <a href=\"https://joinbookwyrm.com/instances/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">BookWyrm network</a>, this community is unique."
|
||||
msgstr "%(site_name)s ist Teil von <em>BookWyrm</em>, einem Netzwerk von unabhängigen, selbst verwalteten Communities von Bücherfreunden. Obwohl du nahtlos mit anderen überall im <a href=\"https://joinbookwyrm.com/instances/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">BookWyrm Netzwerk</a> interagieren kannst, ist die Community hier einzigartig."
|
||||
msgstr "%(site_name)s ist Teil von <em>BookWyrm</em>, einem Netzwerk von unabhängigen, selbst verwalteten Communities von Bücherfreund*innen. Obwohl du nahtlos mit anderen überall im <a href=\"https://joinbookwyrm.com/instances/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">BookWyrm-Netzwerk</a> interagieren kannst, ist die Community hier einzigartig."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:45
|
||||
#, python-format
|
||||
|
@ -461,7 +461,7 @@ msgstr "<a href=\"%(book_path)s\"><em>%(title)s</em></a> hat die unterschiedlich
|
|||
|
||||
#: bookwyrm/templates/about/about.html:94
|
||||
msgid "Track your reading, talk about books, write reviews, and discover what to read next. Always ad-free, anti-corporate, and community-oriented, BookWyrm is human-scale software, designed to stay small and personal. If you have feature requests, bug reports, or grand dreams, <a href=\"https://joinbookwyrm.com/get-involved\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">reach out</a> and make yourself heard."
|
||||
msgstr "Tracke dein Leseverhalten, sprich über Bücher, schreibe Rezensionen und entdecke Neues zum Lesen. BookWyrm ist eine Software, die immer übersichtlich, werbefrei und gemeinschaftsorientiert sein wird. Wenn du Feature-Anfragen, Fehlerberichte oder große Träume hast, wende dich an <a href=\"https://joinbookwyrm.com/get-involved\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">an</a>."
|
||||
msgstr "Tracke dein Leseverhalten, sprich über Bücher, schreibe Rezensionen und entdecke Neues zum Lesen. BookWyrm ist eine Software, die immer übersichtlich, werbefrei und gemeinschaftsorientiert sein wird. Wenn du Feature-Anfragen, Fehlerberichte oder große Träume hast, wende dich <a href=\"https://joinbookwyrm.com/get-involved\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">hier hin</a> und verschaffe Dir Gehör."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:105
|
||||
msgid "Meet your admins"
|
||||
|
@ -847,10 +847,10 @@ msgstr "ISNI:"
|
|||
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
|
||||
#: bookwyrm/templates/settings/federation/edit_instance.html:98
|
||||
#: bookwyrm/templates/settings/federation/instance.html:105
|
||||
#: bookwyrm/templates/settings/registration.html:79
|
||||
#: bookwyrm/templates/settings/registration.html:96
|
||||
#: bookwyrm/templates/settings/registration_limited.html:76
|
||||
#: bookwyrm/templates/settings/site.html:144
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:69
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:75
|
||||
#: bookwyrm/templates/shelf/form.html:25
|
||||
#: bookwyrm/templates/snippets/reading_modals/layout.html:18
|
||||
msgid "Save"
|
||||
|
@ -1160,7 +1160,7 @@ msgstr "Dies ist ein neues Werk."
|
|||
#: bookwyrm/templates/guided_tour/user_profile.html:89
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:112
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:135
|
||||
#: bookwyrm/templates/user_menu.html:18
|
||||
#: bookwyrm/templates/user/user.html:87 bookwyrm/templates/user_menu.html:18
|
||||
msgid "Back"
|
||||
msgstr "Zurück"
|
||||
|
||||
|
@ -1348,7 +1348,7 @@ msgstr "Links bearbeiten"
|
|||
#: bookwyrm/templates/book/file_links/edit_links.html:11
|
||||
#, python-format
|
||||
msgid "Links for \"<em>%(title)s</em>\""
|
||||
msgstr "Links zu \"<em>%(title)s</em>\""
|
||||
msgstr "Links für \"<em>%(title)s</em>\""
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:32
|
||||
#: bookwyrm/templates/settings/link_domains/link_table.html:6
|
||||
|
@ -1372,7 +1372,7 @@ msgid "Domain"
|
|||
msgstr "Domain"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:36
|
||||
#: bookwyrm/templates/import/import.html:122
|
||||
#: bookwyrm/templates/import/import.html:133
|
||||
#: bookwyrm/templates/import/import_status.html:134
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:37
|
||||
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:48
|
||||
|
@ -1385,7 +1385,7 @@ msgstr "Status"
|
|||
#: bookwyrm/templates/book/file_links/edit_links.html:37
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:41
|
||||
#: bookwyrm/templates/settings/federation/instance.html:112
|
||||
#: bookwyrm/templates/settings/imports/imports.html:110
|
||||
#: bookwyrm/templates/settings/imports/imports.html:141
|
||||
#: bookwyrm/templates/settings/reports/report_links_table.html:6
|
||||
#: bookwyrm/templates/settings/themes.html:99
|
||||
msgid "Actions"
|
||||
|
@ -1394,7 +1394,7 @@ msgstr "Aktionen"
|
|||
#: bookwyrm/templates/book/file_links/edit_links.html:48
|
||||
#: bookwyrm/templates/settings/link_domains/link_table.html:21
|
||||
msgid "Unknown user"
|
||||
msgstr "Unbekannter Account"
|
||||
msgstr "Unbekannte*r Nutzer*in"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:57
|
||||
#: bookwyrm/templates/book/file_links/verification_modal.html:22
|
||||
|
@ -1468,7 +1468,7 @@ msgstr "Veröffentlicht von %(publisher)s."
|
|||
|
||||
#: bookwyrm/templates/book/rating.html:13
|
||||
msgid "rated it"
|
||||
msgstr "bewertet"
|
||||
msgstr "bewertet es mit"
|
||||
|
||||
#: bookwyrm/templates/book/sync_modal.html:15
|
||||
#, python-format
|
||||
|
@ -1867,7 +1867,7 @@ 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 "Hast du Buchdaten von einem anderen Dienst wie GoodReads?"
|
||||
msgstr "Hast Du Buchdaten von einem anderen Service wie GoodReads?"
|
||||
|
||||
#: bookwyrm/templates/feed/suggested_books.html:16
|
||||
msgid "Import your reading history"
|
||||
|
@ -1905,13 +1905,13 @@ msgid "Add to your books"
|
|||
msgstr "Zu deinen Büchern hinzufügen"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:10
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:33
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:37
|
||||
#: bookwyrm/templatetags/shelf_tags.py:48
|
||||
msgid "To Read"
|
||||
msgstr "Leseliste"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:11
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:34
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templatetags/shelf_tags.py:50
|
||||
msgid "Currently Reading"
|
||||
msgstr "Liest gerade"
|
||||
|
@ -1921,12 +1921,12 @@ msgstr "Liest gerade"
|
|||
#: bookwyrm/templates/snippets/shelf_selector.html:46
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12
|
||||
#: bookwyrm/templates/user/user.html:35 bookwyrm/templatetags/shelf_tags.py:52
|
||||
#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:52
|
||||
msgid "Read"
|
||||
msgstr "Gelesen"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:13
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:36
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:40
|
||||
msgid "Stopped Reading"
|
||||
msgstr "Aufgehört zu lesen"
|
||||
|
||||
|
@ -2235,7 +2235,7 @@ msgstr "Weiter"
|
|||
|
||||
#: bookwyrm/templates/guided_tour/book.html:31
|
||||
msgid "This is where you can set a reading status for this book. You can press the button to move to the next stage, or use the drop down button to select the reading status you want to set."
|
||||
msgstr "Hier kannst Du einen Lesestatus für dieses Buch festlegen. Du kannst den Button drücken, um in den nächsten Status zu wechseln oder den Dropdown-Button verwenden, um den Lesestatus auszuwählen, den du setzen möchtest."
|
||||
msgstr "Hier kannst Du einen Lesestatus für dieses Buch festlegen. Du kannst den Button drücken, um in den nächsten Status zu wechseln oder den Dropdown-Button verwenden, um den Lesestatus auszuwählen, den Du setzen möchtest."
|
||||
|
||||
#: bookwyrm/templates/guided_tour/book.html:32
|
||||
msgid "Reading status"
|
||||
|
@ -2243,7 +2243,7 @@ msgstr "Lesestatus"
|
|||
|
||||
#: bookwyrm/templates/guided_tour/book.html:55
|
||||
msgid "You can also manually add reading dates here. Unlike changing the reading status using the previous method, adding dates manually will not automatically add them to your <strong>Read</strong> or <strong>Reading</strong> shelves."
|
||||
msgstr "Du kannst hier auch manuell Lesedaten hinzufügen. Im Gegensatz zum Ändern des Lesestatus mit der vorherigen Methode wird das manuelle Hinzufügen von Daten diese nicht automatisch zu deinen <strong>Gelesen</strong>- oder <strong>Lesend</strong>-Regalen hinzufügen."
|
||||
msgstr "Du kannst hier auch manuell Lesedaten hinzufügen. Im Gegensatz zum Ändern des Lesestatus mit der vorherigen Methode wird das manuelle Hinzufügen von Daten diese nicht automatisch zu Deinen <strong>Gelesen</strong>- oder <strong>Lesend</strong>-Regalen hinzufügen."
|
||||
|
||||
#: bookwyrm/templates/guided_tour/book.html:55
|
||||
msgid "Got a favourite you re-read every year? We've got you covered - you can add multiple read dates for the same book 😀"
|
||||
|
@ -2642,7 +2642,7 @@ msgid "This is your user profile. All your latest activities will be listed here
|
|||
msgstr "Dies ist dein Benutzerprofil. Alle deine neuesten Aktivitäten werden hier aufgelistet. Andere Bookwyrm-Benutzer können auch Teile dieser Seite sehen – was sie sehen können, hängt von deinen Privatsphäreeinstellungen ab."
|
||||
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:11
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:14
|
||||
msgid "User Profile"
|
||||
msgstr "Profil"
|
||||
|
||||
|
@ -2689,85 +2689,100 @@ msgstr "Bücher importieren"
|
|||
msgid "Not a valid CSV file"
|
||||
msgstr "Keine gültige CSV-Datei"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:22
|
||||
#: bookwyrm/templates/import/import.html:20
|
||||
#, python-format
|
||||
msgid "Currently you are allowed to import %(import_size_limit)s books every %(import_limit_reset)s days."
|
||||
msgstr "Aktuell dürfen Sie %(import_size_limit)s Bücher, alle %(import_limit_reset)s Tage importieren."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:21
|
||||
#, python-format
|
||||
msgid "You have %(allowed_imports)s left."
|
||||
msgstr "Du hast noch %(allowed_imports)s übrig."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:28
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(hours)s hours."
|
||||
msgstr "Im Durchschnitt haben die letzten Importe %(hours)s Stunden in Anspruch genommen."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:26
|
||||
#: bookwyrm/templates/import/import.html:32
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(minutes)s minutes."
|
||||
msgstr "Im Durchschnitt haben die letzten Importe %(minutes)s Minuten in Anspruch genommen."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:41
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
msgid "Data source:"
|
||||
msgstr "Datenquelle:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
msgid "Goodreads (CSV)"
|
||||
msgstr "Goodreads (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:50
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
msgid "Storygraph (CSV)"
|
||||
msgstr "Storygraph (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
msgid "LibraryThing (TSV)"
|
||||
msgstr "LibraryThing (TSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
#: bookwyrm/templates/import/import.html:62
|
||||
msgid "OpenLibrary (CSV)"
|
||||
msgstr "OpenLibrary (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
msgid "Calibre (CSV)"
|
||||
msgstr "Calibre (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
#: bookwyrm/templates/import/import.html:71
|
||||
msgid "You can download your Goodreads data from the <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Import/Export page</a> of your Goodreads account."
|
||||
msgstr "Du kannst deine Goodreads-Daten von der <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Import / Export-Seite</a> deines Goodreads-Kontos downloaden."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:74
|
||||
#: bookwyrm/templates/import/import.html:80
|
||||
msgid "Data file:"
|
||||
msgstr "Datei:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:82
|
||||
#: bookwyrm/templates/import/import.html:88
|
||||
msgid "Include reviews"
|
||||
msgstr "Besprechungen einschließen"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:87
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
msgid "Privacy setting for imported reviews:"
|
||||
msgstr "Datenschutzeinstellung für importierte Besprechungen:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
#: bookwyrm/templates/import/import.html:100
|
||||
#: bookwyrm/templates/import/import.html:102
|
||||
#: bookwyrm/templates/preferences/layout.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:78
|
||||
msgid "Import"
|
||||
msgstr "Importieren"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:101
|
||||
#: bookwyrm/templates/import/import.html:103
|
||||
msgid "You've reached the import limit."
|
||||
msgstr "Sie haben das Importlimit erreicht."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:112
|
||||
msgid "Imports are temporarily disabled; thank you for your patience."
|
||||
msgstr "Importe sind vorübergehend deaktiviert; vielen Dank für deine Geduld."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:108
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
msgid "Recent Imports"
|
||||
msgstr "Zuletzt importiert"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:113
|
||||
#: bookwyrm/templates/settings/imports/imports.html:89
|
||||
#: bookwyrm/templates/import/import.html:124
|
||||
#: bookwyrm/templates/settings/imports/imports.html:120
|
||||
msgid "Date Created"
|
||||
msgstr "Erstellungsdatum"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:116
|
||||
#: bookwyrm/templates/import/import.html:127
|
||||
msgid "Last Updated"
|
||||
msgstr "Zuletzt aktualisiert"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/import/import.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:129
|
||||
msgid "Items"
|
||||
msgstr "Einträge"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:128
|
||||
#: bookwyrm/templates/import/import.html:139
|
||||
msgid "No recent imports"
|
||||
msgstr "Keine aktuellen Importe"
|
||||
|
||||
|
@ -2783,6 +2798,7 @@ msgid "Retry Status"
|
|||
msgstr "Wiederholungsstatus"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:22
|
||||
#: bookwyrm/templates/settings/celery.html:36
|
||||
#: bookwyrm/templates/settings/imports/imports.html:6
|
||||
#: bookwyrm/templates/settings/imports/imports.html:9
|
||||
#: bookwyrm/templates/settings/layout.html:82
|
||||
|
@ -2802,7 +2818,7 @@ msgid "Refresh"
|
|||
msgstr "Aktualisieren"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:72
|
||||
#: bookwyrm/templates/settings/imports/imports.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:161
|
||||
msgid "Stop import"
|
||||
msgstr "Import stoppen"
|
||||
|
||||
|
@ -2920,7 +2936,7 @@ msgid "Reject"
|
|||
msgstr "Ablehnen"
|
||||
|
||||
#: bookwyrm/templates/import/troubleshoot.html:7
|
||||
#: bookwyrm/templates/settings/imports/imports.html:107
|
||||
#: bookwyrm/templates/settings/imports/imports.html:138
|
||||
msgid "Failed items"
|
||||
msgstr "Fehlgeschlagene Elemente"
|
||||
|
||||
|
@ -3171,7 +3187,7 @@ msgid "Delete this list?"
|
|||
msgstr "Diese Liste löschen?"
|
||||
|
||||
#: bookwyrm/templates/lists/edit_form.html:5
|
||||
#: bookwyrm/templates/lists/layout.html:18
|
||||
#: bookwyrm/templates/lists/layout.html:23
|
||||
msgid "Edit List"
|
||||
msgstr "Liste bearbeiten"
|
||||
|
||||
|
@ -4429,48 +4445,48 @@ msgstr "Mittlere Priorität"
|
|||
msgid "High priority"
|
||||
msgstr "Hohe Priorität"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:40
|
||||
#: bookwyrm/templates/settings/celery.html:46
|
||||
msgid "Could not connect to Redis broker"
|
||||
msgstr "Verbindung zum Redis Broker fehlgeschlagen"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:48
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
msgid "Active Tasks"
|
||||
msgstr "Aktive Aufgaben"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
#: bookwyrm/templates/settings/celery.html:59
|
||||
#: bookwyrm/templates/settings/imports/imports.html:113
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
#: bookwyrm/templates/settings/celery.html:60
|
||||
msgid "Task name"
|
||||
msgstr "Aufgabenname"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:55
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
msgid "Run time"
|
||||
msgstr "Dauer"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:56
|
||||
#: bookwyrm/templates/settings/celery.html:62
|
||||
msgid "Priority"
|
||||
msgstr "Priorität"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
#: bookwyrm/templates/settings/celery.html:67
|
||||
msgid "No active tasks"
|
||||
msgstr "Keine aktiven Aufgaben"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:79
|
||||
#: bookwyrm/templates/settings/celery.html:85
|
||||
msgid "Workers"
|
||||
msgstr "Workers"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:84
|
||||
#: bookwyrm/templates/settings/celery.html:90
|
||||
msgid "Uptime:"
|
||||
msgstr "Betriebszeit:"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:94
|
||||
#: bookwyrm/templates/settings/celery.html:100
|
||||
msgid "Could not connect to Celery"
|
||||
msgstr "Verbindung zum Celery fehlgeschlagen."
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:101
|
||||
#: bookwyrm/templates/settings/celery.html:107
|
||||
msgid "Errors"
|
||||
msgstr "Fehler"
|
||||
|
||||
|
@ -4850,27 +4866,55 @@ msgstr "Benutzer*innen können derzeit keine neuen Importe starten"
|
|||
msgid "Enable imports"
|
||||
msgstr "Importe aktivieren"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:71
|
||||
#: bookwyrm/templates/settings/imports/imports.html:63
|
||||
msgid "Limit the amount of imports"
|
||||
msgstr "Anzahl der Importe begrenzen"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:74
|
||||
msgid "Some users might try to import a large number of books, which you want to limit."
|
||||
msgstr "Einige Nutzer könnten versuchen eine große Anzahl von Büchern zu importieren, was sie eventuell verhindern möchten."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:75
|
||||
msgid "Set the value to 0 to not enforce any limit."
|
||||
msgstr "Setzen Sie den Wert auf 0, falls sie keine Limitierung wünschen."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:78
|
||||
msgid "Set import limit to"
|
||||
msgstr "Setze Importlimit auf"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:80
|
||||
msgid "books every"
|
||||
msgstr "Bücher alle"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
msgid "days."
|
||||
msgstr "Tage."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:86
|
||||
msgid "Set limit"
|
||||
msgstr "Limit festlegen"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:102
|
||||
msgid "Completed"
|
||||
msgstr "Abgeschlossen"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:85
|
||||
#: bookwyrm/templates/settings/imports/imports.html:116
|
||||
msgid "User"
|
||||
msgstr "Benutzer*in"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:94
|
||||
#: bookwyrm/templates/settings/imports/imports.html:125
|
||||
msgid "Date Updated"
|
||||
msgstr "Aktualisierungsdatum"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:101
|
||||
#: bookwyrm/templates/settings/imports/imports.html:132
|
||||
msgid "Pending items"
|
||||
msgstr "Ausstehende Einträge"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:104
|
||||
#: bookwyrm/templates/settings/imports/imports.html:135
|
||||
msgid "Successful items"
|
||||
msgstr "Erfolgreiche Objekte"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:139
|
||||
#: bookwyrm/templates/settings/imports/imports.html:170
|
||||
msgid "No matching imports found."
|
||||
msgstr "Keine passenden Importe gefunden."
|
||||
|
||||
|
@ -5131,34 +5175,38 @@ msgstr "Einstellungen konnten nicht gespeichert werden"
|
|||
msgid "Allow registration"
|
||||
msgstr "Selbstregistrierung zulassen"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:44
|
||||
#: bookwyrm/templates/settings/registration.html:43
|
||||
msgid "Default access level:"
|
||||
msgstr "Standard-Zugriffslevel:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:61
|
||||
msgid "Require users to confirm email address"
|
||||
msgstr "Benutzer*innen müssen ihre E-Mail-Adresse bestätigen"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:46
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
msgid "(Recommended if registration is open)"
|
||||
msgstr "(empfohlen, falls Selbstregistrierung zulässig ist)"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:51
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
msgid "Allow invite requests"
|
||||
msgstr "Einladungsanfragen zulassen"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:55
|
||||
#: bookwyrm/templates/settings/registration.html:72
|
||||
#: bookwyrm/templates/settings/registration_limited.html:42
|
||||
msgid "Invite request text:"
|
||||
msgstr "Hinweis für Einladungsanfragen:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
#: bookwyrm/templates/settings/registration.html:80
|
||||
#: bookwyrm/templates/settings/registration_limited.html:50
|
||||
msgid "Set a question for invite requests"
|
||||
msgstr "Eine Frage für Einladungsanfragen festlegen"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
#: bookwyrm/templates/settings/registration.html:85
|
||||
#: bookwyrm/templates/settings/registration_limited.html:55
|
||||
msgid "Question:"
|
||||
msgstr "Frage:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:73
|
||||
#: bookwyrm/templates/settings/registration.html:90
|
||||
#: bookwyrm/templates/settings/registration_limited.html:67
|
||||
msgid "Registration closed text:"
|
||||
msgstr "Hinweis, wenn Selbtregistrierung nicht erlaubt ist:"
|
||||
|
@ -5400,7 +5448,7 @@ msgid "Remove theme"
|
|||
msgstr "Design löschen"
|
||||
|
||||
#: bookwyrm/templates/settings/users/delete_user_form.html:5
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:38
|
||||
msgid "Permanently delete user"
|
||||
msgstr "Benutzer*in dauerhaft löschen"
|
||||
|
||||
|
@ -5425,7 +5473,7 @@ msgstr "Gelöschte Accounts"
|
|||
#: bookwyrm/templates/settings/users/user_admin.html:44
|
||||
#: bookwyrm/templates/settings/users/username_filter.html:5
|
||||
msgid "Username"
|
||||
msgstr "Name"
|
||||
msgstr "Anmeldename"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_admin.html:48
|
||||
msgid "Date Added"
|
||||
|
@ -5522,14 +5570,18 @@ msgid "User Actions"
|
|||
msgstr "Benutzeraktionen"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:21
|
||||
msgid "Activate user"
|
||||
msgstr "Benutzer aktivieren"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:27
|
||||
msgid "Suspend user"
|
||||
msgstr "Benutzer*in vorläufig sperren"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:26
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
msgid "Un-suspend user"
|
||||
msgstr "Vorläufige Sperre für Benutzer*in aufheben"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:48
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:54
|
||||
msgid "Access level:"
|
||||
msgstr "Zugriffsstufe:"
|
||||
|
||||
|
@ -6379,33 +6431,53 @@ msgstr "%(username)s folgt niemandem"
|
|||
msgid "No reviews or comments yet!"
|
||||
msgstr "Noch keine Rezensionen oder Kommentare!"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:16
|
||||
#: bookwyrm/templates/user/user.html:20
|
||||
msgid "Edit profile"
|
||||
msgstr "Profil bearbeiten"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templates/user/user.html:42
|
||||
#, python-format
|
||||
msgid "View all %(size)s"
|
||||
msgstr "Alle %(size)s anzeigen"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:52
|
||||
#: bookwyrm/templates/user/user.html:56
|
||||
msgid "View all books"
|
||||
msgstr "Alle Bücher anzeigen"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:59
|
||||
#: bookwyrm/templates/user/user.html:63
|
||||
#, python-format
|
||||
msgid "%(current_year)s Reading Goal"
|
||||
msgstr "Leseziel %(current_year)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:66
|
||||
#: bookwyrm/templates/user/user.html:70
|
||||
msgid "User Activity"
|
||||
msgstr "Benutzer*innenaktivität"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:71
|
||||
#: bookwyrm/templates/user/user.html:76
|
||||
msgid "Show RSS Options"
|
||||
msgstr "RSS Optionen anzeigen"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:82
|
||||
msgid "RSS feed"
|
||||
msgstr "RSS-Feed"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:83
|
||||
#: bookwyrm/templates/user/user.html:98
|
||||
msgid "Complete feed"
|
||||
msgstr "Vollständiger Feed"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:103
|
||||
msgid "Reviews only"
|
||||
msgstr "Nur Reviews"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:108
|
||||
msgid "Quotes only"
|
||||
msgstr "Nur Zitate"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:113
|
||||
msgid "Comments only"
|
||||
msgstr "Nur Kommentare"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:129
|
||||
msgid "No activities yet!"
|
||||
msgstr "Noch keine Aktivitäten!"
|
||||
|
||||
|
@ -6449,16 +6521,43 @@ msgstr "Abmelden"
|
|||
msgid "File exceeds maximum size: 10MB"
|
||||
msgstr "Datei überschreitet die maximale Größe von 10MB"
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:14
|
||||
#, python-format
|
||||
msgid "Book List: %(name)s"
|
||||
msgstr "Bücherliste: %(name)s"
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:22
|
||||
#, python-format
|
||||
msgid "%(num)d book - by %(user)s"
|
||||
msgid_plural "%(num)d books - by %(user)s"
|
||||
msgstr[0] "%(num)d Bücher - von %(user)s"
|
||||
msgstr[1] "%(num)d Bücher - von %(user)s"
|
||||
|
||||
#: bookwyrm/templatetags/utilities.py:39
|
||||
#, python-format
|
||||
msgid "%(title)s: %(subtitle)s"
|
||||
msgstr "%(title)s: %(subtitle)s"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:34
|
||||
#: bookwyrm/views/rss_feed.py:35
|
||||
#, python-brace-format
|
||||
msgid "Status updates from {obj.display_name}"
|
||||
msgstr "Status -Updates von {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:72
|
||||
#, python-brace-format
|
||||
msgid "Reviews from {obj.display_name}"
|
||||
msgstr "Rezensionen von {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:110
|
||||
#, python-brace-format
|
||||
msgid "Quotes from {obj.display_name}"
|
||||
msgstr "Zitate von {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:148
|
||||
#, python-brace-format
|
||||
msgid "Comments from {obj.display_name}"
|
||||
msgstr "Kommentare von {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/updates.py:45
|
||||
#, python-format
|
||||
msgid "Load %(count)d unread status"
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 0.0.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-30 08:21+0000\n"
|
||||
"POT-Creation-Date: 2023-03-13 14:54+0000\n"
|
||||
"PO-Revision-Date: 2021-02-28 17:19-0800\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: English <LL@li.org>\n"
|
||||
|
@ -47,7 +47,7 @@ msgstr ""
|
|||
msgid "Incorrect password"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:89
|
||||
#: bookwyrm/forms/edit_user.py:95 bookwyrm/forms/landing.py:90
|
||||
msgid "Password does not match"
|
||||
msgstr ""
|
||||
|
||||
|
@ -71,19 +71,19 @@ msgstr ""
|
|||
msgid "Reading finished date cannot be in the future."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms/landing.py:37
|
||||
#: bookwyrm/forms/landing.py:38
|
||||
msgid "Username or password are incorrect"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms/landing.py:56
|
||||
#: bookwyrm/forms/landing.py:57
|
||||
msgid "User with this username already exists"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms/landing.py:65
|
||||
#: bookwyrm/forms/landing.py:66
|
||||
msgid "A user with this email already exists."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms/landing.py:123 bookwyrm/forms/landing.py:131
|
||||
#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
|
||||
msgid "Incorrect code"
|
||||
msgstr ""
|
||||
|
||||
|
@ -206,26 +206,26 @@ msgstr ""
|
|||
msgid "Blocked"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/models/fields.py:28
|
||||
#: bookwyrm/models/fields.py:29
|
||||
#, python-format
|
||||
msgid "%(value)s is not a valid remote_id"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/models/fields.py:37 bookwyrm/models/fields.py:46
|
||||
#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
|
||||
#, python-format
|
||||
msgid "%(value)s is not a valid username"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
|
||||
#: bookwyrm/models/fields.py:192 bookwyrm/templates/layout.html:128
|
||||
#: bookwyrm/templates/ostatus/error.html:29
|
||||
msgid "username"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/models/fields.py:187
|
||||
#: bookwyrm/models/fields.py:197
|
||||
msgid "A user with that username already exists."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/models/fields.py:206
|
||||
#: bookwyrm/models/fields.py:216
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:3
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:4
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:11
|
||||
|
@ -233,7 +233,7 @@ msgstr ""
|
|||
msgid "Public"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/models/fields.py:207
|
||||
#: bookwyrm/models/fields.py:217
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:7
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:8
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:14
|
||||
|
@ -241,14 +241,14 @@ msgstr ""
|
|||
msgid "Unlisted"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/models/fields.py:208
|
||||
#: bookwyrm/models/fields.py:218
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:17
|
||||
#: bookwyrm/templates/user/relationships/followers.html:6
|
||||
#: bookwyrm/templates/user/relationships/layout.html:11
|
||||
msgid "Followers"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/models/fields.py:209
|
||||
#: bookwyrm/models/fields.py:219
|
||||
#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:15
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:16
|
||||
|
@ -301,7 +301,7 @@ msgstr ""
|
|||
msgid "Approved"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:296
|
||||
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:298
|
||||
msgid "Reviews"
|
||||
msgstr ""
|
||||
|
||||
|
@ -317,19 +317,19 @@ msgstr ""
|
|||
msgid "Everything else"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:217
|
||||
#: bookwyrm/settings.py:218
|
||||
msgid "Home Timeline"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:217
|
||||
#: bookwyrm/settings.py:218
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:218
|
||||
#: bookwyrm/settings.py:219
|
||||
msgid "Books Timeline"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:218
|
||||
#: bookwyrm/settings.py:219
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:101
|
||||
#: bookwyrm/templates/search/layout.html:22
|
||||
#: bookwyrm/templates/search/layout.html:43
|
||||
|
@ -337,75 +337,75 @@ msgstr ""
|
|||
msgid "Books"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:290
|
||||
#: bookwyrm/settings.py:291
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:291
|
||||
#: bookwyrm/settings.py:292
|
||||
msgid "Català (Catalan)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:292
|
||||
#: bookwyrm/settings.py:293
|
||||
msgid "Deutsch (German)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:293
|
||||
#: bookwyrm/settings.py:294
|
||||
msgid "Español (Spanish)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:294
|
||||
#: bookwyrm/settings.py:295
|
||||
msgid "Euskara (Basque)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:295
|
||||
#: bookwyrm/settings.py:296
|
||||
msgid "Galego (Galician)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:296
|
||||
#: bookwyrm/settings.py:297
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:297
|
||||
#: bookwyrm/settings.py:298
|
||||
msgid "Suomi (Finnish)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:298
|
||||
#: bookwyrm/settings.py:299
|
||||
msgid "Français (French)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:299
|
||||
#: bookwyrm/settings.py:300
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:300
|
||||
#: bookwyrm/settings.py:301
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:301
|
||||
#: bookwyrm/settings.py:302
|
||||
msgid "Polski (Polish)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:302
|
||||
#: bookwyrm/settings.py:303
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:303
|
||||
#: bookwyrm/settings.py:304
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:304
|
||||
#: bookwyrm/settings.py:305
|
||||
msgid "Română (Romanian)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:305
|
||||
#: bookwyrm/settings.py:306
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:306
|
||||
#: bookwyrm/settings.py:307
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:307
|
||||
#: bookwyrm/settings.py:308
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr ""
|
||||
|
||||
|
@ -435,7 +435,7 @@ msgid "About"
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:21
|
||||
#: bookwyrm/templates/get_started/layout.html:20
|
||||
#: bookwyrm/templates/get_started/layout.html:22
|
||||
#, python-format
|
||||
msgid "Welcome to %(site_name)s!"
|
||||
msgstr ""
|
||||
|
@ -709,24 +709,24 @@ msgid "View ISNI record"
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/author/author.html:95
|
||||
#: bookwyrm/templates/book/book.html:164
|
||||
#: bookwyrm/templates/book/book.html:166
|
||||
msgid "View on ISFDB"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/author/author.html:100
|
||||
#: bookwyrm/templates/author/sync_modal.html:5
|
||||
#: bookwyrm/templates/book/book.html:131
|
||||
#: bookwyrm/templates/book/book.html:133
|
||||
#: bookwyrm/templates/book/sync_modal.html:5
|
||||
msgid "Load data"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/author/author.html:104
|
||||
#: bookwyrm/templates/book/book.html:135
|
||||
#: bookwyrm/templates/book/book.html:137
|
||||
msgid "View on OpenLibrary"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/author/author.html:119
|
||||
#: bookwyrm/templates/book/book.html:149
|
||||
#: bookwyrm/templates/book/book.html:151
|
||||
msgid "View on Inventaire"
|
||||
msgstr ""
|
||||
|
||||
|
@ -835,8 +835,8 @@ msgid "ISNI:"
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/author/edit_author.html:126
|
||||
#: bookwyrm/templates/book/book.html:209
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:142
|
||||
#: bookwyrm/templates/book/book.html:211
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:150
|
||||
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:86
|
||||
#: bookwyrm/templates/groups/form.html:32
|
||||
|
@ -859,10 +859,10 @@ msgstr ""
|
|||
|
||||
#: bookwyrm/templates/author/edit_author.html:127
|
||||
#: bookwyrm/templates/author/sync_modal.html:23
|
||||
#: bookwyrm/templates/book/book.html:210
|
||||
#: bookwyrm/templates/book/book.html:212
|
||||
#: bookwyrm/templates/book/cover_add_modal.html:33
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:144
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:147
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:152
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:155
|
||||
#: bookwyrm/templates/book/file_links/add_link_modal.html:59
|
||||
#: bookwyrm/templates/book/file_links/verification_modal.html:25
|
||||
#: bookwyrm/templates/book/sync_modal.html:23
|
||||
|
@ -886,7 +886,7 @@ msgid "Loading data will connect to <strong>%(source_name)s</strong> and check f
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/author/sync_modal.html:24
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:129
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:137
|
||||
#: bookwyrm/templates/book/sync_modal.html:24
|
||||
#: bookwyrm/templates/groups/members.html:29
|
||||
#: bookwyrm/templates/landing/password_reset.html:52
|
||||
|
@ -904,90 +904,90 @@ msgstr ""
|
|||
msgid "Edit Book"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:88 bookwyrm/templates/book/book.html:91
|
||||
#: bookwyrm/templates/book/book.html:90 bookwyrm/templates/book/book.html:93
|
||||
msgid "Click to add cover"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:97
|
||||
#: bookwyrm/templates/book/book.html:99
|
||||
msgid "Failed to load cover"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:108
|
||||
#: bookwyrm/templates/book/book.html:110
|
||||
msgid "Click to enlarge"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:186
|
||||
#: bookwyrm/templates/book/book.html:188
|
||||
#, python-format
|
||||
msgid "(%(review_count)s review)"
|
||||
msgid_plural "(%(review_count)s reviews)"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:198
|
||||
#: bookwyrm/templates/book/book.html:200
|
||||
msgid "Add Description"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:205
|
||||
#: bookwyrm/templates/book/book.html:207
|
||||
#: bookwyrm/templates/book/edit/edit_book_form.html:42
|
||||
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
|
||||
msgid "Description:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:221
|
||||
#: bookwyrm/templates/book/book.html:223
|
||||
#, python-format
|
||||
msgid "%(count)s edition"
|
||||
msgid_plural "%(count)s editions"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:235
|
||||
#: bookwyrm/templates/book/book.html:237
|
||||
msgid "You have shelved this edition in:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:250
|
||||
#: bookwyrm/templates/book/book.html:252
|
||||
#, python-format
|
||||
msgid "A <a href=\"%(book_path)s\">different edition</a> of this book is on your <a href=\"%(shelf_path)s\">%(shelf_name)s</a> shelf."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:261
|
||||
#: bookwyrm/templates/book/book.html:263
|
||||
msgid "Your reading activity"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:267
|
||||
#: bookwyrm/templates/book/book.html:269
|
||||
#: bookwyrm/templates/guided_tour/book.html:56
|
||||
msgid "Add read dates"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:275
|
||||
#: bookwyrm/templates/book/book.html:277
|
||||
msgid "You don't have any reading activity for this book."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:301
|
||||
#: bookwyrm/templates/book/book.html:303
|
||||
msgid "Your reviews"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:307
|
||||
#: bookwyrm/templates/book/book.html:309
|
||||
msgid "Your comments"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:313
|
||||
#: bookwyrm/templates/book/book.html:315
|
||||
msgid "Your quotes"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:349
|
||||
#: bookwyrm/templates/book/book.html:351
|
||||
msgid "Subjects"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:361
|
||||
#: bookwyrm/templates/book/book.html:363
|
||||
msgid "Places"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:372
|
||||
#: bookwyrm/templates/book/book.html:374
|
||||
#: bookwyrm/templates/groups/group.html:19
|
||||
#: bookwyrm/templates/guided_tour/lists.html:14
|
||||
#: bookwyrm/templates/guided_tour/user_books.html:102
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:78
|
||||
#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
|
||||
#: bookwyrm/templates/layout.html:90 bookwyrm/templates/lists/curate.html:8
|
||||
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
|
||||
#: bookwyrm/templates/lists/lists.html:12
|
||||
#: bookwyrm/templates/search/layout.html:26
|
||||
|
@ -996,11 +996,11 @@ msgstr ""
|
|||
msgid "Lists"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:384
|
||||
#: bookwyrm/templates/book/book.html:386
|
||||
msgid "Add to list"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:394
|
||||
#: bookwyrm/templates/book/book.html:396
|
||||
#: bookwyrm/templates/book/cover_add_modal.html:32
|
||||
#: bookwyrm/templates/lists/add_item_modal.html:39
|
||||
#: bookwyrm/templates/lists/list.html:255
|
||||
|
@ -1060,8 +1060,8 @@ msgstr ""
|
|||
#: bookwyrm/templates/components/modal.html:13
|
||||
#: bookwyrm/templates/components/modal.html:30
|
||||
#: bookwyrm/templates/feed/suggested_books.html:67
|
||||
#: bookwyrm/templates/get_started/layout.html:25
|
||||
#: bookwyrm/templates/get_started/layout.html:58
|
||||
#: bookwyrm/templates/get_started/layout.html:27
|
||||
#: bookwyrm/templates/get_started/layout.html:60
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1076,47 +1076,51 @@ msgstr ""
|
|||
msgid "Add Book"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:62
|
||||
msgid "Confirm Book Info"
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:43
|
||||
msgid "Failed to save book, see errors below for more information."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:70
|
||||
msgid "Confirm Book Info"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:78
|
||||
#, python-format
|
||||
msgid "Is \"%(name)s\" one of these authors?"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:81
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:89
|
||||
#, python-format
|
||||
msgid "Author of <em>%(book_title)s</em>"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:85
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:93
|
||||
#, python-format
|
||||
msgid "Author of <em>%(alt_title)s</em>"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:87
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:95
|
||||
msgid "Find more information at isni.org"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:97
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:105
|
||||
msgid "This is a new author"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:107
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:115
|
||||
#, python-format
|
||||
msgid "Creating a new author: %(name)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:114
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:122
|
||||
msgid "Is this an edition of an existing work?"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:122
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:130
|
||||
msgid "This is a new work"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:131
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:139
|
||||
#: bookwyrm/templates/feed/status.html:19
|
||||
#: bookwyrm/templates/guided_tour/book.html:44
|
||||
#: bookwyrm/templates/guided_tour/book.html:68
|
||||
|
@ -1471,6 +1475,19 @@ msgstr ""
|
|||
msgid "rated it"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/series.html:11
|
||||
msgid "Series by"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/series.html:27
|
||||
#, python-format
|
||||
msgid "Book %(series_number)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/series.html:27
|
||||
msgid "Unsorted Book"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/sync_modal.html:15
|
||||
#, python-format
|
||||
msgid "Loading data will connect to <strong>%(source_name)s</strong> and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
|
||||
|
@ -1665,7 +1682,7 @@ msgstr ""
|
|||
|
||||
#: bookwyrm/templates/discover/discover.html:4
|
||||
#: bookwyrm/templates/discover/discover.html:10
|
||||
#: bookwyrm/templates/layout.html:94
|
||||
#: bookwyrm/templates/layout.html:93
|
||||
msgid "Discover"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1797,7 +1814,7 @@ msgstr ""
|
|||
msgid "Test email"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/embed-layout.html:20 bookwyrm/templates/layout.html:30
|
||||
#: bookwyrm/templates/embed-layout.html:20 bookwyrm/templates/layout.html:31
|
||||
#: bookwyrm/templates/setup/layout.html:15
|
||||
#: bookwyrm/templates/two_factor_auth/two_factor_login.html:18
|
||||
#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:18
|
||||
|
@ -1936,7 +1953,7 @@ msgid "What are you reading?"
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:9
|
||||
#: bookwyrm/templates/layout.html:38 bookwyrm/templates/lists/list.html:213
|
||||
#: bookwyrm/templates/layout.html:39 bookwyrm/templates/lists/list.html:213
|
||||
msgid "Search for a book"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1955,8 +1972,8 @@ msgstr ""
|
|||
#: bookwyrm/templates/get_started/users.html:18
|
||||
#: bookwyrm/templates/get_started/users.html:19
|
||||
#: bookwyrm/templates/groups/members.html:15
|
||||
#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:44
|
||||
#: bookwyrm/templates/layout.html:45 bookwyrm/templates/lists/list.html:217
|
||||
#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:45
|
||||
#: bookwyrm/templates/layout.html:46 bookwyrm/templates/lists/list.html:217
|
||||
#: bookwyrm/templates/search/layout.html:5
|
||||
#: bookwyrm/templates/search/layout.html:10
|
||||
msgid "Search"
|
||||
|
@ -1986,28 +2003,28 @@ msgstr ""
|
|||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/get_started/layout.html:22
|
||||
#: bookwyrm/templates/get_started/layout.html:24
|
||||
msgid "These are some first steps to get you started."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/get_started/layout.html:36
|
||||
#: bookwyrm/templates/get_started/layout.html:38
|
||||
#: bookwyrm/templates/get_started/profile.html:6
|
||||
msgid "Create your profile"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/get_started/layout.html:40
|
||||
#: bookwyrm/templates/get_started/layout.html:42
|
||||
msgid "Add books"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/get_started/layout.html:44
|
||||
#: bookwyrm/templates/get_started/layout.html:46
|
||||
msgid "Find friends"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/get_started/layout.html:50
|
||||
#: bookwyrm/templates/get_started/layout.html:52
|
||||
msgid "Skip this step"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/get_started/layout.html:54
|
||||
#: bookwyrm/templates/get_started/layout.html:56
|
||||
#: bookwyrm/templates/guided_tour/group.html:101
|
||||
msgid "Finish"
|
||||
msgstr ""
|
||||
|
@ -2230,7 +2247,7 @@ msgstr ""
|
|||
#: bookwyrm/templates/guided_tour/user_profile.html:72
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:95
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:118
|
||||
#: bookwyrm/templates/snippets/pagination.html:23
|
||||
#: bookwyrm/templates/snippets/pagination.html:30
|
||||
msgid "Next"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2434,8 +2451,8 @@ msgid "The bell will light up when you have a new notification. When it does, cl
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/guided_tour/home.html:177
|
||||
#: bookwyrm/templates/layout.html:75 bookwyrm/templates/layout.html:107
|
||||
#: bookwyrm/templates/layout.html:108
|
||||
#: bookwyrm/templates/layout.html:75 bookwyrm/templates/layout.html:106
|
||||
#: bookwyrm/templates/layout.html:107
|
||||
#: bookwyrm/templates/notifications/notifications_page.html:5
|
||||
#: bookwyrm/templates/notifications/notifications_page.html:10
|
||||
msgid "Notifications"
|
||||
|
@ -2680,6 +2697,15 @@ msgstr ""
|
|||
msgid "Find a book"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/hashtag.html:12
|
||||
#, python-format
|
||||
msgid "See tagged statuses in the local %(site_name)s community"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/hashtag.html:25
|
||||
msgid "No activities for this hashtag yet!"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:5
|
||||
#: bookwyrm/templates/import/import.html:9
|
||||
#: bookwyrm/templates/shelf/shelf.html:64
|
||||
|
@ -2799,7 +2825,7 @@ msgid "Retry Status"
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:22
|
||||
#: bookwyrm/templates/settings/celery.html:36
|
||||
#: bookwyrm/templates/settings/celery.html:44
|
||||
#: bookwyrm/templates/settings/imports/imports.html:6
|
||||
#: bookwyrm/templates/settings/imports/imports.html:9
|
||||
#: bookwyrm/templates/settings/layout.html:82
|
||||
|
@ -3023,7 +3049,7 @@ msgid "Login"
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/landing/login.html:7
|
||||
#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:139
|
||||
#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:136
|
||||
#: bookwyrm/templates/ostatus/error.html:37
|
||||
msgid "Log in"
|
||||
msgstr ""
|
||||
|
@ -3034,7 +3060,7 @@ msgstr ""
|
|||
|
||||
#: bookwyrm/templates/landing/login.html:21
|
||||
#: bookwyrm/templates/landing/reactivate.html:17
|
||||
#: bookwyrm/templates/layout.html:130 bookwyrm/templates/ostatus/error.html:28
|
||||
#: bookwyrm/templates/layout.html:127 bookwyrm/templates/ostatus/error.html:28
|
||||
#: bookwyrm/templates/snippets/register_form.html:4
|
||||
msgid "Username:"
|
||||
msgstr ""
|
||||
|
@ -3042,13 +3068,13 @@ msgstr ""
|
|||
#: bookwyrm/templates/landing/login.html:27
|
||||
#: bookwyrm/templates/landing/password_reset.html:26
|
||||
#: bookwyrm/templates/landing/reactivate.html:23
|
||||
#: bookwyrm/templates/layout.html:134 bookwyrm/templates/ostatus/error.html:32
|
||||
#: bookwyrm/templates/layout.html:131 bookwyrm/templates/ostatus/error.html:32
|
||||
#: bookwyrm/templates/preferences/2fa.html:91
|
||||
#: bookwyrm/templates/snippets/register_form.html:45
|
||||
msgid "Password:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:136
|
||||
#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:133
|
||||
#: bookwyrm/templates/ostatus/error.html:34
|
||||
msgid "Forgot your password?"
|
||||
msgstr ""
|
||||
|
@ -3091,35 +3117,35 @@ msgstr ""
|
|||
msgid "%(site_name)s search"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/layout.html:36
|
||||
#: bookwyrm/templates/layout.html:37
|
||||
msgid "Search for a book, user, or list"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/layout.html:51 bookwyrm/templates/layout.html:52
|
||||
#: bookwyrm/templates/layout.html:52 bookwyrm/templates/layout.html:53
|
||||
msgid "Scan Barcode"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/layout.html:66
|
||||
#: bookwyrm/templates/layout.html:67
|
||||
msgid "Main navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/layout.html:88
|
||||
#: bookwyrm/templates/layout.html:87
|
||||
msgid "Feed"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/layout.html:135 bookwyrm/templates/ostatus/error.html:33
|
||||
#: bookwyrm/templates/layout.html:132 bookwyrm/templates/ostatus/error.html:33
|
||||
msgid "password"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/layout.html:147
|
||||
#: bookwyrm/templates/layout.html:144
|
||||
msgid "Join"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/layout.html:181
|
||||
#: bookwyrm/templates/layout.html:179
|
||||
msgid "Successfully posted status"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/layout.html:182
|
||||
#: bookwyrm/templates/layout.html:180
|
||||
msgid "Error posting status"
|
||||
msgstr ""
|
||||
|
||||
|
@ -3598,6 +3624,13 @@ msgstr ""
|
|||
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> and %(other_user_display_count)s others have left your group \"<a href=\"%(group_path)s\">%(group_name)s</a>\""
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/notifications/items/link_domain.html:15
|
||||
#, python-format
|
||||
msgid "A new <a href=\"%(path)s\">link domain</a> needs review"
|
||||
msgid_plural "%(display_count)s new <a href=\"%(path)s\">link domains</a> need moderation"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: bookwyrm/templates/notifications/items/mention.html:20
|
||||
#, python-format
|
||||
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> mentioned you in a <a href=\"%(related_path)s\">review of <em>%(book_title)s</em></a>"
|
||||
|
@ -4430,63 +4463,71 @@ msgid "Celery Status"
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:14
|
||||
msgid "You can set up monitoring to check if Celery is running by querying:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:22
|
||||
msgid "Queues"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:18
|
||||
#: bookwyrm/templates/settings/celery.html:26
|
||||
msgid "Low priority"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:24
|
||||
#: bookwyrm/templates/settings/celery.html:32
|
||||
msgid "Medium priority"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:30
|
||||
#: bookwyrm/templates/settings/celery.html:38
|
||||
msgid "High priority"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:46
|
||||
#: bookwyrm/templates/settings/celery.html:50
|
||||
msgid "Broadcasts"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:60
|
||||
msgid "Could not connect to Redis broker"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
#: bookwyrm/templates/settings/celery.html:68
|
||||
msgid "Active Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:59
|
||||
#: bookwyrm/templates/settings/celery.html:73
|
||||
#: bookwyrm/templates/settings/imports/imports.html:113
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:60
|
||||
#: bookwyrm/templates/settings/celery.html:74
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
#: bookwyrm/templates/settings/celery.html:75
|
||||
msgid "Run time"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:62
|
||||
#: bookwyrm/templates/settings/celery.html:76
|
||||
msgid "Priority"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:67
|
||||
#: bookwyrm/templates/settings/celery.html:81
|
||||
msgid "No active tasks"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:85
|
||||
#: bookwyrm/templates/settings/celery.html:99
|
||||
msgid "Workers"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:90
|
||||
#: bookwyrm/templates/settings/celery.html:104
|
||||
msgid "Uptime:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:100
|
||||
#: bookwyrm/templates/settings/celery.html:114
|
||||
msgid "Could not connect to Celery"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:107
|
||||
#: bookwyrm/templates/settings/celery.html:121
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5685,11 +5726,11 @@ msgstr ""
|
|||
msgid "Instance Setup"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/setup/layout.html:19
|
||||
#: bookwyrm/templates/setup/layout.html:21
|
||||
msgid "Installing BookWyrm"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/setup/layout.html:22
|
||||
#: bookwyrm/templates/setup/layout.html:24
|
||||
msgid "Need help?"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5781,7 +5822,7 @@ msgid_plural "and %(remainder_count_display)s others"
|
|||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: bookwyrm/templates/snippets/book_cover.html:61
|
||||
#: bookwyrm/templates/snippets/book_cover.html:63
|
||||
msgid "No cover"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5881,6 +5922,10 @@ msgstr ""
|
|||
msgid "At percent:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:69
|
||||
msgid "to"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:24
|
||||
#, python-format
|
||||
msgid "Your review of '%(book_title)s'"
|
||||
|
@ -6059,10 +6104,18 @@ msgstr ""
|
|||
msgid "page %(page)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/pagination.html:12
|
||||
#: bookwyrm/templates/snippets/pagination.html:13
|
||||
msgid "Newer"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/pagination.html:15
|
||||
msgid "Previous"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/pagination.html:28
|
||||
msgid "Older"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:12
|
||||
msgid "Followers-only"
|
||||
msgstr ""
|
||||
|
@ -6191,19 +6244,29 @@ msgstr ""
|
|||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:102
|
||||
#, python-format
|
||||
msgid "(Page %(page)s)"
|
||||
msgid "(Page %(page)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:102
|
||||
#, python-format
|
||||
msgid "%(endpage)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:104
|
||||
#, python-format
|
||||
msgid "(%(percent)s%%)"
|
||||
msgid "(%(percent)s%%"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:104
|
||||
#, python-format
|
||||
msgid " - %(endpercent)s%%"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:127
|
||||
msgid "Open image in new window"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:146
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:148
|
||||
msgid "Hide status"
|
||||
msgstr ""
|
||||
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-11 22:46+0000\n"
|
||||
"PO-Revision-Date: 2023-01-15 12:10\n"
|
||||
"POT-Creation-Date: 2023-01-30 08:21+0000\n"
|
||||
"PO-Revision-Date: 2023-01-30 17:35\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Spanish\n"
|
||||
"Language: es\n"
|
||||
|
@ -256,14 +256,14 @@ msgstr "Seguidores"
|
|||
msgid "Private"
|
||||
msgstr "Privado"
|
||||
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:157
|
||||
#: bookwyrm/templates/settings/imports/imports.html:67
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:168
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/settings/users/user_admin.html:81
|
||||
#: bookwyrm/templates/settings/users/user_info.html:28
|
||||
msgid "Active"
|
||||
msgstr "Activo"
|
||||
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:155
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:166
|
||||
msgid "Complete"
|
||||
msgstr "Completado"
|
||||
|
||||
|
@ -316,19 +316,19 @@ msgstr "Citas"
|
|||
msgid "Everything else"
|
||||
msgstr "Todo lo demás"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home Timeline"
|
||||
msgstr "Línea de tiempo principal"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home"
|
||||
msgstr "Inicio"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
msgid "Books Timeline"
|
||||
msgstr "Línea temporal de libros"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:101
|
||||
#: bookwyrm/templates/search/layout.html:22
|
||||
#: bookwyrm/templates/search/layout.html:43
|
||||
|
@ -336,75 +336,75 @@ msgstr "Línea temporal de libros"
|
|||
msgid "Books"
|
||||
msgstr "Libros"
|
||||
|
||||
#: bookwyrm/settings.py:287
|
||||
#: bookwyrm/settings.py:290
|
||||
msgid "English"
|
||||
msgstr "English (Inglés)"
|
||||
|
||||
#: bookwyrm/settings.py:288
|
||||
#: bookwyrm/settings.py:291
|
||||
msgid "Català (Catalan)"
|
||||
msgstr "Català (Catalán)"
|
||||
|
||||
#: bookwyrm/settings.py:289
|
||||
#: bookwyrm/settings.py:292
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (Alemán)"
|
||||
|
||||
#: bookwyrm/settings.py:290
|
||||
#: bookwyrm/settings.py:293
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español"
|
||||
|
||||
#: bookwyrm/settings.py:291
|
||||
#: bookwyrm/settings.py:294
|
||||
msgid "Euskara (Basque)"
|
||||
msgstr "Euskera"
|
||||
|
||||
#: bookwyrm/settings.py:292
|
||||
#: bookwyrm/settings.py:295
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (gallego)"
|
||||
|
||||
#: bookwyrm/settings.py:293
|
||||
#: bookwyrm/settings.py:296
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano"
|
||||
|
||||
#: bookwyrm/settings.py:294
|
||||
#: bookwyrm/settings.py:297
|
||||
msgid "Suomi (Finnish)"
|
||||
msgstr "Suomi (finés)"
|
||||
|
||||
#: bookwyrm/settings.py:295
|
||||
#: bookwyrm/settings.py:298
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (Francés)"
|
||||
|
||||
#: bookwyrm/settings.py:296
|
||||
#: bookwyrm/settings.py:299
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Lituano)"
|
||||
|
||||
#: bookwyrm/settings.py:297
|
||||
#: bookwyrm/settings.py:300
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (noruego)"
|
||||
|
||||
#: bookwyrm/settings.py:298
|
||||
#: bookwyrm/settings.py:301
|
||||
msgid "Polski (Polish)"
|
||||
msgstr "Polski (Polaco)"
|
||||
|
||||
#: bookwyrm/settings.py:299
|
||||
#: bookwyrm/settings.py:302
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (portugués brasileño)"
|
||||
|
||||
#: bookwyrm/settings.py:300
|
||||
#: bookwyrm/settings.py:303
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Portugués europeo)"
|
||||
|
||||
#: bookwyrm/settings.py:301
|
||||
#: bookwyrm/settings.py:304
|
||||
msgid "Română (Romanian)"
|
||||
msgstr "Română (rumano)"
|
||||
|
||||
#: bookwyrm/settings.py:302
|
||||
#: bookwyrm/settings.py:305
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Sueco)"
|
||||
|
||||
#: bookwyrm/settings.py:303
|
||||
#: bookwyrm/settings.py:306
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (Chino simplificado)"
|
||||
|
||||
#: bookwyrm/settings.py:304
|
||||
#: bookwyrm/settings.py:307
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (Chino tradicional)"
|
||||
|
||||
|
@ -847,10 +847,10 @@ msgstr "ISNI:"
|
|||
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
|
||||
#: bookwyrm/templates/settings/federation/edit_instance.html:98
|
||||
#: bookwyrm/templates/settings/federation/instance.html:105
|
||||
#: bookwyrm/templates/settings/registration.html:79
|
||||
#: bookwyrm/templates/settings/registration.html:96
|
||||
#: bookwyrm/templates/settings/registration_limited.html:76
|
||||
#: bookwyrm/templates/settings/site.html:144
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:69
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:75
|
||||
#: bookwyrm/templates/shelf/form.html:25
|
||||
#: bookwyrm/templates/snippets/reading_modals/layout.html:18
|
||||
msgid "Save"
|
||||
|
@ -1160,7 +1160,7 @@ msgstr "Esta es una obra nueva"
|
|||
#: bookwyrm/templates/guided_tour/user_profile.html:89
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:112
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:135
|
||||
#: bookwyrm/templates/user_menu.html:18
|
||||
#: bookwyrm/templates/user/user.html:87 bookwyrm/templates/user_menu.html:18
|
||||
msgid "Back"
|
||||
msgstr "Volver"
|
||||
|
||||
|
@ -1372,7 +1372,7 @@ msgid "Domain"
|
|||
msgstr "Dominio"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:36
|
||||
#: bookwyrm/templates/import/import.html:122
|
||||
#: bookwyrm/templates/import/import.html:133
|
||||
#: bookwyrm/templates/import/import_status.html:134
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:37
|
||||
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:48
|
||||
|
@ -1385,7 +1385,7 @@ msgstr "Estado"
|
|||
#: bookwyrm/templates/book/file_links/edit_links.html:37
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:41
|
||||
#: bookwyrm/templates/settings/federation/instance.html:112
|
||||
#: bookwyrm/templates/settings/imports/imports.html:110
|
||||
#: bookwyrm/templates/settings/imports/imports.html:141
|
||||
#: bookwyrm/templates/settings/reports/report_links_table.html:6
|
||||
#: bookwyrm/templates/settings/themes.html:99
|
||||
msgid "Actions"
|
||||
|
@ -1905,13 +1905,13 @@ msgid "Add to your books"
|
|||
msgstr "Añadir a tus libros"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:10
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:33
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:37
|
||||
#: bookwyrm/templatetags/shelf_tags.py:48
|
||||
msgid "To Read"
|
||||
msgstr "Para leer"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:11
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:34
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templatetags/shelf_tags.py:50
|
||||
msgid "Currently Reading"
|
||||
msgstr "Leyendo actualmente"
|
||||
|
@ -1921,12 +1921,12 @@ msgstr "Leyendo actualmente"
|
|||
#: bookwyrm/templates/snippets/shelf_selector.html:46
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12
|
||||
#: bookwyrm/templates/user/user.html:35 bookwyrm/templatetags/shelf_tags.py:52
|
||||
#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:52
|
||||
msgid "Read"
|
||||
msgstr "Leído"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:13
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:36
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:40
|
||||
msgid "Stopped Reading"
|
||||
msgstr "Lectura interrumpida"
|
||||
|
||||
|
@ -2642,7 +2642,7 @@ msgid "This is your user profile. All your latest activities will be listed here
|
|||
msgstr "Este es tu perfil de usuario. Todas tus últimas actividades aparecerán aquí. Otros usuarios de Bookwyrm también pueden ver partes de esta página (lo que ellos pueden ver depende de tu configuración de privacidad)."
|
||||
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:11
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:14
|
||||
msgid "User Profile"
|
||||
msgstr "Perfil de usuario"
|
||||
|
||||
|
@ -2689,85 +2689,100 @@ msgstr "Importar libros"
|
|||
msgid "Not a valid CSV file"
|
||||
msgstr "No es un archivo CSV válido"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:22
|
||||
#: bookwyrm/templates/import/import.html:20
|
||||
#, python-format
|
||||
msgid "Currently you are allowed to import %(import_size_limit)s books every %(import_limit_reset)s days."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:21
|
||||
#, python-format
|
||||
msgid "You have %(allowed_imports)s left."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:28
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(hours)s hours."
|
||||
msgstr "En promedio, las importaciones recientes han tomado %(hours)s horas."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:26
|
||||
#: bookwyrm/templates/import/import.html:32
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(minutes)s minutes."
|
||||
msgstr "En promedio, las importaciones recientes han tomado %(minutes)s minutos."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:41
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
msgid "Data source:"
|
||||
msgstr "Fuente de datos:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
msgid "Goodreads (CSV)"
|
||||
msgstr "Goodreads (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:50
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
msgid "Storygraph (CSV)"
|
||||
msgstr "Storygraph (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
msgid "LibraryThing (TSV)"
|
||||
msgstr "LibraryThing (TSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
#: bookwyrm/templates/import/import.html:62
|
||||
msgid "OpenLibrary (CSV)"
|
||||
msgstr "OpenLibrary (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
msgid "Calibre (CSV)"
|
||||
msgstr "Calibre (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
#: bookwyrm/templates/import/import.html:71
|
||||
msgid "You can download your Goodreads data from the <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Import/Export page</a> of your Goodreads account."
|
||||
msgstr "Puede descargar tus datos de Goodreads desde la <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">página de Importación/Exportación</a> de tu cuenta de Goodreads."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:74
|
||||
#: bookwyrm/templates/import/import.html:80
|
||||
msgid "Data file:"
|
||||
msgstr "Archivo de datos:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:82
|
||||
#: bookwyrm/templates/import/import.html:88
|
||||
msgid "Include reviews"
|
||||
msgstr "Incluir reseñas"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:87
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
msgid "Privacy setting for imported reviews:"
|
||||
msgstr "Configuración de privacidad para las reseñas importadas:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
#: bookwyrm/templates/import/import.html:100
|
||||
#: bookwyrm/templates/import/import.html:102
|
||||
#: bookwyrm/templates/preferences/layout.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:78
|
||||
msgid "Import"
|
||||
msgstr "Importar"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:101
|
||||
#: bookwyrm/templates/import/import.html:103
|
||||
msgid "You've reached the import limit."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:112
|
||||
msgid "Imports are temporarily disabled; thank you for your patience."
|
||||
msgstr "Las importaciones se han deshabilitado temporalmente, gracias por tu paciencia."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:108
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
msgid "Recent Imports"
|
||||
msgstr "Importaciones recientes"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:113
|
||||
#: bookwyrm/templates/settings/imports/imports.html:89
|
||||
#: bookwyrm/templates/import/import.html:124
|
||||
#: bookwyrm/templates/settings/imports/imports.html:120
|
||||
msgid "Date Created"
|
||||
msgstr "Fecha de Creación"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:116
|
||||
#: bookwyrm/templates/import/import.html:127
|
||||
msgid "Last Updated"
|
||||
msgstr "Última Actualización"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/import/import.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:129
|
||||
msgid "Items"
|
||||
msgstr "Elementos"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:128
|
||||
#: bookwyrm/templates/import/import.html:139
|
||||
msgid "No recent imports"
|
||||
msgstr "No hay ninguna importación reciente"
|
||||
|
||||
|
@ -2783,6 +2798,7 @@ msgid "Retry Status"
|
|||
msgstr "Estado del Reintento"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:22
|
||||
#: bookwyrm/templates/settings/celery.html:36
|
||||
#: bookwyrm/templates/settings/imports/imports.html:6
|
||||
#: bookwyrm/templates/settings/imports/imports.html:9
|
||||
#: bookwyrm/templates/settings/layout.html:82
|
||||
|
@ -2802,7 +2818,7 @@ msgid "Refresh"
|
|||
msgstr "Refrescar"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:72
|
||||
#: bookwyrm/templates/settings/imports/imports.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:161
|
||||
msgid "Stop import"
|
||||
msgstr "Parar la importación"
|
||||
|
||||
|
@ -2920,7 +2936,7 @@ msgid "Reject"
|
|||
msgstr "Rechazar"
|
||||
|
||||
#: bookwyrm/templates/import/troubleshoot.html:7
|
||||
#: bookwyrm/templates/settings/imports/imports.html:107
|
||||
#: bookwyrm/templates/settings/imports/imports.html:138
|
||||
msgid "Failed items"
|
||||
msgstr "Elementos fallidos"
|
||||
|
||||
|
@ -3171,7 +3187,7 @@ msgid "Delete this list?"
|
|||
msgstr "¿Eliminar esta lista?"
|
||||
|
||||
#: bookwyrm/templates/lists/edit_form.html:5
|
||||
#: bookwyrm/templates/lists/layout.html:18
|
||||
#: bookwyrm/templates/lists/layout.html:23
|
||||
msgid "Edit List"
|
||||
msgstr "Editar lista"
|
||||
|
||||
|
@ -4429,48 +4445,48 @@ msgstr "Prioridad media"
|
|||
msgid "High priority"
|
||||
msgstr "Prioridad alta"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:40
|
||||
#: bookwyrm/templates/settings/celery.html:46
|
||||
msgid "Could not connect to Redis broker"
|
||||
msgstr "No se ha podido conectar al broker de Redis"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:48
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
msgid "Active Tasks"
|
||||
msgstr "Tareas activas"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
#: bookwyrm/templates/settings/celery.html:59
|
||||
#: bookwyrm/templates/settings/imports/imports.html:113
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
#: bookwyrm/templates/settings/celery.html:60
|
||||
msgid "Task name"
|
||||
msgstr "Nombre de tarea"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:55
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
msgid "Run time"
|
||||
msgstr "Tiempo de ejecución"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:56
|
||||
#: bookwyrm/templates/settings/celery.html:62
|
||||
msgid "Priority"
|
||||
msgstr "Prioridad"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
#: bookwyrm/templates/settings/celery.html:67
|
||||
msgid "No active tasks"
|
||||
msgstr "Sin tareas activas"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:79
|
||||
#: bookwyrm/templates/settings/celery.html:85
|
||||
msgid "Workers"
|
||||
msgstr "Trabajadores"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:84
|
||||
#: bookwyrm/templates/settings/celery.html:90
|
||||
msgid "Uptime:"
|
||||
msgstr "Tiempo ejecutándose:"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:94
|
||||
#: bookwyrm/templates/settings/celery.html:100
|
||||
msgid "Could not connect to Celery"
|
||||
msgstr "No se puede conectar a Celery"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:101
|
||||
#: bookwyrm/templates/settings/celery.html:107
|
||||
msgid "Errors"
|
||||
msgstr "Errores"
|
||||
|
||||
|
@ -4850,27 +4866,55 @@ msgstr "Los usuarios actualmente no pueden iniciar nuevas importaciones"
|
|||
msgid "Enable imports"
|
||||
msgstr "Habilitar importaciones"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:71
|
||||
#: bookwyrm/templates/settings/imports/imports.html:63
|
||||
msgid "Limit the amount of imports"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:74
|
||||
msgid "Some users might try to import a large number of books, which you want to limit."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:75
|
||||
msgid "Set the value to 0 to not enforce any limit."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:78
|
||||
msgid "Set import limit to"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:80
|
||||
msgid "books every"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
msgid "days."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:86
|
||||
msgid "Set limit"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:102
|
||||
msgid "Completed"
|
||||
msgstr "Completado"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:85
|
||||
#: bookwyrm/templates/settings/imports/imports.html:116
|
||||
msgid "User"
|
||||
msgstr "Usuario"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:94
|
||||
#: bookwyrm/templates/settings/imports/imports.html:125
|
||||
msgid "Date Updated"
|
||||
msgstr "Fecha Actualizada"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:101
|
||||
#: bookwyrm/templates/settings/imports/imports.html:132
|
||||
msgid "Pending items"
|
||||
msgstr "Elementos pendientes"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:104
|
||||
#: bookwyrm/templates/settings/imports/imports.html:135
|
||||
msgid "Successful items"
|
||||
msgstr "Importaciones exitosas"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:139
|
||||
#: bookwyrm/templates/settings/imports/imports.html:170
|
||||
msgid "No matching imports found."
|
||||
msgstr "No se han encontrado importaciones coincidentes."
|
||||
|
||||
|
@ -5131,34 +5175,38 @@ msgstr "No se ha podido guardar la configuración."
|
|||
msgid "Allow registration"
|
||||
msgstr "Permitir registración"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:44
|
||||
#: bookwyrm/templates/settings/registration.html:43
|
||||
msgid "Default access level:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:61
|
||||
msgid "Require users to confirm email address"
|
||||
msgstr "Requerir a usuarios a confirmar dirección de correo electrónico"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:46
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
msgid "(Recommended if registration is open)"
|
||||
msgstr "(Recomendado si la registración es abierta)"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:51
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
msgid "Allow invite requests"
|
||||
msgstr "Permitir solicitudes de invitación"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:55
|
||||
#: bookwyrm/templates/settings/registration.html:72
|
||||
#: bookwyrm/templates/settings/registration_limited.html:42
|
||||
msgid "Invite request text:"
|
||||
msgstr "Texto de solicitud de invitación:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
#: bookwyrm/templates/settings/registration.html:80
|
||||
#: bookwyrm/templates/settings/registration_limited.html:50
|
||||
msgid "Set a question for invite requests"
|
||||
msgstr "Establece una pregunta para las solicitudes de invitación."
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
#: bookwyrm/templates/settings/registration.html:85
|
||||
#: bookwyrm/templates/settings/registration_limited.html:55
|
||||
msgid "Question:"
|
||||
msgstr "Pregunta:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:73
|
||||
#: bookwyrm/templates/settings/registration.html:90
|
||||
#: bookwyrm/templates/settings/registration_limited.html:67
|
||||
msgid "Registration closed text:"
|
||||
msgstr "Texto de registración cerrada:"
|
||||
|
@ -5400,7 +5448,7 @@ msgid "Remove theme"
|
|||
msgstr "Quitar tema"
|
||||
|
||||
#: bookwyrm/templates/settings/users/delete_user_form.html:5
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:38
|
||||
msgid "Permanently delete user"
|
||||
msgstr "Eliminar usuario permanentemente"
|
||||
|
||||
|
@ -5522,14 +5570,18 @@ msgid "User Actions"
|
|||
msgstr "Acciones de usuario"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:21
|
||||
msgid "Activate user"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:27
|
||||
msgid "Suspend user"
|
||||
msgstr "Suspender usuario"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:26
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
msgid "Un-suspend user"
|
||||
msgstr "Des-suspender usuario"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:48
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:54
|
||||
msgid "Access level:"
|
||||
msgstr "Nivel de acceso:"
|
||||
|
||||
|
@ -6379,33 +6431,53 @@ msgstr "%(username)s no sigue a nadie"
|
|||
msgid "No reviews or comments yet!"
|
||||
msgstr "¡Aún no hay reseñas o comentarios!"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:16
|
||||
#: bookwyrm/templates/user/user.html:20
|
||||
msgid "Edit profile"
|
||||
msgstr "Editar perfil"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templates/user/user.html:42
|
||||
#, python-format
|
||||
msgid "View all %(size)s"
|
||||
msgstr "Ver los %(size)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:52
|
||||
#: bookwyrm/templates/user/user.html:56
|
||||
msgid "View all books"
|
||||
msgstr "Ver todos los libros"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:59
|
||||
#: bookwyrm/templates/user/user.html:63
|
||||
#, python-format
|
||||
msgid "%(current_year)s Reading Goal"
|
||||
msgstr "Objetivo de Lectura de %(current_year)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:66
|
||||
#: bookwyrm/templates/user/user.html:70
|
||||
msgid "User Activity"
|
||||
msgstr "Actividad del usuario"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:71
|
||||
#: bookwyrm/templates/user/user.html:76
|
||||
msgid "Show RSS Options"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:82
|
||||
msgid "RSS feed"
|
||||
msgstr "Feed RSS"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:83
|
||||
#: bookwyrm/templates/user/user.html:98
|
||||
msgid "Complete feed"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:103
|
||||
msgid "Reviews only"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:108
|
||||
msgid "Quotes only"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:113
|
||||
msgid "Comments only"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:129
|
||||
msgid "No activities yet!"
|
||||
msgstr "¡Aún no actividades!"
|
||||
|
||||
|
@ -6449,16 +6521,43 @@ msgstr "Cerrar sesión"
|
|||
msgid "File exceeds maximum size: 10MB"
|
||||
msgstr "Archivo excede el tamaño máximo: 10MB"
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:14
|
||||
#, python-format
|
||||
msgid "Book List: %(name)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:22
|
||||
#, python-format
|
||||
msgid "%(num)d book - by %(user)s"
|
||||
msgid_plural "%(num)d books - by %(user)s"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: bookwyrm/templatetags/utilities.py:39
|
||||
#, python-format
|
||||
msgid "%(title)s: %(subtitle)s"
|
||||
msgstr "%(title)s: %(subtitle)s"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:34
|
||||
#: bookwyrm/views/rss_feed.py:35
|
||||
#, python-brace-format
|
||||
msgid "Status updates from {obj.display_name}"
|
||||
msgstr "Actualizaciones de status de {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:72
|
||||
#, python-brace-format
|
||||
msgid "Reviews from {obj.display_name}"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:110
|
||||
#, python-brace-format
|
||||
msgid "Quotes from {obj.display_name}"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:148
|
||||
#, python-brace-format
|
||||
msgid "Comments from {obj.display_name}"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/views/updates.py:45
|
||||
#, python-format
|
||||
msgid "Load %(count)d unread status"
|
||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-11 22:46+0000\n"
|
||||
"PO-Revision-Date: 2023-01-12 17:09\n"
|
||||
"POT-Creation-Date: 2023-01-30 08:21+0000\n"
|
||||
"PO-Revision-Date: 2023-01-30 17:35\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Finnish\n"
|
||||
"Language: fi\n"
|
||||
|
@ -256,14 +256,14 @@ msgstr "Seuraajat"
|
|||
msgid "Private"
|
||||
msgstr "Yksityinen"
|
||||
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:157
|
||||
#: bookwyrm/templates/settings/imports/imports.html:67
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:168
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/settings/users/user_admin.html:81
|
||||
#: bookwyrm/templates/settings/users/user_info.html:28
|
||||
msgid "Active"
|
||||
msgstr "Aktiivinen"
|
||||
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:155
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:166
|
||||
msgid "Complete"
|
||||
msgstr "Valmis"
|
||||
|
||||
|
@ -316,19 +316,19 @@ msgstr "Lainaukset"
|
|||
msgid "Everything else"
|
||||
msgstr "Muut"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home Timeline"
|
||||
msgstr "Oma aikajana"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home"
|
||||
msgstr "Etusivu"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
msgid "Books Timeline"
|
||||
msgstr "Kirjavirta"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:101
|
||||
#: bookwyrm/templates/search/layout.html:22
|
||||
#: bookwyrm/templates/search/layout.html:43
|
||||
|
@ -336,75 +336,75 @@ msgstr "Kirjavirta"
|
|||
msgid "Books"
|
||||
msgstr "Kirjat"
|
||||
|
||||
#: bookwyrm/settings.py:287
|
||||
#: bookwyrm/settings.py:290
|
||||
msgid "English"
|
||||
msgstr "English (englanti)"
|
||||
|
||||
#: bookwyrm/settings.py:288
|
||||
#: bookwyrm/settings.py:291
|
||||
msgid "Català (Catalan)"
|
||||
msgstr "Català (katalaani)"
|
||||
|
||||
#: bookwyrm/settings.py:289
|
||||
#: bookwyrm/settings.py:292
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (saksa)"
|
||||
|
||||
#: bookwyrm/settings.py:290
|
||||
#: bookwyrm/settings.py:293
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (espanja)"
|
||||
|
||||
#: bookwyrm/settings.py:291
|
||||
#: bookwyrm/settings.py:294
|
||||
msgid "Euskara (Basque)"
|
||||
msgstr "Euskara (baski)"
|
||||
|
||||
#: bookwyrm/settings.py:292
|
||||
#: bookwyrm/settings.py:295
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (galego)"
|
||||
|
||||
#: bookwyrm/settings.py:293
|
||||
#: bookwyrm/settings.py:296
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (italia)"
|
||||
|
||||
#: bookwyrm/settings.py:294
|
||||
#: bookwyrm/settings.py:297
|
||||
msgid "Suomi (Finnish)"
|
||||
msgstr "suomi"
|
||||
|
||||
#: bookwyrm/settings.py:295
|
||||
#: bookwyrm/settings.py:298
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (ranska)"
|
||||
|
||||
#: bookwyrm/settings.py:296
|
||||
#: bookwyrm/settings.py:299
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (liettua)"
|
||||
|
||||
#: bookwyrm/settings.py:297
|
||||
#: bookwyrm/settings.py:300
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (norja)"
|
||||
|
||||
#: bookwyrm/settings.py:298
|
||||
#: bookwyrm/settings.py:301
|
||||
msgid "Polski (Polish)"
|
||||
msgstr "Polski (puola)"
|
||||
|
||||
#: bookwyrm/settings.py:299
|
||||
#: bookwyrm/settings.py:302
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (brasilianportugali)"
|
||||
|
||||
#: bookwyrm/settings.py:300
|
||||
#: bookwyrm/settings.py:303
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (portugali)"
|
||||
|
||||
#: bookwyrm/settings.py:301
|
||||
#: bookwyrm/settings.py:304
|
||||
msgid "Română (Romanian)"
|
||||
msgstr "Română (romania)"
|
||||
|
||||
#: bookwyrm/settings.py:302
|
||||
#: bookwyrm/settings.py:305
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (ruotsi)"
|
||||
|
||||
#: bookwyrm/settings.py:303
|
||||
#: bookwyrm/settings.py:306
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (yksinkertaistettu kiina)"
|
||||
|
||||
#: bookwyrm/settings.py:304
|
||||
#: bookwyrm/settings.py:307
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (perinteinen kiina)"
|
||||
|
||||
|
@ -847,10 +847,10 @@ msgstr "ISNI:"
|
|||
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
|
||||
#: bookwyrm/templates/settings/federation/edit_instance.html:98
|
||||
#: bookwyrm/templates/settings/federation/instance.html:105
|
||||
#: bookwyrm/templates/settings/registration.html:79
|
||||
#: bookwyrm/templates/settings/registration.html:96
|
||||
#: bookwyrm/templates/settings/registration_limited.html:76
|
||||
#: bookwyrm/templates/settings/site.html:144
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:69
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:75
|
||||
#: bookwyrm/templates/shelf/form.html:25
|
||||
#: bookwyrm/templates/snippets/reading_modals/layout.html:18
|
||||
msgid "Save"
|
||||
|
@ -1160,7 +1160,7 @@ msgstr "Uusi teos"
|
|||
#: bookwyrm/templates/guided_tour/user_profile.html:89
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:112
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:135
|
||||
#: bookwyrm/templates/user_menu.html:18
|
||||
#: bookwyrm/templates/user/user.html:87 bookwyrm/templates/user_menu.html:18
|
||||
msgid "Back"
|
||||
msgstr "Takaisin"
|
||||
|
||||
|
@ -1372,7 +1372,7 @@ msgid "Domain"
|
|||
msgstr "Verkkotunnus"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:36
|
||||
#: bookwyrm/templates/import/import.html:122
|
||||
#: bookwyrm/templates/import/import.html:133
|
||||
#: bookwyrm/templates/import/import_status.html:134
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:37
|
||||
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:48
|
||||
|
@ -1385,7 +1385,7 @@ msgstr "Tila"
|
|||
#: bookwyrm/templates/book/file_links/edit_links.html:37
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:41
|
||||
#: bookwyrm/templates/settings/federation/instance.html:112
|
||||
#: bookwyrm/templates/settings/imports/imports.html:110
|
||||
#: bookwyrm/templates/settings/imports/imports.html:141
|
||||
#: bookwyrm/templates/settings/reports/report_links_table.html:6
|
||||
#: bookwyrm/templates/settings/themes.html:99
|
||||
msgid "Actions"
|
||||
|
@ -1905,13 +1905,13 @@ msgid "Add to your books"
|
|||
msgstr "Lisää omiin kirjoihin"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:10
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:33
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:37
|
||||
#: bookwyrm/templatetags/shelf_tags.py:48
|
||||
msgid "To Read"
|
||||
msgstr "Lukujono"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:11
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:34
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templatetags/shelf_tags.py:50
|
||||
msgid "Currently Reading"
|
||||
msgstr "Luettavana"
|
||||
|
@ -1921,12 +1921,12 @@ msgstr "Luettavana"
|
|||
#: bookwyrm/templates/snippets/shelf_selector.html:46
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12
|
||||
#: bookwyrm/templates/user/user.html:35 bookwyrm/templatetags/shelf_tags.py:52
|
||||
#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:52
|
||||
msgid "Read"
|
||||
msgstr "Luettu"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:13
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:36
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:40
|
||||
msgid "Stopped Reading"
|
||||
msgstr "Jäi kesken"
|
||||
|
||||
|
@ -2642,7 +2642,7 @@ msgid "This is your user profile. All your latest activities will be listed here
|
|||
msgstr "Tämä on käyttäjäprofiilisi. Tässä näytetään viimeaikainen toimintasi. Muut BookWyrm-käyttäjät voivat myös katsella tätä sivua, mutta näkyvyysasetuksistasi riippuu, mitä heille näytetään."
|
||||
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:11
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:14
|
||||
msgid "User Profile"
|
||||
msgstr "Käyttäjäprofiili"
|
||||
|
||||
|
@ -2689,85 +2689,100 @@ msgstr "Tuo kirjoja"
|
|||
msgid "Not a valid CSV file"
|
||||
msgstr "Epäkelpo CSV-tiedosto"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:22
|
||||
#: bookwyrm/templates/import/import.html:20
|
||||
#, python-format
|
||||
msgid "Currently you are allowed to import %(import_size_limit)s books every %(import_limit_reset)s days."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:21
|
||||
#, python-format
|
||||
msgid "You have %(allowed_imports)s left."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:28
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(hours)s hours."
|
||||
msgstr "Viime aikoina tuonteihin on kulunut keskimäärin %(hours)s tuntia."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:26
|
||||
#: bookwyrm/templates/import/import.html:32
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(minutes)s minutes."
|
||||
msgstr "Viime aikoina tuonteihin on kulunut keskimäärin %(minutes)s minuuttia."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:41
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
msgid "Data source:"
|
||||
msgstr "Tietolähde:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
msgid "Goodreads (CSV)"
|
||||
msgstr "Goodreads (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:50
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
msgid "Storygraph (CSV)"
|
||||
msgstr "Storygraph (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
msgid "LibraryThing (TSV)"
|
||||
msgstr "LibraryThing (TSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
#: bookwyrm/templates/import/import.html:62
|
||||
msgid "OpenLibrary (CSV)"
|
||||
msgstr "OpenLibrary (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
msgid "Calibre (CSV)"
|
||||
msgstr "Calibre (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
#: bookwyrm/templates/import/import.html:71
|
||||
msgid "You can download your Goodreads data from the <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Import/Export page</a> of your Goodreads account."
|
||||
msgstr "Goodreads-tiedot voi ladata Goodreads-käyttäjätilin <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Import/Export-sivun</a> kautta."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:74
|
||||
#: bookwyrm/templates/import/import.html:80
|
||||
msgid "Data file:"
|
||||
msgstr "Datatiedosto:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:82
|
||||
#: bookwyrm/templates/import/import.html:88
|
||||
msgid "Include reviews"
|
||||
msgstr "Myös arviot"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:87
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
msgid "Privacy setting for imported reviews:"
|
||||
msgstr "Tuotavien arvioiden yksityisyysvalinta:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
#: bookwyrm/templates/import/import.html:100
|
||||
#: bookwyrm/templates/import/import.html:102
|
||||
#: bookwyrm/templates/preferences/layout.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:78
|
||||
msgid "Import"
|
||||
msgstr "Tuo"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:101
|
||||
#: bookwyrm/templates/import/import.html:103
|
||||
msgid "You've reached the import limit."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:112
|
||||
msgid "Imports are temporarily disabled; thank you for your patience."
|
||||
msgstr "Tuonti on väliaikaisesti pois käytöstä; palaa asiaan myöhemmin."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:108
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
msgid "Recent Imports"
|
||||
msgstr "Viimeksi tuotu"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:113
|
||||
#: bookwyrm/templates/settings/imports/imports.html:89
|
||||
#: bookwyrm/templates/import/import.html:124
|
||||
#: bookwyrm/templates/settings/imports/imports.html:120
|
||||
msgid "Date Created"
|
||||
msgstr "Luontipäivä"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:116
|
||||
#: bookwyrm/templates/import/import.html:127
|
||||
msgid "Last Updated"
|
||||
msgstr "Päivitetty viimeksi"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/import/import.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:129
|
||||
msgid "Items"
|
||||
msgstr "Nimikkeitä"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:128
|
||||
#: bookwyrm/templates/import/import.html:139
|
||||
msgid "No recent imports"
|
||||
msgstr "Ei viimeaikaisia tuonteja"
|
||||
|
||||
|
@ -2783,6 +2798,7 @@ msgid "Retry Status"
|
|||
msgstr "Uudelleenyrityksen tila"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:22
|
||||
#: bookwyrm/templates/settings/celery.html:36
|
||||
#: bookwyrm/templates/settings/imports/imports.html:6
|
||||
#: bookwyrm/templates/settings/imports/imports.html:9
|
||||
#: bookwyrm/templates/settings/layout.html:82
|
||||
|
@ -2802,7 +2818,7 @@ msgid "Refresh"
|
|||
msgstr "Päivitä"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:72
|
||||
#: bookwyrm/templates/settings/imports/imports.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:161
|
||||
msgid "Stop import"
|
||||
msgstr "Keskeytä tuonti"
|
||||
|
||||
|
@ -2920,7 +2936,7 @@ msgid "Reject"
|
|||
msgstr "Hylkää"
|
||||
|
||||
#: bookwyrm/templates/import/troubleshoot.html:7
|
||||
#: bookwyrm/templates/settings/imports/imports.html:107
|
||||
#: bookwyrm/templates/settings/imports/imports.html:138
|
||||
msgid "Failed items"
|
||||
msgstr "Epäonnistuneita nimikkeitä"
|
||||
|
||||
|
@ -3171,7 +3187,7 @@ msgid "Delete this list?"
|
|||
msgstr "Poistetaanko lista?"
|
||||
|
||||
#: bookwyrm/templates/lists/edit_form.html:5
|
||||
#: bookwyrm/templates/lists/layout.html:18
|
||||
#: bookwyrm/templates/lists/layout.html:23
|
||||
msgid "Edit List"
|
||||
msgstr "Muokkaa listaa"
|
||||
|
||||
|
@ -4429,48 +4445,48 @@ msgstr "Keskitason prioriteetti"
|
|||
msgid "High priority"
|
||||
msgstr "Korkea prioriteetti"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:40
|
||||
#: bookwyrm/templates/settings/celery.html:46
|
||||
msgid "Could not connect to Redis broker"
|
||||
msgstr "Redis-välityspalveluun ei saada yhteyttä"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:48
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
msgid "Active Tasks"
|
||||
msgstr "Aktiiviset tehtävät"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
#: bookwyrm/templates/settings/celery.html:59
|
||||
#: bookwyrm/templates/settings/imports/imports.html:113
|
||||
msgid "ID"
|
||||
msgstr "Tunniste"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
#: bookwyrm/templates/settings/celery.html:60
|
||||
msgid "Task name"
|
||||
msgstr "Tehtävän nimi"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:55
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
msgid "Run time"
|
||||
msgstr "Käyttöaika"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:56
|
||||
#: bookwyrm/templates/settings/celery.html:62
|
||||
msgid "Priority"
|
||||
msgstr "Prioriteetti"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
#: bookwyrm/templates/settings/celery.html:67
|
||||
msgid "No active tasks"
|
||||
msgstr "Ei aktiivisia tehtäviä"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:79
|
||||
#: bookwyrm/templates/settings/celery.html:85
|
||||
msgid "Workers"
|
||||
msgstr "Suorittajia"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:84
|
||||
#: bookwyrm/templates/settings/celery.html:90
|
||||
msgid "Uptime:"
|
||||
msgstr "Käynnissäoloaika:"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:94
|
||||
#: bookwyrm/templates/settings/celery.html:100
|
||||
msgid "Could not connect to Celery"
|
||||
msgstr "Celeryyn ei saada yhteyttä"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:101
|
||||
#: bookwyrm/templates/settings/celery.html:107
|
||||
msgid "Errors"
|
||||
msgstr "Virheitä"
|
||||
|
||||
|
@ -4850,27 +4866,55 @@ msgstr "Käyttäjät eivät voi aloittaa uusia tuonteja"
|
|||
msgid "Enable imports"
|
||||
msgstr "Ota tuonti käyttöön"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:71
|
||||
#: bookwyrm/templates/settings/imports/imports.html:63
|
||||
msgid "Limit the amount of imports"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:74
|
||||
msgid "Some users might try to import a large number of books, which you want to limit."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:75
|
||||
msgid "Set the value to 0 to not enforce any limit."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:78
|
||||
msgid "Set import limit to"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:80
|
||||
msgid "books every"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
msgid "days."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:86
|
||||
msgid "Set limit"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:102
|
||||
msgid "Completed"
|
||||
msgstr "Valmis"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:85
|
||||
#: bookwyrm/templates/settings/imports/imports.html:116
|
||||
msgid "User"
|
||||
msgstr "Käyttäjä"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:94
|
||||
#: bookwyrm/templates/settings/imports/imports.html:125
|
||||
msgid "Date Updated"
|
||||
msgstr "Päivitetty"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:101
|
||||
#: bookwyrm/templates/settings/imports/imports.html:132
|
||||
msgid "Pending items"
|
||||
msgstr "Odottavia nimikkeitä"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:104
|
||||
#: bookwyrm/templates/settings/imports/imports.html:135
|
||||
msgid "Successful items"
|
||||
msgstr "Onnistuneita nimikkeitä"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:139
|
||||
#: bookwyrm/templates/settings/imports/imports.html:170
|
||||
msgid "No matching imports found."
|
||||
msgstr "Ei ehtoihin sopivia tuonteja."
|
||||
|
||||
|
@ -5131,34 +5175,38 @@ msgstr "Asetuksia ei voi tallentaa"
|
|||
msgid "Allow registration"
|
||||
msgstr "Salli käyttäjätilien avaaminen"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:44
|
||||
#: bookwyrm/templates/settings/registration.html:43
|
||||
msgid "Default access level:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:61
|
||||
msgid "Require users to confirm email address"
|
||||
msgstr "Vaadi käyttäjiä vahvistamaan sähköpostiosoitteensa"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:46
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
msgid "(Recommended if registration is open)"
|
||||
msgstr "(Suositellaan, jos käyttäjätilejä voi avata vapaasti)"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:51
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
msgid "Allow invite requests"
|
||||
msgstr "Salli kutsulinkin pyytäminen"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:55
|
||||
#: bookwyrm/templates/settings/registration.html:72
|
||||
#: bookwyrm/templates/settings/registration_limited.html:42
|
||||
msgid "Invite request text:"
|
||||
msgstr "Kutsupyyntökehote ja -ohje:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
#: bookwyrm/templates/settings/registration.html:80
|
||||
#: bookwyrm/templates/settings/registration_limited.html:50
|
||||
msgid "Set a question for invite requests"
|
||||
msgstr "Kutsupyyntöjen lisätietokysymys"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
#: bookwyrm/templates/settings/registration.html:85
|
||||
#: bookwyrm/templates/settings/registration_limited.html:55
|
||||
msgid "Question:"
|
||||
msgstr "Kysymys:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:73
|
||||
#: bookwyrm/templates/settings/registration.html:90
|
||||
#: bookwyrm/templates/settings/registration_limited.html:67
|
||||
msgid "Registration closed text:"
|
||||
msgstr "Teksti, joka näytetään, kun käyttäjätilin avaaminen ei ole mahdollista:"
|
||||
|
@ -5400,7 +5448,7 @@ msgid "Remove theme"
|
|||
msgstr "Poista teema"
|
||||
|
||||
#: bookwyrm/templates/settings/users/delete_user_form.html:5
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:38
|
||||
msgid "Permanently delete user"
|
||||
msgstr "Poista käyttäjä pysyvästi"
|
||||
|
||||
|
@ -5522,14 +5570,18 @@ msgid "User Actions"
|
|||
msgstr "Toiminnot"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:21
|
||||
msgid "Activate user"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:27
|
||||
msgid "Suspend user"
|
||||
msgstr "Hyllytä käyttäjä"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:26
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
msgid "Un-suspend user"
|
||||
msgstr "Peru hyllytys"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:48
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:54
|
||||
msgid "Access level:"
|
||||
msgstr "Käyttöoikeustaso:"
|
||||
|
||||
|
@ -6379,33 +6431,53 @@ msgstr "%(username)s ei seuraa muita käyttäjiä"
|
|||
msgid "No reviews or comments yet!"
|
||||
msgstr "Ei arvioita tai kommentteja."
|
||||
|
||||
#: bookwyrm/templates/user/user.html:16
|
||||
#: bookwyrm/templates/user/user.html:20
|
||||
msgid "Edit profile"
|
||||
msgstr "Muokkaa profiilia"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templates/user/user.html:42
|
||||
#, python-format
|
||||
msgid "View all %(size)s"
|
||||
msgstr "Näytä kaikki %(size)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:52
|
||||
#: bookwyrm/templates/user/user.html:56
|
||||
msgid "View all books"
|
||||
msgstr "Näytä kaikki kirjat"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:59
|
||||
#: bookwyrm/templates/user/user.html:63
|
||||
#, python-format
|
||||
msgid "%(current_year)s Reading Goal"
|
||||
msgstr "Lukutavoite vuodelle %(current_year)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:66
|
||||
#: bookwyrm/templates/user/user.html:70
|
||||
msgid "User Activity"
|
||||
msgstr "Käyttäjän toiminta"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:71
|
||||
#: bookwyrm/templates/user/user.html:76
|
||||
msgid "Show RSS Options"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:82
|
||||
msgid "RSS feed"
|
||||
msgstr "RSS-syöte"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:83
|
||||
#: bookwyrm/templates/user/user.html:98
|
||||
msgid "Complete feed"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:103
|
||||
msgid "Reviews only"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:108
|
||||
msgid "Quotes only"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:113
|
||||
msgid "Comments only"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:129
|
||||
msgid "No activities yet!"
|
||||
msgstr "Ei toimintaa!"
|
||||
|
||||
|
@ -6449,16 +6521,43 @@ msgstr "Kirjaudu ulos"
|
|||
msgid "File exceeds maximum size: 10MB"
|
||||
msgstr "Tiedosto on enimmäiskokoa 10 Mt suurempi"
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:14
|
||||
#, python-format
|
||||
msgid "Book List: %(name)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:22
|
||||
#, python-format
|
||||
msgid "%(num)d book - by %(user)s"
|
||||
msgid_plural "%(num)d books - by %(user)s"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: bookwyrm/templatetags/utilities.py:39
|
||||
#, python-format
|
||||
msgid "%(title)s: %(subtitle)s"
|
||||
msgstr "%(title)s: %(subtitle)s"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:34
|
||||
#: bookwyrm/views/rss_feed.py:35
|
||||
#, python-brace-format
|
||||
msgid "Status updates from {obj.display_name}"
|
||||
msgstr "{obj.display_name} — tilapäivitykset"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:72
|
||||
#, python-brace-format
|
||||
msgid "Reviews from {obj.display_name}"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:110
|
||||
#, python-brace-format
|
||||
msgid "Quotes from {obj.display_name}"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:148
|
||||
#, python-brace-format
|
||||
msgid "Comments from {obj.display_name}"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/views/updates.py:45
|
||||
#, python-format
|
||||
msgid "Load %(count)d unread status"
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-11 22:46+0000\n"
|
||||
"PO-Revision-Date: 2023-01-13 18:17\n"
|
||||
"POT-Creation-Date: 2023-01-30 08:21+0000\n"
|
||||
"PO-Revision-Date: 2023-02-02 14:57\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: French\n"
|
||||
"Language: fr\n"
|
||||
|
@ -256,14 +256,14 @@ msgstr "Abonné(e)s"
|
|||
msgid "Private"
|
||||
msgstr "Privé"
|
||||
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:157
|
||||
#: bookwyrm/templates/settings/imports/imports.html:67
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:168
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/settings/users/user_admin.html:81
|
||||
#: bookwyrm/templates/settings/users/user_info.html:28
|
||||
msgid "Active"
|
||||
msgstr "Actif"
|
||||
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:155
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:166
|
||||
msgid "Complete"
|
||||
msgstr "Terminé"
|
||||
|
||||
|
@ -316,19 +316,19 @@ msgstr "Citations"
|
|||
msgid "Everything else"
|
||||
msgstr "Tout le reste"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home Timeline"
|
||||
msgstr "Mon fil d’actualité"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home"
|
||||
msgstr "Accueil"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
msgid "Books Timeline"
|
||||
msgstr "Actualité de mes livres"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:101
|
||||
#: bookwyrm/templates/search/layout.html:22
|
||||
#: bookwyrm/templates/search/layout.html:43
|
||||
|
@ -336,75 +336,75 @@ msgstr "Actualité de mes livres"
|
|||
msgid "Books"
|
||||
msgstr "Livres"
|
||||
|
||||
#: bookwyrm/settings.py:287
|
||||
#: bookwyrm/settings.py:290
|
||||
msgid "English"
|
||||
msgstr "English"
|
||||
|
||||
#: bookwyrm/settings.py:288
|
||||
#: bookwyrm/settings.py:291
|
||||
msgid "Català (Catalan)"
|
||||
msgstr "Català (Catalan)"
|
||||
|
||||
#: bookwyrm/settings.py:289
|
||||
#: bookwyrm/settings.py:292
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch"
|
||||
|
||||
#: bookwyrm/settings.py:290
|
||||
#: bookwyrm/settings.py:293
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español"
|
||||
|
||||
#: bookwyrm/settings.py:291
|
||||
#: bookwyrm/settings.py:294
|
||||
msgid "Euskara (Basque)"
|
||||
msgstr "Euskara (Basque)"
|
||||
|
||||
#: bookwyrm/settings.py:292
|
||||
#: bookwyrm/settings.py:295
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (Galicien)"
|
||||
|
||||
#: bookwyrm/settings.py:293
|
||||
#: bookwyrm/settings.py:296
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (Italien)"
|
||||
|
||||
#: bookwyrm/settings.py:294
|
||||
#: bookwyrm/settings.py:297
|
||||
msgid "Suomi (Finnish)"
|
||||
msgstr "Suomi (Finnois)"
|
||||
|
||||
#: bookwyrm/settings.py:295
|
||||
#: bookwyrm/settings.py:298
|
||||
msgid "Français (French)"
|
||||
msgstr "Français"
|
||||
|
||||
#: bookwyrm/settings.py:296
|
||||
#: bookwyrm/settings.py:299
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Lituanien)"
|
||||
|
||||
#: bookwyrm/settings.py:297
|
||||
#: bookwyrm/settings.py:300
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (Norvégien)"
|
||||
|
||||
#: bookwyrm/settings.py:298
|
||||
#: bookwyrm/settings.py:301
|
||||
msgid "Polski (Polish)"
|
||||
msgstr "Polski (Polonais)"
|
||||
|
||||
#: bookwyrm/settings.py:299
|
||||
#: bookwyrm/settings.py:302
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (Portugais brésilien)"
|
||||
|
||||
#: bookwyrm/settings.py:300
|
||||
#: bookwyrm/settings.py:303
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Portugais européen)"
|
||||
|
||||
#: bookwyrm/settings.py:301
|
||||
#: bookwyrm/settings.py:304
|
||||
msgid "Română (Romanian)"
|
||||
msgstr "Română (Roumain)"
|
||||
|
||||
#: bookwyrm/settings.py:302
|
||||
#: bookwyrm/settings.py:305
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Suédois)"
|
||||
|
||||
#: bookwyrm/settings.py:303
|
||||
#: bookwyrm/settings.py:306
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简化字"
|
||||
|
||||
#: bookwyrm/settings.py:304
|
||||
#: bookwyrm/settings.py:307
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (chinois traditionnel)"
|
||||
|
||||
|
@ -610,8 +610,8 @@ msgstr "Ce qui fait en moyenne %(pages)s pages par livre."
|
|||
#, python-format
|
||||
msgid "(No page data was available for %(no_page_number)s book)"
|
||||
msgid_plural "(No page data was available for %(no_page_number)s books)"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "(Le nombre de pages n'était pas renseigné pour %(no_page_number)s livre)"
|
||||
msgstr[1] "(Le nombre de pages n'était pas renseigné pour %(no_page_number)s livres)"
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:150
|
||||
msgid "Their shortest read this year…"
|
||||
|
@ -847,10 +847,10 @@ msgstr "ISNI :"
|
|||
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
|
||||
#: bookwyrm/templates/settings/federation/edit_instance.html:98
|
||||
#: bookwyrm/templates/settings/federation/instance.html:105
|
||||
#: bookwyrm/templates/settings/registration.html:79
|
||||
#: bookwyrm/templates/settings/registration.html:96
|
||||
#: bookwyrm/templates/settings/registration_limited.html:76
|
||||
#: bookwyrm/templates/settings/site.html:144
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:69
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:75
|
||||
#: bookwyrm/templates/shelf/form.html:25
|
||||
#: bookwyrm/templates/snippets/reading_modals/layout.html:18
|
||||
msgid "Save"
|
||||
|
@ -1160,7 +1160,7 @@ msgstr "Il s’agit d’un nouvel ouvrage."
|
|||
#: bookwyrm/templates/guided_tour/user_profile.html:89
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:112
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:135
|
||||
#: bookwyrm/templates/user_menu.html:18
|
||||
#: bookwyrm/templates/user/user.html:87 bookwyrm/templates/user_menu.html:18
|
||||
msgid "Back"
|
||||
msgstr "Retour"
|
||||
|
||||
|
@ -1372,7 +1372,7 @@ msgid "Domain"
|
|||
msgstr "Domaine"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:36
|
||||
#: bookwyrm/templates/import/import.html:122
|
||||
#: bookwyrm/templates/import/import.html:133
|
||||
#: bookwyrm/templates/import/import_status.html:134
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:37
|
||||
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:48
|
||||
|
@ -1385,7 +1385,7 @@ msgstr "Statut"
|
|||
#: bookwyrm/templates/book/file_links/edit_links.html:37
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:41
|
||||
#: bookwyrm/templates/settings/federation/instance.html:112
|
||||
#: bookwyrm/templates/settings/imports/imports.html:110
|
||||
#: bookwyrm/templates/settings/imports/imports.html:141
|
||||
#: bookwyrm/templates/settings/reports/report_links_table.html:6
|
||||
#: bookwyrm/templates/settings/themes.html:99
|
||||
msgid "Actions"
|
||||
|
@ -1905,13 +1905,13 @@ msgid "Add to your books"
|
|||
msgstr "Ajouter à vos livres"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:10
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:33
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:37
|
||||
#: bookwyrm/templatetags/shelf_tags.py:48
|
||||
msgid "To Read"
|
||||
msgstr "À lire"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:11
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:34
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templatetags/shelf_tags.py:50
|
||||
msgid "Currently Reading"
|
||||
msgstr "Lectures en cours"
|
||||
|
@ -1921,12 +1921,12 @@ msgstr "Lectures en cours"
|
|||
#: bookwyrm/templates/snippets/shelf_selector.html:46
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12
|
||||
#: bookwyrm/templates/user/user.html:35 bookwyrm/templatetags/shelf_tags.py:52
|
||||
#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:52
|
||||
msgid "Read"
|
||||
msgstr "Lu"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:13
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:36
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:40
|
||||
msgid "Stopped Reading"
|
||||
msgstr "Lecture interrompue"
|
||||
|
||||
|
@ -2642,7 +2642,7 @@ msgid "This is your user profile. All your latest activities will be listed here
|
|||
msgstr "Voici votre page de profil. Toutes vos dernières activités seront listées ici. D'autres membres de Bookwyrm peuvent également voir des parties de cette page—ce qu’il leur est possible de voir dépend de vos paramètres de confidentialité."
|
||||
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:11
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:14
|
||||
msgid "User Profile"
|
||||
msgstr "Profil"
|
||||
|
||||
|
@ -2689,85 +2689,100 @@ msgstr "Importer des livres"
|
|||
msgid "Not a valid CSV file"
|
||||
msgstr "Fichier CSV non valide"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:22
|
||||
#: bookwyrm/templates/import/import.html:20
|
||||
#, python-format
|
||||
msgid "Currently you are allowed to import %(import_size_limit)s books every %(import_limit_reset)s days."
|
||||
msgstr "Vous êtes actuellement autorisé à importer %(import_size_limit)s livres tous les %(import_limit_reset)s jours."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:21
|
||||
#, python-format
|
||||
msgid "You have %(allowed_imports)s left."
|
||||
msgstr "Il vous en reste %(allowed_imports)s."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:28
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(hours)s hours."
|
||||
msgstr "En moyenne, les dernières importations ont pris %(hours)s heures."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:26
|
||||
#: bookwyrm/templates/import/import.html:32
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(minutes)s minutes."
|
||||
msgstr "En moyenne, les dernières importations ont pris %(minutes)s minutes."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:41
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
msgid "Data source:"
|
||||
msgstr "Source de données :"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
msgid "Goodreads (CSV)"
|
||||
msgstr "Goodreads (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:50
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
msgid "Storygraph (CSV)"
|
||||
msgstr "Storygraph (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
msgid "LibraryThing (TSV)"
|
||||
msgstr "LibraryThing (TSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
#: bookwyrm/templates/import/import.html:62
|
||||
msgid "OpenLibrary (CSV)"
|
||||
msgstr "OpenLibrary (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
msgid "Calibre (CSV)"
|
||||
msgstr "Calibre (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
#: bookwyrm/templates/import/import.html:71
|
||||
msgid "You can download your Goodreads data from the <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Import/Export page</a> of your Goodreads account."
|
||||
msgstr "Vous pouvez télécharger vos données Goodreads depuis la page <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Import/Export</a> de votre compte Goodreads."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:74
|
||||
#: bookwyrm/templates/import/import.html:80
|
||||
msgid "Data file:"
|
||||
msgstr "Fichier de données :"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:82
|
||||
#: bookwyrm/templates/import/import.html:88
|
||||
msgid "Include reviews"
|
||||
msgstr "Importer les critiques"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:87
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
msgid "Privacy setting for imported reviews:"
|
||||
msgstr "Confidentialité des critiques importées :"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
#: bookwyrm/templates/import/import.html:100
|
||||
#: bookwyrm/templates/import/import.html:102
|
||||
#: bookwyrm/templates/preferences/layout.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:78
|
||||
msgid "Import"
|
||||
msgstr "Importer"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:101
|
||||
#: bookwyrm/templates/import/import.html:103
|
||||
msgid "You've reached the import limit."
|
||||
msgstr "Vous avez atteint la limite d'imports."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:112
|
||||
msgid "Imports are temporarily disabled; thank you for your patience."
|
||||
msgstr "Les importations sont temporairement désactivées, merci pour votre patience."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:108
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
msgid "Recent Imports"
|
||||
msgstr "Importations récentes"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:113
|
||||
#: bookwyrm/templates/settings/imports/imports.html:89
|
||||
#: bookwyrm/templates/import/import.html:124
|
||||
#: bookwyrm/templates/settings/imports/imports.html:120
|
||||
msgid "Date Created"
|
||||
msgstr "Date de Création"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:116
|
||||
#: bookwyrm/templates/import/import.html:127
|
||||
msgid "Last Updated"
|
||||
msgstr "Dernière Mise à jour"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/import/import.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:129
|
||||
msgid "Items"
|
||||
msgstr "Éléments"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:128
|
||||
#: bookwyrm/templates/import/import.html:139
|
||||
msgid "No recent imports"
|
||||
msgstr "Aucune importation récente"
|
||||
|
||||
|
@ -2783,6 +2798,7 @@ msgid "Retry Status"
|
|||
msgstr "Statut de la nouvelle tentative"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:22
|
||||
#: bookwyrm/templates/settings/celery.html:36
|
||||
#: bookwyrm/templates/settings/imports/imports.html:6
|
||||
#: bookwyrm/templates/settings/imports/imports.html:9
|
||||
#: bookwyrm/templates/settings/layout.html:82
|
||||
|
@ -2802,7 +2818,7 @@ msgid "Refresh"
|
|||
msgstr "Actualiser"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:72
|
||||
#: bookwyrm/templates/settings/imports/imports.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:161
|
||||
msgid "Stop import"
|
||||
msgstr "Arrêter l'import"
|
||||
|
||||
|
@ -2920,7 +2936,7 @@ msgid "Reject"
|
|||
msgstr "Rejeter"
|
||||
|
||||
#: bookwyrm/templates/import/troubleshoot.html:7
|
||||
#: bookwyrm/templates/settings/imports/imports.html:107
|
||||
#: bookwyrm/templates/settings/imports/imports.html:138
|
||||
msgid "Failed items"
|
||||
msgstr "Éléments dont l'importation a échoué"
|
||||
|
||||
|
@ -3171,7 +3187,7 @@ msgid "Delete this list?"
|
|||
msgstr "Supprimer cette liste ?"
|
||||
|
||||
#: bookwyrm/templates/lists/edit_form.html:5
|
||||
#: bookwyrm/templates/lists/layout.html:18
|
||||
#: bookwyrm/templates/lists/layout.html:23
|
||||
msgid "Edit List"
|
||||
msgstr "Modifier la liste"
|
||||
|
||||
|
@ -4429,48 +4445,48 @@ msgstr "Priorité moyenne"
|
|||
msgid "High priority"
|
||||
msgstr "Priorité élevée"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:40
|
||||
#: bookwyrm/templates/settings/celery.html:46
|
||||
msgid "Could not connect to Redis broker"
|
||||
msgstr "Connexion au broker Redis impossible"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:48
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
msgid "Active Tasks"
|
||||
msgstr "Tâches actives"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
#: bookwyrm/templates/settings/celery.html:59
|
||||
#: bookwyrm/templates/settings/imports/imports.html:113
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
#: bookwyrm/templates/settings/celery.html:60
|
||||
msgid "Task name"
|
||||
msgstr "Nom de la tâche"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:55
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
msgid "Run time"
|
||||
msgstr "Durée"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:56
|
||||
#: bookwyrm/templates/settings/celery.html:62
|
||||
msgid "Priority"
|
||||
msgstr "Priorité"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
#: bookwyrm/templates/settings/celery.html:67
|
||||
msgid "No active tasks"
|
||||
msgstr "Aucune tâche active"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:79
|
||||
#: bookwyrm/templates/settings/celery.html:85
|
||||
msgid "Workers"
|
||||
msgstr "Workers"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:84
|
||||
#: bookwyrm/templates/settings/celery.html:90
|
||||
msgid "Uptime:"
|
||||
msgstr "Uptime :"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:94
|
||||
#: bookwyrm/templates/settings/celery.html:100
|
||||
msgid "Could not connect to Celery"
|
||||
msgstr "Impossible de se connecter à Celery"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:101
|
||||
#: bookwyrm/templates/settings/celery.html:107
|
||||
msgid "Errors"
|
||||
msgstr "Erreurs"
|
||||
|
||||
|
@ -4850,27 +4866,55 @@ msgstr "Les utilisateurs ne peuvent pas commencer de nouvelles importations"
|
|||
msgid "Enable imports"
|
||||
msgstr "Activer les importations"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:71
|
||||
#: bookwyrm/templates/settings/imports/imports.html:63
|
||||
msgid "Limit the amount of imports"
|
||||
msgstr "Limiter le nombre d'imports"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:74
|
||||
msgid "Some users might try to import a large number of books, which you want to limit."
|
||||
msgstr "Certains utilisateurs peuvent essayer d'importer un grand nombre de livres, ce que vous souhaitez limiter."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:75
|
||||
msgid "Set the value to 0 to not enforce any limit."
|
||||
msgstr "Mettez la valeur à 0 pour ne pas imposer de limiter."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:78
|
||||
msgid "Set import limit to"
|
||||
msgstr "Définir la limite d'import à"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:80
|
||||
msgid "books every"
|
||||
msgstr "livres tous les"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
msgid "days."
|
||||
msgstr "jours."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:86
|
||||
msgid "Set limit"
|
||||
msgstr "Définir la limite"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:102
|
||||
msgid "Completed"
|
||||
msgstr "Terminé"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:85
|
||||
#: bookwyrm/templates/settings/imports/imports.html:116
|
||||
msgid "User"
|
||||
msgstr "Utilisateur"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:94
|
||||
#: bookwyrm/templates/settings/imports/imports.html:125
|
||||
msgid "Date Updated"
|
||||
msgstr "Date de Mise à jour"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:101
|
||||
#: bookwyrm/templates/settings/imports/imports.html:132
|
||||
msgid "Pending items"
|
||||
msgstr "Éléments en attente"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:104
|
||||
#: bookwyrm/templates/settings/imports/imports.html:135
|
||||
msgid "Successful items"
|
||||
msgstr "Éléments réussis"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:139
|
||||
#: bookwyrm/templates/settings/imports/imports.html:170
|
||||
msgid "No matching imports found."
|
||||
msgstr "Aucun import correspondant trouvé."
|
||||
|
||||
|
@ -5131,34 +5175,38 @@ msgstr "Impossible d’enregistrer les paramètres"
|
|||
msgid "Allow registration"
|
||||
msgstr "Autoriser les inscriptions"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:44
|
||||
#: bookwyrm/templates/settings/registration.html:43
|
||||
msgid "Default access level:"
|
||||
msgstr "Niveau d'accès par défaut :"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:61
|
||||
msgid "Require users to confirm email address"
|
||||
msgstr "Demander aux utilisateurs et utilisatrices de confirmer leur adresse email"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:46
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
msgid "(Recommended if registration is open)"
|
||||
msgstr "(Recommandé si les inscriptions sont ouvertes)"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:51
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
msgid "Allow invite requests"
|
||||
msgstr "Autoriser les demandes d’invitation"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:55
|
||||
#: bookwyrm/templates/settings/registration.html:72
|
||||
#: bookwyrm/templates/settings/registration_limited.html:42
|
||||
msgid "Invite request text:"
|
||||
msgstr "Texte de la demande d'invitation :"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
#: bookwyrm/templates/settings/registration.html:80
|
||||
#: bookwyrm/templates/settings/registration_limited.html:50
|
||||
msgid "Set a question for invite requests"
|
||||
msgstr "Définir une question pour les demandes d’invitation"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
#: bookwyrm/templates/settings/registration.html:85
|
||||
#: bookwyrm/templates/settings/registration_limited.html:55
|
||||
msgid "Question:"
|
||||
msgstr "Question :"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:73
|
||||
#: bookwyrm/templates/settings/registration.html:90
|
||||
#: bookwyrm/templates/settings/registration_limited.html:67
|
||||
msgid "Registration closed text:"
|
||||
msgstr "Texte affiché lorsque les inscriptions sont closes :"
|
||||
|
@ -5400,7 +5448,7 @@ msgid "Remove theme"
|
|||
msgstr "Supprimer le thème"
|
||||
|
||||
#: bookwyrm/templates/settings/users/delete_user_form.html:5
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:38
|
||||
msgid "Permanently delete user"
|
||||
msgstr "Supprimer définitivement l'utilisateur"
|
||||
|
||||
|
@ -5522,14 +5570,18 @@ msgid "User Actions"
|
|||
msgstr "Actions de l'utilisateur"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:21
|
||||
msgid "Activate user"
|
||||
msgstr "Activer le compte"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:27
|
||||
msgid "Suspend user"
|
||||
msgstr "Suspendre le compte"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:26
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
msgid "Un-suspend user"
|
||||
msgstr "Rétablir le compte"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:48
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:54
|
||||
msgid "Access level:"
|
||||
msgstr "Niveau d’accès :"
|
||||
|
||||
|
@ -6379,33 +6431,53 @@ msgstr "%(username)s ne suit personne"
|
|||
msgid "No reviews or comments yet!"
|
||||
msgstr "Aucune critique ou commentaire pour le moment !"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:16
|
||||
#: bookwyrm/templates/user/user.html:20
|
||||
msgid "Edit profile"
|
||||
msgstr "Modifier le profil"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templates/user/user.html:42
|
||||
#, python-format
|
||||
msgid "View all %(size)s"
|
||||
msgstr "Voir les %(size)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:52
|
||||
#: bookwyrm/templates/user/user.html:56
|
||||
msgid "View all books"
|
||||
msgstr "Voir tous les livres"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:59
|
||||
#: bookwyrm/templates/user/user.html:63
|
||||
#, python-format
|
||||
msgid "%(current_year)s Reading Goal"
|
||||
msgstr "Défi lecture pour %(current_year)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:66
|
||||
#: bookwyrm/templates/user/user.html:70
|
||||
msgid "User Activity"
|
||||
msgstr "Activité du compte"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:71
|
||||
#: bookwyrm/templates/user/user.html:76
|
||||
msgid "Show RSS Options"
|
||||
msgstr "Afficher les options de flux RSS"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:82
|
||||
msgid "RSS feed"
|
||||
msgstr "Flux RSS"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:83
|
||||
#: bookwyrm/templates/user/user.html:98
|
||||
msgid "Complete feed"
|
||||
msgstr "Flux complet"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:103
|
||||
msgid "Reviews only"
|
||||
msgstr "Seulement les critiques"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:108
|
||||
msgid "Quotes only"
|
||||
msgstr "Seulement les citations"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:113
|
||||
msgid "Comments only"
|
||||
msgstr "Seulement les commentaires"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:129
|
||||
msgid "No activities yet!"
|
||||
msgstr "Aucune activité pour l’instant !"
|
||||
|
||||
|
@ -6449,16 +6521,43 @@ msgstr "Se déconnecter"
|
|||
msgid "File exceeds maximum size: 10MB"
|
||||
msgstr "Ce fichier dépasse la taille limite : 10 Mo"
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:14
|
||||
#, python-format
|
||||
msgid "Book List: %(name)s"
|
||||
msgstr "Liste de livres : %(name)s"
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:22
|
||||
#, python-format
|
||||
msgid "%(num)d book - by %(user)s"
|
||||
msgid_plural "%(num)d books - by %(user)s"
|
||||
msgstr[0] "%(num)d livre - par %(user)s"
|
||||
msgstr[1] "%(num)d livres - par %(user)s"
|
||||
|
||||
#: bookwyrm/templatetags/utilities.py:39
|
||||
#, python-format
|
||||
msgid "%(title)s: %(subtitle)s"
|
||||
msgstr "%(title)s (%(subtitle)s)"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:34
|
||||
#: bookwyrm/views/rss_feed.py:35
|
||||
#, python-brace-format
|
||||
msgid "Status updates from {obj.display_name}"
|
||||
msgstr "Mises à jour de statut de {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:72
|
||||
#, python-brace-format
|
||||
msgid "Reviews from {obj.display_name}"
|
||||
msgstr "Critiques de {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:110
|
||||
#, python-brace-format
|
||||
msgid "Quotes from {obj.display_name}"
|
||||
msgstr "Citations de {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:148
|
||||
#, python-brace-format
|
||||
msgid "Comments from {obj.display_name}"
|
||||
msgstr "Commentaires de {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/updates.py:45
|
||||
#, python-format
|
||||
msgid "Load %(count)d unread status"
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-11 22:46+0000\n"
|
||||
"PO-Revision-Date: 2023-01-12 06:35\n"
|
||||
"POT-Creation-Date: 2023-01-30 08:21+0000\n"
|
||||
"PO-Revision-Date: 2023-03-09 14:35\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Galician\n"
|
||||
"Language: gl\n"
|
||||
|
@ -218,11 +218,11 @@ msgstr "%(value)s non é un nome de usuaria válido"
|
|||
#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
|
||||
#: bookwyrm/templates/ostatus/error.html:29
|
||||
msgid "username"
|
||||
msgstr "nome de usuaria"
|
||||
msgstr "identificador"
|
||||
|
||||
#: bookwyrm/models/fields.py:187
|
||||
msgid "A user with that username already exists."
|
||||
msgstr "Xa existe unha usuaria con ese nome."
|
||||
msgstr "Xa existe unha usuaria con ese identificador."
|
||||
|
||||
#: bookwyrm/models/fields.py:206
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:3
|
||||
|
@ -256,14 +256,14 @@ msgstr "Seguidoras"
|
|||
msgid "Private"
|
||||
msgstr "Privado"
|
||||
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:157
|
||||
#: bookwyrm/templates/settings/imports/imports.html:67
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:168
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/settings/users/user_admin.html:81
|
||||
#: bookwyrm/templates/settings/users/user_info.html:28
|
||||
msgid "Active"
|
||||
msgstr "Activa"
|
||||
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:155
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:166
|
||||
msgid "Complete"
|
||||
msgstr "Completa"
|
||||
|
||||
|
@ -316,19 +316,19 @@ msgstr "Citas"
|
|||
msgid "Everything else"
|
||||
msgstr "As outras cousas"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home Timeline"
|
||||
msgstr "Cronoloxía de Inicio"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home"
|
||||
msgstr "Inicio"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
msgid "Books Timeline"
|
||||
msgstr "Cronoloxía de libros"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:101
|
||||
#: bookwyrm/templates/search/layout.html:22
|
||||
#: bookwyrm/templates/search/layout.html:43
|
||||
|
@ -336,75 +336,75 @@ msgstr "Cronoloxía de libros"
|
|||
msgid "Books"
|
||||
msgstr "Libros"
|
||||
|
||||
#: bookwyrm/settings.py:287
|
||||
#: bookwyrm/settings.py:290
|
||||
msgid "English"
|
||||
msgstr "English (Inglés)"
|
||||
|
||||
#: bookwyrm/settings.py:288
|
||||
#: bookwyrm/settings.py:291
|
||||
msgid "Català (Catalan)"
|
||||
msgstr "Català (Catalan)"
|
||||
|
||||
#: bookwyrm/settings.py:289
|
||||
#: bookwyrm/settings.py:292
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (Alemán)"
|
||||
|
||||
#: bookwyrm/settings.py:290
|
||||
#: bookwyrm/settings.py:293
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (Español)"
|
||||
|
||||
#: bookwyrm/settings.py:291
|
||||
#: bookwyrm/settings.py:294
|
||||
msgid "Euskara (Basque)"
|
||||
msgstr "Euskara (Éuscaro)"
|
||||
|
||||
#: bookwyrm/settings.py:292
|
||||
#: bookwyrm/settings.py:295
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (Galego)"
|
||||
|
||||
#: bookwyrm/settings.py:293
|
||||
#: bookwyrm/settings.py:296
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (Italiano)"
|
||||
|
||||
#: bookwyrm/settings.py:294
|
||||
#: bookwyrm/settings.py:297
|
||||
msgid "Suomi (Finnish)"
|
||||
msgstr "Suomi (Finés)"
|
||||
|
||||
#: bookwyrm/settings.py:295
|
||||
#: bookwyrm/settings.py:298
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (Francés)"
|
||||
|
||||
#: bookwyrm/settings.py:296
|
||||
#: bookwyrm/settings.py:299
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Lituano)"
|
||||
|
||||
#: bookwyrm/settings.py:297
|
||||
#: bookwyrm/settings.py:300
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (Noruegués)"
|
||||
|
||||
#: bookwyrm/settings.py:298
|
||||
#: bookwyrm/settings.py:301
|
||||
msgid "Polski (Polish)"
|
||||
msgstr "Polski (Polaco)"
|
||||
|
||||
#: bookwyrm/settings.py:299
|
||||
#: bookwyrm/settings.py:302
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (Portugués brasileiro)"
|
||||
|
||||
#: bookwyrm/settings.py:300
|
||||
#: bookwyrm/settings.py:303
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Portugués europeo)"
|
||||
|
||||
#: bookwyrm/settings.py:301
|
||||
#: bookwyrm/settings.py:304
|
||||
msgid "Română (Romanian)"
|
||||
msgstr "Română (Rumanés)"
|
||||
|
||||
#: bookwyrm/settings.py:302
|
||||
#: bookwyrm/settings.py:305
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Sueco)"
|
||||
|
||||
#: bookwyrm/settings.py:303
|
||||
#: bookwyrm/settings.py:306
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (Chinés simplificado)"
|
||||
|
||||
#: bookwyrm/settings.py:304
|
||||
#: bookwyrm/settings.py:307
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (Chinés tradicional)"
|
||||
|
||||
|
@ -847,10 +847,10 @@ msgstr "ISNI:"
|
|||
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
|
||||
#: bookwyrm/templates/settings/federation/edit_instance.html:98
|
||||
#: bookwyrm/templates/settings/federation/instance.html:105
|
||||
#: bookwyrm/templates/settings/registration.html:79
|
||||
#: bookwyrm/templates/settings/registration.html:96
|
||||
#: bookwyrm/templates/settings/registration_limited.html:76
|
||||
#: bookwyrm/templates/settings/site.html:144
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:69
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:75
|
||||
#: bookwyrm/templates/shelf/form.html:25
|
||||
#: bookwyrm/templates/snippets/reading_modals/layout.html:18
|
||||
msgid "Save"
|
||||
|
@ -1160,7 +1160,7 @@ msgstr "Este é un novo traballo"
|
|||
#: bookwyrm/templates/guided_tour/user_profile.html:89
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:112
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:135
|
||||
#: bookwyrm/templates/user_menu.html:18
|
||||
#: bookwyrm/templates/user/user.html:87 bookwyrm/templates/user_menu.html:18
|
||||
msgid "Back"
|
||||
msgstr "Atrás"
|
||||
|
||||
|
@ -1372,7 +1372,7 @@ msgid "Domain"
|
|||
msgstr "Dominio"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:36
|
||||
#: bookwyrm/templates/import/import.html:122
|
||||
#: bookwyrm/templates/import/import.html:133
|
||||
#: bookwyrm/templates/import/import_status.html:134
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:37
|
||||
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:48
|
||||
|
@ -1385,7 +1385,7 @@ msgstr "Estado"
|
|||
#: bookwyrm/templates/book/file_links/edit_links.html:37
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:41
|
||||
#: bookwyrm/templates/settings/federation/instance.html:112
|
||||
#: bookwyrm/templates/settings/imports/imports.html:110
|
||||
#: bookwyrm/templates/settings/imports/imports.html:141
|
||||
#: bookwyrm/templates/settings/reports/report_links_table.html:6
|
||||
#: bookwyrm/templates/settings/themes.html:99
|
||||
msgid "Actions"
|
||||
|
@ -1905,13 +1905,13 @@ msgid "Add to your books"
|
|||
msgstr "Engadir aos teus libros"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:10
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:33
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:37
|
||||
#: bookwyrm/templatetags/shelf_tags.py:48
|
||||
msgid "To Read"
|
||||
msgstr "Pendentes"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:11
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:34
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templatetags/shelf_tags.py:50
|
||||
msgid "Currently Reading"
|
||||
msgstr "Lectura actual"
|
||||
|
@ -1921,12 +1921,12 @@ msgstr "Lectura actual"
|
|||
#: bookwyrm/templates/snippets/shelf_selector.html:46
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12
|
||||
#: bookwyrm/templates/user/user.html:35 bookwyrm/templatetags/shelf_tags.py:52
|
||||
#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:52
|
||||
msgid "Read"
|
||||
msgstr "Lidos"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:13
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:36
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:40
|
||||
msgid "Stopped Reading"
|
||||
msgstr "Abandonados"
|
||||
|
||||
|
@ -2642,7 +2642,7 @@ msgid "This is your user profile. All your latest activities will be listed here
|
|||
msgstr "Este é o teu perfil de usuaria. A túas últimas actividades aparecerán aquí. Outras usuarias de Bookwyrm poden ver certas partes desta páxina - o que vexan depende dos teus axustes de privacidade."
|
||||
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:11
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:14
|
||||
msgid "User Profile"
|
||||
msgstr "Perfil da usuaria"
|
||||
|
||||
|
@ -2689,85 +2689,100 @@ msgstr "Importar libros"
|
|||
msgid "Not a valid CSV file"
|
||||
msgstr "Non é un ficheiro CSV válido"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:22
|
||||
#: bookwyrm/templates/import/import.html:20
|
||||
#, python-format
|
||||
msgid "Currently you are allowed to import %(import_size_limit)s books every %(import_limit_reset)s days."
|
||||
msgstr "Actualmente tes permiso para importar %(import_size_limit)s libros cada %(import_limit_reset)s días."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:21
|
||||
#, python-format
|
||||
msgid "You have %(allowed_imports)s left."
|
||||
msgstr "Aínda podes importar %(allowed_imports)s libros."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:28
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(hours)s hours."
|
||||
msgstr "De media, ás importacións recentes levoulles %(hours)s horas."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:26
|
||||
#: bookwyrm/templates/import/import.html:32
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(minutes)s minutes."
|
||||
msgstr "De media, ás importacións recentes levoulles %(minutes)s minutos."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:41
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
msgid "Data source:"
|
||||
msgstr "Fonte de datos:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
msgid "Goodreads (CSV)"
|
||||
msgstr "Goodreads (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:50
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
msgid "Storygraph (CSV)"
|
||||
msgstr "Storygraph (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
msgid "LibraryThing (TSV)"
|
||||
msgstr "LibraryThing (TSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
#: bookwyrm/templates/import/import.html:62
|
||||
msgid "OpenLibrary (CSV)"
|
||||
msgstr "OpenLibrary (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
msgid "Calibre (CSV)"
|
||||
msgstr "Calibre (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
#: bookwyrm/templates/import/import.html:71
|
||||
msgid "You can download your Goodreads data from the <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Import/Export page</a> of your Goodreads account."
|
||||
msgstr "Podes descargar os teus datos de Goodreads desde a <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">páxina de Exportación/Importación</a> da túa conta Goodreads."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:74
|
||||
#: bookwyrm/templates/import/import.html:80
|
||||
msgid "Data file:"
|
||||
msgstr "Ficheiro de datos:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:82
|
||||
#: bookwyrm/templates/import/import.html:88
|
||||
msgid "Include reviews"
|
||||
msgstr "Incluír recensións"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:87
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
msgid "Privacy setting for imported reviews:"
|
||||
msgstr "Axuste de privacidade para recensións importadas:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
#: bookwyrm/templates/import/import.html:100
|
||||
#: bookwyrm/templates/import/import.html:102
|
||||
#: bookwyrm/templates/preferences/layout.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:78
|
||||
msgid "Import"
|
||||
msgstr "Importar"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:101
|
||||
#: bookwyrm/templates/import/import.html:103
|
||||
msgid "You've reached the import limit."
|
||||
msgstr "Acadaches o límite de importacións."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:112
|
||||
msgid "Imports are temporarily disabled; thank you for your patience."
|
||||
msgstr "As importacións están temporalmente desactivadas; grazas pola paciencia."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:108
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
msgid "Recent Imports"
|
||||
msgstr "Importacións recentes"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:113
|
||||
#: bookwyrm/templates/settings/imports/imports.html:89
|
||||
#: bookwyrm/templates/import/import.html:124
|
||||
#: bookwyrm/templates/settings/imports/imports.html:120
|
||||
msgid "Date Created"
|
||||
msgstr "Data de creación"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:116
|
||||
#: bookwyrm/templates/import/import.html:127
|
||||
msgid "Last Updated"
|
||||
msgstr "Última actualización"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/import/import.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:129
|
||||
msgid "Items"
|
||||
msgstr "Elementos"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:128
|
||||
#: bookwyrm/templates/import/import.html:139
|
||||
msgid "No recent imports"
|
||||
msgstr "Sen importacións recentes"
|
||||
|
||||
|
@ -2783,6 +2798,7 @@ msgid "Retry Status"
|
|||
msgstr "Intenta outra vez"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:22
|
||||
#: bookwyrm/templates/settings/celery.html:36
|
||||
#: bookwyrm/templates/settings/imports/imports.html:6
|
||||
#: bookwyrm/templates/settings/imports/imports.html:9
|
||||
#: bookwyrm/templates/settings/layout.html:82
|
||||
|
@ -2802,7 +2818,7 @@ msgid "Refresh"
|
|||
msgstr "Actualizar"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:72
|
||||
#: bookwyrm/templates/settings/imports/imports.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:161
|
||||
msgid "Stop import"
|
||||
msgstr "Deter a importación"
|
||||
|
||||
|
@ -2920,7 +2936,7 @@ msgid "Reject"
|
|||
msgstr "Rexeitar"
|
||||
|
||||
#: bookwyrm/templates/import/troubleshoot.html:7
|
||||
#: bookwyrm/templates/settings/imports/imports.html:107
|
||||
#: bookwyrm/templates/settings/imports/imports.html:138
|
||||
msgid "Failed items"
|
||||
msgstr "Elementos fallidos"
|
||||
|
||||
|
@ -3020,7 +3036,7 @@ msgstr "Correcto! Enderezo de email confirmado."
|
|||
#: bookwyrm/templates/layout.html:130 bookwyrm/templates/ostatus/error.html:28
|
||||
#: bookwyrm/templates/snippets/register_form.html:4
|
||||
msgid "Username:"
|
||||
msgstr "Nome de usuaria:"
|
||||
msgstr "Identificador:"
|
||||
|
||||
#: bookwyrm/templates/landing/login.html:27
|
||||
#: bookwyrm/templates/landing/password_reset.html:26
|
||||
|
@ -3171,7 +3187,7 @@ msgid "Delete this list?"
|
|||
msgstr "Eliminar esta lista?"
|
||||
|
||||
#: bookwyrm/templates/lists/edit_form.html:5
|
||||
#: bookwyrm/templates/lists/layout.html:18
|
||||
#: bookwyrm/templates/lists/layout.html:23
|
||||
msgid "Edit List"
|
||||
msgstr "Editar lista"
|
||||
|
||||
|
@ -3677,7 +3693,7 @@ msgstr "Estás ao día!"
|
|||
#: bookwyrm/templates/ostatus/error.html:7
|
||||
#, python-format
|
||||
msgid "<strong>%(account)s</strong> is not a valid username"
|
||||
msgstr "<strong>%(account)s</strong> non é un nome de usuaria válido"
|
||||
msgstr "<strong>%(account)s</strong> non é un identificador válido"
|
||||
|
||||
#: bookwyrm/templates/ostatus/error.html:8
|
||||
#: bookwyrm/templates/ostatus/error.html:13
|
||||
|
@ -3706,7 +3722,7 @@ msgstr "Algo fallou ao intentar seguir a <strong>%(account)s</strong>"
|
|||
|
||||
#: bookwyrm/templates/ostatus/error.html:47
|
||||
msgid "Check you have the correct username before trying again."
|
||||
msgstr "Comproba se escribiches o nome de usuaria correcto e inténtao outra vez."
|
||||
msgstr "Comproba se escribiches o identificador correcto e inténtao outra vez."
|
||||
|
||||
#: bookwyrm/templates/ostatus/error.html:51
|
||||
#, python-format
|
||||
|
@ -3736,7 +3752,7 @@ msgstr "Seguir a %(username)s no fediverso"
|
|||
#: bookwyrm/templates/ostatus/remote_follow.html:33
|
||||
#, python-format
|
||||
msgid "Follow %(username)s from another Fediverse account like BookWyrm, Mastodon, or Pleroma."
|
||||
msgstr "Sigue a %(username)s desde outra conta no Fediverso como BookWyrm, Mastodon ou Pleroma."
|
||||
msgstr "Segue a %(username)s desde outra conta no Fediverso como BookWyrm, Mastodon ou Pleroma."
|
||||
|
||||
#: bookwyrm/templates/ostatus/remote_follow.html:40
|
||||
msgid "User handle to follow from:"
|
||||
|
@ -3912,7 +3928,7 @@ msgstr "Eliminar a conta de xeito definitivo"
|
|||
|
||||
#: bookwyrm/templates/preferences/delete_user.html:29
|
||||
msgid "Deleting your account cannot be undone. The username will not be available to register in the future."
|
||||
msgstr "Se eliminas a conta non haberá volta atrás. O nome de usuaria non estará dispoñible para rexistro no futuro."
|
||||
msgstr "Se eliminas a conta non haberá volta atrás. O identificador non estará dispoñible para rexistro no futuro."
|
||||
|
||||
#: bookwyrm/templates/preferences/disable-2fa.html:12
|
||||
msgid "Disable Two Factor Authentication"
|
||||
|
@ -4429,48 +4445,48 @@ msgstr "Prioridade media"
|
|||
msgid "High priority"
|
||||
msgstr "Alta prioridade"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:40
|
||||
#: bookwyrm/templates/settings/celery.html:46
|
||||
msgid "Could not connect to Redis broker"
|
||||
msgstr "Non puido conectar con Redis broker"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:48
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
msgid "Active Tasks"
|
||||
msgstr "Tarefas activas"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
#: bookwyrm/templates/settings/celery.html:59
|
||||
#: bookwyrm/templates/settings/imports/imports.html:113
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
#: bookwyrm/templates/settings/celery.html:60
|
||||
msgid "Task name"
|
||||
msgstr "Nome da tarefa"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:55
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
msgid "Run time"
|
||||
msgstr "Tempo de execución"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:56
|
||||
#: bookwyrm/templates/settings/celery.html:62
|
||||
msgid "Priority"
|
||||
msgstr "Prioridade"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
#: bookwyrm/templates/settings/celery.html:67
|
||||
msgid "No active tasks"
|
||||
msgstr "Nai tarefas activas"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:79
|
||||
#: bookwyrm/templates/settings/celery.html:85
|
||||
msgid "Workers"
|
||||
msgstr "Procesos"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:84
|
||||
#: bookwyrm/templates/settings/celery.html:90
|
||||
msgid "Uptime:"
|
||||
msgstr "Uptime:"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:94
|
||||
#: bookwyrm/templates/settings/celery.html:100
|
||||
msgid "Could not connect to Celery"
|
||||
msgstr "Non hai conexión con Celery"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:101
|
||||
#: bookwyrm/templates/settings/celery.html:107
|
||||
msgid "Errors"
|
||||
msgstr "Erros"
|
||||
|
||||
|
@ -4850,27 +4866,55 @@ msgstr "As usuarias actualmente non poden realizar importacións"
|
|||
msgid "Enable imports"
|
||||
msgstr "Activar importacións"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:71
|
||||
#: bookwyrm/templates/settings/imports/imports.html:63
|
||||
msgid "Limit the amount of imports"
|
||||
msgstr "Limitar o número de importacións"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:74
|
||||
msgid "Some users might try to import a large number of books, which you want to limit."
|
||||
msgstr "Algunhas usuarias poderían querer importar un número enorme de libros, podes poñerlle límite."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:75
|
||||
msgid "Set the value to 0 to not enforce any limit."
|
||||
msgstr "Establece un valor de 0 para non poñer un límite."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:78
|
||||
msgid "Set import limit to"
|
||||
msgstr "Establece un límite de"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:80
|
||||
msgid "books every"
|
||||
msgstr "libros cada"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
msgid "days."
|
||||
msgstr "días."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:86
|
||||
msgid "Set limit"
|
||||
msgstr "Establecer"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:102
|
||||
msgid "Completed"
|
||||
msgstr "Completada"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:85
|
||||
#: bookwyrm/templates/settings/imports/imports.html:116
|
||||
msgid "User"
|
||||
msgstr "Usuaria"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:94
|
||||
#: bookwyrm/templates/settings/imports/imports.html:125
|
||||
msgid "Date Updated"
|
||||
msgstr "Data de actualización"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:101
|
||||
#: bookwyrm/templates/settings/imports/imports.html:132
|
||||
msgid "Pending items"
|
||||
msgstr "Elementos pendentes"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:104
|
||||
#: bookwyrm/templates/settings/imports/imports.html:135
|
||||
msgid "Successful items"
|
||||
msgstr "Elementos correctos"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:139
|
||||
#: bookwyrm/templates/settings/imports/imports.html:170
|
||||
msgid "No matching imports found."
|
||||
msgstr "Non se atopan importacións que concorden."
|
||||
|
||||
|
@ -5131,34 +5175,38 @@ msgstr "Non se gardaron os axustes"
|
|||
msgid "Allow registration"
|
||||
msgstr "Abrir rexistro"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:44
|
||||
#: bookwyrm/templates/settings/registration.html:43
|
||||
msgid "Default access level:"
|
||||
msgstr "Nivel de acceso por defecto:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:61
|
||||
msgid "Require users to confirm email address"
|
||||
msgstr "Requerir que a usuaria confirme o enderezo de email"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:46
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
msgid "(Recommended if registration is open)"
|
||||
msgstr "(Recomendable se o rexistro está aberto)"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:51
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
msgid "Allow invite requests"
|
||||
msgstr "Permitir solicitudes de convite"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:55
|
||||
#: bookwyrm/templates/settings/registration.html:72
|
||||
#: bookwyrm/templates/settings/registration_limited.html:42
|
||||
msgid "Invite request text:"
|
||||
msgstr "Texto para a solicitude do convite:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
#: bookwyrm/templates/settings/registration.html:80
|
||||
#: bookwyrm/templates/settings/registration_limited.html:50
|
||||
msgid "Set a question for invite requests"
|
||||
msgstr "Escribe a pregunta para as solicitudes de convite"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
#: bookwyrm/templates/settings/registration.html:85
|
||||
#: bookwyrm/templates/settings/registration_limited.html:55
|
||||
msgid "Question:"
|
||||
msgstr "Pregunta:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:73
|
||||
#: bookwyrm/templates/settings/registration.html:90
|
||||
#: bookwyrm/templates/settings/registration_limited.html:67
|
||||
msgid "Registration closed text:"
|
||||
msgstr "Texto se o rexistro está pechado:"
|
||||
|
@ -5400,7 +5448,7 @@ msgid "Remove theme"
|
|||
msgstr "Eliminar decorado"
|
||||
|
||||
#: bookwyrm/templates/settings/users/delete_user_form.html:5
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:38
|
||||
msgid "Permanently delete user"
|
||||
msgstr "Eliminar definitivamente a usuaria"
|
||||
|
||||
|
@ -5425,7 +5473,7 @@ msgstr "Usuarias eliminadas"
|
|||
#: bookwyrm/templates/settings/users/user_admin.html:44
|
||||
#: bookwyrm/templates/settings/users/username_filter.html:5
|
||||
msgid "Username"
|
||||
msgstr "Nome de usuaria"
|
||||
msgstr "Identificador"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_admin.html:48
|
||||
msgid "Date Added"
|
||||
|
@ -5522,14 +5570,18 @@ msgid "User Actions"
|
|||
msgstr "Accións da usuaria"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:21
|
||||
msgid "Activate user"
|
||||
msgstr "Activar usuaria"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:27
|
||||
msgid "Suspend user"
|
||||
msgstr "Usuaria suspendida"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:26
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
msgid "Un-suspend user"
|
||||
msgstr "Usuaria reactivada"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:48
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:54
|
||||
msgid "Access level:"
|
||||
msgstr "Nivel de acceso:"
|
||||
|
||||
|
@ -6379,33 +6431,53 @@ msgstr "%(username)s non segue a ninguén"
|
|||
msgid "No reviews or comments yet!"
|
||||
msgstr "Aínda non hai recensións ou comentarios!"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:16
|
||||
#: bookwyrm/templates/user/user.html:20
|
||||
msgid "Edit profile"
|
||||
msgstr "Editar perfil"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templates/user/user.html:42
|
||||
#, python-format
|
||||
msgid "View all %(size)s"
|
||||
msgstr "Ver os %(size)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:52
|
||||
#: bookwyrm/templates/user/user.html:56
|
||||
msgid "View all books"
|
||||
msgstr "Ver tódolos libros"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:59
|
||||
#: bookwyrm/templates/user/user.html:63
|
||||
#, python-format
|
||||
msgid "%(current_year)s Reading Goal"
|
||||
msgstr "Obxectivo de Lectura para %(current_year)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:66
|
||||
#: bookwyrm/templates/user/user.html:70
|
||||
msgid "User Activity"
|
||||
msgstr "Actividade da usuaria"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:71
|
||||
#: bookwyrm/templates/user/user.html:76
|
||||
msgid "Show RSS Options"
|
||||
msgstr "Mostrar Opcións RSS"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:82
|
||||
msgid "RSS feed"
|
||||
msgstr "Fonte RSS"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:83
|
||||
#: bookwyrm/templates/user/user.html:98
|
||||
msgid "Complete feed"
|
||||
msgstr "Fonte completa"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:103
|
||||
msgid "Reviews only"
|
||||
msgstr "Só recensións"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:108
|
||||
msgid "Quotes only"
|
||||
msgstr "Só citas"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:113
|
||||
msgid "Comments only"
|
||||
msgstr "Só comentarios"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:129
|
||||
msgid "No activities yet!"
|
||||
msgstr "Sen actividade!"
|
||||
|
||||
|
@ -6449,16 +6521,43 @@ msgstr "Desconectar"
|
|||
msgid "File exceeds maximum size: 10MB"
|
||||
msgstr "O ficheiro supera o tamaño máximo: 10MB"
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:14
|
||||
#, python-format
|
||||
msgid "Book List: %(name)s"
|
||||
msgstr "Lista de Libros: %(name)s"
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:22
|
||||
#, python-format
|
||||
msgid "%(num)d book - by %(user)s"
|
||||
msgid_plural "%(num)d books - by %(user)s"
|
||||
msgstr[0] "%(num)d libro - por %(user)s"
|
||||
msgstr[1] "%(num)d libros - por %(user)s"
|
||||
|
||||
#: bookwyrm/templatetags/utilities.py:39
|
||||
#, python-format
|
||||
msgid "%(title)s: %(subtitle)s"
|
||||
msgstr "%(title)s: %(subtitle)s"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:34
|
||||
#: bookwyrm/views/rss_feed.py:35
|
||||
#, python-brace-format
|
||||
msgid "Status updates from {obj.display_name}"
|
||||
msgstr "Actualizacións de estados desde {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:72
|
||||
#, python-brace-format
|
||||
msgid "Reviews from {obj.display_name}"
|
||||
msgstr "Recensións de {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:110
|
||||
#, python-brace-format
|
||||
msgid "Quotes from {obj.display_name}"
|
||||
msgstr "Citas de {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:148
|
||||
#, python-brace-format
|
||||
msgid "Comments from {obj.display_name}"
|
||||
msgstr "Comentarios sobre {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/updates.py:45
|
||||
#, python-format
|
||||
msgid "Load %(count)d unread status"
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-11 22:46+0000\n"
|
||||
"PO-Revision-Date: 2023-01-20 13:11\n"
|
||||
"POT-Creation-Date: 2023-01-30 08:21+0000\n"
|
||||
"PO-Revision-Date: 2023-03-07 12:09\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Italian\n"
|
||||
"Language: it\n"
|
||||
|
@ -64,7 +64,7 @@ msgstr "La data di fine lettura non può essere precedente alla data di inizio."
|
|||
|
||||
#: bookwyrm/forms/forms.py:67
|
||||
msgid "Reading stopped date cannot be in the future."
|
||||
msgstr "La data d'interruzione della lettura non può essere precedente alla data d'inizio."
|
||||
msgstr "La data d'interruzione della lettura non può essere nel futuro."
|
||||
|
||||
#: bookwyrm/forms/forms.py:74
|
||||
msgid "Reading finished date cannot be in the future."
|
||||
|
@ -256,14 +256,14 @@ msgstr "Followers"
|
|||
msgid "Private"
|
||||
msgstr "Privata"
|
||||
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:157
|
||||
#: bookwyrm/templates/settings/imports/imports.html:67
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:168
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/settings/users/user_admin.html:81
|
||||
#: bookwyrm/templates/settings/users/user_info.html:28
|
||||
msgid "Active"
|
||||
msgstr "Attivo"
|
||||
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:155
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:166
|
||||
msgid "Complete"
|
||||
msgstr "Completato"
|
||||
|
||||
|
@ -316,19 +316,19 @@ msgstr "Citazioni"
|
|||
msgid "Everything else"
|
||||
msgstr "Tutto il resto"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home Timeline"
|
||||
msgstr "La tua timeline"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home"
|
||||
msgstr "Home"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
msgid "Books Timeline"
|
||||
msgstr "Timeline dei libri"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:101
|
||||
#: bookwyrm/templates/search/layout.html:22
|
||||
#: bookwyrm/templates/search/layout.html:43
|
||||
|
@ -336,75 +336,75 @@ msgstr "Timeline dei libri"
|
|||
msgid "Books"
|
||||
msgstr "Libri"
|
||||
|
||||
#: bookwyrm/settings.py:287
|
||||
#: bookwyrm/settings.py:290
|
||||
msgid "English"
|
||||
msgstr "English (Inglese)"
|
||||
|
||||
#: bookwyrm/settings.py:288
|
||||
#: bookwyrm/settings.py:291
|
||||
msgid "Català (Catalan)"
|
||||
msgstr "Català (catalano)"
|
||||
|
||||
#: bookwyrm/settings.py:289
|
||||
#: bookwyrm/settings.py:292
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (Tedesco)"
|
||||
|
||||
#: bookwyrm/settings.py:290
|
||||
#: bookwyrm/settings.py:293
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (Spagnolo)"
|
||||
|
||||
#: bookwyrm/settings.py:291
|
||||
#: bookwyrm/settings.py:294
|
||||
msgid "Euskara (Basque)"
|
||||
msgstr "Euskara (Basque)"
|
||||
|
||||
#: bookwyrm/settings.py:292
|
||||
#: bookwyrm/settings.py:295
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (Galiziano)"
|
||||
|
||||
#: bookwyrm/settings.py:293
|
||||
#: bookwyrm/settings.py:296
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (Italiano)"
|
||||
|
||||
#: bookwyrm/settings.py:294
|
||||
#: bookwyrm/settings.py:297
|
||||
msgid "Suomi (Finnish)"
|
||||
msgstr "Suomi (Finlandese)"
|
||||
|
||||
#: bookwyrm/settings.py:295
|
||||
#: bookwyrm/settings.py:298
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (Francese)"
|
||||
|
||||
#: bookwyrm/settings.py:296
|
||||
#: bookwyrm/settings.py:299
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Lituano)"
|
||||
|
||||
#: bookwyrm/settings.py:297
|
||||
#: bookwyrm/settings.py:300
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (Norvegese)"
|
||||
|
||||
#: bookwyrm/settings.py:298
|
||||
#: bookwyrm/settings.py:301
|
||||
msgid "Polski (Polish)"
|
||||
msgstr "Polski (Polacco)"
|
||||
|
||||
#: bookwyrm/settings.py:299
|
||||
#: bookwyrm/settings.py:302
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (Portoghese Brasiliano)"
|
||||
|
||||
#: bookwyrm/settings.py:300
|
||||
#: bookwyrm/settings.py:303
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Portoghese europeo)"
|
||||
|
||||
#: bookwyrm/settings.py:301
|
||||
#: bookwyrm/settings.py:304
|
||||
msgid "Română (Romanian)"
|
||||
msgstr "Rumeno (Romanian)"
|
||||
|
||||
#: bookwyrm/settings.py:302
|
||||
#: bookwyrm/settings.py:305
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Svedese)"
|
||||
|
||||
#: bookwyrm/settings.py:303
|
||||
#: bookwyrm/settings.py:306
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (Cinese Semplificato)"
|
||||
|
||||
#: bookwyrm/settings.py:304
|
||||
#: bookwyrm/settings.py:307
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (Cinese Tradizionale)"
|
||||
|
||||
|
@ -847,10 +847,10 @@ msgstr "ISNI:"
|
|||
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
|
||||
#: bookwyrm/templates/settings/federation/edit_instance.html:98
|
||||
#: bookwyrm/templates/settings/federation/instance.html:105
|
||||
#: bookwyrm/templates/settings/registration.html:79
|
||||
#: bookwyrm/templates/settings/registration.html:96
|
||||
#: bookwyrm/templates/settings/registration_limited.html:76
|
||||
#: bookwyrm/templates/settings/site.html:144
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:69
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:75
|
||||
#: bookwyrm/templates/shelf/form.html:25
|
||||
#: bookwyrm/templates/snippets/reading_modals/layout.html:18
|
||||
msgid "Save"
|
||||
|
@ -1160,7 +1160,7 @@ msgstr "Si tratta di un nuovo lavoro"
|
|||
#: bookwyrm/templates/guided_tour/user_profile.html:89
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:112
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:135
|
||||
#: bookwyrm/templates/user_menu.html:18
|
||||
#: bookwyrm/templates/user/user.html:87 bookwyrm/templates/user_menu.html:18
|
||||
msgid "Back"
|
||||
msgstr "Indietro"
|
||||
|
||||
|
@ -1372,7 +1372,7 @@ msgid "Domain"
|
|||
msgstr "Dominio"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:36
|
||||
#: bookwyrm/templates/import/import.html:122
|
||||
#: bookwyrm/templates/import/import.html:133
|
||||
#: bookwyrm/templates/import/import_status.html:134
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:37
|
||||
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:48
|
||||
|
@ -1385,7 +1385,7 @@ msgstr "Stato"
|
|||
#: bookwyrm/templates/book/file_links/edit_links.html:37
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:41
|
||||
#: bookwyrm/templates/settings/federation/instance.html:112
|
||||
#: bookwyrm/templates/settings/imports/imports.html:110
|
||||
#: bookwyrm/templates/settings/imports/imports.html:141
|
||||
#: bookwyrm/templates/settings/reports/report_links_table.html:6
|
||||
#: bookwyrm/templates/settings/themes.html:99
|
||||
msgid "Actions"
|
||||
|
@ -1821,7 +1821,7 @@ msgstr "Messaggi diretti con <a href=\"%(path)s\">%(username)s</a>"
|
|||
#: bookwyrm/templates/feed/direct_messages.html:10
|
||||
#: bookwyrm/templates/user_menu.html:44
|
||||
msgid "Direct Messages"
|
||||
msgstr "Messaggi Diretti"
|
||||
msgstr "Messaggi diretti"
|
||||
|
||||
#: bookwyrm/templates/feed/direct_messages.html:13
|
||||
msgid "All messages"
|
||||
|
@ -1859,7 +1859,7 @@ msgstr "Aggiornamenti"
|
|||
#: bookwyrm/templates/guided_tour/home.html:127
|
||||
#: bookwyrm/templates/user_menu.html:39
|
||||
msgid "Your Books"
|
||||
msgstr "I Tuoi Libri"
|
||||
msgstr "I tuoi libri"
|
||||
|
||||
#: bookwyrm/templates/feed/suggested_books.html:10
|
||||
msgid "There are no books here right now! Try searching for a book to get started"
|
||||
|
@ -1905,13 +1905,13 @@ msgid "Add to your books"
|
|||
msgstr "Aggiungi ai tuoi libri"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:10
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:33
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:37
|
||||
#: bookwyrm/templatetags/shelf_tags.py:48
|
||||
msgid "To Read"
|
||||
msgstr "Da leggere"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:11
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:34
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templatetags/shelf_tags.py:50
|
||||
msgid "Currently Reading"
|
||||
msgstr "Letture correnti"
|
||||
|
@ -1921,12 +1921,12 @@ msgstr "Letture correnti"
|
|||
#: bookwyrm/templates/snippets/shelf_selector.html:46
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12
|
||||
#: bookwyrm/templates/user/user.html:35 bookwyrm/templatetags/shelf_tags.py:52
|
||||
#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:52
|
||||
msgid "Read"
|
||||
msgstr "Letti"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:13
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:36
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:40
|
||||
msgid "Stopped Reading"
|
||||
msgstr "Lettura in pausa"
|
||||
|
||||
|
@ -2642,7 +2642,7 @@ msgid "This is your user profile. All your latest activities will be listed here
|
|||
msgstr "Questo è il tuo profilo utente. Tutte le tue ultime attività saranno elencate qui. Anche altri utenti di Bookwyrm possono vedere parti di questa pagina - ciò che possono vedere dipende dalle impostazioni sulla privacy."
|
||||
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:11
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:14
|
||||
msgid "User Profile"
|
||||
msgstr "Profilo utente"
|
||||
|
||||
|
@ -2689,85 +2689,100 @@ msgstr "Importa libri"
|
|||
msgid "Not a valid CSV file"
|
||||
msgstr "Non è un file di csv valido"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:22
|
||||
#: bookwyrm/templates/import/import.html:20
|
||||
#, python-format
|
||||
msgid "Currently you are allowed to import %(import_size_limit)s books every %(import_limit_reset)s days."
|
||||
msgstr "Al momento hai il permesso per importare %(import_size_limit)s libri ogni %(import_limit_reset)s giorni."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:21
|
||||
#, python-format
|
||||
msgid "You have %(allowed_imports)s left."
|
||||
msgstr "Ti restano %(allowed_imports)s."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:28
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(hours)s hours."
|
||||
msgstr "In media, le importazioni recenti hanno richiesto %(hours)s ore."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:26
|
||||
#: bookwyrm/templates/import/import.html:32
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(minutes)s minutes."
|
||||
msgstr "In media, le importazioni recenti hanno richiesto %(minutes)s ore."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:41
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
msgid "Data source:"
|
||||
msgstr "Sorgenti dati:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
msgid "Goodreads (CSV)"
|
||||
msgstr "Goodreads (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:50
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
msgid "Storygraph (CSV)"
|
||||
msgstr "Storygraph (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
msgid "LibraryThing (TSV)"
|
||||
msgstr "LibraryThing (TSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
#: bookwyrm/templates/import/import.html:62
|
||||
msgid "OpenLibrary (CSV)"
|
||||
msgstr "OpenLibrary (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
msgid "Calibre (CSV)"
|
||||
msgstr "Calibre (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
#: bookwyrm/templates/import/import.html:71
|
||||
msgid "You can download your Goodreads data from the <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Import/Export page</a> of your Goodreads account."
|
||||
msgstr "Puoi scaricare i tuoi dati Goodreads dalla pagina <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\"Importa/Esporta\"</a> del tuo account Goodreads."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:74
|
||||
#: bookwyrm/templates/import/import.html:80
|
||||
msgid "Data file:"
|
||||
msgstr "Dati file:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:82
|
||||
#: bookwyrm/templates/import/import.html:88
|
||||
msgid "Include reviews"
|
||||
msgstr "Includi recensioni"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:87
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
msgid "Privacy setting for imported reviews:"
|
||||
msgstr "Impostazione della privacy per le recensioni importate:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
#: bookwyrm/templates/import/import.html:100
|
||||
#: bookwyrm/templates/import/import.html:102
|
||||
#: bookwyrm/templates/preferences/layout.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:78
|
||||
msgid "Import"
|
||||
msgstr "Importa"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:101
|
||||
#: bookwyrm/templates/import/import.html:103
|
||||
msgid "You've reached the import limit."
|
||||
msgstr "Hai raggiunto il limite per le importazioni."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:112
|
||||
msgid "Imports are temporarily disabled; thank you for your patience."
|
||||
msgstr "Le importazioni sono temporaneamente disabilitate; grazie per la pazienza."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:108
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
msgid "Recent Imports"
|
||||
msgstr "Importazioni recenti"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:113
|
||||
#: bookwyrm/templates/settings/imports/imports.html:89
|
||||
#: bookwyrm/templates/import/import.html:124
|
||||
#: bookwyrm/templates/settings/imports/imports.html:120
|
||||
msgid "Date Created"
|
||||
msgstr "Data Creazione"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:116
|
||||
#: bookwyrm/templates/import/import.html:127
|
||||
msgid "Last Updated"
|
||||
msgstr "Ultimo Aggiornamento"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/import/import.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:129
|
||||
msgid "Items"
|
||||
msgstr "Elementi"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:128
|
||||
#: bookwyrm/templates/import/import.html:139
|
||||
msgid "No recent imports"
|
||||
msgstr "Nessuna importazione recente"
|
||||
|
||||
|
@ -2783,6 +2798,7 @@ msgid "Retry Status"
|
|||
msgstr "Riprova stato"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:22
|
||||
#: bookwyrm/templates/settings/celery.html:36
|
||||
#: bookwyrm/templates/settings/imports/imports.html:6
|
||||
#: bookwyrm/templates/settings/imports/imports.html:9
|
||||
#: bookwyrm/templates/settings/layout.html:82
|
||||
|
@ -2802,7 +2818,7 @@ msgid "Refresh"
|
|||
msgstr "Aggiorna"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:72
|
||||
#: bookwyrm/templates/settings/imports/imports.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:161
|
||||
msgid "Stop import"
|
||||
msgstr "Interrompi importazione"
|
||||
|
||||
|
@ -2920,7 +2936,7 @@ msgid "Reject"
|
|||
msgstr "Rifiutato"
|
||||
|
||||
#: bookwyrm/templates/import/troubleshoot.html:7
|
||||
#: bookwyrm/templates/settings/imports/imports.html:107
|
||||
#: bookwyrm/templates/settings/imports/imports.html:138
|
||||
msgid "Failed items"
|
||||
msgstr "Elementi non riusciti"
|
||||
|
||||
|
@ -3171,7 +3187,7 @@ msgid "Delete this list?"
|
|||
msgstr "Vuoi eliminare la lista selezionata?"
|
||||
|
||||
#: bookwyrm/templates/lists/edit_form.html:5
|
||||
#: bookwyrm/templates/lists/layout.html:18
|
||||
#: bookwyrm/templates/lists/layout.html:23
|
||||
msgid "Edit List"
|
||||
msgstr "Modifica lista"
|
||||
|
||||
|
@ -3355,7 +3371,7 @@ msgstr "Tutte le liste"
|
|||
|
||||
#: bookwyrm/templates/lists/lists.html:40
|
||||
msgid "Saved Lists"
|
||||
msgstr "Liste Salvate"
|
||||
msgstr "Liste salvate"
|
||||
|
||||
#: bookwyrm/templates/notifications/items/accept.html:18
|
||||
#, python-format
|
||||
|
@ -4429,48 +4445,48 @@ msgstr "Priorità media"
|
|||
msgid "High priority"
|
||||
msgstr "Priorità alta"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:40
|
||||
#: bookwyrm/templates/settings/celery.html:46
|
||||
msgid "Could not connect to Redis broker"
|
||||
msgstr "Impossibile connettersi al broker Redis"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:48
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
msgid "Active Tasks"
|
||||
msgstr "Processi attivi"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
#: bookwyrm/templates/settings/celery.html:59
|
||||
#: bookwyrm/templates/settings/imports/imports.html:113
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
#: bookwyrm/templates/settings/celery.html:60
|
||||
msgid "Task name"
|
||||
msgstr "Nome attività"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:55
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
msgid "Run time"
|
||||
msgstr "Tempo di esecuzione"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:56
|
||||
#: bookwyrm/templates/settings/celery.html:62
|
||||
msgid "Priority"
|
||||
msgstr "Priorità"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
#: bookwyrm/templates/settings/celery.html:67
|
||||
msgid "No active tasks"
|
||||
msgstr "Nessun processo attivo"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:79
|
||||
#: bookwyrm/templates/settings/celery.html:85
|
||||
msgid "Workers"
|
||||
msgstr "Workers"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:84
|
||||
#: bookwyrm/templates/settings/celery.html:90
|
||||
msgid "Uptime:"
|
||||
msgstr "Tempo di attività:"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:94
|
||||
#: bookwyrm/templates/settings/celery.html:100
|
||||
msgid "Could not connect to Celery"
|
||||
msgstr "Impossibile connettersi a Celery"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:101
|
||||
#: bookwyrm/templates/settings/celery.html:107
|
||||
msgid "Errors"
|
||||
msgstr "Errori"
|
||||
|
||||
|
@ -4850,27 +4866,55 @@ msgstr "Al momento gli utenti non sono in grado di avviare nuove importazioni"
|
|||
msgid "Enable imports"
|
||||
msgstr "Abilita importazioni"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:71
|
||||
#: bookwyrm/templates/settings/imports/imports.html:63
|
||||
msgid "Limit the amount of imports"
|
||||
msgstr "Limita la quantità delle importazioni"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:74
|
||||
msgid "Some users might try to import a large number of books, which you want to limit."
|
||||
msgstr "Alcuni utenti potrebbero provare a importare un gran numero di libri, che si desidera limitare."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:75
|
||||
msgid "Set the value to 0 to not enforce any limit."
|
||||
msgstr "Imposta il valore a 0 per non imporre alcun limite."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:78
|
||||
msgid "Set import limit to"
|
||||
msgstr "Imposta limite di importazione a"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:80
|
||||
msgid "books every"
|
||||
msgstr "libri ogni"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
msgid "days."
|
||||
msgstr "giorni."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:86
|
||||
msgid "Set limit"
|
||||
msgstr "Imposta limite"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:102
|
||||
msgid "Completed"
|
||||
msgstr "Completati"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:85
|
||||
#: bookwyrm/templates/settings/imports/imports.html:116
|
||||
msgid "User"
|
||||
msgstr "Utente"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:94
|
||||
#: bookwyrm/templates/settings/imports/imports.html:125
|
||||
msgid "Date Updated"
|
||||
msgstr "Data Aggiornamento"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:101
|
||||
#: bookwyrm/templates/settings/imports/imports.html:132
|
||||
msgid "Pending items"
|
||||
msgstr "Oggetti in sospeso"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:104
|
||||
#: bookwyrm/templates/settings/imports/imports.html:135
|
||||
msgid "Successful items"
|
||||
msgstr "Oggetti riusciti"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:139
|
||||
#: bookwyrm/templates/settings/imports/imports.html:170
|
||||
msgid "No matching imports found."
|
||||
msgstr "Nessuna importazione corrispondente."
|
||||
|
||||
|
@ -5131,34 +5175,38 @@ msgstr "Impossibile salvare le impostazioni"
|
|||
msgid "Allow registration"
|
||||
msgstr "Consenti registrazioni"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:44
|
||||
#: bookwyrm/templates/settings/registration.html:43
|
||||
msgid "Default access level:"
|
||||
msgstr "Livello di accesso predefinito:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:61
|
||||
msgid "Require users to confirm email address"
|
||||
msgstr "Richiedi agli utenti per confermare l'indirizzo email"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:46
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
msgid "(Recommended if registration is open)"
|
||||
msgstr "(Raccomandato se la registrazione è aperta)"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:51
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
msgid "Allow invite requests"
|
||||
msgstr "Consenti richieste di invito"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:55
|
||||
#: bookwyrm/templates/settings/registration.html:72
|
||||
#: bookwyrm/templates/settings/registration_limited.html:42
|
||||
msgid "Invite request text:"
|
||||
msgstr "Testo della richiesta di invito:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
#: bookwyrm/templates/settings/registration.html:80
|
||||
#: bookwyrm/templates/settings/registration_limited.html:50
|
||||
msgid "Set a question for invite requests"
|
||||
msgstr "Imposta una domanda per le richieste di invito"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
#: bookwyrm/templates/settings/registration.html:85
|
||||
#: bookwyrm/templates/settings/registration_limited.html:55
|
||||
msgid "Question:"
|
||||
msgstr "Domanda:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:73
|
||||
#: bookwyrm/templates/settings/registration.html:90
|
||||
#: bookwyrm/templates/settings/registration_limited.html:67
|
||||
msgid "Registration closed text:"
|
||||
msgstr "Registrazioni chiuse:"
|
||||
|
@ -5400,7 +5448,7 @@ msgid "Remove theme"
|
|||
msgstr "Rimuovi tema"
|
||||
|
||||
#: bookwyrm/templates/settings/users/delete_user_form.html:5
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:38
|
||||
msgid "Permanently delete user"
|
||||
msgstr "Elimina definitivamente utente"
|
||||
|
||||
|
@ -5522,14 +5570,18 @@ msgid "User Actions"
|
|||
msgstr "Azioni dell'utente"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:21
|
||||
msgid "Activate user"
|
||||
msgstr "Attiva utente"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:27
|
||||
msgid "Suspend user"
|
||||
msgstr "Sospendere utente"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:26
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
msgid "Un-suspend user"
|
||||
msgstr "Annulla sospensione utente"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:48
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:54
|
||||
msgid "Access level:"
|
||||
msgstr "Livello di accesso:"
|
||||
|
||||
|
@ -6379,33 +6431,53 @@ msgstr "%(username)s non sta seguendo nessun utente"
|
|||
msgid "No reviews or comments yet!"
|
||||
msgstr "Ancora nessuna recensione o commento!"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:16
|
||||
#: bookwyrm/templates/user/user.html:20
|
||||
msgid "Edit profile"
|
||||
msgstr "Modifica profilo"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templates/user/user.html:42
|
||||
#, python-format
|
||||
msgid "View all %(size)s"
|
||||
msgstr "Visualizza tutti i %(size)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:52
|
||||
#: bookwyrm/templates/user/user.html:56
|
||||
msgid "View all books"
|
||||
msgstr "Visualizza tutti i libri"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:59
|
||||
#: bookwyrm/templates/user/user.html:63
|
||||
#, python-format
|
||||
msgid "%(current_year)s Reading Goal"
|
||||
msgstr "Obiettivo di lettura %(current_year)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:66
|
||||
#: bookwyrm/templates/user/user.html:70
|
||||
msgid "User Activity"
|
||||
msgstr "Attività dell’utente"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:71
|
||||
#: bookwyrm/templates/user/user.html:76
|
||||
msgid "Show RSS Options"
|
||||
msgstr "Mostra opzioni RSS"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:82
|
||||
msgid "RSS feed"
|
||||
msgstr "Feed RSS"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:83
|
||||
#: bookwyrm/templates/user/user.html:98
|
||||
msgid "Complete feed"
|
||||
msgstr "Feed completo"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:103
|
||||
msgid "Reviews only"
|
||||
msgstr "Solo recensioni"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:108
|
||||
msgid "Quotes only"
|
||||
msgstr "Solo citazioni"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:113
|
||||
msgid "Comments only"
|
||||
msgstr "Solo commenti"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:129
|
||||
msgid "No activities yet!"
|
||||
msgstr "Ancora nessuna attività!"
|
||||
|
||||
|
@ -6449,16 +6521,43 @@ msgstr "Esci"
|
|||
msgid "File exceeds maximum size: 10MB"
|
||||
msgstr "Il file supera la dimensione massima: 10MB"
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:14
|
||||
#, python-format
|
||||
msgid "Book List: %(name)s"
|
||||
msgstr "Lista libri: %(name)s"
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:22
|
||||
#, python-format
|
||||
msgid "%(num)d book - by %(user)s"
|
||||
msgid_plural "%(num)d books - by %(user)s"
|
||||
msgstr[0] ""
|
||||
msgstr[1] "%(num)d libri - di %(user)s"
|
||||
|
||||
#: bookwyrm/templatetags/utilities.py:39
|
||||
#, python-format
|
||||
msgid "%(title)s: %(subtitle)s"
|
||||
msgstr "%(title)s: %(subtitle)s"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:34
|
||||
#: bookwyrm/views/rss_feed.py:35
|
||||
#, python-brace-format
|
||||
msgid "Status updates from {obj.display_name}"
|
||||
msgstr "Aggiornamenti di stato da {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:72
|
||||
#, python-brace-format
|
||||
msgid "Reviews from {obj.display_name}"
|
||||
msgstr "Recensioni da {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:110
|
||||
#, python-brace-format
|
||||
msgid "Quotes from {obj.display_name}"
|
||||
msgstr "Citazioni da {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:148
|
||||
#, python-brace-format
|
||||
msgid "Comments from {obj.display_name}"
|
||||
msgstr "Commenti di {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/updates.py:45
|
||||
#, python-format
|
||||
msgid "Load %(count)d unread status"
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-11 22:46+0000\n"
|
||||
"PO-Revision-Date: 2023-01-12 00:08\n"
|
||||
"POT-Creation-Date: 2023-01-30 08:21+0000\n"
|
||||
"PO-Revision-Date: 2023-03-02 21:34\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Lithuanian\n"
|
||||
"Language: lt\n"
|
||||
|
@ -256,14 +256,14 @@ msgstr "Sekėjai"
|
|||
msgid "Private"
|
||||
msgstr "Privatu"
|
||||
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:157
|
||||
#: bookwyrm/templates/settings/imports/imports.html:67
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:168
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/settings/users/user_admin.html:81
|
||||
#: bookwyrm/templates/settings/users/user_info.html:28
|
||||
msgid "Active"
|
||||
msgstr "Aktyvus"
|
||||
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:155
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:166
|
||||
msgid "Complete"
|
||||
msgstr "Užbaigti"
|
||||
|
||||
|
@ -316,19 +316,19 @@ msgstr "Citatos"
|
|||
msgid "Everything else"
|
||||
msgstr "Visa kita"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home Timeline"
|
||||
msgstr "Pagrindinė siena"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home"
|
||||
msgstr "Pagrindinis"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
msgid "Books Timeline"
|
||||
msgstr "Knygų siena"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:101
|
||||
#: bookwyrm/templates/search/layout.html:22
|
||||
#: bookwyrm/templates/search/layout.html:43
|
||||
|
@ -336,75 +336,75 @@ msgstr "Knygų siena"
|
|||
msgid "Books"
|
||||
msgstr "Knygos"
|
||||
|
||||
#: bookwyrm/settings.py:287
|
||||
#: bookwyrm/settings.py:290
|
||||
msgid "English"
|
||||
msgstr "English (Anglų)"
|
||||
|
||||
#: bookwyrm/settings.py:288
|
||||
#: bookwyrm/settings.py:291
|
||||
msgid "Català (Catalan)"
|
||||
msgstr "Català (kataloniečių)"
|
||||
|
||||
#: bookwyrm/settings.py:289
|
||||
#: bookwyrm/settings.py:292
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (Vokiečių)"
|
||||
|
||||
#: bookwyrm/settings.py:290
|
||||
#: bookwyrm/settings.py:293
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (Ispanų)"
|
||||
|
||||
#: bookwyrm/settings.py:291
|
||||
#: bookwyrm/settings.py:294
|
||||
msgid "Euskara (Basque)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:292
|
||||
#: bookwyrm/settings.py:295
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (galisų)"
|
||||
|
||||
#: bookwyrm/settings.py:293
|
||||
#: bookwyrm/settings.py:296
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italų (Italian)"
|
||||
|
||||
#: bookwyrm/settings.py:294
|
||||
#: bookwyrm/settings.py:297
|
||||
msgid "Suomi (Finnish)"
|
||||
msgstr "Suomi (suomių)"
|
||||
|
||||
#: bookwyrm/settings.py:295
|
||||
#: bookwyrm/settings.py:298
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (Prancūzų)"
|
||||
|
||||
#: bookwyrm/settings.py:296
|
||||
#: bookwyrm/settings.py:299
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių"
|
||||
|
||||
#: bookwyrm/settings.py:297
|
||||
#: bookwyrm/settings.py:300
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norvegų (Norwegian)"
|
||||
|
||||
#: bookwyrm/settings.py:298
|
||||
#: bookwyrm/settings.py:301
|
||||
msgid "Polski (Polish)"
|
||||
msgstr "Polski (lenkų)"
|
||||
|
||||
#: bookwyrm/settings.py:299
|
||||
#: bookwyrm/settings.py:302
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português brasileiro (Brazilijos portugalų)"
|
||||
|
||||
#: bookwyrm/settings.py:300
|
||||
#: bookwyrm/settings.py:303
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Europos portugalų)"
|
||||
|
||||
#: bookwyrm/settings.py:301
|
||||
#: bookwyrm/settings.py:304
|
||||
msgid "Română (Romanian)"
|
||||
msgstr "Română (rumunų)"
|
||||
|
||||
#: bookwyrm/settings.py:302
|
||||
#: bookwyrm/settings.py:305
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Švedų)"
|
||||
|
||||
#: bookwyrm/settings.py:303
|
||||
#: bookwyrm/settings.py:306
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (Supaprastinta kinų)"
|
||||
|
||||
#: bookwyrm/settings.py:304
|
||||
#: bookwyrm/settings.py:307
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (Tradicinė kinų)"
|
||||
|
||||
|
@ -855,10 +855,10 @@ msgstr "ISNI:"
|
|||
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
|
||||
#: bookwyrm/templates/settings/federation/edit_instance.html:98
|
||||
#: bookwyrm/templates/settings/federation/instance.html:105
|
||||
#: bookwyrm/templates/settings/registration.html:79
|
||||
#: bookwyrm/templates/settings/registration.html:96
|
||||
#: bookwyrm/templates/settings/registration_limited.html:76
|
||||
#: bookwyrm/templates/settings/site.html:144
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:69
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:75
|
||||
#: bookwyrm/templates/shelf/form.html:25
|
||||
#: bookwyrm/templates/snippets/reading_modals/layout.html:18
|
||||
msgid "Save"
|
||||
|
@ -1172,7 +1172,7 @@ msgstr "Tai naujas darbas"
|
|||
#: bookwyrm/templates/guided_tour/user_profile.html:89
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:112
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:135
|
||||
#: bookwyrm/templates/user_menu.html:18
|
||||
#: bookwyrm/templates/user/user.html:87 bookwyrm/templates/user_menu.html:18
|
||||
msgid "Back"
|
||||
msgstr "Atgal"
|
||||
|
||||
|
@ -1384,7 +1384,7 @@ msgid "Domain"
|
|||
msgstr "Domenas"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:36
|
||||
#: bookwyrm/templates/import/import.html:122
|
||||
#: bookwyrm/templates/import/import.html:133
|
||||
#: bookwyrm/templates/import/import_status.html:134
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:37
|
||||
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:48
|
||||
|
@ -1397,7 +1397,7 @@ msgstr "Būsena"
|
|||
#: bookwyrm/templates/book/file_links/edit_links.html:37
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:41
|
||||
#: bookwyrm/templates/settings/federation/instance.html:112
|
||||
#: bookwyrm/templates/settings/imports/imports.html:110
|
||||
#: bookwyrm/templates/settings/imports/imports.html:141
|
||||
#: bookwyrm/templates/settings/reports/report_links_table.html:6
|
||||
#: bookwyrm/templates/settings/themes.html:99
|
||||
msgid "Actions"
|
||||
|
@ -1921,13 +1921,13 @@ msgid "Add to your books"
|
|||
msgstr "Pridėti prie savo knygų"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:10
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:33
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:37
|
||||
#: bookwyrm/templatetags/shelf_tags.py:48
|
||||
msgid "To Read"
|
||||
msgstr "Norimos perskaityti"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:11
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:34
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templatetags/shelf_tags.py:50
|
||||
msgid "Currently Reading"
|
||||
msgstr "Šiuo metu skaitomos"
|
||||
|
@ -1937,12 +1937,12 @@ msgstr "Šiuo metu skaitomos"
|
|||
#: bookwyrm/templates/snippets/shelf_selector.html:46
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12
|
||||
#: bookwyrm/templates/user/user.html:35 bookwyrm/templatetags/shelf_tags.py:52
|
||||
#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:52
|
||||
msgid "Read"
|
||||
msgstr "Perskaitytos"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:13
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:36
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:40
|
||||
msgid "Stopped Reading"
|
||||
msgstr "Nustota skaityti"
|
||||
|
||||
|
@ -2030,7 +2030,7 @@ msgstr "Baigti"
|
|||
#: bookwyrm/templates/get_started/profile.html:15
|
||||
#: bookwyrm/templates/preferences/edit_user.html:41
|
||||
msgid "Display name:"
|
||||
msgstr "Rodomas vardą:"
|
||||
msgstr "Rodomas vardas:"
|
||||
|
||||
#: bookwyrm/templates/get_started/profile.html:29
|
||||
#: bookwyrm/templates/preferences/edit_user.html:47
|
||||
|
@ -2662,7 +2662,7 @@ msgid "This is your user profile. All your latest activities will be listed here
|
|||
msgstr "Tai jūsų profilis. Čia bus matomos jūsų naujausios veiklos. Kiti „Bookwyrm“ naudotojai taip pat gali matyti šio puslapio dalis, tačiau tai, ką jie gali matyti, priklauso nuo privatumo nustatymų."
|
||||
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:11
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:14
|
||||
msgid "User Profile"
|
||||
msgstr "Nario paskyra"
|
||||
|
||||
|
@ -2709,85 +2709,100 @@ msgstr "Importuoti knygas"
|
|||
msgid "Not a valid CSV file"
|
||||
msgstr "Netinkamas CSV failas"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:22
|
||||
#: bookwyrm/templates/import/import.html:20
|
||||
#, python-format
|
||||
msgid "Currently you are allowed to import %(import_size_limit)s books every %(import_limit_reset)s days."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:21
|
||||
#, python-format
|
||||
msgid "You have %(allowed_imports)s left."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:28
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(hours)s hours."
|
||||
msgstr "Vidutiniškai importavimas užima %(hours)s val."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:26
|
||||
#: bookwyrm/templates/import/import.html:32
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(minutes)s minutes."
|
||||
msgstr "Vidutiniškai importavimas užima %(minutes)s min."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:41
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
msgid "Data source:"
|
||||
msgstr "Duomenų šaltinis:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
msgid "Goodreads (CSV)"
|
||||
msgstr "Goodreads (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:50
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
msgid "Storygraph (CSV)"
|
||||
msgstr "Storygraph (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
msgid "LibraryThing (TSV)"
|
||||
msgstr "LibraryThing (TSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
#: bookwyrm/templates/import/import.html:62
|
||||
msgid "OpenLibrary (CSV)"
|
||||
msgstr "OpenLibrary (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
msgid "Calibre (CSV)"
|
||||
msgstr "Calibre (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
#: bookwyrm/templates/import/import.html:71
|
||||
msgid "You can download your Goodreads data from the <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Import/Export page</a> of your Goodreads account."
|
||||
msgstr "Galite atsisiųsti savo „Goodreads“ duomenis iš <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Importavimo ir eksportavimo puslapio</a>, esančio jūsų „Goodreads“ paskyroje."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:74
|
||||
#: bookwyrm/templates/import/import.html:80
|
||||
msgid "Data file:"
|
||||
msgstr "Duomenų failas:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:82
|
||||
#: bookwyrm/templates/import/import.html:88
|
||||
msgid "Include reviews"
|
||||
msgstr "Įtraukti atsiliepimus"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:87
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
msgid "Privacy setting for imported reviews:"
|
||||
msgstr "Privatumo nustatymai svarbiems atsiliepimams:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
#: bookwyrm/templates/import/import.html:100
|
||||
#: bookwyrm/templates/import/import.html:102
|
||||
#: bookwyrm/templates/preferences/layout.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:78
|
||||
msgid "Import"
|
||||
msgstr "Importuoti"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:101
|
||||
#: bookwyrm/templates/import/import.html:103
|
||||
msgid "You've reached the import limit."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:112
|
||||
msgid "Imports are temporarily disabled; thank you for your patience."
|
||||
msgstr "Importavimo galimybė laikinai išjungta. Dėkojame už kantrybę."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:108
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
msgid "Recent Imports"
|
||||
msgstr "Pastaruoju metu importuota"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:113
|
||||
#: bookwyrm/templates/settings/imports/imports.html:89
|
||||
#: bookwyrm/templates/import/import.html:124
|
||||
#: bookwyrm/templates/settings/imports/imports.html:120
|
||||
msgid "Date Created"
|
||||
msgstr "Sukūrimo data"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:116
|
||||
#: bookwyrm/templates/import/import.html:127
|
||||
msgid "Last Updated"
|
||||
msgstr "Paskutinį kartą atnaujinta"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/import/import.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:129
|
||||
msgid "Items"
|
||||
msgstr "Elementai"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:128
|
||||
#: bookwyrm/templates/import/import.html:139
|
||||
msgid "No recent imports"
|
||||
msgstr "Pastaruoju metu neimportuota"
|
||||
|
||||
|
@ -2803,6 +2818,7 @@ msgid "Retry Status"
|
|||
msgstr "Pakartojimo būsena"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:22
|
||||
#: bookwyrm/templates/settings/celery.html:36
|
||||
#: bookwyrm/templates/settings/imports/imports.html:6
|
||||
#: bookwyrm/templates/settings/imports/imports.html:9
|
||||
#: bookwyrm/templates/settings/layout.html:82
|
||||
|
@ -2822,7 +2838,7 @@ msgid "Refresh"
|
|||
msgstr "Atnaujinti"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:72
|
||||
#: bookwyrm/templates/settings/imports/imports.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:161
|
||||
msgid "Stop import"
|
||||
msgstr "Sustabdyti importavimą"
|
||||
|
||||
|
@ -2944,7 +2960,7 @@ msgid "Reject"
|
|||
msgstr "Atmesti"
|
||||
|
||||
#: bookwyrm/templates/import/troubleshoot.html:7
|
||||
#: bookwyrm/templates/settings/imports/imports.html:107
|
||||
#: bookwyrm/templates/settings/imports/imports.html:138
|
||||
msgid "Failed items"
|
||||
msgstr "Nepavykę elementai"
|
||||
|
||||
|
@ -3195,7 +3211,7 @@ msgid "Delete this list?"
|
|||
msgstr "Ištrinti šį sąrašą?"
|
||||
|
||||
#: bookwyrm/templates/lists/edit_form.html:5
|
||||
#: bookwyrm/templates/lists/layout.html:18
|
||||
#: bookwyrm/templates/lists/layout.html:23
|
||||
msgid "Edit List"
|
||||
msgstr "Redaguoti sąrašą"
|
||||
|
||||
|
@ -4463,48 +4479,48 @@ msgstr ""
|
|||
msgid "High priority"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:40
|
||||
#: bookwyrm/templates/settings/celery.html:46
|
||||
msgid "Could not connect to Redis broker"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:48
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
msgid "Active Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
#: bookwyrm/templates/settings/celery.html:59
|
||||
#: bookwyrm/templates/settings/imports/imports.html:113
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
#: bookwyrm/templates/settings/celery.html:60
|
||||
msgid "Task name"
|
||||
msgstr "Užduoties pavadinimas"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:55
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
msgid "Run time"
|
||||
msgstr "Rodymo laikas"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:56
|
||||
#: bookwyrm/templates/settings/celery.html:62
|
||||
msgid "Priority"
|
||||
msgstr "Prioritetas"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
#: bookwyrm/templates/settings/celery.html:67
|
||||
msgid "No active tasks"
|
||||
msgstr "Nėra aktyvių užduočių"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:79
|
||||
#: bookwyrm/templates/settings/celery.html:85
|
||||
msgid "Workers"
|
||||
msgstr "Darbuotojai"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:84
|
||||
#: bookwyrm/templates/settings/celery.html:90
|
||||
msgid "Uptime:"
|
||||
msgstr "Veikimo laikas:"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:94
|
||||
#: bookwyrm/templates/settings/celery.html:100
|
||||
msgid "Could not connect to Celery"
|
||||
msgstr "Nepavyko prisijungti prie „Celery“"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:101
|
||||
#: bookwyrm/templates/settings/celery.html:107
|
||||
msgid "Errors"
|
||||
msgstr "Klaidos"
|
||||
|
||||
|
@ -4892,27 +4908,55 @@ msgstr "Naudotojai nebegali pradėti importuoti"
|
|||
msgid "Enable imports"
|
||||
msgstr "Įjungti importavimus"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:71
|
||||
#: bookwyrm/templates/settings/imports/imports.html:63
|
||||
msgid "Limit the amount of imports"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:74
|
||||
msgid "Some users might try to import a large number of books, which you want to limit."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:75
|
||||
msgid "Set the value to 0 to not enforce any limit."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:78
|
||||
msgid "Set import limit to"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:80
|
||||
msgid "books every"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
msgid "days."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:86
|
||||
msgid "Set limit"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:102
|
||||
msgid "Completed"
|
||||
msgstr "Užbaigta"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:85
|
||||
#: bookwyrm/templates/settings/imports/imports.html:116
|
||||
msgid "User"
|
||||
msgstr "Vartotojas"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:94
|
||||
#: bookwyrm/templates/settings/imports/imports.html:125
|
||||
msgid "Date Updated"
|
||||
msgstr "Atnaujinimo data"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:101
|
||||
#: bookwyrm/templates/settings/imports/imports.html:132
|
||||
msgid "Pending items"
|
||||
msgstr "Laukiami elementai"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:104
|
||||
#: bookwyrm/templates/settings/imports/imports.html:135
|
||||
msgid "Successful items"
|
||||
msgstr "Sėkmingi elementai"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:139
|
||||
#: bookwyrm/templates/settings/imports/imports.html:170
|
||||
msgid "No matching imports found."
|
||||
msgstr "Nerasta atitinkančių importų."
|
||||
|
||||
|
@ -5173,34 +5217,38 @@ msgstr "Nepavyko išsaugoti nustatymų"
|
|||
msgid "Allow registration"
|
||||
msgstr "Leisti registruotis"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:44
|
||||
#: bookwyrm/templates/settings/registration.html:43
|
||||
msgid "Default access level:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:61
|
||||
msgid "Require users to confirm email address"
|
||||
msgstr "Reikalauti el. pašto patvirtinimo"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:46
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
msgid "(Recommended if registration is open)"
|
||||
msgstr "(Rekomenduojama, jei leidžiama registruotis)"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:51
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
msgid "Allow invite requests"
|
||||
msgstr "Leisti prašyti kvietimų"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:55
|
||||
#: bookwyrm/templates/settings/registration.html:72
|
||||
#: bookwyrm/templates/settings/registration_limited.html:42
|
||||
msgid "Invite request text:"
|
||||
msgstr "Kvietimo prašymo tekstas:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
#: bookwyrm/templates/settings/registration.html:80
|
||||
#: bookwyrm/templates/settings/registration_limited.html:50
|
||||
msgid "Set a question for invite requests"
|
||||
msgstr "Kvietimo užklausoms parinkite klausimą"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
#: bookwyrm/templates/settings/registration.html:85
|
||||
#: bookwyrm/templates/settings/registration_limited.html:55
|
||||
msgid "Question:"
|
||||
msgstr "Klausimas:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:73
|
||||
#: bookwyrm/templates/settings/registration.html:90
|
||||
#: bookwyrm/templates/settings/registration_limited.html:67
|
||||
msgid "Registration closed text:"
|
||||
msgstr "Užrakintos registracijos tekstas:"
|
||||
|
@ -5442,7 +5490,7 @@ msgid "Remove theme"
|
|||
msgstr "Pašalinti temą"
|
||||
|
||||
#: bookwyrm/templates/settings/users/delete_user_form.html:5
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:38
|
||||
msgid "Permanently delete user"
|
||||
msgstr "Visam laikui ištrinti vartotoją"
|
||||
|
||||
|
@ -5564,14 +5612,18 @@ msgid "User Actions"
|
|||
msgstr "Nario veiksmai"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:21
|
||||
msgid "Activate user"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:27
|
||||
msgid "Suspend user"
|
||||
msgstr "Laikinai išjungti vartotoją"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:26
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
msgid "Un-suspend user"
|
||||
msgstr "Atblokuoti narį"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:48
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:54
|
||||
msgid "Access level:"
|
||||
msgstr "Priėjimo lygis:"
|
||||
|
||||
|
@ -6435,33 +6487,53 @@ msgstr "%(username)s nieko neseka"
|
|||
msgid "No reviews or comments yet!"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:16
|
||||
#: bookwyrm/templates/user/user.html:20
|
||||
msgid "Edit profile"
|
||||
msgstr "Redaguoti paskyrą"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templates/user/user.html:42
|
||||
#, python-format
|
||||
msgid "View all %(size)s"
|
||||
msgstr "Žiūrėti visas %(size)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:52
|
||||
#: bookwyrm/templates/user/user.html:56
|
||||
msgid "View all books"
|
||||
msgstr "Žiūrėti visas knygas"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:59
|
||||
#: bookwyrm/templates/user/user.html:63
|
||||
#, python-format
|
||||
msgid "%(current_year)s Reading Goal"
|
||||
msgstr "%(current_year)s skaitymo tikslas"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:66
|
||||
#: bookwyrm/templates/user/user.html:70
|
||||
msgid "User Activity"
|
||||
msgstr "Naudotojo aktyvumas"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:71
|
||||
#: bookwyrm/templates/user/user.html:76
|
||||
msgid "Show RSS Options"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:82
|
||||
msgid "RSS feed"
|
||||
msgstr "RSS srautas"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:83
|
||||
#: bookwyrm/templates/user/user.html:98
|
||||
msgid "Complete feed"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:103
|
||||
msgid "Reviews only"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:108
|
||||
msgid "Quotes only"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:113
|
||||
msgid "Comments only"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:129
|
||||
msgid "No activities yet!"
|
||||
msgstr "Įrašų dar nėra"
|
||||
|
||||
|
@ -6509,16 +6581,45 @@ msgstr "Atsijungti"
|
|||
msgid "File exceeds maximum size: 10MB"
|
||||
msgstr "Failas viršijo maksimalų dydį: 10 MB"
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:14
|
||||
#, python-format
|
||||
msgid "Book List: %(name)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:22
|
||||
#, python-format
|
||||
msgid "%(num)d book - by %(user)s"
|
||||
msgid_plural "%(num)d books - by %(user)s"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
msgstr[3] ""
|
||||
|
||||
#: bookwyrm/templatetags/utilities.py:39
|
||||
#, python-format
|
||||
msgid "%(title)s: %(subtitle)s"
|
||||
msgstr "%(title)s: %(subtitle)s"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:34
|
||||
#: bookwyrm/views/rss_feed.py:35
|
||||
#, python-brace-format
|
||||
msgid "Status updates from {obj.display_name}"
|
||||
msgstr "Būsenos atnaujinimai iš {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:72
|
||||
#, python-brace-format
|
||||
msgid "Reviews from {obj.display_name}"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:110
|
||||
#, python-brace-format
|
||||
msgid "Quotes from {obj.display_name}"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:148
|
||||
#, python-brace-format
|
||||
msgid "Comments from {obj.display_name}"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/views/updates.py:45
|
||||
#, python-format
|
||||
msgid "Load %(count)d unread status"
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-11 22:46+0000\n"
|
||||
"PO-Revision-Date: 2023-01-12 00:08\n"
|
||||
"POT-Creation-Date: 2023-01-30 08:21+0000\n"
|
||||
"PO-Revision-Date: 2023-01-30 17:36\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Norwegian\n"
|
||||
"Language: no\n"
|
||||
|
@ -256,14 +256,14 @@ msgstr "Følgere"
|
|||
msgid "Private"
|
||||
msgstr "Privat"
|
||||
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:157
|
||||
#: bookwyrm/templates/settings/imports/imports.html:67
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:168
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/settings/users/user_admin.html:81
|
||||
#: bookwyrm/templates/settings/users/user_info.html:28
|
||||
msgid "Active"
|
||||
msgstr "Aktiv"
|
||||
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:155
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:166
|
||||
msgid "Complete"
|
||||
msgstr ""
|
||||
|
||||
|
@ -316,19 +316,19 @@ msgstr "Sitater"
|
|||
msgid "Everything else"
|
||||
msgstr "Andre ting"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home Timeline"
|
||||
msgstr "Lokal tidslinje"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home"
|
||||
msgstr "Hjem"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
msgid "Books Timeline"
|
||||
msgstr "Boktidslinja"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:101
|
||||
#: bookwyrm/templates/search/layout.html:22
|
||||
#: bookwyrm/templates/search/layout.html:43
|
||||
|
@ -336,75 +336,75 @@ msgstr "Boktidslinja"
|
|||
msgid "Books"
|
||||
msgstr "Bøker"
|
||||
|
||||
#: bookwyrm/settings.py:287
|
||||
#: bookwyrm/settings.py:290
|
||||
msgid "English"
|
||||
msgstr "English (Engelsk)"
|
||||
|
||||
#: bookwyrm/settings.py:288
|
||||
#: bookwyrm/settings.py:291
|
||||
msgid "Català (Catalan)"
|
||||
msgstr "Català (katalansk)"
|
||||
|
||||
#: bookwyrm/settings.py:289
|
||||
#: bookwyrm/settings.py:292
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (Tysk)"
|
||||
|
||||
#: bookwyrm/settings.py:290
|
||||
#: bookwyrm/settings.py:293
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (Spansk)"
|
||||
|
||||
#: bookwyrm/settings.py:291
|
||||
#: bookwyrm/settings.py:294
|
||||
msgid "Euskara (Basque)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:292
|
||||
#: bookwyrm/settings.py:295
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (Gallisk)"
|
||||
|
||||
#: bookwyrm/settings.py:293
|
||||
#: bookwyrm/settings.py:296
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (Italiensk)"
|
||||
|
||||
#: bookwyrm/settings.py:294
|
||||
#: bookwyrm/settings.py:297
|
||||
msgid "Suomi (Finnish)"
|
||||
msgstr "Suomi (finsk)"
|
||||
|
||||
#: bookwyrm/settings.py:295
|
||||
#: bookwyrm/settings.py:298
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (Fransk)"
|
||||
|
||||
#: bookwyrm/settings.py:296
|
||||
#: bookwyrm/settings.py:299
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Litauisk)"
|
||||
|
||||
#: bookwyrm/settings.py:297
|
||||
#: bookwyrm/settings.py:300
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (Norsk)"
|
||||
|
||||
#: bookwyrm/settings.py:298
|
||||
#: bookwyrm/settings.py:301
|
||||
msgid "Polski (Polish)"
|
||||
msgstr "Polski (Polsk)"
|
||||
|
||||
#: bookwyrm/settings.py:299
|
||||
#: bookwyrm/settings.py:302
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português - Brasil (Brasiliansk portugisisk)"
|
||||
|
||||
#: bookwyrm/settings.py:300
|
||||
#: bookwyrm/settings.py:303
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Europeisk Portugisisk)"
|
||||
|
||||
#: bookwyrm/settings.py:301
|
||||
#: bookwyrm/settings.py:304
|
||||
msgid "Română (Romanian)"
|
||||
msgstr "Română (romansk)"
|
||||
|
||||
#: bookwyrm/settings.py:302
|
||||
#: bookwyrm/settings.py:305
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Svensk)"
|
||||
|
||||
#: bookwyrm/settings.py:303
|
||||
#: bookwyrm/settings.py:306
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (Forenklet kinesisk)"
|
||||
|
||||
#: bookwyrm/settings.py:304
|
||||
#: bookwyrm/settings.py:307
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (Tradisjonelt kinesisk)"
|
||||
|
||||
|
@ -847,10 +847,10 @@ msgstr "ISNI:"
|
|||
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
|
||||
#: bookwyrm/templates/settings/federation/edit_instance.html:98
|
||||
#: bookwyrm/templates/settings/federation/instance.html:105
|
||||
#: bookwyrm/templates/settings/registration.html:79
|
||||
#: bookwyrm/templates/settings/registration.html:96
|
||||
#: bookwyrm/templates/settings/registration_limited.html:76
|
||||
#: bookwyrm/templates/settings/site.html:144
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:69
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:75
|
||||
#: bookwyrm/templates/shelf/form.html:25
|
||||
#: bookwyrm/templates/snippets/reading_modals/layout.html:18
|
||||
msgid "Save"
|
||||
|
@ -1160,7 +1160,7 @@ msgstr "Dette er et nytt verk"
|
|||
#: bookwyrm/templates/guided_tour/user_profile.html:89
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:112
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:135
|
||||
#: bookwyrm/templates/user_menu.html:18
|
||||
#: bookwyrm/templates/user/user.html:87 bookwyrm/templates/user_menu.html:18
|
||||
msgid "Back"
|
||||
msgstr "Tilbake"
|
||||
|
||||
|
@ -1372,7 +1372,7 @@ msgid "Domain"
|
|||
msgstr "Domene"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:36
|
||||
#: bookwyrm/templates/import/import.html:122
|
||||
#: bookwyrm/templates/import/import.html:133
|
||||
#: bookwyrm/templates/import/import_status.html:134
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:37
|
||||
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:48
|
||||
|
@ -1385,7 +1385,7 @@ msgstr "Status"
|
|||
#: bookwyrm/templates/book/file_links/edit_links.html:37
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:41
|
||||
#: bookwyrm/templates/settings/federation/instance.html:112
|
||||
#: bookwyrm/templates/settings/imports/imports.html:110
|
||||
#: bookwyrm/templates/settings/imports/imports.html:141
|
||||
#: bookwyrm/templates/settings/reports/report_links_table.html:6
|
||||
#: bookwyrm/templates/settings/themes.html:99
|
||||
msgid "Actions"
|
||||
|
@ -1905,13 +1905,13 @@ msgid "Add to your books"
|
|||
msgstr "Legg til i bøkene dine"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:10
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:33
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:37
|
||||
#: bookwyrm/templatetags/shelf_tags.py:48
|
||||
msgid "To Read"
|
||||
msgstr "Å lese"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:11
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:34
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templatetags/shelf_tags.py:50
|
||||
msgid "Currently Reading"
|
||||
msgstr "Leser nå"
|
||||
|
@ -1921,12 +1921,12 @@ msgstr "Leser nå"
|
|||
#: bookwyrm/templates/snippets/shelf_selector.html:46
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12
|
||||
#: bookwyrm/templates/user/user.html:35 bookwyrm/templatetags/shelf_tags.py:52
|
||||
#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:52
|
||||
msgid "Read"
|
||||
msgstr "Lest"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:13
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:36
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:40
|
||||
msgid "Stopped Reading"
|
||||
msgstr "Stoppet lesing"
|
||||
|
||||
|
@ -2642,7 +2642,7 @@ msgid "This is your user profile. All your latest activities will be listed here
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:11
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:14
|
||||
msgid "User Profile"
|
||||
msgstr "Brukerprofil"
|
||||
|
||||
|
@ -2689,85 +2689,100 @@ msgstr "Importer bøker"
|
|||
msgid "Not a valid CSV file"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:22
|
||||
#: bookwyrm/templates/import/import.html:20
|
||||
#, python-format
|
||||
msgid "Currently you are allowed to import %(import_size_limit)s books every %(import_limit_reset)s days."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:21
|
||||
#, python-format
|
||||
msgid "You have %(allowed_imports)s left."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:28
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(hours)s hours."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:26
|
||||
#: bookwyrm/templates/import/import.html:32
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(minutes)s minutes."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:41
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
msgid "Data source:"
|
||||
msgstr "Datakilde:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
msgid "Goodreads (CSV)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:50
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
msgid "Storygraph (CSV)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
msgid "LibraryThing (TSV)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
#: bookwyrm/templates/import/import.html:62
|
||||
msgid "OpenLibrary (CSV)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
msgid "Calibre (CSV)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
#: bookwyrm/templates/import/import.html:71
|
||||
msgid "You can download your Goodreads data from the <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Import/Export page</a> of your Goodreads account."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:74
|
||||
#: bookwyrm/templates/import/import.html:80
|
||||
msgid "Data file:"
|
||||
msgstr "Datafil:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:82
|
||||
#: bookwyrm/templates/import/import.html:88
|
||||
msgid "Include reviews"
|
||||
msgstr "Inkluder anmeldelser"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:87
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
msgid "Privacy setting for imported reviews:"
|
||||
msgstr "Personverninnstilling for importerte anmeldelser:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
#: bookwyrm/templates/import/import.html:100
|
||||
#: bookwyrm/templates/import/import.html:102
|
||||
#: bookwyrm/templates/preferences/layout.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:78
|
||||
msgid "Import"
|
||||
msgstr "Importér"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:101
|
||||
#: bookwyrm/templates/import/import.html:103
|
||||
msgid "You've reached the import limit."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:112
|
||||
msgid "Imports are temporarily disabled; thank you for your patience."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:108
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
msgid "Recent Imports"
|
||||
msgstr "Nylig importer"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:113
|
||||
#: bookwyrm/templates/settings/imports/imports.html:89
|
||||
#: bookwyrm/templates/import/import.html:124
|
||||
#: bookwyrm/templates/settings/imports/imports.html:120
|
||||
msgid "Date Created"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:116
|
||||
#: bookwyrm/templates/import/import.html:127
|
||||
msgid "Last Updated"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/import/import.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:129
|
||||
msgid "Items"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:128
|
||||
#: bookwyrm/templates/import/import.html:139
|
||||
msgid "No recent imports"
|
||||
msgstr "Ingen nylige importer"
|
||||
|
||||
|
@ -2783,6 +2798,7 @@ msgid "Retry Status"
|
|||
msgstr "Status for nytt forsøk"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:22
|
||||
#: bookwyrm/templates/settings/celery.html:36
|
||||
#: bookwyrm/templates/settings/imports/imports.html:6
|
||||
#: bookwyrm/templates/settings/imports/imports.html:9
|
||||
#: bookwyrm/templates/settings/layout.html:82
|
||||
|
@ -2802,7 +2818,7 @@ msgid "Refresh"
|
|||
msgstr "Oppdater"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:72
|
||||
#: bookwyrm/templates/settings/imports/imports.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:161
|
||||
msgid "Stop import"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2920,7 +2936,7 @@ msgid "Reject"
|
|||
msgstr "Avslå"
|
||||
|
||||
#: bookwyrm/templates/import/troubleshoot.html:7
|
||||
#: bookwyrm/templates/settings/imports/imports.html:107
|
||||
#: bookwyrm/templates/settings/imports/imports.html:138
|
||||
msgid "Failed items"
|
||||
msgstr "Mislykkede ting"
|
||||
|
||||
|
@ -3171,7 +3187,7 @@ msgid "Delete this list?"
|
|||
msgstr "Slett denne lista?"
|
||||
|
||||
#: bookwyrm/templates/lists/edit_form.html:5
|
||||
#: bookwyrm/templates/lists/layout.html:18
|
||||
#: bookwyrm/templates/lists/layout.html:23
|
||||
msgid "Edit List"
|
||||
msgstr "Redigér lista"
|
||||
|
||||
|
@ -4427,48 +4443,48 @@ msgstr ""
|
|||
msgid "High priority"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:40
|
||||
#: bookwyrm/templates/settings/celery.html:46
|
||||
msgid "Could not connect to Redis broker"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:48
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
msgid "Active Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
#: bookwyrm/templates/settings/celery.html:59
|
||||
#: bookwyrm/templates/settings/imports/imports.html:113
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
#: bookwyrm/templates/settings/celery.html:60
|
||||
msgid "Task name"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:55
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
msgid "Run time"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:56
|
||||
#: bookwyrm/templates/settings/celery.html:62
|
||||
msgid "Priority"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
#: bookwyrm/templates/settings/celery.html:67
|
||||
msgid "No active tasks"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:79
|
||||
#: bookwyrm/templates/settings/celery.html:85
|
||||
msgid "Workers"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:84
|
||||
#: bookwyrm/templates/settings/celery.html:90
|
||||
msgid "Uptime:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:94
|
||||
#: bookwyrm/templates/settings/celery.html:100
|
||||
msgid "Could not connect to Celery"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:101
|
||||
#: bookwyrm/templates/settings/celery.html:107
|
||||
msgid "Errors"
|
||||
msgstr ""
|
||||
|
||||
|
@ -4848,27 +4864,55 @@ msgstr ""
|
|||
msgid "Enable imports"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:71
|
||||
#: bookwyrm/templates/settings/imports/imports.html:63
|
||||
msgid "Limit the amount of imports"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:74
|
||||
msgid "Some users might try to import a large number of books, which you want to limit."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:75
|
||||
msgid "Set the value to 0 to not enforce any limit."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:78
|
||||
msgid "Set import limit to"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:80
|
||||
msgid "books every"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
msgid "days."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:86
|
||||
msgid "Set limit"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:102
|
||||
msgid "Completed"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:85
|
||||
#: bookwyrm/templates/settings/imports/imports.html:116
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:94
|
||||
#: bookwyrm/templates/settings/imports/imports.html:125
|
||||
msgid "Date Updated"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:101
|
||||
#: bookwyrm/templates/settings/imports/imports.html:132
|
||||
msgid "Pending items"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:104
|
||||
#: bookwyrm/templates/settings/imports/imports.html:135
|
||||
msgid "Successful items"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:139
|
||||
#: bookwyrm/templates/settings/imports/imports.html:170
|
||||
msgid "No matching imports found."
|
||||
msgstr ""
|
||||
|
||||
|
@ -5129,34 +5173,38 @@ msgstr ""
|
|||
msgid "Allow registration"
|
||||
msgstr "Tillat registrering"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:44
|
||||
#: bookwyrm/templates/settings/registration.html:43
|
||||
msgid "Default access level:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:61
|
||||
msgid "Require users to confirm email address"
|
||||
msgstr "Medlemmer må bekrefte e-postadresse"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:46
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
msgid "(Recommended if registration is open)"
|
||||
msgstr "(anbefales for åpen registrering)"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:51
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
msgid "Allow invite requests"
|
||||
msgstr "Tillat invitasjonsforespørsler"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:55
|
||||
#: bookwyrm/templates/settings/registration.html:72
|
||||
#: bookwyrm/templates/settings/registration_limited.html:42
|
||||
msgid "Invite request text:"
|
||||
msgstr "Invitasjonsforespørsel tekst:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
#: bookwyrm/templates/settings/registration.html:80
|
||||
#: bookwyrm/templates/settings/registration_limited.html:50
|
||||
msgid "Set a question for invite requests"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
#: bookwyrm/templates/settings/registration.html:85
|
||||
#: bookwyrm/templates/settings/registration_limited.html:55
|
||||
msgid "Question:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:73
|
||||
#: bookwyrm/templates/settings/registration.html:90
|
||||
#: bookwyrm/templates/settings/registration_limited.html:67
|
||||
msgid "Registration closed text:"
|
||||
msgstr "Registrering lukket tekst:"
|
||||
|
@ -5398,7 +5446,7 @@ msgid "Remove theme"
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/users/delete_user_form.html:5
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:38
|
||||
msgid "Permanently delete user"
|
||||
msgstr "Slett medlem for godt"
|
||||
|
||||
|
@ -5520,14 +5568,18 @@ msgid "User Actions"
|
|||
msgstr "Brukerhandlinger"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:21
|
||||
msgid "Activate user"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:27
|
||||
msgid "Suspend user"
|
||||
msgstr "Deaktiver bruker"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:26
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
msgid "Un-suspend user"
|
||||
msgstr "Reaktivér bruker"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:48
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:54
|
||||
msgid "Access level:"
|
||||
msgstr "Tilgangsnivå:"
|
||||
|
||||
|
@ -6377,33 +6429,53 @@ msgstr "%(username)s følger ingen andre medlemmer"
|
|||
msgid "No reviews or comments yet!"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:16
|
||||
#: bookwyrm/templates/user/user.html:20
|
||||
msgid "Edit profile"
|
||||
msgstr "Rediger profil"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templates/user/user.html:42
|
||||
#, python-format
|
||||
msgid "View all %(size)s"
|
||||
msgstr "Vis alle %(size)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:52
|
||||
#: bookwyrm/templates/user/user.html:56
|
||||
msgid "View all books"
|
||||
msgstr "Se alle bøker"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:59
|
||||
#: bookwyrm/templates/user/user.html:63
|
||||
#, python-format
|
||||
msgid "%(current_year)s Reading Goal"
|
||||
msgstr "%(current_year)s lesemål"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:66
|
||||
#: bookwyrm/templates/user/user.html:70
|
||||
msgid "User Activity"
|
||||
msgstr "Brukeraktivitet"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:71
|
||||
#: bookwyrm/templates/user/user.html:76
|
||||
msgid "Show RSS Options"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:82
|
||||
msgid "RSS feed"
|
||||
msgstr "RSS strøm"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:83
|
||||
#: bookwyrm/templates/user/user.html:98
|
||||
msgid "Complete feed"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:103
|
||||
msgid "Reviews only"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:108
|
||||
msgid "Quotes only"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:113
|
||||
msgid "Comments only"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:129
|
||||
msgid "No activities yet!"
|
||||
msgstr "Ingen aktivitet enda!"
|
||||
|
||||
|
@ -6447,16 +6519,43 @@ msgstr "Logg ut"
|
|||
msgid "File exceeds maximum size: 10MB"
|
||||
msgstr "Filen overskrider maksimal størrelse: 10MB"
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:14
|
||||
#, python-format
|
||||
msgid "Book List: %(name)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:22
|
||||
#, python-format
|
||||
msgid "%(num)d book - by %(user)s"
|
||||
msgid_plural "%(num)d books - by %(user)s"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: bookwyrm/templatetags/utilities.py:39
|
||||
#, python-format
|
||||
msgid "%(title)s: %(subtitle)s"
|
||||
msgstr "%(title)s: %(subtitle)s"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:34
|
||||
#: bookwyrm/views/rss_feed.py:35
|
||||
#, python-brace-format
|
||||
msgid "Status updates from {obj.display_name}"
|
||||
msgstr "Statusoppdateringer fra {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:72
|
||||
#, python-brace-format
|
||||
msgid "Reviews from {obj.display_name}"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:110
|
||||
#, python-brace-format
|
||||
msgid "Quotes from {obj.display_name}"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:148
|
||||
#, python-brace-format
|
||||
msgid "Comments from {obj.display_name}"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/views/updates.py:45
|
||||
#, python-format
|
||||
msgid "Load %(count)d unread status"
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-11 22:46+0000\n"
|
||||
"PO-Revision-Date: 2023-01-12 00:08\n"
|
||||
"POT-Creation-Date: 2023-01-30 08:21+0000\n"
|
||||
"PO-Revision-Date: 2023-01-30 17:35\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Polish\n"
|
||||
"Language: pl\n"
|
||||
|
@ -256,14 +256,14 @@ msgstr "Obserwujący"
|
|||
msgid "Private"
|
||||
msgstr "Prywatne"
|
||||
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:157
|
||||
#: bookwyrm/templates/settings/imports/imports.html:67
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:168
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/settings/users/user_admin.html:81
|
||||
#: bookwyrm/templates/settings/users/user_info.html:28
|
||||
msgid "Active"
|
||||
msgstr "Aktywne"
|
||||
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:155
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:166
|
||||
msgid "Complete"
|
||||
msgstr "Zakończone"
|
||||
|
||||
|
@ -316,19 +316,19 @@ msgstr "Cytaty"
|
|||
msgid "Everything else"
|
||||
msgstr "Wszystko inne"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home Timeline"
|
||||
msgstr "Strona główna"
|
||||
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/settings.py:217
|
||||
msgid "Home"
|
||||
msgstr "Start"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
msgid "Books Timeline"
|
||||
msgstr "Oś czasu książek"
|
||||
|
||||
#: bookwyrm/settings.py:215
|
||||
#: bookwyrm/settings.py:218
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:101
|
||||
#: bookwyrm/templates/search/layout.html:22
|
||||
#: bookwyrm/templates/search/layout.html:43
|
||||
|
@ -336,75 +336,75 @@ msgstr "Oś czasu książek"
|
|||
msgid "Books"
|
||||
msgstr "Książki"
|
||||
|
||||
#: bookwyrm/settings.py:287
|
||||
#: bookwyrm/settings.py:290
|
||||
msgid "English"
|
||||
msgstr "English (Angielski)"
|
||||
|
||||
#: bookwyrm/settings.py:288
|
||||
#: bookwyrm/settings.py:291
|
||||
msgid "Català (Catalan)"
|
||||
msgstr "Català (Kataloński)"
|
||||
|
||||
#: bookwyrm/settings.py:289
|
||||
#: bookwyrm/settings.py:292
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (Niemiecki)"
|
||||
|
||||
#: bookwyrm/settings.py:290
|
||||
#: bookwyrm/settings.py:293
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (Hiszpański)"
|
||||
|
||||
#: bookwyrm/settings.py:291
|
||||
#: bookwyrm/settings.py:294
|
||||
msgid "Euskara (Basque)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:292
|
||||
#: bookwyrm/settings.py:295
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (Galicyjski)"
|
||||
|
||||
#: bookwyrm/settings.py:293
|
||||
#: bookwyrm/settings.py:296
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (Włoski)"
|
||||
|
||||
#: bookwyrm/settings.py:294
|
||||
#: bookwyrm/settings.py:297
|
||||
msgid "Suomi (Finnish)"
|
||||
msgstr "Suomi (Fiński)"
|
||||
|
||||
#: bookwyrm/settings.py:295
|
||||
#: bookwyrm/settings.py:298
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (Francuski)"
|
||||
|
||||
#: bookwyrm/settings.py:296
|
||||
#: bookwyrm/settings.py:299
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Litewski)"
|
||||
|
||||
#: bookwyrm/settings.py:297
|
||||
#: bookwyrm/settings.py:300
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (Norweski)"
|
||||
|
||||
#: bookwyrm/settings.py:298
|
||||
#: bookwyrm/settings.py:301
|
||||
msgid "Polski (Polish)"
|
||||
msgstr "Polski"
|
||||
|
||||
#: bookwyrm/settings.py:299
|
||||
#: bookwyrm/settings.py:302
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (Brazylijski Portugalski)"
|
||||
|
||||
#: bookwyrm/settings.py:300
|
||||
#: bookwyrm/settings.py:303
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Portugalski)"
|
||||
|
||||
#: bookwyrm/settings.py:301
|
||||
#: bookwyrm/settings.py:304
|
||||
msgid "Română (Romanian)"
|
||||
msgstr "Română (Rumuński)"
|
||||
|
||||
#: bookwyrm/settings.py:302
|
||||
#: bookwyrm/settings.py:305
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Szwedzki)"
|
||||
|
||||
#: bookwyrm/settings.py:303
|
||||
#: bookwyrm/settings.py:306
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (Uproszczony chiński)"
|
||||
|
||||
#: bookwyrm/settings.py:304
|
||||
#: bookwyrm/settings.py:307
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (Tradycyjny chiński)"
|
||||
|
||||
|
@ -855,10 +855,10 @@ msgstr "ISNI:"
|
|||
#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
|
||||
#: bookwyrm/templates/settings/federation/edit_instance.html:98
|
||||
#: bookwyrm/templates/settings/federation/instance.html:105
|
||||
#: bookwyrm/templates/settings/registration.html:79
|
||||
#: bookwyrm/templates/settings/registration.html:96
|
||||
#: bookwyrm/templates/settings/registration_limited.html:76
|
||||
#: bookwyrm/templates/settings/site.html:144
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:69
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:75
|
||||
#: bookwyrm/templates/shelf/form.html:25
|
||||
#: bookwyrm/templates/snippets/reading_modals/layout.html:18
|
||||
msgid "Save"
|
||||
|
@ -1172,7 +1172,7 @@ msgstr "To jest nowe dzieło"
|
|||
#: bookwyrm/templates/guided_tour/user_profile.html:89
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:112
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:135
|
||||
#: bookwyrm/templates/user_menu.html:18
|
||||
#: bookwyrm/templates/user/user.html:87 bookwyrm/templates/user_menu.html:18
|
||||
msgid "Back"
|
||||
msgstr "Wstecz"
|
||||
|
||||
|
@ -1384,7 +1384,7 @@ msgid "Domain"
|
|||
msgstr "Domena"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:36
|
||||
#: bookwyrm/templates/import/import.html:122
|
||||
#: bookwyrm/templates/import/import.html:133
|
||||
#: bookwyrm/templates/import/import_status.html:134
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:37
|
||||
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:48
|
||||
|
@ -1397,7 +1397,7 @@ msgstr "Status"
|
|||
#: bookwyrm/templates/book/file_links/edit_links.html:37
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:41
|
||||
#: bookwyrm/templates/settings/federation/instance.html:112
|
||||
#: bookwyrm/templates/settings/imports/imports.html:110
|
||||
#: bookwyrm/templates/settings/imports/imports.html:141
|
||||
#: bookwyrm/templates/settings/reports/report_links_table.html:6
|
||||
#: bookwyrm/templates/settings/themes.html:99
|
||||
msgid "Actions"
|
||||
|
@ -1921,13 +1921,13 @@ msgid "Add to your books"
|
|||
msgstr "Dodaj do swoich książek"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:10
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:33
|
||||
#: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:37
|
||||
#: bookwyrm/templatetags/shelf_tags.py:48
|
||||
msgid "To Read"
|
||||
msgstr "Do przeczytania"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:11
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:34
|
||||
#: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templatetags/shelf_tags.py:50
|
||||
msgid "Currently Reading"
|
||||
msgstr "Obecnie czytane"
|
||||
|
@ -1937,12 +1937,12 @@ msgstr "Obecnie czytane"
|
|||
#: bookwyrm/templates/snippets/shelf_selector.html:46
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12
|
||||
#: bookwyrm/templates/user/user.html:35 bookwyrm/templatetags/shelf_tags.py:52
|
||||
#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:52
|
||||
msgid "Read"
|
||||
msgstr "Przeczytane"
|
||||
|
||||
#: bookwyrm/templates/get_started/book_preview.html:13
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:36
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:40
|
||||
msgid "Stopped Reading"
|
||||
msgstr "Zaprzestano czytania"
|
||||
|
||||
|
@ -2662,7 +2662,7 @@ msgid "This is your user profile. All your latest activities will be listed here
|
|||
msgstr "To jest Twój profil użytkownika. Wszystkie Twoje najnowsze aktywności będą tutaj widoczne. Pozostali użytkownicy BookWyrm mogą również widzieć części tej strony - to, co mogą zobaczyć zależy od Twoich ustawień prywatności."
|
||||
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:11
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:10
|
||||
#: bookwyrm/templates/user/layout.html:19 bookwyrm/templates/user/user.html:14
|
||||
msgid "User Profile"
|
||||
msgstr "Profil użytkownika"
|
||||
|
||||
|
@ -2709,85 +2709,100 @@ msgstr "Importuj książki"
|
|||
msgid "Not a valid CSV file"
|
||||
msgstr "To nie jest prawidłowy plik CSV"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:22
|
||||
#: bookwyrm/templates/import/import.html:20
|
||||
#, python-format
|
||||
msgid "Currently you are allowed to import %(import_size_limit)s books every %(import_limit_reset)s days."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:21
|
||||
#, python-format
|
||||
msgid "You have %(allowed_imports)s left."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:28
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(hours)s hours."
|
||||
msgstr "Ostatnie importy zajmowały średnio %(hours)s godzin."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:26
|
||||
#: bookwyrm/templates/import/import.html:32
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(minutes)s minutes."
|
||||
msgstr "Ostatnie importy zajmowały średnio %(minutes)s minut."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:41
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
msgid "Data source:"
|
||||
msgstr "Źródło danych:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
msgid "Goodreads (CSV)"
|
||||
msgstr "Goodreads (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:50
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
msgid "Storygraph (CSV)"
|
||||
msgstr "Storygraph (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
msgid "LibraryThing (TSV)"
|
||||
msgstr "LibraryThing (TSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
#: bookwyrm/templates/import/import.html:62
|
||||
msgid "OpenLibrary (CSV)"
|
||||
msgstr "OpenLibrary (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
msgid "Calibre (CSV)"
|
||||
msgstr "Calibre (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
#: bookwyrm/templates/import/import.html:71
|
||||
msgid "You can download your Goodreads data from the <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Import/Export page</a> of your Goodreads account."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:74
|
||||
#: bookwyrm/templates/import/import.html:80
|
||||
msgid "Data file:"
|
||||
msgstr "Plik danych:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:82
|
||||
#: bookwyrm/templates/import/import.html:88
|
||||
msgid "Include reviews"
|
||||
msgstr "Uwzględnij recenzje"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:87
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
msgid "Privacy setting for imported reviews:"
|
||||
msgstr "Ustawienia prywatności dla importowanych recenzji:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
#: bookwyrm/templates/import/import.html:100
|
||||
#: bookwyrm/templates/import/import.html:102
|
||||
#: bookwyrm/templates/preferences/layout.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:78
|
||||
msgid "Import"
|
||||
msgstr "Importuj"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:101
|
||||
#: bookwyrm/templates/import/import.html:103
|
||||
msgid "You've reached the import limit."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:112
|
||||
msgid "Imports are temporarily disabled; thank you for your patience."
|
||||
msgstr "Importowanie jest tymczasowo wyłączone; dziękujemy za Twoją cierpliwość."
|
||||
|
||||
#: bookwyrm/templates/import/import.html:108
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
msgid "Recent Imports"
|
||||
msgstr "Najnowsze recenzje"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:113
|
||||
#: bookwyrm/templates/settings/imports/imports.html:89
|
||||
#: bookwyrm/templates/import/import.html:124
|
||||
#: bookwyrm/templates/settings/imports/imports.html:120
|
||||
msgid "Date Created"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:116
|
||||
#: bookwyrm/templates/import/import.html:127
|
||||
msgid "Last Updated"
|
||||
msgstr "Najnowsza aktualizacja"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
#: bookwyrm/templates/import/import.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:129
|
||||
msgid "Items"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:128
|
||||
#: bookwyrm/templates/import/import.html:139
|
||||
msgid "No recent imports"
|
||||
msgstr "Brak ostatnich importów"
|
||||
|
||||
|
@ -2803,6 +2818,7 @@ msgid "Retry Status"
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:22
|
||||
#: bookwyrm/templates/settings/celery.html:36
|
||||
#: bookwyrm/templates/settings/imports/imports.html:6
|
||||
#: bookwyrm/templates/settings/imports/imports.html:9
|
||||
#: bookwyrm/templates/settings/layout.html:82
|
||||
|
@ -2822,7 +2838,7 @@ msgid "Refresh"
|
|||
msgstr "Odśwież"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:72
|
||||
#: bookwyrm/templates/settings/imports/imports.html:130
|
||||
#: bookwyrm/templates/settings/imports/imports.html:161
|
||||
msgid "Stop import"
|
||||
msgstr "Wstrzymaj import"
|
||||
|
||||
|
@ -2944,7 +2960,7 @@ msgid "Reject"
|
|||
msgstr "Odrzuć"
|
||||
|
||||
#: bookwyrm/templates/import/troubleshoot.html:7
|
||||
#: bookwyrm/templates/settings/imports/imports.html:107
|
||||
#: bookwyrm/templates/settings/imports/imports.html:138
|
||||
msgid "Failed items"
|
||||
msgstr ""
|
||||
|
||||
|
@ -3195,7 +3211,7 @@ msgid "Delete this list?"
|
|||
msgstr "Usunąć te listę?"
|
||||
|
||||
#: bookwyrm/templates/lists/edit_form.html:5
|
||||
#: bookwyrm/templates/lists/layout.html:18
|
||||
#: bookwyrm/templates/lists/layout.html:23
|
||||
msgid "Edit List"
|
||||
msgstr "Edytuj listę"
|
||||
|
||||
|
@ -4463,48 +4479,48 @@ msgstr "Średni priorytet"
|
|||
msgid "High priority"
|
||||
msgstr "Wysoki priorytet"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:40
|
||||
#: bookwyrm/templates/settings/celery.html:46
|
||||
msgid "Could not connect to Redis broker"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:48
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
msgid "Active Tasks"
|
||||
msgstr "Aktywne zadania"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
#: bookwyrm/templates/settings/celery.html:59
|
||||
#: bookwyrm/templates/settings/imports/imports.html:113
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:54
|
||||
#: bookwyrm/templates/settings/celery.html:60
|
||||
msgid "Task name"
|
||||
msgstr "Nazwa zadania"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:55
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
msgid "Run time"
|
||||
msgstr "Czas wykonywania"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:56
|
||||
#: bookwyrm/templates/settings/celery.html:62
|
||||
msgid "Priority"
|
||||
msgstr "Priorytet"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:61
|
||||
#: bookwyrm/templates/settings/celery.html:67
|
||||
msgid "No active tasks"
|
||||
msgstr "Brak aktywnych zadań"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:79
|
||||
#: bookwyrm/templates/settings/celery.html:85
|
||||
msgid "Workers"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:84
|
||||
#: bookwyrm/templates/settings/celery.html:90
|
||||
msgid "Uptime:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:94
|
||||
#: bookwyrm/templates/settings/celery.html:100
|
||||
msgid "Could not connect to Celery"
|
||||
msgstr "Błąd połączenia z Celery"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:101
|
||||
#: bookwyrm/templates/settings/celery.html:107
|
||||
msgid "Errors"
|
||||
msgstr "Błędy"
|
||||
|
||||
|
@ -4892,27 +4908,55 @@ msgstr ""
|
|||
msgid "Enable imports"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:71
|
||||
#: bookwyrm/templates/settings/imports/imports.html:63
|
||||
msgid "Limit the amount of imports"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:74
|
||||
msgid "Some users might try to import a large number of books, which you want to limit."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:75
|
||||
msgid "Set the value to 0 to not enforce any limit."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:78
|
||||
msgid "Set import limit to"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:80
|
||||
msgid "books every"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
msgid "days."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:86
|
||||
msgid "Set limit"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:102
|
||||
msgid "Completed"
|
||||
msgstr "Zakończone"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:85
|
||||
#: bookwyrm/templates/settings/imports/imports.html:116
|
||||
msgid "User"
|
||||
msgstr "Użytkownik"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:94
|
||||
#: bookwyrm/templates/settings/imports/imports.html:125
|
||||
msgid "Date Updated"
|
||||
msgstr "Data przesłania"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:101
|
||||
#: bookwyrm/templates/settings/imports/imports.html:132
|
||||
msgid "Pending items"
|
||||
msgstr "Oczekujące"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:104
|
||||
#: bookwyrm/templates/settings/imports/imports.html:135
|
||||
msgid "Successful items"
|
||||
msgstr "Zakończone elementy"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:139
|
||||
#: bookwyrm/templates/settings/imports/imports.html:170
|
||||
msgid "No matching imports found."
|
||||
msgstr "Nie znaleziono pasujących importów."
|
||||
|
||||
|
@ -5173,34 +5217,38 @@ msgstr "Błąd zapisywania ustawień"
|
|||
msgid "Allow registration"
|
||||
msgstr "Zezwól na rejestrację"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:44
|
||||
#: bookwyrm/templates/settings/registration.html:43
|
||||
msgid "Default access level:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:61
|
||||
msgid "Require users to confirm email address"
|
||||
msgstr "Wymagaj od użytkowników potwierdzenia adresu e-mail"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:46
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
msgid "(Recommended if registration is open)"
|
||||
msgstr "(Zalecane, gdy rejestracja jest otwarta)"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:51
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
msgid "Allow invite requests"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:55
|
||||
#: bookwyrm/templates/settings/registration.html:72
|
||||
#: bookwyrm/templates/settings/registration_limited.html:42
|
||||
msgid "Invite request text:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:63
|
||||
#: bookwyrm/templates/settings/registration.html:80
|
||||
#: bookwyrm/templates/settings/registration_limited.html:50
|
||||
msgid "Set a question for invite requests"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:68
|
||||
#: bookwyrm/templates/settings/registration.html:85
|
||||
#: bookwyrm/templates/settings/registration_limited.html:55
|
||||
msgid "Question:"
|
||||
msgstr "Pytanie:"
|
||||
|
||||
#: bookwyrm/templates/settings/registration.html:73
|
||||
#: bookwyrm/templates/settings/registration.html:90
|
||||
#: bookwyrm/templates/settings/registration_limited.html:67
|
||||
msgid "Registration closed text:"
|
||||
msgstr ""
|
||||
|
@ -5442,7 +5490,7 @@ msgid "Remove theme"
|
|||
msgstr "Usuń motyw"
|
||||
|
||||
#: bookwyrm/templates/settings/users/delete_user_form.html:5
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:38
|
||||
msgid "Permanently delete user"
|
||||
msgstr "Trwale usuń użytkownika"
|
||||
|
||||
|
@ -5564,14 +5612,18 @@ msgid "User Actions"
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:21
|
||||
msgid "Activate user"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:27
|
||||
msgid "Suspend user"
|
||||
msgstr "Zawieś użytkownika"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:26
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:32
|
||||
msgid "Un-suspend user"
|
||||
msgstr "Przywróć użytkownika"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:48
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:54
|
||||
msgid "Access level:"
|
||||
msgstr "Poziom dostępu:"
|
||||
|
||||
|
@ -6435,33 +6487,53 @@ msgstr "%(username)s nie obserwuje nikogo"
|
|||
msgid "No reviews or comments yet!"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:16
|
||||
#: bookwyrm/templates/user/user.html:20
|
||||
msgid "Edit profile"
|
||||
msgstr "Edytuj profil"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:38
|
||||
#: bookwyrm/templates/user/user.html:42
|
||||
#, python-format
|
||||
msgid "View all %(size)s"
|
||||
msgstr "Wyświetl wszystkie %(size)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:52
|
||||
#: bookwyrm/templates/user/user.html:56
|
||||
msgid "View all books"
|
||||
msgstr "Wyświetl wszystkie książki"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:59
|
||||
#: bookwyrm/templates/user/user.html:63
|
||||
#, python-format
|
||||
msgid "%(current_year)s Reading Goal"
|
||||
msgstr "Cel czytania roku %(current_year)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:66
|
||||
#: bookwyrm/templates/user/user.html:70
|
||||
msgid "User Activity"
|
||||
msgstr "Aktywność użytkownika"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:71
|
||||
#: bookwyrm/templates/user/user.html:76
|
||||
msgid "Show RSS Options"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:82
|
||||
msgid "RSS feed"
|
||||
msgstr "Kanał RSS"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:83
|
||||
#: bookwyrm/templates/user/user.html:98
|
||||
msgid "Complete feed"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:103
|
||||
msgid "Reviews only"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:108
|
||||
msgid "Quotes only"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:113
|
||||
msgid "Comments only"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/user/user.html:129
|
||||
msgid "No activities yet!"
|
||||
msgstr "Jeszcze brak aktywności!"
|
||||
|
||||
|
@ -6509,16 +6581,45 @@ msgstr "Wyloguj się"
|
|||
msgid "File exceeds maximum size: 10MB"
|
||||
msgstr "Rozmiar pliku przekracza maksymalny rozmiar: 10MB"
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:14
|
||||
#, python-format
|
||||
msgid "Book List: %(name)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templatetags/list_page_tags.py:22
|
||||
#, python-format
|
||||
msgid "%(num)d book - by %(user)s"
|
||||
msgid_plural "%(num)d books - by %(user)s"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
msgstr[3] ""
|
||||
|
||||
#: bookwyrm/templatetags/utilities.py:39
|
||||
#, python-format
|
||||
msgid "%(title)s: %(subtitle)s"
|
||||
msgstr "%(title)s: %(subtitle)s"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:34
|
||||
#: bookwyrm/views/rss_feed.py:35
|
||||
#, python-brace-format
|
||||
msgid "Status updates from {obj.display_name}"
|
||||
msgstr "Aktualizacje statusu od {obj.display_name}"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:72
|
||||
#, python-brace-format
|
||||
msgid "Reviews from {obj.display_name}"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:110
|
||||
#, python-brace-format
|
||||
msgid "Quotes from {obj.display_name}"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:148
|
||||
#, python-brace-format
|
||||
msgid "Comments from {obj.display_name}"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/views/updates.py:45
|
||||
#, python-format
|
||||
msgid "Load %(count)d unread status"
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue