forked from mirrors/bookwyrm
Merge branch 'main' into debug-toolbar
This commit is contained in:
commit
ff4cab4dd4
72 changed files with 7342 additions and 1997 deletions
|
@ -8,6 +8,8 @@ USE_HTTPS=true
|
|||
DOMAIN=your.domain.here
|
||||
EMAIL=your@email.here
|
||||
|
||||
# Instance defualt language (see options at bookwyrm/settings.py "LANGUAGES"
|
||||
LANGUAGE_CODE="en-us"
|
||||
# Used for deciding which editions to prefer
|
||||
DEFAULT_LANGUAGE="English"
|
||||
|
||||
|
|
|
@ -444,6 +444,12 @@ class ListForm(CustomForm):
|
|||
fields = ["user", "name", "description", "curation", "privacy", "group"]
|
||||
|
||||
|
||||
class ListItemForm(CustomForm):
|
||||
class Meta:
|
||||
model = models.ListItem
|
||||
fields = ["user", "book", "book_list", "notes"]
|
||||
|
||||
|
||||
class GroupForm(CustomForm):
|
||||
class Meta:
|
||||
model = models.Group
|
||||
|
|
|
@ -19,9 +19,7 @@ def init_permissions():
|
|||
{
|
||||
"codename": "edit_instance_settings",
|
||||
"name": "change the instance info",
|
||||
"groups": [
|
||||
"admin",
|
||||
],
|
||||
"groups": ["admin"],
|
||||
},
|
||||
{
|
||||
"codename": "set_user_group",
|
||||
|
@ -55,7 +53,7 @@ def init_permissions():
|
|||
},
|
||||
]
|
||||
|
||||
content_type = models.ContentType.objects.get_for_model(User)
|
||||
content_type = ContentType.objects.get_for_model(models.User)
|
||||
for permission in permissions:
|
||||
permission_obj = Permission.objects.create(
|
||||
codename=permission["codename"],
|
||||
|
@ -66,15 +64,12 @@ def init_permissions():
|
|||
for group_name in permission["groups"]:
|
||||
Group.objects.get(name=group_name).permissions.add(permission_obj)
|
||||
|
||||
# while the groups and permissions shouldn't be changed because the code
|
||||
# depends on them, what permissions go with what groups should be editable
|
||||
|
||||
|
||||
def init_connectors():
|
||||
"""access book data sources"""
|
||||
models.Connector.objects.create(
|
||||
identifier="bookwyrm.social",
|
||||
name="BookWyrm dot Social",
|
||||
name="Bookwyrm.social",
|
||||
connector_file="bookwyrm_connector",
|
||||
base_url="https://bookwyrm.social",
|
||||
books_url="https://bookwyrm.social/book",
|
||||
|
@ -84,6 +79,7 @@ def init_connectors():
|
|||
priority=2,
|
||||
)
|
||||
|
||||
# pylint: disable=line-too-long
|
||||
models.Connector.objects.create(
|
||||
identifier="inventaire.io",
|
||||
name="Inventaire",
|
||||
|
@ -127,7 +123,7 @@ def init_settings():
|
|||
)
|
||||
|
||||
|
||||
def init_link_domains(*_):
|
||||
def init_link_domains():
|
||||
"""safe book links"""
|
||||
domains = [
|
||||
("standardebooks.org", "Standard EBooks"),
|
||||
|
@ -144,10 +140,15 @@ def init_link_domains(*_):
|
|||
)
|
||||
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
# pylint: disable=unused-argument
|
||||
class Command(BaseCommand):
|
||||
"""command-line options"""
|
||||
|
||||
help = "Initializes the database with starter data"
|
||||
|
||||
def add_arguments(self, parser):
|
||||
"""specify which function to run"""
|
||||
parser.add_argument(
|
||||
"--limit",
|
||||
default=None,
|
||||
|
@ -155,6 +156,7 @@ class Command(BaseCommand):
|
|||
)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
"""execute init"""
|
||||
limit = options.get("limit")
|
||||
tables = [
|
||||
"group",
|
||||
|
@ -164,7 +166,7 @@ class Command(BaseCommand):
|
|||
"settings",
|
||||
"linkdomain",
|
||||
]
|
||||
if limit not in tables:
|
||||
if limit and limit not in tables:
|
||||
raise Exception("Invalid table limit:", limit)
|
||||
|
||||
if not limit or limit == "group":
|
||||
|
|
21
bookwyrm/migrations/0130_alter_listitem_notes.py
Normal file
21
bookwyrm/migrations/0130_alter_listitem_notes.py
Normal file
|
@ -0,0 +1,21 @@
|
|||
# Generated by Django 3.2.10 on 2022-01-24 20:01
|
||||
|
||||
import bookwyrm.models.fields
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("bookwyrm", "0129_auto_20220117_1716"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="listitem",
|
||||
name="notes",
|
||||
field=bookwyrm.models.fields.TextField(
|
||||
blank=True, max_length=300, null=True
|
||||
),
|
||||
),
|
||||
]
|
37
bookwyrm/migrations/0130_alter_user_preferred_language.py
Normal file
37
bookwyrm/migrations/0130_alter_user_preferred_language.py
Normal file
|
@ -0,0 +1,37 @@
|
|||
# Generated by Django 3.2.10 on 2022-01-24 17:32
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("bookwyrm", "0129_auto_20220117_1716"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="preferred_language",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
choices=[
|
||||
("en-us", "English"),
|
||||
("de-de", "Deutsch (German)"),
|
||||
("es-es", "Español (Spanish)"),
|
||||
("gl-es", "Galego (Galician)"),
|
||||
("it-it", "Italiano (Italian)"),
|
||||
("fr-fr", "Français (French)"),
|
||||
("lt-lt", "Lietuvių (Lithuanian)"),
|
||||
("no-no", "Norsk (Norwegian)"),
|
||||
("pt-br", "Português do Brasil (Brazilian Portuguese)"),
|
||||
("pt-pt", "Português Europeu (European Portuguese)"),
|
||||
("sv-se", "Swedish (Svenska)"),
|
||||
("zh-hans", "简体中文 (Simplified Chinese)"),
|
||||
("zh-hant", "繁體中文 (Traditional Chinese)"),
|
||||
],
|
||||
max_length=255,
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
]
|
13
bookwyrm/migrations/0131_merge_20220125_1644.py
Normal file
13
bookwyrm/migrations/0131_merge_20220125_1644.py
Normal file
|
@ -0,0 +1,13 @@
|
|||
# Generated by Django 3.2.10 on 2022-01-25 16:44
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("bookwyrm", "0130_alter_listitem_notes"),
|
||||
("bookwyrm", "0130_alter_user_preferred_language"),
|
||||
]
|
||||
|
||||
operations = []
|
|
@ -2,6 +2,7 @@
|
|||
import uuid
|
||||
|
||||
from django.apps import apps
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.db import models
|
||||
from django.db.models import Q
|
||||
from django.utils import timezone
|
||||
|
@ -74,6 +75,22 @@ class List(OrderedCollectionMixin, BookWyrmModel):
|
|||
return
|
||||
super().raise_not_editable(viewer)
|
||||
|
||||
def raise_not_submittable(self, viewer):
|
||||
"""can the user submit a book to the list?"""
|
||||
# if you can't view the list you can't submit to it
|
||||
self.raise_visible_to_user(viewer)
|
||||
|
||||
# all good if you're the owner or the list is open
|
||||
if self.user == viewer or self.curation in ["open", "curated"]:
|
||||
return
|
||||
if self.curation == "group":
|
||||
is_group_member = GroupMember.objects.filter(
|
||||
group=self.group, user=viewer
|
||||
).exists()
|
||||
if is_group_member:
|
||||
return
|
||||
raise PermissionDenied()
|
||||
|
||||
@classmethod
|
||||
def followers_filter(cls, queryset, viewer):
|
||||
"""Override filter for "followers" privacy level to allow non-following
|
||||
|
@ -125,7 +142,7 @@ class ListItem(CollectionItemMixin, BookWyrmModel):
|
|||
user = fields.ForeignKey(
|
||||
"User", on_delete=models.PROTECT, activitypub_field="actor"
|
||||
)
|
||||
notes = fields.TextField(blank=True, null=True)
|
||||
notes = fields.TextField(blank=True, null=True, max_length=300)
|
||||
approved = models.BooleanField(default=True)
|
||||
order = fields.IntegerField()
|
||||
endorsement = models.ManyToManyField("User", related_name="endorsers")
|
||||
|
|
|
@ -90,6 +90,14 @@ class SiteSettings(models.Model):
|
|||
return get_absolute_url(uploaded)
|
||||
return urljoin(STATIC_FULL_URL, default_path)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
"""if require_confirm_email is disabled, make sure no users are pending"""
|
||||
if not self.require_confirm_email:
|
||||
User.objects.filter(is_active=False, deactivation_reason="pending").update(
|
||||
is_active=True, deactivation_reason=None
|
||||
)
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
|
||||
class SiteInvite(models.Model):
|
||||
"""gives someone access to create an account on the instance"""
|
||||
|
|
|
@ -14,7 +14,7 @@ VERSION = "0.2.0"
|
|||
PAGE_LENGTH = env("PAGE_LENGTH", 15)
|
||||
DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English")
|
||||
|
||||
JS_CACHE = "76c5ff1f"
|
||||
JS_CACHE = "7b5303af"
|
||||
|
||||
# email
|
||||
EMAIL_BACKEND = env("EMAIL_BACKEND", "django.core.mail.backends.smtp.EmailBackend")
|
||||
|
@ -245,7 +245,7 @@ AUTH_PASSWORD_VALIDATORS = [
|
|||
# Internationalization
|
||||
# https://docs.djangoproject.com/en/3.2/topics/i18n/
|
||||
|
||||
LANGUAGE_CODE = "en-us"
|
||||
LANGUAGE_CODE = env("LANGUAGE_CODE", "en-us")
|
||||
LANGUAGES = [
|
||||
("en-us", _("English")),
|
||||
("de-de", _("Deutsch (German)")),
|
||||
|
@ -257,6 +257,7 @@ LANGUAGES = [
|
|||
("no-no", _("Norsk (Norwegian)")),
|
||||
("pt-br", _("Português do Brasil (Brazilian Portuguese)")),
|
||||
("pt-pt", _("Português Europeu (European Portuguese)")),
|
||||
("sv-se", _("Swedish (Svenska)")),
|
||||
("zh-hans", _("简体中文 (Simplified Chinese)")),
|
||||
("zh-hant", _("繁體中文 (Traditional Chinese)")),
|
||||
]
|
||||
|
|
|
@ -122,39 +122,13 @@ let BookWyrm = new (class {
|
|||
*/
|
||||
updateCountElement(counter, data) {
|
||||
let count = data.count;
|
||||
const count_by_type = data.count_by_type;
|
||||
|
||||
if (count === undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
const currentCount = counter.innerText;
|
||||
const hasMentions = data.has_mentions;
|
||||
const allowedStatusTypesEl = document.getElementById("unread-notifications-wrapper");
|
||||
|
||||
// If we're on the right counter element
|
||||
if (counter.closest("[data-poll-wrapper]").contains(allowedStatusTypesEl)) {
|
||||
const allowedStatusTypes = JSON.parse(allowedStatusTypesEl.textContent);
|
||||
|
||||
// For keys in common between allowedStatusTypes and count_by_type
|
||||
// This concerns 'review', 'quotation', 'comment'
|
||||
count = allowedStatusTypes.reduce(function (prev, currentKey) {
|
||||
const currentValue = count_by_type[currentKey] | 0;
|
||||
|
||||
return prev + currentValue;
|
||||
}, 0);
|
||||
|
||||
// Add all the "other" in count_by_type if 'everything' is allowed
|
||||
if (allowedStatusTypes.includes("everything")) {
|
||||
// Clone count_by_type with 0 for reviews/quotations/comments
|
||||
const count_by_everything_else = Object.assign({}, count_by_type, {
|
||||
review: 0,
|
||||
quotation: 0,
|
||||
comment: 0,
|
||||
});
|
||||
|
||||
count = Object.keys(count_by_everything_else).reduce(function (prev, currentKey) {
|
||||
const currentValue = count_by_everything_else[currentKey] | 0;
|
||||
|
||||
return prev + currentValue;
|
||||
}, count);
|
||||
}
|
||||
}
|
||||
|
||||
if (count != currentCount) {
|
||||
this.addRemoveClass(counter.closest("[data-poll-wrapper]"), "is-hidden", count < 1);
|
||||
|
@ -517,7 +491,7 @@ let BookWyrm = new (class {
|
|||
|
||||
duplicateInput(event) {
|
||||
const trigger = event.currentTarget;
|
||||
const input_id = trigger.dataset["duplicate"];
|
||||
const input_id = trigger.dataset.duplicate;
|
||||
const orig = document.getElementById(input_id);
|
||||
const parent = orig.parentNode;
|
||||
const new_count = parent.querySelectorAll("input").length + 1;
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
{% block about_content %}
|
||||
{# seven day cache #}
|
||||
{% cache 604800 about_page %}
|
||||
|
||||
{% get_book_superlatives as superlatives %}
|
||||
<section class="content pb-4">
|
||||
<h2>
|
||||
|
@ -26,7 +27,7 @@
|
|||
</p>
|
||||
|
||||
<div class="columns">
|
||||
{% if top_rated %}
|
||||
{% if superlatives.top_rated %}
|
||||
{% with book=superlatives.top_rated.default_edition rating=top_rated.rating %}
|
||||
<div class="column is-one-third is-flex">
|
||||
<div class="media notification">
|
||||
|
@ -45,7 +46,7 @@
|
|||
{% endwith %}
|
||||
{% endif %}
|
||||
|
||||
{% if wanted %}
|
||||
{% if superlatives.wanted %}
|
||||
{% with book=superlatives.wanted.default_edition %}
|
||||
<div class="column is-one-third is-flex">
|
||||
<div class="media notification">
|
||||
|
@ -64,7 +65,7 @@
|
|||
{% endwith %}
|
||||
{% endif %}
|
||||
|
||||
{% if controversial %}
|
||||
{% if superlatives.controversial %}
|
||||
{% with book=superlatives.controversial.default_edition %}
|
||||
<div class="column is-one-third is-flex">
|
||||
<div class="media notification">
|
||||
|
|
|
@ -141,12 +141,14 @@
|
|||
<h2 class="title is-4">{% blocktrans with name=author.name %}Books by {{ name }}{% endblocktrans %}</h2>
|
||||
<div class="columns is-multiline is-mobile">
|
||||
{% for book in books %}
|
||||
{% with book=book.default_edition %}
|
||||
<div class="column is-one-fifth-tablet is-half-mobile is-flex is-flex-direction-column">
|
||||
<div class="is-flex-grow-1">
|
||||
{% include 'landing/small-book.html' with book=book %}
|
||||
</div>
|
||||
{% include 'snippets/shelve_button/shelve_button.html' with book=book %}
|
||||
</div>
|
||||
{% endwith %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
|
|
|
@ -24,9 +24,12 @@
|
|||
|
||||
{# announcements and system messages #}
|
||||
{% if not activities.number > 1 %}
|
||||
<a href="{{ request.path }}" class="transition-y is-hidden notification is-primary is-block" data-poll-wrapper>
|
||||
{% blocktrans with tab_key=tab.key %}load <span data-poll="stream/{{ tab_key }}">0</span> unread status(es){% endblocktrans %}
|
||||
{{ allowed_status_types|json_script:"unread-notifications-wrapper" }}
|
||||
<a
|
||||
href="{{ request.path }}"
|
||||
class="transition-y is-hidden notification is-primary is-block"
|
||||
data-poll-wrapper
|
||||
>
|
||||
<span data-poll="stream/{{ tab.key }}"></span>
|
||||
</a>
|
||||
|
||||
{% if request.user.show_goal and not goal and tab.key == 'home' %}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<div class="modal is-active" role="dialog" aria-modal="true" aria-labelledby="get_started_header">
|
||||
<div class="modal-background"></div>
|
||||
<div class="modal-card is-fullwidth">
|
||||
<header class="modal-card-head">
|
||||
<header class="modal-card-head navbar">
|
||||
<img
|
||||
class="image logo mr-2"
|
||||
src="{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static "images/logo-small.png" %}{% endif %}"
|
||||
|
|
45
bookwyrm/templates/lists/add_item_modal.html
Normal file
45
bookwyrm/templates/lists/add_item_modal.html
Normal file
|
@ -0,0 +1,45 @@
|
|||
{% extends 'components/modal.html' %}
|
||||
{% load i18n %}
|
||||
{% load utilities %}
|
||||
{% load group_tags %}
|
||||
|
||||
{% block modal-title %}
|
||||
{% if list.curation == 'open' or request.user == list.user or list.group|is_member:request.user %}
|
||||
{% blocktrans trimmed with title=book|book_title %}
|
||||
Add "<em>{{ title }}</em>" to this list
|
||||
{% endblocktrans %}
|
||||
{% else %}
|
||||
{% blocktrans trimmed with title=book|book_title %}
|
||||
Suggest "<em>{{ title }}</em>" for this list
|
||||
{% endblocktrans %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block modal-form-open %}
|
||||
<form
|
||||
name="add-book-{{ book.id }}"
|
||||
method="POST"
|
||||
action="{% url 'list-add-book' %}{% if query %}?q={{ query }}{% endif %}"
|
||||
>
|
||||
{% endblock %}
|
||||
|
||||
{% block modal-body %}
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="book" value="{{ book.id }}">
|
||||
<input type="hidden" name="book_list" value="{{ list.id }}">
|
||||
<input type="hidden" name="user" value="{{ request.user.id }}">
|
||||
{% include "lists/item_notes_field.html" with form_id=id show_label=True %}
|
||||
{% endblock %}
|
||||
|
||||
{% block modal-footer %}
|
||||
<button type="submit" class="button is-link">
|
||||
{% if list.curation == 'open' or request.user == list.user or list.group|is_member:request.user %}
|
||||
{% trans "Add" %}
|
||||
{% else %}
|
||||
{% trans "Suggest" %}
|
||||
{% endif %}
|
||||
</button>
|
||||
<button type="button" class="button" data-modal-close>{% trans "Cancel" %}</button>
|
||||
{% endblock %}
|
||||
|
||||
{% block modal-form-close %}</form>{% endblock %}
|
|
@ -1,5 +1,6 @@
|
|||
{% extends 'lists/layout.html' %}
|
||||
{% load i18n %}
|
||||
{% load utilities %}
|
||||
|
||||
{% block breadcrumbs %}
|
||||
<nav class="breadcrumb subtitle" aria-label="breadcrumbs">
|
||||
|
@ -38,6 +39,17 @@
|
|||
|
||||
<div class="column ml-3">
|
||||
{% include 'snippets/book_titleby.html' %}
|
||||
{% if item.notes %}
|
||||
<div>
|
||||
{% url 'user-feed' item.user|username as user_path %}
|
||||
{% blocktrans trimmed with username=item.user.display_name %}
|
||||
<a href="{{ user_path }}">{{ username }}</a> says:
|
||||
{% endblocktrans %}
|
||||
<p class="notification">
|
||||
{{ item.notes }}
|
||||
</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<p>
|
||||
{% trans "Suggested by" %}
|
||||
|
|
20
bookwyrm/templates/lists/edit_item_form.html
Normal file
20
bookwyrm/templates/lists/edit_item_form.html
Normal file
|
@ -0,0 +1,20 @@
|
|||
{% load i18n %}
|
||||
<form
|
||||
name="edit-notes-{{ item.id }}"
|
||||
method="POST"
|
||||
action="{% url 'list-item' list.id item.id %}"
|
||||
>
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="book" value="{{ book.id }}">
|
||||
<input type="hidden" name="book_list" value="{{ list.id }}">
|
||||
<input type="hidden" name="user" value="{{ request.user.id }}">
|
||||
{% include "lists/item_notes_field.html" with form_id=item.id %}
|
||||
<div class="field">
|
||||
<div class="control">
|
||||
<button type="submit" class="button is-success">
|
||||
{% trans "Save" %}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
21
bookwyrm/templates/lists/item_notes_field.html
Normal file
21
bookwyrm/templates/lists/item_notes_field.html
Normal file
|
@ -0,0 +1,21 @@
|
|||
{% load i18n %}
|
||||
<div class="field">
|
||||
<label
|
||||
for="id_notes_{{ form_id }}"
|
||||
class="{% if show_label %}label{% else %}is-sr-only{% endif %}"
|
||||
>
|
||||
{% trans "Notes:" %}
|
||||
</label>
|
||||
<div class="control">
|
||||
<textarea
|
||||
class="textarea"
|
||||
id="id_notes_{{ form_id }}"
|
||||
maxlength="300"
|
||||
name="notes"
|
||||
aria-describedby="notes_description_{{ form_id }}"
|
||||
>{{ item.notes|default:'' }}</textarea>
|
||||
</div>
|
||||
<p class="help" id="notes_description_{{ form_id }}">
|
||||
{% trans "An optional note that will be displayed with the book." %}
|
||||
</p>
|
||||
</div>
|
|
@ -1,9 +1,10 @@
|
|||
{% extends 'lists/layout.html' %}
|
||||
{% load i18n %}
|
||||
{% load rating_tags %}
|
||||
{% load book_display_tags %}
|
||||
{% load group_tags %}
|
||||
{% load book_display_tags %}
|
||||
{% load markdown %}
|
||||
{% load utilities %}
|
||||
|
||||
{% block breadcrumbs %}
|
||||
<nav class="breadcrumb subtitle" aria-label="breadcrumbs">
|
||||
|
@ -21,7 +22,7 @@
|
|||
{% block panel %}
|
||||
{% if request.user == list.user and pending_count %}
|
||||
<div class="block content">
|
||||
<p>
|
||||
<p class="notification">
|
||||
<a href="{% url 'list-curate' list.id %}">{{ pending_count }} book{{ pending_count|pluralize }} awaiting your approval</a>
|
||||
</p>
|
||||
</div>
|
||||
|
@ -46,21 +47,16 @@
|
|||
{% for item in items %}
|
||||
<li class="block mb-5">
|
||||
<div class="card">
|
||||
{% with book=item.book %}
|
||||
<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">
|
||||
<div class="card-content">
|
||||
{% with book=item.book %}
|
||||
<div class="columns is-mobile">
|
||||
<div class="column is-narrow is-cover">
|
||||
<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">
|
||||
<div class="column">
|
||||
<p>
|
||||
{% include 'snippets/book_titleby.html' %}
|
||||
</p>
|
||||
|
@ -73,8 +69,54 @@
|
|||
{% include 'snippets/shelve_button/shelve_button.html' with book=book %}
|
||||
</div>
|
||||
</div>
|
||||
{% endwith %}
|
||||
{% endwith %}
|
||||
|
||||
{% if item.notes %}
|
||||
<div class="media notification">
|
||||
<figure class="media-left" aria-hidden="true">
|
||||
{% include "snippets/avatar.html" with user=item.user %}
|
||||
</figure>
|
||||
<div class="media-content">
|
||||
<div class="content">
|
||||
<header>
|
||||
{% url 'user-feed' user|username as user_path %}
|
||||
{% blocktrans trimmed with username=user.display_name %}
|
||||
<a href="{{ user_path }}">{{ username }}</a> says:
|
||||
{% endblocktrans %}
|
||||
</header>
|
||||
<p>
|
||||
{{ item.notes|to_markdown|safe }}
|
||||
</p>
|
||||
</div>
|
||||
{% if item.user == request.user %}
|
||||
<div>
|
||||
<details class="details-panel box">
|
||||
<summary>
|
||||
<span role="heading" aria-level="3">
|
||||
{% trans "Edit notes" %}
|
||||
<span class="details-close icon icon-pencil" aria-hidden></span>
|
||||
</span>
|
||||
</summary>
|
||||
{% include "lists/edit_item_form.html" %}
|
||||
</details>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% elif item.user == request.user %}
|
||||
<div>
|
||||
<details class="details-panel box">
|
||||
<summary>
|
||||
<span role="heading" aria-level="3">
|
||||
{% trans "Add notes" %}
|
||||
<span class="details-close icon icon-plus" aria-hidden></span>
|
||||
</span>
|
||||
</summary>
|
||||
{% include "lists/edit_item_form.html" %}
|
||||
</details>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="card-footer is-stacked-mobile has-background-white-bis is-align-items-stretch">
|
||||
<div class="card-footer-item">
|
||||
<p>
|
||||
|
@ -195,23 +237,19 @@
|
|||
<div class="column ml-3">
|
||||
<p>{% include 'snippets/book_titleby.html' with book=book %}</p>
|
||||
|
||||
<form
|
||||
class="mt-1"
|
||||
name="add-book-{{ book.id }}"
|
||||
method="post"
|
||||
action="{% url 'list-add-book' %}{% if query %}?q={{ query }}{% endif %}"
|
||||
{% join "add_item" list.id book.id as modal_id %}
|
||||
<button
|
||||
type="button"
|
||||
class="button is-small is-link"
|
||||
data-modal-open="{{ modal_id }}"
|
||||
>
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="book" value="{{ book.id }}">
|
||||
<input type="hidden" name="list" value="{{ list.id }}">
|
||||
<button type="submit" class="button is-small is-link">
|
||||
{% if list.curation == 'open' or request.user == list.user or list.group|is_member:request.user %}
|
||||
{% trans "Add" %}
|
||||
{% else %}
|
||||
{% trans "Suggest" %}
|
||||
{% endif %}
|
||||
</button>
|
||||
</form>
|
||||
{% if list.curation == 'open' or request.user == list.user or list.group|is_member:request.user %}
|
||||
{% trans "Add" %}
|
||||
{% else %}
|
||||
{% trans "Suggest" %}
|
||||
{% endif %}
|
||||
</button>
|
||||
{% include "lists/add_item_modal.html" with id=modal_id %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
@ -225,7 +263,7 @@
|
|||
<textarea
|
||||
readonly
|
||||
class="textarea is-small"
|
||||
aria-labelledby="embed-label"
|
||||
aria-describedby="embed-label"
|
||||
data-copytext
|
||||
data-copytext-label="{% trans 'Copy embed code' %}"
|
||||
data-copytext-success="{% trans 'Copied!' %}"
|
||||
|
|
|
@ -1,5 +1,78 @@
|
|||
# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
|
||||
|
||||
##### AhrefsBot #####
|
||||
# see http://ahrefs.com/robot/
|
||||
User-agent: AhrefsBot
|
||||
Crawl-Delay: 10
|
||||
#Disallow: /
|
||||
|
||||
|
||||
##### SemrushBot #####
|
||||
# see http://www.semrush.com/bot.html
|
||||
User-agent: SemrushBot
|
||||
Crawl-Delay: 10
|
||||
#Disallow: /
|
||||
|
||||
# To block SemrushBot from crawling your site for different SEO and technical issues:
|
||||
User-agent: SiteAuditBot
|
||||
Disallow: /
|
||||
|
||||
#To block SemrushBot from crawling your site for Backlink Audit tool:
|
||||
User-agent: SemrushBot-BA
|
||||
Disallow: /
|
||||
|
||||
#To block SemrushBot from crawling your site for On Page SEO Checker tool and similar tools:
|
||||
User-agent: SemrushBot-SI
|
||||
Disallow: /
|
||||
|
||||
#To block SemrushBot from checking URLs on your site for SWA tool:
|
||||
User-agent: SemrushBot-SWA
|
||||
Disallow: /
|
||||
|
||||
#To block SemrushBot from crawling your site for Content Analyzer and Post Tracking tools:
|
||||
User-agent: SemrushBot-CT
|
||||
Disallow: /
|
||||
|
||||
#To block SemrushBot from crawling your site for Brand Monitoring:
|
||||
User-agent: SemrushBot-BM
|
||||
Disallow: /
|
||||
|
||||
#To block SplitSignalBot from crawling your site for SplitSignal tool:
|
||||
User-agent: SplitSignalBot
|
||||
Disallow: /
|
||||
|
||||
#To block SemrushBot-COUB from crawling your site for Content Outline Builder tool:
|
||||
User-agent: SemrushBot-COUB
|
||||
Disallow: /
|
||||
|
||||
|
||||
##### DotBot #####
|
||||
# see https://opensiteexplorer.org/dotbot
|
||||
User-agent: dotbot
|
||||
Crawl-delay: 10
|
||||
#Disallow: /
|
||||
|
||||
|
||||
##### BLEXBot #####
|
||||
# see http://webmeup-crawler.com/
|
||||
User-agent: BLEXBot
|
||||
Crawl-delay: 10
|
||||
#Disallow: /
|
||||
|
||||
|
||||
##### MJ12bot #####
|
||||
# see http://mj12bot.com/
|
||||
User-Agent: MJ12bot
|
||||
Crawl-Delay: 20
|
||||
#Disallow: /
|
||||
|
||||
|
||||
##### PetalBot #####
|
||||
# see https://webmaster.petalsearch.com/site/petalbot
|
||||
User-agent: PetalBot
|
||||
Disallow: /
|
||||
|
||||
|
||||
User-agent: *
|
||||
Disallow: /static/js/
|
||||
Disallow: /static/css/
|
||||
|
|
|
@ -92,7 +92,7 @@
|
|||
</span>
|
||||
{% with count=books.paginator.count %}
|
||||
{% if count %}
|
||||
<p class="help">
|
||||
<span class="help">
|
||||
{% blocktrans trimmed count counter=count with formatted_count=count|intcomma %}
|
||||
{{ formatted_count }} book
|
||||
{% plural %}
|
||||
|
@ -104,7 +104,7 @@
|
|||
(showing {{ start }}-{{ end }})
|
||||
{% endblocktrans %}
|
||||
{% endif %}
|
||||
</p>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
</h2>
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
{% load static %}
|
||||
|
||||
<img class="avatar image {% if large %}is-96x96{% elif medium %}is-48x48{% else %}is-32x32{% endif %}" src="{% if user.avatar %}{% get_media_prefix %}{{ user.avatar }}{% else %}{% static "images/default_avi.jpg" %}{% endif %}" {% if ariaHide %}aria-hidden="true"{% endif %} alt="{{ user.alt_text }}">
|
||||
|
||||
<img
|
||||
class="avatar image {% if large %}is-96x96{% elif medium %}is-48x48{% else %}is-32x32{% endif %}"
|
||||
src="{% if user.avatar %}{% get_media_prefix %}{{ user.avatar }}{% else %}{% static "images/default_avi.jpg" %}{% endif %}"
|
||||
{% if ariaHide %}aria-hidden="true"{% endif %}
|
||||
alt="{{ user.alt_text }}"
|
||||
>
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
{% if shelf.editable %}
|
||||
<li role="menuitem" class="dropdown-item p-0">
|
||||
<form name="shelve" action="/shelve/" method="post">
|
||||
<form name="editable-shelve-{{ uuid }}" action="/shelve/" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="book" value="{{ book.id }}">
|
||||
<input type="hidden" name="change-shelf-from" value="{{ current.identifier }}">
|
||||
|
@ -67,7 +67,7 @@
|
|||
{% if user_shelf in book.shelves.all %}
|
||||
<li class="navbar-divider m-0" role="separator" ></li>
|
||||
<li role="menuitem" class="dropdown-item p-0">
|
||||
<form name="shelve" action="/unshelve/" method="post">
|
||||
<form name="shelve-{{ user_shelf.identifier }}-{{ book.id }}-{{ uuid }}" action="/unshelve/" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="book" value="{{ book.id }}">
|
||||
<input type="hidden" name="shelf" value="{{ user_shelf.id }}">
|
||||
|
@ -79,7 +79,7 @@
|
|||
{% else %}
|
||||
<li class="navbar-divider" role="separator" ></li>
|
||||
<li role="menuitem" class="dropdown-item p-0">
|
||||
<form name="shelve" action="/unshelve/" method="post">
|
||||
<form name="un-shelve-{{ shelf.identifier }}-{{ book.id }}-{{ uuid }}" action="/unshelve/" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="book" value="{{ book.id }}">
|
||||
<input type="hidden" name="shelf" value="{{ shelf.id }}">
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
|
||||
{% if active_shelf.shelf %}
|
||||
<li role="menuitem" class="dropdown-item p-0" data-extra-options>
|
||||
<form name="shelve" action="/unshelve/" method="post">
|
||||
<form name="unshelve-{{ uuid }}-{{ shelf.identifier }}" action="/unshelve/" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="book" value="{{ active_shelf.book.id }}">
|
||||
<input type="hidden" name="shelf" value="{{ active_shelf.shelf.id }}">
|
||||
|
|
113
bookwyrm/tests/management/test_initdb.py
Normal file
113
bookwyrm/tests/management/test_initdb.py
Normal file
|
@ -0,0 +1,113 @@
|
|||
""" test populating user streams """
|
||||
from django.contrib.auth.models import Group, Permission
|
||||
from django.test import TestCase
|
||||
|
||||
from bookwyrm import models
|
||||
from bookwyrm.management.commands import initdb
|
||||
|
||||
|
||||
class InitDB(TestCase):
|
||||
"""gotta init that db"""
|
||||
|
||||
def test_init_groups(self):
|
||||
"""Create groups"""
|
||||
initdb.init_groups()
|
||||
self.assertEqual(Group.objects.count(), 3)
|
||||
self.assertTrue(Group.objects.filter(name="admin").exists())
|
||||
self.assertTrue(Group.objects.filter(name="moderator").exists())
|
||||
self.assertTrue(Group.objects.filter(name="editor").exists())
|
||||
|
||||
def test_init_permissions(self):
|
||||
"""User permissions"""
|
||||
initdb.init_groups()
|
||||
initdb.init_permissions()
|
||||
|
||||
group = Group.objects.get(name="admin")
|
||||
self.assertTrue(
|
||||
group.permissions.filter(codename="edit_instance_settings").exists()
|
||||
)
|
||||
self.assertTrue(group.permissions.filter(codename="set_user_group").exists())
|
||||
self.assertTrue(
|
||||
group.permissions.filter(codename="control_federation").exists()
|
||||
)
|
||||
self.assertTrue(group.permissions.filter(codename="create_invites").exists())
|
||||
self.assertTrue(group.permissions.filter(codename="moderate_user").exists())
|
||||
self.assertTrue(group.permissions.filter(codename="moderate_post").exists())
|
||||
self.assertTrue(group.permissions.filter(codename="edit_book").exists())
|
||||
|
||||
group = Group.objects.get(name="moderator")
|
||||
self.assertTrue(group.permissions.filter(codename="set_user_group").exists())
|
||||
self.assertTrue(
|
||||
group.permissions.filter(codename="control_federation").exists()
|
||||
)
|
||||
self.assertTrue(group.permissions.filter(codename="create_invites").exists())
|
||||
self.assertTrue(group.permissions.filter(codename="moderate_user").exists())
|
||||
self.assertTrue(group.permissions.filter(codename="moderate_post").exists())
|
||||
self.assertTrue(group.permissions.filter(codename="edit_book").exists())
|
||||
|
||||
group = Group.objects.get(name="editor")
|
||||
self.assertTrue(group.permissions.filter(codename="edit_book").exists())
|
||||
|
||||
def test_init_connectors(self):
|
||||
"""Outside data sources"""
|
||||
initdb.init_connectors()
|
||||
self.assertTrue(
|
||||
models.Connector.objects.filter(identifier="bookwyrm.social").exists()
|
||||
)
|
||||
self.assertTrue(
|
||||
models.Connector.objects.filter(identifier="inventaire.io").exists()
|
||||
)
|
||||
self.assertTrue(
|
||||
models.Connector.objects.filter(identifier="openlibrary.org").exists()
|
||||
)
|
||||
|
||||
def test_init_settings(self):
|
||||
"""Create the settings file"""
|
||||
initdb.init_settings()
|
||||
settings = models.SiteSettings.objects.get()
|
||||
self.assertEqual(settings.name, "BookWyrm")
|
||||
|
||||
def test_init_link_domains(self):
|
||||
"""Common trusted domains for links"""
|
||||
initdb.init_link_domains()
|
||||
self.assertTrue(
|
||||
models.LinkDomain.objects.filter(
|
||||
status="approved", domain="standardebooks.org"
|
||||
).exists()
|
||||
)
|
||||
self.assertTrue(
|
||||
models.LinkDomain.objects.filter(
|
||||
status="approved", domain="theanarchistlibrary.org"
|
||||
).exists()
|
||||
)
|
||||
|
||||
def test_command_no_args(self):
|
||||
"""command line calls"""
|
||||
command = initdb.Command()
|
||||
command.handle()
|
||||
|
||||
# everything should have been called
|
||||
self.assertEqual(Group.objects.count(), 3)
|
||||
self.assertTrue(Permission.objects.exists())
|
||||
self.assertEqual(models.Connector.objects.count(), 3)
|
||||
self.assertEqual(models.FederatedServer.objects.count(), 2)
|
||||
self.assertEqual(models.SiteSettings.objects.count(), 1)
|
||||
self.assertEqual(models.LinkDomain.objects.count(), 5)
|
||||
|
||||
def test_command_with_args(self):
|
||||
"""command line calls"""
|
||||
command = initdb.Command()
|
||||
command.handle(limit="group")
|
||||
|
||||
# everything should have been called
|
||||
self.assertEqual(Group.objects.count(), 3)
|
||||
self.assertEqual(models.Connector.objects.count(), 0)
|
||||
self.assertEqual(models.FederatedServer.objects.count(), 0)
|
||||
self.assertEqual(models.SiteSettings.objects.count(), 0)
|
||||
self.assertEqual(models.LinkDomain.objects.count(), 0)
|
||||
|
||||
def test_command_invalid_args(self):
|
||||
"""command line calls"""
|
||||
command = initdb.Command()
|
||||
with self.assertRaises(Exception):
|
||||
command.handle(limit="sdkfjhsdkjf")
|
|
@ -93,3 +93,48 @@ class SiteModels(TestCase):
|
|||
token = models.PasswordReset.objects.create(user=self.local_user, code="hello")
|
||||
self.assertTrue(token.valid())
|
||||
self.assertEqual(token.link, f"https://{settings.DOMAIN}/password-reset/hello")
|
||||
|
||||
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
|
||||
@patch("bookwyrm.suggested_users.remove_user_task.delay")
|
||||
@patch("bookwyrm.activitystreams.populate_stream_task.delay")
|
||||
@patch("bookwyrm.lists_stream.populate_lists_task.delay")
|
||||
def test_change_confirmation_scheme(self, *_):
|
||||
"""Switch from requiring email confirmation to not"""
|
||||
site = models.SiteSettings.objects.create(
|
||||
id=1, name="Fish Town", require_confirm_email=True
|
||||
)
|
||||
banned_user = models.User.objects.create_user(
|
||||
"rat@local.com",
|
||||
"rat@rat.com",
|
||||
"ratword",
|
||||
local=True,
|
||||
localname="rat",
|
||||
remote_id="https://example.com/users/rat",
|
||||
confirmation_code="HELLO",
|
||||
)
|
||||
banned_user.is_active = False
|
||||
banned_user.deactivation_reason = "banned"
|
||||
banned_user.save(broadcast=False)
|
||||
|
||||
pending_user = models.User.objects.create_user(
|
||||
"nutria@local.com",
|
||||
"nutria@nutria.com",
|
||||
"nutriaword",
|
||||
local=True,
|
||||
localname="nutria",
|
||||
remote_id="https://example.com/users/nutria",
|
||||
confirmation_code="HELLO",
|
||||
)
|
||||
pending_user.is_active = False
|
||||
pending_user.deactivation_reason = "pending"
|
||||
pending_user.save(broadcast=False)
|
||||
site.require_confirm_email = False
|
||||
site.save()
|
||||
|
||||
pending_user.refresh_from_db()
|
||||
self.assertTrue(pending_user.is_active)
|
||||
self.assertIsNone(pending_user.deactivation_reason)
|
||||
|
||||
banned_user.refresh_from_db()
|
||||
self.assertFalse(banned_user.is_active)
|
||||
self.assertIsNotNone(banned_user.deactivation_reason)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
""" test for app action functionality """
|
||||
import os
|
||||
import json
|
||||
from unittest.mock import patch
|
||||
|
||||
|
@ -207,3 +208,6 @@ class FederationViews(TestCase):
|
|||
created = models.FederatedServer.objects.get(server_name="server.name")
|
||||
self.assertEqual(created.status, "blocked")
|
||||
self.assertEqual(created.notes, "https://explanation.url")
|
||||
|
||||
# remove file.json after test
|
||||
os.remove("file.json")
|
||||
|
|
|
@ -118,6 +118,7 @@ class InboxAdd(TestCase):
|
|||
"type": "ListItem",
|
||||
"book": self.book.remote_id,
|
||||
"id": "https://example.com/listbook/6189",
|
||||
"notes": "hi hello",
|
||||
"order": 1,
|
||||
},
|
||||
"target": "https://example.com/user/mouse/list/to-read",
|
||||
|
@ -130,3 +131,4 @@ class InboxAdd(TestCase):
|
|||
self.assertEqual(booklist.name, "Test List")
|
||||
self.assertEqual(booklist.books.first(), self.book)
|
||||
self.assertEqual(listitem.remote_id, "https://example.com/listbook/6189")
|
||||
self.assertEqual(listitem.notes, "hi hello")
|
||||
|
|
1
bookwyrm/tests/views/lists/__init__.py
Normal file
1
bookwyrm/tests/views/lists/__init__.py
Normal file
|
@ -0,0 +1 @@
|
|||
from . import *
|
129
bookwyrm/tests/views/lists/test_curate.py
Normal file
129
bookwyrm/tests/views/lists/test_curate.py
Normal file
|
@ -0,0 +1,129 @@
|
|||
""" test for app action functionality """
|
||||
import json
|
||||
from unittest.mock import patch
|
||||
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
from django.template.response import TemplateResponse
|
||||
from django.test import TestCase
|
||||
from django.test.client import RequestFactory
|
||||
|
||||
from bookwyrm import models, views
|
||||
from bookwyrm.tests.validate_html import validate_html
|
||||
|
||||
|
||||
# pylint: disable=unused-argument
|
||||
class ListViews(TestCase):
|
||||
"""list view"""
|
||||
|
||||
def setUp(self):
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch(
|
||||
"bookwyrm.activitystreams.populate_stream_task.delay"
|
||||
), patch("bookwyrm.lists_stream.populate_lists_task.delay"):
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
"mouse@mouse.com",
|
||||
"mouseword",
|
||||
local=True,
|
||||
localname="mouse",
|
||||
remote_id="https://example.com/users/mouse",
|
||||
)
|
||||
work = models.Work.objects.create(title="Work")
|
||||
self.book = models.Edition.objects.create(
|
||||
title="Example Edition",
|
||||
remote_id="https://example.com/book/1",
|
||||
parent_work=work,
|
||||
)
|
||||
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
self.list = models.List.objects.create(
|
||||
name="Test List", user=self.local_user
|
||||
)
|
||||
self.anonymous_user = AnonymousUser
|
||||
self.anonymous_user.is_authenticated = False
|
||||
|
||||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_curate_page(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Curate.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=False,
|
||||
order=1,
|
||||
)
|
||||
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
request.user = self.anonymous_user
|
||||
result = view(request, self.list.id)
|
||||
self.assertEqual(result.status_code, 302)
|
||||
|
||||
def test_curate_approve(self):
|
||||
"""approve a pending item"""
|
||||
view = views.Curate.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
pending = models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=False,
|
||||
order=1,
|
||||
)
|
||||
|
||||
request = self.factory.post(
|
||||
"",
|
||||
{"item": pending.id, "approved": "true"},
|
||||
)
|
||||
request.user = self.local_user
|
||||
|
||||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"
|
||||
) as mock:
|
||||
view(request, self.list.id)
|
||||
|
||||
self.assertEqual(mock.call_count, 2)
|
||||
activity = json.loads(mock.call_args[1]["args"][1])
|
||||
self.assertEqual(activity["type"], "Add")
|
||||
self.assertEqual(activity["actor"], self.local_user.remote_id)
|
||||
self.assertEqual(activity["target"], self.list.remote_id)
|
||||
|
||||
pending.refresh_from_db()
|
||||
self.assertEqual(self.list.books.count(), 1)
|
||||
self.assertEqual(self.list.listitem_set.first(), pending)
|
||||
self.assertTrue(pending.approved)
|
||||
|
||||
def test_curate_reject(self):
|
||||
"""approve a pending item"""
|
||||
view = views.Curate.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
pending = models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=False,
|
||||
order=1,
|
||||
)
|
||||
|
||||
request = self.factory.post(
|
||||
"",
|
||||
{
|
||||
"item": pending.id,
|
||||
"approved": "false",
|
||||
},
|
||||
)
|
||||
request.user = self.local_user
|
||||
|
||||
view(request, self.list.id)
|
||||
|
||||
self.assertFalse(self.list.books.exists())
|
||||
self.assertFalse(models.ListItem.objects.exists())
|
89
bookwyrm/tests/views/lists/test_embed.py
Normal file
89
bookwyrm/tests/views/lists/test_embed.py
Normal file
|
@ -0,0 +1,89 @@
|
|||
""" test for app action functionality """
|
||||
from unittest.mock import patch
|
||||
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
from django.http.response import Http404
|
||||
from django.template.response import TemplateResponse
|
||||
from django.test import TestCase
|
||||
from django.test.client import RequestFactory
|
||||
|
||||
from bookwyrm import models, views
|
||||
from bookwyrm.tests.validate_html import validate_html
|
||||
|
||||
|
||||
# pylint: disable=unused-argument
|
||||
class ListViews(TestCase):
|
||||
"""list view"""
|
||||
|
||||
def setUp(self):
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch(
|
||||
"bookwyrm.activitystreams.populate_stream_task.delay"
|
||||
), patch("bookwyrm.lists_stream.populate_lists_task.delay"):
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
"mouse@mouse.com",
|
||||
"mouseword",
|
||||
local=True,
|
||||
localname="mouse",
|
||||
remote_id="https://example.com/users/mouse",
|
||||
)
|
||||
work = models.Work.objects.create(title="Work")
|
||||
self.book = models.Edition.objects.create(
|
||||
title="Example Edition",
|
||||
remote_id="https://example.com/book/1",
|
||||
parent_work=work,
|
||||
)
|
||||
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
self.list = models.List.objects.create(
|
||||
name="Test List", user=self.local_user
|
||||
)
|
||||
self.anonymous_user = AnonymousUser
|
||||
self.anonymous_user.is_authenticated = False
|
||||
|
||||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_embed_call_without_key(self):
|
||||
"""there are so many views, this just makes sure it DOESN’T load"""
|
||||
view = views.unsafe_embed_list
|
||||
request = self.factory.get("")
|
||||
request.user = self.anonymous_user
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=True,
|
||||
order=1,
|
||||
)
|
||||
|
||||
with patch("bookwyrm.views.list.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
with self.assertRaises(Http404):
|
||||
view(request, self.list.id, "")
|
||||
|
||||
def test_embed_call_with_key(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.unsafe_embed_list
|
||||
request = self.factory.get("")
|
||||
request.user = self.anonymous_user
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=True,
|
||||
order=1,
|
||||
)
|
||||
|
||||
embed_key = str(self.list.embed_key.hex)
|
||||
|
||||
with patch("bookwyrm.views.list.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.list.id, embed_key)
|
||||
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
|
@ -4,14 +4,19 @@ from unittest.mock import patch
|
|||
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.template.response import TemplateResponse
|
||||
from django.test import TestCase
|
||||
from django.test.client import RequestFactory
|
||||
|
||||
from bookwyrm import models, views
|
||||
from bookwyrm.activitypub import ActivitypubResponse
|
||||
from bookwyrm.tests.validate_html import validate_html
|
||||
|
||||
|
||||
# pylint: disable=unused-argument
|
||||
class ListActionViews(TestCase):
|
||||
"""tag views"""
|
||||
# pylint: disable=too-many-public-methods
|
||||
class ListViews(TestCase):
|
||||
"""list view"""
|
||||
|
||||
def setUp(self):
|
||||
"""we need basic test data and mocks"""
|
||||
|
@ -35,7 +40,6 @@ class ListActionViews(TestCase):
|
|||
localname="rat",
|
||||
remote_id="https://example.com/users/rat",
|
||||
)
|
||||
|
||||
work = models.Work.objects.create(title="Work")
|
||||
self.book = models.Edition.objects.create(
|
||||
title="Example Edition",
|
||||
|
@ -67,8 +71,194 @@ class ListActionViews(TestCase):
|
|||
)
|
||||
self.anonymous_user = AnonymousUser
|
||||
self.anonymous_user.is_authenticated = False
|
||||
|
||||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_list_page(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.List.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=True,
|
||||
order=1,
|
||||
)
|
||||
|
||||
with patch("bookwyrm.views.list.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_list_page_with_query(self):
|
||||
"""searching for a book to add"""
|
||||
view = views.List.as_view()
|
||||
request = self.factory.get("", {"q": "Example Edition"})
|
||||
request.user = self.local_user
|
||||
|
||||
with patch("bookwyrm.views.list.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_list_page_sorted(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.List.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
for (i, book) in enumerate([self.book, self.book_two, self.book_three]):
|
||||
models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=book,
|
||||
approved=True,
|
||||
order=i + 1,
|
||||
)
|
||||
|
||||
request = self.factory.get("/?sort_by=order")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.views.list.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
request = self.factory.get("/?sort_by=title")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.views.list.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
request = self.factory.get("/?sort_by=rating")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.views.list.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
request = self.factory.get("/?sort_by=sdkfh")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.views.list.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_list_page_empty(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.List.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
with patch("bookwyrm.views.list.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_list_page_logged_out(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.List.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=True,
|
||||
order=1,
|
||||
)
|
||||
|
||||
request = self.factory.get("")
|
||||
request.user = self.anonymous_user
|
||||
with patch("bookwyrm.views.list.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_list_page_json_view(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.List.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=True,
|
||||
order=1,
|
||||
)
|
||||
|
||||
with patch("bookwyrm.views.list.list.is_api_request") as is_api:
|
||||
is_api.return_value = True
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, ActivitypubResponse)
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_list_page_json_view_page(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.List.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
request = self.factory.get("/?page=1")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.views.list.list.is_api_request") as is_api:
|
||||
is_api.return_value = True
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, ActivitypubResponse)
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_list_edit(self):
|
||||
"""edit a list"""
|
||||
view = views.List.as_view()
|
||||
request = self.factory.post(
|
||||
"",
|
||||
{
|
||||
"name": "New Name",
|
||||
"description": "wow",
|
||||
"privacy": "direct",
|
||||
"curation": "curated",
|
||||
"user": self.local_user.id,
|
||||
},
|
||||
)
|
||||
request.user = self.local_user
|
||||
|
||||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"
|
||||
) as mock:
|
||||
result = view(request, self.list.id)
|
||||
|
||||
self.assertEqual(mock.call_count, 1)
|
||||
activity = json.loads(mock.call_args[1]["args"][1])
|
||||
self.assertEqual(activity["type"], "Update")
|
||||
self.assertEqual(activity["actor"], self.local_user.remote_id)
|
||||
self.assertEqual(activity["object"]["id"], self.list.remote_id)
|
||||
|
||||
self.assertEqual(result.status_code, 302)
|
||||
|
||||
self.list.refresh_from_db()
|
||||
self.assertEqual(self.list.name, "New Name")
|
||||
self.assertEqual(self.list.description, "wow")
|
||||
self.assertEqual(self.list.privacy, "direct")
|
||||
self.assertEqual(self.list.curation, "curated")
|
||||
|
||||
def test_delete_list(self):
|
||||
"""delete an entire list"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
|
@ -110,73 +300,14 @@ class ListActionViews(TestCase):
|
|||
with self.assertRaises(PermissionDenied):
|
||||
views.delete_list(request, self.list.id)
|
||||
|
||||
def test_curate_approve(self):
|
||||
"""approve a pending item"""
|
||||
view = views.Curate.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
pending = models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=False,
|
||||
order=1,
|
||||
)
|
||||
|
||||
request = self.factory.post(
|
||||
"",
|
||||
{"item": pending.id, "approved": "true"},
|
||||
)
|
||||
request.user = self.local_user
|
||||
|
||||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"
|
||||
) as mock:
|
||||
view(request, self.list.id)
|
||||
|
||||
self.assertEqual(mock.call_count, 2)
|
||||
activity = json.loads(mock.call_args[1]["args"][1])
|
||||
self.assertEqual(activity["type"], "Add")
|
||||
self.assertEqual(activity["actor"], self.local_user.remote_id)
|
||||
self.assertEqual(activity["target"], self.list.remote_id)
|
||||
|
||||
pending.refresh_from_db()
|
||||
self.assertEqual(self.list.books.count(), 1)
|
||||
self.assertEqual(self.list.listitem_set.first(), pending)
|
||||
self.assertTrue(pending.approved)
|
||||
|
||||
def test_curate_reject(self):
|
||||
"""approve a pending item"""
|
||||
view = views.Curate.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
pending = models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=False,
|
||||
order=1,
|
||||
)
|
||||
|
||||
request = self.factory.post(
|
||||
"",
|
||||
{
|
||||
"item": pending.id,
|
||||
"approved": "false",
|
||||
},
|
||||
)
|
||||
request.user = self.local_user
|
||||
|
||||
view(request, self.list.id)
|
||||
|
||||
self.assertFalse(self.list.books.exists())
|
||||
self.assertFalse(models.ListItem.objects.exists())
|
||||
|
||||
def test_add_book(self):
|
||||
"""put a book on a list"""
|
||||
request = self.factory.post(
|
||||
"",
|
||||
{
|
||||
"book": self.book.id,
|
||||
"list": self.list.id,
|
||||
"book_list": self.list.id,
|
||||
"user": self.local_user.id,
|
||||
},
|
||||
)
|
||||
request.user = self.local_user
|
||||
|
@ -184,7 +315,7 @@ class ListActionViews(TestCase):
|
|||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"
|
||||
) as mock:
|
||||
views.list.add_book(request)
|
||||
views.add_book(request)
|
||||
self.assertEqual(mock.call_count, 1)
|
||||
activity = json.loads(mock.call_args[1]["args"][1])
|
||||
self.assertEqual(activity["type"], "Add")
|
||||
|
@ -205,7 +336,8 @@ class ListActionViews(TestCase):
|
|||
"",
|
||||
{
|
||||
"book": self.book.id,
|
||||
"list": self.list.id,
|
||||
"book_list": self.list.id,
|
||||
"user": self.local_user.id,
|
||||
},
|
||||
)
|
||||
request_one.user = self.local_user
|
||||
|
@ -214,13 +346,14 @@ class ListActionViews(TestCase):
|
|||
"",
|
||||
{
|
||||
"book": self.book_two.id,
|
||||
"list": self.list.id,
|
||||
"book_list": self.list.id,
|
||||
"user": self.local_user.id,
|
||||
},
|
||||
)
|
||||
request_two.user = self.local_user
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
views.list.add_book(request_one)
|
||||
views.list.add_book(request_two)
|
||||
views.add_book(request_one)
|
||||
views.add_book(request_two)
|
||||
|
||||
items = self.list.listitem_set.order_by("order").all()
|
||||
self.assertEqual(items[0].book, self.book)
|
||||
|
@ -237,7 +370,8 @@ class ListActionViews(TestCase):
|
|||
"",
|
||||
{
|
||||
"book": self.book.id,
|
||||
"list": self.list.id,
|
||||
"book_list": self.list.id,
|
||||
"user": self.local_user.id,
|
||||
},
|
||||
)
|
||||
request_one.user = self.local_user
|
||||
|
@ -246,7 +380,8 @@ class ListActionViews(TestCase):
|
|||
"",
|
||||
{
|
||||
"book": self.book_two.id,
|
||||
"list": self.list.id,
|
||||
"book_list": self.list.id,
|
||||
"user": self.local_user.id,
|
||||
},
|
||||
)
|
||||
request_two.user = self.local_user
|
||||
|
@ -255,15 +390,16 @@ class ListActionViews(TestCase):
|
|||
"",
|
||||
{
|
||||
"book": self.book_three.id,
|
||||
"list": self.list.id,
|
||||
"book_list": self.list.id,
|
||||
"user": self.local_user.id,
|
||||
},
|
||||
)
|
||||
request_three.user = self.local_user
|
||||
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
views.list.add_book(request_one)
|
||||
views.list.add_book(request_two)
|
||||
views.list.add_book(request_three)
|
||||
views.add_book(request_one)
|
||||
views.add_book(request_two)
|
||||
views.add_book(request_three)
|
||||
|
||||
items = self.list.listitem_set.order_by("order").all()
|
||||
self.assertEqual(items[0].book, self.book)
|
||||
|
@ -276,7 +412,7 @@ class ListActionViews(TestCase):
|
|||
remove_request = self.factory.post("", {"item": items[1].id})
|
||||
remove_request.user = self.local_user
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
views.list.remove_book(remove_request, self.list.id)
|
||||
views.remove_book(remove_request, self.list.id)
|
||||
items = self.list.listitem_set.order_by("order").all()
|
||||
self.assertEqual(items[0].book, self.book)
|
||||
self.assertEqual(items[1].book, self.book_three)
|
||||
|
@ -293,7 +429,8 @@ class ListActionViews(TestCase):
|
|||
"",
|
||||
{
|
||||
"book": self.book_three.id,
|
||||
"list": self.list.id,
|
||||
"book_list": self.list.id,
|
||||
"user": self.local_user.id,
|
||||
},
|
||||
)
|
||||
request.user = self.local_user
|
||||
|
@ -312,7 +449,7 @@ class ListActionViews(TestCase):
|
|||
approved=False,
|
||||
order=2,
|
||||
)
|
||||
views.list.add_book(request)
|
||||
views.add_book(request)
|
||||
|
||||
items = self.list.listitem_set.order_by("order").all()
|
||||
self.assertEqual(items[0].book, self.book)
|
||||
|
@ -403,7 +540,8 @@ class ListActionViews(TestCase):
|
|||
"",
|
||||
{
|
||||
"book": self.book.id,
|
||||
"list": self.list.id,
|
||||
"book_list": self.list.id,
|
||||
"user": self.local_user.id,
|
||||
},
|
||||
)
|
||||
request_one.user = self.local_user
|
||||
|
@ -412,7 +550,8 @@ class ListActionViews(TestCase):
|
|||
"",
|
||||
{
|
||||
"book": self.book_two.id,
|
||||
"list": self.list.id,
|
||||
"book_list": self.list.id,
|
||||
"user": self.local_user.id,
|
||||
},
|
||||
)
|
||||
request_two.user = self.local_user
|
||||
|
@ -421,15 +560,16 @@ class ListActionViews(TestCase):
|
|||
"",
|
||||
{
|
||||
"book": self.book_three.id,
|
||||
"list": self.list.id,
|
||||
"book_list": self.list.id,
|
||||
"user": self.local_user.id,
|
||||
},
|
||||
)
|
||||
request_three.user = self.local_user
|
||||
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
views.list.add_book(request_one)
|
||||
views.list.add_book(request_two)
|
||||
views.list.add_book(request_three)
|
||||
views.add_book(request_one)
|
||||
views.add_book(request_two)
|
||||
views.add_book(request_three)
|
||||
|
||||
items = self.list.listitem_set.order_by("order").all()
|
||||
self.assertEqual(items[0].book, self.book)
|
||||
|
@ -442,7 +582,7 @@ class ListActionViews(TestCase):
|
|||
set_position_request = self.factory.post("", {"position": 1})
|
||||
set_position_request.user = self.local_user
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
views.list.set_book_position(set_position_request, items[2].id)
|
||||
views.set_book_position(set_position_request, items[2].id)
|
||||
items = self.list.listitem_set.order_by("order").all()
|
||||
self.assertEqual(items[0].book, self.book_three)
|
||||
self.assertEqual(items[1].book, self.book)
|
||||
|
@ -459,7 +599,8 @@ class ListActionViews(TestCase):
|
|||
"",
|
||||
{
|
||||
"book": self.book.id,
|
||||
"list": self.list.id,
|
||||
"book_list": self.list.id,
|
||||
"user": self.rat.id,
|
||||
},
|
||||
)
|
||||
request.user = self.rat
|
||||
|
@ -467,7 +608,7 @@ class ListActionViews(TestCase):
|
|||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"
|
||||
) as mock:
|
||||
views.list.add_book(request)
|
||||
views.add_book(request)
|
||||
self.assertEqual(mock.call_count, 1)
|
||||
activity = json.loads(mock.call_args[1]["args"][1])
|
||||
self.assertEqual(activity["type"], "Add")
|
||||
|
@ -487,7 +628,8 @@ class ListActionViews(TestCase):
|
|||
"",
|
||||
{
|
||||
"book": self.book.id,
|
||||
"list": self.list.id,
|
||||
"book_list": self.list.id,
|
||||
"user": self.rat.id,
|
||||
},
|
||||
)
|
||||
request.user = self.rat
|
||||
|
@ -495,7 +637,7 @@ class ListActionViews(TestCase):
|
|||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"
|
||||
) as mock:
|
||||
views.list.add_book(request)
|
||||
views.add_book(request)
|
||||
|
||||
self.assertEqual(mock.call_count, 1)
|
||||
activity = json.loads(mock.call_args[1]["args"][1])
|
||||
|
@ -519,7 +661,8 @@ class ListActionViews(TestCase):
|
|||
"",
|
||||
{
|
||||
"book": self.book.id,
|
||||
"list": self.list.id,
|
||||
"book_list": self.list.id,
|
||||
"user": self.local_user.id,
|
||||
},
|
||||
)
|
||||
request.user = self.local_user
|
||||
|
@ -527,7 +670,7 @@ class ListActionViews(TestCase):
|
|||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"
|
||||
) as mock:
|
||||
views.list.add_book(request)
|
||||
views.add_book(request)
|
||||
self.assertEqual(mock.call_count, 1)
|
||||
activity = json.loads(mock.call_args[1]["args"][1])
|
||||
self.assertEqual(activity["type"], "Add")
|
||||
|
@ -539,6 +682,23 @@ class ListActionViews(TestCase):
|
|||
self.assertEqual(item.user, self.local_user)
|
||||
self.assertTrue(item.approved)
|
||||
|
||||
def test_add_book_permission_denied(self):
|
||||
"""you can't add to that list"""
|
||||
self.list.curation = "closed"
|
||||
self.list.save(broadcast=False)
|
||||
request = self.factory.post(
|
||||
"",
|
||||
{
|
||||
"book": self.book.id,
|
||||
"book_list": self.list.id,
|
||||
"user": self.rat.id,
|
||||
},
|
||||
)
|
||||
request.user = self.rat
|
||||
|
||||
with self.assertRaises(PermissionDenied):
|
||||
views.add_book(request)
|
||||
|
||||
def test_remove_book(self):
|
||||
"""take an item off a list"""
|
||||
|
||||
|
@ -555,7 +715,7 @@ class ListActionViews(TestCase):
|
|||
request.user = self.local_user
|
||||
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
views.list.remove_book(request, self.list.id)
|
||||
views.remove_book(request, self.list.id)
|
||||
self.assertFalse(self.list.listitem_set.exists())
|
||||
|
||||
def test_remove_book_unauthorized(self):
|
||||
|
@ -569,7 +729,7 @@ class ListActionViews(TestCase):
|
|||
request.user = self.rat
|
||||
|
||||
with self.assertRaises(PermissionDenied):
|
||||
views.list.remove_book(request, self.list.id)
|
||||
views.remove_book(request, self.list.id)
|
||||
self.assertTrue(self.list.listitem_set.exists())
|
||||
|
||||
def test_save_unsave_list(self):
|
70
bookwyrm/tests/views/lists/test_list_item.py
Normal file
70
bookwyrm/tests/views/lists/test_list_item.py
Normal file
|
@ -0,0 +1,70 @@
|
|||
""" test for app action functionality """
|
||||
from unittest.mock import patch
|
||||
|
||||
from django.test import TestCase
|
||||
from django.test.client import RequestFactory
|
||||
|
||||
from bookwyrm import models, views
|
||||
|
||||
|
||||
# pylint: disable=unused-argument
|
||||
# pylint: disable=too-many-public-methods
|
||||
class ListItemViews(TestCase):
|
||||
"""list view"""
|
||||
|
||||
def setUp(self):
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch(
|
||||
"bookwyrm.activitystreams.populate_stream_task.delay"
|
||||
), patch("bookwyrm.lists_stream.populate_lists_task.delay"):
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
"mouse@mouse.com",
|
||||
"mouseword",
|
||||
local=True,
|
||||
localname="mouse",
|
||||
remote_id="https://example.com/users/mouse",
|
||||
)
|
||||
work = models.Work.objects.create(title="Work")
|
||||
self.book = models.Edition.objects.create(
|
||||
title="Example Edition",
|
||||
remote_id="https://example.com/book/1",
|
||||
parent_work=work,
|
||||
)
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
self.list = models.List.objects.create(
|
||||
name="Test List", user=self.local_user
|
||||
)
|
||||
|
||||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_add_list_item_notes(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.ListItem.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
item = models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=True,
|
||||
order=1,
|
||||
)
|
||||
request = self.factory.post(
|
||||
"",
|
||||
{
|
||||
"book_list": self.list.id,
|
||||
"book": self.book.id,
|
||||
"user": self.local_user.id,
|
||||
"notes": "beep boop",
|
||||
},
|
||||
)
|
||||
request.user = self.local_user
|
||||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"
|
||||
) as mock:
|
||||
view(request, self.list.id, item.id)
|
||||
self.assertEqual(mock.call_count, 1)
|
||||
|
||||
item.refresh_from_db()
|
||||
self.assertEqual(item.notes, "beep boop")
|
161
bookwyrm/tests/views/lists/test_lists.py
Normal file
161
bookwyrm/tests/views/lists/test_lists.py
Normal file
|
@ -0,0 +1,161 @@
|
|||
""" test for app action functionality """
|
||||
import json
|
||||
from unittest.mock import patch
|
||||
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
from django.template.response import TemplateResponse
|
||||
from django.test import TestCase
|
||||
from django.test.client import RequestFactory
|
||||
|
||||
from bookwyrm import models, views
|
||||
from bookwyrm.tests.validate_html import validate_html
|
||||
|
||||
# pylint: disable=unused-argument
|
||||
class ListViews(TestCase):
|
||||
"""lists of lists"""
|
||||
|
||||
def setUp(self):
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch(
|
||||
"bookwyrm.activitystreams.populate_stream_task.delay"
|
||||
), patch("bookwyrm.lists_stream.populate_lists_task.delay"):
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
"mouse@mouse.com",
|
||||
"mouseword",
|
||||
local=True,
|
||||
localname="mouse",
|
||||
remote_id="https://example.com/users/mouse",
|
||||
)
|
||||
self.anonymous_user = AnonymousUser
|
||||
self.anonymous_user.is_authenticated = False
|
||||
|
||||
models.SiteSettings.objects.create()
|
||||
|
||||
@patch("bookwyrm.lists_stream.ListsStream.get_list_stream")
|
||||
def test_lists_page(self, _):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Lists.as_view()
|
||||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"
|
||||
), patch("bookwyrm.lists_stream.add_list_task.delay"):
|
||||
models.List.objects.create(name="Public list", user=self.local_user)
|
||||
models.List.objects.create(
|
||||
name="Private list", privacy="direct", user=self.local_user
|
||||
)
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
result = view(request)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
request.user = self.anonymous_user
|
||||
|
||||
result = view(request)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_saved_lists_page(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.SavedLists.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
booklist = models.List.objects.create(
|
||||
name="Public list", user=self.local_user
|
||||
)
|
||||
models.List.objects.create(
|
||||
name="Private list", privacy="direct", user=self.local_user
|
||||
)
|
||||
self.local_user.saved_lists.add(booklist)
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
result = view(request)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
self.assertEqual(result.context_data["lists"].object_list, [booklist])
|
||||
|
||||
def test_saved_lists_page_empty(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.SavedLists.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
models.List.objects.create(name="Public list", user=self.local_user)
|
||||
models.List.objects.create(
|
||||
name="Private list", privacy="direct", user=self.local_user
|
||||
)
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
result = view(request)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
self.assertEqual(len(result.context_data["lists"].object_list), 0)
|
||||
|
||||
def test_saved_lists_page_logged_out(self):
|
||||
"""logged out saved lists"""
|
||||
view = views.SavedLists.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.anonymous_user
|
||||
|
||||
result = view(request)
|
||||
self.assertEqual(result.status_code, 302)
|
||||
|
||||
def test_user_lists_page(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.UserLists.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
models.List.objects.create(name="Public list", user=self.local_user)
|
||||
models.List.objects.create(
|
||||
name="Private list", privacy="direct", user=self.local_user
|
||||
)
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
result = view(request, self.local_user.localname)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_user_lists_page_logged_out(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.UserLists.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.anonymous_user
|
||||
|
||||
result = view(request, self.local_user.username)
|
||||
self.assertEqual(result.status_code, 302)
|
||||
|
||||
def test_lists_create(self):
|
||||
"""create list view"""
|
||||
view = views.Lists.as_view()
|
||||
request = self.factory.post(
|
||||
"",
|
||||
{
|
||||
"name": "A list",
|
||||
"description": "wow",
|
||||
"privacy": "unlisted",
|
||||
"curation": "open",
|
||||
"user": self.local_user.id,
|
||||
},
|
||||
)
|
||||
request.user = self.local_user
|
||||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"
|
||||
) as mock:
|
||||
result = view(request)
|
||||
|
||||
self.assertEqual(mock.call_count, 1)
|
||||
activity = json.loads(mock.call_args[1]["args"][1])
|
||||
self.assertEqual(activity["type"], "Create")
|
||||
self.assertEqual(activity["actor"], self.local_user.remote_id)
|
||||
|
||||
self.assertEqual(result.status_code, 302)
|
||||
new_list = models.List.objects.filter(name="A list").get()
|
||||
self.assertEqual(new_list.description, "wow")
|
||||
self.assertEqual(new_list.privacy, "unlisted")
|
||||
self.assertEqual(new_list.curation, "open")
|
|
@ -51,6 +51,11 @@ class ShelfViews(TestCase):
|
|||
|
||||
def test_shelf_page_all_books(self, *_):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
models.ShelfBook.objects.create(
|
||||
book=self.book,
|
||||
shelf=self.shelf,
|
||||
user=self.local_user,
|
||||
)
|
||||
view = views.Shelf.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -61,6 +66,41 @@ class ShelfViews(TestCase):
|
|||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_shelf_page_all_books_empty(self, *_):
|
||||
"""No books shelved"""
|
||||
view = views.Shelf.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.views.shelf.shelf.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.local_user.username)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_shelf_page_all_books_avoid_duplicates(self, *_):
|
||||
"""Make sure books aren't showing up twice on the all shelves view"""
|
||||
models.ShelfBook.objects.create(
|
||||
book=self.book,
|
||||
shelf=self.shelf,
|
||||
user=self.local_user,
|
||||
)
|
||||
models.ShelfBook.objects.create(
|
||||
book=self.book,
|
||||
shelf=self.local_user.shelf_set.first(),
|
||||
user=self.local_user,
|
||||
)
|
||||
view = views.Shelf.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.views.shelf.shelf.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.local_user.username)
|
||||
self.assertEqual(result.context_data["books"].object_list.count(), 1)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_shelf_page_all_books_json(self, *_):
|
||||
"""there is no json view here"""
|
||||
view = views.Shelf.as_view()
|
||||
|
|
|
@ -1,438 +0,0 @@
|
|||
""" test for app action functionality """
|
||||
import json
|
||||
from unittest.mock import patch
|
||||
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
from django.http.response import Http404
|
||||
from django.template.response import TemplateResponse
|
||||
from django.test import TestCase
|
||||
from django.test.client import RequestFactory
|
||||
|
||||
from bookwyrm import models, views
|
||||
from bookwyrm.activitypub import ActivitypubResponse
|
||||
from bookwyrm.tests.validate_html import validate_html
|
||||
|
||||
# pylint: disable=unused-argument
|
||||
class ListViews(TestCase):
|
||||
"""tag views"""
|
||||
|
||||
def setUp(self):
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch(
|
||||
"bookwyrm.activitystreams.populate_stream_task.delay"
|
||||
), patch("bookwyrm.lists_stream.populate_lists_task.delay"):
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
"mouse@mouse.com",
|
||||
"mouseword",
|
||||
local=True,
|
||||
localname="mouse",
|
||||
remote_id="https://example.com/users/mouse",
|
||||
)
|
||||
self.rat = models.User.objects.create_user(
|
||||
"rat@local.com",
|
||||
"rat@rat.com",
|
||||
"ratword",
|
||||
local=True,
|
||||
localname="rat",
|
||||
remote_id="https://example.com/users/rat",
|
||||
)
|
||||
work = models.Work.objects.create(title="Work")
|
||||
self.book = models.Edition.objects.create(
|
||||
title="Example Edition",
|
||||
remote_id="https://example.com/book/1",
|
||||
parent_work=work,
|
||||
)
|
||||
work_two = models.Work.objects.create(title="Labori")
|
||||
self.book_two = models.Edition.objects.create(
|
||||
title="Example Edition 2",
|
||||
remote_id="https://example.com/book/2",
|
||||
parent_work=work_two,
|
||||
)
|
||||
work_three = models.Work.objects.create(title="Trabajar")
|
||||
self.book_three = models.Edition.objects.create(
|
||||
title="Example Edition 3",
|
||||
remote_id="https://example.com/book/3",
|
||||
parent_work=work_three,
|
||||
)
|
||||
work_four = models.Work.objects.create(title="Travailler")
|
||||
self.book_four = models.Edition.objects.create(
|
||||
title="Example Edition 4",
|
||||
remote_id="https://example.com/book/4",
|
||||
parent_work=work_four,
|
||||
)
|
||||
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
self.list = models.List.objects.create(
|
||||
name="Test List", user=self.local_user
|
||||
)
|
||||
self.anonymous_user = AnonymousUser
|
||||
self.anonymous_user.is_authenticated = False
|
||||
|
||||
models.SiteSettings.objects.create()
|
||||
|
||||
@patch("bookwyrm.lists_stream.ListsStream.get_list_stream")
|
||||
def test_lists_page(self, _):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Lists.as_view()
|
||||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"
|
||||
), patch("bookwyrm.lists_stream.add_list_task.delay"):
|
||||
models.List.objects.create(name="Public list", user=self.local_user)
|
||||
models.List.objects.create(
|
||||
name="Private list", privacy="direct", user=self.local_user
|
||||
)
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
result = view(request)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
request.user = self.anonymous_user
|
||||
|
||||
result = view(request)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_saved_lists_page(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.SavedLists.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
booklist = models.List.objects.create(
|
||||
name="Public list", user=self.local_user
|
||||
)
|
||||
models.List.objects.create(
|
||||
name="Private list", privacy="direct", user=self.local_user
|
||||
)
|
||||
self.local_user.saved_lists.add(booklist)
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
result = view(request)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
self.assertEqual(result.context_data["lists"].object_list, [booklist])
|
||||
|
||||
def test_saved_lists_page_empty(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.SavedLists.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
models.List.objects.create(name="Public list", user=self.local_user)
|
||||
models.List.objects.create(
|
||||
name="Private list", privacy="direct", user=self.local_user
|
||||
)
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
result = view(request)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
self.assertEqual(len(result.context_data["lists"].object_list), 0)
|
||||
|
||||
def test_saved_lists_page_logged_out(self):
|
||||
"""logged out saved lists"""
|
||||
view = views.SavedLists.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.anonymous_user
|
||||
|
||||
result = view(request)
|
||||
self.assertEqual(result.status_code, 302)
|
||||
|
||||
def test_lists_create(self):
|
||||
"""create list view"""
|
||||
view = views.Lists.as_view()
|
||||
request = self.factory.post(
|
||||
"",
|
||||
{
|
||||
"name": "A list",
|
||||
"description": "wow",
|
||||
"privacy": "unlisted",
|
||||
"curation": "open",
|
||||
"user": self.local_user.id,
|
||||
},
|
||||
)
|
||||
request.user = self.local_user
|
||||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"
|
||||
) as mock:
|
||||
result = view(request)
|
||||
|
||||
self.assertEqual(mock.call_count, 1)
|
||||
activity = json.loads(mock.call_args[1]["args"][1])
|
||||
self.assertEqual(activity["type"], "Create")
|
||||
self.assertEqual(activity["actor"], self.local_user.remote_id)
|
||||
|
||||
self.assertEqual(result.status_code, 302)
|
||||
new_list = models.List.objects.filter(name="A list").get()
|
||||
self.assertEqual(new_list.description, "wow")
|
||||
self.assertEqual(new_list.privacy, "unlisted")
|
||||
self.assertEqual(new_list.curation, "open")
|
||||
|
||||
def test_list_page(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.List.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=True,
|
||||
order=1,
|
||||
)
|
||||
|
||||
with patch("bookwyrm.views.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_list_page_sorted(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.List.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
for (i, book) in enumerate([self.book, self.book_two, self.book_three]):
|
||||
models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=book,
|
||||
approved=True,
|
||||
order=i + 1,
|
||||
)
|
||||
|
||||
request = self.factory.get("/?sort_by=order")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.views.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
request = self.factory.get("/?sort_by=title")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.views.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
request = self.factory.get("/?sort_by=rating")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.views.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
request = self.factory.get("/?sort_by=sdkfh")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.views.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_list_page_empty(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.List.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
with patch("bookwyrm.views.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_list_page_logged_out(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.List.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=True,
|
||||
order=1,
|
||||
)
|
||||
|
||||
request = self.factory.get("")
|
||||
request.user = self.anonymous_user
|
||||
with patch("bookwyrm.views.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_list_page_json_view(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.List.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=True,
|
||||
order=1,
|
||||
)
|
||||
|
||||
with patch("bookwyrm.views.list.is_api_request") as is_api:
|
||||
is_api.return_value = True
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, ActivitypubResponse)
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_list_page_json_view_page(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.List.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
request = self.factory.get("/?page=1")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.views.list.is_api_request") as is_api:
|
||||
is_api.return_value = True
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, ActivitypubResponse)
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_list_edit(self):
|
||||
"""edit a list"""
|
||||
view = views.List.as_view()
|
||||
request = self.factory.post(
|
||||
"",
|
||||
{
|
||||
"name": "New Name",
|
||||
"description": "wow",
|
||||
"privacy": "direct",
|
||||
"curation": "curated",
|
||||
"user": self.local_user.id,
|
||||
},
|
||||
)
|
||||
request.user = self.local_user
|
||||
|
||||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"
|
||||
) as mock:
|
||||
result = view(request, self.list.id)
|
||||
|
||||
self.assertEqual(mock.call_count, 1)
|
||||
activity = json.loads(mock.call_args[1]["args"][1])
|
||||
self.assertEqual(activity["type"], "Update")
|
||||
self.assertEqual(activity["actor"], self.local_user.remote_id)
|
||||
self.assertEqual(activity["object"]["id"], self.list.remote_id)
|
||||
|
||||
self.assertEqual(result.status_code, 302)
|
||||
|
||||
self.list.refresh_from_db()
|
||||
self.assertEqual(self.list.name, "New Name")
|
||||
self.assertEqual(self.list.description, "wow")
|
||||
self.assertEqual(self.list.privacy, "direct")
|
||||
self.assertEqual(self.list.curation, "curated")
|
||||
|
||||
def test_curate_page(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Curate.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=False,
|
||||
order=1,
|
||||
)
|
||||
|
||||
result = view(request, self.list.id)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
request.user = self.anonymous_user
|
||||
result = view(request, self.list.id)
|
||||
self.assertEqual(result.status_code, 302)
|
||||
|
||||
def test_user_lists_page(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.UserLists.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
models.List.objects.create(name="Public list", user=self.local_user)
|
||||
models.List.objects.create(
|
||||
name="Private list", privacy="direct", user=self.local_user
|
||||
)
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
result = view(request, self.local_user.localname)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_user_lists_page_logged_out(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.UserLists.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.anonymous_user
|
||||
|
||||
result = view(request, self.local_user.username)
|
||||
self.assertEqual(result.status_code, 302)
|
||||
|
||||
def test_embed_call_without_key(self):
|
||||
"""there are so many views, this just makes sure it DOESN’T load"""
|
||||
view = views.unsafe_embed_list
|
||||
request = self.factory.get("")
|
||||
request.user = self.anonymous_user
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=True,
|
||||
order=1,
|
||||
)
|
||||
|
||||
with patch("bookwyrm.views.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
with self.assertRaises(Http404):
|
||||
view(request, self.list.id, "")
|
||||
|
||||
def test_embed_call_with_key(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.unsafe_embed_list
|
||||
request = self.factory.get("")
|
||||
request.user = self.anonymous_user
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
|
||||
models.ListItem.objects.create(
|
||||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=True,
|
||||
order=1,
|
||||
)
|
||||
|
||||
embed_key = str(self.list.embed_key.hex)
|
||||
|
||||
with patch("bookwyrm.views.list.is_api_request") as is_api:
|
||||
is_api.return_value = False
|
||||
result = view(request, self.list.id, embed_key)
|
||||
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
|
@ -45,31 +45,51 @@ class UpdateViews(TestCase):
|
|||
data = json.loads(result.getvalue())
|
||||
self.assertEqual(data["count"], 1)
|
||||
|
||||
def test_get_unread_status_count(self):
|
||||
def test_get_unread_status_string(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
with patch(
|
||||
"bookwyrm.activitystreams.ActivityStream.get_unread_count"
|
||||
) as mock_count:
|
||||
with patch(
|
||||
# pylint:disable=line-too-long
|
||||
"bookwyrm.activitystreams.ActivityStream.get_unread_count_by_status_type"
|
||||
) as mock_count_by_status:
|
||||
mock_count.return_value = 3
|
||||
mock_count_by_status.return_value = {"review": 5}
|
||||
result = views.get_unread_status_count(request, "home")
|
||||
) as mock_count, patch(
|
||||
"bookwyrm.activitystreams.ActivityStream.get_unread_count_by_status_type"
|
||||
) as mock_count_by_status:
|
||||
mock_count.return_value = 3
|
||||
mock_count_by_status.return_value = {"review": 5}
|
||||
result = views.get_unread_status_string(request, "home")
|
||||
|
||||
self.assertIsInstance(result, JsonResponse)
|
||||
data = json.loads(result.getvalue())
|
||||
self.assertEqual(data["count"], 3)
|
||||
self.assertEqual(data["count_by_type"]["review"], 5)
|
||||
self.assertEqual(data["count"], "Load 5 unread statuses")
|
||||
|
||||
def test_get_unread_status_count_invalid_stream(self):
|
||||
def test_get_unread_status_string_with_filters(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
self.local_user.feed_status_types = ["comment", "everything"]
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
with patch(
|
||||
"bookwyrm.activitystreams.ActivityStream.get_unread_count"
|
||||
) as mock_count, patch(
|
||||
"bookwyrm.activitystreams.ActivityStream.get_unread_count_by_status_type"
|
||||
) as mock_count_by_status:
|
||||
mock_count.return_value = 3
|
||||
mock_count_by_status.return_value = {
|
||||
"generated_note": 1,
|
||||
"comment": 1,
|
||||
"review": 10,
|
||||
}
|
||||
result = views.get_unread_status_string(request, "home")
|
||||
|
||||
self.assertIsInstance(result, JsonResponse)
|
||||
data = json.loads(result.getvalue())
|
||||
self.assertEqual(data["count"], "Load 2 unread statuses")
|
||||
|
||||
def test_get_unread_status_string_invalid_stream(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
with self.assertRaises(Http404):
|
||||
views.get_unread_status_count(request, "fish")
|
||||
views.get_unread_status_string(request, "fish")
|
||||
|
|
|
@ -49,7 +49,9 @@ urlpatterns = [
|
|||
re_path(r"^ostatus_subscribe/?$", views.ostatus_follow_request),
|
||||
# polling updates
|
||||
re_path("^api/updates/notifications/?$", views.get_notification_count),
|
||||
re_path("^api/updates/stream/(?P<stream>[a-z]+)/?$", views.get_unread_status_count),
|
||||
re_path(
|
||||
"^api/updates/stream/(?P<stream>[a-z]+)/?$", views.get_unread_status_string
|
||||
),
|
||||
# authentication
|
||||
re_path(r"^login/?$", views.Login.as_view(), name="login"),
|
||||
re_path(r"^login/(?P<confirmed>confirmed)/?$", views.Login.as_view(), name="login"),
|
||||
|
@ -359,16 +361,21 @@ urlpatterns = [
|
|||
re_path(r"^list/?$", views.Lists.as_view(), name="lists"),
|
||||
re_path(r"^list/saved/?$", views.SavedLists.as_view(), name="saved-lists"),
|
||||
re_path(r"^list/(?P<list_id>\d+)(.json)?/?$", views.List.as_view(), name="list"),
|
||||
re_path(
|
||||
r"^list/(?P<list_id>\d+)/item/(?P<list_item>\d+)/?$",
|
||||
views.ListItem.as_view(),
|
||||
name="list-item",
|
||||
),
|
||||
re_path(r"^list/delete/(?P<list_id>\d+)/?$", views.delete_list, name="delete-list"),
|
||||
re_path(r"^list/add-book/?$", views.list.add_book, name="list-add-book"),
|
||||
re_path(r"^list/add-book/?$", views.add_book, name="list-add-book"),
|
||||
re_path(
|
||||
r"^list/(?P<list_id>\d+)/remove/?$",
|
||||
views.list.remove_book,
|
||||
views.remove_book,
|
||||
name="list-remove-book",
|
||||
),
|
||||
re_path(
|
||||
r"^list-item/(?P<list_item_id>\d+)/set-position$",
|
||||
views.list.set_book_position,
|
||||
views.set_book_position,
|
||||
name="list-set-book-position",
|
||||
),
|
||||
re_path(
|
||||
|
|
|
@ -61,6 +61,21 @@ from .imports.manually_review import (
|
|||
delete_import_item,
|
||||
)
|
||||
|
||||
# lists
|
||||
from .list.curate import Curate
|
||||
from .list.embed import unsafe_embed_list
|
||||
from .list.list_item import ListItem
|
||||
from .list.lists import Lists, SavedLists, UserLists
|
||||
from .list.list import (
|
||||
List,
|
||||
save_list,
|
||||
unsave_list,
|
||||
delete_list,
|
||||
add_book,
|
||||
remove_book,
|
||||
set_book_position,
|
||||
)
|
||||
|
||||
# misc views
|
||||
from .author import Author, EditAuthor, update_author_from_remote
|
||||
from .directory import Directory
|
||||
|
@ -90,8 +105,6 @@ from .group import (
|
|||
from .inbox import Inbox
|
||||
from .interaction import Favorite, Unfavorite, Boost, Unboost
|
||||
from .isbn import Isbn
|
||||
from .list import Lists, SavedLists, List, Curate, UserLists
|
||||
from .list import save_list, unsave_list, delete_list, unsafe_embed_list
|
||||
from .notifications import Notifications
|
||||
from .outbox import Outbox
|
||||
from .reading import ReadThrough, delete_readthrough, delete_progressupdate
|
||||
|
@ -101,7 +114,7 @@ from .rss_feed import RssFeed
|
|||
from .search import Search
|
||||
from .status import CreateStatus, EditStatus, DeleteStatus, update_progress
|
||||
from .status import edit_readthrough
|
||||
from .updates import get_notification_count, get_unread_status_count
|
||||
from .updates import get_notification_count, get_unread_status_string
|
||||
from .user import User, Followers, Following, hide_suggestions, user_redirect
|
||||
from .wellknown import *
|
||||
from .annual_summary import (
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
""" the good people stuff! the authors! """
|
||||
from django.contrib.auth.decorators import login_required, permission_required
|
||||
from django.core.paginator import Paginator
|
||||
from django.db.models import OuterRef, Subquery, F, Q
|
||||
from django.shortcuts import get_object_or_404, redirect
|
||||
from django.template.response import TemplateResponse
|
||||
from django.utils.decorators import method_decorator
|
||||
|
@ -12,7 +11,6 @@ from bookwyrm import forms, models
|
|||
from bookwyrm.activitypub import ActivitypubResponse
|
||||
from bookwyrm.connectors import connector_manager
|
||||
from bookwyrm.settings import PAGE_LENGTH
|
||||
from bookwyrm.utils import cache
|
||||
from bookwyrm.views.helpers import is_api_request
|
||||
|
||||
|
||||
|
@ -27,28 +25,9 @@ class Author(View):
|
|||
if is_api_request(request):
|
||||
return ActivitypubResponse(author.to_activity())
|
||||
|
||||
default_editions = models.Edition.objects.filter(
|
||||
parent_work=OuterRef("parent_work")
|
||||
).order_by("-edition_rank")
|
||||
|
||||
book_ids = cache.get_or_set(
|
||||
f"author-books-{author.id}",
|
||||
lambda a: models.Edition.objects.filter(
|
||||
Q(authors=a) | Q(parent_work__authors=a)
|
||||
)
|
||||
.annotate(default_id=Subquery(default_editions.values("id")[:1]))
|
||||
.filter(default_id=F("id"))
|
||||
.distinct()
|
||||
.values_list("id", flat=True),
|
||||
author,
|
||||
timeout=15552000,
|
||||
)
|
||||
|
||||
books = (
|
||||
models.Edition.objects.filter(id__in=book_ids)
|
||||
.order_by("-published_date", "-first_published_date", "-created_date")
|
||||
.prefetch_related("authors")
|
||||
)
|
||||
books = models.Work.objects.filter(
|
||||
authors=author, editions__authors=author
|
||||
).distinct()
|
||||
|
||||
paginated = Paginator(books, PAGE_LENGTH)
|
||||
page = paginated.get_page(request.GET.get("page"))
|
||||
|
|
|
@ -62,7 +62,6 @@ class Feed(View):
|
|||
"streams": STREAMS,
|
||||
"goal_form": forms.GoalForm(),
|
||||
"feed_status_types_options": FeedFilterChoices,
|
||||
"allowed_status_types": request.user.feed_status_types,
|
||||
"filters_applied": filters_applied,
|
||||
"path": f"/{tab['key']}",
|
||||
"annual_summary_year": get_annual_summary_year(),
|
||||
|
|
|
@ -57,14 +57,7 @@ class GetStartedBooks(View):
|
|||
if len(book_results) < 5:
|
||||
popular_books = (
|
||||
models.Edition.objects.exclude(
|
||||
# exclude already shelved
|
||||
Q(
|
||||
parent_work__in=[
|
||||
b.book.parent_work
|
||||
for b in request.user.shelfbook_set.distinct().all()
|
||||
]
|
||||
)
|
||||
| Q( # and exclude if it's already in search results
|
||||
Q( # exclude if it's already in search results
|
||||
parent_work__in=[b.parent_work for b in book_results]
|
||||
)
|
||||
)
|
||||
|
|
55
bookwyrm/views/list/curate.py
Normal file
55
bookwyrm/views/list/curate.py
Normal file
|
@ -0,0 +1,55 @@
|
|||
""" book list views"""
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.db.models import Max
|
||||
from django.shortcuts import get_object_or_404, redirect
|
||||
from django.template.response import TemplateResponse
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.views import View
|
||||
|
||||
from bookwyrm import forms, models
|
||||
from bookwyrm.views.list.list import increment_order_in_reverse
|
||||
from bookwyrm.views.list.list import normalize_book_list_ordering
|
||||
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
class Curate(View):
|
||||
"""approve or discard list suggestsions"""
|
||||
|
||||
def get(self, request, list_id):
|
||||
"""display a pending list"""
|
||||
book_list = get_object_or_404(models.List, id=list_id)
|
||||
book_list.raise_not_editable(request.user)
|
||||
|
||||
data = {
|
||||
"list": book_list,
|
||||
"pending": book_list.listitem_set.filter(approved=False),
|
||||
"list_form": forms.ListForm(instance=book_list),
|
||||
}
|
||||
return TemplateResponse(request, "lists/curate.html", data)
|
||||
|
||||
def post(self, request, list_id):
|
||||
"""edit a book_list"""
|
||||
book_list = get_object_or_404(models.List, id=list_id)
|
||||
book_list.raise_not_editable(request.user)
|
||||
|
||||
suggestion = get_object_or_404(models.ListItem, id=request.POST.get("item"))
|
||||
approved = request.POST.get("approved") == "true"
|
||||
if approved:
|
||||
# update the book and set it to be the last in the order of approved books,
|
||||
# before any pending books
|
||||
suggestion.approved = True
|
||||
order_max = (
|
||||
book_list.listitem_set.filter(approved=True).aggregate(Max("order"))[
|
||||
"order__max"
|
||||
]
|
||||
or 0
|
||||
) + 1
|
||||
suggestion.order = order_max
|
||||
increment_order_in_reverse(book_list.id, order_max)
|
||||
suggestion.save()
|
||||
else:
|
||||
deleted_order = suggestion.order
|
||||
suggestion.delete(broadcast=False)
|
||||
normalize_book_list_ordering(book_list.id, start=deleted_order)
|
||||
return redirect("list-curate", book_list.id)
|
75
bookwyrm/views/list/embed.py
Normal file
75
bookwyrm/views/list/embed.py
Normal file
|
@ -0,0 +1,75 @@
|
|||
""" book list views"""
|
||||
from django.core.paginator import Paginator
|
||||
from django.db.models import Avg, DecimalField
|
||||
from django.db.models.functions import Coalesce
|
||||
from django.http import Http404
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.template.response import TemplateResponse
|
||||
from django.views import View
|
||||
from django.views.decorators.clickjacking import xframe_options_exempt
|
||||
|
||||
from bookwyrm import models
|
||||
from bookwyrm.settings import PAGE_LENGTH
|
||||
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
class EmbedList(View):
|
||||
"""embeded book list page"""
|
||||
|
||||
def get(self, request, list_id, list_key):
|
||||
"""display a book list"""
|
||||
book_list = get_object_or_404(models.List, id=list_id)
|
||||
|
||||
embed_key = str(book_list.embed_key.hex)
|
||||
|
||||
if list_key != embed_key:
|
||||
raise Http404()
|
||||
|
||||
# sort_by shall be "order" unless a valid alternative is given
|
||||
sort_by = request.GET.get("sort_by", "order")
|
||||
if sort_by not in ("order", "title", "rating"):
|
||||
sort_by = "order"
|
||||
|
||||
# direction shall be "ascending" unless a valid alternative is given
|
||||
direction = request.GET.get("direction", "ascending")
|
||||
if direction not in ("ascending", "descending"):
|
||||
direction = "ascending"
|
||||
|
||||
directional_sort_by = {
|
||||
"order": "order",
|
||||
"title": "book__title",
|
||||
"rating": "average_rating",
|
||||
}[sort_by]
|
||||
if direction == "descending":
|
||||
directional_sort_by = "-" + directional_sort_by
|
||||
|
||||
items = book_list.listitem_set.prefetch_related("user", "book", "book__authors")
|
||||
if sort_by == "rating":
|
||||
items = items.annotate(
|
||||
average_rating=Avg(
|
||||
Coalesce("book__review__rating", 0.0),
|
||||
output_field=DecimalField(),
|
||||
)
|
||||
)
|
||||
items = items.filter(approved=True).order_by(directional_sort_by)
|
||||
|
||||
paginated = Paginator(items, PAGE_LENGTH)
|
||||
|
||||
page = paginated.get_page(request.GET.get("page"))
|
||||
|
||||
data = {
|
||||
"list": book_list,
|
||||
"items": page,
|
||||
"page_range": paginated.get_elided_page_range(
|
||||
page.number, on_each_side=2, on_ends=1
|
||||
),
|
||||
}
|
||||
return TemplateResponse(request, "lists/embed-list.html", data)
|
||||
|
||||
|
||||
@xframe_options_exempt
|
||||
def unsafe_embed_list(request, *args, **kwargs):
|
||||
"""allows the EmbedList view to be loaded through unsafe iframe origins"""
|
||||
|
||||
embed_list_view = EmbedList.as_view()
|
||||
return embed_list_view(request, *args, **kwargs)
|
|
@ -3,96 +3,26 @@ from typing import Optional
|
|||
from urllib.parse import urlencode
|
||||
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.core.paginator import Paginator
|
||||
from django.db import IntegrityError, transaction
|
||||
from django.db.models import Avg, DecimalField, Q, Max
|
||||
from django.db.models.functions import Coalesce
|
||||
from django.http import HttpResponseBadRequest, HttpResponse, Http404
|
||||
from django.http import HttpResponseBadRequest, HttpResponse
|
||||
from django.shortcuts import get_object_or_404, redirect
|
||||
from django.template.response import TemplateResponse
|
||||
from django.urls import reverse
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.views import View
|
||||
from django.views.decorators.http import require_POST
|
||||
from django.views.decorators.clickjacking import xframe_options_exempt
|
||||
|
||||
from bookwyrm import book_search, forms, models
|
||||
from bookwyrm.activitypub import ActivitypubResponse
|
||||
from bookwyrm.lists_stream import ListsStream
|
||||
from bookwyrm.settings import PAGE_LENGTH
|
||||
from .helpers import is_api_request
|
||||
from .helpers import get_user_from_username
|
||||
from bookwyrm.views.helpers import is_api_request
|
||||
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
class Lists(View):
|
||||
"""book list page"""
|
||||
|
||||
def get(self, request):
|
||||
"""display a book list"""
|
||||
lists = ListsStream().get_list_stream(request.user)
|
||||
paginated = Paginator(lists, 12)
|
||||
data = {
|
||||
"lists": paginated.get_page(request.GET.get("page")),
|
||||
"list_form": forms.ListForm(),
|
||||
"path": "/list",
|
||||
}
|
||||
return TemplateResponse(request, "lists/lists.html", data)
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
# pylint: disable=unused-argument
|
||||
def post(self, request):
|
||||
"""create a book_list"""
|
||||
form = forms.ListForm(request.POST)
|
||||
if not form.is_valid():
|
||||
return redirect("lists")
|
||||
book_list = form.save()
|
||||
# list should not have a group if it is not group curated
|
||||
if not book_list.curation == "group":
|
||||
book_list.group = None
|
||||
book_list.save(broadcast=False)
|
||||
|
||||
return redirect(book_list.local_path)
|
||||
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
class SavedLists(View):
|
||||
"""saved book list page"""
|
||||
|
||||
def get(self, request):
|
||||
"""display book lists"""
|
||||
# hide lists with no approved books
|
||||
lists = request.user.saved_lists.order_by("-updated_date")
|
||||
|
||||
paginated = Paginator(lists, 12)
|
||||
data = {
|
||||
"lists": paginated.get_page(request.GET.get("page")),
|
||||
"list_form": forms.ListForm(),
|
||||
"path": "/list",
|
||||
}
|
||||
return TemplateResponse(request, "lists/lists.html", data)
|
||||
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
class UserLists(View):
|
||||
"""a user's book list page"""
|
||||
|
||||
def get(self, request, username):
|
||||
"""display a book list"""
|
||||
user = get_user_from_username(request.user, username)
|
||||
lists = models.List.privacy_filter(request.user).filter(user=user)
|
||||
paginated = Paginator(lists, 12)
|
||||
|
||||
data = {
|
||||
"user": user,
|
||||
"is_self": request.user.id == user.id,
|
||||
"lists": paginated.get_page(request.GET.get("page")),
|
||||
"list_form": forms.ListForm(),
|
||||
"path": user.local_path + "/lists",
|
||||
}
|
||||
return TemplateResponse(request, "user/lists.html", data)
|
||||
|
||||
|
||||
class List(View):
|
||||
"""book list page"""
|
||||
|
||||
|
@ -191,7 +121,8 @@ class List(View):
|
|||
|
||||
form = forms.ListForm(request.POST, instance=book_list)
|
||||
if not form.is_valid():
|
||||
return redirect("list", book_list.id)
|
||||
# this shouldn't happen
|
||||
raise Exception(form.errors)
|
||||
book_list = form.save()
|
||||
if not book_list.curation == "group":
|
||||
book_list.group = None
|
||||
|
@ -200,103 +131,6 @@ class List(View):
|
|||
return redirect(book_list.local_path)
|
||||
|
||||
|
||||
class EmbedList(View):
|
||||
"""embeded book list page"""
|
||||
|
||||
def get(self, request, list_id, list_key):
|
||||
"""display a book list"""
|
||||
book_list = get_object_or_404(models.List, id=list_id)
|
||||
|
||||
embed_key = str(book_list.embed_key.hex)
|
||||
|
||||
if list_key != embed_key:
|
||||
raise Http404()
|
||||
|
||||
# sort_by shall be "order" unless a valid alternative is given
|
||||
sort_by = request.GET.get("sort_by", "order")
|
||||
if sort_by not in ("order", "title", "rating"):
|
||||
sort_by = "order"
|
||||
|
||||
# direction shall be "ascending" unless a valid alternative is given
|
||||
direction = request.GET.get("direction", "ascending")
|
||||
if direction not in ("ascending", "descending"):
|
||||
direction = "ascending"
|
||||
|
||||
directional_sort_by = {
|
||||
"order": "order",
|
||||
"title": "book__title",
|
||||
"rating": "average_rating",
|
||||
}[sort_by]
|
||||
if direction == "descending":
|
||||
directional_sort_by = "-" + directional_sort_by
|
||||
|
||||
items = book_list.listitem_set.prefetch_related("user", "book", "book__authors")
|
||||
if sort_by == "rating":
|
||||
items = items.annotate(
|
||||
average_rating=Avg(
|
||||
Coalesce("book__review__rating", 0.0),
|
||||
output_field=DecimalField(),
|
||||
)
|
||||
)
|
||||
items = items.filter(approved=True).order_by(directional_sort_by)
|
||||
|
||||
paginated = Paginator(items, PAGE_LENGTH)
|
||||
|
||||
page = paginated.get_page(request.GET.get("page"))
|
||||
|
||||
data = {
|
||||
"list": book_list,
|
||||
"items": page,
|
||||
"page_range": paginated.get_elided_page_range(
|
||||
page.number, on_each_side=2, on_ends=1
|
||||
),
|
||||
}
|
||||
return TemplateResponse(request, "lists/embed-list.html", data)
|
||||
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
class Curate(View):
|
||||
"""approve or discard list suggestsions"""
|
||||
|
||||
def get(self, request, list_id):
|
||||
"""display a pending list"""
|
||||
book_list = get_object_or_404(models.List, id=list_id)
|
||||
book_list.raise_not_editable(request.user)
|
||||
|
||||
data = {
|
||||
"list": book_list,
|
||||
"pending": book_list.listitem_set.filter(approved=False),
|
||||
"list_form": forms.ListForm(instance=book_list),
|
||||
}
|
||||
return TemplateResponse(request, "lists/curate.html", data)
|
||||
|
||||
def post(self, request, list_id):
|
||||
"""edit a book_list"""
|
||||
book_list = get_object_or_404(models.List, id=list_id)
|
||||
book_list.raise_not_editable(request.user)
|
||||
|
||||
suggestion = get_object_or_404(models.ListItem, id=request.POST.get("item"))
|
||||
approved = request.POST.get("approved") == "true"
|
||||
if approved:
|
||||
# update the book and set it to be the last in the order of approved books,
|
||||
# before any pending books
|
||||
suggestion.approved = True
|
||||
order_max = (
|
||||
book_list.listitem_set.filter(approved=True).aggregate(Max("order"))[
|
||||
"order__max"
|
||||
]
|
||||
or 0
|
||||
) + 1
|
||||
suggestion.order = order_max
|
||||
increment_order_in_reverse(book_list.id, order_max)
|
||||
suggestion.save()
|
||||
else:
|
||||
deleted_order = suggestion.order
|
||||
suggestion.delete(broadcast=False)
|
||||
normalize_book_list_ordering(book_list.id, start=deleted_order)
|
||||
return redirect("list-curate", book_list.id)
|
||||
|
||||
|
||||
@require_POST
|
||||
@login_required
|
||||
def save_list(request, list_id):
|
||||
|
@ -330,53 +164,41 @@ def delete_list(request, list_id):
|
|||
|
||||
@require_POST
|
||||
@login_required
|
||||
@transaction.atomic
|
||||
def add_book(request):
|
||||
"""put a book on a list"""
|
||||
book_list = get_object_or_404(models.List, id=request.POST.get("list"))
|
||||
is_group_member = False
|
||||
if book_list.curation == "group":
|
||||
is_group_member = models.GroupMember.objects.filter(
|
||||
group=book_list.group, user=request.user
|
||||
).exists()
|
||||
|
||||
book_list = get_object_or_404(models.List, id=request.POST.get("book_list"))
|
||||
# make sure the user is allowed to submit to this list
|
||||
book_list.raise_visible_to_user(request.user)
|
||||
if request.user != book_list.user and book_list.curation == "closed":
|
||||
raise PermissionDenied()
|
||||
|
||||
is_group_member = models.GroupMember.objects.filter(
|
||||
group=book_list.group, user=request.user
|
||||
).exists()
|
||||
|
||||
form = forms.ListItemForm(request.POST)
|
||||
if not form.is_valid():
|
||||
# this shouldn't happen, there aren't validated fields
|
||||
raise Exception(form.errors)
|
||||
item = form.save(commit=False)
|
||||
|
||||
if book_list.curation == "curated":
|
||||
# make a pending entry at the end of the list
|
||||
order_max = (book_list.listitem_set.aggregate(Max("order"))["order__max"]) or 0
|
||||
item.approved = is_group_member or request.user == book_list.user
|
||||
else:
|
||||
# add the book at the latest order of approved books, before pending books
|
||||
order_max = (
|
||||
book_list.listitem_set.filter(approved=True).aggregate(Max("order"))[
|
||||
"order__max"
|
||||
]
|
||||
) or 0
|
||||
increment_order_in_reverse(book_list.id, order_max + 1)
|
||||
item.order = order_max + 1
|
||||
|
||||
book = get_object_or_404(models.Edition, id=request.POST.get("book"))
|
||||
# do you have permission to add to the list?
|
||||
try:
|
||||
if (
|
||||
request.user == book_list.user
|
||||
or is_group_member
|
||||
or book_list.curation == "open"
|
||||
):
|
||||
# add the book at the latest order of approved books, before pending books
|
||||
order_max = (
|
||||
book_list.listitem_set.filter(approved=True).aggregate(Max("order"))[
|
||||
"order__max"
|
||||
]
|
||||
) or 0
|
||||
increment_order_in_reverse(book_list.id, order_max + 1)
|
||||
models.ListItem.objects.create(
|
||||
book=book,
|
||||
book_list=book_list,
|
||||
user=request.user,
|
||||
order=order_max + 1,
|
||||
)
|
||||
elif book_list.curation == "curated":
|
||||
# make a pending entry at the end of the list
|
||||
order_max = (
|
||||
book_list.listitem_set.aggregate(Max("order"))["order__max"]
|
||||
) or 0
|
||||
models.ListItem.objects.create(
|
||||
approved=False,
|
||||
book=book,
|
||||
book_list=book_list,
|
||||
user=request.user,
|
||||
order=order_max + 1,
|
||||
)
|
||||
else:
|
||||
# you can't add to this list, what were you THINKING
|
||||
return HttpResponseBadRequest()
|
||||
item.save()
|
||||
except IntegrityError:
|
||||
# if the book is already on the list, don't flip out
|
||||
pass
|
||||
|
@ -499,11 +321,3 @@ def normalize_book_list_ordering(book_list_id, start=0, add_offset=0):
|
|||
if item.order != effective_order:
|
||||
item.order = effective_order
|
||||
item.save()
|
||||
|
||||
|
||||
@xframe_options_exempt
|
||||
def unsafe_embed_list(request, *args, **kwargs):
|
||||
"""allows the EmbedList view to be loaded through unsafe iframe origins"""
|
||||
|
||||
embed_list_view = EmbedList.as_view()
|
||||
return embed_list_view(request, *args, **kwargs)
|
22
bookwyrm/views/list/list_item.py
Normal file
22
bookwyrm/views/list/list_item.py
Normal file
|
@ -0,0 +1,22 @@
|
|||
""" book list views"""
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.shortcuts import get_object_or_404, redirect
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.views import View
|
||||
|
||||
from bookwyrm import forms, models
|
||||
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
class ListItem(View):
|
||||
"""book list page"""
|
||||
|
||||
def post(self, request, list_id, list_item):
|
||||
"""Edit a list item's notes"""
|
||||
list_item = get_object_or_404(models.ListItem, id=list_item, book_list=list_id)
|
||||
list_item.raise_not_editable(request.user)
|
||||
form = forms.ListItemForm(request.POST, instance=list_item)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
return redirect("list", list_item.book_list.id)
|
80
bookwyrm/views/list/lists.py
Normal file
80
bookwyrm/views/list/lists.py
Normal file
|
@ -0,0 +1,80 @@
|
|||
""" book list views"""
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.core.paginator import Paginator
|
||||
from django.shortcuts import redirect
|
||||
from django.template.response import TemplateResponse
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.views import View
|
||||
|
||||
from bookwyrm import forms, models
|
||||
from bookwyrm.lists_stream import ListsStream
|
||||
from bookwyrm.views.helpers import get_user_from_username
|
||||
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
class Lists(View):
|
||||
"""book list page"""
|
||||
|
||||
def get(self, request):
|
||||
"""display a book list"""
|
||||
lists = ListsStream().get_list_stream(request.user)
|
||||
paginated = Paginator(lists, 12)
|
||||
data = {
|
||||
"lists": paginated.get_page(request.GET.get("page")),
|
||||
"list_form": forms.ListForm(),
|
||||
"path": "/list",
|
||||
}
|
||||
return TemplateResponse(request, "lists/lists.html", data)
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
# pylint: disable=unused-argument
|
||||
def post(self, request):
|
||||
"""create a book_list"""
|
||||
form = forms.ListForm(request.POST)
|
||||
if not form.is_valid():
|
||||
return redirect("lists")
|
||||
book_list = form.save()
|
||||
# list should not have a group if it is not group curated
|
||||
if not book_list.curation == "group":
|
||||
book_list.group = None
|
||||
book_list.save(broadcast=False)
|
||||
|
||||
return redirect(book_list.local_path)
|
||||
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
class SavedLists(View):
|
||||
"""saved book list page"""
|
||||
|
||||
def get(self, request):
|
||||
"""display book lists"""
|
||||
# hide lists with no approved books
|
||||
lists = request.user.saved_lists.order_by("-updated_date")
|
||||
|
||||
paginated = Paginator(lists, 12)
|
||||
data = {
|
||||
"lists": paginated.get_page(request.GET.get("page")),
|
||||
"list_form": forms.ListForm(),
|
||||
"path": "/list",
|
||||
}
|
||||
return TemplateResponse(request, "lists/lists.html", data)
|
||||
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
class UserLists(View):
|
||||
"""a user's book list page"""
|
||||
|
||||
def get(self, request, username):
|
||||
"""display a book list"""
|
||||
user = get_user_from_username(request.user, username)
|
||||
lists = models.List.privacy_filter(request.user).filter(user=user)
|
||||
paginated = Paginator(lists, 12)
|
||||
|
||||
data = {
|
||||
"user": user,
|
||||
"is_self": request.user.id == user.id,
|
||||
"lists": paginated.get_page(request.GET.get("page")),
|
||||
"list_form": forms.ListForm(),
|
||||
"path": user.local_path + "/lists",
|
||||
}
|
||||
return TemplateResponse(request, "user/lists.html", data)
|
|
@ -4,7 +4,6 @@ from django.contrib.syndication.views import Feed
|
|||
from django.template.loader import get_template
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from bookwyrm import models
|
||||
from .helpers import get_user_from_username
|
||||
|
||||
# pylint: disable=no-self-use, unused-argument
|
||||
|
@ -36,10 +35,9 @@ class RssFeed(Feed):
|
|||
|
||||
def items(self, obj):
|
||||
"""the user's activity feed"""
|
||||
return models.Status.privacy_filter(
|
||||
obj,
|
||||
privacy_levels=["public", "unlisted"],
|
||||
).filter(user=obj)
|
||||
return obj.status_set.select_subclasses().filter(
|
||||
privacy__in=["public", "unlisted"],
|
||||
)[:10]
|
||||
|
||||
def item_link(self, item):
|
||||
"""link to the status"""
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
""" shelf views """
|
||||
from collections import namedtuple
|
||||
|
||||
from django.db.models import OuterRef, Subquery, F
|
||||
from django.db.models import OuterRef, Subquery, F, Max
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.core.paginator import Paginator
|
||||
from django.http import HttpResponseBadRequest
|
||||
|
@ -72,11 +72,7 @@ class Shelf(View):
|
|||
"start_date"
|
||||
)
|
||||
|
||||
if shelf_identifier:
|
||||
books = books.annotate(shelved_date=F("shelfbook__shelved_date"))
|
||||
else:
|
||||
# sorting by shelved date will cause duplicates in the "all books" view
|
||||
books = books.annotate(shelved_date=F("updated_date"))
|
||||
books = books.annotate(shelved_date=Max("shelfbook__shelved_date"))
|
||||
books = books.annotate(
|
||||
rating=Subquery(reviews.values("rating")[:1]),
|
||||
start_date=Subquery(reading.values("start_date")[:1]),
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
""" endpoints for getting updates about activity """
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.http import Http404, JsonResponse
|
||||
from django.utils.translation import ngettext
|
||||
|
||||
from bookwyrm import activitystreams
|
||||
|
||||
|
@ -17,14 +18,31 @@ def get_notification_count(request):
|
|||
|
||||
|
||||
@login_required
|
||||
def get_unread_status_count(request, stream="home"):
|
||||
def get_unread_status_string(request, stream="home"):
|
||||
"""any unread statuses for this feed?"""
|
||||
stream = activitystreams.streams.get(stream)
|
||||
if not stream:
|
||||
raise Http404
|
||||
return JsonResponse(
|
||||
{
|
||||
"count": stream.get_unread_count(request.user),
|
||||
"count_by_type": stream.get_unread_count_by_status_type(request.user),
|
||||
}
|
||||
)
|
||||
|
||||
counts_by_type = stream.get_unread_count_by_status_type(request.user).items()
|
||||
if counts_by_type == {}:
|
||||
count = stream.get_unread_count(request.user)
|
||||
else:
|
||||
# only consider the types that are visible in the feed
|
||||
allowed_status_types = request.user.feed_status_types
|
||||
count = sum(c for (k, c) in counts_by_type if k in allowed_status_types)
|
||||
# if "everything else" is allowed, add other types to the sum
|
||||
count += sum(
|
||||
c
|
||||
for (k, c) in counts_by_type
|
||||
if k not in ["review", "comment", "quotation"]
|
||||
)
|
||||
|
||||
if not count:
|
||||
return JsonResponse({})
|
||||
|
||||
translation_string = lambda c: ngettext(
|
||||
"Load %(count)d unread status", "Load %(count)d unread statuses", c
|
||||
) % {"count": c}
|
||||
|
||||
return JsonResponse({"count": translation_string(count)})
|
||||
|
|
1
bw-dev
1
bw-dev
|
@ -119,6 +119,7 @@ case "$CMD" in
|
|||
git checkout l10n_main locale/no_NO
|
||||
git checkout l10n_main locale/pt_PT
|
||||
git checkout l10n_main locale/pt_BR
|
||||
git checkout l10n_main locale/sv_SE
|
||||
git checkout l10n_main locale/zh_Hans
|
||||
git checkout l10n_main locale/zh_Hant
|
||||
runweb django-admin makemessages --no-wrap --ignore=venv -l en_US $@
|
||||
|
|
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-17 19:26+0000\n"
|
||||
"PO-Revision-Date: 2022-01-20 08:20\n"
|
||||
"POT-Creation-Date: 2022-01-20 17:58+0000\n"
|
||||
"PO-Revision-Date: 2022-01-20 22:34\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: German\n"
|
||||
"Language: de\n"
|
||||
|
@ -56,11 +56,11 @@ msgstr "Buchtitel"
|
|||
|
||||
#: bookwyrm/forms.py:485 bookwyrm/templates/shelf/shelf.html:155
|
||||
#: bookwyrm/templates/shelf/shelf.html:187
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:33
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
msgstr "Bewertung"
|
||||
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:134
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:135
|
||||
msgid "Sort By"
|
||||
msgstr "Sortieren nach"
|
||||
|
||||
|
@ -224,69 +224,69 @@ msgstr "Zitate"
|
|||
msgid "Everything else"
|
||||
msgstr "Alles andere"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home Timeline"
|
||||
msgstr "Start-Zeitleiste"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home"
|
||||
msgstr "Startseite"
|
||||
|
||||
#: bookwyrm/settings.py:122
|
||||
#: bookwyrm/settings.py:174
|
||||
msgid "Books Timeline"
|
||||
msgstr "Bücher-Zeitleiste"
|
||||
|
||||
#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/templates/search/layout.html:42
|
||||
#: bookwyrm/templates/user/layout.html:91
|
||||
msgid "Books"
|
||||
msgstr "Bücher"
|
||||
|
||||
#: bookwyrm/settings.py:196
|
||||
#: bookwyrm/settings.py:248
|
||||
msgid "English"
|
||||
msgstr "English (Englisch)"
|
||||
|
||||
#: bookwyrm/settings.py:197
|
||||
#: bookwyrm/settings.py:249
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch"
|
||||
|
||||
#: bookwyrm/settings.py:198
|
||||
#: bookwyrm/settings.py:250
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (Spanisch)"
|
||||
|
||||
#: bookwyrm/settings.py:199
|
||||
#: bookwyrm/settings.py:251
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (Galizisch)"
|
||||
|
||||
#: bookwyrm/settings.py:200
|
||||
#: bookwyrm/settings.py:252
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (Italienisch)"
|
||||
|
||||
#: bookwyrm/settings.py:201
|
||||
#: bookwyrm/settings.py:253
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (Französisch)"
|
||||
|
||||
#: bookwyrm/settings.py:202
|
||||
#: bookwyrm/settings.py:254
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Litauisch)"
|
||||
|
||||
#: bookwyrm/settings.py:203
|
||||
#: bookwyrm/settings.py:255
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (Norwegisch)"
|
||||
|
||||
#: bookwyrm/settings.py:204
|
||||
#: bookwyrm/settings.py:256
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (brasilianisches Portugiesisch)"
|
||||
|
||||
#: bookwyrm/settings.py:205
|
||||
#: bookwyrm/settings.py:257
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Portugiesisch)"
|
||||
|
||||
#: bookwyrm/settings.py:206
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (vereinfachtes Chinesisch)"
|
||||
|
||||
#: bookwyrm/settings.py:207
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (Chinesisch, traditionell)"
|
||||
|
||||
|
@ -351,12 +351,8 @@ msgstr "Lerne deinen Admins kennen"
|
|||
|
||||
#: bookwyrm/templates/about/about.html:98
|
||||
#, python-format
|
||||
msgid "\n"
|
||||
" %(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior.\n"
|
||||
" "
|
||||
msgstr "\n"
|
||||
" die Moderator*innen und Administrator*innen von %(site_name)s halten diese Seite in Betrieb, setzen die <a href=\"coc_path\">Verhaltensregeln</a> durch und reagieren auf Meldungen über Spam oder schlechtes Benehmen von Nutzer*innen.\n"
|
||||
" "
|
||||
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:112
|
||||
msgid "Moderator"
|
||||
|
@ -428,7 +424,7 @@ msgid "Copy address"
|
|||
msgstr "Adresse kopieren"
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:68
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
msgid "Copied!"
|
||||
msgstr "Kopiert!"
|
||||
|
||||
|
@ -497,7 +493,7 @@ msgstr "Das am schnellsten gelesene Buch dieses Jahr …"
|
|||
#: bookwyrm/templates/annual_summary/layout.html:245
|
||||
#: bookwyrm/templates/book/book.html:47
|
||||
#: bookwyrm/templates/discover/large-book.html:22
|
||||
#: bookwyrm/templates/landing/large-book.html:25
|
||||
#: bookwyrm/templates/landing/large-book.html:26
|
||||
#: bookwyrm/templates/landing/small-book.html:18
|
||||
msgid "by"
|
||||
msgstr "von"
|
||||
|
@ -733,9 +729,9 @@ msgstr "Das Laden von Daten wird eine Verbindung zu <strong>%(source_name)s</str
|
|||
#: bookwyrm/templates/author/sync_modal.html:22
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:108
|
||||
#: bookwyrm/templates/book/sync_modal.html:22
|
||||
#: bookwyrm/templates/groups/members.html:30
|
||||
#: bookwyrm/templates/groups/members.html:29
|
||||
#: bookwyrm/templates/landing/password_reset.html:42
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:17
|
||||
msgid "Confirm"
|
||||
msgstr "Bestätigen"
|
||||
|
||||
|
@ -819,8 +815,8 @@ msgid "Places"
|
|||
msgstr "Orte"
|
||||
|
||||
#: bookwyrm/templates/book/book.html:348
|
||||
#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10
|
||||
#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:11
|
||||
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
|
||||
#: bookwyrm/templates/search/layout.html:25
|
||||
#: bookwyrm/templates/search/layout.html:50
|
||||
|
@ -834,7 +830,7 @@ msgstr "Zur Liste hinzufügen"
|
|||
|
||||
#: bookwyrm/templates/book/book.html:369
|
||||
#: bookwyrm/templates/book/cover_add_modal.html:31
|
||||
#: bookwyrm/templates/lists/list.html:208
|
||||
#: bookwyrm/templates/lists/list.html:209
|
||||
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31
|
||||
msgid "Add"
|
||||
|
@ -936,7 +932,7 @@ msgid "Back"
|
|||
msgstr "Zurück"
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book_form.html:21
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:16
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:15
|
||||
msgid "Title:"
|
||||
msgstr "Titel:"
|
||||
|
||||
|
@ -1653,7 +1649,7 @@ msgid "What are you reading?"
|
|||
msgstr "Was liest du gerade?"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:9
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:163
|
||||
msgid "Search for a book"
|
||||
msgstr "Nach einem Buch suchen"
|
||||
|
||||
|
@ -1671,9 +1667,9 @@ msgstr "Du kannst Bücher hinzufügen, wenn du %(site_name)s benutzt."
|
|||
#: bookwyrm/templates/get_started/books.html:17
|
||||
#: bookwyrm/templates/get_started/users.html:18
|
||||
#: bookwyrm/templates/get_started/users.html:19
|
||||
#: bookwyrm/templates/groups/members.html:16
|
||||
#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166
|
||||
#: bookwyrm/templates/groups/members.html:15
|
||||
#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/search/layout.html:4
|
||||
#: bookwyrm/templates/search/layout.html:9
|
||||
msgid "Search"
|
||||
|
@ -1689,7 +1685,7 @@ msgid "Popular on %(site_name)s"
|
|||
msgstr "Auf %(site_name)s beliebt"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:58
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#: bookwyrm/templates/lists/list.html:180
|
||||
msgid "No books found"
|
||||
msgstr "Keine Bücher gefunden"
|
||||
|
||||
|
@ -1794,7 +1790,7 @@ msgstr "Diese Aktion kann nicht rückgängig gemacht werden"
|
|||
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:12
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:13
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:14
|
||||
msgid "Delete"
|
||||
msgstr "Löschen"
|
||||
|
||||
|
@ -1814,17 +1810,17 @@ msgstr "Gruppenbeschreibung:"
|
|||
msgid "Delete group"
|
||||
msgstr "Gruppe löschen"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:22
|
||||
#: bookwyrm/templates/groups/group.html:21
|
||||
msgid "Members of this group can create group-curated lists."
|
||||
msgstr "Mitglieder dieser Gruppe können von der Gruppe kuratierte Listen anlegen."
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:27
|
||||
#: bookwyrm/templates/groups/group.html:26
|
||||
#: bookwyrm/templates/lists/create_form.html:5
|
||||
#: bookwyrm/templates/lists/lists.html:20
|
||||
msgid "Create List"
|
||||
msgstr "Liste erstellen"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:40
|
||||
#: bookwyrm/templates/groups/group.html:39
|
||||
msgid "This group has no lists"
|
||||
msgstr "Diese Gruppe enthält keine Listen"
|
||||
|
||||
|
@ -1832,15 +1828,15 @@ msgstr "Diese Gruppe enthält keine Listen"
|
|||
msgid "Edit group"
|
||||
msgstr "Gruppe bearbeiten"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:12
|
||||
#: bookwyrm/templates/groups/members.html:11
|
||||
msgid "Search to add a user"
|
||||
msgstr "Hinzuzufügende*n Benutzer*in suchen"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:33
|
||||
#: bookwyrm/templates/groups/members.html:32
|
||||
msgid "Leave group"
|
||||
msgstr "Gruppe verlassen"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:55
|
||||
#: bookwyrm/templates/groups/members.html:54
|
||||
#: bookwyrm/templates/groups/suggested_users.html:35
|
||||
#: bookwyrm/templates/snippets/suggested_users.html:31
|
||||
#: bookwyrm/templates/user/user_preview.html:36
|
||||
|
@ -2297,18 +2293,18 @@ msgstr "Diese Liste löschen?"
|
|||
msgid "Edit List"
|
||||
msgstr "Liste bearbeiten"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:7
|
||||
#: bookwyrm/templates/lists/embed-list.html:8
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s"
|
||||
msgstr "%(list_name)s, eine Liste von %(owner)s"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:17
|
||||
#: bookwyrm/templates/lists/embed-list.html:18
|
||||
#, python-format
|
||||
msgid "on <a href=\"/\">%(site_name)s</a>"
|
||||
msgstr "auf <a href=\"/\">%(site_name)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:26
|
||||
#: bookwyrm/templates/lists/list.html:42
|
||||
#: bookwyrm/templates/lists/embed-list.html:27
|
||||
#: bookwyrm/templates/lists/list.html:43
|
||||
msgid "This list is currently empty"
|
||||
msgstr "Diese Liste ist momentan leer"
|
||||
|
||||
|
@ -2369,76 +2365,76 @@ msgstr "Gruppe erstellen"
|
|||
msgid "Delete list"
|
||||
msgstr "Liste löschen"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:34
|
||||
#: bookwyrm/templates/lists/list.html:35
|
||||
msgid "You successfully suggested a book for this list!"
|
||||
msgstr "Dein Buchvorschlag wurde dieser Liste hinzugefügt!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:36
|
||||
#: bookwyrm/templates/lists/list.html:37
|
||||
msgid "You successfully added a book to this list!"
|
||||
msgstr "Du hast ein Buch zu dieser Liste hinzugefügt!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:80
|
||||
#: bookwyrm/templates/lists/list.html:81
|
||||
#, python-format
|
||||
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
msgstr "Hinzugefügt von <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:95
|
||||
#: bookwyrm/templates/lists/list.html:96
|
||||
msgid "List position"
|
||||
msgstr "Listenposition"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:101
|
||||
#: bookwyrm/templates/lists/list.html:102
|
||||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21
|
||||
msgid "Set"
|
||||
msgstr "Übernehmen"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:116
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:19
|
||||
#: bookwyrm/templates/lists/list.html:117
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:20
|
||||
msgid "Remove"
|
||||
msgstr "Entfernen"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:130
|
||||
#: bookwyrm/templates/lists/list.html:147
|
||||
#: bookwyrm/templates/lists/list.html:131
|
||||
#: bookwyrm/templates/lists/list.html:148
|
||||
msgid "Sort List"
|
||||
msgstr "Liste sortieren"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:140
|
||||
#: bookwyrm/templates/lists/list.html:141
|
||||
msgid "Direction"
|
||||
msgstr "Reihenfolge"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:154
|
||||
#: bookwyrm/templates/lists/list.html:155
|
||||
msgid "Add Books"
|
||||
msgstr "Bücher hinzufügen"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:156
|
||||
#: bookwyrm/templates/lists/list.html:157
|
||||
msgid "Suggest Books"
|
||||
msgstr "Bücher vorschlagen"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/lists/list.html:168
|
||||
msgid "search"
|
||||
msgstr "suchen"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:173
|
||||
#: bookwyrm/templates/lists/list.html:174
|
||||
msgid "Clear search"
|
||||
msgstr "Suche zurücksetzen"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:178
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#, python-format
|
||||
msgid "No books found matching the query \"%(query)s\""
|
||||
msgstr "Keine passenden Bücher zu „%(query)s“ gefunden"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:210
|
||||
#: bookwyrm/templates/lists/list.html:211
|
||||
msgid "Suggest"
|
||||
msgstr "Vorschlagen"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:221
|
||||
#: bookwyrm/templates/lists/list.html:222
|
||||
msgid "Embed this list on a website"
|
||||
msgstr "Diese Liste auf einer Webseite einbetten"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:229
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
msgid "Copy embed code"
|
||||
msgstr "Code zum einbetten kopieren"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
#: bookwyrm/templates/lists/list.html:232
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
|
||||
msgstr "%(list_name)s, eine Liste von %(owner)s auf %(site_name)s"
|
||||
|
@ -3914,15 +3910,15 @@ msgstr "Abgeschlossen"
|
|||
msgid "This shelf is empty."
|
||||
msgstr "Dieses Regal ist leer."
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:15
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:16
|
||||
msgid "Invite"
|
||||
msgstr "Einladen"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:24
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:25
|
||||
msgid "Uninvite"
|
||||
msgstr "Einladung stornieren"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:28
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:29
|
||||
#, python-format
|
||||
msgid "Remove @%(username)s"
|
||||
msgstr "@%(username)s entfernen"
|
||||
|
@ -4010,7 +4006,7 @@ msgstr "Spoileralarm!"
|
|||
msgid "Include spoiler alert"
|
||||
msgstr "Spoileralarm aktivieren"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:48
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:47
|
||||
#: bookwyrm/templates/snippets/reading_modals/form.html:7
|
||||
msgid "Comment:"
|
||||
msgstr "Kommentar:"
|
||||
|
@ -4019,33 +4015,33 @@ msgstr "Kommentar:"
|
|||
msgid "Post"
|
||||
msgstr "Veröffentlichen"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:16
|
||||
msgid "Quote:"
|
||||
msgstr "Zitat:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:24
|
||||
#, python-format
|
||||
msgid "An excerpt from '%(book_title)s'"
|
||||
msgstr "Ein Auszug aus „%(book_title)s“"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:32
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:31
|
||||
msgid "Position:"
|
||||
msgstr "Position:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:45
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:44
|
||||
msgid "On page:"
|
||||
msgstr "Auf Seite:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:51
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:50
|
||||
msgid "At percent:"
|
||||
msgstr "Bei Prozentsatz:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:24
|
||||
#, python-format
|
||||
msgid "Your review of '%(book_title)s'"
|
||||
msgstr "Deine Besprechung von „%(book_title)s“"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:40
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:39
|
||||
msgid "Review:"
|
||||
msgstr "Besprechung:"
|
||||
|
||||
|
@ -4099,7 +4095,7 @@ msgid "Unfollow"
|
|||
msgstr "Entfolgen"
|
||||
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:7
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:8
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:9
|
||||
msgid "Accept"
|
||||
msgstr "Annehmen"
|
||||
|
||||
|
@ -4139,15 +4135,15 @@ msgstr[1] "hat <em><a href=\"%(path)s\">%(title)s</a></em> mit %(display_rating)
|
|||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] "Besprechung von „<a href='%(book_path)s'>%(book_title)s</a>“ (%(display_rating)s Stern): %(review_title)s"
|
||||
msgstr[1] "Besprechungen von „<a href='%(book_path)s'>%(book_title)s</a>“ (%(display_rating)s Stern): %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\": %(review_title)s"
|
||||
msgstr "Besprechung von „<a href='%(book_path)s'>%(book_title)s</a>: %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\": %(review_title)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/goal_form.html:4
|
||||
#, python-format
|
||||
|
@ -4217,11 +4213,11 @@ msgstr "Nur für Follower*innen"
|
|||
msgid "Post privacy"
|
||||
msgstr "Beitragssichtbarkeit"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:4
|
||||
#: bookwyrm/templates/snippets/rate_action.html:5
|
||||
msgid "Leave a rating"
|
||||
msgstr "Bewerten"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:19
|
||||
#: bookwyrm/templates/snippets/rate_action.html:20
|
||||
msgid "Rate"
|
||||
msgstr "Bewerten"
|
||||
|
||||
|
@ -4315,29 +4311,29 @@ msgstr "Aus %(name)s entfernen"
|
|||
msgid "Finish reading"
|
||||
msgstr "Lesen abschließen"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:72
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:73
|
||||
msgid "Content warning"
|
||||
msgstr "Inhaltswarnung"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:79
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:80
|
||||
msgid "Show status"
|
||||
msgstr "Status anzeigen"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:101
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:102
|
||||
#, python-format
|
||||
msgid "(Page %(page)s)"
|
||||
msgstr "(Seite %(page)s)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:103
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:104
|
||||
#, python-format
|
||||
msgid "(%(percent)s%%)"
|
||||
msgstr "(%(percent)s%%)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:125
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:126
|
||||
msgid "Open image in new window"
|
||||
msgstr "Bild in neuem Fenster öffnen"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:144
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:145
|
||||
msgid "Hide status"
|
||||
msgstr "Status ausblenden"
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 0.0.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-20 17:58+0000\n"
|
||||
"POT-Creation-Date: 2022-01-24 17:25+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"
|
||||
|
@ -316,54 +316,54 @@ msgstr ""
|
|||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:18
|
||||
#: bookwyrm/templates/about/about.html:19
|
||||
#: bookwyrm/templates/get_started/layout.html:20
|
||||
#, python-format
|
||||
msgid "Welcome to %(site_name)s!"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:22
|
||||
#: bookwyrm/templates/about/about.html:23
|
||||
#, python-format
|
||||
msgid "%(site_name)s is part of <em>BookWyrm</em>, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the <a href=\"https://joinbookwyrm.com/instances/\" target=\"_blank\">BookWyrm network</a>, this community is unique."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:39
|
||||
#: bookwyrm/templates/about/about.html:40
|
||||
#, python-format
|
||||
msgid "<a href=\"%(book_path)s\"><em>%(title)s</em></a> is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:58
|
||||
#: bookwyrm/templates/about/about.html:59
|
||||
#, python-format
|
||||
msgid "More %(site_name)s users want to read <a href=\"%(book_path)s\"><em>%(title)s</em></a> than any other book."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:77
|
||||
#: bookwyrm/templates/about/about.html:78
|
||||
#, python-format
|
||||
msgid "<a href=\"%(book_path)s\"><em>%(title)s</em></a> has the most divisive ratings of any book on %(site_name)s."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:88
|
||||
#: bookwyrm/templates/about/about.html:89
|
||||
msgid "Track your reading, talk about books, write reviews, and discover what to read next. Always ad-free, anti-corporate, and community-oriented, BookWyrm is human-scale software, designed to stay small and personal. If you have feature requests, bug reports, or grand dreams, <a href='https://joinbookwyrm.com/get-involved' target='_blank'>reach out</a> and make yourself heard."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:95
|
||||
#: bookwyrm/templates/about/about.html:96
|
||||
msgid "Meet your admins"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:98
|
||||
#: bookwyrm/templates/about/about.html:99
|
||||
#, python-format
|
||||
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:112
|
||||
#: bookwyrm/templates/about/about.html:113
|
||||
msgid "Moderator"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131
|
||||
#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:131
|
||||
msgid "Admin"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:130
|
||||
#: bookwyrm/templates/about/about.html:131
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: bookwyrm/templates/snippets/status/status_options.html:35
|
||||
#: bookwyrm/templates/snippets/user_options.html:13
|
||||
|
@ -4626,7 +4626,7 @@ msgstr ""
|
|||
msgid "A password reset link was sent to {email}"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/views/rss_feed.py:35
|
||||
#: bookwyrm/views/rss_feed.py:34
|
||||
#, python-brace-format
|
||||
msgid "Status updates from {obj.display_name}"
|
||||
msgstr ""
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-17 19:26+0000\n"
|
||||
"PO-Revision-Date: 2022-01-17 20:55\n"
|
||||
"POT-Creation-Date: 2022-01-20 17:58+0000\n"
|
||||
"PO-Revision-Date: 2022-01-20 22:34\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Spanish\n"
|
||||
"Language: es\n"
|
||||
|
@ -56,11 +56,11 @@ msgstr "Título"
|
|||
|
||||
#: bookwyrm/forms.py:485 bookwyrm/templates/shelf/shelf.html:155
|
||||
#: bookwyrm/templates/shelf/shelf.html:187
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:33
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
msgstr "Valoración"
|
||||
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:134
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:135
|
||||
msgid "Sort By"
|
||||
msgstr "Ordenar por"
|
||||
|
||||
|
@ -224,69 +224,69 @@ msgstr "Citas"
|
|||
msgid "Everything else"
|
||||
msgstr "Todo lo demás"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home Timeline"
|
||||
msgstr "Línea de tiempo principal"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home"
|
||||
msgstr "Inicio"
|
||||
|
||||
#: bookwyrm/settings.py:122
|
||||
#: bookwyrm/settings.py:174
|
||||
msgid "Books Timeline"
|
||||
msgstr "Línea temporal de libros"
|
||||
|
||||
#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/templates/search/layout.html:42
|
||||
#: bookwyrm/templates/user/layout.html:91
|
||||
msgid "Books"
|
||||
msgstr "Libros"
|
||||
|
||||
#: bookwyrm/settings.py:196
|
||||
#: bookwyrm/settings.py:248
|
||||
msgid "English"
|
||||
msgstr "English (Inglés)"
|
||||
|
||||
#: bookwyrm/settings.py:197
|
||||
#: bookwyrm/settings.py:249
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (Alemán)"
|
||||
|
||||
#: bookwyrm/settings.py:198
|
||||
#: bookwyrm/settings.py:250
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español"
|
||||
|
||||
#: bookwyrm/settings.py:199
|
||||
#: bookwyrm/settings.py:251
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (Gallego)"
|
||||
|
||||
#: bookwyrm/settings.py:200
|
||||
#: bookwyrm/settings.py:252
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano"
|
||||
|
||||
#: bookwyrm/settings.py:201
|
||||
#: bookwyrm/settings.py:253
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (Francés)"
|
||||
|
||||
#: bookwyrm/settings.py:202
|
||||
#: bookwyrm/settings.py:254
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Lituano)"
|
||||
|
||||
#: bookwyrm/settings.py:203
|
||||
#: bookwyrm/settings.py:255
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (Noruego)"
|
||||
|
||||
#: bookwyrm/settings.py:204
|
||||
#: bookwyrm/settings.py:256
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (Portugués brasileño)"
|
||||
|
||||
#: bookwyrm/settings.py:205
|
||||
#: bookwyrm/settings.py:257
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Portugués europeo)"
|
||||
|
||||
#: bookwyrm/settings.py:206
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (Chino simplificado)"
|
||||
|
||||
#: bookwyrm/settings.py:207
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (Chino tradicional)"
|
||||
|
||||
|
@ -351,12 +351,8 @@ msgstr "Conoce a tus administradores"
|
|||
|
||||
#: bookwyrm/templates/about/about.html:98
|
||||
#, python-format
|
||||
msgid "\n"
|
||||
" %(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior.\n"
|
||||
" "
|
||||
msgstr "\n"
|
||||
" Los moderadores y administradores de %(site_name)s mantienen el sitio en funcionamiento, hacen cumplir el <a href=\"coc_path\">código de conducta</a> y responden cuando los usuarios reportan spam y mal comportamiento.\n"
|
||||
" "
|
||||
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:112
|
||||
msgid "Moderator"
|
||||
|
@ -428,7 +424,7 @@ msgid "Copy address"
|
|||
msgstr "Copiar dirección"
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:68
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
msgid "Copied!"
|
||||
msgstr "¡Copiado!"
|
||||
|
||||
|
@ -497,7 +493,7 @@ msgstr "Su lectura más corta de este año…"
|
|||
#: bookwyrm/templates/annual_summary/layout.html:245
|
||||
#: bookwyrm/templates/book/book.html:47
|
||||
#: bookwyrm/templates/discover/large-book.html:22
|
||||
#: bookwyrm/templates/landing/large-book.html:25
|
||||
#: bookwyrm/templates/landing/large-book.html:26
|
||||
#: bookwyrm/templates/landing/small-book.html:18
|
||||
msgid "by"
|
||||
msgstr "por"
|
||||
|
@ -733,9 +729,9 @@ msgstr "La carga de datos se conectará a <strong>%(source_name)s</strong> y com
|
|||
#: bookwyrm/templates/author/sync_modal.html:22
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:108
|
||||
#: bookwyrm/templates/book/sync_modal.html:22
|
||||
#: bookwyrm/templates/groups/members.html:30
|
||||
#: bookwyrm/templates/groups/members.html:29
|
||||
#: bookwyrm/templates/landing/password_reset.html:42
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:17
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmar"
|
||||
|
||||
|
@ -819,8 +815,8 @@ msgid "Places"
|
|||
msgstr "Lugares"
|
||||
|
||||
#: bookwyrm/templates/book/book.html:348
|
||||
#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10
|
||||
#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:11
|
||||
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
|
||||
#: bookwyrm/templates/search/layout.html:25
|
||||
#: bookwyrm/templates/search/layout.html:50
|
||||
|
@ -834,7 +830,7 @@ msgstr "Agregar a lista"
|
|||
|
||||
#: bookwyrm/templates/book/book.html:369
|
||||
#: bookwyrm/templates/book/cover_add_modal.html:31
|
||||
#: bookwyrm/templates/lists/list.html:208
|
||||
#: bookwyrm/templates/lists/list.html:209
|
||||
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31
|
||||
msgid "Add"
|
||||
|
@ -936,7 +932,7 @@ msgid "Back"
|
|||
msgstr "Volver"
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book_form.html:21
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:16
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:15
|
||||
msgid "Title:"
|
||||
msgstr "Título:"
|
||||
|
||||
|
@ -1653,7 +1649,7 @@ msgid "What are you reading?"
|
|||
msgstr "¿Qué estás leyendo?"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:9
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:163
|
||||
msgid "Search for a book"
|
||||
msgstr "Buscar libros"
|
||||
|
||||
|
@ -1671,9 +1667,9 @@ msgstr "Puedes agregar libros cuando comiences a usar %(site_name)s."
|
|||
#: bookwyrm/templates/get_started/books.html:17
|
||||
#: bookwyrm/templates/get_started/users.html:18
|
||||
#: bookwyrm/templates/get_started/users.html:19
|
||||
#: bookwyrm/templates/groups/members.html:16
|
||||
#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166
|
||||
#: bookwyrm/templates/groups/members.html:15
|
||||
#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/search/layout.html:4
|
||||
#: bookwyrm/templates/search/layout.html:9
|
||||
msgid "Search"
|
||||
|
@ -1689,7 +1685,7 @@ msgid "Popular on %(site_name)s"
|
|||
msgstr "Popular en %(site_name)s"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:58
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#: bookwyrm/templates/lists/list.html:180
|
||||
msgid "No books found"
|
||||
msgstr "No se encontró ningún libro"
|
||||
|
||||
|
@ -1794,7 +1790,7 @@ msgstr "Esta acción no se puede deshacer"
|
|||
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:12
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:13
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:14
|
||||
msgid "Delete"
|
||||
msgstr "Eliminar"
|
||||
|
||||
|
@ -1814,17 +1810,17 @@ msgstr "Descripción del grupo:"
|
|||
msgid "Delete group"
|
||||
msgstr "Eliminar grupo"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:22
|
||||
#: bookwyrm/templates/groups/group.html:21
|
||||
msgid "Members of this group can create group-curated lists."
|
||||
msgstr "Los miembros de este grupo pueden crear listas comisariadas en grupo."
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:27
|
||||
#: bookwyrm/templates/groups/group.html:26
|
||||
#: bookwyrm/templates/lists/create_form.html:5
|
||||
#: bookwyrm/templates/lists/lists.html:20
|
||||
msgid "Create List"
|
||||
msgstr "Crear lista"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:40
|
||||
#: bookwyrm/templates/groups/group.html:39
|
||||
msgid "This group has no lists"
|
||||
msgstr "Este grupo no tiene listas"
|
||||
|
||||
|
@ -1832,15 +1828,15 @@ msgstr "Este grupo no tiene listas"
|
|||
msgid "Edit group"
|
||||
msgstr "Editar grupo"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:12
|
||||
#: bookwyrm/templates/groups/members.html:11
|
||||
msgid "Search to add a user"
|
||||
msgstr "Buscar para agregar un usuario"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:33
|
||||
#: bookwyrm/templates/groups/members.html:32
|
||||
msgid "Leave group"
|
||||
msgstr "Dejar grupo"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:55
|
||||
#: bookwyrm/templates/groups/members.html:54
|
||||
#: bookwyrm/templates/groups/suggested_users.html:35
|
||||
#: bookwyrm/templates/snippets/suggested_users.html:31
|
||||
#: bookwyrm/templates/user/user_preview.html:36
|
||||
|
@ -2297,18 +2293,18 @@ msgstr "¿Eliminar esta lista?"
|
|||
msgid "Edit List"
|
||||
msgstr "Editar lista"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:7
|
||||
#: bookwyrm/templates/lists/embed-list.html:8
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s"
|
||||
msgstr "%(list_name)s, una lista de %(owner)s"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:17
|
||||
#: bookwyrm/templates/lists/embed-list.html:18
|
||||
#, python-format
|
||||
msgid "on <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:42
|
||||
#: bookwyrm/templates/lists/embed-list.html:27
|
||||
#: bookwyrm/templates/lists/list.html:43
|
||||
msgid "This list is currently empty"
|
||||
msgstr "Esta lista está vacia"
|
||||
|
||||
|
@ -2369,76 +2365,76 @@ msgstr "Crear un grupo"
|
|||
msgid "Delete list"
|
||||
msgstr "Eliminar lista"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:34
|
||||
#: bookwyrm/templates/lists/list.html:35
|
||||
msgid "You successfully suggested a book for this list!"
|
||||
msgstr "¡Has sugerido un libro para esta lista exitosamente!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:36
|
||||
#: bookwyrm/templates/lists/list.html:37
|
||||
msgid "You successfully added a book to this list!"
|
||||
msgstr "¡Has agregado un libro a esta lista exitosamente!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:80
|
||||
#: bookwyrm/templates/lists/list.html:81
|
||||
#, python-format
|
||||
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
msgstr "Agregado por <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:95
|
||||
#: bookwyrm/templates/lists/list.html:96
|
||||
msgid "List position"
|
||||
msgstr "Posición"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:101
|
||||
#: bookwyrm/templates/lists/list.html:102
|
||||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21
|
||||
msgid "Set"
|
||||
msgstr "Establecido"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:116
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:19
|
||||
#: bookwyrm/templates/lists/list.html:117
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:20
|
||||
msgid "Remove"
|
||||
msgstr "Quitar"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:130
|
||||
#: bookwyrm/templates/lists/list.html:147
|
||||
#: bookwyrm/templates/lists/list.html:131
|
||||
#: bookwyrm/templates/lists/list.html:148
|
||||
msgid "Sort List"
|
||||
msgstr "Ordena la lista"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:140
|
||||
#: bookwyrm/templates/lists/list.html:141
|
||||
msgid "Direction"
|
||||
msgstr "Dirección"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:154
|
||||
#: bookwyrm/templates/lists/list.html:155
|
||||
msgid "Add Books"
|
||||
msgstr "Agregar libros"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:156
|
||||
#: bookwyrm/templates/lists/list.html:157
|
||||
msgid "Suggest Books"
|
||||
msgstr "Sugerir libros"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/lists/list.html:168
|
||||
msgid "search"
|
||||
msgstr "buscar"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:173
|
||||
#: bookwyrm/templates/lists/list.html:174
|
||||
msgid "Clear search"
|
||||
msgstr "Borrar búsqueda"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:178
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#, python-format
|
||||
msgid "No books found matching the query \"%(query)s\""
|
||||
msgstr "No se encontró ningún libro correspondiente a la búsqueda: \"%(query)s\""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:210
|
||||
#: bookwyrm/templates/lists/list.html:211
|
||||
msgid "Suggest"
|
||||
msgstr "Sugerir"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:221
|
||||
#: bookwyrm/templates/lists/list.html:222
|
||||
msgid "Embed this list on a website"
|
||||
msgstr "Incrustar esta lista en un sitio web"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:229
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
msgid "Copy embed code"
|
||||
msgstr "Copiar código para incrustar"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
#: bookwyrm/templates/lists/list.html:232
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
|
||||
msgstr "%(list_name)s, una lista de %(owner)s en %(site_name)s"
|
||||
|
@ -3914,15 +3910,15 @@ msgstr "Terminado"
|
|||
msgid "This shelf is empty."
|
||||
msgstr "Esta estantería está vacía."
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:15
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:16
|
||||
msgid "Invite"
|
||||
msgstr "Invitar"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:24
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:25
|
||||
msgid "Uninvite"
|
||||
msgstr "Anular la invitación"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:28
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:29
|
||||
#, python-format
|
||||
msgid "Remove @%(username)s"
|
||||
msgstr "Eliminar a @%(username)s"
|
||||
|
@ -4010,7 +4006,7 @@ msgstr "¡Advertencia, ya vienen spoilers!"
|
|||
msgid "Include spoiler alert"
|
||||
msgstr "Incluir alerta de spoiler"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:48
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:47
|
||||
#: bookwyrm/templates/snippets/reading_modals/form.html:7
|
||||
msgid "Comment:"
|
||||
msgstr "Comentario:"
|
||||
|
@ -4019,33 +4015,33 @@ msgstr "Comentario:"
|
|||
msgid "Post"
|
||||
msgstr "Compartir"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:16
|
||||
msgid "Quote:"
|
||||
msgstr "Cita:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:24
|
||||
#, python-format
|
||||
msgid "An excerpt from '%(book_title)s'"
|
||||
msgstr "Un extracto de '%(book_title)s'"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:32
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:31
|
||||
msgid "Position:"
|
||||
msgstr "Posición:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:45
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:44
|
||||
msgid "On page:"
|
||||
msgstr "En la página:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:51
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:50
|
||||
msgid "At percent:"
|
||||
msgstr "Al por ciento:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:24
|
||||
#, python-format
|
||||
msgid "Your review of '%(book_title)s'"
|
||||
msgstr "Tu reseña de '%(book_title)s'"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:40
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:39
|
||||
msgid "Review:"
|
||||
msgstr "Reseña:"
|
||||
|
||||
|
@ -4099,7 +4095,7 @@ msgid "Unfollow"
|
|||
msgstr "Dejar de seguir"
|
||||
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:7
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:8
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:9
|
||||
msgid "Accept"
|
||||
msgstr "Aceptar"
|
||||
|
||||
|
@ -4139,15 +4135,15 @@ msgstr[1] "valoró <em><a href=\"%(path)s\">%(title)s</a></em>: %(display_rating
|
|||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] "Reseña de «<a href='%(book_path)s'>%(book_title)s</a>» (%(display_rating)s estrella): %(review_title)s"
|
||||
msgstr[1] "Reseña de «<a href='%(book_path)s'>%(book_title)s</a>» (%(display_rating)s estrellas): %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\": %(review_title)s"
|
||||
msgstr "Reseña de «<a href='%(book_path)s'>%(book_title)s</a>»: %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\": %(review_title)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/goal_form.html:4
|
||||
#, python-format
|
||||
|
@ -4217,11 +4213,11 @@ msgstr "Solo seguidores"
|
|||
msgid "Post privacy"
|
||||
msgstr "Privacidad de publicación"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:4
|
||||
#: bookwyrm/templates/snippets/rate_action.html:5
|
||||
msgid "Leave a rating"
|
||||
msgstr "Da una valoración"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:19
|
||||
#: bookwyrm/templates/snippets/rate_action.html:20
|
||||
msgid "Rate"
|
||||
msgstr "Valorar"
|
||||
|
||||
|
@ -4315,29 +4311,29 @@ msgstr "Quitar de %(name)s"
|
|||
msgid "Finish reading"
|
||||
msgstr "Terminar de leer"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:72
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:73
|
||||
msgid "Content warning"
|
||||
msgstr "Advertencia de contenido"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:79
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:80
|
||||
msgid "Show status"
|
||||
msgstr "Mostrar estado"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:101
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:102
|
||||
#, python-format
|
||||
msgid "(Page %(page)s)"
|
||||
msgstr "(Página %(page)s)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:103
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:104
|
||||
#, python-format
|
||||
msgid "(%(percent)s%%)"
|
||||
msgstr "(%(percent)s%%)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:125
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:126
|
||||
msgid "Open image in new window"
|
||||
msgstr "Abrir imagen en una nueva ventana"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:144
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:145
|
||||
msgid "Hide status"
|
||||
msgstr "Ocultar estado"
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-17 19:26+0000\n"
|
||||
"PO-Revision-Date: 2022-01-17 20:55\n"
|
||||
"POT-Creation-Date: 2022-01-20 17:58+0000\n"
|
||||
"PO-Revision-Date: 2022-01-20 22:35\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: French\n"
|
||||
"Language: fr\n"
|
||||
|
@ -56,11 +56,11 @@ msgstr "Titre du livre"
|
|||
|
||||
#: bookwyrm/forms.py:485 bookwyrm/templates/shelf/shelf.html:155
|
||||
#: bookwyrm/templates/shelf/shelf.html:187
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:33
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
msgstr "Note"
|
||||
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:134
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:135
|
||||
msgid "Sort By"
|
||||
msgstr "Trier par"
|
||||
|
||||
|
@ -224,69 +224,69 @@ msgstr "Citations"
|
|||
msgid "Everything else"
|
||||
msgstr "Tout le reste"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home Timeline"
|
||||
msgstr "Mon fil d’actualité"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home"
|
||||
msgstr "Accueil"
|
||||
|
||||
#: bookwyrm/settings.py:122
|
||||
#: bookwyrm/settings.py:174
|
||||
msgid "Books Timeline"
|
||||
msgstr "Actualité de mes livres"
|
||||
|
||||
#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/templates/search/layout.html:42
|
||||
#: bookwyrm/templates/user/layout.html:91
|
||||
msgid "Books"
|
||||
msgstr "Livres"
|
||||
|
||||
#: bookwyrm/settings.py:196
|
||||
#: bookwyrm/settings.py:248
|
||||
msgid "English"
|
||||
msgstr "English"
|
||||
|
||||
#: bookwyrm/settings.py:197
|
||||
#: bookwyrm/settings.py:249
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch"
|
||||
|
||||
#: bookwyrm/settings.py:198
|
||||
#: bookwyrm/settings.py:250
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español"
|
||||
|
||||
#: bookwyrm/settings.py:199
|
||||
#: bookwyrm/settings.py:251
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (Galicien)"
|
||||
|
||||
#: bookwyrm/settings.py:200
|
||||
#: bookwyrm/settings.py:252
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (italien)"
|
||||
|
||||
#: bookwyrm/settings.py:201
|
||||
#: bookwyrm/settings.py:253
|
||||
msgid "Français (French)"
|
||||
msgstr "Français"
|
||||
|
||||
#: bookwyrm/settings.py:202
|
||||
#: bookwyrm/settings.py:254
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Lituanien)"
|
||||
|
||||
#: bookwyrm/settings.py:203
|
||||
#: bookwyrm/settings.py:255
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (norvégien)"
|
||||
|
||||
#: bookwyrm/settings.py:204
|
||||
#: bookwyrm/settings.py:256
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (Portugais brésilien)"
|
||||
|
||||
#: bookwyrm/settings.py:205
|
||||
#: bookwyrm/settings.py:257
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Portugais européen)"
|
||||
|
||||
#: bookwyrm/settings.py:206
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简化字"
|
||||
|
||||
#: bookwyrm/settings.py:207
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "Infos supplémentaires :"
|
||||
|
||||
|
@ -351,12 +351,8 @@ msgstr "Rencontrez vos admins"
|
|||
|
||||
#: bookwyrm/templates/about/about.html:98
|
||||
#, python-format
|
||||
msgid "\n"
|
||||
" %(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior.\n"
|
||||
" "
|
||||
msgstr "\n"
|
||||
" Les admins et modérateurs/modératrices de %(site_name)s maintiennent le site opérationnel, font respecter le <a href=\"coc_path\">code de conduite</a>, et répondent lorsque les utilisateurs signalent spam et mauvais comportements.\n"
|
||||
" "
|
||||
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:112
|
||||
msgid "Moderator"
|
||||
|
@ -428,7 +424,7 @@ msgid "Copy address"
|
|||
msgstr "Copier l’adresse"
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:68
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
msgid "Copied!"
|
||||
msgstr "Copié !"
|
||||
|
||||
|
@ -497,7 +493,7 @@ msgstr "Sa lecture la plus courte l’année…"
|
|||
#: bookwyrm/templates/annual_summary/layout.html:245
|
||||
#: bookwyrm/templates/book/book.html:47
|
||||
#: bookwyrm/templates/discover/large-book.html:22
|
||||
#: bookwyrm/templates/landing/large-book.html:25
|
||||
#: bookwyrm/templates/landing/large-book.html:26
|
||||
#: bookwyrm/templates/landing/small-book.html:18
|
||||
msgid "by"
|
||||
msgstr "de"
|
||||
|
@ -733,9 +729,9 @@ msgstr "Le chargement des données se connectera à <strong>%(source_name)s</str
|
|||
#: bookwyrm/templates/author/sync_modal.html:22
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:108
|
||||
#: bookwyrm/templates/book/sync_modal.html:22
|
||||
#: bookwyrm/templates/groups/members.html:30
|
||||
#: bookwyrm/templates/groups/members.html:29
|
||||
#: bookwyrm/templates/landing/password_reset.html:42
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:17
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmer"
|
||||
|
||||
|
@ -819,8 +815,8 @@ msgid "Places"
|
|||
msgstr "Lieux"
|
||||
|
||||
#: bookwyrm/templates/book/book.html:348
|
||||
#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10
|
||||
#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:11
|
||||
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
|
||||
#: bookwyrm/templates/search/layout.html:25
|
||||
#: bookwyrm/templates/search/layout.html:50
|
||||
|
@ -834,7 +830,7 @@ msgstr "Ajouter à la liste"
|
|||
|
||||
#: bookwyrm/templates/book/book.html:369
|
||||
#: bookwyrm/templates/book/cover_add_modal.html:31
|
||||
#: bookwyrm/templates/lists/list.html:208
|
||||
#: bookwyrm/templates/lists/list.html:209
|
||||
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31
|
||||
msgid "Add"
|
||||
|
@ -936,7 +932,7 @@ msgid "Back"
|
|||
msgstr "Retour"
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book_form.html:21
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:16
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:15
|
||||
msgid "Title:"
|
||||
msgstr "Titre :"
|
||||
|
||||
|
@ -1653,7 +1649,7 @@ msgid "What are you reading?"
|
|||
msgstr "Que lisez‑vous ?"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:9
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:163
|
||||
msgid "Search for a book"
|
||||
msgstr "Chercher un livre"
|
||||
|
||||
|
@ -1671,9 +1667,9 @@ msgstr "Vous pourrez ajouter des livres lorsque vous commencerez à utiliser %(s
|
|||
#: bookwyrm/templates/get_started/books.html:17
|
||||
#: bookwyrm/templates/get_started/users.html:18
|
||||
#: bookwyrm/templates/get_started/users.html:19
|
||||
#: bookwyrm/templates/groups/members.html:16
|
||||
#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166
|
||||
#: bookwyrm/templates/groups/members.html:15
|
||||
#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/search/layout.html:4
|
||||
#: bookwyrm/templates/search/layout.html:9
|
||||
msgid "Search"
|
||||
|
@ -1689,7 +1685,7 @@ msgid "Popular on %(site_name)s"
|
|||
msgstr "Populaire sur %(site_name)s"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:58
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#: bookwyrm/templates/lists/list.html:180
|
||||
msgid "No books found"
|
||||
msgstr "Aucun livre trouvé"
|
||||
|
||||
|
@ -1794,7 +1790,7 @@ msgstr "Cette action ne peut pas être annulée"
|
|||
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:12
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:13
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:14
|
||||
msgid "Delete"
|
||||
msgstr "Supprimer"
|
||||
|
||||
|
@ -1814,17 +1810,17 @@ msgstr "Description du groupe :"
|
|||
msgid "Delete group"
|
||||
msgstr "Supprimer le groupe"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:22
|
||||
#: bookwyrm/templates/groups/group.html:21
|
||||
msgid "Members of this group can create group-curated lists."
|
||||
msgstr "Les membres de ce groupe peuvent créer des listes gérées par le groupe."
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:27
|
||||
#: bookwyrm/templates/groups/group.html:26
|
||||
#: bookwyrm/templates/lists/create_form.html:5
|
||||
#: bookwyrm/templates/lists/lists.html:20
|
||||
msgid "Create List"
|
||||
msgstr "Créer une liste"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:40
|
||||
#: bookwyrm/templates/groups/group.html:39
|
||||
msgid "This group has no lists"
|
||||
msgstr "Ce groupe n'a pas de liste"
|
||||
|
||||
|
@ -1832,15 +1828,15 @@ msgstr "Ce groupe n'a pas de liste"
|
|||
msgid "Edit group"
|
||||
msgstr "Modifier le groupe"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:12
|
||||
#: bookwyrm/templates/groups/members.html:11
|
||||
msgid "Search to add a user"
|
||||
msgstr "Chercher et ajouter un·e utilisateur·rice"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:33
|
||||
#: bookwyrm/templates/groups/members.html:32
|
||||
msgid "Leave group"
|
||||
msgstr "Quitter le groupe"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:55
|
||||
#: bookwyrm/templates/groups/members.html:54
|
||||
#: bookwyrm/templates/groups/suggested_users.html:35
|
||||
#: bookwyrm/templates/snippets/suggested_users.html:31
|
||||
#: bookwyrm/templates/user/user_preview.html:36
|
||||
|
@ -2297,18 +2293,18 @@ msgstr "Supprimer cette liste ?"
|
|||
msgid "Edit List"
|
||||
msgstr "Modifier la liste"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:7
|
||||
#: bookwyrm/templates/lists/embed-list.html:8
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s"
|
||||
msgstr "%(list_name)s, une liste de %(owner)s"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:17
|
||||
#: bookwyrm/templates/lists/embed-list.html:18
|
||||
#, python-format
|
||||
msgid "on <a href=\"/\">%(site_name)s</a>"
|
||||
msgstr "sur <a href=\"/\">%(site_name)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:26
|
||||
#: bookwyrm/templates/lists/list.html:42
|
||||
#: bookwyrm/templates/lists/embed-list.html:27
|
||||
#: bookwyrm/templates/lists/list.html:43
|
||||
msgid "This list is currently empty"
|
||||
msgstr "Cette liste est actuellement vide"
|
||||
|
||||
|
@ -2369,76 +2365,76 @@ msgstr "Créer un Groupe"
|
|||
msgid "Delete list"
|
||||
msgstr "Supprimer la liste"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:34
|
||||
#: bookwyrm/templates/lists/list.html:35
|
||||
msgid "You successfully suggested a book for this list!"
|
||||
msgstr "Vous avez suggéré un livre à cette liste !"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:36
|
||||
#: bookwyrm/templates/lists/list.html:37
|
||||
msgid "You successfully added a book to this list!"
|
||||
msgstr "Vous avez ajouté un livre à cette liste !"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:80
|
||||
#: bookwyrm/templates/lists/list.html:81
|
||||
#, python-format
|
||||
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
msgstr "Ajouté par <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:95
|
||||
#: bookwyrm/templates/lists/list.html:96
|
||||
msgid "List position"
|
||||
msgstr "Position"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:101
|
||||
#: bookwyrm/templates/lists/list.html:102
|
||||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21
|
||||
msgid "Set"
|
||||
msgstr "Appliquer"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:116
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:19
|
||||
#: bookwyrm/templates/lists/list.html:117
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:20
|
||||
msgid "Remove"
|
||||
msgstr "Retirer"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:130
|
||||
#: bookwyrm/templates/lists/list.html:147
|
||||
#: bookwyrm/templates/lists/list.html:131
|
||||
#: bookwyrm/templates/lists/list.html:148
|
||||
msgid "Sort List"
|
||||
msgstr "Trier la liste"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:140
|
||||
#: bookwyrm/templates/lists/list.html:141
|
||||
msgid "Direction"
|
||||
msgstr "Direction"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:154
|
||||
#: bookwyrm/templates/lists/list.html:155
|
||||
msgid "Add Books"
|
||||
msgstr "Ajouter des livres"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:156
|
||||
#: bookwyrm/templates/lists/list.html:157
|
||||
msgid "Suggest Books"
|
||||
msgstr "Suggérer des livres"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/lists/list.html:168
|
||||
msgid "search"
|
||||
msgstr "chercher"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:173
|
||||
#: bookwyrm/templates/lists/list.html:174
|
||||
msgid "Clear search"
|
||||
msgstr "Vider la requête"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:178
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#, python-format
|
||||
msgid "No books found matching the query \"%(query)s\""
|
||||
msgstr "Aucun livre trouvé pour la requête « %(query)s »"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:210
|
||||
#: bookwyrm/templates/lists/list.html:211
|
||||
msgid "Suggest"
|
||||
msgstr "Suggérer"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:221
|
||||
#: bookwyrm/templates/lists/list.html:222
|
||||
msgid "Embed this list on a website"
|
||||
msgstr "Intégrez cette liste sur un autre site internet"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:229
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
msgid "Copy embed code"
|
||||
msgstr "Copier le code d'intégration"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
#: bookwyrm/templates/lists/list.html:232
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
|
||||
msgstr "%(list_name)s, une liste de %(owner)s sur %(site_name)s"
|
||||
|
@ -3914,15 +3910,15 @@ msgstr "Terminé"
|
|||
msgid "This shelf is empty."
|
||||
msgstr "Cette étagère est vide"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:15
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:16
|
||||
msgid "Invite"
|
||||
msgstr "Inviter"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:24
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:25
|
||||
msgid "Uninvite"
|
||||
msgstr "Annuler l'invitation"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:28
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:29
|
||||
#, python-format
|
||||
msgid "Remove @%(username)s"
|
||||
msgstr "Retirer @%(username)s"
|
||||
|
@ -4010,7 +4006,7 @@ msgstr "Attention spoilers !"
|
|||
msgid "Include spoiler alert"
|
||||
msgstr "Afficher une alerte spoiler"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:48
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:47
|
||||
#: bookwyrm/templates/snippets/reading_modals/form.html:7
|
||||
msgid "Comment:"
|
||||
msgstr "Commentaire :"
|
||||
|
@ -4019,33 +4015,33 @@ msgstr "Commentaire :"
|
|||
msgid "Post"
|
||||
msgstr "Publier"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:16
|
||||
msgid "Quote:"
|
||||
msgstr "Citation :"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:24
|
||||
#, python-format
|
||||
msgid "An excerpt from '%(book_title)s'"
|
||||
msgstr "Un extrait de '%(book_title)s'"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:32
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:31
|
||||
msgid "Position:"
|
||||
msgstr "Emplacement :"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:45
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:44
|
||||
msgid "On page:"
|
||||
msgstr "À la page :"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:51
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:50
|
||||
msgid "At percent:"
|
||||
msgstr "Au pourcentage :"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:24
|
||||
#, python-format
|
||||
msgid "Your review of '%(book_title)s'"
|
||||
msgstr "Votre critique de '%(book_title)s'"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:40
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:39
|
||||
msgid "Review:"
|
||||
msgstr "Critique :"
|
||||
|
||||
|
@ -4099,7 +4095,7 @@ msgid "Unfollow"
|
|||
msgstr "Se désabonner"
|
||||
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:7
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:8
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:9
|
||||
msgid "Accept"
|
||||
msgstr "Accepter"
|
||||
|
||||
|
@ -4139,15 +4135,15 @@ msgstr[1] "a noté <em><a href=\"%(path)s\">%(title)s</a></em> : %(display_ratin
|
|||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] "Critique de « <a href='%(book_path)s'>%(book_title)s</a> » (%(display_rating)s étoile) : %(review_title)s"
|
||||
msgstr[1] "Critique de « <a href='%(book_path)s'>%(book_title)s</a> » (%(display_rating)s étoile) : %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\": %(review_title)s"
|
||||
msgstr "Critique de « <a href='%(book_path)s'>%(book_title)s</a> » : %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\": %(review_title)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/goal_form.html:4
|
||||
#, python-format
|
||||
|
@ -4217,11 +4213,11 @@ msgstr "Abonnemé(e)s uniquement"
|
|||
msgid "Post privacy"
|
||||
msgstr "Confidentialité du statut"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:4
|
||||
#: bookwyrm/templates/snippets/rate_action.html:5
|
||||
msgid "Leave a rating"
|
||||
msgstr "Laisser une note"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:19
|
||||
#: bookwyrm/templates/snippets/rate_action.html:20
|
||||
msgid "Rate"
|
||||
msgstr "Noter"
|
||||
|
||||
|
@ -4315,29 +4311,29 @@ msgstr "Retirer de %(name)s"
|
|||
msgid "Finish reading"
|
||||
msgstr "Terminer la lecture"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:72
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:73
|
||||
msgid "Content warning"
|
||||
msgstr "Avertissement sur le contenu"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:79
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:80
|
||||
msgid "Show status"
|
||||
msgstr "Afficher le statut"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:101
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:102
|
||||
#, python-format
|
||||
msgid "(Page %(page)s)"
|
||||
msgstr "(Page %(page)s)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:103
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:104
|
||||
#, python-format
|
||||
msgid "(%(percent)s%%)"
|
||||
msgstr "(%(percent)s%%)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:125
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:126
|
||||
msgid "Open image in new window"
|
||||
msgstr "Ouvrir l’image dans une nouvelle fenêtre"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:144
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:145
|
||||
msgid "Hide status"
|
||||
msgstr "Masquer le statut"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-17 19:26+0000\n"
|
||||
"PO-Revision-Date: 2022-01-18 06:22\n"
|
||||
"POT-Creation-Date: 2022-01-20 17:58+0000\n"
|
||||
"PO-Revision-Date: 2022-01-21 08:06\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Galician\n"
|
||||
"Language: gl\n"
|
||||
|
@ -56,11 +56,11 @@ msgstr "Título do libro"
|
|||
|
||||
#: bookwyrm/forms.py:485 bookwyrm/templates/shelf/shelf.html:155
|
||||
#: bookwyrm/templates/shelf/shelf.html:187
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:33
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
msgstr "Puntuación"
|
||||
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:134
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:135
|
||||
msgid "Sort By"
|
||||
msgstr "Ordenar por"
|
||||
|
||||
|
@ -224,69 +224,69 @@ msgstr "Citas"
|
|||
msgid "Everything else"
|
||||
msgstr "As outras cousas"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home Timeline"
|
||||
msgstr "Cronoloxía de Inicio"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home"
|
||||
msgstr "Inicio"
|
||||
|
||||
#: bookwyrm/settings.py:122
|
||||
#: bookwyrm/settings.py:174
|
||||
msgid "Books Timeline"
|
||||
msgstr "Cronoloxía de libros"
|
||||
|
||||
#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/templates/search/layout.html:42
|
||||
#: bookwyrm/templates/user/layout.html:91
|
||||
msgid "Books"
|
||||
msgstr "Libros"
|
||||
|
||||
#: bookwyrm/settings.py:196
|
||||
#: bookwyrm/settings.py:248
|
||||
msgid "English"
|
||||
msgstr "English (Inglés)"
|
||||
|
||||
#: bookwyrm/settings.py:197
|
||||
#: bookwyrm/settings.py:249
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Alemán (Alemaña)"
|
||||
|
||||
#: bookwyrm/settings.py:198
|
||||
#: bookwyrm/settings.py:250
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (España)"
|
||||
|
||||
#: bookwyrm/settings.py:199
|
||||
#: bookwyrm/settings.py:251
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (Galician)"
|
||||
|
||||
#: bookwyrm/settings.py:200
|
||||
#: bookwyrm/settings.py:252
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (Italian)"
|
||||
|
||||
#: bookwyrm/settings.py:201
|
||||
#: bookwyrm/settings.py:253
|
||||
msgid "Français (French)"
|
||||
msgstr "Francés (Francia)"
|
||||
|
||||
#: bookwyrm/settings.py:202
|
||||
#: bookwyrm/settings.py:254
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Lithuanian)"
|
||||
|
||||
#: bookwyrm/settings.py:203
|
||||
#: bookwyrm/settings.py:255
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Noruegués (Norwegian)"
|
||||
|
||||
#: bookwyrm/settings.py:204
|
||||
#: bookwyrm/settings.py:256
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (Portugués brasileiro)"
|
||||
|
||||
#: bookwyrm/settings.py:205
|
||||
#: bookwyrm/settings.py:257
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Portugués europeo)"
|
||||
|
||||
#: bookwyrm/settings.py:206
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (Chinés simplificado)"
|
||||
|
||||
#: bookwyrm/settings.py:207
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (Chinés tradicional)"
|
||||
|
||||
|
@ -351,12 +351,8 @@ msgstr "Contacta coa administración"
|
|||
|
||||
#: bookwyrm/templates/about/about.html:98
|
||||
#, python-format
|
||||
msgid "\n"
|
||||
" %(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior.\n"
|
||||
" "
|
||||
msgstr "\n"
|
||||
"A moderación e administración de %(site_name)s coidan e xestionan o sitio web, fan cumprir co <a href=\"coc_path\">código de conducta</a> e responden ás denuncias das usuarias sobre spam e mal comportamento.\n"
|
||||
" "
|
||||
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior."
|
||||
msgstr "A moderación e administración de %(site_name)s coidan e xestionan o sitio web, fan cumprir co <a href=\"coc_path\">código de conduta</a> e responden ás denuncias das usuarias sobre spam e mal comportamento."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:112
|
||||
msgid "Moderator"
|
||||
|
@ -428,7 +424,7 @@ msgid "Copy address"
|
|||
msgstr "Copiar enderezo"
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:68
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
msgid "Copied!"
|
||||
msgstr "Copiado!"
|
||||
|
||||
|
@ -497,7 +493,7 @@ msgstr "A lectura máis curta deste ano…"
|
|||
#: bookwyrm/templates/annual_summary/layout.html:245
|
||||
#: bookwyrm/templates/book/book.html:47
|
||||
#: bookwyrm/templates/discover/large-book.html:22
|
||||
#: bookwyrm/templates/landing/large-book.html:25
|
||||
#: bookwyrm/templates/landing/large-book.html:26
|
||||
#: bookwyrm/templates/landing/small-book.html:18
|
||||
msgid "by"
|
||||
msgstr "por"
|
||||
|
@ -733,9 +729,9 @@ msgstr "Ao cargar os datos vas conectar con <strong>%(source_name)s</strong> e c
|
|||
#: bookwyrm/templates/author/sync_modal.html:22
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:108
|
||||
#: bookwyrm/templates/book/sync_modal.html:22
|
||||
#: bookwyrm/templates/groups/members.html:30
|
||||
#: bookwyrm/templates/groups/members.html:29
|
||||
#: bookwyrm/templates/landing/password_reset.html:42
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:17
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmar"
|
||||
|
||||
|
@ -819,8 +815,8 @@ msgid "Places"
|
|||
msgstr "Lugares"
|
||||
|
||||
#: bookwyrm/templates/book/book.html:348
|
||||
#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10
|
||||
#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:11
|
||||
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
|
||||
#: bookwyrm/templates/search/layout.html:25
|
||||
#: bookwyrm/templates/search/layout.html:50
|
||||
|
@ -834,7 +830,7 @@ msgstr "Engadir a listaxe"
|
|||
|
||||
#: bookwyrm/templates/book/book.html:369
|
||||
#: bookwyrm/templates/book/cover_add_modal.html:31
|
||||
#: bookwyrm/templates/lists/list.html:208
|
||||
#: bookwyrm/templates/lists/list.html:209
|
||||
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31
|
||||
msgid "Add"
|
||||
|
@ -936,7 +932,7 @@ msgid "Back"
|
|||
msgstr "Atrás"
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book_form.html:21
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:16
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:15
|
||||
msgid "Title:"
|
||||
msgstr "Título:"
|
||||
|
||||
|
@ -1653,7 +1649,7 @@ msgid "What are you reading?"
|
|||
msgstr "Que estás a ler?"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:9
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:163
|
||||
msgid "Search for a book"
|
||||
msgstr "Buscar un libro"
|
||||
|
||||
|
@ -1671,9 +1667,9 @@ msgstr "Podes engadir libros cando comeces a usar %(site_name)s."
|
|||
#: bookwyrm/templates/get_started/books.html:17
|
||||
#: bookwyrm/templates/get_started/users.html:18
|
||||
#: bookwyrm/templates/get_started/users.html:19
|
||||
#: bookwyrm/templates/groups/members.html:16
|
||||
#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166
|
||||
#: bookwyrm/templates/groups/members.html:15
|
||||
#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/search/layout.html:4
|
||||
#: bookwyrm/templates/search/layout.html:9
|
||||
msgid "Search"
|
||||
|
@ -1689,7 +1685,7 @@ msgid "Popular on %(site_name)s"
|
|||
msgstr "Populares en %(site_name)s"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:58
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#: bookwyrm/templates/lists/list.html:180
|
||||
msgid "No books found"
|
||||
msgstr "Non se atopan libros"
|
||||
|
||||
|
@ -1794,7 +1790,7 @@ msgstr "Esta acción non ten volta atrás"
|
|||
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:12
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:13
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:14
|
||||
msgid "Delete"
|
||||
msgstr "Eliminar"
|
||||
|
||||
|
@ -1814,17 +1810,17 @@ msgstr "Descrición do grupo:"
|
|||
msgid "Delete group"
|
||||
msgstr "Eliminar grupo"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:22
|
||||
#: bookwyrm/templates/groups/group.html:21
|
||||
msgid "Members of this group can create group-curated lists."
|
||||
msgstr "Os membros deste grupo poden crear listas xestionadas comunitariamente."
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:27
|
||||
#: bookwyrm/templates/groups/group.html:26
|
||||
#: bookwyrm/templates/lists/create_form.html:5
|
||||
#: bookwyrm/templates/lists/lists.html:20
|
||||
msgid "Create List"
|
||||
msgstr "Crear lista"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:40
|
||||
#: bookwyrm/templates/groups/group.html:39
|
||||
msgid "This group has no lists"
|
||||
msgstr "Este grupo non ten listaxes"
|
||||
|
||||
|
@ -1832,15 +1828,15 @@ msgstr "Este grupo non ten listaxes"
|
|||
msgid "Edit group"
|
||||
msgstr "Editar grupo"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:12
|
||||
#: bookwyrm/templates/groups/members.html:11
|
||||
msgid "Search to add a user"
|
||||
msgstr "Buscar para engadir usuaria"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:33
|
||||
#: bookwyrm/templates/groups/members.html:32
|
||||
msgid "Leave group"
|
||||
msgstr "Saír do grupo"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:55
|
||||
#: bookwyrm/templates/groups/members.html:54
|
||||
#: bookwyrm/templates/groups/suggested_users.html:35
|
||||
#: bookwyrm/templates/snippets/suggested_users.html:31
|
||||
#: bookwyrm/templates/user/user_preview.html:36
|
||||
|
@ -2297,18 +2293,18 @@ msgstr "Eliminar esta lista?"
|
|||
msgid "Edit List"
|
||||
msgstr "Editar lista"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:7
|
||||
#: bookwyrm/templates/lists/embed-list.html:8
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s"
|
||||
msgstr "%(list_name)s, unha lista de %(owner)s"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:17
|
||||
#: bookwyrm/templates/lists/embed-list.html:18
|
||||
#, python-format
|
||||
msgid "on <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:42
|
||||
#: bookwyrm/templates/lists/embed-list.html:27
|
||||
#: bookwyrm/templates/lists/list.html:43
|
||||
msgid "This list is currently empty"
|
||||
msgstr "A lista está baleira neste intre"
|
||||
|
||||
|
@ -2369,76 +2365,76 @@ msgstr "Crea un Grupo"
|
|||
msgid "Delete list"
|
||||
msgstr "Eliminar lista"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:34
|
||||
#: bookwyrm/templates/lists/list.html:35
|
||||
msgid "You successfully suggested a book for this list!"
|
||||
msgstr "Suxeriches correctamente un libro para esta lista!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:36
|
||||
#: bookwyrm/templates/lists/list.html:37
|
||||
msgid "You successfully added a book to this list!"
|
||||
msgstr "Engadiches correctamente un libro a esta lista!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:80
|
||||
#: bookwyrm/templates/lists/list.html:81
|
||||
#, python-format
|
||||
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
msgstr "Engadido por <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:95
|
||||
#: bookwyrm/templates/lists/list.html:96
|
||||
msgid "List position"
|
||||
msgstr "Posición da lista"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:101
|
||||
#: bookwyrm/templates/lists/list.html:102
|
||||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21
|
||||
msgid "Set"
|
||||
msgstr "Establecer"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:116
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:19
|
||||
#: bookwyrm/templates/lists/list.html:117
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:20
|
||||
msgid "Remove"
|
||||
msgstr "Eliminar"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:130
|
||||
#: bookwyrm/templates/lists/list.html:147
|
||||
#: bookwyrm/templates/lists/list.html:131
|
||||
#: bookwyrm/templates/lists/list.html:148
|
||||
msgid "Sort List"
|
||||
msgstr "Ordenar lista"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:140
|
||||
#: bookwyrm/templates/lists/list.html:141
|
||||
msgid "Direction"
|
||||
msgstr "Dirección"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:154
|
||||
#: bookwyrm/templates/lists/list.html:155
|
||||
msgid "Add Books"
|
||||
msgstr "Engadir Libros"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:156
|
||||
#: bookwyrm/templates/lists/list.html:157
|
||||
msgid "Suggest Books"
|
||||
msgstr "Suxerir Libros"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/lists/list.html:168
|
||||
msgid "search"
|
||||
msgstr "buscar"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:173
|
||||
#: bookwyrm/templates/lists/list.html:174
|
||||
msgid "Clear search"
|
||||
msgstr "Limpar busca"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:178
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#, python-format
|
||||
msgid "No books found matching the query \"%(query)s\""
|
||||
msgstr "Non se atopan libros coa consulta \"%(query)s\""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:210
|
||||
#: bookwyrm/templates/lists/list.html:211
|
||||
msgid "Suggest"
|
||||
msgstr "Suxire"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:221
|
||||
#: bookwyrm/templates/lists/list.html:222
|
||||
msgid "Embed this list on a website"
|
||||
msgstr "Utiliza esta lista nunha páxina web"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:229
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
msgid "Copy embed code"
|
||||
msgstr "Copia o código a incluír"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
#: bookwyrm/templates/lists/list.html:232
|
||||
#, 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"
|
||||
|
@ -3914,15 +3910,15 @@ msgstr "Rematado"
|
|||
msgid "This shelf is empty."
|
||||
msgstr "Este estante esta baleiro."
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:15
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:16
|
||||
msgid "Invite"
|
||||
msgstr "Convidar"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:24
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:25
|
||||
msgid "Uninvite"
|
||||
msgstr "Retirar convite"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:28
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:29
|
||||
#, python-format
|
||||
msgid "Remove @%(username)s"
|
||||
msgstr "Eliminar @%(username)s"
|
||||
|
@ -4010,7 +4006,7 @@ msgstr "Contén Spoilers!"
|
|||
msgid "Include spoiler alert"
|
||||
msgstr "Incluír alerta de spoiler"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:48
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:47
|
||||
#: bookwyrm/templates/snippets/reading_modals/form.html:7
|
||||
msgid "Comment:"
|
||||
msgstr "Comentario:"
|
||||
|
@ -4019,33 +4015,33 @@ msgstr "Comentario:"
|
|||
msgid "Post"
|
||||
msgstr "Publicación"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:16
|
||||
msgid "Quote:"
|
||||
msgstr "Cita:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:24
|
||||
#, python-format
|
||||
msgid "An excerpt from '%(book_title)s'"
|
||||
msgstr "Un extracto de '%(book_title)s'"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:32
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:31
|
||||
msgid "Position:"
|
||||
msgstr "Posición:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:45
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:44
|
||||
msgid "On page:"
|
||||
msgstr "Na páxina:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:51
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:50
|
||||
msgid "At percent:"
|
||||
msgstr "Na porcentaxe:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:24
|
||||
#, python-format
|
||||
msgid "Your review of '%(book_title)s'"
|
||||
msgstr "A túa recensión de '%(book_title)s'"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:40
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:39
|
||||
msgid "Review:"
|
||||
msgstr "Recensión:"
|
||||
|
||||
|
@ -4099,7 +4095,7 @@ msgid "Unfollow"
|
|||
msgstr "Non seguir"
|
||||
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:7
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:8
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:9
|
||||
msgid "Accept"
|
||||
msgstr "Aceptar"
|
||||
|
||||
|
@ -4139,15 +4135,15 @@ msgstr[1] "valorado <em><a href=\"%(path)s\">%(title)s</a></em>: %(display_ratin
|
|||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] "Recensión de \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s estrela): %(review_title)s"
|
||||
msgstr[1] "Recensión de \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s estrelas): %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] "Recensión de \"%(book_title)s\" (%(display_rating)s estrela): %(review_title)s"
|
||||
msgstr[1] "Recensión de \"%(book_title)s\" (%(display_rating)s estrelas): %(review_title)s"
|
||||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\": %(review_title)s"
|
||||
msgstr "Recensión de \"<a href='%(book_path)s'>%(book_title)s</a>\" %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\": %(review_title)s"
|
||||
msgstr "Recensión de \"%(book_title)s\": %(review_title)s"
|
||||
|
||||
#: bookwyrm/templates/snippets/goal_form.html:4
|
||||
#, python-format
|
||||
|
@ -4217,11 +4213,11 @@ msgstr "Só seguidoras"
|
|||
msgid "Post privacy"
|
||||
msgstr "Privacidade da publicación"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:4
|
||||
#: bookwyrm/templates/snippets/rate_action.html:5
|
||||
msgid "Leave a rating"
|
||||
msgstr "Fai unha valoración"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:19
|
||||
#: bookwyrm/templates/snippets/rate_action.html:20
|
||||
msgid "Rate"
|
||||
msgstr "Valorar"
|
||||
|
||||
|
@ -4315,29 +4311,29 @@ msgstr "Eliminar de %(name)s"
|
|||
msgid "Finish reading"
|
||||
msgstr "Rematar a lectura"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:72
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:73
|
||||
msgid "Content warning"
|
||||
msgstr "Aviso sobre o contido"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:79
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:80
|
||||
msgid "Show status"
|
||||
msgstr "Mostrar estado"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:101
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:102
|
||||
#, python-format
|
||||
msgid "(Page %(page)s)"
|
||||
msgstr "(Páxina %(page)s)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:103
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:104
|
||||
#, python-format
|
||||
msgid "(%(percent)s%%)"
|
||||
msgstr "(%(percent)s%%)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:125
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:126
|
||||
msgid "Open image in new window"
|
||||
msgstr "Abrir imaxe en nova ventá"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:144
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:145
|
||||
msgid "Hide status"
|
||||
msgstr "Agochar estado"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-17 19:26+0000\n"
|
||||
"PO-Revision-Date: 2022-01-19 23:20\n"
|
||||
"POT-Creation-Date: 2022-01-20 17:58+0000\n"
|
||||
"PO-Revision-Date: 2022-01-22 12:25\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Italian\n"
|
||||
"Language: it\n"
|
||||
|
@ -56,11 +56,11 @@ msgstr "Titolo del libro"
|
|||
|
||||
#: bookwyrm/forms.py:485 bookwyrm/templates/shelf/shelf.html:155
|
||||
#: bookwyrm/templates/shelf/shelf.html:187
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:33
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
msgstr "Valutazione"
|
||||
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:134
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:135
|
||||
msgid "Sort By"
|
||||
msgstr "Ordina per"
|
||||
|
||||
|
@ -224,69 +224,69 @@ msgstr "Citazioni"
|
|||
msgid "Everything else"
|
||||
msgstr "Tutto il resto"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home Timeline"
|
||||
msgstr "La tua timeline"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home"
|
||||
msgstr "Home"
|
||||
|
||||
#: bookwyrm/settings.py:122
|
||||
#: bookwyrm/settings.py:174
|
||||
msgid "Books Timeline"
|
||||
msgstr "Timeline dei libri"
|
||||
|
||||
#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/templates/search/layout.html:42
|
||||
#: bookwyrm/templates/user/layout.html:91
|
||||
msgid "Books"
|
||||
msgstr "Libri"
|
||||
|
||||
#: bookwyrm/settings.py:196
|
||||
#: bookwyrm/settings.py:248
|
||||
msgid "English"
|
||||
msgstr "English (Inglese)"
|
||||
|
||||
#: bookwyrm/settings.py:197
|
||||
#: bookwyrm/settings.py:249
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (Tedesco)"
|
||||
|
||||
#: bookwyrm/settings.py:198
|
||||
#: bookwyrm/settings.py:250
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (Spagnolo)"
|
||||
|
||||
#: bookwyrm/settings.py:199
|
||||
#: bookwyrm/settings.py:251
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (Galiziano)"
|
||||
|
||||
#: bookwyrm/settings.py:200
|
||||
#: bookwyrm/settings.py:252
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (Italiano)"
|
||||
|
||||
#: bookwyrm/settings.py:201
|
||||
#: bookwyrm/settings.py:253
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (Francese)"
|
||||
|
||||
#: bookwyrm/settings.py:202
|
||||
#: bookwyrm/settings.py:254
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Lituano)"
|
||||
|
||||
#: bookwyrm/settings.py:203
|
||||
#: bookwyrm/settings.py:255
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (Norvegese)"
|
||||
|
||||
#: bookwyrm/settings.py:204
|
||||
#: bookwyrm/settings.py:256
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (Portoghese Brasiliano)"
|
||||
|
||||
#: bookwyrm/settings.py:205
|
||||
#: bookwyrm/settings.py:257
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Portoghese europeo)"
|
||||
|
||||
#: bookwyrm/settings.py:206
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (Cinese Semplificato)"
|
||||
|
||||
#: bookwyrm/settings.py:207
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (Cinese Tradizionale)"
|
||||
|
||||
|
@ -351,12 +351,8 @@ msgstr "Incontra gli amministratori"
|
|||
|
||||
#: bookwyrm/templates/about/about.html:98
|
||||
#, python-format
|
||||
msgid "\n"
|
||||
" %(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior.\n"
|
||||
" "
|
||||
msgstr "\n"
|
||||
"I moderatori e gli amministratori di %(site_name)s mantengono il sito attivo e funzionante, applicano il <a href=\"coc_path\">codice di condotta</a>, e rispondono quando gli utenti segnalano spam o comportamenti non adeguati.\n"
|
||||
" "
|
||||
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior."
|
||||
msgstr "I moderatori e gli amministratori di %(site_name)s mantengono il sito attivo e funzionante, applicano il <a href=\"coc_path\">codice di condotta</a>, e rispondono quando gli utenti segnalano spam o comportamenti non adeguati."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:112
|
||||
msgid "Moderator"
|
||||
|
@ -428,7 +424,7 @@ msgid "Copy address"
|
|||
msgstr "Copia l'indirizzo"
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:68
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
msgid "Copied!"
|
||||
msgstr "Copiato!"
|
||||
|
||||
|
@ -497,7 +493,7 @@ msgstr "La loro lettura più breve quest’anno…"
|
|||
#: bookwyrm/templates/annual_summary/layout.html:245
|
||||
#: bookwyrm/templates/book/book.html:47
|
||||
#: bookwyrm/templates/discover/large-book.html:22
|
||||
#: bookwyrm/templates/landing/large-book.html:25
|
||||
#: bookwyrm/templates/landing/large-book.html:26
|
||||
#: bookwyrm/templates/landing/small-book.html:18
|
||||
msgid "by"
|
||||
msgstr "di"
|
||||
|
@ -733,9 +729,9 @@ msgstr "Il caricamento dei dati si collegherà a <strong>%(source_name)s</strong
|
|||
#: bookwyrm/templates/author/sync_modal.html:22
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:108
|
||||
#: bookwyrm/templates/book/sync_modal.html:22
|
||||
#: bookwyrm/templates/groups/members.html:30
|
||||
#: bookwyrm/templates/groups/members.html:29
|
||||
#: bookwyrm/templates/landing/password_reset.html:42
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:17
|
||||
msgid "Confirm"
|
||||
msgstr "Conferma"
|
||||
|
||||
|
@ -819,14 +815,14 @@ msgid "Places"
|
|||
msgstr "Luoghi"
|
||||
|
||||
#: bookwyrm/templates/book/book.html:348
|
||||
#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10
|
||||
#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:11
|
||||
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
|
||||
#: bookwyrm/templates/search/layout.html:25
|
||||
#: bookwyrm/templates/search/layout.html:50
|
||||
#: bookwyrm/templates/user/layout.html:85
|
||||
msgid "Lists"
|
||||
msgstr "Elenchi"
|
||||
msgstr "Liste"
|
||||
|
||||
#: bookwyrm/templates/book/book.html:359
|
||||
msgid "Add to list"
|
||||
|
@ -834,7 +830,7 @@ msgstr "Aggiungi all'elenco"
|
|||
|
||||
#: bookwyrm/templates/book/book.html:369
|
||||
#: bookwyrm/templates/book/cover_add_modal.html:31
|
||||
#: bookwyrm/templates/lists/list.html:208
|
||||
#: bookwyrm/templates/lists/list.html:209
|
||||
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31
|
||||
msgid "Add"
|
||||
|
@ -936,7 +932,7 @@ msgid "Back"
|
|||
msgstr "Indietro"
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book_form.html:21
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:16
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:15
|
||||
msgid "Title:"
|
||||
msgstr "Titolo:"
|
||||
|
||||
|
@ -1653,7 +1649,7 @@ msgid "What are you reading?"
|
|||
msgstr "Cosa stai leggendo?"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:9
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:163
|
||||
msgid "Search for a book"
|
||||
msgstr "Cerca un libro"
|
||||
|
||||
|
@ -1671,9 +1667,9 @@ msgstr "Puoi aggiungere libri quando inizi a usare %(site_name)s."
|
|||
#: bookwyrm/templates/get_started/books.html:17
|
||||
#: bookwyrm/templates/get_started/users.html:18
|
||||
#: bookwyrm/templates/get_started/users.html:19
|
||||
#: bookwyrm/templates/groups/members.html:16
|
||||
#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166
|
||||
#: bookwyrm/templates/groups/members.html:15
|
||||
#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/search/layout.html:4
|
||||
#: bookwyrm/templates/search/layout.html:9
|
||||
msgid "Search"
|
||||
|
@ -1689,7 +1685,7 @@ msgid "Popular on %(site_name)s"
|
|||
msgstr "Popolare su %(site_name)s"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:58
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#: bookwyrm/templates/lists/list.html:180
|
||||
msgid "No books found"
|
||||
msgstr "Nessun libro trovato"
|
||||
|
||||
|
@ -1794,7 +1790,7 @@ msgstr "Questa azione non può essere annullata"
|
|||
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:12
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:13
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:14
|
||||
msgid "Delete"
|
||||
msgstr "Elimina"
|
||||
|
||||
|
@ -1814,17 +1810,17 @@ msgstr "Descrizione gruppo:"
|
|||
msgid "Delete group"
|
||||
msgstr "Elimina gruppo"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:22
|
||||
#: bookwyrm/templates/groups/group.html:21
|
||||
msgid "Members of this group can create group-curated lists."
|
||||
msgstr "I membri di questo gruppo possono creare liste curate dal gruppo."
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:27
|
||||
#: bookwyrm/templates/groups/group.html:26
|
||||
#: bookwyrm/templates/lists/create_form.html:5
|
||||
#: bookwyrm/templates/lists/lists.html:20
|
||||
msgid "Create List"
|
||||
msgstr "Crea Lista"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:40
|
||||
#: bookwyrm/templates/groups/group.html:39
|
||||
msgid "This group has no lists"
|
||||
msgstr "Questo gruppo non ha alcuna lista"
|
||||
|
||||
|
@ -1832,15 +1828,15 @@ msgstr "Questo gruppo non ha alcuna lista"
|
|||
msgid "Edit group"
|
||||
msgstr "Modifica gruppo"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:12
|
||||
#: bookwyrm/templates/groups/members.html:11
|
||||
msgid "Search to add a user"
|
||||
msgstr "Cerca o aggiungi utente"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:33
|
||||
#: bookwyrm/templates/groups/members.html:32
|
||||
msgid "Leave group"
|
||||
msgstr "Lascia il gruppo"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:55
|
||||
#: bookwyrm/templates/groups/members.html:54
|
||||
#: bookwyrm/templates/groups/suggested_users.html:35
|
||||
#: bookwyrm/templates/snippets/suggested_users.html:31
|
||||
#: bookwyrm/templates/user/user_preview.html:36
|
||||
|
@ -2297,18 +2293,18 @@ msgstr "Vuoi eliminare la lista selezionata?"
|
|||
msgid "Edit List"
|
||||
msgstr "Modifica lista"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:7
|
||||
#: bookwyrm/templates/lists/embed-list.html:8
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s"
|
||||
msgstr "%(list_name)s, una lista di %(owner)s"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:17
|
||||
#: bookwyrm/templates/lists/embed-list.html:18
|
||||
#, python-format
|
||||
msgid "on <a href=\"/\">%(site_name)s</a>"
|
||||
msgstr "su <a href=\"/\">%(site_name)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:26
|
||||
#: bookwyrm/templates/lists/list.html:42
|
||||
#: bookwyrm/templates/lists/embed-list.html:27
|
||||
#: bookwyrm/templates/lists/list.html:43
|
||||
msgid "This list is currently empty"
|
||||
msgstr "Questa lista è attualmente vuota"
|
||||
|
||||
|
@ -2369,76 +2365,76 @@ msgstr "Crea un gruppo"
|
|||
msgid "Delete list"
|
||||
msgstr "Elimina lista"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:34
|
||||
#: bookwyrm/templates/lists/list.html:35
|
||||
msgid "You successfully suggested a book for this list!"
|
||||
msgstr "Hai consigliato con successo un libro per questa lista!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:36
|
||||
#: bookwyrm/templates/lists/list.html:37
|
||||
msgid "You successfully added a book to this list!"
|
||||
msgstr "Hai consigliato con successo un libro per questa lista!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:80
|
||||
#: bookwyrm/templates/lists/list.html:81
|
||||
#, python-format
|
||||
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
msgstr "Aggiunto da <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:95
|
||||
#: bookwyrm/templates/lists/list.html:96
|
||||
msgid "List position"
|
||||
msgstr "Posizione elenco"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:101
|
||||
#: bookwyrm/templates/lists/list.html:102
|
||||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21
|
||||
msgid "Set"
|
||||
msgstr "Imposta"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:116
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:19
|
||||
#: bookwyrm/templates/lists/list.html:117
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:20
|
||||
msgid "Remove"
|
||||
msgstr "Elimina"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:130
|
||||
#: bookwyrm/templates/lists/list.html:147
|
||||
#: bookwyrm/templates/lists/list.html:131
|
||||
#: bookwyrm/templates/lists/list.html:148
|
||||
msgid "Sort List"
|
||||
msgstr "Ordine lista"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:140
|
||||
#: bookwyrm/templates/lists/list.html:141
|
||||
msgid "Direction"
|
||||
msgstr "Direzione"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:154
|
||||
#: bookwyrm/templates/lists/list.html:155
|
||||
msgid "Add Books"
|
||||
msgstr "Aggiungi Libri"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:156
|
||||
#: bookwyrm/templates/lists/list.html:157
|
||||
msgid "Suggest Books"
|
||||
msgstr "Libri consigliati"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/lists/list.html:168
|
||||
msgid "search"
|
||||
msgstr "cerca"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:173
|
||||
#: bookwyrm/templates/lists/list.html:174
|
||||
msgid "Clear search"
|
||||
msgstr "Cancella ricerca"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:178
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#, python-format
|
||||
msgid "No books found matching the query \"%(query)s\""
|
||||
msgstr "Nessun libro trovato corrispondente alla query \"%(query)s\""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:210
|
||||
#: bookwyrm/templates/lists/list.html:211
|
||||
msgid "Suggest"
|
||||
msgstr "Suggerisci"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:221
|
||||
#: bookwyrm/templates/lists/list.html:222
|
||||
msgid "Embed this list on a website"
|
||||
msgstr "Incorpora questa lista in un sito web"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:229
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
msgid "Copy embed code"
|
||||
msgstr "Copia codice di incorporamento"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
#: bookwyrm/templates/lists/list.html:232
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
|
||||
msgstr "%(list_name)s, una lista di %(owner)s su %(site_name)s"
|
||||
|
@ -3914,15 +3910,15 @@ msgstr "Completato"
|
|||
msgid "This shelf is empty."
|
||||
msgstr "Questo scaffale è vuoto."
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:15
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:16
|
||||
msgid "Invite"
|
||||
msgstr "Invita"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:24
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:25
|
||||
msgid "Uninvite"
|
||||
msgstr "Revoca invito"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:28
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:29
|
||||
#, python-format
|
||||
msgid "Remove @%(username)s"
|
||||
msgstr "Rimuovi %(username)s"
|
||||
|
@ -4010,7 +4006,7 @@ msgstr "Attenzione Spoiler!"
|
|||
msgid "Include spoiler alert"
|
||||
msgstr "Includi avviso spoiler"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:48
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:47
|
||||
#: bookwyrm/templates/snippets/reading_modals/form.html:7
|
||||
msgid "Comment:"
|
||||
msgstr "Commenta:"
|
||||
|
@ -4019,33 +4015,33 @@ msgstr "Commenta:"
|
|||
msgid "Post"
|
||||
msgstr "Pubblica"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:16
|
||||
msgid "Quote:"
|
||||
msgstr "Citazione:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:24
|
||||
#, python-format
|
||||
msgid "An excerpt from '%(book_title)s'"
|
||||
msgstr "Un estratto da '%(book_title)s'"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:32
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:31
|
||||
msgid "Position:"
|
||||
msgstr "Posizione:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:45
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:44
|
||||
msgid "On page:"
|
||||
msgstr "Alla pagina:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:51
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:50
|
||||
msgid "At percent:"
|
||||
msgstr "Alla percentuale:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:24
|
||||
#, python-format
|
||||
msgid "Your review of '%(book_title)s'"
|
||||
msgstr "La tua recensione di '%(book_title)s'"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:40
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:39
|
||||
msgid "Review:"
|
||||
msgstr "Recensione:"
|
||||
|
||||
|
@ -4099,7 +4095,7 @@ msgid "Unfollow"
|
|||
msgstr "Smetti di seguire"
|
||||
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:7
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:8
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:9
|
||||
msgid "Accept"
|
||||
msgstr "Accetta"
|
||||
|
||||
|
@ -4139,15 +4135,15 @@ msgstr[1] "valutato <em><a href=\"%(path)s\">%(title)s</a></em>: %(display_ratin
|
|||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] "Recensione di \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s stella): %(review_title)s"
|
||||
msgstr[1] "Recensione di \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s stelle): %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] "Recensione di \"%(book_title)s\" (%(display_rating)s stella): %(review_title)s"
|
||||
msgstr[1] "Recensione di \"%(book_title)s\" (%(display_rating)s stelle): %(review_title)s"
|
||||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\": %(review_title)s"
|
||||
msgstr "Recensione di \"<a href='%(book_path)s'>%(book_title)s</a>\": %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\": %(review_title)s"
|
||||
msgstr "Recensione di \"%(book_title)s\": %(review_title)s"
|
||||
|
||||
#: bookwyrm/templates/snippets/goal_form.html:4
|
||||
#, python-format
|
||||
|
@ -4217,11 +4213,11 @@ msgstr "Solo Followers"
|
|||
msgid "Post privacy"
|
||||
msgstr "Privacy dei post"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:4
|
||||
#: bookwyrm/templates/snippets/rate_action.html:5
|
||||
msgid "Leave a rating"
|
||||
msgstr "Lascia una recensione"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:19
|
||||
#: bookwyrm/templates/snippets/rate_action.html:20
|
||||
msgid "Rate"
|
||||
msgstr "Vota"
|
||||
|
||||
|
@ -4315,29 +4311,29 @@ msgstr "Rimuovi da %(name)s"
|
|||
msgid "Finish reading"
|
||||
msgstr "Finito di leggere"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:72
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:73
|
||||
msgid "Content warning"
|
||||
msgstr "Avviso sul contenuto"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:79
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:80
|
||||
msgid "Show status"
|
||||
msgstr "Mostra stato"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:101
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:102
|
||||
#, python-format
|
||||
msgid "(Page %(page)s)"
|
||||
msgstr "(Pagina %(page)s)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:103
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:104
|
||||
#, python-format
|
||||
msgid "(%(percent)s%%)"
|
||||
msgstr "(%(percent)s%%)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:125
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:126
|
||||
msgid "Open image in new window"
|
||||
msgstr "Apri immagine in una nuova finestra"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:144
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:145
|
||||
msgid "Hide status"
|
||||
msgstr "Nascondi lo stato"
|
||||
|
||||
|
@ -4379,7 +4375,7 @@ msgstr "valutato <a href=\"%(book_path)s\">%(book)s</a>:"
|
|||
#: bookwyrm/templates/snippets/status/headers/read.html:10
|
||||
#, python-format
|
||||
msgid "finished reading <a href=\"%(book_path)s\">%(book)s</a> by <a href=\"%(author_path)s\">%(author_name)s</a>"
|
||||
msgstr "lettura del libro <a href=\"%(book_path)s\">%(book)s</a> di <a href=\"%(author_path)s\">%(author_name)s</a> completata"
|
||||
msgstr "ha finito di leggere <a href=\"%(book_path)s\">%(book)s</a> di <a href=\"%(author_path)s\">%(author_name)s</a>"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/headers/read.html:17
|
||||
#, python-format
|
||||
|
@ -4389,7 +4385,7 @@ msgstr "lettura di <a href=\"%(book_path)s\">%(book)s</a> completata"
|
|||
#: bookwyrm/templates/snippets/status/headers/reading.html:10
|
||||
#, python-format
|
||||
msgid "started reading <a href=\"%(book_path)s\">%(book)s</a> by <a href=\"%(author_path)s\">%(author_name)s</a>"
|
||||
msgstr "lettura del libro <a href=\"%(book_path)s\">%(book)s</a> di <a href=\"%(author_path)s\">%(author_name)s</a> iniziata"
|
||||
msgstr "ha iniziato a leggere <a href=\"%(book_path)s\">%(book)s</a> di <a href=\"%(author_path)s\">%(author_name)s</a>"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/headers/reading.html:17
|
||||
#, python-format
|
||||
|
@ -4409,7 +4405,7 @@ msgstr "recensito <a href=\"%(book_path)s\">%(book)s</a>"
|
|||
#: bookwyrm/templates/snippets/status/headers/to_read.html:10
|
||||
#, python-format
|
||||
msgid "wants to read <a href=\"%(book_path)s\">%(book)s</a> by <a href=\"%(author_path)s\">%(author_name)s</a>"
|
||||
msgstr "da leggere <a href=\"%(book_path)s\">%(book)s</a> da <a href=\"%(author_path)s\">%(author_name)s</a>"
|
||||
msgstr "vuole leggere <a href=\"%(book_path)s\">%(book)s</a> di <a href=\"%(author_path)s\">%(author_name)s</a>"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/headers/to_read.html:17
|
||||
#, python-format
|
||||
|
@ -4562,7 +4558,7 @@ msgstr "Visualizza tutti i libri"
|
|||
#: bookwyrm/templates/user/user.html:58
|
||||
#, python-format
|
||||
msgid "%(current_year)s Reading Goal"
|
||||
msgstr "Obiettivo di lettura del %(current_year)s"
|
||||
msgstr "Obiettivo di lettura %(current_year)s"
|
||||
|
||||
#: bookwyrm/templates/user/user.html:65
|
||||
msgid "User Activity"
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-17 19:26+0000\n"
|
||||
"PO-Revision-Date: 2022-01-17 19:57\n"
|
||||
"POT-Creation-Date: 2022-01-20 17:58+0000\n"
|
||||
"PO-Revision-Date: 2022-01-21 22:21\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Lithuanian\n"
|
||||
"Language: lt\n"
|
||||
|
@ -56,11 +56,11 @@ msgstr "Knygos antraštė"
|
|||
|
||||
#: bookwyrm/forms.py:485 bookwyrm/templates/shelf/shelf.html:155
|
||||
#: bookwyrm/templates/shelf/shelf.html:187
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:33
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
msgstr "Įvertinimas"
|
||||
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:134
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:135
|
||||
msgid "Sort By"
|
||||
msgstr "Rūšiuoti pagal"
|
||||
|
||||
|
@ -74,7 +74,7 @@ msgstr "Mažėjančia tvarka"
|
|||
|
||||
#: bookwyrm/forms.py:505
|
||||
msgid "Reading finish date cannot be before start date."
|
||||
msgstr ""
|
||||
msgstr "Skaitymo pabaigos data negali būti prieš skaitymo pradžios datą."
|
||||
|
||||
#: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167
|
||||
msgid "Error loading book"
|
||||
|
@ -193,20 +193,20 @@ msgstr "Privatu"
|
|||
|
||||
#: bookwyrm/models/link.py:51
|
||||
msgid "Free"
|
||||
msgstr ""
|
||||
msgstr "Nemokama"
|
||||
|
||||
#: bookwyrm/models/link.py:52
|
||||
msgid "Purchasable"
|
||||
msgstr ""
|
||||
msgstr "Galima nusipirkti"
|
||||
|
||||
#: bookwyrm/models/link.py:53
|
||||
msgid "Available for loan"
|
||||
msgstr ""
|
||||
msgstr "Galima pasiskolinti"
|
||||
|
||||
#: bookwyrm/models/link.py:70
|
||||
#: bookwyrm/templates/settings/link_domains/link_domains.html:23
|
||||
msgid "Approved"
|
||||
msgstr ""
|
||||
msgstr "Patvirtinti"
|
||||
|
||||
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272
|
||||
msgid "Reviews"
|
||||
|
@ -224,69 +224,69 @@ msgstr "Citatos"
|
|||
msgid "Everything else"
|
||||
msgstr "Visa kita"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home Timeline"
|
||||
msgstr "Pagrindinė siena"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home"
|
||||
msgstr "Pagrindinis"
|
||||
|
||||
#: bookwyrm/settings.py:122
|
||||
#: bookwyrm/settings.py:174
|
||||
msgid "Books Timeline"
|
||||
msgstr "Knygų siena"
|
||||
|
||||
#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/templates/search/layout.html:42
|
||||
#: bookwyrm/templates/user/layout.html:91
|
||||
msgid "Books"
|
||||
msgstr "Knygos"
|
||||
|
||||
#: bookwyrm/settings.py:196
|
||||
#: bookwyrm/settings.py:248
|
||||
msgid "English"
|
||||
msgstr "English (Anglų)"
|
||||
|
||||
#: bookwyrm/settings.py:197
|
||||
#: bookwyrm/settings.py:249
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (Vokiečių)"
|
||||
|
||||
#: bookwyrm/settings.py:198
|
||||
#: bookwyrm/settings.py:250
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (Ispanų)"
|
||||
|
||||
#: bookwyrm/settings.py:199
|
||||
#: bookwyrm/settings.py:251
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (galisų)"
|
||||
|
||||
#: bookwyrm/settings.py:200
|
||||
#: bookwyrm/settings.py:252
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr ""
|
||||
msgstr "Italų (Italian)"
|
||||
|
||||
#: bookwyrm/settings.py:201
|
||||
#: bookwyrm/settings.py:253
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (Prancūzų)"
|
||||
|
||||
#: bookwyrm/settings.py:202
|
||||
#: bookwyrm/settings.py:254
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių"
|
||||
|
||||
#: bookwyrm/settings.py:203
|
||||
#: bookwyrm/settings.py:255
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr ""
|
||||
msgstr "Norvegų (Norwegian)"
|
||||
|
||||
#: bookwyrm/settings.py:204
|
||||
#: bookwyrm/settings.py:256
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português brasileiro (Brazilijos portugalų)"
|
||||
|
||||
#: bookwyrm/settings.py:205
|
||||
#: bookwyrm/settings.py:257
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Europos portugalų)"
|
||||
|
||||
#: bookwyrm/settings.py:206
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (Supaprastinta kinų)"
|
||||
|
||||
#: bookwyrm/settings.py:207
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (Tradicinė kinų)"
|
||||
|
||||
|
@ -313,7 +313,7 @@ msgstr "Kažkas nepavyko. Atsiprašome."
|
|||
#: bookwyrm/templates/about/about.html:9
|
||||
#: bookwyrm/templates/about/layout.html:35
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
msgstr "Apie"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:18
|
||||
#: bookwyrm/templates/get_started/layout.html:20
|
||||
|
@ -324,22 +324,22 @@ msgstr "Sveiki atvykę į %(site_name)s!"
|
|||
#: bookwyrm/templates/about/about.html:22
|
||||
#, python-format
|
||||
msgid "%(site_name)s is part of <em>BookWyrm</em>, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the <a href=\"https://joinbookwyrm.com/instances/\" target=\"_blank\">BookWyrm network</a>, this community is unique."
|
||||
msgstr ""
|
||||
msgstr "%(site_name)s yra <em>BookWyrm</em>dalis, tinklo nepriklausomų skaitytojų bendruomenių. Jūs galite bendrauti su nariais iš šio <a href=\"https://joinbookwyrm.com/instances/\" target=\"_blank\">BookWyrm tinklo</a>, tačiau ši bendruomenė yra unikali."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:39
|
||||
#, python-format
|
||||
msgid "<a href=\"%(book_path)s\"><em>%(title)s</em></a> is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5."
|
||||
msgstr ""
|
||||
msgstr "<a href=\"%(book_path)s\"><em>%(title)s</em></a> yra %(site_name)s's mėgstamiausia knyga, kurios vidutinis įvertinimas yra %(rating)s iš 5."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:58
|
||||
#, python-format
|
||||
msgid "More %(site_name)s users want to read <a href=\"%(book_path)s\"><em>%(title)s</em></a> than any other book."
|
||||
msgstr ""
|
||||
msgstr "Daugiau %(site_name)s narių nori perskaityti <a href=\"%(book_path)s\"><em>%(title)s</em></a> negu bet kurią kitą knygą."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:77
|
||||
#, python-format
|
||||
msgid "<a href=\"%(book_path)s\"><em>%(title)s</em></a> has the most divisive ratings of any book on %(site_name)s."
|
||||
msgstr ""
|
||||
msgstr "<a href=\"%(book_path)s\"><em>%(title)s</em></a> labiausiai kontroversiškai reitinguota %(site_name)s."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:88
|
||||
msgid "Track your reading, talk about books, write reviews, and discover what to read next. Always ad-free, anti-corporate, and community-oriented, BookWyrm is human-scale software, designed to stay small and personal. If you have feature requests, bug reports, or grand dreams, <a href='https://joinbookwyrm.com/get-involved' target='_blank'>reach out</a> and make yourself heard."
|
||||
|
@ -347,18 +347,16 @@ msgstr ""
|
|||
|
||||
#: bookwyrm/templates/about/about.html:95
|
||||
msgid "Meet your admins"
|
||||
msgstr ""
|
||||
msgstr "Šio serverio administratoriai"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:98
|
||||
#, python-format
|
||||
msgid "\n"
|
||||
" %(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior.\n"
|
||||
" "
|
||||
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:112
|
||||
msgid "Moderator"
|
||||
msgstr ""
|
||||
msgstr "Moderatorius"
|
||||
|
||||
#: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131
|
||||
msgid "Admin"
|
||||
|
@ -379,15 +377,15 @@ msgstr "Elgesio kodeksas"
|
|||
|
||||
#: bookwyrm/templates/about/layout.html:11
|
||||
msgid "Active users:"
|
||||
msgstr ""
|
||||
msgstr "Aktyvūs vartotojai:"
|
||||
|
||||
#: bookwyrm/templates/about/layout.html:15
|
||||
msgid "Statuses posted:"
|
||||
msgstr ""
|
||||
msgstr "Publikuotos būsenos:"
|
||||
|
||||
#: bookwyrm/templates/about/layout.html:19
|
||||
msgid "Software version:"
|
||||
msgstr ""
|
||||
msgstr "Serverio programinės įrangos versija:"
|
||||
|
||||
#: bookwyrm/templates/about/layout.html:30
|
||||
#: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229
|
||||
|
@ -426,7 +424,7 @@ msgid "Copy address"
|
|||
msgstr "Kopijuoti adresą"
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:68
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
msgid "Copied!"
|
||||
msgstr "Nukopijuota"
|
||||
|
||||
|
@ -461,7 +459,7 @@ msgstr "Jei padarysite puslapį privačiu - senas raktas nustos galioti. Ateityj
|
|||
#: bookwyrm/templates/annual_summary/layout.html:112
|
||||
#, python-format
|
||||
msgid "Sadly %(display_name)s didn’t finish any books in %(year)s"
|
||||
msgstr ""
|
||||
msgstr "Gaila, bet %(display_name)s %(year)s metais neperskaitė nei vienos knygos"
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:118
|
||||
#, python-format
|
||||
|
@ -499,7 +497,7 @@ msgstr "Trumpiausias skaitinys tais metais…"
|
|||
#: bookwyrm/templates/annual_summary/layout.html:245
|
||||
#: bookwyrm/templates/book/book.html:47
|
||||
#: bookwyrm/templates/discover/large-book.html:22
|
||||
#: bookwyrm/templates/landing/large-book.html:25
|
||||
#: bookwyrm/templates/landing/large-book.html:26
|
||||
#: bookwyrm/templates/landing/small-book.html:18
|
||||
msgid "by"
|
||||
msgstr " "
|
||||
|
@ -739,9 +737,9 @@ msgstr "Duomenų įkėlimas prisijungs prie <strong>%(source_name)s</strong> ir
|
|||
#: bookwyrm/templates/author/sync_modal.html:22
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:108
|
||||
#: bookwyrm/templates/book/sync_modal.html:22
|
||||
#: bookwyrm/templates/groups/members.html:30
|
||||
#: bookwyrm/templates/groups/members.html:29
|
||||
#: bookwyrm/templates/landing/password_reset.html:42
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:17
|
||||
msgid "Confirm"
|
||||
msgstr "Patvirtinti"
|
||||
|
||||
|
@ -827,8 +825,8 @@ msgid "Places"
|
|||
msgstr "Vietos"
|
||||
|
||||
#: bookwyrm/templates/book/book.html:348
|
||||
#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10
|
||||
#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:11
|
||||
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
|
||||
#: bookwyrm/templates/search/layout.html:25
|
||||
#: bookwyrm/templates/search/layout.html:50
|
||||
|
@ -842,7 +840,7 @@ msgstr "Pridėti prie sąrašo"
|
|||
|
||||
#: bookwyrm/templates/book/book.html:369
|
||||
#: bookwyrm/templates/book/cover_add_modal.html:31
|
||||
#: bookwyrm/templates/lists/list.html:208
|
||||
#: bookwyrm/templates/lists/list.html:209
|
||||
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31
|
||||
msgid "Add"
|
||||
|
@ -944,7 +942,7 @@ msgid "Back"
|
|||
msgstr "Atgal"
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book_form.html:21
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:16
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:15
|
||||
msgid "Title:"
|
||||
msgstr "Pavadinimas:"
|
||||
|
||||
|
@ -1076,51 +1074,52 @@ msgstr "Paieškos leidimai"
|
|||
|
||||
#: bookwyrm/templates/book/file_links/add_link_modal.html:6
|
||||
msgid "Add file link"
|
||||
msgstr ""
|
||||
msgstr "Pridėti nuorodą į failą"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/add_link_modal.html:19
|
||||
msgid "Links from unknown domains will need to be approved by a moderator before they are added."
|
||||
msgstr ""
|
||||
msgstr "Nuorodos iš nežinomų domenų turi būti patvirtintos moderatorių."
|
||||
|
||||
#: bookwyrm/templates/book/file_links/add_link_modal.html:24
|
||||
msgid "URL:"
|
||||
msgstr ""
|
||||
msgstr "Nuoroda:"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/add_link_modal.html:29
|
||||
msgid "File type:"
|
||||
msgstr ""
|
||||
msgstr "Failo tipas:"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/add_link_modal.html:48
|
||||
msgid "Availability:"
|
||||
msgstr ""
|
||||
msgstr "Prieinamumas:"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:5
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:22
|
||||
#: bookwyrm/templates/book/file_links/links.html:53
|
||||
msgid "Edit links"
|
||||
msgstr ""
|
||||
msgstr "Redaguoti nuorodas"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:11
|
||||
#, python-format
|
||||
msgid "\n"
|
||||
" Links for \"<em>%(title)s</em>\"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
msgstr "\"<em>%(title)s</em>\" nuorodos\n"
|
||||
" "
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:32
|
||||
#: bookwyrm/templates/settings/link_domains/link_table.html:6
|
||||
msgid "URL"
|
||||
msgstr ""
|
||||
msgstr "Nuoroda"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:33
|
||||
#: bookwyrm/templates/settings/link_domains/link_table.html:7
|
||||
msgid "Added by"
|
||||
msgstr ""
|
||||
msgstr "Pridėjo"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:34
|
||||
#: bookwyrm/templates/settings/link_domains/link_table.html:8
|
||||
msgid "Filetype"
|
||||
msgstr ""
|
||||
msgstr "Failo tipas"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:35
|
||||
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25
|
||||
|
@ -1148,41 +1147,41 @@ msgstr "Veiksmai"
|
|||
#: bookwyrm/templates/book/file_links/edit_links.html:53
|
||||
#: bookwyrm/templates/book/file_links/verification_modal.html:25
|
||||
msgid "Report spam"
|
||||
msgstr ""
|
||||
msgstr "Pranešti apie brukalą"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:97
|
||||
msgid "No links available for this book."
|
||||
msgstr ""
|
||||
msgstr "Šiai knygai nuorodų nėra."
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:108
|
||||
#: bookwyrm/templates/book/file_links/links.html:18
|
||||
msgid "Add link to file"
|
||||
msgstr ""
|
||||
msgstr "Pridėti nuorodą į failą"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/file_link_page.html:6
|
||||
msgid "File Links"
|
||||
msgstr ""
|
||||
msgstr "Nuorodos į failus"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/links.html:9
|
||||
msgid "Get a copy"
|
||||
msgstr ""
|
||||
msgstr "Gauti kopiją"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/links.html:47
|
||||
msgid "No links available"
|
||||
msgstr ""
|
||||
msgstr "Nuorodų nėra"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/verification_modal.html:5
|
||||
msgid "Leaving BookWyrm"
|
||||
msgstr ""
|
||||
msgstr "Tęsti naršymą ne BookWyrm"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/verification_modal.html:11
|
||||
#, python-format
|
||||
msgid "This link is taking you to: <code>%(link_url)s</code>.<br> Is that where you'd like to go?"
|
||||
msgstr ""
|
||||
msgstr "Nuoroda veda į: <code>%(link_url)s</code>.<br> Ar tikrai norite ten nueiti?"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/verification_modal.html:20
|
||||
msgid "Continue"
|
||||
msgstr ""
|
||||
msgstr "Tęsti"
|
||||
|
||||
#: bookwyrm/templates/book/publisher_info.html:23
|
||||
#, python-format
|
||||
|
@ -1663,7 +1662,7 @@ msgid "What are you reading?"
|
|||
msgstr "Ką skaitome?"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:9
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:163
|
||||
msgid "Search for a book"
|
||||
msgstr "Ieškoti knygos"
|
||||
|
||||
|
@ -1681,9 +1680,9 @@ msgstr "Kai pradedate naudotis %(site_name)s, galite pridėti knygų."
|
|||
#: bookwyrm/templates/get_started/books.html:17
|
||||
#: bookwyrm/templates/get_started/users.html:18
|
||||
#: bookwyrm/templates/get_started/users.html:19
|
||||
#: bookwyrm/templates/groups/members.html:16
|
||||
#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166
|
||||
#: bookwyrm/templates/groups/members.html:15
|
||||
#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/search/layout.html:4
|
||||
#: bookwyrm/templates/search/layout.html:9
|
||||
msgid "Search"
|
||||
|
@ -1699,7 +1698,7 @@ msgid "Popular on %(site_name)s"
|
|||
msgstr "%(site_name)s populiaru"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:58
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#: bookwyrm/templates/lists/list.html:180
|
||||
msgid "No books found"
|
||||
msgstr "Knygų nerasta"
|
||||
|
||||
|
@ -1804,7 +1803,7 @@ msgstr "Nebegalite atšaukti šio veiksmo"
|
|||
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:12
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:13
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:14
|
||||
msgid "Delete"
|
||||
msgstr "Ištrinti"
|
||||
|
||||
|
@ -1824,17 +1823,17 @@ msgstr "Grupės aprašymas:"
|
|||
msgid "Delete group"
|
||||
msgstr "Ištrinti grupę"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:22
|
||||
#: bookwyrm/templates/groups/group.html:21
|
||||
msgid "Members of this group can create group-curated lists."
|
||||
msgstr ""
|
||||
msgstr "Šios grupės nariai gali kurti grupės kuruojamus sąrašus."
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:27
|
||||
#: bookwyrm/templates/groups/group.html:26
|
||||
#: bookwyrm/templates/lists/create_form.html:5
|
||||
#: bookwyrm/templates/lists/lists.html:20
|
||||
msgid "Create List"
|
||||
msgstr "Sukurti sąrašą"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:40
|
||||
#: bookwyrm/templates/groups/group.html:39
|
||||
msgid "This group has no lists"
|
||||
msgstr "Šioje grupėje nėra sąrašų"
|
||||
|
||||
|
@ -1842,15 +1841,15 @@ msgstr "Šioje grupėje nėra sąrašų"
|
|||
msgid "Edit group"
|
||||
msgstr "Redaguoti grupę"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:12
|
||||
#: bookwyrm/templates/groups/members.html:11
|
||||
msgid "Search to add a user"
|
||||
msgstr "Ieškokite, kad pridėtumėte naudotoją"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:33
|
||||
#: bookwyrm/templates/groups/members.html:32
|
||||
msgid "Leave group"
|
||||
msgstr "Išeiti iš grupės"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:55
|
||||
#: bookwyrm/templates/groups/members.html:54
|
||||
#: bookwyrm/templates/groups/suggested_users.html:35
|
||||
#: bookwyrm/templates/snippets/suggested_users.html:31
|
||||
#: bookwyrm/templates/user/user_preview.html:36
|
||||
|
@ -2067,7 +2066,7 @@ msgstr "Atmesti"
|
|||
|
||||
#: bookwyrm/templates/import/tooltip.html:6
|
||||
msgid "You can download your Goodreads data from the <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"noopener noreferrer\">Import/Export page</a> of your Goodreads account."
|
||||
msgstr ""
|
||||
msgstr "Galite atsisiųsti savo „Goodreads“ duomenis iš <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"noopener noreferrer\">Importavimo ir eksportavimo puslapio</a>, esančio jūsų „Goodreads“ paskyroje."
|
||||
|
||||
#: bookwyrm/templates/import/troubleshoot.html:7
|
||||
msgid "Failed items"
|
||||
|
@ -2315,18 +2314,18 @@ msgstr "Ištrinti šį sąrašą?"
|
|||
msgid "Edit List"
|
||||
msgstr "Redaguoti sąrašą"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:7
|
||||
#: bookwyrm/templates/lists/embed-list.html:8
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s"
|
||||
msgstr "%(list_name)s, sąrašą sudarė %(owner)s"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:17
|
||||
#: bookwyrm/templates/lists/embed-list.html:18
|
||||
#, python-format
|
||||
msgid "on <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:42
|
||||
#: bookwyrm/templates/lists/embed-list.html:27
|
||||
#: bookwyrm/templates/lists/list.html:43
|
||||
msgid "This list is currently empty"
|
||||
msgstr "Šiuo metu sąrašas tuščias"
|
||||
|
||||
|
@ -2387,76 +2386,76 @@ msgstr "Sukurti grupę"
|
|||
msgid "Delete list"
|
||||
msgstr "Ištrinti sąrašą"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:34
|
||||
#: bookwyrm/templates/lists/list.html:35
|
||||
msgid "You successfully suggested a book for this list!"
|
||||
msgstr "Sėkmingai pasiūlėte knygą šiam sąrašui!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:36
|
||||
#: bookwyrm/templates/lists/list.html:37
|
||||
msgid "You successfully added a book to this list!"
|
||||
msgstr "Sėkmingai pridėjote knygą į šį sąrašą!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:80
|
||||
#: bookwyrm/templates/lists/list.html:81
|
||||
#, python-format
|
||||
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
msgstr "Pridėjo <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:95
|
||||
#: bookwyrm/templates/lists/list.html:96
|
||||
msgid "List position"
|
||||
msgstr "Sąrašo pozicija"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:101
|
||||
#: bookwyrm/templates/lists/list.html:102
|
||||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21
|
||||
msgid "Set"
|
||||
msgstr "Nustatyti"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:116
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:19
|
||||
#: bookwyrm/templates/lists/list.html:117
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:20
|
||||
msgid "Remove"
|
||||
msgstr "Pašalinti"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:130
|
||||
#: bookwyrm/templates/lists/list.html:147
|
||||
#: bookwyrm/templates/lists/list.html:131
|
||||
#: bookwyrm/templates/lists/list.html:148
|
||||
msgid "Sort List"
|
||||
msgstr "Rūšiuoti sąrašą"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:140
|
||||
#: bookwyrm/templates/lists/list.html:141
|
||||
msgid "Direction"
|
||||
msgstr "Kryptis"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:154
|
||||
#: bookwyrm/templates/lists/list.html:155
|
||||
msgid "Add Books"
|
||||
msgstr "Pridėti knygų"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:156
|
||||
#: bookwyrm/templates/lists/list.html:157
|
||||
msgid "Suggest Books"
|
||||
msgstr "Siūlyti knygų"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/lists/list.html:168
|
||||
msgid "search"
|
||||
msgstr "paieška"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:173
|
||||
#: bookwyrm/templates/lists/list.html:174
|
||||
msgid "Clear search"
|
||||
msgstr "Išvalyti paiešką"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:178
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#, python-format
|
||||
msgid "No books found matching the query \"%(query)s\""
|
||||
msgstr "Pagal paiešką „%(query)s“ knygų nerasta"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:210
|
||||
#: bookwyrm/templates/lists/list.html:211
|
||||
msgid "Suggest"
|
||||
msgstr "Siūlyti"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:221
|
||||
#: bookwyrm/templates/lists/list.html:222
|
||||
msgid "Embed this list on a website"
|
||||
msgstr "Įdėkite šį sąrašą į tinklalapį"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:229
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
msgid "Copy embed code"
|
||||
msgstr "Nukopijuokite įterptinį kodą"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
#: bookwyrm/templates/lists/list.html:232
|
||||
#, 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"
|
||||
|
@ -3523,7 +3522,7 @@ msgstr "Pranešimai"
|
|||
#: bookwyrm/templates/settings/link_domains/link_domains.html:5
|
||||
#: bookwyrm/templates/settings/link_domains/link_domains.html:7
|
||||
msgid "Link Domains"
|
||||
msgstr ""
|
||||
msgstr "Susieti domenus"
|
||||
|
||||
#: bookwyrm/templates/settings/layout.html:72
|
||||
msgid "Instance Settings"
|
||||
|
@ -3546,23 +3545,23 @@ msgstr ""
|
|||
|
||||
#: bookwyrm/templates/settings/link_domains/link_domains.html:45
|
||||
msgid "Set display name"
|
||||
msgstr ""
|
||||
msgstr "Nurodyti pavadinimą"
|
||||
|
||||
#: bookwyrm/templates/settings/link_domains/link_domains.html:53
|
||||
msgid "View links"
|
||||
msgstr ""
|
||||
msgstr "Peržiūrėti nuorodas"
|
||||
|
||||
#: bookwyrm/templates/settings/link_domains/link_domains.html:96
|
||||
msgid "No domains currently approved"
|
||||
msgstr ""
|
||||
msgstr "Nėra patvirtintų domenų"
|
||||
|
||||
#: bookwyrm/templates/settings/link_domains/link_domains.html:98
|
||||
msgid "No domains currently pending"
|
||||
msgstr ""
|
||||
msgstr "Nėra domenų, laukiančių patvirtinimo"
|
||||
|
||||
#: bookwyrm/templates/settings/link_domains/link_domains.html:100
|
||||
msgid "No domains currently blocked"
|
||||
msgstr ""
|
||||
msgstr "Šiuo metu užblokuotų domenų nėra"
|
||||
|
||||
#: bookwyrm/templates/settings/link_domains/link_table.html:39
|
||||
msgid "No links available for this domain."
|
||||
|
@ -3582,7 +3581,7 @@ msgstr "Būsena ištrinta"
|
|||
|
||||
#: bookwyrm/templates/settings/reports/report.html:39
|
||||
msgid "Reported links"
|
||||
msgstr ""
|
||||
msgstr "Raportuotos nuorodos"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:55
|
||||
msgid "Moderator Comments"
|
||||
|
@ -3610,7 +3609,7 @@ msgstr ""
|
|||
|
||||
#: bookwyrm/templates/settings/reports/report_links_table.html:17
|
||||
msgid "Block domain"
|
||||
msgstr ""
|
||||
msgstr "Užblokuoti domeną"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report_preview.html:17
|
||||
msgid "No notes provided"
|
||||
|
@ -3865,7 +3864,7 @@ msgstr "Visam laikui ištrintas"
|
|||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:8
|
||||
msgid "User Actions"
|
||||
msgstr ""
|
||||
msgstr "Nario veiksmai"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:21
|
||||
msgid "Suspend user"
|
||||
|
@ -3889,7 +3888,7 @@ msgstr "Redaguoti lentyną"
|
|||
|
||||
#: bookwyrm/templates/shelf/shelf.html:24
|
||||
msgid "User profile"
|
||||
msgstr ""
|
||||
msgstr "Nario profilis"
|
||||
|
||||
#: bookwyrm/templates/shelf/shelf.html:39
|
||||
#: bookwyrm/templates/snippets/translated_shelf_name.html:3
|
||||
|
@ -3942,15 +3941,15 @@ msgstr "Baigta"
|
|||
msgid "This shelf is empty."
|
||||
msgstr "Ši lentyna tuščia."
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:15
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:16
|
||||
msgid "Invite"
|
||||
msgstr "Pakviesti"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:24
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:25
|
||||
msgid "Uninvite"
|
||||
msgstr "Atšaukti kvietimą"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:28
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:29
|
||||
#, python-format
|
||||
msgid "Remove @%(username)s"
|
||||
msgstr "Pašalinti @%(username)s"
|
||||
|
@ -4040,7 +4039,7 @@ msgstr "Galimas turinio atskleidimas!"
|
|||
msgid "Include spoiler alert"
|
||||
msgstr "Įdėti įspėjimą apie turinio atskleidimą"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:48
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:47
|
||||
#: bookwyrm/templates/snippets/reading_modals/form.html:7
|
||||
msgid "Comment:"
|
||||
msgstr "Komentuoti:"
|
||||
|
@ -4049,33 +4048,33 @@ msgstr "Komentuoti:"
|
|||
msgid "Post"
|
||||
msgstr "Publikuoti"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:16
|
||||
msgid "Quote:"
|
||||
msgstr "Citata:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:24
|
||||
#, python-format
|
||||
msgid "An excerpt from '%(book_title)s'"
|
||||
msgstr "Ištrauka iš „%(book_title)s“"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:32
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:31
|
||||
msgid "Position:"
|
||||
msgstr "Pozicija:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:45
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:44
|
||||
msgid "On page:"
|
||||
msgstr "Puslapyje:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:51
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:50
|
||||
msgid "At percent:"
|
||||
msgstr "Proc.:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:24
|
||||
#, python-format
|
||||
msgid "Your review of '%(book_title)s'"
|
||||
msgstr "Jūsų apžvalga apie „%(book_title)s“"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:40
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:39
|
||||
msgid "Review:"
|
||||
msgstr "Atsiliepimas:"
|
||||
|
||||
|
@ -4129,7 +4128,7 @@ msgid "Unfollow"
|
|||
msgstr "Nebesekti"
|
||||
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:7
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:8
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:9
|
||||
msgid "Accept"
|
||||
msgstr "Sutikti"
|
||||
|
||||
|
@ -4177,8 +4176,8 @@ msgstr[3] "įvertinta <em><a href=\"%(path)s\">%(title)s</a></em>: %(display_rat
|
|||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
|
@ -4186,7 +4185,7 @@ msgstr[3] ""
|
|||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\": %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\": %(review_title)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/goal_form.html:4
|
||||
|
@ -4257,11 +4256,11 @@ msgstr "Tik sekėjai"
|
|||
msgid "Post privacy"
|
||||
msgstr "Įrašo privatumas"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:4
|
||||
#: bookwyrm/templates/snippets/rate_action.html:5
|
||||
msgid "Leave a rating"
|
||||
msgstr "Palikti įvertinimą"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:19
|
||||
#: bookwyrm/templates/snippets/rate_action.html:20
|
||||
msgid "Rate"
|
||||
msgstr "Įvertinti"
|
||||
|
||||
|
@ -4355,29 +4354,29 @@ msgstr "Pašalinti iš %(name)s"
|
|||
msgid "Finish reading"
|
||||
msgstr "Baigti skaityti"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:72
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:73
|
||||
msgid "Content warning"
|
||||
msgstr "Įspėjimas dėl turinio"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:79
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:80
|
||||
msgid "Show status"
|
||||
msgstr "Rodyti būseną"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:101
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:102
|
||||
#, python-format
|
||||
msgid "(Page %(page)s)"
|
||||
msgstr "(Psl. %(page)s)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:103
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:104
|
||||
#, python-format
|
||||
msgid "(%(percent)s%%)"
|
||||
msgstr "(%(percent)s%%)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:125
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:126
|
||||
msgid "Open image in new window"
|
||||
msgstr "Atidaryti paveikslėlį naujame lange"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:144
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:145
|
||||
msgid "Hide status"
|
||||
msgstr "Slėpti būseną"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-17 19:26+0000\n"
|
||||
"PO-Revision-Date: 2022-01-17 19:57\n"
|
||||
"POT-Creation-Date: 2022-01-20 17:58+0000\n"
|
||||
"PO-Revision-Date: 2022-01-20 22:34\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Norwegian\n"
|
||||
"Language: no\n"
|
||||
|
@ -56,11 +56,11 @@ msgstr "Boktittel"
|
|||
|
||||
#: bookwyrm/forms.py:485 bookwyrm/templates/shelf/shelf.html:155
|
||||
#: bookwyrm/templates/shelf/shelf.html:187
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:33
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
msgstr "Vurdering"
|
||||
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:134
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:135
|
||||
msgid "Sort By"
|
||||
msgstr "Sorter etter"
|
||||
|
||||
|
@ -224,69 +224,69 @@ msgstr "Sitater"
|
|||
msgid "Everything else"
|
||||
msgstr "Andre ting"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home Timeline"
|
||||
msgstr "Lokal tidslinje"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home"
|
||||
msgstr "Hjem"
|
||||
|
||||
#: bookwyrm/settings.py:122
|
||||
#: bookwyrm/settings.py:174
|
||||
msgid "Books Timeline"
|
||||
msgstr "Boktidslinja"
|
||||
|
||||
#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/templates/search/layout.html:42
|
||||
#: bookwyrm/templates/user/layout.html:91
|
||||
msgid "Books"
|
||||
msgstr "Bøker"
|
||||
|
||||
#: bookwyrm/settings.py:196
|
||||
#: bookwyrm/settings.py:248
|
||||
msgid "English"
|
||||
msgstr "English (Engelsk)"
|
||||
|
||||
#: bookwyrm/settings.py:197
|
||||
#: bookwyrm/settings.py:249
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (Tysk)"
|
||||
|
||||
#: bookwyrm/settings.py:198
|
||||
#: bookwyrm/settings.py:250
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (Spansk)"
|
||||
|
||||
#: bookwyrm/settings.py:199
|
||||
#: bookwyrm/settings.py:251
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (Gallisk)"
|
||||
|
||||
#: bookwyrm/settings.py:200
|
||||
#: bookwyrm/settings.py:252
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (Italiensk)"
|
||||
|
||||
#: bookwyrm/settings.py:201
|
||||
#: bookwyrm/settings.py:253
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (Fransk)"
|
||||
|
||||
#: bookwyrm/settings.py:202
|
||||
#: bookwyrm/settings.py:254
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Litauisk)"
|
||||
|
||||
#: bookwyrm/settings.py:203
|
||||
#: bookwyrm/settings.py:255
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (Norsk)"
|
||||
|
||||
#: bookwyrm/settings.py:204
|
||||
#: bookwyrm/settings.py:256
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português - Brasil (Brasiliansk portugisisk)"
|
||||
|
||||
#: bookwyrm/settings.py:205
|
||||
#: bookwyrm/settings.py:257
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Europeisk Portugisisk)"
|
||||
|
||||
#: bookwyrm/settings.py:206
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (Forenklet kinesisk)"
|
||||
|
||||
#: bookwyrm/settings.py:207
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (Tradisjonelt kinesisk)"
|
||||
|
||||
|
@ -351,12 +351,8 @@ msgstr "Møt administratorene"
|
|||
|
||||
#: bookwyrm/templates/about/about.html:98
|
||||
#, python-format
|
||||
msgid "\n"
|
||||
" %(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior.\n"
|
||||
" "
|
||||
msgstr "\n"
|
||||
" %(site_name)s sine moderatorer og administratorer holder nettsida oppe og tilgjengelig, håndhever <a href=\"coc_path\">atferdskoden</a>, og svarer på brukernes rapporterer om spam og dårlig atferd.\n"
|
||||
" "
|
||||
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:112
|
||||
msgid "Moderator"
|
||||
|
@ -428,7 +424,7 @@ msgid "Copy address"
|
|||
msgstr "Kopiér adresse"
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:68
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
msgid "Copied!"
|
||||
msgstr "Kopiert!"
|
||||
|
||||
|
@ -497,7 +493,7 @@ msgstr "Den korteste teksten lest i år…"
|
|||
#: bookwyrm/templates/annual_summary/layout.html:245
|
||||
#: bookwyrm/templates/book/book.html:47
|
||||
#: bookwyrm/templates/discover/large-book.html:22
|
||||
#: bookwyrm/templates/landing/large-book.html:25
|
||||
#: bookwyrm/templates/landing/large-book.html:26
|
||||
#: bookwyrm/templates/landing/small-book.html:18
|
||||
msgid "by"
|
||||
msgstr "av"
|
||||
|
@ -733,9 +729,9 @@ msgstr "Laster inn data kobler til <strong>%(source_name)s</strong> og finner me
|
|||
#: bookwyrm/templates/author/sync_modal.html:22
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:108
|
||||
#: bookwyrm/templates/book/sync_modal.html:22
|
||||
#: bookwyrm/templates/groups/members.html:30
|
||||
#: bookwyrm/templates/groups/members.html:29
|
||||
#: bookwyrm/templates/landing/password_reset.html:42
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:17
|
||||
msgid "Confirm"
|
||||
msgstr "Bekreft"
|
||||
|
||||
|
@ -819,8 +815,8 @@ msgid "Places"
|
|||
msgstr "Steder"
|
||||
|
||||
#: bookwyrm/templates/book/book.html:348
|
||||
#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10
|
||||
#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:11
|
||||
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
|
||||
#: bookwyrm/templates/search/layout.html:25
|
||||
#: bookwyrm/templates/search/layout.html:50
|
||||
|
@ -834,7 +830,7 @@ msgstr "Legg til i liste"
|
|||
|
||||
#: bookwyrm/templates/book/book.html:369
|
||||
#: bookwyrm/templates/book/cover_add_modal.html:31
|
||||
#: bookwyrm/templates/lists/list.html:208
|
||||
#: bookwyrm/templates/lists/list.html:209
|
||||
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31
|
||||
msgid "Add"
|
||||
|
@ -936,7 +932,7 @@ msgid "Back"
|
|||
msgstr "Tilbake"
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book_form.html:21
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:16
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:15
|
||||
msgid "Title:"
|
||||
msgstr "Tittel:"
|
||||
|
||||
|
@ -1651,7 +1647,7 @@ msgid "What are you reading?"
|
|||
msgstr "Hva er det du leser nå?"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:9
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:163
|
||||
msgid "Search for a book"
|
||||
msgstr "Søk etter en bok"
|
||||
|
||||
|
@ -1669,9 +1665,9 @@ msgstr "Du kan legge til bøker når du begynner å bruke %(site_name)s."
|
|||
#: bookwyrm/templates/get_started/books.html:17
|
||||
#: bookwyrm/templates/get_started/users.html:18
|
||||
#: bookwyrm/templates/get_started/users.html:19
|
||||
#: bookwyrm/templates/groups/members.html:16
|
||||
#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166
|
||||
#: bookwyrm/templates/groups/members.html:15
|
||||
#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/search/layout.html:4
|
||||
#: bookwyrm/templates/search/layout.html:9
|
||||
msgid "Search"
|
||||
|
@ -1687,7 +1683,7 @@ msgid "Popular on %(site_name)s"
|
|||
msgstr "Populært på %(site_name)s"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:58
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#: bookwyrm/templates/lists/list.html:180
|
||||
msgid "No books found"
|
||||
msgstr "Ingen bøker funnet"
|
||||
|
||||
|
@ -1792,7 +1788,7 @@ msgstr "Denne handlingen er endelig"
|
|||
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:12
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:13
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:14
|
||||
msgid "Delete"
|
||||
msgstr "Slett"
|
||||
|
||||
|
@ -1812,17 +1808,17 @@ msgstr "Gruppebeskrivelse:"
|
|||
msgid "Delete group"
|
||||
msgstr "Slett gruppa"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:22
|
||||
#: bookwyrm/templates/groups/group.html:21
|
||||
msgid "Members of this group can create group-curated lists."
|
||||
msgstr "Medlemmer av denne gruppen kan opprette gruppekontrollerte lister."
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:27
|
||||
#: bookwyrm/templates/groups/group.html:26
|
||||
#: bookwyrm/templates/lists/create_form.html:5
|
||||
#: bookwyrm/templates/lists/lists.html:20
|
||||
msgid "Create List"
|
||||
msgstr "Opprett liste"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:40
|
||||
#: bookwyrm/templates/groups/group.html:39
|
||||
msgid "This group has no lists"
|
||||
msgstr "Denne gruppa har ingen lister"
|
||||
|
||||
|
@ -1830,15 +1826,15 @@ msgstr "Denne gruppa har ingen lister"
|
|||
msgid "Edit group"
|
||||
msgstr "Rediger gruppe"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:12
|
||||
#: bookwyrm/templates/groups/members.html:11
|
||||
msgid "Search to add a user"
|
||||
msgstr "Søk for å legge til et medlem"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:33
|
||||
#: bookwyrm/templates/groups/members.html:32
|
||||
msgid "Leave group"
|
||||
msgstr "Forlat gruppa"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:55
|
||||
#: bookwyrm/templates/groups/members.html:54
|
||||
#: bookwyrm/templates/groups/suggested_users.html:35
|
||||
#: bookwyrm/templates/snippets/suggested_users.html:31
|
||||
#: bookwyrm/templates/user/user_preview.html:36
|
||||
|
@ -2295,18 +2291,18 @@ msgstr "Slett denne lista?"
|
|||
msgid "Edit List"
|
||||
msgstr "Redigér lista"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:7
|
||||
#: bookwyrm/templates/lists/embed-list.html:8
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s"
|
||||
msgstr "%(list_name)s, ei liste av %(owner)s"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:17
|
||||
#: bookwyrm/templates/lists/embed-list.html:18
|
||||
#, python-format
|
||||
msgid "on <a href=\"/\">%(site_name)s</a>"
|
||||
msgstr "på <a href=\"/\">%(site_name)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:26
|
||||
#: bookwyrm/templates/lists/list.html:42
|
||||
#: bookwyrm/templates/lists/embed-list.html:27
|
||||
#: bookwyrm/templates/lists/list.html:43
|
||||
msgid "This list is currently empty"
|
||||
msgstr "Denne lista er for tida tom"
|
||||
|
||||
|
@ -2367,76 +2363,76 @@ msgstr "Opprett ei gruppe"
|
|||
msgid "Delete list"
|
||||
msgstr "Slett liste"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:34
|
||||
#: bookwyrm/templates/lists/list.html:35
|
||||
msgid "You successfully suggested a book for this list!"
|
||||
msgstr "Du har nå foreslått en bok for denne lista!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:36
|
||||
#: bookwyrm/templates/lists/list.html:37
|
||||
msgid "You successfully added a book to this list!"
|
||||
msgstr "Du har nå lagt til ei bok i denne lista!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:80
|
||||
#: bookwyrm/templates/lists/list.html:81
|
||||
#, python-format
|
||||
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
msgstr "Lagt til av <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:95
|
||||
#: bookwyrm/templates/lists/list.html:96
|
||||
msgid "List position"
|
||||
msgstr "Listeposisjon"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:101
|
||||
#: bookwyrm/templates/lists/list.html:102
|
||||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21
|
||||
msgid "Set"
|
||||
msgstr "Bruk"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:116
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:19
|
||||
#: bookwyrm/templates/lists/list.html:117
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:20
|
||||
msgid "Remove"
|
||||
msgstr "Fjern"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:130
|
||||
#: bookwyrm/templates/lists/list.html:147
|
||||
#: bookwyrm/templates/lists/list.html:131
|
||||
#: bookwyrm/templates/lists/list.html:148
|
||||
msgid "Sort List"
|
||||
msgstr "Sorter liste"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:140
|
||||
#: bookwyrm/templates/lists/list.html:141
|
||||
msgid "Direction"
|
||||
msgstr "Retning"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:154
|
||||
#: bookwyrm/templates/lists/list.html:155
|
||||
msgid "Add Books"
|
||||
msgstr "Legg til bøker"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:156
|
||||
#: bookwyrm/templates/lists/list.html:157
|
||||
msgid "Suggest Books"
|
||||
msgstr "Foreslå bøker"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/lists/list.html:168
|
||||
msgid "search"
|
||||
msgstr "søk"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:173
|
||||
#: bookwyrm/templates/lists/list.html:174
|
||||
msgid "Clear search"
|
||||
msgstr "Nullstill søk"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:178
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#, python-format
|
||||
msgid "No books found matching the query \"%(query)s\""
|
||||
msgstr "Ingen bøker funnet for søket\"%(query)s\""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:210
|
||||
#: bookwyrm/templates/lists/list.html:211
|
||||
msgid "Suggest"
|
||||
msgstr "Foreslå"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:221
|
||||
#: bookwyrm/templates/lists/list.html:222
|
||||
msgid "Embed this list on a website"
|
||||
msgstr "Legg denne lista inn på et nettsted"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:229
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
msgid "Copy embed code"
|
||||
msgstr "Kopier kode som legger inn lista"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
#: bookwyrm/templates/lists/list.html:232
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
|
||||
msgstr "%(list_name)s, en liste av %(owner)s på %(site_name)s"
|
||||
|
@ -3912,15 +3908,15 @@ msgstr "Fullført"
|
|||
msgid "This shelf is empty."
|
||||
msgstr "Denne hylla er tom."
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:15
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:16
|
||||
msgid "Invite"
|
||||
msgstr "Invitér"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:24
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:25
|
||||
msgid "Uninvite"
|
||||
msgstr "Avlys invitasjon"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:28
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:29
|
||||
#, python-format
|
||||
msgid "Remove @%(username)s"
|
||||
msgstr "Fjern %(username)s"
|
||||
|
@ -4008,7 +4004,7 @@ msgstr "Spoilers forut!"
|
|||
msgid "Include spoiler alert"
|
||||
msgstr "Inkluder spoiler-varsel"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:48
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:47
|
||||
#: bookwyrm/templates/snippets/reading_modals/form.html:7
|
||||
msgid "Comment:"
|
||||
msgstr "Kommentar:"
|
||||
|
@ -4017,33 +4013,33 @@ msgstr "Kommentar:"
|
|||
msgid "Post"
|
||||
msgstr "Innlegg"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:16
|
||||
msgid "Quote:"
|
||||
msgstr "Sitat:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:24
|
||||
#, python-format
|
||||
msgid "An excerpt from '%(book_title)s'"
|
||||
msgstr "En utdrag fra '%(book_title)s'"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:32
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:31
|
||||
msgid "Position:"
|
||||
msgstr "Plassering:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:45
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:44
|
||||
msgid "On page:"
|
||||
msgstr "På side:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:51
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:50
|
||||
msgid "At percent:"
|
||||
msgstr "Ved prosent:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:24
|
||||
#, python-format
|
||||
msgid "Your review of '%(book_title)s'"
|
||||
msgstr "Din anmeldelse av '%(book_title)s"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:40
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:39
|
||||
msgid "Review:"
|
||||
msgstr "Anmeldelse:"
|
||||
|
||||
|
@ -4097,7 +4093,7 @@ msgid "Unfollow"
|
|||
msgstr "Slutt å følge"
|
||||
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:7
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:8
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:9
|
||||
msgid "Accept"
|
||||
msgstr "Godta"
|
||||
|
||||
|
@ -4137,14 +4133,14 @@ msgstr[1] "vurderte <em><a href=\"%(path)s\">%(title)s</a></em> til: %(display_r
|
|||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\": %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\": %(review_title)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/goal_form.html:4
|
||||
|
@ -4215,11 +4211,11 @@ msgstr "Kun følgere"
|
|||
msgid "Post privacy"
|
||||
msgstr "Delingsinstilling for post"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:4
|
||||
#: bookwyrm/templates/snippets/rate_action.html:5
|
||||
msgid "Leave a rating"
|
||||
msgstr "Legg inn en vurdering"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:19
|
||||
#: bookwyrm/templates/snippets/rate_action.html:20
|
||||
msgid "Rate"
|
||||
msgstr "Vurdér"
|
||||
|
||||
|
@ -4313,29 +4309,29 @@ msgstr "Fjern fra %(name)s"
|
|||
msgid "Finish reading"
|
||||
msgstr "Fullfør lesing"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:72
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:73
|
||||
msgid "Content warning"
|
||||
msgstr "Varsel om følsomt innhold"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:79
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:80
|
||||
msgid "Show status"
|
||||
msgstr "Vis status"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:101
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:102
|
||||
#, python-format
|
||||
msgid "(Page %(page)s)"
|
||||
msgstr "(side %(page)s)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:103
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:104
|
||||
#, python-format
|
||||
msgid "(%(percent)s%%)"
|
||||
msgstr "(%(percent)s%%)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:125
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:126
|
||||
msgid "Open image in new window"
|
||||
msgstr "Åpne bilde i nytt vindu"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:144
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:145
|
||||
msgid "Hide status"
|
||||
msgstr "Skjul status"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-17 19:26+0000\n"
|
||||
"PO-Revision-Date: 2022-01-18 14:10\n"
|
||||
"POT-Creation-Date: 2022-01-20 17:58+0000\n"
|
||||
"PO-Revision-Date: 2022-01-20 22:34\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Portuguese, Brazilian\n"
|
||||
"Language: pt\n"
|
||||
|
@ -56,11 +56,11 @@ msgstr "Título do livro"
|
|||
|
||||
#: bookwyrm/forms.py:485 bookwyrm/templates/shelf/shelf.html:155
|
||||
#: bookwyrm/templates/shelf/shelf.html:187
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:33
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
msgstr "Avaliação"
|
||||
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:134
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:135
|
||||
msgid "Sort By"
|
||||
msgstr "Organizar por"
|
||||
|
||||
|
@ -224,69 +224,69 @@ msgstr "Citações"
|
|||
msgid "Everything else"
|
||||
msgstr "Todo o resto"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home Timeline"
|
||||
msgstr "Linha do tempo"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home"
|
||||
msgstr "Página inicial"
|
||||
|
||||
#: bookwyrm/settings.py:122
|
||||
#: bookwyrm/settings.py:174
|
||||
msgid "Books Timeline"
|
||||
msgstr "Linha do tempo dos livros"
|
||||
|
||||
#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/templates/search/layout.html:42
|
||||
#: bookwyrm/templates/user/layout.html:91
|
||||
msgid "Books"
|
||||
msgstr "Livros"
|
||||
|
||||
#: bookwyrm/settings.py:196
|
||||
#: bookwyrm/settings.py:248
|
||||
msgid "English"
|
||||
msgstr "English (Inglês)"
|
||||
|
||||
#: bookwyrm/settings.py:197
|
||||
#: bookwyrm/settings.py:249
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (Alemão)"
|
||||
|
||||
#: bookwyrm/settings.py:198
|
||||
#: bookwyrm/settings.py:250
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (Espanhol)"
|
||||
|
||||
#: bookwyrm/settings.py:199
|
||||
#: bookwyrm/settings.py:251
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (Galego)"
|
||||
|
||||
#: bookwyrm/settings.py:200
|
||||
#: bookwyrm/settings.py:252
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (Italiano)"
|
||||
|
||||
#: bookwyrm/settings.py:201
|
||||
#: bookwyrm/settings.py:253
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (Francês)"
|
||||
|
||||
#: bookwyrm/settings.py:202
|
||||
#: bookwyrm/settings.py:254
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (Lituano)"
|
||||
|
||||
#: bookwyrm/settings.py:203
|
||||
#: bookwyrm/settings.py:255
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (Norueguês)"
|
||||
|
||||
#: bookwyrm/settings.py:204
|
||||
#: bookwyrm/settings.py:256
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (Português do Brasil)"
|
||||
|
||||
#: bookwyrm/settings.py:205
|
||||
#: bookwyrm/settings.py:257
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português Europeu (Português Europeu)"
|
||||
|
||||
#: bookwyrm/settings.py:206
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (Chinês simplificado)"
|
||||
|
||||
#: bookwyrm/settings.py:207
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (Chinês tradicional)"
|
||||
|
||||
|
@ -351,11 +351,8 @@ msgstr "Conheça a administração"
|
|||
|
||||
#: bookwyrm/templates/about/about.html:98
|
||||
#, python-format
|
||||
msgid "\n"
|
||||
" %(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior.\n"
|
||||
" "
|
||||
msgstr "\n"
|
||||
" Moderadores/as e administradores/as da instância %(site_name)s mantêm o site em funcionamento, aplicam o <a href=\"coc_path\">código de conduta</a> e respondem às denúncias de spam e mau comportamento na rede. "
|
||||
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior."
|
||||
msgstr "Moderadores/as e administradores/as de %(site_name)s mantêm o site funcionando, aplicam o <a href=\"coc_path\">código de conduta</a> e respondem quando usuários denunciam spam e mau comportamento."
|
||||
|
||||
#: bookwyrm/templates/about/about.html:112
|
||||
msgid "Moderator"
|
||||
|
@ -427,7 +424,7 @@ msgid "Copy address"
|
|||
msgstr "Copiar endereço"
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:68
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
msgid "Copied!"
|
||||
msgstr "Copiado!"
|
||||
|
||||
|
@ -496,7 +493,7 @@ msgstr "A leitura mais curta do ano…"
|
|||
#: bookwyrm/templates/annual_summary/layout.html:245
|
||||
#: bookwyrm/templates/book/book.html:47
|
||||
#: bookwyrm/templates/discover/large-book.html:22
|
||||
#: bookwyrm/templates/landing/large-book.html:25
|
||||
#: bookwyrm/templates/landing/large-book.html:26
|
||||
#: bookwyrm/templates/landing/small-book.html:18
|
||||
msgid "by"
|
||||
msgstr "de"
|
||||
|
@ -732,9 +729,9 @@ msgstr "Para carregar informações nos conectaremos a <strong>%(source_name)s</
|
|||
#: bookwyrm/templates/author/sync_modal.html:22
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:108
|
||||
#: bookwyrm/templates/book/sync_modal.html:22
|
||||
#: bookwyrm/templates/groups/members.html:30
|
||||
#: bookwyrm/templates/groups/members.html:29
|
||||
#: bookwyrm/templates/landing/password_reset.html:42
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:17
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmar"
|
||||
|
||||
|
@ -818,8 +815,8 @@ msgid "Places"
|
|||
msgstr "Lugares"
|
||||
|
||||
#: bookwyrm/templates/book/book.html:348
|
||||
#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10
|
||||
#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:11
|
||||
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
|
||||
#: bookwyrm/templates/search/layout.html:25
|
||||
#: bookwyrm/templates/search/layout.html:50
|
||||
|
@ -833,7 +830,7 @@ msgstr "Adicionar à lista"
|
|||
|
||||
#: bookwyrm/templates/book/book.html:369
|
||||
#: bookwyrm/templates/book/cover_add_modal.html:31
|
||||
#: bookwyrm/templates/lists/list.html:208
|
||||
#: bookwyrm/templates/lists/list.html:209
|
||||
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31
|
||||
msgid "Add"
|
||||
|
@ -935,7 +932,7 @@ msgid "Back"
|
|||
msgstr "Voltar"
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book_form.html:21
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:16
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:15
|
||||
msgid "Title:"
|
||||
msgstr "Título:"
|
||||
|
||||
|
@ -1652,7 +1649,7 @@ msgid "What are you reading?"
|
|||
msgstr "O que você está lendo?"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:9
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:163
|
||||
msgid "Search for a book"
|
||||
msgstr "Pesquisar livro"
|
||||
|
||||
|
@ -1670,9 +1667,9 @@ msgstr "Você pode adicionar livros quando começar a usar o %(site_name)s."
|
|||
#: bookwyrm/templates/get_started/books.html:17
|
||||
#: bookwyrm/templates/get_started/users.html:18
|
||||
#: bookwyrm/templates/get_started/users.html:19
|
||||
#: bookwyrm/templates/groups/members.html:16
|
||||
#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166
|
||||
#: bookwyrm/templates/groups/members.html:15
|
||||
#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/search/layout.html:4
|
||||
#: bookwyrm/templates/search/layout.html:9
|
||||
msgid "Search"
|
||||
|
@ -1688,7 +1685,7 @@ msgid "Popular on %(site_name)s"
|
|||
msgstr "Popular em %(site_name)s"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:58
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#: bookwyrm/templates/lists/list.html:180
|
||||
msgid "No books found"
|
||||
msgstr "Nenhum livro encontrado"
|
||||
|
||||
|
@ -1793,7 +1790,7 @@ msgstr "Esta ação não pode ser desfeita"
|
|||
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:12
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:13
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:14
|
||||
msgid "Delete"
|
||||
msgstr "Excluir"
|
||||
|
||||
|
@ -1813,17 +1810,17 @@ msgstr "Descrição do grupo:"
|
|||
msgid "Delete group"
|
||||
msgstr "Excluir grupo"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:22
|
||||
#: bookwyrm/templates/groups/group.html:21
|
||||
msgid "Members of this group can create group-curated lists."
|
||||
msgstr "Membros deste grupo podem criar listas organizadas coletivamente."
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:27
|
||||
#: bookwyrm/templates/groups/group.html:26
|
||||
#: bookwyrm/templates/lists/create_form.html:5
|
||||
#: bookwyrm/templates/lists/lists.html:20
|
||||
msgid "Create List"
|
||||
msgstr "Criar lista"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:40
|
||||
#: bookwyrm/templates/groups/group.html:39
|
||||
msgid "This group has no lists"
|
||||
msgstr "Este grupo não tem listas"
|
||||
|
||||
|
@ -1831,15 +1828,15 @@ msgstr "Este grupo não tem listas"
|
|||
msgid "Edit group"
|
||||
msgstr "Editar grupo"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:12
|
||||
#: bookwyrm/templates/groups/members.html:11
|
||||
msgid "Search to add a user"
|
||||
msgstr "Pesquisar usuário para adicionar"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:33
|
||||
#: bookwyrm/templates/groups/members.html:32
|
||||
msgid "Leave group"
|
||||
msgstr "Sair do grupo"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:55
|
||||
#: bookwyrm/templates/groups/members.html:54
|
||||
#: bookwyrm/templates/groups/suggested_users.html:35
|
||||
#: bookwyrm/templates/snippets/suggested_users.html:31
|
||||
#: bookwyrm/templates/user/user_preview.html:36
|
||||
|
@ -2296,18 +2293,18 @@ msgstr "Deletar esta lista?"
|
|||
msgid "Edit List"
|
||||
msgstr "Editar lista"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:7
|
||||
#: bookwyrm/templates/lists/embed-list.html:8
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s"
|
||||
msgstr "%(list_name)s, uma lista de %(owner)s"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:17
|
||||
#: bookwyrm/templates/lists/embed-list.html:18
|
||||
#, python-format
|
||||
msgid "on <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:42
|
||||
#: bookwyrm/templates/lists/embed-list.html:27
|
||||
#: bookwyrm/templates/lists/list.html:43
|
||||
msgid "This list is currently empty"
|
||||
msgstr "Esta lista está vazia"
|
||||
|
||||
|
@ -2368,76 +2365,76 @@ msgstr "Criar grupo"
|
|||
msgid "Delete list"
|
||||
msgstr "Excluir lista"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:34
|
||||
#: bookwyrm/templates/lists/list.html:35
|
||||
msgid "You successfully suggested a book for this list!"
|
||||
msgstr "Você sugeriu um livro para esta lista com sucesso!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:36
|
||||
#: bookwyrm/templates/lists/list.html:37
|
||||
msgid "You successfully added a book to this list!"
|
||||
msgstr "Você adicionou um livro a esta lista com sucesso!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:80
|
||||
#: bookwyrm/templates/lists/list.html:81
|
||||
#, python-format
|
||||
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
msgstr "Adicionado por <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:95
|
||||
#: bookwyrm/templates/lists/list.html:96
|
||||
msgid "List position"
|
||||
msgstr "Posição na lista"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:101
|
||||
#: bookwyrm/templates/lists/list.html:102
|
||||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21
|
||||
msgid "Set"
|
||||
msgstr "Definir"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:116
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:19
|
||||
#: bookwyrm/templates/lists/list.html:117
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:20
|
||||
msgid "Remove"
|
||||
msgstr "Remover"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:130
|
||||
#: bookwyrm/templates/lists/list.html:147
|
||||
#: bookwyrm/templates/lists/list.html:131
|
||||
#: bookwyrm/templates/lists/list.html:148
|
||||
msgid "Sort List"
|
||||
msgstr "Ordenar lista"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:140
|
||||
#: bookwyrm/templates/lists/list.html:141
|
||||
msgid "Direction"
|
||||
msgstr "Sentido"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:154
|
||||
#: bookwyrm/templates/lists/list.html:155
|
||||
msgid "Add Books"
|
||||
msgstr "Adicionar livros"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:156
|
||||
#: bookwyrm/templates/lists/list.html:157
|
||||
msgid "Suggest Books"
|
||||
msgstr "Sugerir livros"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/lists/list.html:168
|
||||
msgid "search"
|
||||
msgstr "pesquisar"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:173
|
||||
#: bookwyrm/templates/lists/list.html:174
|
||||
msgid "Clear search"
|
||||
msgstr "Limpar pesquisa"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:178
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#, python-format
|
||||
msgid "No books found matching the query \"%(query)s\""
|
||||
msgstr "Nenhum livro encontrado para \"%(query)s\""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:210
|
||||
#: bookwyrm/templates/lists/list.html:211
|
||||
msgid "Suggest"
|
||||
msgstr "Sugerir"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:221
|
||||
#: bookwyrm/templates/lists/list.html:222
|
||||
msgid "Embed this list on a website"
|
||||
msgstr "Incorpore esta lista em um site"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:229
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
msgid "Copy embed code"
|
||||
msgstr "Copiar código de incorporação"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
#: bookwyrm/templates/lists/list.html:232
|
||||
#, 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"
|
||||
|
@ -3913,15 +3910,15 @@ msgstr "Terminado"
|
|||
msgid "This shelf is empty."
|
||||
msgstr "Esta estante está vazia."
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:15
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:16
|
||||
msgid "Invite"
|
||||
msgstr "Convidar"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:24
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:25
|
||||
msgid "Uninvite"
|
||||
msgstr "Desconvidar"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:28
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:29
|
||||
#, python-format
|
||||
msgid "Remove @%(username)s"
|
||||
msgstr "Excluir @%(username)s"
|
||||
|
@ -4009,7 +4006,7 @@ msgstr "Alerta de spoiler!"
|
|||
msgid "Include spoiler alert"
|
||||
msgstr "Incluir alerta de spoiler"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:48
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:47
|
||||
#: bookwyrm/templates/snippets/reading_modals/form.html:7
|
||||
msgid "Comment:"
|
||||
msgstr "Comentário:"
|
||||
|
@ -4018,33 +4015,33 @@ msgstr "Comentário:"
|
|||
msgid "Post"
|
||||
msgstr "Publicar"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:16
|
||||
msgid "Quote:"
|
||||
msgstr "Citação:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:24
|
||||
#, python-format
|
||||
msgid "An excerpt from '%(book_title)s'"
|
||||
msgstr "Um trecho de '%(book_title)s'"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:32
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:31
|
||||
msgid "Position:"
|
||||
msgstr "Posição:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:45
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:44
|
||||
msgid "On page:"
|
||||
msgstr "Na página:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:51
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:50
|
||||
msgid "At percent:"
|
||||
msgstr "Na porcentagem:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:24
|
||||
#, python-format
|
||||
msgid "Your review of '%(book_title)s'"
|
||||
msgstr "Sua resenha de '%(book_title)s'"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:40
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:39
|
||||
msgid "Review:"
|
||||
msgstr "Resenha:"
|
||||
|
||||
|
@ -4098,7 +4095,7 @@ msgid "Unfollow"
|
|||
msgstr "Deixar de seguir"
|
||||
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:7
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:8
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:9
|
||||
msgid "Accept"
|
||||
msgstr "Aceitar"
|
||||
|
||||
|
@ -4138,15 +4135,15 @@ msgstr[1] "avaliou <em><a href=\"%(path)s\">%(title)s</a></em>: %(display_rating
|
|||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] "Resenha de \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s estrela): %(review_title)s"
|
||||
msgstr[1] "Resenha de \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s estrelas): %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] "Resenha de \"%(book_title)s\" (%(display_rating)s estrela): %(review_title)s"
|
||||
msgstr[1] "Resenha de \"%(book_title)s\" (%(display_rating)s estrelas): %(review_title)s"
|
||||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\": %(review_title)s"
|
||||
msgstr "Resenha de \"<a href='%(book_path)s'>%(book_title)s</a>\": %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\": %(review_title)s"
|
||||
msgstr "Resenha de \"%(book_title)s\": %(review_title)s"
|
||||
|
||||
#: bookwyrm/templates/snippets/goal_form.html:4
|
||||
#, python-format
|
||||
|
@ -4216,11 +4213,11 @@ msgstr "Apenas seguidores"
|
|||
msgid "Post privacy"
|
||||
msgstr "Privacidade da publicação"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:4
|
||||
#: bookwyrm/templates/snippets/rate_action.html:5
|
||||
msgid "Leave a rating"
|
||||
msgstr "Deixe uma avaliação"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:19
|
||||
#: bookwyrm/templates/snippets/rate_action.html:20
|
||||
msgid "Rate"
|
||||
msgstr "Avaliar"
|
||||
|
||||
|
@ -4314,29 +4311,29 @@ msgstr "Remover de %(name)s"
|
|||
msgid "Finish reading"
|
||||
msgstr "Terminar de ler"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:72
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:73
|
||||
msgid "Content warning"
|
||||
msgstr "Aviso de conteúdo"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:79
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:80
|
||||
msgid "Show status"
|
||||
msgstr "Mostrar publicação"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:101
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:102
|
||||
#, python-format
|
||||
msgid "(Page %(page)s)"
|
||||
msgstr "(Página %(page)s)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:103
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:104
|
||||
#, python-format
|
||||
msgid "(%(percent)s%%)"
|
||||
msgstr "(%(percent)s%%)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:125
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:126
|
||||
msgid "Open image in new window"
|
||||
msgstr "Abrir imagem em nova janela"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:144
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:145
|
||||
msgid "Hide status"
|
||||
msgstr "Esconder publicação"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-17 19:26+0000\n"
|
||||
"PO-Revision-Date: 2022-01-17 19:57\n"
|
||||
"POT-Creation-Date: 2022-01-20 17:58+0000\n"
|
||||
"PO-Revision-Date: 2022-01-20 22:34\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Portuguese\n"
|
||||
"Language: pt\n"
|
||||
|
@ -56,11 +56,11 @@ msgstr "Título do livro"
|
|||
|
||||
#: bookwyrm/forms.py:485 bookwyrm/templates/shelf/shelf.html:155
|
||||
#: bookwyrm/templates/shelf/shelf.html:187
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:33
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
msgstr "Classificação"
|
||||
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:134
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:135
|
||||
msgid "Sort By"
|
||||
msgstr "Ordenar Por"
|
||||
|
||||
|
@ -224,69 +224,69 @@ msgstr "Citações"
|
|||
msgid "Everything else"
|
||||
msgstr "Tudo o resto"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home Timeline"
|
||||
msgstr "Cronograma Inicial"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home"
|
||||
msgstr "Início"
|
||||
|
||||
#: bookwyrm/settings.py:122
|
||||
#: bookwyrm/settings.py:174
|
||||
msgid "Books Timeline"
|
||||
msgstr "Cronograma de Livros"
|
||||
|
||||
#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/templates/search/layout.html:42
|
||||
#: bookwyrm/templates/user/layout.html:91
|
||||
msgid "Books"
|
||||
msgstr "Livros"
|
||||
|
||||
#: bookwyrm/settings.py:196
|
||||
#: bookwyrm/settings.py:248
|
||||
msgid "English"
|
||||
msgstr "Inglês"
|
||||
|
||||
#: bookwyrm/settings.py:197
|
||||
#: bookwyrm/settings.py:249
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch (Alemão)"
|
||||
|
||||
#: bookwyrm/settings.py:198
|
||||
#: bookwyrm/settings.py:250
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español (Espanhol)"
|
||||
|
||||
#: bookwyrm/settings.py:199
|
||||
#: bookwyrm/settings.py:251
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego (Galician)"
|
||||
|
||||
#: bookwyrm/settings.py:200
|
||||
#: bookwyrm/settings.py:252
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr "Italiano (Italiano)"
|
||||
|
||||
#: bookwyrm/settings.py:201
|
||||
#: bookwyrm/settings.py:253
|
||||
msgid "Français (French)"
|
||||
msgstr "Français (Francês)"
|
||||
|
||||
#: bookwyrm/settings.py:202
|
||||
#: bookwyrm/settings.py:254
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių (lituano)"
|
||||
|
||||
#: bookwyrm/settings.py:203
|
||||
#: bookwyrm/settings.py:255
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr "Norsk (Norueguês)"
|
||||
|
||||
#: bookwyrm/settings.py:204
|
||||
#: bookwyrm/settings.py:256
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr "Português do Brasil (Português brasileiro)"
|
||||
|
||||
#: bookwyrm/settings.py:205
|
||||
#: bookwyrm/settings.py:257
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr "Português (Português Europeu)"
|
||||
|
||||
#: bookwyrm/settings.py:206
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文 (Chinês simplificado)"
|
||||
|
||||
#: bookwyrm/settings.py:207
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文 (Chinês tradicional)"
|
||||
|
||||
|
@ -351,9 +351,7 @@ msgstr "Conheça os nossos administradores"
|
|||
|
||||
#: bookwyrm/templates/about/about.html:98
|
||||
#, python-format
|
||||
msgid "\n"
|
||||
" %(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior.\n"
|
||||
" "
|
||||
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:112
|
||||
|
@ -426,7 +424,7 @@ msgid "Copy address"
|
|||
msgstr "Copiar endereço"
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:68
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
msgid "Copied!"
|
||||
msgstr "Copiado!"
|
||||
|
||||
|
@ -495,7 +493,7 @@ msgstr "A sua menor leitura este ano…"
|
|||
#: bookwyrm/templates/annual_summary/layout.html:245
|
||||
#: bookwyrm/templates/book/book.html:47
|
||||
#: bookwyrm/templates/discover/large-book.html:22
|
||||
#: bookwyrm/templates/landing/large-book.html:25
|
||||
#: bookwyrm/templates/landing/large-book.html:26
|
||||
#: bookwyrm/templates/landing/small-book.html:18
|
||||
msgid "by"
|
||||
msgstr "por"
|
||||
|
@ -731,9 +729,9 @@ msgstr "Carregar os dados irá conectar a <strong>%(source_name)s</strong> e ver
|
|||
#: bookwyrm/templates/author/sync_modal.html:22
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:108
|
||||
#: bookwyrm/templates/book/sync_modal.html:22
|
||||
#: bookwyrm/templates/groups/members.html:30
|
||||
#: bookwyrm/templates/groups/members.html:29
|
||||
#: bookwyrm/templates/landing/password_reset.html:42
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:17
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmar"
|
||||
|
||||
|
@ -817,8 +815,8 @@ msgid "Places"
|
|||
msgstr "Lugares"
|
||||
|
||||
#: bookwyrm/templates/book/book.html:348
|
||||
#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10
|
||||
#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:11
|
||||
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
|
||||
#: bookwyrm/templates/search/layout.html:25
|
||||
#: bookwyrm/templates/search/layout.html:50
|
||||
|
@ -832,7 +830,7 @@ msgstr "Adicionar à lista"
|
|||
|
||||
#: bookwyrm/templates/book/book.html:369
|
||||
#: bookwyrm/templates/book/cover_add_modal.html:31
|
||||
#: bookwyrm/templates/lists/list.html:208
|
||||
#: bookwyrm/templates/lists/list.html:209
|
||||
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31
|
||||
msgid "Add"
|
||||
|
@ -934,7 +932,7 @@ msgid "Back"
|
|||
msgstr "Voltar"
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book_form.html:21
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:16
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:15
|
||||
msgid "Title:"
|
||||
msgstr "Título:"
|
||||
|
||||
|
@ -1649,7 +1647,7 @@ msgid "What are you reading?"
|
|||
msgstr "O que andas a ler?"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:9
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:163
|
||||
msgid "Search for a book"
|
||||
msgstr "Pesquisar por um livro"
|
||||
|
||||
|
@ -1667,9 +1665,9 @@ msgstr "Podes adicionar livros quando começas a usar %(site_name)s."
|
|||
#: bookwyrm/templates/get_started/books.html:17
|
||||
#: bookwyrm/templates/get_started/users.html:18
|
||||
#: bookwyrm/templates/get_started/users.html:19
|
||||
#: bookwyrm/templates/groups/members.html:16
|
||||
#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166
|
||||
#: bookwyrm/templates/groups/members.html:15
|
||||
#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/search/layout.html:4
|
||||
#: bookwyrm/templates/search/layout.html:9
|
||||
msgid "Search"
|
||||
|
@ -1685,7 +1683,7 @@ msgid "Popular on %(site_name)s"
|
|||
msgstr "Populares em %(site_name)s"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:58
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#: bookwyrm/templates/lists/list.html:180
|
||||
msgid "No books found"
|
||||
msgstr "Nenhum livro encontrado"
|
||||
|
||||
|
@ -1790,7 +1788,7 @@ msgstr "Esta ação não pode ser desfeita"
|
|||
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:12
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:13
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:14
|
||||
msgid "Delete"
|
||||
msgstr "Apagar"
|
||||
|
||||
|
@ -1810,17 +1808,17 @@ msgstr "Descrição do Grupo:"
|
|||
msgid "Delete group"
|
||||
msgstr "Apagar grupo"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:22
|
||||
#: bookwyrm/templates/groups/group.html:21
|
||||
msgid "Members of this group can create group-curated lists."
|
||||
msgstr "Os membros deste grupo podem criar listas administradas apenas pelo grupo."
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:27
|
||||
#: bookwyrm/templates/groups/group.html:26
|
||||
#: bookwyrm/templates/lists/create_form.html:5
|
||||
#: bookwyrm/templates/lists/lists.html:20
|
||||
msgid "Create List"
|
||||
msgstr "Criar Lista"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:40
|
||||
#: bookwyrm/templates/groups/group.html:39
|
||||
msgid "This group has no lists"
|
||||
msgstr "Este grupo não tem listas"
|
||||
|
||||
|
@ -1828,15 +1826,15 @@ msgstr "Este grupo não tem listas"
|
|||
msgid "Edit group"
|
||||
msgstr "Editar grupo"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:12
|
||||
#: bookwyrm/templates/groups/members.html:11
|
||||
msgid "Search to add a user"
|
||||
msgstr "Procura para adicionares um utilizador"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:33
|
||||
#: bookwyrm/templates/groups/members.html:32
|
||||
msgid "Leave group"
|
||||
msgstr "Sair do grupo"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:55
|
||||
#: bookwyrm/templates/groups/members.html:54
|
||||
#: bookwyrm/templates/groups/suggested_users.html:35
|
||||
#: bookwyrm/templates/snippets/suggested_users.html:31
|
||||
#: bookwyrm/templates/user/user_preview.html:36
|
||||
|
@ -2293,18 +2291,18 @@ msgstr "Apagar esta lista?"
|
|||
msgid "Edit List"
|
||||
msgstr "Editar lista"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:7
|
||||
#: bookwyrm/templates/lists/embed-list.html:8
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s"
|
||||
msgstr "%(list_name)s, uma lista de %(owner)s"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:17
|
||||
#: bookwyrm/templates/lists/embed-list.html:18
|
||||
#, python-format
|
||||
msgid "on <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:42
|
||||
#: bookwyrm/templates/lists/embed-list.html:27
|
||||
#: bookwyrm/templates/lists/list.html:43
|
||||
msgid "This list is currently empty"
|
||||
msgstr "Esta lista está vazia"
|
||||
|
||||
|
@ -2365,76 +2363,76 @@ msgstr "Criar um Grupo"
|
|||
msgid "Delete list"
|
||||
msgstr "Apagar lista"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:34
|
||||
#: bookwyrm/templates/lists/list.html:35
|
||||
msgid "You successfully suggested a book for this list!"
|
||||
msgstr "Sugeriste um livro para esta lista com sucesso!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:36
|
||||
#: bookwyrm/templates/lists/list.html:37
|
||||
msgid "You successfully added a book to this list!"
|
||||
msgstr "Adicionaste um livro a esta lista com sucesso!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:80
|
||||
#: bookwyrm/templates/lists/list.html:81
|
||||
#, python-format
|
||||
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
msgstr "Adicionado por <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:95
|
||||
#: bookwyrm/templates/lists/list.html:96
|
||||
msgid "List position"
|
||||
msgstr "Posição da lista"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:101
|
||||
#: bookwyrm/templates/lists/list.html:102
|
||||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21
|
||||
msgid "Set"
|
||||
msgstr "Definir"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:116
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:19
|
||||
#: bookwyrm/templates/lists/list.html:117
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:20
|
||||
msgid "Remove"
|
||||
msgstr "Remover"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:130
|
||||
#: bookwyrm/templates/lists/list.html:147
|
||||
#: bookwyrm/templates/lists/list.html:131
|
||||
#: bookwyrm/templates/lists/list.html:148
|
||||
msgid "Sort List"
|
||||
msgstr "Ordenar lista"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:140
|
||||
#: bookwyrm/templates/lists/list.html:141
|
||||
msgid "Direction"
|
||||
msgstr "Direcção"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:154
|
||||
#: bookwyrm/templates/lists/list.html:155
|
||||
msgid "Add Books"
|
||||
msgstr "Adicionar Livros"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:156
|
||||
#: bookwyrm/templates/lists/list.html:157
|
||||
msgid "Suggest Books"
|
||||
msgstr "Sugerir Livros"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/lists/list.html:168
|
||||
msgid "search"
|
||||
msgstr "pesquisar"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:173
|
||||
#: bookwyrm/templates/lists/list.html:174
|
||||
msgid "Clear search"
|
||||
msgstr "Limpar Pesquisa"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:178
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#, python-format
|
||||
msgid "No books found matching the query \"%(query)s\""
|
||||
msgstr "Nenhum livro encontrado que corresponda à consulta \"%(query)s\""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:210
|
||||
#: bookwyrm/templates/lists/list.html:211
|
||||
msgid "Suggest"
|
||||
msgstr "Sugerir"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:221
|
||||
#: bookwyrm/templates/lists/list.html:222
|
||||
msgid "Embed this list on a website"
|
||||
msgstr "Incorporar esta lista num website"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:229
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
msgid "Copy embed code"
|
||||
msgstr "Copiar código de incorporação"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
#: bookwyrm/templates/lists/list.html:232
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
|
||||
msgstr "%(list_name)s, uma lista de %(owner)s no %(site_name)s"
|
||||
|
@ -3910,15 +3908,15 @@ msgstr "Concluído"
|
|||
msgid "This shelf is empty."
|
||||
msgstr "Esta prateleira está vazia."
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:15
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:16
|
||||
msgid "Invite"
|
||||
msgstr "Convidar"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:24
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:25
|
||||
msgid "Uninvite"
|
||||
msgstr "Cancelar convite"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:28
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:29
|
||||
#, python-format
|
||||
msgid "Remove @%(username)s"
|
||||
msgstr "Remover %(username)s"
|
||||
|
@ -4006,7 +4004,7 @@ msgstr "Alerta de spoiler!"
|
|||
msgid "Include spoiler alert"
|
||||
msgstr "Incluir aviso de spoiler"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:48
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:47
|
||||
#: bookwyrm/templates/snippets/reading_modals/form.html:7
|
||||
msgid "Comment:"
|
||||
msgstr "Comentar:"
|
||||
|
@ -4015,33 +4013,33 @@ msgstr "Comentar:"
|
|||
msgid "Post"
|
||||
msgstr "Publicação"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:16
|
||||
msgid "Quote:"
|
||||
msgstr "Citação:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:24
|
||||
#, python-format
|
||||
msgid "An excerpt from '%(book_title)s'"
|
||||
msgstr "Um excerto de '%(book_title)s'"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:32
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:31
|
||||
msgid "Position:"
|
||||
msgstr "Posição:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:45
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:44
|
||||
msgid "On page:"
|
||||
msgstr "Na página:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:51
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:50
|
||||
msgid "At percent:"
|
||||
msgstr "Na percentagem:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:24
|
||||
#, python-format
|
||||
msgid "Your review of '%(book_title)s'"
|
||||
msgstr "A tua critica de '%(book_title)s'"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:40
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:39
|
||||
msgid "Review:"
|
||||
msgstr "Critica:"
|
||||
|
||||
|
@ -4095,7 +4093,7 @@ msgid "Unfollow"
|
|||
msgstr "Deixar de seguir"
|
||||
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:7
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:8
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:9
|
||||
msgid "Accept"
|
||||
msgstr "Aceitar"
|
||||
|
||||
|
@ -4135,14 +4133,14 @@ msgstr[1] "avaliado <em><a href=\"%(path)s\">%(title)s</a></em>: %(display_ratin
|
|||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\": %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\": %(review_title)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/goal_form.html:4
|
||||
|
@ -4213,11 +4211,11 @@ msgstr "Apenas seguidores"
|
|||
msgid "Post privacy"
|
||||
msgstr "Privacidade de publicação"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:4
|
||||
#: bookwyrm/templates/snippets/rate_action.html:5
|
||||
msgid "Leave a rating"
|
||||
msgstr "Deixar uma avaliação"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:19
|
||||
#: bookwyrm/templates/snippets/rate_action.html:20
|
||||
msgid "Rate"
|
||||
msgstr "Avaliação"
|
||||
|
||||
|
@ -4311,29 +4309,29 @@ msgstr "Remover de %(name)s"
|
|||
msgid "Finish reading"
|
||||
msgstr "Terminar leitura"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:72
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:73
|
||||
msgid "Content warning"
|
||||
msgstr "Aviso de Conteúdo"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:79
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:80
|
||||
msgid "Show status"
|
||||
msgstr "Mostrar o estado"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:101
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:102
|
||||
#, python-format
|
||||
msgid "(Page %(page)s)"
|
||||
msgstr "(Página %(page)s)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:103
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:104
|
||||
#, python-format
|
||||
msgid "(%(percent)s%%)"
|
||||
msgstr "(%(percent)s%%)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:125
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:126
|
||||
msgid "Open image in new window"
|
||||
msgstr "Abrir imagem numa nova janela"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:144
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:145
|
||||
msgid "Hide status"
|
||||
msgstr "Ocultar estado"
|
||||
|
||||
|
|
BIN
locale/sv_SE/LC_MESSAGES/django.mo
Normal file
BIN
locale/sv_SE/LC_MESSAGES/django.mo
Normal file
Binary file not shown.
4633
locale/sv_SE/LC_MESSAGES/django.po
Normal file
4633
locale/sv_SE/LC_MESSAGES/django.po
Normal file
File diff suppressed because it is too large
Load diff
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-17 19:26+0000\n"
|
||||
"PO-Revision-Date: 2022-01-17 19:57\n"
|
||||
"POT-Creation-Date: 2022-01-20 17:58+0000\n"
|
||||
"PO-Revision-Date: 2022-01-20 22:34\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Chinese Simplified\n"
|
||||
"Language: zh\n"
|
||||
|
@ -56,11 +56,11 @@ msgstr "书名"
|
|||
|
||||
#: bookwyrm/forms.py:485 bookwyrm/templates/shelf/shelf.html:155
|
||||
#: bookwyrm/templates/shelf/shelf.html:187
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:33
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
msgstr "评价"
|
||||
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:134
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:135
|
||||
msgid "Sort By"
|
||||
msgstr "排序方式"
|
||||
|
||||
|
@ -224,69 +224,69 @@ msgstr "引用"
|
|||
msgid "Everything else"
|
||||
msgstr "所有其它内容"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home Timeline"
|
||||
msgstr "主页时间线"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home"
|
||||
msgstr "主页"
|
||||
|
||||
#: bookwyrm/settings.py:122
|
||||
#: bookwyrm/settings.py:174
|
||||
msgid "Books Timeline"
|
||||
msgstr "书目时间线"
|
||||
|
||||
#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/templates/search/layout.html:42
|
||||
#: bookwyrm/templates/user/layout.html:91
|
||||
msgid "Books"
|
||||
msgstr "书目"
|
||||
|
||||
#: bookwyrm/settings.py:196
|
||||
#: bookwyrm/settings.py:248
|
||||
msgid "English"
|
||||
msgstr "English(英语)"
|
||||
|
||||
#: bookwyrm/settings.py:197
|
||||
#: bookwyrm/settings.py:249
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch(德语)"
|
||||
|
||||
#: bookwyrm/settings.py:198
|
||||
#: bookwyrm/settings.py:250
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español(西班牙语)"
|
||||
|
||||
#: bookwyrm/settings.py:199
|
||||
#: bookwyrm/settings.py:251
|
||||
msgid "Galego (Galician)"
|
||||
msgstr "Galego(加利西亚语)"
|
||||
|
||||
#: bookwyrm/settings.py:200
|
||||
#: bookwyrm/settings.py:252
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:201
|
||||
#: bookwyrm/settings.py:253
|
||||
msgid "Français (French)"
|
||||
msgstr "Français(法语)"
|
||||
|
||||
#: bookwyrm/settings.py:202
|
||||
#: bookwyrm/settings.py:254
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr "Lietuvių(立陶宛语)"
|
||||
|
||||
#: bookwyrm/settings.py:203
|
||||
#: bookwyrm/settings.py:255
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:204
|
||||
#: bookwyrm/settings.py:256
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:205
|
||||
#: bookwyrm/settings.py:257
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:206
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "简体中文"
|
||||
|
||||
#: bookwyrm/settings.py:207
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文(繁体中文)"
|
||||
|
||||
|
@ -351,9 +351,7 @@ msgstr ""
|
|||
|
||||
#: bookwyrm/templates/about/about.html:98
|
||||
#, python-format
|
||||
msgid "\n"
|
||||
" %(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior.\n"
|
||||
" "
|
||||
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:112
|
||||
|
@ -426,7 +424,7 @@ msgid "Copy address"
|
|||
msgstr "复制地址"
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:68
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
msgid "Copied!"
|
||||
msgstr "复制成功!"
|
||||
|
||||
|
@ -493,7 +491,7 @@ msgstr "TA 今年阅读最短的…"
|
|||
#: bookwyrm/templates/annual_summary/layout.html:245
|
||||
#: bookwyrm/templates/book/book.html:47
|
||||
#: bookwyrm/templates/discover/large-book.html:22
|
||||
#: bookwyrm/templates/landing/large-book.html:25
|
||||
#: bookwyrm/templates/landing/large-book.html:26
|
||||
#: bookwyrm/templates/landing/small-book.html:18
|
||||
msgid "by"
|
||||
msgstr "作者"
|
||||
|
@ -727,9 +725,9 @@ msgstr "加载数据会连接到 <strong>%(source_name)s</strong> 并检查这
|
|||
#: bookwyrm/templates/author/sync_modal.html:22
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:108
|
||||
#: bookwyrm/templates/book/sync_modal.html:22
|
||||
#: bookwyrm/templates/groups/members.html:30
|
||||
#: bookwyrm/templates/groups/members.html:29
|
||||
#: bookwyrm/templates/landing/password_reset.html:42
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:17
|
||||
msgid "Confirm"
|
||||
msgstr "确认"
|
||||
|
||||
|
@ -812,8 +810,8 @@ msgid "Places"
|
|||
msgstr "地点"
|
||||
|
||||
#: bookwyrm/templates/book/book.html:348
|
||||
#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10
|
||||
#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:11
|
||||
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
|
||||
#: bookwyrm/templates/search/layout.html:25
|
||||
#: bookwyrm/templates/search/layout.html:50
|
||||
|
@ -827,7 +825,7 @@ msgstr "添加到列表"
|
|||
|
||||
#: bookwyrm/templates/book/book.html:369
|
||||
#: bookwyrm/templates/book/cover_add_modal.html:31
|
||||
#: bookwyrm/templates/lists/list.html:208
|
||||
#: bookwyrm/templates/lists/list.html:209
|
||||
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31
|
||||
msgid "Add"
|
||||
|
@ -929,7 +927,7 @@ msgid "Back"
|
|||
msgstr "返回"
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book_form.html:21
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:16
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:15
|
||||
msgid "Title:"
|
||||
msgstr "标题:"
|
||||
|
||||
|
@ -1642,7 +1640,7 @@ msgid "What are you reading?"
|
|||
msgstr "你在阅读什么?"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:9
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:163
|
||||
msgid "Search for a book"
|
||||
msgstr "搜索书目"
|
||||
|
||||
|
@ -1660,9 +1658,9 @@ msgstr "你可以在开始使用 %(site_name)s 后添加书目。"
|
|||
#: bookwyrm/templates/get_started/books.html:17
|
||||
#: bookwyrm/templates/get_started/users.html:18
|
||||
#: bookwyrm/templates/get_started/users.html:19
|
||||
#: bookwyrm/templates/groups/members.html:16
|
||||
#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166
|
||||
#: bookwyrm/templates/groups/members.html:15
|
||||
#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/search/layout.html:4
|
||||
#: bookwyrm/templates/search/layout.html:9
|
||||
msgid "Search"
|
||||
|
@ -1678,7 +1676,7 @@ msgid "Popular on %(site_name)s"
|
|||
msgstr "%(site_name)s 上的热门"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:58
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#: bookwyrm/templates/lists/list.html:180
|
||||
msgid "No books found"
|
||||
msgstr "没有找到书目"
|
||||
|
||||
|
@ -1783,7 +1781,7 @@ msgstr "此操作无法被撤销"
|
|||
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:12
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:13
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:14
|
||||
msgid "Delete"
|
||||
msgstr "删除"
|
||||
|
||||
|
@ -1803,17 +1801,17 @@ msgstr "群组描述"
|
|||
msgid "Delete group"
|
||||
msgstr "删除群组"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:22
|
||||
#: bookwyrm/templates/groups/group.html:21
|
||||
msgid "Members of this group can create group-curated lists."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:27
|
||||
#: bookwyrm/templates/groups/group.html:26
|
||||
#: bookwyrm/templates/lists/create_form.html:5
|
||||
#: bookwyrm/templates/lists/lists.html:20
|
||||
msgid "Create List"
|
||||
msgstr "创建列表"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:40
|
||||
#: bookwyrm/templates/groups/group.html:39
|
||||
msgid "This group has no lists"
|
||||
msgstr "这个群组没有任何列表"
|
||||
|
||||
|
@ -1821,15 +1819,15 @@ msgstr "这个群组没有任何列表"
|
|||
msgid "Edit group"
|
||||
msgstr "编辑群组"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:12
|
||||
#: bookwyrm/templates/groups/members.html:11
|
||||
msgid "Search to add a user"
|
||||
msgstr "搜索或添加用户"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:33
|
||||
#: bookwyrm/templates/groups/members.html:32
|
||||
msgid "Leave group"
|
||||
msgstr "退出群组"
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:55
|
||||
#: bookwyrm/templates/groups/members.html:54
|
||||
#: bookwyrm/templates/groups/suggested_users.html:35
|
||||
#: bookwyrm/templates/snippets/suggested_users.html:31
|
||||
#: bookwyrm/templates/user/user_preview.html:36
|
||||
|
@ -2282,18 +2280,18 @@ msgstr "删除此列表?"
|
|||
msgid "Edit List"
|
||||
msgstr "编辑列表"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:7
|
||||
#: bookwyrm/templates/lists/embed-list.html:8
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s"
|
||||
msgstr "%(list_name)s,来自 %(owner)s 的列表"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:17
|
||||
#: bookwyrm/templates/lists/embed-list.html:18
|
||||
#, python-format
|
||||
msgid "on <a href=\"/\">%(site_name)s</a>"
|
||||
msgstr "在 <a href=\"/\">%(site_name)s</a>"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:26
|
||||
#: bookwyrm/templates/lists/list.html:42
|
||||
#: bookwyrm/templates/lists/embed-list.html:27
|
||||
#: bookwyrm/templates/lists/list.html:43
|
||||
msgid "This list is currently empty"
|
||||
msgstr "此列表当前是空的"
|
||||
|
||||
|
@ -2354,76 +2352,76 @@ msgstr "创建一个群组"
|
|||
msgid "Delete list"
|
||||
msgstr "删除列表"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:34
|
||||
#: bookwyrm/templates/lists/list.html:35
|
||||
msgid "You successfully suggested a book for this list!"
|
||||
msgstr "你成功向该列表推荐了一本书!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:36
|
||||
#: bookwyrm/templates/lists/list.html:37
|
||||
msgid "You successfully added a book to this list!"
|
||||
msgstr "你成功向此列表添加了一本书!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:80
|
||||
#: bookwyrm/templates/lists/list.html:81
|
||||
#, python-format
|
||||
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
msgstr "由 <a href=\"%(user_path)s\">%(username)s</a> 添加"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:95
|
||||
#: bookwyrm/templates/lists/list.html:96
|
||||
msgid "List position"
|
||||
msgstr "列表位置:"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:101
|
||||
#: bookwyrm/templates/lists/list.html:102
|
||||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21
|
||||
msgid "Set"
|
||||
msgstr "设定"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:116
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:19
|
||||
#: bookwyrm/templates/lists/list.html:117
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:20
|
||||
msgid "Remove"
|
||||
msgstr "移除"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:130
|
||||
#: bookwyrm/templates/lists/list.html:147
|
||||
#: bookwyrm/templates/lists/list.html:131
|
||||
#: bookwyrm/templates/lists/list.html:148
|
||||
msgid "Sort List"
|
||||
msgstr "排序列表"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:140
|
||||
#: bookwyrm/templates/lists/list.html:141
|
||||
msgid "Direction"
|
||||
msgstr "方向"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:154
|
||||
#: bookwyrm/templates/lists/list.html:155
|
||||
msgid "Add Books"
|
||||
msgstr "添加书目"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:156
|
||||
#: bookwyrm/templates/lists/list.html:157
|
||||
msgid "Suggest Books"
|
||||
msgstr "推荐书目"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/lists/list.html:168
|
||||
msgid "search"
|
||||
msgstr "搜索"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:173
|
||||
#: bookwyrm/templates/lists/list.html:174
|
||||
msgid "Clear search"
|
||||
msgstr "清除搜索"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:178
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#, python-format
|
||||
msgid "No books found matching the query \"%(query)s\""
|
||||
msgstr "没有符合 “%(query)s” 请求的书目"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:210
|
||||
#: bookwyrm/templates/lists/list.html:211
|
||||
msgid "Suggest"
|
||||
msgstr "推荐"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:221
|
||||
#: bookwyrm/templates/lists/list.html:222
|
||||
msgid "Embed this list on a website"
|
||||
msgstr "将此列表嵌入到网站"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:229
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
msgid "Copy embed code"
|
||||
msgstr "复制嵌入代码"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
#: bookwyrm/templates/lists/list.html:232
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
|
||||
msgstr "%(list_name)s,%(owner)s 在 %(site_name)s 上的列表"
|
||||
|
@ -3894,15 +3892,15 @@ msgstr "完成时间"
|
|||
msgid "This shelf is empty."
|
||||
msgstr "此书架是空的。"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:15
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:16
|
||||
msgid "Invite"
|
||||
msgstr "邀请"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:24
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:25
|
||||
msgid "Uninvite"
|
||||
msgstr "移除邀请"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:28
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:29
|
||||
#, python-format
|
||||
msgid "Remove @%(username)s"
|
||||
msgstr "移除 @%(username)s"
|
||||
|
@ -3989,7 +3987,7 @@ msgstr "前有剧透!"
|
|||
msgid "Include spoiler alert"
|
||||
msgstr "加入剧透警告"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:48
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:47
|
||||
#: bookwyrm/templates/snippets/reading_modals/form.html:7
|
||||
msgid "Comment:"
|
||||
msgstr "评论:"
|
||||
|
@ -3998,33 +3996,33 @@ msgstr "评论:"
|
|||
msgid "Post"
|
||||
msgstr "发布"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:16
|
||||
msgid "Quote:"
|
||||
msgstr "引用:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:24
|
||||
#, python-format
|
||||
msgid "An excerpt from '%(book_title)s'"
|
||||
msgstr "摘自《%(book_title)s》的节录"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:32
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:31
|
||||
msgid "Position:"
|
||||
msgstr "位置:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:45
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:44
|
||||
msgid "On page:"
|
||||
msgstr "页码:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:51
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:50
|
||||
msgid "At percent:"
|
||||
msgstr "百分比:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:24
|
||||
#, python-format
|
||||
msgid "Your review of '%(book_title)s'"
|
||||
msgstr "你对《%(book_title)s》的书评"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:40
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:39
|
||||
msgid "Review:"
|
||||
msgstr "书评:"
|
||||
|
||||
|
@ -4078,7 +4076,7 @@ msgid "Unfollow"
|
|||
msgstr "取消关注"
|
||||
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:7
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:8
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:9
|
||||
msgid "Accept"
|
||||
msgstr "接受"
|
||||
|
||||
|
@ -4114,13 +4112,13 @@ msgstr[0] "为 <em><a href=\"%(path)s\">%(title)s</a></em> 打了分: %(display_
|
|||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] ""
|
||||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\": %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\": %(review_title)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/goal_form.html:4
|
||||
|
@ -4191,11 +4189,11 @@ msgstr "仅关注者"
|
|||
msgid "Post privacy"
|
||||
msgstr "发文隐私"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:4
|
||||
#: bookwyrm/templates/snippets/rate_action.html:5
|
||||
msgid "Leave a rating"
|
||||
msgstr "留下评价"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:19
|
||||
#: bookwyrm/templates/snippets/rate_action.html:20
|
||||
msgid "Rate"
|
||||
msgstr "评价"
|
||||
|
||||
|
@ -4289,29 +4287,29 @@ msgstr "从 %(name)s 移除"
|
|||
msgid "Finish reading"
|
||||
msgstr "完成阅读"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:72
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:73
|
||||
msgid "Content warning"
|
||||
msgstr "内容警告"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:79
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:80
|
||||
msgid "Show status"
|
||||
msgstr "显示状态"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:101
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:102
|
||||
#, python-format
|
||||
msgid "(Page %(page)s)"
|
||||
msgstr "(第 %(page)s 页)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:103
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:104
|
||||
#, python-format
|
||||
msgid "(%(percent)s%%)"
|
||||
msgstr "(%(percent)s%%)"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:125
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:126
|
||||
msgid "Open image in new window"
|
||||
msgstr "在新窗口中打开图像"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:144
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:145
|
||||
msgid "Hide status"
|
||||
msgstr "隐藏状态"
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-17 19:26+0000\n"
|
||||
"PO-Revision-Date: 2022-01-17 19:57\n"
|
||||
"POT-Creation-Date: 2022-01-20 17:58+0000\n"
|
||||
"PO-Revision-Date: 2022-01-20 22:34\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Chinese Traditional\n"
|
||||
"Language: zh\n"
|
||||
|
@ -56,11 +56,11 @@ msgstr "書名"
|
|||
|
||||
#: bookwyrm/forms.py:485 bookwyrm/templates/shelf/shelf.html:155
|
||||
#: bookwyrm/templates/shelf/shelf.html:187
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:33
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
msgstr "評價"
|
||||
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:134
|
||||
#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:135
|
||||
msgid "Sort By"
|
||||
msgstr "排序方式"
|
||||
|
||||
|
@ -224,69 +224,69 @@ msgstr ""
|
|||
msgid "Everything else"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home Timeline"
|
||||
msgstr "主頁時間線"
|
||||
|
||||
#: bookwyrm/settings.py:121
|
||||
#: bookwyrm/settings.py:173
|
||||
msgid "Home"
|
||||
msgstr "主頁"
|
||||
|
||||
#: bookwyrm/settings.py:122
|
||||
#: bookwyrm/settings.py:174
|
||||
msgid "Books Timeline"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21
|
||||
#: bookwyrm/templates/search/layout.html:42
|
||||
#: bookwyrm/templates/user/layout.html:91
|
||||
msgid "Books"
|
||||
msgstr "書目"
|
||||
|
||||
#: bookwyrm/settings.py:196
|
||||
#: bookwyrm/settings.py:248
|
||||
msgid "English"
|
||||
msgstr "English(英語)"
|
||||
|
||||
#: bookwyrm/settings.py:197
|
||||
#: bookwyrm/settings.py:249
|
||||
msgid "Deutsch (German)"
|
||||
msgstr "Deutsch(德語)"
|
||||
|
||||
#: bookwyrm/settings.py:198
|
||||
#: bookwyrm/settings.py:250
|
||||
msgid "Español (Spanish)"
|
||||
msgstr "Español(西班牙語)"
|
||||
|
||||
#: bookwyrm/settings.py:199
|
||||
#: bookwyrm/settings.py:251
|
||||
msgid "Galego (Galician)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:200
|
||||
#: bookwyrm/settings.py:252
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:201
|
||||
#: bookwyrm/settings.py:253
|
||||
msgid "Français (French)"
|
||||
msgstr "Français(法語)"
|
||||
|
||||
#: bookwyrm/settings.py:202
|
||||
#: bookwyrm/settings.py:254
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:203
|
||||
#: bookwyrm/settings.py:255
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:204
|
||||
#: bookwyrm/settings.py:256
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:205
|
||||
#: bookwyrm/settings.py:257
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:206
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr "簡體中文"
|
||||
|
||||
#: bookwyrm/settings.py:207
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr "繁體中文"
|
||||
|
||||
|
@ -351,9 +351,7 @@ msgstr ""
|
|||
|
||||
#: bookwyrm/templates/about/about.html:98
|
||||
#, python-format
|
||||
msgid "\n"
|
||||
" %(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior.\n"
|
||||
" "
|
||||
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/about/about.html:112
|
||||
|
@ -426,7 +424,7 @@ msgid "Copy address"
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:68
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
msgid "Copied!"
|
||||
msgstr ""
|
||||
|
||||
|
@ -493,7 +491,7 @@ msgstr ""
|
|||
#: bookwyrm/templates/annual_summary/layout.html:245
|
||||
#: bookwyrm/templates/book/book.html:47
|
||||
#: bookwyrm/templates/discover/large-book.html:22
|
||||
#: bookwyrm/templates/landing/large-book.html:25
|
||||
#: bookwyrm/templates/landing/large-book.html:26
|
||||
#: bookwyrm/templates/landing/small-book.html:18
|
||||
msgid "by"
|
||||
msgstr "作者"
|
||||
|
@ -727,9 +725,9 @@ msgstr ""
|
|||
#: bookwyrm/templates/author/sync_modal.html:22
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:108
|
||||
#: bookwyrm/templates/book/sync_modal.html:22
|
||||
#: bookwyrm/templates/groups/members.html:30
|
||||
#: bookwyrm/templates/groups/members.html:29
|
||||
#: bookwyrm/templates/landing/password_reset.html:42
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:16
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:17
|
||||
msgid "Confirm"
|
||||
msgstr "確認"
|
||||
|
||||
|
@ -812,8 +810,8 @@ msgid "Places"
|
|||
msgstr "地點"
|
||||
|
||||
#: bookwyrm/templates/book/book.html:348
|
||||
#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10
|
||||
#: bookwyrm/templates/groups/group.html:19 bookwyrm/templates/layout.html:74
|
||||
#: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:11
|
||||
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
|
||||
#: bookwyrm/templates/search/layout.html:25
|
||||
#: bookwyrm/templates/search/layout.html:50
|
||||
|
@ -827,7 +825,7 @@ msgstr "新增到列表"
|
|||
|
||||
#: bookwyrm/templates/book/book.html:369
|
||||
#: bookwyrm/templates/book/cover_add_modal.html:31
|
||||
#: bookwyrm/templates/lists/list.html:208
|
||||
#: bookwyrm/templates/lists/list.html:209
|
||||
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31
|
||||
msgid "Add"
|
||||
|
@ -929,7 +927,7 @@ msgid "Back"
|
|||
msgstr "返回"
|
||||
|
||||
#: bookwyrm/templates/book/edit/edit_book_form.html:21
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:16
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:15
|
||||
msgid "Title:"
|
||||
msgstr "標題:"
|
||||
|
||||
|
@ -1642,7 +1640,7 @@ msgid "What are you reading?"
|
|||
msgstr "你在閱讀什麼?"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:9
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:162
|
||||
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:163
|
||||
msgid "Search for a book"
|
||||
msgstr "搜尋書目"
|
||||
|
||||
|
@ -1660,9 +1658,9 @@ msgstr "你可以在開始使用 %(site_name)s 後新增書目。"
|
|||
#: bookwyrm/templates/get_started/books.html:17
|
||||
#: bookwyrm/templates/get_started/users.html:18
|
||||
#: bookwyrm/templates/get_started/users.html:19
|
||||
#: bookwyrm/templates/groups/members.html:16
|
||||
#: bookwyrm/templates/groups/members.html:17 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:166
|
||||
#: bookwyrm/templates/groups/members.html:15
|
||||
#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53
|
||||
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/search/layout.html:4
|
||||
#: bookwyrm/templates/search/layout.html:9
|
||||
msgid "Search"
|
||||
|
@ -1678,7 +1676,7 @@ msgid "Popular on %(site_name)s"
|
|||
msgstr "%(site_name)s 上的熱門"
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:58
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#: bookwyrm/templates/lists/list.html:180
|
||||
msgid "No books found"
|
||||
msgstr "沒有找到書目"
|
||||
|
||||
|
@ -1783,7 +1781,7 @@ msgstr ""
|
|||
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49
|
||||
#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:12
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:13
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:14
|
||||
msgid "Delete"
|
||||
msgstr "刪除"
|
||||
|
||||
|
@ -1803,17 +1801,17 @@ msgstr ""
|
|||
msgid "Delete group"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:22
|
||||
#: bookwyrm/templates/groups/group.html:21
|
||||
msgid "Members of this group can create group-curated lists."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:27
|
||||
#: bookwyrm/templates/groups/group.html:26
|
||||
#: bookwyrm/templates/lists/create_form.html:5
|
||||
#: bookwyrm/templates/lists/lists.html:20
|
||||
msgid "Create List"
|
||||
msgstr "建立列表"
|
||||
|
||||
#: bookwyrm/templates/groups/group.html:40
|
||||
#: bookwyrm/templates/groups/group.html:39
|
||||
msgid "This group has no lists"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1821,15 +1819,15 @@ msgstr ""
|
|||
msgid "Edit group"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:12
|
||||
#: bookwyrm/templates/groups/members.html:11
|
||||
msgid "Search to add a user"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:33
|
||||
#: bookwyrm/templates/groups/members.html:32
|
||||
msgid "Leave group"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/groups/members.html:55
|
||||
#: bookwyrm/templates/groups/members.html:54
|
||||
#: bookwyrm/templates/groups/suggested_users.html:35
|
||||
#: bookwyrm/templates/snippets/suggested_users.html:31
|
||||
#: bookwyrm/templates/user/user_preview.html:36
|
||||
|
@ -2282,18 +2280,18 @@ msgstr ""
|
|||
msgid "Edit List"
|
||||
msgstr "編輯列表"
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:7
|
||||
#: bookwyrm/templates/lists/embed-list.html:8
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:17
|
||||
#: bookwyrm/templates/lists/embed-list.html:18
|
||||
#, python-format
|
||||
msgid "on <a href=\"/\">%(site_name)s</a>"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/embed-list.html:26
|
||||
#: bookwyrm/templates/lists/list.html:42
|
||||
#: bookwyrm/templates/lists/embed-list.html:27
|
||||
#: bookwyrm/templates/lists/list.html:43
|
||||
msgid "This list is currently empty"
|
||||
msgstr "此列表當前是空的"
|
||||
|
||||
|
@ -2354,76 +2352,76 @@ msgstr ""
|
|||
msgid "Delete list"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:34
|
||||
#: bookwyrm/templates/lists/list.html:35
|
||||
msgid "You successfully suggested a book for this list!"
|
||||
msgstr "你成功!向該列表推薦了一本書"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:36
|
||||
#: bookwyrm/templates/lists/list.html:37
|
||||
msgid "You successfully added a book to this list!"
|
||||
msgstr "你成功在此列表新增了一本書!"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:80
|
||||
#: bookwyrm/templates/lists/list.html:81
|
||||
#, python-format
|
||||
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
msgstr "由 <a href=\"%(user_path)s\">%(username)s</a> 新增"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:95
|
||||
#: bookwyrm/templates/lists/list.html:96
|
||||
msgid "List position"
|
||||
msgstr "列表位置:"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:101
|
||||
#: bookwyrm/templates/lists/list.html:102
|
||||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21
|
||||
msgid "Set"
|
||||
msgstr "設定"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:116
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:19
|
||||
#: bookwyrm/templates/lists/list.html:117
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:20
|
||||
msgid "Remove"
|
||||
msgstr "移除"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:130
|
||||
#: bookwyrm/templates/lists/list.html:147
|
||||
#: bookwyrm/templates/lists/list.html:131
|
||||
#: bookwyrm/templates/lists/list.html:148
|
||||
msgid "Sort List"
|
||||
msgstr "排序列表"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:140
|
||||
#: bookwyrm/templates/lists/list.html:141
|
||||
msgid "Direction"
|
||||
msgstr "方向"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:154
|
||||
#: bookwyrm/templates/lists/list.html:155
|
||||
msgid "Add Books"
|
||||
msgstr "新增書目"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:156
|
||||
#: bookwyrm/templates/lists/list.html:157
|
||||
msgid "Suggest Books"
|
||||
msgstr "推薦書目"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:167
|
||||
#: bookwyrm/templates/lists/list.html:168
|
||||
msgid "search"
|
||||
msgstr "搜尋"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:173
|
||||
#: bookwyrm/templates/lists/list.html:174
|
||||
msgid "Clear search"
|
||||
msgstr "清除搜尋"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:178
|
||||
#: bookwyrm/templates/lists/list.html:179
|
||||
#, python-format
|
||||
msgid "No books found matching the query \"%(query)s\""
|
||||
msgstr "沒有符合 \"%(query)s\" 請求的書目"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:210
|
||||
#: bookwyrm/templates/lists/list.html:211
|
||||
msgid "Suggest"
|
||||
msgstr "推薦"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:221
|
||||
#: bookwyrm/templates/lists/list.html:222
|
||||
msgid "Embed this list on a website"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:229
|
||||
#: bookwyrm/templates/lists/list.html:230
|
||||
msgid "Copy embed code"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:231
|
||||
#: bookwyrm/templates/lists/list.html:232
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
|
||||
msgstr ""
|
||||
|
@ -3894,15 +3892,15 @@ msgstr "完成時間"
|
|||
msgid "This shelf is empty."
|
||||
msgstr "此書架是空的。"
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:15
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:16
|
||||
msgid "Invite"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:24
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:25
|
||||
msgid "Uninvite"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:28
|
||||
#: bookwyrm/templates/snippets/add_to_group_button.html:29
|
||||
#, python-format
|
||||
msgid "Remove @%(username)s"
|
||||
msgstr ""
|
||||
|
@ -3989,7 +3987,7 @@ msgstr "前有劇透!"
|
|||
msgid "Include spoiler alert"
|
||||
msgstr "加入劇透警告"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:48
|
||||
#: bookwyrm/templates/snippets/create_status/layout.html:47
|
||||
#: bookwyrm/templates/snippets/reading_modals/form.html:7
|
||||
msgid "Comment:"
|
||||
msgstr "評論:"
|
||||
|
@ -3998,33 +3996,33 @@ msgstr "評論:"
|
|||
msgid "Post"
|
||||
msgstr "釋出"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:16
|
||||
msgid "Quote:"
|
||||
msgstr "引用:"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:24
|
||||
#, python-format
|
||||
msgid "An excerpt from '%(book_title)s'"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:32
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:31
|
||||
msgid "Position:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:45
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:44
|
||||
msgid "On page:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:51
|
||||
#: bookwyrm/templates/snippets/create_status/quotation.html:50
|
||||
msgid "At percent:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:25
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:24
|
||||
#, python-format
|
||||
msgid "Your review of '%(book_title)s'"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:40
|
||||
#: bookwyrm/templates/snippets/create_status/review.html:39
|
||||
msgid "Review:"
|
||||
msgstr "書評:"
|
||||
|
||||
|
@ -4078,7 +4076,7 @@ msgid "Unfollow"
|
|||
msgstr "取消關注"
|
||||
|
||||
#: bookwyrm/templates/snippets/follow_request_buttons.html:7
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:8
|
||||
#: bookwyrm/templates/snippets/join_invitation_buttons.html:9
|
||||
msgid "Accept"
|
||||
msgstr "接受"
|
||||
|
||||
|
@ -4114,13 +4112,13 @@ msgstr[0] ""
|
|||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] ""
|
||||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12
|
||||
#, python-format
|
||||
msgid "Review of \"<a href='%(book_path)s'>%(book_title)s</a>\": %(review_title)s"
|
||||
msgid "Review of \"%(book_title)s\": %(review_title)s"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/goal_form.html:4
|
||||
|
@ -4191,11 +4189,11 @@ msgstr "僅關注者"
|
|||
msgid "Post privacy"
|
||||
msgstr "發文隱私"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:4
|
||||
#: bookwyrm/templates/snippets/rate_action.html:5
|
||||
msgid "Leave a rating"
|
||||
msgstr "留下評價"
|
||||
|
||||
#: bookwyrm/templates/snippets/rate_action.html:19
|
||||
#: bookwyrm/templates/snippets/rate_action.html:20
|
||||
msgid "Rate"
|
||||
msgstr "評價"
|
||||
|
||||
|
@ -4289,29 +4287,29 @@ msgstr "從 %(name)s 移除"
|
|||
msgid "Finish reading"
|
||||
msgstr "完成閱讀"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:72
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:73
|
||||
msgid "Content warning"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:79
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:80
|
||||
msgid "Show status"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:101
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:102
|
||||
#, python-format
|
||||
msgid "(Page %(page)s)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:103
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:104
|
||||
#, python-format
|
||||
msgid "(%(percent)s%%)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:125
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:126
|
||||
msgid "Open image in new window"
|
||||
msgstr "在新視窗中開啟圖片"
|
||||
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:144
|
||||
#: bookwyrm/templates/snippets/status/content_status.html:145
|
||||
msgid "Hide status"
|
||||
msgstr ""
|
||||
|
||||
|
|
Loading…
Reference in a new issue