Merge branch 'main' into frontend/subtitle

This commit is contained in:
Fabien Basmaison 2021-06-09 10:14:34 +02:00
commit b9562e44e3
43 changed files with 1258 additions and 1026 deletions

View file

@ -13,16 +13,10 @@ DEFAULT_LANGUAGE="English"
## Leave unset to allow all hosts
# ALLOWED_HOSTS="localhost,127.0.0.1,[::1]"
OL_URL=https://openlibrary.org
## Database backend to use.
## Default is postgres, sqlite is for dev quickstart only (NOT production!!!)
BOOKWYRM_DATABASE_BACKEND=postgres
MEDIA_ROOT=images/
POSTGRES_PORT=5432
POSTGRES_PASSWORD=fedireads
POSTGRES_PASSWORD=securedbypassword123
POSTGRES_USER=fedireads
POSTGRES_DB=fedireads
POSTGRES_HOST=db
@ -34,10 +28,8 @@ REDIS_ACTIVITY_PORT=6379
#REDIS_ACTIVITY_PASSWORD=redispassword345
# Redis as celery broker
#REDIS_BROKER_PORT=6379
REDIS_BROKER_PORT=6379
#REDIS_BROKER_PASSWORD=redispassword123
CELERY_BROKER=redis://redis_broker:6379/0
CELERY_RESULT_BACKEND=redis://redis_broker:6379/0
FLOWER_PORT=8888
#FLOWER_USER=mouse
@ -49,6 +41,3 @@ EMAIL_HOST_USER=mail@your.domain.here
EMAIL_HOST_PASSWORD=emailpassword123
EMAIL_USE_TLS=true
EMAIL_USE_SSL=false
# Set this to true when initializing certbot for domain, false when not
CERTBOT_INIT=false

View file

@ -13,16 +13,10 @@ DEFAULT_LANGUAGE="English"
## Leave unset to allow all hosts
# ALLOWED_HOSTS="localhost,127.0.0.1,[::1]"
OL_URL=https://openlibrary.org
## Database backend to use.
## Default is postgres, sqlite is for dev quickstart only (NOT production!!!)
BOOKWYRM_DATABASE_BACKEND=postgres
MEDIA_ROOT=images/
POSTGRES_PORT=5432
POSTGRES_PASSWORD=securedbpassword123
POSTGRES_PASSWORD=securedbypassword123
POSTGRES_USER=fedireads
POSTGRES_DB=fedireads
POSTGRES_HOST=db
@ -36,8 +30,6 @@ REDIS_ACTIVITY_PASSWORD=redispassword345
# Redis as celery broker
REDIS_BROKER_PORT=6379
REDIS_BROKER_PASSWORD=redispassword123
CELERY_BROKER=redis://:${REDIS_BROKER_PASSWORD}@redis_broker:${REDIS_BROKER_PORT}/0
CELERY_RESULT_BACKEND=redis://:${REDIS_BROKER_PASSWORD}@redis_broker:${REDIS_BROKER_PORT}/0
FLOWER_PORT=8888
FLOWER_USER=mouse
@ -49,6 +41,3 @@ EMAIL_HOST_USER=mail@your.domain.here
EMAIL_HOST_PASSWORD=emailpassword123
EMAIL_USE_TLS=true
EMAIL_USE_SSL=false
# Set this to true when initializing certbot for domain, false when not
CERTBOT_INIT=false

View file

@ -50,7 +50,6 @@ jobs:
SECRET_KEY: beepbeep
DEBUG: true
DOMAIN: your.domain.here
OL_URL: https://openlibrary.org
BOOKWYRM_DATABASE_BACKEND: postgres
MEDIA_ROOT: images/
POSTGRES_PASSWORD: hunter2
@ -58,7 +57,8 @@ jobs:
POSTGRES_DB: github_actions
POSTGRES_HOST: 127.0.0.1
CELERY_BROKER: ""
CELERY_RESULT_BACKEND: ""
REDIS_BROKER_PORT: 6379
FLOWER_PORT: 8888
EMAIL_HOST: "smtp.mailgun.org"
EMAIL_PORT: 587
EMAIL_HOST_USER: ""

View file

@ -9,5 +9,3 @@ WORKDIR /app
COPY requirements.txt /app/
RUN pip install -r requirements.txt --no-cache-dir
RUN apt-get update && apt-get install -y gettext libgettextpo-dev && apt-get clean
COPY ./bookwyrm ./celerywyrm /app/

View file

@ -9,6 +9,7 @@ from django.contrib.postgres.fields import ArrayField as DjangoArrayField
from django.core.exceptions import ValidationError
from django.core.files.base import ContentFile
from django.db import models
from django.forms import ClearableFileInput, ImageField
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from bookwyrm import activitypub
@ -332,6 +333,14 @@ class TagField(ManyToManyField):
return items
class ClearableFileInputWithWarning(ClearableFileInput):
template_name = "widgets/clearable_file_input_with_warning.html"
class CustomImageField(ImageField):
widget = ClearableFileInputWithWarning
def image_serializer(value, alt):
"""helper for serializing images"""
if value and hasattr(value, "url"):
@ -395,6 +404,14 @@ class ImageField(ActivitypubFieldMixin, models.ImageField):
image_content = ContentFile(response.content)
return [image_name, image_content]
def formfield(self, **kwargs):
return super().formfield(
**{
"form_class": CustomImageField,
**kwargs,
}
)
class DateTimeField(ActivitypubFieldMixin, models.DateTimeField):
"""activitypub-aware datetime field"""

View file

@ -14,13 +14,18 @@ PAGE_LENGTH = env("PAGE_LENGTH", 15)
DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English")
# celery
CELERY_BROKER = env("CELERY_BROKER")
CELERY_RESULT_BACKEND = env("CELERY_RESULT_BACKEND")
CELERY_BROKER = "redis://:{}@redis_broker:{}/0".format(
requests.utils.quote(env("REDIS_BROKER_PASSWORD", "")), env("REDIS_BROKER_PORT")
)
CELERY_RESULT_BACKEND = "redis://:{}@redis_broker:{}/0".format(
requests.utils.quote(env("REDIS_BROKER_PASSWORD", "")), env("REDIS_BROKER_PORT")
)
CELERY_ACCEPT_CONTENT = ["application/json"]
CELERY_TASK_SERIALIZER = "json"
CELERY_RESULT_SERIALIZER = "json"
# email
EMAIL_BACKEND = env("EMAIL_BACKEND", "django.core.mail.backends.smtp.EmailBackend")
EMAIL_HOST = env("EMAIL_HOST")
EMAIL_PORT = env("EMAIL_PORT", 587)
EMAIL_HOST_USER = env("EMAIL_HOST_USER")
@ -47,7 +52,6 @@ SECRET_KEY = env("SECRET_KEY")
DEBUG = env.bool("DEBUG", True)
ALLOWED_HOSTS = env.list("ALLOWED_HOSTS", ["*"])
OL_URL = env("OL_URL")
# Application definition
@ -109,10 +113,8 @@ STREAMS = ["home", "local", "federated"]
# Database
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases
BOOKWYRM_DATABASE_BACKEND = env("BOOKWYRM_DATABASE_BACKEND", "postgres")
BOOKWYRM_DBS = {
"postgres": {
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql_psycopg2",
"NAME": env("POSTGRES_DB", "fedireads"),
"USER": env("POSTGRES_USER", "fedireads"),
@ -122,8 +124,6 @@ BOOKWYRM_DBS = {
},
}
DATABASES = {"default": BOOKWYRM_DBS[BOOKWYRM_DATABASE_BACKEND]}
LOGIN_URL = "/login/"
AUTH_USER_MODEL = "bookwyrm.User"
@ -131,6 +131,7 @@ AUTH_USER_MODEL = "bookwyrm.User"
# Password validation
# https://docs.djangoproject.com/en/3.2/ref/settings/#auth-password-validators
# pylint: disable=line-too-long
AUTH_PASSWORD_VALIDATORS = [
{
"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",

View file

@ -3,6 +3,7 @@
let BookWyrm = new class {
constructor() {
this.MAX_FILE_SIZE_BYTES = 10 * 1000000
this.initOnDOMLoaded();
this.initReccuringTasks();
this.initEventListeners();
@ -32,15 +33,26 @@ let BookWyrm = new class {
'click',
this.back)
);
document.querySelectorAll('input[type="file"]')
.forEach(node => node.addEventListener(
'change',
this.disableIfTooLarge.bind(this)
));
}
/**
* Execute code once the DOM is loaded.
*/
initOnDOMLoaded() {
const bookwyrm = this
window.addEventListener('DOMContentLoaded', function() {
document.querySelectorAll('.tab-group')
.forEach(tabs => new TabGroup(tabs));
document.querySelectorAll('input[type="file"]').forEach(
bookwyrm.disableIfTooLarge.bind(bookwyrm)
)
});
}
@ -284,4 +296,27 @@ let BookWyrm = new class {
node.classList.remove(classname);
}
}
disableIfTooLarge(eventOrElement) {
const { addRemoveClass, MAX_FILE_SIZE_BYTES } = this
const element = eventOrElement.currentTarget || eventOrElement
const submits = element.form.querySelectorAll('[type="submit"]')
const warns = element.parentElement.querySelectorAll('.file-too-big')
const isTooBig = element.files &&
element.files[0] &&
element.files[0].size > MAX_FILE_SIZE_BYTES
if (isTooBig) {
submits.forEach(submitter => submitter.disabled = true)
warns.forEach(
sib => addRemoveClass(sib, 'is-hidden', false)
)
} else {
submits.forEach(submitter => submitter.disabled = false)
warns.forEach(
sib => addRemoveClass(sib, 'is-hidden', true)
)
}
}
}

View file

@ -22,42 +22,76 @@
</div>
</div>
<div class="block content columns">
{% if author.aliases or author.born or author.died or author.wikipedia_link %}
<div class="column is-narrow">
<div class="box">
<div class="block columns" itemscope itemtype="https://schema.org/Person">
<meta itemprop="name" content="{{ author.name }}">
{% if author.aliases or author.born or author.died or author.wikipedia_link or author.openlibrary_key or author.inventaire_id %}
<div class="column is-two-fifths">
<div class="box py-2">
<dl>
{% if author.aliases %}
<div class="is-flex">
<dt class="mr-1">{% trans "Aliases:" %}</dt>
<dd itemprop="aliases">{{ author.aliases|join:', ' }}</dd>
<div class="is-flex is-flex-wrap-wrap my-1">
<dt class="has-text-weight-bold mr-1">{% trans "Aliases:" %}</dt>
{% for alias in author.aliases %}
<dd itemprop="alternateName" content="{{alias}}">
{{alias}}{% if not forloop.last %},&nbsp;{% endif %}
</dd>
{% endfor %}
</div>
{% endif %}
{% if author.born %}
<div class="is-flex">
<dt class="mr-1">{% trans "Born:" %}</dt>
<dd itemprop="aliases">{{ author.born|naturalday }}</dd>
<div class="is-flex my-1">
<dt class="has-text-weight-bold mr-1">{% trans "Born:" %}</dt>
<dd itemprop="birthDate">{{ author.born|naturalday }}</dd>
</div>
{% endif %}
{% if author.died %}
<div class="is-flex">
<dt class="mr-1">{% trans "Died:" %}</dt>
<dd itemprop="aliases">{{ author.died|naturalday }}</dd>
<div class="is-flex my-1">
<dt class="has-text-weight-bold mr-1">{% trans "Died:" %}</dt>
<dd itemprop="deathDate">{{ author.died|naturalday }}</dd>
</div>
{% endif %}
</dl>
{% if author.wikipedia_link %}
<p><a href="{{ author.wikipedia_link }}" rel=”noopener” target="_blank">{% trans "Wikipedia" %}</a></p>
{% endif %}
{% if author.openlibrary_key %}
<p class="mb-0">
<a href="https://openlibrary.org/authors/{{ author.openlibrary_key }}" target="_blank" rel="noopener">{% trans "View on OpenLibrary" %}</a>
<p class="my-1">
<a itemprop="sameAs" href="{{ author.wikipedia_link }}" rel=”noopener” target="_blank">
{% trans "Wikipedia" %}
</a>
</p>
{% endif %}
{% if author.openlibrary_key %}
<p class="my-1">
<a itemprop="sameAs" href="https://openlibrary.org/authors/{{ author.openlibrary_key }}" target="_blank" rel="noopener">
{% trans "View on OpenLibrary" %}
</a>
</p>
{% endif %}
{% if author.inventaire_id %}
<p class="mb-0">
<a href="https://inventaire.io/entity/{{ author.inventaire_id }}" target="_blank" rel="noopener">{% trans "View on Inventaire" %}</a>
<p class="my-1">
<a itemprop="sameAs" href="https://inventaire.io/entity/{{ author.inventaire_id }}" target="_blank" rel="noopener">
{% trans "View on Inventaire" %}
</a>
</p>
{% endif %}
{% if author.librarything_key %}
<p class="my-1">
<a itemprop="sameAs" href="https://www.librarything.com/author/{{ author.librarything_key }}" target="_blank" rel="noopener">
{% trans "View on LibraryThing" %}
</a>
</p>
{% endif %}
{% if author.goodreads_key %}
<p class="my-1">
<a itemprop="sameAs" href="https://www.goodreads.com/author/show/{{ author.goodreads_key }}" target="_blank" rel="noopener">
{% trans "View on Goodreads" %}
</a>
</p>
{% endif %}
</div>

View file

@ -29,67 +29,85 @@
<div class="columns">
<div class="column">
<h2 class="title is-4">{% trans "Metadata" %}</h2>
<p class="mb-2"><label class="label" for="id_name">{% trans "Name:" %}</label> {{ form.name }}</p>
{% for error in form.name.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
<div class="field">
<label class="label" for="id_name">{% trans "Name:" %}</label>
{{ form.name }}
{% for error in form.name.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2">
<div class="field">
<label class="label" for="id_aliases">{% trans "Aliases:" %}</label>
{{ form.aliases }}
<span class="help">{% trans "Separate multiple values with commas." %}</span>
</p>
{% for error in form.aliases.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
{% for error in form.aliases.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2"><label class="label" for="id_bio">{% trans "Bio:" %}</label> {{ form.bio }}</p>
{% for error in form.bio.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
<div class="field">
<label class="label" for="id_bio">{% trans "Bio:" %}</label>
{{ form.bio }}
{% for error in form.bio.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2"><label class="label" for="id_wikipedia_link">{% trans "Wikipedia link:" %}</label> {{ form.wikipedia_link }}</p>
<p class="field"><label class="label" for="id_wikipedia_link">{% trans "Wikipedia link:" %}</label> {{ form.wikipedia_link }}</p>
{% for error in form.wikipedia_link.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
<p class="mb-2">
<div class="field">
<label class="label" for="id_born">{% trans "Birth date:" %}</label>
<input type="date" name="born" value="{{ form.born.value|date:'Y-m-d' }}" class="input" id="id_born">
</p>
{% for error in form.born.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
{% for error in form.born.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2">
<div class="field">
<label class="label" for="id_died">{% trans "Death date:" %}</label>
<input type="date" name="died" value="{{ form.died.value|date:'Y-m-d' }}" class="input" id="id_died">
</p>
{% for error in form.died.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
{% for error in form.died.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
</div>
<div class="column">
<h2 class="title is-4">{% trans "Author Identifiers" %}</h2>
<p class="mb-2"><label class="label" for="id_openlibrary_key">{% trans "Openlibrary key:" %}</label> {{ form.openlibrary_key }}</p>
{% for error in form.openlibrary_key.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
<div class="field">
<label class="label" for="id_openlibrary_key">{% trans "Openlibrary key:" %}</label>
{{ form.openlibrary_key }}
{% for error in form.openlibrary_key.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2"><label class="label" for="id_inventaire_id">{% trans "Inventaire ID:" %}</label> {{ form.inventaire_id }}</p>
{% for error in form.inventaire_id.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
<div class="field">
<label class="label" for="id_inventaire_id">{% trans "Inventaire ID:" %}</label>
{{ form.inventaire_id }}
{% for error in form.inventaire_id.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2"><label class="label" for="id_librarything_key">{% trans "Librarything key:" %}</label> {{ form.librarything_key }}</p>
{% for error in form.librarything_key.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
<div class="field">
<label class="label" for="id_librarything_key">{% trans "Librarything key:" %}</label>
{{ form.librarything_key }}
{% for error in form.librarything_key.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2"><label class="label" for="id_goodreads_key">{% trans "Goodreads key:" %}</label> {{ form.goodreads_key }}</p>
{% for error in form.goodreads_key.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
<div class="field">
<label class="label" for="id_goodreads_key">{% trans "Goodreads key:" %}</label>
{{ form.goodreads_key }}
{% for error in form.goodreads_key.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
</div>
</div>

View file

@ -14,11 +14,25 @@
{% endif %}
</h1>
{% if book %}
<div>
<p>{% trans "Added:" %} {{ book.created_date | naturaltime }}</p>
<p>{% trans "Updated:" %} {{ book.updated_date | naturaltime }}</p>
<p>{% trans "Last edited by:" %} <a href="{{ book.last_edited_by.remote_id }}">{{ book.last_edited_by.display_name }}</a></p>
</div>
<dl>
<div class="is-flex">
<dt class="has-text-weight-semibold">{% trans "Added:" %}</dt>
<dd class="ml-2">{{ book.created_date | naturaltime }}</dd>
</div>
<div class="is-flex">
<dt class="has-text-weight-semibold">{% trans "Updated:" %}</dt>
<dd class="ml-2">{{ book.updated_date | naturaltime }}</dd>
</div>
{% if book.last_edited_by %}
<div class="is-flex">
<dt class="has-text-weight-semibold">{% trans "Last edited by:" %}</dt>
<dd class="ml-2"><a href="{{ book.last_edited_by.remote_id }}">{{ book.last_edited_by.display_name }}</a></dd>
</div>
{% endif %}
</dl>
{% endif %}
</header>
@ -38,21 +52,28 @@
{% if confirm_mode %}
<div class="box">
<h2 class="title is-4">{% trans "Confirm Book Info" %}</h2>
<div class="columns">
<div class="columns mb-4">
{% if author_matches %}
<input type="hidden" name="author-match-count" value="{{ author_matches|length }}">
<div class="column is-half">
{% for author in author_matches %}
<fieldset class="mb-4">
<legend class="title is-5 mb-1">{% blocktrans with name=author.name %}Is "{{ name }}" an existing author?{% endblocktrans %}</legend>
<fieldset>
<legend class="title is-5 mb-1">
{% blocktrans with name=author.name %}Is "{{ name }}" an existing author?{% endblocktrans %}
</legend>
{% with forloop.counter0 as counter %}
{% for match in author.matches %}
<label><input type="radio" name="author_match-{{ counter }}" value="{{ match.id }}" required> {{ match.name }}</label>
<label class="label mb-2">
<input type="radio" name="author_match-{{ counter }}" value="{{ match.id }}" required>
{{ match.name }}
</label>
<p class="help">
<a href="{{ match.local_path }}" target="_blank">{% blocktrans with book_title=match.book_set.first.title %}Author of <em>{{ book_title }}</em>{% endblocktrans %}</a>
</p>
{% endfor %}
<label><input type="radio" name="author_match-{{ counter }}" value="{{ author.name }}" required> {% trans "This is a new author" %}</label>
<label class="label">
<input type="radio" name="author_match-{{ counter }}" value="{{ author.name }}" required> {% trans "This is a new author" %}
</label>
{% endwith %}
</fieldset>
{% endfor %}
@ -64,11 +85,17 @@
{% if not book %}
<div class="column is-half">
<fieldset>
<legend class="title is-5 mb-1">{% trans "Is this an edition of an existing work?" %}</legend>
<legend class="title is-5 mb-1">
{% trans "Is this an edition of an existing work?" %}
</legend>
{% for match in book_matches %}
<label class="label"><input type="radio" name="parent_work" value="{{ match.parent_work.id }}"> {{ match.parent_work.title }}</label>
<label class="label">
<input type="radio" name="parent_work" value="{{ match.parent_work.id }}"> {{ match.parent_work.title }}
</label>
{% endfor %}
<label><input type="radio" name="parent_work" value="0" required> {% trans "This is a new work" %}</label>
<label>
<input type="radio" name="parent_work" value="0" required> {% trans "This is a new work" %}
</label>
</fieldset>
</div>
{% endif %}
@ -89,76 +116,79 @@
<section class="block">
<h2 class="title is-4">{% trans "Metadata" %}</h2>
<p class="mb-2">
<div class="field">
<label class="label" for="id_title">{% trans "Title:" %}</label>
<input type="text" name="title" value="{{ form.title.value|default:'' }}" maxlength="255" class="input" required="" id="id_title">
</p>
{% for error in form.title.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
{% for error in form.title.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2">
<div class="field">
<label class="label" for="id_subtitle">{% trans "Subtitle:" %}</label>
<input type="text" name="subtitle" value="{{ form.subtitle.value|default:'' }}" maxlength="255" class="input" id="id_subtitle">
</p>
{% for error in form.subtitle.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
{% for error in form.subtitle.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2"><label class="label" for="id_description">{% trans "Description:" %}</label> {{ form.description }} </p>
{% for error in form.description.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
<div class="field">
<label class="label" for="id_description">{% trans "Description:" %}</label>
{{ form.description }}
{% for error in form.description.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2">
<div class="field">
<label class="label" for="id_series">{% trans "Series:" %}</label>
<input type="text" class="input" name="series" id="id_series" value="{{ form.series.value|default:'' }}">
</p>
{% for error in form.series.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
{% for error in form.series.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2">
<div class="field">
<label class="label" for="id_series_number">{% trans "Series number:" %}</label>
{{ form.series_number }}
</p>
{% for error in form.series_number.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
{% for error in form.series_number.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2">
<div class="field">
<label class="label" for="id_languages">{% trans "Languages:" %}</label>
{{ form.languages }}
<span class="help">{% trans "Separate multiple values with commas." %}</span>
</p>
{% for error in form.languages.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
{% for error in form.languages.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2">
<div class="field">
<label class="label" for="id_publishers">{% trans "Publisher:" %}</label>
{{ form.publishers }}
<span class="help">{% trans "Separate multiple values with commas." %}</span>
</p>
{% for error in form.publishers.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
{% for error in form.publishers.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2">
<div class="field">
<label class="label" for="id_first_published_date">{% trans "First published date:" %}</label>
<input type="date" name="first_published_date" class="input" id="id_first_published_date"{% if form.first_published_date.value %} value="{{ form.first_published_date.value|date:'Y-m-d' }}"{% endif %}>
</p>
{% for error in form.first_published_date.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
{% for error in form.first_published_date.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2">
<div class="field">
<label class="label" for="id_published_date">{% trans "Published date:" %}</label>
<input type="date" name="published_date" class="input" id="id_published_date"{% if form.published_date.value %} value="{{ form.published_date.value|date:'Y-m-d'}}"{% endif %}>
</p>
{% for error in form.published_date.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
{% for error in form.published_date.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
</section>
<section class="block">
@ -166,16 +196,23 @@
{% if book.authors.exists %}
<fieldset>
{% for author in book.authors.all %}
<label class="label mb-2">
<input type="checkbox" name="remove_authors" value="{{ author.id }}" {% if author.id|stringformat:"i" in remove_authors %}checked{% endif %}>
{% blocktrans with name=author.name path=author.local_path %}Remove <a href="{{ path }}">{{ name }}</a>{% endblocktrans %}
</label>
<div class="is-flex is-justify-content-space-between">
<label class="label mb-2">
<input type="checkbox" name="remove_authors" value="{{ author.id }}" {% if author.id|stringformat:"i" in remove_authors %}checked{% endif %}>
{% blocktrans with name=author.name %}Remove {{ name }}{% endblocktrans %}
</label>
<p class="help">
<a href="{{ author.local_path }}">{% blocktrans with name=author.name %}Author page for {{ name }}{% endblocktrans %}</a>
</p>
</div>
{% endfor %}
</fieldset>
{% endif %}
<label class="label" for="id_add_author">{% trans "Add Authors:" %}</label>
<input class="input" type="text" name="add_author" id="id_add_author" placeholder="{% trans 'John Doe, Jane Smith' %}" value="{{ add_author }}" {% if confirm_mode %}readonly{% endif %}>
<span class="help">{% trans "Separate multiple values with commas." %}</span>
<div class="field">
<label class="label" for="id_add_author">{% trans "Add Authors:" %}</label>
<input class="input" type="text" name="add_author" id="id_add_author" placeholder="{% trans 'John Doe, Jane Smith' %}" value="{{ add_author }}" {% if confirm_mode %}readonly{% endif %}>
<span class="help">{% trans "Separate multiple values with commas." %}</span>
</div>
</section>
</div>
@ -188,17 +225,17 @@
<div class="column">
<div class="block">
<p>
<div class="field">
<label class="label" for="id_cover">{% trans "Upload cover:" %}</label>
{{ form.cover }}
</p>
</div>
{% if book %}
<p>
<div class="field">
<label class="label" for="id_cover_url">
{% trans "Load cover from url:" %}
</label>
<input class="input" name="cover-url" id="id_cover_url">
</p>
</div>
{% endif %}
{% for error in form.cover.errors %}
<p class="help is-danger">{{ error | escape }}</p>
@ -209,51 +246,72 @@
<div class="block">
<h2 class="title is-4">{% trans "Physical Properties" %}</h2>
<p class="mb-2"><label class="label" for="id_physical_format">{% trans "Format:" %}</label> {{ form.physical_format }} </p>
{% for error in form.physical_format.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
{% for error in form.physical_format.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
<div class="field">
<label class="label" for="id_physical_format">{% trans "Format:" %}</label>
{{ form.physical_format }}
{% for error in form.physical_format.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2"><label class="label" for="id_pages">{% trans "Pages:" %}</label> {{ form.pages }} </p>
{% for error in form.pages.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
<div class="field">
<label class="label" for="id_pages">{% trans "Pages:" %}</label>
{{ form.pages }}
{% for error in form.pages.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
</div>
<div class="block">
<h2 class="title is-4">{% trans "Book Identifiers" %}</h2>
<p class="mb-2"><label class="label" for="id_isbn_13">{% trans "ISBN 13:" %}</label> {{ form.isbn_13 }} </p>
{% for error in form.isbn_13.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
<div class="field">
<label class="label" for="id_isbn_13">{% trans "ISBN 13:" %}</label>
{{ form.isbn_13 }}
{% for error in form.isbn_13.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2"><label class="label" for="id_isbn_10">{% trans "ISBN 10:" %}</label> {{ form.isbn_10 }} </p>
{% for error in form.isbn_10.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
<div class="field">
<label class="label" for="id_isbn_10">{% trans "ISBN 10:" %}</label>
{{ form.isbn_10 }}
{% for error in form.isbn_10.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2"><label class="label" for="id_openlibrary_key">{% trans "Openlibrary ID:" %}</label> {{ form.openlibrary_key }} </p>
{% for error in form.openlibrary_key.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
<div class="field">
<label class="label" for="id_openlibrary_key">{% trans "Openlibrary ID:" %}</label>
{{ form.openlibrary_key }}
{% for error in form.openlibrary_key.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2"><label class="label" for="id_inventaire_id">{% trans "Inventaire ID:" %}</label> {{ form.inventaire_id }} </p>
{% for error in form.inventaire_id.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
<div class="field">
<label class="label" for="id_inventaire_id">{% trans "Inventaire ID:" %}</label>
{{ form.inventaire_id }}
{% for error in form.inventaire_id.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2"><label class="label" for="id_oclc_number">{% trans "OCLC Number:" %}</label> {{ form.oclc_number }} </p>
{% for error in form.oclc_number.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
<div class="field">
<label class="label" for="id_oclc_number">{% trans "OCLC Number:" %}</label>
{{ form.oclc_number }}
{% for error in form.oclc_number.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<p class="mb-2"><label class="label" for="id_asin">{% trans "ASIN:" %}</label> {{ form.asin }} </p>
{% for error in form.ASIN.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
<div class="field">
<label class="label" for="id_asin">{% trans "ASIN:" %}</label>
{{ form.asin }}
{% for error in form.ASIN.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
</div>
</div>
</div>
@ -261,7 +319,7 @@
{% if not confirm_mode %}
<div class="block">
<button class="button is-primary" type="submit">{% trans "Save" %}</button>
<a class="button" href="{{ book.local_path}}">{% trans "Cancel" %}</a>
<a class="button" href="{{ book.local_path }}">{% trans "Cancel" %}</a>
</div>
{% endif %}
</form>

View file

@ -11,7 +11,7 @@
{% trans "Close" as label %}
<div class="modal-card">
<header class="modal-card-head" tabindex="0" id="modal-title-{{ controls_text }}-{{ controls_uid }}">
<h2 class="modal-card-title" id="modal-card-title-{{ controls_text }}-{{ controls_uid }}">
<h2 class="modal-card-title is-flex-shrink-1" id="modal-card-title-{{ controls_text }}-{{ controls_uid }}">
{% block modal-title %}{% endblock %}
</h2>
{% include 'snippets/toggle/toggle_button.html' with label=label class="delete" nonbutton=True %}

View file

@ -41,8 +41,8 @@
</label>
</div>
<div class="field">
<label class="label">
<p>{% trans "Privacy setting for imported reviews:" %}</p>
<label>
<span class="label">{% trans "Privacy setting for imported reviews:" %}</span>
{% include 'snippets/privacy_select.html' with no_label=True %}
</label>
</div>

View file

@ -8,13 +8,17 @@
<div class="block">
<h1 class="title">{% trans "Import Status" %}</h1>
<p>
{% trans "Import started:" %} {{ job.created_date | naturaltime }}
</p>
{% if job.complete %}
<p>
{% trans "Import completed:" %} {{ task.date_done | naturaltime }}
</p>
<dl>
<div class="is-flex">
<dt class="has-text-weight-medium">{% trans "Import started:" %}</dt>
<dd class="ml-2">{{ job.created_date | naturaltime }}</dd>
</div>
{% if job.complete %}
<div class="is-flex">
<dt class="has-text-weight-medium">{% trans "Import completed:" %}</dt>
<dd class="ml-2">{{ task.date_done | naturaltime }}</dd>
</div>
</dl>
{% elif task.failed %}
<div class="notification is-danger">{% trans "TASK FAILED" %}</div>
{% endif %}
@ -22,8 +26,9 @@
<div class="block">
{% if not job.complete %}
{% trans "Import still in progress." %}
<p>
{% trans "Import still in progress." %}
<br/>
{% trans "(Hit reload to update!)" %}
</p>
{% endif %}
@ -49,16 +54,13 @@
<fieldset id="failed-imports">
<ul>
{% for item in failed_items %}
<li class="pb-1">
<input class="checkbox" type="checkbox" name="import_item" value="{{ item.id }}" id="import-item-{{ item.id }}">
<label for="import-item-{{ item.id }}">
Line {{ item.index }}:
<strong>{{ item.data.Title }}</strong> by
{{ item.data.Author }}
</label>
<p>
<li class="mb-2 is-flex is-align-items-start">
<input class="checkbox mt-1" type="checkbox" name="import_item" value="{{ item.id }}" id="import-item-{{ item.id }}">
<label class="ml-1" for="import-item-{{ item.id }}">
{% blocktrans with index=item.index title=item.data.Title author=item.data.Author %}Line {{ index }}: <strong>{{ title }}</strong> by {{ author }}{% endblocktrans %}
<br/>
{{ item.fail_reason }}.
</p>
</label>
</li>
{% endfor %}
</ul>

View file

@ -203,7 +203,7 @@
<div class="columns">
<div class="column is-one-fifth">
<p>
<a href="{% url 'about' %}">{% trans "About this server" %}</a>
<a href="{% url 'about' %}">{% trans "About this instance" %}</a>
</p>
{% if site.admin_email %}
<p>

View file

@ -3,7 +3,7 @@
{% block title %}
{% if server %}
{% blocktrans with server_name=server.server_name %}Reports: {{ server_name }}{% endblocktrans %}
{% blocktrans with instance_name=server.server_name %}Reports: {{ instance_name }}{% endblocktrans %}
{% else %}
{% trans "Reports" %}
{% endif %}
@ -11,7 +11,7 @@
{% block header %}
{% if server %}
{% blocktrans with server_name=server.server_name %}Reports: <small>{{ server_name }}</small>{% endblocktrans %}
{% blocktrans with instance_name=server.server_name %}Reports: <small>{{ instance_name }}</small>{% endblocktrans %}
<a href="{% url 'settings-reports' %}" class="help has-text-weight-normal">Clear filters</a>
{% else %}
{% trans "Reports" %}

View file

@ -36,7 +36,7 @@
</li>
<li>
{% url 'settings-federation' as url %}
<a href="{{ url }}"{% if url in request.path %} class="is-active" aria-selected="true"{% endif %}>{% trans "Federated Servers" %}</a>
<a href="{{ url }}"{% if url in request.path %} class="is-active" aria-selected="true"{% endif %}>{% trans "Federated Instances" %}</a>
</li>
</ul>
{% endif %}

View file

@ -1,10 +1,10 @@
{% extends 'settings/admin_layout.html' %}
{% load i18n %}
{% block title %}{% trans "Add server" %}{% endblock %}
{% block title %}{% trans "Add instance" %}{% endblock %}
{% block header %}
{% trans "Add server" %}
<a href="{% url 'settings-federation' %}" class="has-text-weight-normal help">{% trans "Back to server list" %}</a>
{% trans "Add instance" %}
<a href="{% url 'settings-federation' %}" class="has-text-weight-normal help">{% trans "Back to instance list" %}</a>
{% endblock %}
{% block panel %}
@ -17,7 +17,7 @@
</li>
{% url 'settings-add-federated-server' as url %}
<li {% if url in request.path %}class="is-active" aria-current="page"{% endif %}>
<a href="{{ url }}">{% trans "Add server" %}</a>
<a href="{{ url }}">{% trans "Add instance" %}</a>
</li>
</ul>
</div>
@ -26,14 +26,14 @@
{% csrf_token %}
<div class="columns">
<div class="column is-half">
<div>
<div class="field">
<label class="label" for="id_server_name">{% trans "Instance:" %}</label>
<input type="text" name="server_name" maxlength="255" class="input" required id="id_server_name" value="{{ form.server_name.value|default:'' }}" placeholder="domain.com">
{% for error in form.server_name.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<div>
<div class="field">
<label class="label" for="id_status">{% trans "Status:" %}</label>
<div class="select">
<select name="status" class="" id="id_status">
@ -44,14 +44,14 @@
</div>
</div>
<div class="column is-half">
<div>
<div class="field">
<label class="label" for="id_application_type">{% trans "Software:" %}</label>
<input type="text" name="application_type" maxlength="255" class="input" id="id_application_type" value="{{ form.application_type.value|default:'' }}">
{% for error in form.application_type.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<div>
<div class="field">
<label class="label" for="id_application_version">{% trans "Version:" %}</label>
<input type="text" name="application_version" maxlength="255" class="input" id="id_application_version" value="{{ form.application_version.value|default:'' }}">
{% for error in form.application_version.errors %}
@ -60,10 +60,10 @@
</div>
</div>
</div>
<p>
<div class="field">
<label class="label" for="id_notes">{% trans "Notes:" %}</label>
<textarea name="notes" cols="None" rows="None" class="textarea" id="id_notes">{{ form.notes.value|default:'' }}</textarea>
</p>
</div>
<button type="submit" class="button is-primary">{% trans "Save" %}</button>
</form>

View file

@ -1,13 +1,13 @@
{% extends 'settings/admin_layout.html' %}
{% load i18n %}
{% block title %}{% trans "Federated Servers" %}{% endblock %}
{% block title %}{% trans "Federated Instances" %}{% endblock %}
{% block header %}{% trans "Federated Servers" %}{% endblock %}
{% block header %}{% trans "Federated Instances" %}{% endblock %}
{% block edit-button %}
<a href="{% url 'settings-import-blocklist' %}">
<span class="icon icon-plus" title="{% trans 'Add server' %}" aria-hidden="True"></span>
<span>{% trans "Add server" %}</span>
<span class="icon icon-plus" title="{% trans 'Add instance' %}" aria-hidden="True"></span>
<span>{% trans "Add instance" %}</span>
</a>
{% endblock %}
@ -16,7 +16,7 @@
<tr>
{% url 'settings-federation' as url %}
<th>
{% trans "Server name" as text %}
{% trans "Instance name" as text %}
{% include 'snippets/table-sort-header.html' with field="server_name" sort=sort text=text %}
</th>
<th>

View file

@ -1,10 +1,10 @@
{% extends 'settings/admin_layout.html' %}
{% load i18n %}
{% block title %}{% trans "Add server" %}{% endblock %}
{% block title %}{% trans "Add instance" %}{% endblock %}
{% block header %}
{% trans "Import Blocklist" %}
<a href="{% url 'settings-federation' %}" class="has-text-weight-normal help">{% trans "Back to server list" %}</a>
<a href="{% url 'settings-federation' %}" class="has-text-weight-normal help">{% trans "Back to instance list" %}</a>
{% endblock %}
{% block panel %}
@ -17,7 +17,7 @@
</li>
{% url 'settings-add-federated-server' as url %}
<li {% if url in request.path %}class="is-active" aria-current="page"{% endif %}>
<a href="{{ url }}">{% trans "Add server" %}</a>
<a href="{{ url }}">{% trans "Add instance" %}</a>
</li>
</ul>
</div>
@ -51,7 +51,7 @@
<pre>
[
{
"instance": "example.server.com",
"instance": "example.instance.com",
"url": "https://link.to.more/info"
},
...

View file

@ -11,23 +11,23 @@
{% csrf_token %}
<section class="block" id="instance-info">
<h2 class="title is-4">{% trans "Instance Info" %}</h2>
<div class="control">
<div class="field">
<label class="label" for="id_name">{% trans "Instance Name:" %}</label>
{{ site_form.name }}
</div>
<div class="control">
<div class="field">
<label class="label" for="id_instance_tagline">{% trans "Tagline:" %}</label>
{{ site_form.instance_tagline }}
</div>
<div class="control">
<div class="field">
<label class="label" for="id_instance_description">{% trans "Instance description:" %}</label>
{{ site_form.instance_description }}
</div>
<div class="control">
<div class="field">
<label class="label" for="id_code_of_conduct">{% trans "Code of conduct:" %}</label>
{{ site_form.code_of_conduct }}
</div>
<div class="control">
<div class="field">
<label class="label" for="id_privacy_policy">{% trans "Privacy Policy:" %}</label>
{{ site_form.privacy_policy }}
</div>
@ -57,19 +57,19 @@
<section class="block" id="footer">
<h2 class="title is-4">{% trans "Footer Content" %}</h2>
<div class="control">
<div class="field">
<label class="label" for="id_support_link">{% trans "Support link:" %}</label>
<input type="text" name="support_link" maxlength="255" class="input" id="id_support_link" placeholder="https://www.patreon.com/bookwyrm"{% if site.support_link %} value="{{ site.support_link }}"{% endif %}>
</div>
<div class="control">
<div class="field">
<label class="label" for="id_support_title">{% trans "Support title:" %}</label>
<input type="text" name="support_title" maxlength="100" class="input" id="id_support_title" placeholder="Patreon"{% if site.support_title %} value="{{ site.support_title }}"{% endif %}>
</div>
<div class="control">
<div class="field">
<label class="label" for="id_admin_email">{% trans "Admin email:" %}</label>
{{ site_form.admin_email }}
</div>
<div class="control">
<div class="field">
<label class="label" for="id_footer_item">{% trans "Additional info:" %}</label>
{{ site_form.footer_item }}
</div>
@ -79,15 +79,19 @@
<section class="block" id="registration">
<h2 class="title is-4">{% trans "Registration" %}</h2>
<div class="control">
<label class="label" for="id_allow_registration">{% trans "Allow registration:" %}
{{ site_form.allow_registration }}
<div class="field">
<label class="label" for="id_allow_registration">
{{ site_form.allow_registration }}
{% trans "Allow registration" %}
</label>
</div>
<div class="control">
<label class="label" for="id_allow_invite_requests">{% trans "Allow invite requests:" %}
{{ site_form.allow_invite_requests }}
<div class="field">
<label class="label" for="id_allow_invite_requests">
{{ site_form.allow_invite_requests }}
{% trans "Allow invite requests" %}
</label>
</div>
<div class="control">
<div class="field">
<label class="label" for="id_registration_closed_text">{% trans "Registration closed text:" %}</label>
{{ site_form.registration_closed_text }}
</div>

View file

@ -3,10 +3,10 @@
<input type="hidden" name="id" value="{{ readthrough.id }}">
<input type="hidden" name="book" value="{{ book.id }}">
<div class="field">
<label class="label" tabindex="0" id="add-readthrough-focus">
<label class="label" tabindex="0" id="add-readthrough-focus" for="id_start_date-{{ readthrough.id }}">
{% trans "Started reading" %}
<input type="date" name="start_date" class="input" id="id_start_date-{{ readthrough.id }}" value="{{ readthrough.start_date | date:"Y-m-d" }}">
</label>
<input type="date" name="start_date" class="input" id="id_start_date-{{ readthrough.id }}" value="{{ readthrough.start_date | date:"Y-m-d" }}">
</div>
{# Only show progress for editing existing readthroughs #}
{% if readthrough.id and not readthrough.finish_date %}
@ -26,8 +26,8 @@
</div>
{% endif %}
<div class="field">
<label class="label">
<label class="label" for="id_finish_date-{{ readthrough.id }}">
{% trans "Finished reading" %}
<input type="date" name="finish_date" class="input" id="id_finish_date-{{ readthrough.id }}" value="{{ readthrough.finish_date | date:"Y-m-d" }}">
</label>
<input type="date" name="finish_date" class="input" id="id_finish_date-{{ readthrough.id }}" value="{{ readthrough.finish_date | date:"Y-m-d" }}">
</div>

View file

@ -15,16 +15,16 @@
{% csrf_token %}
<input type="hidden" name="id" value="{{ readthrough.id }}">
<div class="field">
<label class="label">
<label class="label" for="finish_id_start_date-{{ uuid }}">
{% trans "Started reading" %}
<input type="date" name="start_date" class="input" id="finish_id_start_date-{{ uuid }}" value="{{ readthrough.start_date | date:"Y-m-d" }}">
</label>
<input type="date" name="start_date" class="input" id="finish_id_start_date-{{ uuid }}" value="{{ readthrough.start_date | date:"Y-m-d" }}">
</div>
<div class="field">
<label class="label">
<label class="label" for="id_finish_date-{{ uuid }}">
{% trans "Finished reading" %}
<input type="date" name="finish_date" class="input" id="id_finish_date-{{ uuid }}" value="{% now "Y-m-d" %}">
</label>
<input type="date" name="finish_date" class="input" id="id_finish_date-{{ uuid }}" value="{% now "Y-m-d" %}">
</div>
</section>
{% endblock %}
@ -38,7 +38,7 @@
</label>
{% include 'snippets/privacy_select.html' %}
</div>
<div class="column">
<div class="column has-text-right">
<button type="submit" class="button is-success">{% trans "Save" %}</button>
{% trans "Cancel" as button_text %}
{% include 'snippets/toggle/close_button.html' with text=button_text controls_text="finish-reading" controls_uid=uuid %}

View file

@ -13,10 +13,10 @@
<section class="modal-card-body">
{% csrf_token %}
<div class="field">
<label class="label">
<label class="label" for="start_id_start_date-{{ uuid }}">
{% trans "Started reading" %}
<input type="date" name="start_date" class="input" id="start_id_start_date-{{ uuid }}" value="{% now "Y-m-d" %}">
</label>
<input type="date" name="start_date" class="input" id="start_id_start_date-{{ uuid }}" value="{% now "Y-m-d" %}">
</div>
</section>
{% endblock %}
@ -30,7 +30,7 @@
</label>
{% include 'snippets/privacy_select.html' %}
</div>
<div class="column">
<div class="column has-text-right">
<button class="button is-success" type="submit">{% trans "Save" %}</button>
{% trans "Cancel" as button_text %}
{% include 'snippets/toggle/toggle_button.html' with text=button_text controls_text="start-reading" controls_uid=uuid %}

View file

@ -2,6 +2,6 @@
{% load i18n %}
{% block filter %}
<label class="label" for="id_server">{% trans "Server name" %}</label>
<label class="label" for="id_server">{% trans "Instance name" %}</label>
<input type="text" class="input" name="server" value="{{ request.GET.server|default:'' }}" id="id_server" placeholder="example.server.com">
{% endblock %}

View file

@ -4,7 +4,7 @@
{% block header %}
{% if server %}
{% blocktrans with server_name=server.server_name %}Users: <small>{{ server_name }}</small>{% endblocktrans %}
{% blocktrans with instance_name=server.server_name %}Users: <small>{{ instance_name }}</small>{% endblocktrans %}
<a href="{% url 'settings-users' %}" class="help has-text-weight-normal">Clear filters</a>
{% else %}
{% trans "Users" %}
@ -35,7 +35,7 @@
{% include 'snippets/table-sort-header.html' with field="is_active" sort=sort text=text %}
</th>
<th>
{% trans "Remote server" as text %}
{% trans "Remote instance" as text %}
{% include 'snippets/table-sort-header.html' with field="federated_server__server_name" sort=sort text=text %}
</th>
</tr>

View file

@ -0,0 +1,24 @@
{% load i18n %}
{% load utilities %}
{% if widget.is_initial %}
<p class="mb-1">
{{ widget.initial_text }}:
<a href="{{ widget.value.url }}">{{ widget.value|truncatepath:10 }}</a>
</p>
{% if not widget.required %}
<p class="mb-1">
<label class="has-text-weight-normal">
<input type="checkbox" name="{{ widget.checkbox_name }}" id="{{ widget.checkbox_id }}"{% if widget.attrs.disabled %} disabled{% endif %}>
{{ widget.clear_checkbox_label }}
</label>{% endif %}
</p>
<p class="mb-1">
{{ widget.input_text }}:
{% else %}
<p class="mb-1">
{% endif %}
<input type="{{ widget.type }}" name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}>
<span class="help file-cta is-hidden file-too-big">{% trans "File exceeds maximum size: 10MB" %}</span>
</p>

View file

@ -1,4 +1,5 @@
""" template filters for really common utilities """
import os
from uuid import uuid4
from django import template
@ -33,3 +34,15 @@ def get_title(book):
def comparison_bool(str1, str2):
"""idk why I need to write a tag for this, it reutrns a bool"""
return str1 == str2
@register.filter(is_safe=True)
def truncatepath(value, arg):
"""Truncate a path by removing all directories except the first and truncating ."""
path = os.path.normpath(value.name)
path_list = path.split(os.sep)
try:
length = int(arg)
except ValueError: # invalid literal for int()
return path_list[-1] # Fail silently.
return "%s/…%s" % (path_list[0], path_list[-1][-length:])

2
bw-dev
View file

@ -90,7 +90,7 @@ case "$CMD" in
runweb python manage.py collectstatic --no-input
;;
makemessages)
runweb django-admin makemessages --no-wrap --ignore=venv $@
runweb django-admin makemessages --no-wrap --ignore=venv --all $@
;;
compilemessages)
runweb django-admin compilemessages --ignore venv $@

View file

@ -1,10 +1,10 @@
""" bookwyrm settings and configuration """
from bookwyrm.settings import *
CELERY_BROKER_URL = env("CELERY_BROKER")
CELERY_BROKER_URL = CELERY_BROKER
CELERY_ACCEPT_CONTENT = ["json"]
CELERY_TASK_SERIALIZER = "json"
CELERY_RESULT_BACKEND = "redis"
FLOWER_PORT = env("FLOWER_PORT")
INSTALLED_APPS = INSTALLED_APPS + [
"celerywyrm",

View file

@ -74,10 +74,10 @@ services:
restart: on-failure
flower:
build: .
command: flower --port=${FLOWER_PORT}
command: flower -A celerywyrm
env_file: .env
environment:
- CELERY_BROKER_URL=${CELERY_BROKER}
volumes:
- .:/app
networks:
- main
depends_on:

Binary file not shown.

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-20 14:40-0700\n"
"POT-Creation-Date: 2021-06-06 20:52+0000\n"
"PO-Revision-Date: 2021-03-02 17:19-0800\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: English <LL@li.org>\n"
@ -62,12 +62,12 @@ msgid "Book Title"
msgstr "Titel"
#: bookwyrm/forms.py:301 bookwyrm/templates/snippets/create_status_form.html:34
#: bookwyrm/templates/user/shelf/shelf.html:84
#: bookwyrm/templates/user/shelf/shelf.html:115
#: bookwyrm/templates/user/shelf/shelf.html:85
#: bookwyrm/templates/user/shelf/shelf.html:116
msgid "Rating"
msgstr ""
#: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:101
#: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:107
msgid "Sort By"
msgstr ""
@ -83,41 +83,41 @@ msgstr "Zu lesen angefangen"
msgid "Descending"
msgstr "Zu lesen angefangen"
#: bookwyrm/models/fields.py:24
#: bookwyrm/models/fields.py:25
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s ist keine gültige remote_id"
#: bookwyrm/models/fields.py:33 bookwyrm/models/fields.py:42
#: bookwyrm/models/fields.py:34 bookwyrm/models/fields.py:43
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s ist kein gültiger Username"
#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:155
#: bookwyrm/models/fields.py:166 bookwyrm/templates/layout.html:152
msgid "username"
msgstr "Username"
#: bookwyrm/models/fields.py:170
#: bookwyrm/models/fields.py:171
msgid "A user with that username already exists."
msgstr "Dieser Benutzename ist bereits vergeben."
#: bookwyrm/settings.py:155
#: bookwyrm/settings.py:156
msgid "English"
msgstr "Englisch"
#: bookwyrm/settings.py:156
#: bookwyrm/settings.py:157
msgid "German"
msgstr "Deutsch"
#: bookwyrm/settings.py:157
#: bookwyrm/settings.py:158
msgid "Spanish"
msgstr "Spanisch"
#: bookwyrm/settings.py:158
#: bookwyrm/settings.py:159
msgid "French"
msgstr "Französisch"
#: bookwyrm/settings.py:159
#: bookwyrm/settings.py:160
msgid "Simplified Chinese"
msgstr "Vereinfachtes Chinesisch"
@ -266,7 +266,7 @@ msgstr ""
#: bookwyrm/templates/book/edit_book.html:263
#: bookwyrm/templates/lists/form.html:42
#: bookwyrm/templates/preferences/edit_user.html:70
#: bookwyrm/templates/settings/announcement_form.html:65
#: bookwyrm/templates/settings/announcement_form.html:69
#: bookwyrm/templates/settings/edit_server.html:68
#: bookwyrm/templates/settings/federated_server.html:98
#: bookwyrm/templates/settings/site.html:97
@ -398,7 +398,7 @@ msgstr "Themen"
msgid "Places"
msgstr "Orte"
#: bookwyrm/templates/book/book.html:276 bookwyrm/templates/layout.html:64
#: bookwyrm/templates/book/book.html:276 bookwyrm/templates/layout.html:61
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@ -414,7 +414,7 @@ msgstr "Zur Liste"
#: bookwyrm/templates/book/book.html:297
#: bookwyrm/templates/book/cover_modal.html:31
#: bookwyrm/templates/lists/list.html:164
#: bookwyrm/templates/lists/list.html:179
msgid "Add"
msgstr "Hinzufügen"
@ -559,7 +559,7 @@ msgid "John Doe, Jane Smith"
msgstr ""
#: bookwyrm/templates/book/edit_book.html:183
#: bookwyrm/templates/user/shelf/shelf.html:77
#: bookwyrm/templates/user/shelf/shelf.html:78
msgid "Cover"
msgstr ""
@ -688,7 +688,7 @@ msgstr "Föderiert"
#: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9
#: bookwyrm/templates/layout.html:92
#: bookwyrm/templates/layout.html:64
msgid "Directory"
msgstr ""
@ -902,7 +902,7 @@ msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
msgstr "Direktnachrichten mit <a href=\"%(path)s\">%(username)s</a>"
#: bookwyrm/templates/feed/direct_messages.html:10
#: bookwyrm/templates/layout.html:87
#: bookwyrm/templates/layout.html:92
msgid "Direct Messages"
msgstr "Direktnachrichten"
@ -960,7 +960,6 @@ msgid "Updates"
msgstr ""
#: bookwyrm/templates/feed/feed_layout.html:10
#: bookwyrm/templates/layout.html:58
#: bookwyrm/templates/user/shelf/books_header.html:3
msgid "Your books"
msgstr "Deine Bücher"
@ -1022,7 +1021,7 @@ msgid "What are you reading?"
msgstr "Zu lesen angefangen"
#: bookwyrm/templates/get_started/books.html:9
#: bookwyrm/templates/lists/list.html:120
#: bookwyrm/templates/lists/list.html:135
msgid "Search for a book"
msgstr "Nach einem Buch suchen"
@ -1042,7 +1041,7 @@ msgstr ""
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/layout.html:37 bookwyrm/templates/layout.html:38
#: bookwyrm/templates/lists/list.html:124
#: bookwyrm/templates/lists/list.html:139
#: bookwyrm/templates/search/layout.html:4
#: bookwyrm/templates/search/layout.html:9
msgid "Search"
@ -1061,7 +1060,7 @@ msgid "Popular on %(site_name)s"
msgstr "Über %(site_name)s"
#: bookwyrm/templates/get_started/books.html:58
#: bookwyrm/templates/lists/list.html:137
#: bookwyrm/templates/lists/list.html:152
msgid "No books found"
msgstr "Keine Bücher gefunden"
@ -1184,7 +1183,7 @@ msgid "%(username)s's %(year)s Books"
msgstr "%(username)ss %(year)s Bücher"
#: bookwyrm/templates/import.html:5 bookwyrm/templates/import.html:9
#: bookwyrm/templates/layout.html:97
#: bookwyrm/templates/user/shelf/shelf.html:40
msgid "Import Books"
msgstr "Bücher importieren"
@ -1271,14 +1270,14 @@ msgstr "Buch"
#: bookwyrm/templates/import_status.html:114
#: bookwyrm/templates/snippets/create_status_form.html:13
#: bookwyrm/templates/user/shelf/shelf.html:78
#: bookwyrm/templates/user/shelf/shelf.html:98
#: bookwyrm/templates/user/shelf/shelf.html:79
#: bookwyrm/templates/user/shelf/shelf.html:99
msgid "Title"
msgstr "Titel"
#: bookwyrm/templates/import_status.html:117
#: bookwyrm/templates/user/shelf/shelf.html:79
#: bookwyrm/templates/user/shelf/shelf.html:101
#: bookwyrm/templates/user/shelf/shelf.html:80
#: bookwyrm/templates/user/shelf/shelf.html:102
msgid "Author"
msgstr "Autor*in"
@ -1320,15 +1319,21 @@ msgstr "Suche nach Buch oder Benutzer*in"
msgid "Main navigation menu"
msgstr "Navigationshauptmenü"
#: bookwyrm/templates/layout.html:61
#: bookwyrm/templates/layout.html:58
msgid "Feed"
msgstr ""
#: bookwyrm/templates/layout.html:102
#: bookwyrm/templates/layout.html:87
#, fuzzy
#| msgid "Your books"
msgid "Your Books"
msgstr "Deine Bücher"
#: bookwyrm/templates/layout.html:97
msgid "Settings"
msgstr "Einstellungen"
#: bookwyrm/templates/layout.html:111
#: bookwyrm/templates/layout.html:106
#: bookwyrm/templates/settings/admin_layout.html:31
#: bookwyrm/templates/settings/manage_invite_requests.html:15
#: bookwyrm/templates/settings/manage_invites.html:3
@ -1336,45 +1341,47 @@ msgstr "Einstellungen"
msgid "Invites"
msgstr "Einladungen"
#: bookwyrm/templates/layout.html:118
#: bookwyrm/templates/layout.html:113
msgid "Admin"
msgstr ""
#: bookwyrm/templates/layout.html:125
#: bookwyrm/templates/layout.html:120
msgid "Log out"
msgstr "Abmelden"
#: bookwyrm/templates/layout.html:133 bookwyrm/templates/layout.html:134
#: bookwyrm/templates/layout.html:128 bookwyrm/templates/layout.html:129
#: bookwyrm/templates/notifications.html:6
#: bookwyrm/templates/notifications.html:11
msgid "Notifications"
msgstr "Benachrichtigungen"
#: bookwyrm/templates/layout.html:154 bookwyrm/templates/layout.html:158
#: bookwyrm/templates/layout.html:151 bookwyrm/templates/layout.html:155
#: bookwyrm/templates/login.html:17
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
msgstr ""
#: bookwyrm/templates/layout.html:159
#: bookwyrm/templates/layout.html:156
msgid "password"
msgstr "Passwort"
#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:36
#: bookwyrm/templates/layout.html:157 bookwyrm/templates/login.html:36
msgid "Forgot your password?"
msgstr "Passwort vergessen?"
#: bookwyrm/templates/layout.html:163 bookwyrm/templates/login.html:10
#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:10
#: bookwyrm/templates/login.html:33
msgid "Log in"
msgstr "Anmelden"
#: bookwyrm/templates/layout.html:171
#: bookwyrm/templates/layout.html:168
msgid "Join"
msgstr ""
#: bookwyrm/templates/layout.html:206
msgid "About this server"
#, fuzzy
#| msgid "About this server"
msgid "About this instance"
msgstr "Über diesen Server"
#: bookwyrm/templates/layout.html:210
@ -1438,7 +1445,7 @@ msgid "Discard"
msgstr "Ablehnen"
#: bookwyrm/templates/lists/edit_form.html:5
#: bookwyrm/templates/lists/list_layout.html:17
#: bookwyrm/templates/lists/list_layout.html:16
msgid "Edit List"
msgstr "Liste bearbeiten"
@ -1487,63 +1494,64 @@ msgstr "Alle können Bücher hinzufügen"
msgid "This list is currently empty"
msgstr "Diese Liste ist momentan leer"
#: bookwyrm/templates/lists/list.html:65
#: bookwyrm/templates/lists/list.html:66
#, fuzzy, python-format
#| msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
msgstr "Direktnachrichten mit <a href=\"%(path)s\">%(username)s</a>"
#: bookwyrm/templates/lists/list.html:77
#, fuzzy
#| msgid "Started"
msgid "Set"
msgstr "Gestartet"
#: bookwyrm/templates/lists/list.html:80
#: bookwyrm/templates/lists/list.html:74
#, fuzzy
#| msgid "List curation:"
msgid "List position"
msgstr "Listenkuratierung:"
#: bookwyrm/templates/lists/list.html:86
#: bookwyrm/templates/lists/list.html:81
#, fuzzy
#| msgid "Started"
msgid "Set"
msgstr "Gestartet"
#: bookwyrm/templates/lists/list.html:89
#: bookwyrm/templates/snippets/shelf_selector.html:26
msgid "Remove"
msgstr "Entfernen"
#: bookwyrm/templates/lists/list.html:99 bookwyrm/templates/lists/list.html:111
#: bookwyrm/templates/lists/list.html:103
#: bookwyrm/templates/lists/list.html:120
#, fuzzy
#| msgid "Your Lists"
msgid "Sort List"
msgstr "Deine Listen"
#: bookwyrm/templates/lists/list.html:105
#: bookwyrm/templates/lists/list.html:113
#, fuzzy
#| msgid "List curation:"
msgid "Direction"
msgstr "Listenkuratierung:"
#: bookwyrm/templates/lists/list.html:116
#: bookwyrm/templates/lists/list.html:127
msgid "Add Books"
msgstr "Bücher hinzufügen"
#: bookwyrm/templates/lists/list.html:116
#: bookwyrm/templates/lists/list.html:129
msgid "Suggest Books"
msgstr "Bücher vorschlagen"
#: bookwyrm/templates/lists/list.html:125
#: bookwyrm/templates/lists/list.html:140
msgid "search"
msgstr "suchen"
#: bookwyrm/templates/lists/list.html:131
#: bookwyrm/templates/lists/list.html:146
msgid "Clear search"
msgstr "Suche leeren"
#: bookwyrm/templates/lists/list.html:136
#: bookwyrm/templates/lists/list.html:151
#, python-format
msgid "No books found matching the query \"%(query)s\""
msgstr "Keine passenden Bücher zu \"%(query)s\" gefunden"
#: bookwyrm/templates/lists/list.html:164
#: bookwyrm/templates/lists/list.html:179
msgid "Suggest"
msgstr "Vorschlagen"
@ -1643,7 +1651,7 @@ msgstr "Lösen"
#: bookwyrm/templates/moderation/reports.html:6
#, fuzzy, python-format
#| msgid "Lists: %(username)s"
msgid "Reports: %(server_name)s"
msgid "Reports: %(instance_name)s"
msgstr "Listen: %(username)s"
#: bookwyrm/templates/moderation/reports.html:8
@ -1657,7 +1665,7 @@ msgstr "Aktuelle Importe"
#: bookwyrm/templates/moderation/reports.html:14
#, fuzzy, python-format
#| msgid "Lists: %(username)s"
msgid "Reports: <small>%(server_name)s</small>"
msgid "Reports: <small>%(instance_name)s</small>"
msgstr "Listen: %(username)s"
#: bookwyrm/templates/moderation/reports.html:28
@ -1863,6 +1871,26 @@ msgstr "Profil"
msgid "Relationships"
msgstr "Beziehungen"
#: bookwyrm/templates/rss/title.html:5
#: bookwyrm/templates/snippets/status/status_header.html:35
msgid "rated"
msgstr ""
#: bookwyrm/templates/rss/title.html:7
#: bookwyrm/templates/snippets/status/status_header.html:37
msgid "reviewed"
msgstr "bewertete"
#: bookwyrm/templates/rss/title.html:9
#: bookwyrm/templates/snippets/status/status_header.html:39
msgid "commented on"
msgstr "kommentierte"
#: bookwyrm/templates/rss/title.html:11
#: bookwyrm/templates/snippets/status/status_header.html:41
msgid "quoted"
msgstr "zitierte"
#: bookwyrm/templates/search/book.html:64
#, fuzzy
#| msgid "Show results from other catalogues"
@ -1922,7 +1950,9 @@ msgstr "Nutzer*innen verwalten"
#: bookwyrm/templates/settings/admin_layout.html:39
#: bookwyrm/templates/settings/federation.html:3
#: bookwyrm/templates/settings/federation.html:5
msgid "Federated Servers"
#, fuzzy
#| msgid "Federated Servers"
msgid "Federated Instances"
msgstr "Föderierende Server"
#: bookwyrm/templates/settings/admin_layout.html:44
@ -1976,6 +2006,7 @@ msgid "Back to list"
msgstr "Zurück zu den Meldungen"
#: bookwyrm/templates/settings/announcement.html:11
#: bookwyrm/templates/settings/announcement_form.html:6
#, fuzzy
#| msgid "Announcements"
msgid "Edit Announcement"
@ -2017,7 +2048,7 @@ msgstr "Geburtsdatum:"
msgid "Active:"
msgstr "Aktivität"
#: bookwyrm/templates/settings/announcement_form.html:5
#: bookwyrm/templates/settings/announcement_form.html:8
#: bookwyrm/templates/settings/announcements.html:8
#, fuzzy
#| msgid "Announcements"
@ -2076,15 +2107,15 @@ msgstr "Aktivität"
#: bookwyrm/templates/settings/server_blocklist.html:3
#: bookwyrm/templates/settings/server_blocklist.html:20
#, fuzzy
#| msgid "Add cover"
msgid "Add server"
msgstr "Cover hinzufügen"
#| msgid "Instance Name:"
msgid "Add instance"
msgstr "Instanzname"
#: bookwyrm/templates/settings/edit_server.html:7
#: bookwyrm/templates/settings/server_blocklist.html:7
#, fuzzy
#| msgid "Back to reports"
msgid "Back to server list"
msgid "Back to instance list"
msgstr "Zurück zu den Meldungen"
#: bookwyrm/templates/settings/edit_server.html:16
@ -2213,8 +2244,10 @@ msgstr ""
#: bookwyrm/templates/settings/federation.html:19
#: bookwyrm/templates/user_admin/server_filter.html:5
msgid "Server name"
msgstr "Servername"
#, fuzzy
#| msgid "Instance Name:"
msgid "Instance name"
msgstr "Instanzname"
#: bookwyrm/templates/settings/federation.html:23
#, fuzzy
@ -2353,7 +2386,7 @@ msgid "Import Blocklist"
msgstr "Bücher importieren"
#: bookwyrm/templates/settings/server_blocklist.html:26
#: bookwyrm/templates/snippets/goal_progress.html:5
#: bookwyrm/templates/snippets/goal_progress.html:7
msgid "Success!"
msgstr "Erfolg!"
@ -2446,15 +2479,15 @@ msgstr "Cover hinzufügen"
msgid "<a href=\"%(path)s\">%(title)s</a> by "
msgstr "<a href=\"%(path)s\">%(title)s</a> von "
#: bookwyrm/templates/snippets/boost_button.html:9
#: bookwyrm/templates/snippets/boost_button.html:10
#: bookwyrm/templates/snippets/boost_button.html:20
#: bookwyrm/templates/snippets/boost_button.html:21
#, fuzzy
#| msgid "boosted"
msgid "Boost"
msgstr "teilt"
#: bookwyrm/templates/snippets/boost_button.html:16
#: bookwyrm/templates/snippets/boost_button.html:17
#: bookwyrm/templates/snippets/boost_button.html:33
#: bookwyrm/templates/snippets/boost_button.html:34
#, fuzzy
#| msgid "Un-boost status"
msgid "Un-boost"
@ -2554,13 +2587,13 @@ msgstr "Diese Lesedaten löschen?"
msgid "You are deleting this readthrough and its %(count)s associated progress updates."
msgstr "Du löscht diesen Leseforschritt und %(count)s zugehörige Fortschrittsupdates."
#: bookwyrm/templates/snippets/fav_button.html:9
#: bookwyrm/templates/snippets/fav_button.html:11
#: bookwyrm/templates/snippets/fav_button.html:10
#: bookwyrm/templates/snippets/fav_button.html:12
msgid "Like"
msgstr ""
#: bookwyrm/templates/snippets/fav_button.html:17
#: bookwyrm/templates/snippets/fav_button.html:18
#: bookwyrm/templates/snippets/fav_button.html:19
#, fuzzy
#| msgid "Un-like status"
msgid "Un-like"
@ -2609,6 +2642,14 @@ msgstr "Annehmen"
msgid "No rating"
msgstr "Kein Rating"
#: bookwyrm/templates/snippets/form_rate_stars.html:44
#: bookwyrm/templates/snippets/stars.html:7
#, python-format
msgid "%(rating)s star"
msgid_plural "%(rating)s stars"
msgstr[0] ""
msgstr[1] ""
#: bookwyrm/templates/snippets/generated_status/goal.html:1
#, python-format
msgid "set a goal to read %(counter)s book in %(year)s"
@ -2664,17 +2705,17 @@ msgstr "Posten"
msgid "Set goal"
msgstr "Ziel setzen"
#: bookwyrm/templates/snippets/goal_progress.html:7
#: bookwyrm/templates/snippets/goal_progress.html:9
#, python-format
msgid "%(percent)s%% complete!"
msgstr "%(percent)s%% komplett!"
#: bookwyrm/templates/snippets/goal_progress.html:10
#: bookwyrm/templates/snippets/goal_progress.html:12
#, python-format
msgid "You've read <a href=\"%(path)s\">%(read_count)s of %(goal_count)s books</a>."
msgstr "Du hast <a href=\"%(path)s\">%(read_count)s von %(goal_count)s Büchern</a> gelesen."
#: bookwyrm/templates/snippets/goal_progress.html:12
#: bookwyrm/templates/snippets/goal_progress.html:14
#, python-format
msgid "%(username)s has read <a href=\"%(path)s\">%(read_count)s of %(goal_count)s books</a>."
msgstr "%(username)s hat <a href=\"%(path)s\">%(read_count)s von %(goal_count)s Büchern</a> gelesen."
@ -2787,26 +2828,6 @@ msgstr "Registrieren"
msgid "Report"
msgstr "Importieren"
#: bookwyrm/templates/snippets/rss_title.html:5
#: bookwyrm/templates/snippets/status/status_header.html:35
msgid "rated"
msgstr ""
#: bookwyrm/templates/snippets/rss_title.html:7
#: bookwyrm/templates/snippets/status/status_header.html:37
msgid "reviewed"
msgstr "bewertete"
#: bookwyrm/templates/snippets/rss_title.html:9
#: bookwyrm/templates/snippets/status/status_header.html:39
msgid "commented on"
msgstr "kommentierte"
#: bookwyrm/templates/snippets/rss_title.html:11
#: bookwyrm/templates/snippets/status/status_header.html:41
msgid "quoted"
msgstr "zitierte"
#: bookwyrm/templates/snippets/search_result_text.html:36
msgid "Import book"
msgstr "Buch importieren"
@ -2989,7 +3010,7 @@ msgstr "Regal bearbeiten"
msgid "Update shelf"
msgstr "Regal aktualisieren"
#: bookwyrm/templates/user/shelf/shelf.html:25 bookwyrm/views/shelf.py:51
#: bookwyrm/templates/user/shelf/shelf.html:25 bookwyrm/views/shelf.py:56
#, fuzzy
#| msgid "books"
msgid "All books"
@ -2999,30 +3020,30 @@ msgstr "Bücher"
msgid "Create shelf"
msgstr "Regal erstellen"
#: bookwyrm/templates/user/shelf/shelf.html:61
#: bookwyrm/templates/user/shelf/shelf.html:62
msgid "Edit shelf"
msgstr "Regal bearbeiten"
#: bookwyrm/templates/user/shelf/shelf.html:80
#: bookwyrm/templates/user/shelf/shelf.html:104
#: bookwyrm/templates/user/shelf/shelf.html:81
#: bookwyrm/templates/user/shelf/shelf.html:105
msgid "Shelved"
msgstr "Ins Regal gestellt"
#: bookwyrm/templates/user/shelf/shelf.html:81
#: bookwyrm/templates/user/shelf/shelf.html:108
#: bookwyrm/templates/user/shelf/shelf.html:82
#: bookwyrm/templates/user/shelf/shelf.html:109
msgid "Started"
msgstr "Gestartet"
#: bookwyrm/templates/user/shelf/shelf.html:82
#: bookwyrm/templates/user/shelf/shelf.html:111
#: bookwyrm/templates/user/shelf/shelf.html:83
#: bookwyrm/templates/user/shelf/shelf.html:112
msgid "Finished"
msgstr "Abgeschlossen"
#: bookwyrm/templates/user/shelf/shelf.html:137
#: bookwyrm/templates/user/shelf/shelf.html:138
msgid "This shelf is empty."
msgstr "Dieses Regal ist leer."
#: bookwyrm/templates/user/shelf/shelf.html:143
#: bookwyrm/templates/user/shelf/shelf.html:144
msgid "Delete shelf"
msgstr "Regal löschen"
@ -3084,9 +3105,10 @@ msgid "Back to users"
msgstr "Zurück zu den Meldungen"
#: bookwyrm/templates/user_admin/user_admin.html:7
#, python-format
msgid "Users: <small>%(server_name)s</small>"
msgstr ""
#, fuzzy, python-format
#| msgid "Lists: %(username)s"
msgid "Users: <small>%(instance_name)s</small>"
msgstr "Listen: %(username)s"
#: bookwyrm/templates/user_admin/user_admin.html:22
#: bookwyrm/templates/user_admin/username_filter.html:5
@ -3107,9 +3129,9 @@ msgstr ""
#: bookwyrm/templates/user_admin/user_admin.html:38
#, fuzzy
#| msgid "Remove"
msgid "Remote server"
msgstr "Entfernen"
#| msgid "Instance Name:"
msgid "Remote instance"
msgstr "Instanzname"
#: bookwyrm/templates/user_admin/user_admin.html:47
#, fuzzy
@ -3158,6 +3180,10 @@ msgstr ""
msgid "Access level:"
msgstr ""
#: bookwyrm/templates/widgets/clearable_file_input_with_warning.html:3
msgid "File exceeds maximum size: 10MB"
msgstr ""
#: bookwyrm/views/import_data.py:67
#, fuzzy
#| msgid "Email address:"
@ -3175,6 +3201,27 @@ msgstr "Dieser Benutzename ist bereits vergeben."
msgid "A password reset link sent to %s"
msgstr ""
#, fuzzy
#~| msgid "Lists: %(username)s"
#~ msgid "Reports: <small>%(server_name)s</small>"
#~ msgstr "Listen: %(username)s"
#~ msgid "Federated Servers"
#~ msgstr "Föderierende Server"
#~ msgid "Server name"
#~ msgstr "Servername"
#, fuzzy
#~| msgid "Add cover"
#~ msgid "Add server"
#~ msgstr "Cover hinzufügen"
#, fuzzy
#~| msgid "Remove"
#~ msgid "Remote server"
#~ msgstr "Entfernen"
#, fuzzy
#~| msgid "Book"
#~ msgid "BookWyrm\\"
@ -3225,12 +3272,12 @@ msgstr ""
#~ msgid "Enter a number."
#~ msgstr "Seriennummer:"
#, fuzzy, python-format
#, fuzzy
#~| msgid "A user with that username already exists."
#~ msgid "%(model_name)s with this %(field_labels)s already exists."
#~ msgstr "Dieser Benutzename ist bereits vergeben."
#, fuzzy, python-format
#, fuzzy
#~| msgid "%(value)s is not a valid remote_id"
#~ msgid "Value %(value)r is not a valid choice."
#~ msgstr "%(value)s ist keine gültige remote_id"
@ -3240,7 +3287,7 @@ msgstr ""
#~ msgid "This field cannot be null."
#~ msgstr "Dieses Regal ist leer."
#, fuzzy, python-format
#, fuzzy
#~| msgid "A user with that username already exists."
#~ msgid "%(model_name)s with this %(field_label)s already exists."
#~ msgstr "Dieser Benutzename ist bereits vergeben."
@ -3250,7 +3297,7 @@ msgstr ""
#~ msgid "Comma-separated integers"
#~ msgstr "Keine aktiven Einladungen"
#, fuzzy, python-format
#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(value)s” value must be a decimal number."
#~ msgstr "%(value)s ist kein gültiger Username"
@ -3270,7 +3317,7 @@ msgstr ""
#~ msgid "Email address"
#~ msgstr "E-Mail Adresse"
#, fuzzy, python-format
#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(value)s” value must be a float."
#~ msgstr "%(value)s ist kein gültiger Username"
@ -3300,7 +3347,7 @@ msgstr ""
#~ msgid "Positive small integer"
#~ msgstr "Keine aktiven Einladungen"
#, fuzzy, python-format
#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(value)s” is not a valid UUID."
#~ msgstr "%(value)s ist kein gültiger Username"
@ -3315,12 +3362,12 @@ msgstr ""
#~ msgid "One-to-one relationship"
#~ msgstr "Beziehungen"
#, fuzzy, python-format
#, fuzzy
#~| msgid "Relationships"
#~ msgid "%(from)s-%(to)s relationship"
#~ msgstr "Beziehungen"
#, fuzzy, python-format
#, fuzzy
#~| msgid "Relationships"
#~ msgid "%(from)s-%(to)s relationships"
#~ msgstr "Beziehungen"
@ -3375,7 +3422,7 @@ msgstr ""
#~ msgid "Enter a valid UUID."
#~ msgstr "E-Mail Adresse"
#, fuzzy, python-format
#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(pk)s” is not a valid value."
#~ msgstr "%(value)s ist kein gültiger Username"
@ -3439,12 +3486,12 @@ msgstr ""
#~ msgid "This is not a valid IPv6 address."
#~ msgstr "E-Mail Adresse"
#, fuzzy, python-format
#, fuzzy
#~| msgid "No books found matching the query \"%(query)s\""
#~ msgid "No %(verbose_name)s found matching the query"
#~ msgstr "Keine passenden Bücher zu \"%(query)s\" gefunden"
#, fuzzy, python-format
#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(path)s” does not exist"
#~ msgstr "%(value)s ist kein gültiger Username"
@ -3463,11 +3510,9 @@ msgstr ""
#~ msgid "Matching Users"
#~ msgstr "Passende Nutzer*innen"
#, python-format
#~ msgid "Set a reading goal for %(year)s"
#~ msgstr "Leseziel für %(year)s setzen"
#, python-format
#~ msgid "by %(author)s"
#~ msgstr "von %(author)s"
@ -3477,17 +3522,17 @@ msgstr ""
#~ msgid "Reactivate user"
#~ msgstr "Nutzer:in reaktivieren"
#, fuzzy, python-format
#, fuzzy
#~| msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
#~ msgid "replied to <a href=\"%(user_path)s\">%(username)s's</a> <a href=\"%(status_path)s\">review</a>"
#~ msgstr "Direktnachrichten mit <a href=\"%(path)s\">%(username)s</a>"
#, fuzzy, python-format
#, fuzzy
#~| msgid "<a href=\"%(related_path)s\">replied</a> to your <a href=\"%(parent_path)s\">status</a>"
#~ msgid "replied to <a href=\"%(user_path)s\">%(username)s's</a> <a href=\"%(status_path)s\">comment</a>"
#~ msgstr "hat auf deinen <a href=\"%(parent_path)s\">Status</a> geantwortet</a>"
#, fuzzy, python-format
#, fuzzy
#~| msgid "<a href=\"%(related_path)s\">replied</a> to your <a href=\"%(parent_path)s\">status</a>"
#~ msgid "replied to <a href=\"%(user_path)s\">%(username)s's</a> <a href=\"%(status_path)s\">quote</a>"
#~ msgstr "hat auf deinen <a href=\"%(parent_path)s\">Status</a> <a href=\"%(related_path)s\">geantwortet</a>"
@ -3498,7 +3543,6 @@ msgstr ""
#~ msgid "Add tag"
#~ msgstr "Tag hinzufügen"
#, python-format
#~ msgid "Books tagged \"%(tag.name)s\""
#~ msgstr "Mit \"%(tag.name)s\" markierte Bücher"
@ -3507,7 +3551,7 @@ msgstr ""
#~ msgid "Getting Started"
#~ msgstr "Gestartet"
#, fuzzy, python-format
#, fuzzy
#~| msgid "No users found for \"%(query)s\""
#~ msgid "No users were found for \"%(query)s\""
#~ msgstr "Keine Nutzer*innen für \"%(query)s\" gefunden"
@ -3515,7 +3559,7 @@ msgstr ""
#~ msgid "Your lists"
#~ msgstr "Deine Listen"
#, fuzzy, python-format
#, fuzzy
#~| msgid "See all %(size)s"
#~ msgid "See all %(size)s lists"
#~ msgstr "Alle %(size)s anzeigen"
@ -3538,14 +3582,12 @@ msgstr ""
#~ msgid "Your Shelves"
#~ msgstr "Deine Regale"
#, python-format
#~ msgid "%(username)s: Shelves"
#~ msgstr "%(username)s: Regale"
#~ msgid "Shelves"
#~ msgstr "Regale"
#, python-format
#~ msgid "See all %(shelf_count)s shelves"
#~ msgstr "Alle %(shelf_count)s Regale anzeigen"

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-20 14:40-0700\n"
"POT-Creation-Date: 2021-06-06 20:52+0000\n"
"PO-Revision-Date: 2021-02-28 17:19-0800\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: English <LL@li.org>\n"
@ -56,12 +56,12 @@ msgid "Book Title"
msgstr ""
#: bookwyrm/forms.py:301 bookwyrm/templates/snippets/create_status_form.html:34
#: bookwyrm/templates/user/shelf/shelf.html:84
#: bookwyrm/templates/user/shelf/shelf.html:115
#: bookwyrm/templates/user/shelf/shelf.html:85
#: bookwyrm/templates/user/shelf/shelf.html:116
msgid "Rating"
msgstr ""
#: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:101
#: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:107
msgid "Sort By"
msgstr ""
@ -73,41 +73,41 @@ msgstr ""
msgid "Descending"
msgstr ""
#: bookwyrm/models/fields.py:24
#: bookwyrm/models/fields.py:25
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr ""
#: bookwyrm/models/fields.py:33 bookwyrm/models/fields.py:42
#: bookwyrm/models/fields.py:34 bookwyrm/models/fields.py:43
#, python-format
msgid "%(value)s is not a valid username"
msgstr ""
#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:155
#: bookwyrm/models/fields.py:166 bookwyrm/templates/layout.html:152
msgid "username"
msgstr ""
#: bookwyrm/models/fields.py:170
#: bookwyrm/models/fields.py:171
msgid "A user with that username already exists."
msgstr ""
#: bookwyrm/settings.py:155
#: bookwyrm/settings.py:156
msgid "English"
msgstr ""
#: bookwyrm/settings.py:156
#: bookwyrm/settings.py:157
msgid "German"
msgstr ""
#: bookwyrm/settings.py:157
#: bookwyrm/settings.py:158
msgid "Spanish"
msgstr ""
#: bookwyrm/settings.py:158
#: bookwyrm/settings.py:159
msgid "French"
msgstr ""
#: bookwyrm/settings.py:159
#: bookwyrm/settings.py:160
msgid "Simplified Chinese"
msgstr ""
@ -248,7 +248,7 @@ msgstr ""
#: bookwyrm/templates/book/edit_book.html:263
#: bookwyrm/templates/lists/form.html:42
#: bookwyrm/templates/preferences/edit_user.html:70
#: bookwyrm/templates/settings/announcement_form.html:65
#: bookwyrm/templates/settings/announcement_form.html:69
#: bookwyrm/templates/settings/edit_server.html:68
#: bookwyrm/templates/settings/federated_server.html:98
#: bookwyrm/templates/settings/site.html:97
@ -367,7 +367,7 @@ msgstr ""
msgid "Places"
msgstr ""
#: bookwyrm/templates/book/book.html:276 bookwyrm/templates/layout.html:64
#: bookwyrm/templates/book/book.html:276 bookwyrm/templates/layout.html:61
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@ -381,7 +381,7 @@ msgstr ""
#: bookwyrm/templates/book/book.html:297
#: bookwyrm/templates/book/cover_modal.html:31
#: bookwyrm/templates/lists/list.html:164
#: bookwyrm/templates/lists/list.html:179
msgid "Add"
msgstr ""
@ -511,7 +511,7 @@ msgid "John Doe, Jane Smith"
msgstr ""
#: bookwyrm/templates/book/edit_book.html:183
#: bookwyrm/templates/user/shelf/shelf.html:77
#: bookwyrm/templates/user/shelf/shelf.html:78
msgid "Cover"
msgstr ""
@ -630,7 +630,7 @@ msgstr ""
#: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9
#: bookwyrm/templates/layout.html:92
#: bookwyrm/templates/layout.html:64
msgid "Directory"
msgstr ""
@ -831,7 +831,7 @@ msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
msgstr ""
#: bookwyrm/templates/feed/direct_messages.html:10
#: bookwyrm/templates/layout.html:87
#: bookwyrm/templates/layout.html:92
msgid "Direct Messages"
msgstr ""
@ -887,7 +887,6 @@ msgid "Updates"
msgstr ""
#: bookwyrm/templates/feed/feed_layout.html:10
#: bookwyrm/templates/layout.html:58
#: bookwyrm/templates/user/shelf/books_header.html:3
msgid "Your books"
msgstr ""
@ -942,7 +941,7 @@ msgid "What are you reading?"
msgstr ""
#: bookwyrm/templates/get_started/books.html:9
#: bookwyrm/templates/lists/list.html:120
#: bookwyrm/templates/lists/list.html:135
msgid "Search for a book"
msgstr ""
@ -962,7 +961,7 @@ msgstr ""
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/layout.html:37 bookwyrm/templates/layout.html:38
#: bookwyrm/templates/lists/list.html:124
#: bookwyrm/templates/lists/list.html:139
#: bookwyrm/templates/search/layout.html:4
#: bookwyrm/templates/search/layout.html:9
msgid "Search"
@ -978,7 +977,7 @@ msgid "Popular on %(site_name)s"
msgstr ""
#: bookwyrm/templates/get_started/books.html:58
#: bookwyrm/templates/lists/list.html:137
#: bookwyrm/templates/lists/list.html:152
msgid "No books found"
msgstr ""
@ -1090,7 +1089,7 @@ msgid "%(username)s's %(year)s Books"
msgstr ""
#: bookwyrm/templates/import.html:5 bookwyrm/templates/import.html:9
#: bookwyrm/templates/layout.html:97
#: bookwyrm/templates/user/shelf/shelf.html:40
msgid "Import Books"
msgstr ""
@ -1175,14 +1174,14 @@ msgstr ""
#: bookwyrm/templates/import_status.html:114
#: bookwyrm/templates/snippets/create_status_form.html:13
#: bookwyrm/templates/user/shelf/shelf.html:78
#: bookwyrm/templates/user/shelf/shelf.html:98
#: bookwyrm/templates/user/shelf/shelf.html:79
#: bookwyrm/templates/user/shelf/shelf.html:99
msgid "Title"
msgstr ""
#: bookwyrm/templates/import_status.html:117
#: bookwyrm/templates/user/shelf/shelf.html:79
#: bookwyrm/templates/user/shelf/shelf.html:101
#: bookwyrm/templates/user/shelf/shelf.html:80
#: bookwyrm/templates/user/shelf/shelf.html:102
msgid "Author"
msgstr ""
@ -1224,15 +1223,19 @@ msgstr ""
msgid "Main navigation menu"
msgstr ""
#: bookwyrm/templates/layout.html:61
#: bookwyrm/templates/layout.html:58
msgid "Feed"
msgstr ""
#: bookwyrm/templates/layout.html:102
#: bookwyrm/templates/layout.html:87
msgid "Your Books"
msgstr ""
#: bookwyrm/templates/layout.html:97
msgid "Settings"
msgstr ""
#: bookwyrm/templates/layout.html:111
#: bookwyrm/templates/layout.html:106
#: bookwyrm/templates/settings/admin_layout.html:31
#: bookwyrm/templates/settings/manage_invite_requests.html:15
#: bookwyrm/templates/settings/manage_invites.html:3
@ -1240,45 +1243,45 @@ msgstr ""
msgid "Invites"
msgstr ""
#: bookwyrm/templates/layout.html:118
#: bookwyrm/templates/layout.html:113
msgid "Admin"
msgstr ""
#: bookwyrm/templates/layout.html:125
#: bookwyrm/templates/layout.html:120
msgid "Log out"
msgstr ""
#: bookwyrm/templates/layout.html:133 bookwyrm/templates/layout.html:134
#: bookwyrm/templates/layout.html:128 bookwyrm/templates/layout.html:129
#: bookwyrm/templates/notifications.html:6
#: bookwyrm/templates/notifications.html:11
msgid "Notifications"
msgstr ""
#: bookwyrm/templates/layout.html:154 bookwyrm/templates/layout.html:158
#: bookwyrm/templates/layout.html:151 bookwyrm/templates/layout.html:155
#: bookwyrm/templates/login.html:17
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
msgstr ""
#: bookwyrm/templates/layout.html:159
#: bookwyrm/templates/layout.html:156
msgid "password"
msgstr ""
#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:36
#: bookwyrm/templates/layout.html:157 bookwyrm/templates/login.html:36
msgid "Forgot your password?"
msgstr ""
#: bookwyrm/templates/layout.html:163 bookwyrm/templates/login.html:10
#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:10
#: bookwyrm/templates/login.html:33
msgid "Log in"
msgstr ""
#: bookwyrm/templates/layout.html:171
#: bookwyrm/templates/layout.html:168
msgid "Join"
msgstr ""
#: bookwyrm/templates/layout.html:206
msgid "About this server"
msgid "About this instance"
msgstr ""
#: bookwyrm/templates/layout.html:210
@ -1338,7 +1341,7 @@ msgid "Discard"
msgstr ""
#: bookwyrm/templates/lists/edit_form.html:5
#: bookwyrm/templates/lists/list_layout.html:17
#: bookwyrm/templates/lists/list_layout.html:16
msgid "Edit List"
msgstr ""
@ -1385,54 +1388,55 @@ msgstr ""
msgid "This list is currently empty"
msgstr ""
#: bookwyrm/templates/lists/list.html:65
#: bookwyrm/templates/lists/list.html:66
#, python-format
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
msgstr ""
#: bookwyrm/templates/lists/list.html:77
msgid "Set"
msgstr ""
#: bookwyrm/templates/lists/list.html:80
#: bookwyrm/templates/lists/list.html:74
msgid "List position"
msgstr ""
#: bookwyrm/templates/lists/list.html:86
#: bookwyrm/templates/lists/list.html:81
msgid "Set"
msgstr ""
#: bookwyrm/templates/lists/list.html:89
#: bookwyrm/templates/snippets/shelf_selector.html:26
msgid "Remove"
msgstr ""
#: bookwyrm/templates/lists/list.html:99 bookwyrm/templates/lists/list.html:111
#: bookwyrm/templates/lists/list.html:103
#: bookwyrm/templates/lists/list.html:120
msgid "Sort List"
msgstr ""
#: bookwyrm/templates/lists/list.html:105
#: bookwyrm/templates/lists/list.html:113
msgid "Direction"
msgstr ""
#: bookwyrm/templates/lists/list.html:116
#: bookwyrm/templates/lists/list.html:127
msgid "Add Books"
msgstr ""
#: bookwyrm/templates/lists/list.html:116
#: bookwyrm/templates/lists/list.html:129
msgid "Suggest Books"
msgstr ""
#: bookwyrm/templates/lists/list.html:125
#: bookwyrm/templates/lists/list.html:140
msgid "search"
msgstr ""
#: bookwyrm/templates/lists/list.html:131
#: bookwyrm/templates/lists/list.html:146
msgid "Clear search"
msgstr ""
#: bookwyrm/templates/lists/list.html:136
#: bookwyrm/templates/lists/list.html:151
#, python-format
msgid "No books found matching the query \"%(query)s\""
msgstr ""
#: bookwyrm/templates/lists/list.html:164
#: bookwyrm/templates/lists/list.html:179
msgid "Suggest"
msgstr ""
@ -1523,7 +1527,7 @@ msgstr ""
#: bookwyrm/templates/moderation/reports.html:6
#, python-format
msgid "Reports: %(server_name)s"
msgid "Reports: %(instance_name)s"
msgstr ""
#: bookwyrm/templates/moderation/reports.html:8
@ -1534,7 +1538,7 @@ msgstr ""
#: bookwyrm/templates/moderation/reports.html:14
#, python-format
msgid "Reports: <small>%(server_name)s</small>"
msgid "Reports: <small>%(instance_name)s</small>"
msgstr ""
#: bookwyrm/templates/moderation/reports.html:28
@ -1733,6 +1737,26 @@ msgstr ""
msgid "Relationships"
msgstr ""
#: bookwyrm/templates/rss/title.html:5
#: bookwyrm/templates/snippets/status/status_header.html:35
msgid "rated"
msgstr ""
#: bookwyrm/templates/rss/title.html:7
#: bookwyrm/templates/snippets/status/status_header.html:37
msgid "reviewed"
msgstr ""
#: bookwyrm/templates/rss/title.html:9
#: bookwyrm/templates/snippets/status/status_header.html:39
msgid "commented on"
msgstr ""
#: bookwyrm/templates/rss/title.html:11
#: bookwyrm/templates/snippets/status/status_header.html:41
msgid "quoted"
msgstr ""
#: bookwyrm/templates/search/book.html:64
msgid "Load results from other catalogues"
msgstr ""
@ -1783,7 +1807,7 @@ msgstr ""
#: bookwyrm/templates/settings/admin_layout.html:39
#: bookwyrm/templates/settings/federation.html:3
#: bookwyrm/templates/settings/federation.html:5
msgid "Federated Servers"
msgid "Federated Instances"
msgstr ""
#: bookwyrm/templates/settings/admin_layout.html:44
@ -1833,6 +1857,7 @@ msgid "Back to list"
msgstr ""
#: bookwyrm/templates/settings/announcement.html:11
#: bookwyrm/templates/settings/announcement_form.html:6
msgid "Edit Announcement"
msgstr ""
@ -1866,7 +1891,7 @@ msgstr ""
msgid "Active:"
msgstr ""
#: bookwyrm/templates/settings/announcement_form.html:5
#: bookwyrm/templates/settings/announcement_form.html:8
#: bookwyrm/templates/settings/announcements.html:8
msgid "Create Announcement"
msgstr ""
@ -1910,12 +1935,12 @@ msgstr ""
#: bookwyrm/templates/settings/federation.html:10
#: bookwyrm/templates/settings/server_blocklist.html:3
#: bookwyrm/templates/settings/server_blocklist.html:20
msgid "Add server"
msgid "Add instance"
msgstr ""
#: bookwyrm/templates/settings/edit_server.html:7
#: bookwyrm/templates/settings/server_blocklist.html:7
msgid "Back to server list"
msgid "Back to instance list"
msgstr ""
#: bookwyrm/templates/settings/edit_server.html:16
@ -2022,7 +2047,7 @@ msgstr ""
#: bookwyrm/templates/settings/federation.html:19
#: bookwyrm/templates/user_admin/server_filter.html:5
msgid "Server name"
msgid "Instance name"
msgstr ""
#: bookwyrm/templates/settings/federation.html:23
@ -2144,7 +2169,7 @@ msgid "Import Blocklist"
msgstr ""
#: bookwyrm/templates/settings/server_blocklist.html:26
#: bookwyrm/templates/snippets/goal_progress.html:5
#: bookwyrm/templates/snippets/goal_progress.html:7
msgid "Success!"
msgstr ""
@ -2230,13 +2255,13 @@ msgstr ""
msgid "<a href=\"%(path)s\">%(title)s</a> by "
msgstr ""
#: bookwyrm/templates/snippets/boost_button.html:9
#: bookwyrm/templates/snippets/boost_button.html:10
#: bookwyrm/templates/snippets/boost_button.html:20
#: bookwyrm/templates/snippets/boost_button.html:21
msgid "Boost"
msgstr ""
#: bookwyrm/templates/snippets/boost_button.html:16
#: bookwyrm/templates/snippets/boost_button.html:17
#: bookwyrm/templates/snippets/boost_button.html:33
#: bookwyrm/templates/snippets/boost_button.html:34
msgid "Un-boost"
msgstr ""
@ -2326,13 +2351,13 @@ msgstr ""
msgid "You are deleting this readthrough and its %(count)s associated progress updates."
msgstr ""
#: bookwyrm/templates/snippets/fav_button.html:9
#: bookwyrm/templates/snippets/fav_button.html:11
#: bookwyrm/templates/snippets/fav_button.html:10
#: bookwyrm/templates/snippets/fav_button.html:12
msgid "Like"
msgstr ""
#: bookwyrm/templates/snippets/fav_button.html:17
#: bookwyrm/templates/snippets/fav_button.html:18
#: bookwyrm/templates/snippets/fav_button.html:19
msgid "Un-like"
msgstr ""
@ -2373,6 +2398,14 @@ msgstr ""
msgid "No rating"
msgstr ""
#: bookwyrm/templates/snippets/form_rate_stars.html:44
#: bookwyrm/templates/snippets/stars.html:7
#, python-format
msgid "%(rating)s star"
msgid_plural "%(rating)s stars"
msgstr[0] ""
msgstr[1] ""
#: bookwyrm/templates/snippets/generated_status/goal.html:1
#, python-format
msgid "set a goal to read %(counter)s book in %(year)s"
@ -2427,17 +2460,17 @@ msgstr ""
msgid "Set goal"
msgstr ""
#: bookwyrm/templates/snippets/goal_progress.html:7
#: bookwyrm/templates/snippets/goal_progress.html:9
#, python-format
msgid "%(percent)s%% complete!"
msgstr ""
#: bookwyrm/templates/snippets/goal_progress.html:10
#: bookwyrm/templates/snippets/goal_progress.html:12
#, python-format
msgid "You've read <a href=\"%(path)s\">%(read_count)s of %(goal_count)s books</a>."
msgstr ""
#: bookwyrm/templates/snippets/goal_progress.html:12
#: bookwyrm/templates/snippets/goal_progress.html:14
#, python-format
msgid "%(username)s has read <a href=\"%(path)s\">%(read_count)s of %(goal_count)s books</a>."
msgstr ""
@ -2546,26 +2579,6 @@ msgstr ""
msgid "Report"
msgstr ""
#: bookwyrm/templates/snippets/rss_title.html:5
#: bookwyrm/templates/snippets/status/status_header.html:35
msgid "rated"
msgstr ""
#: bookwyrm/templates/snippets/rss_title.html:7
#: bookwyrm/templates/snippets/status/status_header.html:37
msgid "reviewed"
msgstr ""
#: bookwyrm/templates/snippets/rss_title.html:9
#: bookwyrm/templates/snippets/status/status_header.html:39
msgid "commented on"
msgstr ""
#: bookwyrm/templates/snippets/rss_title.html:11
#: bookwyrm/templates/snippets/status/status_header.html:41
msgid "quoted"
msgstr ""
#: bookwyrm/templates/snippets/search_result_text.html:36
msgid "Import book"
msgstr ""
@ -2735,7 +2748,7 @@ msgstr ""
msgid "Update shelf"
msgstr ""
#: bookwyrm/templates/user/shelf/shelf.html:25 bookwyrm/views/shelf.py:51
#: bookwyrm/templates/user/shelf/shelf.html:25 bookwyrm/views/shelf.py:56
msgid "All books"
msgstr ""
@ -2743,30 +2756,30 @@ msgstr ""
msgid "Create shelf"
msgstr ""
#: bookwyrm/templates/user/shelf/shelf.html:61
#: bookwyrm/templates/user/shelf/shelf.html:62
msgid "Edit shelf"
msgstr ""
#: bookwyrm/templates/user/shelf/shelf.html:80
#: bookwyrm/templates/user/shelf/shelf.html:104
#: bookwyrm/templates/user/shelf/shelf.html:81
#: bookwyrm/templates/user/shelf/shelf.html:105
msgid "Shelved"
msgstr ""
#: bookwyrm/templates/user/shelf/shelf.html:81
#: bookwyrm/templates/user/shelf/shelf.html:108
#: bookwyrm/templates/user/shelf/shelf.html:82
#: bookwyrm/templates/user/shelf/shelf.html:109
msgid "Started"
msgstr ""
#: bookwyrm/templates/user/shelf/shelf.html:82
#: bookwyrm/templates/user/shelf/shelf.html:111
#: bookwyrm/templates/user/shelf/shelf.html:83
#: bookwyrm/templates/user/shelf/shelf.html:112
msgid "Finished"
msgstr ""
#: bookwyrm/templates/user/shelf/shelf.html:137
#: bookwyrm/templates/user/shelf/shelf.html:138
msgid "This shelf is empty."
msgstr ""
#: bookwyrm/templates/user/shelf/shelf.html:143
#: bookwyrm/templates/user/shelf/shelf.html:144
msgid "Delete shelf"
msgstr ""
@ -2825,7 +2838,7 @@ msgstr ""
#: bookwyrm/templates/user_admin/user_admin.html:7
#, python-format
msgid "Users: <small>%(server_name)s</small>"
msgid "Users: <small>%(instance_name)s</small>"
msgstr ""
#: bookwyrm/templates/user_admin/user_admin.html:22
@ -2842,7 +2855,7 @@ msgid "Last Active"
msgstr ""
#: bookwyrm/templates/user_admin/user_admin.html:38
msgid "Remote server"
msgid "Remote instance"
msgstr ""
#: bookwyrm/templates/user_admin/user_admin.html:47
@ -2886,6 +2899,10 @@ msgstr ""
msgid "Access level:"
msgstr ""
#: bookwyrm/templates/widgets/clearable_file_input_with_warning.html:3
msgid "File exceeds maximum size: 10MB"
msgstr ""
#: bookwyrm/views/import_data.py:67
msgid "Not a valid csv file"
msgstr ""

Binary file not shown.

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-25 01:44+0000\n"
"POT-Creation-Date: 2021-06-06 20:52+0000\n"
"PO-Revision-Date: 2021-03-19 11:49+0800\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -73,41 +73,41 @@ msgstr "Ascendente"
msgid "Descending"
msgstr "Descendente"
#: bookwyrm/models/fields.py:24
#: bookwyrm/models/fields.py:25
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s no es un remote_id válido"
#: bookwyrm/models/fields.py:33 bookwyrm/models/fields.py:42
#: bookwyrm/models/fields.py:34 bookwyrm/models/fields.py:43
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s no es un usuario válido"
#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:152
#: bookwyrm/models/fields.py:166 bookwyrm/templates/layout.html:152
msgid "username"
msgstr "nombre de usuario"
#: bookwyrm/models/fields.py:170
#: bookwyrm/models/fields.py:171
msgid "A user with that username already exists."
msgstr "Ya existe un usuario con ese nombre."
#: bookwyrm/settings.py:155
#: bookwyrm/settings.py:156
msgid "English"
msgstr "Inglés"
#: bookwyrm/settings.py:156
#: bookwyrm/settings.py:157
msgid "German"
msgstr "Aléman"
#: bookwyrm/settings.py:157
#: bookwyrm/settings.py:158
msgid "Spanish"
msgstr "Español"
#: bookwyrm/settings.py:158
#: bookwyrm/settings.py:159
msgid "French"
msgstr "Francés"
#: bookwyrm/settings.py:159
#: bookwyrm/settings.py:160
msgid "Simplified Chinese"
msgstr "Chino simplificado"
@ -1281,7 +1281,9 @@ msgid "Join"
msgstr "Unirse"
#: bookwyrm/templates/layout.html:206
msgid "About this server"
#, fuzzy
#| msgid "About this server"
msgid "About this instance"
msgstr "Sobre este servidor"
#: bookwyrm/templates/layout.html:210
@ -1527,8 +1529,8 @@ msgstr "Resolver"
#: bookwyrm/templates/moderation/reports.html:6
#, python-format
msgid "Reports: %(server_name)s"
msgstr "Informes: %(server_name)s"
msgid "Reports: %(instance_name)s"
msgstr "Informes: %(instance_name)s"
#: bookwyrm/templates/moderation/reports.html:8
#: bookwyrm/templates/moderation/reports.html:17
@ -1538,8 +1540,8 @@ msgstr "Informes"
#: bookwyrm/templates/moderation/reports.html:14
#, python-format
msgid "Reports: <small>%(server_name)s</small>"
msgstr "Informes: <small>%(server_name)s</small>"
msgid "Reports: <small>%(instance_name)s</small>"
msgstr "Informes: <small>%(instance_name)s</small>"
#: bookwyrm/templates/moderation/reports.html:28
msgid "Resolved"
@ -1660,6 +1662,7 @@ msgid " suggested adding <em><a href=\"%(book_path)s\">%(book_title)s</a></em> t
msgstr " sugirió agregar <em><a href=\"%(book_path)s\">%(book_title)s</a></em> a tu lista \"<a href=\"%(list_path)s/curate\">%(list_name)s</a>\""
#: bookwyrm/templates/notifications.html:128
#, python-format
msgid "Your <a href=\"%(url)s\">import</a> completed."
msgstr "Tu <a href=\"%(url)s\">importación</a> ha terminado."
@ -1791,6 +1794,7 @@ msgid "Users"
msgstr "Usuarios"
#: bookwyrm/templates/search/layout.html:58
#, python-format
msgid "No results found for \"%(query)s\""
msgstr "No se encontró ningún resultado correspondiente a \"%(query)s\""
@ -1805,7 +1809,9 @@ msgstr "Administrar usuarios"
#: bookwyrm/templates/settings/admin_layout.html:39
#: bookwyrm/templates/settings/federation.html:3
#: bookwyrm/templates/settings/federation.html:5
msgid "Federated Servers"
#, fuzzy
#| msgid "Federated Servers"
msgid "Federated Instances"
msgstr "Servidores federalizados"
#: bookwyrm/templates/settings/admin_layout.html:44
@ -1933,12 +1939,16 @@ msgstr "inactivo"
#: bookwyrm/templates/settings/federation.html:10
#: bookwyrm/templates/settings/server_blocklist.html:3
#: bookwyrm/templates/settings/server_blocklist.html:20
msgid "Add server"
msgstr "Agregar servidor"
#, fuzzy
#| msgid "View instance"
msgid "Add instance"
msgstr "Ver instancia"
#: bookwyrm/templates/settings/edit_server.html:7
#: bookwyrm/templates/settings/server_blocklist.html:7
msgid "Back to server list"
#, fuzzy
#| msgid "Back to server list"
msgid "Back to instance list"
msgstr "Volver a la lista de servidores"
#: bookwyrm/templates/settings/edit_server.html:16
@ -2045,8 +2055,10 @@ msgstr "Todos los usuarios en esta instancia serán re-activados."
#: bookwyrm/templates/settings/federation.html:19
#: bookwyrm/templates/user_admin/server_filter.html:5
msgid "Server name"
msgstr "Nombre de servidor"
#, fuzzy
#| msgid "Instance Name:"
msgid "Instance name"
msgstr "Nombre de instancia:"
#: bookwyrm/templates/settings/federation.html:23
msgid "Date federated"
@ -2240,6 +2252,7 @@ msgid "Registration closed text:"
msgstr "Texto de registración cerrada:"
#: bookwyrm/templates/snippets/announcement.html:31
#, python-format
msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
msgstr "Publicado por <a href=\"%(user_path)s\">%(username)s</a>"
@ -2478,6 +2491,8 @@ msgid "page %(page)s of %(total_pages)s"
msgstr "página %(page)s de %(total_pages)s"
#: bookwyrm/templates/snippets/page_text.html:6
#, fuzzy, python-format
#| msgid "page %(page)s"
msgid "page %(page)s"
msgstr "página %(pages)s"
@ -2822,6 +2837,7 @@ msgid "%(counter)s following"
msgstr "%(counter)s siguiendo"
#: bookwyrm/templates/user/user_preview.html:26
#, python-format
msgid "%(mutuals_display)s follower you follow"
msgid_plural "%(mutuals_display)s followers you follow"
msgstr[0] "%(mutuals_display)s seguidor que sigues"
@ -2833,8 +2849,8 @@ msgstr "Volver a usuarios"
#: bookwyrm/templates/user_admin/user_admin.html:7
#, python-format
msgid "Users: <small>%(server_name)s</small>"
msgstr "Usuarios <small>%(server_name)s</small>"
msgid "Users: <small>%(instance_name)s</small>"
msgstr "Usuarios <small>%(instance_name)s</small>"
#: bookwyrm/templates/user_admin/user_admin.html:22
#: bookwyrm/templates/user_admin/username_filter.html:5
@ -2850,8 +2866,10 @@ msgid "Last Active"
msgstr "Actividad reciente"
#: bookwyrm/templates/user_admin/user_admin.html:38
msgid "Remote server"
msgstr "Quitar servidor"
#, fuzzy
#| msgid "View instance"
msgid "Remote instance"
msgstr "Ver instancia"
#: bookwyrm/templates/user_admin/user_admin.html:47
msgid "Active"
@ -2894,6 +2912,10 @@ msgstr "Des-suspender usuario"
msgid "Access level:"
msgstr "Nivel de acceso:"
#: bookwyrm/templates/widgets/clearable_file_input_with_warning.html:3
msgid "File exceeds maximum size: 10MB"
msgstr ""
#: bookwyrm/views/import_data.py:67
msgid "Not a valid csv file"
msgstr "No un archivo csv válido"
@ -2907,6 +2929,18 @@ msgstr "No se pudo encontrar un usuario con esa dirección de correo electrónic
msgid "A password reset link sent to %s"
msgstr "Un enlace para reestablecer tu contraseña se enviará a %s"
#~ msgid "Federated Servers"
#~ msgstr "Servidores federalizados"
#~ msgid "Server name"
#~ msgstr "Nombre de servidor"
#~ msgid "Add server"
#~ msgstr "Agregar servidor"
#~ msgid "Remote server"
#~ msgstr "Quitar servidor"
#, fuzzy
#~| msgid "BookWyrm users"
#~ msgid "BookWyrm\\"

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-20 14:40-0700\n"
"POT-Creation-Date: 2021-06-06 20:52+0000\n"
"PO-Revision-Date: 2021-03-20 00:56+0000\n"
"Last-Translator: Kana <gudzpoz@live.com>\n"
"Language-Team: Mouse Reeve <LL@li.org>\n"
@ -58,12 +58,12 @@ msgid "Book Title"
msgstr "标题"
#: bookwyrm/forms.py:301 bookwyrm/templates/snippets/create_status_form.html:34
#: bookwyrm/templates/user/shelf/shelf.html:84
#: bookwyrm/templates/user/shelf/shelf.html:115
#: bookwyrm/templates/user/shelf/shelf.html:85
#: bookwyrm/templates/user/shelf/shelf.html:116
msgid "Rating"
msgstr "评价"
#: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:101
#: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:107
msgid "Sort By"
msgstr ""
@ -79,41 +79,41 @@ msgstr "升序排序"
msgid "Descending"
msgstr "升序排序"
#: bookwyrm/models/fields.py:24
#: bookwyrm/models/fields.py:25
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s 不是有效的 remote_id"
#: bookwyrm/models/fields.py:33 bookwyrm/models/fields.py:42
#: bookwyrm/models/fields.py:34 bookwyrm/models/fields.py:43
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s 不是有效的用户名"
#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:155
#: bookwyrm/models/fields.py:166 bookwyrm/templates/layout.html:152
msgid "username"
msgstr "用户名"
#: bookwyrm/models/fields.py:170
#: bookwyrm/models/fields.py:171
msgid "A user with that username already exists."
msgstr "已经存在使用该用户名的用户。"
#: bookwyrm/settings.py:155
#: bookwyrm/settings.py:156
msgid "English"
msgstr "English英语"
#: bookwyrm/settings.py:156
#: bookwyrm/settings.py:157
msgid "German"
msgstr "Deutsch德语"
#: bookwyrm/settings.py:157
#: bookwyrm/settings.py:158
msgid "Spanish"
msgstr "Español西班牙语"
#: bookwyrm/settings.py:158
#: bookwyrm/settings.py:159
msgid "French"
msgstr "Français法语"
#: bookwyrm/settings.py:159
#: bookwyrm/settings.py:160
msgid "Simplified Chinese"
msgstr "简体中文"
@ -260,7 +260,7 @@ msgstr "Goodreads key:"
#: bookwyrm/templates/book/edit_book.html:263
#: bookwyrm/templates/lists/form.html:42
#: bookwyrm/templates/preferences/edit_user.html:70
#: bookwyrm/templates/settings/announcement_form.html:65
#: bookwyrm/templates/settings/announcement_form.html:69
#: bookwyrm/templates/settings/edit_server.html:68
#: bookwyrm/templates/settings/federated_server.html:98
#: bookwyrm/templates/settings/site.html:97
@ -386,7 +386,7 @@ msgstr "主题"
msgid "Places"
msgstr "地点"
#: bookwyrm/templates/book/book.html:276 bookwyrm/templates/layout.html:64
#: bookwyrm/templates/book/book.html:276 bookwyrm/templates/layout.html:61
#: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50
@ -400,7 +400,7 @@ msgstr "添加到列表"
#: bookwyrm/templates/book/book.html:297
#: bookwyrm/templates/book/cover_modal.html:31
#: bookwyrm/templates/lists/list.html:164
#: bookwyrm/templates/lists/list.html:179
msgid "Add"
msgstr "添加"
@ -532,7 +532,7 @@ msgid "John Doe, Jane Smith"
msgstr "张三, 李四"
#: bookwyrm/templates/book/edit_book.html:183
#: bookwyrm/templates/user/shelf/shelf.html:77
#: bookwyrm/templates/user/shelf/shelf.html:78
msgid "Cover"
msgstr "封面"
@ -655,7 +655,7 @@ msgstr "跨站社区"
#: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9
#: bookwyrm/templates/layout.html:92
#: bookwyrm/templates/layout.html:64
msgid "Directory"
msgstr "目录"
@ -854,7 +854,7 @@ msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
msgstr "与 <a href=\"%(path)s\">%(username)s</a> 私信"
#: bookwyrm/templates/feed/direct_messages.html:10
#: bookwyrm/templates/layout.html:87
#: bookwyrm/templates/layout.html:92
msgid "Direct Messages"
msgstr "私信"
@ -910,7 +910,6 @@ msgid "Updates"
msgstr "更新"
#: bookwyrm/templates/feed/feed_layout.html:10
#: bookwyrm/templates/layout.html:58
#: bookwyrm/templates/user/shelf/books_header.html:3
msgid "Your books"
msgstr "你的书目"
@ -963,7 +962,7 @@ msgid "What are you reading?"
msgstr "你在阅读什么?"
#: bookwyrm/templates/get_started/books.html:9
#: bookwyrm/templates/lists/list.html:120
#: bookwyrm/templates/lists/list.html:135
msgid "Search for a book"
msgstr "搜索书目"
@ -983,7 +982,7 @@ msgstr "你可以在开始使用 %(site_name)s 后添加书目。"
#: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/layout.html:37 bookwyrm/templates/layout.html:38
#: bookwyrm/templates/lists/list.html:124
#: bookwyrm/templates/lists/list.html:139
#: bookwyrm/templates/search/layout.html:4
#: bookwyrm/templates/search/layout.html:9
msgid "Search"
@ -999,7 +998,7 @@ msgid "Popular on %(site_name)s"
msgstr "%(site_name)s 上的热门"
#: bookwyrm/templates/get_started/books.html:58
#: bookwyrm/templates/lists/list.html:137
#: bookwyrm/templates/lists/list.html:152
msgid "No books found"
msgstr "没有找到书目"
@ -1111,7 +1110,7 @@ msgid "%(username)s's %(year)s Books"
msgstr "%(username)s 在 %(year)s 的书目"
#: bookwyrm/templates/import.html:5 bookwyrm/templates/import.html:9
#: bookwyrm/templates/layout.html:97
#: bookwyrm/templates/user/shelf/shelf.html:40
msgid "Import Books"
msgstr "导入书目"
@ -1196,14 +1195,14 @@ msgstr "书目"
#: bookwyrm/templates/import_status.html:114
#: bookwyrm/templates/snippets/create_status_form.html:13
#: bookwyrm/templates/user/shelf/shelf.html:78
#: bookwyrm/templates/user/shelf/shelf.html:98
#: bookwyrm/templates/user/shelf/shelf.html:79
#: bookwyrm/templates/user/shelf/shelf.html:99
msgid "Title"
msgstr "标题"
#: bookwyrm/templates/import_status.html:117
#: bookwyrm/templates/user/shelf/shelf.html:79
#: bookwyrm/templates/user/shelf/shelf.html:101
#: bookwyrm/templates/user/shelf/shelf.html:80
#: bookwyrm/templates/user/shelf/shelf.html:102
msgid "Author"
msgstr "作者"
@ -1245,15 +1244,21 @@ msgstr "搜索书目或用户"
msgid "Main navigation menu"
msgstr "主导航菜单"
#: bookwyrm/templates/layout.html:61
#: bookwyrm/templates/layout.html:58
msgid "Feed"
msgstr "动态"
#: bookwyrm/templates/layout.html:102
#: bookwyrm/templates/layout.html:87
#, fuzzy
#| msgid "Your books"
msgid "Your Books"
msgstr "你的书目"
#: bookwyrm/templates/layout.html:97
msgid "Settings"
msgstr "设置"
#: bookwyrm/templates/layout.html:111
#: bookwyrm/templates/layout.html:106
#: bookwyrm/templates/settings/admin_layout.html:31
#: bookwyrm/templates/settings/manage_invite_requests.html:15
#: bookwyrm/templates/settings/manage_invites.html:3
@ -1261,45 +1266,47 @@ msgstr "设置"
msgid "Invites"
msgstr "邀请"
#: bookwyrm/templates/layout.html:118
#: bookwyrm/templates/layout.html:113
msgid "Admin"
msgstr "管理员"
#: bookwyrm/templates/layout.html:125
#: bookwyrm/templates/layout.html:120
msgid "Log out"
msgstr "登出"
#: bookwyrm/templates/layout.html:133 bookwyrm/templates/layout.html:134
#: bookwyrm/templates/layout.html:128 bookwyrm/templates/layout.html:129
#: bookwyrm/templates/notifications.html:6
#: bookwyrm/templates/notifications.html:11
msgid "Notifications"
msgstr "通知"
#: bookwyrm/templates/layout.html:154 bookwyrm/templates/layout.html:158
#: bookwyrm/templates/layout.html:151 bookwyrm/templates/layout.html:155
#: bookwyrm/templates/login.html:17
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
msgstr "用户名:"
#: bookwyrm/templates/layout.html:159
#: bookwyrm/templates/layout.html:156
msgid "password"
msgstr "密码"
#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:36
#: bookwyrm/templates/layout.html:157 bookwyrm/templates/login.html:36
msgid "Forgot your password?"
msgstr "忘记了密码?"
#: bookwyrm/templates/layout.html:163 bookwyrm/templates/login.html:10
#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:10
#: bookwyrm/templates/login.html:33
msgid "Log in"
msgstr "登录"
#: bookwyrm/templates/layout.html:171
#: bookwyrm/templates/layout.html:168
msgid "Join"
msgstr "加入"
#: bookwyrm/templates/layout.html:206
msgid "About this server"
#, fuzzy
#| msgid "About this server"
msgid "About this instance"
msgstr "关于本服务器"
#: bookwyrm/templates/layout.html:210
@ -1361,7 +1368,7 @@ msgid "Discard"
msgstr "削除"
#: bookwyrm/templates/lists/edit_form.html:5
#: bookwyrm/templates/lists/list_layout.html:17
#: bookwyrm/templates/lists/list_layout.html:16
msgid "Edit List"
msgstr "编辑列表"
@ -1410,62 +1417,63 @@ msgstr "任何人都可以向此列表中添加书目"
msgid "This list is currently empty"
msgstr "此列表当前是空的"
#: bookwyrm/templates/lists/list.html:65
#: bookwyrm/templates/lists/list.html:66
#, python-format
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
msgstr "由 <a href=\"%(user_path)s\">%(username)s</a> 添加"
#: bookwyrm/templates/lists/list.html:77
#, fuzzy
#| msgid "Sent"
msgid "Set"
msgstr "已发送"
#: bookwyrm/templates/lists/list.html:80
#: bookwyrm/templates/lists/list.html:74
#, fuzzy
#| msgid "List curation:"
msgid "List position"
msgstr "列表策展:"
#: bookwyrm/templates/lists/list.html:86
#: bookwyrm/templates/lists/list.html:81
#, fuzzy
#| msgid "Sent"
msgid "Set"
msgstr "已发送"
#: bookwyrm/templates/lists/list.html:89
#: bookwyrm/templates/snippets/shelf_selector.html:26
msgid "Remove"
msgstr "移除"
#: bookwyrm/templates/lists/list.html:99 bookwyrm/templates/lists/list.html:111
#: bookwyrm/templates/lists/list.html:103
#: bookwyrm/templates/lists/list.html:120
#, fuzzy
#| msgid "Your Lists"
msgid "Sort List"
msgstr "你的列表"
#: bookwyrm/templates/lists/list.html:105
#: bookwyrm/templates/lists/list.html:113
#, fuzzy
#| msgid "Directory"
msgid "Direction"
msgstr "目录"
#: bookwyrm/templates/lists/list.html:116
#: bookwyrm/templates/lists/list.html:127
msgid "Add Books"
msgstr "添加书目"
#: bookwyrm/templates/lists/list.html:116
#: bookwyrm/templates/lists/list.html:129
msgid "Suggest Books"
msgstr "推荐书目"
#: bookwyrm/templates/lists/list.html:125
#: bookwyrm/templates/lists/list.html:140
msgid "search"
msgstr "搜索"
#: bookwyrm/templates/lists/list.html:131
#: bookwyrm/templates/lists/list.html:146
msgid "Clear search"
msgstr "清除搜索"
#: bookwyrm/templates/lists/list.html:136
#: bookwyrm/templates/lists/list.html:151
#, python-format
msgid "No books found matching the query \"%(query)s\""
msgstr "没有符合 \"%(query)s\" 请求的书目"
#: bookwyrm/templates/lists/list.html:164
#: bookwyrm/templates/lists/list.html:179
msgid "Suggest"
msgstr "推荐"
@ -1558,8 +1566,8 @@ msgstr "已解决"
#: bookwyrm/templates/moderation/reports.html:6
#, python-format
msgid "Reports: %(server_name)s"
msgstr "报告: %(server_name)s"
msgid "Reports: %(instance_name)s"
msgstr "报告: %(instance_name)s"
#: bookwyrm/templates/moderation/reports.html:8
#: bookwyrm/templates/moderation/reports.html:17
@ -1569,8 +1577,8 @@ msgstr "报告"
#: bookwyrm/templates/moderation/reports.html:14
#, python-format
msgid "Reports: <small>%(server_name)s</small>"
msgstr "报告: <small>%(server_name)s</small>"
msgid "Reports: <small>%(instance_name)s</small>"
msgstr "报告: <small>%(instance_name)s</small>"
#: bookwyrm/templates/moderation/reports.html:28
msgid "Resolved"
@ -1771,6 +1779,26 @@ msgstr "个人资料"
msgid "Relationships"
msgstr "关系"
#: bookwyrm/templates/rss/title.html:5
#: bookwyrm/templates/snippets/status/status_header.html:35
msgid "rated"
msgstr "评价了"
#: bookwyrm/templates/rss/title.html:7
#: bookwyrm/templates/snippets/status/status_header.html:37
msgid "reviewed"
msgstr "写了书评给"
#: bookwyrm/templates/rss/title.html:9
#: bookwyrm/templates/snippets/status/status_header.html:39
msgid "commented on"
msgstr "评论了"
#: bookwyrm/templates/rss/title.html:11
#: bookwyrm/templates/snippets/status/status_header.html:41
msgid "quoted"
msgstr "引用了"
#: bookwyrm/templates/search/book.html:64
#, fuzzy
#| msgid "Show results from other catalogues"
@ -1828,7 +1856,9 @@ msgstr "管理用户"
#: bookwyrm/templates/settings/admin_layout.html:39
#: bookwyrm/templates/settings/federation.html:3
#: bookwyrm/templates/settings/federation.html:5
msgid "Federated Servers"
#, fuzzy
#| msgid "Federated Servers"
msgid "Federated Instances"
msgstr "互联的服务器"
#: bookwyrm/templates/settings/admin_layout.html:44
@ -1882,6 +1912,7 @@ msgid "Back to list"
msgstr "回到服务器列表"
#: bookwyrm/templates/settings/announcement.html:11
#: bookwyrm/templates/settings/announcement_form.html:6
#, fuzzy
#| msgid "Announcements"
msgid "Edit Announcement"
@ -1923,7 +1954,7 @@ msgstr "出生日期:"
msgid "Active:"
msgstr "活跃"
#: bookwyrm/templates/settings/announcement_form.html:5
#: bookwyrm/templates/settings/announcement_form.html:8
#: bookwyrm/templates/settings/announcements.html:8
#, fuzzy
#| msgid "Announcements"
@ -1982,13 +2013,15 @@ msgstr "停用"
#: bookwyrm/templates/settings/server_blocklist.html:3
#: bookwyrm/templates/settings/server_blocklist.html:20
#, fuzzy
#| msgid "Add cover"
msgid "Add server"
msgstr "添加封面"
#| msgid "Instance Name:"
msgid "Add instance"
msgstr "实例名称"
#: bookwyrm/templates/settings/edit_server.html:7
#: bookwyrm/templates/settings/server_blocklist.html:7
msgid "Back to server list"
#, fuzzy
#| msgid "Back to server list"
msgid "Back to instance list"
msgstr "回到服务器列表"
#: bookwyrm/templates/settings/edit_server.html:16
@ -2103,8 +2136,10 @@ msgstr ""
#: bookwyrm/templates/settings/federation.html:19
#: bookwyrm/templates/user_admin/server_filter.html:5
msgid "Server name"
msgstr "服务器名称"
#, fuzzy
#| msgid "Instance Name:"
msgid "Instance name"
msgstr "实例名称"
#: bookwyrm/templates/settings/federation.html:23
msgid "Date federated"
@ -2231,7 +2266,7 @@ msgid "Import Blocklist"
msgstr "导入书目"
#: bookwyrm/templates/settings/server_blocklist.html:26
#: bookwyrm/templates/snippets/goal_progress.html:5
#: bookwyrm/templates/snippets/goal_progress.html:7
msgid "Success!"
msgstr "成功!"
@ -2320,15 +2355,15 @@ msgstr "没有封面"
msgid "<a href=\"%(path)s\">%(title)s</a> by "
msgstr "<a href=\"%(path)s\">%(title)s</a> 来自"
#: bookwyrm/templates/snippets/boost_button.html:9
#: bookwyrm/templates/snippets/boost_button.html:10
#: bookwyrm/templates/snippets/boost_button.html:20
#: bookwyrm/templates/snippets/boost_button.html:21
#, fuzzy
#| msgid "boosted"
msgid "Boost"
msgstr "转发了"
#: bookwyrm/templates/snippets/boost_button.html:16
#: bookwyrm/templates/snippets/boost_button.html:17
#: bookwyrm/templates/snippets/boost_button.html:33
#: bookwyrm/templates/snippets/boost_button.html:34
#, fuzzy
#| msgid "Un-boost status"
msgid "Un-boost"
@ -2422,13 +2457,13 @@ msgstr "删除这些阅读日期吗?"
msgid "You are deleting this readthrough and its %(count)s associated progress updates."
msgstr "你正要删除这篇阅读经过以及与之相关的 %(count)s 次进度更新。"
#: bookwyrm/templates/snippets/fav_button.html:9
#: bookwyrm/templates/snippets/fav_button.html:11
#: bookwyrm/templates/snippets/fav_button.html:10
#: bookwyrm/templates/snippets/fav_button.html:12
msgid "Like"
msgstr ""
#: bookwyrm/templates/snippets/fav_button.html:17
#: bookwyrm/templates/snippets/fav_button.html:18
#: bookwyrm/templates/snippets/fav_button.html:19
#, fuzzy
#| msgid "Un-like status"
msgid "Un-like"
@ -2471,6 +2506,13 @@ msgstr "接受"
msgid "No rating"
msgstr "没有评价"
#: bookwyrm/templates/snippets/form_rate_stars.html:44
#: bookwyrm/templates/snippets/stars.html:7
#, python-format
msgid "%(rating)s star"
msgid_plural "%(rating)s stars"
msgstr[0] ""
#: bookwyrm/templates/snippets/generated_status/goal.html:1
#, python-format
msgid "set a goal to read %(counter)s book in %(year)s"
@ -2522,17 +2564,17 @@ msgstr "发布到消息流中"
msgid "Set goal"
msgstr "设置目标"
#: bookwyrm/templates/snippets/goal_progress.html:7
#: bookwyrm/templates/snippets/goal_progress.html:9
#, python-format
msgid "%(percent)s%% complete!"
msgstr "完成了 %(percent)s%% "
#: bookwyrm/templates/snippets/goal_progress.html:10
#: bookwyrm/templates/snippets/goal_progress.html:12
#, python-format
msgid "You've read <a href=\"%(path)s\">%(read_count)s of %(goal_count)s books</a>."
msgstr "你已经阅读了 <a href=\"%(path)s\">%(goal_count)s 本书中的 %(read_count)s 本</a>。"
#: bookwyrm/templates/snippets/goal_progress.html:12
#: bookwyrm/templates/snippets/goal_progress.html:14
#, python-format
msgid "%(username)s has read <a href=\"%(path)s\">%(read_count)s of %(goal_count)s books</a>."
msgstr "%(username)s 已经阅读了 <a href=\"%(path)s\">%(goal_count)s 本书中的 %(read_count)s 本</a>。"
@ -2641,26 +2683,6 @@ msgstr "注册"
msgid "Report"
msgstr "报告"
#: bookwyrm/templates/snippets/rss_title.html:5
#: bookwyrm/templates/snippets/status/status_header.html:35
msgid "rated"
msgstr "评价了"
#: bookwyrm/templates/snippets/rss_title.html:7
#: bookwyrm/templates/snippets/status/status_header.html:37
msgid "reviewed"
msgstr "写了书评给"
#: bookwyrm/templates/snippets/rss_title.html:9
#: bookwyrm/templates/snippets/status/status_header.html:39
msgid "commented on"
msgstr "评论了"
#: bookwyrm/templates/snippets/rss_title.html:11
#: bookwyrm/templates/snippets/status/status_header.html:41
msgid "quoted"
msgstr "引用了"
#: bookwyrm/templates/snippets/search_result_text.html:36
msgid "Import book"
msgstr "导入书目"
@ -2832,7 +2854,7 @@ msgstr "编辑书架"
msgid "Update shelf"
msgstr "更新书架"
#: bookwyrm/templates/user/shelf/shelf.html:25 bookwyrm/views/shelf.py:51
#: bookwyrm/templates/user/shelf/shelf.html:25 bookwyrm/views/shelf.py:56
msgid "All books"
msgstr "所有书目"
@ -2840,30 +2862,30 @@ msgstr "所有书目"
msgid "Create shelf"
msgstr "创建书架"
#: bookwyrm/templates/user/shelf/shelf.html:61
#: bookwyrm/templates/user/shelf/shelf.html:62
msgid "Edit shelf"
msgstr "编辑书架"
#: bookwyrm/templates/user/shelf/shelf.html:80
#: bookwyrm/templates/user/shelf/shelf.html:104
#: bookwyrm/templates/user/shelf/shelf.html:81
#: bookwyrm/templates/user/shelf/shelf.html:105
msgid "Shelved"
msgstr "上架时间"
#: bookwyrm/templates/user/shelf/shelf.html:81
#: bookwyrm/templates/user/shelf/shelf.html:108
#: bookwyrm/templates/user/shelf/shelf.html:82
#: bookwyrm/templates/user/shelf/shelf.html:109
msgid "Started"
msgstr "开始时间"
#: bookwyrm/templates/user/shelf/shelf.html:82
#: bookwyrm/templates/user/shelf/shelf.html:111
#: bookwyrm/templates/user/shelf/shelf.html:83
#: bookwyrm/templates/user/shelf/shelf.html:112
msgid "Finished"
msgstr "完成时间"
#: bookwyrm/templates/user/shelf/shelf.html:137
#: bookwyrm/templates/user/shelf/shelf.html:138
msgid "This shelf is empty."
msgstr "此书架是空的。"
#: bookwyrm/templates/user/shelf/shelf.html:143
#: bookwyrm/templates/user/shelf/shelf.html:144
msgid "Delete shelf"
msgstr "删除书架"
@ -2924,8 +2946,8 @@ msgstr "回到报告"
#: bookwyrm/templates/user_admin/user_admin.html:7
#, python-format
msgid "Users: <small>%(server_name)s</small>"
msgstr "用户: <small>%(server_name)s</small>"
msgid "Users: <small>%(instance_name)s</small>"
msgstr "用户: <small>%(instance_name)s</small>"
#: bookwyrm/templates/user_admin/user_admin.html:22
#: bookwyrm/templates/user_admin/username_filter.html:5
@ -2941,7 +2963,7 @@ msgid "Last Active"
msgstr "最后或缺"
#: bookwyrm/templates/user_admin/user_admin.html:38
msgid "Remote server"
msgid "Remote instance"
msgstr "移除服务器"
#: bookwyrm/templates/user_admin/user_admin.html:47
@ -2989,6 +3011,10 @@ msgstr ""
msgid "Access level:"
msgstr ""
#: bookwyrm/templates/widgets/clearable_file_input_with_warning.html:3
msgid "File exceeds maximum size: 10MB"
msgstr ""
#: bookwyrm/views/import_data.py:67
#, fuzzy
#| msgid "Email address:"
@ -3004,6 +3030,23 @@ msgstr "没有找到使用该邮箱的用户。"
msgid "A password reset link sent to %s"
msgstr "密码重置连接已发送给 %s"
#~ msgid "Reports: <small>%(server_name)s</small>"
#~ msgstr "报告: <small>%(server_name)s</small>"
#~ msgid "Federated Servers"
#~ msgstr "互联的服务器"
#~ msgid "Server name"
#~ msgstr "服务器名称"
#, fuzzy
#~| msgid "Add cover"
#~ msgid "Add server"
#~ msgstr "添加封面"
#~ msgid "Remote server"
#~ msgstr "移除服务器"
#, fuzzy
#~| msgid "BookWyrm users"
#~ msgid "BookWyrm\\"
@ -3054,12 +3097,12 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "Enter a number."
#~ msgstr "系列编号:"
#, fuzzy, python-format
#, fuzzy
#~| msgid "A user with this email already exists."
#~ msgid "%(model_name)s with this %(field_labels)s already exists."
#~ msgstr "已经存在使用该邮箱的用户。"
#, fuzzy, python-format
#, fuzzy
#~| msgid "%(value)s is not a valid remote_id"
#~ msgid "Value %(value)r is not a valid choice."
#~ msgstr "%(value)s 不是有效的 remote_id"
@ -3069,7 +3112,7 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "This field cannot be null."
#~ msgstr "此书架是空的。"
#, fuzzy, python-format
#, fuzzy
#~| msgid "A user with this email already exists."
#~ msgid "%(model_name)s with this %(field_label)s already exists."
#~ msgstr "已经存在使用该邮箱的用户。"
@ -3119,7 +3162,7 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "Positive small integer"
#~ msgstr "无有效的邀请"
#, fuzzy, python-format
#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(value)s” is not a valid UUID."
#~ msgstr "%(value)s 不是有效的用户名"
@ -3134,12 +3177,12 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "One-to-one relationship"
#~ msgstr "关系"
#, fuzzy, python-format
#, fuzzy
#~| msgid "Relationships"
#~ msgid "%(from)s-%(to)s relationship"
#~ msgstr "关系"
#, fuzzy, python-format
#, fuzzy
#~| msgid "Relationships"
#~ msgid "%(from)s-%(to)s relationships"
#~ msgstr "关系"
@ -3199,7 +3242,7 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "Order"
#~ msgstr "排列顺序"
#, fuzzy, python-format
#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(pk)s” is not a valid value."
#~ msgstr "%(value)s 不是有效的用户名"
@ -3263,7 +3306,7 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "This is not a valid IPv6 address."
#~ msgstr "邮箱地址:"
#, fuzzy, python-format
#, fuzzy
#~| msgid "No books found matching the query \"%(query)s\""
#~ msgid "No %(verbose_name)s found matching the query"
#~ msgstr "没有符合 \"%(query)s\" 请求的书目"
@ -3282,11 +3325,9 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "Matching Users"
#~ msgstr "匹配的用户"
#, python-format
#~ msgid "Set a reading goal for %(year)s"
#~ msgstr "设定 %(year)s 的阅读目标"
#, python-format
#~ msgid "by %(author)s"
#~ msgstr "由 %(author)s 所著"
@ -3299,15 +3340,12 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "Date"
#~ msgstr "日期"
#, python-format
#~ msgid "replied to <a href=\"%(user_path)s\">%(username)s's</a> <a href=\"%(status_path)s\">review</a>"
#~ msgstr "回复了 <a href=\"%(user_path)s\">%(username)s</a> 的 <a href=\"%(status_path)s\">书评</a>"
#, python-format
#~ msgid "replied to <a href=\"%(user_path)s\">%(username)s's</a> <a href=\"%(status_path)s\">comment</a>"
#~ msgstr "恢复了 <a href=\"%(user_path)s\">%(username)s</a> 的 <a href=\"%(status_path)s\">评论</a>"
#, python-format
#~ msgid "replied to <a href=\"%(user_path)s\">%(username)s's</a> <a href=\"%(status_path)s\">quote</a>"
#~ msgstr "回复了 <a href=\"%(user_path)s\">%(username)s</a> 的 <a href=\"%(status_path)s\">引用</a>"
@ -3317,7 +3355,6 @@ msgstr "密码重置连接已发送给 %s"
#~ msgid "Add tag"
#~ msgstr "添加标签"
#, python-format
#~ msgid "Books tagged \"%(tag.name)s\""
#~ msgstr "标有 \"%(tag.name)s\" 标签的书"

View file

@ -1,3 +1,5 @@
include /etc/nginx/conf.d/server_config;
upstream web {
server web:8000;
}

View file

@ -1,3 +1,5 @@
include /etc/nginx/conf.d/server_config;
upstream web {
server web:8000;
}

1
nginx/server_config Normal file
View file

@ -0,0 +1 @@
client_max_body_size 10m;

View file

@ -1,5 +1,5 @@
celery==4.4.2
Django==3.2.0
Django==3.2.1
django-model-utils==4.0.0
environs==7.2.0
flower==0.9.4