mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-12-23 00:26:33 +00:00
Merge branch 'main' into import-limit
This commit is contained in:
commit
d4351cfcb4
121 changed files with 5402 additions and 2951 deletions
|
@ -194,6 +194,11 @@ class ActivityObject:
|
|||
try:
|
||||
if issubclass(type(v), ActivityObject):
|
||||
data[k] = v.serialize()
|
||||
elif isinstance(v, list):
|
||||
data[k] = [
|
||||
e.serialize() if issubclass(type(e), ActivityObject) else e
|
||||
for e in v
|
||||
]
|
||||
except TypeError:
|
||||
pass
|
||||
data = {k: v for (k, v) in data.items() if v is not None and k not in omit}
|
||||
|
@ -306,7 +311,9 @@ class Link(ActivityObject):
|
|||
|
||||
def serialize(self, **kwargs):
|
||||
"""remove fields"""
|
||||
omit = ("id", "type", "@context")
|
||||
omit = ("id", "@context")
|
||||
if self.type == "Link":
|
||||
omit += ("type",)
|
||||
return super().serialize(omit=omit)
|
||||
|
||||
|
||||
|
|
|
@ -19,6 +19,8 @@ class BookData(ActivityObject):
|
|||
viaf: str = None
|
||||
wikidata: str = None
|
||||
asin: str = None
|
||||
aasin: str = None
|
||||
isfdb: str = None
|
||||
lastEditedBy: str = None
|
||||
links: List[str] = field(default_factory=lambda: [])
|
||||
fileLinks: List[str] = field(default_factory=lambda: [])
|
||||
|
|
|
@ -18,6 +18,12 @@ def email_data():
|
|||
}
|
||||
|
||||
|
||||
def test_email(user):
|
||||
"""Just an admin checking if emails are sending"""
|
||||
data = email_data()
|
||||
send_email(user.email, *format_email("test", data))
|
||||
|
||||
|
||||
def email_confirmation_email(user):
|
||||
"""newly registered users confirm email address"""
|
||||
data = email_data()
|
||||
|
|
|
@ -55,11 +55,45 @@ class CreateInviteForm(CustomForm):
|
|||
class SiteForm(CustomForm):
|
||||
class Meta:
|
||||
model = models.SiteSettings
|
||||
exclude = ["admin_code", "install_mode"]
|
||||
fields = [
|
||||
"name",
|
||||
"instance_tagline",
|
||||
"instance_description",
|
||||
"instance_short_description",
|
||||
"default_theme",
|
||||
"code_of_conduct",
|
||||
"privacy_policy",
|
||||
"impressum",
|
||||
"show_impressum",
|
||||
"logo",
|
||||
"logo_small",
|
||||
"favicon",
|
||||
"support_link",
|
||||
"support_title",
|
||||
"admin_email",
|
||||
"footer_item",
|
||||
]
|
||||
widgets = {
|
||||
"instance_short_description": forms.TextInput(
|
||||
attrs={"aria-describedby": "desc_instance_short_description"}
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
class RegistrationForm(CustomForm):
|
||||
class Meta:
|
||||
model = models.SiteSettings
|
||||
fields = [
|
||||
"allow_registration",
|
||||
"allow_invite_requests",
|
||||
"registration_closed_text",
|
||||
"invite_request_text",
|
||||
"invite_request_question",
|
||||
"invite_question_text",
|
||||
"require_confirm_email",
|
||||
]
|
||||
|
||||
widgets = {
|
||||
"require_confirm_email": forms.CheckboxInput(
|
||||
attrs={"aria-describedby": "desc_require_confirm_email"}
|
||||
),
|
||||
|
@ -69,6 +103,23 @@ class SiteForm(CustomForm):
|
|||
}
|
||||
|
||||
|
||||
class RegistrationLimitedForm(CustomForm):
|
||||
class Meta:
|
||||
model = models.SiteSettings
|
||||
fields = [
|
||||
"registration_closed_text",
|
||||
"invite_request_text",
|
||||
"invite_request_question",
|
||||
"invite_question_text",
|
||||
]
|
||||
|
||||
widgets = {
|
||||
"invite_request_text": forms.Textarea(
|
||||
attrs={"aria-describedby": "desc_invite_request_text"}
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
class ThemeForm(CustomForm):
|
||||
class Meta:
|
||||
model = models.Theme
|
||||
|
|
|
@ -21,6 +21,7 @@ class AuthorForm(CustomForm):
|
|||
"inventaire_id",
|
||||
"librarything_key",
|
||||
"goodreads_key",
|
||||
"isfdb",
|
||||
"isni",
|
||||
]
|
||||
widgets = {
|
||||
|
|
|
@ -18,19 +18,30 @@ class CoverForm(CustomForm):
|
|||
class EditionForm(CustomForm):
|
||||
class Meta:
|
||||
model = models.Edition
|
||||
exclude = [
|
||||
"remote_id",
|
||||
"origin_id",
|
||||
"created_date",
|
||||
"updated_date",
|
||||
"edition_rank",
|
||||
"authors",
|
||||
"parent_work",
|
||||
"shelves",
|
||||
"connector",
|
||||
"search_vector",
|
||||
"links",
|
||||
"file_links",
|
||||
fields = [
|
||||
"title",
|
||||
"subtitle",
|
||||
"description",
|
||||
"series",
|
||||
"series_number",
|
||||
"languages",
|
||||
"subjects",
|
||||
"publishers",
|
||||
"first_published_date",
|
||||
"published_date",
|
||||
"cover",
|
||||
"physical_format",
|
||||
"physical_format_detail",
|
||||
"pages",
|
||||
"isbn_13",
|
||||
"isbn_10",
|
||||
"openlibrary_key",
|
||||
"inventaire_id",
|
||||
"goodreads_key",
|
||||
"oclc_number",
|
||||
"asin",
|
||||
"aasin",
|
||||
"isfdb",
|
||||
]
|
||||
widgets = {
|
||||
"title": forms.TextInput(attrs={"aria-describedby": "desc_title"}),
|
||||
|
@ -73,10 +84,15 @@ class EditionForm(CustomForm):
|
|||
"inventaire_id": forms.TextInput(
|
||||
attrs={"aria-describedby": "desc_inventaire_id"}
|
||||
),
|
||||
"goodreads_key": forms.TextInput(
|
||||
attrs={"aria-describedby": "desc_goodreads_key"}
|
||||
),
|
||||
"oclc_number": forms.TextInput(
|
||||
attrs={"aria-describedby": "desc_oclc_number"}
|
||||
),
|
||||
"ASIN": forms.TextInput(attrs={"aria-describedby": "desc_ASIN"}),
|
||||
"AASIN": forms.TextInput(attrs={"aria-describedby": "desc_AASIN"}),
|
||||
"isfdb": forms.TextInput(attrs={"aria-describedby": "desc_isfdb"}),
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -17,8 +17,8 @@ class Importer:
|
|||
("id", ["id", "book id"]),
|
||||
("title", ["title"]),
|
||||
("authors", ["author", "authors", "primary author"]),
|
||||
("isbn_10", ["isbn10", "isbn"]),
|
||||
("isbn_13", ["isbn13", "isbn", "isbns"]),
|
||||
("isbn_10", ["isbn10", "isbn", "isbn/uid"]),
|
||||
("isbn_13", ["isbn13", "isbn", "isbns", "isbn/uid"]),
|
||||
("shelf", ["shelf", "exclusive shelf", "read status", "bookshelf"]),
|
||||
("review_name", ["review name"]),
|
||||
("review_body", ["my review", "review"]),
|
||||
|
|
19
bookwyrm/management/commands/confirm_email.py
Normal file
19
bookwyrm/management/commands/confirm_email.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
""" manually confirm e-mail of user """
|
||||
from django.core.management.base import BaseCommand
|
||||
|
||||
from bookwyrm import models
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
"""command-line options"""
|
||||
|
||||
help = "Manually confirm email for user"
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument("username")
|
||||
|
||||
def handle(self, *args, **options):
|
||||
name = options["username"]
|
||||
user = models.User.objects.get(localname=name)
|
||||
user.reactivate()
|
||||
self.stdout.write(self.style.SUCCESS("User's email is now confirmed."))
|
|
@ -8,54 +8,64 @@ from bookwyrm import models
|
|||
|
||||
def init_groups():
|
||||
"""permission levels"""
|
||||
groups = ["admin", "moderator", "editor"]
|
||||
groups = ["admin", "owner", "moderator", "editor"]
|
||||
for group in groups:
|
||||
Group.objects.create(name=group)
|
||||
Group.objects.get_or_create(name=group)
|
||||
|
||||
|
||||
def init_permissions():
|
||||
"""permission types"""
|
||||
permissions = [
|
||||
{
|
||||
"codename": "manage_registration",
|
||||
"name": "allow or prevent user registration",
|
||||
"groups": ["admin"],
|
||||
},
|
||||
{
|
||||
"codename": "system_administration",
|
||||
"name": "technical controls",
|
||||
"groups": ["admin"],
|
||||
},
|
||||
{
|
||||
"codename": "edit_instance_settings",
|
||||
"name": "change the instance info",
|
||||
"groups": ["admin"],
|
||||
"groups": ["admin", "owner"],
|
||||
},
|
||||
{
|
||||
"codename": "set_user_group",
|
||||
"name": "change what group a user is in",
|
||||
"groups": ["admin", "moderator"],
|
||||
"groups": ["admin", "owner", "moderator"],
|
||||
},
|
||||
{
|
||||
"codename": "control_federation",
|
||||
"name": "control who to federate with",
|
||||
"groups": ["admin", "moderator"],
|
||||
"groups": ["admin", "owner", "moderator"],
|
||||
},
|
||||
{
|
||||
"codename": "create_invites",
|
||||
"name": "issue invitations to join",
|
||||
"groups": ["admin", "moderator"],
|
||||
"groups": ["admin", "owner", "moderator"],
|
||||
},
|
||||
{
|
||||
"codename": "moderate_user",
|
||||
"name": "deactivate or silence a user",
|
||||
"groups": ["admin", "moderator"],
|
||||
"groups": ["admin", "owner", "moderator"],
|
||||
},
|
||||
{
|
||||
"codename": "moderate_post",
|
||||
"name": "delete other users' posts",
|
||||
"groups": ["admin", "moderator"],
|
||||
"groups": ["admin", "owner", "moderator"],
|
||||
},
|
||||
{
|
||||
"codename": "edit_book",
|
||||
"name": "edit book info",
|
||||
"groups": ["admin", "moderator", "editor"],
|
||||
"groups": ["admin", "owner", "moderator", "editor"],
|
||||
},
|
||||
]
|
||||
|
||||
content_type = ContentType.objects.get_for_model(models.User)
|
||||
for permission in permissions:
|
||||
permission_obj = Permission.objects.create(
|
||||
permission_obj, _ = Permission.objects.get_or_create(
|
||||
codename=permission["codename"],
|
||||
name=permission["name"],
|
||||
content_type=content_type,
|
||||
|
|
23
bookwyrm/migrations/0167_auto_20221125_1900.py
Normal file
23
bookwyrm/migrations/0167_auto_20221125_1900.py
Normal file
|
@ -0,0 +1,23 @@
|
|||
# Generated by Django 3.2.16 on 2022-11-25 19:00
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("bookwyrm", "0166_sitesettings_imports_enabled"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="sitesettings",
|
||||
name="impressum",
|
||||
field=models.TextField(default="Add a impressum here."),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="sitesettings",
|
||||
name="show_impressum",
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
28
bookwyrm/migrations/0168_auto_20221205_1701.py
Normal file
28
bookwyrm/migrations/0168_auto_20221205_1701.py
Normal file
|
@ -0,0 +1,28 @@
|
|||
# Generated by Django 3.2.16 on 2022-12-05 17:01
|
||||
|
||||
import bookwyrm.models.fields
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("bookwyrm", "0167_auto_20221125_1900"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="author",
|
||||
name="aasin",
|
||||
field=bookwyrm.models.fields.CharField(
|
||||
blank=True, max_length=255, null=True
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="book",
|
||||
name="aasin",
|
||||
field=bookwyrm.models.fields.CharField(
|
||||
blank=True, max_length=255, null=True
|
||||
),
|
||||
),
|
||||
]
|
63
bookwyrm/migrations/0168_auto_20221205_2331.py
Normal file
63
bookwyrm/migrations/0168_auto_20221205_2331.py
Normal file
|
@ -0,0 +1,63 @@
|
|||
""" I added two new permission types and a new group to the management command that
|
||||
creates the database on install, this creates them for existing instances """
|
||||
# Generated by Django 3.2.16 on 2022-12-05 23:31
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def create_groups_and_perms(apps, schema_editor):
|
||||
"""create the new "owner" group and "system admin" permission"""
|
||||
db_alias = schema_editor.connection.alias
|
||||
group_model = apps.get_model("auth", "Group")
|
||||
# Add the "owner" group, if needed
|
||||
owner_group, group_created = group_model.objects.using(db_alias).get_or_create(
|
||||
name="owner"
|
||||
)
|
||||
|
||||
# Create perms, if needed
|
||||
user_model = apps.get_model("bookwyrm", "User")
|
||||
content_type_model = apps.get_model("contenttypes", "ContentType")
|
||||
content_type = content_type_model.objects.get_for_model(user_model)
|
||||
perms_model = apps.get_model("auth", "Permission")
|
||||
reg_perm, perm_created = perms_model.objects.using(db_alias).get_or_create(
|
||||
codename="manage_registration",
|
||||
name="allow or prevent user registration",
|
||||
content_type=content_type,
|
||||
)
|
||||
admin_perm, admin_perm_created = perms_model.objects.using(db_alias).get_or_create(
|
||||
codename="system_administration",
|
||||
name="technical controls",
|
||||
content_type=content_type,
|
||||
)
|
||||
|
||||
# Add perms to the group if anything was created
|
||||
if group_created or perm_created or admin_perm_created:
|
||||
perms = [
|
||||
"edit_instance_settings",
|
||||
"set_user_group",
|
||||
"control_federation",
|
||||
"create_invites",
|
||||
"moderate_user",
|
||||
"moderate_post",
|
||||
"edit_book",
|
||||
]
|
||||
owner_group.permissions.set(
|
||||
perms_model.objects.using(db_alias).filter(codename__in=perms).all()
|
||||
)
|
||||
|
||||
# also extend these perms to admins
|
||||
# This is get or create so the tests don't fail -- it should already exist
|
||||
admin_group, _ = group_model.objects.using(db_alias).get_or_create(name="admin")
|
||||
admin_group.permissions.add(reg_perm)
|
||||
admin_group.permissions.add(admin_perm)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("bookwyrm", "0167_auto_20221125_1900"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(create_groups_and_perms, migrations.RunPython.noop)
|
||||
]
|
28
bookwyrm/migrations/0169_auto_20221206_0902.py
Normal file
28
bookwyrm/migrations/0169_auto_20221206_0902.py
Normal file
|
@ -0,0 +1,28 @@
|
|||
# Generated by Django 3.2.16 on 2022-12-06 09:02
|
||||
|
||||
import bookwyrm.models.fields
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("bookwyrm", "0168_auto_20221205_1701"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="author",
|
||||
name="isfdb",
|
||||
field=bookwyrm.models.fields.CharField(
|
||||
blank=True, max_length=255, null=True
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="book",
|
||||
name="isfdb",
|
||||
field=bookwyrm.models.fields.CharField(
|
||||
blank=True, max_length=255, null=True
|
||||
),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,13 @@
|
|||
# Generated by Django 3.2.16 on 2022-12-11 20:00
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("bookwyrm", "0168_auto_20221205_2331"),
|
||||
("bookwyrm", "0169_auto_20221206_0902"),
|
||||
]
|
||||
|
||||
operations = []
|
|
@ -24,6 +24,9 @@ class Author(BookDataModel):
|
|||
gutenberg_id = fields.CharField(
|
||||
max_length=255, blank=True, null=True, deduplication_field=True
|
||||
)
|
||||
isfdb = fields.CharField(
|
||||
max_length=255, blank=True, null=True, deduplication_field=True
|
||||
)
|
||||
# idk probably other keys would be useful here?
|
||||
born = fields.DateTimeField(blank=True, null=True)
|
||||
died = fields.DateTimeField(blank=True, null=True)
|
||||
|
@ -60,6 +63,11 @@ class Author(BookDataModel):
|
|||
"""generate the url from the openlibrary id"""
|
||||
return f"https://openlibrary.org/authors/{self.openlibrary_key}"
|
||||
|
||||
@property
|
||||
def isfdb_link(self):
|
||||
"""generate the url from the isni id"""
|
||||
return f"https://www.isfdb.org/cgi-bin/ea.cgi?{self.isfdb}"
|
||||
|
||||
def get_remote_id(self):
|
||||
"""editions and works both use "book" instead of model_name"""
|
||||
return f"https://{DOMAIN}/author/{self.id}"
|
||||
|
|
|
@ -55,6 +55,12 @@ class BookDataModel(ObjectMixin, BookWyrmModel):
|
|||
asin = fields.CharField(
|
||||
max_length=255, blank=True, null=True, deduplication_field=True
|
||||
)
|
||||
aasin = fields.CharField(
|
||||
max_length=255, blank=True, null=True, deduplication_field=True
|
||||
)
|
||||
isfdb = fields.CharField(
|
||||
max_length=255, blank=True, null=True, deduplication_field=True
|
||||
)
|
||||
search_vector = SearchVectorField(null=True)
|
||||
|
||||
last_edited_by = fields.ForeignKey(
|
||||
|
@ -73,6 +79,11 @@ class BookDataModel(ObjectMixin, BookWyrmModel):
|
|||
"""generate the url from the inventaire id"""
|
||||
return f"https://inventaire.io/entity/{self.inventaire_id}"
|
||||
|
||||
@property
|
||||
def isfdb_link(self):
|
||||
"""generate the url from the isfdb id"""
|
||||
return f"https://www.isfdb.org/cgi-bin/title.cgi?{self.isfdb}"
|
||||
|
||||
class Meta:
|
||||
"""can't initialize this model, that wouldn't make sense"""
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ from django.forms import ClearableFileInput, ImageField as DjangoImageField
|
|||
from django.utils import timezone
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.utils.encoding import filepath_to_uri
|
||||
from markdown import markdown
|
||||
|
||||
from bookwyrm import activitypub
|
||||
from bookwyrm.connectors import get_image
|
||||
|
@ -499,6 +500,9 @@ class HtmlField(ActivitypubFieldMixin, models.TextField):
|
|||
return None
|
||||
return clean(value)
|
||||
|
||||
def field_to_activity(self, value):
|
||||
return markdown(value) if value else value
|
||||
|
||||
|
||||
class ArrayField(ActivitypubFieldMixin, DjangoArrayField):
|
||||
"""activitypub-aware array field"""
|
||||
|
|
|
@ -62,6 +62,8 @@ class SiteSettings(SiteModel):
|
|||
)
|
||||
code_of_conduct = models.TextField(default="Add a code of conduct here.")
|
||||
privacy_policy = models.TextField(default="Add a privacy policy here.")
|
||||
impressum = models.TextField(default="Add a impressum here.")
|
||||
show_impressum = models.BooleanField(default=False)
|
||||
|
||||
# registration
|
||||
allow_registration = models.BooleanField(default=False)
|
||||
|
|
|
@ -373,6 +373,7 @@ class User(OrderedCollectionPageMixin, AbstractUser):
|
|||
"""We don't actually delete the database entry"""
|
||||
# pylint: disable=attribute-defined-outside-init
|
||||
self.is_active = False
|
||||
self.avatar = ""
|
||||
# skip the logic in this class's save()
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
|
@ -390,7 +391,10 @@ class User(OrderedCollectionPageMixin, AbstractUser):
|
|||
self.is_active = True
|
||||
self.deactivation_reason = None
|
||||
self.allow_reactivation = False
|
||||
super().save(broadcast=False)
|
||||
super().save(
|
||||
broadcast=False,
|
||||
update_fields=["deactivation_reason", "is_active", "allow_reactivation"],
|
||||
)
|
||||
|
||||
@property
|
||||
def local_path(self):
|
||||
|
|
|
@ -11,7 +11,7 @@ from django.utils.translation import gettext_lazy as _
|
|||
env = Env()
|
||||
env.read_env()
|
||||
DOMAIN = env("DOMAIN")
|
||||
VERSION = "0.5.2"
|
||||
VERSION = "0.5.3"
|
||||
|
||||
RELEASE_API = env(
|
||||
"RELEASE_API",
|
||||
|
@ -21,7 +21,7 @@ RELEASE_API = env(
|
|||
PAGE_LENGTH = env("PAGE_LENGTH", 15)
|
||||
DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English")
|
||||
|
||||
JS_CACHE = "e678183c"
|
||||
JS_CACHE = "ad848b97"
|
||||
|
||||
# email
|
||||
EMAIL_BACKEND = env("EMAIL_BACKEND", "django.core.mail.backends.smtp.EmailBackend")
|
||||
|
|
|
@ -140,6 +140,10 @@ button:focus-visible .button-invisible-overlay {
|
|||
opacity: 1;
|
||||
}
|
||||
|
||||
button.button-paragraph {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
|
||||
/** States
|
||||
******************************************************************************/
|
||||
|
|
|
@ -81,7 +81,19 @@ details.dropdown .dropdown-menu a:focus-visible {
|
|||
details.details-panel {
|
||||
box-shadow: 0 0 0 1px $border;
|
||||
transition: box-shadow 0.2s ease;
|
||||
padding: 0.75rem;
|
||||
padding: 0;
|
||||
|
||||
> * {
|
||||
padding: 0.75rem;
|
||||
}
|
||||
|
||||
summary {
|
||||
position: relative;
|
||||
|
||||
.details-close {
|
||||
padding: 0.75rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
details[open].details-panel,
|
||||
|
@ -89,10 +101,6 @@ details.details-panel:hover {
|
|||
box-shadow: 0 0 0 1px $border;
|
||||
}
|
||||
|
||||
details.details-panel summary {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
details summary .details-close {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
|
|
|
@ -15,6 +15,8 @@ $danger: #872538;
|
|||
$danger-light: #481922;
|
||||
$light: #393939;
|
||||
$red: #ffa1b4;
|
||||
$black: #000;
|
||||
$white-ter: hsl(0, 0%, 90%);
|
||||
|
||||
/* book cover standins */
|
||||
$no-cover-color: #002549;
|
||||
|
@ -56,9 +58,12 @@ $link-active: $white-bis;
|
|||
$link-light: #0d1c26;
|
||||
|
||||
/* bulma overrides */
|
||||
$body-background-color: rgb(17, 18, 18);
|
||||
$background: $background-secondary;
|
||||
$menu-item-active-background-color: $link-background;
|
||||
$navbar-dropdown-item-hover-color: $white;
|
||||
$info-light: $background-body;
|
||||
$info-dark: #72b6ee;
|
||||
|
||||
/* These element's colors are hardcoded, probably a bug in bulma? */
|
||||
@media screen and (min-width: 769px) {
|
||||
|
@ -74,7 +79,7 @@ $navbar-dropdown-item-hover-color: $white;
|
|||
}
|
||||
|
||||
/* misc */
|
||||
$shadow: 0 0.5em 1em -0.125em rgba($black, 0.2), 0 0px 0 1px rgba($black, 0.02);
|
||||
$shadow: 0 0.5em 0.5em -0.125em rgba($black, 0.2), 0 0px 0 1px rgba($black, 0.02);
|
||||
$card-header-shadow: 0 0.125em 0.25em rgba($black, 0.1);
|
||||
$invisible-overlay-background-color: rgba($black, 0.66);
|
||||
$progress-value-background-color: $border-light;
|
||||
|
@ -92,6 +97,7 @@ $family-secondary: $family-sans-serif;
|
|||
color: $grey-light !important;
|
||||
}
|
||||
|
||||
|
||||
#qrcode svg {
|
||||
background-color: #a6a6a6;
|
||||
}
|
||||
|
|
|
@ -48,6 +48,12 @@ let BookWyrm = new (class {
|
|||
document
|
||||
.querySelector("#barcode-scanner-modal")
|
||||
.addEventListener("open", this.openBarcodeScanner.bind(this));
|
||||
|
||||
document
|
||||
.querySelectorAll('form[name="register"]')
|
||||
.forEach((form) =>
|
||||
form.addEventListener("submit", (e) => this.setPreferredTimezone(e, form))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -628,9 +634,9 @@ let BookWyrm = new (class {
|
|||
}
|
||||
|
||||
function toggleStatus(status) {
|
||||
for (const child of statusNode.children) {
|
||||
BookWyrm.toggleContainer(child, !child.classList.contains(status));
|
||||
}
|
||||
const template = document.querySelector(`#barcode-${status}`);
|
||||
|
||||
statusNode.replaceChildren(template ? template.content.cloneNode(true) : null);
|
||||
}
|
||||
|
||||
function initBarcodes(cameraId = null) {
|
||||
|
@ -785,4 +791,16 @@ let BookWyrm = new (class {
|
|||
|
||||
initBarcodes();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set preferred timezone in register form.
|
||||
*
|
||||
* @param {Event} event - `submit` event fired by the register form.
|
||||
* @return {undefined}
|
||||
*/
|
||||
setPreferredTimezone(event, form) {
|
||||
const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
||||
|
||||
form.querySelector('input[name="preferred_timezone"]').value = tz;
|
||||
}
|
||||
})();
|
||||
|
|
15
bookwyrm/templates/about/impressum.html
Normal file
15
bookwyrm/templates/about/impressum.html
Normal file
|
@ -0,0 +1,15 @@
|
|||
{% extends 'about/layout.html' %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{% trans "Impressum" %}{% endblock %}
|
||||
|
||||
|
||||
{% block about_content %}
|
||||
<div class="block content">
|
||||
<h2>{% trans "Impressum" %}</h2>
|
||||
<div class="content">
|
||||
{{ site.impressum | safe }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
|
@ -47,6 +47,14 @@
|
|||
{% trans "Privacy Policy" %}
|
||||
</a>
|
||||
</li>
|
||||
{% if site.show_impressum %}
|
||||
<li>
|
||||
{% url 'impressum' as path %}
|
||||
<a href="{{ path }}" {% if request.path in path %}class="is-active"{% endif %}>
|
||||
{% trans "Impressum" %}
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
{% trans "Share this page" %}
|
||||
</span>
|
||||
</summary>
|
||||
<div class="columns mt-3">
|
||||
<div class="columns">
|
||||
<div class="column is-three-fifths is-offset-one-fifth">
|
||||
|
||||
{% if year_key %}
|
||||
|
@ -123,16 +123,18 @@
|
|||
</h2>
|
||||
<p class="subtitle is-5">{% trans "That’s great!" %}</p>
|
||||
|
||||
<p class="title is-4 is-serif">
|
||||
{% blocktrans with pages=pages_average|intcomma %}That makes an average of {{ pages }} pages per book.{% endblocktrans %}
|
||||
</p>
|
||||
{% if pages > 0 %}
|
||||
<p class="title is-4 is-serif">
|
||||
{% blocktrans with pages=pages_average|intcomma %}That makes an average of {{ pages }} pages per book.{% endblocktrans %}
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{% if no_page_number %}
|
||||
<p class="subtitle is-6">
|
||||
{% blocktrans trimmed count counter=no_page_number %}
|
||||
({{ no_page_number }} book doesn’t have pages)
|
||||
(No page data was available for {{ no_page_number }} book)
|
||||
{% plural %}
|
||||
({{ no_page_number }} books don’t have pages)
|
||||
(No page data was available for {{ no_page_number }} books)
|
||||
{% endblocktrans %}
|
||||
</p>
|
||||
{% endif %}
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
<meta itemprop="name" content="{{ author.name }}">
|
||||
|
||||
{% firstof author.aliases author.born author.died as details %}
|
||||
{% firstof author.wikipedia_link author.openlibrary_key author.inventaire_id author.isni as links %}
|
||||
{% firstof author.wikipedia_link author.openlibrary_key author.inventaire_id author.isni author.isfdb as links %}
|
||||
{% if details or links %}
|
||||
<div class="column is-3">
|
||||
{% if details %}
|
||||
|
@ -81,6 +81,14 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if author.isfdb %}
|
||||
<div class="mt-1">
|
||||
<a itemprop="sameAs" href="{{ author.isfdb_link }}" rel="nofollow noopener noreferrer" target="_blank">
|
||||
{% trans "View on ISFDB" %}
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% trans "Load data" as button_text %}
|
||||
{% if author.openlibrary_key %}
|
||||
<div class="mt-1 is-flex">
|
||||
|
@ -128,6 +136,14 @@
|
|||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if author.isfdb %}
|
||||
<div>
|
||||
<a itemprop="sameAs" href="https://www.isfdb.org/cgi-bin/ea.cgi?{{ author.isfdb }}" target="_blank" rel="nofollow noopener noreferrer">
|
||||
{% trans "View ISFDB entry" %}
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
|
@ -144,7 +160,7 @@
|
|||
{% for book in books %}
|
||||
{% with book=book|author_edition:author %}
|
||||
<div class="column is-one-fifth-tablet is-half-mobile is-flex is-flex-direction-column">
|
||||
<div class="is-flex-grow-1">
|
||||
<div class="is-flex-grow-1 mb-3">
|
||||
{% include 'landing/small-book.html' with book=book %}
|
||||
</div>
|
||||
{% include 'snippets/shelve_button/shelve_button.html' with book=book %}
|
||||
|
|
|
@ -101,6 +101,13 @@
|
|||
{% include 'snippets/form_errors.html' with errors_list=form.goodreads_key.errors id="desc_goodreads_key" %}
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="label" for="id_isfdb">{% trans "ISFDB:" %}</label>
|
||||
{{ form.isfdb }}
|
||||
|
||||
{% include 'snippets/form_errors.html' with errors_list=form.isfdb.errors id="desc_isfdb" %}
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="label" for="id_isni">{% trans "ISNI:" %}</label>
|
||||
{{ form.isni }}
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<div class="block" itemscope itemtype="https://schema.org/Book">
|
||||
<div class="columns is-mobile">
|
||||
<div class="column">
|
||||
<h1 class="title" itemprop="name">
|
||||
<h1 class="title" itemprop="name" dir="auto">
|
||||
{{ book.title }}
|
||||
</h1>
|
||||
|
||||
|
@ -37,7 +37,7 @@
|
|||
content="{{ book.subtitle | escape }}"
|
||||
>
|
||||
|
||||
<span class="has-text-weight-bold">
|
||||
<span class="has-text-weight-bold" dir="auto">
|
||||
{{ book.subtitle }}
|
||||
</span>
|
||||
{% endif %}
|
||||
|
@ -52,7 +52,7 @@
|
|||
{% endif %}
|
||||
|
||||
{% if book.authors.exists %}
|
||||
<div class="subtitle">
|
||||
<div class="subtitle" dir="auto">
|
||||
{% trans "by" %} {% include 'snippets/authors.html' with book=book %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
@ -135,7 +135,7 @@
|
|||
{% trans "View on OpenLibrary" %}
|
||||
</a>
|
||||
{% if request.user.is_authenticated and perms.bookwyrm.edit_book %}
|
||||
<button class="button is-small" type="button" data-modal-open="openlibrary_sync">
|
||||
<button class="button is-small button-paragraph" type="button" data-modal-open="openlibrary_sync">
|
||||
<span class="icon icon-download" title="{{ button_text }}"></span>
|
||||
<span class="is-sr-only-mobile">{{ button_text }}</span>
|
||||
</button>
|
||||
|
@ -150,7 +150,7 @@
|
|||
</a>
|
||||
|
||||
{% if request.user.is_authenticated and perms.bookwyrm.edit_book %}
|
||||
<button class="button is-small" type="button" data-modal-open="inventaire_sync">
|
||||
<button class="button is-small button-paragraph" type="button" data-modal-open="inventaire_sync">
|
||||
<span class="icon icon-download" title="{{ button_text }}"></span>
|
||||
<span class="is-sr-only-mobile">{{ button_text }}</span>
|
||||
</button>
|
||||
|
@ -158,6 +158,13 @@
|
|||
{% endif %}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if book.isfdb %}
|
||||
<p>
|
||||
<a href="{{ book.isfdb_link }}" target="_blank" rel="nofollow noopener noreferrer">
|
||||
{% trans "View on ISFDB" %}
|
||||
</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
</section>
|
||||
</div>
|
||||
|
||||
|
@ -189,15 +196,15 @@
|
|||
|
||||
{% if user_authenticated and can_edit_book and not book|book_description %}
|
||||
{% trans 'Add Description' as button_text %}
|
||||
{% include 'snippets/toggle/open_button.html' with text=button_text controls_text="add_description" controls_uid=book.id focus="id_description" hide_active=True id="hide_description" %}
|
||||
{% include 'snippets/toggle/open_button.html' with class="mb-2" text=button_text controls_text="add_description" controls_uid=book.id focus="id_description" hide_active=True id="hide_description" %}
|
||||
|
||||
<div class="box is-hidden" id="add_description_{{ book.id }}">
|
||||
<form name="add-description" method="POST" action="{% url "add-description" book.id %}">
|
||||
{% csrf_token %}
|
||||
<p class="fields is-grouped">
|
||||
<div class="field">
|
||||
<label class="label" for="id_description_{{ book.id }}">{% trans "Description:" %}</label>
|
||||
<textarea name="description" cols="None" rows="None" class="textarea" id="id_description_{{ book.id }}"></textarea>
|
||||
</p>
|
||||
</div>
|
||||
<div class="field">
|
||||
<button class="button is-primary" type="submit">{% trans "Save" %}</button>
|
||||
{% trans "Cancel" as button_text %}
|
||||
|
@ -231,7 +238,7 @@
|
|||
{% for shelf in user_shelfbooks %}
|
||||
<li class="box">
|
||||
<a href="{{ shelf.shelf.local_path }}">{{ shelf.shelf.name }}</a>
|
||||
<div class="mb-3">
|
||||
<div class="is-pulled-right">
|
||||
{% include 'snippets/shelf_selector.html' with shelf=shelf.shelf class="is-small" readthrough=readthrough %}
|
||||
</div>
|
||||
</li>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{% spaceless %}
|
||||
{% load i18n %}
|
||||
|
||||
{% if book.isbn_13 or book.oclc_number or book.asin %}
|
||||
{% if book.isbn_13 or book.oclc_number or book.asin or book.aasin or book.isfdb %}
|
||||
<dl>
|
||||
{% if book.isbn_13 %}
|
||||
<div class="is-flex">
|
||||
|
@ -23,6 +23,27 @@
|
|||
<dd>{{ book.asin }}</dd>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if book.aasin %}
|
||||
<div class="is-flex">
|
||||
<dt class="mr-1">{% trans "Audible ASIN:" %}</dt>
|
||||
<dd>{{ book.aasin }}</dd>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if book.isfdb %}
|
||||
<div class="is-flex">
|
||||
<dt class="mr-1">{% trans "ISFDB ID:" %}</dt>
|
||||
<dd>{{ book.isfdb }}</dd>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if book.goodreads_key %}
|
||||
<div class="is-flex">
|
||||
<dt class="mr-1">{% trans "Goodreads:" %}</dt>
|
||||
<dd>{{ book.goodreads_key }}</dd>
|
||||
</div>
|
||||
{% endif %}
|
||||
</dl>
|
||||
{% endif %}
|
||||
{% endspaceless %}
|
||||
|
|
|
@ -65,17 +65,17 @@
|
|||
<input type="hidden" name="author-match-count" value="{{ author_matches|length }}">
|
||||
<div class="column is-half">
|
||||
{% for author in author_matches %}
|
||||
<fieldset>
|
||||
<fieldset class="block">
|
||||
<legend class="title is-5 mb-1">
|
||||
{% blocktrans with name=author.name %}Is "{{ name }}" one of these authors?{% endblocktrans %}
|
||||
</legend>
|
||||
{% with forloop.counter0 as counter %}
|
||||
{% for match in author.matches %}
|
||||
<label class="label">
|
||||
<label class="label mb-0">
|
||||
<input type="radio" name="author_match-{{ counter }}" value="{{ match.id }}" required>
|
||||
{{ match.name }}
|
||||
</label>
|
||||
<p class="help ml-5 mb-2">
|
||||
<p class="help ml-5 mb-0 mt-0">
|
||||
{% with book_title=match.book_set.first.title alt_title=match.bio %}
|
||||
{% if book_title %}
|
||||
<a href="{{ match.local_path }}" target="_blank" rel="nofollow noopener noreferrer">{% blocktrans trimmed %}
|
||||
|
@ -98,6 +98,9 @@
|
|||
</label>
|
||||
{% endwith %}
|
||||
</fieldset>
|
||||
{% if not forloop.last %}
|
||||
<hr aria-hidden="true">
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
{% include 'snippets/form_errors.html' with errors_list=form.languages.errors id="desc_languages" %}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="field">
|
||||
<label class="label" for="id_add_subjects">
|
||||
{% trans "Subjects:" %}
|
||||
</label>
|
||||
|
@ -327,6 +327,15 @@
|
|||
{% include 'snippets/form_errors.html' with errors_list=form.inventaire_id.errors id="desc_inventaire_id" %}
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="label" for="id_goodreads_key">
|
||||
{% trans "Goodreads key:" %}
|
||||
</label>
|
||||
{{ form.goodreads_key }}
|
||||
|
||||
{% include 'snippets/form_errors.html' with errors_list=form.goodreads_key.errors id="desc_goodreads_key" %}
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="label" for="id_oclc_number">
|
||||
{% trans "OCLC Number:" %}
|
||||
|
@ -344,6 +353,24 @@
|
|||
|
||||
{% include 'snippets/form_errors.html' with errors_list=form.ASIN.errors id="desc_ASIN" %}
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="label" for="id_aasin">
|
||||
{% trans "Audible ASIN:" %}
|
||||
</label>
|
||||
{{ form.aasin }}
|
||||
|
||||
{% include 'snippets/form_errors.html' with errors_list=form.AASIN.errors id="desc_AASIN" %}
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="label" for="id_isfdb">
|
||||
{% trans "ISFDB ID:" %}
|
||||
</label>
|
||||
{{ form.isfdb }}
|
||||
|
||||
{% include 'snippets/form_errors.html' with errors_list=form.isfdb.errors id="desc_isfdb" %}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
|
12
bookwyrm/templates/email/test/html_content.html
Normal file
12
bookwyrm/templates/email/test/html_content.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
{% extends 'email/html_layout.html' %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block content %}
|
||||
<p>
|
||||
{% blocktrans trimmed %}
|
||||
This is a test email.
|
||||
{% endblocktrans %}
|
||||
</p>
|
||||
|
||||
|
||||
{% endblock %}
|
4
bookwyrm/templates/email/test/subject.html
Normal file
4
bookwyrm/templates/email/test/subject.html
Normal file
|
@ -0,0 +1,4 @@
|
|||
{% load i18n %}
|
||||
{% blocktrans trimmed %}
|
||||
Test email
|
||||
{% endblocktrans %}
|
9
bookwyrm/templates/email/test/text_content.html
Normal file
9
bookwyrm/templates/email/test/text_content.html
Normal file
|
@ -0,0 +1,9 @@
|
|||
{% extends 'email/text_layout.html' %}
|
||||
{% load i18n %}
|
||||
{% block content %}
|
||||
{% blocktrans trimmed %}
|
||||
This is a test email.
|
||||
{% endblocktrans %}
|
||||
|
||||
|
||||
{% endblock %}
|
|
@ -2,7 +2,7 @@
|
|||
{% load i18n %}
|
||||
|
||||
{% block filter %}
|
||||
<label class="label mt-2 mb-1">Status types</label>
|
||||
<label class="label mb-1">Status types</label>
|
||||
|
||||
<div class="is-flex is-flex-direction-row is-flex-direction-column-mobile">
|
||||
{% for name, value in feed_status_types_options %}
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
{% if site.invite_request_question %}
|
||||
<div class="block">
|
||||
<label for="id_answer_register" class="label">{{ site.invite_question_text }}</label>
|
||||
<input type="answer" name="answer" maxlength="50" class="input" required="true" id="id_answer_register" aria-describedby="desc_answer_register">
|
||||
<input type="text" name="answer" maxlength="255" class="input" required="true" id="id_answer_register" aria-describedby="desc_answer_register">
|
||||
{% include 'snippets/form_errors.html' with errors_list=request_form.answer.errors id="desc_answer_register" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
<link rel="search" type="application/opensearchdescription+xml" href="{% url 'opensearch' %}" title="{% blocktrans with site_name=site.name %}{{ site_name }} search{% endblocktrans %}" />
|
||||
|
||||
<link rel="shortcut icon" type="image/x-icon" href="{% if site.favicon %}{% get_media_prefix %}{{ site.favicon }}{% else %}{% static "images/favicon.ico" %}{% endif %}">
|
||||
<link rel="apple-touch-icon" href="{% if site.logo %}{{ media_full_url }}{{ site.logo }}{% else %}{% static "images/logo.png" %}{% endif %}">
|
||||
|
||||
{% if preview_images_enabled is True %}
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
|
|
|
@ -12,12 +12,16 @@
|
|||
</p>
|
||||
</div>
|
||||
|
||||
<div class="column is-narrow is-flex">
|
||||
<div class="column is-narrow is-flex field is-grouped">
|
||||
{% if request.user == list.user %}
|
||||
<div class="control">
|
||||
{% trans "Edit List" as button_text %}
|
||||
{% include 'snippets/toggle/open_button.html' with text=button_text icon_with_text="pencil" controls_text="edit_list" focus="edit_list_header" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% include "lists/bookmark_button.html" with list=list %}
|
||||
<div class="control">
|
||||
{% include "lists/bookmark_button.html" with list=list %}
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
{% endif %}
|
||||
|
||||
{% if not items.object_list.exists %}
|
||||
<p>{% trans "This list is currently empty" %}</p>
|
||||
<p class="block">{% trans "This list is currently empty." %}</p>
|
||||
{% else %}
|
||||
<ol start="{{ items.start_index }}" class="ordered-list">
|
||||
{% for item in items %}
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
{# This happens if the list item was deleted #}
|
||||
{% blocktrans trimmed %}
|
||||
<a href="{{ related_user_link }}">{{ related_user }}</a>
|
||||
added added a book to one of your lists
|
||||
added a book to one of your lists
|
||||
{% endblocktrans %}
|
||||
{% elif related_list.curation != "curated" %}
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
{% csrf_token %}
|
||||
<p>{% trans "Scan the QR code with your authentication app and then enter the code from your app below to confirm your app is set up." %}</p>
|
||||
<div class="columns">
|
||||
<section class="column is-narrow">
|
||||
<section class="column">
|
||||
<figure class="m-4" id="qrcode">{{ qrcode | safe }}</figure>
|
||||
<details class="details-panel box">
|
||||
<summary>
|
||||
|
|
|
@ -1,48 +1,46 @@
|
|||
{% extends 'components/modal.html' %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block modal-title %}
|
||||
{% blocktrans %}
|
||||
Scan Barcode
|
||||
{% endblocktrans %}
|
||||
{% endblock %}
|
||||
|
||||
{% block modal-body %}
|
||||
<div class="block">
|
||||
<div id="barcode-scanner"></div>
|
||||
</div>
|
||||
|
||||
<div id="barcode-camera-list" class="select is-small">
|
||||
<select>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div id="barcode-status" class="block">
|
||||
<div class="grant-access is-hidden">
|
||||
<span class="icon icon-lock"></span>
|
||||
<span class="is-size-5">{% trans "Requesting camera..." %}</span><br/>
|
||||
<span>{% trans "Grant access to the camera to scan a book's barcode." %}</span>
|
||||
</div>
|
||||
<div class="access-denied is-hidden">
|
||||
<span class="icon icon-warning"></span>
|
||||
<span class="is-size-5">Access denied</span><br/>
|
||||
<span>{% trans "Could not access camera" %}</span>
|
||||
</div>
|
||||
<div class="scanning is-hidden">
|
||||
<span class="icon icon-barcode"></span>
|
||||
<span class="is-size-5">{% trans "Scanning..." context "barcode scanner" %}</span><br/>
|
||||
<span>{% trans "Align your book's barcode with the camera." %}</span>
|
||||
</div>
|
||||
<div class="found is-hidden">
|
||||
<span class="icon icon-check"></span>
|
||||
<span class="is-size-5">{% trans "ISBN scanned" context "barcode scanner" %}</span><br/>
|
||||
{% trans "Searching for book:" context "followed by ISBN" %} <span class="isbn"></span>...
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block modal-footer %}
|
||||
<button class="button" type="button" data-modal-close>{% trans "Cancel" %}</button>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% extends 'components/modal.html' %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block modal-title %}
|
||||
{% blocktrans %}
|
||||
Scan Barcode
|
||||
{% endblocktrans %}
|
||||
{% endblock %}
|
||||
|
||||
{% block modal-body %}
|
||||
<div class="block">
|
||||
<div id="barcode-scanner"></div>
|
||||
</div>
|
||||
|
||||
<div id="barcode-camera-list" class="select is-small">
|
||||
<select>
|
||||
</select>
|
||||
</div>
|
||||
<template id="barcode-grant-access">
|
||||
<span class="icon icon-lock"></span>
|
||||
<span class="is-size-5">{% trans "Requesting camera..." %}</span><br/>
|
||||
<span>{% trans "Grant access to the camera to scan a book's barcode." %}</span>
|
||||
</template>
|
||||
<template id="barcode-access-denied">
|
||||
<span class="icon icon-warning"></span>
|
||||
<span class="is-size-5">Access denied</span><br/>
|
||||
<span>{% trans "Could not access camera" %}</span>
|
||||
</template>
|
||||
<template id="barcode-scanning">
|
||||
<span class="icon icon-barcode"></span>
|
||||
<span class="is-size-5">{% trans "Scanning..." context "barcode scanner" %}</span><br/>
|
||||
<span>{% trans "Align your book's barcode with the camera." %}</span>
|
||||
</template>
|
||||
<template id="barcode-found">
|
||||
<span class="icon icon-check"></span>
|
||||
<span class="is-size-5">{% trans "ISBN scanned" context "barcode scanner" %}</span><br/>
|
||||
{% trans "Searching for book:" context "followed by ISBN" %} <span class="isbn"></span>...
|
||||
</template>
|
||||
<div id="barcode-status" class="block"></div>
|
||||
{% endblock %}
|
||||
|
||||
{% block modal-footer %}
|
||||
<button class="button" type="button" data-modal-close>{% trans "Cancel" %}</button>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
<span class="details-close icon icon-x" aria-hidden="true"></span>
|
||||
</summary>
|
||||
|
||||
<div class="mt-5">
|
||||
<div>
|
||||
<div class="is-flex is-flex-direction-row-reverse">
|
||||
<ul class="is-flex-grow-1">
|
||||
{% for result in result_set.results %}
|
||||
|
|
|
@ -145,7 +145,7 @@
|
|||
|
||||
<div class="block content">
|
||||
<h2 class="title is-4">{% trans "Current Rules" %}</h2>
|
||||
<details class="details-panel">
|
||||
<details class="details-panel box">
|
||||
<summary>
|
||||
<span class="title is-5" role="heading" aria-level="3">
|
||||
{% trans "Show rules" %} ({{ rules.count }})
|
||||
|
|
96
bookwyrm/templates/settings/email_config.html
Normal file
96
bookwyrm/templates/settings/email_config.html
Normal file
|
@ -0,0 +1,96 @@
|
|||
{% extends 'settings/layout.html' %}
|
||||
{% load humanize %}
|
||||
{% load i18n %}
|
||||
{% load celery_tags %}
|
||||
|
||||
{% block title %}{% trans "Email Configuration" %}{% endblock %}
|
||||
|
||||
{% block header %}{% trans "Email Configuration" %}{% endblock %}
|
||||
|
||||
{% block panel %}
|
||||
|
||||
{% if error %}
|
||||
<div class="notification is-danger is-light">
|
||||
<span class="icon icon-x" aria-hidden="true"></span>
|
||||
<span>
|
||||
{% trans "Error sending test email:" %}
|
||||
{{ error }}
|
||||
</span>
|
||||
</div>
|
||||
{% elif success %}
|
||||
<div class="notification is-success is-light">
|
||||
<span class="icon icon-check" aria-hidden="true"></span>
|
||||
<span>
|
||||
{% trans "Successfully sent test email." %}
|
||||
</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<section class="block content">
|
||||
<dl>
|
||||
<dt class="is-pulled-left mr-5 has-text-weight-bold">
|
||||
{% trans "Email sender:" %}
|
||||
</dt>
|
||||
<dd>
|
||||
{{ email_sender }}
|
||||
</dd>
|
||||
|
||||
<dt class="is-pulled-left mr-5 has-text-weight-bold">
|
||||
{% trans "Email backend:" %}
|
||||
</dt>
|
||||
<dd>
|
||||
<code>{{ email_backend }}</code>
|
||||
</dd>
|
||||
|
||||
<dt class="is-pulled-left mr-5 has-text-weight-bold">
|
||||
{% trans "Host:" %}
|
||||
</dt>
|
||||
<dd>
|
||||
<code>{{ email_host }}</code>
|
||||
</dd>
|
||||
|
||||
<dt class="is-pulled-left mr-5 has-text-weight-bold">
|
||||
{% trans "Host user:" %}
|
||||
</dt>
|
||||
<dd>
|
||||
<code>{% firstof email_host_user "-" %}</code>
|
||||
</dd>
|
||||
|
||||
<dt class="is-pulled-left mr-5 has-text-weight-bold">
|
||||
{% trans "Port:" %}
|
||||
</dt>
|
||||
<dd>
|
||||
<code>{{ email_port }}</code>
|
||||
</dd>
|
||||
|
||||
<dt class="is-pulled-left mr-5 has-text-weight-bold">
|
||||
{% trans "Use TLS:" %}
|
||||
</dt>
|
||||
<dd>
|
||||
{{ email_use_tls|yesno }}
|
||||
</dd>
|
||||
|
||||
<dt class="is-pulled-left mr-5 has-text-weight-bold">
|
||||
{% trans "Use SSL:" %}
|
||||
</dt>
|
||||
<dd>
|
||||
{{ email_use_ssl|yesno }}
|
||||
</dd>
|
||||
</dl>
|
||||
</section>
|
||||
<section class="block content box">
|
||||
<p>
|
||||
{% blocktrans trimmed with email=request.user.email %}
|
||||
Send test email to {{ email }}
|
||||
{% endblocktrans %}
|
||||
</p>
|
||||
<form action="{% url 'settings-email-config' %}" method="post">
|
||||
{% csrf_token %}
|
||||
<button type="submit" class="button is-success">
|
||||
{% trans "Send test email" %}
|
||||
</button>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
||||
|
|
@ -81,12 +81,14 @@
|
|||
{% url 'settings-imports' as url %}
|
||||
<a href="{{ url }}"{% if url in request.path %} class="is-active" aria-selected="true"{% endif %}>{% trans "Imports" %}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="menu-list">
|
||||
<li>
|
||||
{% url 'settings-celery' as url %}
|
||||
<a href="{{ url }}"{% if url in request.path %} class="is-active" aria-selected="true"{% endif %}>{% trans "Celery status" %}</a>
|
||||
</li>
|
||||
<li>
|
||||
{% url 'settings-email-config' as url %}
|
||||
<a href="{{ url }}"{% if url in request.path %} class="is-active" aria-selected="true"{% endif %}>{% trans "Email Configuration" %}</a>
|
||||
</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% if perms.bookwyrm.edit_instance_settings %}
|
||||
|
@ -101,10 +103,21 @@
|
|||
<a href="{{ url }}"{% if url in request.path %} class="is-active" aria-selected="true"{% endif %}>{% trans "Site Settings" %}</a>
|
||||
{% block site-subtabs %}{% endblock %}
|
||||
</li>
|
||||
<li>
|
||||
{% if perms.bookwyrm.manage_registration %}
|
||||
{% url 'settings-registration' as url %}
|
||||
<a href="{{ url }}"{% if url in request.path %} class="is-active" aria-selected="true"{% endif %}>{% trans "Registration" %}</a>
|
||||
{% else %}
|
||||
{% url 'settings-registration-limited' as url %}
|
||||
<a href="{{ url }}"{% if url in request.path %} class="is-active" aria-selected="true"{% endif %}>{% trans "Registration" %}</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% if perms.bookwyrm.system_administration %}
|
||||
<li>
|
||||
{% url 'settings-themes' as url %}
|
||||
<a href="{{ url }}"{% if url in request.path %} class="is-active" aria-selected="true"{% endif %}>{% trans "Themes" %}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</nav>
|
||||
|
|
|
@ -40,23 +40,23 @@
|
|||
</h2>
|
||||
</header>
|
||||
<div class="column is-narrow">
|
||||
<button type="button" class="button" data-modal-open="{{ domain_modal }}">
|
||||
<button type="button" class="button is-small" data-modal-open="{{ domain_modal }}">
|
||||
<span class="icon icon-pencil m-0-mobile" aria-hidden="treu"></span>
|
||||
<span class="is-sr-only-mobile">{% trans "Set display name" %}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block">
|
||||
<details class="details-panel">
|
||||
<details class="details-panel box">
|
||||
<summary>
|
||||
<span role="heading" aria-level="3" class="title is-6 mb-0">
|
||||
<span role="heading" aria-level="3" class="title is-6">
|
||||
{% trans "View links" %}
|
||||
({{ domain.links.count }})
|
||||
</span>
|
||||
<span class="details-close icon icon-x" aria-hidden="true"></span>
|
||||
</summary>
|
||||
|
||||
<div class="table-container mt-4">
|
||||
<div class="table-container pt-0">
|
||||
{% include "settings/link_domains/link_table.html" with links=domain.links.all|slice:10 %}
|
||||
</div>
|
||||
</details>
|
||||
|
|
83
bookwyrm/templates/settings/registration.html
Normal file
83
bookwyrm/templates/settings/registration.html
Normal file
|
@ -0,0 +1,83 @@
|
|||
{% extends 'settings/layout.html' %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{% trans "Registration" %}{% endblock %}
|
||||
|
||||
{% block header %}{% trans "Registration" %}{% endblock %}
|
||||
|
||||
{% block panel %}
|
||||
{% if success %}
|
||||
<div class="notification is-success is-light">
|
||||
<span class="icon icon-check" aria-hidden="true"></span>
|
||||
<span>
|
||||
{% trans "Settings saved" %}
|
||||
</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if form.errors %}
|
||||
<div class="notification is-danger is-light">
|
||||
<span class="icon icon-x" aria-hidden="true"></span>
|
||||
<span>
|
||||
{% trans "Unable to save settings" %}
|
||||
</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<form
|
||||
action="{% url 'settings-registration' %}"
|
||||
method="POST"
|
||||
class="content"
|
||||
enctype="multipart/form-data"
|
||||
>
|
||||
{% csrf_token %}
|
||||
<section class="block box" id="registration">
|
||||
<div class="field">
|
||||
<label class="label" for="id_allow_registration">
|
||||
{{ form.allow_registration }}
|
||||
{% trans "Allow registration" %}
|
||||
</label>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label mb-0" for="id_require_confirm_email">
|
||||
{{ form.require_confirm_email }}
|
||||
{% trans "Require users to confirm email address" %}
|
||||
</label>
|
||||
<p class="help" id="desc_require_confirm_email">{% trans "(Recommended if registration is open)" %}</p>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="id_allow_invite_requests">
|
||||
{{ form.allow_invite_requests }}
|
||||
{% trans "Allow invite requests" %}
|
||||
</label>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="id_invite_request_text">{% trans "Invite request text:" %}</label>
|
||||
{{ form.invite_request_text }}
|
||||
|
||||
{% include 'snippets/form_errors.html' with errors_list=form.invite_request_text.errors id="desc_invite_request_text" %}
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="id_invite_requests_question">
|
||||
{{ form.invite_request_question }}
|
||||
{% trans "Set a question for invite requests" %}
|
||||
</label>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="id_invite_question_text">
|
||||
{% trans "Question:" %}
|
||||
{{ form.invite_question_text }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="id_registration_closed_text">{% trans "Registration closed text:" %}</label>
|
||||
{{ form.registration_closed_text }}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer class="block">
|
||||
<button class="button is-primary" type="submit">{% trans "Save" %}</button>
|
||||
</footer>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
81
bookwyrm/templates/settings/registration_limited.html
Normal file
81
bookwyrm/templates/settings/registration_limited.html
Normal file
|
@ -0,0 +1,81 @@
|
|||
{% extends 'settings/layout.html' %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{% trans "Registration" %}{% endblock %}
|
||||
|
||||
{% block header %}{% trans "Registration" %}{% endblock %}
|
||||
|
||||
{% block panel %}
|
||||
{% if success %}
|
||||
<div class="notification is-success is-light">
|
||||
<span class="icon icon-check" aria-hidden="true"></span>
|
||||
<span>
|
||||
{% trans "Settings saved" %}
|
||||
</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if form.errors %}
|
||||
<div class="notification is-danger is-light">
|
||||
<span class="icon icon-x" aria-hidden="true"></span>
|
||||
<span>
|
||||
{% trans "Unable to save settings" %}
|
||||
</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if site.allow_registration %}
|
||||
<div class="notification">
|
||||
{% trans "Registration is enabled on this instance" %}
|
||||
</div>
|
||||
{% else %}
|
||||
<form
|
||||
action="{% url 'settings-registration-limited' %}"
|
||||
method="POST"
|
||||
class="content"
|
||||
enctype="multipart/form-data"
|
||||
>
|
||||
{% csrf_token %}
|
||||
<section class="block box" id="registration">
|
||||
{% if site.allow_invite_requests %}
|
||||
<div class="field">
|
||||
<label class="label" for="id_invite_request_text">{% trans "Invite request text:" %}</label>
|
||||
{{ form.invite_request_text }}
|
||||
|
||||
{% include 'snippets/form_errors.html' with errors_list=form.invite_request_text.errors id="desc_invite_request_text" %}
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="id_invite_requests_question">
|
||||
{{ form.invite_request_question }}
|
||||
{% trans "Set a question for invite requests" %}
|
||||
</label>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="id_invite_question_text">
|
||||
{% trans "Question:" %}
|
||||
{{ form.invite_question_text }}
|
||||
</label>
|
||||
</div>
|
||||
{% else %}
|
||||
<input type="hidden" name="invite_request_text" value="{{ form.invite_request_text.value }}">
|
||||
<input type="hidden" name="invite_request_question" value="{{ form.invite_request_question.value }}">
|
||||
<input type="hidden" name="invite_question_text" value="{{ form.invite_question_text.value }}">
|
||||
{% endif %}
|
||||
|
||||
{% if not site.allow_invite_requests and not site.allow_registration %}
|
||||
<div class="field">
|
||||
<label class="label" for="id_registration_closed_text">{% trans "Registration closed text:" %}</label>
|
||||
{{ form.registration_closed_text }}
|
||||
</div>
|
||||
{% else %}
|
||||
<input type="hidden" name="registration_closed_text" value="{{ form.registration_closed_text.value }}">
|
||||
{% endif %}
|
||||
</section>
|
||||
|
||||
<footer class="block">
|
||||
<button class="button is-primary" type="submit">{% trans "Save" %}</button>
|
||||
</footer>
|
||||
</form>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
@ -10,7 +10,6 @@
|
|||
<li><a href="#instance-info">{% trans "Instance Info" %}</a></li>
|
||||
<li><a href="#display">{% trans "Display" %}</a></li>
|
||||
<li><a href="#footer">{% trans "Footer Content" %}</a></li>
|
||||
<li><a href="#registration">{% trans "Registration" %}</a></li>
|
||||
</ul>
|
||||
{% endblock %}
|
||||
|
||||
|
@ -68,6 +67,19 @@
|
|||
<label class="label" for="id_privacy_policy">{% trans "Privacy Policy:" %}</label>
|
||||
{{ site_form.privacy_policy }}
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="label" for="id_impressum">{% trans "Impressum:" %}</label>
|
||||
{{ site_form.impressum }}
|
||||
</div>
|
||||
<div class="field is-horizontal">
|
||||
<div class="field mr-2">
|
||||
<label class="label" for="id_show_impressum">{% trans "Include impressum:" %}</label>
|
||||
</div>
|
||||
<div class="control">
|
||||
{{ site_form.show_impressum }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
@ -128,55 +140,6 @@
|
|||
</div>
|
||||
</section>
|
||||
|
||||
<hr aria-hidden="true">
|
||||
|
||||
<section class="block" id="registration">
|
||||
<h2 class="title is-4">{% trans "Registration" %}</h2>
|
||||
<div class="box">
|
||||
<div class="field">
|
||||
<label class="label" for="id_allow_registration">
|
||||
{{ site_form.allow_registration }}
|
||||
{% trans "Allow registration" %}
|
||||
</label>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label mb-0" for="id_require_confirm_email">
|
||||
{{ site_form.require_confirm_email }}
|
||||
{% trans "Require users to confirm email address" %}
|
||||
</label>
|
||||
<p class="help" id="desc_require_confirm_email">{% trans "(Recommended if registration is open)" %}</p>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="id_allow_invite_requests">
|
||||
{{ site_form.allow_invite_requests }}
|
||||
{% trans "Allow invite requests" %}
|
||||
</label>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="id_invite_requests_question">
|
||||
{{ site_form.invite_request_question }}
|
||||
{% trans "Set a question for invite requests" %}
|
||||
</label>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="id_invite_question_text">
|
||||
{% trans "Question:" %}
|
||||
{{ site_form.invite_question_text }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="id_registration_closed_text">{% trans "Registration closed text:" %}</label>
|
||||
{{ site_form.registration_closed_text }}
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="id_invite_request_text">{% trans "Invite request text:" %}</label>
|
||||
{{ site_form.invite_request_text }}
|
||||
|
||||
{% include 'snippets/form_errors.html' with errors_list=site_form.invite_request_text.errors id="desc_invite_request_text" %}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer class="block">
|
||||
<button class="button is-primary" type="submit">{% trans "Save" %}</button>
|
||||
</footer>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
{% csrf_token %}
|
||||
<p>
|
||||
{% blocktrans trimmed with username=user.localname %}
|
||||
Are you sure you want to delete <strong>{{ username}}</strong>'s account? This action cannot be undone. To proceed, please enter your password to confirm deletion.
|
||||
Are you sure you want to delete <strong>{{username}}</strong>'s account? This action cannot be undone. To proceed, please enter your password to confirm deletion.
|
||||
{% endblocktrans %}
|
||||
</p>
|
||||
<div class="field">
|
||||
|
|
|
@ -134,7 +134,7 @@
|
|||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="block">
|
||||
<div class="block mt-2">
|
||||
{% include 'shelf/edit_shelf_form.html' with controls_text="edit_shelf_form" %}
|
||||
</div>
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<span class="details-close icon icon-x is-{{ size|default:'normal' }}" aria-hidden="true"></span>
|
||||
</summary>
|
||||
|
||||
<div class="mt-3">
|
||||
<div>
|
||||
<form id="filters" method="{{ method|default:'get' }}" action="{{ action|default:request.path }}">
|
||||
{% if method == 'post' %}
|
||||
{% csrf_token %}
|
||||
|
@ -34,7 +34,7 @@
|
|||
{% if sort %}
|
||||
<input type="hidden" name="sort" value="{{ sort }}">
|
||||
{% endif %}
|
||||
<div class="mt-3 columns filters-fields is-align-items-stretch">
|
||||
<div class="columns filters-fields is-align-items-stretch">
|
||||
{% block filter_fields %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
|
|
|
@ -29,6 +29,11 @@
|
|||
<p>
|
||||
<a href ="{% url 'privacy' %}">{% trans "Privacy Policy" %}</a>
|
||||
</p>
|
||||
{% if site.show_impressum %}
|
||||
<p>
|
||||
<a href ="{% url 'impressum' %}">{% trans "Impressum" %}</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="column content">
|
||||
{% if site.support_link %}
|
||||
|
|
|
@ -58,6 +58,8 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="preferred_timezone" />
|
||||
|
||||
<div class="field">
|
||||
<div class="control">
|
||||
<button class="button is-primary" type="submit">
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
<div class="card-footer-item">
|
||||
{% trans "Reply" as button_text %}
|
||||
{% include 'snippets/toggle/toggle_button.html' with controls_text="show_comment" controls_uid=status.id text=button_text icon_with_text="comment" class="is-small is-light toggle-button" focus="id_content_reply" %}
|
||||
{% include 'snippets/toggle/toggle_button.html' with controls_text="show_comment" controls_uid=status.id text=button_text icon_with_text="comment" class="is-small is-light is-transparent toggle-button" focus="id_content_reply" %}
|
||||
</div>
|
||||
<div class="card-footer-item">
|
||||
{% include 'snippets/boost_button.html' with status=status %}
|
||||
|
@ -42,7 +42,7 @@
|
|||
</div>
|
||||
{% if not moderation_mode %}
|
||||
<div class="card-footer-item">
|
||||
{% include 'snippets/status/status_options.html' with class="is-small is-light" right=True %}
|
||||
{% include 'snippets/status/status_options.html' with class="is-small is-light is-transparent" right=True %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
|
|
|
@ -66,6 +66,10 @@
|
|||
<li{% if url == request.path or url == request.path|add:'/' %} class="is-active"{% endif %}>
|
||||
<a href="{{ url }}">{% trans "Activity" %}</a>
|
||||
</li>
|
||||
{% url 'user-reviews-comments' user|username as url %}
|
||||
<li{% if url == request.path or url == request.path|add:'/' %} class="is-active"{% endif %}>
|
||||
<a href="{{ url }}">{% trans "Reviews and Comments" %}</a>
|
||||
</li>
|
||||
{% if is_self or user.goal.exists %}
|
||||
{% now 'Y' as year %}
|
||||
{% url 'user-goal' user|username year as url %}
|
||||
|
|
30
bookwyrm/templates/user/reviews_comments.html
Normal file
30
bookwyrm/templates/user/reviews_comments.html
Normal file
|
@ -0,0 +1,30 @@
|
|||
{% extends 'user/layout.html' %}
|
||||
{% load i18n %}
|
||||
{% load utilities %}
|
||||
|
||||
{% block title %}{{ user.display_name }}{% endblock %}
|
||||
|
||||
{% block header %}
|
||||
<div class="columns is-mobile">
|
||||
<div class="column">
|
||||
<h1 class="title">{% trans "Reviews and Comments" %}</h1>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block panel %}
|
||||
<div>
|
||||
{% for activity in activities %}
|
||||
<div class="block" id="feed_{{ activity.id }}">
|
||||
{% include 'snippets/status/status.html' with status=activity %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% if not activities %}
|
||||
<div class="block">
|
||||
<p>{% trans "No reviews or comments yet!" %}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% include 'snippets/pagination.html' with page=activities path=path %}
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -21,6 +21,7 @@
|
|||
"openlibrary_key": "OL29486417M",
|
||||
"librarything_key": null,
|
||||
"goodreads_key": null,
|
||||
"isfdb": null,
|
||||
"attachment": [
|
||||
{
|
||||
"url": "https://bookwyrm.social/images/covers/50202953._SX318_.jpg",
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Title,Authors,Contributors,ISBN,Format,Read Status,Date Added,Last Date Read,Dates Read,Read Count,Moods,Pace,Character- or Plot-Driven?,Strong Character Development?,Loveable Characters?,Diverse Characters?,Flawed Characters?,Star Rating,Review,Content Warnings,Content Warning Description,Tags,Owned?
|
||||
Always Coming Home,"Ursula K. Le Guin, Todd Barton, Margaret Chodos-Irvine","",,,to-read,2021/05/10,"","",0,"",,,,,,,,,"",,"",No
|
||||
Subprime Attention Crisis,Tim Hwang,"",,,read,2021/05/10,"","",1,informative,fast,,,,,,5.0,"","","","",No
|
||||
Title,Authors,Contributors,ISBN/UID,Format,Read Status,Date Added,Last Date Read,Dates Read,Read Count,Moods,Pace,Character- or Plot-Driven?,Strong Character Development?,Loveable Characters?,Diverse Characters?,Flawed Characters?,Star Rating,Review,Content Warnings,Content Warning Description,Tags,Owned?
|
||||
Always Coming Home,"Ursula K. Le Guin, Todd Barton, Margaret Chodos-Irvine","",9780520227354,,to-read,2021/05/10,"","",0,"",,,,,,,,,"",,"",No
|
||||
Subprime Attention Crisis,Tim Hwang,"",0374538654,,read,2021/05/10,"","",1,informative,fast,,,,,,5.0,"","","","",No
|
||||
|
|
|
|
@ -53,13 +53,19 @@ class StorygraphImport(TestCase):
|
|||
models.ImportItem.objects.filter(job=import_job).order_by("index").all()
|
||||
)
|
||||
self.assertEqual(len(import_items), 2)
|
||||
self.assertEqual(import_items[0].index, 0)
|
||||
self.assertEqual(import_items[0].normalized_data["title"], "Always Coming Home")
|
||||
self.assertEqual(import_items[1].index, 1)
|
||||
|
||||
always_book = import_items[0]
|
||||
self.assertEqual(always_book.index, 0)
|
||||
self.assertEqual(always_book.normalized_data["title"], "Always Coming Home")
|
||||
self.assertEqual(always_book.isbn, "9780520227354")
|
||||
|
||||
subprime_book = import_items[1]
|
||||
self.assertEqual(subprime_book.index, 1)
|
||||
self.assertEqual(
|
||||
import_items[1].normalized_data["title"], "Subprime Attention Crisis"
|
||||
subprime_book.normalized_data["title"], "Subprime Attention Crisis"
|
||||
)
|
||||
self.assertEqual(import_items[1].normalized_data["rating"], "5.0")
|
||||
self.assertEqual(subprime_book.normalized_data["rating"], "5.0")
|
||||
self.assertEqual(subprime_book.isbn, "0374538654")
|
||||
|
||||
def test_handle_imported_book(self, *_):
|
||||
"""storygraph import added a book, this adds related connections"""
|
||||
|
|
|
@ -12,7 +12,7 @@ class InitDB(TestCase):
|
|||
def test_init_groups(self):
|
||||
"""Create groups"""
|
||||
initdb.init_groups()
|
||||
self.assertEqual(Group.objects.count(), 3)
|
||||
self.assertEqual(Group.objects.count(), 4)
|
||||
self.assertTrue(Group.objects.filter(name="admin").exists())
|
||||
self.assertTrue(Group.objects.filter(name="moderator").exists())
|
||||
self.assertTrue(Group.objects.filter(name="editor").exists())
|
||||
|
@ -87,7 +87,7 @@ class InitDB(TestCase):
|
|||
command.handle()
|
||||
|
||||
# everything should have been called
|
||||
self.assertEqual(Group.objects.count(), 3)
|
||||
self.assertEqual(Group.objects.count(), 4)
|
||||
self.assertTrue(Permission.objects.exists())
|
||||
self.assertEqual(models.Connector.objects.count(), 3)
|
||||
self.assertEqual(models.SiteSettings.objects.count(), 1)
|
||||
|
@ -99,7 +99,7 @@ class InitDB(TestCase):
|
|||
command.handle(limit="group")
|
||||
|
||||
# everything should have been called
|
||||
self.assertEqual(Group.objects.count(), 3)
|
||||
self.assertEqual(Group.objects.count(), 4)
|
||||
self.assertEqual(models.Connector.objects.count(), 0)
|
||||
self.assertEqual(models.SiteSettings.objects.count(), 0)
|
||||
self.assertEqual(models.LinkDomain.objects.count(), 0)
|
||||
|
|
|
@ -383,16 +383,16 @@ class ActivitypubMixins(TestCase):
|
|||
self.assertEqual(page_1.partOf, "http://fish.com/")
|
||||
self.assertEqual(page_1.id, "http://fish.com/?page=1")
|
||||
self.assertEqual(page_1.next, "http://fish.com/?page=2")
|
||||
self.assertEqual(page_1.orderedItems[0]["content"], "test status 29")
|
||||
self.assertEqual(page_1.orderedItems[1]["content"], "test status 28")
|
||||
self.assertEqual(page_1.orderedItems[0]["content"], "<p>test status 29</p>")
|
||||
self.assertEqual(page_1.orderedItems[1]["content"], "<p>test status 28</p>")
|
||||
|
||||
page_2 = to_ordered_collection_page(
|
||||
models.Status.objects.all(), "http://fish.com/", page=2
|
||||
)
|
||||
self.assertEqual(page_2.partOf, "http://fish.com/")
|
||||
self.assertEqual(page_2.id, "http://fish.com/?page=2")
|
||||
self.assertEqual(page_2.orderedItems[0]["content"], "test status 14")
|
||||
self.assertEqual(page_2.orderedItems[-1]["content"], "test status 0")
|
||||
self.assertEqual(page_2.orderedItems[0]["content"], "<p>test status 14</p>")
|
||||
self.assertEqual(page_2.orderedItems[-1]["content"], "<p>test status 0</p>")
|
||||
|
||||
def test_to_ordered_collection(self, *_):
|
||||
"""convert a queryset into an ordered collection object"""
|
||||
|
@ -420,8 +420,8 @@ class ActivitypubMixins(TestCase):
|
|||
)
|
||||
self.assertEqual(page_2.partOf, "http://fish.com/")
|
||||
self.assertEqual(page_2.id, "http://fish.com/?page=2")
|
||||
self.assertEqual(page_2.orderedItems[0]["content"], "test status 14")
|
||||
self.assertEqual(page_2.orderedItems[-1]["content"], "test status 0")
|
||||
self.assertEqual(page_2.orderedItems[0]["content"], "<p>test status 14</p>")
|
||||
self.assertEqual(page_2.orderedItems[-1]["content"], "<p>test status 0</p>")
|
||||
|
||||
def test_broadcast_task(self, *_):
|
||||
"""Should be calling asyncio"""
|
||||
|
|
|
@ -132,7 +132,7 @@ class Status(TestCase):
|
|||
activity = status.to_activity()
|
||||
self.assertEqual(activity["id"], status.remote_id)
|
||||
self.assertEqual(activity["type"], "Note")
|
||||
self.assertEqual(activity["content"], "test content")
|
||||
self.assertEqual(activity["content"], "<p>test content</p>")
|
||||
self.assertEqual(activity["sensitive"], False)
|
||||
|
||||
def test_status_to_activity_tombstone(self, *_):
|
||||
|
@ -156,7 +156,7 @@ class Status(TestCase):
|
|||
activity = status.to_activity(pure=True)
|
||||
self.assertEqual(activity["id"], status.remote_id)
|
||||
self.assertEqual(activity["type"], "Note")
|
||||
self.assertEqual(activity["content"], "test content")
|
||||
self.assertEqual(activity["content"], "<p>test content</p>")
|
||||
self.assertEqual(activity["sensitive"], False)
|
||||
self.assertEqual(activity["attachment"], [])
|
||||
|
||||
|
@ -170,7 +170,7 @@ class Status(TestCase):
|
|||
activity = status.to_activity()
|
||||
self.assertEqual(activity["id"], status.remote_id)
|
||||
self.assertEqual(activity["type"], "GeneratedNote")
|
||||
self.assertEqual(activity["content"], "test content")
|
||||
self.assertEqual(activity["content"], "<p>test content</p>")
|
||||
self.assertEqual(activity["sensitive"], False)
|
||||
self.assertEqual(len(activity["tag"]), 2)
|
||||
|
||||
|
@ -191,14 +191,14 @@ class Status(TestCase):
|
|||
self.assertEqual(activity["type"], "Note")
|
||||
self.assertEqual(activity["sensitive"], False)
|
||||
self.assertIsInstance(activity["attachment"], list)
|
||||
self.assertEqual(activity["attachment"][0].type, "Document")
|
||||
self.assertEqual(activity["attachment"][0]["type"], "Document")
|
||||
self.assertTrue(
|
||||
re.match(
|
||||
r"https:\/\/your.domain.here\/images\/covers\/test_[A-z0-9]+.jpg",
|
||||
activity["attachment"][0].url,
|
||||
r"https:\/\/your.domain.here\/images\/covers\/test(_[A-z0-9]+)?.jpg",
|
||||
activity["attachment"][0]["url"],
|
||||
)
|
||||
)
|
||||
self.assertEqual(activity["attachment"][0].name, "Test Edition")
|
||||
self.assertEqual(activity["attachment"][0]["name"], "Test Edition")
|
||||
|
||||
def test_comment_to_activity(self, *_):
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
|
@ -208,7 +208,7 @@ class Status(TestCase):
|
|||
activity = status.to_activity()
|
||||
self.assertEqual(activity["id"], status.remote_id)
|
||||
self.assertEqual(activity["type"], "Comment")
|
||||
self.assertEqual(activity["content"], "test content")
|
||||
self.assertEqual(activity["content"], "<p>test content</p>")
|
||||
self.assertEqual(activity["inReplyToBook"], self.book.remote_id)
|
||||
|
||||
def test_comment_to_pure_activity(self, *_):
|
||||
|
@ -223,14 +223,14 @@ class Status(TestCase):
|
|||
activity["content"],
|
||||
f'test content<p>(comment on <a href="{self.book.remote_id}">"Test Edition"</a>)</p>',
|
||||
)
|
||||
self.assertEqual(activity["attachment"][0].type, "Document")
|
||||
self.assertEqual(activity["attachment"][0]["type"], "Document")
|
||||
# self.assertTrue(
|
||||
# re.match(
|
||||
# r"https:\/\/your.domain.here\/images\/covers\/test_[A-z0-9]+.jpg",
|
||||
# activity["attachment"][0].url,
|
||||
# )
|
||||
# )
|
||||
self.assertEqual(activity["attachment"][0].name, "Test Edition")
|
||||
self.assertEqual(activity["attachment"][0]["name"], "Test Edition")
|
||||
|
||||
def test_quotation_to_activity(self, *_):
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
|
@ -243,8 +243,8 @@ class Status(TestCase):
|
|||
activity = status.to_activity()
|
||||
self.assertEqual(activity["id"], status.remote_id)
|
||||
self.assertEqual(activity["type"], "Quotation")
|
||||
self.assertEqual(activity["quote"], "a sickening sense")
|
||||
self.assertEqual(activity["content"], "test content")
|
||||
self.assertEqual(activity["quote"], "<p>a sickening sense</p>")
|
||||
self.assertEqual(activity["content"], "<p>test content</p>")
|
||||
self.assertEqual(activity["inReplyToBook"], self.book.remote_id)
|
||||
|
||||
def test_quotation_to_pure_activity(self, *_):
|
||||
|
@ -262,14 +262,14 @@ class Status(TestCase):
|
|||
activity["content"],
|
||||
f'a sickening sense <p>-- <a href="{self.book.remote_id}">"Test Edition"</a></p>test content',
|
||||
)
|
||||
self.assertEqual(activity["attachment"][0].type, "Document")
|
||||
self.assertEqual(activity["attachment"][0]["type"], "Document")
|
||||
self.assertTrue(
|
||||
re.match(
|
||||
r"https:\/\/your.domain.here\/images\/covers\/test_[A-z0-9]+.jpg",
|
||||
activity["attachment"][0].url,
|
||||
activity["attachment"][0]["url"],
|
||||
)
|
||||
)
|
||||
self.assertEqual(activity["attachment"][0].name, "Test Edition")
|
||||
self.assertEqual(activity["attachment"][0]["name"], "Test Edition")
|
||||
|
||||
def test_review_to_activity(self, *_):
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
|
@ -285,7 +285,7 @@ class Status(TestCase):
|
|||
self.assertEqual(activity["type"], "Review")
|
||||
self.assertEqual(activity["rating"], 3)
|
||||
self.assertEqual(activity["name"], "Review name")
|
||||
self.assertEqual(activity["content"], "test content")
|
||||
self.assertEqual(activity["content"], "<p>test content</p>")
|
||||
self.assertEqual(activity["inReplyToBook"], self.book.remote_id)
|
||||
|
||||
def test_review_to_pure_activity(self, *_):
|
||||
|
@ -305,14 +305,14 @@ class Status(TestCase):
|
|||
f'Review of "{self.book.title}" (3 stars): Review\'s name',
|
||||
)
|
||||
self.assertEqual(activity["content"], "test content")
|
||||
self.assertEqual(activity["attachment"][0].type, "Document")
|
||||
self.assertEqual(activity["attachment"][0]["type"], "Document")
|
||||
self.assertTrue(
|
||||
re.match(
|
||||
r"https:\/\/your.domain.here\/images\/covers\/test_[A-z0-9]+.jpg",
|
||||
activity["attachment"][0].url,
|
||||
activity["attachment"][0]["url"],
|
||||
)
|
||||
)
|
||||
self.assertEqual(activity["attachment"][0].name, "Test Edition")
|
||||
self.assertEqual(activity["attachment"][0]["name"], "Test Edition")
|
||||
|
||||
def test_review_to_pure_activity_no_rating(self, *_):
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
|
@ -330,14 +330,14 @@ class Status(TestCase):
|
|||
f'Review of "{self.book.title}": Review name',
|
||||
)
|
||||
self.assertEqual(activity["content"], "test content")
|
||||
self.assertEqual(activity["attachment"][0].type, "Document")
|
||||
self.assertEqual(activity["attachment"][0]["type"], "Document")
|
||||
self.assertTrue(
|
||||
re.match(
|
||||
r"https:\/\/your.domain.here\/images\/covers\/test_[A-z0-9]+.jpg",
|
||||
activity["attachment"][0].url,
|
||||
activity["attachment"][0]["url"],
|
||||
)
|
||||
)
|
||||
self.assertEqual(activity["attachment"][0].name, "Test Edition")
|
||||
self.assertEqual(activity["attachment"][0]["name"], "Test Edition")
|
||||
|
||||
def test_reviewrating_to_pure_activity(self, *_):
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
|
@ -353,14 +353,14 @@ class Status(TestCase):
|
|||
activity["content"],
|
||||
f'rated <em><a href="{self.book.remote_id}">{self.book.title}</a></em>: 3 stars',
|
||||
)
|
||||
self.assertEqual(activity["attachment"][0].type, "Document")
|
||||
self.assertEqual(activity["attachment"][0]["type"], "Document")
|
||||
self.assertTrue(
|
||||
re.match(
|
||||
r"https:\/\/your.domain.here\/images\/covers\/test_[A-z0-9]+.jpg",
|
||||
activity["attachment"][0].url,
|
||||
activity["attachment"][0]["url"],
|
||||
)
|
||||
)
|
||||
self.assertEqual(activity["attachment"][0].name, "Test Edition")
|
||||
self.assertEqual(activity["attachment"][0]["name"], "Test Edition")
|
||||
|
||||
def test_favorite(self, *_):
|
||||
"""fav a status"""
|
||||
|
|
46
bookwyrm/tests/views/admin/test_email_config.py
Normal file
46
bookwyrm/tests/views/admin/test_email_config.py
Normal file
|
@ -0,0 +1,46 @@
|
|||
""" test for app action functionality """
|
||||
from unittest.mock import patch
|
||||
|
||||
from django.contrib.auth.models import Group
|
||||
from django.template.response import TemplateResponse
|
||||
from django.test import TestCase
|
||||
from django.test.client import RequestFactory
|
||||
|
||||
from bookwyrm import models, views
|
||||
from bookwyrm.management.commands import initdb
|
||||
from bookwyrm.tests.validate_html import validate_html
|
||||
|
||||
|
||||
class EmailConfigViews(TestCase):
|
||||
"""every response to a get request, html or json"""
|
||||
|
||||
# pylint: disable=invalid-name
|
||||
def setUp(self):
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch(
|
||||
"bookwyrm.activitystreams.populate_stream_task.delay"
|
||||
), patch("bookwyrm.lists_stream.populate_lists_task.delay"):
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
"mouse@mouse.mouse",
|
||||
"password",
|
||||
local=True,
|
||||
localname="mouse",
|
||||
)
|
||||
initdb.init_groups()
|
||||
initdb.init_permissions()
|
||||
group = Group.objects.get(name="admin")
|
||||
self.local_user.groups.set([group])
|
||||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_email_config_get(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.EmailConfig.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
result = view(request)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
|
@ -14,6 +14,7 @@ from bookwyrm.tests.validate_html import validate_html
|
|||
class SiteSettingsViews(TestCase):
|
||||
"""Edit site settings"""
|
||||
|
||||
# pylint: disable=invalid-name
|
||||
def setUp(self):
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
|
@ -56,6 +57,8 @@ class SiteSettingsViews(TestCase):
|
|||
form.data["invite_request_text"] = "blah"
|
||||
form.data["code_of_conduct"] = "blah"
|
||||
form.data["privacy_policy"] = "blah"
|
||||
form.data["show_impressum"] = False
|
||||
form.data["impressum"] = "bleh"
|
||||
request = self.factory.post("", form.data)
|
||||
request.user = self.local_user
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
""" test for app action functionality """
|
||||
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
|
||||
|
@ -77,6 +78,28 @@ class LandingViews(TestCase):
|
|||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_impressum_page_off(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.impressum
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
with self.assertRaises(Http404):
|
||||
view(request)
|
||||
|
||||
def test_impressum_page_on(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
site = models.SiteSettings.objects.get()
|
||||
site.show_impressum = True
|
||||
site.save()
|
||||
|
||||
view = views.impressum
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
result = view(request)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_landing(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Landing.as_view()
|
||||
|
|
|
@ -58,6 +58,7 @@ class RegisterViews(TestCase):
|
|||
"localname": "nutria-user.user_nutria",
|
||||
"password": "mouseword",
|
||||
"email": "aa@bb.cccc",
|
||||
"preferred_timezone": "Europe/Berlin",
|
||||
},
|
||||
)
|
||||
with patch("bookwyrm.views.landing.register.login"):
|
||||
|
@ -68,6 +69,7 @@ class RegisterViews(TestCase):
|
|||
self.assertEqual(nutria.username, f"nutria-user.user_nutria@{DOMAIN}")
|
||||
self.assertEqual(nutria.localname, "nutria-user.user_nutria")
|
||||
self.assertEqual(nutria.local, True)
|
||||
self.assertEqual(nutria.preferred_timezone, "Europe/Berlin")
|
||||
|
||||
@patch("bookwyrm.emailing.send_email.delay")
|
||||
def test_register_email_confirm(self, *_):
|
||||
|
@ -198,6 +200,58 @@ class RegisterViews(TestCase):
|
|||
self.assertEqual(models.User.objects.count(), 1)
|
||||
validate_html(response.render())
|
||||
|
||||
def test_register_default_preferred_timezone(self, *_):
|
||||
"""invalid preferred timezone strings should just default to UTC"""
|
||||
view = views.Register.as_view()
|
||||
self.assertEqual(models.User.objects.count(), 1)
|
||||
|
||||
request = self.factory.post(
|
||||
"register/",
|
||||
{
|
||||
"localname": "nutria1",
|
||||
"password": "mouseword",
|
||||
"email": "aa1@bb.cccc",
|
||||
"preferred_timezone": "invalid-tz",
|
||||
},
|
||||
)
|
||||
with patch("bookwyrm.views.landing.register.login"):
|
||||
response = view(request)
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(models.User.objects.count(), 2)
|
||||
nutria = models.User.objects.last()
|
||||
self.assertEqual(nutria.preferred_timezone, "UTC")
|
||||
|
||||
request = self.factory.post(
|
||||
"register/",
|
||||
{
|
||||
"localname": "nutria2",
|
||||
"password": "mouseword",
|
||||
"email": "aa2@bb.cccc",
|
||||
"preferred_timezone": "",
|
||||
},
|
||||
)
|
||||
with patch("bookwyrm.views.landing.register.login"):
|
||||
response = view(request)
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(models.User.objects.count(), 3)
|
||||
nutria = models.User.objects.last()
|
||||
self.assertEqual(nutria.preferred_timezone, "UTC")
|
||||
|
||||
request = self.factory.post(
|
||||
"register/",
|
||||
{
|
||||
"localname": "nutria3",
|
||||
"password": "mouseword",
|
||||
"email": "aa3@bb.cccc",
|
||||
},
|
||||
)
|
||||
with patch("bookwyrm.views.landing.register.login"):
|
||||
response = view(request)
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(models.User.objects.count(), 4)
|
||||
nutria = models.User.objects.last()
|
||||
self.assertEqual(nutria.preferred_timezone, "UTC")
|
||||
|
||||
def test_register_closed_instance(self, *_):
|
||||
"""you can't just register"""
|
||||
view = views.Register.as_view()
|
||||
|
|
|
@ -63,7 +63,7 @@ class ExportViews(TestCase):
|
|||
# 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,isbn_10,isbn_13,oclc_number,rating,review_name,review_cw,review_content\r\n",
|
||||
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",
|
||||
)
|
||||
expected = f"Test Book,,{self.book.remote_id},,,,,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)
|
||||
|
|
|
@ -233,3 +233,19 @@ class UserViews(TestCase):
|
|||
result = views.user_redirect(request, "mouse")
|
||||
|
||||
self.assertEqual(result.status_code, 302)
|
||||
|
||||
def test_reviews_comments_page(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.UserReviewsComments.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
result = view(request, "mouse")
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
request.user = self.anonymous_user
|
||||
result = view(request, "mouse")
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
|
|
@ -86,6 +86,16 @@ urlpatterns = [
|
|||
r"^settings/dashboard/?$", views.Dashboard.as_view(), name="settings-dashboard"
|
||||
),
|
||||
re_path(r"^settings/site-settings/?$", views.Site.as_view(), name="settings-site"),
|
||||
re_path(
|
||||
r"^settings/site-registration/?$",
|
||||
views.RegistrationLimited.as_view(),
|
||||
name="settings-registration-limited",
|
||||
),
|
||||
re_path(
|
||||
r"^settings/site-registration-admin/?$",
|
||||
views.Registration.as_view(),
|
||||
name="settings-registration",
|
||||
),
|
||||
re_path(r"^settings/themes/?$", views.Themes.as_view(), name="settings-themes"),
|
||||
re_path(
|
||||
r"^settings/themes/(?P<theme_id>\d+)/delete/?$",
|
||||
|
@ -119,7 +129,7 @@ urlpatterns = [
|
|||
),
|
||||
re_path(
|
||||
r"^settings/email-preview/?$",
|
||||
views.admin.site.email_preview,
|
||||
views.admin.email_config.email_preview,
|
||||
name="settings-email-preview",
|
||||
),
|
||||
re_path(
|
||||
|
@ -319,10 +329,16 @@ urlpatterns = [
|
|||
re_path(
|
||||
r"^settings/celery/?$", views.CeleryStatus.as_view(), name="settings-celery"
|
||||
),
|
||||
re_path(
|
||||
r"^settings/email-config/?$",
|
||||
views.EmailConfig.as_view(),
|
||||
name="settings-email-config",
|
||||
),
|
||||
# landing pages
|
||||
re_path(r"^about/?$", views.about, name="about"),
|
||||
re_path(r"^privacy/?$", views.privacy, name="privacy"),
|
||||
re_path(r"^conduct/?$", views.conduct, name="conduct"),
|
||||
re_path(r"^impressum/?$", views.impressum, name="impressum"),
|
||||
path("", views.Home.as_view(), name="landing"),
|
||||
re_path(r"^discover/?$", views.Discover.as_view(), name="discover"),
|
||||
re_path(r"^notifications/?$", views.Notifications.as_view(), name="notifications"),
|
||||
|
@ -414,6 +430,11 @@ urlpatterns = [
|
|||
name="user-relationships",
|
||||
),
|
||||
re_path(r"^hide-suggestions/?$", views.hide_suggestions, name="hide-suggestions"),
|
||||
re_path(
|
||||
rf"{USER_PATH}/reviews-comments",
|
||||
views.UserReviewsComments.as_view(),
|
||||
name="user-reviews-comments",
|
||||
),
|
||||
# groups
|
||||
re_path(rf"{USER_PATH}/groups/?$", views.UserGroups.as_view(), name="user-groups"),
|
||||
re_path(
|
||||
|
|
|
@ -10,6 +10,7 @@ from .admin.federation import Federation, FederatedServer
|
|||
from .admin.federation import AddFederatedServer, ImportServerBlocklist
|
||||
from .admin.federation import block_server, unblock_server, refresh_server
|
||||
from .admin.email_blocklist import EmailBlocklist
|
||||
from .admin.email_config import EmailConfig
|
||||
from .admin.imports import (
|
||||
ImportList,
|
||||
disable_imports,
|
||||
|
@ -28,7 +29,7 @@ from .admin.reports import (
|
|||
unsuspend_user,
|
||||
moderator_delete_user,
|
||||
)
|
||||
from .admin.site import Site
|
||||
from .admin.site import Site, Registration, RegistrationLimited
|
||||
from .admin.themes import Themes, delete_theme
|
||||
from .admin.user_admin import UserAdmin, UserAdminList
|
||||
|
||||
|
@ -65,7 +66,7 @@ from .books.editions import Editions, switch_edition
|
|||
from .books.links import BookFileLinks, AddFileLink, delete_link
|
||||
|
||||
# landing
|
||||
from .landing.about import about, privacy, conduct
|
||||
from .landing.about import about, privacy, conduct, impressum
|
||||
from .landing.landing import Home, Landing
|
||||
from .landing.login import Login, Logout
|
||||
from .landing.register import Register
|
||||
|
@ -142,7 +143,13 @@ from .setup import InstanceConfig, CreateAdmin
|
|||
from .status import CreateStatus, EditStatus, DeleteStatus, update_progress
|
||||
from .status import edit_readthrough
|
||||
from .updates import get_notification_count, get_unread_status_string
|
||||
from .user import User, hide_suggestions, user_redirect, toggle_guided_tour
|
||||
from .user import (
|
||||
User,
|
||||
UserReviewsComments,
|
||||
hide_suggestions,
|
||||
user_redirect,
|
||||
toggle_guided_tour,
|
||||
)
|
||||
from .relationships import Relationships
|
||||
from .wellknown import *
|
||||
from .annual_summary import (
|
||||
|
|
65
bookwyrm/views/admin/email_config.py
Normal file
65
bookwyrm/views/admin/email_config.py
Normal file
|
@ -0,0 +1,65 @@
|
|||
""" is your email running? """
|
||||
from django.contrib.auth.decorators import login_required, permission_required
|
||||
from django.template.response import TemplateResponse
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.views import View
|
||||
|
||||
from bookwyrm import emailing
|
||||
from bookwyrm import settings
|
||||
|
||||
# pylint: disable= no-self-use
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
@method_decorator(
|
||||
permission_required("bookwyrm.edit_instance_settings", raise_exception=True),
|
||||
name="dispatch",
|
||||
)
|
||||
class EmailConfig(View):
|
||||
"""View and test your emailing setup"""
|
||||
|
||||
def get(self, request):
|
||||
"""View email config"""
|
||||
data = view_data()
|
||||
# TODO: show email previews
|
||||
return TemplateResponse(request, "settings/email_config.html", data)
|
||||
|
||||
def post(self, request):
|
||||
"""Send test email"""
|
||||
data = view_data()
|
||||
try:
|
||||
emailing.test_email(request.user)
|
||||
data["success"] = True
|
||||
except Exception as err: # pylint: disable=broad-except
|
||||
data["error"] = err
|
||||
return TemplateResponse(request, "settings/email_config.html", data)
|
||||
|
||||
|
||||
def view_data():
|
||||
"""helper to get data for view"""
|
||||
return {
|
||||
"email_backend": settings.EMAIL_BACKEND,
|
||||
"email_host": settings.EMAIL_HOST,
|
||||
"email_port": settings.EMAIL_PORT,
|
||||
"Email_host_user": settings.EMAIL_HOST_USER,
|
||||
"email_use_tls": settings.EMAIL_USE_TLS,
|
||||
"email_use_ssl": settings.EMAIL_USE_SSL,
|
||||
"email_sender": settings.EMAIL_SENDER,
|
||||
}
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required("bookwyrm.edit_instance_settings", raise_exception=True)
|
||||
def email_preview(request):
|
||||
"""for development, renders and example email template"""
|
||||
template = request.GET.get("email")
|
||||
data = emailing.email_data()
|
||||
data["subject_path"] = f"email/{template}/subject.html"
|
||||
data["html_content_path"] = f"email/{template}/html_content.html"
|
||||
data["text_content_path"] = f"email/{template}/text_content.html"
|
||||
data["reset_link"] = "https://example.com/link"
|
||||
data["invite_link"] = "https://example.com/link"
|
||||
data["confirmation_link"] = "https://example.com/link"
|
||||
data["confirmation_code"] = "AKJHKDGKJSDFG"
|
||||
data["reporter"] = "ConcernedUser"
|
||||
data["reportee"] = "UserName"
|
||||
data["report_link"] = "https://example.com/link"
|
||||
return TemplateResponse(request, "email/preview.html", data)
|
|
@ -4,7 +4,7 @@ from django.template.response import TemplateResponse
|
|||
from django.utils.decorators import method_decorator
|
||||
from django.views import View
|
||||
|
||||
from bookwyrm import emailing, forms, models
|
||||
from bookwyrm import forms, models
|
||||
|
||||
|
||||
# pylint: disable= no-self-use
|
||||
|
@ -35,20 +35,55 @@ class Site(View):
|
|||
return TemplateResponse(request, "settings/site.html", data)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required("bookwyrm.edit_instance_settings", raise_exception=True)
|
||||
def email_preview(request):
|
||||
"""for development, renders and example email template"""
|
||||
template = request.GET.get("email")
|
||||
data = emailing.email_data()
|
||||
data["subject_path"] = f"email/{template}/subject.html"
|
||||
data["html_content_path"] = f"email/{template}/html_content.html"
|
||||
data["text_content_path"] = f"email/{template}/text_content.html"
|
||||
data["reset_link"] = "https://example.com/link"
|
||||
data["invite_link"] = "https://example.com/link"
|
||||
data["confirmation_link"] = "https://example.com/link"
|
||||
data["confirmation_code"] = "AKJHKDGKJSDFG"
|
||||
data["reporter"] = "ConcernedUser"
|
||||
data["reportee"] = "UserName"
|
||||
data["report_link"] = "https://example.com/link"
|
||||
return TemplateResponse(request, "email/preview.html", data)
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
@method_decorator(
|
||||
permission_required("bookwyrm.edit_instance_settings", raise_exception=True),
|
||||
name="dispatch",
|
||||
)
|
||||
class RegistrationLimited(View):
|
||||
"""Things related to registering that non-admins owners can change"""
|
||||
|
||||
def get(self, request):
|
||||
"""edit form"""
|
||||
site = models.SiteSettings.objects.get()
|
||||
data = {"form": forms.RegistrationLimitedForm(instance=site)}
|
||||
return TemplateResponse(request, "settings/registration_limited.html", data)
|
||||
|
||||
def post(self, request):
|
||||
"""edit the site settings"""
|
||||
site = models.SiteSettings.objects.get()
|
||||
form = forms.RegistrationLimitedForm(request.POST, request.FILES, instance=site)
|
||||
if not form.is_valid():
|
||||
data = {"form": form}
|
||||
return TemplateResponse(request, "settings/registration_limited.html", data)
|
||||
site = form.save(request)
|
||||
|
||||
data = {"form": forms.RegistrationLimitedForm(instance=site), "success": True}
|
||||
return TemplateResponse(request, "settings/registration_limited.html", data)
|
||||
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
@method_decorator(
|
||||
permission_required("bookwyrm.manage_registration", raise_exception=True),
|
||||
name="dispatch",
|
||||
)
|
||||
class Registration(View):
|
||||
"""Control everything about registration"""
|
||||
|
||||
def get(self, request):
|
||||
"""edit form"""
|
||||
site = models.SiteSettings.objects.get()
|
||||
data = {"form": forms.RegistrationForm(instance=site)}
|
||||
return TemplateResponse(request, "settings/registration.html", data)
|
||||
|
||||
def post(self, request):
|
||||
"""edit the site settings"""
|
||||
site = models.SiteSettings.objects.get()
|
||||
form = forms.RegistrationForm(request.POST, request.FILES, instance=site)
|
||||
if not form.is_valid():
|
||||
data = {"form": form}
|
||||
return TemplateResponse(request, "settings/registration.html", data)
|
||||
site = form.save(request)
|
||||
|
||||
data = {"form": forms.RegistrationForm(instance=site), "success": True}
|
||||
return TemplateResponse(request, "settings/registration.html", data)
|
||||
|
|
|
@ -12,7 +12,7 @@ from bookwyrm import forms, models
|
|||
# pylint: disable= no-self-use
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
@method_decorator(
|
||||
permission_required("bookwyrm.edit_instance_settings", raise_exception=True),
|
||||
permission_required("bookwyrm.system_administration", raise_exception=True),
|
||||
name="dispatch",
|
||||
)
|
||||
class Themes(View):
|
||||
|
@ -46,7 +46,7 @@ def get_view_data():
|
|||
|
||||
|
||||
@require_POST
|
||||
@permission_required("bookwyrm.edit_instance_settings", raise_exception=True)
|
||||
@permission_required("bookwyrm.system_administration", raise_exception=True)
|
||||
# pylint: disable=unused-argument
|
||||
def delete_theme(request, theme_id):
|
||||
"""Remove a theme"""
|
||||
|
|
|
@ -49,6 +49,8 @@ class Editions(View):
|
|||
"isbn_13",
|
||||
"oclc_number",
|
||||
"asin",
|
||||
"aasin",
|
||||
"isfdb",
|
||||
]
|
||||
search_filter_entries = [
|
||||
{f"{f}__icontains": query} for f in searchable_fields
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
""" non-interactive pages """
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from django.http import Http404
|
||||
from django.template.response import TemplateResponse
|
||||
from django.utils import timezone
|
||||
from django.views.decorators.http import require_GET
|
||||
|
@ -36,3 +37,12 @@ def conduct(request):
|
|||
def privacy(request):
|
||||
"""more information about the instance"""
|
||||
return TemplateResponse(request, "about/privacy.html")
|
||||
|
||||
|
||||
@require_GET
|
||||
def impressum(request):
|
||||
"""more information about the instance"""
|
||||
site = models.SiteSettings.objects.get()
|
||||
if not site.show_impressum:
|
||||
raise Http404()
|
||||
return TemplateResponse(request, "about/impressum.html")
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
""" class views for login/register views """
|
||||
import pytz
|
||||
from django.contrib.auth import login
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.shortcuts import get_object_or_404, redirect
|
||||
|
@ -55,6 +56,10 @@ class Register(View):
|
|||
localname = form.data["localname"].strip()
|
||||
email = form.data["email"]
|
||||
password = form.data["password"]
|
||||
try:
|
||||
preferred_timezone = pytz.timezone(form.data.get("preferred_timezone"))
|
||||
except pytz.exceptions.UnknownTimeZoneError:
|
||||
preferred_timezone = pytz.utc
|
||||
|
||||
# make sure the email isn't blocked as spam
|
||||
email_domain = email.split("@")[-1]
|
||||
|
@ -71,6 +76,7 @@ class Register(View):
|
|||
local=True,
|
||||
deactivation_reason="pending" if settings.require_confirm_email else None,
|
||||
is_active=not settings.require_confirm_email,
|
||||
preferred_timezone=preferred_timezone,
|
||||
)
|
||||
if invite:
|
||||
invite.times_used += 1
|
||||
|
@ -105,9 +111,7 @@ class ConfirmEmailCode(View):
|
|||
request, "confirm_email/confirm_email.html", {"valid": False}
|
||||
)
|
||||
# update the user
|
||||
user.is_active = True
|
||||
user.deactivation_reason = None
|
||||
user.save(broadcast=False, update_fields=["is_active", "deactivation_reason"])
|
||||
user.reactivate()
|
||||
# direct the user to log in
|
||||
return redirect("login", confirmed="confirmed")
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
""" The user profile """
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.core.paginator import Paginator
|
||||
from django.db.models import Q
|
||||
from django.http import Http404
|
||||
from django.shortcuts import redirect
|
||||
from django.template.response import TemplateResponse
|
||||
|
@ -100,6 +101,49 @@ class User(View):
|
|||
return TemplateResponse(request, "user/user.html", data)
|
||||
|
||||
|
||||
class UserReviewsComments(View):
|
||||
"""user's activity filtered by reviews and comments"""
|
||||
|
||||
def get(self, request, username):
|
||||
"""user's activity filtered by reviews and comments"""
|
||||
user = get_user_from_username(request.user, username)
|
||||
is_self = request.user.id == user.id
|
||||
|
||||
activities = (
|
||||
models.Status.privacy_filter(
|
||||
request.user,
|
||||
)
|
||||
.filter(
|
||||
Q(review__isnull=False) | Q(comment__isnull=False),
|
||||
user=user,
|
||||
)
|
||||
.exclude(
|
||||
privacy="direct",
|
||||
)
|
||||
.select_related(
|
||||
"user",
|
||||
"reply_parent",
|
||||
"review__book",
|
||||
"comment__book",
|
||||
"quotation__book",
|
||||
)
|
||||
.prefetch_related(
|
||||
"mention_books",
|
||||
"mention_users",
|
||||
"attachments",
|
||||
)
|
||||
)
|
||||
|
||||
paginated = Paginator(activities, PAGE_LENGTH)
|
||||
|
||||
data = {
|
||||
"user": user,
|
||||
"is_self": is_self,
|
||||
"activities": paginated.get_page(request.GET.get("page", 1)),
|
||||
}
|
||||
return TemplateResponse(request, "user/reviews_comments.html", data)
|
||||
|
||||
|
||||
@require_POST
|
||||
@login_required
|
||||
def hide_suggestions(request):
|
||||
|
|
10
bw-dev
10
bw-dev
|
@ -174,6 +174,10 @@ case "$CMD" in
|
|||
prod_error
|
||||
docker-compose run --rm dev-tools npx prettier --write bookwyrm/static/js/*.js
|
||||
;;
|
||||
eslint)
|
||||
prod_error
|
||||
docker-compose run --rm dev-tools npx eslint bookwyrm/static --ext .js
|
||||
;;
|
||||
stylelint)
|
||||
prod_error
|
||||
docker-compose run --rm dev-tools npx stylelint \
|
||||
|
@ -185,6 +189,7 @@ case "$CMD" in
|
|||
runweb pylint bookwyrm/
|
||||
docker-compose run --rm dev-tools black celerywyrm bookwyrm
|
||||
docker-compose run --rm dev-tools npx prettier --write bookwyrm/static/js/*.js
|
||||
docker-compose run --rm dev-tools npx eslint bookwyrm/static --ext .js
|
||||
docker-compose run --rm dev-tools npx stylelint \
|
||||
bookwyrm/static/css/bookwyrm.scss bookwyrm/static/css/bookwyrm/**/*.scss --fix \
|
||||
--config dev-tools/.stylelintrc.js
|
||||
|
@ -260,6 +265,9 @@ case "$CMD" in
|
|||
remove_2fa)
|
||||
runweb python manage.py remove_2fa "$@"
|
||||
;;
|
||||
confirm_email)
|
||||
runweb python manage.py confirm_email "$@"
|
||||
;;
|
||||
*)
|
||||
set +x # No need to echo echo
|
||||
echo "Unrecognised command. Try:"
|
||||
|
@ -283,6 +291,7 @@ case "$CMD" in
|
|||
echo " clean"
|
||||
echo " black"
|
||||
echo " prettier"
|
||||
echo " eslint"
|
||||
echo " stylelint"
|
||||
echo " formatters"
|
||||
echo " collectstatic_watch"
|
||||
|
@ -296,5 +305,6 @@ case "$CMD" in
|
|||
echo " set_cors_to_s3 [cors file]"
|
||||
echo " runweb [command]"
|
||||
echo " remove_2fa"
|
||||
echo " confirm_email"
|
||||
;;
|
||||
esac
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# bw-dev auto-completions for fish-shell.
|
||||
# copy this to ~./.config/fish/completions/ with the name `bw-dev.fish`
|
||||
# copy this to ~/.config/fish/completions/ with the name `bw-dev.fish`
|
||||
# this will only work if renamed to `bw-dev.fish`.
|
||||
|
||||
set -l commands up \
|
||||
|
@ -22,6 +22,7 @@ build \
|
|||
clean \
|
||||
black \
|
||||
prettier \
|
||||
eslint \
|
||||
stylelint \
|
||||
formatters \
|
||||
collectstatic_watch \
|
||||
|
@ -34,6 +35,8 @@ copy_media_to_s3 \
|
|||
set_cors_to_s3 \
|
||||
setup \
|
||||
admin_code \
|
||||
remove_2fa \
|
||||
confirm_email \
|
||||
runweb
|
||||
|
||||
function __bw_complete -a cmds cmd desc
|
||||
|
@ -59,9 +62,9 @@ __bw_complete "$commands" "build" "build the containers"
|
|||
__bw_complete "$commands" "clean" "bring the cluster down and remove all containers"
|
||||
__bw_complete "$commands" "black" "run Python code formatting tool"
|
||||
__bw_complete "$commands" "prettier" "run JavaScript code formatting tool"
|
||||
__bw_complete "$commands" "eslint" "run JavaScript linting tool"
|
||||
__bw_complete "$commands" "stylelint" "run SCSS linting tool"
|
||||
__bw_complete "$commands" "formatters" "run multiple formatter tools"
|
||||
__bw_complete "$commands" "compilescss" "compile the SCSS layouts to CSS"
|
||||
__bw_complete "$commands" "populate_streams" "populate the main streams"
|
||||
__bw_complete "$commands" "populate_lists_streams" "populate streams for book lists"
|
||||
__bw_complete "$commands" "populate_suggestions" "populate book suggestions"
|
||||
|
@ -73,6 +76,8 @@ __bw_complete "$commands" "sync_media_to_s3" "run the `s3 sync` command t
|
|||
__bw_complete "$commands" "set_cors_to_s3" "push a CORS configuration defined in .json to s3"
|
||||
__bw_complete "$commands" "setup" "perform first-time setup"
|
||||
__bw_complete "$commands" "admin_code" "get the admin code"
|
||||
__bw_complete "$commands" "remove_2fa" "remove 2FA from user"
|
||||
__bw_complete "$commands" "confirm_email" "manually confirm email of user and set active"
|
||||
__bw_complete "$commands" "runweb" "run a command on the web container"
|
||||
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ build
|
|||
clean
|
||||
black
|
||||
prettier
|
||||
eslint
|
||||
stylelint
|
||||
formatters
|
||||
collectstatic_watch
|
||||
|
@ -31,4 +32,6 @@ copy_media_to_s3
|
|||
set_cors_to_s3
|
||||
setup
|
||||
admin_code
|
||||
remove_2fa
|
||||
confirm_email
|
||||
runweb" -o bashdefault -o default bw-dev
|
||||
|
|
|
@ -21,6 +21,7 @@ build
|
|||
clean
|
||||
black
|
||||
prettier
|
||||
eslint
|
||||
stylelint
|
||||
formatters
|
||||
collectstatic_watch
|
||||
|
@ -33,4 +34,6 @@ copy_media_to_s3
|
|||
set_cors_to_s3
|
||||
setup
|
||||
admin_code
|
||||
remove_2fa
|
||||
confirm_email
|
||||
runweb" -o bashdefault -o default bw-dev
|
||||
|
|
|
@ -86,10 +86,8 @@ services:
|
|||
restart: on-failure
|
||||
flower:
|
||||
build: .
|
||||
command: celery -A celerywyrm flower --basic_auth=${FLOWER_USER}:${FLOWER_PASSWORD}
|
||||
command: celery -A celerywyrm flower --basic_auth=${FLOWER_USER}:${FLOWER_PASSWORD} --url_prefix=flower
|
||||
env_file: .env
|
||||
ports:
|
||||
- ${FLOWER_PORT}:${FLOWER_PORT}
|
||||
volumes:
|
||||
- .:/app
|
||||
networks:
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-11-10 21:42+0000\n"
|
||||
"PO-Revision-Date: 2022-11-13 16:05\n"
|
||||
"POT-Creation-Date: 2022-12-05 02:21+0000\n"
|
||||
"PO-Revision-Date: 2022-12-05 03:56\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Catalan\n"
|
||||
"Language: ca\n"
|
||||
|
@ -90,7 +90,7 @@ msgstr "Codi incorrecte"
|
|||
msgid "This domain is blocked. Please contact your administrator if you think this is an error."
|
||||
msgstr "Aquest domini ha estat bloquejat. Poseu-vos en contacte amb l'administració d'aquesta instància si creieu que és un error."
|
||||
|
||||
#: bookwyrm/forms/links.py:46
|
||||
#: bookwyrm/forms/links.py:49
|
||||
msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending."
|
||||
msgstr "Ja s'ha afegit un enllaç a aquest tipus de fitxer per a aquest llibre. Si encara no és visible és que el domini encara està pendent."
|
||||
|
||||
|
@ -256,14 +256,14 @@ msgstr "Seguidors"
|
|||
msgid "Private"
|
||||
msgstr "Privat"
|
||||
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:140
|
||||
#: bookwyrm/templates/settings/imports/imports.html:19
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:157
|
||||
#: bookwyrm/templates/settings/imports/imports.html:67
|
||||
#: 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:138
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:155
|
||||
msgid "Complete"
|
||||
msgstr "Complet"
|
||||
|
||||
|
@ -316,19 +316,19 @@ msgstr "Citacions"
|
|||
msgid "Everything else"
|
||||
msgstr "Tota la resta"
|
||||
|
||||
#: bookwyrm/settings.py:209
|
||||
#: bookwyrm/settings.py:213
|
||||
msgid "Home Timeline"
|
||||
msgstr "Línia de temps Inici"
|
||||
|
||||
#: bookwyrm/settings.py:209
|
||||
#: bookwyrm/settings.py:213
|
||||
msgid "Home"
|
||||
msgstr "Inici"
|
||||
|
||||
#: bookwyrm/settings.py:210
|
||||
#: bookwyrm/settings.py:214
|
||||
msgid "Books Timeline"
|
||||
msgstr "Cronologia dels llibres"
|
||||
|
||||
#: bookwyrm/settings.py:210
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:101
|
||||
#: bookwyrm/templates/search/layout.html:22
|
||||
#: bookwyrm/templates/search/layout.html:43
|
||||
|
@ -336,71 +336,71 @@ msgstr "Cronologia dels llibres"
|
|||
msgid "Books"
|
||||
msgstr "Llibres"
|
||||
|
||||
#: bookwyrm/settings.py:282
|
||||
#: bookwyrm/settings.py:286
|
||||
msgid "English"
|
||||
msgstr "English (Anglès)"
|
||||
|
||||
#: bookwyrm/settings.py:283
|
||||
#: bookwyrm/settings.py:287
|
||||
msgid "Català (Catalan)"
|
||||
msgstr "Català"
|
||||
|
||||
#: bookwyrm/settings.py:284
|
||||
#: bookwyrm/settings.py:288
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (Alemany)"
|
||||
|
||||
#: bookwyrm/settings.py:285
|
||||
#: bookwyrm/settings.py:289
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (espanyol)"
|
||||
|
||||
#: bookwyrm/settings.py:286
|
||||
#: bookwyrm/settings.py:290
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (gallec)"
|
||||
|
||||
#: bookwyrm/settings.py:287
|
||||
#: bookwyrm/settings.py:291
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (italià)"
|
||||
|
||||
#: bookwyrm/settings.py:288
|
||||
#: bookwyrm/settings.py:292
|
||||
msgid "Suomi (Finnish)"
|
||||
msgstr "Suomi (finès)"
|
||||
|
||||
#: bookwyrm/settings.py:289
|
||||
#: bookwyrm/settings.py:293
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (francès)"
|
||||
|
||||
#: bookwyrm/settings.py:290
|
||||
#: bookwyrm/settings.py:294
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Lituà)"
|
||||
|
||||
#: bookwyrm/settings.py:291
|
||||
#: bookwyrm/settings.py:295
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (noruec)"
|
||||
|
||||
#: bookwyrm/settings.py:292
|
||||
#: bookwyrm/settings.py:296
|
||||
msgid "Polski (Polish)"
|
||||
msgstr "Polski (polonès)"
|
||||
|
||||
#: bookwyrm/settings.py:293
|
||||
#: bookwyrm/settings.py:297
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (portuguès del Brasil)"
|
||||
|
||||
#: bookwyrm/settings.py:294
|
||||
#: bookwyrm/settings.py:298
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Portuguès europeu)"
|
||||
|
||||
#: bookwyrm/settings.py:295
|
||||
#: bookwyrm/settings.py:299
|
||||
msgid "Română (Romanian)"
|
||||
msgstr "Română (romanès)"
|
||||
|
||||
#: bookwyrm/settings.py:296
|
||||
#: bookwyrm/settings.py:300
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (suec)"
|
||||
|
||||
#: bookwyrm/settings.py:297
|
||||
#: bookwyrm/settings.py:301
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (xinès simplificat)"
|
||||
|
||||
#: bookwyrm/settings.py:298
|
||||
#: bookwyrm/settings.py:302
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (xinès tradicional)"
|
||||
|
||||
|
@ -459,24 +459,24 @@ msgstr "<a href=\"%(book_path)s\"><em>%(title)s</em></a> es el llibre amb valora
|
|||
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 "Feu seguiment de les vostres lectures, parleu sobre llibres, escriviu valoracions i descobriu properes lectures. Bookwyrm és un programari d'escala humana, dissenyat per a ser petit i personal i amb el compromís de no tenir mai publicitat, ser anticorporatiu i orientat a la comunitat. Si teniu suggeriments de característiques noves, informes d'errors o grans projectes, <a href='https://joinbookwyrm.com/get-involved' target='_blank>mireu com implicar-vos</a> i feu-vos sentir."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:103
|
||||
#: bookwyrm/templates/about/about.html:104
|
||||
msgid "Meet your admins"
|
||||
msgstr "Coneix les persones que administren la instància"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:106
|
||||
#: bookwyrm/templates/about/about.html:107
|
||||
#, python-format
|
||||
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"%(coc_path)s\">code of conduct</a>, and respond when users report spam and bad behavior."
|
||||
msgstr "Les persones moderadores i administradores de %(site_name)s mantenen en funcionament aquest lloc, fan complir el <a href=\"%(coc_path)s\">codi de conducta</a> i responen els informes de brossa i mal comportament que puguin enviar els usuaris."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:120
|
||||
#: bookwyrm/templates/about/about.html:121
|
||||
msgid "Moderator"
|
||||
msgstr "Moderació"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:122 bookwyrm/templates/user_menu.html:63
|
||||
#: bookwyrm/templates/about/about.html:123 bookwyrm/templates/user_menu.html:63
|
||||
msgid "Admin"
|
||||
msgstr "Administració"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:138
|
||||
#: bookwyrm/templates/about/about.html:139
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: bookwyrm/templates/snippets/status/status_options.html:35
|
||||
#: bookwyrm/templates/snippets/user_options.html:14
|
||||
|
@ -486,6 +486,7 @@ msgstr "Enviar missatge directe"
|
|||
#: bookwyrm/templates/about/conduct.html:4
|
||||
#: bookwyrm/templates/about/conduct.html:9
|
||||
#: bookwyrm/templates/about/layout.html:41
|
||||
#: bookwyrm/templates/snippets/footer.html:27
|
||||
msgid "Code of Conduct"
|
||||
msgstr "Codi de Conducta"
|
||||
|
||||
|
@ -503,8 +504,8 @@ msgid "Software version:"
|
|||
msgstr "Versió de programari:"
|
||||
|
||||
#: bookwyrm/templates/about/layout.html:30
|
||||
#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:200
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:8
|
||||
#: bookwyrm/templates/embed-layout.html:33
|
||||
#: bookwyrm/templates/snippets/footer.html:8
|
||||
#, python-format
|
||||
msgid "About %(site_name)s"
|
||||
msgstr "Sobre %(site_name)s"
|
||||
|
@ -512,9 +513,15 @@ msgstr "Sobre %(site_name)s"
|
|||
#: bookwyrm/templates/about/layout.html:47
|
||||
#: bookwyrm/templates/about/privacy.html:4
|
||||
#: bookwyrm/templates/about/privacy.html:9
|
||||
#: bookwyrm/templates/snippets/footer.html:30
|
||||
msgid "Privacy Policy"
|
||||
msgstr "Política de privacitat"
|
||||
|
||||
#: bookwyrm/templates/about/layout.html:54
|
||||
#: bookwyrm/templates/snippets/footer.html:34
|
||||
msgid "Impressum"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:7
|
||||
#: bookwyrm/templates/feed/summary_card.html:8
|
||||
#, python-format
|
||||
|
@ -812,7 +819,7 @@ 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/site.html:181
|
||||
#: bookwyrm/templates/settings/site.html:194
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:69
|
||||
#: bookwyrm/templates/shelf/form.html:25
|
||||
#: bookwyrm/templates/snippets/reading_modals/layout.html:18
|
||||
|
@ -834,7 +841,7 @@ msgstr "Desa"
|
|||
#: bookwyrm/templates/preferences/disable-2fa.html:19
|
||||
#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27
|
||||
#: bookwyrm/templates/readthrough/readthrough_modal.html:80
|
||||
#: bookwyrm/templates/search/barcode_modal.html:45
|
||||
#: bookwyrm/templates/search/barcode_modal.html:43
|
||||
#: bookwyrm/templates/settings/federation/instance.html:106
|
||||
#: bookwyrm/templates/settings/imports/complete_import_modal.html:16
|
||||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22
|
||||
|
@ -852,7 +859,7 @@ msgstr "La càrrega de les dades es connectarà a <strong>%(source_name)s</stron
|
|||
#: bookwyrm/templates/book/sync_modal.html:24
|
||||
#: bookwyrm/templates/groups/members.html:29
|
||||
#: bookwyrm/templates/landing/password_reset.html:52
|
||||
#: bookwyrm/templates/preferences/2fa.html:54
|
||||
#: bookwyrm/templates/preferences/2fa.html:77
|
||||
#: bookwyrm/templates/settings/imports/complete_import_modal.html:19
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:17
|
||||
msgid "Confirm"
|
||||
|
@ -1320,7 +1327,7 @@ msgid "Domain"
|
|||
msgstr "Domini"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:36
|
||||
#: bookwyrm/templates/import/import.html:105
|
||||
#: bookwyrm/templates/import/import.html:122
|
||||
#: bookwyrm/templates/import/import_status.html:134
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:37
|
||||
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:48
|
||||
|
@ -1333,7 +1340,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:62
|
||||
#: bookwyrm/templates/settings/imports/imports.html:110
|
||||
#: bookwyrm/templates/settings/reports/report_links_table.html:6
|
||||
#: bookwyrm/templates/settings/themes.html:99
|
||||
msgid "Actions"
|
||||
|
@ -1349,11 +1356,11 @@ msgstr "Usuari desconegut"
|
|||
msgid "Report spam"
|
||||
msgstr "Marqueu com a brossa"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:101
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:102
|
||||
msgid "No links available for this book."
|
||||
msgstr "No hi ha enllaços disponibles per aquest llibre."
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:112
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:113
|
||||
#: bookwyrm/templates/book/file_links/links.html:18
|
||||
msgid "Add link to file"
|
||||
msgstr "Afegiu enllaç a fitxer"
|
||||
|
@ -1735,7 +1742,7 @@ msgstr "Si no has demanat reiniciar la teva contrasenya, pots ignorar aquest cor
|
|||
msgid "Reset your %(site_name)s password"
|
||||
msgstr "Reinicia el teu password de %(site_name)s "
|
||||
|
||||
#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:40
|
||||
#: bookwyrm/templates/embed-layout.html:20 bookwyrm/templates/layout.html:40
|
||||
#: 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
|
||||
|
@ -1743,12 +1750,12 @@ msgstr "Reinicia el teu password de %(site_name)s "
|
|||
msgid "%(site_name)s home page"
|
||||
msgstr "Pàgina principal de %(site_name)s"
|
||||
|
||||
#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:204
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:12
|
||||
#: bookwyrm/templates/embed-layout.html:39
|
||||
#: bookwyrm/templates/snippets/footer.html:12
|
||||
msgid "Contact site admin"
|
||||
msgstr "Contacteu l'administració del lloc"
|
||||
|
||||
#: bookwyrm/templates/embed-layout.html:46
|
||||
#: bookwyrm/templates/embed-layout.html:45
|
||||
msgid "Join BookWyrm"
|
||||
msgstr "Uniu-vos a BookWyrm"
|
||||
|
||||
|
@ -2314,8 +2321,7 @@ msgstr "Us donem la benvinguda a Bookwyrm!<br><br> Us agradaria fer el tutorial
|
|||
|
||||
#: bookwyrm/templates/guided_tour/home.html:17
|
||||
#: bookwyrm/templates/guided_tour/home.html:39
|
||||
#: bookwyrm/templates/layout.html:212
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:20
|
||||
#: bookwyrm/templates/snippets/footer.html:20
|
||||
msgid "Guided Tour"
|
||||
msgstr "Visita guiada"
|
||||
|
||||
|
@ -2625,81 +2631,89 @@ msgstr "Troba un llibre"
|
|||
msgid "Import Books"
|
||||
msgstr "Importa Llibres"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:15
|
||||
#: bookwyrm/templates/import/import.html:13
|
||||
msgid "Not a valid CSV file"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:22
|
||||
#, 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:19
|
||||
#: bookwyrm/templates/import/import.html:26
|
||||
#, 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:34
|
||||
#: bookwyrm/templates/import/import.html:41
|
||||
msgid "Data source:"
|
||||
msgstr "Font de la informació:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:40
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
msgid "Goodreads (CSV)"
|
||||
msgstr "Goodreads (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:43
|
||||
#: bookwyrm/templates/import/import.html:50
|
||||
msgid "Storygraph (CSV)"
|
||||
msgstr "Storygraph (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:46
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
msgid "LibraryThing (TSV)"
|
||||
msgstr "LibraryThing (TSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:49
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
msgid "OpenLibrary (CSV)"
|
||||
msgstr "OpenLibrary (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:52
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
msgid "Calibre (CSV)"
|
||||
msgstr "Calibre (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:58
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
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:67
|
||||
#: bookwyrm/templates/import/import.html:74
|
||||
msgid "Data file:"
|
||||
msgstr "Arxiu de dades:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:75
|
||||
#: bookwyrm/templates/import/import.html:82
|
||||
msgid "Include reviews"
|
||||
msgstr "Inclou ressenyes"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:80
|
||||
#: bookwyrm/templates/import/import.html:87
|
||||
msgid "Privacy setting for imported reviews:"
|
||||
msgstr "Configuració de privacitat per les ressenyes importades:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:86
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
#: bookwyrm/templates/preferences/layout.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:78
|
||||
msgid "Import"
|
||||
msgstr "Importa"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:91
|
||||
#: bookwyrm/templates/import/import.html:101
|
||||
msgid "Imports are temporarily disabled; thank you for your patience."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:108
|
||||
msgid "Recent Imports"
|
||||
msgstr "Importacions recents"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:96
|
||||
#: bookwyrm/templates/settings/imports/imports.html:41
|
||||
#: bookwyrm/templates/import/import.html:113
|
||||
#: bookwyrm/templates/settings/imports/imports.html:89
|
||||
msgid "Date Created"
|
||||
msgstr "Data de creació"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:99
|
||||
#: bookwyrm/templates/import/import.html:116
|
||||
msgid "Last Updated"
|
||||
msgstr "Darrera actualització"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:102
|
||||
#: bookwyrm/templates/settings/imports/imports.html:50
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
msgid "Items"
|
||||
msgstr "Items"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:111
|
||||
#: bookwyrm/templates/import/import.html:128
|
||||
msgid "No recent imports"
|
||||
msgstr "No hi ha cap importació recent"
|
||||
|
||||
|
@ -2734,7 +2748,7 @@ msgid "Refresh"
|
|||
msgstr "Refresca"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:72
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
#: bookwyrm/templates/settings/imports/imports.html:130
|
||||
msgid "Stop import"
|
||||
msgstr "Atura la importació"
|
||||
|
||||
|
@ -2852,7 +2866,7 @@ msgid "Reject"
|
|||
msgstr "Rebutja"
|
||||
|
||||
#: bookwyrm/templates/import/troubleshoot.html:7
|
||||
#: bookwyrm/templates/settings/imports/imports.html:59
|
||||
#: bookwyrm/templates/settings/imports/imports.html:107
|
||||
msgid "Failed items"
|
||||
msgstr "Elements fallits"
|
||||
|
||||
|
@ -2958,7 +2972,7 @@ msgstr "Nom d'usuari:"
|
|||
#: bookwyrm/templates/landing/password_reset.html:26
|
||||
#: bookwyrm/templates/landing/reactivate.html:23
|
||||
#: bookwyrm/templates/layout.html:144 bookwyrm/templates/ostatus/error.html:32
|
||||
#: bookwyrm/templates/preferences/2fa.html:68
|
||||
#: bookwyrm/templates/preferences/2fa.html:91
|
||||
#: bookwyrm/templates/snippets/register_form.html:45
|
||||
msgid "Password:"
|
||||
msgstr "Contrasenya:"
|
||||
|
@ -3038,22 +3052,6 @@ msgstr "S'ha publicat l'estat amb èxit"
|
|||
msgid "Error posting status"
|
||||
msgstr "Hi ha hagut un error mentre es publicava l'estat"
|
||||
|
||||
#: bookwyrm/templates/layout.html:208
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:16
|
||||
msgid "Documentation"
|
||||
msgstr "Documentació"
|
||||
|
||||
#: bookwyrm/templates/layout.html:221
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:29
|
||||
#, python-format
|
||||
msgid "Support %(site_name)s on <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
msgstr "Dona suport a %(site_name)s a <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
|
||||
#: bookwyrm/templates/layout.html:228
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:36
|
||||
msgid "BookWyrm's source code is freely available. You can contribute or report issues on <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
msgstr "El codi font de BookWyrm està disponible de manera oberta. Pots contribuir-hi o informar de problemes a <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
|
||||
#: bookwyrm/templates/lists/add_item_modal.html:8
|
||||
#, python-format
|
||||
msgid "Add \"<em>%(title)s</em>\" to this list"
|
||||
|
@ -3119,7 +3117,7 @@ msgid "Delete this list?"
|
|||
msgstr "Suprimir aquesta llista?"
|
||||
|
||||
#: bookwyrm/templates/lists/edit_form.html:5
|
||||
#: bookwyrm/templates/lists/layout.html:17
|
||||
#: bookwyrm/templates/lists/layout.html:18
|
||||
msgid "Edit List"
|
||||
msgstr "Edita la llista"
|
||||
|
||||
|
@ -3128,13 +3126,12 @@ msgstr "Edita la llista"
|
|||
msgid "%(list_name)s, a list by %(owner)s"
|
||||
msgstr "%(list_name)s, una llista de %(owner)s"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:18
|
||||
#: bookwyrm/templates/lists/embed-list.html:20
|
||||
#, python-format
|
||||
msgid "on <a href=\"/\">%(site_name)s</a>"
|
||||
msgstr "a <a href=\"/\">%(site_name)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:27
|
||||
#: bookwyrm/templates/lists/list.html:54
|
||||
#: bookwyrm/templates/lists/embed-list.html:29
|
||||
msgid "This list is currently empty"
|
||||
msgstr "Aquesta llista és buida"
|
||||
|
||||
|
@ -3216,6 +3213,10 @@ msgstr "Has suggerit un llibre per aquesta llista amb èxit!"
|
|||
msgid "You successfully added a book to this list!"
|
||||
msgstr "Has afegit un llibre a aquesta llista amb èxit!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:54
|
||||
msgid "This list is currently empty."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:104
|
||||
msgid "Edit notes"
|
||||
msgstr "Edita les notes"
|
||||
|
@ -3339,12 +3340,17 @@ msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a> ha suggerit afegi
|
|||
|
||||
#: bookwyrm/templates/notifications/items/add.html:66
|
||||
#, python-format
|
||||
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> added a book to one of your lists"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/notifications/items/add.html:72
|
||||
#, python-format
|
||||
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> added <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other book to your list \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
msgid_plural "<a href=\"%(related_user_link)s\">%(related_user)s</a> added <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other books to your list \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
msgstr[0] "<a href=\"%(related_user_link)s\">%(related_user)s</a> ha afegit <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, i %(display_count)s altre llibre a la vostra llista \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
msgstr[1] "<a href=\"%(related_user_link)s\">%(related_user)s</a> ha afegit <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, i %(display_count)s altres llibres a la vostra llista \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
|
||||
#: bookwyrm/templates/notifications/items/add.html:82
|
||||
#: bookwyrm/templates/notifications/items/add.html:88
|
||||
#, python-format
|
||||
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> suggested adding <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other book to your list \"<a href=\"%(list_curate_path)s\">%(list_name)s</a>\""
|
||||
msgid_plural "<a href=\"%(related_user_link)s\">%(related_user)s</a> suggested adding <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other books to your list \"<a href=\"%(list_curate_path)s\">%(list_name)s</a>\""
|
||||
|
@ -3768,19 +3774,31 @@ msgstr "Genera codis de seguretat"
|
|||
msgid "Scan the QR code with your authentication app and then enter the code from your app below to confirm your app is set up."
|
||||
msgstr "Escaneja el codi QR amb la teva app d'autenticació i entra el codi que apareix aquí sota per confirmar que la teva app està configurada."
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:50
|
||||
#: bookwyrm/templates/preferences/2fa.html:52
|
||||
msgid "Use setup key"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:58
|
||||
msgid "Account name:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:65
|
||||
msgid "Code:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:73
|
||||
msgid "Enter the code from your app:"
|
||||
msgstr "Introduïu el codi de la vostra app:"
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:60
|
||||
#: bookwyrm/templates/preferences/2fa.html:83
|
||||
msgid "You can make your account more secure by using Two Factor Authentication (2FA). This will require you to enter a one-time code using a phone app like <em>Authy</em>, <em>Google Authenticator</em> or <em>Microsoft Authenticator</em> each time you log in."
|
||||
msgstr "Podeu fer el vostre compte més segur utilitzant Autenticació en Dos Passos (2FA). Això requereix que entreu un codi d'un sol ús en una aplicació de mòbil com <em>Authy</em>, <em>Google Authenticator</em> o <em>Microsoft Authenticator</em> cada cop que inicieu sessió."
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:62
|
||||
#: bookwyrm/templates/preferences/2fa.html:85
|
||||
msgid "Confirm your password to begin setting up 2FA."
|
||||
msgstr "Confirmeu la vostra contrasenya per començar a configurar 2FA."
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:72
|
||||
#: bookwyrm/templates/preferences/2fa.html:95
|
||||
#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:37
|
||||
msgid "Set up 2FA"
|
||||
msgstr "Configura 2FA"
|
||||
|
@ -3870,7 +3888,7 @@ msgstr "Perfil"
|
|||
#: bookwyrm/templates/preferences/edit_user.html:13
|
||||
#: bookwyrm/templates/preferences/edit_user.html:64
|
||||
#: bookwyrm/templates/settings/site.html:11
|
||||
#: bookwyrm/templates/settings/site.html:77
|
||||
#: bookwyrm/templates/settings/site.html:90
|
||||
#: bookwyrm/templates/setup/config.html:91
|
||||
msgid "Display"
|
||||
msgstr "Mostra"
|
||||
|
@ -4050,54 +4068,66 @@ msgstr "\n"
|
|||
" Scan Barcode\n"
|
||||
" "
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:23
|
||||
#: bookwyrm/templates/search/barcode_modal.html:21
|
||||
msgid "Requesting camera..."
|
||||
msgstr "Sol·licitant permisos per a la càmera..."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:24
|
||||
#: bookwyrm/templates/search/barcode_modal.html:22
|
||||
msgid "Grant access to the camera to scan a book's barcode."
|
||||
msgstr "Dona permisos d'accés a la càmera per escanejar el codi de barres d'aquest llibre."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:29
|
||||
#: bookwyrm/templates/search/barcode_modal.html:27
|
||||
msgid "Could not access camera"
|
||||
msgstr "No s'ha pogut accedir a la càmera"
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:33
|
||||
#: bookwyrm/templates/search/barcode_modal.html:31
|
||||
msgctxt "barcode scanner"
|
||||
msgid "Scanning..."
|
||||
msgstr "S'està escanejant..."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:34
|
||||
#: bookwyrm/templates/search/barcode_modal.html:32
|
||||
msgid "Align your book's barcode with the camera."
|
||||
msgstr "Alinea el codi de barres del teu llibre amb la càmera."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:38
|
||||
#: bookwyrm/templates/search/barcode_modal.html:36
|
||||
msgctxt "barcode scanner"
|
||||
msgid "ISBN scanned"
|
||||
msgstr "S'ha escanejat l'ISBN"
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:39
|
||||
#: bookwyrm/templates/search/barcode_modal.html:37
|
||||
msgctxt "followed by ISBN"
|
||||
msgid "Searching for book:"
|
||||
msgstr "Cercant el llibre:"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:39
|
||||
#: bookwyrm/templates/search/book.html:25
|
||||
#, python-format
|
||||
msgid "%(formatted_review_count)s review"
|
||||
msgid_plural "%(formatted_review_count)s reviews"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: bookwyrm/templates/search/book.html:34
|
||||
#, python-format
|
||||
msgid "(published %(pub_year)s)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/search/book.html:50
|
||||
msgid "Results from"
|
||||
msgstr "Resultats de"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:78
|
||||
#: bookwyrm/templates/search/book.html:89
|
||||
msgid "Import book"
|
||||
msgstr "Importa un llibre"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:102
|
||||
#: bookwyrm/templates/search/book.html:113
|
||||
msgid "Load results from other catalogues"
|
||||
msgstr "Carrega resultats d'altres catàlegs"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:106
|
||||
#: bookwyrm/templates/search/book.html:117
|
||||
msgid "Manually add book"
|
||||
msgstr "Afegeix manualment un llibre"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:111
|
||||
#: bookwyrm/templates/search/book.html:122
|
||||
msgid "Log in to import or add books."
|
||||
msgstr "Inicia la sessió per importar o afegir llibres."
|
||||
|
||||
|
@ -4112,7 +4142,7 @@ msgstr "Tipus de Cerca"
|
|||
#: bookwyrm/templates/search/layout.html:24
|
||||
#: bookwyrm/templates/search/layout.html:47
|
||||
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:27
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:51
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:52
|
||||
#: bookwyrm/templates/settings/layout.html:36
|
||||
#: bookwyrm/templates/settings/users/user.html:13
|
||||
#: bookwyrm/templates/settings/users/user_admin.html:5
|
||||
|
@ -4186,7 +4216,7 @@ msgid "Create Announcement"
|
|||
msgstr "Crea un anunci"
|
||||
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:21
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:39
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:40
|
||||
msgid "Date added"
|
||||
msgstr "Data en què va ser afegit"
|
||||
|
||||
|
@ -4354,7 +4384,7 @@ msgid "Active Tasks"
|
|||
msgstr "Tasques actives"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:34
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
|
@ -4665,24 +4695,24 @@ msgid "Failed:"
|
|||
msgstr "Ha fallat:"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:62
|
||||
msgid "Expects a json file in the format provided by <a href=\"https://fediblock.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">FediBlock</a>, with a list of entries that have <code>instance</code> and <code>url</code> fields. For example:"
|
||||
msgstr "S'espera un fitxer json en el format proporcionat per <a href=\"https://fediblock.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">FediBlock</a>, amb una llista d'entrades que tenen els camps <code>instància</code> i <code>url</code>. Per exemple:"
|
||||
msgid "Expects a json file in the format provided by FediBlock, with a list of entries that have <code>instance</code> and <code>url</code> fields. For example:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:36
|
||||
#: bookwyrm/templates/settings/users/server_filter.html:5
|
||||
msgid "Instance name"
|
||||
msgstr "Nom de la instància"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:43
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:44
|
||||
msgid "Last updated"
|
||||
msgstr "Darrera actualització"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:47
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:48
|
||||
#: bookwyrm/templates/settings/federation/software_filter.html:5
|
||||
msgid "Software"
|
||||
msgstr "Programari"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:69
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:70
|
||||
msgid "No instances found"
|
||||
msgstr "No s'ha trobat cap instància"
|
||||
|
||||
|
@ -4690,27 +4720,51 @@ msgstr "No s'ha trobat cap instància"
|
|||
msgid "Stop import?"
|
||||
msgstr "Atura la importació?"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:23
|
||||
#: bookwyrm/templates/settings/imports/imports.html:19
|
||||
msgid "Disable starting new imports"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:30
|
||||
msgid "This is only intended to be used when things have gone very wrong with imports and you need to pause the feature while addressing issues."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:31
|
||||
msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:36
|
||||
msgid "Disable imports"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:50
|
||||
msgid "Users are currently unable to start new imports"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:55
|
||||
msgid "Enable imports"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:71
|
||||
msgid "Completed"
|
||||
msgstr "Completat"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:37
|
||||
#: bookwyrm/templates/settings/imports/imports.html:85
|
||||
msgid "User"
|
||||
msgstr "Usuari"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:46
|
||||
#: bookwyrm/templates/settings/imports/imports.html:94
|
||||
msgid "Date Updated"
|
||||
msgstr "Data actualització"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:101
|
||||
msgid "Pending items"
|
||||
msgstr "Elements pendents"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:56
|
||||
#: bookwyrm/templates/settings/imports/imports.html:104
|
||||
msgid "Successful items"
|
||||
msgstr "Ítems amb èxit"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:91
|
||||
#: bookwyrm/templates/settings/imports/imports.html:139
|
||||
msgid "No matching imports found."
|
||||
msgstr "No s'han trobat importacions coincidents."
|
||||
|
||||
|
@ -4907,7 +4961,7 @@ msgid "Site Settings"
|
|||
msgstr "Configuració del lloc"
|
||||
|
||||
#: bookwyrm/templates/settings/layout.html:106
|
||||
#: bookwyrm/templates/settings/site.html:95
|
||||
#: bookwyrm/templates/settings/site.html:108
|
||||
#: bookwyrm/templates/settings/themes.html:4
|
||||
#: bookwyrm/templates/settings/themes.html:6
|
||||
msgid "Themes"
|
||||
|
@ -5048,12 +5102,12 @@ msgid "Instance Info"
|
|||
msgstr "Informació de la instància"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:12
|
||||
#: bookwyrm/templates/settings/site.html:110
|
||||
#: bookwyrm/templates/settings/site.html:123
|
||||
msgid "Footer Content"
|
||||
msgstr "Contingut del peu de pàgina"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:13
|
||||
#: bookwyrm/templates/settings/site.html:134
|
||||
#: bookwyrm/templates/settings/site.html:147
|
||||
msgid "Registration"
|
||||
msgstr "Registre"
|
||||
|
||||
|
@ -5093,71 +5147,79 @@ msgstr "Codi de conducta:"
|
|||
msgid "Privacy Policy:"
|
||||
msgstr "Política de privacitat:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:79
|
||||
#: bookwyrm/templates/settings/site.html:73
|
||||
msgid "Impressum:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:78
|
||||
msgid "Include impressum:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:92
|
||||
msgid "Images"
|
||||
msgstr "Imatges"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:82
|
||||
#: bookwyrm/templates/settings/site.html:95
|
||||
msgid "Logo:"
|
||||
msgstr "Logo:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:86
|
||||
#: bookwyrm/templates/settings/site.html:99
|
||||
msgid "Logo small:"
|
||||
msgstr "Logo petit:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:90
|
||||
#: bookwyrm/templates/settings/site.html:103
|
||||
msgid "Favicon:"
|
||||
msgstr "Favicon:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:98
|
||||
#: bookwyrm/templates/settings/site.html:111
|
||||
msgid "Default theme:"
|
||||
msgstr "Tema per defecte:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:113
|
||||
#: bookwyrm/templates/settings/site.html:126
|
||||
msgid "Support link:"
|
||||
msgstr "Enllaç de suport:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:117
|
||||
#: bookwyrm/templates/settings/site.html:130
|
||||
msgid "Support title:"
|
||||
msgstr "Títol de suport:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:121
|
||||
#: bookwyrm/templates/settings/site.html:134
|
||||
msgid "Admin email:"
|
||||
msgstr "Correu electrònic de l'administrador:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:125
|
||||
#: bookwyrm/templates/settings/site.html:138
|
||||
msgid "Additional info:"
|
||||
msgstr "Informació addicional:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:139
|
||||
#: bookwyrm/templates/settings/site.html:152
|
||||
msgid "Allow registration"
|
||||
msgstr "Permet el registre"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:145
|
||||
#: bookwyrm/templates/settings/site.html:158
|
||||
msgid "Require users to confirm email address"
|
||||
msgstr "Requereix els usuaris que confirmin les seves adreces de correu"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:147
|
||||
#: bookwyrm/templates/settings/site.html:160
|
||||
msgid "(Recommended if registration is open)"
|
||||
msgstr "(Recomanat si el registre està obert)"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:152
|
||||
#: bookwyrm/templates/settings/site.html:165
|
||||
msgid "Allow invite requests"
|
||||
msgstr "Permet peticions d'invitació"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:158
|
||||
#: bookwyrm/templates/settings/site.html:171
|
||||
msgid "Set a question for invite requests"
|
||||
msgstr "Estableix una pregunta per les sol·licituds d'invitació"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:163
|
||||
#: bookwyrm/templates/settings/site.html:176
|
||||
msgid "Question:"
|
||||
msgstr "Pregunta:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:168
|
||||
#: bookwyrm/templates/settings/site.html:181
|
||||
msgid "Registration closed text:"
|
||||
msgstr "Text de registre tancat:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:172
|
||||
#: bookwyrm/templates/settings/site.html:185
|
||||
msgid "Invite request text:"
|
||||
msgstr "Text de sol·licitud d'invitació:"
|
||||
|
||||
|
@ -5712,6 +5774,19 @@ msgstr "Deixa de seguir"
|
|||
msgid "Accept"
|
||||
msgstr "Accepta"
|
||||
|
||||
#: bookwyrm/templates/snippets/footer.html:16
|
||||
msgid "Documentation"
|
||||
msgstr "Documentació"
|
||||
|
||||
#: bookwyrm/templates/snippets/footer.html:42
|
||||
#, python-format
|
||||
msgid "Support %(site_name)s on <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
msgstr "Dona suport a %(site_name)s a <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
|
||||
#: bookwyrm/templates/snippets/footer.html:49
|
||||
msgid "BookWyrm's source code is freely available. You can contribute or report issues on <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
msgstr "El codi font de BookWyrm està disponible de manera oberta. Pots contribuir-hi o informar de problemes a <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
|
||||
#: bookwyrm/templates/snippets/form_rate_stars.html:20
|
||||
#: bookwyrm/templates/snippets/stars.html:13
|
||||
msgid "No rating"
|
||||
|
@ -6199,11 +6274,11 @@ msgstr "Objectiu de lectura del %(current_year)s"
|
|||
msgid "User Activity"
|
||||
msgstr "Activitat d'usuari"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:70
|
||||
#: bookwyrm/templates/user/user.html:71
|
||||
msgid "RSS feed"
|
||||
msgstr "Canal RSS"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:81
|
||||
#: bookwyrm/templates/user/user.html:83
|
||||
msgid "No activities yet!"
|
||||
msgstr "Encara no hi ha activitats."
|
||||
|
||||
|
@ -6252,10 +6327,6 @@ msgstr "El fitxer sobrepassa la mida màxima: 10MB"
|
|||
msgid "%(title)s: %(subtitle)s"
|
||||
msgstr "%(title)s: %(subtitle)s"
|
||||
|
||||
#: bookwyrm/views/imports/import_data.py:86
|
||||
msgid "Not a valid csv file"
|
||||
msgstr "No és un fitxer csv vàlid"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:34
|
||||
#, python-brace-format
|
||||
msgid "Status updates from {obj.display_name}"
|
||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load diff
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: 2022-11-10 21:42+0000\n"
|
||||
"PO-Revision-Date: 2022-11-19 03:57\n"
|
||||
"POT-Creation-Date: 2022-12-05 02:21+0000\n"
|
||||
"PO-Revision-Date: 2022-12-05 03:56\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Spanish\n"
|
||||
"Language: es\n"
|
||||
|
@ -90,7 +90,7 @@ msgstr "Código incorrecto"
|
|||
msgid "This domain is blocked. Please contact your administrator if you think this is an error."
|
||||
msgstr "Este dominio está bloqueado. Ponte en contacto con le admin si crees que se trata de un error."
|
||||
|
||||
#: bookwyrm/forms/links.py:46
|
||||
#: bookwyrm/forms/links.py:49
|
||||
msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending."
|
||||
msgstr "Este enlace con ese tipo de archivo ya ha sido añadido a este libro. Si no aparece, es porque el dominio todavía está pendiente."
|
||||
|
||||
|
@ -256,14 +256,14 @@ msgstr "Seguidores"
|
|||
msgid "Private"
|
||||
msgstr "Privado"
|
||||
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:140
|
||||
#: bookwyrm/templates/settings/imports/imports.html:19
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:157
|
||||
#: bookwyrm/templates/settings/imports/imports.html:67
|
||||
#: 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:138
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:155
|
||||
msgid "Complete"
|
||||
msgstr "Completado"
|
||||
|
||||
|
@ -316,19 +316,19 @@ msgstr "Citas"
|
|||
msgid "Everything else"
|
||||
msgstr "Todo lo demás"
|
||||
|
||||
#: bookwyrm/settings.py:209
|
||||
#: bookwyrm/settings.py:213
|
||||
msgid "Home Timeline"
|
||||
msgstr "Línea de tiempo principal"
|
||||
|
||||
#: bookwyrm/settings.py:209
|
||||
#: bookwyrm/settings.py:213
|
||||
msgid "Home"
|
||||
msgstr "Inicio"
|
||||
|
||||
#: bookwyrm/settings.py:210
|
||||
#: bookwyrm/settings.py:214
|
||||
msgid "Books Timeline"
|
||||
msgstr "Línea temporal de libros"
|
||||
|
||||
#: bookwyrm/settings.py:210
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:101
|
||||
#: bookwyrm/templates/search/layout.html:22
|
||||
#: bookwyrm/templates/search/layout.html:43
|
||||
|
@ -336,71 +336,71 @@ msgstr "Línea temporal de libros"
|
|||
msgid "Books"
|
||||
msgstr "Libros"
|
||||
|
||||
#: bookwyrm/settings.py:282
|
||||
#: bookwyrm/settings.py:286
|
||||
msgid "English"
|
||||
msgstr "English (Inglés)"
|
||||
|
||||
#: bookwyrm/settings.py:283
|
||||
#: bookwyrm/settings.py:287
|
||||
msgid "Català (Catalan)"
|
||||
msgstr "Català (Catalán)"
|
||||
|
||||
#: bookwyrm/settings.py:284
|
||||
#: bookwyrm/settings.py:288
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (Alemán)"
|
||||
|
||||
#: bookwyrm/settings.py:285
|
||||
#: bookwyrm/settings.py:289
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español"
|
||||
|
||||
#: bookwyrm/settings.py:286
|
||||
#: bookwyrm/settings.py:290
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (gallego)"
|
||||
|
||||
#: bookwyrm/settings.py:287
|
||||
#: bookwyrm/settings.py:291
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano"
|
||||
|
||||
#: bookwyrm/settings.py:288
|
||||
#: bookwyrm/settings.py:292
|
||||
msgid "Suomi (Finnish)"
|
||||
msgstr "Suomi (finés)"
|
||||
|
||||
#: bookwyrm/settings.py:289
|
||||
#: bookwyrm/settings.py:293
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (Francés)"
|
||||
|
||||
#: bookwyrm/settings.py:290
|
||||
#: bookwyrm/settings.py:294
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Lituano)"
|
||||
|
||||
#: bookwyrm/settings.py:291
|
||||
#: bookwyrm/settings.py:295
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (noruego)"
|
||||
|
||||
#: bookwyrm/settings.py:292
|
||||
#: bookwyrm/settings.py:296
|
||||
msgid "Polski (Polish)"
|
||||
msgstr "Polski (Polaco)"
|
||||
|
||||
#: bookwyrm/settings.py:293
|
||||
#: bookwyrm/settings.py:297
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (portugués brasileño)"
|
||||
|
||||
#: bookwyrm/settings.py:294
|
||||
#: bookwyrm/settings.py:298
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Portugués europeo)"
|
||||
|
||||
#: bookwyrm/settings.py:295
|
||||
#: bookwyrm/settings.py:299
|
||||
msgid "Română (Romanian)"
|
||||
msgstr "Română (rumano)"
|
||||
|
||||
#: bookwyrm/settings.py:296
|
||||
#: bookwyrm/settings.py:300
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Sueco)"
|
||||
|
||||
#: bookwyrm/settings.py:297
|
||||
#: bookwyrm/settings.py:301
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (Chino simplificado)"
|
||||
|
||||
#: bookwyrm/settings.py:298
|
||||
#: bookwyrm/settings.py:302
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (Chino tradicional)"
|
||||
|
||||
|
@ -459,24 +459,24 @@ msgstr "Las valoraciones de <a href=\"%(book_path)s\"><em>%(title)s</em></a> est
|
|||
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 "Haz un registro de tu lectura, habla de libros, escribe reseñas, y descubre qué leer a continuación. BookWyrm es un software de escala humana, sin anuncios, anticorporativo y orientado a la comunidad, diseñado para mantenerse pequeño y personal. Si tienes solicitudes de características, reportes de errores o grandes sueños, <a href=\"https://joinbookwyrm.com/get-involved\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">contacta con nosotros</a> y hazte oír."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:103
|
||||
#: bookwyrm/templates/about/about.html:104
|
||||
msgid "Meet your admins"
|
||||
msgstr "Conoce a tus administradores"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:106
|
||||
#: bookwyrm/templates/about/about.html:107
|
||||
#, python-format
|
||||
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"%(coc_path)s\">code of conduct</a>, and respond when users report spam and bad behavior."
|
||||
msgstr "Los moderadores y administradores de %(site_name)s mantienen el sitio en funcionamiento, hacen cumplir el <a href=\"%(coc_path)s\">Código de conducta</a> y responden cuando les usuaries informan de spam y mal comportamiento."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:120
|
||||
#: bookwyrm/templates/about/about.html:121
|
||||
msgid "Moderator"
|
||||
msgstr "Moderador"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:122 bookwyrm/templates/user_menu.html:63
|
||||
#: bookwyrm/templates/about/about.html:123 bookwyrm/templates/user_menu.html:63
|
||||
msgid "Admin"
|
||||
msgstr "Admin"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:138
|
||||
#: bookwyrm/templates/about/about.html:139
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: bookwyrm/templates/snippets/status/status_options.html:35
|
||||
#: bookwyrm/templates/snippets/user_options.html:14
|
||||
|
@ -486,6 +486,7 @@ msgstr "Enviar mensaje directo"
|
|||
#: bookwyrm/templates/about/conduct.html:4
|
||||
#: bookwyrm/templates/about/conduct.html:9
|
||||
#: bookwyrm/templates/about/layout.html:41
|
||||
#: bookwyrm/templates/snippets/footer.html:27
|
||||
msgid "Code of Conduct"
|
||||
msgstr "Código de conducta"
|
||||
|
||||
|
@ -503,8 +504,8 @@ msgid "Software version:"
|
|||
msgstr "Versión del software:"
|
||||
|
||||
#: bookwyrm/templates/about/layout.html:30
|
||||
#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:200
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:8
|
||||
#: bookwyrm/templates/embed-layout.html:33
|
||||
#: bookwyrm/templates/snippets/footer.html:8
|
||||
#, python-format
|
||||
msgid "About %(site_name)s"
|
||||
msgstr "Sobre %(site_name)s"
|
||||
|
@ -512,9 +513,15 @@ msgstr "Sobre %(site_name)s"
|
|||
#: bookwyrm/templates/about/layout.html:47
|
||||
#: bookwyrm/templates/about/privacy.html:4
|
||||
#: bookwyrm/templates/about/privacy.html:9
|
||||
#: bookwyrm/templates/snippets/footer.html:30
|
||||
msgid "Privacy Policy"
|
||||
msgstr "Política de privacidad"
|
||||
|
||||
#: bookwyrm/templates/about/layout.html:54
|
||||
#: bookwyrm/templates/snippets/footer.html:34
|
||||
msgid "Impressum"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:7
|
||||
#: bookwyrm/templates/feed/summary_card.html:8
|
||||
#, python-format
|
||||
|
@ -812,7 +819,7 @@ 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/site.html:181
|
||||
#: bookwyrm/templates/settings/site.html:194
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:69
|
||||
#: bookwyrm/templates/shelf/form.html:25
|
||||
#: bookwyrm/templates/snippets/reading_modals/layout.html:18
|
||||
|
@ -834,7 +841,7 @@ msgstr "Guardar"
|
|||
#: bookwyrm/templates/preferences/disable-2fa.html:19
|
||||
#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27
|
||||
#: bookwyrm/templates/readthrough/readthrough_modal.html:80
|
||||
#: bookwyrm/templates/search/barcode_modal.html:45
|
||||
#: bookwyrm/templates/search/barcode_modal.html:43
|
||||
#: bookwyrm/templates/settings/federation/instance.html:106
|
||||
#: bookwyrm/templates/settings/imports/complete_import_modal.html:16
|
||||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22
|
||||
|
@ -852,7 +859,7 @@ msgstr "La carga de datos se conectará a <strong>%(source_name)s</strong> y com
|
|||
#: bookwyrm/templates/book/sync_modal.html:24
|
||||
#: bookwyrm/templates/groups/members.html:29
|
||||
#: bookwyrm/templates/landing/password_reset.html:52
|
||||
#: bookwyrm/templates/preferences/2fa.html:54
|
||||
#: bookwyrm/templates/preferences/2fa.html:77
|
||||
#: bookwyrm/templates/settings/imports/complete_import_modal.html:19
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:17
|
||||
msgid "Confirm"
|
||||
|
@ -1320,7 +1327,7 @@ msgid "Domain"
|
|||
msgstr "Dominio"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:36
|
||||
#: bookwyrm/templates/import/import.html:105
|
||||
#: bookwyrm/templates/import/import.html:122
|
||||
#: bookwyrm/templates/import/import_status.html:134
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:37
|
||||
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:48
|
||||
|
@ -1333,7 +1340,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:62
|
||||
#: bookwyrm/templates/settings/imports/imports.html:110
|
||||
#: bookwyrm/templates/settings/reports/report_links_table.html:6
|
||||
#: bookwyrm/templates/settings/themes.html:99
|
||||
msgid "Actions"
|
||||
|
@ -1349,11 +1356,11 @@ msgstr "Usuario/a desconocido/a"
|
|||
msgid "Report spam"
|
||||
msgstr "Denunciar spam"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:101
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:102
|
||||
msgid "No links available for this book."
|
||||
msgstr "Ningún enlace disponible para este libro."
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:112
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:113
|
||||
#: bookwyrm/templates/book/file_links/links.html:18
|
||||
msgid "Add link to file"
|
||||
msgstr "Añadir enlace a archivo"
|
||||
|
@ -1735,7 +1742,7 @@ msgstr "Si no solicitaste reestablecer tu contraseña, puedes ignorar este mensa
|
|||
msgid "Reset your %(site_name)s password"
|
||||
msgstr "Reestablece tu contraseña de %(site_name)s"
|
||||
|
||||
#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:40
|
||||
#: bookwyrm/templates/embed-layout.html:20 bookwyrm/templates/layout.html:40
|
||||
#: 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
|
||||
|
@ -1743,12 +1750,12 @@ msgstr "Reestablece tu contraseña de %(site_name)s"
|
|||
msgid "%(site_name)s home page"
|
||||
msgstr "Página de inicio de %(site_name)s"
|
||||
|
||||
#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:204
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:12
|
||||
#: bookwyrm/templates/embed-layout.html:39
|
||||
#: bookwyrm/templates/snippets/footer.html:12
|
||||
msgid "Contact site admin"
|
||||
msgstr "Comuníquese con el administrador del sitio"
|
||||
|
||||
#: bookwyrm/templates/embed-layout.html:46
|
||||
#: bookwyrm/templates/embed-layout.html:45
|
||||
msgid "Join BookWyrm"
|
||||
msgstr "Únete a BookWyrm"
|
||||
|
||||
|
@ -2314,8 +2321,7 @@ msgstr "Bienvenido a Bookwyrm<br><br>¿Quieres hacer la visita guiada para ayuda
|
|||
|
||||
#: bookwyrm/templates/guided_tour/home.html:17
|
||||
#: bookwyrm/templates/guided_tour/home.html:39
|
||||
#: bookwyrm/templates/layout.html:212
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:20
|
||||
#: bookwyrm/templates/snippets/footer.html:20
|
||||
msgid "Guided Tour"
|
||||
msgstr "Visita guiada"
|
||||
|
||||
|
@ -2625,81 +2631,89 @@ msgstr "Encontrar un libro"
|
|||
msgid "Import Books"
|
||||
msgstr "Importar libros"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:15
|
||||
#: bookwyrm/templates/import/import.html:13
|
||||
msgid "Not a valid CSV file"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:22
|
||||
#, 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:19
|
||||
#: bookwyrm/templates/import/import.html:26
|
||||
#, 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:34
|
||||
#: bookwyrm/templates/import/import.html:41
|
||||
msgid "Data source:"
|
||||
msgstr "Fuente de datos:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:40
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
msgid "Goodreads (CSV)"
|
||||
msgstr ""
|
||||
msgstr "Goodreads (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:43
|
||||
#: bookwyrm/templates/import/import.html:50
|
||||
msgid "Storygraph (CSV)"
|
||||
msgstr ""
|
||||
msgstr "Storygraph (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:46
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
msgid "LibraryThing (TSV)"
|
||||
msgstr ""
|
||||
msgstr "LibraryThing (TSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:49
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
msgid "OpenLibrary (CSV)"
|
||||
msgstr ""
|
||||
msgstr "OpenLibrary (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:52
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
msgid "Calibre (CSV)"
|
||||
msgstr ""
|
||||
msgstr "Calibre (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:58
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
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:67
|
||||
#: bookwyrm/templates/import/import.html:74
|
||||
msgid "Data file:"
|
||||
msgstr "Archivo de datos:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:75
|
||||
#: bookwyrm/templates/import/import.html:82
|
||||
msgid "Include reviews"
|
||||
msgstr "Incluir reseñas"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:80
|
||||
#: bookwyrm/templates/import/import.html:87
|
||||
msgid "Privacy setting for imported reviews:"
|
||||
msgstr "Configuración de privacidad para las reseñas importadas:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:86
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
#: bookwyrm/templates/preferences/layout.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:78
|
||||
msgid "Import"
|
||||
msgstr "Importar"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:91
|
||||
#: bookwyrm/templates/import/import.html:101
|
||||
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
|
||||
msgid "Recent Imports"
|
||||
msgstr "Importaciones recientes"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:96
|
||||
#: bookwyrm/templates/settings/imports/imports.html:41
|
||||
#: bookwyrm/templates/import/import.html:113
|
||||
#: bookwyrm/templates/settings/imports/imports.html:89
|
||||
msgid "Date Created"
|
||||
msgstr "Fecha de Creación"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:99
|
||||
#: bookwyrm/templates/import/import.html:116
|
||||
msgid "Last Updated"
|
||||
msgstr "Última Actualización"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:102
|
||||
#: bookwyrm/templates/settings/imports/imports.html:50
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
msgid "Items"
|
||||
msgstr ""
|
||||
msgstr "Elementos"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:111
|
||||
#: bookwyrm/templates/import/import.html:128
|
||||
msgid "No recent imports"
|
||||
msgstr "No hay ninguna importación reciente"
|
||||
|
||||
|
@ -2734,7 +2748,7 @@ msgid "Refresh"
|
|||
msgstr "Refrescar"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:72
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
#: bookwyrm/templates/settings/imports/imports.html:130
|
||||
msgid "Stop import"
|
||||
msgstr "Parar la importación"
|
||||
|
||||
|
@ -2806,7 +2820,7 @@ msgstr "Previsualización de la importación no disponible."
|
|||
|
||||
#: bookwyrm/templates/import/import_status.html:150
|
||||
msgid "No items currently need review"
|
||||
msgstr ""
|
||||
msgstr "Ningún elemento requiere reseña actualmente"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:186
|
||||
msgid "View imported review"
|
||||
|
@ -2852,7 +2866,7 @@ msgid "Reject"
|
|||
msgstr "Rechazar"
|
||||
|
||||
#: bookwyrm/templates/import/troubleshoot.html:7
|
||||
#: bookwyrm/templates/settings/imports/imports.html:59
|
||||
#: bookwyrm/templates/settings/imports/imports.html:107
|
||||
msgid "Failed items"
|
||||
msgstr "Elementos fallidos"
|
||||
|
||||
|
@ -2958,7 +2972,7 @@ msgstr "Nombre de usuario:"
|
|||
#: bookwyrm/templates/landing/password_reset.html:26
|
||||
#: bookwyrm/templates/landing/reactivate.html:23
|
||||
#: bookwyrm/templates/layout.html:144 bookwyrm/templates/ostatus/error.html:32
|
||||
#: bookwyrm/templates/preferences/2fa.html:68
|
||||
#: bookwyrm/templates/preferences/2fa.html:91
|
||||
#: bookwyrm/templates/snippets/register_form.html:45
|
||||
msgid "Password:"
|
||||
msgstr "Contraseña:"
|
||||
|
@ -3038,22 +3052,6 @@ msgstr "Estado publicado con éxito"
|
|||
msgid "Error posting status"
|
||||
msgstr "Error al publicar el estado"
|
||||
|
||||
#: bookwyrm/templates/layout.html:208
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:16
|
||||
msgid "Documentation"
|
||||
msgstr "Documentación de Django"
|
||||
|
||||
#: bookwyrm/templates/layout.html:221
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:29
|
||||
#, python-format
|
||||
msgid "Support %(site_name)s on <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
msgstr "Apoya a %(site_name)s en <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
|
||||
#: bookwyrm/templates/layout.html:228
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:36
|
||||
msgid "BookWyrm's source code is freely available. You can contribute or report issues on <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
msgstr "BookWyrm es software libre y de código abierto. Puedes contribuir o reportar problemas en <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
|
||||
#: bookwyrm/templates/lists/add_item_modal.html:8
|
||||
#, python-format
|
||||
msgid "Add \"<em>%(title)s</em>\" to this list"
|
||||
|
@ -3119,7 +3117,7 @@ msgid "Delete this list?"
|
|||
msgstr "¿Eliminar esta lista?"
|
||||
|
||||
#: bookwyrm/templates/lists/edit_form.html:5
|
||||
#: bookwyrm/templates/lists/layout.html:17
|
||||
#: bookwyrm/templates/lists/layout.html:18
|
||||
msgid "Edit List"
|
||||
msgstr "Editar lista"
|
||||
|
||||
|
@ -3128,13 +3126,12 @@ msgstr "Editar lista"
|
|||
msgid "%(list_name)s, a list by %(owner)s"
|
||||
msgstr "%(list_name)s, una lista de %(owner)s"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:18
|
||||
#: bookwyrm/templates/lists/embed-list.html:20
|
||||
#, python-format
|
||||
msgid "on <a href=\"/\">%(site_name)s</a>"
|
||||
msgstr "en <a href=\"/\">%(site_name)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:27
|
||||
#: bookwyrm/templates/lists/list.html:54
|
||||
#: bookwyrm/templates/lists/embed-list.html:29
|
||||
msgid "This list is currently empty"
|
||||
msgstr "Esta lista está vacia"
|
||||
|
||||
|
@ -3216,6 +3213,10 @@ msgstr "¡Has sugerido un libro para esta lista exitosamente!"
|
|||
msgid "You successfully added a book to this list!"
|
||||
msgstr "¡Has agregado un libro a esta lista exitosamente!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:54
|
||||
msgid "This list is currently empty."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:104
|
||||
msgid "Edit notes"
|
||||
msgstr "Editar notas"
|
||||
|
@ -3339,16 +3340,21 @@ msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a> ha sugerido añad
|
|||
|
||||
#: bookwyrm/templates/notifications/items/add.html:66
|
||||
#, python-format
|
||||
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> added a book to one of your lists"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/notifications/items/add.html:72
|
||||
#, python-format
|
||||
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> added <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other book to your list \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
msgid_plural "<a href=\"%(related_user_link)s\">%(related_user)s</a> added <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other books to your list \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
msgstr[0] "<a href=\"%(related_user_link)s\">%(related_user)s</a> ha añadido <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, y %(display_count)s y otros libros en tu lista \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
msgstr[1] "<a href=\"%(related_user_link)s\">%(related_user)s</a> ha añadido <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, y %(display_count)s libros más a tu lista \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
|
||||
#: bookwyrm/templates/notifications/items/add.html:82
|
||||
#: bookwyrm/templates/notifications/items/add.html:88
|
||||
#, python-format
|
||||
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> suggested adding <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other book to your list \"<a href=\"%(list_curate_path)s\">%(list_name)s</a>\""
|
||||
msgid_plural "<a href=\"%(related_user_link)s\">%(related_user)s</a> suggested adding <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other books to your list \"<a href=\"%(list_curate_path)s\">%(list_name)s</a>\""
|
||||
msgstr[0] ""
|
||||
msgstr[0] "<a href=\"%(related_user_link)s\">%(related_user)s</a> sugiere añadir <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, y %(display_count)s a tu lista \"<a href=\"%(list_curate_path)s\">%(list_name)s</a>\""
|
||||
msgstr[1] "<a href=\"%(related_user_link)s\">%(related_user)s</a> ha sugerido añadir <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, y %(display_count)s libros más a tu lista \"<a href=\"%(list_curate_path)s\">%(list_name)s</a>\""
|
||||
|
||||
#: bookwyrm/templates/notifications/items/boost.html:21
|
||||
|
@ -3768,19 +3774,31 @@ msgstr "Genera códigos de respaldo"
|
|||
msgid "Scan the QR code with your authentication app and then enter the code from your app below to confirm your app is set up."
|
||||
msgstr "Escanea el código QR con tu aplicación de autenticación e introduce el código de tu aplicación a continuación para confirmar que esté correctamente configurada."
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:50
|
||||
#: bookwyrm/templates/preferences/2fa.html:52
|
||||
msgid "Use setup key"
|
||||
msgstr "Usar clave de configuración"
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:58
|
||||
msgid "Account name:"
|
||||
msgstr "Nombre de la cuenta:"
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:65
|
||||
msgid "Code:"
|
||||
msgstr "Código:"
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:73
|
||||
msgid "Enter the code from your app:"
|
||||
msgstr "Introduce el código de tu aplicación:"
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:60
|
||||
#: bookwyrm/templates/preferences/2fa.html:83
|
||||
msgid "You can make your account more secure by using Two Factor Authentication (2FA). This will require you to enter a one-time code using a phone app like <em>Authy</em>, <em>Google Authenticator</em> or <em>Microsoft Authenticator</em> each time you log in."
|
||||
msgstr "Tú puedes hacer tu cuenta más segura a través de usar Autenticación de Dos Factores (2FA). Esto requiere que uses un código de un solo uso usando una aplicación de celular como <em>Authy</em>, <em>Autenticador de Google</em> o <em>Microsoft Authenticator</em> cada vez que inicies sesión."
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:62
|
||||
#: bookwyrm/templates/preferences/2fa.html:85
|
||||
msgid "Confirm your password to begin setting up 2FA."
|
||||
msgstr "Confirme su contraseña para empezar a configurar 2FA."
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:72
|
||||
#: bookwyrm/templates/preferences/2fa.html:95
|
||||
#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:37
|
||||
msgid "Set up 2FA"
|
||||
msgstr "Configurar 2FA"
|
||||
|
@ -3870,7 +3888,7 @@ msgstr "Perfil"
|
|||
#: bookwyrm/templates/preferences/edit_user.html:13
|
||||
#: bookwyrm/templates/preferences/edit_user.html:64
|
||||
#: bookwyrm/templates/settings/site.html:11
|
||||
#: bookwyrm/templates/settings/site.html:77
|
||||
#: bookwyrm/templates/settings/site.html:90
|
||||
#: bookwyrm/templates/setup/config.html:91
|
||||
msgid "Display"
|
||||
msgstr "Apariencia"
|
||||
|
@ -4050,54 +4068,66 @@ msgstr "\n"
|
|||
" Escanear código de barras\n"
|
||||
" "
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:23
|
||||
#: bookwyrm/templates/search/barcode_modal.html:21
|
||||
msgid "Requesting camera..."
|
||||
msgstr "Solicitando acceso a cámara..."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:24
|
||||
#: bookwyrm/templates/search/barcode_modal.html:22
|
||||
msgid "Grant access to the camera to scan a book's barcode."
|
||||
msgstr "Otorga acceso a la cámara para poder escanear el código de barras de tus libros."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:29
|
||||
#: bookwyrm/templates/search/barcode_modal.html:27
|
||||
msgid "Could not access camera"
|
||||
msgstr "No se ha podido acceder a la cámara."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:33
|
||||
#: bookwyrm/templates/search/barcode_modal.html:31
|
||||
msgctxt "barcode scanner"
|
||||
msgid "Scanning..."
|
||||
msgstr "Escaneando..."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:34
|
||||
#: bookwyrm/templates/search/barcode_modal.html:32
|
||||
msgid "Align your book's barcode with the camera."
|
||||
msgstr "Alinea el código de barras del libro con la cámara."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:38
|
||||
#: bookwyrm/templates/search/barcode_modal.html:36
|
||||
msgctxt "barcode scanner"
|
||||
msgid "ISBN scanned"
|
||||
msgstr "Se ha escaneado el ISBN."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:39
|
||||
#: bookwyrm/templates/search/barcode_modal.html:37
|
||||
msgctxt "followed by ISBN"
|
||||
msgid "Searching for book:"
|
||||
msgstr "Buscando libro:"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:39
|
||||
#: bookwyrm/templates/search/book.html:25
|
||||
#, python-format
|
||||
msgid "%(formatted_review_count)s review"
|
||||
msgid_plural "%(formatted_review_count)s reviews"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: bookwyrm/templates/search/book.html:34
|
||||
#, python-format
|
||||
msgid "(published %(pub_year)s)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/search/book.html:50
|
||||
msgid "Results from"
|
||||
msgstr "Resultados de"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:78
|
||||
#: bookwyrm/templates/search/book.html:89
|
||||
msgid "Import book"
|
||||
msgstr "Importar libro"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:102
|
||||
#: bookwyrm/templates/search/book.html:113
|
||||
msgid "Load results from other catalogues"
|
||||
msgstr "Cargar resultados de otros catálogos"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:106
|
||||
#: bookwyrm/templates/search/book.html:117
|
||||
msgid "Manually add book"
|
||||
msgstr "Agregar libro a mano"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:111
|
||||
#: bookwyrm/templates/search/book.html:122
|
||||
msgid "Log in to import or add books."
|
||||
msgstr "Iniciar una sesión para importar o agregar libros."
|
||||
|
||||
|
@ -4112,7 +4142,7 @@ msgstr "Tipo de búsqueda"
|
|||
#: bookwyrm/templates/search/layout.html:24
|
||||
#: bookwyrm/templates/search/layout.html:47
|
||||
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:27
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:51
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:52
|
||||
#: bookwyrm/templates/settings/layout.html:36
|
||||
#: bookwyrm/templates/settings/users/user.html:13
|
||||
#: bookwyrm/templates/settings/users/user_admin.html:5
|
||||
|
@ -4186,7 +4216,7 @@ msgid "Create Announcement"
|
|||
msgstr "Crear anuncio"
|
||||
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:21
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:39
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:40
|
||||
msgid "Date added"
|
||||
msgstr "Fecha agregada"
|
||||
|
||||
|
@ -4327,7 +4357,7 @@ msgstr "Quitar regla"
|
|||
#: bookwyrm/templates/settings/celery.html:6
|
||||
#: bookwyrm/templates/settings/celery.html:8
|
||||
msgid "Celery Status"
|
||||
msgstr ""
|
||||
msgstr "Estado de Celery"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:14
|
||||
msgid "Queues"
|
||||
|
@ -4347,14 +4377,14 @@ msgstr "Prioridad alta"
|
|||
|
||||
#: bookwyrm/templates/settings/celery.html:40
|
||||
msgid "Could not connect to Redis broker"
|
||||
msgstr ""
|
||||
msgstr "No se ha podido conectar al broker de Redis"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:48
|
||||
msgid "Active Tasks"
|
||||
msgstr "Tareas activas"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:34
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
|
@ -4376,15 +4406,15 @@ msgstr "Sin tareas activas"
|
|||
|
||||
#: bookwyrm/templates/settings/celery.html:79
|
||||
msgid "Workers"
|
||||
msgstr ""
|
||||
msgstr "Trabajadores"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:84
|
||||
msgid "Uptime:"
|
||||
msgstr ""
|
||||
msgstr "Tiempo ejecutándose:"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:94
|
||||
msgid "Could not connect to Celery"
|
||||
msgstr ""
|
||||
msgstr "No se puede conectar a Celery"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:101
|
||||
msgid "Errors"
|
||||
|
@ -4665,24 +4695,24 @@ msgid "Failed:"
|
|||
msgstr "Falló:"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:62
|
||||
msgid "Expects a json file in the format provided by <a href=\"https://fediblock.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">FediBlock</a>, with a list of entries that have <code>instance</code> and <code>url</code> fields. For example:"
|
||||
msgstr "Se espera un archivo json en el formato proporcionado por <a href=\"https://fediblock.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">FediBlock</a>, con una lista de entradas que tienen <code>instancias</code> y <code>url</code> campos. Ejemplo:"
|
||||
msgid "Expects a json file in the format provided by FediBlock, with a list of entries that have <code>instance</code> and <code>url</code> fields. For example:"
|
||||
msgstr "Se espera un archivo json en el formato que provee FediBlock, con una lista de entradas que contenga los campos <code>instance</code> y <code>url</code>, por ejemplo:"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:36
|
||||
#: bookwyrm/templates/settings/users/server_filter.html:5
|
||||
msgid "Instance name"
|
||||
msgstr "Nombre de instancia"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:43
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:44
|
||||
msgid "Last updated"
|
||||
msgstr "Última actualización"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:47
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:48
|
||||
#: bookwyrm/templates/settings/federation/software_filter.html:5
|
||||
msgid "Software"
|
||||
msgstr "Software"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:69
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:70
|
||||
msgid "No instances found"
|
||||
msgstr "No se encontró ningun anuncio"
|
||||
|
||||
|
@ -4690,27 +4720,51 @@ msgstr "No se encontró ningun anuncio"
|
|||
msgid "Stop import?"
|
||||
msgstr "¿Parar la importación?"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:23
|
||||
#: bookwyrm/templates/settings/imports/imports.html:19
|
||||
msgid "Disable starting new imports"
|
||||
msgstr "Deshabilitar el inicio de nuevas importaciones"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:30
|
||||
msgid "This is only intended to be used when things have gone very wrong with imports and you need to pause the feature while addressing issues."
|
||||
msgstr "Ésto es sólo para usarse en caso de que las cosas vayan realmente mal con las importaciones y necesites pausar esta característica mientras resuelves los problemas."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:31
|
||||
msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
|
||||
msgstr "Mientras las importaciones estén deshabilitadas, los usuarios no tendrán permitido iniciar nuevas importaciones, pero las importaciones existentes no serán afectadas."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:36
|
||||
msgid "Disable imports"
|
||||
msgstr "Deshabilitar importaciones"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:50
|
||||
msgid "Users are currently unable to start new imports"
|
||||
msgstr "Los usuarios actualmente no pueden iniciar nuevas importaciones"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:55
|
||||
msgid "Enable imports"
|
||||
msgstr "Habilitar importaciones"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:71
|
||||
msgid "Completed"
|
||||
msgstr "Completado"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:37
|
||||
#: bookwyrm/templates/settings/imports/imports.html:85
|
||||
msgid "User"
|
||||
msgstr "Usuario"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:46
|
||||
#: bookwyrm/templates/settings/imports/imports.html:94
|
||||
msgid "Date Updated"
|
||||
msgstr "Fecha Actualizada"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:101
|
||||
msgid "Pending items"
|
||||
msgstr ""
|
||||
msgstr "Elementos pendientes"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:56
|
||||
#: bookwyrm/templates/settings/imports/imports.html:104
|
||||
msgid "Successful items"
|
||||
msgstr ""
|
||||
msgstr "Importaciones exitosas"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:91
|
||||
#: bookwyrm/templates/settings/imports/imports.html:139
|
||||
msgid "No matching imports found."
|
||||
msgstr "No se han encontrado importaciones coincidentes."
|
||||
|
||||
|
@ -4894,7 +4948,7 @@ msgstr "Sistema"
|
|||
|
||||
#: bookwyrm/templates/settings/layout.html:88
|
||||
msgid "Celery status"
|
||||
msgstr ""
|
||||
msgstr "Estado de Celery"
|
||||
|
||||
#: bookwyrm/templates/settings/layout.html:93
|
||||
msgid "Instance Settings"
|
||||
|
@ -4907,7 +4961,7 @@ msgid "Site Settings"
|
|||
msgstr "Configurar sitio"
|
||||
|
||||
#: bookwyrm/templates/settings/layout.html:106
|
||||
#: bookwyrm/templates/settings/site.html:95
|
||||
#: bookwyrm/templates/settings/site.html:108
|
||||
#: bookwyrm/templates/settings/themes.html:4
|
||||
#: bookwyrm/templates/settings/themes.html:6
|
||||
msgid "Themes"
|
||||
|
@ -5048,12 +5102,12 @@ msgid "Instance Info"
|
|||
msgstr "Información de instancia"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:12
|
||||
#: bookwyrm/templates/settings/site.html:110
|
||||
#: bookwyrm/templates/settings/site.html:123
|
||||
msgid "Footer Content"
|
||||
msgstr "Contenido del pie de página"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:13
|
||||
#: bookwyrm/templates/settings/site.html:134
|
||||
#: bookwyrm/templates/settings/site.html:147
|
||||
msgid "Registration"
|
||||
msgstr "Registración"
|
||||
|
||||
|
@ -5093,71 +5147,79 @@ msgstr "Código de conducta:"
|
|||
msgid "Privacy Policy:"
|
||||
msgstr "Política de privacidad:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:79
|
||||
#: bookwyrm/templates/settings/site.html:73
|
||||
msgid "Impressum:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:78
|
||||
msgid "Include impressum:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:92
|
||||
msgid "Images"
|
||||
msgstr "Imagenes"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:82
|
||||
#: bookwyrm/templates/settings/site.html:95
|
||||
msgid "Logo:"
|
||||
msgstr "Logo:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:86
|
||||
#: bookwyrm/templates/settings/site.html:99
|
||||
msgid "Logo small:"
|
||||
msgstr "Logo pequeño:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:90
|
||||
#: bookwyrm/templates/settings/site.html:103
|
||||
msgid "Favicon:"
|
||||
msgstr "Favicon:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:98
|
||||
#: bookwyrm/templates/settings/site.html:111
|
||||
msgid "Default theme:"
|
||||
msgstr "Tema por defecto:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:113
|
||||
#: bookwyrm/templates/settings/site.html:126
|
||||
msgid "Support link:"
|
||||
msgstr "Enlace de apoyo:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:117
|
||||
#: bookwyrm/templates/settings/site.html:130
|
||||
msgid "Support title:"
|
||||
msgstr "Título de apoyo:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:121
|
||||
#: bookwyrm/templates/settings/site.html:134
|
||||
msgid "Admin email:"
|
||||
msgstr "Correo electrónico de administradorx:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:125
|
||||
#: bookwyrm/templates/settings/site.html:138
|
||||
msgid "Additional info:"
|
||||
msgstr "Más informacion:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:139
|
||||
#: bookwyrm/templates/settings/site.html:152
|
||||
msgid "Allow registration"
|
||||
msgstr "Permitir registración"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:145
|
||||
#: bookwyrm/templates/settings/site.html:158
|
||||
msgid "Require users to confirm email address"
|
||||
msgstr "Requerir a usuarios a confirmar dirección de correo electrónico"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:147
|
||||
#: bookwyrm/templates/settings/site.html:160
|
||||
msgid "(Recommended if registration is open)"
|
||||
msgstr "(Recomendado si la registración es abierta)"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:152
|
||||
#: bookwyrm/templates/settings/site.html:165
|
||||
msgid "Allow invite requests"
|
||||
msgstr "Permitir solicitudes de invitación"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:158
|
||||
#: bookwyrm/templates/settings/site.html:171
|
||||
msgid "Set a question for invite requests"
|
||||
msgstr "Establece una pregunta para las solicitudes de invitación."
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:163
|
||||
#: bookwyrm/templates/settings/site.html:176
|
||||
msgid "Question:"
|
||||
msgstr "Pregunta:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:168
|
||||
#: bookwyrm/templates/settings/site.html:181
|
||||
msgid "Registration closed text:"
|
||||
msgstr "Texto de registración cerrada:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:172
|
||||
#: bookwyrm/templates/settings/site.html:185
|
||||
msgid "Invite request text:"
|
||||
msgstr "Texto de solicitud de invitación:"
|
||||
|
||||
|
@ -5712,6 +5774,19 @@ msgstr "Dejar de seguir"
|
|||
msgid "Accept"
|
||||
msgstr "Aceptar"
|
||||
|
||||
#: bookwyrm/templates/snippets/footer.html:16
|
||||
msgid "Documentation"
|
||||
msgstr "Documentación de Django"
|
||||
|
||||
#: bookwyrm/templates/snippets/footer.html:42
|
||||
#, python-format
|
||||
msgid "Support %(site_name)s on <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
msgstr "Apoya a %(site_name)s en <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
|
||||
#: bookwyrm/templates/snippets/footer.html:49
|
||||
msgid "BookWyrm's source code is freely available. You can contribute or report issues on <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
msgstr "BookWyrm es software libre y de código abierto. Puedes contribuir o reportar problemas en <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
|
||||
#: bookwyrm/templates/snippets/form_rate_stars.html:20
|
||||
#: bookwyrm/templates/snippets/stars.html:13
|
||||
msgid "No rating"
|
||||
|
@ -6199,11 +6274,11 @@ msgstr "Objetivo de Lectura de %(current_year)s"
|
|||
msgid "User Activity"
|
||||
msgstr "Actividad del usuario"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:70
|
||||
#: bookwyrm/templates/user/user.html:71
|
||||
msgid "RSS feed"
|
||||
msgstr "Feed RSS"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:81
|
||||
#: bookwyrm/templates/user/user.html:83
|
||||
msgid "No activities yet!"
|
||||
msgstr "¡Aún no actividades!"
|
||||
|
||||
|
@ -6252,10 +6327,6 @@ msgstr "Archivo excede el tamaño máximo: 10MB"
|
|||
msgid "%(title)s: %(subtitle)s"
|
||||
msgstr "%(title)s: %(subtitle)s"
|
||||
|
||||
#: bookwyrm/views/imports/import_data.py:86
|
||||
msgid "Not a valid csv file"
|
||||
msgstr "No un archivo csv válido"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:34
|
||||
#, python-brace-format
|
||||
msgid "Status updates from {obj.display_name}"
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-11-10 21:42+0000\n"
|
||||
"PO-Revision-Date: 2022-11-10 22:54\n"
|
||||
"POT-Creation-Date: 2022-12-05 02:21+0000\n"
|
||||
"PO-Revision-Date: 2022-12-05 03:56\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Finnish\n"
|
||||
"Language: fi\n"
|
||||
|
@ -90,7 +90,7 @@ msgstr "Virheellinen koodi"
|
|||
msgid "This domain is blocked. Please contact your administrator if you think this is an error."
|
||||
msgstr "Verkkotunnus on estetty. Jos epäilet virhettä, ota yhteyttä ylläpitäjään."
|
||||
|
||||
#: bookwyrm/forms/links.py:46
|
||||
#: bookwyrm/forms/links.py:49
|
||||
msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending."
|
||||
msgstr "Linkki ja tiedostotyyppi on jo lisätty kirjan tietoihin. Jos se ei näy, verkkotunnusta on vielä odotettava."
|
||||
|
||||
|
@ -256,14 +256,14 @@ msgstr "Seuraajat"
|
|||
msgid "Private"
|
||||
msgstr "Yksityinen"
|
||||
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:140
|
||||
#: bookwyrm/templates/settings/imports/imports.html:19
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:157
|
||||
#: bookwyrm/templates/settings/imports/imports.html:67
|
||||
#: 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:138
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:155
|
||||
msgid "Complete"
|
||||
msgstr ""
|
||||
|
||||
|
@ -316,19 +316,19 @@ msgstr "Lainaukset"
|
|||
msgid "Everything else"
|
||||
msgstr "Muut"
|
||||
|
||||
#: bookwyrm/settings.py:209
|
||||
#: bookwyrm/settings.py:213
|
||||
msgid "Home Timeline"
|
||||
msgstr "Oma aikajana"
|
||||
|
||||
#: bookwyrm/settings.py:209
|
||||
#: bookwyrm/settings.py:213
|
||||
msgid "Home"
|
||||
msgstr "Etusivu"
|
||||
|
||||
#: bookwyrm/settings.py:210
|
||||
#: bookwyrm/settings.py:214
|
||||
msgid "Books Timeline"
|
||||
msgstr "Kirjavirta"
|
||||
|
||||
#: bookwyrm/settings.py:210
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:101
|
||||
#: bookwyrm/templates/search/layout.html:22
|
||||
#: bookwyrm/templates/search/layout.html:43
|
||||
|
@ -336,71 +336,71 @@ msgstr "Kirjavirta"
|
|||
msgid "Books"
|
||||
msgstr "Kirjat"
|
||||
|
||||
#: bookwyrm/settings.py:282
|
||||
#: bookwyrm/settings.py:286
|
||||
msgid "English"
|
||||
msgstr "English (englanti)"
|
||||
|
||||
#: bookwyrm/settings.py:283
|
||||
#: bookwyrm/settings.py:287
|
||||
msgid "Català (Catalan)"
|
||||
msgstr "Català (katalaani)"
|
||||
|
||||
#: bookwyrm/settings.py:284
|
||||
#: bookwyrm/settings.py:288
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (saksa)"
|
||||
|
||||
#: bookwyrm/settings.py:285
|
||||
#: bookwyrm/settings.py:289
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (espanja)"
|
||||
|
||||
#: bookwyrm/settings.py:286
|
||||
#: bookwyrm/settings.py:290
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (galego)"
|
||||
|
||||
#: bookwyrm/settings.py:287
|
||||
#: bookwyrm/settings.py:291
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (italia)"
|
||||
|
||||
#: bookwyrm/settings.py:288
|
||||
#: bookwyrm/settings.py:292
|
||||
msgid "Suomi (Finnish)"
|
||||
msgstr "suomi"
|
||||
|
||||
#: bookwyrm/settings.py:289
|
||||
#: bookwyrm/settings.py:293
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (ranska)"
|
||||
|
||||
#: bookwyrm/settings.py:290
|
||||
#: bookwyrm/settings.py:294
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (liettua)"
|
||||
|
||||
#: bookwyrm/settings.py:291
|
||||
#: bookwyrm/settings.py:295
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (norja)"
|
||||
|
||||
#: bookwyrm/settings.py:292
|
||||
#: bookwyrm/settings.py:296
|
||||
msgid "Polski (Polish)"
|
||||
msgstr "Polski (puola)"
|
||||
|
||||
#: bookwyrm/settings.py:293
|
||||
#: bookwyrm/settings.py:297
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (brasilianportugali)"
|
||||
|
||||
#: bookwyrm/settings.py:294
|
||||
#: bookwyrm/settings.py:298
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (portugali)"
|
||||
|
||||
#: bookwyrm/settings.py:295
|
||||
#: bookwyrm/settings.py:299
|
||||
msgid "Română (Romanian)"
|
||||
msgstr "Română (romania)"
|
||||
|
||||
#: bookwyrm/settings.py:296
|
||||
#: bookwyrm/settings.py:300
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (ruotsi)"
|
||||
|
||||
#: bookwyrm/settings.py:297
|
||||
#: bookwyrm/settings.py:301
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (yksinkertaistettu kiina)"
|
||||
|
||||
#: bookwyrm/settings.py:298
|
||||
#: bookwyrm/settings.py:302
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (perinteinen kiina)"
|
||||
|
||||
|
@ -459,24 +459,24 @@ msgstr "<a href=\"%(book_path)s\"><em>%(title)s</em></a> jakaa %(site_name)s-yht
|
|||
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 "Täällä voit pitää kirjaa lukemistasi kirjoista, keskustella kirjoista, kirjoittaa arvioita ja etsiä uutta luettavaa. Täällä ei ole mainoksia eikä korporaatioita, täällä ollaan pienimuotoisia ja ihmisläheisiä. Jos sinulla on BookWyrm-alustaan liittyviä ehdotuksia tai visioita uusista ominaisuuksista tai haluat raportoida virheistä ohjelmistokoodissa, <a href=\"https://joinbookwyrm.com/get-involved\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">ota toki yhteyttä</a>."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:103
|
||||
#: bookwyrm/templates/about/about.html:104
|
||||
msgid "Meet your admins"
|
||||
msgstr "Ylläpitäjät"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:106
|
||||
#: bookwyrm/templates/about/about.html:107
|
||||
#, python-format
|
||||
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"%(coc_path)s\">code of conduct</a>, and respond when users report spam and bad behavior."
|
||||
msgstr "%(site_name)s pyörii moderaattorien ja ylläpitäjien työllä. He myös valvovat <a href=\"%(coc_path)s\">käyttöehtojen</a> noudattamista ja reagoivat käyttäjien tekemiin ilmoituksiin."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:120
|
||||
#: bookwyrm/templates/about/about.html:121
|
||||
msgid "Moderator"
|
||||
msgstr "Moderaattori"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:122 bookwyrm/templates/user_menu.html:63
|
||||
#: bookwyrm/templates/about/about.html:123 bookwyrm/templates/user_menu.html:63
|
||||
msgid "Admin"
|
||||
msgstr "Ylläpitäjä"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:138
|
||||
#: bookwyrm/templates/about/about.html:139
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: bookwyrm/templates/snippets/status/status_options.html:35
|
||||
#: bookwyrm/templates/snippets/user_options.html:14
|
||||
|
@ -486,6 +486,7 @@ msgstr "Lähetä yksityisviesti"
|
|||
#: bookwyrm/templates/about/conduct.html:4
|
||||
#: bookwyrm/templates/about/conduct.html:9
|
||||
#: bookwyrm/templates/about/layout.html:41
|
||||
#: bookwyrm/templates/snippets/footer.html:27
|
||||
msgid "Code of Conduct"
|
||||
msgstr "Käyttöehdot"
|
||||
|
||||
|
@ -503,8 +504,8 @@ msgid "Software version:"
|
|||
msgstr "Ohjelmistoversio:"
|
||||
|
||||
#: bookwyrm/templates/about/layout.html:30
|
||||
#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:200
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:8
|
||||
#: bookwyrm/templates/embed-layout.html:33
|
||||
#: bookwyrm/templates/snippets/footer.html:8
|
||||
#, python-format
|
||||
msgid "About %(site_name)s"
|
||||
msgstr "%(site_name)s — tietoja"
|
||||
|
@ -512,9 +513,15 @@ msgstr "%(site_name)s — tietoja"
|
|||
#: bookwyrm/templates/about/layout.html:47
|
||||
#: bookwyrm/templates/about/privacy.html:4
|
||||
#: bookwyrm/templates/about/privacy.html:9
|
||||
#: bookwyrm/templates/snippets/footer.html:30
|
||||
msgid "Privacy Policy"
|
||||
msgstr "Tietosuojakäytäntö"
|
||||
|
||||
#: bookwyrm/templates/about/layout.html:54
|
||||
#: bookwyrm/templates/snippets/footer.html:34
|
||||
msgid "Impressum"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:7
|
||||
#: bookwyrm/templates/feed/summary_card.html:8
|
||||
#, python-format
|
||||
|
@ -812,7 +819,7 @@ 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/site.html:181
|
||||
#: bookwyrm/templates/settings/site.html:194
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:69
|
||||
#: bookwyrm/templates/shelf/form.html:25
|
||||
#: bookwyrm/templates/snippets/reading_modals/layout.html:18
|
||||
|
@ -834,7 +841,7 @@ msgstr "Tallenna"
|
|||
#: bookwyrm/templates/preferences/disable-2fa.html:19
|
||||
#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27
|
||||
#: bookwyrm/templates/readthrough/readthrough_modal.html:80
|
||||
#: bookwyrm/templates/search/barcode_modal.html:45
|
||||
#: bookwyrm/templates/search/barcode_modal.html:43
|
||||
#: bookwyrm/templates/settings/federation/instance.html:106
|
||||
#: bookwyrm/templates/settings/imports/complete_import_modal.html:16
|
||||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22
|
||||
|
@ -852,7 +859,7 @@ msgstr "Tietoja ladattaessa muodostetaan yhteys lähteeseen <strong>%(source_nam
|
|||
#: bookwyrm/templates/book/sync_modal.html:24
|
||||
#: bookwyrm/templates/groups/members.html:29
|
||||
#: bookwyrm/templates/landing/password_reset.html:52
|
||||
#: bookwyrm/templates/preferences/2fa.html:54
|
||||
#: bookwyrm/templates/preferences/2fa.html:77
|
||||
#: bookwyrm/templates/settings/imports/complete_import_modal.html:19
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:17
|
||||
msgid "Confirm"
|
||||
|
@ -1320,7 +1327,7 @@ msgid "Domain"
|
|||
msgstr "Verkkotunnus"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:36
|
||||
#: bookwyrm/templates/import/import.html:105
|
||||
#: bookwyrm/templates/import/import.html:122
|
||||
#: bookwyrm/templates/import/import_status.html:134
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:37
|
||||
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:48
|
||||
|
@ -1333,7 +1340,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:62
|
||||
#: bookwyrm/templates/settings/imports/imports.html:110
|
||||
#: bookwyrm/templates/settings/reports/report_links_table.html:6
|
||||
#: bookwyrm/templates/settings/themes.html:99
|
||||
msgid "Actions"
|
||||
|
@ -1349,11 +1356,11 @@ msgstr "Tuntematon käyttäjä"
|
|||
msgid "Report spam"
|
||||
msgstr "Ilmoita roskapostiksi"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:101
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:102
|
||||
msgid "No links available for this book."
|
||||
msgstr "Tähän kirjaan ei liity linkkejä."
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:112
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:113
|
||||
#: bookwyrm/templates/book/file_links/links.html:18
|
||||
msgid "Add link to file"
|
||||
msgstr "Lisää linkki tiedostoon"
|
||||
|
@ -1735,7 +1742,7 @@ msgstr "Jos et pyytänyt salasanan palautusta, voit jättää viestin huomiotta.
|
|||
msgid "Reset your %(site_name)s password"
|
||||
msgstr "Palauta %(site_name)s-salasanasi"
|
||||
|
||||
#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:40
|
||||
#: bookwyrm/templates/embed-layout.html:20 bookwyrm/templates/layout.html:40
|
||||
#: 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
|
||||
|
@ -1743,12 +1750,12 @@ msgstr "Palauta %(site_name)s-salasanasi"
|
|||
msgid "%(site_name)s home page"
|
||||
msgstr "%(site_name)s — etusivu"
|
||||
|
||||
#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:204
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:12
|
||||
#: bookwyrm/templates/embed-layout.html:39
|
||||
#: bookwyrm/templates/snippets/footer.html:12
|
||||
msgid "Contact site admin"
|
||||
msgstr "Ota yhteyttä ylläpitäjään"
|
||||
|
||||
#: bookwyrm/templates/embed-layout.html:46
|
||||
#: bookwyrm/templates/embed-layout.html:45
|
||||
msgid "Join BookWyrm"
|
||||
msgstr "Liity BookWyrmiin"
|
||||
|
||||
|
@ -2314,8 +2321,7 @@ msgstr "Tervetuloa BookWyrmin käyttäjäksi!<br><br>Haluatko esittelykierroksen
|
|||
|
||||
#: bookwyrm/templates/guided_tour/home.html:17
|
||||
#: bookwyrm/templates/guided_tour/home.html:39
|
||||
#: bookwyrm/templates/layout.html:212
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:20
|
||||
#: bookwyrm/templates/snippets/footer.html:20
|
||||
msgid "Guided Tour"
|
||||
msgstr "Esittelykierros"
|
||||
|
||||
|
@ -2625,81 +2631,89 @@ msgstr "Etsi kirja"
|
|||
msgid "Import Books"
|
||||
msgstr "Tuo kirjoja"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:15
|
||||
#: bookwyrm/templates/import/import.html:13
|
||||
msgid "Not a valid CSV file"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:22
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(hours)s hours."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:19
|
||||
#: bookwyrm/templates/import/import.html:26
|
||||
#, python-format
|
||||
msgid "On average, recent imports have taken %(minutes)s minutes."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:34
|
||||
#: bookwyrm/templates/import/import.html:41
|
||||
msgid "Data source:"
|
||||
msgstr "Tietolähde:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:40
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
msgid "Goodreads (CSV)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:43
|
||||
#: bookwyrm/templates/import/import.html:50
|
||||
msgid "Storygraph (CSV)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:46
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
msgid "LibraryThing (TSV)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:49
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
msgid "OpenLibrary (CSV)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:52
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
msgid "Calibre (CSV)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:58
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
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:67
|
||||
#: bookwyrm/templates/import/import.html:74
|
||||
msgid "Data file:"
|
||||
msgstr "Datatiedosto:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:75
|
||||
#: bookwyrm/templates/import/import.html:82
|
||||
msgid "Include reviews"
|
||||
msgstr "Myös arviot"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:80
|
||||
#: bookwyrm/templates/import/import.html:87
|
||||
msgid "Privacy setting for imported reviews:"
|
||||
msgstr "Tuotavien arvioiden yksityisyysvalinta:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:86
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
#: bookwyrm/templates/preferences/layout.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:78
|
||||
msgid "Import"
|
||||
msgstr "Tuo"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:91
|
||||
#: bookwyrm/templates/import/import.html:101
|
||||
msgid "Imports are temporarily disabled; thank you for your patience."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:108
|
||||
msgid "Recent Imports"
|
||||
msgstr "Viimeksi tuotu"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:96
|
||||
#: bookwyrm/templates/settings/imports/imports.html:41
|
||||
#: bookwyrm/templates/import/import.html:113
|
||||
#: bookwyrm/templates/settings/imports/imports.html:89
|
||||
msgid "Date Created"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:99
|
||||
#: bookwyrm/templates/import/import.html:116
|
||||
msgid "Last Updated"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:102
|
||||
#: bookwyrm/templates/settings/imports/imports.html:50
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
msgid "Items"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/import/import.html:111
|
||||
#: bookwyrm/templates/import/import.html:128
|
||||
msgid "No recent imports"
|
||||
msgstr "Ei viimeaikaisia tuonteja"
|
||||
|
||||
|
@ -2734,7 +2748,7 @@ msgid "Refresh"
|
|||
msgstr "Päivitä"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:72
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
#: bookwyrm/templates/settings/imports/imports.html:130
|
||||
msgid "Stop import"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2852,7 +2866,7 @@ msgid "Reject"
|
|||
msgstr "Hylkää"
|
||||
|
||||
#: bookwyrm/templates/import/troubleshoot.html:7
|
||||
#: bookwyrm/templates/settings/imports/imports.html:59
|
||||
#: bookwyrm/templates/settings/imports/imports.html:107
|
||||
msgid "Failed items"
|
||||
msgstr "Epäonnistuneet kohteet"
|
||||
|
||||
|
@ -2958,7 +2972,7 @@ msgstr "Käyttäjänimi:"
|
|||
#: bookwyrm/templates/landing/password_reset.html:26
|
||||
#: bookwyrm/templates/landing/reactivate.html:23
|
||||
#: bookwyrm/templates/layout.html:144 bookwyrm/templates/ostatus/error.html:32
|
||||
#: bookwyrm/templates/preferences/2fa.html:68
|
||||
#: bookwyrm/templates/preferences/2fa.html:91
|
||||
#: bookwyrm/templates/snippets/register_form.html:45
|
||||
msgid "Password:"
|
||||
msgstr "Salasana:"
|
||||
|
@ -3038,22 +3052,6 @@ msgstr "Tilapäivitys onnistui"
|
|||
msgid "Error posting status"
|
||||
msgstr "Virhe tilapäivityksessä"
|
||||
|
||||
#: bookwyrm/templates/layout.html:208
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:16
|
||||
msgid "Documentation"
|
||||
msgstr "Käyttöohjeet"
|
||||
|
||||
#: bookwyrm/templates/layout.html:221
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:29
|
||||
#, python-format
|
||||
msgid "Support %(site_name)s on <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
msgstr "Tue %(site_name)s-sivustoa osoitteessa <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
|
||||
#: bookwyrm/templates/layout.html:228
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:36
|
||||
msgid "BookWyrm's source code is freely available. You can contribute or report issues on <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
msgstr "BookWyrmin lähdekoodi on avointa. Kehitystyöhön voi osallistua ja ongelmista voi ilmoittaa <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHubissa</a>."
|
||||
|
||||
#: bookwyrm/templates/lists/add_item_modal.html:8
|
||||
#, python-format
|
||||
msgid "Add \"<em>%(title)s</em>\" to this list"
|
||||
|
@ -3119,7 +3117,7 @@ msgid "Delete this list?"
|
|||
msgstr "Poistetaanko lista?"
|
||||
|
||||
#: bookwyrm/templates/lists/edit_form.html:5
|
||||
#: bookwyrm/templates/lists/layout.html:17
|
||||
#: bookwyrm/templates/lists/layout.html:18
|
||||
msgid "Edit List"
|
||||
msgstr "Muokkaa listaa"
|
||||
|
||||
|
@ -3128,13 +3126,12 @@ msgstr "Muokkaa listaa"
|
|||
msgid "%(list_name)s, a list by %(owner)s"
|
||||
msgstr "%(list_name)s (lista), tehnyt %(owner)s"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:18
|
||||
#: bookwyrm/templates/lists/embed-list.html:20
|
||||
#, python-format
|
||||
msgid "on <a href=\"/\">%(site_name)s</a>"
|
||||
msgstr "— <a href=\"/\">%(site_name)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:27
|
||||
#: bookwyrm/templates/lists/list.html:54
|
||||
#: bookwyrm/templates/lists/embed-list.html:29
|
||||
msgid "This list is currently empty"
|
||||
msgstr "Lista on tyhjä"
|
||||
|
||||
|
@ -3216,6 +3213,10 @@ msgstr "Kirjan ehdottaminen listaan onnistui."
|
|||
msgid "You successfully added a book to this list!"
|
||||
msgstr "Kirjan lisääminen listaan onnistui."
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:54
|
||||
msgid "This list is currently empty."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:104
|
||||
msgid "Edit notes"
|
||||
msgstr "Muokkaa merkintöjä"
|
||||
|
@ -3339,12 +3340,17 @@ msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a> ehdotti teoksia <
|
|||
|
||||
#: bookwyrm/templates/notifications/items/add.html:66
|
||||
#, python-format
|
||||
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> added a book to one of your lists"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/notifications/items/add.html:72
|
||||
#, python-format
|
||||
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> added <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other book to your list \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
msgid_plural "<a href=\"%(related_user_link)s\">%(related_user)s</a> added <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other books to your list \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
msgstr[0] "<a href=\"%(related_user_link)s\">%(related_user)s</a> lisäsi teokset <em><a href=\"%(book_path)s\">%(book_title)s</a></em> ja <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em> sekä %(display_count)s muun teoksen listaasi <a href=\"%(list_path)s\">%(list_name)s</a>"
|
||||
msgstr[1] "<a href=\"%(related_user_link)s\">%(related_user)s</a> lisäsi teokset <em><a href=\"%(book_path)s\">%(book_title)s</a></em> ja <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em> sekä %(display_count)s muuta teosta listaasi <a href=\"%(list_path)s\">%(list_name)s</a>"
|
||||
|
||||
#: bookwyrm/templates/notifications/items/add.html:82
|
||||
#: bookwyrm/templates/notifications/items/add.html:88
|
||||
#, python-format
|
||||
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> suggested adding <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other book to your list \"<a href=\"%(list_curate_path)s\">%(list_name)s</a>\""
|
||||
msgid_plural "<a href=\"%(related_user_link)s\">%(related_user)s</a> suggested adding <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other books to your list \"<a href=\"%(list_curate_path)s\">%(list_name)s</a>\""
|
||||
|
@ -3768,19 +3774,31 @@ msgstr "Luo varmistuskoodit"
|
|||
msgid "Scan the QR code with your authentication app and then enter the code from your app below to confirm your app is set up."
|
||||
msgstr "Vahvista autentikointisovellus skannaamalla QR-koodi sovelluksella ja syöttämällä alle sovelluksen antama koodi."
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:50
|
||||
#: bookwyrm/templates/preferences/2fa.html:52
|
||||
msgid "Use setup key"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:58
|
||||
msgid "Account name:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:65
|
||||
msgid "Code:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:73
|
||||
msgid "Enter the code from your app:"
|
||||
msgstr "Syötä sovelluksen antama koodi:"
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:60
|
||||
#: bookwyrm/templates/preferences/2fa.html:83
|
||||
msgid "You can make your account more secure by using Two Factor Authentication (2FA). This will require you to enter a one-time code using a phone app like <em>Authy</em>, <em>Google Authenticator</em> or <em>Microsoft Authenticator</em> each time you log in."
|
||||
msgstr "Voit lisätä tilisi turvallisuutta käyttämällä kaksivaiheista tunnistautumista (2FA). Se edellyttää jokaisen sisäänkirjautumisen yhteydessä kertakäyttöisen koodin syöttämistä. Vaatii puhelinsovelluksen, esim. <em>Authy</em>, <em>Google Authenticator</em> tai <em>Microsoft Authenticator</em>."
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:62
|
||||
#: bookwyrm/templates/preferences/2fa.html:85
|
||||
msgid "Confirm your password to begin setting up 2FA."
|
||||
msgstr "Aloita kaksivaiheisen tunnistautumisen käyttöönotto syöttämällä salasanasi."
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:72
|
||||
#: bookwyrm/templates/preferences/2fa.html:95
|
||||
#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:37
|
||||
msgid "Set up 2FA"
|
||||
msgstr "Ota kaksivaiheinen tunnistautuminen käyttöön"
|
||||
|
@ -3870,7 +3888,7 @@ msgstr "Profiili"
|
|||
#: bookwyrm/templates/preferences/edit_user.html:13
|
||||
#: bookwyrm/templates/preferences/edit_user.html:64
|
||||
#: bookwyrm/templates/settings/site.html:11
|
||||
#: bookwyrm/templates/settings/site.html:77
|
||||
#: bookwyrm/templates/settings/site.html:90
|
||||
#: bookwyrm/templates/setup/config.html:91
|
||||
msgid "Display"
|
||||
msgstr "Näyttövalinnat"
|
||||
|
@ -4050,54 +4068,66 @@ msgstr "\n"
|
|||
" Skannaa viivakoodi\n"
|
||||
" "
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:23
|
||||
#: bookwyrm/templates/search/barcode_modal.html:21
|
||||
msgid "Requesting camera..."
|
||||
msgstr "Pyydetään kameraa..."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:24
|
||||
#: bookwyrm/templates/search/barcode_modal.html:22
|
||||
msgid "Grant access to the camera to scan a book's barcode."
|
||||
msgstr "Anna lupa käyttää kameraa, jotta viivakoodi voidaan skannata."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:29
|
||||
#: bookwyrm/templates/search/barcode_modal.html:27
|
||||
msgid "Could not access camera"
|
||||
msgstr "Kameraa ei löytynyt"
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:33
|
||||
#: bookwyrm/templates/search/barcode_modal.html:31
|
||||
msgctxt "barcode scanner"
|
||||
msgid "Scanning..."
|
||||
msgstr "Skannataan..."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:34
|
||||
#: bookwyrm/templates/search/barcode_modal.html:32
|
||||
msgid "Align your book's barcode with the camera."
|
||||
msgstr "Kohdista kirjan viivakoodi kameraan."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:38
|
||||
#: bookwyrm/templates/search/barcode_modal.html:36
|
||||
msgctxt "barcode scanner"
|
||||
msgid "ISBN scanned"
|
||||
msgstr "ISBN skannattu"
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:39
|
||||
#: bookwyrm/templates/search/barcode_modal.html:37
|
||||
msgctxt "followed by ISBN"
|
||||
msgid "Searching for book:"
|
||||
msgstr "Haetaan kirjaa:"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:39
|
||||
#: bookwyrm/templates/search/book.html:25
|
||||
#, python-format
|
||||
msgid "%(formatted_review_count)s review"
|
||||
msgid_plural "%(formatted_review_count)s reviews"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: bookwyrm/templates/search/book.html:34
|
||||
#, python-format
|
||||
msgid "(published %(pub_year)s)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/search/book.html:50
|
||||
msgid "Results from"
|
||||
msgstr "Tulokset lähteestä"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:78
|
||||
#: bookwyrm/templates/search/book.html:89
|
||||
msgid "Import book"
|
||||
msgstr "Tuo kirja"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:102
|
||||
#: bookwyrm/templates/search/book.html:113
|
||||
msgid "Load results from other catalogues"
|
||||
msgstr "Lataa tuloksia muista katalogeista"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:106
|
||||
#: bookwyrm/templates/search/book.html:117
|
||||
msgid "Manually add book"
|
||||
msgstr "Lisää kirja käsin"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:111
|
||||
#: bookwyrm/templates/search/book.html:122
|
||||
msgid "Log in to import or add books."
|
||||
msgstr "Kirjojen tuonti tai lisääminen edellyttää sisäänkirjautumista."
|
||||
|
||||
|
@ -4112,7 +4142,7 @@ msgstr "Hakutyyppi"
|
|||
#: bookwyrm/templates/search/layout.html:24
|
||||
#: bookwyrm/templates/search/layout.html:47
|
||||
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:27
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:51
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:52
|
||||
#: bookwyrm/templates/settings/layout.html:36
|
||||
#: bookwyrm/templates/settings/users/user.html:13
|
||||
#: bookwyrm/templates/settings/users/user_admin.html:5
|
||||
|
@ -4186,7 +4216,7 @@ msgid "Create Announcement"
|
|||
msgstr "Luo tiedote"
|
||||
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:21
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:39
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:40
|
||||
msgid "Date added"
|
||||
msgstr "Lisätty"
|
||||
|
||||
|
@ -4354,7 +4384,7 @@ msgid "Active Tasks"
|
|||
msgstr "Aktiiviset tehtävät"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:34
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
msgid "ID"
|
||||
msgstr "Tunniste"
|
||||
|
||||
|
@ -4665,24 +4695,24 @@ msgid "Failed:"
|
|||
msgstr "Epäonnistuneet:"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:62
|
||||
msgid "Expects a json file in the format provided by <a href=\"https://fediblock.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">FediBlock</a>, with a list of entries that have <code>instance</code> and <code>url</code> fields. For example:"
|
||||
msgstr "Vaatii <a href=\"https://fediblock.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">FediBlock</a>-muotoillun json-tiedoston, jossa on <code>instanssi</code>- ja <code>url</code>-kentät. Esimerkki:"
|
||||
msgid "Expects a json file in the format provided by FediBlock, with a list of entries that have <code>instance</code> and <code>url</code> fields. For example:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:36
|
||||
#: bookwyrm/templates/settings/users/server_filter.html:5
|
||||
msgid "Instance name"
|
||||
msgstr "Palvelimen nimi"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:43
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:44
|
||||
msgid "Last updated"
|
||||
msgstr "Viimeisin päivitys"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:47
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:48
|
||||
#: bookwyrm/templates/settings/federation/software_filter.html:5
|
||||
msgid "Software"
|
||||
msgstr "Ohjelmisto"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:69
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:70
|
||||
msgid "No instances found"
|
||||
msgstr "Palvelimia ei löytynyt"
|
||||
|
||||
|
@ -4690,27 +4720,51 @@ msgstr "Palvelimia ei löytynyt"
|
|||
msgid "Stop import?"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:23
|
||||
#: bookwyrm/templates/settings/imports/imports.html:19
|
||||
msgid "Disable starting new imports"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:30
|
||||
msgid "This is only intended to be used when things have gone very wrong with imports and you need to pause the feature while addressing issues."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:31
|
||||
msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:36
|
||||
msgid "Disable imports"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:50
|
||||
msgid "Users are currently unable to start new imports"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:55
|
||||
msgid "Enable imports"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:71
|
||||
msgid "Completed"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:37
|
||||
#: bookwyrm/templates/settings/imports/imports.html:85
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:46
|
||||
#: bookwyrm/templates/settings/imports/imports.html:94
|
||||
msgid "Date Updated"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:101
|
||||
msgid "Pending items"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:56
|
||||
#: bookwyrm/templates/settings/imports/imports.html:104
|
||||
msgid "Successful items"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:91
|
||||
#: bookwyrm/templates/settings/imports/imports.html:139
|
||||
msgid "No matching imports found."
|
||||
msgstr ""
|
||||
|
||||
|
@ -4907,7 +4961,7 @@ msgid "Site Settings"
|
|||
msgstr "Sivuston asetukset"
|
||||
|
||||
#: bookwyrm/templates/settings/layout.html:106
|
||||
#: bookwyrm/templates/settings/site.html:95
|
||||
#: bookwyrm/templates/settings/site.html:108
|
||||
#: bookwyrm/templates/settings/themes.html:4
|
||||
#: bookwyrm/templates/settings/themes.html:6
|
||||
msgid "Themes"
|
||||
|
@ -5048,12 +5102,12 @@ msgid "Instance Info"
|
|||
msgstr "Tietoja palvelimesta"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:12
|
||||
#: bookwyrm/templates/settings/site.html:110
|
||||
#: bookwyrm/templates/settings/site.html:123
|
||||
msgid "Footer Content"
|
||||
msgstr "Alatunnisteen sisältö"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:13
|
||||
#: bookwyrm/templates/settings/site.html:134
|
||||
#: bookwyrm/templates/settings/site.html:147
|
||||
msgid "Registration"
|
||||
msgstr "Käyttäjätilien avaaminen"
|
||||
|
||||
|
@ -5093,71 +5147,79 @@ msgstr "Käyttöehdot:"
|
|||
msgid "Privacy Policy:"
|
||||
msgstr "Tietosuojakäytäntö:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:79
|
||||
#: bookwyrm/templates/settings/site.html:73
|
||||
msgid "Impressum:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:78
|
||||
msgid "Include impressum:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:92
|
||||
msgid "Images"
|
||||
msgstr "Kuvat"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:82
|
||||
#: bookwyrm/templates/settings/site.html:95
|
||||
msgid "Logo:"
|
||||
msgstr "Logo:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:86
|
||||
#: bookwyrm/templates/settings/site.html:99
|
||||
msgid "Logo small:"
|
||||
msgstr "Pieni logo:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:90
|
||||
#: bookwyrm/templates/settings/site.html:103
|
||||
msgid "Favicon:"
|
||||
msgstr "Favicon:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:98
|
||||
#: bookwyrm/templates/settings/site.html:111
|
||||
msgid "Default theme:"
|
||||
msgstr "Oletusteema:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:113
|
||||
#: bookwyrm/templates/settings/site.html:126
|
||||
msgid "Support link:"
|
||||
msgstr "Rahankeruulinkki:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:117
|
||||
#: bookwyrm/templates/settings/site.html:130
|
||||
msgid "Support title:"
|
||||
msgstr "Rahankeruulinkin otsikko:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:121
|
||||
#: bookwyrm/templates/settings/site.html:134
|
||||
msgid "Admin email:"
|
||||
msgstr "Ylläpitäjän sähköpostiosoite:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:125
|
||||
#: bookwyrm/templates/settings/site.html:138
|
||||
msgid "Additional info:"
|
||||
msgstr "Lisätietoja:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:139
|
||||
#: bookwyrm/templates/settings/site.html:152
|
||||
msgid "Allow registration"
|
||||
msgstr "Salli käyttäjätilien avaaminen"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:145
|
||||
#: bookwyrm/templates/settings/site.html:158
|
||||
msgid "Require users to confirm email address"
|
||||
msgstr "Vaadi käyttäjiä vahvistamaan sähköpostiosoitteensa"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:147
|
||||
#: bookwyrm/templates/settings/site.html:160
|
||||
msgid "(Recommended if registration is open)"
|
||||
msgstr "(Suositellaan, jos käyttäjätilejä voi avata vapaasti)"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:152
|
||||
#: bookwyrm/templates/settings/site.html:165
|
||||
msgid "Allow invite requests"
|
||||
msgstr "Salli kutsulinkin pyytäminen"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:158
|
||||
#: bookwyrm/templates/settings/site.html:171
|
||||
msgid "Set a question for invite requests"
|
||||
msgstr "Kutsupyyntöjen lisätietokysymys"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:163
|
||||
#: bookwyrm/templates/settings/site.html:176
|
||||
msgid "Question:"
|
||||
msgstr "Kysymys:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:168
|
||||
#: bookwyrm/templates/settings/site.html:181
|
||||
msgid "Registration closed text:"
|
||||
msgstr "Teksti, joka näytetään, kun käyttäjätilin avaaminen ei ole mahdollista:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:172
|
||||
#: bookwyrm/templates/settings/site.html:185
|
||||
msgid "Invite request text:"
|
||||
msgstr "Kutsupyyntökehote ja -ohje:"
|
||||
|
||||
|
@ -5712,6 +5774,19 @@ msgstr "Lopeta seuraaminen"
|
|||
msgid "Accept"
|
||||
msgstr "Hyväksy"
|
||||
|
||||
#: bookwyrm/templates/snippets/footer.html:16
|
||||
msgid "Documentation"
|
||||
msgstr "Käyttöohjeet"
|
||||
|
||||
#: bookwyrm/templates/snippets/footer.html:42
|
||||
#, python-format
|
||||
msgid "Support %(site_name)s on <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
msgstr "Tue %(site_name)s-sivustoa osoitteessa <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
|
||||
#: bookwyrm/templates/snippets/footer.html:49
|
||||
msgid "BookWyrm's source code is freely available. You can contribute or report issues on <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
msgstr "BookWyrmin lähdekoodi on avointa. Kehitystyöhön voi osallistua ja ongelmista voi ilmoittaa <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHubissa</a>."
|
||||
|
||||
#: bookwyrm/templates/snippets/form_rate_stars.html:20
|
||||
#: bookwyrm/templates/snippets/stars.html:13
|
||||
msgid "No rating"
|
||||
|
@ -6199,11 +6274,11 @@ msgstr "Lukutavoite vuodelle %(current_year)s"
|
|||
msgid "User Activity"
|
||||
msgstr "Käyttäjän toiminta"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:70
|
||||
#: bookwyrm/templates/user/user.html:71
|
||||
msgid "RSS feed"
|
||||
msgstr "RSS-syöte"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:81
|
||||
#: bookwyrm/templates/user/user.html:83
|
||||
msgid "No activities yet!"
|
||||
msgstr "Ei toimintaa!"
|
||||
|
||||
|
@ -6252,10 +6327,6 @@ msgstr "Tiedosto on enimmäiskokoa 10 Mt suurempi"
|
|||
msgid "%(title)s: %(subtitle)s"
|
||||
msgstr "%(title)s: %(subtitle)s"
|
||||
|
||||
#: bookwyrm/views/imports/import_data.py:86
|
||||
msgid "Not a valid csv file"
|
||||
msgstr "Epäkelpo csv-tiedosto"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:34
|
||||
#, python-brace-format
|
||||
msgid "Status updates from {obj.display_name}"
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-11-10 21:42+0000\n"
|
||||
"PO-Revision-Date: 2022-11-13 11:57\n"
|
||||
"POT-Creation-Date: 2022-12-05 02:21+0000\n"
|
||||
"PO-Revision-Date: 2022-12-05 06:26\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: French\n"
|
||||
"Language: fr\n"
|
||||
|
@ -90,7 +90,7 @@ msgstr "Code incorrect"
|
|||
msgid "This domain is blocked. Please contact your administrator if you think this is an error."
|
||||
msgstr "Ce domaine est bloqué. Contactez l’admin de votre instance si vous pensez que c’est une erreur."
|
||||
|
||||
#: bookwyrm/forms/links.py:46
|
||||
#: bookwyrm/forms/links.py:49
|
||||
msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending."
|
||||
msgstr "Le lien avec ce type de fichier a déjà été ajouté pour ce livre. S’il n’est pas visible, le domaine est encore en attente."
|
||||
|
||||
|
@ -256,14 +256,14 @@ msgstr "Abonné(e)s"
|
|||
msgid "Private"
|
||||
msgstr "Privé"
|
||||
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:140
|
||||
#: bookwyrm/templates/settings/imports/imports.html:19
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:157
|
||||
#: bookwyrm/templates/settings/imports/imports.html:67
|
||||
#: 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:138
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:155
|
||||
msgid "Complete"
|
||||
msgstr "Terminé"
|
||||
|
||||
|
@ -316,19 +316,19 @@ msgstr "Citations"
|
|||
msgid "Everything else"
|
||||
msgstr "Tout le reste"
|
||||
|
||||
#: bookwyrm/settings.py:209
|
||||
#: bookwyrm/settings.py:213
|
||||
msgid "Home Timeline"
|
||||
msgstr "Mon fil d’actualité"
|
||||
|
||||
#: bookwyrm/settings.py:209
|
||||
#: bookwyrm/settings.py:213
|
||||
msgid "Home"
|
||||
msgstr "Accueil"
|
||||
|
||||
#: bookwyrm/settings.py:210
|
||||
#: bookwyrm/settings.py:214
|
||||
msgid "Books Timeline"
|
||||
msgstr "Actualité de mes livres"
|
||||
|
||||
#: bookwyrm/settings.py:210
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:101
|
||||
#: bookwyrm/templates/search/layout.html:22
|
||||
#: bookwyrm/templates/search/layout.html:43
|
||||
|
@ -336,73 +336,73 @@ msgstr "Actualité de mes livres"
|
|||
msgid "Books"
|
||||
msgstr "Livres"
|
||||
|
||||
#: bookwyrm/settings.py:282
|
||||
#: bookwyrm/settings.py:286
|
||||
msgid "English"
|
||||
msgstr "English"
|
||||
|
||||
#: bookwyrm/settings.py:283
|
||||
#: bookwyrm/settings.py:287
|
||||
msgid "Català (Catalan)"
|
||||
msgstr "Català (Catalan)"
|
||||
|
||||
#: bookwyrm/settings.py:284
|
||||
#: bookwyrm/settings.py:288
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch"
|
||||
|
||||
#: bookwyrm/settings.py:285
|
||||
#: bookwyrm/settings.py:289
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español"
|
||||
|
||||
#: bookwyrm/settings.py:286
|
||||
#: bookwyrm/settings.py:290
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (Galicien)"
|
||||
|
||||
#: bookwyrm/settings.py:287
|
||||
#: bookwyrm/settings.py:291
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (Italien)"
|
||||
|
||||
#: bookwyrm/settings.py:288
|
||||
#: bookwyrm/settings.py:292
|
||||
msgid "Suomi (Finnish)"
|
||||
msgstr "Suomi (Finnois)"
|
||||
|
||||
#: bookwyrm/settings.py:289
|
||||
#: bookwyrm/settings.py:293
|
||||
msgid "Français (French)"
|
||||
msgstr "Français"
|
||||
|
||||
#: bookwyrm/settings.py:290
|
||||
#: bookwyrm/settings.py:294
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Lituanien)"
|
||||
|
||||
#: bookwyrm/settings.py:291
|
||||
#: bookwyrm/settings.py:295
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (Norvégien)"
|
||||
|
||||
#: bookwyrm/settings.py:292
|
||||
#: bookwyrm/settings.py:296
|
||||
msgid "Polski (Polish)"
|
||||
msgstr "Polski (Polonais)"
|
||||
|
||||
#: bookwyrm/settings.py:293
|
||||
#: bookwyrm/settings.py:297
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (Portugais brésilien)"
|
||||
|
||||
#: bookwyrm/settings.py:294
|
||||
#: bookwyrm/settings.py:298
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Portugais européen)"
|
||||
|
||||
#: bookwyrm/settings.py:295
|
||||
#: bookwyrm/settings.py:299
|
||||
msgid "Română (Romanian)"
|
||||
msgstr "Română (Roumain)"
|
||||
|
||||
#: bookwyrm/settings.py:296
|
||||
#: bookwyrm/settings.py:300
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Suédois)"
|
||||
|
||||
#: bookwyrm/settings.py:297
|
||||
#: bookwyrm/settings.py:301
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简化字"
|
||||
|
||||
#: bookwyrm/settings.py:298
|
||||
#: bookwyrm/settings.py:302
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "Infos supplémentaires :"
|
||||
msgstr "繁體中文 (chinois traditionnel)"
|
||||
|
||||
#: bookwyrm/templates/404.html:4 bookwyrm/templates/404.html:8
|
||||
msgid "Not Found"
|
||||
|
@ -459,24 +459,24 @@ msgstr "<a href=\"%(book_path)s\"><em>%(title)s</em></a> divise les critiques pl
|
|||
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 "Gardez trace de vos lectures, parlez de livres, écrivez des critiques et découvrez quoi lire ensuite. BookWyrm est un logiciel à taille humaine, sans publicité, anti-capitaliste et axé sur la communauté, conçu pour rester petit et personnel. Si vous avez des demandes de fonctionnalités, des rapports de bogue ou des rêves grandioses, <a href=\"https://joinbookwyrm.com/get-involved\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">rejoignez-nous</a> et faites-vous entendre."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:103
|
||||
#: bookwyrm/templates/about/about.html:104
|
||||
msgid "Meet your admins"
|
||||
msgstr "Rencontrez vos admins"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:106
|
||||
#: bookwyrm/templates/about/about.html:107
|
||||
#, python-format
|
||||
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"%(coc_path)s\">code of conduct</a>, and respond when users report spam and bad behavior."
|
||||
msgstr "L’administration et la modération de %(site_name)s maintiennent le site opérationnel, font respecter le <a href=\"%(coc_path)s\">code de conduite</a>, et interviennent lorsque les utilisateurs signalent du spam et des mauvais comportements."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:120
|
||||
#: bookwyrm/templates/about/about.html:121
|
||||
msgid "Moderator"
|
||||
msgstr "Modérateur/modératrice"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:122 bookwyrm/templates/user_menu.html:63
|
||||
#: bookwyrm/templates/about/about.html:123 bookwyrm/templates/user_menu.html:63
|
||||
msgid "Admin"
|
||||
msgstr "Admin"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:138
|
||||
#: bookwyrm/templates/about/about.html:139
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: bookwyrm/templates/snippets/status/status_options.html:35
|
||||
#: bookwyrm/templates/snippets/user_options.html:14
|
||||
|
@ -486,6 +486,7 @@ msgstr "Envoyer un message direct"
|
|||
#: bookwyrm/templates/about/conduct.html:4
|
||||
#: bookwyrm/templates/about/conduct.html:9
|
||||
#: bookwyrm/templates/about/layout.html:41
|
||||
#: bookwyrm/templates/snippets/footer.html:27
|
||||
msgid "Code of Conduct"
|
||||
msgstr "Code de conduite"
|
||||
|
||||
|
@ -503,8 +504,8 @@ msgid "Software version:"
|
|||
msgstr "Version logicielle :"
|
||||
|
||||
#: bookwyrm/templates/about/layout.html:30
|
||||
#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:200
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:8
|
||||
#: bookwyrm/templates/embed-layout.html:33
|
||||
#: bookwyrm/templates/snippets/footer.html:8
|
||||
#, python-format
|
||||
msgid "About %(site_name)s"
|
||||
msgstr "À propos de %(site_name)s"
|
||||
|
@ -512,9 +513,15 @@ msgstr "À propos de %(site_name)s"
|
|||
#: bookwyrm/templates/about/layout.html:47
|
||||
#: bookwyrm/templates/about/privacy.html:4
|
||||
#: bookwyrm/templates/about/privacy.html:9
|
||||
#: bookwyrm/templates/snippets/footer.html:30
|
||||
msgid "Privacy Policy"
|
||||
msgstr "Politique de vie privée"
|
||||
|
||||
#: bookwyrm/templates/about/layout.html:54
|
||||
#: bookwyrm/templates/snippets/footer.html:34
|
||||
msgid "Impressum"
|
||||
msgstr "Mentions légales"
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:7
|
||||
#: bookwyrm/templates/feed/summary_card.html:8
|
||||
#, python-format
|
||||
|
@ -812,7 +819,7 @@ 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/site.html:181
|
||||
#: bookwyrm/templates/settings/site.html:194
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:69
|
||||
#: bookwyrm/templates/shelf/form.html:25
|
||||
#: bookwyrm/templates/snippets/reading_modals/layout.html:18
|
||||
|
@ -834,7 +841,7 @@ msgstr "Enregistrer"
|
|||
#: bookwyrm/templates/preferences/disable-2fa.html:19
|
||||
#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27
|
||||
#: bookwyrm/templates/readthrough/readthrough_modal.html:80
|
||||
#: bookwyrm/templates/search/barcode_modal.html:45
|
||||
#: bookwyrm/templates/search/barcode_modal.html:43
|
||||
#: bookwyrm/templates/settings/federation/instance.html:106
|
||||
#: bookwyrm/templates/settings/imports/complete_import_modal.html:16
|
||||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22
|
||||
|
@ -852,7 +859,7 @@ msgstr "Le chargement des données se connectera à <strong>%(source_name)s</str
|
|||
#: bookwyrm/templates/book/sync_modal.html:24
|
||||
#: bookwyrm/templates/groups/members.html:29
|
||||
#: bookwyrm/templates/landing/password_reset.html:52
|
||||
#: bookwyrm/templates/preferences/2fa.html:54
|
||||
#: bookwyrm/templates/preferences/2fa.html:77
|
||||
#: bookwyrm/templates/settings/imports/complete_import_modal.html:19
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:17
|
||||
msgid "Confirm"
|
||||
|
@ -1320,7 +1327,7 @@ msgid "Domain"
|
|||
msgstr "Domaine"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:36
|
||||
#: bookwyrm/templates/import/import.html:105
|
||||
#: bookwyrm/templates/import/import.html:122
|
||||
#: bookwyrm/templates/import/import_status.html:134
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:37
|
||||
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:48
|
||||
|
@ -1333,7 +1340,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:62
|
||||
#: bookwyrm/templates/settings/imports/imports.html:110
|
||||
#: bookwyrm/templates/settings/reports/report_links_table.html:6
|
||||
#: bookwyrm/templates/settings/themes.html:99
|
||||
msgid "Actions"
|
||||
|
@ -1349,11 +1356,11 @@ msgstr "Compte inconnu"
|
|||
msgid "Report spam"
|
||||
msgstr "Signaler un spam"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:101
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:102
|
||||
msgid "No links available for this book."
|
||||
msgstr "Aucun lien disponible pour ce livre."
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:112
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:113
|
||||
#: bookwyrm/templates/book/file_links/links.html:18
|
||||
msgid "Add link to file"
|
||||
msgstr "Ajouter un lien vers un fichier"
|
||||
|
@ -1735,7 +1742,7 @@ msgstr "Si vous n’avez pas demandé la réinitialisation de votre mot de passe
|
|||
msgid "Reset your %(site_name)s password"
|
||||
msgstr "Réinitialiser votre mot de passe sur %(site_name)s"
|
||||
|
||||
#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:40
|
||||
#: bookwyrm/templates/embed-layout.html:20 bookwyrm/templates/layout.html:40
|
||||
#: 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
|
||||
|
@ -1743,12 +1750,12 @@ msgstr "Réinitialiser votre mot de passe sur %(site_name)s"
|
|||
msgid "%(site_name)s home page"
|
||||
msgstr "%(site_name)s page d'accueil"
|
||||
|
||||
#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:204
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:12
|
||||
#: bookwyrm/templates/embed-layout.html:39
|
||||
#: bookwyrm/templates/snippets/footer.html:12
|
||||
msgid "Contact site admin"
|
||||
msgstr "Contacter l’administrateur du site"
|
||||
|
||||
#: bookwyrm/templates/embed-layout.html:46
|
||||
#: bookwyrm/templates/embed-layout.html:45
|
||||
msgid "Join BookWyrm"
|
||||
msgstr "Rejoindre BookWyrm"
|
||||
|
||||
|
@ -2314,8 +2321,7 @@ msgstr "Bienvenue sur Bookwyrm!<br><br>Voulez-vous suivre la visite guidée pour
|
|||
|
||||
#: bookwyrm/templates/guided_tour/home.html:17
|
||||
#: bookwyrm/templates/guided_tour/home.html:39
|
||||
#: bookwyrm/templates/layout.html:212
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:20
|
||||
#: bookwyrm/templates/snippets/footer.html:20
|
||||
msgid "Guided Tour"
|
||||
msgstr "Visite guidée"
|
||||
|
||||
|
@ -2625,81 +2631,89 @@ msgstr "Trouver un livre"
|
|||
msgid "Import Books"
|
||||
msgstr "Importer des livres"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:15
|
||||
#: bookwyrm/templates/import/import.html:13
|
||||
msgid "Not a valid CSV file"
|
||||
msgstr "Fichier CSV non valide"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:22
|
||||
#, 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:19
|
||||
#: bookwyrm/templates/import/import.html:26
|
||||
#, 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:34
|
||||
#: bookwyrm/templates/import/import.html:41
|
||||
msgid "Data source:"
|
||||
msgstr "Source de données :"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:40
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
msgid "Goodreads (CSV)"
|
||||
msgstr "Goodreads (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:43
|
||||
#: bookwyrm/templates/import/import.html:50
|
||||
msgid "Storygraph (CSV)"
|
||||
msgstr "Storygraph (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:46
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
msgid "LibraryThing (TSV)"
|
||||
msgstr "LibraryThing (TSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:49
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
msgid "OpenLibrary (CSV)"
|
||||
msgstr "OpenLibrary (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:52
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
msgid "Calibre (CSV)"
|
||||
msgstr "Calibre (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:58
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
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:67
|
||||
#: bookwyrm/templates/import/import.html:74
|
||||
msgid "Data file:"
|
||||
msgstr "Fichier de données :"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:75
|
||||
#: bookwyrm/templates/import/import.html:82
|
||||
msgid "Include reviews"
|
||||
msgstr "Importer les critiques"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:80
|
||||
#: bookwyrm/templates/import/import.html:87
|
||||
msgid "Privacy setting for imported reviews:"
|
||||
msgstr "Confidentialité des critiques importées :"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:86
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
#: bookwyrm/templates/preferences/layout.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:78
|
||||
msgid "Import"
|
||||
msgstr "Importer"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:91
|
||||
#: bookwyrm/templates/import/import.html:101
|
||||
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
|
||||
msgid "Recent Imports"
|
||||
msgstr "Importations récentes"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:96
|
||||
#: bookwyrm/templates/settings/imports/imports.html:41
|
||||
#: bookwyrm/templates/import/import.html:113
|
||||
#: bookwyrm/templates/settings/imports/imports.html:89
|
||||
msgid "Date Created"
|
||||
msgstr "Date de Création"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:99
|
||||
#: bookwyrm/templates/import/import.html:116
|
||||
msgid "Last Updated"
|
||||
msgstr "Dernière Mise à jour"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:102
|
||||
#: bookwyrm/templates/settings/imports/imports.html:50
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
msgid "Items"
|
||||
msgstr "Éléments"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:111
|
||||
#: bookwyrm/templates/import/import.html:128
|
||||
msgid "No recent imports"
|
||||
msgstr "Aucune importation récente"
|
||||
|
||||
|
@ -2734,7 +2748,7 @@ msgid "Refresh"
|
|||
msgstr "Actualiser"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:72
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
#: bookwyrm/templates/settings/imports/imports.html:130
|
||||
msgid "Stop import"
|
||||
msgstr "Arrêter l'import"
|
||||
|
||||
|
@ -2852,7 +2866,7 @@ msgid "Reject"
|
|||
msgstr "Rejeter"
|
||||
|
||||
#: bookwyrm/templates/import/troubleshoot.html:7
|
||||
#: bookwyrm/templates/settings/imports/imports.html:59
|
||||
#: bookwyrm/templates/settings/imports/imports.html:107
|
||||
msgid "Failed items"
|
||||
msgstr "Éléments dont l'importation a échoué"
|
||||
|
||||
|
@ -2958,7 +2972,7 @@ msgstr "Nom du compte :"
|
|||
#: bookwyrm/templates/landing/password_reset.html:26
|
||||
#: bookwyrm/templates/landing/reactivate.html:23
|
||||
#: bookwyrm/templates/layout.html:144 bookwyrm/templates/ostatus/error.html:32
|
||||
#: bookwyrm/templates/preferences/2fa.html:68
|
||||
#: bookwyrm/templates/preferences/2fa.html:91
|
||||
#: bookwyrm/templates/snippets/register_form.html:45
|
||||
msgid "Password:"
|
||||
msgstr "Mot de passe :"
|
||||
|
@ -3038,22 +3052,6 @@ msgstr "Publié !"
|
|||
msgid "Error posting status"
|
||||
msgstr "Erreur lors de la publication"
|
||||
|
||||
#: bookwyrm/templates/layout.html:208
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:16
|
||||
msgid "Documentation"
|
||||
msgstr "Documentation"
|
||||
|
||||
#: bookwyrm/templates/layout.html:221
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:29
|
||||
#, python-format
|
||||
msgid "Support %(site_name)s on <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
msgstr "Soutenez %(site_name)s sur <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
|
||||
#: bookwyrm/templates/layout.html:228
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:36
|
||||
msgid "BookWyrm's source code is freely available. You can contribute or report issues on <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
msgstr "Le code source de BookWyrm est librement disponible. Vous pouvez contribuer ou rapporter des problèmes sur <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
|
||||
#: bookwyrm/templates/lists/add_item_modal.html:8
|
||||
#, python-format
|
||||
msgid "Add \"<em>%(title)s</em>\" to this list"
|
||||
|
@ -3119,7 +3117,7 @@ msgid "Delete this list?"
|
|||
msgstr "Supprimer cette liste ?"
|
||||
|
||||
#: bookwyrm/templates/lists/edit_form.html:5
|
||||
#: bookwyrm/templates/lists/layout.html:17
|
||||
#: bookwyrm/templates/lists/layout.html:18
|
||||
msgid "Edit List"
|
||||
msgstr "Modifier la liste"
|
||||
|
||||
|
@ -3128,13 +3126,12 @@ msgstr "Modifier la liste"
|
|||
msgid "%(list_name)s, a list by %(owner)s"
|
||||
msgstr "%(list_name)s, une liste de %(owner)s"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:18
|
||||
#: bookwyrm/templates/lists/embed-list.html:20
|
||||
#, python-format
|
||||
msgid "on <a href=\"/\">%(site_name)s</a>"
|
||||
msgstr "sur <a href=\"/\">%(site_name)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:27
|
||||
#: bookwyrm/templates/lists/list.html:54
|
||||
#: bookwyrm/templates/lists/embed-list.html:29
|
||||
msgid "This list is currently empty"
|
||||
msgstr "Cette liste est actuellement vide"
|
||||
|
||||
|
@ -3216,6 +3213,10 @@ msgstr "Vous avez suggéré un livre à cette liste !"
|
|||
msgid "You successfully added a book to this list!"
|
||||
msgstr "Vous avez ajouté un livre à cette liste !"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:54
|
||||
msgid "This list is currently empty."
|
||||
msgstr "Cette liste est actuellement vide."
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:104
|
||||
msgid "Edit notes"
|
||||
msgstr "Modifier les notes"
|
||||
|
@ -3339,12 +3340,17 @@ msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a> a suggéré d'ajo
|
|||
|
||||
#: bookwyrm/templates/notifications/items/add.html:66
|
||||
#, python-format
|
||||
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> added a book to one of your lists"
|
||||
msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a> a ajouté un livre à l'une de vos listes"
|
||||
|
||||
#: bookwyrm/templates/notifications/items/add.html:72
|
||||
#, python-format
|
||||
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> added <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other book to your list \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
msgid_plural "<a href=\"%(related_user_link)s\">%(related_user)s</a> added <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other books to your list \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
msgstr[0] "<a href=\"%(related_user_link)s\">%(related_user)s</a> a ajouté <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em> et %(display_count)s autre livre à votre liste \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
msgstr[1] "<a href=\"%(related_user_link)s\">%(related_user)s</a> a ajouté <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em> et %(display_count)s autres livres dans votre liste \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
|
||||
#: bookwyrm/templates/notifications/items/add.html:82
|
||||
#: bookwyrm/templates/notifications/items/add.html:88
|
||||
#, python-format
|
||||
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> suggested adding <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other book to your list \"<a href=\"%(list_curate_path)s\">%(list_name)s</a>\""
|
||||
msgid_plural "<a href=\"%(related_user_link)s\">%(related_user)s</a> suggested adding <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other books to your list \"<a href=\"%(list_curate_path)s\">%(list_name)s</a>\""
|
||||
|
@ -3768,19 +3774,31 @@ msgstr "Générer des codes de secours"
|
|||
msgid "Scan the QR code with your authentication app and then enter the code from your app below to confirm your app is set up."
|
||||
msgstr "Scannez le code QR avec votre app d'authentification, puis saisissez ci-dessous le code de votre app pour confirmer que celle-ci est bien configurée."
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:50
|
||||
#: bookwyrm/templates/preferences/2fa.html:52
|
||||
msgid "Use setup key"
|
||||
msgstr "Utiliser une clé d'initialisation"
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:58
|
||||
msgid "Account name:"
|
||||
msgstr "Nom du compte :"
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:65
|
||||
msgid "Code:"
|
||||
msgstr "Code :"
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:73
|
||||
msgid "Enter the code from your app:"
|
||||
msgstr "Entrez le code de votre app :"
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:60
|
||||
#: bookwyrm/templates/preferences/2fa.html:83
|
||||
msgid "You can make your account more secure by using Two Factor Authentication (2FA). This will require you to enter a one-time code using a phone app like <em>Authy</em>, <em>Google Authenticator</em> or <em>Microsoft Authenticator</em> each time you log in."
|
||||
msgstr "Vous pouvez sécuriser votre compte en utilisant l’authentification à deux facteurs (2FA). Cela vous demandera de saisir un code à usage unique en utilisant une app mobile comme <em>Authy</em>, <em>Google Authenticator</em> ou <em>Microsoft Authenticator</em> à chaque fois que vous vous connectez."
|
||||
msgstr "Vous pouvez sécuriser votre compte en utilisant l’authentification à deux facteurs (2FA). Un code à usage unique fourni par une application mobile telle que <em>Authy</em>, <em>Google Authenticator</em> ou <em>Microsoft Authenticator</em> vous sera demandé à chaque fois que vous vous connecterez."
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:62
|
||||
#: bookwyrm/templates/preferences/2fa.html:85
|
||||
msgid "Confirm your password to begin setting up 2FA."
|
||||
msgstr "Confirmez votre mot de passe pour commencer à configurer l’authentification à deux facteur."
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:72
|
||||
#: bookwyrm/templates/preferences/2fa.html:95
|
||||
#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:37
|
||||
msgid "Set up 2FA"
|
||||
msgstr "Configurer l’authentification à deux facteurs"
|
||||
|
@ -3870,7 +3888,7 @@ msgstr "Profil"
|
|||
#: bookwyrm/templates/preferences/edit_user.html:13
|
||||
#: bookwyrm/templates/preferences/edit_user.html:64
|
||||
#: bookwyrm/templates/settings/site.html:11
|
||||
#: bookwyrm/templates/settings/site.html:77
|
||||
#: bookwyrm/templates/settings/site.html:90
|
||||
#: bookwyrm/templates/setup/config.html:91
|
||||
msgid "Display"
|
||||
msgstr "Affichage"
|
||||
|
@ -4050,54 +4068,66 @@ msgstr "\n"
|
|||
" Scanner le code-barres\n"
|
||||
" "
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:23
|
||||
#: bookwyrm/templates/search/barcode_modal.html:21
|
||||
msgid "Requesting camera..."
|
||||
msgstr "En attente de la caméra…"
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:24
|
||||
#: bookwyrm/templates/search/barcode_modal.html:22
|
||||
msgid "Grant access to the camera to scan a book's barcode."
|
||||
msgstr "Autorisez l’accès à la caméra pour scanner le code-barres d’un livre."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:29
|
||||
#: bookwyrm/templates/search/barcode_modal.html:27
|
||||
msgid "Could not access camera"
|
||||
msgstr "Impossible d’accéder à la caméra"
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:33
|
||||
#: bookwyrm/templates/search/barcode_modal.html:31
|
||||
msgctxt "barcode scanner"
|
||||
msgid "Scanning..."
|
||||
msgstr "Scan en cours…"
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:34
|
||||
#: bookwyrm/templates/search/barcode_modal.html:32
|
||||
msgid "Align your book's barcode with the camera."
|
||||
msgstr "Alignez le code-barres de votre livre avec la caméra."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:38
|
||||
#: bookwyrm/templates/search/barcode_modal.html:36
|
||||
msgctxt "barcode scanner"
|
||||
msgid "ISBN scanned"
|
||||
msgstr "ISBN scanné"
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:39
|
||||
#: bookwyrm/templates/search/barcode_modal.html:37
|
||||
msgctxt "followed by ISBN"
|
||||
msgid "Searching for book:"
|
||||
msgstr "Recherche du livre :"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:39
|
||||
#: bookwyrm/templates/search/book.html:25
|
||||
#, python-format
|
||||
msgid "%(formatted_review_count)s review"
|
||||
msgid_plural "%(formatted_review_count)s reviews"
|
||||
msgstr[0] "%(formatted_review_count)s critique"
|
||||
msgstr[1] "%(formatted_review_count)s critiques"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:34
|
||||
#, python-format
|
||||
msgid "(published %(pub_year)s)"
|
||||
msgstr "(publié en %(pub_year)s)"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:50
|
||||
msgid "Results from"
|
||||
msgstr "Résultats de"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:78
|
||||
#: bookwyrm/templates/search/book.html:89
|
||||
msgid "Import book"
|
||||
msgstr "Importer le livre"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:102
|
||||
#: bookwyrm/templates/search/book.html:113
|
||||
msgid "Load results from other catalogues"
|
||||
msgstr "Charger les résultats d’autres catalogues"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:106
|
||||
#: bookwyrm/templates/search/book.html:117
|
||||
msgid "Manually add book"
|
||||
msgstr "Ajouter un livre manuellement"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:111
|
||||
#: bookwyrm/templates/search/book.html:122
|
||||
msgid "Log in to import or add books."
|
||||
msgstr "Authentifiez-vous pour importer ou ajouter des livres."
|
||||
|
||||
|
@ -4112,7 +4142,7 @@ msgstr "Type de recherche"
|
|||
#: bookwyrm/templates/search/layout.html:24
|
||||
#: bookwyrm/templates/search/layout.html:47
|
||||
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:27
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:51
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:52
|
||||
#: bookwyrm/templates/settings/layout.html:36
|
||||
#: bookwyrm/templates/settings/users/user.html:13
|
||||
#: bookwyrm/templates/settings/users/user_admin.html:5
|
||||
|
@ -4186,7 +4216,7 @@ msgid "Create Announcement"
|
|||
msgstr "Ajouter une annonce"
|
||||
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:21
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:39
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:40
|
||||
msgid "Date added"
|
||||
msgstr "Date d’ajout"
|
||||
|
||||
|
@ -4354,7 +4384,7 @@ msgid "Active Tasks"
|
|||
msgstr "Tâches actives"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:34
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
|
@ -4665,24 +4695,24 @@ msgid "Failed:"
|
|||
msgstr "Échec :"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:62
|
||||
msgid "Expects a json file in the format provided by <a href=\"https://fediblock.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">FediBlock</a>, with a list of entries that have <code>instance</code> and <code>url</code> fields. For example:"
|
||||
msgstr "Attend un fichier json au format fourni par <a href=\"https://fediblock.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">FediBlock</a>, avec une liste d'entrées qui ont des champs <code>instance</code> et <code>url</code> . Par exemple :"
|
||||
msgid "Expects a json file in the format provided by FediBlock, with a list of entries that have <code>instance</code> and <code>url</code> fields. For example:"
|
||||
msgstr "Attend un fichier json dans le format fourni par FediBlock, avec une liste d'entrées qui ont des champs <code>instance</code> et <code>url</code>. Par exemple :"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:36
|
||||
#: bookwyrm/templates/settings/users/server_filter.html:5
|
||||
msgid "Instance name"
|
||||
msgstr "Nom de l’instance"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:43
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:44
|
||||
msgid "Last updated"
|
||||
msgstr "Dernière modification"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:47
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:48
|
||||
#: bookwyrm/templates/settings/federation/software_filter.html:5
|
||||
msgid "Software"
|
||||
msgstr "Logiciel"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:69
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:70
|
||||
msgid "No instances found"
|
||||
msgstr "Aucune instance trouvée"
|
||||
|
||||
|
@ -4690,27 +4720,51 @@ msgstr "Aucune instance trouvée"
|
|||
msgid "Stop import?"
|
||||
msgstr "Arrêter l'import ?"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:23
|
||||
#: bookwyrm/templates/settings/imports/imports.html:19
|
||||
msgid "Disable starting new imports"
|
||||
msgstr "Désactiver le lancement de nouvelles importations"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:30
|
||||
msgid "This is only intended to be used when things have gone very wrong with imports and you need to pause the feature while addressing issues."
|
||||
msgstr "Ceci n'est destiné à être utilisé que lorsque la situation des importations est catastrophique et que vous devez suspendre cette fonctionnalité le temps de résoudre les problèmes."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:31
|
||||
msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
|
||||
msgstr "Tant que les importations sont désactivées, les utilisateurs ne seront pas autorisés à commencer de nouvelles importations, mais les importations existantes ne seront pas affectées."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:36
|
||||
msgid "Disable imports"
|
||||
msgstr "Désactiver les importations"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:50
|
||||
msgid "Users are currently unable to start new imports"
|
||||
msgstr "Les utilisateurs ne peuvent pas commencer de nouvelles importations"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:55
|
||||
msgid "Enable imports"
|
||||
msgstr "Activer les importations"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:71
|
||||
msgid "Completed"
|
||||
msgstr "Terminé"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:37
|
||||
#: bookwyrm/templates/settings/imports/imports.html:85
|
||||
msgid "User"
|
||||
msgstr "Utilisateur"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:46
|
||||
#: bookwyrm/templates/settings/imports/imports.html:94
|
||||
msgid "Date Updated"
|
||||
msgstr "Date de Mise à jour"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:101
|
||||
msgid "Pending items"
|
||||
msgstr "Éléments en attente"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:56
|
||||
#: bookwyrm/templates/settings/imports/imports.html:104
|
||||
msgid "Successful items"
|
||||
msgstr "Éléments réussis"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:91
|
||||
#: bookwyrm/templates/settings/imports/imports.html:139
|
||||
msgid "No matching imports found."
|
||||
msgstr "Aucun import correspondant trouvé."
|
||||
|
||||
|
@ -4907,7 +4961,7 @@ msgid "Site Settings"
|
|||
msgstr "Paramètres du site"
|
||||
|
||||
#: bookwyrm/templates/settings/layout.html:106
|
||||
#: bookwyrm/templates/settings/site.html:95
|
||||
#: bookwyrm/templates/settings/site.html:108
|
||||
#: bookwyrm/templates/settings/themes.html:4
|
||||
#: bookwyrm/templates/settings/themes.html:6
|
||||
msgid "Themes"
|
||||
|
@ -5048,12 +5102,12 @@ msgid "Instance Info"
|
|||
msgstr "Information sur l’instance"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:12
|
||||
#: bookwyrm/templates/settings/site.html:110
|
||||
#: bookwyrm/templates/settings/site.html:123
|
||||
msgid "Footer Content"
|
||||
msgstr "Contenu du pied de page"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:13
|
||||
#: bookwyrm/templates/settings/site.html:134
|
||||
#: bookwyrm/templates/settings/site.html:147
|
||||
msgid "Registration"
|
||||
msgstr "Inscription"
|
||||
|
||||
|
@ -5093,71 +5147,79 @@ msgstr "Code de conduite :"
|
|||
msgid "Privacy Policy:"
|
||||
msgstr "Politique de vie privée :"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:79
|
||||
#: bookwyrm/templates/settings/site.html:73
|
||||
msgid "Impressum:"
|
||||
msgstr "Mentions légales :"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:78
|
||||
msgid "Include impressum:"
|
||||
msgstr "Inclure les mentions légales :"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:92
|
||||
msgid "Images"
|
||||
msgstr "Images"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:82
|
||||
#: bookwyrm/templates/settings/site.html:95
|
||||
msgid "Logo:"
|
||||
msgstr "Logo :"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:86
|
||||
#: bookwyrm/templates/settings/site.html:99
|
||||
msgid "Logo small:"
|
||||
msgstr "Logo réduit :"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:90
|
||||
#: bookwyrm/templates/settings/site.html:103
|
||||
msgid "Favicon:"
|
||||
msgstr "Favicon :"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:98
|
||||
#: bookwyrm/templates/settings/site.html:111
|
||||
msgid "Default theme:"
|
||||
msgstr "Thème par défaut :"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:113
|
||||
#: bookwyrm/templates/settings/site.html:126
|
||||
msgid "Support link:"
|
||||
msgstr "URL pour soutenir l’instance :"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:117
|
||||
#: bookwyrm/templates/settings/site.html:130
|
||||
msgid "Support title:"
|
||||
msgstr "Titre pour soutenir l’instance :"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:121
|
||||
#: bookwyrm/templates/settings/site.html:134
|
||||
msgid "Admin email:"
|
||||
msgstr "Email de l’administrateur :"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:125
|
||||
#: bookwyrm/templates/settings/site.html:138
|
||||
msgid "Additional info:"
|
||||
msgstr "Infos supplémentaires :"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:139
|
||||
#: bookwyrm/templates/settings/site.html:152
|
||||
msgid "Allow registration"
|
||||
msgstr "Autoriser les inscriptions"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:145
|
||||
#: bookwyrm/templates/settings/site.html:158
|
||||
msgid "Require users to confirm email address"
|
||||
msgstr "Demander aux utilisateurs et utilisatrices de confirmer leur adresse email"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:147
|
||||
#: bookwyrm/templates/settings/site.html:160
|
||||
msgid "(Recommended if registration is open)"
|
||||
msgstr "(Recommandé si les inscriptions sont ouvertes)"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:152
|
||||
#: bookwyrm/templates/settings/site.html:165
|
||||
msgid "Allow invite requests"
|
||||
msgstr "Autoriser les demandes d’invitation"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:158
|
||||
#: bookwyrm/templates/settings/site.html:171
|
||||
msgid "Set a question for invite requests"
|
||||
msgstr "Définir une question pour les demandes d’invitation"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:163
|
||||
#: bookwyrm/templates/settings/site.html:176
|
||||
msgid "Question:"
|
||||
msgstr "Question :"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:168
|
||||
#: bookwyrm/templates/settings/site.html:181
|
||||
msgid "Registration closed text:"
|
||||
msgstr "Texte affiché lorsque les inscriptions sont closes :"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:172
|
||||
#: bookwyrm/templates/settings/site.html:185
|
||||
msgid "Invite request text:"
|
||||
msgstr "Texte de la demande d'invitation :"
|
||||
|
||||
|
@ -5712,6 +5774,19 @@ msgstr "Se désabonner"
|
|||
msgid "Accept"
|
||||
msgstr "Accepter"
|
||||
|
||||
#: bookwyrm/templates/snippets/footer.html:16
|
||||
msgid "Documentation"
|
||||
msgstr "Documentation"
|
||||
|
||||
#: bookwyrm/templates/snippets/footer.html:42
|
||||
#, python-format
|
||||
msgid "Support %(site_name)s on <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
msgstr "Soutenez %(site_name)s sur <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
|
||||
#: bookwyrm/templates/snippets/footer.html:49
|
||||
msgid "BookWyrm's source code is freely available. You can contribute or report issues on <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
msgstr "Le code source de BookWyrm est librement disponible. Vous pouvez contribuer ou rapporter des problèmes sur <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
|
||||
#: bookwyrm/templates/snippets/form_rate_stars.html:20
|
||||
#: bookwyrm/templates/snippets/stars.html:13
|
||||
msgid "No rating"
|
||||
|
@ -6199,11 +6274,11 @@ msgstr "Défi lecture pour %(current_year)s"
|
|||
msgid "User Activity"
|
||||
msgstr "Activité du compte"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:70
|
||||
#: bookwyrm/templates/user/user.html:71
|
||||
msgid "RSS feed"
|
||||
msgstr "Flux RSS"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:81
|
||||
#: bookwyrm/templates/user/user.html:83
|
||||
msgid "No activities yet!"
|
||||
msgstr "Aucune activité pour l’instant !"
|
||||
|
||||
|
@ -6252,10 +6327,6 @@ msgstr "Ce fichier dépasse la taille limite : 10 Mo"
|
|||
msgid "%(title)s: %(subtitle)s"
|
||||
msgstr "%(title)s (%(subtitle)s)"
|
||||
|
||||
#: bookwyrm/views/imports/import_data.py:86
|
||||
msgid "Not a valid csv file"
|
||||
msgstr "Fichier CSV non valide"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:34
|
||||
#, python-brace-format
|
||||
msgid "Status updates from {obj.display_name}"
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-11-10 21:42+0000\n"
|
||||
"PO-Revision-Date: 2022-11-25 14:49\n"
|
||||
"POT-Creation-Date: 2022-12-05 02:21+0000\n"
|
||||
"PO-Revision-Date: 2022-12-05 18:13\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Galician\n"
|
||||
"Language: gl\n"
|
||||
|
@ -60,11 +60,11 @@ msgstr "A data final da lectura non pode ser anterior á de inicio."
|
|||
|
||||
#: bookwyrm/forms/forms.py:59
|
||||
msgid "Reading stopped date cannot be before start date."
|
||||
msgstr "A data do fin da lectura non pode ser anterior á de inicio."
|
||||
msgstr "A data do abandono da lectura non pode ser anterior á de inicio."
|
||||
|
||||
#: bookwyrm/forms/forms.py:67
|
||||
msgid "Reading stopped date cannot be in the future."
|
||||
msgstr "A data de deixar a lectura non pode ser futura."
|
||||
msgstr "A data de abandono da lectura non pode estar no futuro."
|
||||
|
||||
#: bookwyrm/forms/forms.py:74
|
||||
msgid "Reading finished date cannot be in the future."
|
||||
|
@ -90,7 +90,7 @@ msgstr "Código incorrecto"
|
|||
msgid "This domain is blocked. Please contact your administrator if you think this is an error."
|
||||
msgstr "Este dominio está bloqueado. Contacta coa administración se cres que é un erro."
|
||||
|
||||
#: bookwyrm/forms/links.py:46
|
||||
#: bookwyrm/forms/links.py:49
|
||||
msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending."
|
||||
msgstr "Esta ligazón co tipo de ficheiro xa foi engadida para este libro. Se non é visible, o dominio aínda está pendente."
|
||||
|
||||
|
@ -106,7 +106,7 @@ msgstr "Título do libro"
|
|||
#: bookwyrm/templates/shelf/shelf.html:188
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
msgstr "Puntuación"
|
||||
msgstr "Valoración"
|
||||
|
||||
#: bookwyrm/forms/lists.py:30 bookwyrm/templates/lists/list.html:185
|
||||
msgid "Sort By"
|
||||
|
@ -256,14 +256,14 @@ msgstr "Seguidoras"
|
|||
msgid "Private"
|
||||
msgstr "Privado"
|
||||
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:140
|
||||
#: bookwyrm/templates/settings/imports/imports.html:19
|
||||
#: bookwyrm/models/import_job.py:48 bookwyrm/templates/import/import.html:157
|
||||
#: bookwyrm/templates/settings/imports/imports.html:67
|
||||
#: 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:138
|
||||
#: bookwyrm/models/import_job.py:49 bookwyrm/templates/import/import.html:155
|
||||
msgid "Complete"
|
||||
msgstr "Completa"
|
||||
|
||||
|
@ -316,19 +316,19 @@ msgstr "Citas"
|
|||
msgid "Everything else"
|
||||
msgstr "As outras cousas"
|
||||
|
||||
#: bookwyrm/settings.py:209
|
||||
#: bookwyrm/settings.py:213
|
||||
msgid "Home Timeline"
|
||||
msgstr "Cronoloxía de Inicio"
|
||||
|
||||
#: bookwyrm/settings.py:209
|
||||
#: bookwyrm/settings.py:213
|
||||
msgid "Home"
|
||||
msgstr "Inicio"
|
||||
|
||||
#: bookwyrm/settings.py:210
|
||||
#: bookwyrm/settings.py:214
|
||||
msgid "Books Timeline"
|
||||
msgstr "Cronoloxía de libros"
|
||||
|
||||
#: bookwyrm/settings.py:210
|
||||
#: bookwyrm/settings.py:214
|
||||
#: bookwyrm/templates/guided_tour/user_profile.html:101
|
||||
#: bookwyrm/templates/search/layout.html:22
|
||||
#: bookwyrm/templates/search/layout.html:43
|
||||
|
@ -336,71 +336,71 @@ msgstr "Cronoloxía de libros"
|
|||
msgid "Books"
|
||||
msgstr "Libros"
|
||||
|
||||
#: bookwyrm/settings.py:282
|
||||
#: bookwyrm/settings.py:286
|
||||
msgid "English"
|
||||
msgstr "English (Inglés)"
|
||||
|
||||
#: bookwyrm/settings.py:283
|
||||
#: bookwyrm/settings.py:287
|
||||
msgid "Català (Catalan)"
|
||||
msgstr "Català (Catalan)"
|
||||
|
||||
#: bookwyrm/settings.py:284
|
||||
#: bookwyrm/settings.py:288
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (Alemán)"
|
||||
|
||||
#: bookwyrm/settings.py:285
|
||||
#: bookwyrm/settings.py:289
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (Español)"
|
||||
|
||||
#: bookwyrm/settings.py:286
|
||||
#: bookwyrm/settings.py:290
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (Galego)"
|
||||
|
||||
#: bookwyrm/settings.py:287
|
||||
#: bookwyrm/settings.py:291
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (Italiano)"
|
||||
|
||||
#: bookwyrm/settings.py:288
|
||||
#: bookwyrm/settings.py:292
|
||||
msgid "Suomi (Finnish)"
|
||||
msgstr "Suomi (Finés)"
|
||||
|
||||
#: bookwyrm/settings.py:289
|
||||
#: bookwyrm/settings.py:293
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (Francés)"
|
||||
|
||||
#: bookwyrm/settings.py:290
|
||||
#: bookwyrm/settings.py:294
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Lituano)"
|
||||
|
||||
#: bookwyrm/settings.py:291
|
||||
#: bookwyrm/settings.py:295
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (Noruegués)"
|
||||
|
||||
#: bookwyrm/settings.py:292
|
||||
#: bookwyrm/settings.py:296
|
||||
msgid "Polski (Polish)"
|
||||
msgstr "Polski (Polaco)"
|
||||
|
||||
#: bookwyrm/settings.py:293
|
||||
#: bookwyrm/settings.py:297
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (Portugués brasileiro)"
|
||||
|
||||
#: bookwyrm/settings.py:294
|
||||
#: bookwyrm/settings.py:298
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Portugués europeo)"
|
||||
|
||||
#: bookwyrm/settings.py:295
|
||||
#: bookwyrm/settings.py:299
|
||||
msgid "Română (Romanian)"
|
||||
msgstr "Română (Rumanés)"
|
||||
|
||||
#: bookwyrm/settings.py:296
|
||||
#: bookwyrm/settings.py:300
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Sueco)"
|
||||
|
||||
#: bookwyrm/settings.py:297
|
||||
#: bookwyrm/settings.py:301
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (Chinés simplificado)"
|
||||
|
||||
#: bookwyrm/settings.py:298
|
||||
#: bookwyrm/settings.py:302
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (Chinés tradicional)"
|
||||
|
||||
|
@ -459,24 +459,24 @@ msgstr "<a href=\"%(book_path)s\"><em>%(title)s</em></a> é o libro con valoraci
|
|||
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 "Rexistra as túas lecturas, conversa acerca dos libros, escribe recensións e descubre próximas lecturas. Sempre sen publicidade, anti-corporacións e orientado á comunidade, BookWyrm é software a escala humana, deseñado para ser pequeno e persoal. Se queres propoñer novas ferramentas, informar de fallos, ou colaborar, <a href=\"https://joinbookwyrm.com/get-involved\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">contacta con nós</a> e deixa oír a túa voz."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:103
|
||||
#: bookwyrm/templates/about/about.html:104
|
||||
msgid "Meet your admins"
|
||||
msgstr "Contacta coa administración"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:106
|
||||
#: bookwyrm/templates/about/about.html:107
|
||||
#, python-format
|
||||
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"%(coc_path)s\">code of conduct</a>, and respond when users report spam and bad behavior."
|
||||
msgstr "A moderación e administración de %(site_name)s coidan e xestionan o sitio web, fan cumprir co <a href=\"%(coc_path)s\">código de conduta</a> e responden ás denuncias das usuarias sobre spam e mal comportamento."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:120
|
||||
#: bookwyrm/templates/about/about.html:121
|
||||
msgid "Moderator"
|
||||
msgstr "Moderación"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:122 bookwyrm/templates/user_menu.html:63
|
||||
#: bookwyrm/templates/about/about.html:123 bookwyrm/templates/user_menu.html:63
|
||||
msgid "Admin"
|
||||
msgstr "Admin"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:138
|
||||
#: bookwyrm/templates/about/about.html:139
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: bookwyrm/templates/snippets/status/status_options.html:35
|
||||
#: bookwyrm/templates/snippets/user_options.html:14
|
||||
|
@ -486,6 +486,7 @@ msgstr "Enviar mensaxe directa"
|
|||
#: bookwyrm/templates/about/conduct.html:4
|
||||
#: bookwyrm/templates/about/conduct.html:9
|
||||
#: bookwyrm/templates/about/layout.html:41
|
||||
#: bookwyrm/templates/snippets/footer.html:27
|
||||
msgid "Code of Conduct"
|
||||
msgstr "Código de Conduta"
|
||||
|
||||
|
@ -503,8 +504,8 @@ msgid "Software version:"
|
|||
msgstr "Versión do software:"
|
||||
|
||||
#: bookwyrm/templates/about/layout.html:30
|
||||
#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:200
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:8
|
||||
#: bookwyrm/templates/embed-layout.html:33
|
||||
#: bookwyrm/templates/snippets/footer.html:8
|
||||
#, python-format
|
||||
msgid "About %(site_name)s"
|
||||
msgstr "Acerca de %(site_name)s"
|
||||
|
@ -512,9 +513,15 @@ msgstr "Acerca de %(site_name)s"
|
|||
#: bookwyrm/templates/about/layout.html:47
|
||||
#: bookwyrm/templates/about/privacy.html:4
|
||||
#: bookwyrm/templates/about/privacy.html:9
|
||||
#: bookwyrm/templates/snippets/footer.html:30
|
||||
msgid "Privacy Policy"
|
||||
msgstr "Política de Privacidade"
|
||||
|
||||
#: bookwyrm/templates/about/layout.html:54
|
||||
#: bookwyrm/templates/snippets/footer.html:34
|
||||
msgid "Impressum"
|
||||
msgstr "Legal"
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:7
|
||||
#: bookwyrm/templates/feed/summary_card.html:8
|
||||
#, python-format
|
||||
|
@ -640,7 +647,7 @@ msgstr "Así se fai!"
|
|||
msgid "%(display_name)s left %(ratings_total)s rating, <br />their average rating is %(rating_average)s"
|
||||
msgid_plural "%(display_name)s left %(ratings_total)s ratings, <br />their average rating is %(rating_average)s"
|
||||
msgstr[0] "%(display_name)s fixo %(ratings_total)s valoración,<br />cunha media de %(rating_average)s"
|
||||
msgstr[1] "%(display_name)s fixo %(ratings_total)s valoracións,<br />cunha puntuación media de %(rating_average)s"
|
||||
msgstr[1] "%(display_name)s fixo %(ratings_total)s valoracións,<br />cunha valoración media de %(rating_average)s"
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:238
|
||||
msgid "Their best rated review"
|
||||
|
@ -812,7 +819,7 @@ 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/site.html:181
|
||||
#: bookwyrm/templates/settings/site.html:194
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:69
|
||||
#: bookwyrm/templates/shelf/form.html:25
|
||||
#: bookwyrm/templates/snippets/reading_modals/layout.html:18
|
||||
|
@ -834,7 +841,7 @@ msgstr "Gardar"
|
|||
#: bookwyrm/templates/preferences/disable-2fa.html:19
|
||||
#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27
|
||||
#: bookwyrm/templates/readthrough/readthrough_modal.html:80
|
||||
#: bookwyrm/templates/search/barcode_modal.html:45
|
||||
#: bookwyrm/templates/search/barcode_modal.html:43
|
||||
#: bookwyrm/templates/settings/federation/instance.html:106
|
||||
#: bookwyrm/templates/settings/imports/complete_import_modal.html:16
|
||||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22
|
||||
|
@ -852,7 +859,7 @@ msgstr "Ao cargar os datos vas conectar con <strong>%(source_name)s</strong> e c
|
|||
#: bookwyrm/templates/book/sync_modal.html:24
|
||||
#: bookwyrm/templates/groups/members.html:29
|
||||
#: bookwyrm/templates/landing/password_reset.html:52
|
||||
#: bookwyrm/templates/preferences/2fa.html:54
|
||||
#: bookwyrm/templates/preferences/2fa.html:77
|
||||
#: bookwyrm/templates/settings/imports/complete_import_modal.html:19
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:17
|
||||
msgid "Confirm"
|
||||
|
@ -1320,7 +1327,7 @@ msgid "Domain"
|
|||
msgstr "Dominio"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:36
|
||||
#: bookwyrm/templates/import/import.html:105
|
||||
#: bookwyrm/templates/import/import.html:122
|
||||
#: bookwyrm/templates/import/import_status.html:134
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:37
|
||||
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:48
|
||||
|
@ -1333,7 +1340,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:62
|
||||
#: bookwyrm/templates/settings/imports/imports.html:110
|
||||
#: bookwyrm/templates/settings/reports/report_links_table.html:6
|
||||
#: bookwyrm/templates/settings/themes.html:99
|
||||
msgid "Actions"
|
||||
|
@ -1349,11 +1356,11 @@ msgstr "Usuaria descoñecida"
|
|||
msgid "Report spam"
|
||||
msgstr "Denunciar spam"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:101
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:102
|
||||
msgid "No links available for this book."
|
||||
msgstr "Sen ligazóns para para este libro."
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:112
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:113
|
||||
#: bookwyrm/templates/book/file_links/links.html:18
|
||||
msgid "Add link to file"
|
||||
msgstr "Engadir ligazón ao ficheiro"
|
||||
|
@ -1735,7 +1742,7 @@ msgstr "Se non solicitaches cambiar o contrasinal podes ignorar este email."
|
|||
msgid "Reset your %(site_name)s password"
|
||||
msgstr "Restablece o contrasinal en %(site_name)s"
|
||||
|
||||
#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:40
|
||||
#: bookwyrm/templates/embed-layout.html:20 bookwyrm/templates/layout.html:40
|
||||
#: 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
|
||||
|
@ -1743,12 +1750,12 @@ msgstr "Restablece o contrasinal en %(site_name)s"
|
|||
msgid "%(site_name)s home page"
|
||||
msgstr "Páxina de inicio de %(site_name)s"
|
||||
|
||||
#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:204
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:12
|
||||
#: bookwyrm/templates/embed-layout.html:39
|
||||
#: bookwyrm/templates/snippets/footer.html:12
|
||||
msgid "Contact site admin"
|
||||
msgstr "Contacta coa administración"
|
||||
|
||||
#: bookwyrm/templates/embed-layout.html:46
|
||||
#: bookwyrm/templates/embed-layout.html:45
|
||||
msgid "Join BookWyrm"
|
||||
msgstr "Únete a BookWyrm"
|
||||
|
||||
|
@ -1827,7 +1834,7 @@ msgstr "Ver directorio"
|
|||
|
||||
#: bookwyrm/templates/feed/summary_card.html:21
|
||||
msgid "The end of the year is the best moment to take stock of all the books read during the last 12 months. How many pages have you read? Which book is your best-rated of the year? We compiled these stats, and more!"
|
||||
msgstr "O final do ano é o mellor momento para botar unha ollada a tódolos libros lidos nos últimos 12 meses. Cantas páxinas liches? Cal é o libro con mellor puntuación do ano? Recollemos estas estatísticas e moitas máis!"
|
||||
msgstr "O final do ano é o mellor momento para botar unha ollada a tódolos libros lidos nos últimos 12 meses. Cantas páxinas liches? Cal é o libro con mellor valoración do ano? Recollemos estas estatísticas e moitas máis!"
|
||||
|
||||
#: bookwyrm/templates/feed/summary_card.html:26
|
||||
#, python-format
|
||||
|
@ -1867,7 +1874,7 @@ msgstr "Lidos"
|
|||
#: bookwyrm/templates/get_started/book_preview.html:13
|
||||
#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:36
|
||||
msgid "Stopped Reading"
|
||||
msgstr "Deixei de ler"
|
||||
msgstr "Abandonados"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:6
|
||||
msgid "What are you reading?"
|
||||
|
@ -2314,8 +2321,7 @@ msgstr "Benvida a Bookwyrm!<br><br>Queres ver un pequeno titorial para coñecer
|
|||
|
||||
#: bookwyrm/templates/guided_tour/home.html:17
|
||||
#: bookwyrm/templates/guided_tour/home.html:39
|
||||
#: bookwyrm/templates/layout.html:212
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:20
|
||||
#: bookwyrm/templates/snippets/footer.html:20
|
||||
msgid "Guided Tour"
|
||||
msgstr "Titorial"
|
||||
|
||||
|
@ -2625,81 +2631,89 @@ msgstr "Atopa un libro"
|
|||
msgid "Import Books"
|
||||
msgstr "Importar libros"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:15
|
||||
#: bookwyrm/templates/import/import.html:13
|
||||
msgid "Not a valid CSV file"
|
||||
msgstr "Non é un ficheiro CSV válido"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:22
|
||||
#, 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:19
|
||||
#: bookwyrm/templates/import/import.html:26
|
||||
#, 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:34
|
||||
#: bookwyrm/templates/import/import.html:41
|
||||
msgid "Data source:"
|
||||
msgstr "Fonte de datos:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:40
|
||||
#: bookwyrm/templates/import/import.html:47
|
||||
msgid "Goodreads (CSV)"
|
||||
msgstr "Goodreads (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:43
|
||||
#: bookwyrm/templates/import/import.html:50
|
||||
msgid "Storygraph (CSV)"
|
||||
msgstr "Storygraph (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:46
|
||||
#: bookwyrm/templates/import/import.html:53
|
||||
msgid "LibraryThing (TSV)"
|
||||
msgstr "LibraryThing (TSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:49
|
||||
#: bookwyrm/templates/import/import.html:56
|
||||
msgid "OpenLibrary (CSV)"
|
||||
msgstr "OpenLibrary (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:52
|
||||
#: bookwyrm/templates/import/import.html:59
|
||||
msgid "Calibre (CSV)"
|
||||
msgstr "Calibre (CSV)"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:58
|
||||
#: bookwyrm/templates/import/import.html:65
|
||||
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:67
|
||||
#: bookwyrm/templates/import/import.html:74
|
||||
msgid "Data file:"
|
||||
msgstr "Ficheiro de datos:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:75
|
||||
#: bookwyrm/templates/import/import.html:82
|
||||
msgid "Include reviews"
|
||||
msgstr "Incluír recensións"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:80
|
||||
#: bookwyrm/templates/import/import.html:87
|
||||
msgid "Privacy setting for imported reviews:"
|
||||
msgstr "Axuste de privacidade para recensións importadas:"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:86
|
||||
#: bookwyrm/templates/import/import.html:93
|
||||
#: bookwyrm/templates/preferences/layout.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:78
|
||||
msgid "Import"
|
||||
msgstr "Importar"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:91
|
||||
#: bookwyrm/templates/import/import.html:101
|
||||
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
|
||||
msgid "Recent Imports"
|
||||
msgstr "Importacións recentes"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:96
|
||||
#: bookwyrm/templates/settings/imports/imports.html:41
|
||||
#: bookwyrm/templates/import/import.html:113
|
||||
#: bookwyrm/templates/settings/imports/imports.html:89
|
||||
msgid "Date Created"
|
||||
msgstr "Data de creación"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:99
|
||||
#: bookwyrm/templates/import/import.html:116
|
||||
msgid "Last Updated"
|
||||
msgstr "Última actualización"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:102
|
||||
#: bookwyrm/templates/settings/imports/imports.html:50
|
||||
#: bookwyrm/templates/import/import.html:119
|
||||
#: bookwyrm/templates/settings/imports/imports.html:98
|
||||
msgid "Items"
|
||||
msgstr "Elementos"
|
||||
|
||||
#: bookwyrm/templates/import/import.html:111
|
||||
#: bookwyrm/templates/import/import.html:128
|
||||
msgid "No recent imports"
|
||||
msgstr "Sen importacións recentes"
|
||||
|
||||
|
@ -2734,7 +2748,7 @@ msgid "Refresh"
|
|||
msgstr "Actualizar"
|
||||
|
||||
#: bookwyrm/templates/import/import_status.html:72
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
#: bookwyrm/templates/settings/imports/imports.html:130
|
||||
msgid "Stop import"
|
||||
msgstr "Deter a importación"
|
||||
|
||||
|
@ -2852,7 +2866,7 @@ msgid "Reject"
|
|||
msgstr "Rexeitar"
|
||||
|
||||
#: bookwyrm/templates/import/troubleshoot.html:7
|
||||
#: bookwyrm/templates/settings/imports/imports.html:59
|
||||
#: bookwyrm/templates/settings/imports/imports.html:107
|
||||
msgid "Failed items"
|
||||
msgstr "Elementos fallidos"
|
||||
|
||||
|
@ -2958,7 +2972,7 @@ msgstr "Nome de usuaria:"
|
|||
#: bookwyrm/templates/landing/password_reset.html:26
|
||||
#: bookwyrm/templates/landing/reactivate.html:23
|
||||
#: bookwyrm/templates/layout.html:144 bookwyrm/templates/ostatus/error.html:32
|
||||
#: bookwyrm/templates/preferences/2fa.html:68
|
||||
#: bookwyrm/templates/preferences/2fa.html:91
|
||||
#: bookwyrm/templates/snippets/register_form.html:45
|
||||
msgid "Password:"
|
||||
msgstr "Contrasinal:"
|
||||
|
@ -3038,22 +3052,6 @@ msgstr "Publicación correcta"
|
|||
msgid "Error posting status"
|
||||
msgstr "Erro ao publicar"
|
||||
|
||||
#: bookwyrm/templates/layout.html:208
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:16
|
||||
msgid "Documentation"
|
||||
msgstr "Documentación"
|
||||
|
||||
#: bookwyrm/templates/layout.html:221
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:29
|
||||
#, python-format
|
||||
msgid "Support %(site_name)s on <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
msgstr "Axuda a %(site_name)s en <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
|
||||
#: bookwyrm/templates/layout.html:228
|
||||
#: bookwyrm/templates/snippets/2fa_footer.html:36
|
||||
msgid "BookWyrm's source code is freely available. You can contribute or report issues on <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
msgstr "O código fonte de BookWyrm é público. Podes colaborar ou informar de problemas en <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
|
||||
#: bookwyrm/templates/lists/add_item_modal.html:8
|
||||
#, python-format
|
||||
msgid "Add \"<em>%(title)s</em>\" to this list"
|
||||
|
@ -3119,7 +3117,7 @@ msgid "Delete this list?"
|
|||
msgstr "Eliminar esta lista?"
|
||||
|
||||
#: bookwyrm/templates/lists/edit_form.html:5
|
||||
#: bookwyrm/templates/lists/layout.html:17
|
||||
#: bookwyrm/templates/lists/layout.html:18
|
||||
msgid "Edit List"
|
||||
msgstr "Editar lista"
|
||||
|
||||
|
@ -3128,13 +3126,12 @@ msgstr "Editar lista"
|
|||
msgid "%(list_name)s, a list by %(owner)s"
|
||||
msgstr "%(list_name)s, unha lista de %(owner)s"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:18
|
||||
#: bookwyrm/templates/lists/embed-list.html:20
|
||||
#, python-format
|
||||
msgid "on <a href=\"/\">%(site_name)s</a>"
|
||||
msgstr "en <a href=\"/\">%(site_name)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:27
|
||||
#: bookwyrm/templates/lists/list.html:54
|
||||
#: bookwyrm/templates/lists/embed-list.html:29
|
||||
msgid "This list is currently empty"
|
||||
msgstr "A lista está baleira neste intre"
|
||||
|
||||
|
@ -3216,6 +3213,10 @@ msgstr "Suxeriches correctamente un libro para esta lista!"
|
|||
msgid "You successfully added a book to this list!"
|
||||
msgstr "Engadiches correctamente un libro a esta lista!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:54
|
||||
msgid "This list is currently empty."
|
||||
msgstr "A lista está baleira neste intre."
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:104
|
||||
msgid "Edit notes"
|
||||
msgstr "Editar notas"
|
||||
|
@ -3339,12 +3340,17 @@ msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a> suxeriu engadir <
|
|||
|
||||
#: bookwyrm/templates/notifications/items/add.html:66
|
||||
#, python-format
|
||||
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> added a book to one of your lists"
|
||||
msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a> engadiu un libro a unha das túas listas"
|
||||
|
||||
#: bookwyrm/templates/notifications/items/add.html:72
|
||||
#, python-format
|
||||
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> added <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other book to your list \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
msgid_plural "<a href=\"%(related_user_link)s\">%(related_user)s</a> added <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other books to your list \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
msgstr[0] "<a href=\"%(related_user_link)s\">%(related_user)s</a> engadiu <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, e %(display_count)s libro máis á tua lista \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
msgstr[1] "<a href=\"%(related_user_link)s\">%(related_user)s</a> engadiu <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, e %(display_count)s libros máis á túa lista \"<a href=\"%(list_path)s\">%(list_name)s</a>\""
|
||||
|
||||
#: bookwyrm/templates/notifications/items/add.html:82
|
||||
#: bookwyrm/templates/notifications/items/add.html:88
|
||||
#, python-format
|
||||
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> suggested adding <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other book to your list \"<a href=\"%(list_curate_path)s\">%(list_name)s</a>\""
|
||||
msgid_plural "<a href=\"%(related_user_link)s\">%(related_user)s</a> suggested adding <em><a href=\"%(book_path)s\">%(book_title)s</a></em>, <em><a href=\"%(second_book_path)s\">%(second_book_title)s</a></em>, and %(display_count)s other books to your list \"<a href=\"%(list_curate_path)s\">%(list_name)s</a>\""
|
||||
|
@ -3768,19 +3774,31 @@ msgstr "Crear códigos de apoio"
|
|||
msgid "Scan the QR code with your authentication app and then enter the code from your app below to confirm your app is set up."
|
||||
msgstr "Escanea o código QR coa túa app de autenticación e escribe aquí o código que apareza nela para confirmar que configuraches a app."
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:50
|
||||
#: bookwyrm/templates/preferences/2fa.html:52
|
||||
msgid "Use setup key"
|
||||
msgstr "Usa a clave de configuración"
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:58
|
||||
msgid "Account name:"
|
||||
msgstr "Nome da conta:"
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:65
|
||||
msgid "Code:"
|
||||
msgstr "Código:"
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:73
|
||||
msgid "Enter the code from your app:"
|
||||
msgstr "Escribe o código da túa app:"
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:60
|
||||
#: bookwyrm/templates/preferences/2fa.html:83
|
||||
msgid "You can make your account more secure by using Two Factor Authentication (2FA). This will require you to enter a one-time code using a phone app like <em>Authy</em>, <em>Google Authenticator</em> or <em>Microsoft Authenticator</em> each time you log in."
|
||||
msgstr "Podes mellorar a seguridade da túa conta usando un Segundo Factor de Autenticación (2FA). Pediráseche un código temporal de un só uso procedente dunha app como <em>Authy</em>, <em>Google Authenticator</em> ou <em>Microsoft Authenticator</em> cada vez que accedas."
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:62
|
||||
#: bookwyrm/templates/preferences/2fa.html:85
|
||||
msgid "Confirm your password to begin setting up 2FA."
|
||||
msgstr "Confirma o teu contrasinal para comezar a usar 2FA."
|
||||
|
||||
#: bookwyrm/templates/preferences/2fa.html:72
|
||||
#: bookwyrm/templates/preferences/2fa.html:95
|
||||
#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:37
|
||||
msgid "Set up 2FA"
|
||||
msgstr "Configurar 2FA"
|
||||
|
@ -3870,7 +3888,7 @@ msgstr "Perfil"
|
|||
#: bookwyrm/templates/preferences/edit_user.html:13
|
||||
#: bookwyrm/templates/preferences/edit_user.html:64
|
||||
#: bookwyrm/templates/settings/site.html:11
|
||||
#: bookwyrm/templates/settings/site.html:77
|
||||
#: bookwyrm/templates/settings/site.html:90
|
||||
#: bookwyrm/templates/setup/config.html:91
|
||||
msgid "Display"
|
||||
msgstr "Axustes"
|
||||
|
@ -4050,54 +4068,66 @@ msgstr "\n"
|
|||
" Escanear Código de barras\n"
|
||||
" "
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:23
|
||||
#: bookwyrm/templates/search/barcode_modal.html:21
|
||||
msgid "Requesting camera..."
|
||||
msgstr "Accedendo á cámara..."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:24
|
||||
#: bookwyrm/templates/search/barcode_modal.html:22
|
||||
msgid "Grant access to the camera to scan a book's barcode."
|
||||
msgstr "Permite o acceso á cámara para escanear o código de barras do libro."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:29
|
||||
#: bookwyrm/templates/search/barcode_modal.html:27
|
||||
msgid "Could not access camera"
|
||||
msgstr "Non hai acceso á cámara"
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:33
|
||||
#: bookwyrm/templates/search/barcode_modal.html:31
|
||||
msgctxt "barcode scanner"
|
||||
msgid "Scanning..."
|
||||
msgstr "Escaneando..."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:34
|
||||
#: bookwyrm/templates/search/barcode_modal.html:32
|
||||
msgid "Align your book's barcode with the camera."
|
||||
msgstr "Aliña o código de barras do libro coa cámara."
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:38
|
||||
#: bookwyrm/templates/search/barcode_modal.html:36
|
||||
msgctxt "barcode scanner"
|
||||
msgid "ISBN scanned"
|
||||
msgstr "ISBN escaneado"
|
||||
|
||||
#: bookwyrm/templates/search/barcode_modal.html:39
|
||||
#: bookwyrm/templates/search/barcode_modal.html:37
|
||||
msgctxt "followed by ISBN"
|
||||
msgid "Searching for book:"
|
||||
msgstr "Buscando o libro:"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:39
|
||||
#: bookwyrm/templates/search/book.html:25
|
||||
#, python-format
|
||||
msgid "%(formatted_review_count)s review"
|
||||
msgid_plural "%(formatted_review_count)s reviews"
|
||||
msgstr[0] "%(formatted_review_count)s recensión"
|
||||
msgstr[1] "%(formatted_review_count)s recensións"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:34
|
||||
#, python-format
|
||||
msgid "(published %(pub_year)s)"
|
||||
msgstr "(publicado en %(pub_year)s)"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:50
|
||||
msgid "Results from"
|
||||
msgstr "Resultados de"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:78
|
||||
#: bookwyrm/templates/search/book.html:89
|
||||
msgid "Import book"
|
||||
msgstr "Importar libro"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:102
|
||||
#: bookwyrm/templates/search/book.html:113
|
||||
msgid "Load results from other catalogues"
|
||||
msgstr "Cargar resultados desde outros catálogos"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:106
|
||||
#: bookwyrm/templates/search/book.html:117
|
||||
msgid "Manually add book"
|
||||
msgstr "Engadir un libro manualmente"
|
||||
|
||||
#: bookwyrm/templates/search/book.html:111
|
||||
#: bookwyrm/templates/search/book.html:122
|
||||
msgid "Log in to import or add books."
|
||||
msgstr "Accede para importar ou engadir libros."
|
||||
|
||||
|
@ -4112,7 +4142,7 @@ msgstr "Tipo de busca"
|
|||
#: bookwyrm/templates/search/layout.html:24
|
||||
#: bookwyrm/templates/search/layout.html:47
|
||||
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:27
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:51
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:52
|
||||
#: bookwyrm/templates/settings/layout.html:36
|
||||
#: bookwyrm/templates/settings/users/user.html:13
|
||||
#: bookwyrm/templates/settings/users/user_admin.html:5
|
||||
|
@ -4186,7 +4216,7 @@ msgid "Create Announcement"
|
|||
msgstr "Crear Anuncio"
|
||||
|
||||
#: bookwyrm/templates/settings/announcements/announcements.html:21
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:39
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:40
|
||||
msgid "Date added"
|
||||
msgstr "Data engadida"
|
||||
|
||||
|
@ -4354,7 +4384,7 @@ msgid "Active Tasks"
|
|||
msgstr "Tarefas activas"
|
||||
|
||||
#: bookwyrm/templates/settings/celery.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:34
|
||||
#: bookwyrm/templates/settings/imports/imports.html:82
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
|
@ -4665,24 +4695,24 @@ msgid "Failed:"
|
|||
msgstr "Fallou:"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_blocklist.html:62
|
||||
msgid "Expects a json file in the format provided by <a href=\"https://fediblock.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">FediBlock</a>, with a list of entries that have <code>instance</code> and <code>url</code> fields. For example:"
|
||||
msgstr "É de esperar un ficheiro json no formato proporcionado por <a href=\"https://fediblock.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Fediblock</a>, cunha lista de entradas que teña campos para <code>instancia</code> e <code>url</code>. Por exemplo:"
|
||||
msgid "Expects a json file in the format provided by FediBlock, with a list of entries that have <code>instance</code> and <code>url</code> fields. For example:"
|
||||
msgstr "Agardase un ficheiro json no formato que proporciona FediBlock, cunha lista de entradas con campos para <code>instancia</code> e <code>url</code>. Exemplo:"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:35
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:36
|
||||
#: bookwyrm/templates/settings/users/server_filter.html:5
|
||||
msgid "Instance name"
|
||||
msgstr "Nome da instancia"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:43
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:44
|
||||
msgid "Last updated"
|
||||
msgstr "Última actualización"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:47
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:48
|
||||
#: bookwyrm/templates/settings/federation/software_filter.html:5
|
||||
msgid "Software"
|
||||
msgstr "Software"
|
||||
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:69
|
||||
#: bookwyrm/templates/settings/federation/instance_list.html:70
|
||||
msgid "No instances found"
|
||||
msgstr "Non hai instancias"
|
||||
|
||||
|
@ -4690,27 +4720,51 @@ msgstr "Non hai instancias"
|
|||
msgid "Stop import?"
|
||||
msgstr "Deter a importación?"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:23
|
||||
#: bookwyrm/templates/settings/imports/imports.html:19
|
||||
msgid "Disable starting new imports"
|
||||
msgstr "Desactivar realizar novas importacións"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:30
|
||||
msgid "This is only intended to be used when things have gone very wrong with imports and you need to pause the feature while addressing issues."
|
||||
msgstr "Isto pretende ser útil cando algo funciona realmente mal coas importacións e precisas deter esta ferramenta para intentar resolver o problema."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:31
|
||||
msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
|
||||
msgstr "Cando están desactivadas as importacións as usuarias non poderán realizar novas importacións, pero as existentes non se ven afectadas."
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:36
|
||||
msgid "Disable imports"
|
||||
msgstr "Desactivar importacións"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:50
|
||||
msgid "Users are currently unable to start new imports"
|
||||
msgstr "As usuarias actualmente non poden realizar importacións"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:55
|
||||
msgid "Enable imports"
|
||||
msgstr "Activar importacións"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:71
|
||||
msgid "Completed"
|
||||
msgstr "Completada"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:37
|
||||
#: bookwyrm/templates/settings/imports/imports.html:85
|
||||
msgid "User"
|
||||
msgstr "Usuaria"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:46
|
||||
#: bookwyrm/templates/settings/imports/imports.html:94
|
||||
msgid "Date Updated"
|
||||
msgstr "Data de actualización"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:53
|
||||
#: bookwyrm/templates/settings/imports/imports.html:101
|
||||
msgid "Pending items"
|
||||
msgstr "Elementos pendentes"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:56
|
||||
#: bookwyrm/templates/settings/imports/imports.html:104
|
||||
msgid "Successful items"
|
||||
msgstr "Elementos correctos"
|
||||
|
||||
#: bookwyrm/templates/settings/imports/imports.html:91
|
||||
#: bookwyrm/templates/settings/imports/imports.html:139
|
||||
msgid "No matching imports found."
|
||||
msgstr "Non se atopan importacións que concorden."
|
||||
|
||||
|
@ -4907,7 +4961,7 @@ msgid "Site Settings"
|
|||
msgstr "Axustes da web"
|
||||
|
||||
#: bookwyrm/templates/settings/layout.html:106
|
||||
#: bookwyrm/templates/settings/site.html:95
|
||||
#: bookwyrm/templates/settings/site.html:108
|
||||
#: bookwyrm/templates/settings/themes.html:4
|
||||
#: bookwyrm/templates/settings/themes.html:6
|
||||
msgid "Themes"
|
||||
|
@ -5048,12 +5102,12 @@ msgid "Instance Info"
|
|||
msgstr "Info da instancia"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:12
|
||||
#: bookwyrm/templates/settings/site.html:110
|
||||
#: bookwyrm/templates/settings/site.html:123
|
||||
msgid "Footer Content"
|
||||
msgstr "Contido web do pé"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:13
|
||||
#: bookwyrm/templates/settings/site.html:134
|
||||
#: bookwyrm/templates/settings/site.html:147
|
||||
msgid "Registration"
|
||||
msgstr "Rexistro"
|
||||
|
||||
|
@ -5093,71 +5147,79 @@ msgstr "Código de conduta:"
|
|||
msgid "Privacy Policy:"
|
||||
msgstr "Política de privacidade:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:79
|
||||
#: bookwyrm/templates/settings/site.html:73
|
||||
msgid "Impressum:"
|
||||
msgstr "Legal:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:78
|
||||
msgid "Include impressum:"
|
||||
msgstr "Incluír información legal:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:92
|
||||
msgid "Images"
|
||||
msgstr "Imaxes"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:82
|
||||
#: bookwyrm/templates/settings/site.html:95
|
||||
msgid "Logo:"
|
||||
msgstr "Logo:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:86
|
||||
#: bookwyrm/templates/settings/site.html:99
|
||||
msgid "Logo small:"
|
||||
msgstr "Logo pequeno:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:90
|
||||
#: bookwyrm/templates/settings/site.html:103
|
||||
msgid "Favicon:"
|
||||
msgstr "Favicon:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:98
|
||||
#: bookwyrm/templates/settings/site.html:111
|
||||
msgid "Default theme:"
|
||||
msgstr "Decorado por defecto:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:113
|
||||
#: bookwyrm/templates/settings/site.html:126
|
||||
msgid "Support link:"
|
||||
msgstr "Ligazón de axuda:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:117
|
||||
#: bookwyrm/templates/settings/site.html:130
|
||||
msgid "Support title:"
|
||||
msgstr "Título de axuda:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:121
|
||||
#: bookwyrm/templates/settings/site.html:134
|
||||
msgid "Admin email:"
|
||||
msgstr "Email de Admin:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:125
|
||||
#: bookwyrm/templates/settings/site.html:138
|
||||
msgid "Additional info:"
|
||||
msgstr "Info adicional:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:139
|
||||
#: bookwyrm/templates/settings/site.html:152
|
||||
msgid "Allow registration"
|
||||
msgstr "Abrir rexistro"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:145
|
||||
#: bookwyrm/templates/settings/site.html:158
|
||||
msgid "Require users to confirm email address"
|
||||
msgstr "Requerir que a usuaria confirme o enderezo de email"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:147
|
||||
#: bookwyrm/templates/settings/site.html:160
|
||||
msgid "(Recommended if registration is open)"
|
||||
msgstr "(Recomendable se o rexistro está aberto)"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:152
|
||||
#: bookwyrm/templates/settings/site.html:165
|
||||
msgid "Allow invite requests"
|
||||
msgstr "Permitir solicitudes de convite"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:158
|
||||
#: bookwyrm/templates/settings/site.html:171
|
||||
msgid "Set a question for invite requests"
|
||||
msgstr "Escribe a pregunta para as solicitudes de convite"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:163
|
||||
#: bookwyrm/templates/settings/site.html:176
|
||||
msgid "Question:"
|
||||
msgstr "Pregunta:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:168
|
||||
#: bookwyrm/templates/settings/site.html:181
|
||||
msgid "Registration closed text:"
|
||||
msgstr "Texto se o rexistro está pechado:"
|
||||
|
||||
#: bookwyrm/templates/settings/site.html:172
|
||||
#: bookwyrm/templates/settings/site.html:185
|
||||
msgid "Invite request text:"
|
||||
msgstr "Texto para a solicitude do convite:"
|
||||
|
||||
|
@ -5712,6 +5774,19 @@ msgstr "Non seguir"
|
|||
msgid "Accept"
|
||||
msgstr "Aceptar"
|
||||
|
||||
#: bookwyrm/templates/snippets/footer.html:16
|
||||
msgid "Documentation"
|
||||
msgstr "Documentación"
|
||||
|
||||
#: bookwyrm/templates/snippets/footer.html:42
|
||||
#, python-format
|
||||
msgid "Support %(site_name)s on <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
msgstr "Axuda a %(site_name)s en <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
|
||||
|
||||
#: bookwyrm/templates/snippets/footer.html:49
|
||||
msgid "BookWyrm's source code is freely available. You can contribute or report issues on <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
msgstr "O código fonte de BookWyrm é público. Podes colaborar ou informar de problemas en <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
|
||||
|
||||
#: bookwyrm/templates/snippets/form_rate_stars.html:20
|
||||
#: bookwyrm/templates/snippets/stars.html:13
|
||||
msgid "No rating"
|
||||
|
@ -5858,7 +5933,7 @@ msgstr "Deixar de ler \"<em>%(book_title)s</em>\""
|
|||
#: bookwyrm/templates/snippets/shelf_selector.html:54
|
||||
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:21
|
||||
msgid "Stopped reading"
|
||||
msgstr "Deixei de ler"
|
||||
msgstr "Abandonados"
|
||||
|
||||
#: bookwyrm/templates/snippets/reading_modals/want_to_read_modal.html:6
|
||||
#, python-format
|
||||
|
@ -6199,11 +6274,11 @@ msgstr "Obxectivo de Lectura para %(current_year)s"
|
|||
msgid "User Activity"
|
||||
msgstr "Actividade da usuaria"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:70
|
||||
#: bookwyrm/templates/user/user.html:71
|
||||
msgid "RSS feed"
|
||||
msgstr "Fonte RSS"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:81
|
||||
#: bookwyrm/templates/user/user.html:83
|
||||
msgid "No activities yet!"
|
||||
msgstr "Sen actividade!"
|
||||
|
||||
|
@ -6252,10 +6327,6 @@ msgstr "O ficheiro supera o tamaño máximo: 10MB"
|
|||
msgid "%(title)s: %(subtitle)s"
|
||||
msgstr "%(title)s: %(subtitle)s"
|
||||
|
||||
#: bookwyrm/views/imports/import_data.py:86
|
||||
msgid "Not a valid csv file"
|
||||
msgstr "Non é un ficheiro csv válido"
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:34
|
||||
#, python-brace-format
|
||||
msgid "Status updates from {obj.display_name}"
|
||||
|
|
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue