Merge branch 'main' into production

This commit is contained in:
Mouse Reeve 2021-06-14 12:55:15 -07:00
commit 7e3627f787
57 changed files with 1278 additions and 925 deletions

View file

@ -13,16 +13,10 @@ DEFAULT_LANGUAGE="English"
## Leave unset to allow all hosts ## Leave unset to allow all hosts
# ALLOWED_HOSTS="localhost,127.0.0.1,[::1]" # 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/ MEDIA_ROOT=images/
POSTGRES_PORT=5432 POSTGRES_PORT=5432
POSTGRES_PASSWORD=securedbpassword123 POSTGRES_PASSWORD=securedbypassword123
POSTGRES_USER=fedireads POSTGRES_USER=fedireads
POSTGRES_DB=fedireads POSTGRES_DB=fedireads
POSTGRES_HOST=db POSTGRES_HOST=db
@ -47,6 +41,3 @@ EMAIL_HOST_USER=mail@your.domain.here
EMAIL_HOST_PASSWORD=emailpassword123 EMAIL_HOST_PASSWORD=emailpassword123
EMAIL_USE_TLS=true EMAIL_USE_TLS=true
EMAIL_USE_SSL=false 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 ## Leave unset to allow all hosts
# ALLOWED_HOSTS="localhost,127.0.0.1,[::1]" # 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/ MEDIA_ROOT=images/
POSTGRES_PORT=5432 POSTGRES_PORT=5432
POSTGRES_PASSWORD=securedbpassword123 POSTGRES_PASSWORD=securedbypassword123
POSTGRES_USER=fedireads POSTGRES_USER=fedireads
POSTGRES_DB=fedireads POSTGRES_DB=fedireads
POSTGRES_HOST=db POSTGRES_HOST=db

View file

@ -50,7 +50,6 @@ jobs:
SECRET_KEY: beepbeep SECRET_KEY: beepbeep
DEBUG: true DEBUG: true
DOMAIN: your.domain.here DOMAIN: your.domain.here
OL_URL: https://openlibrary.org
BOOKWYRM_DATABASE_BACKEND: postgres BOOKWYRM_DATABASE_BACKEND: postgres
MEDIA_ROOT: images/ MEDIA_ROOT: images/
POSTGRES_PASSWORD: hunter2 POSTGRES_PASSWORD: hunter2

View file

@ -150,6 +150,12 @@ class LimitedEditUserForm(CustomForm):
help_texts = {f: None for f in fields} help_texts = {f: None for f in fields}
class DeleteUserForm(CustomForm):
class Meta:
model = models.User
fields = ["password"]
class UserGroupForm(CustomForm): class UserGroupForm(CustomForm):
class Meta: class Meta:
model = models.User model = models.User

View file

@ -75,7 +75,12 @@ class ImportItem(models.Model):
def resolve(self): def resolve(self):
"""try various ways to lookup a book""" """try various ways to lookup a book"""
self.book = self.get_book_from_isbn() or self.get_book_from_title_author() if self.isbn:
self.book = self.get_book_from_isbn()
else:
# don't fall back on title/author search is isbn is present.
# you're too likely to mismatch
self.get_book_from_title_author()
def get_book_from_isbn(self): def get_book_from_isbn(self):
"""search by isbn""" """search by isbn"""

View file

@ -52,7 +52,6 @@ SECRET_KEY = env("SECRET_KEY")
DEBUG = env.bool("DEBUG", True) DEBUG = env.bool("DEBUG", True)
ALLOWED_HOSTS = env.list("ALLOWED_HOSTS", ["*"]) ALLOWED_HOSTS = env.list("ALLOWED_HOSTS", ["*"])
OL_URL = env("OL_URL")
# Application definition # Application definition
@ -114,10 +113,8 @@ STREAMS = ["home", "local", "federated"]
# Database # Database
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases # https://docs.djangoproject.com/en/3.2/ref/settings/#databases
BOOKWYRM_DATABASE_BACKEND = env("BOOKWYRM_DATABASE_BACKEND", "postgres") DATABASES = {
"default": {
BOOKWYRM_DBS = {
"postgres": {
"ENGINE": "django.db.backends.postgresql_psycopg2", "ENGINE": "django.db.backends.postgresql_psycopg2",
"NAME": env("POSTGRES_DB", "fedireads"), "NAME": env("POSTGRES_DB", "fedireads"),
"USER": env("POSTGRES_USER", "fedireads"), "USER": env("POSTGRES_USER", "fedireads"),
@ -127,8 +124,6 @@ BOOKWYRM_DBS = {
}, },
} }
DATABASES = {"default": BOOKWYRM_DBS[BOOKWYRM_DATABASE_BACKEND]}
LOGIN_URL = "/login/" LOGIN_URL = "/login/"
AUTH_USER_MODEL = "bookwyrm.User" AUTH_USER_MODEL = "bookwyrm.User"
@ -136,6 +131,7 @@ AUTH_USER_MODEL = "bookwyrm.User"
# Password validation # Password validation
# https://docs.djangoproject.com/en/3.2/ref/settings/#auth-password-validators # https://docs.djangoproject.com/en/3.2/ref/settings/#auth-password-validators
# pylint: disable=line-too-long
AUTH_PASSWORD_VALIDATORS = [ AUTH_PASSWORD_VALIDATORS = [
{ {
"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",

View file

@ -3,7 +3,7 @@
let BookWyrm = new class { let BookWyrm = new class {
constructor() { constructor() {
this.MAX_FILE_SIZE_BYTES = 10 * 1000000 this.MAX_FILE_SIZE_BYTES = 10 * 1000000;
this.initOnDOMLoaded(); this.initOnDOMLoaded();
this.initReccuringTasks(); this.initReccuringTasks();
this.initEventListeners(); this.initEventListeners();
@ -45,14 +45,14 @@ let BookWyrm = new class {
* Execute code once the DOM is loaded. * Execute code once the DOM is loaded.
*/ */
initOnDOMLoaded() { initOnDOMLoaded() {
const bookwyrm = this const bookwyrm = this;
window.addEventListener('DOMContentLoaded', function() { window.addEventListener('DOMContentLoaded', function() {
document.querySelectorAll('.tab-group') document.querySelectorAll('.tab-group')
.forEach(tabs => new TabGroup(tabs)); .forEach(tabs => new TabGroup(tabs));
document.querySelectorAll('input[type="file"]').forEach( document.querySelectorAll('input[type="file"]').forEach(
bookwyrm.disableIfTooLarge.bind(bookwyrm) bookwyrm.disableIfTooLarge.bind(bookwyrm)
) );
}); });
} }
@ -138,6 +138,7 @@ let BookWyrm = new class {
* @return {undefined} * @return {undefined}
*/ */
toggleAction(event) { toggleAction(event) {
event.preventDefault();
let trigger = event.currentTarget; let trigger = event.currentTarget;
let pressed = trigger.getAttribute('aria-pressed') === 'false'; let pressed = trigger.getAttribute('aria-pressed') === 'false';
let targetId = trigger.dataset.controls; let targetId = trigger.dataset.controls;
@ -182,6 +183,8 @@ let BookWyrm = new class {
if (focus) { if (focus) {
this.toggleFocus(focus); this.toggleFocus(focus);
} }
return false;
} }
/** /**
@ -298,25 +301,25 @@ let BookWyrm = new class {
} }
disableIfTooLarge(eventOrElement) { disableIfTooLarge(eventOrElement) {
const { addRemoveClass, MAX_FILE_SIZE_BYTES } = this const { addRemoveClass, MAX_FILE_SIZE_BYTES } = this;
const element = eventOrElement.currentTarget || eventOrElement const element = eventOrElement.currentTarget || eventOrElement;
const submits = element.form.querySelectorAll('[type="submit"]') const submits = element.form.querySelectorAll('[type="submit"]');
const warns = element.parentElement.querySelectorAll('.file-too-big') const warns = element.parentElement.querySelectorAll('.file-too-big');
const isTooBig = element.files && const isTooBig = element.files &&
element.files[0] && element.files[0] &&
element.files[0].size > MAX_FILE_SIZE_BYTES element.files[0].size > MAX_FILE_SIZE_BYTES;
if (isTooBig) { if (isTooBig) {
submits.forEach(submitter => submitter.disabled = true) submits.forEach(submitter => submitter.disabled = true);
warns.forEach( warns.forEach(
sib => addRemoveClass(sib, 'is-hidden', false) sib => addRemoveClass(sib, 'is-hidden', false)
) );
} else { } else {
submits.forEach(submitter => submitter.disabled = false) submits.forEach(submitter => submitter.disabled = false);
warns.forEach( warns.forEach(
sib => addRemoveClass(sib, 'is-hidden', true) sib => addRemoveClass(sib, 'is-hidden', true)
) );
} }
} }
} }();

View file

@ -17,7 +17,7 @@ let LocalStorageTools = new class {
* @return {undefined} * @return {undefined}
*/ */
updateDisplay(event) { updateDisplay(event) {
// used in set reading goal // Used in set reading goal
let key = event.target.dataset.id; let key = event.target.dataset.id;
let value = event.target.dataset.value; let value = event.target.dataset.value;
@ -34,10 +34,10 @@ let LocalStorageTools = new class {
* @return {undefined} * @return {undefined}
*/ */
setDisplay(node) { setDisplay(node) {
// used in set reading goal // Used in set reading goal
let key = node.dataset.hide; let key = node.dataset.hide;
let value = window.localStorage.getItem(key); let value = window.localStorage.getItem(key);
BookWyrm.addRemoveClass(node, 'is-hidden', value); BookWyrm.addRemoveClass(node, 'is-hidden', value);
} }
} }();

View file

@ -20,8 +20,7 @@
<meta itemprop="volumeNumber" content="{{ book.series_number }}"> <meta itemprop="volumeNumber" content="{{ book.series_number }}">
<small class="has-text-grey-dark"> <small class="has-text-grey-dark">
({{ book.series }} ({{ book.series }}{% if book.series_number %} #{{ book.series_number }}{% endif %})
{% if book.series_number %} #{{ book.series_number }}{% endif %})
</small> </small>
<br> <br>
{% endif %} {% endif %}

View file

@ -1,7 +1,7 @@
{% load i18n %} {% load i18n %}
<div <div
role="dialog" role="dialog"
class="modal is-hidden" class="modal {% if active %}is-active{% else %}is-hidden{% endif %}"
id="{{ controls_text }}-{{ controls_uid }}" id="{{ controls_text }}-{{ controls_uid }}"
aria-labelledby="modal-card-title-{{ controls_text }}-{{ controls_uid }}" aria-labelledby="modal-card-title-{{ controls_text }}-{{ controls_uid }}"
aria-modal="true" aria-modal="true"

View file

@ -7,6 +7,7 @@
{% block content %}{% spaceless %} {% block content %}{% spaceless %}
<div class="block"> <div class="block">
<h1 class="title">{% trans "Import Status" %}</h1> <h1 class="title">{% trans "Import Status" %}</h1>
<a href="{% url 'import' %}" class="has-text-weight-normal help subtitle is-link">{% trans "Back to imports" %}</a>
<dl> <dl>
<div class="is-flex"> <div class="is-flex">
@ -106,7 +107,11 @@
{% endif %} {% endif %}
<div class="block"> <div class="block">
{% if job.complete %}
<h2 class="title is-4">{% trans "Successfully imported" %}</h2> <h2 class="title is-4">{% trans "Successfully imported" %}</h2>
{% else %}
<h2 class="title is-4">{% trans "Import Progress" %}</h2>
{% endif %}
<table class="table"> <table class="table">
<tr> <tr>
<th> <th>

View file

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

View file

@ -3,7 +3,7 @@
{% block title %} {% block title %}
{% if server %} {% 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 %} {% else %}
{% trans "Reports" %} {% trans "Reports" %}
{% endif %} {% endif %}
@ -11,7 +11,7 @@
{% block header %} {% block header %}
{% if server %} {% 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> <a href="{% url 'settings-reports' %}" class="help has-text-weight-normal">Clear filters</a>
{% else %} {% else %}
{% trans "Reports" %} {% trans "Reports" %}

View file

@ -1,4 +1,4 @@
{% extends 'preferences/preferences_layout.html' %} {% extends 'preferences/layout.html' %}
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Blocked Users" %}{{ author.name }}{% endblock %} {% block title %}{% trans "Blocked Users" %}{{ author.name }}{% endblock %}

View file

@ -1,4 +1,4 @@
{% extends 'preferences/preferences_layout.html' %} {% extends 'preferences/layout.html' %}
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Change Password" %}{% endblock %} {% block title %}{% trans "Change Password" %}{% endblock %}

View file

@ -0,0 +1,30 @@
{% extends 'preferences/layout.html' %}
{% load i18n %}
{% block title %}{% trans "Delete Account" %}{% endblock %}
{% block header %}
{% trans "Delete Account" %}
{% endblock %}
{% block panel %}
<div class="block">
<h2 class="title is-4">{% trans "Permanently delete account" %}</h2>
<p class="notification is-danger is-light">
{% trans "Deleting your account cannot be undone. The username will not be available to register in the future." %}
</p>
<form name="delete-user" action="{% url 'prefs-delete' %}" method="post">
{% csrf_token %}
<div class="field">
<label class="label" for="id_password">{% trans "Confirm password:" %}</label>
<input class="input {% if form.password.errors %}is-danger{% endif %}" type="password" name="password" id="id_password" required>
{% for error in form.password.errors %}
<p class="help is-danger">{{ error | escape }}</p>
{% endfor %}
</div>
<button type="submit" class="button is-danger">{% trans "Delete Account" %}</button>
</form>
</div>
{% endblock %}

View file

@ -1,4 +1,4 @@
{% extends 'preferences/preferences_layout.html' %} {% extends 'preferences/layout.html' %}
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Edit Profile" %}{% endblock %} {% block title %}{% trans "Edit Profile" %}{% endblock %}

View file

@ -18,6 +18,10 @@
{% url 'prefs-password' as url %} {% url 'prefs-password' as url %}
<a href="{{ url }}"{% if url in request.path %} class="is-active" aria-selected="true"{% endif %}>{% trans "Change Password" %}</a> <a href="{{ url }}"{% if url in request.path %} class="is-active" aria-selected="true"{% endif %}>{% trans "Change Password" %}</a>
</li> </li>
<li>
{% url 'prefs-delete' as url %}
<a href="{{ url }}"{% if url in request.path %} class="is-active" aria-selected="true"{% endif %}>{% trans "Delete Account" %}</a>
</li>
</ul> </ul>
<h2 class="menu-label">{% trans "Relationships" %}</h2> <h2 class="menu-label">{% trans "Relationships" %}</h2>
<ul class="menu-list"> <ul class="menu-list">

View file

@ -0,0 +1,14 @@
{% extends 'layout.html' %}
{% load i18n %}
{% block title %}
{% blocktrans trimmed with book_title=book.title %}
Finish "{{ book_title }}"
{% endblocktrans %}
{% endblock %}
{% block content %}
{% include "snippets/shelve_button/finish_reading_modal.html" with book=book active=True %}
{% endblock %}

View file

@ -0,0 +1,14 @@
{% extends 'layout.html' %}
{% load i18n %}
{% block title %}
{% blocktrans trimmed with book_title=book.title %}
Start "{{ book_title }}"
{% endblocktrans %}
{% endblock %}
{% block content %}
{% include "snippets/shelve_button/start_reading_modal.html" with book=book active=True %}
{% endblock %}

View file

@ -0,0 +1,14 @@
{% extends 'layout.html' %}
{% load i18n %}
{% block title %}
{% blocktrans trimmed with book_title=book.title %}
Want to Read "{{ book_title }}"
{% endblocktrans %}
{% endblock %}
{% block content %}
{% include "snippets/shelve_button/want_to_read_modal.html" with book=book active=True no_body=True %}
{% endblock %}

View file

@ -36,7 +36,7 @@
</li> </li>
<li> <li>
{% url 'settings-federation' as url %} {% 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> </li>
</ul> </ul>
{% endif %} {% endif %}

View file

@ -1,10 +1,10 @@
{% extends 'settings/admin_layout.html' %} {% extends 'settings/admin_layout.html' %}
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Add server" %}{% endblock %} {% block title %}{% trans "Add instance" %}{% endblock %}
{% block header %} {% block header %}
{% trans "Add server" %} {% trans "Add instance" %}
<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 %} {% endblock %}
{% block panel %} {% block panel %}
@ -17,7 +17,7 @@
</li> </li>
{% url 'settings-add-federated-server' as url %} {% url 'settings-add-federated-server' as url %}
<li {% if url in request.path %}class="is-active" aria-current="page"{% endif %}> <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> </li>
</ul> </ul>
</div> </div>

View file

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

View file

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

View file

@ -7,7 +7,7 @@
{% block modal-form-open %} {% block modal-form-open %}
<form name="finish-reading" action="/finish-reading/{{ book.id }}" method="post"> <form name="finish-reading" action="{% url 'reading-status' 'finish' book.id %}" method="post">
{% endblock %} {% endblock %}
{% block modal-body %} {% block modal-body %}

View file

@ -7,16 +7,25 @@
{% if dropdown %}<li role="menuitem" class="dropdown-item p-0">{% endif %} {% if dropdown %}<li role="menuitem" class="dropdown-item p-0">{% endif %}
<div class="{% if not dropdown and active_shelf.shelf.identifier|next_shelf != shelf.identifier %}is-hidden{% endif %}"> <div class="{% if not dropdown and active_shelf.shelf.identifier|next_shelf != shelf.identifier %}is-hidden{% endif %}">
{% if shelf.identifier == 'reading' %}{% if not dropdown or active_shelf.shelf.identifier|next_shelf != shelf.identifier %} {% if shelf.identifier == 'reading' %}{% if not dropdown or active_shelf.shelf.identifier|next_shelf != shelf.identifier %}
{% trans "Start reading" as button_text %} {% trans "Start reading" as button_text %}
{% include 'snippets/toggle/toggle_button.html' with class=class text=button_text controls_text="start-reading" controls_uid=button_uuid focus="modal-title-start-reading" disabled=is_current %} {% url 'reading-status' 'start' book.id as fallback_url %}
{% include 'snippets/toggle/toggle_button.html' with class=class text=button_text controls_text="start-reading" controls_uid=button_uuid focus="modal-title-start-reading" disabled=is_current fallback_url=fallback_url %}
{% endif %}{% elif shelf.identifier == 'read' and active_shelf.shelf.identifier == 'read' %}{% if not dropdown or active_shelf.shelf.identifier|next_shelf != shelf.identifier %} {% endif %}{% elif shelf.identifier == 'read' and active_shelf.shelf.identifier == 'read' %}{% if not dropdown or active_shelf.shelf.identifier|next_shelf != shelf.identifier %}
<button type="button" class="button {{ class }}" disabled><span>{% trans "Read" %}</span> <button type="button" class="button {{ class }}" disabled><span>{% trans "Read" %}</span>
{% endif %}{% elif shelf.identifier == 'read' %}{% if not dropdown or active_shelf.shelf.identifier|next_shelf != shelf.identifier %} {% endif %}{% elif shelf.identifier == 'read' %}{% if not dropdown or active_shelf.shelf.identifier|next_shelf != shelf.identifier %}
{% trans "Finish reading" as button_text %} {% trans "Finish reading" as button_text %}
{% include 'snippets/toggle/toggle_button.html' with class=class text=button_text controls_text="finish-reading" controls_uid=button_uuid focus="modal-title-finish-reading" disabled=is_current %} {% url 'reading-status' 'finish' book.id as fallback_url %}
{% include 'snippets/toggle/toggle_button.html' with class=class text=button_text controls_text="finish-reading" controls_uid=button_uuid focus="modal-title-finish-reading" disabled=is_current fallback_url=fallback_url %}
{% endif %}{% elif shelf.identifier == 'to-read' %}{% if not dropdown or active_shelf.shelf.identifier|next_shelf != shelf.identifier %} {% endif %}{% elif shelf.identifier == 'to-read' %}{% if not dropdown or active_shelf.shelf.identifier|next_shelf != shelf.identifier %}
{% trans "Want to read" as button_text %} {% trans "Want to read" as button_text %}
{% include 'snippets/toggle/toggle_button.html' with class=class text=button_text controls_text="want-to-read" controls_uid=button_uuid focus="modal-title-want-to-read" disabled=is_current %} {% url 'reading-status' 'want' book.id as fallback_url %}
{% include 'snippets/toggle/toggle_button.html' with class=class text=button_text controls_text="want-to-read" controls_uid=button_uuid focus="modal-title-want-to-read" disabled=is_current fallback_url=fallback_url %}
{% endif %}{% elif shelf.editable %} {% endif %}{% elif shelf.editable %}
<form name="shelve" action="/shelve/" method="post"> <form name="shelve" action="/shelve/" method="post">
{% csrf_token %} {% csrf_token %}
@ -44,7 +53,9 @@
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="book" value="{{ active_shelf.book.id }}"> <input type="hidden" name="book" value="{{ active_shelf.book.id }}">
<input type="hidden" name="shelf" value="{{ active_shelf.shelf.id }}"> <input type="hidden" name="shelf" value="{{ active_shelf.shelf.id }}">
<button class="button is-fullwidth is-small{% if dropdown %} is-radiusless{% endif %} is-danger is-light" type="submit">{% blocktrans with name=active_shelf.shelf.name %}Remove from {{ name }}{% endblocktrans %}</button> <button class="button is-fullwidth is-small{% if dropdown %} is-radiusless{% endif %} is-danger is-light" type="submit">
{% blocktrans with name=active_shelf.shelf.name %}Remove from {{ name }}{% endblocktrans %}
</button>
</form> </form>
</li> </li>
{% endif %} {% endif %}

View file

@ -2,11 +2,13 @@
{% load i18n %} {% load i18n %}
{% block modal-title %} {% block modal-title %}
{% blocktrans with book_title=book.title %}Start "<em>{{ book_title }}</em>"{% endblocktrans %} {% blocktrans trimmed with book_title=book.title %}
Start "<em>{{ book_title }}</em>"
{% endblocktrans %}
{% endblock %} {% endblock %}
{% block modal-form-open %} {% block modal-form-open %}
<form name="start-reading" action="/start-reading/{{ book.id }}" method="post"> <form name="start-reading" action="{% url 'reading-status' 'start' book.id %}" method="post">
{% endblock %} {% endblock %}
{% block modal-body %} {% block modal-body %}

View file

@ -6,7 +6,7 @@
{% endblock %} {% endblock %}
{% block modal-form-open %} {% block modal-form-open %}
<form name="shelve" action="/shelve/" method="post"> <form name="shelve" action="{% url 'reading-status' 'want' book.id %}" method="post">
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="book" value="{{ active_shelf.book.id }}"> <input type="hidden" name="book" value="{{ active_shelf.book.id }}">
<input type="hidden" name="shelf" value="to-read"> <input type="hidden" name="shelf" value="to-read">

View file

@ -1,5 +1,12 @@
{% if fallback_url %}
<form name="fallback-form-{{ controls_uuid}}" method="GET" action="{{ fallback_url }}">
{% endif %}
<button <button
type="button" {% if not fallback_url %}
type="button"
{% else %}
type="submit"
{% endif %}
class="{% if not nonbutton %}button {% endif %}{{ class }}{% if button_type %} {{ button_type }}{% endif %}" class="{% if not nonbutton %}button {% endif %}{{ class }}{% if button_type %} {{ button_type }}{% endif %}"
data-controls="{{ controls_text }}{% if controls_uid %}-{{ controls_uid }}{% endif %}" data-controls="{{ controls_text }}{% if controls_uid %}-{{ controls_uid }}{% endif %}"
{% if focus %}data-focus-target="{{ focus }}{% if controls_uid %}-{{ controls_uid }}{% endif %}"{% endif %} {% if focus %}data-focus-target="{{ focus }}{% if controls_uid %}-{{ controls_uid }}{% endif %}"{% endif %}
@ -20,3 +27,6 @@
<span>{{ text }}</span> <span>{{ text }}</span>
{% endif %} {% endif %}
</button> </button>
{% if fallback_url %}
</form>
{% endif %}

View file

@ -2,6 +2,6 @@
{% load i18n %} {% load i18n %}
{% block filter %} {% 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"> <input type="text" class="input" name="server" value="{{ request.GET.server|default:'' }}" id="id_server" placeholder="example.server.com">
{% endblock %} {% endblock %}

View file

@ -4,7 +4,7 @@
{% block header %} {% block header %}
{% if server %} {% 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> <a href="{% url 'settings-users' %}" class="help has-text-weight-normal">Clear filters</a>
{% else %} {% else %}
{% trans "Users" %} {% trans "Users" %}
@ -35,7 +35,7 @@
{% include 'snippets/table-sort-header.html' with field="is_active" sort=sort text=text %} {% include 'snippets/table-sort-header.html' with field="is_active" sort=sort text=text %}
</th> </th>
<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 %} {% include 'snippets/table-sort-header.html' with field="federated_server__server_name" sort=sort text=text %}
</th> </th>
</tr> </tr>

View file

@ -1,6 +1,12 @@
{% load i18n %} {% load i18n %}
<div class="block content"> <div class="block content">
{% if not user.is_active and user.deactivation_reason == "self_deletion" %}
<div class="notification is-danger">
{% trans "Permanently deleted" %}
</div>
{% else %}
<h3>{% trans "Actions" %}</h3> <h3>{% trans "Actions" %}</h3>
<div class="is-flex"> <div class="is-flex">
<p class="mr-1"> <p class="mr-1">
<a class="button" href="{% url 'direct-messages-user' user.username %}">{% trans "Send direct message" %}</a> <a class="button" href="{% url 'direct-messages-user' user.username %}">{% trans "Send direct message" %}</a>
@ -14,6 +20,7 @@
{% endif %} {% endif %}
</form> </form>
</div> </div>
{% if user.local %} {% if user.local %}
<div> <div>
<form name="permission" method="post" action="{% url 'settings-user' user.id %}"> <form name="permission" method="post" action="{% url 'settings-user' user.id %}">
@ -39,4 +46,6 @@
</form> </form>
</div> </div>
{% endif %} {% endif %}
{% endif %}
</div> </div>

View file

@ -0,0 +1,150 @@
""" test for app action functionality """
import json
import pathlib
from unittest.mock import patch
from PIL import Image
from django.contrib.auth.models import AnonymousUser
from django.contrib.sessions.middleware import SessionMiddleware
from django.core.files.base import ContentFile
from django.core.files.uploadedfile import SimpleUploadedFile
from django.template.response import TemplateResponse
from django.test import TestCase
from django.test.client import RequestFactory
from bookwyrm import forms, models, views
class EditUserViews(TestCase):
"""view user and edit profile"""
def setUp(self):
"""we need basic test data and mocks"""
self.factory = RequestFactory()
self.local_user = models.User.objects.create_user(
"mouse@local.com",
"mouse@mouse.mouse",
"password",
local=True,
localname="mouse",
)
self.rat = models.User.objects.create_user(
"rat@local.com", "rat@rat.rat", "password", local=True, localname="rat"
)
self.book = models.Edition.objects.create(title="test")
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
models.ShelfBook.objects.create(
book=self.book,
user=self.local_user,
shelf=self.local_user.shelf_set.first(),
)
models.SiteSettings.objects.create()
self.anonymous_user = AnonymousUser
self.anonymous_user.is_authenticated = False
def test_edit_user_page(self):
"""there are so many views, this just makes sure it LOADS"""
view = views.EditUser.as_view()
request = self.factory.get("")
request.user = self.local_user
result = view(request)
self.assertIsInstance(result, TemplateResponse)
result.render()
self.assertEqual(result.status_code, 200)
def test_edit_user(self):
"""use a form to update a user"""
view = views.EditUser.as_view()
form = forms.EditUserForm(instance=self.local_user)
form.data["name"] = "New Name"
form.data["email"] = "wow@email.com"
form.data["preferred_timezone"] = "UTC"
request = self.factory.post("", form.data)
request.user = self.local_user
self.assertIsNone(self.local_user.name)
with patch(
"bookwyrm.models.activitypub_mixin.broadcast_task.delay"
) as delay_mock:
view(request)
self.assertEqual(delay_mock.call_count, 1)
self.assertEqual(self.local_user.name, "New Name")
self.assertEqual(self.local_user.email, "wow@email.com")
def test_edit_user_avatar(self):
"""use a form to update a user"""
view = views.EditUser.as_view()
form = forms.EditUserForm(instance=self.local_user)
form.data["name"] = "New Name"
form.data["email"] = "wow@email.com"
form.data["preferred_timezone"] = "UTC"
image_file = pathlib.Path(__file__).parent.joinpath(
"../../static/images/no_cover.jpg"
)
form.data["avatar"] = SimpleUploadedFile(
image_file, open(image_file, "rb").read(), content_type="image/jpeg"
)
request = self.factory.post("", form.data)
request.user = self.local_user
with patch(
"bookwyrm.models.activitypub_mixin.broadcast_task.delay"
) as delay_mock:
view(request)
self.assertEqual(delay_mock.call_count, 1)
self.assertEqual(self.local_user.name, "New Name")
self.assertEqual(self.local_user.email, "wow@email.com")
self.assertIsNotNone(self.local_user.avatar)
self.assertEqual(self.local_user.avatar.width, 120)
self.assertEqual(self.local_user.avatar.height, 120)
def test_crop_avatar(self):
"""reduce that image size"""
image_file = pathlib.Path(__file__).parent.joinpath(
"../../static/images/no_cover.jpg"
)
image = Image.open(image_file)
result = views.edit_user.crop_avatar(image)
self.assertIsInstance(result, ContentFile)
image_result = Image.open(result)
self.assertEqual(image_result.size, (120, 120))
def test_delete_user_page(self):
"""there are so many views, this just makes sure it LOADS"""
view = views.DeleteUser.as_view()
request = self.factory.get("")
request.user = self.local_user
result = view(request)
self.assertIsInstance(result, TemplateResponse)
result.render()
self.assertEqual(result.status_code, 200)
def test_delete_user(self):
"""use a form to update a user"""
view = views.DeleteUser.as_view()
form = forms.DeleteUserForm()
form.data["password"] = "password"
request = self.factory.post("", form.data)
request.user = self.local_user
middleware = SessionMiddleware()
middleware.process_request(request)
request.session.save()
self.assertIsNone(self.local_user.name)
with patch(
"bookwyrm.models.activitypub_mixin.broadcast_task.delay"
) as delay_mock:
view(request)
self.assertEqual(delay_mock.call_count, 1)
activity = json.loads(delay_mock.call_args[0][1])
self.assertEqual(activity["type"], "Delete")
self.assertEqual(activity["actor"], self.local_user.remote_id)
self.assertEqual(
activity["cc"][0], "https://www.w3.org/ns/activitystreams#Public"
)
self.local_user.refresh_from_db()
self.assertFalse(self.local_user.is_active)
self.assertEqual(self.local_user.deactivation_reason, "self_deletion")

View file

@ -56,7 +56,7 @@ class ReadingViews(TestCase):
) )
request.user = self.local_user request.user = self.local_user
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
views.start_reading(request, self.book.id) views.ReadingStatus.as_view()(request, "start", self.book.id)
self.assertEqual(shelf.books.get(), self.book) self.assertEqual(shelf.books.get(), self.book)
@ -86,7 +86,7 @@ class ReadingViews(TestCase):
request = self.factory.post("") request = self.factory.post("")
request.user = self.local_user request.user = self.local_user
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
views.start_reading(request, self.book.id) views.ReadingStatus.as_view()(request, "start", self.book.id)
self.assertFalse(to_read_shelf.books.exists()) self.assertFalse(to_read_shelf.books.exists())
self.assertEqual(shelf.books.get(), self.book) self.assertEqual(shelf.books.get(), self.book)
@ -112,7 +112,7 @@ class ReadingViews(TestCase):
request.user = self.local_user request.user = self.local_user
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
views.finish_reading(request, self.book.id) views.ReadingStatus.as_view()(request, "finish", self.book.id)
self.assertEqual(shelf.books.get(), self.book) self.assertEqual(shelf.books.get(), self.book)

View file

@ -33,7 +33,7 @@ class ReadThrough(TestCase):
self.assertEqual(self.edition.readthrough_set.count(), 0) self.assertEqual(self.edition.readthrough_set.count(), 0)
self.client.post( self.client.post(
"/start-reading/{}".format(self.edition.id), "/reading-status/start/{}".format(self.edition.id),
{ {
"start_date": "2020-11-27", "start_date": "2020-11-27",
}, },
@ -54,10 +54,9 @@ class ReadThrough(TestCase):
self.assertEqual(self.edition.readthrough_set.count(), 0) self.assertEqual(self.edition.readthrough_set.count(), 0)
self.client.post( self.client.post(
"/start-reading/{}".format(self.edition.id), "/reading-status/start/{}".format(self.edition.id),
{ {
"start_date": "2020-11-27", "start_date": "2020-11-27",
"progress": 50,
}, },
) )
@ -66,15 +65,8 @@ class ReadThrough(TestCase):
self.assertEqual( self.assertEqual(
readthroughs[0].start_date, datetime(2020, 11, 27, tzinfo=timezone.utc) readthroughs[0].start_date, datetime(2020, 11, 27, tzinfo=timezone.utc)
) )
self.assertEqual(readthroughs[0].progress, 50)
self.assertEqual(readthroughs[0].finish_date, None) self.assertEqual(readthroughs[0].finish_date, None)
progress_updates = readthroughs[0].progressupdate_set.all()
self.assertEqual(len(progress_updates), 1)
self.assertEqual(progress_updates[0].mode, models.ProgressMode.PAGE)
self.assertEqual(progress_updates[0].progress, 50)
self.assertEqual(delay_mock.call_count, 1)
# Update progress # Update progress
self.client.post( self.client.post(
"/edit-readthrough", "/edit-readthrough",
@ -87,9 +79,9 @@ class ReadThrough(TestCase):
progress_updates = ( progress_updates = (
readthroughs[0].progressupdate_set.order_by("updated_date").all() readthroughs[0].progressupdate_set.order_by("updated_date").all()
) )
self.assertEqual(len(progress_updates), 2) self.assertEqual(len(progress_updates), 1)
self.assertEqual(progress_updates[1].mode, models.ProgressMode.PAGE) self.assertEqual(progress_updates[0].mode, models.ProgressMode.PAGE)
self.assertEqual(progress_updates[1].progress, 100) self.assertEqual(progress_updates[0].progress, 100)
# Edit doesn't publish anything # Edit doesn't publish anything
self.assertEqual(delay_mock.call_count, 1) self.assertEqual(delay_mock.call_count, 1)

View file

@ -1,17 +1,13 @@
""" test for app action functionality """ """ test for app action functionality """
import pathlib
from unittest.mock import patch from unittest.mock import patch
from PIL import Image
from django.contrib.auth.models import AnonymousUser from django.contrib.auth.models import AnonymousUser
from django.core.files.base import ContentFile
from django.core.files.uploadedfile import SimpleUploadedFile
from django.http.response import Http404 from django.http.response import Http404
from django.template.response import TemplateResponse from django.template.response import TemplateResponse
from django.test import TestCase from django.test import TestCase
from django.test.client import RequestFactory from django.test.client import RequestFactory
from bookwyrm import forms, models, views from bookwyrm import models, views
from bookwyrm.activitypub import ActivitypubResponse from bookwyrm.activitypub import ActivitypubResponse
@ -137,71 +133,3 @@ class UserViews(TestCase):
is_api.return_value = False is_api.return_value = False
with self.assertRaises(Http404): with self.assertRaises(Http404):
view(request, "rat") view(request, "rat")
def test_edit_user_page(self):
"""there are so many views, this just makes sure it LOADS"""
view = views.EditUser.as_view()
request = self.factory.get("")
request.user = self.local_user
result = view(request)
self.assertIsInstance(result, TemplateResponse)
result.render()
self.assertEqual(result.status_code, 200)
def test_edit_user(self):
"""use a form to update a user"""
view = views.EditUser.as_view()
form = forms.EditUserForm(instance=self.local_user)
form.data["name"] = "New Name"
form.data["email"] = "wow@email.com"
form.data["preferred_timezone"] = "UTC"
request = self.factory.post("", form.data)
request.user = self.local_user
self.assertIsNone(self.local_user.name)
with patch(
"bookwyrm.models.activitypub_mixin.broadcast_task.delay"
) as delay_mock:
view(request)
self.assertEqual(delay_mock.call_count, 1)
self.assertEqual(self.local_user.name, "New Name")
self.assertEqual(self.local_user.email, "wow@email.com")
def test_edit_user_avatar(self):
"""use a form to update a user"""
view = views.EditUser.as_view()
form = forms.EditUserForm(instance=self.local_user)
form.data["name"] = "New Name"
form.data["email"] = "wow@email.com"
form.data["preferred_timezone"] = "UTC"
image_file = pathlib.Path(__file__).parent.joinpath(
"../../static/images/no_cover.jpg"
)
form.data["avatar"] = SimpleUploadedFile(
image_file, open(image_file, "rb").read(), content_type="image/jpeg"
)
request = self.factory.post("", form.data)
request.user = self.local_user
with patch(
"bookwyrm.models.activitypub_mixin.broadcast_task.delay"
) as delay_mock:
view(request)
self.assertEqual(delay_mock.call_count, 1)
self.assertEqual(self.local_user.name, "New Name")
self.assertEqual(self.local_user.email, "wow@email.com")
self.assertIsNotNone(self.local_user.avatar)
self.assertEqual(self.local_user.avatar.width, 120)
self.assertEqual(self.local_user.avatar.height, 120)
def test_crop_avatar(self):
"""reduce that image size"""
image_file = pathlib.Path(__file__).parent.joinpath(
"../../static/images/no_cover.jpg"
)
image = Image.open(image_file)
result = views.user.crop_avatar(image)
self.assertIsInstance(result, ContentFile)
image_result = Image.open(result)
self.assertEqual(image_result.size, (120, 120))

View file

@ -223,7 +223,7 @@ urlpatterns = [
re_path( re_path(
r"^list/(?P<list_id>\d+)/curate/?$", views.Curate.as_view(), name="list-curate" r"^list/(?P<list_id>\d+)/curate/?$", views.Curate.as_view(), name="list-curate"
), ),
# Uyser books # User books
re_path(r"%s/books/?$" % user_path, views.Shelf.as_view(), name="user-shelves"), re_path(r"%s/books/?$" % user_path, views.Shelf.as_view(), name="user-shelves"),
re_path( re_path(
r"^%s/(helf|books)/(?P<shelf_identifier>[\w-]+)(.json)?/?$" % user_path, r"^%s/(helf|books)/(?P<shelf_identifier>[\w-]+)(.json)?/?$" % user_path,
@ -253,6 +253,7 @@ urlpatterns = [
views.ChangePassword.as_view(), views.ChangePassword.as_view(),
name="prefs-password", name="prefs-password",
), ),
re_path(r"^preferences/delete/?$", views.DeleteUser.as_view(), name="prefs-delete"),
re_path(r"^preferences/block/?$", views.Block.as_view(), name="prefs-block"), re_path(r"^preferences/block/?$", views.Block.as_view(), name="prefs-block"),
re_path(r"^block/(?P<user_id>\d+)/?$", views.Block.as_view()), re_path(r"^block/(?P<user_id>\d+)/?$", views.Block.as_view()),
re_path(r"^unblock/(?P<user_id>\d+)/?$", views.unblock), re_path(r"^unblock/(?P<user_id>\d+)/?$", views.unblock),
@ -315,8 +316,12 @@ urlpatterns = [
re_path(r"^delete-readthrough/?$", views.delete_readthrough), re_path(r"^delete-readthrough/?$", views.delete_readthrough),
re_path(r"^create-readthrough/?$", views.create_readthrough), re_path(r"^create-readthrough/?$", views.create_readthrough),
re_path(r"^delete-progressupdate/?$", views.delete_progressupdate), re_path(r"^delete-progressupdate/?$", views.delete_progressupdate),
re_path(r"^start-reading/(?P<book_id>\d+)/?$", views.start_reading), # shelve actions
re_path(r"^finish-reading/(?P<book_id>\d+)/?$", views.finish_reading), re_path(
r"^reading-status/(?P<status>want|start|finish)/(?P<book_id>\d+)/?$",
views.ReadingStatus.as_view(),
name="reading-status",
),
# following # following
re_path(r"^follow/?$", views.follow, name="follow"), re_path(r"^follow/?$", views.follow, name="follow"),
re_path(r"^unfollow/?$", views.unfollow, name="unfollow"), re_path(r"^unfollow/?$", views.unfollow, name="unfollow"),

View file

@ -6,6 +6,7 @@ from .block import Block, unblock
from .books import Book, EditBook, ConfirmEditBook, Editions from .books import Book, EditBook, ConfirmEditBook, Editions
from .books import upload_cover, add_description, switch_edition, resolve_book from .books import upload_cover, add_description, switch_edition, resolve_book
from .directory import Directory from .directory import Directory
from .edit_user import EditUser, DeleteUser
from .federation import Federation, FederatedServer from .federation import Federation, FederatedServer
from .federation import AddFederatedServer, ImportServerBlocklist from .federation import AddFederatedServer, ImportServerBlocklist
from .federation import block_server, unblock_server from .federation import block_server, unblock_server
@ -24,8 +25,9 @@ from .landing import About, Home, Discover
from .list import Lists, List, Curate, UserLists from .list import Lists, List, Curate, UserLists
from .notifications import Notifications from .notifications import Notifications
from .outbox import Outbox from .outbox import Outbox
from .reading import edit_readthrough, create_readthrough, delete_readthrough from .reading import edit_readthrough, create_readthrough
from .reading import start_reading, finish_reading, delete_progressupdate from .reading import delete_readthrough, delete_progressupdate
from .reading import ReadingStatus
from .reports import Report, Reports, make_report, resolve_report, suspend_user from .reports import Report, Reports, make_report, resolve_report, suspend_user
from .rss_feed import RssFeed from .rss_feed import RssFeed
from .password import PasswordResetRequest, PasswordReset, ChangePassword from .password import PasswordResetRequest, PasswordReset, ChangePassword
@ -36,6 +38,6 @@ from .shelf import shelve, unshelve
from .site import Site from .site import Site
from .status import CreateStatus, DeleteStatus, DeleteAndRedraft from .status import CreateStatus, DeleteStatus, DeleteAndRedraft
from .updates import get_notification_count, get_unread_status_count from .updates import get_notification_count, get_unread_status_count
from .user import User, EditUser, Followers, Following from .user import User, Followers, Following
from .user_admin import UserAdmin, UserAdminList from .user_admin import UserAdmin, UserAdminList
from .wellknown import * from .wellknown import *

113
bookwyrm/views/edit_user.py Normal file
View file

@ -0,0 +1,113 @@
""" edit or delete ones own account"""
from io import BytesIO
from uuid import uuid4
from PIL import Image
from django.contrib.auth import logout
from django.contrib.auth.decorators import login_required
from django.core.files.base import ContentFile
from django.shortcuts import redirect
from django.template.response import TemplateResponse
from django.utils.decorators import method_decorator
from django.views import View
from bookwyrm import forms, models
# pylint: disable=no-self-use
@method_decorator(login_required, name="dispatch")
class EditUser(View):
"""edit user view"""
def get(self, request):
"""edit profile page for a user"""
data = {
"form": forms.EditUserForm(instance=request.user),
"user": request.user,
}
return TemplateResponse(request, "preferences/edit_user.html", data)
def post(self, request):
"""les get fancy with images"""
form = forms.EditUserForm(request.POST, request.FILES, instance=request.user)
if not form.is_valid():
data = {"form": form, "user": request.user}
return TemplateResponse(request, "preferences/edit_user.html", data)
user = save_user_form(form)
return redirect(user.local_path)
# pylint: disable=no-self-use
@method_decorator(login_required, name="dispatch")
class DeleteUser(View):
"""delete user view"""
def get(self, request):
"""delete page for a user"""
data = {
"form": forms.DeleteUserForm(),
"user": request.user,
}
return TemplateResponse(request, "preferences/delete_user.html", data)
def post(self, request):
"""les get fancy with images"""
form = forms.DeleteUserForm(request.POST, instance=request.user)
form.is_valid()
# idk why but I couldn't get check_password to work on request.user
user = models.User.objects.get(id=request.user.id)
if form.is_valid() and user.check_password(form.cleaned_data["password"]):
user.deactivation_reason = "self_deletion"
user.delete()
logout(request)
return redirect("/")
form.errors["password"] = ["Invalid password"]
data = {"form": form, "user": request.user}
return TemplateResponse(request, "preferences/delete_user.html", data)
def save_user_form(form):
"""special handling for the user form"""
user = form.save(commit=False)
if "avatar" in form.files:
# crop and resize avatar upload
image = Image.open(form.files["avatar"])
image = crop_avatar(image)
# set the name to a hash
extension = form.files["avatar"].name.split(".")[-1]
filename = "%s.%s" % (uuid4(), extension)
user.avatar.save(filename, image, save=False)
user.save()
return user
def crop_avatar(image):
"""reduce the size and make an avatar square"""
target_size = 120
width, height = image.size
thumbnail_scale = (
height / (width / target_size)
if height > width
else width / (height / target_size)
)
image.thumbnail([thumbnail_scale, thumbnail_scale])
width, height = image.size
width_diff = width - target_size
height_diff = height - target_size
cropped = image.crop(
(
int(width_diff / 2),
int(height_diff / 2),
int(width - (width_diff / 2)),
int(height - (height_diff / 2)),
)
)
output = BytesIO()
cropped.save(output, format=image.format)
return ContentFile(output.getvalue())

View file

@ -14,7 +14,7 @@ from django.views import View
from bookwyrm import forms, models from bookwyrm import forms, models
from bookwyrm.connectors import connector_manager from bookwyrm.connectors import connector_manager
from .helpers import get_suggested_users from .helpers import get_suggested_users
from .user import save_user_form from .edit_user import save_user_form
# pylint: disable= no-self-use # pylint: disable= no-self-use

View file

@ -78,13 +78,15 @@ class ImportStatus(View):
def get(self, request, job_id): def get(self, request, job_id):
"""status of an import job""" """status of an import job"""
job = models.ImportJob.objects.get(id=job_id) job = get_object_or_404(models.ImportJob, id=job_id)
if job.user != request.user: if job.user != request.user:
raise PermissionDenied raise PermissionDenied
try: try:
task = app.AsyncResult(job.task_id) task = app.AsyncResult(job.task_id)
except ValueError: except ValueError:
task = None task = None
items = job.items.order_by("index").all() items = job.items.order_by("index").all()
failed_items = [i for i in items if i.fail_reason] failed_items = [i for i in items if i.fail_reason]
items = [i for i in items if not i.fail_reason] items = [i for i in items if not i.fail_reason]

View file

@ -7,95 +7,79 @@ from dateutil.parser import ParserError
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.http import HttpResponseBadRequest, HttpResponseNotFound from django.http import HttpResponseBadRequest, HttpResponseNotFound
from django.shortcuts import get_object_or_404, redirect from django.shortcuts import get_object_or_404, redirect
from django.template.response import TemplateResponse
from django.utils.decorators import method_decorator
from django.views import View
from django.views.decorators.http import require_POST from django.views.decorators.http import require_POST
from bookwyrm import models from bookwyrm import models
from .helpers import get_edition, handle_reading_status from .helpers import get_edition, handle_reading_status
from .shelf import handle_unshelve
# pylint: disable= no-self-use @method_decorator(login_required, name="dispatch")
@login_required # pylint: disable=no-self-use
@require_POST class ReadingStatus(View):
def start_reading(request, book_id): """consider reading a book"""
"""begin reading a book"""
book = get_edition(book_id)
reading_shelf = models.Shelf.objects.filter(
identifier=models.Shelf.READING, user=request.user
).first()
# create a readthrough def get(self, request, status, book_id):
readthrough = update_readthrough(request, book=book) """modal page"""
if readthrough: book = get_edition(book_id)
readthrough.save() template = {
"want": "want.html",
"start": "start.html",
"finish": "finish.html",
}.get(status)
if not template:
return HttpResponseNotFound()
return TemplateResponse(request, f"reading_progress/{template}", {"book": book})
# create a progress update if we have a page def post(self, request, status, book_id):
readthrough.create_update() """desire a book"""
identifier = {
"want": models.Shelf.TO_READ,
"start": models.Shelf.READING,
"finish": models.Shelf.READ_FINISHED,
}.get(status)
if not identifier:
return HttpResponseBadRequest()
current_status_shelfbook = ( desired_shelf = models.Shelf.objects.filter(
models.ShelfBook.objects.select_related("shelf") identifier=identifier, user=request.user
.filter( ).first()
shelf__identifier__in=models.Shelf.READ_STATUS_IDENTIFIERS,
user=request.user, book = get_edition(book_id)
book=book,
current_status_shelfbook = (
models.ShelfBook.objects.select_related("shelf")
.filter(
shelf__identifier__in=models.Shelf.READ_STATUS_IDENTIFIERS,
user=request.user,
book=book,
)
.first()
) )
.first() if current_status_shelfbook is not None:
) if current_status_shelfbook.shelf.identifier != desired_shelf.identifier:
if current_status_shelfbook is not None: current_status_shelfbook.delete()
if current_status_shelfbook.shelf.identifier != models.Shelf.READING: else: # It already was on the shelf
handle_unshelve(book, current_status_shelfbook.shelf) return redirect(request.headers.get("Referer", "/"))
else: # It already was on the shelf
return redirect(request.headers.get("Referer", "/"))
models.ShelfBook.objects.create(book=book, shelf=reading_shelf, user=request.user) models.ShelfBook.objects.create(
book=book, shelf=desired_shelf, user=request.user
# post about it (if you want)
if request.POST.get("post-status"):
privacy = request.POST.get("privacy")
handle_reading_status(request.user, reading_shelf, book, privacy)
return redirect(request.headers.get("Referer", "/"))
@login_required
@require_POST
def finish_reading(request, book_id):
"""a user completed a book, yay"""
book = get_edition(book_id)
finished_read_shelf = models.Shelf.objects.filter(
identifier=models.Shelf.READ_FINISHED, user=request.user
).first()
# update or create a readthrough
readthrough = update_readthrough(request, book=book)
if readthrough:
readthrough.save()
current_status_shelfbook = (
models.ShelfBook.objects.select_related("shelf")
.filter(
shelf__identifier__in=models.Shelf.READ_STATUS_IDENTIFIERS,
user=request.user,
book=book,
) )
.first()
)
if current_status_shelfbook is not None:
if current_status_shelfbook.shelf.identifier != models.Shelf.READ_FINISHED:
handle_unshelve(book, current_status_shelfbook.shelf)
else: # It already was on the shelf
return redirect(request.headers.get("Referer", "/"))
models.ShelfBook.objects.create( if desired_shelf.identifier != models.Shelf.TO_READ:
book=book, shelf=finished_read_shelf, user=request.user # update or create a readthrough
) readthrough = update_readthrough(request, book=book)
if readthrough:
readthrough.save()
# post about it (if you want) # post about it (if you want)
if request.POST.get("post-status"): if request.POST.get("post-status"):
privacy = request.POST.get("privacy") privacy = request.POST.get("privacy")
handle_reading_status(request.user, finished_read_shelf, book, privacy) handle_reading_status(request.user, desired_shelf, book, privacy)
return redirect(request.headers.get("Referer", "/")) return redirect(request.headers.get("Referer", "/"))
@login_required @login_required

View file

@ -20,7 +20,7 @@ from .helpers import is_api_request, get_edition, get_user_from_username
from .helpers import handle_reading_status, privacy_filter from .helpers import handle_reading_status, privacy_filter
# pylint: disable= no-self-use # pylint: disable=no-self-use
class Shelf(View): class Shelf(View):
"""shelf page""" """shelf page"""
@ -178,11 +178,6 @@ def shelve(request):
models.ShelfBook.objects.create( models.ShelfBook.objects.create(
book=book, shelf=desired_shelf, user=request.user book=book, shelf=desired_shelf, user=request.user
) )
if desired_shelf.identifier == models.Shelf.TO_READ and request.POST.get(
"post-status"
):
privacy = request.POST.get("privacy") or desired_shelf.privacy
handle_reading_status(request.user, desired_shelf, book, privacy=privacy)
else: else:
try: try:
models.ShelfBook.objects.create( models.ShelfBook.objects.create(
@ -206,7 +201,6 @@ def unshelve(request):
return redirect(request.headers.get("Referer", "/")) return redirect(request.headers.get("Referer", "/"))
# pylint: disable=unused-argument
def handle_unshelve(book, shelf): def handle_unshelve(book, shelf):
"""unshelve a book""" """unshelve a book"""
row = models.ShelfBook.objects.get(book=book, shelf=shelf) row = models.ShelfBook.objects.get(book=book, shelf=shelf)

View file

@ -1,25 +1,17 @@
""" non-interactive pages """ """ non-interactive pages """
from io import BytesIO
from uuid import uuid4
from PIL import Image
from django.contrib.auth.decorators import login_required
from django.core.files.base import ContentFile
from django.core.paginator import Paginator from django.core.paginator import Paginator
from django.shortcuts import redirect
from django.template.response import TemplateResponse from django.template.response import TemplateResponse
from django.utils import timezone from django.utils import timezone
from django.utils.decorators import method_decorator
from django.views import View from django.views import View
from bookwyrm import forms, models from bookwyrm import models
from bookwyrm.activitypub import ActivitypubResponse from bookwyrm.activitypub import ActivitypubResponse
from bookwyrm.settings import PAGE_LENGTH from bookwyrm.settings import PAGE_LENGTH
from .helpers import get_user_from_username, is_api_request from .helpers import get_user_from_username, is_api_request
from .helpers import privacy_filter from .helpers import privacy_filter
# pylint: disable= no-self-use # pylint: disable=no-self-use
class User(View): class User(View):
"""user profile page""" """user profile page"""
@ -122,71 +114,3 @@ class Following(View):
"follow_list": paginated.get_page(request.GET.get("page")), "follow_list": paginated.get_page(request.GET.get("page")),
} }
return TemplateResponse(request, "user/relationships/following.html", data) return TemplateResponse(request, "user/relationships/following.html", data)
@method_decorator(login_required, name="dispatch")
class EditUser(View):
"""edit user view"""
def get(self, request):
"""edit profile page for a user"""
data = {
"form": forms.EditUserForm(instance=request.user),
"user": request.user,
}
return TemplateResponse(request, "preferences/edit_user.html", data)
def post(self, request):
"""les get fancy with images"""
form = forms.EditUserForm(request.POST, request.FILES, instance=request.user)
if not form.is_valid():
data = {"form": form, "user": request.user}
return TemplateResponse(request, "preferences/edit_user.html", data)
user = save_user_form(form)
return redirect(user.local_path)
def save_user_form(form):
"""special handling for the user form"""
user = form.save(commit=False)
if "avatar" in form.files:
# crop and resize avatar upload
image = Image.open(form.files["avatar"])
image = crop_avatar(image)
# set the name to a hash
extension = form.files["avatar"].name.split(".")[-1]
filename = "%s.%s" % (uuid4(), extension)
user.avatar.save(filename, image, save=False)
user.save()
return user
def crop_avatar(image):
"""reduce the size and make an avatar square"""
target_size = 120
width, height = image.size
thumbnail_scale = (
height / (width / target_size)
if height > width
else width / (height / target_size)
)
image.thumbnail([thumbnail_scale, thumbnail_scale])
width, height = image.size
width_diff = width - target_size
height_diff = height - target_size
cropped = image.crop(
(
int(width_diff / 2),
int(height_diff / 2),
int(width - (width_diff / 2)),
int(height - (height_diff / 2)),
)
)
output = BytesIO()
cropped.save(output, format=image.format)
return ContentFile(output.getvalue())

5
bw-dev
View file

@ -47,9 +47,6 @@ case "$CMD" in
initdb) initdb)
initdb initdb
;; ;;
makemigrations)
runweb python manage.py makemigrations "$@"
;;
migrate) migrate)
runweb python manage.py migrate "$@" runweb python manage.py migrate "$@"
;; ;;
@ -82,6 +79,6 @@ case "$CMD" in
runweb python manage.py populate_streams runweb python manage.py populate_streams
;; ;;
*) *)
echo "Unrecognised command. Try: build, up, initdb, makemigrations, migrate, bash, shell, dbshell, restart_celery, update, populate_feeds" echo "Unrecognised command. Try: build, up, initdb, migrate, bash, shell, dbshell, restart_celery, update, populate_feeds"
;; ;;
esac esac

Binary file not shown.

View file

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

View file

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

Binary file not shown.

View file

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

Binary file not shown.

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 0.1.1\n" "Project-Id-Version: 0.1.1\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-23 10:45+0000\n" "POT-Creation-Date: 2021-06-07 14:09+0000\n"
"PO-Revision-Date: 2021-04-05 12:44+0100\n" "PO-Revision-Date: 2021-04-05 12:44+0100\n"
"Last-Translator: Fabien Basmaison <contact@arkhi.org>\n" "Last-Translator: Fabien Basmaison <contact@arkhi.org>\n"
"Language-Team: Mouse Reeve <LL@li.org>\n" "Language-Team: Mouse Reeve <LL@li.org>\n"
@ -56,12 +56,12 @@ msgid "Book Title"
msgstr "Titre du livre" msgstr "Titre du livre"
#: bookwyrm/forms.py:301 bookwyrm/templates/snippets/create_status_form.html:34 #: 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:85
#: bookwyrm/templates/user/shelf/shelf.html:115 #: bookwyrm/templates/user/shelf/shelf.html:116
msgid "Rating" msgid "Rating"
msgstr "Note" msgstr "Note"
#: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:101 #: bookwyrm/forms.py:303 bookwyrm/templates/lists/list.html:107
msgid "Sort By" msgid "Sort By"
msgstr "Trier par" msgstr "Trier par"
@ -73,41 +73,41 @@ msgstr "Ordre croissant"
msgid "Descending" msgid "Descending"
msgstr "Ordre décroissant" msgstr "Ordre décroissant"
#: bookwyrm/models/fields.py:24 #: bookwyrm/models/fields.py:25
#, python-format #, python-format
msgid "%(value)s is not a valid remote_id" msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s nest pas une remote_id valide." msgstr "%(value)s nest pas une remote_id valide."
#: bookwyrm/models/fields.py:33 bookwyrm/models/fields.py:42 #: bookwyrm/models/fields.py:34 bookwyrm/models/fields.py:43
#, python-format #, python-format
msgid "%(value)s is not a valid username" msgid "%(value)s is not a valid username"
msgstr "%(value)s nest pas un nom de compte valide." msgstr "%(value)s nest pas un nom de compte valide."
#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:157 #: bookwyrm/models/fields.py:166 bookwyrm/templates/layout.html:152
msgid "username" msgid "username"
msgstr "nom du compte:" msgstr "nom du compte:"
#: bookwyrm/models/fields.py:170 #: bookwyrm/models/fields.py:171
msgid "A user with that username already exists." msgid "A user with that username already exists."
msgstr "Ce nom est déjà associé à un compte." msgstr "Ce nom est déjà associé à un compte."
#: bookwyrm/settings.py:155 #: bookwyrm/settings.py:160
msgid "English" msgid "English"
msgstr "English" msgstr "English"
#: bookwyrm/settings.py:156 #: bookwyrm/settings.py:161
msgid "German" msgid "German"
msgstr "Deutsch" msgstr "Deutsch"
#: bookwyrm/settings.py:157 #: bookwyrm/settings.py:162
msgid "Spanish" msgid "Spanish"
msgstr "Español" msgstr "Español"
#: bookwyrm/settings.py:158 #: bookwyrm/settings.py:163
msgid "French" msgid "French"
msgstr "Français" msgstr "Français"
#: bookwyrm/settings.py:159 #: bookwyrm/settings.py:164
msgid "Simplified Chinese" msgid "Simplified Chinese"
msgstr "简化字" msgstr "简化字"
@ -136,34 +136,42 @@ msgstr "Une erreur sest produite; désolé!"
msgid "Edit Author" msgid "Edit Author"
msgstr "Modifier lauteur ou autrice" msgstr "Modifier lauteur ou autrice"
#: bookwyrm/templates/author/author.html:32 #: bookwyrm/templates/author/author.html:34
#: bookwyrm/templates/author/edit_author.html:38 #: bookwyrm/templates/author/edit_author.html:41
msgid "Aliases:" msgid "Aliases:"
msgstr "Pseudonymes:" msgstr "Pseudonymes:"
#: bookwyrm/templates/author/author.html:38 #: bookwyrm/templates/author/author.html:45
msgid "Born:" msgid "Born:"
msgstr "Naissance:" msgstr "Naissance:"
#: bookwyrm/templates/author/author.html:44 #: bookwyrm/templates/author/author.html:52
msgid "Died:" msgid "Died:"
msgstr "Décès:" msgstr "Décès:"
#: bookwyrm/templates/author/author.html:51 #: bookwyrm/templates/author/author.html:61
msgid "Wikipedia" msgid "Wikipedia"
msgstr "Wikipedia" msgstr "Wikipedia"
#: bookwyrm/templates/author/author.html:55 #: bookwyrm/templates/author/author.html:69
#: bookwyrm/templates/book/book.html:78 #: bookwyrm/templates/book/book.html:78
msgid "View on OpenLibrary" msgid "View on OpenLibrary"
msgstr "Voir sur OpenLibrary" msgstr "Voir sur OpenLibrary"
#: bookwyrm/templates/author/author.html:60 #: bookwyrm/templates/author/author.html:77
#: bookwyrm/templates/book/book.html:81 #: bookwyrm/templates/book/book.html:81
msgid "View on Inventaire" msgid "View on Inventaire"
msgstr "Voir sur Inventaire" msgstr "Voir sur Inventaire"
#: bookwyrm/templates/author/author.html:74 #: bookwyrm/templates/author/author.html:85
msgid "View on LibraryThing"
msgstr "Voir sur LibraryThing"
#: bookwyrm/templates/author/author.html:93
msgid "View on Goodreads"
msgstr "Voir sur Goodreads"
#: bookwyrm/templates/author/author.html:108
#, python-format #, python-format
msgid "Books by %(name)s" msgid "Books by %(name)s"
msgstr "Livres par %(name)s" msgstr "Livres par %(name)s"
@ -173,85 +181,85 @@ msgid "Edit Author:"
msgstr "Modifier lauteur ou lautrice:" msgstr "Modifier lauteur ou lautrice:"
#: bookwyrm/templates/author/edit_author.html:13 #: bookwyrm/templates/author/edit_author.html:13
#: bookwyrm/templates/book/edit_book.html:18 #: bookwyrm/templates/book/edit_book.html:19
msgid "Added:" msgid "Added:"
msgstr "AJouté:" msgstr "Ajouté:"
#: bookwyrm/templates/author/edit_author.html:14 #: bookwyrm/templates/author/edit_author.html:14
#: bookwyrm/templates/book/edit_book.html:19 #: bookwyrm/templates/book/edit_book.html:24
msgid "Updated:" msgid "Updated:"
msgstr "Mis à jour:" msgstr "Mis à jour:"
#: bookwyrm/templates/author/edit_author.html:15 #: bookwyrm/templates/author/edit_author.html:15
#: bookwyrm/templates/book/edit_book.html:20 #: bookwyrm/templates/book/edit_book.html:30
msgid "Last edited by:" msgid "Last edited by:"
msgstr "Dernière modification par:" msgstr "Dernière modification par:"
#: bookwyrm/templates/author/edit_author.html:31 #: bookwyrm/templates/author/edit_author.html:31
#: bookwyrm/templates/book/edit_book.html:90 #: bookwyrm/templates/book/edit_book.html:117
msgid "Metadata" msgid "Metadata"
msgstr "Métadonnées" msgstr "Métadonnées"
#: bookwyrm/templates/author/edit_author.html:32 #: bookwyrm/templates/author/edit_author.html:33
#: bookwyrm/templates/lists/form.html:8 #: bookwyrm/templates/lists/form.html:8
#: bookwyrm/templates/user/shelf/create_shelf_form.html:13 #: bookwyrm/templates/user/shelf/create_shelf_form.html:13
#: bookwyrm/templates/user/shelf/edit_shelf_form.html:14 #: bookwyrm/templates/user/shelf/edit_shelf_form.html:14
msgid "Name:" msgid "Name:"
msgstr "Nom:" msgstr "Nom:"
#: bookwyrm/templates/author/edit_author.html:40 #: bookwyrm/templates/author/edit_author.html:43
#: bookwyrm/templates/book/edit_book.html:132 #: bookwyrm/templates/book/edit_book.html:162
#: bookwyrm/templates/book/edit_book.html:141 #: bookwyrm/templates/book/edit_book.html:171
#: bookwyrm/templates/book/edit_book.html:178 #: bookwyrm/templates/book/edit_book.html:214
msgid "Separate multiple values with commas." msgid "Separate multiple values with commas."
msgstr "Séparez plusieurs valeurs par une virgule." msgstr "Séparez plusieurs valeurs par une virgule."
#: bookwyrm/templates/author/edit_author.html:46 #: bookwyrm/templates/author/edit_author.html:50
msgid "Bio:" msgid "Bio:"
msgstr "Bio:" msgstr "Bio:"
#: bookwyrm/templates/author/edit_author.html:51 #: bookwyrm/templates/author/edit_author.html:57
msgid "Wikipedia link:" msgid "Wikipedia link:"
msgstr "Wikipedia:" msgstr "Wikipedia:"
#: bookwyrm/templates/author/edit_author.html:57 #: bookwyrm/templates/author/edit_author.html:63
msgid "Birth date:" msgid "Birth date:"
msgstr "Date de naissance:" msgstr "Date de naissance:"
#: bookwyrm/templates/author/edit_author.html:65 #: bookwyrm/templates/author/edit_author.html:71
msgid "Death date:" msgid "Death date:"
msgstr "Date de décès:" msgstr "Date de décès:"
#: bookwyrm/templates/author/edit_author.html:73 #: bookwyrm/templates/author/edit_author.html:79
msgid "Author Identifiers" msgid "Author Identifiers"
msgstr "Identifiants de lauteur ou autrice" msgstr "Identifiants de lauteur ou autrice"
#: bookwyrm/templates/author/edit_author.html:74 #: bookwyrm/templates/author/edit_author.html:81
msgid "Openlibrary key:" msgid "Openlibrary key:"
msgstr "Clé Openlibrary:" msgstr "Clé Openlibrary:"
#: bookwyrm/templates/author/edit_author.html:79 #: bookwyrm/templates/author/edit_author.html:89
#: bookwyrm/templates/book/edit_book.html:243 #: bookwyrm/templates/book/edit_book.html:293
msgid "Inventaire ID:" msgid "Inventaire ID:"
msgstr "Identifiant Inventaire:" msgstr "Identifiant Inventaire:"
#: bookwyrm/templates/author/edit_author.html:84 #: bookwyrm/templates/author/edit_author.html:97
msgid "Librarything key:" msgid "Librarything key:"
msgstr "Clé Librarything:" msgstr "Clé Librarything:"
#: bookwyrm/templates/author/edit_author.html:89 #: bookwyrm/templates/author/edit_author.html:105
msgid "Goodreads key:" msgid "Goodreads key:"
msgstr "Clé Goodreads:" msgstr "Clé Goodreads:"
#: bookwyrm/templates/author/edit_author.html:98 #: bookwyrm/templates/author/edit_author.html:116
#: bookwyrm/templates/book/book.html:124 #: bookwyrm/templates/book/book.html:124
#: bookwyrm/templates/book/edit_book.html:263 #: bookwyrm/templates/book/edit_book.html:321
#: bookwyrm/templates/lists/form.html:42 #: bookwyrm/templates/lists/form.html:42
#: bookwyrm/templates/preferences/edit_user.html:70 #: bookwyrm/templates/preferences/edit_user.html:70
#: bookwyrm/templates/settings/announcement_form.html:69 #: bookwyrm/templates/settings/announcement_form.html:69
#: bookwyrm/templates/settings/edit_server.html:68 #: bookwyrm/templates/settings/edit_server.html:68
#: bookwyrm/templates/settings/federated_server.html:98 #: bookwyrm/templates/settings/federated_server.html:98
#: bookwyrm/templates/settings/site.html:97 #: bookwyrm/templates/settings/site.html:101
#: bookwyrm/templates/snippets/readthrough.html:77 #: bookwyrm/templates/snippets/readthrough.html:77
#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:42 #: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:42
#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42
@ -260,10 +268,10 @@ msgstr "Clé Goodreads:"
msgid "Save" msgid "Save"
msgstr "Enregistrer" msgstr "Enregistrer"
#: bookwyrm/templates/author/edit_author.html:99 #: bookwyrm/templates/author/edit_author.html:117
#: bookwyrm/templates/book/book.html:125 bookwyrm/templates/book/book.html:174 #: bookwyrm/templates/book/book.html:125 bookwyrm/templates/book/book.html:174
#: bookwyrm/templates/book/cover_modal.html:32 #: bookwyrm/templates/book/cover_modal.html:32
#: bookwyrm/templates/book/edit_book.html:264 #: bookwyrm/templates/book/edit_book.html:322
#: bookwyrm/templates/moderation/report_modal.html:34 #: bookwyrm/templates/moderation/report_modal.html:34
#: bookwyrm/templates/settings/federated_server.html:99 #: bookwyrm/templates/settings/federated_server.html:99
#: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 #: bookwyrm/templates/snippets/delete_readthrough_modal.html:17
@ -307,7 +315,7 @@ msgid "Add Description"
msgstr "Ajouter une description" msgstr "Ajouter une description"
#: bookwyrm/templates/book/book.html:120 #: bookwyrm/templates/book/book.html:120
#: bookwyrm/templates/book/edit_book.html:108 #: bookwyrm/templates/book/edit_book.html:136
#: bookwyrm/templates/lists/form.html:12 #: bookwyrm/templates/lists/form.html:12
msgid "Description:" msgid "Description:"
msgstr "Description:" msgstr "Description:"
@ -367,7 +375,7 @@ msgstr "Sujets"
msgid "Places" msgid "Places"
msgstr "Lieux" msgstr "Lieux"
#: 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/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12
#: bookwyrm/templates/search/layout.html:25 #: bookwyrm/templates/search/layout.html:25
#: bookwyrm/templates/search/layout.html:50 #: bookwyrm/templates/search/layout.html:50
@ -381,7 +389,7 @@ msgstr "Ajouter à la liste"
#: bookwyrm/templates/book/book.html:297 #: bookwyrm/templates/book/book.html:297
#: bookwyrm/templates/book/cover_modal.html:31 #: bookwyrm/templates/book/cover_modal.html:31
#: bookwyrm/templates/lists/list.html:164 #: bookwyrm/templates/lists/list.html:179
msgid "Add" msgid "Add"
msgstr "Ajouter" msgstr "Ajouter"
@ -390,22 +398,22 @@ msgid "ISBN:"
msgstr "ISBN:" msgstr "ISBN:"
#: bookwyrm/templates/book/book_identifiers.html:14 #: bookwyrm/templates/book/book_identifiers.html:14
#: bookwyrm/templates/book/edit_book.html:248 #: bookwyrm/templates/book/edit_book.html:301
msgid "OCLC Number:" msgid "OCLC Number:"
msgstr "Numéro OCLC:" msgstr "Numéro OCLC:"
#: bookwyrm/templates/book/book_identifiers.html:21 #: bookwyrm/templates/book/book_identifiers.html:21
#: bookwyrm/templates/book/edit_book.html:253 #: bookwyrm/templates/book/edit_book.html:309
msgid "ASIN:" msgid "ASIN:"
msgstr "ASIN:" msgstr "ASIN:"
#: bookwyrm/templates/book/cover_modal.html:17 #: bookwyrm/templates/book/cover_modal.html:17
#: bookwyrm/templates/book/edit_book.html:192 #: bookwyrm/templates/book/edit_book.html:229
msgid "Upload cover:" msgid "Upload cover:"
msgstr "Charger une couverture:" msgstr "Charger une couverture:"
#: bookwyrm/templates/book/cover_modal.html:23 #: bookwyrm/templates/book/cover_modal.html:23
#: bookwyrm/templates/book/edit_book.html:198 #: bookwyrm/templates/book/edit_book.html:235
msgid "Load cover from url:" msgid "Load cover from url:"
msgstr "Charger la couverture depuis une URL:" msgstr "Charger la couverture depuis une URL:"
@ -420,127 +428,132 @@ msgstr "Modifier « %(book_title)s»"
msgid "Add Book" msgid "Add Book"
msgstr "Ajouter un livre" msgstr "Ajouter un livre"
#: bookwyrm/templates/book/edit_book.html:40 #: bookwyrm/templates/book/edit_book.html:54
msgid "Confirm Book Info" msgid "Confirm Book Info"
msgstr "Confirmer les informations de ce livre" msgstr "Confirmer les informations de ce livre"
#: bookwyrm/templates/book/edit_book.html:47 #: bookwyrm/templates/book/edit_book.html:62
#, python-format #, python-format
msgid "Is \"%(name)s\" an existing author?" msgid "Is \"%(name)s\" an existing author?"
msgstr "Estce que lauteur ou lautrice « %(name)s» existe déjà?" msgstr "Estce que lauteur/autrice « %(name)s» existe déjà?"
#: bookwyrm/templates/book/edit_book.html:52 #: bookwyrm/templates/book/edit_book.html:71
#, python-format #, python-format
msgid "Author of <em>%(book_title)s</em>" msgid "Author of <em>%(book_title)s</em>"
msgstr "Commencer « <em>%(book_title)s</em> »" msgstr "Auteur/autrice de <em>%(book_title)s</em>"
#: bookwyrm/templates/book/edit_book.html:55 #: bookwyrm/templates/book/edit_book.html:75
msgid "This is a new author" msgid "This is a new author"
msgstr "Il sagit dun nouvel auteur ou dune nouvelle autrice." msgstr "Il sagit dun nouvel auteur ou dune nouvelle autrice."
#: bookwyrm/templates/book/edit_book.html:61 #: bookwyrm/templates/book/edit_book.html:82
#, python-format #, python-format
msgid "Creating a new author: %(name)s" msgid "Creating a new author: %(name)s"
msgstr "Création dun nouvel auteur ou dune nouvelle autrice: %(name)s" msgstr "Création dun nouvel auteur/autrice: %(name)s"
#: bookwyrm/templates/book/edit_book.html:67 #: bookwyrm/templates/book/edit_book.html:89
msgid "Is this an edition of an existing work?" msgid "Is this an edition of an existing work?"
msgstr "Estce lédition dun ouvrage existant?" msgstr "Estce lédition dun ouvrage existant?"
#: bookwyrm/templates/book/edit_book.html:71 #: bookwyrm/templates/book/edit_book.html:97
msgid "This is a new work" msgid "This is a new work"
msgstr "Il sagit dun nouvel ouvrage." msgstr "Il sagit dun nouvel ouvrage."
#: bookwyrm/templates/book/edit_book.html:77 #: bookwyrm/templates/book/edit_book.html:104
#: bookwyrm/templates/password_reset.html:30 #: bookwyrm/templates/password_reset.html:30
msgid "Confirm" msgid "Confirm"
msgstr "Confirmer" msgstr "Confirmer"
#: bookwyrm/templates/book/edit_book.html:79 #: bookwyrm/templates/book/edit_book.html:106
#: bookwyrm/templates/feed/status.html:8 #: bookwyrm/templates/feed/status.html:8
msgid "Back" msgid "Back"
msgstr "Retour" msgstr "Retour"
#: bookwyrm/templates/book/edit_book.html:93 #: bookwyrm/templates/book/edit_book.html:120
msgid "Title:" msgid "Title:"
msgstr "Titre:" msgstr "Titre:"
#: bookwyrm/templates/book/edit_book.html:101 #: bookwyrm/templates/book/edit_book.html:128
msgid "Subtitle:" msgid "Subtitle:"
msgstr "Soustitre:" msgstr "Soustitre:"
#: bookwyrm/templates/book/edit_book.html:114 #: bookwyrm/templates/book/edit_book.html:144
msgid "Series:" msgid "Series:"
msgstr "Série:" msgstr "Série:"
#: bookwyrm/templates/book/edit_book.html:122 #: bookwyrm/templates/book/edit_book.html:152
msgid "Series number:" msgid "Series number:"
msgstr "Numéro dans la série:" msgstr "Numéro dans la série:"
#: bookwyrm/templates/book/edit_book.html:130 #: bookwyrm/templates/book/edit_book.html:160
msgid "Languages:" msgid "Languages:"
msgstr "Langues:" msgstr "Langues:"
#: bookwyrm/templates/book/edit_book.html:139 #: bookwyrm/templates/book/edit_book.html:169
msgid "Publisher:" msgid "Publisher:"
msgstr "Éditeur:" msgstr "Éditeur:"
#: bookwyrm/templates/book/edit_book.html:148 #: bookwyrm/templates/book/edit_book.html:178
msgid "First published date:" msgid "First published date:"
msgstr "Première date de publication:" msgstr "Première date de publication:"
#: bookwyrm/templates/book/edit_book.html:156 #: bookwyrm/templates/book/edit_book.html:186
msgid "Published date:" msgid "Published date:"
msgstr "Date de publication:" msgstr "Date de publication:"
#: bookwyrm/templates/book/edit_book.html:165 #: bookwyrm/templates/book/edit_book.html:195
msgid "Authors" msgid "Authors"
msgstr "Auteurs ou autrices" msgstr "Auteurs ou autrices"
#: bookwyrm/templates/book/edit_book.html:171 #: bookwyrm/templates/book/edit_book.html:202
#, python-format #, python-format
msgid "Remove <a href=\"%(path)s\">%(name)s</a>" msgid "Remove %(name)s"
msgstr "Supprimer <a href=\"%(path)s\">%(name)s</a>" msgstr "Retirer %(name)s"
#: bookwyrm/templates/book/edit_book.html:176 #: bookwyrm/templates/book/edit_book.html:205
#, python-format
msgid "Author page for %(name)s"
msgstr "Page de %(name)s"
#: bookwyrm/templates/book/edit_book.html:212
msgid "Add Authors:" msgid "Add Authors:"
msgstr "Ajouter des auteurs ou autrices:" msgstr "Ajouter des auteurs ou autrices:"
#: bookwyrm/templates/book/edit_book.html:177 #: bookwyrm/templates/book/edit_book.html:213
msgid "John Doe, Jane Smith" msgid "John Doe, Jane Smith"
msgstr "Claude Dupont, Dominique Durand" msgstr "Claude Dupont, Dominique Durand"
#: bookwyrm/templates/book/edit_book.html:183 #: bookwyrm/templates/book/edit_book.html:220
#: bookwyrm/templates/user/shelf/shelf.html:77 #: bookwyrm/templates/user/shelf/shelf.html:78
msgid "Cover" msgid "Cover"
msgstr "Couverture" msgstr "Couverture"
#: bookwyrm/templates/book/edit_book.html:211 #: bookwyrm/templates/book/edit_book.html:248
msgid "Physical Properties" msgid "Physical Properties"
msgstr "Propriétés physiques" msgstr "Propriétés physiques"
#: bookwyrm/templates/book/edit_book.html:212 #: bookwyrm/templates/book/edit_book.html:250
#: bookwyrm/templates/book/format_filter.html:5 #: bookwyrm/templates/book/format_filter.html:5
msgid "Format:" msgid "Format:"
msgstr "Format:" msgstr "Format:"
#: bookwyrm/templates/book/edit_book.html:220 #: bookwyrm/templates/book/edit_book.html:258
msgid "Pages:" msgid "Pages:"
msgstr "Pages:" msgstr "Pages:"
#: bookwyrm/templates/book/edit_book.html:227 #: bookwyrm/templates/book/edit_book.html:267
msgid "Book Identifiers" msgid "Book Identifiers"
msgstr "Identifiants du livre" msgstr "Identifiants du livre"
#: bookwyrm/templates/book/edit_book.html:228 #: bookwyrm/templates/book/edit_book.html:269
msgid "ISBN 13:" msgid "ISBN 13:"
msgstr "ISBN 13:" msgstr "ISBN 13:"
#: bookwyrm/templates/book/edit_book.html:233 #: bookwyrm/templates/book/edit_book.html:277
msgid "ISBN 10:" msgid "ISBN 10:"
msgstr "ISBN 10:" msgstr "ISBN 10:"
#: bookwyrm/templates/book/edit_book.html:238 #: bookwyrm/templates/book/edit_book.html:285
msgid "Openlibrary ID:" msgid "Openlibrary ID:"
msgstr "Identifiant Openlibrary:" msgstr "Identifiant Openlibrary:"
@ -630,7 +643,7 @@ msgstr "Communauté fédérée"
#: bookwyrm/templates/directory/directory.html:4 #: bookwyrm/templates/directory/directory.html:4
#: bookwyrm/templates/directory/directory.html:9 #: bookwyrm/templates/directory/directory.html:9
#: bookwyrm/templates/layout.html:92 #: bookwyrm/templates/layout.html:64
msgid "Directory" msgid "Directory"
msgstr "Répertoire" msgstr "Répertoire"
@ -831,7 +844,7 @@ msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
msgstr "Messages directs avec <a href=\"%(path)s\">%(username)s</a>" msgstr "Messages directs avec <a href=\"%(path)s\">%(username)s</a>"
#: bookwyrm/templates/feed/direct_messages.html:10 #: bookwyrm/templates/feed/direct_messages.html:10
#: bookwyrm/templates/layout.html:87 #: bookwyrm/templates/layout.html:92
msgid "Direct Messages" msgid "Direct Messages"
msgstr "Messages directs" msgstr "Messages directs"
@ -887,7 +900,6 @@ msgid "Updates"
msgstr "Mises à jour" msgstr "Mises à jour"
#: bookwyrm/templates/feed/feed_layout.html:10 #: bookwyrm/templates/feed/feed_layout.html:10
#: bookwyrm/templates/layout.html:58
#: bookwyrm/templates/user/shelf/books_header.html:3 #: bookwyrm/templates/user/shelf/books_header.html:3
msgid "Your books" msgid "Your books"
msgstr "Vos livres" msgstr "Vos livres"
@ -942,7 +954,7 @@ msgid "What are you reading?"
msgstr "Que lisezvous?" msgstr "Que lisezvous?"
#: bookwyrm/templates/get_started/books.html:9 #: bookwyrm/templates/get_started/books.html:9
#: bookwyrm/templates/lists/list.html:120 #: bookwyrm/templates/lists/list.html:135
msgid "Search for a book" msgid "Search for a book"
msgstr "Chercher un livre" msgstr "Chercher un livre"
@ -962,7 +974,7 @@ msgstr "Vous pourrez ajouter des livres lorsque vous commencerez à utiliser %(s
#: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:18
#: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/layout.html:37 bookwyrm/templates/layout.html:38 #: 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:4
#: bookwyrm/templates/search/layout.html:9 #: bookwyrm/templates/search/layout.html:9
msgid "Search" msgid "Search"
@ -978,7 +990,7 @@ msgid "Popular on %(site_name)s"
msgstr "Populaire sur %(site_name)s" msgstr "Populaire sur %(site_name)s"
#: bookwyrm/templates/get_started/books.html:58 #: bookwyrm/templates/get_started/books.html:58
#: bookwyrm/templates/lists/list.html:137 #: bookwyrm/templates/lists/list.html:152
msgid "No books found" msgid "No books found"
msgstr "Aucun livre trouvé" msgstr "Aucun livre trouvé"
@ -1090,7 +1102,7 @@ msgid "%(username)s's %(year)s Books"
msgstr "Livres de %(username)s en %(year)s" msgstr "Livres de %(username)s en %(year)s"
#: bookwyrm/templates/import.html:5 bookwyrm/templates/import.html:9 #: 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" msgid "Import Books"
msgstr "Importer des livres" msgstr "Importer des livres"
@ -1128,65 +1140,70 @@ msgstr "Aucune importation récente"
msgid "Import Status" msgid "Import Status"
msgstr "Statut de limportation" msgstr "Statut de limportation"
#: bookwyrm/templates/import_status.html:12 #: bookwyrm/templates/import_status.html:13
msgid "Import started:" msgid "Import started:"
msgstr "Importation en cours:" msgstr "Début de limportation:"
#: bookwyrm/templates/import_status.html:16 #: bookwyrm/templates/import_status.html:18
msgid "Import completed:" msgid "Import completed:"
msgstr "Importation terminé:" msgstr "Fin de limportation:"
#: bookwyrm/templates/import_status.html:19 #: bookwyrm/templates/import_status.html:23
msgid "TASK FAILED" msgid "TASK FAILED"
msgstr "la tâche a échoué" msgstr "la tâche a échoué"
#: bookwyrm/templates/import_status.html:25 #: bookwyrm/templates/import_status.html:30
msgid "Import still in progress." msgid "Import still in progress."
msgstr "Limportation est toujours en cours" msgstr "Limportation est toujours en cours"
#: bookwyrm/templates/import_status.html:27 #: bookwyrm/templates/import_status.html:32
msgid "(Hit reload to update!)" msgid "(Hit reload to update!)"
msgstr "(Rechargez la page pour mettre à jour!" msgstr "(Rechargez la page pour la mettre à jour!)"
#: bookwyrm/templates/import_status.html:34 #: bookwyrm/templates/import_status.html:39
msgid "Failed to load" msgid "Failed to load"
msgstr "Items non importés" msgstr "Éléments non importés"
#: bookwyrm/templates/import_status.html:43 #: bookwyrm/templates/import_status.html:48
#, python-format #, python-format
msgid "Jump to the bottom of the list to select the %(failed_count)s items which failed to import." msgid "Jump to the bottom of the list to select the %(failed_count)s items which failed to import."
msgstr "Sauter en bas de liste pour sélectionner les %(failed_count)s items nayant pu être importés." msgstr "Sauter en bas de liste pour sélectionner les %(failed_count)s items nayant pu être importés."
#: bookwyrm/templates/import_status.html:78 #: bookwyrm/templates/import_status.html:60
#, python-format
msgid "Line %(index)s: <strong>%(title)s</strong> by %(author)s"
msgstr "Ligne %(index)s: <strong>%(title)s</strong> par %(author)s"
#: bookwyrm/templates/import_status.html:80
msgid "Select all" msgid "Select all"
msgstr "Tout sélectionner" msgstr "Tout sélectionner"
#: bookwyrm/templates/import_status.html:81 #: bookwyrm/templates/import_status.html:83
msgid "Retry items" msgid "Retry items"
msgstr "Essayer dimporter les items sélectionnés de nouveau" msgstr "Réessayer limportation de ces éléments"
#: bookwyrm/templates/import_status.html:107 #: bookwyrm/templates/import_status.html:109
msgid "Successfully imported" msgid "Successfully imported"
msgstr "Importation réussie" msgstr "Importation réussie"
#: bookwyrm/templates/import_status.html:111 #: bookwyrm/templates/import_status.html:113
msgid "Book" msgid "Book"
msgstr "Livre" msgstr "Livre"
#: bookwyrm/templates/import_status.html:114 #: bookwyrm/templates/import_status.html:116
#: bookwyrm/templates/snippets/create_status_form.html:13 #: bookwyrm/templates/snippets/create_status_form.html:13
#: bookwyrm/templates/user/shelf/shelf.html:78 #: bookwyrm/templates/user/shelf/shelf.html:79
#: bookwyrm/templates/user/shelf/shelf.html:98 #: bookwyrm/templates/user/shelf/shelf.html:99
msgid "Title" msgid "Title"
msgstr "Titre" msgstr "Titre"
#: bookwyrm/templates/import_status.html:117 #: bookwyrm/templates/import_status.html:119
#: bookwyrm/templates/user/shelf/shelf.html:79 #: bookwyrm/templates/user/shelf/shelf.html:80
#: bookwyrm/templates/user/shelf/shelf.html:101 #: bookwyrm/templates/user/shelf/shelf.html:102
msgid "Author" msgid "Author"
msgstr "Auteur ou autrice" msgstr "Auteur/autrice"
#: bookwyrm/templates/import_status.html:140 #: bookwyrm/templates/import_status.html:142
msgid "Imported" msgid "Imported"
msgstr "Importé" msgstr "Importé"
@ -1224,15 +1241,19 @@ msgstr "Chercher un livre ou un compte"
msgid "Main navigation menu" msgid "Main navigation menu"
msgstr "Menu de navigation principal " msgstr "Menu de navigation principal "
#: bookwyrm/templates/layout.html:61 #: bookwyrm/templates/layout.html:58
msgid "Feed" msgid "Feed"
msgstr "Fil dactualité" msgstr "Fil dactualité"
#: bookwyrm/templates/layout.html:102 #: bookwyrm/templates/layout.html:87
msgid "Your Books"
msgstr "Vos Livres"
#: bookwyrm/templates/layout.html:97
msgid "Settings" msgid "Settings"
msgstr "Paramètres" msgstr "Paramètres"
#: bookwyrm/templates/layout.html:111 #: bookwyrm/templates/layout.html:106
#: bookwyrm/templates/settings/admin_layout.html:31 #: bookwyrm/templates/settings/admin_layout.html:31
#: bookwyrm/templates/settings/manage_invite_requests.html:15 #: bookwyrm/templates/settings/manage_invite_requests.html:15
#: bookwyrm/templates/settings/manage_invites.html:3 #: bookwyrm/templates/settings/manage_invites.html:3
@ -1240,61 +1261,61 @@ msgstr "Paramètres"
msgid "Invites" msgid "Invites"
msgstr "Invitations" msgstr "Invitations"
#: bookwyrm/templates/layout.html:118 #: bookwyrm/templates/layout.html:113
msgid "Admin" msgid "Admin"
msgstr "Admin" msgstr "Admin"
#: bookwyrm/templates/layout.html:125 #: bookwyrm/templates/layout.html:120
msgid "Log out" msgid "Log out"
msgstr "Se déconnecter" msgstr "Se déconnecter"
#: 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:6
#: bookwyrm/templates/notifications.html:11 #: bookwyrm/templates/notifications.html:11
msgid "Notifications" msgid "Notifications"
msgstr "Notifications" msgstr "Notifications"
#: bookwyrm/templates/layout.html:156 bookwyrm/templates/layout.html:160 #: bookwyrm/templates/layout.html:151 bookwyrm/templates/layout.html:155
#: bookwyrm/templates/login.html:17 #: bookwyrm/templates/login.html:17
#: bookwyrm/templates/snippets/register_form.html:4 #: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:" msgid "Username:"
msgstr "Nom du compte:" msgstr "Nom du compte:"
#: bookwyrm/templates/layout.html:161 #: bookwyrm/templates/layout.html:156
msgid "password" msgid "password"
msgstr "Mot de passe" msgstr "Mot de passe"
#: bookwyrm/templates/layout.html:162 bookwyrm/templates/login.html:36 #: bookwyrm/templates/layout.html:157 bookwyrm/templates/login.html:36
msgid "Forgot your password?" msgid "Forgot your password?"
msgstr "Mot de passe oublié?" msgstr "Mot de passe oublié?"
#: bookwyrm/templates/layout.html:165 bookwyrm/templates/login.html:10 #: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:10
#: bookwyrm/templates/login.html:33 #: bookwyrm/templates/login.html:33
msgid "Log in" msgid "Log in"
msgstr "Se connecter" msgstr "Se connecter"
#: bookwyrm/templates/layout.html:173 #: bookwyrm/templates/layout.html:168
msgid "Join" msgid "Join"
msgstr "Rejoindre" msgstr "Rejoindre"
#: bookwyrm/templates/layout.html:211 #: bookwyrm/templates/layout.html:206
msgid "About this server" msgid "About this instance"
msgstr "À propos de ce serveur" msgstr "À propos de cette instance"
#: bookwyrm/templates/layout.html:215 #: bookwyrm/templates/layout.html:210
msgid "Contact site admin" msgid "Contact site admin"
msgstr "Contacter ladministrateur du site" msgstr "Contacter ladministrateur du site"
#: bookwyrm/templates/layout.html:219 #: bookwyrm/templates/layout.html:214
msgid "Documentation" msgid "Documentation"
msgstr "Documentation" msgstr "Documentation"
#: bookwyrm/templates/layout.html:226 #: bookwyrm/templates/layout.html:221
#, python-format #, python-format
msgid "Support %(site_name)s on <a href=\"%(support_link)s\" target=\"_blank\">%(support_title)s</a>" msgid "Support %(site_name)s on <a href=\"%(support_link)s\" target=\"_blank\">%(support_title)s</a>"
msgstr "Soutenez %(site_name)s avec <a href=\"%(support_link)s\" target=\"_blank\">%(support_title)s</a>" msgstr "Soutenez %(site_name)s avec <a href=\"%(support_link)s\" target=\"_blank\">%(support_title)s</a>"
#: bookwyrm/templates/layout.html:230 #: bookwyrm/templates/layout.html:225
msgid "BookWyrm's source code is freely available. You can contribute or report issues on <a href=\"https://github.com/mouse-reeve/bookwyrm\">GitHub</a>." msgid "BookWyrm's source code is freely available. You can contribute or report issues on <a href=\"https://github.com/mouse-reeve/bookwyrm\">GitHub</a>."
msgstr "BookWyrm est un logiciel libre. Vous pouvez contribuer ou faire des rapports de bogues via <a href=\"https://github.com/mouse-reeve/bookwyrm\">GitHub</a>." msgstr "BookWyrm est un logiciel libre. Vous pouvez contribuer ou faire des rapports de bogues via <a href=\"https://github.com/mouse-reeve/bookwyrm\">GitHub</a>."
@ -1338,7 +1359,7 @@ msgid "Discard"
msgstr "Rejeter" msgstr "Rejeter"
#: bookwyrm/templates/lists/edit_form.html:5 #: bookwyrm/templates/lists/edit_form.html:5
#: bookwyrm/templates/lists/list_layout.html:17 #: bookwyrm/templates/lists/list_layout.html:16
msgid "Edit List" msgid "Edit List"
msgstr "Modifier la liste" msgstr "Modifier la liste"
@ -1385,54 +1406,55 @@ msgstr "Vous avez ajouté un livre à cette liste!"
msgid "This list is currently empty" msgid "This list is currently empty"
msgstr "Cette liste est actuellement vide" msgstr "Cette liste est actuellement vide"
#: bookwyrm/templates/lists/list.html:65 #: bookwyrm/templates/lists/list.html:66
#, python-format #, python-format
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>" msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
msgstr "Ajouté par <a href=\"%(user_path)s\">%(username)s</a>" msgstr "Ajouté par <a href=\"%(user_path)s\">%(username)s</a>"
#: bookwyrm/templates/lists/list.html:77 #: bookwyrm/templates/lists/list.html:74
msgid "Set"
msgstr "Appliquer"
#: bookwyrm/templates/lists/list.html:80
msgid "List position" msgid "List position"
msgstr "Position" msgstr "Position"
#: bookwyrm/templates/lists/list.html:86 #: bookwyrm/templates/lists/list.html:81
msgid "Set"
msgstr "Appliquer"
#: bookwyrm/templates/lists/list.html:89
#: bookwyrm/templates/snippets/shelf_selector.html:26 #: bookwyrm/templates/snippets/shelf_selector.html:26
msgid "Remove" msgid "Remove"
msgstr "Retirer" msgstr "Retirer"
#: 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" msgid "Sort List"
msgstr "Trier la liste" msgstr "Trier la liste"
#: bookwyrm/templates/lists/list.html:105 #: bookwyrm/templates/lists/list.html:113
msgid "Direction" msgid "Direction"
msgstr "Direction" msgstr "Direction"
#: bookwyrm/templates/lists/list.html:116 #: bookwyrm/templates/lists/list.html:127
msgid "Add Books" msgid "Add Books"
msgstr "Ajouter des livres" msgstr "Ajouter des livres"
#: bookwyrm/templates/lists/list.html:116 #: bookwyrm/templates/lists/list.html:129
msgid "Suggest Books" msgid "Suggest Books"
msgstr "Suggérer des livres" msgstr "Suggérer des livres"
#: bookwyrm/templates/lists/list.html:125 #: bookwyrm/templates/lists/list.html:140
msgid "search" msgid "search"
msgstr "chercher" msgstr "chercher"
#: bookwyrm/templates/lists/list.html:131 #: bookwyrm/templates/lists/list.html:146
msgid "Clear search" msgid "Clear search"
msgstr "Vider la requête" msgstr "Vider la requête"
#: bookwyrm/templates/lists/list.html:136 #: bookwyrm/templates/lists/list.html:151
#, python-format #, python-format
msgid "No books found matching the query \"%(query)s\"" msgid "No books found matching the query \"%(query)s\""
msgstr "Aucun livre trouvé pour la requête « %(query)s»" msgstr "Aucun livre trouvé pour la requête « %(query)s»"
#: bookwyrm/templates/lists/list.html:164 #: bookwyrm/templates/lists/list.html:179
msgid "Suggest" msgid "Suggest"
msgstr "Suggérer" msgstr "Suggérer"
@ -1523,8 +1545,8 @@ msgstr "Résoudre"
#: bookwyrm/templates/moderation/reports.html:6 #: bookwyrm/templates/moderation/reports.html:6
#, python-format #, python-format
msgid "Reports: %(server_name)s" msgid "Reports: %(instance_name)s"
msgstr "Signalements: %(server_name)s" msgstr "Signalements: %(instance_name)s"
#: bookwyrm/templates/moderation/reports.html:8 #: bookwyrm/templates/moderation/reports.html:8
#: bookwyrm/templates/moderation/reports.html:17 #: bookwyrm/templates/moderation/reports.html:17
@ -1534,8 +1556,8 @@ msgstr "Signalements"
#: bookwyrm/templates/moderation/reports.html:14 #: bookwyrm/templates/moderation/reports.html:14
#, python-format #, python-format
msgid "Reports: <small>%(server_name)s</small>" msgid "Reports: <small>%(instance_name)s</small>"
msgstr "Signalements: <small>%(server_name)s</small>" msgstr "Signalements: <small>%(instance_name)s</small>"
#: bookwyrm/templates/moderation/reports.html:28 #: bookwyrm/templates/moderation/reports.html:28
msgid "Resolved" msgid "Resolved"
@ -1803,8 +1825,8 @@ msgstr "Gérer les comptes"
#: bookwyrm/templates/settings/admin_layout.html:39 #: bookwyrm/templates/settings/admin_layout.html:39
#: bookwyrm/templates/settings/federation.html:3 #: bookwyrm/templates/settings/federation.html:3
#: bookwyrm/templates/settings/federation.html:5 #: bookwyrm/templates/settings/federation.html:5
msgid "Federated Servers" msgid "Federated Instances"
msgstr "Serveurs fédérés" msgstr "Instances fédérées"
#: bookwyrm/templates/settings/admin_layout.html:44 #: bookwyrm/templates/settings/admin_layout.html:44
msgid "Instance Settings" msgid "Instance Settings"
@ -1840,7 +1862,7 @@ msgstr "Contenu du pied de page"
#: bookwyrm/templates/settings/admin_layout.html:58 #: bookwyrm/templates/settings/admin_layout.html:58
#: bookwyrm/templates/settings/site.html:81 #: bookwyrm/templates/settings/site.html:81
msgid "Registration" msgid "Registration"
msgstr "Enregistrement" msgstr "Inscription"
#: bookwyrm/templates/settings/announcement.html:3 #: bookwyrm/templates/settings/announcement.html:3
#: bookwyrm/templates/settings/announcement.html:6 #: bookwyrm/templates/settings/announcement.html:6
@ -1931,13 +1953,13 @@ msgstr "inactive"
#: bookwyrm/templates/settings/federation.html:10 #: bookwyrm/templates/settings/federation.html:10
#: bookwyrm/templates/settings/server_blocklist.html:3 #: bookwyrm/templates/settings/server_blocklist.html:3
#: bookwyrm/templates/settings/server_blocklist.html:20 #: bookwyrm/templates/settings/server_blocklist.html:20
msgid "Add server" msgid "Add instance"
msgstr "Ajouter un serveur" msgstr "Ajouter une instance"
#: bookwyrm/templates/settings/edit_server.html:7 #: bookwyrm/templates/settings/edit_server.html:7
#: bookwyrm/templates/settings/server_blocklist.html:7 #: bookwyrm/templates/settings/server_blocklist.html:7
msgid "Back to server list" msgid "Back to instance list"
msgstr "Retour à la liste des serveurs" msgstr "Retour à la liste des instances"
#: bookwyrm/templates/settings/edit_server.html:16 #: bookwyrm/templates/settings/edit_server.html:16
#: bookwyrm/templates/settings/server_blocklist.html:16 #: bookwyrm/templates/settings/server_blocklist.html:16
@ -2043,8 +2065,8 @@ msgstr "Tous les comptes de cette instance seront réactivés."
#: bookwyrm/templates/settings/federation.html:19 #: bookwyrm/templates/settings/federation.html:19
#: bookwyrm/templates/user_admin/server_filter.html:5 #: bookwyrm/templates/user_admin/server_filter.html:5
msgid "Server name" msgid "Instance name"
msgstr "Nom du serveur" msgstr "Nom de linstance"
#: bookwyrm/templates/settings/federation.html:23 #: bookwyrm/templates/settings/federation.html:23
msgid "Date federated" msgid "Date federated"
@ -2059,7 +2081,7 @@ msgstr "Logiciel"
#: bookwyrm/templates/settings/manage_invite_requests.html:25 #: bookwyrm/templates/settings/manage_invite_requests.html:25
#: bookwyrm/templates/settings/manage_invites.html:11 #: bookwyrm/templates/settings/manage_invites.html:11
msgid "Invite Requests" msgid "Invite Requests"
msgstr "Invitations" msgstr "Demandes dinvitation"
#: bookwyrm/templates/settings/manage_invite_requests.html:23 #: bookwyrm/templates/settings/manage_invite_requests.html:23
msgid "Ignored Invite Requests" msgid "Ignored Invite Requests"
@ -2225,17 +2247,17 @@ msgstr "Email de ladministrateur:"
msgid "Additional info:" msgid "Additional info:"
msgstr "Infos supplémentaires:" msgstr "Infos supplémentaires:"
#: bookwyrm/templates/settings/site.html:83 #: bookwyrm/templates/settings/site.html:85
msgid "Allow registration:" msgid "Allow registration"
msgstr "Autoriser lenregistrement:" msgstr "Autoriser les inscriptions"
#: bookwyrm/templates/settings/site.html:87
msgid "Allow invite requests:"
msgstr "Autoriser les demandes dinvitation:"
#: bookwyrm/templates/settings/site.html:91 #: bookwyrm/templates/settings/site.html:91
msgid "Allow invite requests"
msgstr "Autoriser les demandes dinvitation"
#: bookwyrm/templates/settings/site.html:95
msgid "Registration closed text:" msgid "Registration closed text:"
msgstr "Texte affiché lorsque les enregistrements sont clos:" msgstr "Texte affiché lorsque les inscriptions sont closes:"
#: bookwyrm/templates/snippets/announcement.html:31 #: bookwyrm/templates/snippets/announcement.html:31
#, python-format #, python-format
@ -2623,7 +2645,7 @@ msgstr "Commencer « <em>%(book_title)s</em> »"
#: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:5 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:5
#, python-format #, python-format
msgid "Want to Read \"<em>%(book_title)s</em>\"" msgid "Want to Read \"<em>%(book_title)s</em>\""
msgstr "A envie de lire « <em>%(book_title)s</em> »" msgstr "Ajouter « <em>%(book_title)s</em> » aux envies de lecture"
#: bookwyrm/templates/snippets/status/content_status.html:71 #: bookwyrm/templates/snippets/status/content_status.html:71
#: bookwyrm/templates/snippets/trimmed_text.html:15 #: bookwyrm/templates/snippets/trimmed_text.html:15
@ -2752,30 +2774,30 @@ msgstr "Tous les livres"
msgid "Create shelf" msgid "Create shelf"
msgstr "Créer une étagère" msgstr "Créer une étagère"
#: bookwyrm/templates/user/shelf/shelf.html:61 #: bookwyrm/templates/user/shelf/shelf.html:62
msgid "Edit shelf" msgid "Edit shelf"
msgstr "Modifier létagère" msgstr "Modifier létagère"
#: bookwyrm/templates/user/shelf/shelf.html:80 #: bookwyrm/templates/user/shelf/shelf.html:81
#: bookwyrm/templates/user/shelf/shelf.html:104 #: bookwyrm/templates/user/shelf/shelf.html:105
msgid "Shelved" msgid "Shelved"
msgstr "Date dajout" msgstr "Date dajout"
#: bookwyrm/templates/user/shelf/shelf.html:81 #: bookwyrm/templates/user/shelf/shelf.html:82
#: bookwyrm/templates/user/shelf/shelf.html:108 #: bookwyrm/templates/user/shelf/shelf.html:109
msgid "Started" msgid "Started"
msgstr "Commencé" msgstr "Commencé"
#: bookwyrm/templates/user/shelf/shelf.html:82 #: bookwyrm/templates/user/shelf/shelf.html:83
#: bookwyrm/templates/user/shelf/shelf.html:111 #: bookwyrm/templates/user/shelf/shelf.html:112
msgid "Finished" msgid "Finished"
msgstr "Terminé" msgstr "Terminé"
#: bookwyrm/templates/user/shelf/shelf.html:137 #: bookwyrm/templates/user/shelf/shelf.html:138
msgid "This shelf is empty." msgid "This shelf is empty."
msgstr "Cette étagère est vide" msgstr "Cette étagère est vide"
#: bookwyrm/templates/user/shelf/shelf.html:143 #: bookwyrm/templates/user/shelf/shelf.html:144
msgid "Delete shelf" msgid "Delete shelf"
msgstr "Supprimer létagère" msgstr "Supprimer létagère"
@ -2834,8 +2856,8 @@ msgstr "Retour aux comptes"
#: bookwyrm/templates/user_admin/user_admin.html:7 #: bookwyrm/templates/user_admin/user_admin.html:7
#, python-format #, python-format
msgid "Users: <small>%(server_name)s</small>" msgid "Users: <small>%(instance_name)s</small>"
msgstr "Comptes: <small>%(server_name)s</small>" msgstr "Comptes: <small>%(instance_name)s</small>"
#: bookwyrm/templates/user_admin/user_admin.html:22 #: bookwyrm/templates/user_admin/user_admin.html:22
#: bookwyrm/templates/user_admin/username_filter.html:5 #: bookwyrm/templates/user_admin/username_filter.html:5
@ -2851,8 +2873,8 @@ msgid "Last Active"
msgstr "Dernière activité" msgstr "Dernière activité"
#: bookwyrm/templates/user_admin/user_admin.html:38 #: bookwyrm/templates/user_admin/user_admin.html:38
msgid "Remote server" msgid "Remote instance"
msgstr "Serveur distant" msgstr "Instance distante"
#: bookwyrm/templates/user_admin/user_admin.html:47 #: bookwyrm/templates/user_admin/user_admin.html:47
msgid "Active" msgid "Active"
@ -2895,6 +2917,10 @@ msgstr "Rétablir le compte"
msgid "Access level:" msgid "Access level:"
msgstr "Niveau daccès:" msgstr "Niveau daccès:"
#: bookwyrm/templates/widgets/clearable_file_input_with_warning.html:22
msgid "File exceeds maximum size: 10MB"
msgstr "Ce fichier dépasse la taille limite: 10Mo"
#: bookwyrm/views/import_data.py:67 #: bookwyrm/views/import_data.py:67
msgid "Not a valid csv file" msgid "Not a valid csv file"
msgstr "Fichier CSV non valide" msgstr "Fichier CSV non valide"

Binary file not shown.

View file

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

View file

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

View file

@ -2042,9 +2042,9 @@ to-regex-range@^5.0.1:
is-number "^7.0.0" is-number "^7.0.0"
trim-newlines@^3.0.0: trim-newlines@^3.0.0:
version "3.0.0" version "3.0.1"
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144"
integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==
trough@^1.0.0: trough@^1.0.0:
version "1.0.5" version "1.0.5"