Merge branch 'bookwyrm-social:main' into group-list-button

This commit is contained in:
Hugh Rundle 2022-01-02 07:50:56 +11:00 committed by GitHub
commit 8e17e20802
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
45 changed files with 946 additions and 690 deletions

View file

@ -30,6 +30,9 @@ button {
/* Corrects inability to style clickable `input` types in iOS */ /* Corrects inability to style clickable `input` types in iOS */
-webkit-appearance: none; -webkit-appearance: none;
/* Generalizes pointer cursor */
cursor: pointer;
} }
button::-moz-focus-inner { button::-moz-focus-inner {
@ -64,6 +67,14 @@ button::-moz-focus-inner {
overflow-x: auto; overflow-x: auto;
} }
.modal-card {
pointer-events: none;
}
.modal-card > * {
pointer-events: all;
}
/* stylelint-disable no-descending-specificity */ /* stylelint-disable no-descending-specificity */
.modal-card:focus { .modal-card:focus {
outline-style: auto; outline-style: auto;
@ -148,6 +159,30 @@ button::-moz-focus-inner {
display: inline !important; display: inline !important;
} }
button .button-invisible-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
padding: 1rem;
box-sizing: border-box;
display: flex;
align-items: center;
flex-direction: column;
justify-content: center;
background: rgba(0, 0, 0, 0.66);
color: white;
opacity: 0;
transition: opacity 0.2s ease;
}
button:hover .button-invisible-overlay,
button:active .button-invisible-overlay,
button:focus-visible .button-invisible-overlay {
opacity: 1;
}
/** File input styles /** File input styles
******************************************************************************/ ******************************************************************************/
@ -429,6 +464,8 @@ details.dropdown .dropdown-menu a:focus-visible {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
flex-direction: column;
gap: 1em;
white-space: initial; white-space: initial;
text-align: center; text-align: center;
} }
@ -695,11 +732,7 @@ ol.ordered-list li::before {
@media only screen and (min-width: 769px) { @media only screen and (min-width: 769px) {
.books-grid { .books-grid {
gap: 1.5rem; gap: 1.5rem;
grid-template-columns: repeat(auto-fit, minmax(10em, 1fr)); grid-template-columns: repeat(auto-fill, minmax(8em, 1fr));
}
.books-grid > .is-big {
padding: 1.5rem 1.5rem 0;
} }
} }

View file

@ -1,21 +0,0 @@
/* exported BlockHref */
let BlockHref = new (class {
constructor() {
document
.querySelectorAll("[data-href]")
.forEach((t) => t.addEventListener("click", this.followLink.bind(this)));
}
/**
* Follow a fake link
*
* @param {Event} event
* @return {undefined}
*/
followLink(event) {
const url = event.currentTarget.dataset.href;
window.location.href = url;
}
})();

View file

@ -249,7 +249,7 @@
<div class="column is-10 is-offset-1"> <div class="column is-10 is-offset-1">
<div class="books-grid"> <div class="books-grid">
{% for book in books %} {% for book in books %}
{% if book.id in best_ratings_books_ids %} {% if books_total > 12 and book.id in best_ratings_books_ids %}
<a href="{{ book.local_path }}" class="has-text-centered is-big has-text-success-dark"> <a href="{{ book.local_path }}" class="has-text-centered is-big has-text-success-dark">
{% include 'snippets/book_cover.html' with book=book cover_class='is-w-auto' size='xxlarge' %} {% include 'snippets/book_cover.html' with book=book cover_class='is-w-auto' size='xxlarge' %}
<span class="book-title is-serif is-size-5"> <span class="book-title is-serif is-size-5">

View file

@ -61,24 +61,48 @@
<div class="columns"> <div class="columns">
<div class="column is-one-fifth"> <div class="column is-one-fifth">
{% include 'snippets/book_cover.html' with size='xxlarge' size_mobile='medium' book=book cover_class='is-h-m-mobile' %} {% if not book.cover %}
{% if user_authenticated %}
<button type="button" data-controls="add_cover_{{ book.id }}" data-focus-target="modal_title_add_cover_{{ book.id }}" aria-pressed="false" class="cover-container no-cover is-h-m-mobile">
<img
class="book-cover"
src="{% static "images/no_cover.jpg" %}"
alt=""
aria-hidden="true"
>
<span class="cover-caption">
<span>{{ book.alt_text }}</span>
<span>{% trans "Click to add cover" %}</span>
</span>
<span class="button-invisible-overlay has-text-centered">
{% trans "Click to add cover" %}
</span>
</button>
{% include 'book/cover_add_modal.html' with book=book controls_text="add_cover" controls_uid=book.id %}
{% if request.GET.cover_error %}
<p class="help is-danger">{% trans "Failed to load cover" %}</p>
{% endif %}
{% else %}
{% include 'snippets/book_cover.html' with book=book cover_class='is-h-m-mobile' %}
{% endif %}
{% endif %}
{% if book.cover %}
<button type="button" data-modal-open="cover_show_modal" class="cover-container is-h-m-mobile is-relative">
{% include 'snippets/book_cover.html' with size='xxlarge' size_mobile='medium' book=book cover_class='is-h-m-mobile' %}
<span class="button-invisible-overlay has-text-centered">
{% trans "Click to enlarge" %}
</span>
</button>
{% include 'book/cover_show_modal.html' with book=book id="cover_show_modal" %}
{% endif %}
{% include 'snippets/rate_action.html' with user=request.user book=book %} {% include 'snippets/rate_action.html' with user=request.user book=book %}
<div class="mb-3"> <div class="mb-3">
{% include 'snippets/shelve_button/shelve_button.html' %} {% include 'snippets/shelve_button/shelve_button.html' %}
</div> </div>
{% if user_authenticated and not book.cover %}
<div class="block">
{% trans "Add cover" as button_text %}
{% include 'snippets/toggle/toggle_button.html' with text=button_text controls_text="add_cover" controls_uid=book.id focus="modal_title_add_cover" class="is-small" %}
{% include 'book/cover_modal.html' with book=book controls_text="add_cover" controls_uid=book.id %}
{% if request.GET.cover_error %}
<p class="help is-danger">{% trans "Failed to load cover" %}</p>
{% endif %}
</div>
{% endif %}
<section class="is-clipped"> <section class="is-clipped">
{% with book=book %} {% with book=book %}
<div class="content"> <div class="content">

View file

@ -0,0 +1,12 @@
{% load i18n %}
{% load static %}
<div class="modal" id="{{ id }}">
<div class="modal-background" data-modal-close></div><!-- modal background -->
<div class="modal-card is-align-items-center" role="dialog" aria-modal="true" tabindex="-1" aria-label="{% trans 'Book cover preview' %}">
<div class="cover-container">
<img class="book-cover" src="{% get_media_prefix %}{{ book.cover }}" itemprop="thumbnailUrl" alt="">
</div>
</div>
<button type="button" data-modal-close class="modal-close is-large" aria-label="{% trans 'Close' %}"></button>
</div>

View file

@ -0,0 +1,31 @@
{% load i18n %}
<div class="modal" id="{{ id }}">
<div class="modal-background" data-modal-close></div>
<div class="modal-card is-thin" role="dialog" aria-modal="true" tabindex="-1">
<header class="modal-card-head">
<h2 class="modal-card-title mb-0">
{% block modal-title %}{% endblock %}
</h2>
<button
type="button"
class="delete"
aria-label="{% trans 'Close' %}"
data-modal-close
></button>
</header>
<section class="modal-card-body">
{% block modal-body %}{% endblock %}
</section>
<footer class="modal-card-foot">
{% block modal-footer %}{% endblock %}
</footer>
</div>
<button
type="button"
class="modal-close is-large"
aria-label="{% trans 'Close' %}"
data-modal-close
></button>
</div>

View file

@ -1,29 +1,31 @@
{% extends 'components/card.html' %}
{% load i18n %} {% load i18n %}
{% block card-header %} <article class="card">
<h3 class="card-header-title has-background-success-dark has-text-white"> <header class="card-header has-background-success-dark">
<span class="icon is-size-3 mr-2" aria-hidden="true">📚</span> <h3 class="card-header-title has-text-white">
<span class="icon is-size-3 mr-2" aria-hidden="true"></span> <span class="icon is-size-3 mr-2" aria-hidden="true">📚</span>
{% blocktrans %}{{ year }} in the books{% endblocktrans %} <span class="icon is-size-3 mr-2" aria-hidden="true"></span>
</h3> {% blocktrans %}{{ year }} in the books{% endblocktrans %}
</h3>
<div class="card-header-icon has-background-success-dark has-text-white"> <div class="card-header-icon has-text-white">
{% trans "Dismiss message" as button_text %} {% trans "Dismiss message" as button_text %}
<button class="delete set-display" type="button" data-id="hide_annual_summary_{{ year }}" data-value="true"> <button class="delete set-display" type="button" data-id="hide_annual_summary_{{ year }}" data-value="true">
<span>{% trans "Dismiss message" %}</span> <span>{% trans "Dismiss message" %}</span>
</button> </button>
</div> </div>
{% endblock %} </header>
{% block card-content %} <section class="card-content">
<p class="mb-3"> <p class="mb-3">
{% blocktrans %}The end of the year is the best moment to take stock of all the books read during the last 12 months. How many pages have you read? Which book is your best-rated of the year? We compiled these stats, and more!{% endblocktrans %} {% blocktrans %}The end of the year is the best moment to take stock of all the books read during the last 12 months. How many pages have you read? Which book is your best-rated of the year? We compiled these stats, and more!{% endblocktrans %}
</p> </p>
<p> <p>
<a href="{% url 'annual-summary' request.user.localname year %}" class="button is-success has-background-success-dark"> <a href="{% url 'annual-summary' request.user.localname year %}" class="button is-success has-background-success-dark">
{% blocktrans %}Discover your stats for {{ year }}!{% endblocktrans %} {% blocktrans %}Discover your stats for {{ year }}!{% endblocktrans %}
</a> </a>
</p> </p>
{% endblock %} </section>
</article>

View file

@ -1,72 +1,74 @@
{% extends 'lists/layout.html' %} {% extends 'lists/layout.html' %}
{% load i18n %} {% load i18n %}
{% block breadcrumbs %}
<nav class="breadcrumb subtitle" aria-label="breadcrumbs">
<ul>
<li><a href="{% url 'lists' %}">{% trans "Lists" %}</a></li>
<li><a href="{% url 'list' list.id %}">{{ list.name|truncatechars:30 }}</a></li>
<li class="is-active">
<a href="#" aria-current="page">
{% trans "Curate" %}
</a>
</li>
</ul>
</nav>
{% endblock %}
{% block panel %} {% block panel %}
<section class="block"> <section class="block">
<div class="columns is-mobile is-multiline is-align-items-baseline"> <h2 class="title is-4">{% trans "Pending Books" %}</h2>
<div class="column is-narrow">
<h2 class="title is-4">{% trans "Pending Books" %}</h2>
</div>
<p class="column is-narrow"><a href="{% url 'list' list.id %}">{% trans "Go to list" %}</a></p>
</div>
{% if not pending.exists %} {% if not pending.exists %}
<p>{% trans "You're all set!" %}</p> <p><em>{% trans "You're all set!" %}</em></p>
{% else %} {% else %}
<dl> <div class="columns">
{% for item in pending %} {% for item in pending %}
{% with book=item.book %} {% with book=item.book %}
<div <div class="column">
class=" <div class="columns is-mobile">
columns is-gapless <a
is-vcentered is-justify-content-space-between class="column is-cover"
mb-6 href="{{ book.local_path }}"
" aria-hidden="true"
> >
<dt class="column mr-auto"> {% include 'snippets/book_cover.html' with cover_class='is-w-xs-mobile is-w-s is-h-xs-mobile is-h-s' size_mobile='xsmall' size='small' %}
<div class="columns is-mobile is-gapless is-vcentered"> </a>
<a
class="column is-cover" <div class="column ml-3">
href="{{ book.local_path }}" {% include 'snippets/book_titleby.html' %}
aria-hidden="true"
> <p>
{% include 'snippets/book_cover.html' with cover_class='is-w-xs-mobile is-w-s is-h-xs-mobile is-h-s' size_mobile='xsmall' size='small' %} {% trans "Suggested by" %}
<a href="{{ item.user.local_path }}">
{{ item.user.display_name }}
</a> </a>
</p>
<div class="column ml-3"> </div>
{% include 'snippets/book_titleby.html' %}
</div>
</div>
</dt>
<dd class="column is-4-tablet mx-3-tablet my-3-mobile">
{% trans "Suggested by" %}
<a href="{{ item.user.local_path }}">
{{ item.user.display_name }}
</a>
</dd>
<dd class="column is-narrow field has-addons">
<form class="control" method="POST" action="{% url 'list-curate' list.id %}">
{% csrf_token %}
<input type="hidden" name="item" value="{{ item.id }}">
<input type="hidden" name="approved" value="true">
<button type="submit" class="button">{% trans "Approve" %}</button>
</form>
<form class="control" method="POST" action="{% url 'list-curate' list.id %}">
{% csrf_token %}
<input type="hidden" name="item" value="{{ item.id }}">
<input type="hidden" name="approved" value="false">
<button type="submit" class="button is-danger is-light">{% trans "Discard" %}</button>
</form>
</dd>
</div> </div>
{% endwith %} </div>
<div class="column is-narrow">
<div class="field has-addons">
<form class="control" method="POST" action="{% url 'list-curate' list.id %}">
{% csrf_token %}
<input type="hidden" name="item" value="{{ item.id }}">
<input type="hidden" name="approved" value="true">
<button type="submit" class="button">{% trans "Approve" %}</button>
</form>
<form class="control" method="POST" action="{% url 'list-curate' list.id %}">
{% csrf_token %}
<input type="hidden" name="item" value="{{ item.id }}">
<input type="hidden" name="approved" value="false">
<button type="submit" class="button is-danger is-light">{% trans "Discard" %}</button>
</form>
</div>
</div>
{% endwith %}
{% endfor %} {% endfor %}
</dl> </div>
{% endif %} {% endif %}
</section> </section>
{% endblock %} {% endblock %}

View file

@ -1,4 +1,4 @@
{% extends 'components/modal.html' %} {% extends 'components/new_modal.html' %}
{% load i18n %} {% load i18n %}
{% block modal-title %}{% trans "Delete this list?" %}{% endblock %} {% block modal-title %}{% trans "Delete this list?" %}{% endblock %}
@ -14,8 +14,9 @@
<button class="button is-danger" type="submit"> <button class="button is-danger" type="submit">
{% trans "Delete" %} {% trans "Delete" %}
</button> </button>
{% trans "Cancel" as button_text %} <button type="button" class="button" data-modal-close>
{% include 'snippets/toggle/toggle_button.html' with text=button_text controls_text="delete_list" controls_uid=list.id %} {% trans "Cancel" %}
</button>
</form> </form>
{% endblock %} {% endblock %}

View file

@ -9,5 +9,5 @@
<form name="edit-list" method="post" action="{% url 'list' list.id %}"> <form name="edit-list" method="post" action="{% url 'list' list.id %}">
{% include 'lists/form.html' %} {% include 'lists/form.html' %}
</form> </form>
{% include "lists/delete_list_modal.html" with controls_text="delete_list" controls_uid=list.id %} {% include "lists/delete_list_modal.html" with id="delete_list" %}
{% endblock %} {% endblock %}

View file

@ -114,21 +114,20 @@
</fieldset> </fieldset>
</div> </div>
</div> </div>
<div class="columns is-mobile"> <div class="is-flex">
<div class="column">
<div class="field has-addons">
<div class="control">
{% include 'snippets/privacy_select.html' with current=list.privacy %}
</div>
<div class="control">
<button type="submit" class="button is-primary">{% trans "Save" %}</button>
</div>
</div>
</div>
{% if list.id %} {% if list.id %}
<div class="column is-narrow"> <div class="is-flex-grow-1">
{% trans "Delete list" as button_text %} <button type="button" data-modal-open="delete_list" class="button is-danger">
{% include 'snippets/toggle/toggle_button.html' with class="is-danger" text=button_text icon_with_text="x" controls_text="delete_list" controls_uid=list.id focus="modal_title_delete_list" %} {% trans "Delete list" %}
</button>
</div> </div>
{% endif %} {% endif %}
<div class="field has-addons">
<div class="control">
{% include 'snippets/privacy_select.html' with current=list.privacy %}
</div>
<div class="control">
<button type="submit" class="button is-primary">{% trans "Save" %}</button>
</div>
</div>
</div> </div>

View file

@ -11,6 +11,7 @@
{% include 'lists/created_text.html' with list=list %} {% include 'lists/created_text.html' with list=list %}
</p> </p>
</div> </div>
<div class="column is-narrow is-flex"> <div class="column is-narrow is-flex">
{% if request.user == list.user %} {% if request.user == list.user %}
{% trans "Edit List" as button_text %} {% trans "Edit List" as button_text %}
@ -20,6 +21,8 @@
</div> </div>
</header> </header>
{% block breadcrumbs %}{% endblock %}
<div class="block content"> <div class="block content">
{% include 'snippets/trimmed_text.html' with full=list.description %} {% include 'snippets/trimmed_text.html' with full=list.description %}
</div> </div>

View file

@ -4,6 +4,19 @@
{% load bookwyrm_group_tags %} {% load bookwyrm_group_tags %}
{% load markdown %} {% load markdown %}
{% block breadcrumbs %}
<nav class="breadcrumb subtitle" aria-label="breadcrumbs">
<ul>
<li><a href="{% url 'lists' %}">{% trans "Lists" %}</a></li>
<li class="is-active">
<a href="#" aria-current="page">
{{ list.name|truncatechars:30 }}
</a>
</li>
</ul>
</nav>
{% endblock %}
{% block panel %} {% block panel %}
{% if request.user == list.user and pending_count %} {% if request.user == list.user and pending_count %}
<div class="block content"> <div class="block content">

View file

@ -1,12 +1,15 @@
{% load bookwyrm_tags %} {% load bookwyrm_tags %}
{% related_status notification as related_status %} {% related_status notification as related_status %}
<div class="notification is-clickable {% if notification.id in unread %} is-primary{% endif %}" data-href="{% block primary_link %}{% endblock %}"> <div class="box is-shadowless has-background-white-ter {% if notification.id in unread %} is-primary{% endif %}">
<div class="columns is-mobile"> <div class="columns is-mobile">
<div class="column is-narrow is-size-3 {% if notification.id in unread%}has-text-white{% else %}has-text-grey{% endif %}"> <div class="column is-narrow is-size-3 {% if notification.id in unread%}has-text-white{% else %}has-text-grey{% endif %}">
{% block icon %}{% endblock %} <a class="has-text-dark" href="{% block primary_link %}{% endblock %}">
{% block icon %}{% endblock %}
</a>
</div> </div>
<div class="column is-clipped"> <div class="column is-clipped">
<div class="block"> <div class="block content">
<p> <p>
{% if notification.related_user %} {% if notification.related_user %}
<a href="{{ notification.related_user.local_path }}">{% include 'snippets/avatar.html' with user=notification.related_user %} <a href="{{ notification.related_user.local_path }}">{% include 'snippets/avatar.html' with user=notification.related_user %}
@ -15,6 +18,7 @@
{% block description %}{% endblock %} {% block description %}{% endblock %}
</p> </p>
</div> </div>
{% if related_status %} {% if related_status %}
<div class="block"> <div class="block">
{% block preview %}{% endblock %} {% block preview %}{% endblock %}

View file

@ -46,7 +46,3 @@
{% endif %} {% endif %}
</div> </div>
{% endblock %} {% endblock %}
{% block scripts %}
<script src="{% static "js/block_href.js" %}?v={{ js_cache }}"></script>
{% endblock %}

View file

@ -1,11 +1,9 @@
{% if status.content == 'wants to read' %} {% if status.content == 'wants to read' %}
{% include 'snippets/status/headers/to_read.html' with book=status.mention_books.first %} {% include 'snippets/status/headers/to_read.html' with book=status.mention_books.first %}
{% endif %} {% elif status.content == 'finished reading' %}
{% if status.content == 'finished reading' %}
{% include 'snippets/status/headers/read.html' with book=status.mention_books.first %} {% include 'snippets/status/headers/read.html' with book=status.mention_books.first %}
{% endif %} {% elif status.content == 'started reading' %}
{% if status.content == 'started reading' %}
{% include 'snippets/status/headers/reading.html' with book=status.mention_books.first %} {% include 'snippets/status/headers/reading.html' with book=status.mention_books.first %}
{% else %}
{{ status.content }}
{% endif %} {% endif %}

View file

@ -1,5 +0,0 @@
{% spaceless %}
{% load i18n %}{% load humanize %}
{{ status.content }}
{% endspaceless %}

View file

@ -48,7 +48,9 @@ class StorygraphImport(TestCase):
self.local_user, self.csv, False, "public" self.local_user, self.csv, False, "public"
) )
import_items = models.ImportItem.objects.filter(job=import_job).all() import_items = (
models.ImportItem.objects.filter(job=import_job).order_by("index").all()
)
self.assertEqual(len(import_items), 2) self.assertEqual(len(import_items), 2)
self.assertEqual(import_items[0].index, 0) self.assertEqual(import_items[0].index, 0)
self.assertEqual(import_items[0].normalized_data["title"], "Always Coming Home") self.assertEqual(import_items[0].normalized_data["title"], "Always Coming Home")

View file

@ -0,0 +1 @@
from . import *

View file

@ -0,0 +1,101 @@
""" style fixes and lookups for templates """
from unittest.mock import patch
from django.test import TestCase
from bookwyrm import models
from bookwyrm.templatetags import bookwyrm_tags
@patch("bookwyrm.activitystreams.add_status_task.delay")
@patch("bookwyrm.activitystreams.remove_status_task.delay")
class BookWyrmTags(TestCase):
"""lotta different things here"""
def setUp(self):
"""create some filler objects"""
with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch(
"bookwyrm.activitystreams.populate_stream_task.delay"
):
self.user = models.User.objects.create_user(
"mouse@example.com",
"mouse@mouse.mouse",
"mouseword",
local=True,
localname="mouse",
)
with patch("bookwyrm.models.user.set_remote_server.delay"):
self.remote_user = models.User.objects.create_user(
"rat",
"rat@rat.rat",
"ratword",
remote_id="http://example.com/rat",
local=False,
)
self.book = models.Edition.objects.create(title="Test Book")
def test_get_user_rating(self, *_):
"""get a user's most recent rating of a book"""
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
models.Review.objects.create(user=self.user, book=self.book, rating=3)
self.assertEqual(bookwyrm_tags.get_user_rating(self.book, self.user), 3)
def test_get_user_rating_doesnt_exist(self, *_):
"""there is no rating available"""
self.assertEqual(bookwyrm_tags.get_user_rating(self.book, self.user), 0)
def test_get_book_description(self, *_):
"""grab it from the edition or the parent"""
work = models.Work.objects.create(title="Test Work")
self.book.parent_work = work
self.book.save()
self.assertIsNone(bookwyrm_tags.get_book_description(self.book))
work.description = "hi"
work.save()
self.assertEqual(bookwyrm_tags.get_book_description(self.book), "hi")
self.book.description = "hello"
self.book.save()
self.assertEqual(bookwyrm_tags.get_book_description(self.book), "hello")
def test_get_next_shelf(self, *_):
"""self progress helper"""
self.assertEqual(bookwyrm_tags.get_next_shelf("to-read"), "reading")
self.assertEqual(bookwyrm_tags.get_next_shelf("reading"), "read")
self.assertEqual(bookwyrm_tags.get_next_shelf("read"), "complete")
self.assertEqual(bookwyrm_tags.get_next_shelf("blooooga"), "to-read")
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async")
def test_load_subclass(self, *_):
"""get a status' real type"""
review = models.Review.objects.create(user=self.user, book=self.book, rating=3)
status = models.Status.objects.get(id=review.id)
self.assertIsInstance(status, models.Status)
self.assertIsInstance(bookwyrm_tags.load_subclass(status), models.Review)
quote = models.Quotation.objects.create(
user=self.user, book=self.book, content="hi"
)
status = models.Status.objects.get(id=quote.id)
self.assertIsInstance(status, models.Status)
self.assertIsInstance(bookwyrm_tags.load_subclass(status), models.Quotation)
comment = models.Comment.objects.create(
user=self.user, book=self.book, content="hi"
)
status = models.Status.objects.get(id=comment.id)
self.assertIsInstance(status, models.Status)
self.assertIsInstance(bookwyrm_tags.load_subclass(status), models.Comment)
def test_related_status(self, *_):
"""gets the subclass model for a notification status"""
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
status = models.Status.objects.create(content="hi", user=self.user)
notification = models.Notification.objects.create(
user=self.user, notification_type="MENTION", related_status=status
)
result = bookwyrm_tags.related_status(notification)
self.assertIsInstance(result, models.Status)

View file

@ -0,0 +1,53 @@
""" style fixes and lookups for templates """
from unittest.mock import patch
from django.test import TestCase
from bookwyrm import models
from bookwyrm.templatetags import interaction
@patch("bookwyrm.activitystreams.add_status_task.delay")
@patch("bookwyrm.activitystreams.remove_status_task.delay")
class InteractionTags(TestCase):
"""lotta different things here"""
def setUp(self):
"""create some filler objects"""
with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch(
"bookwyrm.activitystreams.populate_stream_task.delay"
):
self.user = models.User.objects.create_user(
"mouse@example.com",
"mouse@mouse.mouse",
"mouseword",
local=True,
localname="mouse",
)
with patch("bookwyrm.models.user.set_remote_server.delay"):
self.remote_user = models.User.objects.create_user(
"rat",
"rat@rat.rat",
"ratword",
remote_id="http://example.com/rat",
local=False,
)
self.book = models.Edition.objects.create(title="Test Book")
def test_get_user_liked(self, *_):
"""did a user like a status"""
status = models.Review.objects.create(user=self.remote_user, book=self.book)
self.assertFalse(interaction.get_user_liked(self.user, status))
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
models.Favorite.objects.create(user=self.user, status=status)
self.assertTrue(interaction.get_user_liked(self.user, status))
def test_get_user_boosted(self, *_):
"""did a user boost a status"""
status = models.Review.objects.create(user=self.remote_user, book=self.book)
self.assertFalse(interaction.get_user_boosted(self.user, status))
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
models.Boost.objects.create(user=self.user, boosted_status=status)
self.assertTrue(interaction.get_user_boosted(self.user, status))

View file

@ -0,0 +1,15 @@
""" style fixes and lookups for templates """
from django.test import TestCase
from bookwyrm.templatetags import markdown
class MarkdownTags(TestCase):
"""lotta different things here"""
def test_get_markdown(self):
"""mardown format data"""
result = markdown.get_markdown("_hi_")
self.assertEqual(result, "<p><em>hi</em></p>")
result = markdown.get_markdown("<marquee>_hi_</marquee>")
self.assertEqual(result, "<p><em>hi</em></p>")

View file

@ -0,0 +1,90 @@
""" style fixes and lookups for templates """
from unittest.mock import patch
from django.test import TestCase
from django.utils import timezone
from bookwyrm import models
from bookwyrm.templatetags import status_display
@patch("bookwyrm.activitystreams.add_status_task.delay")
@patch("bookwyrm.activitystreams.remove_status_task.delay")
class StatusDisplayTags(TestCase):
"""lotta different things here"""
def setUp(self):
"""create some filler objects"""
with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch(
"bookwyrm.activitystreams.populate_stream_task.delay"
):
self.user = models.User.objects.create_user(
"mouse@example.com",
"mouse@mouse.mouse",
"mouseword",
local=True,
localname="mouse",
)
with patch("bookwyrm.models.user.set_remote_server.delay"):
self.remote_user = models.User.objects.create_user(
"rat",
"rat@rat.rat",
"ratword",
remote_id="http://example.com/rat",
local=False,
)
self.book = models.Edition.objects.create(title="Test Book")
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async")
def test_get_replies(self, *_):
"""direct replies to a status"""
parent = models.Review.objects.create(
user=self.user, book=self.book, content="hi"
)
first_child = models.Status.objects.create(
reply_parent=parent, user=self.user, content="hi"
)
second_child = models.Status.objects.create(
reply_parent=parent, user=self.user, content="hi"
)
third_child = models.Status.objects.create(
reply_parent=parent,
user=self.user,
deleted=True,
deleted_date=timezone.now(),
)
replies = status_display.get_replies(parent)
self.assertEqual(len(replies), 2)
self.assertTrue(first_child in replies)
self.assertTrue(second_child in replies)
self.assertFalse(third_child in replies)
def test_get_parent(self, *_):
"""get the reply parent of a status"""
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
parent = models.Review.objects.create(
user=self.user, book=self.book, content="hi"
)
child = models.Status.objects.create(
reply_parent=parent, user=self.user, content="hi"
)
result = status_display.get_parent(child)
self.assertEqual(result, parent)
self.assertIsInstance(result, models.Review)
def test_get_boosted(self, *_):
"""load a boosted status"""
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
status = models.Review.objects.create(user=self.remote_user, book=self.book)
boost = models.Boost.objects.create(user=self.user, boosted_status=status)
boosted = status_display.get_boosted(boost)
self.assertIsInstance(boosted, models.Review)
self.assertEqual(boosted, status)
def test_get_mentions(self, *_):
"""list of people mentioned"""
status = models.Status.objects.create(content="hi", user=self.remote_user)
result = status_display.get_mentions(status, self.user)
self.assertEqual(result, "@rat@example.com ")

View file

@ -0,0 +1,52 @@
""" style fixes and lookups for templates """
import re
from unittest.mock import patch
from django.test import TestCase
from bookwyrm import models
from bookwyrm.templatetags import utilities
@patch("bookwyrm.activitystreams.add_status_task.delay")
@patch("bookwyrm.activitystreams.remove_status_task.delay")
class UtilitiesTags(TestCase):
"""lotta different things here"""
def setUp(self):
"""create some filler objects"""
with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch(
"bookwyrm.activitystreams.populate_stream_task.delay"
):
self.user = models.User.objects.create_user(
"mouse@example.com",
"mouse@mouse.mouse",
"mouseword",
local=True,
localname="mouse",
)
with patch("bookwyrm.models.user.set_remote_server.delay"):
self.remote_user = models.User.objects.create_user(
"rat",
"rat@rat.rat",
"ratword",
remote_id="http://example.com/rat",
local=False,
)
self.book = models.Edition.objects.create(title="Test Book")
def test_get_user_identifer_local(self, *_):
"""fall back to the simplest uid available"""
self.assertNotEqual(self.user.username, self.user.localname)
self.assertEqual(utilities.get_user_identifier(self.user), "mouse")
def test_get_user_identifer_remote(self, *_):
"""for a remote user, should be their full username"""
self.assertEqual(
utilities.get_user_identifier(self.remote_user), "rat@example.com"
)
def test_get_uuid(self, *_):
"""uuid functionality"""
uuid = utilities.get_uuid("hi")
self.assertTrue(re.match(r"hi[A-Za-z0-9\-]", uuid))

View file

@ -1,183 +0,0 @@
""" style fixes and lookups for templates """
import re
from unittest.mock import patch
from django.test import TestCase
from django.utils import timezone
from bookwyrm import models
from bookwyrm.templatetags import (
bookwyrm_tags,
interaction,
markdown,
status_display,
utilities,
)
@patch("bookwyrm.activitystreams.add_status_task.delay")
@patch("bookwyrm.activitystreams.remove_status_task.delay")
class TemplateTags(TestCase):
"""lotta different things here"""
def setUp(self):
"""create some filler objects"""
with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch(
"bookwyrm.activitystreams.populate_stream_task.delay"
):
self.user = models.User.objects.create_user(
"mouse@example.com",
"mouse@mouse.mouse",
"mouseword",
local=True,
localname="mouse",
)
with patch("bookwyrm.models.user.set_remote_server.delay"):
self.remote_user = models.User.objects.create_user(
"rat",
"rat@rat.rat",
"ratword",
remote_id="http://example.com/rat",
local=False,
)
self.book = models.Edition.objects.create(title="Test Book")
def test_get_user_rating(self, *_):
"""get a user's most recent rating of a book"""
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
models.Review.objects.create(user=self.user, book=self.book, rating=3)
self.assertEqual(bookwyrm_tags.get_user_rating(self.book, self.user), 3)
def test_get_user_rating_doesnt_exist(self, *_):
"""there is no rating available"""
self.assertEqual(bookwyrm_tags.get_user_rating(self.book, self.user), 0)
def test_get_user_identifer_local(self, *_):
"""fall back to the simplest uid available"""
self.assertNotEqual(self.user.username, self.user.localname)
self.assertEqual(utilities.get_user_identifier(self.user), "mouse")
def test_get_user_identifer_remote(self, *_):
"""for a remote user, should be their full username"""
self.assertEqual(
utilities.get_user_identifier(self.remote_user), "rat@example.com"
)
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async")
def test_get_replies(self, *_):
"""direct replies to a status"""
parent = models.Review.objects.create(
user=self.user, book=self.book, content="hi"
)
first_child = models.Status.objects.create(
reply_parent=parent, user=self.user, content="hi"
)
second_child = models.Status.objects.create(
reply_parent=parent, user=self.user, content="hi"
)
third_child = models.Status.objects.create(
reply_parent=parent,
user=self.user,
deleted=True,
deleted_date=timezone.now(),
)
replies = status_display.get_replies(parent)
self.assertEqual(len(replies), 2)
self.assertTrue(first_child in replies)
self.assertTrue(second_child in replies)
self.assertFalse(third_child in replies)
def test_get_parent(self, *_):
"""get the reply parent of a status"""
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
parent = models.Review.objects.create(
user=self.user, book=self.book, content="hi"
)
child = models.Status.objects.create(
reply_parent=parent, user=self.user, content="hi"
)
result = status_display.get_parent(child)
self.assertEqual(result, parent)
self.assertIsInstance(result, models.Review)
def test_get_user_liked(self, *_):
"""did a user like a status"""
status = models.Review.objects.create(user=self.remote_user, book=self.book)
self.assertFalse(interaction.get_user_liked(self.user, status))
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
models.Favorite.objects.create(user=self.user, status=status)
self.assertTrue(interaction.get_user_liked(self.user, status))
def test_get_user_boosted(self, *_):
"""did a user boost a status"""
status = models.Review.objects.create(user=self.remote_user, book=self.book)
self.assertFalse(interaction.get_user_boosted(self.user, status))
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
models.Boost.objects.create(user=self.user, boosted_status=status)
self.assertTrue(interaction.get_user_boosted(self.user, status))
def test_get_boosted(self, *_):
"""load a boosted status"""
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
status = models.Review.objects.create(user=self.remote_user, book=self.book)
boost = models.Boost.objects.create(user=self.user, boosted_status=status)
boosted = status_display.get_boosted(boost)
self.assertIsInstance(boosted, models.Review)
self.assertEqual(boosted, status)
def test_get_book_description(self, *_):
"""grab it from the edition or the parent"""
work = models.Work.objects.create(title="Test Work")
self.book.parent_work = work
self.book.save()
self.assertIsNone(bookwyrm_tags.get_book_description(self.book))
work.description = "hi"
work.save()
self.assertEqual(bookwyrm_tags.get_book_description(self.book), "hi")
self.book.description = "hello"
self.book.save()
self.assertEqual(bookwyrm_tags.get_book_description(self.book), "hello")
def test_get_uuid(self, *_):
"""uuid functionality"""
uuid = utilities.get_uuid("hi")
self.assertTrue(re.match(r"hi[A-Za-z0-9\-]", uuid))
def test_get_markdown(self, *_):
"""mardown format data"""
result = markdown.get_markdown("_hi_")
self.assertEqual(result, "<p><em>hi</em></p>")
result = markdown.get_markdown("<marquee>_hi_</marquee>")
self.assertEqual(result, "<p><em>hi</em></p>")
def test_get_mentions(self, *_):
"""list of people mentioned"""
status = models.Status.objects.create(content="hi", user=self.remote_user)
result = status_display.get_mentions(status, self.user)
self.assertEqual(result, "@rat@example.com ")
def test_related_status(self, *_):
"""gets the subclass model for a notification status"""
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
status = models.Status.objects.create(content="hi", user=self.user)
notification = models.Notification.objects.create(
user=self.user, notification_type="MENTION", related_status=status
)
result = bookwyrm_tags.related_status(notification)
self.assertIsInstance(result, models.Status)
def test_get_next_shelf(self, *_):
"""self progress helper"""
self.assertEqual(bookwyrm_tags.get_next_shelf("to-read"), "reading")
self.assertEqual(bookwyrm_tags.get_next_shelf("reading"), "read")
self.assertEqual(bookwyrm_tags.get_next_shelf("read"), "complete")
self.assertEqual(bookwyrm_tags.get_next_shelf("blooooga"), "to-read")

View file

@ -347,9 +347,12 @@ class ListViews(TestCase):
"""there are so many views, this just makes sure it LOADS""" """there are so many views, this just makes sure it LOADS"""
view = views.Curate.as_view() view = views.Curate.as_view()
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"):
models.List.objects.create(name="Public list", user=self.local_user) models.ListItem.objects.create(
models.List.objects.create( user=self.local_user,
name="Private list", privacy="direct", user=self.local_user book_list=self.list,
book=self.book,
approved=False,
order=1,
) )
request = self.factory.get("") request = self.factory.get("")
request.user = self.local_user request.user = self.local_user

View file

@ -264,10 +264,10 @@ class EmbedList(View):
return TemplateResponse(request, "lists/embed-list.html", data) return TemplateResponse(request, "lists/embed-list.html", data)
@method_decorator(login_required, name="dispatch")
class Curate(View): class Curate(View):
"""approve or discard list suggestsions""" """approve or discard list suggestsions"""
@method_decorator(login_required, name="dispatch")
def get(self, request, list_id): def get(self, request, list_id):
"""display a pending list""" """display a pending list"""
book_list = get_object_or_404(models.List, id=list_id) book_list = get_object_or_404(models.List, id=list_id)
@ -280,8 +280,6 @@ class Curate(View):
} }
return TemplateResponse(request, "lists/curate.html", data) return TemplateResponse(request, "lists/curate.html", data)
@method_decorator(login_required, name="dispatch")
# pylint: disable=unused-argument
def post(self, request, list_id): def post(self, request, list_id):
"""edit a book_list""" """edit a book_list"""
book_list = get_object_or_404(models.List, id=list_id) book_list = get_object_or_404(models.List, id=list_id)

Binary file not shown.

View file

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-28 15:00+0000\n" "POT-Creation-Date: 2021-12-28 20:12+0000\n"
"PO-Revision-Date: 2021-12-28 16:03\n" "PO-Revision-Date: 2021-12-28 21:17\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: German\n" "Language-Team: German\n"
"Language: de\n" "Language: de\n"
@ -263,76 +263,78 @@ msgstr ""
msgid "Share this page" msgid "Share this page"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:61 #: bookwyrm/templates/annual_summary/layout.html:67
msgid "Copy address" msgid "Copy address"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:61 #: bookwyrm/templates/annual_summary/layout.html:68
#: bookwyrm/templates/lists/list.html:194 #: bookwyrm/templates/lists/list.html:194
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:69 #: bookwyrm/templates/annual_summary/layout.html:77
msgid "Sharing status: <strong>public with key</strong>" msgid "Sharing status: <strong>public with key</strong>"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:70 #: bookwyrm/templates/annual_summary/layout.html:78
msgid "The page can be seen by anyone with the complete address." msgid "The page can be seen by anyone with the complete address."
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:75 #: bookwyrm/templates/annual_summary/layout.html:83
msgid "Make page private" msgid "Make page private"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:81 #: bookwyrm/templates/annual_summary/layout.html:89
msgid "Sharing status: <strong>private</strong>" msgid "Sharing status: <strong>private</strong>"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:82 #: bookwyrm/templates/annual_summary/layout.html:90
msgid "The page is private, only you can see it." msgid "The page is private, only you can see it."
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:87 #: bookwyrm/templates/annual_summary/layout.html:95
msgid "Make page public" msgid "Make page public"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:91 #: bookwyrm/templates/annual_summary/layout.html:99
msgid "When you make your page private, the old key wont give access to the page anymore. A new key will be created if the page is once again made public." msgid "When you make your page private, the old key wont give access to the page anymore. A new key will be created if the page is once again made public."
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:104 #: bookwyrm/templates/annual_summary/layout.html:112
#, python-format #, python-format
msgid "Sadly %(display_name)s didnt finish any book in %(year)s" msgid "Sadly %(display_name)s didnt finish any book in %(year)s"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:110 #: bookwyrm/templates/annual_summary/layout.html:118
#, python-format #, python-format
msgid "In %(year)s, %(display_name)s read %(books_total)s books<br />for a total of %(pages_total)s pages!" msgid "In %(year)s, %(display_name)s read %(books_total)s book<br />for a total of %(pages_total)s pages!"
msgstr "" msgid_plural "In %(year)s, %(display_name)s read %(books_total)s books<br />for a total of %(pages_total)s pages!"
msgstr[0] ""
msgstr[1] ""
#: bookwyrm/templates/annual_summary/layout.html:112 #: bookwyrm/templates/annual_summary/layout.html:124
msgid "Thats great!" msgid "Thats great!"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:115 #: bookwyrm/templates/annual_summary/layout.html:127
#, python-format #, python-format
msgid "That makes an average of %(pages)s pages per book." msgid "That makes an average of %(pages)s pages per book."
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:120 #: bookwyrm/templates/annual_summary/layout.html:132
#, python-format #, python-format
msgid "(%(no_page_number)s book doesnt have pages)" msgid "(%(no_page_number)s book doesnt have pages)"
msgid_plural "(%(no_page_number)s books dont have pages)" msgid_plural "(%(no_page_number)s books dont have pages)"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: bookwyrm/templates/annual_summary/layout.html:136 #: bookwyrm/templates/annual_summary/layout.html:148
msgid "Their shortest read this year…" msgid "Their shortest read this year…"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:143 #: bookwyrm/templates/annual_summary/layout.html:155
#: bookwyrm/templates/annual_summary/layout.html:164 #: bookwyrm/templates/annual_summary/layout.html:176
#: bookwyrm/templates/annual_summary/layout.html:204 #: bookwyrm/templates/annual_summary/layout.html:220
#: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/book/book.html:47
#: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:25 #: bookwyrm/templates/landing/large-book.html:25
@ -340,33 +342,35 @@ msgstr ""
msgid "by" msgid "by"
msgstr "von" msgstr "von"
#: bookwyrm/templates/annual_summary/layout.html:149 #: bookwyrm/templates/annual_summary/layout.html:161
#: bookwyrm/templates/annual_summary/layout.html:170 #: bookwyrm/templates/annual_summary/layout.html:182
#, python-format #, python-format
msgid "<strong>%(pages)s</strong> pages" msgid "<strong>%(pages)s</strong> pages"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:157 #: bookwyrm/templates/annual_summary/layout.html:169
msgid "…and the longest" msgid "…and the longest"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:187 #: bookwyrm/templates/annual_summary/layout.html:199
#, python-format #, python-format
msgid "%(display_name)s left %(ratings_total)s ratings, <br />their average rating is %(rating_average)s" msgid "%(display_name)s left %(ratings_total)s rating, <br />their average rating is %(rating_average)s"
msgstr "" msgid_plural "%(display_name)s left %(ratings_total)s ratings, <br />their average rating is %(rating_average)s"
msgstr[0] ""
msgstr[1] ""
#: bookwyrm/templates/annual_summary/layout.html:197 #: bookwyrm/templates/annual_summary/layout.html:213
msgid "Their best rated review" msgid "Their best rated review"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:210 #: bookwyrm/templates/annual_summary/layout.html:226
#, python-format #, python-format
msgid "Their rating: <strong>%(rating)s</strong>" msgid "Their rating: <strong>%(rating)s</strong>"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:227 #: bookwyrm/templates/annual_summary/layout.html:243
#, python-format #, python-format
msgid "All the books %(display_name)s read in 2021" msgid "All the books %(display_name)s read in %(year)s"
msgstr "" msgstr ""
#: bookwyrm/templates/author/author.html:18 #: bookwyrm/templates/author/author.html:18

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 0.0.1\n" "Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-28 20:12+0000\n" "POT-Creation-Date: 2021-12-29 21:32+0000\n"
"PO-Revision-Date: 2021-02-28 17:19-0800\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: English <LL@li.org>\n" "Language-Team: English <LL@li.org>\n"
@ -61,7 +61,7 @@ msgstr ""
msgid "Rating" msgid "Rating"
msgstr "" msgstr ""
#: bookwyrm/forms.py:473 bookwyrm/templates/lists/list.html:110 #: bookwyrm/forms.py:473 bookwyrm/templates/lists/list.html:121
msgid "Sort By" msgid "Sort By"
msgstr "" msgstr ""
@ -145,7 +145,7 @@ msgstr ""
msgid "%(value)s is not a valid username" msgid "%(value)s is not a valid username"
msgstr "" msgstr ""
#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:173 #: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170
#: bookwyrm/templates/ostatus/error.html:29 #: bookwyrm/templates/ostatus/error.html:29
msgid "username" msgid "username"
msgstr "" msgstr ""
@ -269,7 +269,7 @@ msgid "Copy address"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:68 #: bookwyrm/templates/annual_summary/layout.html:68
#: bookwyrm/templates/lists/list.html:194 #: bookwyrm/templates/lists/list.html:217
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
@ -520,7 +520,7 @@ msgstr ""
#: bookwyrm/templates/book/readthrough.html:76 #: bookwyrm/templates/book/readthrough.html:76
#: bookwyrm/templates/groups/form.html:24 #: bookwyrm/templates/groups/form.html:24
#: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/bookmark_button.html:15
#: bookwyrm/templates/lists/form.html:75 #: bookwyrm/templates/lists/form.html:124
#: bookwyrm/templates/preferences/edit_user.html:124 #: bookwyrm/templates/preferences/edit_user.html:124
#: bookwyrm/templates/settings/announcements/announcement_form.html:76 #: bookwyrm/templates/settings/announcements/announcement_form.html:76
#: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/edit_instance.html:82
@ -642,7 +642,7 @@ msgstr ""
msgid "Places" msgid "Places"
msgstr "" msgstr ""
#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:77 #: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:74
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25 #: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50 #: bookwyrm/templates/search/layout.html:50
@ -656,7 +656,7 @@ msgstr ""
#: bookwyrm/templates/book/book.html:341 #: bookwyrm/templates/book/book.html:341
#: bookwyrm/templates/book/cover_modal.html:31 #: bookwyrm/templates/book/cover_modal.html:31
#: bookwyrm/templates/lists/list.html:182 #: bookwyrm/templates/lists/list.html:195
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31
msgid "Add" msgid "Add"
@ -940,8 +940,8 @@ msgstr ""
#: bookwyrm/templates/components/modal.html:11 #: bookwyrm/templates/components/modal.html:11
#: bookwyrm/templates/components/tooltip.html:7 #: bookwyrm/templates/components/tooltip.html:7
#: bookwyrm/templates/feed/layout.html:71 #: bookwyrm/templates/feed/layout.html:71
#: bookwyrm/templates/get_started/layout.html:20 #: bookwyrm/templates/get_started/layout.html:25
#: bookwyrm/templates/get_started/layout.html:53 #: bookwyrm/templates/get_started/layout.html:58
#: bookwyrm/templates/search/book.html:49 #: bookwyrm/templates/search/book.html:49
#: bookwyrm/templates/snippets/announcement.html:18 #: bookwyrm/templates/snippets/announcement.html:18
msgid "Close" msgid "Close"
@ -1017,7 +1017,7 @@ msgstr ""
#: bookwyrm/templates/directory/directory.html:4 #: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9 #: bookwyrm/templates/directory/directory.html:9
#: bookwyrm/templates/layout.html:103 #: bookwyrm/templates/layout.html:100
msgid "Directory" msgid "Directory"
msgstr "" msgstr ""
@ -1137,7 +1137,7 @@ msgstr ""
#: bookwyrm/templates/discover/discover.html:4 #: bookwyrm/templates/discover/discover.html:4
#: bookwyrm/templates/discover/discover.html:10 #: bookwyrm/templates/discover/discover.html:10
#: bookwyrm/templates/layout.html:80 #: bookwyrm/templates/layout.html:77
msgid "Discover" msgid "Discover"
msgstr "" msgstr ""
@ -1260,12 +1260,12 @@ msgid "%(site_name)s home page"
msgstr "" msgstr ""
#: bookwyrm/templates/embed-layout.html:34 #: bookwyrm/templates/embed-layout.html:34
#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:232 #: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:229
#, python-format #, python-format
msgid "About %(site_name)s" msgid "About %(site_name)s"
msgstr "" msgstr ""
#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:236 #: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:233
msgid "Contact site admin" msgid "Contact site admin"
msgstr "" msgstr ""
@ -1279,7 +1279,7 @@ msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
msgstr "" msgstr ""
#: bookwyrm/templates/feed/direct_messages.html:10 #: bookwyrm/templates/feed/direct_messages.html:10
#: bookwyrm/templates/layout.html:113 #: bookwyrm/templates/layout.html:110
msgid "Direct Messages" msgid "Direct Messages"
msgstr "" msgstr ""
@ -1332,7 +1332,7 @@ msgstr ""
msgid "Updates" msgid "Updates"
msgstr "" msgstr ""
#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:108 #: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:105
msgid "Your Books" msgid "Your Books"
msgstr "" msgstr ""
@ -1409,7 +1409,7 @@ msgid "What are you reading?"
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/books.html:9 #: bookwyrm/templates/get_started/books.html:9
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:138 #: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:149
msgid "Search for a book" msgid "Search for a book"
msgstr "" msgstr ""
@ -1429,7 +1429,7 @@ msgstr ""
#: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/groups/group.html:19 #: bookwyrm/templates/groups/group.html:19
#: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:53 #: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:53
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:142 #: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:153
#: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:4
#: bookwyrm/templates/search/layout.html:9 #: bookwyrm/templates/search/layout.html:9
msgid "Search" msgid "Search"
@ -1445,12 +1445,12 @@ msgid "Popular on %(site_name)s"
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/books.html:58 #: bookwyrm/templates/get_started/books.html:58
#: bookwyrm/templates/lists/list.html:155 #: bookwyrm/templates/lists/list.html:166
msgid "No books found" msgid "No books found"
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/books.html:63 #: bookwyrm/templates/get_started/books.html:63
#: bookwyrm/templates/get_started/profile.html:51 #: bookwyrm/templates/get_started/profile.html:64
msgid "Save &amp; continue" msgid "Save &amp; continue"
msgstr "" msgstr ""
@ -1459,33 +1459,33 @@ msgstr ""
msgid "Welcome" msgid "Welcome"
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/layout.html:15 #: bookwyrm/templates/get_started/layout.html:20
#, python-format #, python-format
msgid "Welcome to %(site_name)s!" msgid "Welcome to %(site_name)s!"
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/layout.html:17 #: bookwyrm/templates/get_started/layout.html:22
msgid "These are some first steps to get you started." msgid "These are some first steps to get you started."
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/layout.html:31 #: bookwyrm/templates/get_started/layout.html:36
#: bookwyrm/templates/get_started/profile.html:6 #: bookwyrm/templates/get_started/profile.html:6
msgid "Create your profile" msgid "Create your profile"
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/layout.html:35 #: bookwyrm/templates/get_started/layout.html:40
msgid "Add books" msgid "Add books"
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/layout.html:39 #: bookwyrm/templates/get_started/layout.html:44
msgid "Find friends" msgid "Find friends"
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/layout.html:45 #: bookwyrm/templates/get_started/layout.html:50
msgid "Skip this step" msgid "Skip this step"
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/layout.html:49 #: bookwyrm/templates/get_started/layout.html:54
msgid "Finish" msgid "Finish"
msgstr "" msgstr ""
@ -1494,29 +1494,29 @@ msgstr ""
msgid "Display name:" msgid "Display name:"
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/profile.html:21 #: bookwyrm/templates/get_started/profile.html:29
#: bookwyrm/templates/preferences/edit_user.html:47 #: bookwyrm/templates/preferences/edit_user.html:47
msgid "Summary:" msgid "Summary:"
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/profile.html:22 #: bookwyrm/templates/get_started/profile.html:34
msgid "A little bit about you" msgid "A little bit about you"
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/profile.html:30 #: bookwyrm/templates/get_started/profile.html:43
#: bookwyrm/templates/preferences/edit_user.html:27 #: bookwyrm/templates/preferences/edit_user.html:27
msgid "Avatar:" msgid "Avatar:"
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/profile.html:39 #: bookwyrm/templates/get_started/profile.html:52
msgid "Manually approve followers:" msgid "Manually approve followers:"
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/profile.html:45 #: bookwyrm/templates/get_started/profile.html:58
msgid "Show this account in suggested users:" msgid "Show this account in suggested users:"
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/profile.html:49 #: bookwyrm/templates/get_started/profile.html:62
msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users." msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users."
msgstr "" msgstr ""
@ -1908,7 +1908,7 @@ msgid "Login"
msgstr "" msgstr ""
#: bookwyrm/templates/landing/login.html:7 #: bookwyrm/templates/landing/login.html:7
#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:181 #: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:178
#: bookwyrm/templates/ostatus/error.html:37 #: bookwyrm/templates/ostatus/error.html:37
msgid "Log in" msgid "Log in"
msgstr "" msgstr ""
@ -1917,7 +1917,7 @@ msgstr ""
msgid "Success! Email address confirmed." msgid "Success! Email address confirmed."
msgstr "" msgstr ""
#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:172 #: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:169
#: bookwyrm/templates/ostatus/error.html:28 #: bookwyrm/templates/ostatus/error.html:28
#: bookwyrm/templates/snippets/register_form.html:4 #: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:" msgid "Username:"
@ -1925,12 +1925,12 @@ msgstr ""
#: bookwyrm/templates/landing/login.html:27 #: bookwyrm/templates/landing/login.html:27
#: bookwyrm/templates/landing/password_reset.html:26 #: bookwyrm/templates/landing/password_reset.html:26
#: bookwyrm/templates/layout.html:176 bookwyrm/templates/ostatus/error.html:32 #: bookwyrm/templates/layout.html:173 bookwyrm/templates/ostatus/error.html:32
#: bookwyrm/templates/snippets/register_form.html:20 #: bookwyrm/templates/snippets/register_form.html:20
msgid "Password:" msgid "Password:"
msgstr "" msgstr ""
#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:178 #: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:175
#: bookwyrm/templates/ostatus/error.html:34 #: bookwyrm/templates/ostatus/error.html:34
msgid "Forgot your password?" msgid "Forgot your password?"
msgstr "" msgstr ""
@ -1962,19 +1962,19 @@ msgstr ""
msgid "Search for a book, user, or list" msgid "Search for a book, user, or list"
msgstr "" msgstr ""
#: bookwyrm/templates/layout.html:63 bookwyrm/templates/layout.html:64 #: bookwyrm/templates/layout.html:63
msgid "Main navigation menu" msgid "Main navigation menu"
msgstr "" msgstr ""
#: bookwyrm/templates/layout.html:74 #: bookwyrm/templates/layout.html:71
msgid "Feed" msgid "Feed"
msgstr "" msgstr ""
#: bookwyrm/templates/layout.html:118 #: bookwyrm/templates/layout.html:115
msgid "Settings" msgid "Settings"
msgstr "" msgstr ""
#: bookwyrm/templates/layout.html:127 #: bookwyrm/templates/layout.html:124
#: bookwyrm/templates/settings/invites/manage_invite_requests.html:15 #: bookwyrm/templates/settings/invites/manage_invite_requests.html:15
#: bookwyrm/templates/settings/invites/manage_invites.html:3 #: bookwyrm/templates/settings/invites/manage_invites.html:3
#: bookwyrm/templates/settings/invites/manage_invites.html:15 #: bookwyrm/templates/settings/invites/manage_invites.html:15
@ -1982,46 +1982,46 @@ msgstr ""
msgid "Invites" msgid "Invites"
msgstr "" msgstr ""
#: bookwyrm/templates/layout.html:134 #: bookwyrm/templates/layout.html:131
msgid "Admin" msgid "Admin"
msgstr "" msgstr ""
#: bookwyrm/templates/layout.html:141 #: bookwyrm/templates/layout.html:138
msgid "Log out" msgid "Log out"
msgstr "" msgstr ""
#: bookwyrm/templates/layout.html:149 bookwyrm/templates/layout.html:150 #: bookwyrm/templates/layout.html:146 bookwyrm/templates/layout.html:147
#: bookwyrm/templates/notifications/notifications_page.html:5 #: bookwyrm/templates/notifications/notifications_page.html:5
#: bookwyrm/templates/notifications/notifications_page.html:10 #: bookwyrm/templates/notifications/notifications_page.html:10
msgid "Notifications" msgid "Notifications"
msgstr "" msgstr ""
#: bookwyrm/templates/layout.html:177 bookwyrm/templates/ostatus/error.html:33 #: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:33
msgid "password" msgid "password"
msgstr "" msgstr ""
#: bookwyrm/templates/layout.html:189 #: bookwyrm/templates/layout.html:186
msgid "Join" msgid "Join"
msgstr "" msgstr ""
#: bookwyrm/templates/layout.html:223 #: bookwyrm/templates/layout.html:220
msgid "Successfully posted status" msgid "Successfully posted status"
msgstr "" msgstr ""
#: bookwyrm/templates/layout.html:224 #: bookwyrm/templates/layout.html:221
msgid "Error posting status" msgid "Error posting status"
msgstr "" msgstr ""
#: bookwyrm/templates/layout.html:240 #: bookwyrm/templates/layout.html:237
msgid "Documentation" msgid "Documentation"
msgstr "" msgstr ""
#: bookwyrm/templates/layout.html:247 #: bookwyrm/templates/layout.html:244
#, python-format #, python-format
msgid "Support %(site_name)s on <a href=\"%(support_link)s\" target=\"_blank\">%(support_title)s</a>" msgid "Support %(site_name)s on <a href=\"%(support_link)s\" target=\"_blank\">%(support_title)s</a>"
msgstr "" msgstr ""
#: bookwyrm/templates/layout.html:251 #: bookwyrm/templates/layout.html:248
msgid "BookWyrm's source code is freely available. You can contribute or report issues on <a href=\"https://github.com/mouse-reeve/bookwyrm\">GitHub</a>." msgid "BookWyrm's source code is freely available. You can contribute or report issues on <a href=\"https://github.com/mouse-reeve/bookwyrm\">GitHub</a>."
msgstr "" msgstr ""
@ -2097,56 +2097,56 @@ msgstr ""
msgid "List curation:" msgid "List curation:"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/form.html:22 #: bookwyrm/templates/lists/form.html:31
msgid "Closed" msgid "Closed"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/form.html:23 #: bookwyrm/templates/lists/form.html:34
msgid "Only you can add and remove books to this list" msgid "Only you can add and remove books to this list"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/form.html:27 #: bookwyrm/templates/lists/form.html:48
msgid "Curated" msgid "Curated"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/form.html:28 #: bookwyrm/templates/lists/form.html:51
msgid "Anyone can suggest books, subject to your approval" msgid "Anyone can suggest books, subject to your approval"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/form.html:32 #: bookwyrm/templates/lists/form.html:65
msgctxt "curation type" msgctxt "curation type"
msgid "Open" msgid "Open"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/form.html:33 #: bookwyrm/templates/lists/form.html:68
msgid "Anyone can add books to this list" msgid "Anyone can add books to this list"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/form.html:37 #: bookwyrm/templates/lists/form.html:82
msgid "Group" msgid "Group"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/form.html:38 #: bookwyrm/templates/lists/form.html:85
msgid "Group members can add to and remove from this list" msgid "Group members can add to and remove from this list"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/form.html:41 #: bookwyrm/templates/lists/form.html:90
msgid "Select Group" msgid "Select Group"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/form.html:45 #: bookwyrm/templates/lists/form.html:94
msgid "Select a group" msgid "Select a group"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/form.html:56 #: bookwyrm/templates/lists/form.html:105
msgid "You don't have any Groups yet!" msgid "You don't have any Groups yet!"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/form.html:58 #: bookwyrm/templates/lists/form.html:107
msgid "Create a Group" msgid "Create a Group"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/form.html:81 #: bookwyrm/templates/lists/form.html:130
msgid "Delete list" msgid "Delete list"
msgstr "" msgstr ""
@ -2163,62 +2163,62 @@ msgstr ""
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>" msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:76 #: bookwyrm/templates/lists/list.html:82
msgid "List position" msgid "List position"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:82 #: bookwyrm/templates/lists/list.html:88
msgid "Set" msgid "Set"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:92 #: bookwyrm/templates/lists/list.html:103
#: bookwyrm/templates/snippets/remove_from_group_button.html:19 #: bookwyrm/templates/snippets/remove_from_group_button.html:19
msgid "Remove" msgid "Remove"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:106 #: bookwyrm/templates/lists/list.html:117
#: bookwyrm/templates/lists/list.html:123 #: bookwyrm/templates/lists/list.html:134
msgid "Sort List" msgid "Sort List"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:116 #: bookwyrm/templates/lists/list.html:127
msgid "Direction" msgid "Direction"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:130 #: bookwyrm/templates/lists/list.html:141
msgid "Add Books" msgid "Add Books"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:132 #: bookwyrm/templates/lists/list.html:143
msgid "Suggest Books" msgid "Suggest Books"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:143 #: bookwyrm/templates/lists/list.html:154
msgid "search" msgid "search"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:149 #: bookwyrm/templates/lists/list.html:160
msgid "Clear search" msgid "Clear search"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:154 #: bookwyrm/templates/lists/list.html:165
#, python-format #, python-format
msgid "No books found matching the query \"%(query)s\"" msgid "No books found matching the query \"%(query)s\""
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:182 #: bookwyrm/templates/lists/list.html:197
msgid "Suggest" msgid "Suggest"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:191 #: bookwyrm/templates/lists/list.html:208
msgid "Embed this list on a website" msgid "Embed this list on a website"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:194 #: bookwyrm/templates/lists/list.html:216
msgid "Copy embed code" msgid "Copy embed code"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:194 #: bookwyrm/templates/lists/list.html:218
#, python-format #, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s" msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr "" msgstr ""
@ -2697,7 +2697,7 @@ msgstr ""
msgid "Edit Announcement" msgid "Edit Announcement"
msgstr "" msgstr ""
#: bookwyrm/templates/settings/announcements/announcement.html:35 #: bookwyrm/templates/settings/announcements/announcement.html:34
msgid "Visible:" msgid "Visible:"
msgstr "" msgstr ""
@ -2709,19 +2709,19 @@ msgstr ""
msgid "False" msgid "False"
msgstr "" msgstr ""
#: bookwyrm/templates/settings/announcements/announcement.html:47 #: bookwyrm/templates/settings/announcements/announcement.html:46
#: bookwyrm/templates/settings/announcements/announcement_form.html:44 #: bookwyrm/templates/settings/announcements/announcement_form.html:44
#: bookwyrm/templates/settings/dashboard/dashboard.html:71 #: bookwyrm/templates/settings/dashboard/dashboard.html:71
msgid "Start date:" msgid "Start date:"
msgstr "" msgstr ""
#: bookwyrm/templates/settings/announcements/announcement.html:54 #: bookwyrm/templates/settings/announcements/announcement.html:51
#: bookwyrm/templates/settings/announcements/announcement_form.html:54 #: bookwyrm/templates/settings/announcements/announcement_form.html:54
#: bookwyrm/templates/settings/dashboard/dashboard.html:77 #: bookwyrm/templates/settings/dashboard/dashboard.html:77
msgid "End date:" msgid "End date:"
msgstr "" msgstr ""
#: bookwyrm/templates/settings/announcements/announcement.html:60 #: bookwyrm/templates/settings/announcements/announcement.html:55
#: bookwyrm/templates/settings/announcements/announcement_form.html:64 #: bookwyrm/templates/settings/announcements/announcement_form.html:64
msgid "Active:" msgid "Active:"
msgstr "" msgstr ""
@ -4284,7 +4284,7 @@ msgstr ""
msgid "Not a valid csv file" msgid "Not a valid csv file"
msgstr "" msgstr ""
#: bookwyrm/views/landing/login.py:69 #: bookwyrm/views/landing/login.py:70
msgid "Username or password are incorrect" msgid "Username or password are incorrect"
msgstr "" msgstr ""

Binary file not shown.

View file

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-28 15:00+0000\n" "POT-Creation-Date: 2021-12-28 20:12+0000\n"
"PO-Revision-Date: 2021-12-28 17:59\n" "PO-Revision-Date: 2021-12-28 22:55\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Spanish\n" "Language-Team: Spanish\n"
"Language: es\n" "Language: es\n"
@ -263,76 +263,78 @@ msgstr "El año de lectura de <em>%(display_name)s</em>"
msgid "Share this page" msgid "Share this page"
msgstr "Compartir esta página" msgstr "Compartir esta página"
#: bookwyrm/templates/annual_summary/layout.html:61 #: bookwyrm/templates/annual_summary/layout.html:67
msgid "Copy address" msgid "Copy address"
msgstr "Copiar dirección" msgstr "Copiar dirección"
#: bookwyrm/templates/annual_summary/layout.html:61 #: bookwyrm/templates/annual_summary/layout.html:68
#: bookwyrm/templates/lists/list.html:194 #: bookwyrm/templates/lists/list.html:194
msgid "Copied!" msgid "Copied!"
msgstr "¡Copiado!" msgstr "¡Copiado!"
#: bookwyrm/templates/annual_summary/layout.html:69 #: bookwyrm/templates/annual_summary/layout.html:77
msgid "Sharing status: <strong>public with key</strong>" msgid "Sharing status: <strong>public with key</strong>"
msgstr "Nivel de compartido: <strong>público con llave</strong>" msgstr "Nivel de compartido: <strong>público con llave</strong>"
#: bookwyrm/templates/annual_summary/layout.html:70 #: bookwyrm/templates/annual_summary/layout.html:78
msgid "The page can be seen by anyone with the complete address." msgid "The page can be seen by anyone with the complete address."
msgstr "La página puede ser vista por cualquier persona que tenga la dirección completa." msgstr "La página puede ser vista por cualquier persona que tenga la dirección completa."
#: bookwyrm/templates/annual_summary/layout.html:75 #: bookwyrm/templates/annual_summary/layout.html:83
msgid "Make page private" msgid "Make page private"
msgstr "Hacer privada la página" msgstr "Hacer privada la página"
#: bookwyrm/templates/annual_summary/layout.html:81 #: bookwyrm/templates/annual_summary/layout.html:89
msgid "Sharing status: <strong>private</strong>" msgid "Sharing status: <strong>private</strong>"
msgstr "Nivel de compartido: <strong>privado</strong>" msgstr "Nivel de compartido: <strong>privado</strong>"
#: bookwyrm/templates/annual_summary/layout.html:82 #: bookwyrm/templates/annual_summary/layout.html:90
msgid "The page is private, only you can see it." msgid "The page is private, only you can see it."
msgstr "La página es privada, solo tú puedes verla." msgstr "La página es privada, solo tú puedes verla."
#: bookwyrm/templates/annual_summary/layout.html:87 #: bookwyrm/templates/annual_summary/layout.html:95
msgid "Make page public" msgid "Make page public"
msgstr "Hacer pública la página" msgstr "Hacer pública la página"
#: bookwyrm/templates/annual_summary/layout.html:91 #: bookwyrm/templates/annual_summary/layout.html:99
msgid "When you make your page private, the old key wont give access to the page anymore. A new key will be created if the page is once again made public." msgid "When you make your page private, the old key wont give access to the page anymore. A new key will be created if the page is once again made public."
msgstr "Una vez que haces privada tu página, la clave antigua ya no dará acceso a la página. Si la página se vuelve a hacer pública se creará una nueva clave." msgstr "Una vez que haces privada tu página, la clave antigua ya no dará acceso a la página. Si la página se vuelve a hacer pública se creará una nueva clave."
#: bookwyrm/templates/annual_summary/layout.html:104 #: bookwyrm/templates/annual_summary/layout.html:112
#, python-format #, python-format
msgid "Sadly %(display_name)s didnt finish any book in %(year)s" msgid "Sadly %(display_name)s didnt finish any book in %(year)s"
msgstr "Lamentablemente, %(display_name)s no terminó ningún libro en %(year)s" msgstr "Lamentablemente, %(display_name)s no terminó ningún libro en %(year)s"
#: bookwyrm/templates/annual_summary/layout.html:110 #: bookwyrm/templates/annual_summary/layout.html:118
#, python-format #, python-format
msgid "In %(year)s, %(display_name)s read %(books_total)s books<br />for a total of %(pages_total)s pages!" msgid "In %(year)s, %(display_name)s read %(books_total)s book<br />for a total of %(pages_total)s pages!"
msgstr "En %(year)s %(display_name)s ha leído %(books_total)s libros<br />¡haciendo un total de %(pages_total)s páginas!" msgid_plural "In %(year)s, %(display_name)s read %(books_total)s books<br />for a total of %(pages_total)s pages!"
msgstr[0] "En %(year)s %(display_name)s ha leído %(books_total)s libro<br />¡haciendo un total de %(pages_total)s páginas!"
msgstr[1] "En %(year)s %(display_name)s ha leído %(books_total)s libros<br />¡haciendo un total de %(pages_total)s páginas!"
#: bookwyrm/templates/annual_summary/layout.html:112 #: bookwyrm/templates/annual_summary/layout.html:124
msgid "Thats great!" msgid "Thats great!"
msgstr "¡Eso es genial!" msgstr "¡Eso es genial!"
#: bookwyrm/templates/annual_summary/layout.html:115 #: bookwyrm/templates/annual_summary/layout.html:127
#, python-format #, python-format
msgid "That makes an average of %(pages)s pages per book." msgid "That makes an average of %(pages)s pages per book."
msgstr "Eso hace un promedio de %(pages)s páginas por libro." msgstr "Eso hace un promedio de %(pages)s páginas por libro."
#: bookwyrm/templates/annual_summary/layout.html:120 #: bookwyrm/templates/annual_summary/layout.html:132
#, python-format #, python-format
msgid "(%(no_page_number)s book doesnt have pages)" msgid "(%(no_page_number)s book doesnt have pages)"
msgid_plural "(%(no_page_number)s books dont have pages)" msgid_plural "(%(no_page_number)s books dont have pages)"
msgstr[0] "(%(no_page_number)s libro no tiene páginas)" msgstr[0] "(%(no_page_number)s libro no tiene páginas)"
msgstr[1] "(%(no_page_number)s libros no tienen páginas)" msgstr[1] "(%(no_page_number)s libros no tienen páginas)"
#: bookwyrm/templates/annual_summary/layout.html:136 #: bookwyrm/templates/annual_summary/layout.html:148
msgid "Their shortest read this year…" msgid "Their shortest read this year…"
msgstr "Su lectura más corta de este año…" msgstr "Su lectura más corta de este año…"
#: bookwyrm/templates/annual_summary/layout.html:143 #: bookwyrm/templates/annual_summary/layout.html:155
#: bookwyrm/templates/annual_summary/layout.html:164 #: bookwyrm/templates/annual_summary/layout.html:176
#: bookwyrm/templates/annual_summary/layout.html:204 #: bookwyrm/templates/annual_summary/layout.html:220
#: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/book/book.html:47
#: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:25 #: bookwyrm/templates/landing/large-book.html:25
@ -340,34 +342,36 @@ msgstr "Su lectura más corta de este año…"
msgid "by" msgid "by"
msgstr "por" msgstr "por"
#: bookwyrm/templates/annual_summary/layout.html:149 #: bookwyrm/templates/annual_summary/layout.html:161
#: bookwyrm/templates/annual_summary/layout.html:170 #: bookwyrm/templates/annual_summary/layout.html:182
#, python-format #, python-format
msgid "<strong>%(pages)s</strong> pages" msgid "<strong>%(pages)s</strong> pages"
msgstr "<strong>%(pages)s</strong> páginas" msgstr "<strong>%(pages)s</strong> páginas"
#: bookwyrm/templates/annual_summary/layout.html:157 #: bookwyrm/templates/annual_summary/layout.html:169
msgid "…and the longest" msgid "…and the longest"
msgstr "… y la más larga" msgstr "… y la más larga"
#: bookwyrm/templates/annual_summary/layout.html:187 #: bookwyrm/templates/annual_summary/layout.html:199
#, python-format #, python-format
msgid "%(display_name)s left %(ratings_total)s ratings, <br />their average rating is %(rating_average)s" msgid "%(display_name)s left %(ratings_total)s rating, <br />their average rating is %(rating_average)s"
msgstr "%(display_name)s dio %(ratings_total)s valoraciones, <br />su valoración media es %(rating_average)s" msgid_plural "%(display_name)s left %(ratings_total)s ratings, <br />their average rating is %(rating_average)s"
msgstr[0] "%(display_name)s dio %(ratings_total)s valoración, <br />su valoración media es %(rating_average)s"
msgstr[1] "%(display_name)s dio %(ratings_total)s valoraciones, <br />su valoración media es %(rating_average)s"
#: bookwyrm/templates/annual_summary/layout.html:197 #: bookwyrm/templates/annual_summary/layout.html:213
msgid "Their best rated review" msgid "Their best rated review"
msgstr "Su mejor valoración" msgstr "Su mejor valoración"
#: bookwyrm/templates/annual_summary/layout.html:210 #: bookwyrm/templates/annual_summary/layout.html:226
#, python-format #, python-format
msgid "Their rating: <strong>%(rating)s</strong>" msgid "Their rating: <strong>%(rating)s</strong>"
msgstr "Su valoración: <strong>%(rating)s</strong>" msgstr "Su valoración: <strong>%(rating)s</strong>"
#: bookwyrm/templates/annual_summary/layout.html:227 #: bookwyrm/templates/annual_summary/layout.html:243
#, python-format #, python-format
msgid "All the books %(display_name)s read in 2021" msgid "All the books %(display_name)s read in %(year)s"
msgstr "Todos los libros que ha leído %(display_name)s en 2021" msgstr "Todos los libros que ha leído %(display_name)s en %(year)s"
#: bookwyrm/templates/author/author.html:18 #: bookwyrm/templates/author/author.html:18
#: bookwyrm/templates/author/author.html:19 #: bookwyrm/templates/author/author.html:19

Binary file not shown.

View file

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-28 15:00+0000\n" "POT-Creation-Date: 2021-12-28 20:12+0000\n"
"PO-Revision-Date: 2021-12-28 16:59\n" "PO-Revision-Date: 2021-12-28 21:17\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: French\n" "Language-Team: French\n"
"Language: fr\n" "Language: fr\n"
@ -263,76 +263,78 @@ msgstr "lannée de lecture de <em>%(display_name)s</em>"
msgid "Share this page" msgid "Share this page"
msgstr "Partager cette page" msgstr "Partager cette page"
#: bookwyrm/templates/annual_summary/layout.html:61 #: bookwyrm/templates/annual_summary/layout.html:67
msgid "Copy address" msgid "Copy address"
msgstr "Copier ladresse" msgstr "Copier ladresse"
#: bookwyrm/templates/annual_summary/layout.html:61 #: bookwyrm/templates/annual_summary/layout.html:68
#: bookwyrm/templates/lists/list.html:194 #: bookwyrm/templates/lists/list.html:194
msgid "Copied!" msgid "Copied!"
msgstr "Copié!" msgstr "Copié!"
#: bookwyrm/templates/annual_summary/layout.html:69 #: bookwyrm/templates/annual_summary/layout.html:77
msgid "Sharing status: <strong>public with key</strong>" msgid "Sharing status: <strong>public with key</strong>"
msgstr "Statut de partage : <strong>public avec clé</strong>" msgstr "Statut de partage : <strong>public avec clé</strong>"
#: bookwyrm/templates/annual_summary/layout.html:70 #: bookwyrm/templates/annual_summary/layout.html:78
msgid "The page can be seen by anyone with the complete address." msgid "The page can be seen by anyone with the complete address."
msgstr "La page peut être consultée par toute personne ayant l'adresse complète." msgstr "La page peut être consultée par toute personne ayant l'adresse complète."
#: bookwyrm/templates/annual_summary/layout.html:75 #: bookwyrm/templates/annual_summary/layout.html:83
msgid "Make page private" msgid "Make page private"
msgstr "Rendre cette page privée" msgstr "Rendre cette page privée"
#: bookwyrm/templates/annual_summary/layout.html:81 #: bookwyrm/templates/annual_summary/layout.html:89
msgid "Sharing status: <strong>private</strong>" msgid "Sharing status: <strong>private</strong>"
msgstr "Statut de partage : <strong>privé</strong>" msgstr "Statut de partage : <strong>privé</strong>"
#: bookwyrm/templates/annual_summary/layout.html:82 #: bookwyrm/templates/annual_summary/layout.html:90
msgid "The page is private, only you can see it." msgid "The page is private, only you can see it."
msgstr "La page est privée, seulement vous pouvez la voir." msgstr "La page est privée, seulement vous pouvez la voir."
#: bookwyrm/templates/annual_summary/layout.html:87 #: bookwyrm/templates/annual_summary/layout.html:95
msgid "Make page public" msgid "Make page public"
msgstr "Rendre cette page publique" msgstr "Rendre cette page publique"
#: bookwyrm/templates/annual_summary/layout.html:91 #: bookwyrm/templates/annual_summary/layout.html:99
msgid "When you make your page private, the old key wont give access to the page anymore. A new key will be created if the page is once again made public." msgid "When you make your page private, the old key wont give access to the page anymore. A new key will be created if the page is once again made public."
msgstr "Lorsque vous rendez votre page privée, lancienne clé ne donnera plus accès à la page. Une nouvelle clé sera créée si la page est à nouveau rendue publique." msgstr "Lorsque vous rendez votre page privée, lancienne clé ne donnera plus accès à la page. Une nouvelle clé sera créée si la page est à nouveau rendue publique."
#: bookwyrm/templates/annual_summary/layout.html:104 #: bookwyrm/templates/annual_summary/layout.html:112
#, python-format #, python-format
msgid "Sadly %(display_name)s didnt finish any book in %(year)s" msgid "Sadly %(display_name)s didnt finish any book in %(year)s"
msgstr "Malheureusement, %(display_name)s na terminé aucun livre en %(year)s" msgstr "Malheureusement, %(display_name)s na terminé aucun livre en %(year)s"
#: bookwyrm/templates/annual_summary/layout.html:110 #: bookwyrm/templates/annual_summary/layout.html:118
#, python-format #, python-format
msgid "In %(year)s, %(display_name)s read %(books_total)s books<br />for a total of %(pages_total)s pages!" msgid "In %(year)s, %(display_name)s read %(books_total)s book<br />for a total of %(pages_total)s pages!"
msgstr "En %(year)s, %(display_name)s a lu %(books_total)s livres<br />pour un total de %(pages_total)s pages !" msgid_plural "In %(year)s, %(display_name)s read %(books_total)s books<br />for a total of %(pages_total)s pages!"
msgstr[0] "En %(year)s, %(display_name)s a lu %(books_total)s livre<br />pour un total de %(pages_total)s pages !"
msgstr[1] "En %(year)s, %(display_name)s a lu %(books_total)s livres<br />pour un total de %(pages_total)s pages !"
#: bookwyrm/templates/annual_summary/layout.html:112 #: bookwyrm/templates/annual_summary/layout.html:124
msgid "Thats great!" msgid "Thats great!"
msgstr "Cest génial !" msgstr "Cest génial !"
#: bookwyrm/templates/annual_summary/layout.html:115 #: bookwyrm/templates/annual_summary/layout.html:127
#, python-format #, python-format
msgid "That makes an average of %(pages)s pages per book." msgid "That makes an average of %(pages)s pages per book."
msgstr "Ce qui fait en moyenne %(pages)s pages par livre." msgstr "Ce qui fait en moyenne %(pages)s pages par livre."
#: bookwyrm/templates/annual_summary/layout.html:120 #: bookwyrm/templates/annual_summary/layout.html:132
#, python-format #, python-format
msgid "(%(no_page_number)s book doesnt have pages)" msgid "(%(no_page_number)s book doesnt have pages)"
msgid_plural "(%(no_page_number)s books dont have pages)" msgid_plural "(%(no_page_number)s books dont have pages)"
msgstr[0] "(%(no_page_number)s livre na pas de pages)" msgstr[0] "(%(no_page_number)s livre na pas de pages)"
msgstr[1] "(%(no_page_number)s livres nont pas de pages)" msgstr[1] "(%(no_page_number)s livres nont pas de pages)"
#: bookwyrm/templates/annual_summary/layout.html:136 #: bookwyrm/templates/annual_summary/layout.html:148
msgid "Their shortest read this year…" msgid "Their shortest read this year…"
msgstr "Sa lecture la plus courte lannée…" msgstr "Sa lecture la plus courte lannée…"
#: bookwyrm/templates/annual_summary/layout.html:143 #: bookwyrm/templates/annual_summary/layout.html:155
#: bookwyrm/templates/annual_summary/layout.html:164 #: bookwyrm/templates/annual_summary/layout.html:176
#: bookwyrm/templates/annual_summary/layout.html:204 #: bookwyrm/templates/annual_summary/layout.html:220
#: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/book/book.html:47
#: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:25 #: bookwyrm/templates/landing/large-book.html:25
@ -340,34 +342,36 @@ msgstr "Sa lecture la plus courte lannée…"
msgid "by" msgid "by"
msgstr "de" msgstr "de"
#: bookwyrm/templates/annual_summary/layout.html:149 #: bookwyrm/templates/annual_summary/layout.html:161
#: bookwyrm/templates/annual_summary/layout.html:170 #: bookwyrm/templates/annual_summary/layout.html:182
#, python-format #, python-format
msgid "<strong>%(pages)s</strong> pages" msgid "<strong>%(pages)s</strong> pages"
msgstr "<strong>%(pages)s</strong> pages" msgstr "<strong>%(pages)s</strong> pages"
#: bookwyrm/templates/annual_summary/layout.html:157 #: bookwyrm/templates/annual_summary/layout.html:169
msgid "…and the longest" msgid "…and the longest"
msgstr "…et sa plus longue lecture" msgstr "…et sa plus longue lecture"
#: bookwyrm/templates/annual_summary/layout.html:187 #: bookwyrm/templates/annual_summary/layout.html:199
#, python-format #, python-format
msgid "%(display_name)s left %(ratings_total)s ratings, <br />their average rating is %(rating_average)s" msgid "%(display_name)s left %(ratings_total)s rating, <br />their average rating is %(rating_average)s"
msgstr "%(display_name)s a laissé %(ratings_total)s notes, <br />sa note moyenne est %(rating_average)s" msgid_plural "%(display_name)s left %(ratings_total)s ratings, <br />their average rating is %(rating_average)s"
msgstr[0] "%(display_name)s a laissé %(ratings_total)s critique, <br />sa note moyenne est %(rating_average)s"
msgstr[1] "%(display_name)s a laissé %(ratings_total)s critiques, <br />sa note moyenne est %(rating_average)s"
#: bookwyrm/templates/annual_summary/layout.html:197 #: bookwyrm/templates/annual_summary/layout.html:213
msgid "Their best rated review" msgid "Their best rated review"
msgstr "Son avis le mieux noté" msgstr "Son avis le mieux noté"
#: bookwyrm/templates/annual_summary/layout.html:210 #: bookwyrm/templates/annual_summary/layout.html:226
#, python-format #, python-format
msgid "Their rating: <strong>%(rating)s</strong>" msgid "Their rating: <strong>%(rating)s</strong>"
msgstr "Sa note : <strong>%(rating)s</strong>" msgstr "Sa note : <strong>%(rating)s</strong>"
#: bookwyrm/templates/annual_summary/layout.html:227 #: bookwyrm/templates/annual_summary/layout.html:243
#, python-format #, python-format
msgid "All the books %(display_name)s read in 2021" msgid "All the books %(display_name)s read in %(year)s"
msgstr "Tous les livres que %(display_name)s a lus" msgstr "Tous les livres que %(display_name)s a lus en %(year)s"
#: bookwyrm/templates/author/author.html:18 #: bookwyrm/templates/author/author.html:18
#: bookwyrm/templates/author/author.html:19 #: bookwyrm/templates/author/author.html:19

Binary file not shown.

View file

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-28 15:00+0000\n" "POT-Creation-Date: 2021-12-28 20:12+0000\n"
"PO-Revision-Date: 2021-12-28 16:03\n" "PO-Revision-Date: 2021-12-29 06:07\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Galician\n" "Language-Team: Galician\n"
"Language: gl\n" "Language: gl\n"
@ -263,76 +263,78 @@ msgstr "Un ano de lecturas de <em>%(display_name)s</em>"
msgid "Share this page" msgid "Share this page"
msgstr "Comparte esta páxina" msgstr "Comparte esta páxina"
#: bookwyrm/templates/annual_summary/layout.html:61 #: bookwyrm/templates/annual_summary/layout.html:67
msgid "Copy address" msgid "Copy address"
msgstr "Copiar enderezo" msgstr "Copiar enderezo"
#: bookwyrm/templates/annual_summary/layout.html:61 #: bookwyrm/templates/annual_summary/layout.html:68
#: bookwyrm/templates/lists/list.html:194 #: bookwyrm/templates/lists/list.html:194
msgid "Copied!" msgid "Copied!"
msgstr "Copiado!" msgstr "Copiado!"
#: bookwyrm/templates/annual_summary/layout.html:69 #: bookwyrm/templates/annual_summary/layout.html:77
msgid "Sharing status: <strong>public with key</strong>" msgid "Sharing status: <strong>public with key</strong>"
msgstr "Compartir estado: <strong>público con chave</strong>" msgstr "Compartir estado: <strong>público con chave</strong>"
#: bookwyrm/templates/annual_summary/layout.html:70 #: bookwyrm/templates/annual_summary/layout.html:78
msgid "The page can be seen by anyone with the complete address." msgid "The page can be seen by anyone with the complete address."
msgstr "Esta páxina será visible para calquera que teña o enderezo completo." msgstr "Esta páxina será visible para calquera que teña o enderezo completo."
#: bookwyrm/templates/annual_summary/layout.html:75 #: bookwyrm/templates/annual_summary/layout.html:83
msgid "Make page private" msgid "Make page private"
msgstr "Facer privada a páxina" msgstr "Facer privada a páxina"
#: bookwyrm/templates/annual_summary/layout.html:81 #: bookwyrm/templates/annual_summary/layout.html:89
msgid "Sharing status: <strong>private</strong>" msgid "Sharing status: <strong>private</strong>"
msgstr "Compartir estado: <strong>privado</strong>" msgstr "Compartir estado: <strong>privado</strong>"
#: bookwyrm/templates/annual_summary/layout.html:82 #: bookwyrm/templates/annual_summary/layout.html:90
msgid "The page is private, only you can see it." msgid "The page is private, only you can see it."
msgstr "Esta páxina é privada só ti podes vela." msgstr "Esta páxina é privada só ti podes vela."
#: bookwyrm/templates/annual_summary/layout.html:87 #: bookwyrm/templates/annual_summary/layout.html:95
msgid "Make page public" msgid "Make page public"
msgstr "Facer pública a páxina" msgstr "Facer pública a páxina"
#: bookwyrm/templates/annual_summary/layout.html:91 #: bookwyrm/templates/annual_summary/layout.html:99
msgid "When you make your page private, the old key wont give access to the page anymore. A new key will be created if the page is once again made public." msgid "When you make your page private, the old key wont give access to the page anymore. A new key will be created if the page is once again made public."
msgstr "Cando fas privada unha páxina, a chave antiga non dará acceso á mesma nunca máis. Crearase unha nova chave se volves a facer pública a páxina." msgstr "Cando fas privada unha páxina, a chave antiga non dará acceso á mesma nunca máis. Crearase unha nova chave se volves a facer pública a páxina."
#: bookwyrm/templates/annual_summary/layout.html:104 #: bookwyrm/templates/annual_summary/layout.html:112
#, python-format #, python-format
msgid "Sadly %(display_name)s didnt finish any book in %(year)s" msgid "Sadly %(display_name)s didnt finish any book in %(year)s"
msgstr "Unha mágoa, pero %(display_name)s aínda non rematou ningún libro en %(year)s" msgstr "Unha mágoa, pero %(display_name)s aínda non rematou ningún libro en %(year)s"
#: bookwyrm/templates/annual_summary/layout.html:110 #: bookwyrm/templates/annual_summary/layout.html:118
#, python-format #, python-format
msgid "In %(year)s, %(display_name)s read %(books_total)s books<br />for a total of %(pages_total)s pages!" msgid "In %(year)s, %(display_name)s read %(books_total)s book<br />for a total of %(pages_total)s pages!"
msgstr "En %(year)s, %(display_name)s leu %(books_total)s libros<br /> cun total de %(pages_total)s páxinas!" msgid_plural "In %(year)s, %(display_name)s read %(books_total)s books<br />for a total of %(pages_total)s pages!"
msgstr[0] "En %(year)s, %(display_name)s leu %(books_total)s libro<br />cun total de %(pages_total)s páxinas!"
msgstr[1] "En %(year)s, %(display_name)s leu %(books_total)s libros<br />cun total de %(pages_total)s páxinas!"
#: bookwyrm/templates/annual_summary/layout.html:112 #: bookwyrm/templates/annual_summary/layout.html:124
msgid "Thats great!" msgid "Thats great!"
msgstr "Está moi ben!" msgstr "Está moi ben!"
#: bookwyrm/templates/annual_summary/layout.html:115 #: bookwyrm/templates/annual_summary/layout.html:127
#, python-format #, python-format
msgid "That makes an average of %(pages)s pages per book." msgid "That makes an average of %(pages)s pages per book."
msgstr "" msgstr "Esto fai unha media de %(pages)s páxinas por libro."
#: bookwyrm/templates/annual_summary/layout.html:120 #: bookwyrm/templates/annual_summary/layout.html:132
#, python-format #, python-format
msgid "(%(no_page_number)s book doesnt have pages)" msgid "(%(no_page_number)s book doesnt have pages)"
msgid_plural "(%(no_page_number)s books dont have pages)" msgid_plural "(%(no_page_number)s books dont have pages)"
msgstr[0] "(%(no_page_number)s libro non ten páxinas)" msgstr[0] "(%(no_page_number)s libro non ten páxinas)"
msgstr[1] "(%(no_page_number)s libros non teñen páxinas)" msgstr[1] "(%(no_page_number)s libros non teñen páxinas)"
#: bookwyrm/templates/annual_summary/layout.html:136 #: bookwyrm/templates/annual_summary/layout.html:148
msgid "Their shortest read this year…" msgid "Their shortest read this year…"
msgstr "A lectura máis curta deste ano…" msgstr "A lectura máis curta deste ano…"
#: bookwyrm/templates/annual_summary/layout.html:143 #: bookwyrm/templates/annual_summary/layout.html:155
#: bookwyrm/templates/annual_summary/layout.html:164 #: bookwyrm/templates/annual_summary/layout.html:176
#: bookwyrm/templates/annual_summary/layout.html:204 #: bookwyrm/templates/annual_summary/layout.html:220
#: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/book/book.html:47
#: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:25 #: bookwyrm/templates/landing/large-book.html:25
@ -340,34 +342,36 @@ msgstr "A lectura máis curta deste ano…"
msgid "by" msgid "by"
msgstr "por" msgstr "por"
#: bookwyrm/templates/annual_summary/layout.html:149 #: bookwyrm/templates/annual_summary/layout.html:161
#: bookwyrm/templates/annual_summary/layout.html:170 #: bookwyrm/templates/annual_summary/layout.html:182
#, python-format #, python-format
msgid "<strong>%(pages)s</strong> pages" msgid "<strong>%(pages)s</strong> pages"
msgstr "<strong>%(pages)s</strong> páxinas" msgstr "<strong>%(pages)s</strong> páxinas"
#: bookwyrm/templates/annual_summary/layout.html:157 #: bookwyrm/templates/annual_summary/layout.html:169
msgid "…and the longest" msgid "…and the longest"
msgstr "…e a máis longa" msgstr "…e a máis longa"
#: bookwyrm/templates/annual_summary/layout.html:187 #: bookwyrm/templates/annual_summary/layout.html:199
#, python-format #, python-format
msgid "%(display_name)s left %(ratings_total)s ratings, <br />their average rating is %(rating_average)s" msgid "%(display_name)s left %(ratings_total)s rating, <br />their average rating is %(rating_average)s"
msgstr "%(display_name)s escribiu %(ratings_total)s valoracións, <br />a media das súas valoracións é %(rating_average)s" msgid_plural "%(display_name)s left %(ratings_total)s ratings, <br />their average rating is %(rating_average)s"
msgstr[0] "%(display_name)s fixo %(ratings_total)s valoración,<br />cunha media de %(rating_average)s"
msgstr[1] "%(display_name)s fixo %(ratings_total)s valoracións,<br />cunha puntuación media de %(rating_average)s"
#: bookwyrm/templates/annual_summary/layout.html:197 #: bookwyrm/templates/annual_summary/layout.html:213
msgid "Their best rated review" msgid "Their best rated review"
msgstr "A súa recensión máis valorada" msgstr "A súa recensión máis valorada"
#: bookwyrm/templates/annual_summary/layout.html:210 #: bookwyrm/templates/annual_summary/layout.html:226
#, python-format #, python-format
msgid "Their rating: <strong>%(rating)s</strong>" msgid "Their rating: <strong>%(rating)s</strong>"
msgstr "Valoración: <strong>%(rating)s</strong>" msgstr "Valoración: <strong>%(rating)s</strong>"
#: bookwyrm/templates/annual_summary/layout.html:227 #: bookwyrm/templates/annual_summary/layout.html:243
#, python-format #, python-format
msgid "All the books %(display_name)s read in 2021" msgid "All the books %(display_name)s read in %(year)s"
msgstr "Tódolos libros lidos por %(display_name)s en 2021" msgstr "Tódolos libros que %(display_name)s leu en %(year)s"
#: bookwyrm/templates/author/author.html:18 #: bookwyrm/templates/author/author.html:18
#: bookwyrm/templates/author/author.html:19 #: bookwyrm/templates/author/author.html:19

Binary file not shown.

View file

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-28 15:00+0000\n" "POT-Creation-Date: 2021-12-28 20:12+0000\n"
"PO-Revision-Date: 2021-12-28 16:03\n" "PO-Revision-Date: 2021-12-28 21:17\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Lithuanian\n" "Language-Team: Lithuanian\n"
"Language: lt\n" "Language: lt\n"
@ -263,63 +263,67 @@ msgstr ""
msgid "Share this page" msgid "Share this page"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:61 #: bookwyrm/templates/annual_summary/layout.html:67
msgid "Copy address" msgid "Copy address"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:61 #: bookwyrm/templates/annual_summary/layout.html:68
#: bookwyrm/templates/lists/list.html:194 #: bookwyrm/templates/lists/list.html:194
msgid "Copied!" msgid "Copied!"
msgstr "Nukopijuota" msgstr "Nukopijuota"
#: bookwyrm/templates/annual_summary/layout.html:69 #: bookwyrm/templates/annual_summary/layout.html:77
msgid "Sharing status: <strong>public with key</strong>" msgid "Sharing status: <strong>public with key</strong>"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:70 #: bookwyrm/templates/annual_summary/layout.html:78
msgid "The page can be seen by anyone with the complete address." msgid "The page can be seen by anyone with the complete address."
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:75 #: bookwyrm/templates/annual_summary/layout.html:83
msgid "Make page private" msgid "Make page private"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:81 #: bookwyrm/templates/annual_summary/layout.html:89
msgid "Sharing status: <strong>private</strong>" msgid "Sharing status: <strong>private</strong>"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:82 #: bookwyrm/templates/annual_summary/layout.html:90
msgid "The page is private, only you can see it." msgid "The page is private, only you can see it."
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:87 #: bookwyrm/templates/annual_summary/layout.html:95
msgid "Make page public" msgid "Make page public"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:91 #: bookwyrm/templates/annual_summary/layout.html:99
msgid "When you make your page private, the old key wont give access to the page anymore. A new key will be created if the page is once again made public." msgid "When you make your page private, the old key wont give access to the page anymore. A new key will be created if the page is once again made public."
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:104 #: bookwyrm/templates/annual_summary/layout.html:112
#, python-format #, python-format
msgid "Sadly %(display_name)s didnt finish any book in %(year)s" msgid "Sadly %(display_name)s didnt finish any book in %(year)s"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:110 #: bookwyrm/templates/annual_summary/layout.html:118
#, python-format #, python-format
msgid "In %(year)s, %(display_name)s read %(books_total)s books<br />for a total of %(pages_total)s pages!" msgid "In %(year)s, %(display_name)s read %(books_total)s book<br />for a total of %(pages_total)s pages!"
msgstr "" msgid_plural "In %(year)s, %(display_name)s read %(books_total)s books<br />for a total of %(pages_total)s pages!"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
#: bookwyrm/templates/annual_summary/layout.html:112 #: bookwyrm/templates/annual_summary/layout.html:124
msgid "Thats great!" msgid "Thats great!"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:115 #: bookwyrm/templates/annual_summary/layout.html:127
#, python-format #, python-format
msgid "That makes an average of %(pages)s pages per book." msgid "That makes an average of %(pages)s pages per book."
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:120 #: bookwyrm/templates/annual_summary/layout.html:132
#, python-format #, python-format
msgid "(%(no_page_number)s book doesnt have pages)" msgid "(%(no_page_number)s book doesnt have pages)"
msgid_plural "(%(no_page_number)s books dont have pages)" msgid_plural "(%(no_page_number)s books dont have pages)"
@ -328,13 +332,13 @@ msgstr[1] ""
msgstr[2] "" msgstr[2] ""
msgstr[3] "" msgstr[3] ""
#: bookwyrm/templates/annual_summary/layout.html:136 #: bookwyrm/templates/annual_summary/layout.html:148
msgid "Their shortest read this year…" msgid "Their shortest read this year…"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:143 #: bookwyrm/templates/annual_summary/layout.html:155
#: bookwyrm/templates/annual_summary/layout.html:164 #: bookwyrm/templates/annual_summary/layout.html:176
#: bookwyrm/templates/annual_summary/layout.html:204 #: bookwyrm/templates/annual_summary/layout.html:220
#: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/book/book.html:47
#: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:25 #: bookwyrm/templates/landing/large-book.html:25
@ -342,33 +346,37 @@ msgstr ""
msgid "by" msgid "by"
msgstr " " msgstr " "
#: bookwyrm/templates/annual_summary/layout.html:149 #: bookwyrm/templates/annual_summary/layout.html:161
#: bookwyrm/templates/annual_summary/layout.html:170 #: bookwyrm/templates/annual_summary/layout.html:182
#, python-format #, python-format
msgid "<strong>%(pages)s</strong> pages" msgid "<strong>%(pages)s</strong> pages"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:157 #: bookwyrm/templates/annual_summary/layout.html:169
msgid "…and the longest" msgid "…and the longest"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:187 #: bookwyrm/templates/annual_summary/layout.html:199
#, python-format #, python-format
msgid "%(display_name)s left %(ratings_total)s ratings, <br />their average rating is %(rating_average)s" msgid "%(display_name)s left %(ratings_total)s rating, <br />their average rating is %(rating_average)s"
msgstr "" msgid_plural "%(display_name)s left %(ratings_total)s ratings, <br />their average rating is %(rating_average)s"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
#: bookwyrm/templates/annual_summary/layout.html:197 #: bookwyrm/templates/annual_summary/layout.html:213
msgid "Their best rated review" msgid "Their best rated review"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:210 #: bookwyrm/templates/annual_summary/layout.html:226
#, python-format #, python-format
msgid "Their rating: <strong>%(rating)s</strong>" msgid "Their rating: <strong>%(rating)s</strong>"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:227 #: bookwyrm/templates/annual_summary/layout.html:243
#, python-format #, python-format
msgid "All the books %(display_name)s read in 2021" msgid "All the books %(display_name)s read in %(year)s"
msgstr "" msgstr ""
#: bookwyrm/templates/author/author.html:18 #: bookwyrm/templates/author/author.html:18

Binary file not shown.

View file

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-28 15:00+0000\n" "POT-Creation-Date: 2021-12-28 20:12+0000\n"
"PO-Revision-Date: 2021-12-28 16:59\n" "PO-Revision-Date: 2021-12-29 00:08\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Portuguese, Brazilian\n" "Language-Team: Portuguese, Brazilian\n"
"Language: pt\n" "Language: pt\n"
@ -263,76 +263,78 @@ msgstr "O ano de leitura de <em>%(display_name)s</em>"
msgid "Share this page" msgid "Share this page"
msgstr "Compartilhe esta página" msgstr "Compartilhe esta página"
#: bookwyrm/templates/annual_summary/layout.html:61 #: bookwyrm/templates/annual_summary/layout.html:67
msgid "Copy address" msgid "Copy address"
msgstr "Copiar endereço" msgstr "Copiar endereço"
#: bookwyrm/templates/annual_summary/layout.html:61 #: bookwyrm/templates/annual_summary/layout.html:68
#: bookwyrm/templates/lists/list.html:194 #: bookwyrm/templates/lists/list.html:194
msgid "Copied!" msgid "Copied!"
msgstr "Copiado!" msgstr "Copiado!"
#: bookwyrm/templates/annual_summary/layout.html:69 #: bookwyrm/templates/annual_summary/layout.html:77
msgid "Sharing status: <strong>public with key</strong>" msgid "Sharing status: <strong>public with key</strong>"
msgstr "Compartilhamento: <strong>público com chave</strong>" msgstr "Compartilhamento: <strong>público com chave</strong>"
#: bookwyrm/templates/annual_summary/layout.html:70 #: bookwyrm/templates/annual_summary/layout.html:78
msgid "The page can be seen by anyone with the complete address." msgid "The page can be seen by anyone with the complete address."
msgstr "Esta página pode ser vista por qualquer pessoa que tenha seu link." msgstr "Esta página pode ser vista por qualquer pessoa que tenha seu link."
#: bookwyrm/templates/annual_summary/layout.html:75 #: bookwyrm/templates/annual_summary/layout.html:83
msgid "Make page private" msgid "Make page private"
msgstr "Tornar a página particular" msgstr "Tornar a página particular"
#: bookwyrm/templates/annual_summary/layout.html:81 #: bookwyrm/templates/annual_summary/layout.html:89
msgid "Sharing status: <strong>private</strong>" msgid "Sharing status: <strong>private</strong>"
msgstr "Compartilhamento: <strong>particular</strong>" msgstr "Compartilhamento: <strong>particular</strong>"
#: bookwyrm/templates/annual_summary/layout.html:82 #: bookwyrm/templates/annual_summary/layout.html:90
msgid "The page is private, only you can see it." msgid "The page is private, only you can see it."
msgstr "A página é particular, só você pode vê-la." msgstr "A página é particular, só você pode vê-la."
#: bookwyrm/templates/annual_summary/layout.html:87 #: bookwyrm/templates/annual_summary/layout.html:95
msgid "Make page public" msgid "Make page public"
msgstr "Tornar a página pública" msgstr "Tornar a página pública"
#: bookwyrm/templates/annual_summary/layout.html:91 #: bookwyrm/templates/annual_summary/layout.html:99
msgid "When you make your page private, the old key wont give access to the page anymore. A new key will be created if the page is once again made public." msgid "When you make your page private, the old key wont give access to the page anymore. A new key will be created if the page is once again made public."
msgstr "Ao tornar a página particular, a chave antiga passa a não funcionar mais. Uma nova chave será gerada quando a página for tornada pública novamente." msgstr "Ao tornar a página particular, a chave antiga passa a não funcionar mais. Uma nova chave será gerada quando a página for tornada pública novamente."
#: bookwyrm/templates/annual_summary/layout.html:104 #: bookwyrm/templates/annual_summary/layout.html:112
#, python-format #, python-format
msgid "Sadly %(display_name)s didnt finish any book in %(year)s" msgid "Sadly %(display_name)s didnt finish any book in %(year)s"
msgstr "Infelizmente %(display_name)s não terminou nenhum livro em %(year)s" msgstr "Infelizmente %(display_name)s não terminou nenhum livro em %(year)s"
#: bookwyrm/templates/annual_summary/layout.html:110 #: bookwyrm/templates/annual_summary/layout.html:118
#, python-format #, python-format
msgid "In %(year)s, %(display_name)s read %(books_total)s books<br />for a total of %(pages_total)s pages!" msgid "In %(year)s, %(display_name)s read %(books_total)s book<br />for a total of %(pages_total)s pages!"
msgstr "Em %(year)s, %(display_name)s leu %(books_total)s livros,<br />um total de %(pages_total)s páginas!" msgid_plural "In %(year)s, %(display_name)s read %(books_total)s books<br />for a total of %(pages_total)s pages!"
msgstr[0] "Em %(year)s, %(display_name)s leu %(books_total)s livro,<br />um total de %(pages_total)s páginas!"
msgstr[1] "Em %(year)s, %(display_name)s leu %(books_total)s livros,<br />um total de %(pages_total)s páginas!"
#: bookwyrm/templates/annual_summary/layout.html:112 #: bookwyrm/templates/annual_summary/layout.html:124
msgid "Thats great!" msgid "Thats great!"
msgstr "Muito legal!" msgstr "Muito legal!"
#: bookwyrm/templates/annual_summary/layout.html:115 #: bookwyrm/templates/annual_summary/layout.html:127
#, python-format #, python-format
msgid "That makes an average of %(pages)s pages per book." msgid "That makes an average of %(pages)s pages per book."
msgstr "Isso dá uma média de %(pages)s páginas por livro." msgstr "Isso dá uma média de %(pages)s páginas por livro."
#: bookwyrm/templates/annual_summary/layout.html:120 #: bookwyrm/templates/annual_summary/layout.html:132
#, python-format #, python-format
msgid "(%(no_page_number)s book doesnt have pages)" msgid "(%(no_page_number)s book doesnt have pages)"
msgid_plural "(%(no_page_number)s books dont have pages)" msgid_plural "(%(no_page_number)s books dont have pages)"
msgstr[0] "(%(no_page_number)s livro não tem páginas cadastradas)" msgstr[0] "(%(no_page_number)s livro não tem páginas cadastradas)"
msgstr[1] "(%(no_page_number)s livros não têm páginas cadastradas)" msgstr[1] "(%(no_page_number)s livros não têm páginas cadastradas)"
#: bookwyrm/templates/annual_summary/layout.html:136 #: bookwyrm/templates/annual_summary/layout.html:148
msgid "Their shortest read this year…" msgid "Their shortest read this year…"
msgstr "A leitura mais curta do ano…" msgstr "A leitura mais curta do ano…"
#: bookwyrm/templates/annual_summary/layout.html:143 #: bookwyrm/templates/annual_summary/layout.html:155
#: bookwyrm/templates/annual_summary/layout.html:164 #: bookwyrm/templates/annual_summary/layout.html:176
#: bookwyrm/templates/annual_summary/layout.html:204 #: bookwyrm/templates/annual_summary/layout.html:220
#: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/book/book.html:47
#: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:25 #: bookwyrm/templates/landing/large-book.html:25
@ -340,34 +342,36 @@ msgstr "A leitura mais curta do ano…"
msgid "by" msgid "by"
msgstr "de" msgstr "de"
#: bookwyrm/templates/annual_summary/layout.html:149 #: bookwyrm/templates/annual_summary/layout.html:161
#: bookwyrm/templates/annual_summary/layout.html:170 #: bookwyrm/templates/annual_summary/layout.html:182
#, python-format #, python-format
msgid "<strong>%(pages)s</strong> pages" msgid "<strong>%(pages)s</strong> pages"
msgstr "<strong>%(pages)s</strong> páginas" msgstr "<strong>%(pages)s</strong> páginas"
#: bookwyrm/templates/annual_summary/layout.html:157 #: bookwyrm/templates/annual_summary/layout.html:169
msgid "…and the longest" msgid "…and the longest"
msgstr "…e a mais longa" msgstr "…e a mais longa"
#: bookwyrm/templates/annual_summary/layout.html:187 #: bookwyrm/templates/annual_summary/layout.html:199
#, python-format #, python-format
msgid "%(display_name)s left %(ratings_total)s ratings, <br />their average rating is %(rating_average)s" msgid "%(display_name)s left %(ratings_total)s rating, <br />their average rating is %(rating_average)s"
msgstr "%(display_name)s fez %(ratings_total)s avaliações, <br />e sua nota média é %(rating_average)s" msgid_plural "%(display_name)s left %(ratings_total)s ratings, <br />their average rating is %(rating_average)s"
msgstr[0] "%(display_name)s fez %(ratings_total)s avaliação, <br />com uma média de %(rating_average)s"
msgstr[1] "%(display_name)s fez %(ratings_total)s avaliações, <br />com uma média de %(rating_average)s"
#: bookwyrm/templates/annual_summary/layout.html:197 #: bookwyrm/templates/annual_summary/layout.html:213
msgid "Their best rated review" msgid "Their best rated review"
msgstr "Sua melhor avaliação" msgstr "Sua melhor avaliação"
#: bookwyrm/templates/annual_summary/layout.html:210 #: bookwyrm/templates/annual_summary/layout.html:226
#, python-format #, python-format
msgid "Their rating: <strong>%(rating)s</strong>" msgid "Their rating: <strong>%(rating)s</strong>"
msgstr "Avaliação: <strong>%(rating)s</strong>" msgstr "Avaliação: <strong>%(rating)s</strong>"
#: bookwyrm/templates/annual_summary/layout.html:227 #: bookwyrm/templates/annual_summary/layout.html:243
#, python-format #, python-format
msgid "All the books %(display_name)s read in 2021" msgid "All the books %(display_name)s read in %(year)s"
msgstr "Todos os livros que %(display_name)s leu em 2021" msgstr "Todos os livros lidos por %(display_name)s em %(year)s"
#: bookwyrm/templates/author/author.html:18 #: bookwyrm/templates/author/author.html:18
#: bookwyrm/templates/author/author.html:19 #: bookwyrm/templates/author/author.html:19

Binary file not shown.

View file

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-28 15:00+0000\n" "POT-Creation-Date: 2021-12-28 20:12+0000\n"
"PO-Revision-Date: 2021-12-28 16:03\n" "PO-Revision-Date: 2021-12-28 21:17\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Chinese Simplified\n" "Language-Team: Chinese Simplified\n"
"Language: zh\n" "Language: zh\n"
@ -263,75 +263,76 @@ msgstr ""
msgid "Share this page" msgid "Share this page"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:61 #: bookwyrm/templates/annual_summary/layout.html:67
msgid "Copy address" msgid "Copy address"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:61 #: bookwyrm/templates/annual_summary/layout.html:68
#: bookwyrm/templates/lists/list.html:194 #: bookwyrm/templates/lists/list.html:194
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:69 #: bookwyrm/templates/annual_summary/layout.html:77
msgid "Sharing status: <strong>public with key</strong>" msgid "Sharing status: <strong>public with key</strong>"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:70 #: bookwyrm/templates/annual_summary/layout.html:78
msgid "The page can be seen by anyone with the complete address." msgid "The page can be seen by anyone with the complete address."
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:75 #: bookwyrm/templates/annual_summary/layout.html:83
msgid "Make page private" msgid "Make page private"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:81 #: bookwyrm/templates/annual_summary/layout.html:89
msgid "Sharing status: <strong>private</strong>" msgid "Sharing status: <strong>private</strong>"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:82 #: bookwyrm/templates/annual_summary/layout.html:90
msgid "The page is private, only you can see it." msgid "The page is private, only you can see it."
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:87 #: bookwyrm/templates/annual_summary/layout.html:95
msgid "Make page public" msgid "Make page public"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:91 #: bookwyrm/templates/annual_summary/layout.html:99
msgid "When you make your page private, the old key wont give access to the page anymore. A new key will be created if the page is once again made public." msgid "When you make your page private, the old key wont give access to the page anymore. A new key will be created if the page is once again made public."
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:104 #: bookwyrm/templates/annual_summary/layout.html:112
#, python-format #, python-format
msgid "Sadly %(display_name)s didnt finish any book in %(year)s" msgid "Sadly %(display_name)s didnt finish any book in %(year)s"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:110 #: bookwyrm/templates/annual_summary/layout.html:118
#, python-format #, python-format
msgid "In %(year)s, %(display_name)s read %(books_total)s books<br />for a total of %(pages_total)s pages!" msgid "In %(year)s, %(display_name)s read %(books_total)s book<br />for a total of %(pages_total)s pages!"
msgstr "" msgid_plural "In %(year)s, %(display_name)s read %(books_total)s books<br />for a total of %(pages_total)s pages!"
msgstr[0] ""
#: bookwyrm/templates/annual_summary/layout.html:112 #: bookwyrm/templates/annual_summary/layout.html:124
msgid "Thats great!" msgid "Thats great!"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:115 #: bookwyrm/templates/annual_summary/layout.html:127
#, python-format #, python-format
msgid "That makes an average of %(pages)s pages per book." msgid "That makes an average of %(pages)s pages per book."
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:120 #: bookwyrm/templates/annual_summary/layout.html:132
#, python-format #, python-format
msgid "(%(no_page_number)s book doesnt have pages)" msgid "(%(no_page_number)s book doesnt have pages)"
msgid_plural "(%(no_page_number)s books dont have pages)" msgid_plural "(%(no_page_number)s books dont have pages)"
msgstr[0] "" msgstr[0] ""
#: bookwyrm/templates/annual_summary/layout.html:136 #: bookwyrm/templates/annual_summary/layout.html:148
msgid "Their shortest read this year…" msgid "Their shortest read this year…"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:143 #: bookwyrm/templates/annual_summary/layout.html:155
#: bookwyrm/templates/annual_summary/layout.html:164 #: bookwyrm/templates/annual_summary/layout.html:176
#: bookwyrm/templates/annual_summary/layout.html:204 #: bookwyrm/templates/annual_summary/layout.html:220
#: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/book/book.html:47
#: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:25 #: bookwyrm/templates/landing/large-book.html:25
@ -339,33 +340,34 @@ msgstr ""
msgid "by" msgid "by"
msgstr "作者" msgstr "作者"
#: bookwyrm/templates/annual_summary/layout.html:149 #: bookwyrm/templates/annual_summary/layout.html:161
#: bookwyrm/templates/annual_summary/layout.html:170 #: bookwyrm/templates/annual_summary/layout.html:182
#, python-format #, python-format
msgid "<strong>%(pages)s</strong> pages" msgid "<strong>%(pages)s</strong> pages"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:157 #: bookwyrm/templates/annual_summary/layout.html:169
msgid "…and the longest" msgid "…and the longest"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:187 #: bookwyrm/templates/annual_summary/layout.html:199
#, python-format #, python-format
msgid "%(display_name)s left %(ratings_total)s ratings, <br />their average rating is %(rating_average)s" msgid "%(display_name)s left %(ratings_total)s rating, <br />their average rating is %(rating_average)s"
msgstr "" msgid_plural "%(display_name)s left %(ratings_total)s ratings, <br />their average rating is %(rating_average)s"
msgstr[0] ""
#: bookwyrm/templates/annual_summary/layout.html:197 #: bookwyrm/templates/annual_summary/layout.html:213
msgid "Their best rated review" msgid "Their best rated review"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:210 #: bookwyrm/templates/annual_summary/layout.html:226
#, python-format #, python-format
msgid "Their rating: <strong>%(rating)s</strong>" msgid "Their rating: <strong>%(rating)s</strong>"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:227 #: bookwyrm/templates/annual_summary/layout.html:243
#, python-format #, python-format
msgid "All the books %(display_name)s read in 2021" msgid "All the books %(display_name)s read in %(year)s"
msgstr "" msgstr ""
#: bookwyrm/templates/author/author.html:18 #: bookwyrm/templates/author/author.html:18

Binary file not shown.

View file

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-28 15:00+0000\n" "POT-Creation-Date: 2021-12-28 20:12+0000\n"
"PO-Revision-Date: 2021-12-28 16:03\n" "PO-Revision-Date: 2021-12-28 21:17\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Chinese Traditional\n" "Language-Team: Chinese Traditional\n"
"Language: zh\n" "Language: zh\n"
@ -263,75 +263,76 @@ msgstr ""
msgid "Share this page" msgid "Share this page"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:61 #: bookwyrm/templates/annual_summary/layout.html:67
msgid "Copy address" msgid "Copy address"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:61 #: bookwyrm/templates/annual_summary/layout.html:68
#: bookwyrm/templates/lists/list.html:194 #: bookwyrm/templates/lists/list.html:194
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:69 #: bookwyrm/templates/annual_summary/layout.html:77
msgid "Sharing status: <strong>public with key</strong>" msgid "Sharing status: <strong>public with key</strong>"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:70 #: bookwyrm/templates/annual_summary/layout.html:78
msgid "The page can be seen by anyone with the complete address." msgid "The page can be seen by anyone with the complete address."
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:75 #: bookwyrm/templates/annual_summary/layout.html:83
msgid "Make page private" msgid "Make page private"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:81 #: bookwyrm/templates/annual_summary/layout.html:89
msgid "Sharing status: <strong>private</strong>" msgid "Sharing status: <strong>private</strong>"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:82 #: bookwyrm/templates/annual_summary/layout.html:90
msgid "The page is private, only you can see it." msgid "The page is private, only you can see it."
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:87 #: bookwyrm/templates/annual_summary/layout.html:95
msgid "Make page public" msgid "Make page public"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:91 #: bookwyrm/templates/annual_summary/layout.html:99
msgid "When you make your page private, the old key wont give access to the page anymore. A new key will be created if the page is once again made public." msgid "When you make your page private, the old key wont give access to the page anymore. A new key will be created if the page is once again made public."
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:104 #: bookwyrm/templates/annual_summary/layout.html:112
#, python-format #, python-format
msgid "Sadly %(display_name)s didnt finish any book in %(year)s" msgid "Sadly %(display_name)s didnt finish any book in %(year)s"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:110 #: bookwyrm/templates/annual_summary/layout.html:118
#, python-format #, python-format
msgid "In %(year)s, %(display_name)s read %(books_total)s books<br />for a total of %(pages_total)s pages!" msgid "In %(year)s, %(display_name)s read %(books_total)s book<br />for a total of %(pages_total)s pages!"
msgstr "" msgid_plural "In %(year)s, %(display_name)s read %(books_total)s books<br />for a total of %(pages_total)s pages!"
msgstr[0] ""
#: bookwyrm/templates/annual_summary/layout.html:112 #: bookwyrm/templates/annual_summary/layout.html:124
msgid "Thats great!" msgid "Thats great!"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:115 #: bookwyrm/templates/annual_summary/layout.html:127
#, python-format #, python-format
msgid "That makes an average of %(pages)s pages per book." msgid "That makes an average of %(pages)s pages per book."
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:120 #: bookwyrm/templates/annual_summary/layout.html:132
#, python-format #, python-format
msgid "(%(no_page_number)s book doesnt have pages)" msgid "(%(no_page_number)s book doesnt have pages)"
msgid_plural "(%(no_page_number)s books dont have pages)" msgid_plural "(%(no_page_number)s books dont have pages)"
msgstr[0] "" msgstr[0] ""
#: bookwyrm/templates/annual_summary/layout.html:136 #: bookwyrm/templates/annual_summary/layout.html:148
msgid "Their shortest read this year…" msgid "Their shortest read this year…"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:143 #: bookwyrm/templates/annual_summary/layout.html:155
#: bookwyrm/templates/annual_summary/layout.html:164 #: bookwyrm/templates/annual_summary/layout.html:176
#: bookwyrm/templates/annual_summary/layout.html:204 #: bookwyrm/templates/annual_summary/layout.html:220
#: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/book/book.html:47
#: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/discover/large-book.html:22
#: bookwyrm/templates/landing/large-book.html:25 #: bookwyrm/templates/landing/large-book.html:25
@ -339,33 +340,34 @@ msgstr ""
msgid "by" msgid "by"
msgstr "作者" msgstr "作者"
#: bookwyrm/templates/annual_summary/layout.html:149 #: bookwyrm/templates/annual_summary/layout.html:161
#: bookwyrm/templates/annual_summary/layout.html:170 #: bookwyrm/templates/annual_summary/layout.html:182
#, python-format #, python-format
msgid "<strong>%(pages)s</strong> pages" msgid "<strong>%(pages)s</strong> pages"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:157 #: bookwyrm/templates/annual_summary/layout.html:169
msgid "…and the longest" msgid "…and the longest"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:187 #: bookwyrm/templates/annual_summary/layout.html:199
#, python-format #, python-format
msgid "%(display_name)s left %(ratings_total)s ratings, <br />their average rating is %(rating_average)s" msgid "%(display_name)s left %(ratings_total)s rating, <br />their average rating is %(rating_average)s"
msgstr "" msgid_plural "%(display_name)s left %(ratings_total)s ratings, <br />their average rating is %(rating_average)s"
msgstr[0] ""
#: bookwyrm/templates/annual_summary/layout.html:197 #: bookwyrm/templates/annual_summary/layout.html:213
msgid "Their best rated review" msgid "Their best rated review"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:210 #: bookwyrm/templates/annual_summary/layout.html:226
#, python-format #, python-format
msgid "Their rating: <strong>%(rating)s</strong>" msgid "Their rating: <strong>%(rating)s</strong>"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:227 #: bookwyrm/templates/annual_summary/layout.html:243
#, python-format #, python-format
msgid "All the books %(display_name)s read in 2021" msgid "All the books %(display_name)s read in %(year)s"
msgstr "" msgstr ""
#: bookwyrm/templates/author/author.html:18 #: bookwyrm/templates/author/author.html:18