Merge branch 'main' into production

This commit is contained in:
Mouse Reeve 2021-12-14 19:01:49 -08:00
commit bdf617d005
41 changed files with 1806 additions and 690 deletions

View file

@ -254,8 +254,12 @@ def get_data(url, params=None, timeout=10):
resp = requests.get(
url,
params=params,
headers={
"Accept": "application/json; charset=utf-8",
headers={ # pylint: disable=line-too-long
"Accept": (
"application/activity+json,"
' application/ld+json; profile="https://www.w3.org/ns/activitystreams",'
" application/json; charset=utf-8"
),
"User-Agent": settings.USER_AGENT,
},
timeout=timeout,

View file

@ -0,0 +1,29 @@
# Generated by Django 3.2.5 on 2021-12-04 10:55
from django.db import migrations, models
import uuid
def gen_uuid(apps, schema_editor):
"""sets an unique UUID for embed_key"""
book_lists = apps.get_model("bookwyrm", "List")
db_alias = schema_editor.connection.alias
for book_list in book_lists.objects.using(db_alias).all():
book_list.embed_key = uuid.uuid4()
book_list.save(broadcast=False)
class Migration(migrations.Migration):
dependencies = [
("bookwyrm", "0119_user_feed_status_types"),
]
operations = [
migrations.AddField(
model_name="list",
name="embed_key",
field=models.UUIDField(editable=False, null=True, unique=True),
),
migrations.RunPython(gen_uuid, reverse_code=migrations.RunPython.noop),
]

View file

@ -73,7 +73,7 @@ class GroupMember(models.Model):
)
).exists():
raise IntegrityError()
# accepts and requests are handled by the GroupInvitation model
# accepts and requests are handled by the GroupMemberInvitation model
super().save(*args, **kwargs)
@classmethod
@ -150,31 +150,30 @@ class GroupMemberInvitation(models.Model):
notification_type=notification_type,
)
@transaction.atomic
def accept(self):
"""turn this request into the real deal"""
GroupMember.from_request(self)
with transaction.atomic():
GroupMember.from_request(self)
model = apps.get_model("bookwyrm.Notification", require_ready=True)
# tell the group owner
model.objects.create(
user=self.group.user,
related_user=self.user,
related_group=self.group,
notification_type="ACCEPT",
)
model = apps.get_model("bookwyrm.Notification", require_ready=True)
# tell the group owner
model.objects.create(
user=self.group.user,
related_user=self.user,
related_group=self.group,
notification_type="ACCEPT",
)
# let the other members know about it
for membership in self.group.memberships.all():
member = membership.user
if member not in (self.user, self.group.user):
model.objects.create(
user=member,
related_user=self.user,
related_group=self.group,
notification_type="JOIN",
)
# let the other members know about it
for membership in self.group.memberships.all():
member = membership.user
if member not in (self.user, self.group.user):
model.objects.create(
user=member,
related_user=self.user,
related_group=self.group,
notification_type="JOIN",
)
def reject(self):
"""generate a Reject for this membership request"""

View file

@ -1,4 +1,6 @@
""" make a list of books!! """
import uuid
from django.apps import apps
from django.db import models
from django.db.models import Q
@ -43,6 +45,7 @@ class List(OrderedCollectionMixin, BookWyrmModel):
through="ListItem",
through_fields=("book_list", "book"),
)
embed_key = models.UUIDField(unique=True, null=True, editable=False)
activity_serializer = activitypub.BookList
def get_remote_id(self):
@ -105,6 +108,12 @@ class List(OrderedCollectionMixin, BookWyrmModel):
group=None, curation="closed"
)
def save(self, *args, **kwargs):
"""on save, update embed_key and avoid clash with existing code"""
if not self.embed_key:
self.embed_key = uuid.uuid4()
return super().save(*args, **kwargs)
class ListItem(CollectionItemMixin, BookWyrmModel):
"""ok"""

View file

@ -20,6 +20,10 @@ body {
overflow: visible;
}
.card.has-border {
border: 1px solid #eee;
}
.scroll-x {
overflow: hidden;
overflow-x: auto;

View file

@ -66,6 +66,9 @@ let BookWyrm = new class {
document.querySelectorAll('input[type="file"]').forEach(
bookwyrm.disableIfTooLarge.bind(bookwyrm)
);
document.querySelectorAll('[data-copytext]').forEach(
bookwyrm.copyText.bind(bookwyrm)
);
});
}
@ -445,4 +448,38 @@ let BookWyrm = new class {
parent.appendChild(label)
parent.appendChild(input)
}
/**
* Set up a "click-to-copy" component from a textarea element
* with `data-copytext`, `data-copytext-label`, `data-copytext-success`
* attributes.
*
* @param {object} node - DOM node of the text container
* @return {undefined}
*/
copyText(textareaEl) {
const text = textareaEl.textContent;
const copyButtonEl = document.createElement('button');
copyButtonEl.textContent = textareaEl.dataset.copytextLabel;
copyButtonEl.classList.add(
"mt-2",
"button",
"is-small",
"is-fullwidth",
"is-primary",
"is-light"
);
copyButtonEl.addEventListener('click', () => {
navigator.clipboard.writeText(text).then(function() {
textareaEl.classList.add('is-success');
copyButtonEl.classList.replace('is-primary', 'is-success');
copyButtonEl.textContent = textareaEl.dataset.copytextSuccess;
});
});
textareaEl.parentNode.appendChild(copyButtonEl)
}
}();

View file

@ -0,0 +1,53 @@
{% load layout %}
{% load i18n %}
{% load static %}
<!DOCTYPE html>
<html lang="{% get_lang %}">
<head>
<title>{% block title %}BookWyrm{% endblock %} - {{ site.name }}</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="{% static "css/vendor/bulma.min.css" %}">
<link rel="stylesheet" href="{% static "css/vendor/icons.css" %}">
<link rel="stylesheet" href="{% static "css/bookwyrm.css" %}">
<base target="_blank">
<link rel="shortcut icon" type="image/x-icon" href="{% if site.favicon %}{% get_media_prefix %}{{ site.favicon }}{% else %}{% static "images/favicon.ico" %}{% endif %}">
</head>
<body>
<header class="section py-3">
<a href="/" class="is-flex is-align-items-center">
<img class="image logo is-flex-shrink-0" style="height: 32px" src="{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static "images/logo-small.png" %}{% endif %}" alt="{% blocktrans with site_name=site.name %}{{ site_name }} home page{% endblocktrans %}">
<span class="title is-5 ml-2">{{ site.name }}</span>
</a>
</header>
<main class="section py-3">
{% block content %}
{% endblock %}
</main>
<footer class="section py-3">
<p>
<a href="{% url 'about' %}">
{% blocktrans with site_name=site.name %}About {{ site_name }}{% endblocktrans %}
</a>
</p>
{% if site.admin_email %}
<p>
<a href="mailto:{{ site.admin_email }}">
{% trans "Contact site admin" %}
</a>
</p>
{% endif %}
<p>
<a href="https://joinbookwyrm.com/">
{% trans "Join Bookwyrm" %}
</a>
</p>
</footer>
{% block scripts %}{% endblock %}
</body>
</html>

View file

@ -34,7 +34,7 @@
<div class="container">
<div class="navbar-brand">
<a class="navbar-item" href="/">
<img class="image logo" src="{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static "images/logo-small.png" %}{% endif %}" alt="Home page">
<img class="image logo" src="{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static "images/logo-small.png" %}{% endif %}" alt="{% blocktrans with site_name=site.name %}{{ site_name }} home page{% endblocktrans %}">
</a>
<form class="navbar-item column" action="{% url 'search' %}">
<div class="field has-addons">

View file

@ -0,0 +1,59 @@
{% extends 'embed-layout.html' %}
{% load i18n %}
{% load bookwyrm_tags %}
{% load bookwyrm_group_tags %}
{% load markdown %}
{% block title %}{% blocktrans with list_name=list.name owner=list.user.display_name %}{{ list_name }}, a list by {{owner}}{% endblocktrans %}{% endblock title %}
{% block content %}
<div class="mt-3">
<h1 class="title is-4">
{{ list.name }}
<span class="subtitle">{% include 'snippets/privacy-icons.html' with item=list %}</span>
</h1>
<p class="subtitle is-size-6">
{% include 'lists/created_text.html' with list=list %}
{% blocktrans with site_name=site.name %}on <a href="/">{{ site_name }}</a>{% endblocktrans %}
</p>
<div class="block content">
{% include 'snippets/trimmed_text.html' with full=list.description %}
</div>
<section>
{% if not items.object_list.exists %}
<p>{% trans "This list is currently empty" %}</p>
{% else %}
<ol start="{{ items.start_index }}" class="ordered-list">
{% for item in items %}
{% with book=item.book %}
<li class="mb-5 card is-shadowless has-border">
<div class="card-content p-0 mb-0 columns is-gapless is-mobile">
<div class="column is-3-mobile is-2-tablet is-cover align to-t">
<a href="{{ item.book.local_path }}" aria-hidden="true">
{% include 'snippets/book_cover.html' with cover_class='is-w-auto is-h-m-tablet is-align-items-flex-start' size='medium' %}
</a>
</div>
<div class="column mx-3 my-2">
<h2 class="title is-6 mb-1">
{% include 'snippets/book_titleby.html' %}
</h2>
<p>
{% include 'snippets/stars.html' with rating=item.book|rating:request.user %}
</p>
<div>
{{ book|book_description|to_markdown|default:""|safe|truncatewords_html:20 }}
</div>
</div>
</div>
</li>
{% endwith %}
{% endfor %}
</ol>
{% endif %}
{% include "snippets/pagination.html" with page=items %}
</section>
</div>
{% endblock %}

View file

@ -186,6 +186,13 @@
{% endfor %}
{% endif %}
{% endif %}
<div>
<h2 class="title is-5 mt-6" id="embed-label">
{% trans "Embed this list on a website" %}
</h2>
<textarea readonly class="textarea is-small" aria-labelledby="embed-label" data-copytext data-copytext-label="{% trans 'Copy embed code' %}" data-copytext-success="{% trans 'Copied!' %}"><iframe style="border-width:0;" id="bookwyrm_list_embed" width="400" height="600" title="{% blocktrans with list_name=list.name site_name=site.name owner=list.user.display_name %}{{ list_name }}, a list by {{owner}} on {{ site_name }}{% endblocktrans %}" src="{{ embed_url }}"></iframe></textarea>
</div>
</section>
</div>
{% endblock %}

View file

@ -1,5 +1,7 @@
""" testing models """
from dateutil.parser import parse
from imagekit.models import ImageSpecField
from django.test import TestCase
from django.utils import timezone
@ -26,11 +28,22 @@ class Book(TestCase):
def test_remote_id(self):
"""fanciness with remote/origin ids"""
remote_id = "https://%s/book/%d" % (settings.DOMAIN, self.work.id)
remote_id = f"https://{settings.DOMAIN}/book/{self.work.id}"
self.assertEqual(self.work.get_remote_id(), remote_id)
self.assertEqual(self.work.remote_id, remote_id)
def test_create_book(self):
def test_generated_links(self):
"""links produced from identifiers"""
book = models.Edition.objects.create(
title="ExEd",
parent_work=self.work,
openlibrary_key="OL123M",
inventaire_id="isbn:123",
)
self.assertEqual(book.openlibrary_link, "https://openlibrary.org/books/OL123M")
self.assertEqual(book.inventaire_link, "https://inventaire.io/entity/isbn:123")
def test_create_book_invalid(self):
"""you shouldn't be able to create Books (only editions and works)"""
self.assertRaises(ValueError, models.Book.objects.create, title="Invalid Book")

View file

@ -2,7 +2,7 @@
from unittest.mock import patch
from django.test import TestCase
from bookwyrm import models, settings
from bookwyrm import models
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async")
@ -76,7 +76,8 @@ class Group(TestCase):
models.GroupMember.objects.create(group=self.public_group, user=self.capybara)
def test_group_members_can_see_private_groups(self, _):
"""direct privacy group should not be excluded from group listings for group members viewing"""
"""direct privacy group should not be excluded from group listings for group
members viewing"""
rat_groups = models.Group.privacy_filter(self.rat).all()
badger_groups = models.Group.privacy_filter(self.badger).all()
@ -85,7 +86,8 @@ class Group(TestCase):
self.assertTrue(self.private_group in badger_groups)
def test_group_members_can_see_followers_only_lists(self, _):
"""follower-only group booklists should not be excluded from group booklist listing for group members who do not follower list owner"""
"""follower-only group booklists should not be excluded from group booklist
listing for group members who do not follower list owner"""
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
followers_list = models.List.objects.create(
@ -105,7 +107,8 @@ class Group(TestCase):
self.assertTrue(followers_list in capybara_lists)
def test_group_members_can_see_private_lists(self, _):
"""private group booklists should not be excluded from group booklist listing for group members"""
"""private group booklists should not be excluded from group booklist listing
for group members"""
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):

View file

@ -1,6 +1,7 @@
""" testing models """
from unittest.mock import patch
from django.test import TestCase
from uuid import UUID
from bookwyrm import models, settings
@ -80,3 +81,12 @@ class List(TestCase):
self.assertEqual(item.book_list.privacy, "public")
self.assertEqual(item.privacy, "direct")
self.assertEqual(item.recipients, [])
def test_embed_key(self, _):
"""embed_key should never be empty"""
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
book_list = models.List.objects.create(
name="Test List", user=self.local_user
)
self.assertIsInstance(book_list.embed_key, UUID)

View file

@ -231,6 +231,32 @@ class BookViews(TestCase):
views.update_book_from_remote(request, self.book.id, "openlibrary.org")
self.assertEqual(mock.call_count, 1)
def test_resolve_book(self):
"""load a book from search results"""
models.Connector.objects.create(
identifier="openlibrary.org",
name="OpenLibrary",
connector_file="openlibrary",
base_url="https://openlibrary.org",
books_url="https://openlibrary.org",
covers_url="https://covers.openlibrary.org",
search_url="https://openlibrary.org/search?q=",
isbn_search_url="https://openlibrary.org/isbn",
)
request = self.factory.post(
"", {"remote_id": "https://openlibrary.org/book/123"}
)
request.user = self.local_user
with patch(
"bookwyrm.connectors.openlibrary.Connector.get_or_create_book"
) as mock:
mock.return_value = self.book
result = views.resolve_book(request)
self.assertEqual(mock.call_count, 1)
self.assertEqual(mock.call_args[0][0], "https://openlibrary.org/book/123")
self.assertEqual(result.status_code, 302)
def _setup_cover_url():
"""creates cover url mock"""

View file

@ -1,13 +1,14 @@
""" test for app action functionality """
import pathlib
from unittest.mock import patch
from django.core.files.uploadedfile import SimpleUploadedFile
from django.template.response import TemplateResponse
from django.test import TestCase
from django.test.client import RequestFactory
from bookwyrm.tests.validate_html import validate_html
from bookwyrm import forms, models, views
from bookwyrm.tests.validate_html import validate_html
class ImportViews(TestCase):
@ -44,15 +45,29 @@ class ImportViews(TestCase):
import_job = models.ImportJob.objects.create(user=self.local_user, mappings={})
request = self.factory.get("")
request.user = self.local_user
with patch("bookwyrm.tasks.app.AsyncResult") as async_result:
async_result.return_value = []
result = view(request, import_job.id)
result = view(request, import_job.id)
self.assertIsInstance(result, TemplateResponse)
validate_html(result.render())
self.assertEqual(result.status_code, 200)
def test_import_status_reformat(self):
"""there are so many views, this just makes sure it LOADS"""
view = views.ImportStatus.as_view()
import_job = models.ImportJob.objects.create(user=self.local_user, mappings={})
request = self.factory.post("")
request.user = self.local_user
with patch(
"bookwyrm.importers.goodreads_import.GoodreadsImporter.update_legacy_job"
) as mock:
result = view(request, import_job.id)
self.assertEqual(mock.call_args[0][0], import_job)
self.assertEqual(result.status_code, 302)
def test_start_import(self):
"""retry failed items"""
"""start a job"""
view = views.Import.as_view()
form = forms.ImportForm()
form.data["source"] = "Goodreads"
@ -74,3 +89,19 @@ class ImportViews(TestCase):
job = models.ImportJob.objects.get()
self.assertFalse(job.include_reviews)
self.assertEqual(job.privacy, "public")
def test_retry_item(self):
"""try again on a single row"""
job = models.ImportJob.objects.create(user=self.local_user, mappings={})
item = models.ImportItem.objects.create(
index=0,
job=job,
fail_reason="no match",
data={},
normalized_data={},
)
request = self.factory.post("")
request.user = self.local_user
with patch("bookwyrm.importers.importer.import_item_task.delay") as mock:
views.retry_item(request, job.id, item.id)
self.assertEqual(mock.call_count, 1)

View file

@ -1,12 +1,11 @@
""" test for app action functionality """
from unittest.mock import patch
from django.contrib.auth import decorators
from django.template.response import TemplateResponse
from django.test import TestCase
from django.test.client import RequestFactory
from bookwyrm import models, views, forms
from bookwyrm import models, views
from bookwyrm.tests.validate_html import validate_html
@ -27,16 +26,23 @@ class GroupViews(TestCase):
local=True,
localname="mouse",
)
self.rat = models.User.objects.create_user(
"rat@local.com",
"rat@rat.rat",
"password",
local=True,
localname="rat",
)
self.testgroup = models.Group.objects.create(
name="Test Group",
description="Initial description",
user=self.local_user,
privacy="public",
)
self.membership = models.GroupMember.objects.create(
group=self.testgroup, user=self.local_user
)
self.testgroup = models.Group.objects.create(
name="Test Group",
description="Initial description",
user=self.local_user,
privacy="public",
)
self.membership = models.GroupMember.objects.create(
group=self.testgroup, user=self.local_user
)
models.SiteSettings.objects.create()
@ -98,7 +104,6 @@ class GroupViews(TestCase):
def test_group_edit(self, _):
"""test editing a "group" database entry"""
view = views.Group.as_view()
request = self.factory.post(
"",
@ -117,3 +122,137 @@ class GroupViews(TestCase):
self.assertEqual(self.testgroup.name, "Updated Group name")
self.assertEqual(self.testgroup.description, "wow")
self.assertEqual(self.testgroup.privacy, "direct")
def test_delete_group(self, _):
"""delete a group"""
request = self.factory.post("")
request.user = self.local_user
views.delete_group(request, self.testgroup.id)
self.assertFalse(models.Group.objects.exists())
def test_invite_member(self, _):
"""invite a member to a group"""
request = self.factory.post(
"",
{
"group": self.testgroup.id,
"user": self.rat.localname,
},
)
request.user = self.local_user
result = views.invite_member(request)
self.assertEqual(result.status_code, 302)
invite = models.GroupMemberInvitation.objects.get()
self.assertEqual(invite.user, self.rat)
self.assertEqual(invite.group, self.testgroup)
def test_invite_member_twice(self, _):
"""invite a member to a group again"""
request = self.factory.post(
"",
{
"group": self.testgroup.id,
"user": self.rat.localname,
},
)
request.user = self.local_user
result = views.invite_member(request)
self.assertEqual(result.status_code, 302)
result = views.invite_member(request)
self.assertEqual(result.status_code, 302)
def test_remove_member_denied(self, _):
"""remove member"""
request = self.factory.post(
"",
{
"group": self.testgroup.id,
"user": self.local_user.localname,
},
)
request.user = self.local_user
result = views.remove_member(request)
self.assertEqual(result.status_code, 400)
def test_remove_member_non_member(self, _):
"""remove member but wait, that's not a member"""
request = self.factory.post(
"",
{
"group": self.testgroup.id,
"user": self.rat.localname,
},
)
request.user = self.local_user
result = views.remove_member(request)
# nothing happens
self.assertEqual(result.status_code, 302)
def test_remove_member_invited(self, _):
"""remove an invited member"""
models.GroupMemberInvitation.objects.create(
user=self.rat,
group=self.testgroup,
)
request = self.factory.post(
"",
{
"group": self.testgroup.id,
"user": self.rat.localname,
},
)
request.user = self.local_user
result = views.remove_member(request)
self.assertEqual(result.status_code, 302)
self.assertFalse(models.GroupMemberInvitation.objects.exists())
def test_remove_member_existing_member(self, _):
"""remove an invited member"""
models.GroupMember.objects.create(
user=self.rat,
group=self.testgroup,
)
request = self.factory.post(
"",
{
"group": self.testgroup.id,
"user": self.rat.localname,
},
)
request.user = self.local_user
result = views.remove_member(request)
self.assertEqual(result.status_code, 302)
self.assertEqual(models.GroupMember.objects.count(), 1)
self.assertEqual(models.GroupMember.objects.first().user, self.local_user)
notification = models.Notification.objects.get()
self.assertEqual(notification.user, self.rat)
self.assertEqual(notification.related_group, self.testgroup)
self.assertEqual(notification.notification_type, "REMOVE")
def test_accept_membership(self, _):
"""accept an invite"""
models.GroupMemberInvitation.objects.create(
user=self.rat,
group=self.testgroup,
)
request = self.factory.post("", {"group": self.testgroup.id})
request.user = self.rat
views.accept_membership(request)
self.assertFalse(models.GroupMemberInvitation.objects.exists())
self.assertTrue(self.rat in [m.user for m in self.testgroup.memberships.all()])
def test_reject_membership(self, _):
"""reject an invite"""
models.GroupMemberInvitation.objects.create(
user=self.rat,
group=self.testgroup,
)
request = self.factory.post("", {"group": self.testgroup.id})
request.user = self.rat
views.reject_membership(request)
self.testgroup.refresh_from_db()
self.assertFalse(models.GroupMemberInvitation.objects.exists())
self.assertFalse(self.rat in [m.user for m in self.testgroup.memberships.all()])

View file

@ -3,6 +3,7 @@ import json
from unittest.mock import patch
from django.contrib.auth.models import AnonymousUser
from django.http.response import Http404
from django.template.response import TemplateResponse
from django.test import TestCase
from django.test.client import RequestFactory
@ -385,3 +386,46 @@ class ListViews(TestCase):
result = view(request, self.local_user.username)
self.assertEqual(result.status_code, 302)
def test_embed_call_without_key(self):
"""there are so many views, this just makes sure it DOESNT load"""
view = views.unsafe_embed_list
request = self.factory.get("")
request.user = self.anonymous_user
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
models.ListItem.objects.create(
book_list=self.list,
user=self.local_user,
book=self.book,
approved=True,
order=1,
)
with patch("bookwyrm.views.list.is_api_request") as is_api:
is_api.return_value = False
with self.assertRaises(Http404):
result = view(request, self.list.id, "")
def test_embed_call_with_key(self):
"""there are so many views, this just makes sure it LOADS"""
view = views.unsafe_embed_list
request = self.factory.get("")
request.user = self.anonymous_user
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
models.ListItem.objects.create(
book_list=self.list,
user=self.local_user,
book=self.book,
approved=True,
order=1,
)
embed_key = str(self.list.embed_key.hex)
with patch("bookwyrm.views.list.is_api_request") as is_api:
is_api.return_value = False
result = view(request, self.list.id, embed_key)
self.assertIsInstance(result, TemplateResponse)
result.render()
self.assertEqual(result.status_code, 200)

View file

@ -51,6 +51,11 @@ class UserViews(TestCase):
def test_user_page(self):
"""there are so many views, this just makes sure it LOADS"""
# extras that are rendered on the user page
models.AnnualGoal.objects.create(
user=self.local_user, goal=12, privacy="followers"
)
view = views.User.as_view()
request = self.factory.get("")
request.user = self.local_user
@ -104,6 +109,18 @@ class UserViews(TestCase):
self.assertIsInstance(result, ActivitypubResponse)
self.assertEqual(result.status_code, 200)
def test_followers_page_anonymous(self):
"""there are so many views, this just makes sure it LOADS"""
view = views.Followers.as_view()
request = self.factory.get("")
request.user = self.anonymous_user
with patch("bookwyrm.views.user.is_api_request") as is_api:
is_api.return_value = False
result = view(request, "mouse")
self.assertIsInstance(result, TemplateResponse)
validate_html(result.render())
self.assertEqual(result.status_code, 200)
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
@patch("bookwyrm.activitystreams.populate_stream_task.delay")
def test_followers_page_blocked(self, *_):
@ -135,6 +152,18 @@ class UserViews(TestCase):
self.assertIsInstance(result, ActivitypubResponse)
self.assertEqual(result.status_code, 200)
def test_following_page_anonymous(self):
"""there are so many views, this just makes sure it LOADS"""
view = views.Following.as_view()
request = self.factory.get("")
request.user = self.anonymous_user
with patch("bookwyrm.views.user.is_api_request") as is_api:
is_api.return_value = False
result = view(request, "mouse")
self.assertIsInstance(result, TemplateResponse)
validate_html(result.render())
self.assertEqual(result.status_code, 200)
def test_following_page_blocked(self):
"""there are so many views, this just makes sure it LOADS"""
view = views.Following.as_view()
@ -145,3 +174,15 @@ class UserViews(TestCase):
is_api.return_value = False
with self.assertRaises(Http404):
view(request, "rat")
def test_hide_suggestions(self):
"""update suggestions settings"""
self.assertTrue(self.local_user.show_suggested_users)
request = self.factory.post("")
request.user = self.local_user
result = views.hide_suggestions(request)
self.assertEqual(result.status_code, 302)
self.local_user.refresh_from_db()
self.assertFalse(self.local_user.show_suggested_users)

View file

@ -337,6 +337,11 @@ urlpatterns = [
),
re_path(r"^save-list/(?P<list_id>\d+)/?$", views.save_list, name="list-save"),
re_path(r"^unsave-list/(?P<list_id>\d+)/?$", views.unsave_list, name="list-unsave"),
re_path(
r"^list/(?P<list_id>\d+)/embed/(?P<list_key>[0-9a-f]+)?$",
views.unsafe_embed_list,
name="embed-list",
),
# User books
re_path(rf"{USER_PATH}/books/?$", views.Shelf.as_view(), name="user-shelves"),
re_path(

View file

@ -84,7 +84,7 @@ from .inbox import Inbox
from .interaction import Favorite, Unfavorite, Boost, Unboost
from .isbn import Isbn
from .list import Lists, SavedLists, List, Curate, UserLists
from .list import save_list, unsave_list, delete_list
from .list import save_list, unsave_list, delete_list, unsafe_embed_list
from .notifications import Notifications
from .outbox import Outbox
from .reading import create_readthrough, delete_readthrough, delete_progressupdate

View file

@ -179,21 +179,14 @@ def delete_group(request, group_id):
@login_required
def invite_member(request):
"""invite a member to the group"""
group = get_object_or_404(models.Group, id=request.POST.get("group"))
if not group:
return HttpResponseBadRequest()
user = get_user_from_username(request.user, request.POST["user"])
if not user:
return HttpResponseBadRequest()
if not group.user == request.user:
return HttpResponseBadRequest()
try:
models.GroupMemberInvitation.objects.create(user=user, group=group)
except IntegrityError:
pass
@ -204,17 +197,11 @@ def invite_member(request):
@login_required
def remove_member(request):
"""remove a member from the group"""
group = get_object_or_404(models.Group, id=request.POST.get("group"))
if not group:
return HttpResponseBadRequest()
user = get_user_from_username(request.user, request.POST["user"])
if not user:
return HttpResponseBadRequest()
# you can't be removed from your own group
if request.POST["user"] == group.user:
if user == group.user:
return HttpResponseBadRequest()
is_member = models.GroupMember.objects.filter(group=group, user=user).exists()
@ -234,11 +221,9 @@ def remove_member(request):
pass
if is_member:
try:
models.List.remove_from_group(group.user, user)
models.GroupMember.remove(group.user, user)
except IntegrityError:
pass
@ -271,18 +256,13 @@ def remove_member(request):
@login_required
def accept_membership(request):
"""accept an invitation to join a group"""
group = models.Group.objects.get(id=request.POST["group"])
if not group:
return HttpResponseBadRequest()
invite = models.GroupMemberInvitation.objects.get(group=group, user=request.user)
if not invite:
return HttpResponseBadRequest()
group = get_object_or_404(models.Group, id=request.POST.get("group"))
invite = get_object_or_404(
models.GroupMemberInvitation, group=group, user=request.user
)
try:
invite.accept()
except IntegrityError:
pass
@ -293,19 +273,10 @@ def accept_membership(request):
@login_required
def reject_membership(request):
"""reject an invitation to join a group"""
group = get_object_or_404(models.Group, id=request.POST.get("group"))
invite = get_object_or_404(
models.GroupMemberInvitation, group=group, user=request.user
)
group = models.Group.objects.get(id=request.POST["group"])
if not group:
return HttpResponseBadRequest()
invite = models.GroupMemberInvitation.objects.get(group=group, user=request.user)
if not invite:
return HttpResponseBadRequest()
try:
invite.reject()
except IntegrityError:
pass
invite.reject()
return redirect(request.user.local_path)

View file

@ -37,33 +37,32 @@ class Import(View):
def post(self, request):
"""ingest a goodreads csv"""
form = forms.ImportForm(request.POST, request.FILES)
if form.is_valid():
include_reviews = request.POST.get("include_reviews") == "on"
privacy = request.POST.get("privacy")
source = request.POST.get("source")
if not form.is_valid():
return HttpResponseBadRequest()
importer = None
if source == "LibraryThing":
importer = LibrarythingImporter()
elif source == "Storygraph":
importer = StorygraphImporter()
else:
# Default : Goodreads
importer = GoodreadsImporter()
include_reviews = request.POST.get("include_reviews") == "on"
privacy = request.POST.get("privacy")
source = request.POST.get("source")
try:
job = importer.create_job(
request.user,
TextIOWrapper(
request.FILES["csv_file"], encoding=importer.encoding
),
include_reviews,
privacy,
)
except (UnicodeDecodeError, ValueError, KeyError):
return HttpResponseBadRequest(_("Not a valid csv file"))
importer = None
if source == "LibraryThing":
importer = LibrarythingImporter()
elif source == "Storygraph":
importer = StorygraphImporter()
else:
# Default : Goodreads
importer = GoodreadsImporter()
importer.start_import(job)
try:
job = importer.create_job(
request.user,
TextIOWrapper(request.FILES["csv_file"], encoding=importer.encoding),
include_reviews,
privacy,
)
except (UnicodeDecodeError, ValueError, KeyError):
return HttpResponseBadRequest(_("Not a valid csv file"))
return redirect(f"/import/{job.id}")
return HttpResponseBadRequest()
importer.start_import(job)
return redirect(f"/import/{job.id}")

View file

@ -7,13 +7,14 @@ from django.core.paginator import Paginator
from django.db import IntegrityError, transaction
from django.db.models import Avg, Count, DecimalField, Q, Max
from django.db.models.functions import Coalesce
from django.http import HttpResponseBadRequest, HttpResponse
from django.http import HttpResponseBadRequest, HttpResponse, Http404
from django.shortcuts import get_object_or_404, redirect
from django.template.response import TemplateResponse
from django.urls import reverse
from django.utils.decorators import method_decorator
from django.views import View
from django.views.decorators.http import require_POST
from django.views.decorators.clickjacking import xframe_options_exempt
from bookwyrm import book_search, forms, models
from bookwyrm.activitypub import ActivitypubResponse
@ -167,6 +168,14 @@ class List(View):
][: 5 - len(suggestions)]
page = paginated.get_page(request.GET.get("page"))
embed_key = str(book_list.embed_key.hex)
embed_url = reverse("embed-list", args=[book_list.id, embed_key])
embed_url = request.build_absolute_uri(embed_url)
if request.GET:
embed_url = f"{embed_url}?{request.GET.urlencode()}"
data = {
"list": book_list,
"items": page,
@ -180,6 +189,7 @@ class List(View):
"sort_form": forms.SortListForm(
{"direction": direction, "sort_by": sort_by}
),
"embed_url": embed_url,
}
return TemplateResponse(request, "lists/list.html", data)
@ -200,6 +210,60 @@ class List(View):
return redirect(book_list.local_path)
class EmbedList(View):
"""embeded book list page"""
def get(self, request, list_id, list_key):
"""display a book list"""
book_list = get_object_or_404(models.List, id=list_id)
embed_key = str(book_list.embed_key.hex)
if list_key != embed_key:
raise Http404()
# sort_by shall be "order" unless a valid alternative is given
sort_by = request.GET.get("sort_by", "order")
if sort_by not in ("order", "title", "rating"):
sort_by = "order"
# direction shall be "ascending" unless a valid alternative is given
direction = request.GET.get("direction", "ascending")
if direction not in ("ascending", "descending"):
direction = "ascending"
directional_sort_by = {
"order": "order",
"title": "book__title",
"rating": "average_rating",
}[sort_by]
if direction == "descending":
directional_sort_by = "-" + directional_sort_by
items = book_list.listitem_set.prefetch_related("user", "book", "book__authors")
if sort_by == "rating":
items = items.annotate(
average_rating=Avg(
Coalesce("book__review__rating", 0.0),
output_field=DecimalField(),
)
)
items = items.filter(approved=True).order_by(directional_sort_by)
paginated = Paginator(items, PAGE_LENGTH)
page = paginated.get_page(request.GET.get("page"))
data = {
"list": book_list,
"items": page,
"page_range": paginated.get_elided_page_range(
page.number, on_each_side=2, on_ends=1
),
}
return TemplateResponse(request, "lists/embed-list.html", data)
class Curate(View):
"""approve or discard list suggestsions"""
@ -447,3 +511,11 @@ def normalize_book_list_ordering(book_list_id, start=0, add_offset=0):
if item.order != effective_order:
item.order = effective_order
item.save()
@xframe_options_exempt
def unsafe_embed_list(request, *args, **kwargs):
"""allows the EmbedList view to be loaded through unsafe iframe origins"""
embed_list_view = EmbedList.as_view()
return embed_list_view(request, *args, **kwargs)

View file

@ -34,11 +34,9 @@ class User(View):
shelves = user.shelf_set
is_self = request.user.id == user.id
if not is_self:
follower = user.followers.filter(id=request.user.id).exists()
if follower:
shelves = shelves.filter(privacy__in=["public", "followers"])
else:
shelves = shelves.filter(privacy="public")
shelves = models.Shelf.privacy_filter(
request.user, privacy_levels=["public", "followers"]
).filter(user=user)
for user_shelf in shelves.all():
if not user_shelf.books.count():
@ -146,25 +144,6 @@ def annotate_if_follows(user, queryset):
).order_by("-request_user_follows", "-created_date")
class Groups(View):
"""list of user's groups view"""
def get(self, request, username):
"""list of groups"""
user = get_user_from_username(request.user, username)
paginated = Paginator(
models.Group.memberships.filter(user=user).order_by("-created_date"),
PAGE_LENGTH,
)
data = {
"user": user,
"is_self": request.user.id == user.id,
"group_list": paginated.get_page(request.GET.get("page")),
}
return TemplateResponse(request, "user/groups.html", data)
@require_POST
@login_required
def hide_suggestions(request):

Binary file not shown.

View file

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-07 17:35+0000\n"
"PO-Revision-Date: 2021-12-07 18:25\n"
"POT-Creation-Date: 2021-12-08 15:40+0000\n"
"PO-Revision-Date: 2021-12-09 18:56\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: German\n"
"Language: de\n"
@ -101,23 +101,23 @@ msgstr "Moderator*in löschen"
msgid "Domain block"
msgstr "Domainsperrung"
#: bookwyrm/models/book.py:233
#: bookwyrm/models/book.py:243
msgid "Audiobook"
msgstr "Hörbuch"
#: bookwyrm/models/book.py:234
#: bookwyrm/models/book.py:244
msgid "eBook"
msgstr "E-Book"
#: bookwyrm/models/book.py:235
#: bookwyrm/models/book.py:245
msgid "Graphic novel"
msgstr "Graphic Novel"
#: bookwyrm/models/book.py:236
#: bookwyrm/models/book.py:246
msgid "Hardcover"
msgstr "Hardcover"
#: bookwyrm/models/book.py:237
#: bookwyrm/models/book.py:247
msgid "Paperback"
msgstr "Taschenbuch"
@ -153,7 +153,7 @@ msgstr "Benutzer*inname"
msgid "A user with that username already exists."
msgstr "Dieser Benutzer*inname ist bereits vergeben."
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:227
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:244
msgid "Reviews"
msgstr "Besprechungen"
@ -248,46 +248,61 @@ msgstr "Etwas ist schief gelaufen! Tut uns leid."
msgid "Edit Author"
msgstr "Autor*in bearbeiten"
#: bookwyrm/templates/author/author.html:35
#: bookwyrm/templates/author/author.html:40
msgid "Author details"
msgstr ""
#: bookwyrm/templates/author/author.html:44
#: bookwyrm/templates/author/edit_author.html:42
msgid "Aliases:"
msgstr "Alternative Namen:"
#: bookwyrm/templates/author/author.html:46
#: bookwyrm/templates/author/author.html:53
msgid "Born:"
msgstr "Geboren:"
#: bookwyrm/templates/author/author.html:53
#: bookwyrm/templates/author/author.html:60
msgid "Died:"
msgstr "Gestorben:"
#: bookwyrm/templates/author/author.html:62
#: bookwyrm/templates/author/author.html:70
msgid "External links"
msgstr ""
#: bookwyrm/templates/author/author.html:75
msgid "Wikipedia"
msgstr "Wikipedia"
#: bookwyrm/templates/author/author.html:70
#: bookwyrm/templates/author/author.html:83
msgid "View ISNI record"
msgstr "ISNI-Datensatz anzeigen"
#: bookwyrm/templates/author/author.html:78
#: bookwyrm/templates/book/book.html:94
#: bookwyrm/templates/author/author.html:88
#: bookwyrm/templates/author/sync_modal.html:5
#: bookwyrm/templates/book/book.html:93
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr ""
#: bookwyrm/templates/author/author.html:92
#: bookwyrm/templates/book/book.html:96
msgid "View on OpenLibrary"
msgstr "Auf OpenLibrary ansehen"
#: bookwyrm/templates/author/author.html:86
#: bookwyrm/templates/book/book.html:97
#: bookwyrm/templates/author/author.html:106
#: bookwyrm/templates/book/book.html:107
msgid "View on Inventaire"
msgstr "Auf Inventaire anzeigen"
#: bookwyrm/templates/author/author.html:94
#: bookwyrm/templates/author/author.html:121
msgid "View on LibraryThing"
msgstr "Auf LibraryThing anzeigen"
#: bookwyrm/templates/author/author.html:102
#: bookwyrm/templates/author/author.html:129
msgid "View on Goodreads"
msgstr "Auf Goodreads ansehen"
#: bookwyrm/templates/author/author.html:117
#: bookwyrm/templates/author/author.html:143
#, python-format
msgid "Books by %(name)s"
msgstr "Bücher von %(name)s"
@ -369,7 +384,7 @@ msgid "ISNI:"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:115
#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/book.html:157
#: bookwyrm/templates/book/edit/edit_book.html:121
#: bookwyrm/templates/book/readthrough.html:76
#: bookwyrm/templates/groups/form.html:24
@ -387,11 +402,13 @@ msgid "Save"
msgstr "Speichern"
#: bookwyrm/templates/author/edit_author.html:116
#: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:199
#: bookwyrm/templates/author/sync_modal.html:26
#: bookwyrm/templates/book/book.html:158 bookwyrm/templates/book/book.html:216
#: bookwyrm/templates/book/cover_modal.html:32
#: bookwyrm/templates/book/edit/edit_book.html:123
#: bookwyrm/templates/book/edit/edit_book.html:126
#: bookwyrm/templates/book/readthrough.html:77
#: bookwyrm/templates/book/sync_modal.html:26
#: bookwyrm/templates/groups/delete_group_modal.html:17
#: bookwyrm/templates/lists/delete_list_modal.html:17
#: bookwyrm/templates/settings/federation/instance.html:88
@ -400,6 +417,20 @@ msgstr "Speichern"
msgid "Cancel"
msgstr "Abbrechen"
#: bookwyrm/templates/author/sync_modal.html:15
#, python-format
msgid "Loading data will connect to <strong>%(source_name)s</strong> and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten."
msgstr ""
#: bookwyrm/templates/author/sync_modal.html:23
#: bookwyrm/templates/book/edit/edit_book.html:108
#: bookwyrm/templates/book/sync_modal.html:23
#: bookwyrm/templates/groups/members.html:16
#: bookwyrm/templates/landing/password_reset.html:42
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
msgid "Confirm"
msgstr "Bestätigen"
#: bookwyrm/templates/book/book.html:47
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:25
@ -420,74 +451,74 @@ msgstr "Titelbild hinzufügen"
msgid "Failed to load cover"
msgstr "Fehler beim Laden des Titelbilds"
#: bookwyrm/templates/book/book.html:117
#: bookwyrm/templates/book/book.html:134
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
msgstr[0] "(%(review_count)s Besprechung)"
msgstr[1] "(%(review_count)s Besprechungen)"
#: bookwyrm/templates/book/book.html:129
#: bookwyrm/templates/book/book.html:146
msgid "Add Description"
msgstr "Beschreibung hinzufügen"
#: bookwyrm/templates/book/book.html:136
#: bookwyrm/templates/book/book.html:153
#: bookwyrm/templates/book/edit/edit_book_form.html:39
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "Beschreibung:"
#: bookwyrm/templates/book/book.html:150
#: bookwyrm/templates/book/book.html:167
#, python-format
msgid "<a href=\"%(path)s/editions\">%(count)s editions</a>"
msgstr "<a href=\"%(path)s/editions\">%(count)s Ausgaben</a>"
#: bookwyrm/templates/book/book.html:158
#: bookwyrm/templates/book/book.html:175
msgid "You have shelved this edition in:"
msgstr ""
#: bookwyrm/templates/book/book.html:173
#: bookwyrm/templates/book/book.html:190
#, python-format
msgid "A <a href=\"%(book_path)s\">different edition</a> of this book is on your <a href=\"%(shelf_path)s\">%(shelf_name)s</a> shelf."
msgstr "Eine <a href=\"%(book_path)s\">andere Ausgabe</a> dieses Buches befindet sich in deinem <a href=\"%(shelf_path)s\">%(shelf_name)s</a> Regal."
#: bookwyrm/templates/book/book.html:184
#: bookwyrm/templates/book/book.html:201
msgid "Your reading activity"
msgstr "Deine Leseaktivität"
#: bookwyrm/templates/book/book.html:187
#: bookwyrm/templates/book/book.html:204
msgid "Add read dates"
msgstr "Lesedaten hinzufügen"
#: bookwyrm/templates/book/book.html:196
#: bookwyrm/templates/book/book.html:213
msgid "Create"
msgstr "Erstellen"
#: bookwyrm/templates/book/book.html:206
#: bookwyrm/templates/book/book.html:223
msgid "You don't have any reading activity for this book."
msgstr "Du hast keine Leseaktivität für dieses Buch."
#: bookwyrm/templates/book/book.html:232
#: bookwyrm/templates/book/book.html:249
msgid "Your reviews"
msgstr "Deine Besprechungen"
#: bookwyrm/templates/book/book.html:238
#: bookwyrm/templates/book/book.html:255
msgid "Your comments"
msgstr "Deine Kommentare"
#: bookwyrm/templates/book/book.html:244
#: bookwyrm/templates/book/book.html:261
msgid "Your quotes"
msgstr "Deine Zitate"
#: bookwyrm/templates/book/book.html:280
#: bookwyrm/templates/book/book.html:297
msgid "Subjects"
msgstr "Themen"
#: bookwyrm/templates/book/book.html:292
#: bookwyrm/templates/book/book.html:309
msgid "Places"
msgstr "Orte"
#: bookwyrm/templates/book/book.html:303 bookwyrm/templates/layout.html:75
#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@ -495,11 +526,11 @@ msgstr "Orte"
msgid "Lists"
msgstr "Listen"
#: bookwyrm/templates/book/book.html:314
#: bookwyrm/templates/book/book.html:331
msgid "Add to list"
msgstr "Zur Liste hinzufügen"
#: bookwyrm/templates/book/book.html:324
#: bookwyrm/templates/book/book.html:341
#: bookwyrm/templates/book/cover_modal.html:31
#: bookwyrm/templates/lists/list.html:182
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
@ -577,13 +608,6 @@ msgstr "Ist das eine Ausgabe eines vorhandenen Werkes?"
msgid "This is a new work"
msgstr "Dies ist ein neues Werk."
#: bookwyrm/templates/book/edit/edit_book.html:108
#: bookwyrm/templates/groups/members.html:16
#: bookwyrm/templates/landing/password_reset.html:42
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
msgid "Confirm"
msgstr "Bestätigen"
#: bookwyrm/templates/book/edit/edit_book.html:110
#: bookwyrm/templates/feed/status.html:21
msgid "Back"
@ -783,6 +807,11 @@ msgstr "Lesedaten bearbeiten"
msgid "Delete these read dates"
msgstr "Diese Lesedaten löschen"
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to <strong>%(source_name)s</strong> and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
msgstr ""
#: bookwyrm/templates/components/inline_form.html:8
#: bookwyrm/templates/components/modal.html:11
#: bookwyrm/templates/components/tooltip.html:7
@ -1099,6 +1128,25 @@ msgstr "Falls du dein Passwort gar nicht zurücksetzen wolltest, kannst du diese
msgid "Reset your %(site_name)s password"
msgstr "Passwort für %(site_name)s zurücksetzen"
#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:37
#, python-format
msgid "%(site_name)s home page"
msgstr ""
#: bookwyrm/templates/embed-layout.html:34
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr "Über %(site_name)s"
#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr "Administrator*in kontaktieren"
#: bookwyrm/templates/embed-layout.html:46
msgid "Join Bookwyrm"
msgstr ""
#: bookwyrm/templates/feed/direct_messages.html:8
#, python-format
msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
@ -1654,11 +1702,6 @@ msgstr ""
msgid "Contact your admin or <a href='https://github.com/bookwyrm-social/bookwyrm/issues'>open an issue</a> if you are seeing unexpected failed items."
msgstr ""
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr "Über %(site_name)s"
#: bookwyrm/templates/landing/about.html:10
#: bookwyrm/templates/landing/about.html:20
msgid "Code of Conduct"
@ -1830,10 +1873,6 @@ msgstr "Status veröffentlicht"
msgid "Error posting status"
msgstr "Fehler beim veröffentlichen des Status"
#: bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr "Administrator*in kontaktieren"
#: bookwyrm/templates/layout.html:238
msgid "Documentation"
msgstr "Handbuch"
@ -1900,6 +1939,21 @@ msgstr "Diese Liste löschen?"
msgid "Edit List"
msgstr "Liste bearbeiten"
#: bookwyrm/templates/lists/embed-list.html:7
#, python-format
msgid "%(list_name)s, a list by %(owner)s"
msgstr ""
#: bookwyrm/templates/lists/embed-list.html:17
#, python-format
msgid "on <a href=\"/\">%(site_name)s</a>"
msgstr ""
#: bookwyrm/templates/lists/embed-list.html:26
#: bookwyrm/templates/lists/list.html:29
msgid "This list is currently empty"
msgstr "Diese Liste ist momentan leer"
#: bookwyrm/templates/lists/form.html:19
msgid "List curation:"
msgstr "Listenkuratierung:"
@ -1965,10 +2019,6 @@ msgstr "Dein Buchvorschlag wurde dieser Liste hinzugefügt!"
msgid "You successfully added a book to this list!"
msgstr "Du hast ein Buch zu dieser Liste hinzugefügt!"
#: bookwyrm/templates/lists/list.html:29
msgid "This list is currently empty"
msgstr "Diese Liste ist momentan leer"
#: bookwyrm/templates/lists/list.html:67
#, python-format
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
@ -2021,6 +2071,23 @@ msgstr "Keine passenden Bücher zu „%(query)s“ gefunden"
msgid "Suggest"
msgstr "Vorschlagen"
#: bookwyrm/templates/lists/list.html:191
msgid "Embed this list on a website"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
msgid "Copy embed code"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
msgid "Copied!"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr ""
#: bookwyrm/templates/lists/list_items.html:15
msgid "Saved"
msgstr "Gespeichert"
@ -3387,6 +3454,7 @@ msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
msgstr "Veröffentlicht von <a href=\"%(user_path)s\">%(username)s</a>"
#: bookwyrm/templates/snippets/authors.html:22
#: bookwyrm/templates/snippets/trimmed_list.html:14
#, python-format
msgid "and %(remainder_count_display)s other"
msgid_plural "and %(remainder_count_display)s others"
@ -4072,7 +4140,7 @@ msgstr "Keine Follower*innen, denen du folgst"
msgid "File exceeds maximum size: 10MB"
msgstr "Datei überschreitet die maximale Größe von 10MB"
#: bookwyrm/templatetags/utilities.py:34
#: bookwyrm/templatetags/utilities.py:33
#, python-format
msgid "%(title)s: %(subtitle)s"
msgstr "%(title)s: %(subtitle)s"

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-07 22:16+0000\n"
"POT-Creation-Date: 2021-12-15 02:53+0000\n"
"PO-Revision-Date: 2021-02-28 17:19-0800\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: English <LL@li.org>\n"
@ -1129,6 +1129,25 @@ msgstr ""
msgid "Reset your %(site_name)s password"
msgstr ""
#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:37
#, python-format
msgid "%(site_name)s home page"
msgstr ""
#: bookwyrm/templates/embed-layout.html:34
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr ""
#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr ""
#: bookwyrm/templates/embed-layout.html:46
msgid "Join Bookwyrm"
msgstr ""
#: bookwyrm/templates/feed/direct_messages.html:8
#, python-format
msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
@ -1684,11 +1703,6 @@ msgstr ""
msgid "Contact your admin or <a href='https://github.com/bookwyrm-social/bookwyrm/issues'>open an issue</a> if you are seeing unexpected failed items."
msgstr ""
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr ""
#: bookwyrm/templates/landing/about.html:10
#: bookwyrm/templates/landing/about.html:20
msgid "Code of Conduct"
@ -1860,10 +1874,6 @@ msgstr ""
msgid "Error posting status"
msgstr ""
#: bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr ""
#: bookwyrm/templates/layout.html:238
msgid "Documentation"
msgstr ""
@ -1930,6 +1940,21 @@ msgstr ""
msgid "Edit List"
msgstr ""
#: bookwyrm/templates/lists/embed-list.html:7
#, python-format
msgid "%(list_name)s, a list by %(owner)s"
msgstr ""
#: bookwyrm/templates/lists/embed-list.html:17
#, python-format
msgid "on <a href=\"/\">%(site_name)s</a>"
msgstr ""
#: bookwyrm/templates/lists/embed-list.html:26
#: bookwyrm/templates/lists/list.html:29
msgid "This list is currently empty"
msgstr ""
#: bookwyrm/templates/lists/form.html:19
msgid "List curation:"
msgstr ""
@ -1995,10 +2020,6 @@ msgstr ""
msgid "You successfully added a book to this list!"
msgstr ""
#: bookwyrm/templates/lists/list.html:29
msgid "This list is currently empty"
msgstr ""
#: bookwyrm/templates/lists/list.html:67
#, python-format
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
@ -2051,6 +2072,23 @@ msgstr ""
msgid "Suggest"
msgstr ""
#: bookwyrm/templates/lists/list.html:191
msgid "Embed this list on a website"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
msgid "Copy embed code"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
msgid "Copied!"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr ""
#: bookwyrm/templates/lists/list_items.html:15
msgid "Saved"
msgstr ""

Binary file not shown.

View file

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-07 17:35+0000\n"
"PO-Revision-Date: 2021-12-07 18:25\n"
"POT-Creation-Date: 2021-12-08 15:40+0000\n"
"PO-Revision-Date: 2021-12-09 18:56\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Spanish\n"
"Language: es\n"
@ -101,23 +101,23 @@ msgstr "Eliminación de moderador"
msgid "Domain block"
msgstr "Bloqueo de dominio"
#: bookwyrm/models/book.py:233
#: bookwyrm/models/book.py:243
msgid "Audiobook"
msgstr "Audio libro"
#: bookwyrm/models/book.py:234
#: bookwyrm/models/book.py:244
msgid "eBook"
msgstr "Libro electrónico"
#: bookwyrm/models/book.py:235
#: bookwyrm/models/book.py:245
msgid "Graphic novel"
msgstr "Novela gráfica"
#: bookwyrm/models/book.py:236
#: bookwyrm/models/book.py:246
msgid "Hardcover"
msgstr "Tapa dura"
#: bookwyrm/models/book.py:237
#: bookwyrm/models/book.py:247
msgid "Paperback"
msgstr "Tapa blanda"
@ -153,7 +153,7 @@ msgstr "nombre de usuario"
msgid "A user with that username already exists."
msgstr "Ya existe un usuario con ese nombre."
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:227
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:244
msgid "Reviews"
msgstr "Reseñas"
@ -248,46 +248,61 @@ msgstr "¡Algo salió mal! Disculpa."
msgid "Edit Author"
msgstr "Editar Autor/Autora"
#: bookwyrm/templates/author/author.html:35
#: bookwyrm/templates/author/author.html:40
msgid "Author details"
msgstr "Detalles sobre el/la autor/a"
#: bookwyrm/templates/author/author.html:44
#: bookwyrm/templates/author/edit_author.html:42
msgid "Aliases:"
msgstr "Alias:"
#: bookwyrm/templates/author/author.html:46
#: bookwyrm/templates/author/author.html:53
msgid "Born:"
msgstr "Nacido:"
#: bookwyrm/templates/author/author.html:53
#: bookwyrm/templates/author/author.html:60
msgid "Died:"
msgstr "Muerto:"
#: bookwyrm/templates/author/author.html:62
#: bookwyrm/templates/author/author.html:70
msgid "External links"
msgstr ""
#: bookwyrm/templates/author/author.html:75
msgid "Wikipedia"
msgstr "Wikipedia"
#: bookwyrm/templates/author/author.html:70
#: bookwyrm/templates/author/author.html:83
msgid "View ISNI record"
msgstr "Ver registro ISNI"
#: bookwyrm/templates/author/author.html:78
#: bookwyrm/templates/book/book.html:94
#: bookwyrm/templates/author/author.html:88
#: bookwyrm/templates/author/sync_modal.html:5
#: bookwyrm/templates/book/book.html:93
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr ""
#: bookwyrm/templates/author/author.html:92
#: bookwyrm/templates/book/book.html:96
msgid "View on OpenLibrary"
msgstr "Ver en OpenLibrary"
#: bookwyrm/templates/author/author.html:86
#: bookwyrm/templates/book/book.html:97
#: bookwyrm/templates/author/author.html:106
#: bookwyrm/templates/book/book.html:107
msgid "View on Inventaire"
msgstr "Ver en Inventaire"
#: bookwyrm/templates/author/author.html:94
#: bookwyrm/templates/author/author.html:121
msgid "View on LibraryThing"
msgstr "Ver en LibraryThing"
#: bookwyrm/templates/author/author.html:102
#: bookwyrm/templates/author/author.html:129
msgid "View on Goodreads"
msgstr "Ver en Goodreads"
#: bookwyrm/templates/author/author.html:117
#: bookwyrm/templates/author/author.html:143
#, python-format
msgid "Books by %(name)s"
msgstr "Libros de %(name)s"
@ -369,7 +384,7 @@ msgid "ISNI:"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:115
#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/book.html:157
#: bookwyrm/templates/book/edit/edit_book.html:121
#: bookwyrm/templates/book/readthrough.html:76
#: bookwyrm/templates/groups/form.html:24
@ -387,11 +402,13 @@ msgid "Save"
msgstr "Guardar"
#: bookwyrm/templates/author/edit_author.html:116
#: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:199
#: bookwyrm/templates/author/sync_modal.html:26
#: bookwyrm/templates/book/book.html:158 bookwyrm/templates/book/book.html:216
#: bookwyrm/templates/book/cover_modal.html:32
#: bookwyrm/templates/book/edit/edit_book.html:123
#: bookwyrm/templates/book/edit/edit_book.html:126
#: bookwyrm/templates/book/readthrough.html:77
#: bookwyrm/templates/book/sync_modal.html:26
#: bookwyrm/templates/groups/delete_group_modal.html:17
#: bookwyrm/templates/lists/delete_list_modal.html:17
#: bookwyrm/templates/settings/federation/instance.html:88
@ -400,6 +417,20 @@ msgstr "Guardar"
msgid "Cancel"
msgstr "Cancelar"
#: bookwyrm/templates/author/sync_modal.html:15
#, python-format
msgid "Loading data will connect to <strong>%(source_name)s</strong> and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten."
msgstr ""
#: bookwyrm/templates/author/sync_modal.html:23
#: bookwyrm/templates/book/edit/edit_book.html:108
#: bookwyrm/templates/book/sync_modal.html:23
#: bookwyrm/templates/groups/members.html:16
#: bookwyrm/templates/landing/password_reset.html:42
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
msgid "Confirm"
msgstr "Confirmar"
#: bookwyrm/templates/book/book.html:47
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:25
@ -420,74 +451,74 @@ msgstr "Agregar portada"
msgid "Failed to load cover"
msgstr "No se pudo cargar la portada"
#: bookwyrm/templates/book/book.html:117
#: bookwyrm/templates/book/book.html:134
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
msgstr[0] "(%(review_count)s reseña)"
msgstr[1] "(%(review_count)s reseñas)"
#: bookwyrm/templates/book/book.html:129
#: bookwyrm/templates/book/book.html:146
msgid "Add Description"
msgstr "Agregar descripción"
#: bookwyrm/templates/book/book.html:136
#: bookwyrm/templates/book/book.html:153
#: bookwyrm/templates/book/edit/edit_book_form.html:39
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "Descripción:"
#: bookwyrm/templates/book/book.html:150
#: bookwyrm/templates/book/book.html:167
#, python-format
msgid "<a href=\"%(path)s/editions\">%(count)s editions</a>"
msgstr "<a href=\"%(path)s/editions\">%(count)s ediciones</a>"
#: bookwyrm/templates/book/book.html:158
#: bookwyrm/templates/book/book.html:175
msgid "You have shelved this edition in:"
msgstr "Has guardado esta edición en la estantería de:"
#: bookwyrm/templates/book/book.html:173
#: bookwyrm/templates/book/book.html:190
#, python-format
msgid "A <a href=\"%(book_path)s\">different edition</a> of this book is on your <a href=\"%(shelf_path)s\">%(shelf_name)s</a> shelf."
msgstr "Una <a href=\"%(book_path)s\">edición diferente</a> de este libro está en tu estantería <a href=\"%(shelf_path)s\">%(shelf_name)s</a>."
#: bookwyrm/templates/book/book.html:184
#: bookwyrm/templates/book/book.html:201
msgid "Your reading activity"
msgstr "Tu actividad de lectura"
#: bookwyrm/templates/book/book.html:187
#: bookwyrm/templates/book/book.html:204
msgid "Add read dates"
msgstr "Agregar fechas de lectura"
#: bookwyrm/templates/book/book.html:196
#: bookwyrm/templates/book/book.html:213
msgid "Create"
msgstr "Crear"
#: bookwyrm/templates/book/book.html:206
#: bookwyrm/templates/book/book.html:223
msgid "You don't have any reading activity for this book."
msgstr "No tienes ninguna actividad de lectura para este libro."
#: bookwyrm/templates/book/book.html:232
#: bookwyrm/templates/book/book.html:249
msgid "Your reviews"
msgstr "Tus reseñas"
#: bookwyrm/templates/book/book.html:238
#: bookwyrm/templates/book/book.html:255
msgid "Your comments"
msgstr "Tus comentarios"
#: bookwyrm/templates/book/book.html:244
#: bookwyrm/templates/book/book.html:261
msgid "Your quotes"
msgstr "Tus citas"
#: bookwyrm/templates/book/book.html:280
#: bookwyrm/templates/book/book.html:297
msgid "Subjects"
msgstr "Sujetos"
#: bookwyrm/templates/book/book.html:292
#: bookwyrm/templates/book/book.html:309
msgid "Places"
msgstr "Lugares"
#: bookwyrm/templates/book/book.html:303 bookwyrm/templates/layout.html:75
#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@ -495,11 +526,11 @@ msgstr "Lugares"
msgid "Lists"
msgstr "Listas"
#: bookwyrm/templates/book/book.html:314
#: bookwyrm/templates/book/book.html:331
msgid "Add to list"
msgstr "Agregar a lista"
#: bookwyrm/templates/book/book.html:324
#: bookwyrm/templates/book/book.html:341
#: bookwyrm/templates/book/cover_modal.html:31
#: bookwyrm/templates/lists/list.html:182
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
@ -577,13 +608,6 @@ msgstr "¿Es esta una edición de una obra ya existente?"
msgid "This is a new work"
msgstr "Esta es una obra nueva"
#: bookwyrm/templates/book/edit/edit_book.html:108
#: bookwyrm/templates/groups/members.html:16
#: bookwyrm/templates/landing/password_reset.html:42
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
msgid "Confirm"
msgstr "Confirmar"
#: bookwyrm/templates/book/edit/edit_book.html:110
#: bookwyrm/templates/feed/status.html:21
msgid "Back"
@ -783,6 +807,11 @@ msgstr "Editar fechas de lectura"
msgid "Delete these read dates"
msgstr "Eliminar estas fechas de lectura"
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to <strong>%(source_name)s</strong> and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
msgstr ""
#: bookwyrm/templates/components/inline_form.html:8
#: bookwyrm/templates/components/modal.html:11
#: bookwyrm/templates/components/tooltip.html:7
@ -1099,6 +1128,25 @@ 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:37
#, python-format
msgid "%(site_name)s home page"
msgstr ""
#: bookwyrm/templates/embed-layout.html:34
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr "Sobre %(site_name)s"
#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr "Comuníquese con el administrador del sitio"
#: bookwyrm/templates/embed-layout.html:46
msgid "Join Bookwyrm"
msgstr ""
#: bookwyrm/templates/feed/direct_messages.html:8
#, python-format
msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
@ -1654,11 +1702,6 @@ msgstr "BookWyrm ha sido actualizado con posterioridad a esta importación con u
msgid "Contact your admin or <a href='https://github.com/bookwyrm-social/bookwyrm/issues'>open an issue</a> if you are seeing unexpected failed items."
msgstr "Póngase en contacto con su administrador o <a href='https://github.com/bookwyrm-social/bookwyrm/issues'>cree una propuesta</a> si está viendo elementos fallidos inesperados."
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr "Sobre %(site_name)s"
#: bookwyrm/templates/landing/about.html:10
#: bookwyrm/templates/landing/about.html:20
msgid "Code of Conduct"
@ -1830,10 +1873,6 @@ msgstr "Estado publicado con éxito"
msgid "Error posting status"
msgstr "Error al publicar el estado"
#: bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr "Comuníquese con el administrador del sitio"
#: bookwyrm/templates/layout.html:238
msgid "Documentation"
msgstr "Documentación de Django"
@ -1900,6 +1939,21 @@ msgstr "¿Eliminar esta lista?"
msgid "Edit List"
msgstr "Editar lista"
#: bookwyrm/templates/lists/embed-list.html:7
#, python-format
msgid "%(list_name)s, a list by %(owner)s"
msgstr ""
#: bookwyrm/templates/lists/embed-list.html:17
#, python-format
msgid "on <a href=\"/\">%(site_name)s</a>"
msgstr ""
#: bookwyrm/templates/lists/embed-list.html:26
#: bookwyrm/templates/lists/list.html:29
msgid "This list is currently empty"
msgstr "Esta lista está vacia"
#: bookwyrm/templates/lists/form.html:19
msgid "List curation:"
msgstr "Enumerar lista de comisariado:"
@ -1965,10 +2019,6 @@ 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:29
msgid "This list is currently empty"
msgstr "Esta lista está vacia"
#: bookwyrm/templates/lists/list.html:67
#, python-format
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
@ -2021,6 +2071,23 @@ msgstr "No se encontró ningún libro correspondiente a la búsqueda: \"%(query)
msgid "Suggest"
msgstr "Sugerir"
#: bookwyrm/templates/lists/list.html:191
msgid "Embed this list on a website"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
msgid "Copy embed code"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
msgid "Copied!"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr ""
#: bookwyrm/templates/lists/list_items.html:15
msgid "Saved"
msgstr "Guardado"
@ -3387,6 +3454,7 @@ msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
msgstr "Publicado por <a href=\"%(user_path)s\">%(username)s</a>"
#: bookwyrm/templates/snippets/authors.html:22
#: bookwyrm/templates/snippets/trimmed_list.html:14
#, python-format
msgid "and %(remainder_count_display)s other"
msgid_plural "and %(remainder_count_display)s others"
@ -4072,7 +4140,7 @@ msgstr "Ningún seguidor que tu sigues"
msgid "File exceeds maximum size: 10MB"
msgstr "Archivo excede el tamaño máximo: 10MB"
#: bookwyrm/templatetags/utilities.py:34
#: bookwyrm/templatetags/utilities.py:33
#, python-format
msgid "%(title)s: %(subtitle)s"
msgstr "%(title)s: %(subtitle)s"

Binary file not shown.

View file

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-07 17:35+0000\n"
"PO-Revision-Date: 2021-12-07 19:43\n"
"POT-Creation-Date: 2021-12-08 15:40+0000\n"
"PO-Revision-Date: 2021-12-09 18:55\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: French\n"
"Language: fr\n"
@ -101,23 +101,23 @@ msgstr "Suppression du modérateur"
msgid "Domain block"
msgstr "Blocage de domaine"
#: bookwyrm/models/book.py:233
#: bookwyrm/models/book.py:243
msgid "Audiobook"
msgstr "Livre audio"
#: bookwyrm/models/book.py:234
#: bookwyrm/models/book.py:244
msgid "eBook"
msgstr "eBook"
#: bookwyrm/models/book.py:235
#: bookwyrm/models/book.py:245
msgid "Graphic novel"
msgstr "Roman Graphique"
#: bookwyrm/models/book.py:236
#: bookwyrm/models/book.py:246
msgid "Hardcover"
msgstr "Couverture rigide"
#: bookwyrm/models/book.py:237
#: bookwyrm/models/book.py:247
msgid "Paperback"
msgstr "Couverture souple"
@ -153,7 +153,7 @@ msgstr "nom du compte:"
msgid "A user with that username already exists."
msgstr "Ce nom est déjà associé à un compte."
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:227
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:244
msgid "Reviews"
msgstr "Critiques"
@ -248,46 +248,61 @@ msgstr "Une erreur sest produite; désolé!"
msgid "Edit Author"
msgstr "Modifier lauteur ou autrice"
#: bookwyrm/templates/author/author.html:35
#: bookwyrm/templates/author/author.html:40
msgid "Author details"
msgstr "Informations sur lauteur ou lautrice"
#: bookwyrm/templates/author/author.html:44
#: bookwyrm/templates/author/edit_author.html:42
msgid "Aliases:"
msgstr "Pseudonymes:"
#: bookwyrm/templates/author/author.html:46
#: bookwyrm/templates/author/author.html:53
msgid "Born:"
msgstr "Naissance:"
#: bookwyrm/templates/author/author.html:53
#: bookwyrm/templates/author/author.html:60
msgid "Died:"
msgstr "Décès:"
#: bookwyrm/templates/author/author.html:62
#: bookwyrm/templates/author/author.html:70
msgid "External links"
msgstr "Liens externes"
#: bookwyrm/templates/author/author.html:75
msgid "Wikipedia"
msgstr "Wikipedia"
#: bookwyrm/templates/author/author.html:70
#: bookwyrm/templates/author/author.html:83
msgid "View ISNI record"
msgstr "Voir lenregistrement ISNI"
#: bookwyrm/templates/author/author.html:78
#: bookwyrm/templates/book/book.html:94
#: bookwyrm/templates/author/author.html:88
#: bookwyrm/templates/author/sync_modal.html:5
#: bookwyrm/templates/book/book.html:93
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Charger les données"
#: bookwyrm/templates/author/author.html:92
#: bookwyrm/templates/book/book.html:96
msgid "View on OpenLibrary"
msgstr "Voir sur OpenLibrary"
#: bookwyrm/templates/author/author.html:86
#: bookwyrm/templates/book/book.html:97
#: bookwyrm/templates/author/author.html:106
#: bookwyrm/templates/book/book.html:107
msgid "View on Inventaire"
msgstr "Voir sur Inventaire"
#: bookwyrm/templates/author/author.html:94
#: bookwyrm/templates/author/author.html:121
msgid "View on LibraryThing"
msgstr "Voir sur LibraryThing"
#: bookwyrm/templates/author/author.html:102
#: bookwyrm/templates/author/author.html:129
msgid "View on Goodreads"
msgstr "Voir sur Goodreads"
#: bookwyrm/templates/author/author.html:117
#: bookwyrm/templates/author/author.html:143
#, python-format
msgid "Books by %(name)s"
msgstr "Livres de %(name)s"
@ -369,7 +384,7 @@ msgid "ISNI:"
msgstr "ISNI :"
#: bookwyrm/templates/author/edit_author.html:115
#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/book.html:157
#: bookwyrm/templates/book/edit/edit_book.html:121
#: bookwyrm/templates/book/readthrough.html:76
#: bookwyrm/templates/groups/form.html:24
@ -387,11 +402,13 @@ msgid "Save"
msgstr "Enregistrer"
#: bookwyrm/templates/author/edit_author.html:116
#: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:199
#: bookwyrm/templates/author/sync_modal.html:26
#: bookwyrm/templates/book/book.html:158 bookwyrm/templates/book/book.html:216
#: bookwyrm/templates/book/cover_modal.html:32
#: bookwyrm/templates/book/edit/edit_book.html:123
#: bookwyrm/templates/book/edit/edit_book.html:126
#: bookwyrm/templates/book/readthrough.html:77
#: bookwyrm/templates/book/sync_modal.html:26
#: bookwyrm/templates/groups/delete_group_modal.html:17
#: bookwyrm/templates/lists/delete_list_modal.html:17
#: bookwyrm/templates/settings/federation/instance.html:88
@ -400,6 +417,20 @@ msgstr "Enregistrer"
msgid "Cancel"
msgstr "Annuler"
#: bookwyrm/templates/author/sync_modal.html:15
#, python-format
msgid "Loading data will connect to <strong>%(source_name)s</strong> and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten."
msgstr "Le chargement des données se connectera à <strong>%(source_name)s</strong> et vérifiera les métadonnées de cet auteur ou autrice qui ne sont pas présentes ici. Les métadonnées existantes ne seront pas écrasées."
#: bookwyrm/templates/author/sync_modal.html:23
#: bookwyrm/templates/book/edit/edit_book.html:108
#: bookwyrm/templates/book/sync_modal.html:23
#: bookwyrm/templates/groups/members.html:16
#: bookwyrm/templates/landing/password_reset.html:42
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
msgid "Confirm"
msgstr "Confirmer"
#: bookwyrm/templates/book/book.html:47
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:25
@ -420,74 +451,74 @@ msgstr "Ajouter une couverture"
msgid "Failed to load cover"
msgstr "La couverture na pu être chargée"
#: bookwyrm/templates/book/book.html:117
#: bookwyrm/templates/book/book.html:134
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
msgstr[0] "(%(review_count)s critique)"
msgstr[1] "(%(review_count)s critiques)"
#: bookwyrm/templates/book/book.html:129
#: bookwyrm/templates/book/book.html:146
msgid "Add Description"
msgstr "Ajouter une description"
#: bookwyrm/templates/book/book.html:136
#: bookwyrm/templates/book/book.html:153
#: bookwyrm/templates/book/edit/edit_book_form.html:39
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "Description:"
#: bookwyrm/templates/book/book.html:150
#: bookwyrm/templates/book/book.html:167
#, python-format
msgid "<a href=\"%(path)s/editions\">%(count)s editions</a>"
msgstr "<a href=\"%(path)s/editions\">%(count)s éditions</a>"
#: bookwyrm/templates/book/book.html:158
#: bookwyrm/templates/book/book.html:175
msgid "You have shelved this edition in:"
msgstr "Vous avez rangé cette édition dans :"
#: bookwyrm/templates/book/book.html:173
#: bookwyrm/templates/book/book.html:190
#, python-format
msgid "A <a href=\"%(book_path)s\">different edition</a> of this book is on your <a href=\"%(shelf_path)s\">%(shelf_name)s</a> shelf."
msgstr "Une <a href=\"%(book_path)s\">édition différente</a> de ce livre existe sur votre étagère <a href=\"%(shelf_path)s\">%(shelf_name)s</a>."
#: bookwyrm/templates/book/book.html:184
#: bookwyrm/templates/book/book.html:201
msgid "Your reading activity"
msgstr "Votre activité de lecture"
#: bookwyrm/templates/book/book.html:187
#: bookwyrm/templates/book/book.html:204
msgid "Add read dates"
msgstr "Ajouter des dates de lecture"
#: bookwyrm/templates/book/book.html:196
#: bookwyrm/templates/book/book.html:213
msgid "Create"
msgstr "Créer"
#: bookwyrm/templates/book/book.html:206
#: bookwyrm/templates/book/book.html:223
msgid "You don't have any reading activity for this book."
msgstr "Vous navez aucune activité de lecture pour ce livre"
#: bookwyrm/templates/book/book.html:232
#: bookwyrm/templates/book/book.html:249
msgid "Your reviews"
msgstr "Vos critiques"
#: bookwyrm/templates/book/book.html:238
#: bookwyrm/templates/book/book.html:255
msgid "Your comments"
msgstr "Vos commentaires"
#: bookwyrm/templates/book/book.html:244
#: bookwyrm/templates/book/book.html:261
msgid "Your quotes"
msgstr "Vos citations"
#: bookwyrm/templates/book/book.html:280
#: bookwyrm/templates/book/book.html:297
msgid "Subjects"
msgstr "Sujets"
#: bookwyrm/templates/book/book.html:292
#: bookwyrm/templates/book/book.html:309
msgid "Places"
msgstr "Lieux"
#: bookwyrm/templates/book/book.html:303 bookwyrm/templates/layout.html:75
#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@ -495,11 +526,11 @@ msgstr "Lieux"
msgid "Lists"
msgstr "Listes"
#: bookwyrm/templates/book/book.html:314
#: bookwyrm/templates/book/book.html:331
msgid "Add to list"
msgstr "Ajouter à la liste"
#: bookwyrm/templates/book/book.html:324
#: bookwyrm/templates/book/book.html:341
#: bookwyrm/templates/book/cover_modal.html:31
#: bookwyrm/templates/lists/list.html:182
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
@ -577,13 +608,6 @@ msgstr "Estce lédition dun ouvrage existant?"
msgid "This is a new work"
msgstr "Il sagit dun nouvel ouvrage."
#: bookwyrm/templates/book/edit/edit_book.html:108
#: bookwyrm/templates/groups/members.html:16
#: bookwyrm/templates/landing/password_reset.html:42
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
msgid "Confirm"
msgstr "Confirmer"
#: bookwyrm/templates/book/edit/edit_book.html:110
#: bookwyrm/templates/feed/status.html:21
msgid "Back"
@ -783,6 +807,11 @@ msgstr "Modifier les date de lecture"
msgid "Delete these read dates"
msgstr "Supprimer ces dates de lecture"
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to <strong>%(source_name)s</strong> and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
msgstr "Le chargement des données se connectera à <strong>%(source_name)s</strong> et vérifiera les métadonnées de ce livre qui ne sont pas présentes ici. Les métadonnées existantes ne seront pas écrasées."
#: bookwyrm/templates/components/inline_form.html:8
#: bookwyrm/templates/components/modal.html:11
#: bookwyrm/templates/components/tooltip.html:7
@ -1099,6 +1128,25 @@ msgstr "Si vous navez 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:37
#, python-format
msgid "%(site_name)s home page"
msgstr ""
#: bookwyrm/templates/embed-layout.html:34
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr "À propos de %(site_name)s"
#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr "Contacter ladministrateur du site"
#: bookwyrm/templates/embed-layout.html:46
msgid "Join Bookwyrm"
msgstr ""
#: bookwyrm/templates/feed/direct_messages.html:8
#, python-format
msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
@ -1654,11 +1702,6 @@ msgstr "BookWyrm a été mis à jour depuis cette importation avec une correctio
msgid "Contact your admin or <a href='https://github.com/bookwyrm-social/bookwyrm/issues'>open an issue</a> if you are seeing unexpected failed items."
msgstr "Contactez votre administrateur·ice ou <a href='https://github.com/bookwyrm-social/bookwyrm/issues'>signalez un problème</a> si vous voyez des éléments inattendus qui ont échoué."
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr "À propos de %(site_name)s"
#: bookwyrm/templates/landing/about.html:10
#: bookwyrm/templates/landing/about.html:20
msgid "Code of Conduct"
@ -1830,10 +1873,6 @@ msgstr "Publié !"
msgid "Error posting status"
msgstr "Erreur lors de la publication"
#: bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr "Contacter ladministrateur du site"
#: bookwyrm/templates/layout.html:238
msgid "Documentation"
msgstr "Documentation"
@ -1900,6 +1939,21 @@ msgstr "Supprimer cette liste ?"
msgid "Edit List"
msgstr "Modifier la liste"
#: bookwyrm/templates/lists/embed-list.html:7
#, python-format
msgid "%(list_name)s, a list by %(owner)s"
msgstr ""
#: bookwyrm/templates/lists/embed-list.html:17
#, python-format
msgid "on <a href=\"/\">%(site_name)s</a>"
msgstr ""
#: bookwyrm/templates/lists/embed-list.html:26
#: bookwyrm/templates/lists/list.html:29
msgid "This list is currently empty"
msgstr "Cette liste est actuellement vide"
#: bookwyrm/templates/lists/form.html:19
msgid "List curation:"
msgstr "Modération de la liste:"
@ -1965,10 +2019,6 @@ 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:29
msgid "This list is currently empty"
msgstr "Cette liste est actuellement vide"
#: bookwyrm/templates/lists/list.html:67
#, python-format
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
@ -2021,6 +2071,23 @@ msgstr "Aucun livre trouvé pour la requête « %(query)s»"
msgid "Suggest"
msgstr "Suggérer"
#: bookwyrm/templates/lists/list.html:191
msgid "Embed this list on a website"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
msgid "Copy embed code"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
msgid "Copied!"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr ""
#: bookwyrm/templates/lists/list_items.html:15
msgid "Saved"
msgstr "Sauvegardé"
@ -3387,6 +3454,7 @@ msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
msgstr "Publiée par <a href=\"%(user_path)s\">%(username)s</a>"
#: bookwyrm/templates/snippets/authors.html:22
#: bookwyrm/templates/snippets/trimmed_list.html:14
#, python-format
msgid "and %(remainder_count_display)s other"
msgid_plural "and %(remainder_count_display)s others"
@ -4072,7 +4140,7 @@ msgstr "Aucun·e abonné·e que vous suivez"
msgid "File exceeds maximum size: 10MB"
msgstr "Ce fichier dépasse la taille limite: 10Mo"
#: bookwyrm/templatetags/utilities.py:34
#: bookwyrm/templatetags/utilities.py:33
#, python-format
msgid "%(title)s: %(subtitle)s"
msgstr "%(title)s (%(subtitle)s)"

Binary file not shown.

View file

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-07 17:35+0000\n"
"PO-Revision-Date: 2021-12-07 18:25\n"
"POT-Creation-Date: 2021-12-08 15:40+0000\n"
"PO-Revision-Date: 2021-12-10 05:04\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Galician\n"
"Language: gl\n"
@ -101,23 +101,23 @@ msgstr "Eliminado pola moderación"
msgid "Domain block"
msgstr "Bloqueo de dominio"
#: bookwyrm/models/book.py:233
#: bookwyrm/models/book.py:243
msgid "Audiobook"
msgstr "Audiolibro"
#: bookwyrm/models/book.py:234
#: bookwyrm/models/book.py:244
msgid "eBook"
msgstr "eBook"
#: bookwyrm/models/book.py:235
#: bookwyrm/models/book.py:245
msgid "Graphic novel"
msgstr "Novela gráfica"
#: bookwyrm/models/book.py:236
#: bookwyrm/models/book.py:246
msgid "Hardcover"
msgstr "Portada dura"
#: bookwyrm/models/book.py:237
#: bookwyrm/models/book.py:247
msgid "Paperback"
msgstr "En rústica"
@ -153,7 +153,7 @@ msgstr "nome de usuaria"
msgid "A user with that username already exists."
msgstr "Xa existe unha usuaria con ese nome."
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:227
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:244
msgid "Reviews"
msgstr "Recensións"
@ -248,46 +248,61 @@ msgstr "Algo fallou! Lamentámolo."
msgid "Edit Author"
msgstr "Editar Autora"
#: bookwyrm/templates/author/author.html:35
#: bookwyrm/templates/author/author.html:40
msgid "Author details"
msgstr "Detalles da autoría"
#: bookwyrm/templates/author/author.html:44
#: bookwyrm/templates/author/edit_author.html:42
msgid "Aliases:"
msgstr "Alias:"
#: bookwyrm/templates/author/author.html:46
#: bookwyrm/templates/author/author.html:53
msgid "Born:"
msgstr "Nacemento:"
#: bookwyrm/templates/author/author.html:53
#: bookwyrm/templates/author/author.html:60
msgid "Died:"
msgstr "Morte:"
#: bookwyrm/templates/author/author.html:62
#: bookwyrm/templates/author/author.html:70
msgid "External links"
msgstr "Ligazóns externas"
#: bookwyrm/templates/author/author.html:75
msgid "Wikipedia"
msgstr "Wikipedia"
#: bookwyrm/templates/author/author.html:70
#: bookwyrm/templates/author/author.html:83
msgid "View ISNI record"
msgstr "Ver rexistro ISNI"
#: bookwyrm/templates/author/author.html:78
#: bookwyrm/templates/book/book.html:94
#: bookwyrm/templates/author/author.html:88
#: bookwyrm/templates/author/sync_modal.html:5
#: bookwyrm/templates/book/book.html:93
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Cargar datos"
#: bookwyrm/templates/author/author.html:92
#: bookwyrm/templates/book/book.html:96
msgid "View on OpenLibrary"
msgstr "Ver en OpenLibrary"
#: bookwyrm/templates/author/author.html:86
#: bookwyrm/templates/book/book.html:97
#: bookwyrm/templates/author/author.html:106
#: bookwyrm/templates/book/book.html:107
msgid "View on Inventaire"
msgstr "Ver en Inventaire"
#: bookwyrm/templates/author/author.html:94
#: bookwyrm/templates/author/author.html:121
msgid "View on LibraryThing"
msgstr "Ver en LibraryThing"
#: bookwyrm/templates/author/author.html:102
#: bookwyrm/templates/author/author.html:129
msgid "View on Goodreads"
msgstr "Ver en Goodreads"
#: bookwyrm/templates/author/author.html:117
#: bookwyrm/templates/author/author.html:143
#, python-format
msgid "Books by %(name)s"
msgstr "Libros de %(name)s"
@ -366,10 +381,10 @@ msgstr "Chave en Goodreads:"
#: bookwyrm/templates/author/edit_author.html:105
msgid "ISNI:"
msgstr ""
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:115
#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/book.html:157
#: bookwyrm/templates/book/edit/edit_book.html:121
#: bookwyrm/templates/book/readthrough.html:76
#: bookwyrm/templates/groups/form.html:24
@ -387,11 +402,13 @@ msgid "Save"
msgstr "Gardar"
#: bookwyrm/templates/author/edit_author.html:116
#: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:199
#: bookwyrm/templates/author/sync_modal.html:26
#: bookwyrm/templates/book/book.html:158 bookwyrm/templates/book/book.html:216
#: bookwyrm/templates/book/cover_modal.html:32
#: bookwyrm/templates/book/edit/edit_book.html:123
#: bookwyrm/templates/book/edit/edit_book.html:126
#: bookwyrm/templates/book/readthrough.html:77
#: bookwyrm/templates/book/sync_modal.html:26
#: bookwyrm/templates/groups/delete_group_modal.html:17
#: bookwyrm/templates/lists/delete_list_modal.html:17
#: bookwyrm/templates/settings/federation/instance.html:88
@ -400,6 +417,20 @@ msgstr "Gardar"
msgid "Cancel"
msgstr "Cancelar"
#: bookwyrm/templates/author/sync_modal.html:15
#, python-format
msgid "Loading data will connect to <strong>%(source_name)s</strong> and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten."
msgstr "Ao cargar os datos vas conectar con <strong>%(source_name)s</strong> e comprobar se existen metadatos desta persoa autora que non están aquí presentes. Non se sobrescribirán os datos existentes."
#: bookwyrm/templates/author/sync_modal.html:23
#: bookwyrm/templates/book/edit/edit_book.html:108
#: bookwyrm/templates/book/sync_modal.html:23
#: bookwyrm/templates/groups/members.html:16
#: bookwyrm/templates/landing/password_reset.html:42
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
msgid "Confirm"
msgstr "Confirmar"
#: bookwyrm/templates/book/book.html:47
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:25
@ -420,74 +451,74 @@ msgstr "Engadir portada"
msgid "Failed to load cover"
msgstr "Fallou a carga da portada"
#: bookwyrm/templates/book/book.html:117
#: bookwyrm/templates/book/book.html:134
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
msgstr[0] "(%(review_count)s recensión)"
msgstr[1] "(%(review_count)s recensións)"
#: bookwyrm/templates/book/book.html:129
#: bookwyrm/templates/book/book.html:146
msgid "Add Description"
msgstr "Engadir descrición"
#: bookwyrm/templates/book/book.html:136
#: bookwyrm/templates/book/book.html:153
#: bookwyrm/templates/book/edit/edit_book_form.html:39
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "Descrición:"
#: bookwyrm/templates/book/book.html:150
#: bookwyrm/templates/book/book.html:167
#, python-format
msgid "<a href=\"%(path)s/editions\">%(count)s editions</a>"
msgstr "<a href=\"%(path)s/editions\">%(count)s edicións</a>"
#: bookwyrm/templates/book/book.html:158
#: bookwyrm/templates/book/book.html:175
msgid "You have shelved this edition in:"
msgstr "Puxeches esta edición no estante:"
#: bookwyrm/templates/book/book.html:173
#: bookwyrm/templates/book/book.html:190
#, python-format
msgid "A <a href=\"%(book_path)s\">different edition</a> of this book is on your <a href=\"%(shelf_path)s\">%(shelf_name)s</a> shelf."
msgstr "Hai unha <a href=\"%(book_path)s\">edición diferente</a> deste libro no teu estante <a href=\"%(shelf_path)s\">%(shelf_name)s</a>."
#: bookwyrm/templates/book/book.html:184
#: bookwyrm/templates/book/book.html:201
msgid "Your reading activity"
msgstr "Actividade lectora"
#: bookwyrm/templates/book/book.html:187
#: bookwyrm/templates/book/book.html:204
msgid "Add read dates"
msgstr "Engadir datas de lectura"
#: bookwyrm/templates/book/book.html:196
#: bookwyrm/templates/book/book.html:213
msgid "Create"
msgstr "Crear"
#: bookwyrm/templates/book/book.html:206
#: bookwyrm/templates/book/book.html:223
msgid "You don't have any reading activity for this book."
msgstr "Non tes actividade lectora neste libro."
#: bookwyrm/templates/book/book.html:232
#: bookwyrm/templates/book/book.html:249
msgid "Your reviews"
msgstr "As túas recensións"
#: bookwyrm/templates/book/book.html:238
#: bookwyrm/templates/book/book.html:255
msgid "Your comments"
msgstr "Os teus comentarios"
#: bookwyrm/templates/book/book.html:244
#: bookwyrm/templates/book/book.html:261
msgid "Your quotes"
msgstr "As túas citas"
#: bookwyrm/templates/book/book.html:280
#: bookwyrm/templates/book/book.html:297
msgid "Subjects"
msgstr "Temas"
#: bookwyrm/templates/book/book.html:292
#: bookwyrm/templates/book/book.html:309
msgid "Places"
msgstr "Lugares"
#: bookwyrm/templates/book/book.html:303 bookwyrm/templates/layout.html:75
#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@ -495,11 +526,11 @@ msgstr "Lugares"
msgid "Lists"
msgstr "Listaxes"
#: bookwyrm/templates/book/book.html:314
#: bookwyrm/templates/book/book.html:331
msgid "Add to list"
msgstr "Engadir a listaxe"
#: bookwyrm/templates/book/book.html:324
#: bookwyrm/templates/book/book.html:341
#: bookwyrm/templates/book/cover_modal.html:31
#: bookwyrm/templates/lists/list.html:182
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
@ -577,13 +608,6 @@ msgstr "É esta a edición dun traballo existente?"
msgid "This is a new work"
msgstr "Este é un novo traballo"
#: bookwyrm/templates/book/edit/edit_book.html:108
#: bookwyrm/templates/groups/members.html:16
#: bookwyrm/templates/landing/password_reset.html:42
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
msgid "Confirm"
msgstr "Confirmar"
#: bookwyrm/templates/book/edit/edit_book.html:110
#: bookwyrm/templates/feed/status.html:21
msgid "Back"
@ -783,6 +807,11 @@ msgstr "Editar datas da lectura"
msgid "Delete these read dates"
msgstr "Eliminar estas datas da lectura"
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to <strong>%(source_name)s</strong> and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
msgstr "Ao cargar os datos vas conectar con <strong>%(source_name)s</strong> e comprobar se existen metadatos deste libro que non están aquí presentes. Non se sobrescribirán os datos existentes."
#: bookwyrm/templates/components/inline_form.html:8
#: bookwyrm/templates/components/modal.html:11
#: bookwyrm/templates/components/tooltip.html:7
@ -1099,6 +1128,25 @@ 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:37
#, python-format
msgid "%(site_name)s home page"
msgstr "Páxina de inicio de %(site_name)s"
#: bookwyrm/templates/embed-layout.html:34
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr "Acerca de %(site_name)s"
#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr "Contacta coa administración"
#: bookwyrm/templates/embed-layout.html:46
msgid "Join Bookwyrm"
msgstr "Únete a BookWyrm"
#: bookwyrm/templates/feed/direct_messages.html:8
#, python-format
msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
@ -1463,7 +1511,7 @@ msgstr "Ficheiro de datos:"
#: bookwyrm/templates/import/import.html:45
msgid "Include reviews"
msgstr "Incluir recensións"
msgstr "Incluír recensións"
#: bookwyrm/templates/import/import.html:50
msgid "Privacy setting for imported reviews:"
@ -1654,11 +1702,6 @@ msgstr "Actualizouse BookWyrm desde a importación arranxando algún fallo"
msgid "Contact your admin or <a href='https://github.com/bookwyrm-social/bookwyrm/issues'>open an issue</a> if you are seeing unexpected failed items."
msgstr "Contacta coa administración ou <a href='https://github.com/bookwyrm-social/bookwyrm/issues'>abre unha incidencia</a> se atopas fallos non agardados."
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr "Acerca de %(site_name)s"
#: bookwyrm/templates/landing/about.html:10
#: bookwyrm/templates/landing/about.html:20
msgid "Code of Conduct"
@ -1830,10 +1873,6 @@ msgstr "Publicación correcta"
msgid "Error posting status"
msgstr "Erro ao publicar"
#: bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr "Contacta coa administración"
#: bookwyrm/templates/layout.html:238
msgid "Documentation"
msgstr "Documentación"
@ -1900,6 +1939,21 @@ msgstr "Eliminar esta lista?"
msgid "Edit List"
msgstr "Editar lista"
#: bookwyrm/templates/lists/embed-list.html:7
#, python-format
msgid "%(list_name)s, a list by %(owner)s"
msgstr "%(list_name)s, unha lista de %(owner)s"
#: bookwyrm/templates/lists/embed-list.html:17
#, python-format
msgid "on <a href=\"/\">%(site_name)s</a>"
msgstr "en <a href=\"/\">%(site_name)s</a>"
#: bookwyrm/templates/lists/embed-list.html:26
#: bookwyrm/templates/lists/list.html:29
msgid "This list is currently empty"
msgstr "A lista está baleira neste intre"
#: bookwyrm/templates/lists/form.html:19
msgid "List curation:"
msgstr "Mantemento da lista:"
@ -1965,10 +2019,6 @@ 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:29
msgid "This list is currently empty"
msgstr "A lista está baleira neste intre"
#: bookwyrm/templates/lists/list.html:67
#, python-format
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
@ -2021,6 +2071,23 @@ msgstr "Non se atopan libros coa consulta \"%(query)s\""
msgid "Suggest"
msgstr "Suxire"
#: bookwyrm/templates/lists/list.html:191
msgid "Embed this list on a website"
msgstr "Utiliza esta lista nunha páxina web"
#: bookwyrm/templates/lists/list.html:193
msgid "Copy embed code"
msgstr "Copia o código a incluír"
#: bookwyrm/templates/lists/list.html:193
msgid "Copied!"
msgstr "Copiado!"
#: bookwyrm/templates/lists/list.html:193
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr "%(list_name)s, unha lista de %(owner)s en %(site_name)s"
#: bookwyrm/templates/lists/list_items.html:15
msgid "Saved"
msgstr "Gardado"
@ -2209,116 +2276,116 @@ msgstr "Estás ao día!"
#: bookwyrm/templates/ostatus/error.html:7
#, python-format
msgid "<strong>%(account)s</strong> is not a valid username"
msgstr ""
msgstr "<strong>%(account)s</strong> non é un nome de usuaria válido"
#: bookwyrm/templates/ostatus/error.html:8
#: bookwyrm/templates/ostatus/error.html:13
msgid "Check you have the correct username before trying again"
msgstr ""
msgstr "Comproba que usaches o identificador correcto e inténtao outra vez"
#: bookwyrm/templates/ostatus/error.html:12
#, python-format
msgid "<strong>%(account)s</strong> could not be found or <code>%(remote_domain)s</code> does not support identity discovery"
msgstr ""
msgstr "Non se puido atopar a <strong>%(account)s</strong> ou <code>%(remote_domain)s</code> non ten soporte para o descubrimento remoto de identidades"
#: bookwyrm/templates/ostatus/error.html:17
#, python-format
msgid "<strong>%(account)s</strong> was found but <code>%(remote_domain)s</code> does not support 'remote follow'"
msgstr ""
msgstr "Atopamos a <strong>%(account)s</strong> mais <code>%(remote_domain)s</code> non ten soporte para 'seguimento remoto'"
#: bookwyrm/templates/ostatus/error.html:18
#, python-format
msgid "Try searching for <strong>%(user)s</strong> on <code>%(remote_domain)s</code> instead"
msgstr ""
msgstr "Intenta buscar <strong>%(user)s</strong> en <code>%(remote_domain)s</code>"
#: bookwyrm/templates/ostatus/error.html:46
#, python-format
msgid "Something went wrong trying to follow <strong>%(account)s</strong>"
msgstr ""
msgstr "Algo fallou ao intentar seguir a <strong>%(account)s</strong>"
#: bookwyrm/templates/ostatus/error.html:47
msgid "Check you have the correct username before trying again."
msgstr ""
msgstr "Comproba se escribiches o nome de usuaria correcto e inténtao outra vez."
#: bookwyrm/templates/ostatus/error.html:51
#, python-format
msgid "You have blocked <strong>%(account)s</strong>"
msgstr ""
msgstr "Bloqueaches a <strong>%(account)s</strong>"
#: bookwyrm/templates/ostatus/error.html:55
#, python-format
msgid "<strong>%(account)s</strong> has blocked you"
msgstr ""
msgstr "<strong>%(account)s</strong> bloqueoute"
#: bookwyrm/templates/ostatus/error.html:59
#, python-format
msgid "You are already following <strong>%(account)s</strong>"
msgstr ""
msgstr "Xa estás a seguir a <strong>%(account)s</strong>"
#: bookwyrm/templates/ostatus/error.html:63
#, python-format
msgid "You have already requested to follow <strong>%(account)s</strong>"
msgstr ""
msgstr "Xa solicitaches seguir a <strong>%(account)s</strong>"
#: bookwyrm/templates/ostatus/remote_follow.html:6
#, python-format
msgid "Follow %(username)s on the fediverse"
msgstr ""
msgstr "Seguir a %(username)s no fediverso"
#: bookwyrm/templates/ostatus/remote_follow.html:33
#, python-format
msgid "Follow %(username)s from another Fediverse account like BookWyrm, Mastodon, or Pleroma."
msgstr ""
msgstr "Sigue a %(username)s desde outra conta no Fediverso como BookWyrm, Mastodon ou Pleroma."
#: bookwyrm/templates/ostatus/remote_follow.html:40
msgid "User handle to follow from:"
msgstr ""
msgstr "ID da usuaria desde onde seguir:"
#: bookwyrm/templates/ostatus/remote_follow.html:42
msgid "Follow!"
msgstr ""
msgstr "Seguir!"
#: bookwyrm/templates/ostatus/remote_follow_button.html:8
msgid "Follow on Fediverse"
msgstr ""
msgstr "Seguir no Fediverso"
#: bookwyrm/templates/ostatus/remote_follow_button.html:12
msgid "This link opens in a pop-up window"
msgstr ""
msgstr "Esta ligazón abre unha ventá emerxente"
#: bookwyrm/templates/ostatus/subscribe.html:8
#, python-format
msgid "Log in to %(sitename)s"
msgstr ""
msgstr "Conectar con %(sitename)s"
#: bookwyrm/templates/ostatus/subscribe.html:10
#, python-format
msgid "Error following from %(sitename)s"
msgstr ""
msgstr "Erro no seguimento desde %(sitename)s"
#: bookwyrm/templates/ostatus/subscribe.html:12
#: bookwyrm/templates/ostatus/subscribe.html:22
#, python-format
msgid "Follow from %(sitename)s"
msgstr ""
msgstr "Seguir desde %(sitename)s"
#: bookwyrm/templates/ostatus/subscribe.html:18
msgid "Uh oh..."
msgstr ""
msgstr "Oioioi..."
#: bookwyrm/templates/ostatus/subscribe.html:20
msgid "Let's log in first..."
msgstr ""
msgstr "Primeiro hai que conectar..."
#: bookwyrm/templates/ostatus/subscribe.html:51
#, python-format
msgid "Follow %(username)s"
msgstr ""
msgstr "Segue a %(username)s"
#: bookwyrm/templates/ostatus/success.html:28
#, python-format
msgid "You are now following %(display_name)s!"
msgstr ""
msgstr "Estás a seguir a %(display_name)s!"
#: bookwyrm/templates/preferences/blocks.html:4
#: bookwyrm/templates/preferences/blocks.html:7
@ -3387,6 +3454,7 @@ msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
msgstr "Publicado por <a href=\"%(user_path)s\">%(username)s</a>"
#: bookwyrm/templates/snippets/authors.html:22
#: bookwyrm/templates/snippets/trimmed_list.html:14
#, python-format
msgid "and %(remainder_count_display)s other"
msgid_plural "and %(remainder_count_display)s others"
@ -4072,7 +4140,7 @@ msgstr "Sen seguidoras que ti segues"
msgid "File exceeds maximum size: 10MB"
msgstr "O ficheiro supera o tamaño máximo: 10MB"
#: bookwyrm/templatetags/utilities.py:34
#: bookwyrm/templatetags/utilities.py:33
#, python-format
msgid "%(title)s: %(subtitle)s"
msgstr "%(title)s: %(subtitle)s"

Binary file not shown.

View file

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-07 17:35+0000\n"
"PO-Revision-Date: 2021-12-07 20:53\n"
"POT-Creation-Date: 2021-12-08 15:40+0000\n"
"PO-Revision-Date: 2021-12-13 20:56\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Lithuanian\n"
"Language: lt\n"
@ -101,23 +101,23 @@ msgstr "Moderatorius ištrynė"
msgid "Domain block"
msgstr "Blokuoti pagal domeną"
#: bookwyrm/models/book.py:233
#: bookwyrm/models/book.py:243
msgid "Audiobook"
msgstr "Audioknyga"
#: bookwyrm/models/book.py:234
#: bookwyrm/models/book.py:244
msgid "eBook"
msgstr "Elektroninė knyga"
#: bookwyrm/models/book.py:235
#: bookwyrm/models/book.py:245
msgid "Graphic novel"
msgstr "Grafinė novelė"
#: bookwyrm/models/book.py:236
#: bookwyrm/models/book.py:246
msgid "Hardcover"
msgstr "Knyga kietais viršeliais"
#: bookwyrm/models/book.py:237
#: bookwyrm/models/book.py:247
msgid "Paperback"
msgstr "Knyga minkštais viršeliais"
@ -153,7 +153,7 @@ msgstr "naudotojo vardas"
msgid "A user with that username already exists."
msgstr "Toks naudotojo vardas jau egzistuoja."
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:227
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:244
msgid "Reviews"
msgstr "Apžvalgos"
@ -248,46 +248,61 @@ msgstr "Kažkas nepavyko. Atsiprašome."
msgid "Edit Author"
msgstr "Keisti autorių"
#: bookwyrm/templates/author/author.html:35
#: bookwyrm/templates/author/author.html:40
msgid "Author details"
msgstr ""
#: bookwyrm/templates/author/author.html:44
#: bookwyrm/templates/author/edit_author.html:42
msgid "Aliases:"
msgstr "Pseudonimai:"
#: bookwyrm/templates/author/author.html:46
#: bookwyrm/templates/author/author.html:53
msgid "Born:"
msgstr "Gimęs:"
#: bookwyrm/templates/author/author.html:53
#: bookwyrm/templates/author/author.html:60
msgid "Died:"
msgstr "Mirė:"
#: bookwyrm/templates/author/author.html:62
#: bookwyrm/templates/author/author.html:70
msgid "External links"
msgstr ""
#: bookwyrm/templates/author/author.html:75
msgid "Wikipedia"
msgstr "Wikipedia"
#: bookwyrm/templates/author/author.html:70
#: bookwyrm/templates/author/author.html:83
msgid "View ISNI record"
msgstr "Peržiūrėti ISNI įrašą"
#: bookwyrm/templates/author/author.html:78
#: bookwyrm/templates/book/book.html:94
#: bookwyrm/templates/author/author.html:88
#: bookwyrm/templates/author/sync_modal.html:5
#: bookwyrm/templates/book/book.html:93
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr ""
#: bookwyrm/templates/author/author.html:92
#: bookwyrm/templates/book/book.html:96
msgid "View on OpenLibrary"
msgstr "Žiūrėti „OpenLibrary“"
#: bookwyrm/templates/author/author.html:86
#: bookwyrm/templates/book/book.html:97
#: bookwyrm/templates/author/author.html:106
#: bookwyrm/templates/book/book.html:107
msgid "View on Inventaire"
msgstr "Žiūrėti „Inventaire“"
#: bookwyrm/templates/author/author.html:94
#: bookwyrm/templates/author/author.html:121
msgid "View on LibraryThing"
msgstr "Žiūrėti „LibraryThing“"
#: bookwyrm/templates/author/author.html:102
#: bookwyrm/templates/author/author.html:129
msgid "View on Goodreads"
msgstr "Žiūrėti „Goodreads“"
#: bookwyrm/templates/author/author.html:117
#: bookwyrm/templates/author/author.html:143
#, python-format
msgid "Books by %(name)s"
msgstr "%(name)s knygos"
@ -369,7 +384,7 @@ msgid "ISNI:"
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:115
#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/book.html:157
#: bookwyrm/templates/book/edit/edit_book.html:121
#: bookwyrm/templates/book/readthrough.html:76
#: bookwyrm/templates/groups/form.html:24
@ -387,11 +402,13 @@ msgid "Save"
msgstr "Išsaugoti"
#: bookwyrm/templates/author/edit_author.html:116
#: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:199
#: bookwyrm/templates/author/sync_modal.html:26
#: bookwyrm/templates/book/book.html:158 bookwyrm/templates/book/book.html:216
#: bookwyrm/templates/book/cover_modal.html:32
#: bookwyrm/templates/book/edit/edit_book.html:123
#: bookwyrm/templates/book/edit/edit_book.html:126
#: bookwyrm/templates/book/readthrough.html:77
#: bookwyrm/templates/book/sync_modal.html:26
#: bookwyrm/templates/groups/delete_group_modal.html:17
#: bookwyrm/templates/lists/delete_list_modal.html:17
#: bookwyrm/templates/settings/federation/instance.html:88
@ -400,6 +417,20 @@ msgstr "Išsaugoti"
msgid "Cancel"
msgstr "Atšaukti"
#: bookwyrm/templates/author/sync_modal.html:15
#, python-format
msgid "Loading data will connect to <strong>%(source_name)s</strong> and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten."
msgstr ""
#: bookwyrm/templates/author/sync_modal.html:23
#: bookwyrm/templates/book/edit/edit_book.html:108
#: bookwyrm/templates/book/sync_modal.html:23
#: bookwyrm/templates/groups/members.html:16
#: bookwyrm/templates/landing/password_reset.html:42
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
msgid "Confirm"
msgstr "Patvirtinti"
#: bookwyrm/templates/book/book.html:47
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:25
@ -420,7 +451,7 @@ msgstr "Pridėti viršelį"
msgid "Failed to load cover"
msgstr "Nepavyko įkelti viršelio"
#: bookwyrm/templates/book/book.html:117
#: bookwyrm/templates/book/book.html:134
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
@ -429,67 +460,67 @@ msgstr[1] "(%(review_count)s atsiliepimai)"
msgstr[2] "(%(review_count)s atsiliepimų)"
msgstr[3] "(%(review_count)s atsiliepimai)"
#: bookwyrm/templates/book/book.html:129
#: bookwyrm/templates/book/book.html:146
msgid "Add Description"
msgstr "Pridėti aprašymą"
#: bookwyrm/templates/book/book.html:136
#: bookwyrm/templates/book/book.html:153
#: bookwyrm/templates/book/edit/edit_book_form.html:39
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "Aprašymas:"
#: bookwyrm/templates/book/book.html:150
#: bookwyrm/templates/book/book.html:167
#, python-format
msgid "<a href=\"%(path)s/editions\">%(count)s editions</a>"
msgstr "<a href=\"%(path)s/editions\">%(count)s leidimai (-ų)</a>"
#: bookwyrm/templates/book/book.html:158
#: bookwyrm/templates/book/book.html:175
msgid "You have shelved this edition in:"
msgstr "Šis leidimas įdėtas į:"
#: bookwyrm/templates/book/book.html:173
#: bookwyrm/templates/book/book.html:190
#, python-format
msgid "A <a href=\"%(book_path)s\">different edition</a> of this book is on your <a href=\"%(shelf_path)s\">%(shelf_name)s</a> shelf."
msgstr "<a href=\"%(book_path)s\">kitas</a> šios knygos leidimas yra jūsų <a href=\"%(shelf_path)s\">%(shelf_name)s</a> lentynoje."
#: bookwyrm/templates/book/book.html:184
#: bookwyrm/templates/book/book.html:201
msgid "Your reading activity"
msgstr "Jūsų skaitymo veikla"
#: bookwyrm/templates/book/book.html:187
#: bookwyrm/templates/book/book.html:204
msgid "Add read dates"
msgstr "Pridėti skaitymo datas"
#: bookwyrm/templates/book/book.html:196
#: bookwyrm/templates/book/book.html:213
msgid "Create"
msgstr "Kurti"
#: bookwyrm/templates/book/book.html:206
#: bookwyrm/templates/book/book.html:223
msgid "You don't have any reading activity for this book."
msgstr "Šios knygos neskaitote."
#: bookwyrm/templates/book/book.html:232
#: bookwyrm/templates/book/book.html:249
msgid "Your reviews"
msgstr "Tavo atsiliepimai"
#: bookwyrm/templates/book/book.html:238
#: bookwyrm/templates/book/book.html:255
msgid "Your comments"
msgstr "Tavo komentarai"
#: bookwyrm/templates/book/book.html:244
#: bookwyrm/templates/book/book.html:261
msgid "Your quotes"
msgstr "Jūsų citatos"
#: bookwyrm/templates/book/book.html:280
#: bookwyrm/templates/book/book.html:297
msgid "Subjects"
msgstr "Temos"
#: bookwyrm/templates/book/book.html:292
#: bookwyrm/templates/book/book.html:309
msgid "Places"
msgstr "Vietos"
#: bookwyrm/templates/book/book.html:303 bookwyrm/templates/layout.html:75
#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@ -497,11 +528,11 @@ msgstr "Vietos"
msgid "Lists"
msgstr "Sąrašai"
#: bookwyrm/templates/book/book.html:314
#: bookwyrm/templates/book/book.html:331
msgid "Add to list"
msgstr "Pridėti prie sąrašo"
#: bookwyrm/templates/book/book.html:324
#: bookwyrm/templates/book/book.html:341
#: bookwyrm/templates/book/cover_modal.html:31
#: bookwyrm/templates/lists/list.html:182
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
@ -579,13 +610,6 @@ msgstr "Ar tai egzistuojančio darbo leidimas?"
msgid "This is a new work"
msgstr "Tai naujas darbas"
#: bookwyrm/templates/book/edit/edit_book.html:108
#: bookwyrm/templates/groups/members.html:16
#: bookwyrm/templates/landing/password_reset.html:42
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
msgid "Confirm"
msgstr "Patvirtinti"
#: bookwyrm/templates/book/edit/edit_book.html:110
#: bookwyrm/templates/feed/status.html:21
msgid "Back"
@ -785,6 +809,11 @@ msgstr "Redaguoti skaitymo datas"
msgid "Delete these read dates"
msgstr "Ištrinti šias skaitymo datas"
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to <strong>%(source_name)s</strong> and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
msgstr ""
#: bookwyrm/templates/components/inline_form.html:8
#: bookwyrm/templates/components/modal.html:11
#: bookwyrm/templates/components/tooltip.html:7
@ -1105,6 +1134,25 @@ msgstr "Jei nenorite pakeisti savo slaptažodžio - ignoruokite šį laišką."
msgid "Reset your %(site_name)s password"
msgstr "Keisti %(site_name)s slaptažodį"
#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:37
#, python-format
msgid "%(site_name)s home page"
msgstr "%(site_name)s pagrindinis puslapis"
#: bookwyrm/templates/embed-layout.html:34
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr "Apie %(site_name)s"
#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr "Puslapio administratorius"
#: bookwyrm/templates/embed-layout.html:46
msgid "Join Bookwyrm"
msgstr "Prisijunkite prie „Bookwyrm“"
#: bookwyrm/templates/feed/direct_messages.html:8
#, python-format
msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
@ -1668,11 +1716,6 @@ msgstr "Nuo importo datos „BookWyrm“ atnaujinto programinę įrangą ir išt
msgid "Contact your admin or <a href='https://github.com/bookwyrm-social/bookwyrm/issues'>open an issue</a> if you are seeing unexpected failed items."
msgstr "Jei matote netikėtų nesklandumų, susisiekite su administratoriumi arba <a href='https://github.com/bookwyrm-social/bookwyrm/issues'>registruokite problemą</a>."
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr "Apie %(site_name)s"
#: bookwyrm/templates/landing/about.html:10
#: bookwyrm/templates/landing/about.html:20
msgid "Code of Conduct"
@ -1844,10 +1887,6 @@ msgstr "Būsena publikuota sėkmingai"
msgid "Error posting status"
msgstr "Klaida, publikuojant būseną"
#: bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr "Puslapio administratorius"
#: bookwyrm/templates/layout.html:238
msgid "Documentation"
msgstr "Dokumentacija"
@ -1914,6 +1953,21 @@ msgstr "Ištrinti šį sąrašą?"
msgid "Edit List"
msgstr "Redaguoti sąrašą"
#: bookwyrm/templates/lists/embed-list.html:7
#, python-format
msgid "%(list_name)s, a list by %(owner)s"
msgstr "%(list_name)s, sąrašą sudarė %(owner)s"
#: bookwyrm/templates/lists/embed-list.html:17
#, python-format
msgid "on <a href=\"/\">%(site_name)s</a>"
msgstr "per <a href=\"/\">%(site_name)s</a>"
#: bookwyrm/templates/lists/embed-list.html:26
#: bookwyrm/templates/lists/list.html:29
msgid "This list is currently empty"
msgstr "Šiuo metu sąrašas tuščias"
#: bookwyrm/templates/lists/form.html:19
msgid "List curation:"
msgstr "Sąrašo kuravimas:"
@ -1979,10 +2033,6 @@ msgstr "Sėkmingai pasiūlėte knygą šiam sąrašui!"
msgid "You successfully added a book to this list!"
msgstr "Sėkmingai pridėjote knygą į šį sąrašą!"
#: bookwyrm/templates/lists/list.html:29
msgid "This list is currently empty"
msgstr "Šiuo metu sąrašas tuščias"
#: bookwyrm/templates/lists/list.html:67
#, python-format
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
@ -2035,6 +2085,23 @@ msgstr "Pagal paiešką „%(query)s“ knygų nerasta"
msgid "Suggest"
msgstr "Siūlyti"
#: bookwyrm/templates/lists/list.html:191
msgid "Embed this list on a website"
msgstr "Įdėkite šį sąrašą į tinklalapį"
#: bookwyrm/templates/lists/list.html:193
msgid "Copy embed code"
msgstr "Nukopijuokite įterptinį kodą"
#: bookwyrm/templates/lists/list.html:193
msgid "Copied!"
msgstr "Nukopijuota"
#: bookwyrm/templates/lists/list.html:193
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr "%(list_name)s, sąrašą sudarė %(owner)s, per %(site_name)s"
#: bookwyrm/templates/lists/list_items.html:15
msgid "Saved"
msgstr "Išsaugota"
@ -3409,6 +3476,7 @@ msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
msgstr "Publikavo <a href=\"%(user_path)s\">%(username)s</a>"
#: bookwyrm/templates/snippets/authors.html:22
#: bookwyrm/templates/snippets/trimmed_list.html:14
#, python-format
msgid "and %(remainder_count_display)s other"
msgid_plural "and %(remainder_count_display)s others"
@ -3882,7 +3950,7 @@ msgstr "pakomentavo <a href=\"%(book_path)s\">%(book)s</a>"
#: bookwyrm/templates/snippets/status/headers/note.html:8
#, python-format
msgid "replied to <a href=\"%(user_path)s\">%(username)s</a>'s <a href=\"%(status_path)s\">status</a>"
msgstr "atsakyta į <a href=\"%(user_path)s\">%(username)s</a> <a href=\"%(status_path)s\">būseną</a>"
msgstr "atsakė į <a href=\"%(user_path)s\">%(username)s</a> <a href=\"%(status_path)s\"> statusą</a>"
#: bookwyrm/templates/snippets/status/headers/quotation.html:2
#, python-format
@ -4110,7 +4178,7 @@ msgstr "Jūs kartu nieko nesekate"
msgid "File exceeds maximum size: 10MB"
msgstr "Failas viršijo maksimalų dydį: 10 MB"
#: bookwyrm/templatetags/utilities.py:34
#: bookwyrm/templatetags/utilities.py:33
#, python-format
msgid "%(title)s: %(subtitle)s"
msgstr "%(title)s: %(subtitle)s"

Binary file not shown.

View file

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-07 17:35+0000\n"
"PO-Revision-Date: 2021-12-07 20:54\n"
"POT-Creation-Date: 2021-12-08 15:40+0000\n"
"PO-Revision-Date: 2021-12-11 15:41\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt\n"
@ -101,23 +101,23 @@ msgstr "Exclusão de moderador"
msgid "Domain block"
msgstr "Bloqueio de domínio"
#: bookwyrm/models/book.py:233
#: bookwyrm/models/book.py:243
msgid "Audiobook"
msgstr "Audiolivro"
#: bookwyrm/models/book.py:234
#: bookwyrm/models/book.py:244
msgid "eBook"
msgstr "e-book"
#: bookwyrm/models/book.py:235
#: bookwyrm/models/book.py:245
msgid "Graphic novel"
msgstr "Graphic novel"
#: bookwyrm/models/book.py:236
#: bookwyrm/models/book.py:246
msgid "Hardcover"
msgstr "Capa dura"
#: bookwyrm/models/book.py:237
#: bookwyrm/models/book.py:247
msgid "Paperback"
msgstr "Capa mole"
@ -153,7 +153,7 @@ msgstr "nome de usuário"
msgid "A user with that username already exists."
msgstr "Já existe um usuário com este nome."
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:227
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:244
msgid "Reviews"
msgstr "Resenhas"
@ -246,55 +246,70 @@ msgstr "Algo deu errado! Foi mal."
#: bookwyrm/templates/author/author.html:18
#: bookwyrm/templates/author/author.html:19
msgid "Edit Author"
msgstr "Editar autor"
msgstr "Editar autor/a"
#: bookwyrm/templates/author/author.html:35
#: bookwyrm/templates/author/author.html:40
msgid "Author details"
msgstr "Detalhes do/a autor/a"
#: bookwyrm/templates/author/author.html:44
#: bookwyrm/templates/author/edit_author.html:42
msgid "Aliases:"
msgstr "Pseudônimos:"
#: bookwyrm/templates/author/author.html:46
#: bookwyrm/templates/author/author.html:53
msgid "Born:"
msgstr "Nascimento:"
#: bookwyrm/templates/author/author.html:53
#: bookwyrm/templates/author/author.html:60
msgid "Died:"
msgstr "Morte:"
#: bookwyrm/templates/author/author.html:62
#: bookwyrm/templates/author/author.html:70
msgid "External links"
msgstr "Links externos"
#: bookwyrm/templates/author/author.html:75
msgid "Wikipedia"
msgstr "Wikipédia"
#: bookwyrm/templates/author/author.html:70
#: bookwyrm/templates/author/author.html:83
msgid "View ISNI record"
msgstr "Ver registro ISNI"
#: bookwyrm/templates/author/author.html:78
#: bookwyrm/templates/book/book.html:94
#: bookwyrm/templates/author/author.html:88
#: bookwyrm/templates/author/sync_modal.html:5
#: bookwyrm/templates/book/book.html:93
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr "Carregar informações"
#: bookwyrm/templates/author/author.html:92
#: bookwyrm/templates/book/book.html:96
msgid "View on OpenLibrary"
msgstr "Ver na OpenLibrary"
#: bookwyrm/templates/author/author.html:86
#: bookwyrm/templates/book/book.html:97
#: bookwyrm/templates/author/author.html:106
#: bookwyrm/templates/book/book.html:107
msgid "View on Inventaire"
msgstr "Ver no Inventaire"
#: bookwyrm/templates/author/author.html:94
#: bookwyrm/templates/author/author.html:121
msgid "View on LibraryThing"
msgstr "Ver no LibraryThing"
#: bookwyrm/templates/author/author.html:102
#: bookwyrm/templates/author/author.html:129
msgid "View on Goodreads"
msgstr "Ver no Goodreads"
#: bookwyrm/templates/author/author.html:117
#: bookwyrm/templates/author/author.html:143
#, python-format
msgid "Books by %(name)s"
msgstr "Livros de %(name)s"
#: bookwyrm/templates/author/edit_author.html:5
msgid "Edit Author:"
msgstr "Editar autor:"
msgstr "Editar autor/a:"
#: bookwyrm/templates/author/edit_author.html:13
#: bookwyrm/templates/book/edit/edit_book.html:19
@ -345,7 +360,7 @@ msgstr "Data da morte:"
#: bookwyrm/templates/author/edit_author.html:75
msgid "Author Identifiers"
msgstr "Identificadores do autor"
msgstr "Identificadores do/a autor/a"
#: bookwyrm/templates/author/edit_author.html:77
msgid "Openlibrary key:"
@ -369,7 +384,7 @@ msgid "ISNI:"
msgstr "ISNI:"
#: bookwyrm/templates/author/edit_author.html:115
#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/book.html:157
#: bookwyrm/templates/book/edit/edit_book.html:121
#: bookwyrm/templates/book/readthrough.html:76
#: bookwyrm/templates/groups/form.html:24
@ -387,11 +402,13 @@ msgid "Save"
msgstr "Salvar"
#: bookwyrm/templates/author/edit_author.html:116
#: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:199
#: bookwyrm/templates/author/sync_modal.html:26
#: bookwyrm/templates/book/book.html:158 bookwyrm/templates/book/book.html:216
#: bookwyrm/templates/book/cover_modal.html:32
#: bookwyrm/templates/book/edit/edit_book.html:123
#: bookwyrm/templates/book/edit/edit_book.html:126
#: bookwyrm/templates/book/readthrough.html:77
#: bookwyrm/templates/book/sync_modal.html:26
#: bookwyrm/templates/groups/delete_group_modal.html:17
#: bookwyrm/templates/lists/delete_list_modal.html:17
#: bookwyrm/templates/settings/federation/instance.html:88
@ -400,6 +417,20 @@ msgstr "Salvar"
msgid "Cancel"
msgstr "Cancelar"
#: bookwyrm/templates/author/sync_modal.html:15
#, python-format
msgid "Loading data will connect to <strong>%(source_name)s</strong> and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten."
msgstr "Para carregar informações nos conectaremos a <strong>%(source_name)s</strong> e buscaremos metadados que ainda não temos sobre este/a autor/a. Metadados já existentes não serão substituídos."
#: bookwyrm/templates/author/sync_modal.html:23
#: bookwyrm/templates/book/edit/edit_book.html:108
#: bookwyrm/templates/book/sync_modal.html:23
#: bookwyrm/templates/groups/members.html:16
#: bookwyrm/templates/landing/password_reset.html:42
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
msgid "Confirm"
msgstr "Confirmar"
#: bookwyrm/templates/book/book.html:47
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:25
@ -420,74 +451,74 @@ msgstr "Adicionar capa"
msgid "Failed to load cover"
msgstr "Erro ao carregar capa"
#: bookwyrm/templates/book/book.html:117
#: bookwyrm/templates/book/book.html:134
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
msgstr[0] "(%(review_count)s resenha)"
msgstr[1] "(%(review_count)s resenhas)"
#: bookwyrm/templates/book/book.html:129
#: bookwyrm/templates/book/book.html:146
msgid "Add Description"
msgstr "Adicionar descrição"
#: bookwyrm/templates/book/book.html:136
#: bookwyrm/templates/book/book.html:153
#: bookwyrm/templates/book/edit/edit_book_form.html:39
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "Descrição:"
#: bookwyrm/templates/book/book.html:150
#: bookwyrm/templates/book/book.html:167
#, python-format
msgid "<a href=\"%(path)s/editions\">%(count)s editions</a>"
msgstr "<a href=\"%(path)s/editions\">%(count)s edições</a>"
#: bookwyrm/templates/book/book.html:158
#: bookwyrm/templates/book/book.html:175
msgid "You have shelved this edition in:"
msgstr "Você colocou esta edição na estante em:"
#: bookwyrm/templates/book/book.html:173
#: bookwyrm/templates/book/book.html:190
#, python-format
msgid "A <a href=\"%(book_path)s\">different edition</a> of this book is on your <a href=\"%(shelf_path)s\">%(shelf_name)s</a> shelf."
msgstr "Uma <a href=\"%(book_path)s\">edição diferente</a> deste livro está em sua estante <a href=\"%(shelf_path)s\">%(shelf_name)s</a>."
#: bookwyrm/templates/book/book.html:184
#: bookwyrm/templates/book/book.html:201
msgid "Your reading activity"
msgstr "Sua atividade de leitura"
msgstr "Andamento da sua leitura"
#: bookwyrm/templates/book/book.html:187
#: bookwyrm/templates/book/book.html:204
msgid "Add read dates"
msgstr "Adicionar datas de leitura"
msgstr "Adicionar registro de leitura"
#: bookwyrm/templates/book/book.html:196
#: bookwyrm/templates/book/book.html:213
msgid "Create"
msgstr "Criar"
#: bookwyrm/templates/book/book.html:206
#: bookwyrm/templates/book/book.html:223
msgid "You don't have any reading activity for this book."
msgstr "Você ainda não registrou seu progresso para este livro."
msgstr "Você ainda não registrou nenhuma atividade neste livro."
#: bookwyrm/templates/book/book.html:232
#: bookwyrm/templates/book/book.html:249
msgid "Your reviews"
msgstr "Suas resenhas"
#: bookwyrm/templates/book/book.html:238
#: bookwyrm/templates/book/book.html:255
msgid "Your comments"
msgstr "Seus comentários"
#: bookwyrm/templates/book/book.html:244
#: bookwyrm/templates/book/book.html:261
msgid "Your quotes"
msgstr "Suas citações"
#: bookwyrm/templates/book/book.html:280
#: bookwyrm/templates/book/book.html:297
msgid "Subjects"
msgstr "Assuntos"
#: bookwyrm/templates/book/book.html:292
#: bookwyrm/templates/book/book.html:309
msgid "Places"
msgstr "Lugares"
#: bookwyrm/templates/book/book.html:303 bookwyrm/templates/layout.html:75
#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@ -495,11 +526,11 @@ msgstr "Lugares"
msgid "Lists"
msgstr "Listas"
#: bookwyrm/templates/book/book.html:314
#: bookwyrm/templates/book/book.html:331
msgid "Add to list"
msgstr "Adicionar à lista"
#: bookwyrm/templates/book/book.html:324
#: bookwyrm/templates/book/book.html:341
#: bookwyrm/templates/book/cover_modal.html:31
#: bookwyrm/templates/lists/list.html:182
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
@ -554,7 +585,7 @@ msgstr "\"%(name)s\" é uma das pessoas citadas abaixo?"
#: bookwyrm/templates/book/edit/edit_book.html:67
#: bookwyrm/templates/book/edit/edit_book.html:69
msgid "Author of "
msgstr "Autor de "
msgstr "Autor/a de "
#: bookwyrm/templates/book/edit/edit_book.html:69
msgid "Find more information at isni.org"
@ -562,12 +593,12 @@ msgstr "Conheça mais em isni.org"
#: bookwyrm/templates/book/edit/edit_book.html:79
msgid "This is a new author"
msgstr "Novo autor"
msgstr "É um/a novo/a autor/a"
#: bookwyrm/templates/book/edit/edit_book.html:86
#, python-format
msgid "Creating a new author: %(name)s"
msgstr "Criando um novo autor: %(name)s"
msgstr "Criando um/a novo/a autor/a: %(name)s"
#: bookwyrm/templates/book/edit/edit_book.html:93
msgid "Is this an edition of an existing work?"
@ -577,13 +608,6 @@ msgstr "É uma edição de uma obra já registrada?"
msgid "This is a new work"
msgstr "É uma nova obra"
#: bookwyrm/templates/book/edit/edit_book.html:108
#: bookwyrm/templates/groups/members.html:16
#: bookwyrm/templates/landing/password_reset.html:42
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
msgid "Confirm"
msgstr "Confirmar"
#: bookwyrm/templates/book/edit/edit_book.html:110
#: bookwyrm/templates/feed/status.html:21
msgid "Back"
@ -628,7 +652,7 @@ msgstr "Data de publicação:"
#: bookwyrm/templates/book/edit/edit_book_form.html:122
msgid "Authors"
msgstr "Autores"
msgstr "Autores/as"
#: bookwyrm/templates/book/edit/edit_book_form.html:131
#, python-format
@ -638,11 +662,11 @@ msgstr "Remover %(name)s"
#: bookwyrm/templates/book/edit/edit_book_form.html:134
#, python-format
msgid "Author page for %(name)s"
msgstr "Página de autor de %(name)s"
msgstr "Página de autor/a de %(name)s"
#: bookwyrm/templates/book/edit/edit_book_form.html:142
msgid "Add Authors:"
msgstr "Adicionar autores:"
msgstr "Adicionar autores/as:"
#: bookwyrm/templates/book/edit/edit_book_form.html:145
#: bookwyrm/templates/book/edit/edit_book_form.html:148
@ -756,7 +780,7 @@ msgstr "avaliou este livro"
#: bookwyrm/templates/book/readthrough.html:8
msgid "Progress Updates:"
msgstr "Atualização de progresso:"
msgstr "Registro de leitura:"
#: bookwyrm/templates/book/readthrough.html:13
msgid "finished"
@ -764,11 +788,11 @@ msgstr "terminado"
#: bookwyrm/templates/book/readthrough.html:24
msgid "Show all updates"
msgstr "Mostrar todas as atualizações"
msgstr "Mostrar andamento da leitura"
#: bookwyrm/templates/book/readthrough.html:40
msgid "Delete this progress update"
msgstr "Excluir esta atualização de progresso"
msgstr "Excluir esta atualização de andamento"
#: bookwyrm/templates/book/readthrough.html:51
msgid "started"
@ -777,12 +801,17 @@ msgstr "iniciado"
#: bookwyrm/templates/book/readthrough.html:58
#: bookwyrm/templates/book/readthrough.html:72
msgid "Edit read dates"
msgstr "Editar datas de leitura"
msgstr "Editar registro de leitura"
#: bookwyrm/templates/book/readthrough.html:62
msgid "Delete these read dates"
msgstr "Excluir estas datas de leitura"
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to <strong>%(source_name)s</strong> and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
msgstr "Para carregar informações nos conectaremos a <strong>%(source_name)s</strong> e buscaremos metadados que ainda não temos sobre este livro. Metadados já existentes não serão substituídos."
#: bookwyrm/templates/components/inline_form.html:8
#: bookwyrm/templates/components/modal.html:11
#: bookwyrm/templates/components/tooltip.html:7
@ -1099,6 +1128,25 @@ msgstr "Se você não solicitou a redefinição de senha, ignore este e-mail."
msgid "Reset your %(site_name)s password"
msgstr "Redefinir sua senha no %(site_name)s"
#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:37
#, python-format
msgid "%(site_name)s home page"
msgstr "Página inicial de %(site_name)s"
#: bookwyrm/templates/embed-layout.html:34
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr "Sobre %(site_name)s"
#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr "Falar com a administração"
#: bookwyrm/templates/embed-layout.html:46
msgid "Join Bookwyrm"
msgstr "Participe da BookWyrm"
#: bookwyrm/templates/feed/direct_messages.html:8
#, python-format
msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
@ -1550,7 +1598,7 @@ msgstr "ISBN"
#: bookwyrm/templates/shelf/shelf.html:145
#: bookwyrm/templates/shelf/shelf.html:169
msgid "Author"
msgstr "Autor"
msgstr "Autor/a"
#: bookwyrm/templates/import/import_status.html:112
msgid "Shelf"
@ -1654,11 +1702,6 @@ msgstr "Desde a importação a BookWyrm foi atualizada com uma correção de bug
msgid "Contact your admin or <a href='https://github.com/bookwyrm-social/bookwyrm/issues'>open an issue</a> if you are seeing unexpected failed items."
msgstr "Fale com a administração ou <a href='https://github.com/bookwyrm-social/bookwyrm/issues'>crie um problema</a> se você perceber itens com erros inesperados."
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr "Sobre %(site_name)s"
#: bookwyrm/templates/landing/about.html:10
#: bookwyrm/templates/landing/about.html:20
msgid "Code of Conduct"
@ -1830,10 +1873,6 @@ msgstr "Publicação feita com sucesso"
msgid "Error posting status"
msgstr "Erro ao publicar"
#: bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr "Falar com a administração"
#: bookwyrm/templates/layout.html:238
msgid "Documentation"
msgstr "Documentação"
@ -1900,6 +1939,21 @@ msgstr "Deletar esta lista?"
msgid "Edit List"
msgstr "Editar lista"
#: bookwyrm/templates/lists/embed-list.html:7
#, python-format
msgid "%(list_name)s, a list by %(owner)s"
msgstr "%(list_name)s, uma lista de %(owner)s"
#: bookwyrm/templates/lists/embed-list.html:17
#, python-format
msgid "on <a href=\"/\">%(site_name)s</a>"
msgstr "em <a href=\"/\">%(site_name)s</a>"
#: bookwyrm/templates/lists/embed-list.html:26
#: bookwyrm/templates/lists/list.html:29
msgid "This list is currently empty"
msgstr "Esta lista está vazia"
#: bookwyrm/templates/lists/form.html:19
msgid "List curation:"
msgstr "Configuração da lista:"
@ -1965,10 +2019,6 @@ msgstr "Você sugeriu um livro para esta lista com sucesso!"
msgid "You successfully added a book to this list!"
msgstr "Você adicionou um livro a esta lista com sucesso!"
#: bookwyrm/templates/lists/list.html:29
msgid "This list is currently empty"
msgstr "Esta lista está vazia"
#: bookwyrm/templates/lists/list.html:67
#, python-format
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
@ -2021,6 +2071,23 @@ msgstr "Nenhum livro encontrado para \"%(query)s\""
msgid "Suggest"
msgstr "Sugerir"
#: bookwyrm/templates/lists/list.html:191
msgid "Embed this list on a website"
msgstr "Incorpore esta lista em um site"
#: bookwyrm/templates/lists/list.html:193
msgid "Copy embed code"
msgstr "Copiar código de incorporação"
#: bookwyrm/templates/lists/list.html:193
msgid "Copied!"
msgstr "Copiado!"
#: bookwyrm/templates/lists/list.html:193
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr "%(list_name)s, uma lista de %(owner)s em %(site_name)s"
#: bookwyrm/templates/lists/list_items.html:15
msgid "Saved"
msgstr "Salvo"
@ -3387,6 +3454,7 @@ msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
msgstr "Publicado por <a href=\"%(user_path)s\">%(username)s</a>"
#: bookwyrm/templates/snippets/authors.html:22
#: bookwyrm/templates/snippets/trimmed_list.html:14
#, python-format
msgid "and %(remainder_count_display)s other"
msgid_plural "and %(remainder_count_display)s others"
@ -3423,7 +3491,7 @@ msgstr "Algumas ideias sobre o livro"
#: bookwyrm/templates/snippets/create_status/comment.html:27
#: bookwyrm/templates/snippets/reading_modals/progress_update_modal.html:15
msgid "Progress:"
msgstr "Progresso:"
msgstr "Andamento:"
#: bookwyrm/templates/snippets/create_status/comment.html:53
#: bookwyrm/templates/snippets/progress_field.html:18
@ -3517,7 +3585,7 @@ msgstr "Excluir as datas de leitura?"
#: bookwyrm/templates/snippets/delete_readthrough_modal.html:7
#, python-format
msgid "You are deleting this readthrough and its %(count)s associated progress updates."
msgstr "Você está excluindo este registro de leitura e as %(count)s atualizações de progresso associadas."
msgstr "Você está excluindo este registro de leitura e as %(count)s atualizações de andamento associadas."
#: bookwyrm/templates/snippets/fav_button.html:16
#: bookwyrm/templates/snippets/fav_button.html:17
@ -3647,7 +3715,7 @@ msgstr "Definir meta"
#: bookwyrm/templates/snippets/goal_progress.html:9
#, python-format
msgid "%(percent)s%% complete!"
msgstr "%(percent)s%% lá!"
msgstr "%(percent)s%% lido!"
#: bookwyrm/templates/snippets/goal_progress.html:12
#, python-format
@ -3737,7 +3805,7 @@ msgstr "(Opcional)"
#: bookwyrm/templates/snippets/reading_modals/progress_update_modal.html:5
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:50
msgid "Update progress"
msgstr "Atualizar progresso"
msgstr "Atualizar andamento"
#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:6
#, python-format
@ -3751,7 +3819,7 @@ msgstr "Quero ler \"<em>%(book_title)s</em>\""
#: bookwyrm/templates/snippets/readthrough_form.html:14
msgid "Progress"
msgstr "Progresso"
msgstr "Andamento"
#: bookwyrm/templates/snippets/register_form.html:30
msgid "Sign Up"
@ -4072,7 +4140,7 @@ msgstr "Nenhum seguidor que você segue"
msgid "File exceeds maximum size: 10MB"
msgstr "Arquivo excede o tamanho máximo: 10MB"
#: bookwyrm/templatetags/utilities.py:34
#: bookwyrm/templatetags/utilities.py:33
#, python-format
msgid "%(title)s: %(subtitle)s"
msgstr "%(title)s: %(subtitle)s"

Binary file not shown.

View file

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-07 17:35+0000\n"
"PO-Revision-Date: 2021-12-07 18:24\n"
"POT-Creation-Date: 2021-12-08 15:40+0000\n"
"PO-Revision-Date: 2021-12-09 18:56\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Chinese Simplified\n"
"Language: zh\n"
@ -101,23 +101,23 @@ msgstr "仲裁员删除"
msgid "Domain block"
msgstr "域名屏蔽"
#: bookwyrm/models/book.py:233
#: bookwyrm/models/book.py:243
msgid "Audiobook"
msgstr "有声书籍"
#: bookwyrm/models/book.py:234
#: bookwyrm/models/book.py:244
msgid "eBook"
msgstr "电子书"
#: bookwyrm/models/book.py:235
#: bookwyrm/models/book.py:245
msgid "Graphic novel"
msgstr "图像小说"
#: bookwyrm/models/book.py:236
#: bookwyrm/models/book.py:246
msgid "Hardcover"
msgstr "精装"
#: bookwyrm/models/book.py:237
#: bookwyrm/models/book.py:247
msgid "Paperback"
msgstr "平装"
@ -153,7 +153,7 @@ msgstr "用户名"
msgid "A user with that username already exists."
msgstr "已经存在使用该用户名的用户。"
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:227
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:244
msgid "Reviews"
msgstr "书评"
@ -248,46 +248,61 @@ msgstr "某些东西出错了!对不起啦。"
msgid "Edit Author"
msgstr "编辑作者"
#: bookwyrm/templates/author/author.html:35
#: bookwyrm/templates/author/author.html:40
msgid "Author details"
msgstr ""
#: bookwyrm/templates/author/author.html:44
#: bookwyrm/templates/author/edit_author.html:42
msgid "Aliases:"
msgstr "别名:"
#: bookwyrm/templates/author/author.html:46
#: bookwyrm/templates/author/author.html:53
msgid "Born:"
msgstr "出生:"
#: bookwyrm/templates/author/author.html:53
#: bookwyrm/templates/author/author.html:60
msgid "Died:"
msgstr "逝世:"
#: bookwyrm/templates/author/author.html:62
#: bookwyrm/templates/author/author.html:70
msgid "External links"
msgstr ""
#: bookwyrm/templates/author/author.html:75
msgid "Wikipedia"
msgstr "维基百科"
#: bookwyrm/templates/author/author.html:70
#: bookwyrm/templates/author/author.html:83
msgid "View ISNI record"
msgstr ""
#: bookwyrm/templates/author/author.html:78
#: bookwyrm/templates/book/book.html:94
#: bookwyrm/templates/author/author.html:88
#: bookwyrm/templates/author/sync_modal.html:5
#: bookwyrm/templates/book/book.html:93
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr ""
#: bookwyrm/templates/author/author.html:92
#: bookwyrm/templates/book/book.html:96
msgid "View on OpenLibrary"
msgstr "在 OpenLibrary 查看"
#: bookwyrm/templates/author/author.html:86
#: bookwyrm/templates/book/book.html:97
#: bookwyrm/templates/author/author.html:106
#: bookwyrm/templates/book/book.html:107
msgid "View on Inventaire"
msgstr "在 Inventaire 查看"
#: bookwyrm/templates/author/author.html:94
#: bookwyrm/templates/author/author.html:121
msgid "View on LibraryThing"
msgstr "在 LibraryThing 查看"
#: bookwyrm/templates/author/author.html:102
#: bookwyrm/templates/author/author.html:129
msgid "View on Goodreads"
msgstr "在 Goodreads 查看"
#: bookwyrm/templates/author/author.html:117
#: bookwyrm/templates/author/author.html:143
#, python-format
msgid "Books by %(name)s"
msgstr "%(name)s 所著的书"
@ -369,7 +384,7 @@ msgid "ISNI:"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:115
#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/book.html:157
#: bookwyrm/templates/book/edit/edit_book.html:121
#: bookwyrm/templates/book/readthrough.html:76
#: bookwyrm/templates/groups/form.html:24
@ -387,11 +402,13 @@ msgid "Save"
msgstr "保存"
#: bookwyrm/templates/author/edit_author.html:116
#: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:199
#: bookwyrm/templates/author/sync_modal.html:26
#: bookwyrm/templates/book/book.html:158 bookwyrm/templates/book/book.html:216
#: bookwyrm/templates/book/cover_modal.html:32
#: bookwyrm/templates/book/edit/edit_book.html:123
#: bookwyrm/templates/book/edit/edit_book.html:126
#: bookwyrm/templates/book/readthrough.html:77
#: bookwyrm/templates/book/sync_modal.html:26
#: bookwyrm/templates/groups/delete_group_modal.html:17
#: bookwyrm/templates/lists/delete_list_modal.html:17
#: bookwyrm/templates/settings/federation/instance.html:88
@ -400,6 +417,20 @@ msgstr "保存"
msgid "Cancel"
msgstr "取消"
#: bookwyrm/templates/author/sync_modal.html:15
#, python-format
msgid "Loading data will connect to <strong>%(source_name)s</strong> and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten."
msgstr ""
#: bookwyrm/templates/author/sync_modal.html:23
#: bookwyrm/templates/book/edit/edit_book.html:108
#: bookwyrm/templates/book/sync_modal.html:23
#: bookwyrm/templates/groups/members.html:16
#: bookwyrm/templates/landing/password_reset.html:42
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
msgid "Confirm"
msgstr "确认"
#: bookwyrm/templates/book/book.html:47
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:25
@ -420,73 +451,73 @@ msgstr "添加封面"
msgid "Failed to load cover"
msgstr "加载封面失败"
#: bookwyrm/templates/book/book.html:117
#: bookwyrm/templates/book/book.html:134
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
msgstr[0] "(%(review_count)s 则书评)"
#: bookwyrm/templates/book/book.html:129
#: bookwyrm/templates/book/book.html:146
msgid "Add Description"
msgstr "添加描述"
#: bookwyrm/templates/book/book.html:136
#: bookwyrm/templates/book/book.html:153
#: bookwyrm/templates/book/edit/edit_book_form.html:39
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "描述:"
#: bookwyrm/templates/book/book.html:150
#: bookwyrm/templates/book/book.html:167
#, python-format
msgid "<a href=\"%(path)s/editions\">%(count)s editions</a>"
msgstr "<a href=\"%(path)s/editions\">%(count)s 个版本</a>"
#: bookwyrm/templates/book/book.html:158
#: bookwyrm/templates/book/book.html:175
msgid "You have shelved this edition in:"
msgstr ""
#: bookwyrm/templates/book/book.html:173
#: bookwyrm/templates/book/book.html:190
#, python-format
msgid "A <a href=\"%(book_path)s\">different edition</a> of this book is on your <a href=\"%(shelf_path)s\">%(shelf_name)s</a> shelf."
msgstr "本书的 <a href=\"%(book_path)s\">另一个版本</a> 在你的 <a href=\"%(shelf_path)s\">%(shelf_name)s</a> 书架上。"
#: bookwyrm/templates/book/book.html:184
#: bookwyrm/templates/book/book.html:201
msgid "Your reading activity"
msgstr "你的阅读活动"
#: bookwyrm/templates/book/book.html:187
#: bookwyrm/templates/book/book.html:204
msgid "Add read dates"
msgstr "添加阅读日期"
#: bookwyrm/templates/book/book.html:196
#: bookwyrm/templates/book/book.html:213
msgid "Create"
msgstr "创建"
#: bookwyrm/templates/book/book.html:206
#: bookwyrm/templates/book/book.html:223
msgid "You don't have any reading activity for this book."
msgstr "你还没有任何这本书的阅读活动。"
#: bookwyrm/templates/book/book.html:232
#: bookwyrm/templates/book/book.html:249
msgid "Your reviews"
msgstr "你的书评"
#: bookwyrm/templates/book/book.html:238
#: bookwyrm/templates/book/book.html:255
msgid "Your comments"
msgstr "你的评论"
#: bookwyrm/templates/book/book.html:244
#: bookwyrm/templates/book/book.html:261
msgid "Your quotes"
msgstr "你的引用"
#: bookwyrm/templates/book/book.html:280
#: bookwyrm/templates/book/book.html:297
msgid "Subjects"
msgstr "主题"
#: bookwyrm/templates/book/book.html:292
#: bookwyrm/templates/book/book.html:309
msgid "Places"
msgstr "地点"
#: bookwyrm/templates/book/book.html:303 bookwyrm/templates/layout.html:75
#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@ -494,11 +525,11 @@ msgstr "地点"
msgid "Lists"
msgstr "列表"
#: bookwyrm/templates/book/book.html:314
#: bookwyrm/templates/book/book.html:331
msgid "Add to list"
msgstr "添加到列表"
#: bookwyrm/templates/book/book.html:324
#: bookwyrm/templates/book/book.html:341
#: bookwyrm/templates/book/cover_modal.html:31
#: bookwyrm/templates/lists/list.html:182
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
@ -576,13 +607,6 @@ msgstr "这是已存在的作品的一个版本吗?"
msgid "This is a new work"
msgstr "这是一个新的作品。"
#: bookwyrm/templates/book/edit/edit_book.html:108
#: bookwyrm/templates/groups/members.html:16
#: bookwyrm/templates/landing/password_reset.html:42
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
msgid "Confirm"
msgstr "确认"
#: bookwyrm/templates/book/edit/edit_book.html:110
#: bookwyrm/templates/feed/status.html:21
msgid "Back"
@ -782,6 +806,11 @@ msgstr "编辑阅读日期"
msgid "Delete these read dates"
msgstr "删除这些阅读日期"
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to <strong>%(source_name)s</strong> and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
msgstr ""
#: bookwyrm/templates/components/inline_form.html:8
#: bookwyrm/templates/components/modal.html:11
#: bookwyrm/templates/components/tooltip.html:7
@ -1096,6 +1125,25 @@ msgstr "如果你没有请求重设密码,你可以忽略这封邮件。"
msgid "Reset your %(site_name)s password"
msgstr "重置你在 %(site_name)s 的密码"
#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:37
#, python-format
msgid "%(site_name)s home page"
msgstr ""
#: bookwyrm/templates/embed-layout.html:34
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr "关于 %(site_name)s"
#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr "联系站点管理员"
#: bookwyrm/templates/embed-layout.html:46
msgid "Join Bookwyrm"
msgstr ""
#: bookwyrm/templates/feed/direct_messages.html:8
#, python-format
msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
@ -1647,11 +1695,6 @@ msgstr "在此次导入后BookWyrm 已经更新并修复了漏洞"
msgid "Contact your admin or <a href='https://github.com/bookwyrm-social/bookwyrm/issues'>open an issue</a> if you are seeing unexpected failed items."
msgstr "如果您看到意外失败的项目,请联系您的管理员或 <a href='https://github.com/bookwyrm-social/bookwyrm/issues'>发起一个 issue</a>。"
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr "关于 %(site_name)s"
#: bookwyrm/templates/landing/about.html:10
#: bookwyrm/templates/landing/about.html:20
msgid "Code of Conduct"
@ -1823,10 +1866,6 @@ msgstr "成功发布的状态"
msgid "Error posting status"
msgstr "发布状态时出错"
#: bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr "联系站点管理员"
#: bookwyrm/templates/layout.html:238
msgid "Documentation"
msgstr "文档"
@ -1893,6 +1932,21 @@ msgstr "删除此列表?"
msgid "Edit List"
msgstr "编辑列表"
#: bookwyrm/templates/lists/embed-list.html:7
#, python-format
msgid "%(list_name)s, a list by %(owner)s"
msgstr ""
#: bookwyrm/templates/lists/embed-list.html:17
#, python-format
msgid "on <a href=\"/\">%(site_name)s</a>"
msgstr ""
#: bookwyrm/templates/lists/embed-list.html:26
#: bookwyrm/templates/lists/list.html:29
msgid "This list is currently empty"
msgstr "此列表当前是空的"
#: bookwyrm/templates/lists/form.html:19
msgid "List curation:"
msgstr "列表策展:"
@ -1958,10 +2012,6 @@ msgstr "你成功向该列表推荐了一本书!"
msgid "You successfully added a book to this list!"
msgstr "你成功向此列表添加了一本书!"
#: bookwyrm/templates/lists/list.html:29
msgid "This list is currently empty"
msgstr "此列表当前是空的"
#: bookwyrm/templates/lists/list.html:67
#, python-format
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
@ -2014,6 +2064,23 @@ msgstr "没有符合 “%(query)s” 请求的书目"
msgid "Suggest"
msgstr "推荐"
#: bookwyrm/templates/lists/list.html:191
msgid "Embed this list on a website"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
msgid "Copy embed code"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
msgid "Copied!"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr ""
#: bookwyrm/templates/lists/list_items.html:15
msgid "Saved"
msgstr "已保存"
@ -3376,6 +3443,7 @@ msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
msgstr "由 <a href=\"%(user_path)s\">%(username)s</a> 发布"
#: bookwyrm/templates/snippets/authors.html:22
#: bookwyrm/templates/snippets/trimmed_list.html:14
#, python-format
msgid "and %(remainder_count_display)s other"
msgid_plural "and %(remainder_count_display)s others"
@ -4053,7 +4121,7 @@ msgstr "没有你关注的关注者"
msgid "File exceeds maximum size: 10MB"
msgstr "文件超过了最大大小: 10MB"
#: bookwyrm/templatetags/utilities.py:34
#: bookwyrm/templatetags/utilities.py:33
#, python-format
msgid "%(title)s: %(subtitle)s"
msgstr "%(title)s%(subtitle)s"

Binary file not shown.

View file

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-07 17:35+0000\n"
"PO-Revision-Date: 2021-12-07 18:24\n"
"POT-Creation-Date: 2021-12-08 15:40+0000\n"
"PO-Revision-Date: 2021-12-09 18:56\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Chinese Traditional\n"
"Language: zh\n"
@ -101,23 +101,23 @@ msgstr ""
msgid "Domain block"
msgstr ""
#: bookwyrm/models/book.py:233
#: bookwyrm/models/book.py:243
msgid "Audiobook"
msgstr ""
#: bookwyrm/models/book.py:234
#: bookwyrm/models/book.py:244
msgid "eBook"
msgstr ""
#: bookwyrm/models/book.py:235
#: bookwyrm/models/book.py:245
msgid "Graphic novel"
msgstr ""
#: bookwyrm/models/book.py:236
#: bookwyrm/models/book.py:246
msgid "Hardcover"
msgstr ""
#: bookwyrm/models/book.py:237
#: bookwyrm/models/book.py:247
msgid "Paperback"
msgstr ""
@ -153,7 +153,7 @@ msgstr "使用者名稱"
msgid "A user with that username already exists."
msgstr "已經存在使用該名稱的使用者。"
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:227
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:244
msgid "Reviews"
msgstr "書評"
@ -248,46 +248,61 @@ msgstr "某些東西出錯了!抱歉。"
msgid "Edit Author"
msgstr "編輯作者"
#: bookwyrm/templates/author/author.html:35
#: bookwyrm/templates/author/author.html:40
msgid "Author details"
msgstr ""
#: bookwyrm/templates/author/author.html:44
#: bookwyrm/templates/author/edit_author.html:42
msgid "Aliases:"
msgstr "別名:"
#: bookwyrm/templates/author/author.html:46
#: bookwyrm/templates/author/author.html:53
msgid "Born:"
msgstr "出生:"
#: bookwyrm/templates/author/author.html:53
#: bookwyrm/templates/author/author.html:60
msgid "Died:"
msgstr "逝世:"
#: bookwyrm/templates/author/author.html:62
#: bookwyrm/templates/author/author.html:70
msgid "External links"
msgstr ""
#: bookwyrm/templates/author/author.html:75
msgid "Wikipedia"
msgstr "維基百科"
#: bookwyrm/templates/author/author.html:70
#: bookwyrm/templates/author/author.html:83
msgid "View ISNI record"
msgstr ""
#: bookwyrm/templates/author/author.html:78
#: bookwyrm/templates/book/book.html:94
#: bookwyrm/templates/author/author.html:88
#: bookwyrm/templates/author/sync_modal.html:5
#: bookwyrm/templates/book/book.html:93
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr ""
#: bookwyrm/templates/author/author.html:92
#: bookwyrm/templates/book/book.html:96
msgid "View on OpenLibrary"
msgstr "在 OpenLibrary 檢視"
#: bookwyrm/templates/author/author.html:86
#: bookwyrm/templates/book/book.html:97
#: bookwyrm/templates/author/author.html:106
#: bookwyrm/templates/book/book.html:107
msgid "View on Inventaire"
msgstr "在 Inventaire 檢視"
#: bookwyrm/templates/author/author.html:94
#: bookwyrm/templates/author/author.html:121
msgid "View on LibraryThing"
msgstr ""
#: bookwyrm/templates/author/author.html:102
#: bookwyrm/templates/author/author.html:129
msgid "View on Goodreads"
msgstr ""
#: bookwyrm/templates/author/author.html:117
#: bookwyrm/templates/author/author.html:143
#, python-format
msgid "Books by %(name)s"
msgstr "%(name)s 所著的書"
@ -369,7 +384,7 @@ msgid "ISNI:"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:115
#: bookwyrm/templates/book/book.html:140
#: bookwyrm/templates/book/book.html:157
#: bookwyrm/templates/book/edit/edit_book.html:121
#: bookwyrm/templates/book/readthrough.html:76
#: bookwyrm/templates/groups/form.html:24
@ -387,11 +402,13 @@ msgid "Save"
msgstr "儲存"
#: bookwyrm/templates/author/edit_author.html:116
#: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:199
#: bookwyrm/templates/author/sync_modal.html:26
#: bookwyrm/templates/book/book.html:158 bookwyrm/templates/book/book.html:216
#: bookwyrm/templates/book/cover_modal.html:32
#: bookwyrm/templates/book/edit/edit_book.html:123
#: bookwyrm/templates/book/edit/edit_book.html:126
#: bookwyrm/templates/book/readthrough.html:77
#: bookwyrm/templates/book/sync_modal.html:26
#: bookwyrm/templates/groups/delete_group_modal.html:17
#: bookwyrm/templates/lists/delete_list_modal.html:17
#: bookwyrm/templates/settings/federation/instance.html:88
@ -400,6 +417,20 @@ msgstr "儲存"
msgid "Cancel"
msgstr "取消"
#: bookwyrm/templates/author/sync_modal.html:15
#, python-format
msgid "Loading data will connect to <strong>%(source_name)s</strong> and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten."
msgstr ""
#: bookwyrm/templates/author/sync_modal.html:23
#: bookwyrm/templates/book/edit/edit_book.html:108
#: bookwyrm/templates/book/sync_modal.html:23
#: bookwyrm/templates/groups/members.html:16
#: bookwyrm/templates/landing/password_reset.html:42
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
msgid "Confirm"
msgstr "確認"
#: bookwyrm/templates/book/book.html:47
#: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:25
@ -420,73 +451,73 @@ msgstr "新增封面"
msgid "Failed to load cover"
msgstr "載入封面失敗"
#: bookwyrm/templates/book/book.html:117
#: bookwyrm/templates/book/book.html:134
#, python-format
msgid "(%(review_count)s review)"
msgid_plural "(%(review_count)s reviews)"
msgstr[0] "(%(review_count)s 則書評)"
#: bookwyrm/templates/book/book.html:129
#: bookwyrm/templates/book/book.html:146
msgid "Add Description"
msgstr "新增描述"
#: bookwyrm/templates/book/book.html:136
#: bookwyrm/templates/book/book.html:153
#: bookwyrm/templates/book/edit/edit_book_form.html:39
#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
msgid "Description:"
msgstr "描述:"
#: bookwyrm/templates/book/book.html:150
#: bookwyrm/templates/book/book.html:167
#, python-format
msgid "<a href=\"%(path)s/editions\">%(count)s editions</a>"
msgstr "<a href=\"%(path)s/editions\">%(count)s 個版本</a>"
#: bookwyrm/templates/book/book.html:158
#: bookwyrm/templates/book/book.html:175
msgid "You have shelved this edition in:"
msgstr ""
#: bookwyrm/templates/book/book.html:173
#: bookwyrm/templates/book/book.html:190
#, python-format
msgid "A <a href=\"%(book_path)s\">different edition</a> of this book is on your <a href=\"%(shelf_path)s\">%(shelf_name)s</a> shelf."
msgstr "本書的 <a href=\"%(book_path)s\">另一個版本</a> 在你的 <a href=\"%(shelf_path)s\">%(shelf_name)s</a> 書架上。"
#: bookwyrm/templates/book/book.html:184
#: bookwyrm/templates/book/book.html:201
msgid "Your reading activity"
msgstr "你的閱讀活動"
#: bookwyrm/templates/book/book.html:187
#: bookwyrm/templates/book/book.html:204
msgid "Add read dates"
msgstr "新增閱讀日期"
#: bookwyrm/templates/book/book.html:196
#: bookwyrm/templates/book/book.html:213
msgid "Create"
msgstr "建立"
#: bookwyrm/templates/book/book.html:206
#: bookwyrm/templates/book/book.html:223
msgid "You don't have any reading activity for this book."
msgstr "你還未閱讀這本書。"
#: bookwyrm/templates/book/book.html:232
#: bookwyrm/templates/book/book.html:249
msgid "Your reviews"
msgstr "你的書評"
#: bookwyrm/templates/book/book.html:238
#: bookwyrm/templates/book/book.html:255
msgid "Your comments"
msgstr "你的評論"
#: bookwyrm/templates/book/book.html:244
#: bookwyrm/templates/book/book.html:261
msgid "Your quotes"
msgstr "你的引用"
#: bookwyrm/templates/book/book.html:280
#: bookwyrm/templates/book/book.html:297
msgid "Subjects"
msgstr "主題"
#: bookwyrm/templates/book/book.html:292
#: bookwyrm/templates/book/book.html:309
msgid "Places"
msgstr "地點"
#: bookwyrm/templates/book/book.html:303 bookwyrm/templates/layout.html:75
#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@ -494,11 +525,11 @@ msgstr "地點"
msgid "Lists"
msgstr "列表"
#: bookwyrm/templates/book/book.html:314
#: bookwyrm/templates/book/book.html:331
msgid "Add to list"
msgstr "新增到列表"
#: bookwyrm/templates/book/book.html:324
#: bookwyrm/templates/book/book.html:341
#: bookwyrm/templates/book/cover_modal.html:31
#: bookwyrm/templates/lists/list.html:182
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
@ -576,13 +607,6 @@ msgstr "這是已存在的作品的另一個版本嗎?"
msgid "This is a new work"
msgstr "這是一個新的作品。"
#: bookwyrm/templates/book/edit/edit_book.html:108
#: bookwyrm/templates/groups/members.html:16
#: bookwyrm/templates/landing/password_reset.html:42
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
msgid "Confirm"
msgstr "確認"
#: bookwyrm/templates/book/edit/edit_book.html:110
#: bookwyrm/templates/feed/status.html:21
msgid "Back"
@ -782,6 +806,11 @@ msgstr "編輯閱讀日期"
msgid "Delete these read dates"
msgstr "刪除這些閱讀日期"
#: bookwyrm/templates/book/sync_modal.html:15
#, python-format
msgid "Loading data will connect to <strong>%(source_name)s</strong> and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
msgstr ""
#: bookwyrm/templates/components/inline_form.html:8
#: bookwyrm/templates/components/modal.html:11
#: bookwyrm/templates/components/tooltip.html:7
@ -1096,6 +1125,25 @@ msgstr "如果你沒有請求重設密碼,你可以忽略這封郵件。"
msgid "Reset your %(site_name)s password"
msgstr "重置你在 %(site_name)s 的密碼"
#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:37
#, python-format
msgid "%(site_name)s home page"
msgstr ""
#: bookwyrm/templates/embed-layout.html:34
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr "關於 %(site_name)s"
#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr "聯絡網站管理員"
#: bookwyrm/templates/embed-layout.html:46
msgid "Join Bookwyrm"
msgstr ""
#: bookwyrm/templates/feed/direct_messages.html:8
#, python-format
msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
@ -1647,11 +1695,6 @@ msgstr ""
msgid "Contact your admin or <a href='https://github.com/bookwyrm-social/bookwyrm/issues'>open an issue</a> if you are seeing unexpected failed items."
msgstr ""
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230
#, python-format
msgid "About %(site_name)s"
msgstr "關於 %(site_name)s"
#: bookwyrm/templates/landing/about.html:10
#: bookwyrm/templates/landing/about.html:20
msgid "Code of Conduct"
@ -1823,10 +1866,6 @@ msgstr ""
msgid "Error posting status"
msgstr ""
#: bookwyrm/templates/layout.html:234
msgid "Contact site admin"
msgstr "聯絡網站管理員"
#: bookwyrm/templates/layout.html:238
msgid "Documentation"
msgstr "文件:"
@ -1893,6 +1932,21 @@ msgstr ""
msgid "Edit List"
msgstr "編輯列表"
#: bookwyrm/templates/lists/embed-list.html:7
#, python-format
msgid "%(list_name)s, a list by %(owner)s"
msgstr ""
#: bookwyrm/templates/lists/embed-list.html:17
#, python-format
msgid "on <a href=\"/\">%(site_name)s</a>"
msgstr ""
#: bookwyrm/templates/lists/embed-list.html:26
#: bookwyrm/templates/lists/list.html:29
msgid "This list is currently empty"
msgstr "此列表當前是空的"
#: bookwyrm/templates/lists/form.html:19
msgid "List curation:"
msgstr "列表管理:"
@ -1958,10 +2012,6 @@ msgstr "你成功!向該列表推薦了一本書"
msgid "You successfully added a book to this list!"
msgstr "你成功在此列表新增了一本書!"
#: bookwyrm/templates/lists/list.html:29
msgid "This list is currently empty"
msgstr "此列表當前是空的"
#: bookwyrm/templates/lists/list.html:67
#, python-format
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
@ -2014,6 +2064,23 @@ msgstr "沒有符合 \"%(query)s\" 請求的書目"
msgid "Suggest"
msgstr "推薦"
#: bookwyrm/templates/lists/list.html:191
msgid "Embed this list on a website"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
msgid "Copy embed code"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
msgid "Copied!"
msgstr ""
#: bookwyrm/templates/lists/list.html:193
#, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr ""
#: bookwyrm/templates/lists/list_items.html:15
msgid "Saved"
msgstr ""
@ -3376,6 +3443,7 @@ msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
msgstr "由 <a href=\"%(user_path)s\">%(username)s</a> 釋出"
#: bookwyrm/templates/snippets/authors.html:22
#: bookwyrm/templates/snippets/trimmed_list.html:14
#, python-format
msgid "and %(remainder_count_display)s other"
msgid_plural "and %(remainder_count_display)s others"
@ -4053,7 +4121,7 @@ msgstr ""
msgid "File exceeds maximum size: 10MB"
msgstr "檔案超過了最大大小: 10MB"
#: bookwyrm/templatetags/utilities.py:34
#: bookwyrm/templatetags/utilities.py:33
#, python-format
msgid "%(title)s: %(subtitle)s"
msgstr ""