Merge branch 'main' into rss-feed

This commit is contained in:
Giebisch 2023-01-17 20:54:41 +01:00
commit bfc8856f66
57 changed files with 981 additions and 846 deletions

View file

@ -61,7 +61,7 @@ SEARCH_TIMEOUT=5
QUERY_TIMEOUT=5
# Thumbnails Generation
ENABLE_THUMBNAIL_GENERATION=false
ENABLE_THUMBNAIL_GENERATION=true
# S3 configuration
USE_S3=false

View file

@ -83,7 +83,7 @@ class Undo(Verb):
def action(self):
"""find and remove the activity object"""
if isinstance(self.object, str):
# it may be that sometihng should be done with these, but idk what
# it may be that something should be done with these, but idk what
# this seems just to be coming from pleroma
return
@ -94,7 +94,7 @@ class Undo(Verb):
model = apps.get_model("bookwyrm.UserFollows")
obj = self.object.to_model(model=model, save=False, allow_create=False)
if not obj:
# this could be a folloq request not a follow proper
# this could be a follow request not a follow proper
model = apps.get_model("bookwyrm.UserFollowRequest")
obj = self.object.to_model(model=model, save=False, allow_create=False)
else:

View file

@ -20,7 +20,7 @@ def search(query, min_confidence=0, filters=None, return_first=False):
query = query.strip()
results = None
# first, try searching unqiue identifiers
# first, try searching unique identifiers
# unique identifiers never have spaces, title/author usually do
if not " " in query:
results = search_identifiers(query, *filters, return_first=return_first)

View file

@ -33,8 +33,8 @@ class AuthorForm(CustomForm):
),
"born": forms.SelectDateWidget(attrs={"aria-describedby": "desc_born"}),
"died": forms.SelectDateWidget(attrs={"aria-describedby": "desc_died"}),
"oepnlibrary_key": forms.TextInput(
attrs={"aria-describedby": "desc_oepnlibrary_key"}
"openlibrary_key": forms.TextInput(
attrs={"aria-describedby": "desc_openlibrary_key"}
),
"inventaire_id": forms.TextInput(
attrs={"aria-describedby": "desc_inventaire_id"}

View file

@ -77,7 +77,7 @@
<label class="label" for="id_openlibrary_key">{% trans "Openlibrary key:" %}</label>
{{ form.openlibrary_key }}
{% include 'snippets/form_errors.html' with errors_list=form.oepnlibrary_key.errors id="desc_oepnlibrary_key" %}
{% include 'snippets/form_errors.html' with errors_list=form.openlibrary_key.errors id="desc_openlibrary_key" %}
</div>
<div class="field">

View file

@ -7,8 +7,8 @@
{% block title %}{{ book|book_title }}{% endblock %}
{% block opengraph_images %}
{% include 'snippets/opengraph_images.html' with image=book.preview_image %}
{% block opengraph %}
{% include 'snippets/opengraph.html' with image=book.preview_image %}
{% endblock %}
{% block content %}

View file

@ -9,12 +9,12 @@
<a href="{{ user_path}}">{{ username }}</a> wants to read <a href="{{ book_path }}">{{ book_title }}</a>
{% endblocktrans %}
{% endif %}
{% if finished reading or status.content == '<p>finished reading</p>' %}
{% if status.content == 'finished reading' or status.content == '<p>finished reading</p>' %}
{% blocktrans trimmed %}
<a href="{{ user_path}}">{{ username }}</a> finished reading <a href="{{ book_path }}">{{ book_title }}</a>
{% endblocktrans %}
{% endif %}
{% if started reading or status.content == '<p>started reading</p>' %}
{% if status.content == 'started reading' or status.content == '<p>started reading</p>' %}
{% blocktrans trimmed %}
<a href="{{ user_path}}">{{ username }}</a> started reading <a href="{{ book_path }}">{{ book_title }}</a>
{% endblocktrans %}

View file

@ -2,15 +2,13 @@
{% load feed_page_tags %}
{% load i18n %}
{% block opengraph_images %}
{% firstof status.book status.mention_books.first as book %}
{% if book %}
{% include 'snippets/opengraph_images.html' with image=preview %}
{% else %}
{% include 'snippets/opengraph_images.html' %}
{% endif %}
{% block opengraph %}
{% firstof status.book status.mention_books.first as book %}
{% if book %}
{% include 'snippets/opengraph.html' with image=preview %}
{% else %}
{% include 'snippets/opengraph.html' %}
{% endif %}
{% endblock %}
@ -44,4 +42,3 @@
</div>
{% endblock %}

View file

@ -15,20 +15,9 @@
<link rel="shortcut icon" type="image/x-icon" href="{% if site.favicon %}{% get_media_prefix %}{{ site.favicon }}{% else %}{% static "images/favicon.ico" %}{% endif %}">
<link rel="apple-touch-icon" href="{% if site.logo %}{{ media_full_url }}{{ site.logo }}{% else %}{% static "images/logo.png" %}{% endif %}">
{% if preview_images_enabled is True %}
<meta name="twitter:card" content="summary_large_image">
{% else %}
<meta name="twitter:card" content="summary">
{% endif %}
<meta name="twitter:title" content="{% if title %}{{ title }} - {% endif %}{{ site.name }}">
<meta name="og:title" content="{% if title %}{{ title }} - {% endif %}{{ site.name }}">
<meta name="twitter:description" content="{{ site.instance_tagline }}">
<meta name="og:description" content="{{ site.instance_tagline }}">
{% block opengraph_images %}
{% include 'snippets/opengraph_images.html' %}
{% block opengraph %}
{% include 'snippets/opengraph.html' %}
{% endblock %}
<meta name="twitter:image:alt" content="BookWyrm Logo">
{% block head_links %}{% endblock %}
</head>

View file

@ -35,7 +35,7 @@
<td>
<a href="{% url 'settings-users' %}?email=@{{ domain.domain }}">
{% with user_count=domain.users.count %}
{% blocktrans trimmed count conter=user_count with display_count=user_count|intcomma %}
{% blocktrans trimmed count counter=user_count with display_count=user_count|intcomma %}
{{ display_count }} user
{% plural %}
{{ display_count }} users
@ -62,4 +62,3 @@
{% endblock %}

View file

@ -41,7 +41,7 @@
</header>
<div class="column is-narrow">
<button type="button" class="button is-small" data-modal-open="{{ domain_modal }}">
<span class="icon icon-pencil m-0-mobile" aria-hidden="treu"></span>
<span class="icon icon-pencil m-0-mobile" aria-hidden="true"></span>
<span class="is-sr-only-mobile">{% trans "Set display name" %}</span>
</button>
</div>
@ -103,4 +103,3 @@
</div>
{% endblock %}

View file

@ -107,7 +107,7 @@
<form method="POST" action="{% url 'settings-themes-delete' theme.id %}">
{% csrf_token %}
<button type="submit" class="button is-danger is-light is-small">
<span class="icon icon-x" aria-hideen="true"></span>
<span class="icon icon-x" aria-hidden="true"></span>
<span>{% trans "Remove theme" %}</span>
</button>
</form>

View file

@ -8,8 +8,8 @@
{% include 'user/books_header.html' with shelf=shelf %}
{% endblock %}
{% block opengraph_images %}
{% include 'snippets/opengraph_images.html' with image=user.preview_image %}
{% block opengraph %}
{% include 'snippets/opengraph.html' with image=user.preview_image %}
{% endblock %}
{% block content %}

View file

@ -7,12 +7,12 @@
book: the Edition object this status is related to. Required unless the status is a reply
draft: the content of an existing Status object to be edited (used in delete and redraft)
uuid: a unique identifier used to make html "id" attributes unique and clarify javascript controls
type: used for uniquely identifying the html elements when mutliple types of posts are available for a book, and usually the endpoint name that the form posts to
type: used for uniquely identifying the html elements when multiple types of posts are available for a book, and usually the endpoint name that the form posts to
reply_parent: the Status object this post will be in reply to, if applicable
{% endcomment %}
{% block form_open %}
{# default form tag syntax, can be overriddden #}
{# default form tag syntax, can be overridden #}
<form
class="is-flex-grow-1{% if not no_script %} submit-status{% endif %}"
name="{{ type }}"

View file

@ -37,7 +37,7 @@
type="radio"
name="rating"
value="{{ forloop.counter0 }}.5"
{% if default_rating > 0 and default_rating >= forloop.counter0 %}checked{% endif %}
{% if default_rating > 0 and default_rating > forloop.counter0 %}checked{% endif %}
/>
<input
id="{{ type|slugify }}_book{{ book.id }}_star_{{ forloop.counter }}"

View file

@ -1,6 +1,7 @@
{% load static %}
{% if preview_images_enabled is True %}
<meta name="twitter:card" content="summary_large_image">
{% if image %}
<meta name="twitter:image" content="{{ media_full_url }}{{ image }}">
<meta name="og:image" content="{{ media_full_url }}{{ image }}">
@ -9,6 +10,15 @@
<meta name="og:image" content="{{ media_full_url }}{{ site.preview_image }}">
{% endif %}
{% else %}
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="{% if site.logo %}{{ media_full_url }}{{ site.logo }}{% else %}{% static "images/logo.png" %}{% endif %}">
<meta name="og:image" content="{% if site.logo %}{{ media_full_url }}{{ site.logo }}{% else %}{% static "images/logo.png" %}{% endif %}">
{% endif %}
<meta name="twitter:image:alt" content="BookWyrm Logo">
<meta name="twitter:title" content="{% if title %}{{ title }} - {% endif %}{{ site.name }}">
<meta name="og:title" content="{% if title %}{{ title }} - {% endif %}{{ site.name }}">
<meta name="twitter:description" content="{% if description %}{{ description }}{% else %}{{ site.instance_tagline }}{% endif %}">
<meta name="og:description" content="{% if description %}{{ description }}{% else %}{{ site.instance_tagline }}{% endif %}">

View file

@ -13,7 +13,7 @@ Finish "<em>{{ book_title }}</em>"
{% csrf_token %}
<input type="hidden" name="id" value="{{ readthrough.id }}">
<input type="hidden" name="reading_status" value="read">
<input type="hidden" name="shelf" value="{{ move_from }}">
<input type="hidden" name="shelf" value="{{ move_from }}">
{% endblock %}
{% block reading-dates %}

View file

@ -10,9 +10,9 @@ Start "<em>{{ book_title }}</em>"
{% block modal-form-open %}
<form name="start-reading-{{ uuid }}" action="{% url 'reading-status' 'start' book.id %}" method="post" {% if not refresh %}class="submit-status"{% endif %}>
{% csrf_token %}
<input type="hidden" name="reading_status" value="reading">
<input type="hidden" name="shelf" value="{{ move_from }}">
{% csrf_token %}
{% endblock %}
{% block reading-dates %}

View file

@ -10,9 +10,9 @@ Want to Read "<em>{{ book_title }}</em>"
{% block modal-form-open %}
<form name="want-to-read-{{ uuid }}" action="{% url 'reading-status' 'want' book.id %}" method="post" {% if not refresh %}class="submit-status"{% endif %}>
{% csrf_token %}
<input type="hidden" name="reading_status" value="to-read">
<input type="hidden" name="shelf" value="{{ move_from }}">
{% csrf_token %}
{% endblock %}
{% block form %}

View file

@ -22,7 +22,6 @@
<input type="hidden" name="book" value="{{ book.id }}">
<input type="hidden" name="change-shelf-from" value="{{ current.identifier }}">
<input type="hidden" name="shelf" value="{{ shelf.identifier }}">
<button class="button is-fullwidth is-small shelf-option is-radiusless has-background-body" type="submit" {% if shelf.identifier == current.identifier %}disabled{% endif %}>
<span>
{% include "snippets/translated_shelf_name.html" with shelf=shelf %}

View file

@ -8,8 +8,8 @@
{% block title %}{{ user.display_name }}{% endblock %}
{% block opengraph_images %}
{% include 'snippets/opengraph_images.html' with image=user.preview_image %}
{% block opengraph %}
{% include 'snippets/opengraph.html' with image=user.preview_image %}
{% endblock %}
{% block content %}

View file

@ -2,6 +2,8 @@
from io import BytesIO
import pathlib
import pytest
from dateutil.parser import parse
from PIL import Image
from django.core.files.base import ContentFile
@ -10,6 +12,7 @@ from django.utils import timezone
from bookwyrm import models, settings
from bookwyrm.models.book import isbn_10_to_13, isbn_13_to_10
from bookwyrm.settings import ENABLE_THUMBNAIL_GENERATION
class Book(TestCase):
@ -101,6 +104,10 @@ class Book(TestCase):
self.first_edition.save()
self.assertEqual(self.first_edition.edition_rank, 1)
@pytest.mark.skipif(
not ENABLE_THUMBNAIL_GENERATION,
reason="Thumbnail generation disabled in settings",
)
def test_thumbnail_fields(self):
"""Just hit them"""
image_file = pathlib.Path(__file__).parent.joinpath(

View file

@ -3,6 +3,7 @@ import re
from django.test import TestCase
from bookwyrm.utils import regex
from bookwyrm.utils.validate import validate_url_domain
class TestUtils(TestCase):
@ -11,3 +12,20 @@ class TestUtils(TestCase):
def test_regex(self):
"""Regexes used throughout the app"""
self.assertTrue(re.match(regex.DOMAIN, "xn--69aa8bzb.xn--y9a3aq"))
def test_valid_url_domain(self):
"""Check with a valid URL"""
self.assertEqual(
validate_url_domain("https://your.domain.here/legit-book-url/"),
"https://your.domain.here/legit-book-url/",
)
def test_invalid_url_domain(self):
"""Check with an invalid URL"""
self.assertEqual(
validate_url_domain("https://up-to-no-good.tld/bad-actor.exe"), "/"
)
def test_default_url_domain(self):
"""Check with a default URL"""
self.assertEqual(validate_url_domain("/"), "/")

View file

@ -82,6 +82,7 @@ class EditBookViews(TestCase):
form = forms.EditionForm(instance=self.book)
form.data["title"] = ""
form.data["last_edited_by"] = self.local_user.id
form.data["cover-url"] = "http://local.host/cover.jpg"
request = self.factory.post("", form.data)
request.user = self.local_user
@ -91,6 +92,10 @@ class EditBookViews(TestCase):
# Title is unchanged
self.book.refresh_from_db()
self.assertEqual(self.book.title, "Example Edition")
# transient field values are set correctly
self.assertEqual(
result.context_data["cover_url"], "http://local.host/cover.jpg"
)
def test_edit_book_add_author(self):
"""lets a user edit a book with new authors"""
@ -280,9 +285,14 @@ class EditBookViews(TestCase):
form = forms.EditionForm(instance=self.book)
form.data["title"] = ""
form.data["last_edited_by"] = self.local_user.id
form.data["cover-url"] = "http://local.host/cover.jpg"
request = self.factory.post("", form.data)
request.user = self.local_user
result = view(request)
validate_html(result.render())
self.assertEqual(result.status_code, 200)
# transient field values are set correctly
self.assertEqual(
result.context_data["cover_url"], "http://local.host/cover.jpg"
)

View file

@ -0,0 +1,19 @@
"""Validations"""
from bookwyrm.settings import DOMAIN, USE_HTTPS
def validate_url_domain(url, default="/"):
"""Basic check that the URL starts with the instance domain name"""
if not url:
return default
if url in ("/", default):
return url
protocol = "https://" if USE_HTTPS else "http://"
origin = f"{protocol}{DOMAIN}"
if url.startswith(origin):
return url
return default

View file

@ -43,6 +43,7 @@ class EditBook(View):
form = forms.EditionForm(request.POST, request.FILES, instance=book)
data = {"book": book, "form": form}
ensure_transient_values_persist(request, data)
if not form.is_valid():
return TemplateResponse(request, "book/edit/edit_book.html", data)
@ -101,6 +102,8 @@ class CreateBook(View):
"authors": authors,
}
ensure_transient_values_persist(request, data)
if not form.is_valid():
return TemplateResponse(request, "book/edit/edit_book.html", data)
@ -136,6 +139,11 @@ class CreateBook(View):
return redirect(f"/book/{book.id}")
def ensure_transient_values_persist(request, data):
"""ensure that values of transient form fields persist when re-rendering the form"""
data["cover_url"] = request.POST.get("cover-url")
def add_authors(request, data):
"""helper for adding authors"""
add_author = [author for author in request.POST.getlist("add_author") if author]
@ -150,7 +158,6 @@ def add_authors(request, data):
data["confirm_mode"] = True
# this isn't preserved because it isn't part of the form obj
data["remove_authors"] = request.POST.getlist("remove_authors")
data["cover_url"] = request.POST.get("cover-url")
for author in add_author:
# filter out empty author fields

View file

@ -94,7 +94,7 @@ class List(View):
return redirect(book_list.local_path)
def get_list_suggestions(book_list, user, query=None):
def get_list_suggestions(book_list, user, query=None, num_suggestions=5):
"""What books might a user want to add to a list"""
if query:
# search for books
@ -103,20 +103,26 @@ def get_list_suggestions(book_list, user, query=None):
filters=[~Q(parent_work__editions__in=book_list.books.all())],
)
# just suggest whatever books are nearby
suggestions = user.shelfbook_set.filter(~Q(book__in=book_list.books.all()))
suggestions = [s.book for s in suggestions[:5]]
if len(suggestions) < 5:
suggestions += [
suggestions = user.shelfbook_set.filter(
~Q(book__in=book_list.books.all())
).distinct()[:num_suggestions]
suggestions = [s.book for s in suggestions[:num_suggestions]]
if len(suggestions) < num_suggestions:
others = [
s.default_edition
for s in models.Work.objects.filter(
~Q(editions__in=book_list.books.all()),
).order_by("-updated_date")[: 5 - len(suggestions)]
)
.distinct()
.order_by("-updated_date")[:num_suggestions]
]
# get 'num_suggestions' unique items
suggestions = list(set(suggestions + others))[:num_suggestions]
return suggestions
def sort_list(request, items):
"""helper to handle the surprisngly involved sorting"""
"""helper to handle the surprisingly involved sorting"""
# 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"):

View file

@ -12,6 +12,7 @@ from django.views.decorators.http import require_POST
from bookwyrm import forms, models
from bookwyrm.views.shelf.shelf_actions import unshelve
from bookwyrm.utils.validate import validate_url_domain
from .status import CreateStatus
from .helpers import get_edition, handle_reading_status, is_api_request
from .helpers import load_date_in_user_tz_as_utc
@ -42,6 +43,8 @@ class ReadingStatus(View):
@transaction.atomic
def post(self, request, status, book_id):
"""Change the state of a book by shelving it and adding reading dates"""
next_step = request.META.get("HTTP_REFERER")
next_step = validate_url_domain(next_step, "/")
identifier = {
"want": models.Shelf.TO_READ,
"start": models.Shelf.READING,
@ -83,7 +86,7 @@ class ReadingStatus(View):
if current_status_shelfbook.shelf.identifier != desired_shelf.identifier:
current_status_shelfbook.delete()
else: # It already was on the shelf
return redirect("/")
return redirect(next_step)
models.ShelfBook.objects.create(
book=book, shelf=desired_shelf, user=request.user
@ -121,7 +124,7 @@ class ReadingStatus(View):
if is_api_request(request):
return HttpResponse()
return redirect("/")
return redirect(next_step)
@method_decorator(login_required, name="dispatch")

View file

@ -3,6 +3,7 @@ from django.db import IntegrityError, transaction
from django.contrib.auth.decorators import login_required
from django.shortcuts import get_object_or_404, redirect
from django.views.decorators.http import require_POST
from bookwyrm.utils.validate import validate_url_domain
from bookwyrm import forms, models
@ -35,6 +36,8 @@ def delete_shelf(request, shelf_id):
@transaction.atomic
def shelve(request):
"""put a book on a user's shelf"""
next_step = request.META.get("HTTP_REFERER")
next_step = validate_url_domain(next_step, "/")
book = get_object_or_404(models.Edition, id=request.POST.get("book"))
desired_shelf = get_object_or_404(
request.user.shelf_set, identifier=request.POST.get("shelf")
@ -64,13 +67,14 @@ def shelve(request):
.first()
)
if current_read_status_shelfbook is not None:
# If it is not already on the shelf
if (
current_read_status_shelfbook.shelf.identifier
!= desired_shelf.identifier
):
current_read_status_shelfbook.delete()
else: # It is already on the shelf
return redirect("/")
else:
return redirect(next_step)
# create the new shelf-book entry
models.ShelfBook.objects.create(
@ -86,13 +90,16 @@ def shelve(request):
# Might be good to alert, or reject the action?
except IntegrityError:
pass
return redirect("/")
return redirect(next_step)
@login_required
@require_POST
def unshelve(request, book_id=False):
"""remove a book from a user's shelf"""
next_step = request.META.get("HTTP_REFERER")
next_step = validate_url_domain(next_step, "/")
identity = book_id if book_id else request.POST.get("book")
book = get_object_or_404(models.Edition, id=identity)
shelf_book = get_object_or_404(
@ -100,4 +107,4 @@ def unshelve(request, book_id=False):
)
shelf_book.raise_not_deletable(request.user)
shelf_book.delete()
return redirect("/")
return redirect(next_step)

View file

@ -18,6 +18,7 @@ from django.views.decorators.http import require_POST
from markdown import markdown
from bookwyrm import forms, models
from bookwyrm.utils import regex, sanitizer
from bookwyrm.utils.validate import validate_url_domain
from .helpers import handle_remote_webfinger, is_api_request
from .helpers import load_date_in_user_tz_as_utc
@ -58,6 +59,8 @@ class CreateStatus(View):
# pylint: disable=too-many-branches
def post(self, request, status_type, existing_status_id=None):
"""create status of whatever type"""
next_step = request.META.get("HTTP_REFERER")
next_step = validate_url_domain(next_step, "/")
created = not existing_status_id
existing_status = None
if existing_status_id:
@ -80,7 +83,7 @@ class CreateStatus(View):
if is_api_request(request):
logger.exception(form.errors)
return HttpResponseBadRequest()
return redirect("/")
return redirect(next_step)
status = form.save(request, commit=False)
status.ready = False
@ -134,7 +137,7 @@ class CreateStatus(View):
if is_api_request(request):
return HttpResponse()
return redirect("/")
return redirect(next_step)
@method_decorator(login_required, name="dispatch")
@ -167,6 +170,8 @@ def update_progress(request, book_id): # pylint: disable=unused-argument
def edit_readthrough(request):
"""can't use the form because the dates are too finnicky"""
# TODO: remove this, it duplicates the code in the ReadThrough view
next_step = request.META.get("HTTP_REFERER")
next_step = validate_url_domain(next_step, "/")
readthrough = get_object_or_404(models.ReadThrough, id=request.POST.get("id"))
readthrough.start_date = load_date_in_user_tz_as_utc(
@ -198,7 +203,7 @@ def edit_readthrough(request):
if is_api_request(request):
return HttpResponse()
return redirect("/")
return redirect(next_step)
def find_mentions(user, content):

5
contrib/README.md Normal file
View file

@ -0,0 +1,5 @@
# Contrib
This directory contain some scripts, configuration files and other useful tools around BookWyrm.
These tools are not necessary for the proper functioning of BookWyrm but provide a helpful leg-up for integration with some third-party or to nicely fit BookWyrm into other environments.

View file

@ -0,0 +1,14 @@
[Unit]
Description=BookWyrm scheduler
After=network.target postgresql.service redis.service
[Service]
User=bookwyrm
Group=bookwyrm
WorkingDirectory=/opt/bookwyrm/
ExecStart=/opt/bookwyrm/venv/bin/celery -A celerywyrm beat -l INFO --scheduler django_celery_beat.schedulers:DatabaseScheduler
StandardOutput=journal
StandardError=inherit
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,14 @@
[Unit]
Description=BookWyrm worker
After=network.target postgresql.service redis.service
[Service]
User=bookwyrm
Group=bookwyrm
WorkingDirectory=/opt/bookwyrm/
ExecStart=/opt/bookwyrm/venv/bin/celery -A celerywyrm worker -l info -Q high_priority,medium_priority,low_priority
StandardOutput=journal
StandardError=inherit
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,14 @@
[Unit]
Description=BookWyrm
After=network.target postgresql.service redis.service
[Service]
User=bookwyrm
Group=bookwyrm
WorkingDirectory=/opt/bookwyrm/
ExecStart=/opt/bookwyrm/venv/bin/gunicorn bookwyrm.wsgi:application --bind 0.0.0.0:8000
StandardOutput=journal
StandardError=inherit
[Install]
WantedBy=multi-user.target

View file

@ -15,7 +15,7 @@ services:
- static_volume:/app/static
- media_volume:/app/images
db:
image: postgres
image: postgres:13
env_file: .env
volumes:
- pgdata:/var/lib/postgresql/data

Binary file not shown.

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-12-20 00:41+0000\n"
"PO-Revision-Date: 2022-12-21 17:53\n"
"PO-Revision-Date: 2023-01-11 17:07\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Catalan\n"
"Language: ca\n"
@ -60,7 +60,7 @@ msgstr "La data de finalització de lectura no pot ser anterior a la d'inici."
#: bookwyrm/forms/forms.py:59
msgid "Reading stopped date cannot be before start date."
msgstr "La data de finalització de lectura no pot ser anterior a la d'inici."
msgstr "La data d'aturada de lectura no pot ser anterior a la d'inici."
#: bookwyrm/forms/forms.py:67
msgid "Reading stopped date cannot be in the future."
@ -76,7 +76,7 @@ msgstr "Nom d'usuari o contrasenya incorrectes"
#: bookwyrm/forms/landing.py:56
msgid "User with this username already exists"
msgstr "Ja existeix un usuari amb aquest nom d'usuari"
msgstr "Ja existeix un usuari amb aquest nom"
#: bookwyrm/forms/landing.py:65
msgid "A user with this email already exists."
@ -222,7 +222,7 @@ msgstr "nom d'usuari"
#: bookwyrm/models/fields.py:187
msgid "A user with that username already exists."
msgstr "Ja existeix un usuari amb aquest nom d'usuari"
msgstr "Ja existeix un usuari amb aquest nom."
#: bookwyrm/models/fields.py:206
#: bookwyrm/templates/snippets/privacy-icons.html:3
@ -495,7 +495,7 @@ msgstr "Codi de Conducta"
#: bookwyrm/templates/about/layout.html:54
#: bookwyrm/templates/snippets/footer.html:34
msgid "Impressum"
msgstr ""
msgstr "Avís legal"
#: bookwyrm/templates/about/layout.html:11
msgid "Active users:"
@ -606,8 +606,8 @@ msgstr "Això fa una mitjana de %(pages)s pàgines per llibre."
#, python-format
msgid "(No page data was available for %(no_page_number)s book)"
msgid_plural "(No page data was available for %(no_page_number)s books)"
msgstr[0] ""
msgstr[1] ""
msgstr[0] "(No hi ha dades disponibles per a la pàgina %(no_page_number)s del llibre)"
msgstr[1] "(No hi ha dades disponibles per a les pàgines %(no_page_number)s dels llibres)"
#: bookwyrm/templates/annual_summary/layout.html:150
msgid "Their shortest read this year…"
@ -702,7 +702,7 @@ msgstr "Veure el registre ISNI"
#: bookwyrm/templates/author/author.html:87
#: bookwyrm/templates/book/book.html:164
msgid "View on ISFDB"
msgstr ""
msgstr "Veure a ISFDB"
#: bookwyrm/templates/author/author.html:92
#: bookwyrm/templates/author/sync_modal.html:5
@ -731,7 +731,7 @@ msgstr "Veure a Goodreads"
#: bookwyrm/templates/author/author.html:143
msgid "View ISFDB entry"
msgstr ""
msgstr "Veure entrada a ISFDB"
#: bookwyrm/templates/author/author.html:158
#, python-format
@ -815,7 +815,7 @@ msgstr "Identificador a Goodreads:"
#: bookwyrm/templates/author/edit_author.html:105
msgid "ISFDB:"
msgstr ""
msgstr "ISFDB:"
#: bookwyrm/templates/author/edit_author.html:112
msgid "ISNI:"
@ -1013,16 +1013,16 @@ msgstr "ASIN:"
#: bookwyrm/templates/book/book_identifiers.html:29
#: bookwyrm/templates/book/edit/edit_book_form.html:359
msgid "Audible ASIN:"
msgstr ""
msgstr "ASIN d'audiollibre:"
#: bookwyrm/templates/book/book_identifiers.html:36
#: bookwyrm/templates/book/edit/edit_book_form.html:368
msgid "ISFDB ID:"
msgstr ""
msgstr "Identificador ISFDB:"
#: bookwyrm/templates/book/book_identifiers.html:43
msgid "Goodreads:"
msgstr ""
msgstr "Goodreads:"
#: bookwyrm/templates/book/cover_add_modal.html:5
msgid "Add cover"
@ -1777,11 +1777,11 @@ msgstr "Reinicia el teu password de %(site_name)s "
#: bookwyrm/templates/email/test/html_content.html:6
#: bookwyrm/templates/email/test/text_content.html:4
msgid "This is a test email."
msgstr ""
msgstr "Aquest és un correu de prova."
#: bookwyrm/templates/email/test/subject.html:2
msgid "Test email"
msgstr ""
msgstr "Correu de prova"
#: bookwyrm/templates/embed-layout.html:20 bookwyrm/templates/layout.html:41
#: bookwyrm/templates/setup/layout.html:15
@ -2674,7 +2674,7 @@ msgstr "Importa Llibres"
#: bookwyrm/templates/import/import.html:13
msgid "Not a valid CSV file"
msgstr ""
msgstr "Fitxer CSV no vàlid"
#: bookwyrm/templates/import/import.html:22
#, python-format
@ -2734,7 +2734,7 @@ msgstr "Importa"
#: bookwyrm/templates/import/import.html:101
msgid "Imports are temporarily disabled; thank you for your patience."
msgstr ""
msgstr "Les importacions es troben temporalment deshabilitades; gràcies per la vostra paciència."
#: bookwyrm/templates/import/import.html:108
msgid "Recent Imports"
@ -3256,7 +3256,7 @@ msgstr "Has afegit un llibre a aquesta llista amb èxit!"
#: bookwyrm/templates/lists/list.html:54
msgid "This list is currently empty."
msgstr ""
msgstr "Aquesta llista es troba actualment buida."
#: bookwyrm/templates/lists/list.html:104
msgid "Edit notes"
@ -3382,7 +3382,7 @@ msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a> ha suggerit afegi
#: bookwyrm/templates/notifications/items/add.html:66
#, python-format
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> added a book to one of your lists"
msgstr ""
msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a> ha afegit un llibre a una de les teves llistes"
#: bookwyrm/templates/notifications/items/add.html:72
#, python-format
@ -3817,15 +3817,15 @@ msgstr "Escaneja el codi QR amb la teva app d'autenticació i entra el codi que
#: bookwyrm/templates/preferences/2fa.html:52
msgid "Use setup key"
msgstr ""
msgstr "Utilitza la clau de configuració"
#: bookwyrm/templates/preferences/2fa.html:58
msgid "Account name:"
msgstr ""
msgstr "Nom del compte:"
#: bookwyrm/templates/preferences/2fa.html:65
msgid "Code:"
msgstr ""
msgstr "Codi:"
#: bookwyrm/templates/preferences/2fa.html:73
msgid "Enter the code from your app:"
@ -4144,13 +4144,13 @@ msgstr "Cercant el llibre:"
#, python-format
msgid "%(formatted_review_count)s review"
msgid_plural "%(formatted_review_count)s reviews"
msgstr[0] ""
msgstr[1] ""
msgstr[0] "%(formatted_review_count)s ressenya"
msgstr[1] "%(formatted_review_count)s ressenyes"
#: bookwyrm/templates/search/book.html:34
#, python-format
msgid "(published %(pub_year)s)"
msgstr ""
msgstr "(publicat el %(pub_year)s)"
#: bookwyrm/templates/search/book.html:50
msgid "Results from"
@ -4608,15 +4608,15 @@ msgstr "Cap domini de correu a la llista negra"
#: bookwyrm/templates/settings/email_config.html:8
#: bookwyrm/templates/settings/layout.html:90
msgid "Email Configuration"
msgstr ""
msgstr "Configuració del correu electrònic"
#: bookwyrm/templates/settings/email_config.html:16
msgid "Error sending test email:"
msgstr ""
msgstr "S'ha produït un error a l'enviar el correu de prova:"
#: bookwyrm/templates/settings/email_config.html:24
msgid "Successfully sent test email."
msgstr ""
msgstr "Correu de prova enviat correctament."
#: bookwyrm/templates/settings/email_config.html:32
#: bookwyrm/templates/setup/config.html:102
@ -4625,36 +4625,36 @@ msgstr "Remitent de correu electrònic:"
#: bookwyrm/templates/settings/email_config.html:39
msgid "Email backend:"
msgstr ""
msgstr "Correu electrònic alternatiu:"
#: bookwyrm/templates/settings/email_config.html:46
msgid "Host:"
msgstr ""
msgstr "Servidor:"
#: bookwyrm/templates/settings/email_config.html:53
msgid "Host user:"
msgstr ""
msgstr "Usuari del servidor:"
#: bookwyrm/templates/settings/email_config.html:60
msgid "Port:"
msgstr ""
msgstr "Port:"
#: bookwyrm/templates/settings/email_config.html:67
msgid "Use TLS:"
msgstr ""
msgstr "Utilitzar TLS:"
#: bookwyrm/templates/settings/email_config.html:74
msgid "Use SSL:"
msgstr ""
msgstr "Utilitzar SSL:"
#: bookwyrm/templates/settings/email_config.html:83
#, python-format
msgid "Send test email to %(email)s"
msgstr ""
msgstr "Envia un correu de prova a %(email)s"
#: bookwyrm/templates/settings/email_config.html:90
msgid "Send test email"
msgstr ""
msgstr "Envia un correu de prova"
#: bookwyrm/templates/settings/federation/edit_instance.html:3
#: bookwyrm/templates/settings/federation/edit_instance.html:6
@ -4789,7 +4789,7 @@ msgstr "Ha fallat:"
#: bookwyrm/templates/settings/federation/instance_blocklist.html:62
msgid "Expects a json file in the format provided by FediBlock, with a list of entries that have <code>instance</code> and <code>url</code> fields. For example:"
msgstr ""
msgstr "S'espera un fitxer json en el format proporcionat per <code>FediBlock</code>, amb una llista d'entrades que tenen els camps <code>instància</code> i <code>url</code>. Per exemple:"
#: bookwyrm/templates/settings/federation/instance_list.html:36
#: bookwyrm/templates/settings/users/server_filter.html:5
@ -4815,27 +4815,27 @@ msgstr "Atura la importació?"
#: bookwyrm/templates/settings/imports/imports.html:19
msgid "Disable starting new imports"
msgstr ""
msgstr "Deshabilita iniciar noves importacions"
#: bookwyrm/templates/settings/imports/imports.html:30
msgid "This is only intended to be used when things have gone very wrong with imports and you need to pause the feature while addressing issues."
msgstr ""
msgstr "Aquesta acció només està indicada pe a quan les coses han anat molt malament amb les importacions i és necessari aturar la funcionalitat mentre es resol la incidència."
#: bookwyrm/templates/settings/imports/imports.html:31
msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
msgstr ""
msgstr "Mentre les importacions es troben deshabilitades, els usuaris no podran iniciar noves importacions, però les que es troben en curs no es veuran afectades."
#: bookwyrm/templates/settings/imports/imports.html:36
msgid "Disable imports"
msgstr ""
msgstr "Deshabilitar les importacions"
#: bookwyrm/templates/settings/imports/imports.html:50
msgid "Users are currently unable to start new imports"
msgstr ""
msgstr "Els usuaris no poden iniciar noves importacions actualment"
#: bookwyrm/templates/settings/imports/imports.html:55
msgid "Enable imports"
msgstr ""
msgstr "Habilitar les importacions"
#: bookwyrm/templates/settings/imports/imports.html:71
msgid "Completed"
@ -5152,7 +5152,7 @@ msgstr "Text de registre tancat:"
#: bookwyrm/templates/settings/registration_limited.html:29
msgid "Registration is enabled on this instance"
msgstr ""
msgstr "El registre en aquesta instància es troba obert"
#: bookwyrm/templates/settings/reports/report.html:12
msgid "Back to reports"
@ -5290,11 +5290,11 @@ msgstr "Política de privacitat:"
#: bookwyrm/templates/settings/site.html:72
msgid "Impressum:"
msgstr ""
msgstr "Avís legal:"
#: bookwyrm/templates/settings/site.html:77
msgid "Include impressum:"
msgstr ""
msgstr "Incloure avís legal:"
#: bookwyrm/templates/settings/site.html:91
msgid "Images"
@ -5350,7 +5350,7 @@ msgstr "Copia el fitxer del tema a la carpeta <code>bookwyrm/static/css/themes</
#: bookwyrm/templates/settings/themes.html:32
msgid "Run <code>./bw-dev compile_themes</code> and <code>./bw-dev collectstatic</code>."
msgstr ""
msgstr "Executa <code>./bw-dev compile_themes</code> i <code>./bw-dev collectstatic</code>."
#: bookwyrm/templates/settings/themes.html:35
msgid "Add the file name using the form below to make it available in the application interface."
@ -6336,7 +6336,7 @@ msgstr "Peticions de seguiment"
#: bookwyrm/templates/user/layout.html:71
#: bookwyrm/templates/user/reviews_comments.html:10
msgid "Reviews and Comments"
msgstr ""
msgstr "Ressenyes i comentaris"
#: bookwyrm/templates/user/lists.html:11
#, python-format
@ -6364,7 +6364,7 @@ msgstr "%(username)s no està seguint a ningú"
#: bookwyrm/templates/user/reviews_comments.html:24
msgid "No reviews or comments yet!"
msgstr ""
msgstr "Sense ressenyes o comentaris actualment!"
#: bookwyrm/templates/user/user.html:16
msgid "Edit profile"

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-12-21 17:58+0000\n"
"POT-Creation-Date: 2023-01-11 22:46+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"
@ -172,23 +172,23 @@ msgstr ""
msgid "Domain block"
msgstr ""
#: bookwyrm/models/book.py:277
#: bookwyrm/models/book.py:272
msgid "Audiobook"
msgstr ""
#: bookwyrm/models/book.py:278
#: bookwyrm/models/book.py:273
msgid "eBook"
msgstr ""
#: bookwyrm/models/book.py:279
#: bookwyrm/models/book.py:274
msgid "Graphic novel"
msgstr ""
#: bookwyrm/models/book.py:280
#: bookwyrm/models/book.py:275
msgid "Hardcover"
msgstr ""
#: bookwyrm/models/book.py:281
#: bookwyrm/models/book.py:276
msgid "Paperback"
msgstr ""
@ -216,7 +216,7 @@ msgstr ""
msgid "%(value)s is not a valid username"
msgstr ""
#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:142
#: bookwyrm/models/fields.py:182 bookwyrm/templates/layout.html:131
#: bookwyrm/templates/ostatus/error.html:29
msgid "username"
msgstr ""
@ -354,54 +354,58 @@ msgid "Español (Spanish)"
msgstr ""
#: bookwyrm/settings.py:291
msgid "Galego (Galician)"
msgid "Euskara (Basque)"
msgstr ""
#: bookwyrm/settings.py:292
msgid "Italiano (Italian)"
msgid "Galego (Galician)"
msgstr ""
#: bookwyrm/settings.py:293
msgid "Suomi (Finnish)"
msgid "Italiano (Italian)"
msgstr ""
#: bookwyrm/settings.py:294
msgid "Français (French)"
msgid "Suomi (Finnish)"
msgstr ""
#: bookwyrm/settings.py:295
msgid "Lietuvių (Lithuanian)"
msgid "Français (French)"
msgstr ""
#: bookwyrm/settings.py:296
msgid "Norsk (Norwegian)"
msgid "Lietuvių (Lithuanian)"
msgstr ""
#: bookwyrm/settings.py:297
msgid "Polski (Polish)"
msgid "Norsk (Norwegian)"
msgstr ""
#: bookwyrm/settings.py:298
msgid "Português do Brasil (Brazilian Portuguese)"
msgid "Polski (Polish)"
msgstr ""
#: bookwyrm/settings.py:299
msgid "Português Europeu (European Portuguese)"
msgid "Português do Brasil (Brazilian Portuguese)"
msgstr ""
#: bookwyrm/settings.py:300
msgid "Română (Romanian)"
msgid "Português Europeu (European Portuguese)"
msgstr ""
#: bookwyrm/settings.py:301
msgid "Svenska (Swedish)"
msgid "Română (Romanian)"
msgstr ""
#: bookwyrm/settings.py:302
msgid "简体中文 (Simplified Chinese)"
msgid "Svenska (Swedish)"
msgstr ""
#: bookwyrm/settings.py:303
msgid "简体中文 (Simplified Chinese)"
msgstr ""
#: bookwyrm/settings.py:304
msgid "繁體中文 (Traditional Chinese)"
msgstr ""
@ -430,54 +434,54 @@ msgstr ""
msgid "About"
msgstr ""
#: bookwyrm/templates/about/about.html:20
#: bookwyrm/templates/about/about.html:21
#: bookwyrm/templates/get_started/layout.html:20
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr ""
#: bookwyrm/templates/about/about.html:24
#: bookwyrm/templates/about/about.html:25
#, python-format
msgid "%(site_name)s is part of <em>BookWyrm</em>, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the <a href=\"https://joinbookwyrm.com/instances/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">BookWyrm network</a>, this community is unique."
msgstr ""
#: bookwyrm/templates/about/about.html:44
#: bookwyrm/templates/about/about.html:45
#, 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:63
#: bookwyrm/templates/about/about.html:64
#, 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:82
#: bookwyrm/templates/about/about.html:83
#, 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:93
#: bookwyrm/templates/about/about.html:94
msgid "Track your reading, talk about books, write reviews, and discover what to read next. Always ad-free, anti-corporate, and community-oriented, BookWyrm is human-scale software, designed to stay small and personal. If you have feature requests, bug reports, or grand dreams, <a href=\"https://joinbookwyrm.com/get-involved\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">reach out</a> and make yourself heard."
msgstr ""
#: bookwyrm/templates/about/about.html:104
#: bookwyrm/templates/about/about.html:105
msgid "Meet your admins"
msgstr ""
#: bookwyrm/templates/about/about.html:107
#: bookwyrm/templates/about/about.html:108
#, python-format
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"%(coc_path)s\">code of conduct</a>, and respond when users report spam and bad behavior."
msgstr ""
#: bookwyrm/templates/about/about.html:121
#: bookwyrm/templates/about/about.html:122
msgid "Moderator"
msgstr ""
#: bookwyrm/templates/about/about.html:123 bookwyrm/templates/user_menu.html:63
#: bookwyrm/templates/about/about.html:124 bookwyrm/templates/user_menu.html:67
msgid "Admin"
msgstr ""
#: bookwyrm/templates/about/about.html:139
#: bookwyrm/templates/about/about.html:140
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
#: bookwyrm/templates/snippets/status/status_options.html:35
#: bookwyrm/templates/snippets/user_options.html:14
@ -697,44 +701,48 @@ msgid "Wikipedia"
msgstr ""
#: bookwyrm/templates/author/author.html:79
msgid "View ISNI record"
msgid "Website"
msgstr ""
#: bookwyrm/templates/author/author.html:87
msgid "View ISNI record"
msgstr ""
#: bookwyrm/templates/author/author.html:95
#: bookwyrm/templates/book/book.html:164
msgid "View on ISFDB"
msgstr ""
#: bookwyrm/templates/author/author.html:92
#: bookwyrm/templates/author/author.html:100
#: bookwyrm/templates/author/sync_modal.html:5
#: bookwyrm/templates/book/book.html:131
#: bookwyrm/templates/book/sync_modal.html:5
msgid "Load data"
msgstr ""
#: bookwyrm/templates/author/author.html:96
#: bookwyrm/templates/author/author.html:104
#: bookwyrm/templates/book/book.html:135
msgid "View on OpenLibrary"
msgstr ""
#: bookwyrm/templates/author/author.html:111
#: bookwyrm/templates/author/author.html:119
#: bookwyrm/templates/book/book.html:149
msgid "View on Inventaire"
msgstr ""
#: bookwyrm/templates/author/author.html:127
#: bookwyrm/templates/author/author.html:135
msgid "View on LibraryThing"
msgstr ""
#: bookwyrm/templates/author/author.html:135
#: bookwyrm/templates/author/author.html:143
msgid "View on Goodreads"
msgstr ""
#: bookwyrm/templates/author/author.html:143
#: bookwyrm/templates/author/author.html:151
msgid "View ISFDB entry"
msgstr ""
#: bookwyrm/templates/author/author.html:158
#: bookwyrm/templates/author/author.html:166
#, python-format
msgid "Books by %(name)s"
msgstr ""
@ -784,45 +792,49 @@ msgstr ""
msgid "Wikipedia link:"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:61
#: bookwyrm/templates/author/edit_author.html:60
msgid "Website:"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:65
msgid "Birth date:"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:68
#: bookwyrm/templates/author/edit_author.html:72
msgid "Death date:"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:75
#: bookwyrm/templates/author/edit_author.html:79
msgid "Author Identifiers"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:77
#: bookwyrm/templates/author/edit_author.html:81
msgid "Openlibrary key:"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:84
#: bookwyrm/templates/author/edit_author.html:88
#: bookwyrm/templates/book/edit/edit_book_form.html:323
msgid "Inventaire ID:"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:91
#: bookwyrm/templates/author/edit_author.html:95
msgid "Librarything key:"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:98
#: bookwyrm/templates/author/edit_author.html:102
#: bookwyrm/templates/book/edit/edit_book_form.html:332
msgid "Goodreads key:"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:105
#: bookwyrm/templates/author/edit_author.html:109
msgid "ISFDB:"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:112
#: bookwyrm/templates/author/edit_author.html:116
msgid "ISNI:"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:122
#: bookwyrm/templates/author/edit_author.html:126
#: bookwyrm/templates/book/book.html:209
#: bookwyrm/templates/book/edit/edit_book.html:142
#: bookwyrm/templates/book/file_links/add_link_modal.html:60
@ -845,7 +857,7 @@ msgstr ""
msgid "Save"
msgstr ""
#: bookwyrm/templates/author/edit_author.html:123
#: bookwyrm/templates/author/edit_author.html:127
#: bookwyrm/templates/author/sync_modal.html:23
#: bookwyrm/templates/book/book.html:210
#: bookwyrm/templates/book/cover_add_modal.html:33
@ -975,7 +987,7 @@ msgstr ""
#: bookwyrm/templates/guided_tour/lists.html:14
#: bookwyrm/templates/guided_tour/user_books.html:102
#: bookwyrm/templates/guided_tour/user_profile.html:78
#: bookwyrm/templates/layout.html:102 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/layout.html:91 bookwyrm/templates/lists/curate.html:8
#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
#: bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:26
@ -1105,7 +1117,7 @@ msgid "This is a new work"
msgstr ""
#: bookwyrm/templates/book/edit/edit_book.html:131
#: bookwyrm/templates/feed/status.html:21
#: bookwyrm/templates/feed/status.html:19
#: bookwyrm/templates/guided_tour/book.html:44
#: bookwyrm/templates/guided_tour/book.html:68
#: bookwyrm/templates/guided_tour/book.html:91
@ -1149,6 +1161,7 @@ msgstr ""
#: bookwyrm/templates/guided_tour/user_profile.html:89
#: bookwyrm/templates/guided_tour/user_profile.html:112
#: bookwyrm/templates/guided_tour/user_profile.html:135
#: bookwyrm/templates/user_menu.html:18
msgid "Back"
msgstr ""
@ -1532,7 +1545,7 @@ msgstr ""
#: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9
#: bookwyrm/templates/user_menu.html:30
#: bookwyrm/templates/user_menu.html:34
msgid "Directory"
msgstr ""
@ -1652,7 +1665,7 @@ msgstr ""
#: bookwyrm/templates/discover/discover.html:4
#: bookwyrm/templates/discover/discover.html:10
#: bookwyrm/templates/layout.html:105
#: bookwyrm/templates/layout.html:94
msgid "Discover"
msgstr ""
@ -1784,7 +1797,7 @@ msgstr ""
msgid "Test email"
msgstr ""
#: bookwyrm/templates/embed-layout.html:20 bookwyrm/templates/layout.html:41
#: bookwyrm/templates/embed-layout.html:20 bookwyrm/templates/layout.html:30
#: bookwyrm/templates/setup/layout.html:15
#: bookwyrm/templates/two_factor_auth/two_factor_login.html:18
#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:18
@ -1807,7 +1820,7 @@ msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
msgstr ""
#: bookwyrm/templates/feed/direct_messages.html:10
#: bookwyrm/templates/user_menu.html:40
#: bookwyrm/templates/user_menu.html:44
msgid "Direct Messages"
msgstr ""
@ -1845,7 +1858,7 @@ msgstr ""
#: bookwyrm/templates/feed/suggested_books.html:6
#: bookwyrm/templates/guided_tour/home.html:127
#: bookwyrm/templates/user_menu.html:35
#: bookwyrm/templates/user_menu.html:39
msgid "Your Books"
msgstr ""
@ -1906,7 +1919,7 @@ msgstr ""
#: bookwyrm/templates/get_started/book_preview.html:12
#: bookwyrm/templates/shelf/shelf.html:88
#: bookwyrm/templates/snippets/shelf_selector.html:47
#: bookwyrm/templates/snippets/shelf_selector.html:46
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12
#: bookwyrm/templates/user/user.html:35 bookwyrm/templatetags/shelf_tags.py:52
@ -1923,7 +1936,7 @@ msgid "What are you reading?"
msgstr ""
#: bookwyrm/templates/get_started/books.html:9
#: bookwyrm/templates/layout.html:49 bookwyrm/templates/lists/list.html:213
#: bookwyrm/templates/layout.html:38 bookwyrm/templates/lists/list.html:213
msgid "Search for a book"
msgstr ""
@ -1942,8 +1955,8 @@ msgstr ""
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/groups/members.html:15
#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:55
#: bookwyrm/templates/layout.html:56 bookwyrm/templates/lists/list.html:217
#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:44
#: bookwyrm/templates/layout.html:45 bookwyrm/templates/lists/list.html:217
#: bookwyrm/templates/search/layout.html:5
#: bookwyrm/templates/search/layout.html:10
msgid "Search"
@ -2421,8 +2434,8 @@ msgid "The bell will light up when you have a new notification. When it does, cl
msgstr ""
#: bookwyrm/templates/guided_tour/home.html:177
#: bookwyrm/templates/layout.html:86 bookwyrm/templates/layout.html:118
#: bookwyrm/templates/layout.html:119
#: bookwyrm/templates/layout.html:75 bookwyrm/templates/layout.html:107
#: bookwyrm/templates/layout.html:108
#: bookwyrm/templates/notifications/notifications_page.html:5
#: bookwyrm/templates/notifications/notifications_page.html:10
msgid "Notifications"
@ -2994,7 +3007,7 @@ msgid "Login"
msgstr ""
#: bookwyrm/templates/landing/login.html:7
#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:150
#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:139
#: bookwyrm/templates/ostatus/error.html:37
msgid "Log in"
msgstr ""
@ -3005,7 +3018,7 @@ msgstr ""
#: bookwyrm/templates/landing/login.html:21
#: bookwyrm/templates/landing/reactivate.html:17
#: bookwyrm/templates/layout.html:141 bookwyrm/templates/ostatus/error.html:28
#: bookwyrm/templates/layout.html:130 bookwyrm/templates/ostatus/error.html:28
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
msgstr ""
@ -3013,13 +3026,13 @@ msgstr ""
#: bookwyrm/templates/landing/login.html:27
#: bookwyrm/templates/landing/password_reset.html:26
#: bookwyrm/templates/landing/reactivate.html:23
#: bookwyrm/templates/layout.html:145 bookwyrm/templates/ostatus/error.html:32
#: bookwyrm/templates/layout.html:134 bookwyrm/templates/ostatus/error.html:32
#: bookwyrm/templates/preferences/2fa.html:91
#: bookwyrm/templates/snippets/register_form.html:45
msgid "Password:"
msgstr ""
#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:147
#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:136
#: bookwyrm/templates/ostatus/error.html:34
msgid "Forgot your password?"
msgstr ""
@ -3062,35 +3075,35 @@ msgstr ""
msgid "%(site_name)s search"
msgstr ""
#: bookwyrm/templates/layout.html:47
#: bookwyrm/templates/layout.html:36
msgid "Search for a book, user, or list"
msgstr ""
#: bookwyrm/templates/layout.html:62 bookwyrm/templates/layout.html:63
#: bookwyrm/templates/layout.html:51 bookwyrm/templates/layout.html:52
msgid "Scan Barcode"
msgstr ""
#: bookwyrm/templates/layout.html:77
#: bookwyrm/templates/layout.html:66
msgid "Main navigation menu"
msgstr ""
#: bookwyrm/templates/layout.html:99
#: bookwyrm/templates/layout.html:88
msgid "Feed"
msgstr ""
#: bookwyrm/templates/layout.html:146 bookwyrm/templates/ostatus/error.html:33
#: bookwyrm/templates/layout.html:135 bookwyrm/templates/ostatus/error.html:33
msgid "password"
msgstr ""
#: bookwyrm/templates/layout.html:158
#: bookwyrm/templates/layout.html:147
msgid "Join"
msgstr ""
#: bookwyrm/templates/layout.html:192
#: bookwyrm/templates/layout.html:181
msgid "Successfully posted status"
msgstr ""
#: bookwyrm/templates/layout.html:193
#: bookwyrm/templates/layout.html:182
msgid "Error posting status"
msgstr ""
@ -3923,7 +3936,7 @@ msgstr ""
#: bookwyrm/templates/preferences/edit_user.html:12
#: bookwyrm/templates/preferences/edit_user.html:25
#: bookwyrm/templates/settings/users/user_info.html:7
#: bookwyrm/templates/user_menu.html:25
#: bookwyrm/templates/user_menu.html:29
msgid "Profile"
msgstr ""
@ -4872,7 +4885,7 @@ msgstr ""
#: bookwyrm/templates/settings/invites/manage_invites.html:3
#: bookwyrm/templates/settings/invites/manage_invites.html:15
#: bookwyrm/templates/settings/layout.html:42
#: bookwyrm/templates/user_menu.html:56
#: bookwyrm/templates/user_menu.html:60
msgid "Invites"
msgstr ""
@ -5572,7 +5585,7 @@ msgstr ""
msgid "You are running BookWyrm in production mode without https. <strong>USE_HTTPS</strong> should be enabled in production."
msgstr ""
#: bookwyrm/templates/setup/config.html:52 bookwyrm/templates/user_menu.html:45
#: bookwyrm/templates/setup/config.html:52 bookwyrm/templates/user_menu.html:49
msgid "Settings"
msgstr ""
@ -6035,7 +6048,7 @@ msgid "Stop Reading \"<em>%(book_title)s</em>\""
msgstr ""
#: bookwyrm/templates/snippets/reading_modals/stop_reading_modal.html:32
#: bookwyrm/templates/snippets/shelf_selector.html:54
#: bookwyrm/templates/snippets/shelf_selector.html:53
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:21
msgid "Stopped reading"
msgstr ""
@ -6085,25 +6098,25 @@ msgstr ""
msgid "Move book"
msgstr ""
#: bookwyrm/templates/snippets/shelf_selector.html:39
#: bookwyrm/templates/snippets/shelf_selector.html:38
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:17
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:33
msgid "Start reading"
msgstr ""
#: bookwyrm/templates/snippets/shelf_selector.html:61
#: bookwyrm/templates/snippets/shelf_selector.html:60
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:38
#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:55
msgid "Want to read"
msgstr ""
#: bookwyrm/templates/snippets/shelf_selector.html:82
#: bookwyrm/templates/snippets/shelf_selector.html:81
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:73
#, python-format
msgid "Remove from %(name)s"
msgstr ""
#: bookwyrm/templates/snippets/shelf_selector.html:95
#: bookwyrm/templates/snippets/shelf_selector.html:94
msgid "Remove from"
msgstr ""
@ -6428,7 +6441,7 @@ msgstr ""
msgid "View profile and more"
msgstr ""
#: bookwyrm/templates/user_menu.html:78
#: bookwyrm/templates/user_menu.html:82
msgid "Log out"
msgstr ""

Binary file not shown.

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-12-20 00:41+0000\n"
"PO-Revision-Date: 2022-12-21 17:53\n"
"PO-Revision-Date: 2022-12-26 00:34\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Spanish\n"
"Language: es\n"
@ -606,7 +606,7 @@ msgstr "Eso hace un promedio de %(pages)s páginas por libro."
#, python-format
msgid "(No page data was available for %(no_page_number)s book)"
msgid_plural "(No page data was available for %(no_page_number)s books)"
msgstr[0] ""
msgstr[0] "(No había datos de página disponibles para el libro %(no_page_number)s)"
msgstr[1] ""
#: bookwyrm/templates/annual_summary/layout.html:150
@ -702,7 +702,7 @@ msgstr "Ver registro ISNI"
#: bookwyrm/templates/author/author.html:87
#: bookwyrm/templates/book/book.html:164
msgid "View on ISFDB"
msgstr ""
msgstr "Ver en ISFDB"
#: bookwyrm/templates/author/author.html:92
#: bookwyrm/templates/author/sync_modal.html:5
@ -731,7 +731,7 @@ msgstr "Ver en Goodreads"
#: bookwyrm/templates/author/author.html:143
msgid "View ISFDB entry"
msgstr ""
msgstr "Ver entrada en ISFDB"
#: bookwyrm/templates/author/author.html:158
#, python-format
@ -815,7 +815,7 @@ msgstr "Clave Goodreads:"
#: bookwyrm/templates/author/edit_author.html:105
msgid "ISFDB:"
msgstr ""
msgstr "ISFDB:"
#: bookwyrm/templates/author/edit_author.html:112
msgid "ISNI:"
@ -1013,16 +1013,16 @@ msgstr "ASIN:"
#: bookwyrm/templates/book/book_identifiers.html:29
#: bookwyrm/templates/book/edit/edit_book_form.html:359
msgid "Audible ASIN:"
msgstr ""
msgstr "ASIN Audible:"
#: bookwyrm/templates/book/book_identifiers.html:36
#: bookwyrm/templates/book/edit/edit_book_form.html:368
msgid "ISFDB ID:"
msgstr ""
msgstr "ISFDB ID:"
#: bookwyrm/templates/book/book_identifiers.html:43
msgid "Goodreads:"
msgstr ""
msgstr "Goodreads:"
#: bookwyrm/templates/book/cover_add_modal.html:5
msgid "Add cover"
@ -1777,11 +1777,11 @@ msgstr "Reestablece tu contraseña de %(site_name)s"
#: bookwyrm/templates/email/test/html_content.html:6
#: bookwyrm/templates/email/test/text_content.html:4
msgid "This is a test email."
msgstr ""
msgstr "Este es un correo electrónico de prueba."
#: bookwyrm/templates/email/test/subject.html:2
msgid "Test email"
msgstr ""
msgstr "Correo electrónico de prueba"
#: bookwyrm/templates/embed-layout.html:20 bookwyrm/templates/layout.html:41
#: bookwyrm/templates/setup/layout.html:15
@ -2674,7 +2674,7 @@ msgstr "Importar libros"
#: bookwyrm/templates/import/import.html:13
msgid "Not a valid CSV file"
msgstr ""
msgstr "No es un archivo CSV válido"
#: bookwyrm/templates/import/import.html:22
#, python-format
@ -3256,7 +3256,7 @@ msgstr "¡Has agregado un libro a esta lista exitosamente!"
#: bookwyrm/templates/lists/list.html:54
msgid "This list is currently empty."
msgstr ""
msgstr "Esta lista está vacía actualmente."
#: bookwyrm/templates/lists/list.html:104
msgid "Edit notes"
@ -3382,7 +3382,7 @@ msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a> ha sugerido añad
#: bookwyrm/templates/notifications/items/add.html:66
#, python-format
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> added a book to one of your lists"
msgstr ""
msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a> agregó un libro a una de tus listas"
#: bookwyrm/templates/notifications/items/add.html:72
#, python-format

Binary file not shown.

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-12-20 00:41+0000\n"
"PO-Revision-Date: 2022-12-21 17:53\n"
"PO-Revision-Date: 2023-01-03 00:44\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Basque\n"
"Language: eu\n"
@ -338,7 +338,7 @@ msgstr "Liburuak"
#: bookwyrm/settings.py:287
msgid "English"
msgstr "Ingelesa"
msgstr "English (Ingelesa)"
#: bookwyrm/settings.py:288
msgid "Català (Catalan)"
@ -433,7 +433,7 @@ msgstr "Honi buruz"
#: bookwyrm/templates/get_started/layout.html:20
#, python-format
msgid "Welcome to %(site_name)s!"
msgstr "Ongi etorri %(site_name)s-(e)ra!"
msgstr "Ongi etorri %(site_name)s(e)ra!"
#: bookwyrm/templates/about/about.html:24
#, python-format
@ -959,7 +959,7 @@ msgstr "Zure iruzkinak"
#: bookwyrm/templates/book/book.html:313
msgid "Your quotes"
msgstr "Zure aipamenak"
msgstr "Zure aipuak"
#: bookwyrm/templates/book/book.html:349
msgid "Subjects"
@ -1061,7 +1061,7 @@ msgstr "Editatu \"%(book_title)s\""
#: bookwyrm/templates/book/edit/edit_book.html:10
#: bookwyrm/templates/book/edit/edit_book.html:20
msgid "Add Book"
msgstr "Gehitu liburuak"
msgstr "Gehitu liburua"
#: bookwyrm/templates/book/edit/edit_book.html:62
msgid "Confirm Book Info"
@ -1088,7 +1088,7 @@ msgstr "Informazio gehiagorako: isni.org"
#: bookwyrm/templates/book/edit/edit_book.html:97
msgid "This is a new author"
msgstr "Hau egile berria da"
msgstr "Egile berria da"
#: bookwyrm/templates/book/edit/edit_book.html:107
#, python-format
@ -1206,7 +1206,7 @@ msgstr "Argitaratze data:"
#: bookwyrm/templates/book/edit/edit_book_form.html:175
msgid "Authors"
msgstr "Egileak"
msgstr "Egilea(k)"
#: bookwyrm/templates/book/edit/edit_book_form.html:186
#, python-format
@ -1220,7 +1220,7 @@ msgstr "%(name)s egilearen orria"
#: bookwyrm/templates/book/edit/edit_book_form.html:197
msgid "Add Authors:"
msgstr "Gehitu egileak:"
msgstr "Gehitu egilea(k):"
#: bookwyrm/templates/book/edit/edit_book_form.html:200
#: bookwyrm/templates/book/edit/edit_book_form.html:203
@ -1239,7 +1239,7 @@ msgstr "Gehitu beste egile bat"
#: bookwyrm/templates/book/edit/edit_book_form.html:220
#: bookwyrm/templates/shelf/shelf.html:147
msgid "Cover"
msgstr "Estalkia"
msgstr "Azala"
#: bookwyrm/templates/book/edit/edit_book_form.html:252
msgid "Physical Properties"
@ -1256,7 +1256,7 @@ msgstr "Formatuaren xehetasunak:"
#: bookwyrm/templates/book/edit/edit_book_form.html:280
msgid "Pages:"
msgstr "Orriak:"
msgstr "Orrialdeak:"
#: bookwyrm/templates/book/edit/edit_book_form.html:291
msgid "Book Identifiers"
@ -1277,7 +1277,7 @@ msgstr "Openlibrary-ren IDa:"
#: bookwyrm/templates/book/editions/editions.html:4
#, python-format
msgid "Editions of %(book_title)s"
msgstr "%(book_title)s-ren edizioak"
msgstr "%(book_title)s(r)en edizioak"
#: bookwyrm/templates/book/editions/editions.html:8
#, python-format
@ -1464,7 +1464,7 @@ msgstr "Datuak kargatzean <strong>%(source_name)s</strong>(e)ra konektatu eta he
#: bookwyrm/templates/compose.html:5 bookwyrm/templates/compose.html:8
msgid "Edit status"
msgstr "Editatu egoera"
msgstr "Editatu bidalketa"
#: bookwyrm/templates/confirm_email/confirm_email.html:4
msgid "Confirm email"
@ -1472,7 +1472,7 @@ msgstr "Berretsi eposta"
#: bookwyrm/templates/confirm_email/confirm_email.html:7
msgid "Confirm your email address"
msgstr "Berretsi zure helbide elektronikoa"
msgstr "Egiaztatu zure helbide elektronikoa"
#: bookwyrm/templates/confirm_email/confirm_email.html:13
msgid "A confirmation code has been sent to the email address you used to register your account."
@ -1596,7 +1596,7 @@ msgstr[1] "liburuak zure apaletan"
#: bookwyrm/templates/directory/user_card.html:55
msgid "posts"
msgstr "argitalpenak"
msgstr "bidalketak"
#: bookwyrm/templates/directory/user_card.html:61
msgid "last active"
@ -1608,7 +1608,7 @@ msgstr "Erabiltzaile mota"
#: bookwyrm/templates/directory/user_type_filter.html:8
msgid "BookWyrm users"
msgstr "BookWyrm erabiltzaileak"
msgstr "BookWyrm-en erabiltzaileak"
#: bookwyrm/templates/directory/user_type_filter.html:12
msgid "All known users"
@ -1663,7 +1663,7 @@ msgstr "Ikusi zer berri dagoen tokiko %(site_name)s komunitatean"
#: bookwyrm/templates/discover/large-book.html:52
#: bookwyrm/templates/discover/small-book.html:36
msgid "View status"
msgstr "Ikusi egoera"
msgstr "Ikusi bidalketa"
#: bookwyrm/templates/email/confirm/html_content.html:6
#: bookwyrm/templates/email/confirm/text_content.html:4
@ -1726,7 +1726,7 @@ msgstr "%(site_name)s-ra sartzera gonbidatuta zaude! Egin klik beheko estekan ko
#: bookwyrm/templates/email/invite/text_content.html:8
#, python-format
msgid "Learn more about %(site_name)s:"
msgstr "Informazio gehiago %(site_name)s buruz:"
msgstr "Informazio gehiago %(site_name)s(r)i buruz:"
#: bookwyrm/templates/email/moderation_report/html_content.html:8
#: bookwyrm/templates/email/moderation_report/text_content.html:6
@ -1754,7 +1754,7 @@ msgstr "Txosten berria %(site_name)s"
#: bookwyrm/templates/email/password_reset/text_content.html:4
#, python-format
msgid "You requested to reset your %(site_name)s password. Click the link below to set a new password and log in to your account."
msgstr "Zure %(site_name)s pasahitza berrezartzeko eskatu duzu. Egin klik esteka honetan pasahitz berri bat ezartzeko eta zure kontuan saioa hasteko."
msgstr "%(site_name)s(r)en pasahitza berrezartzeko eskatu duzu. Egin klik esteka honetan pasahitz berri bat ezartzeko eta zure kontuan saioa hasteko."
#: bookwyrm/templates/email/password_reset/html_content.html:9
#: bookwyrm/templates/landing/password_reset.html:4
@ -1840,7 +1840,7 @@ msgstr "Irakurtzeko helburua edozein unetan ezar edo alda dezakezu zure <a href=
#: bookwyrm/templates/feed/layout.html:4
msgid "Updates"
msgstr "Eguneraketak"
msgstr "Eguneratzeak"
#: bookwyrm/templates/feed/suggested_books.html:6
#: bookwyrm/templates/guided_tour/home.html:127
@ -3566,7 +3566,7 @@ msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a> eta <a href=\"%(s
#: bookwyrm/templates/notifications/items/leave.html:36
#, python-format
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> and %(other_user_display_count)s others have left your group \"<a href=\"%(group_path)s\">%(group_name)s</a>\""
msgstr ""
msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a> eta beste %(other_user_display_count)s erabiltzailek zure \"<a href=\"%(group_path)s\">%(group_name)s</a>\" taldea utzi zuten"
#: bookwyrm/templates/notifications/items/mention.html:20
#, python-format
@ -3576,12 +3576,12 @@ msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a>(e)k <a href=\"%(r
#: bookwyrm/templates/notifications/items/mention.html:26
#, python-format
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> mentioned you in a <a href=\"%(related_path)s\">comment on <em>%(book_title)s</em></a>"
msgstr ""
msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a> erabiltzaileak <a href=\"%(related_path)s\">iruzkin batean <em>%(book_title)s</em></a> aipatu zintuen"
#: bookwyrm/templates/notifications/items/mention.html:32
#, python-format
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> mentioned you in a <a href=\"%(related_path)s\">quote from <em>%(book_title)s</em></a>"
msgstr ""
msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a> erabiltzaileak <a href=\"%(related_path)s\">aipamen batean <em>%(book_title)s</em></a> aipatu zintuen"
#: bookwyrm/templates/notifications/items/mention.html:38
#, python-format
@ -3601,22 +3601,22 @@ msgstr "Ezabatua izan zara \"<a href=\"%(group_path)s\">%(group_name)s</a>\" tal
#: bookwyrm/templates/notifications/items/reply.html:21
#, python-format
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> <a href=\"%(related_path)s\">replied</a> to your <a href=\"%(parent_path)s\">review of <em>%(book_title)s</em></a>"
msgstr ""
msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a>(e)k <em>%(book_title)s</em> liburuari buruzko zure <a href=\"%(parent_path)s\">kritikari </a> <a href=\"%(related_path)s\">erantzun zion</a>"
#: bookwyrm/templates/notifications/items/reply.html:27
#, python-format
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> <a href=\"%(related_path)s\">replied</a> to your <a href=\"%(parent_path)s\">comment on <em>%(book_title)s</em></a>"
msgstr ""
msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a>(e)k <em>%(book_title)s</em> liburuari buruzko zure <a href=\"%(parent_path)s\">iruzkinari </a><a href=\"%(related_path)s\">erantzun zion</a>"
#: bookwyrm/templates/notifications/items/reply.html:33
#, python-format
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> <a href=\"%(related_path)s\">replied</a> to your <a href=\"%(parent_path)s\">quote from <em>%(book_title)s</em></a>"
msgstr ""
msgstr "<a href=\"%(related_user_link)s\">%(related_user)s</a>(e)k <em>%(book_title)s</em> liburuari buruzko zure <a href=\"%(parent_path)s\">aipamenari </a> <a href=\"%(related_path)s\">erantzun zion</a>"
#: bookwyrm/templates/notifications/items/reply.html:39
#, python-format
msgid "<a href=\"%(related_user_link)s\">%(related_user)s</a> <a href=\"%(related_path)s\">replied</a> to your <a href=\"%(parent_path)s\">status</a>"
msgstr ""
msgstr "<a href=\"%(related_user_link)s\">%(related_user)s(e)k </a> zure <a href=\"%(parent_path)s\">egoerari </a><a href=\"%(related_path)s\">erantzun zion</a>"
#: bookwyrm/templates/notifications/items/report.html:15
#, python-format
@ -3727,7 +3727,7 @@ msgstr "Jarrai ezazu %(username)s Bookwyr,. Mastodon ala Pleroma bezalako fedibe
#: bookwyrm/templates/ostatus/remote_follow.html:40
msgid "User handle to follow from:"
msgstr ""
msgstr "Harpidetzeko kontua:"
#: bookwyrm/templates/ostatus/remote_follow.html:42
msgid "Follow!"
@ -3805,7 +3805,7 @@ msgstr "Desgaitu 2FA"
#: bookwyrm/templates/preferences/2fa.html:39
msgid "You can generate backup codes to use in case you do not have access to your authentication app. If you generate new codes, any backup codes previously generated will no longer work."
msgstr ""
msgstr "Babes-kodeak sor ditzakezu, autentifikazio-aplikaziora sartzen ez baduzu lortzen. Kode berriak sortzen badituzu, lehenago sortutako segurtasun-kodeek ez dute funtzionatuko."
#: bookwyrm/templates/preferences/2fa.html:40
msgid "Generate backup codes"
@ -4143,17 +4143,17 @@ msgstr "Liburua bilatzen:"
#, python-format
msgid "%(formatted_review_count)s review"
msgid_plural "%(formatted_review_count)s reviews"
msgstr[0] ""
msgstr[1] ""
msgstr[0] "%(formatted_review_count)s iritzi"
msgstr[1] "%(formatted_review_count)s iritzi"
#: bookwyrm/templates/search/book.html:34
#, python-format
msgid "(published %(pub_year)s)"
msgstr ""
msgstr "(%(pub_year)s(e)an argitaratua)"
#: bookwyrm/templates/search/book.html:50
msgid "Results from"
msgstr ""
msgstr "Honen emaitza"
#: bookwyrm/templates/search/book.html:89
msgid "Import book"
@ -4332,7 +4332,7 @@ msgstr "Azken aldiz exekutatua:"
#: bookwyrm/templates/settings/automod/rules.html:40
msgid "Total run count:"
msgstr ""
msgstr "Betearazpenak, guztira:"
#: bookwyrm/templates/settings/automod/rules.html:47
msgid "Enabled:"
@ -4566,7 +4566,7 @@ msgstr[1] "%(display_count)s salaketa zabalik"
#: bookwyrm/templates/settings/dashboard/warnings/update_version.html:8
#, python-format
msgid "An update is available! You're running v%(current)s and the latest release is %(available)s."
msgstr ""
msgstr "Eguneraketa bat eskuragarri dago! %(current)s bertsioa darabilzu eta %(available)s bertsioa erabilgarri da."
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:5
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:10
@ -4585,7 +4585,7 @@ msgstr "Blokeatutako emailen zerrenda"
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:18
msgid "When someone tries to register with an email from this domain, no account will be created. The registration process will appear to have worked."
msgstr ""
msgstr "Norbait domeinu honetako mezu elektroniko batekin erregistratzen saiatzen denean, ez da konturik sortuko. Erregistratze-prozesuak funtzionatu balu bezala agertuko da."
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:29
#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:27
@ -4607,15 +4607,15 @@ msgstr "Ez dago email domeinurik bloketatua une honetan"
#: bookwyrm/templates/settings/email_config.html:8
#: bookwyrm/templates/settings/layout.html:90
msgid "Email Configuration"
msgstr ""
msgstr "Posta elektronikoaren konfigurazioa"
#: bookwyrm/templates/settings/email_config.html:16
msgid "Error sending test email:"
msgstr ""
msgstr "Errorea proba mezua igortzean:"
#: bookwyrm/templates/settings/email_config.html:24
msgid "Successfully sent test email."
msgstr ""
msgstr "Proba mezua behar bezala igorria."
#: bookwyrm/templates/settings/email_config.html:32
#: bookwyrm/templates/setup/config.html:102
@ -4624,36 +4624,36 @@ msgstr "Emailen bidaltzailea:"
#: bookwyrm/templates/settings/email_config.html:39
msgid "Email backend:"
msgstr ""
msgstr "Mezularitzaren konfigurazioa:"
#: bookwyrm/templates/settings/email_config.html:46
msgid "Host:"
msgstr ""
msgstr "Zerbitzaria:"
#: bookwyrm/templates/settings/email_config.html:53
msgid "Host user:"
msgstr ""
msgstr "Zerbitzariaren erabiltzailea:"
#: bookwyrm/templates/settings/email_config.html:60
msgid "Port:"
msgstr ""
msgstr "Ataka:"
#: bookwyrm/templates/settings/email_config.html:67
msgid "Use TLS:"
msgstr ""
msgstr "TLSaren erabilpena:"
#: bookwyrm/templates/settings/email_config.html:74
msgid "Use SSL:"
msgstr ""
msgstr "SSLaren erabilpena:"
#: bookwyrm/templates/settings/email_config.html:83
#, python-format
msgid "Send test email to %(email)s"
msgstr ""
msgstr "Igorri proba mezua honi: %(email)s"
#: bookwyrm/templates/settings/email_config.html:90
msgid "Send test email"
msgstr ""
msgstr "Proba mezua igorri"
#: bookwyrm/templates/settings/federation/edit_instance.html:3
#: bookwyrm/templates/settings/federation/edit_instance.html:6
@ -4788,7 +4788,7 @@ msgstr "Huts egin du:"
#: bookwyrm/templates/settings/federation/instance_blocklist.html:62
msgid "Expects a json file in the format provided by FediBlock, with a list of entries that have <code>instance</code> and <code>url</code> fields. For example:"
msgstr ""
msgstr "FediBlock-ek ematen duen formatuko json fitxategi bat espero da sarrera-zerrenda batekin. Sarrera-zerrenda horrek <code>instantzia</code> eta <code>url</code> eremuak ditu. Adibidez:"
#: bookwyrm/templates/settings/federation/instance_list.html:36
#: bookwyrm/templates/settings/users/server_filter.html:5
@ -4818,7 +4818,7 @@ msgstr "Desgaitu inportazio berriak abiaraztea"
#: bookwyrm/templates/settings/imports/imports.html:30
msgid "This is only intended to be used when things have gone very wrong with imports and you need to pause the feature while addressing issues."
msgstr ""
msgstr "Erabiltzen da hori inportazioekin gauzak benetan gaizki doazenean eta arazoak konpontzen dituzun bitartean, jardunari etenaldi bat egin behar zaionean."
#: bookwyrm/templates/settings/imports/imports.html:31
msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be effected."
@ -5075,7 +5075,7 @@ msgstr "Ezarri bistaratzeko izena %(url)s(e)rako"
#: bookwyrm/templates/settings/link_domains/link_domains.html:11
msgid "Link domains must be approved before they are shown on book pages. Please make sure that the domains are not hosting spam, malicious code, or deceptive links before approving."
msgstr ""
msgstr "Lotura-domeinuak liburu-orrietan agertu baino lehen onartu behar dira. Ziurtatu domeinuek ez dutela spamik, kode maltzurrik edo esteka engainagarririk onartzen hasi aurretik."
#: bookwyrm/templates/settings/link_domains/link_domains.html:45
msgid "Set display name"
@ -5151,7 +5151,7 @@ msgstr "Izen-emateak itxita daudenean mezua:"
#: bookwyrm/templates/settings/registration_limited.html:29
msgid "Registration is enabled on this instance"
msgstr ""
msgstr "Erregistroa gaituta dago instantzia honetan"
#: bookwyrm/templates/settings/reports/report.html:12
msgid "Back to reports"
@ -5277,7 +5277,7 @@ msgstr "Azalpen laburra:"
#: bookwyrm/templates/settings/site.html:59
msgid "Used when the instance is previewed on joinbookwyrm.com. Does not support HTML or Markdown."
msgstr ""
msgstr "Instantzia joinbookwyrm.com-en aurreikusita dagoenean erabiltzen da. Ez du HTML edo Markdown onartzen."
#: bookwyrm/templates/settings/site.html:63
msgid "Code of conduct:"
@ -5289,11 +5289,11 @@ msgstr "Pribatutasun-politika:"
#: bookwyrm/templates/settings/site.html:72
msgid "Impressum:"
msgstr ""
msgstr "Lege oharrak:"
#: bookwyrm/templates/settings/site.html:77
msgid "Include impressum:"
msgstr ""
msgstr "Sartu lege oharrak:"
#: bookwyrm/templates/settings/site.html:91
msgid "Images"
@ -5349,7 +5349,7 @@ msgstr "Kopiatu azalaren fitxategia zure zerbitzarik <code>bookwyrm/static/css/t
#: bookwyrm/templates/settings/themes.html:32
msgid "Run <code>./bw-dev compile_themes</code> and <code>./bw-dev collectstatic</code>."
msgstr ""
msgstr "Exekutatu <code>./bw-dev compile_themes</code> eta <code>./bw-dev collectstatic</code>."
#: bookwyrm/templates/settings/themes.html:35
msgid "Add the file name using the form below to make it available in the application interface."
@ -5393,7 +5393,7 @@ msgstr "Behin-betirako ezabatu erabiltzailea"
#: bookwyrm/templates/settings/users/delete_user_form.html:12
#, python-format
msgid "Are you sure you want to delete <strong>%(username)s</strong>'s account? This action cannot be undone. To proceed, please enter your password to confirm deletion."
msgstr ""
msgstr "Ziur zaude <strong>%(username)s</strong> erabiltzailearen kontua ezabatu nahi duzula? Ekintza hori ezin da desegin. Horretarako, sartu pasahitza ezabaketa baieztatzeko."
#: bookwyrm/templates/settings/users/delete_user_form.html:17
msgid "Your password:"
@ -5537,7 +5537,7 @@ msgstr "Admin klabea:"
#: bookwyrm/templates/setup/admin.html:32
msgid "An admin key was created when you installed BookWyrm. You can get your admin key by running <code>./bw-dev admin_code</code> from the command line on your server."
msgstr ""
msgstr "BookWyrm instalatu zenean administrazio-gako bat sortu zen. Zure administrazio-gakoa lortzeko, exekutatu dezakezu <code>./bw-dev admin_code</code> zerbitzariko komando-lerrotik."
#: bookwyrm/templates/setup/admin.html:45
msgid "As an admin, you'll be able to configure the instance name and information, and moderate your instance. This means you will have access to private information about your users, and are responsible for responding to reports of bad behavior or spam."
@ -5613,7 +5613,7 @@ msgstr "Zure instantziaren ezarpenak zure zerbitzarian dagoen <code>.env</code>
#: bookwyrm/templates/setup/config.html:148
msgid "View installation instructions"
msgstr ""
msgstr "Ikus instalatzeko jarraibideak"
#: bookwyrm/templates/setup/layout.html:5
msgid "Instance Setup"
@ -5722,7 +5722,7 @@ msgstr "Estalkirik ez"
#: bookwyrm/templates/snippets/book_titleby.html:11
#, python-format
msgid "<a href=\"%(path)s\">%(title)s</a> by"
msgstr ""
msgstr "<a href=\"%(path)s\">%(title)s</a> egilea:"
#: bookwyrm/templates/snippets/boost_button.html:20
#: bookwyrm/templates/snippets/boost_button.html:21
@ -5818,7 +5818,7 @@ msgstr "Ehunekotan:"
#: bookwyrm/templates/snippets/create_status/review.html:24
#, python-format
msgid "Your review of '%(book_title)s'"
msgstr ""
msgstr "'%(book_title)s' liburuari buruzko zure kritika"
#: bookwyrm/templates/snippets/create_status/review.html:39
msgid "Review:"
@ -5885,7 +5885,7 @@ msgstr "Dokumentazioa"
#: bookwyrm/templates/snippets/footer.html:42
#, python-format
msgid "Support %(site_name)s on <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
msgstr ""
msgstr "Sustengatu %(site_name)s hemen: <a href=\"%(support_link)s\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">%(support_title)s</a>"
#: bookwyrm/templates/snippets/footer.html:49
msgid "BookWyrm's source code is freely available. You can contribute or report issues on <a href=\"https://github.com/bookwyrm-social/bookwyrm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a>."
@ -5971,7 +5971,7 @@ msgstr "Arrakasta!"
#: bookwyrm/templates/snippets/goal_progress.html:9
#, python-format
msgid "%(percent)s%% complete!"
msgstr "%(percent)s%% ostatuta!"
msgstr "%(percent)s%% osatuta!"
#: bookwyrm/templates/snippets/goal_progress.html:12
#, python-format
@ -6026,7 +6026,7 @@ msgstr "Aurreratutako eguneratu"
#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:6
#, python-format
msgid "Start \"<em>%(book_title)s</em>\""
msgstr ""
msgstr "Hasi \"<em>%(book_title)s</em>\""
#: bookwyrm/templates/snippets/reading_modals/stop_reading_modal.html:6
#, python-format
@ -6055,7 +6055,7 @@ msgstr "Izena eman"
#: bookwyrm/templates/snippets/report_modal.html:8
#, python-format
msgid "Report @%(username)s's status"
msgstr ""
msgstr "Salatu @%(username)s-(r)en egoera"
#: bookwyrm/templates/snippets/report_modal.html:10
#, python-format
@ -6149,7 +6149,7 @@ msgstr "%(date)s(e)an editatua"
#: bookwyrm/templates/snippets/status/headers/comment.html:8
#, python-format
msgid "commented on <a href=\"%(book_path)s\">%(book)s</a> by <a href=\"%(author_path)s\">%(author_name)s</a>"
msgstr ""
msgstr "iruzkindu zuen <a href=\"%(author_path)s\">%(author_name)s</a>(r)en <a href=\"%(book_path)s\">%(book)s</a>"
#: bookwyrm/templates/snippets/status/headers/comment.html:15
#, python-format
@ -6164,7 +6164,7 @@ msgstr "<a href=\"%(user_path)s\">%(username)s</a>(r)en <a href=\"%(status_path)
#: bookwyrm/templates/snippets/status/headers/quotation.html:8
#, python-format
msgid "quoted <a href=\"%(book_path)s\">%(book)s</a> by <a href=\"%(author_path)s\">%(author_name)s</a>"
msgstr ""
msgstr "aipatu zuen <a href=\"%(author_path)s\">%(author_name)s</a>(r)en <a href=\"%(book_path)s\">%(book)s</a>"
#: bookwyrm/templates/snippets/status/headers/quotation.html:15
#, python-format
@ -6199,7 +6199,7 @@ msgstr "<a href=\"%(book_path)s\">%(book)s</a> irakurtzen hasi da"
#: bookwyrm/templates/snippets/status/headers/review.html:8
#, python-format
msgid "reviewed <a href=\"%(book_path)s\">%(book)s</a> by <a href=\"%(author_path)s\">%(author_name)s</a>"
msgstr ""
msgstr "kritikatu zuen <a href=\"%(author_path)s\">%(author_name)s</a>(r)en <a href=\"%(book_path)s\">%(book)s</a>"
#: bookwyrm/templates/snippets/status/headers/review.html:15
#, python-format
@ -6219,7 +6219,7 @@ msgstr "<a href=\"%(book_path)s\">%(book)s</a> irakurtzeari utzi dio"
#: 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 ""
msgstr "irakurri nahi du <a href=\"%(author_path)s\">%(author_name)s</a>(r)en <a href=\"%(book_path)s\">%(book)s</a>"
#: bookwyrm/templates/snippets/status/headers/to_read.html:17
#, python-format
@ -6335,7 +6335,7 @@ msgstr "Jarraitzeko eskaerak"
#: bookwyrm/templates/user/layout.html:71
#: bookwyrm/templates/user/reviews_comments.html:10
msgid "Reviews and Comments"
msgstr ""
msgstr "Kritikak eta Iruzkinak"
#: bookwyrm/templates/user/lists.html:11
#, python-format
@ -6349,7 +6349,7 @@ msgstr "Sortu zerrenda"
#: bookwyrm/templates/user/relationships/followers.html:12
#, python-format
msgid "%(username)s has no followers"
msgstr ""
msgstr "%(username)s erabiltzaileak ez du jarraitzailerik"
#: bookwyrm/templates/user/relationships/following.html:6
#: bookwyrm/templates/user/relationships/layout.html:15
@ -6363,7 +6363,7 @@ msgstr "%(username)s ez da ari erabiltzailerik jarraitzen"
#: bookwyrm/templates/user/reviews_comments.html:24
msgid "No reviews or comments yet!"
msgstr ""
msgstr "Ez dago oraindik kritikarik ez eta iruzkinik!"
#: bookwyrm/templates/user/user.html:16
msgid "Edit profile"
@ -6381,7 +6381,7 @@ msgstr "Ikusi liburu guztiak"
#: bookwyrm/templates/user/user.html:59
#, python-format
msgid "%(current_year)s Reading Goal"
msgstr ""
msgstr "%(current_year)s Irakurketa xedea"
#: bookwyrm/templates/user/user.html:66
msgid "User Activity"
@ -6433,7 +6433,7 @@ msgstr "Saioa amaitu"
#: bookwyrm/templates/widgets/clearable_file_input_with_warning.html:28
msgid "File exceeds maximum size: 10MB"
msgstr ""
msgstr "Fitxategiak gehienezko tamaina gainditzen du: 10 Mb"
#: bookwyrm/templatetags/utilities.py:39
#, python-format

Binary file not shown.

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-12-20 00:41+0000\n"
"PO-Revision-Date: 2022-12-21 17:53\n"
"PO-Revision-Date: 2023-01-01 16:02\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Finnish\n"
"Language: fi\n"
@ -5350,7 +5350,7 @@ msgstr "Kopioi teematiedosto komentorivillä palvelimen hakemistoon <code>bookwy
#: bookwyrm/templates/settings/themes.html:32
msgid "Run <code>./bw-dev compile_themes</code> and <code>./bw-dev collectstatic</code>."
msgstr ""
msgstr "Suorita <code>./bw-dev compile_themes</code> ja <code>./bw-dev collectstatic</code>."
#: bookwyrm/templates/settings/themes.html:35
msgid "Add the file name using the form below to make it available in the application interface."

Binary file not shown.

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-12-20 00:41+0000\n"
"PO-Revision-Date: 2022-12-21 17:53\n"
"PO-Revision-Date: 2022-12-22 15:25\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: French\n"
"Language: fr\n"
@ -5350,7 +5350,7 @@ msgstr "Copiez le fichier de thème dans le répertoire <code>bookwyrm/static/cs
#: bookwyrm/templates/settings/themes.html:32
msgid "Run <code>./bw-dev compile_themes</code> and <code>./bw-dev collectstatic</code>."
msgstr ""
msgstr "Exécutez <code>./bw-dev compile_themes</code> et <code>./bw-dev collectstatic</code>."
#: bookwyrm/templates/settings/themes.html:35
msgid "Add the file name using the form below to make it available in the application interface."

Binary file not shown.

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-12-20 00:41+0000\n"
"PO-Revision-Date: 2022-12-21 17:53\n"
"PO-Revision-Date: 2022-12-28 13:45\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Galician\n"
"Language: gl\n"
@ -5350,7 +5350,7 @@ msgstr "Copia o ficheiro do decorado no cartafol <code>bookwyrm/static/css/theme
#: bookwyrm/templates/settings/themes.html:32
msgid "Run <code>./bw-dev compile_themes</code> and <code>./bw-dev collectstatic</code>."
msgstr ""
msgstr "Executa <code>./bw-dev compile_themes</code> e <code>./bw-dev collectstatic</code>."
#: bookwyrm/templates/settings/themes.html:35
msgid "Add the file name using the form below to make it available in the application interface."
@ -5941,7 +5941,7 @@ msgstr "Recensión de \"%(book_title)s\": %(review_title)s"
#: bookwyrm/templates/snippets/goal_form.html:4
#, python-format
msgid "Set a goal for how many books you'll finish reading in %(year)s, and track your progress throughout the year."
msgstr "Establece un obxectivo de cantos libros queres ler en %(year)s, e controla a túa progresión durante o ano."
msgstr "Establece un obxectivo de lecturas para %(year)s, e controla a túa progresión durante o ano."
#: bookwyrm/templates/snippets/goal_form.html:16
msgid "Reading goal:"

Binary file not shown.

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-12-20 00:41+0000\n"
"PO-Revision-Date: 2022-12-21 17:54\n"
"PO-Revision-Date: 2023-01-04 17:36\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Polish\n"
"Language: pl\n"
@ -157,7 +157,7 @@ msgstr "Usunięte samodzielnie"
#: bookwyrm/models/base_model.py:20
msgid "Self deactivation"
msgstr ""
msgstr "Automatyczna dezaktywacja"
#: bookwyrm/models/base_model.py:21
msgid "Moderator suspension"
@ -318,15 +318,15 @@ msgstr "Wszystko inne"
#: bookwyrm/settings.py:214
msgid "Home Timeline"
msgstr ""
msgstr "Strona główna"
#: bookwyrm/settings.py:214
msgid "Home"
msgstr ""
msgstr "Start"
#: bookwyrm/settings.py:215
msgid "Books Timeline"
msgstr ""
msgstr "Oś czasu książek"
#: bookwyrm/settings.py:215
#: bookwyrm/templates/guided_tour/user_profile.html:101

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

View file

@ -20,95 +20,95 @@ server {
}
server {
access_log /var/log/nginx/access.log cache_log;
listen [::]:443 ssl http2;
listen 443 ssl http2;
server_name your-domain.com;
client_max_body_size 3M;
if ($host != "your-domain.com") {
return 301 $scheme://your-domain.com$request_uri;
}
# SSL code
ssl_certificate /etc/nginx/ssl/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/live/your-domain.com/privkey.pem;
location ~ /.well-known/acme-challenge {
allow all;
root /var/www/certbot;
}
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
#include /etc/nginx/mime.types;
#default_type application/octet-stream;
gzip on;
gzip_disable "msie6";
proxy_read_timeout 1800s;
chunked_transfer_encoding on;
# store responses to anonymous users for up to 1 minute
proxy_cache bookwyrm_cache;
proxy_cache_valid any 1m;
add_header X-Cache-Status $upstream_cache_status;
# ignore the set cookie header when deciding to
# store a response in the cache
proxy_ignore_headers Cache-Control Set-Cookie Expires;
# PUT requests always bypass the cache
# logged in sessions also do not populate the cache
# to avoid serving personal data to anonymous users
proxy_cache_methods GET HEAD;
proxy_no_cache $cookie_sessionid;
proxy_cache_bypass $cookie_sessionid;
# tell the web container the address of the outside client
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
location ~ ^/(login[^-/]|password-reset|resend-link|2fa-check) {
limit_req zone=loginlimit;
proxy_pass http://web;
}
# do not log periodic polling requests from logged in users
location /api/updates/ {
access_log off;
proxy_pass http://web;
}
location / {
proxy_pass http://web;
}
# directly serve images and static files from the
# bookwyrm filesystem using sendfile.
# make the logs quieter by not reporting these requests
location ~ ^/(images|static)/ {
root /app;
try_files $uri =404;
add_header X-Cache-Status STATIC;
access_log off;
}
# monitor the celery queues with flower, no caching enabled
location /flower/ {
proxy_pass http://flower:8888;
proxy_cache_bypass 1;
}
}
# server {
# access_log /var/log/nginx/access.log cache_log;
#
# listen [::]:443 ssl http2;
# listen 443 ssl http2;
#
# server_name your-domain.com;
#
# client_max_body_size 3M;
#
# if ($host != "your-domain.com") {
# return 301 $scheme://your-domain.com$request_uri;
# }
#
# # SSL code
# ssl_certificate /etc/nginx/ssl/live/your-domain.com/fullchain.pem;
# ssl_certificate_key /etc/nginx/ssl/live/your-domain.com/privkey.pem;
#
# location ~ /.well-known/acme-challenge {
# allow all;
# root /var/www/certbot;
# }
#
# sendfile on;
# tcp_nopush on;
# tcp_nodelay on;
# keepalive_timeout 65;
# types_hash_max_size 2048;
# #include /etc/nginx/mime.types;
# #default_type application/octet-stream;
#
# gzip on;
# gzip_disable "msie6";
#
# proxy_read_timeout 1800s;
# chunked_transfer_encoding on;
#
# # store responses to anonymous users for up to 1 minute
# proxy_cache bookwyrm_cache;
# proxy_cache_valid any 1m;
# add_header X-Cache-Status $upstream_cache_status;
#
# # ignore the set cookie header when deciding to
# # store a response in the cache
# proxy_ignore_headers Cache-Control Set-Cookie Expires;
#
# # PUT requests always bypass the cache
# # logged in sessions also do not populate the cache
# # to avoid serving personal data to anonymous users
# proxy_cache_methods GET HEAD;
# proxy_no_cache $cookie_sessionid;
# proxy_cache_bypass $cookie_sessionid;
#
# # tell the web container the address of the outside client
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Host $host;
# proxy_redirect off;
#
# location ~ ^/(login[^-/]|password-reset|resend-link|2fa-check) {
# limit_req zone=loginlimit;
# proxy_pass http://web;
# }
#
# # do not log periodic polling requests from logged in users
# location /api/updates/ {
# access_log off;
# proxy_pass http://web;
# }
#
# location / {
# proxy_pass http://web;
# }
#
# # directly serve images and static files from the
# # bookwyrm filesystem using sendfile.
# # make the logs quieter by not reporting these requests
# location ~ ^/(images|static)/ {
# root /app;
# try_files $uri =404;
# add_header X-Cache-Status STATIC;
# access_log off;
# }
#
# # monitor the celery queues with flower, no caching enabled
# location /flower/ {
# proxy_pass http://flower:8888;
# proxy_cache_bypass 1;
# }
# }
# Reverse-Proxy server
# server {