From f30d05acfc7ada811a5a9421de4245c5266c7144 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 6 Apr 2021 10:40:13 -0700 Subject: [PATCH 001/252] Update connector model to add new connector --- bookwyrm/connectors/settings.py | 2 +- .../migrations/0062_auto_20210406_1731.py | 22 +++++++++++++++++++ bookwyrm/models/connector.py | 10 --------- 3 files changed, 23 insertions(+), 11 deletions(-) create mode 100644 bookwyrm/migrations/0062_auto_20210406_1731.py diff --git a/bookwyrm/connectors/settings.py b/bookwyrm/connectors/settings.py index f1674cf7..4cc98da7 100644 --- a/bookwyrm/connectors/settings.py +++ b/bookwyrm/connectors/settings.py @@ -1,3 +1,3 @@ """ settings book data connectors """ -CONNECTORS = ["openlibrary", "self_connector", "bookwyrm_connector"] +CONNECTORS = ["openlibrary", "inventaire", "self_connector", "bookwyrm_connector"] diff --git a/bookwyrm/migrations/0062_auto_20210406_1731.py b/bookwyrm/migrations/0062_auto_20210406_1731.py new file mode 100644 index 00000000..9ff26af3 --- /dev/null +++ b/bookwyrm/migrations/0062_auto_20210406_1731.py @@ -0,0 +1,22 @@ +# Generated by Django 3.1.6 on 2021-04-06 17:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('bookwyrm', '0061_auto_20210402_1435'), + ] + + operations = [ + migrations.RemoveConstraint( + model_name='connector', + name='connector_file_valid', + ), + migrations.AlterField( + model_name='connector', + name='connector_file', + field=models.CharField(choices=[('openlibrary', 'Openlibrary'), ('inventaire', 'Inventaire'), ('self_connector', 'Self Connector'), ('bookwyrm_connector', 'Bookwyrm Connector')], max_length=255), + ), + ] diff --git a/bookwyrm/models/connector.py b/bookwyrm/models/connector.py index 11bdbee2..9f9af8ae 100644 --- a/bookwyrm/models/connector.py +++ b/bookwyrm/models/connector.py @@ -31,16 +31,6 @@ class Connector(BookWyrmModel): # when to reset the query count back to 0 (ie, after 1 day) query_count_expiry = models.DateTimeField(auto_now_add=True, blank=True) - class Meta: - """ check that there's code to actually use this connector """ - - constraints = [ - models.CheckConstraint( - check=models.Q(connector_file__in=ConnectorFiles), - name="connector_file_valid", - ) - ] - def __str__(self): return "{} ({})".format( self.identifier, From 295842badd51676aaeb177fea97b6efd0c59680a Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 6 Apr 2021 10:40:39 -0700 Subject: [PATCH 002/252] Adds inventaire id to book data model --- bookwyrm/activitypub/book.py | 14 ++++++++------ bookwyrm/models/book.py | 3 +++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/bookwyrm/activitypub/book.py b/bookwyrm/activitypub/book.py index 7e552b0a..8ff1df82 100644 --- a/bookwyrm/activitypub/book.py +++ b/bookwyrm/activitypub/book.py @@ -24,9 +24,10 @@ class Book(ActivityObject): firstPublishedDate: str = "" publishedDate: str = "" - openlibraryKey: str = "" - librarythingKey: str = "" - goodreadsKey: str = "" + openlibraryKey: str = None + inventiareId: str = None + librarythingKey: str = None + goodreadsKey: str = None cover: Image = None type: str = "Book" @@ -68,8 +69,9 @@ class Author(ActivityObject): died: str = None aliases: List[str] = field(default_factory=lambda: []) bio: str = "" - openlibraryKey: str = "" - librarythingKey: str = "" - goodreadsKey: str = "" + openlibraryKey: str = None + inventiareId: str = None + librarythingKey: str = None + goodreadsKey: str = None wikipediaLink: str = "" type: str = "Author" diff --git a/bookwyrm/models/book.py b/bookwyrm/models/book.py index 3204c603..ccbec9eb 100644 --- a/bookwyrm/models/book.py +++ b/bookwyrm/models/book.py @@ -19,6 +19,9 @@ class BookDataModel(ObjectMixin, BookWyrmModel): openlibrary_key = fields.CharField( max_length=255, blank=True, null=True, deduplication_field=True ) + inventaire_id = fields.CharField( + max_length=255, blank=True, null=True, deduplication_field=True + ) librarything_key = fields.CharField( max_length=255, blank=True, null=True, deduplication_field=True ) From d482c66ad4dff9152d52d257242e6d7fea178c52 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 6 Apr 2021 11:58:07 -0700 Subject: [PATCH 003/252] Adds inventaire connector stub And changes formatters to accept the key as well as value --- bookwyrm/connectors/abstract_connector.py | 2 +- bookwyrm/connectors/inventaire.py | 84 +++++++++++++++++++++++ bookwyrm/connectors/openlibrary.py | 14 ++-- 3 files changed, 92 insertions(+), 8 deletions(-) create mode 100644 bookwyrm/connectors/inventaire.py diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index 00b5c5c9..bbbedd70 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -296,6 +296,6 @@ class Mapping: if not value: return None try: - return self.formatter(value) + return self.formatter(value, self.remote_field) except: # pylint: disable=bare-except return None diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py new file mode 100644 index 00000000..714508ab --- /dev/null +++ b/bookwyrm/connectors/inventaire.py @@ -0,0 +1,84 @@ +""" inventaire data connector """ +from bookwyrm import models +from .abstract_connector import AbstractConnector, SearchResult, Mapping +from .abstract_connector import get_data +from .connector_manager import ConnectorException + + +class Connector(AbstractConnector): + """ instantiate a connector for OL """ + + def __init__(self, identifier): + super().__init__(identifier) + + self.book_mappings = [ + Mapping("title", remote_field="wdt:P1476", formatter=get_claim), + Mapping("id", remote_field="id"), + Mapping("cover", remote_field="image", formatter=self.get_cover_url), + Mapping("isbn13", remote_field="wdt:P212", formatter=get_claim), + Mapping("isbn10", remote_field="wdt:P957", formatter=get_claim), + Mapping("languages", remote_field="wdt:P407", formatter=get_language), + Mapping("publishers", remote_field="wdt:P123", formatter=resolve_key), + Mapping("publishedDate", remote_field="wdt:P577", formatter=get_claim), + Mapping("pages", remote_field="wdt:P1104", formatter=get_claim), + Mapping("goodreadsKey", remote_field="wdt:P2969", formatter=get_claim), + ] + + def parse_search_data(self, data): + return data.get('results') + + def format_search_result(self, search_result): + images = search_result.get("image") + cover = "{:s}/img/entities/{:s}".format( + self.covers_url, images[0] + ) if images else None + return SearchResult( + title=search_result.get("label"), + key="{:s}{:s}".format(self.books_url, search_result.get("uri")), + cover=cover, + connector=self, + ) + + def parse_isbn_search_data(self, data): + """ boop doop """ + + def format_isbn_search_result(self, search_result): + """ beep bloop """ + + def is_work_data(self, data): + return True + + def get_edition_from_work_data(self, data): + return {} + + def get_work_from_edition_data(self, data): + # P629 + return {} + + def get_authors_from_data(self, data): + return [] + + def expand_book_data(self, book): + return + + def get_cover_url(self, cover_blob, *_): + """ format the relative cover url into an absolute one: + {"url": "/img/entities/e794783f01b9d4f897a1ea9820b96e00d346994f"} + """ + cover_id = cover_blob[0].get("url") + if not cover_id: + return None + return "%s%s" % (self.covers_url, cover_id) + + +def get_claim(data, claim_key): + """ all the metadata is in a "claims" dict with a buncha wikidata keys """ + return data.get('claims', {}).get(claim_key) + +def get_language(wikidata_key, *_): + """ who here speaks "wd:Q150" """ + return wikidata_key # TODO + +def resolve_key(wikidata_key, *_): + """ cool, it's "wd:Q3156592" now what the heck does that mean """ + return wikidata_key # TODO diff --git a/bookwyrm/connectors/openlibrary.py b/bookwyrm/connectors/openlibrary.py index 9be0266c..34357726 100644 --- a/bookwyrm/connectors/openlibrary.py +++ b/bookwyrm/connectors/openlibrary.py @@ -14,8 +14,8 @@ class Connector(AbstractConnector): def __init__(self, identifier): super().__init__(identifier) - get_first = lambda a: a[0] - get_remote_id = lambda a: self.base_url + a + get_first = lambda a, *args: a[0] + get_remote_id = lambda a, *args: self.base_url + a self.book_mappings = [ Mapping("title"), Mapping("id", remote_field="key", formatter=get_remote_id), @@ -95,7 +95,7 @@ class Connector(AbstractConnector): url = "%s%s" % (self.base_url, author_id) yield self.get_or_create_author(url) - def get_cover_url(self, cover_blob, size="L"): + def get_cover_url(self, cover_blob, *_, size="L"): """ ask openlibrary for the cover """ if not cover_blob: return None @@ -181,19 +181,19 @@ def ignore_edition(edition_data): return True -def get_description(description_blob): +def get_description(description_blob, *_): """ descriptions can be a string or a dict """ if isinstance(description_blob, dict): return description_blob.get("value") return description_blob -def get_openlibrary_key(key): +def get_openlibrary_key(key, *_): """ convert /books/OL27320736M into OL27320736M """ return key.split("/")[-1] -def get_languages(language_blob): +def get_languages(language_blob, *_): """ /language/eng -> English """ langs = [] for lang in language_blob: @@ -201,7 +201,7 @@ def get_languages(language_blob): return langs -def pick_default_edition(options): +def pick_default_edition(options, *_): """ favor physical copies with covers in english """ if not options: return None From fba44206ac129addcf9f0b0077c0e65b835b79a2 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 6 Apr 2021 12:17:58 -0700 Subject: [PATCH 004/252] Adds separate view and load links for book search results --- bookwyrm/activitypub/book.py | 4 ++-- bookwyrm/connectors/abstract_connector.py | 3 ++- bookwyrm/connectors/inventaire.py | 5 ++++- bookwyrm/templates/snippets/search_result_text.html | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/bookwyrm/activitypub/book.py b/bookwyrm/activitypub/book.py index 8ff1df82..7a427927 100644 --- a/bookwyrm/activitypub/book.py +++ b/bookwyrm/activitypub/book.py @@ -25,7 +25,7 @@ class Book(ActivityObject): publishedDate: str = "" openlibraryKey: str = None - inventiareId: str = None + inventaireId: str = None librarythingKey: str = None goodreadsKey: str = None @@ -70,7 +70,7 @@ class Author(ActivityObject): aliases: List[str] = field(default_factory=lambda: []) bio: str = "" openlibraryKey: str = None - inventiareId: str = None + inventaireId: str = None librarythingKey: str = None goodreadsKey: str = None wikipediaLink: str = "" diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index bbbedd70..378f23f7 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -263,6 +263,7 @@ class SearchResult: title: str key: str connector: object + view_link: str = None author: str = None year: str = None cover: str = None @@ -284,7 +285,7 @@ class Mapping: """ associate a local database field with a field in an external dataset """ def __init__(self, local_field, remote_field=None, formatter=None): - noop = lambda x: x + noop = lambda x, *_: x self.local_field = local_field self.remote_field = remote_field or local_field diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index 714508ab..748259eb 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -11,9 +11,11 @@ class Connector(AbstractConnector): def __init__(self, identifier): super().__init__(identifier) + get_remote_id = lambda a, *args: self.base_url + a self.book_mappings = [ Mapping("title", remote_field="wdt:P1476", formatter=get_claim), - Mapping("id", remote_field="id"), + Mapping("id", remote_field="key", formatter=get_remote_id), + Mapping("inventaireId", remote_field="id"), Mapping("cover", remote_field="image", formatter=self.get_cover_url), Mapping("isbn13", remote_field="wdt:P212", formatter=get_claim), Mapping("isbn10", remote_field="wdt:P957", formatter=get_claim), @@ -35,6 +37,7 @@ class Connector(AbstractConnector): return SearchResult( title=search_result.get("label"), key="{:s}{:s}".format(self.books_url, search_result.get("uri")), + view_link="{:s}{:s}".format(self.base_url, search_result.get("uri")), cover=cover, connector=self, ) diff --git a/bookwyrm/templates/snippets/search_result_text.html b/bookwyrm/templates/snippets/search_result_text.html index 059b8e7e..2f6ba503 100644 --- a/bookwyrm/templates/snippets/search_result_text.html +++ b/bookwyrm/templates/snippets/search_result_text.html @@ -16,7 +16,7 @@

- {{ result.title }} + {{ result.title }} {% if result.author %} {% blocktrans with author=result.author %}by {{ author }}{% endblocktrans %}{% endif %}{% if result.year %} ({{ result.year }}) From 22ebe60c0abb2badaf0d354190eee125d5278514 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 6 Apr 2021 12:29:06 -0700 Subject: [PATCH 005/252] Use custom data extractor for inventaire connector --- bookwyrm/connectors/abstract_connector.py | 16 ++++++++++++---- bookwyrm/connectors/inventaire.py | 9 ++++++--- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index 378f23f7..8007bb1a 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -44,7 +44,7 @@ class AbstractMinimalConnector(ABC): if min_confidence: params["min_confidence"] = min_confidence - data = get_data( + data = self.get_search_data( "%s%s" % (self.search_url, query), params=params, ) @@ -57,7 +57,7 @@ class AbstractMinimalConnector(ABC): def isbn_search(self, query): """ isbn search """ params = {} - data = get_data( + data = self.get_search_data( "%s%s" % (self.isbn_search_url, query), params=params, ) @@ -117,7 +117,7 @@ class AbstractConnector(AbstractMinimalConnector): return existing # load the json - data = get_data(remote_id) + data = self.get_book_data(remote_id) mapped_data = dict_from_mappings(data, self.book_mappings) if self.is_work_data(data): try: @@ -150,6 +150,14 @@ class AbstractConnector(AbstractMinimalConnector): load_more_data.delay(self.connector.id, work.id) return edition + def get_book_data(self, remote_id): + """ this allows connectors to override the default behavior """ + return get_data(remote_id) + + def get_search_data(self, remote_id): + """ this allows connectors to override the default behavior """ + return get_data(remote_id) + def create_edition_from_data(self, work, edition_data): """ if we already have the work, we're ready """ mapped_data = dict_from_mappings(edition_data, self.book_mappings) @@ -176,7 +184,7 @@ class AbstractConnector(AbstractMinimalConnector): if existing: return existing - data = get_data(remote_id) + data = self.get_book_data(remote_id) mapped_data = dict_from_mappings(data, self.author_mappings) activity = activitypub.Author(**mapped_data) diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index 748259eb..72ed8221 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -1,8 +1,6 @@ """ inventaire data connector """ -from bookwyrm import models from .abstract_connector import AbstractConnector, SearchResult, Mapping from .abstract_connector import get_data -from .connector_manager import ConnectorException class Connector(AbstractConnector): @@ -26,6 +24,11 @@ class Connector(AbstractConnector): Mapping("goodreadsKey", remote_field="wdt:P2969", formatter=get_claim), ] + def get_book_data(self, remote_id): + data = get_data(remote_id) + extracted = list(data.get("entities").values()) + return extracted[0] if extracted else {} + def parse_search_data(self, data): return data.get('results') @@ -49,7 +52,7 @@ class Connector(AbstractConnector): """ beep bloop """ def is_work_data(self, data): - return True + return data.get("type") == "work" def get_edition_from_work_data(self, data): return {} From 5149c7e8c2da5766ba16c1b033e39d3da3844a3d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 6 Apr 2021 13:03:22 -0700 Subject: [PATCH 006/252] Expands mappings for inventaire/wikidata properties --- bookwyrm/connectors/inventaire.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index 72ed8221..b3c49772 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -9,11 +9,14 @@ class Connector(AbstractConnector): def __init__(self, identifier): super().__init__(identifier) - get_remote_id = lambda a, *args: self.base_url + a + get_remote_id = lambda a, *args: self.books_url + a + get_remote_id_list = lambda a, *_: [get_remote_id(v) for v in a] self.book_mappings = [ Mapping("title", remote_field="wdt:P1476", formatter=get_claim), - Mapping("id", remote_field="key", formatter=get_remote_id), - Mapping("inventaireId", remote_field="id"), + Mapping("subtitle", remote_field="wdt:P1680", formatter=get_claim), + Mapping("id", remote_field="uri", formatter=get_remote_id), + Mapping("authors", remote_field="wdt:P50", formatter=get_remote_id_list), + Mapping("inventaireId", remote_field="uri"), Mapping("cover", remote_field="image", formatter=self.get_cover_url), Mapping("isbn13", remote_field="wdt:P212", formatter=get_claim), Mapping("isbn10", remote_field="wdt:P957", formatter=get_claim), @@ -22,7 +25,14 @@ class Connector(AbstractConnector): Mapping("publishedDate", remote_field="wdt:P577", formatter=get_claim), Mapping("pages", remote_field="wdt:P1104", formatter=get_claim), Mapping("goodreadsKey", remote_field="wdt:P2969", formatter=get_claim), + Mapping("openlibraryKey", remote_field="wdt:P648", formatter=get_claim), + Mapping("subjectPlaces", remote_field="wdt:P840", formatter=resolve_key), + Mapping("subjects", remote_field="wdt:P921", formatter=resolve_key), + Mapping("librarythingKey", remote_field="wdt:P1085", formatter=get_claim), + Mapping("oclcNumber", remote_field="wdt:P5331", formatter=get_claim), + Mapping("asin", remote_field="wdt:P5749", formatter=get_claim), ] + # TODO: P136: genre, P268 bnf id, P674 characters, P950 bne def get_book_data(self, remote_id): data = get_data(remote_id) From 3158701075bf1328be9d7c5851afdf0ed1b63edf Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 6 Apr 2021 13:39:10 -0700 Subject: [PATCH 007/252] Gets editions for works --- bookwyrm/connectors/inventaire.py | 33 ++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index b3c49772..9987079e 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -1,6 +1,7 @@ """ inventaire data connector """ from .abstract_connector import AbstractConnector, SearchResult, Mapping from .abstract_connector import get_data +from .connector_manager import ConnectorException class Connector(AbstractConnector): @@ -9,12 +10,11 @@ class Connector(AbstractConnector): def __init__(self, identifier): super().__init__(identifier) - get_remote_id = lambda a, *args: self.books_url + a - get_remote_id_list = lambda a, *_: [get_remote_id(v) for v in a] + get_remote_id_list = lambda a, *_: [self.get_remote_id(v) for v in a] self.book_mappings = [ Mapping("title", remote_field="wdt:P1476", formatter=get_claim), Mapping("subtitle", remote_field="wdt:P1680", formatter=get_claim), - Mapping("id", remote_field="uri", formatter=get_remote_id), + Mapping("id", remote_field="uri", formatter=self.get_remote_id), Mapping("authors", remote_field="wdt:P50", formatter=get_remote_id_list), Mapping("inventaireId", remote_field="uri"), Mapping("cover", remote_field="image", formatter=self.get_cover_url), @@ -34,6 +34,10 @@ class Connector(AbstractConnector): ] # TODO: P136: genre, P268 bnf id, P674 characters, P950 bne + def get_remote_id(self, value, *_): + """ convert an id/uri into a url """ + return '{:s}?action=by-uris&uris={:s}'.format(self.books_url, value) + def get_book_data(self, remote_id): data = get_data(remote_id) extracted = list(data.get("entities").values()) @@ -49,7 +53,9 @@ class Connector(AbstractConnector): ) if images else None return SearchResult( title=search_result.get("label"), - key="{:s}{:s}".format(self.books_url, search_result.get("uri")), + key="{:s}?action=by-uris&uris={:s}".format( + self.books_url, search_result.get("uri") + ), view_link="{:s}{:s}".format(self.base_url, search_result.get("uri")), cover=cover, connector=self, @@ -65,11 +71,24 @@ class Connector(AbstractConnector): return data.get("type") == "work" def get_edition_from_work_data(self, data): - return {} + value = data.get("uri") + url = "{:s}?action=reverse-claims&property=P629&value={:s}".format( + self.books_url, value + ) + data = get_data(url) + try: + uri = data["uris"][0] + except KeyError: + raise ConnectorException("Invalid book data") + return self.get_book_data(self.get_remote_id(uri)) def get_work_from_edition_data(self, data): - # P629 - return {} + try: + uri = data["claims"]["wdt:P629"] + except KeyError: + raise ConnectorException("Invalid book data") + return self.get_book_data(self.get_remote_id(uri)) + def get_authors_from_data(self, data): return [] From e594cd0a3619015091c654ab85de9ba85ab14a07 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 6 Apr 2021 13:53:58 -0700 Subject: [PATCH 008/252] Load simple fields from inventaire --- bookwyrm/connectors/inventaire.py | 64 +++++++++++++++++-------------- 1 file changed, 36 insertions(+), 28 deletions(-) diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index 9987079e..1ff834bf 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -10,47 +10,59 @@ class Connector(AbstractConnector): def __init__(self, identifier): super().__init__(identifier) + get_first = lambda a, *args: a[0] get_remote_id_list = lambda a, *_: [self.get_remote_id(v) for v in a] self.book_mappings = [ - Mapping("title", remote_field="wdt:P1476", formatter=get_claim), - Mapping("subtitle", remote_field="wdt:P1680", formatter=get_claim), + Mapping("title", remote_field="wdt:P1476", formatter=get_first), + Mapping("subtitle", remote_field="wdt:P1680", formatter=get_first), Mapping("id", remote_field="uri", formatter=self.get_remote_id), - Mapping("authors", remote_field="wdt:P50", formatter=get_remote_id_list), + # Mapping("authors", remote_field="wdt:P50", formatter=get_remote_id_list), Mapping("inventaireId", remote_field="uri"), Mapping("cover", remote_field="image", formatter=self.get_cover_url), - Mapping("isbn13", remote_field="wdt:P212", formatter=get_claim), - Mapping("isbn10", remote_field="wdt:P957", formatter=get_claim), - Mapping("languages", remote_field="wdt:P407", formatter=get_language), - Mapping("publishers", remote_field="wdt:P123", formatter=resolve_key), - Mapping("publishedDate", remote_field="wdt:P577", formatter=get_claim), - Mapping("pages", remote_field="wdt:P1104", formatter=get_claim), - Mapping("goodreadsKey", remote_field="wdt:P2969", formatter=get_claim), - Mapping("openlibraryKey", remote_field="wdt:P648", formatter=get_claim), - Mapping("subjectPlaces", remote_field="wdt:P840", formatter=resolve_key), - Mapping("subjects", remote_field="wdt:P921", formatter=resolve_key), - Mapping("librarythingKey", remote_field="wdt:P1085", formatter=get_claim), - Mapping("oclcNumber", remote_field="wdt:P5331", formatter=get_claim), - Mapping("asin", remote_field="wdt:P5749", formatter=get_claim), + Mapping("isbn13", remote_field="wdt:P212", formatter=get_first), + Mapping("isbn10", remote_field="wdt:P957", formatter=get_first), + # Mapping("languages", remote_field="wdt:P407", formatter=get_language), + # Mapping("publishers", remote_field="wdt:P123", formatter=resolve_key), + Mapping("publishedDate", remote_field="wdt:P577", formatter=get_first), + Mapping("pages", remote_field="wdt:P1104", formatter=get_first), + Mapping("goodreadsKey", remote_field="wdt:P2969", formatter=get_first), + Mapping("openlibraryKey", remote_field="wdt:P648", formatter=get_first), + # Mapping("subjectPlaces", remote_field="wdt:P840", formatter=resolve_key), + # Mapping("subjects", remote_field="wdt:P921", formatter=resolve_key), + Mapping("librarythingKey", remote_field="wdt:P1085", formatter=get_first), + Mapping("oclcNumber", remote_field="wdt:P5331", formatter=get_first), + Mapping("asin", remote_field="wdt:P5749", formatter=get_first), ] # TODO: P136: genre, P268 bnf id, P674 characters, P950 bne def get_remote_id(self, value, *_): """ convert an id/uri into a url """ - return '{:s}?action=by-uris&uris={:s}'.format(self.books_url, value) + return "{:s}?action=by-uris&uris={:s}".format(self.books_url, value) def get_book_data(self, remote_id): data = get_data(remote_id) extracted = list(data.get("entities").values()) - return extracted[0] if extracted else {} + try: + data = extracted[0] + except KeyError: + raise ConnectorException("Invalid book data") + # flatten the data so that images, uri, and claims are on the same level + return { + **data.get("claims"), + "uri": data.get("uri"), + "image": data.get("image"), + } def parse_search_data(self, data): - return data.get('results') + return data.get("results") def format_search_result(self, search_result): images = search_result.get("image") - cover = "{:s}/img/entities/{:s}".format( - self.covers_url, images[0] - ) if images else None + cover = ( + "{:s}/img/entities/{:s}".format(self.covers_url, images[0]) + if images + else None + ) return SearchResult( title=search_result.get("label"), key="{:s}?action=by-uris&uris={:s}".format( @@ -89,7 +101,6 @@ class Connector(AbstractConnector): raise ConnectorException("Invalid book data") return self.get_book_data(self.get_remote_id(uri)) - def get_authors_from_data(self, data): return [] @@ -97,7 +108,7 @@ class Connector(AbstractConnector): return def get_cover_url(self, cover_blob, *_): - """ format the relative cover url into an absolute one: + """format the relative cover url into an absolute one: {"url": "/img/entities/e794783f01b9d4f897a1ea9820b96e00d346994f"} """ cover_id = cover_blob[0].get("url") @@ -106,14 +117,11 @@ class Connector(AbstractConnector): return "%s%s" % (self.covers_url, cover_id) -def get_claim(data, claim_key): - """ all the metadata is in a "claims" dict with a buncha wikidata keys """ - return data.get('claims', {}).get(claim_key) - def get_language(wikidata_key, *_): """ who here speaks "wd:Q150" """ return wikidata_key # TODO + def resolve_key(wikidata_key, *_): """ cool, it's "wd:Q3156592" now what the heck does that mean """ return wikidata_key # TODO From bfdcf611e7966ea54d051a313115c40cf35eb40b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 6 Apr 2021 13:54:20 -0700 Subject: [PATCH 009/252] Adds inventaire identifier to book data fields --- .../migrations/0062_auto_20210406_1731.py | 20 +++++++++---- .../migrations/0063_auto_20210406_1738.py | 28 +++++++++++++++++++ 2 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 bookwyrm/migrations/0063_auto_20210406_1738.py diff --git a/bookwyrm/migrations/0062_auto_20210406_1731.py b/bookwyrm/migrations/0062_auto_20210406_1731.py index 9ff26af3..5db176ec 100644 --- a/bookwyrm/migrations/0062_auto_20210406_1731.py +++ b/bookwyrm/migrations/0062_auto_20210406_1731.py @@ -6,17 +6,25 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('bookwyrm', '0061_auto_20210402_1435'), + ("bookwyrm", "0061_auto_20210402_1435"), ] operations = [ migrations.RemoveConstraint( - model_name='connector', - name='connector_file_valid', + model_name="connector", + name="connector_file_valid", ), migrations.AlterField( - model_name='connector', - name='connector_file', - field=models.CharField(choices=[('openlibrary', 'Openlibrary'), ('inventaire', 'Inventaire'), ('self_connector', 'Self Connector'), ('bookwyrm_connector', 'Bookwyrm Connector')], max_length=255), + model_name="connector", + name="connector_file", + field=models.CharField( + choices=[ + ("openlibrary", "Openlibrary"), + ("inventaire", "Inventaire"), + ("self_connector", "Self Connector"), + ("bookwyrm_connector", "Bookwyrm Connector"), + ], + max_length=255, + ), ), ] diff --git a/bookwyrm/migrations/0063_auto_20210406_1738.py b/bookwyrm/migrations/0063_auto_20210406_1738.py new file mode 100644 index 00000000..c9f07b3c --- /dev/null +++ b/bookwyrm/migrations/0063_auto_20210406_1738.py @@ -0,0 +1,28 @@ +# Generated by Django 3.1.6 on 2021-04-06 17:38 + +import bookwyrm.models.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0062_auto_20210406_1731"), + ] + + operations = [ + migrations.AddField( + model_name="author", + name="inventaire_id", + field=bookwyrm.models.fields.CharField( + blank=True, max_length=255, null=True + ), + ), + migrations.AddField( + model_name="book", + name="inventaire_id", + field=bookwyrm.models.fields.CharField( + blank=True, max_length=255, null=True + ), + ), + ] From 82c2f2eeb1b0d8a9fa1133c2bd1c626214dfa1d0 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 6 Apr 2021 17:46:06 -0700 Subject: [PATCH 010/252] Adds more author identifier fields --- bookwyrm/connectors/abstract_connector.py | 8 +-- bookwyrm/connectors/inventaire.py | 47 ++++++++++++------ bookwyrm/connectors/openlibrary.py | 10 ++-- .../migrations/0063_auto_20210406_1738.py | 28 ----------- .../migrations/0063_auto_20210407_0045.py | 49 +++++++++++++++++++ bookwyrm/models/author.py | 9 ++++ bookwyrm/models/book.py | 3 ++ 7 files changed, 103 insertions(+), 51 deletions(-) delete mode 100644 bookwyrm/migrations/0063_auto_20210406_1738.py create mode 100644 bookwyrm/migrations/0063_auto_20210407_0045.py diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index 8007bb1a..f66cca7f 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -150,11 +150,11 @@ class AbstractConnector(AbstractMinimalConnector): load_more_data.delay(self.connector.id, work.id) return edition - def get_book_data(self, remote_id): + def get_book_data(self, remote_id): # pylint: disable=no-self-use """ this allows connectors to override the default behavior """ return get_data(remote_id) - def get_search_data(self, remote_id): + def get_search_data(self, remote_id): # pylint: disable=no-self-use """ this allows connectors to override the default behavior """ return get_data(remote_id) @@ -293,7 +293,7 @@ class Mapping: """ associate a local database field with a field in an external dataset """ def __init__(self, local_field, remote_field=None, formatter=None): - noop = lambda x, *_: x + noop = lambda x: x self.local_field = local_field self.remote_field = remote_field or local_field @@ -305,6 +305,6 @@ class Mapping: if not value: return None try: - return self.formatter(value, self.remote_field) + return self.formatter(value) except: # pylint: disable=bare-except return None diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index 1ff834bf..6eff6508 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -10,32 +10,45 @@ class Connector(AbstractConnector): def __init__(self, identifier): super().__init__(identifier) - get_first = lambda a, *args: a[0] - get_remote_id_list = lambda a, *_: [self.get_remote_id(v) for v in a] + get_first = lambda a: a[0] + shared_mappings = [ + Mapping("id", remote_field="uri", formatter=self.get_remote_id), + Mapping("bnfId", remote_field="wdt:P268", formatter=get_first), + Mapping("oclcNumber", remote_field="wdt:P5331", formatter=get_first), + Mapping("openlibraryKey", remote_field="wdt:P648", formatter=get_first), + ] self.book_mappings = [ Mapping("title", remote_field="wdt:P1476", formatter=get_first), Mapping("subtitle", remote_field="wdt:P1680", formatter=get_first), - Mapping("id", remote_field="uri", formatter=self.get_remote_id), - # Mapping("authors", remote_field="wdt:P50", formatter=get_remote_id_list), Mapping("inventaireId", remote_field="uri"), Mapping("cover", remote_field="image", formatter=self.get_cover_url), Mapping("isbn13", remote_field="wdt:P212", formatter=get_first), Mapping("isbn10", remote_field="wdt:P957", formatter=get_first), + Mapping("goodreadsKey", remote_field="wdt:P2969", formatter=get_first), + Mapping("librarythingKey", remote_field="wdt:P1085", formatter=get_first), # Mapping("languages", remote_field="wdt:P407", formatter=get_language), # Mapping("publishers", remote_field="wdt:P123", formatter=resolve_key), Mapping("publishedDate", remote_field="wdt:P577", formatter=get_first), Mapping("pages", remote_field="wdt:P1104", formatter=get_first), - Mapping("goodreadsKey", remote_field="wdt:P2969", formatter=get_first), - Mapping("openlibraryKey", remote_field="wdt:P648", formatter=get_first), # Mapping("subjectPlaces", remote_field="wdt:P840", formatter=resolve_key), # Mapping("subjects", remote_field="wdt:P921", formatter=resolve_key), - Mapping("librarythingKey", remote_field="wdt:P1085", formatter=get_first), - Mapping("oclcNumber", remote_field="wdt:P5331", formatter=get_first), Mapping("asin", remote_field="wdt:P5749", formatter=get_first), - ] - # TODO: P136: genre, P268 bnf id, P674 characters, P950 bne + ] + shared_mappings + # TODO: P136: genre, P674 characters, P950 bne - def get_remote_id(self, value, *_): + self.author_mappings = [ + Mapping("id", remote_field="uri", formatter=self.get_remote_id), + Mapping("name", remote_field="label", formatter=get_language_code), + Mapping("goodreadsKey", remote_field="wdt:P2963", formatter=get_first), + Mapping("isni", remote_field="wdt:P213", formatter=get_first), + Mapping("viafId", remote_field="wdt:P214", formatter=get_first), + Mapping("gutenberg_id", remote_field="wdt:P1938", formatter=get_first), + Mapping("born", remote_field="wdt:P569", formatter=get_first), + Mapping("died", remote_field="wdt:P570", formatter=get_first), + ] + shared_mappings + + + def get_remote_id(self, value): """ convert an id/uri into a url """ return "{:s}?action=by-uris&uris={:s}".format(self.books_url, value) @@ -102,7 +115,9 @@ class Connector(AbstractConnector): return self.get_book_data(self.get_remote_id(uri)) def get_authors_from_data(self, data): - return [] + authors = data.get("wdt:P50") + for author in authors: + yield self.get_or_create_author(self.get_remote_id(author)) def expand_book_data(self, book): return @@ -117,11 +132,15 @@ class Connector(AbstractConnector): return "%s%s" % (self.covers_url, cover_id) -def get_language(wikidata_key, *_): +def get_language(wikidata_key): """ who here speaks "wd:Q150" """ return wikidata_key # TODO -def resolve_key(wikidata_key, *_): +def resolve_key(wikidata_key): """ cool, it's "wd:Q3156592" now what the heck does that mean """ return wikidata_key # TODO + +def get_language_code(options, code="en"): + """ when there are a bunch of translation but we need a single field """ + return options.get(code) diff --git a/bookwyrm/connectors/openlibrary.py b/bookwyrm/connectors/openlibrary.py index 34357726..466bf1e5 100644 --- a/bookwyrm/connectors/openlibrary.py +++ b/bookwyrm/connectors/openlibrary.py @@ -95,7 +95,7 @@ class Connector(AbstractConnector): url = "%s%s" % (self.base_url, author_id) yield self.get_or_create_author(url) - def get_cover_url(self, cover_blob, *_, size="L"): + def get_cover_url(self, cover_blob, size="L"): """ ask openlibrary for the cover """ if not cover_blob: return None @@ -181,19 +181,19 @@ def ignore_edition(edition_data): return True -def get_description(description_blob, *_): +def get_description(description_blob): """ descriptions can be a string or a dict """ if isinstance(description_blob, dict): return description_blob.get("value") return description_blob -def get_openlibrary_key(key, *_): +def get_openlibrary_key(key): """ convert /books/OL27320736M into OL27320736M """ return key.split("/")[-1] -def get_languages(language_blob, *_): +def get_languages(language_blob): """ /language/eng -> English """ langs = [] for lang in language_blob: @@ -201,7 +201,7 @@ def get_languages(language_blob, *_): return langs -def pick_default_edition(options, *_): +def pick_default_edition(options): """ favor physical copies with covers in english """ if not options: return None diff --git a/bookwyrm/migrations/0063_auto_20210406_1738.py b/bookwyrm/migrations/0063_auto_20210406_1738.py deleted file mode 100644 index c9f07b3c..00000000 --- a/bookwyrm/migrations/0063_auto_20210406_1738.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 3.1.6 on 2021-04-06 17:38 - -import bookwyrm.models.fields -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ("bookwyrm", "0062_auto_20210406_1731"), - ] - - operations = [ - migrations.AddField( - model_name="author", - name="inventaire_id", - field=bookwyrm.models.fields.CharField( - blank=True, max_length=255, null=True - ), - ), - migrations.AddField( - model_name="book", - name="inventaire_id", - field=bookwyrm.models.fields.CharField( - blank=True, max_length=255, null=True - ), - ), - ] diff --git a/bookwyrm/migrations/0063_auto_20210407_0045.py b/bookwyrm/migrations/0063_auto_20210407_0045.py new file mode 100644 index 00000000..2543193b --- /dev/null +++ b/bookwyrm/migrations/0063_auto_20210407_0045.py @@ -0,0 +1,49 @@ +# Generated by Django 3.1.6 on 2021-04-07 00:45 + +import bookwyrm.models.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('bookwyrm', '0062_auto_20210406_1731'), + ] + + operations = [ + migrations.AddField( + model_name='author', + name='bnf_id', + field=bookwyrm.models.fields.CharField(blank=True, max_length=255, null=True), + ), + migrations.AddField( + model_name='author', + name='gutenberg_id', + field=bookwyrm.models.fields.CharField(blank=True, max_length=255, null=True), + ), + migrations.AddField( + model_name='author', + name='inventaire_id', + field=bookwyrm.models.fields.CharField(blank=True, max_length=255, null=True), + ), + migrations.AddField( + model_name='author', + name='isni', + field=bookwyrm.models.fields.CharField(blank=True, max_length=255, null=True), + ), + migrations.AddField( + model_name='author', + name='viaf_id', + field=bookwyrm.models.fields.CharField(blank=True, max_length=255, null=True), + ), + migrations.AddField( + model_name='book', + name='bnf_id', + field=bookwyrm.models.fields.CharField(blank=True, max_length=255, null=True), + ), + migrations.AddField( + model_name='book', + name='inventaire_id', + field=bookwyrm.models.fields.CharField(blank=True, max_length=255, null=True), + ), + ] diff --git a/bookwyrm/models/author.py b/bookwyrm/models/author.py index 4c5fe6c8..f7740b1d 100644 --- a/bookwyrm/models/author.py +++ b/bookwyrm/models/author.py @@ -14,6 +14,15 @@ class Author(BookDataModel): wikipedia_link = fields.CharField( max_length=255, blank=True, null=True, deduplication_field=True ) + isni = fields.CharField( + max_length=255, blank=True, null=True, deduplication_field=True + ) + viaf_id = fields.CharField( + max_length=255, blank=True, null=True, deduplication_field=True + ) + gutenberg_id = fields.CharField( + max_length=255, blank=True, null=True, deduplication_field=True + ) # idk probably other keys would be useful here? born = fields.DateTimeField(blank=True, null=True) died = fields.DateTimeField(blank=True, null=True) diff --git a/bookwyrm/models/book.py b/bookwyrm/models/book.py index ccbec9eb..94bbe330 100644 --- a/bookwyrm/models/book.py +++ b/bookwyrm/models/book.py @@ -28,6 +28,9 @@ class BookDataModel(ObjectMixin, BookWyrmModel): goodreads_key = fields.CharField( max_length=255, blank=True, null=True, deduplication_field=True ) + bnf_id = fields.CharField( # Bibliothèque nationale de France + max_length=255, blank=True, null=True, deduplication_field=True + ) last_edited_by = models.ForeignKey("User", on_delete=models.PROTECT, null=True) From 4112862924abedb0362649b4592405b99837371c Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 6 Apr 2021 18:00:54 -0700 Subject: [PATCH 011/252] Fixes search data and new activitypub fields --- bookwyrm/activitypub/book.py | 26 +++++++++++++---------- bookwyrm/connectors/abstract_connector.py | 8 +++---- bookwyrm/connectors/inventaire.py | 7 +++--- 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/bookwyrm/activitypub/book.py b/bookwyrm/activitypub/book.py index 7a427927..17e5b686 100644 --- a/bookwyrm/activitypub/book.py +++ b/bookwyrm/activitypub/book.py @@ -7,7 +7,17 @@ from .image import Image @dataclass(init=False) -class Book(ActivityObject): +class BookData(ActivityObject): + """ shared fields for all book data and authors""" + openlibraryKey: str = None + inventaireId: str = None + librarythingKey: str = None + goodreadsKey: str = None + bnfId: str = None + + +@dataclass(init=False) +class Book(BookData): """ serializes an edition or work, abstract """ title: str @@ -24,11 +34,6 @@ class Book(ActivityObject): firstPublishedDate: str = "" publishedDate: str = "" - openlibraryKey: str = None - inventaireId: str = None - librarythingKey: str = None - goodreadsKey: str = None - cover: Image = None type: str = "Book" @@ -61,17 +66,16 @@ class Work(Book): @dataclass(init=False) -class Author(ActivityObject): +class Author(BookData): """ author of a book """ name: str + isni: str = None + viafId: str = None + gutenbergId: str = None born: str = None died: str = None aliases: List[str] = field(default_factory=lambda: []) bio: str = "" - openlibraryKey: str = None - inventaireId: str = None - librarythingKey: str = None - goodreadsKey: str = None wikipediaLink: str = "" type: str = "Author" diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index f66cca7f..43cd6aad 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -68,6 +68,10 @@ class AbstractMinimalConnector(ABC): results.append(self.format_isbn_search_result(doc)) return results + def get_search_data(self, remote_id, **kwargs): # pylint: disable=no-self-use + """ this allows connectors to override the default behavior """ + return get_data(remote_id, **kwargs) + @abstractmethod def get_or_create_book(self, remote_id): """ pull up a book record by whatever means possible """ @@ -154,10 +158,6 @@ class AbstractConnector(AbstractMinimalConnector): """ this allows connectors to override the default behavior """ return get_data(remote_id) - def get_search_data(self, remote_id): # pylint: disable=no-self-use - """ this allows connectors to override the default behavior """ - return get_data(remote_id) - def create_edition_from_data(self, work, edition_data): """ if we already have the work, we're ready """ mapped_data = dict_from_mappings(edition_data, self.book_mappings) diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index 6eff6508..a16bb0fd 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -14,7 +14,6 @@ class Connector(AbstractConnector): shared_mappings = [ Mapping("id", remote_field="uri", formatter=self.get_remote_id), Mapping("bnfId", remote_field="wdt:P268", formatter=get_first), - Mapping("oclcNumber", remote_field="wdt:P5331", formatter=get_first), Mapping("openlibraryKey", remote_field="wdt:P648", formatter=get_first), ] self.book_mappings = [ @@ -24,6 +23,7 @@ class Connector(AbstractConnector): Mapping("cover", remote_field="image", formatter=self.get_cover_url), Mapping("isbn13", remote_field="wdt:P212", formatter=get_first), Mapping("isbn10", remote_field="wdt:P957", formatter=get_first), + Mapping("oclcNumber", remote_field="wdt:P5331", formatter=get_first), Mapping("goodreadsKey", remote_field="wdt:P2969", formatter=get_first), Mapping("librarythingKey", remote_field="wdt:P1085", formatter=get_first), # Mapping("languages", remote_field="wdt:P407", formatter=get_language), @@ -38,7 +38,7 @@ class Connector(AbstractConnector): self.author_mappings = [ Mapping("id", remote_field="uri", formatter=self.get_remote_id), - Mapping("name", remote_field="label", formatter=get_language_code), + Mapping("name", remote_field="labels", formatter=get_language_code), Mapping("goodreadsKey", remote_field="wdt:P2963", formatter=get_first), Mapping("isni", remote_field="wdt:P213", formatter=get_first), Mapping("viafId", remote_field="wdt:P214", formatter=get_first), @@ -62,8 +62,7 @@ class Connector(AbstractConnector): # flatten the data so that images, uri, and claims are on the same level return { **data.get("claims"), - "uri": data.get("uri"), - "image": data.get("image"), + **{k: data.get(k) for k in ["uri", "image", "labels"]}, } def parse_search_data(self, data): From f21aca1211a10b9efc66469c4bb8bad023bf7da0 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 6 Apr 2021 18:10:42 -0700 Subject: [PATCH 012/252] Load remote keys --- bookwyrm/connectors/inventaire.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index a16bb0fd..4be0dd5c 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -26,12 +26,14 @@ class Connector(AbstractConnector): Mapping("oclcNumber", remote_field="wdt:P5331", formatter=get_first), Mapping("goodreadsKey", remote_field="wdt:P2969", formatter=get_first), Mapping("librarythingKey", remote_field="wdt:P1085", formatter=get_first), - # Mapping("languages", remote_field="wdt:P407", formatter=get_language), - # Mapping("publishers", remote_field="wdt:P123", formatter=resolve_key), + Mapping("languages", remote_field="wdt:P407", formatter=self.resolve_keys), + Mapping("publishers", remote_field="wdt:P123", formatter=self.resolve_keys), Mapping("publishedDate", remote_field="wdt:P577", formatter=get_first), Mapping("pages", remote_field="wdt:P1104", formatter=get_first), - # Mapping("subjectPlaces", remote_field="wdt:P840", formatter=resolve_key), - # Mapping("subjects", remote_field="wdt:P921", formatter=resolve_key), + Mapping( + "subjectPlaces", remote_field="wdt:P840", formatter=self.resolve_keys + ), + Mapping("subjects", remote_field="wdt:P921", formatter=self.resolve_keys), Mapping("asin", remote_field="wdt:P5749", formatter=get_first), ] + shared_mappings # TODO: P136: genre, P674 characters, P950 bne @@ -130,15 +132,17 @@ class Connector(AbstractConnector): return None return "%s%s" % (self.covers_url, cover_id) + def resolve_keys(self, keys): + """ cool, it's "wd:Q3156592" now what the heck does that mean """ + results = [] + for uri in keys: + try: + data = self.get_book_data(self.get_remote_id(uri)) + except ConnectorException: + continue + results.append(get_language_code(data.get("labels"))) + return results -def get_language(wikidata_key): - """ who here speaks "wd:Q150" """ - return wikidata_key # TODO - - -def resolve_key(wikidata_key): - """ cool, it's "wd:Q3156592" now what the heck does that mean """ - return wikidata_key # TODO def get_language_code(options, code="en"): """ when there are a bunch of translation but we need a single field """ From ac27111f0555fbd96ec95503d5434b05be53ee32 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 6 Apr 2021 18:13:33 -0700 Subject: [PATCH 013/252] Adds inventaire to default connector list --- bookwyrm/management/commands/initdb.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/bookwyrm/management/commands/initdb.py b/bookwyrm/management/commands/initdb.py index d6101c87..45c81089 100644 --- a/bookwyrm/management/commands/initdb.py +++ b/bookwyrm/management/commands/initdb.py @@ -94,6 +94,18 @@ def init_connectors(): priority=2, ) + Connector.objects.create( + identifier="inventaire.io", + name="Inventaire", + connector_file="inventaire", + base_url="https://inventaire.io/entity/", + books_url="https://inventaire.io/api/entities", + covers_url="https://inventaire.io", + search_url="https://inventaire.io/api/search?types=works&types=works&search=", + isbn_search_url="https://inventaire.io/api/entities?action=by-uris&uris=isbn%3A", + priority=3, + ) + Connector.objects.create( identifier="openlibrary.org", name="OpenLibrary", From fec3d63e4623f7a47526d1648cd0232f1ef6c531 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 6 Apr 2021 18:17:33 -0700 Subject: [PATCH 014/252] Python formatting --- bookwyrm/activitypub/book.py | 1 + bookwyrm/connectors/inventaire.py | 1 - .../migrations/0063_auto_20210407_0045.py | 58 ++++++++++++------- 3 files changed, 37 insertions(+), 23 deletions(-) diff --git a/bookwyrm/activitypub/book.py b/bookwyrm/activitypub/book.py index 17e5b686..ca4d69da 100644 --- a/bookwyrm/activitypub/book.py +++ b/bookwyrm/activitypub/book.py @@ -9,6 +9,7 @@ from .image import Image @dataclass(init=False) class BookData(ActivityObject): """ shared fields for all book data and authors""" + openlibraryKey: str = None inventaireId: str = None librarythingKey: str = None diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index 4be0dd5c..2a4569b3 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -49,7 +49,6 @@ class Connector(AbstractConnector): Mapping("died", remote_field="wdt:P570", formatter=get_first), ] + shared_mappings - def get_remote_id(self, value): """ convert an id/uri into a url """ return "{:s}?action=by-uris&uris={:s}".format(self.books_url, value) diff --git a/bookwyrm/migrations/0063_auto_20210407_0045.py b/bookwyrm/migrations/0063_auto_20210407_0045.py index 2543193b..cd87dd97 100644 --- a/bookwyrm/migrations/0063_auto_20210407_0045.py +++ b/bookwyrm/migrations/0063_auto_20210407_0045.py @@ -7,43 +7,57 @@ from django.db import migrations class Migration(migrations.Migration): dependencies = [ - ('bookwyrm', '0062_auto_20210406_1731'), + ("bookwyrm", "0062_auto_20210406_1731"), ] operations = [ migrations.AddField( - model_name='author', - name='bnf_id', - field=bookwyrm.models.fields.CharField(blank=True, max_length=255, null=True), + model_name="author", + name="bnf_id", + field=bookwyrm.models.fields.CharField( + blank=True, max_length=255, null=True + ), ), migrations.AddField( - model_name='author', - name='gutenberg_id', - field=bookwyrm.models.fields.CharField(blank=True, max_length=255, null=True), + model_name="author", + name="gutenberg_id", + field=bookwyrm.models.fields.CharField( + blank=True, max_length=255, null=True + ), ), migrations.AddField( - model_name='author', - name='inventaire_id', - field=bookwyrm.models.fields.CharField(blank=True, max_length=255, null=True), + model_name="author", + name="inventaire_id", + field=bookwyrm.models.fields.CharField( + blank=True, max_length=255, null=True + ), ), migrations.AddField( - model_name='author', - name='isni', - field=bookwyrm.models.fields.CharField(blank=True, max_length=255, null=True), + model_name="author", + name="isni", + field=bookwyrm.models.fields.CharField( + blank=True, max_length=255, null=True + ), ), migrations.AddField( - model_name='author', - name='viaf_id', - field=bookwyrm.models.fields.CharField(blank=True, max_length=255, null=True), + model_name="author", + name="viaf_id", + field=bookwyrm.models.fields.CharField( + blank=True, max_length=255, null=True + ), ), migrations.AddField( - model_name='book', - name='bnf_id', - field=bookwyrm.models.fields.CharField(blank=True, max_length=255, null=True), + model_name="book", + name="bnf_id", + field=bookwyrm.models.fields.CharField( + blank=True, max_length=255, null=True + ), ), migrations.AddField( - model_name='book', - name='inventaire_id', - field=bookwyrm.models.fields.CharField(blank=True, max_length=255, null=True), + model_name="book", + name="inventaire_id", + field=bookwyrm.models.fields.CharField( + blank=True, max_length=255, null=True + ), ), ] From 29e7659b76ec094f9bb3ff8659e97cdf01346080 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 6 Apr 2021 18:34:55 -0700 Subject: [PATCH 015/252] Expand inventaire book data --- bookwyrm/connectors/inventaire.py | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index 2a4569b3..465268b2 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -1,4 +1,5 @@ """ inventaire data connector """ +from bookwyrm import models from .abstract_connector import AbstractConnector, SearchResult, Mapping from .abstract_connector import get_data from .connector_manager import ConnectorException @@ -95,12 +96,15 @@ class Connector(AbstractConnector): def is_work_data(self, data): return data.get("type") == "work" - def get_edition_from_work_data(self, data): - value = data.get("uri") + def load_edition_data(self, work_uri): + """ get a list of editions for a work """ url = "{:s}?action=reverse-claims&property=P629&value={:s}".format( - self.books_url, value + self.books_url, work_uri ) - data = get_data(url) + return get_data(url) + + def get_edition_from_work_data(self, data): + data = self.load_edition_data(data.get("uri")) try: uri = data["uris"][0] except KeyError: @@ -120,7 +124,20 @@ class Connector(AbstractConnector): yield self.get_or_create_author(self.get_remote_id(author)) def expand_book_data(self, book): - return + work = book + # go from the edition to the work, if necessary + if isinstance(book, models.Edition): + work = book.parent_work + + try: + edition_options = self.load_edition_data(work.inventaire_id) + except ConnectorException: + # who knows, man + return + + for edition_uri in edition_options.get("uris"): + remote_id = self.get_remote_id(edition_uri) + self.get_or_create_book(remote_id) def get_cover_url(self, cover_blob, *_): """format the relative cover url into an absolute one: From 922428cab760ba324619eb64dd2a89bfe352d15c Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 6 Apr 2021 18:51:43 -0700 Subject: [PATCH 016/252] Fixes error in reverse path --- bookwyrm/connectors/inventaire.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index 465268b2..594fe810 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -98,7 +98,7 @@ class Connector(AbstractConnector): def load_edition_data(self, work_uri): """ get a list of editions for a work """ - url = "{:s}?action=reverse-claims&property=P629&value={:s}".format( + url = "{:s}?action=reverse-claims&property=wdt:P629&value={:s}".format( self.books_url, work_uri ) return get_data(url) @@ -119,7 +119,7 @@ class Connector(AbstractConnector): return self.get_book_data(self.get_remote_id(uri)) def get_authors_from_data(self, data): - authors = data.get("wdt:P50") + authors = data.get("wdt:P50", []) for author in authors: yield self.get_or_create_author(self.get_remote_id(author)) From d1c582493d8a319f24a1cabcc943e35da0eb7d4a Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 18 Apr 2021 09:26:27 -0700 Subject: [PATCH 017/252] Update to django 3.2 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 6b7d82d3..0bcc8599 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ celery==4.4.2 -Django==3.1.8 +Django==3.2.0 django-model-utils==4.0.0 environs==7.2.0 flower==0.9.4 From 7f0b3184a1e7c2482c302d907345ac0b098a6083 Mon Sep 17 00:00:00 2001 From: Fabien Basmaison Date: Sat, 24 Apr 2021 12:48:55 +0200 Subject: [PATCH 018/252] cover: Use book-cover as component: - Avoid specifying context-dependent values in CSS for components. Those values can be defined by the context calling the component. - Use `

` with optional caption. - Reduce redundant markup. - Allow more variables to be passed to the book-cover (image path and class for the container). - Hide the book cover to screen readers. --- bookwyrm/static/css/bookwyrm.css | 26 ++++----- bookwyrm/templates/discover/large-book.html | 47 ++++++++++----- bookwyrm/templates/discover/small-book.html | 24 ++++++-- bookwyrm/templates/snippets/book_cover.html | 63 ++++++++++++++------- 4 files changed, 105 insertions(+), 55 deletions(-) diff --git a/bookwyrm/static/css/bookwyrm.css b/bookwyrm/static/css/bookwyrm.css index b4abd690..71947aea 100644 --- a/bookwyrm/static/css/bookwyrm.css +++ b/bookwyrm/static/css/bookwyrm.css @@ -117,14 +117,14 @@ body { } /** Book covers + * + * The book cover takes the full width of its ancestor’s layout. ******************************************************************************/ - .cover-container { - height: 250px; - width: max-content; - max-width: 250px; + position: relative; } +/* .cover-container.is-large { height: max-content; max-width: 330px; @@ -153,26 +153,25 @@ body { height: 100px; } } +*/ .book-cover { - height: 100%; - object-fit: scale-down; + display: block; + width: 100%; + + /* Usweful when stretching under-sized images. */ + image-rendering: optimizeQuality; } -.no-cover { - position: relative; - white-space: normal; -} - -.no-cover div { +.no-cover .cover_caption { position: absolute; padding: 1em; color: white; top: 0; left: 0; - text-align: center; } +/* .cover-container.is-medium .no-cover div { font-size: 0.9em; padding: 0.3em; @@ -182,6 +181,7 @@ body { font-size: 0.7em; padding: 0.1em; } +*/ /** Avatars ******************************************************************************/ diff --git a/bookwyrm/templates/discover/large-book.html b/bookwyrm/templates/discover/large-book.html index 44b91b94..303d7318 100644 --- a/bookwyrm/templates/discover/large-book.html +++ b/bookwyrm/templates/discover/large-book.html @@ -1,19 +1,36 @@ + {% load bookwyrm_tags %} {% load i18n %} + {% if book %} -
-
- {% include 'snippets/book_cover.html' with book=book size="large" %} - {% include 'snippets/stars.html' with rating=book|rating:request.user %} -
-
-

{{ book.title }}

- {% if book.authors %} -

{% trans "by" %} {% include 'snippets/authors.html' with book=book %}

- {% endif %} - {% if book|book_description %} -
{{ book|book_description|to_markdown|safe|truncatewords_html:50 }}
- {% endif %} -
-
+ {% with book=book %} +
+
+ {% include 'snippets/book_cover.html' with size="large" %} + + {% include 'snippets/stars.html' with rating=book|rating:request.user %} +
+ +
+

+ {{ book.title }} +

+ + {% if book.authors %} +

+ {% trans "by" %} + {% include 'snippets/authors.html' %} +

+ {% endif %} + + {% if book|book_description %} +
+ {{ book|book_description|to_markdown|safe|truncatewords_html:50 }} +
+ {% endif %} +
+
+ {% endwith %} {% endif %} diff --git a/bookwyrm/templates/discover/small-book.html b/bookwyrm/templates/discover/small-book.html index 6df27746..f80a2690 100644 --- a/bookwyrm/templates/discover/small-book.html +++ b/bookwyrm/templates/discover/small-book.html @@ -1,12 +1,24 @@ + {% load bookwyrm_tags %} {% load i18n %} + {% if book %} -{% include 'snippets/book_cover.html' with book=book %} -{% include 'snippets/stars.html' with rating=book|rating:request.user %} + {% with book=book %} + {% include 'snippets/book_cover.html' with size="small" %} -

{{ book.title }}

-{% if book.authors %} -

{% trans "by" %} {% include 'snippets/authors.html' with book=book %}

-{% endif %} + {% include 'snippets/stars.html' with rating=book|rating:request.user %} +

+ {{ book.title }} +

+ + {% if book.authors %} +

+ {% trans "by" %} + {% include 'snippets/authors.html' %} +

+ {% endif %} + {% endwith %} {% endif %} diff --git a/bookwyrm/templates/snippets/book_cover.html b/bookwyrm/templates/snippets/book_cover.html index ce47819e..f26974d2 100644 --- a/bookwyrm/templates/snippets/book_cover.html +++ b/bookwyrm/templates/snippets/book_cover.html @@ -3,27 +3,48 @@ {% load bookwyrm_tags %} {% load i18n %} -
- {% if book.cover %} - {{ book.alt_text }} - {% else %} -
- {% trans +
+
{% endspaceless %} From 9ea91d8e7c4b4a26d27c2023948e9240106a5b77 Mon Sep 17 00:00:00 2001 From: Fabien Basmaison Date: Sat, 24 Apr 2021 12:56:38 +0200 Subject: [PATCH 019/252] cover: Search layout: Reduce padding around covers. --- bookwyrm/templates/search_results.html | 2 +- .../snippets/search_result_text.html | 47 ++++++++++--------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/bookwyrm/templates/search_results.html b/bookwyrm/templates/search_results.html index 4c9c23da..cb1fae39 100644 --- a/bookwyrm/templates/search_results.html +++ b/bookwyrm/templates/search_results.html @@ -49,7 +49,7 @@
    {% for result in result_set.results %} -
  • +
  • {% include 'snippets/search_result_text.html' with result=result remote_result=True %}
  • {% endfor %} diff --git a/bookwyrm/templates/snippets/search_result_text.html b/bookwyrm/templates/snippets/search_result_text.html index 059b8e7e..e46dbbeb 100644 --- a/bookwyrm/templates/snippets/search_result_text.html +++ b/bookwyrm/templates/snippets/search_result_text.html @@ -1,34 +1,39 @@ {% load i18n %} -
    -
    - {% if result.cover %} - - {% else %} -
    - -
    -

    {% trans "No cover" %}

    -
    -
    - {% endif %} -
    +
    + {% include 'snippets/book_cover.html' with book=result container_class='column' img_path=false %} -
    +

    - {{ result.title }} + {{ result.title }} + {% if result.author %} - {% blocktrans with author=result.author %}by {{ author }}{% endblocktrans %}{% endif %}{% if result.year %} ({{ result.year }}) + {% blocktrans with author=result.author %}by {{ author }}{% endblocktrans %} + {% endif %} + + {% if result.year %} + ({{ result.year }}) {% endif %}

    {% if remote_result %} -
    - {% csrf_token %} - - -
    +
    + {% csrf_token %} + + + + +
    {% endif %}
    From 75a69988e412f439e85229bbd3c4faa0487bee5d Mon Sep 17 00:00:00 2001 From: Fabien Basmaison Date: Sat, 24 Apr 2021 14:24:25 +0200 Subject: [PATCH 020/252] cover: List: - Reduce Padding around covers. - Remove `content` which is applying too extensive default styles. --- bookwyrm/templates/lists/list.html | 70 ++++++++++++++++++------------ 1 file changed, 42 insertions(+), 28 deletions(-) diff --git a/bookwyrm/templates/lists/list.html b/bookwyrm/templates/lists/list.html index a9f8e5c0..f6c6f9f5 100644 --- a/bookwyrm/templates/lists/list.html +++ b/bookwyrm/templates/lists/list.html @@ -18,18 +18,29 @@ {% else %}
      {% for item in items %} -
    1. +
    2. -
      -
      - {% include 'snippets/book_cover.html' with book=item.book size="medium" %} + {% with book=item.book %} +
      + + +
      + {% include 'snippets/book_titleby.html' %} + {% include 'snippets/stars.html' with rating=item.book|rating:request.user %} + {% include 'snippets/shelve_button/shelve_button.html' %} +
      -
      - {% include 'snippets/book_titleby.html' with book=item.book %} - {% include 'snippets/stars.html' with rating=item.book|rating:request.user %} - {% include 'snippets/shelve_button/shelve_button.html' with book=item.book %} -
      -
      + {% endwith %} +
    3. {% endfor %} diff --git a/bookwyrm/templates/import_status.html b/bookwyrm/templates/import_status.html index c2985c12..d85bb7fb 100644 --- a/bookwyrm/templates/import_status.html +++ b/bookwyrm/templates/import_status.html @@ -125,7 +125,7 @@ {% if item.book %} - {% include 'snippets/book_cover.html' with book=item.book size='small' %} + {% include 'snippets/book_cover.html' with book=item.book cover_class='is-small' %} {% endif %} diff --git a/bookwyrm/templates/lists/curate.html b/bookwyrm/templates/lists/curate.html index 995ba161..fa6a8fb9 100644 --- a/bookwyrm/templates/lists/curate.html +++ b/bookwyrm/templates/lists/curate.html @@ -32,7 +32,7 @@ href="{{ book.local_path }}" aria-hidden="true" > - {% include 'snippets/book_cover.html' with size="small" %} + {% include 'snippets/book_cover.html' with cover_class='is-small' %}
      diff --git a/bookwyrm/templates/lists/list_items.html b/bookwyrm/templates/lists/list_items.html index 3e3e8bf4..ddc2fff0 100644 --- a/bookwyrm/templates/lists/list_items.html +++ b/bookwyrm/templates/lists/list_items.html @@ -8,11 +8,19 @@ {{ list.name }} {% include 'snippets/privacy-icons.html' with item=list %} -
      - {% for book in list.listitem_set.all|slice:5 %} - {% include 'snippets/book_cover.html' with book=book.book size="small" %} - {% endfor %} -
      + + {% with list_books=list.listitem_set.all|slice:5 %} + {% if list_books %} + + {% endif %} + {% endwith %} +
      {% if list.description %} diff --git a/bookwyrm/templates/lists/lists.html b/bookwyrm/templates/lists/lists.html index c7d789d0..a7a54811 100644 --- a/bookwyrm/templates/lists/lists.html +++ b/bookwyrm/templates/lists/lists.html @@ -28,7 +28,7 @@
      {% if lists %} -
      +
      {% include 'lists/list_items.html' with lists=lists %}
      diff --git a/bookwyrm/templates/snippets/book_cover.html b/bookwyrm/templates/snippets/book_cover.html index b1166f7f..b994343e 100644 --- a/bookwyrm/templates/snippets/book_cover.html +++ b/bookwyrm/templates/snippets/book_cover.html @@ -9,21 +9,20 @@ is-clipped is-flex is-align-items-center + {{ cover_class }} {% if not book.cover %} no-cover {% endif %} - - {% if size %} - is-{{ size }} - {% endif %} - - {% if container_class %} - {{ container_class }} - {% endif %} " - aria-hidden="true" + {% if aria != "show" %} + aria-hidden="true" + {% endif %} + + {% if book.alt_text %} + title="{{ book.alt_text }}" + {% endif %} > {{ book.alt_text }} - {% include 'snippets/book_cover.html' with book=result container_class='column' img_path=false %} + {% include 'snippets/book_cover.html' with book=result cover_class='column' img_path=false %}

      diff --git a/bookwyrm/templates/snippets/status/generated_status.html b/bookwyrm/templates/snippets/status/generated_status.html index cb65a6f2..0b673037 100644 --- a/bookwyrm/templates/snippets/status/generated_status.html +++ b/bookwyrm/templates/snippets/status/generated_status.html @@ -8,7 +8,7 @@

      diff --git a/bookwyrm/templates/user/shelf.html b/bookwyrm/templates/user/shelf.html index 0732327b..d9f264ea 100644 --- a/bookwyrm/templates/user/shelf.html +++ b/bookwyrm/templates/user/shelf.html @@ -86,7 +86,7 @@ {% for book in books %} - {% include 'snippets/book_cover.html' with book=book size="small" %} + {% include 'snippets/book_cover.html' with book=book cover_class='is-small' %} {{ book.title }} diff --git a/bookwyrm/templates/user/user.html b/bookwyrm/templates/user/user.html index a54664ce..9b0c6991 100644 --- a/bookwyrm/templates/user/user.html +++ b/bookwyrm/templates/user/user.html @@ -36,7 +36,7 @@ {% for book in shelf.books %} {% endfor %} From cf5a4ebe90573dc54af185f11469256e92f08f04 Mon Sep 17 00:00:00 2001 From: Fabien Basmaison Date: Sat, 24 Apr 2021 21:18:48 +0200 Subject: [PATCH 023/252] Fix typo: Addresses https://github.com/bookwyrm-social/bookwyrm/pull/994#discussion_r619688900. --- bookwyrm/static/css/bookwyrm.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/static/css/bookwyrm.css b/bookwyrm/static/css/bookwyrm.css index 5ef6e61a..27f4521d 100644 --- a/bookwyrm/static/css/bookwyrm.css +++ b/bookwyrm/static/css/bookwyrm.css @@ -159,7 +159,7 @@ body { display: block; width: 100%; - /* Usweful when stretching under-sized images. */ + /* Useful when stretching under-sized images. */ image-rendering: optimizeQuality; } From 953dff90bb7c2aefda2d1a0f181f8123ddf0b3b2 Mon Sep 17 00:00:00 2001 From: Fabien Basmaison Date: Sun, 25 Apr 2021 15:37:46 +0200 Subject: [PATCH 024/252] cover: tweak styles: - `optimizeQuality` > `smooth` (CSS language evolution) - Use `auto` instead of a fixed width. - Add exceptions for heights and apply them to some previously modified templates. - Remove `is-large` exception. - Widen the content column on list curation. --- bookwyrm/static/css/bookwyrm.css | 88 ++++++++----------- bookwyrm/templates/book/book.html | 7 +- bookwyrm/templates/book/edit_book.html | 2 +- bookwyrm/templates/book/editions.html | 2 +- bookwyrm/templates/discover/large-book.html | 2 +- bookwyrm/templates/discover/small-book.html | 2 +- bookwyrm/templates/feed/feed_layout.html | 2 +- bookwyrm/templates/import_status.html | 2 +- bookwyrm/templates/lists/curate.html | 4 +- bookwyrm/templates/lists/list_items.html | 4 +- bookwyrm/templates/snippets/book_cover.html | 3 - .../snippets/status/generated_status.html | 2 +- bookwyrm/templates/user/shelf.html | 2 +- bookwyrm/templates/user/user.html | 2 +- 14 files changed, 55 insertions(+), 69 deletions(-) diff --git a/bookwyrm/static/css/bookwyrm.css b/bookwyrm/static/css/bookwyrm.css index 281bc7ed..a1e55ce9 100644 --- a/bookwyrm/static/css/bookwyrm.css +++ b/bookwyrm/static/css/bookwyrm.css @@ -98,7 +98,7 @@ body { * * \e9d9: filled star * \e9d7: empty star; - ******************************************************************************/ + * -------------------------------------------------------------------------- */ .form-rate-stars { width: max-content; @@ -125,76 +125,45 @@ body { /** Book covers * - * The book cover takes the full width of its ancestor’s layout. + * - take the full width of their ancestor’s layout. + * - take whatever height they need. + * + * When assigning a height, add the `has-height` class. ******************************************************************************/ .cover-container { position: relative; + overflow: hidden; } -.cover-container.is-small { - height: 100px; -} - -.cover-container.is-medium { - height: 150px; -} - -/* -.cover-container.is-large { - height: max-content; - max-width: 330px; -} - -.cover-container.is-large img { - max-height: 500px; - height: auto; -} - -@media only screen and (max-width: 768px) { - .cover-container { - height: 200px; - width: max-content; - } - - .cover-container.is-medium { - height: 100px; - } -} -*/ - +/* Book cover + -------------------------------------------------------------------------- */ .book-cover { display: block; - width: 100%; + width: auto; /* Useful when stretching under-sized images. */ image-rendering: optimizeQuality; + image-rendering: smooth; } +/* `height: inherit` makes sure the height computed is not approximative, + without specifying a fixed height. */ [class~="has-height"] .book-cover { - width: auto; - height: 100%; + height: inherit; + max-height: 100%; } +/* Cover caption + -------------------------------------------------------------------------- */ .no-cover .cover_caption { position: absolute; - padding: 1em; + padding: .25em; color: white; top: 0; left: 0; + font-size: 0.75em; } -/* -.cover-container.is-medium .no-cover div { - font-size: 0.9em; - padding: 0.3em; -} - -.cover-container.is-small .no-cover div { - font-size: 0.7em; - padding: 0.1em; -} -*/ - /** Avatars ******************************************************************************/ @@ -267,3 +236,24 @@ body { opacity: 0.5; cursor: not-allowed; } + +/* Dimensions + ******************************************************************************/ + +.is-h-small { + height: 100px !important; +} + +.is-h-medium { + height: 150px !important; +} + +@media only screen and (max-width: 768px) { + .is-h-small-mobile { + height: 100px !important; + } + + .is-h-medium-mobile { + height: 150px; + } +} diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 28850673..34558f8d 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -48,10 +48,9 @@
      -
      - {% include 'snippets/book_cover.html' with book=book cover_class='is-large' %} - {% include 'snippets/rate_action.html' with user=request.user book=book %} -
      + {% include 'snippets/book_cover.html' with book=book cover_class='has-height is-h-medium-mobile' %} + {% include 'snippets/rate_action.html' with user=request.user book=book %} +
      {% include 'snippets/shelve_button/shelve_button.html' %}
      diff --git a/bookwyrm/templates/book/edit_book.html b/bookwyrm/templates/book/edit_book.html index 7f8644b4..0cb1a9b1 100644 --- a/bookwyrm/templates/book/edit_book.html +++ b/bookwyrm/templates/book/edit_book.html @@ -170,7 +170,7 @@

      {% trans "Cover" %}

      - {% include 'snippets/book_cover.html' with book=book cover_class='is-small' %} + {% include 'snippets/book_cover.html' with book=book cover_class='is-h-small' %}
      diff --git a/bookwyrm/templates/book/editions.html b/bookwyrm/templates/book/editions.html index 4ec39218..3eb66eae 100644 --- a/bookwyrm/templates/book/editions.html +++ b/bookwyrm/templates/book/editions.html @@ -16,7 +16,7 @@
      diff --git a/bookwyrm/templates/discover/large-book.html b/bookwyrm/templates/discover/large-book.html index 408e20c0..c7b39ebb 100644 --- a/bookwyrm/templates/discover/large-book.html +++ b/bookwyrm/templates/discover/large-book.html @@ -8,7 +8,7 @@
      {% include 'snippets/book_cover.html' with cover_class='is-large' %} + >{% include 'snippets/book_cover.html' %} {% include 'snippets/stars.html' with rating=book|rating:request.user %}
      diff --git a/bookwyrm/templates/discover/small-book.html b/bookwyrm/templates/discover/small-book.html index 048e5a71..c1f5f165 100644 --- a/bookwyrm/templates/discover/small-book.html +++ b/bookwyrm/templates/discover/small-book.html @@ -6,7 +6,7 @@ {% with book=book %} {% include 'snippets/book_cover.html' with cover_class='is-small' %} + >{% include 'snippets/book_cover.html' with cover_class='is-h-small' %} {% include 'snippets/stars.html' with rating=book|rating:request.user %} diff --git a/bookwyrm/templates/feed/feed_layout.html b/bookwyrm/templates/feed/feed_layout.html index 15e84a59..669c2aaa 100644 --- a/bookwyrm/templates/feed/feed_layout.html +++ b/bookwyrm/templates/feed/feed_layout.html @@ -37,7 +37,7 @@ aria-label="{{ book.title }}" aria-selected="{% if active_book == book.id|stringformat:'d' %}true{% elif shelf_counter == 1 and forloop.first %}true{% else %}false{% endif %}" aria-controls="book-{{ book.id }}"> - {% include 'snippets/book_cover.html' with book=book cover_class='is-medium' %} + {% include 'snippets/book_cover.html' with book=book cover_class='is-h-medium' %} {% endfor %} diff --git a/bookwyrm/templates/import_status.html b/bookwyrm/templates/import_status.html index d85bb7fb..05c811d2 100644 --- a/bookwyrm/templates/import_status.html +++ b/bookwyrm/templates/import_status.html @@ -125,7 +125,7 @@ {% if item.book %} - {% include 'snippets/book_cover.html' with book=item.book cover_class='is-small' %} + {% include 'snippets/book_cover.html' with book=item.book cover_class='is-h-small' %} {% endif %} diff --git a/bookwyrm/templates/lists/curate.html b/bookwyrm/templates/lists/curate.html index fa6a8fb9..529f51c3 100644 --- a/bookwyrm/templates/lists/curate.html +++ b/bookwyrm/templates/lists/curate.html @@ -32,10 +32,10 @@ href="{{ book.local_path }}" aria-hidden="true" > - {% include 'snippets/book_cover.html' with cover_class='is-small' %} + {% include 'snippets/book_cover.html' %} -
      +
      {% include 'snippets/book_titleby.html' %}
      diff --git a/bookwyrm/templates/lists/list_items.html b/bookwyrm/templates/lists/list_items.html index ddc2fff0..db6b6d60 100644 --- a/bookwyrm/templates/lists/list_items.html +++ b/bookwyrm/templates/lists/list_items.html @@ -11,10 +11,10 @@ {% with list_books=list.listitem_set.all|slice:5 %} {% if list_books %} -
      + diff --git a/bookwyrm/templates/snippets/book_cover.html b/bookwyrm/templates/snippets/book_cover.html index b994343e..8967ff57 100644 --- a/bookwyrm/templates/snippets/book_cover.html +++ b/bookwyrm/templates/snippets/book_cover.html @@ -6,9 +6,6 @@
      diff --git a/bookwyrm/templates/user/shelf.html b/bookwyrm/templates/user/shelf.html index d9f264ea..39498a43 100644 --- a/bookwyrm/templates/user/shelf.html +++ b/bookwyrm/templates/user/shelf.html @@ -86,7 +86,7 @@ {% for book in books %} - {% include 'snippets/book_cover.html' with book=book cover_class='is-small' %} + {% include 'snippets/book_cover.html' with book=book cover_class='is-h-small' %} {{ book.title }} diff --git a/bookwyrm/templates/user/user.html b/bookwyrm/templates/user/user.html index 9b0c6991..80dac213 100644 --- a/bookwyrm/templates/user/user.html +++ b/bookwyrm/templates/user/user.html @@ -36,7 +36,7 @@ {% for book in shelf.books %} {% endfor %} From a268f339c0740b7c302eded6f3814f7b84faf4e1 Mon Sep 17 00:00:00 2001 From: Fabien Basmaison Date: Sun, 25 Apr 2021 15:45:49 +0200 Subject: [PATCH 025/252] Fix linting issues. --- bookwyrm/static/css/bookwyrm.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bookwyrm/static/css/bookwyrm.css b/bookwyrm/static/css/bookwyrm.css index a1e55ce9..9488f0d7 100644 --- a/bookwyrm/static/css/bookwyrm.css +++ b/bookwyrm/static/css/bookwyrm.css @@ -136,7 +136,7 @@ body { } /* Book cover - -------------------------------------------------------------------------- */ + * -------------------------------------------------------------------------- */ .book-cover { display: block; width: auto; @@ -154,10 +154,10 @@ body { } /* Cover caption - -------------------------------------------------------------------------- */ + * -------------------------------------------------------------------------- */ .no-cover .cover_caption { position: absolute; - padding: .25em; + padding: 0.25em; color: white; top: 0; left: 0; From 26cacf502c45315c3045abc82da59dd8991b1d12 Mon Sep 17 00:00:00 2001 From: Fabien Basmaison Date: Mon, 26 Apr 2021 13:39:17 +0200 Subject: [PATCH 026/252] Rationalise behaviours of context, container and cover: - Set minimum dimensions to avoid having to pass classes all over the place. - Outline the container to show white on white covers properly. - Remove extraneous code. - Better size caption when no cover is available. - Create Alignments, Positions and Spacings sections and move some existing dimensions. - Update previous templates. --- bookwyrm/static/css/bookwyrm.css | 99 +++++++++++++++++------- bookwyrm/templates/book/book.html | 2 +- bookwyrm/templates/book/editions.html | 20 ++--- bookwyrm/templates/lists/list_items.html | 2 +- 4 files changed, 83 insertions(+), 40 deletions(-) diff --git a/bookwyrm/static/css/bookwyrm.css b/bookwyrm/static/css/bookwyrm.css index 3841aac8..8f95cfeb 100644 --- a/bookwyrm/static/css/bookwyrm.css +++ b/bookwyrm/static/css/bookwyrm.css @@ -159,43 +159,47 @@ body { /** Book covers * - * - take the full width of their ancestor’s layout. - * - take whatever height they need. - * - * When assigning a height, add the `has-height` class. + * - The context gives the extrinsic dimensions. + * - .cover-container gives the intrinsic dimensions and position. + * - .book-cover is positioned and sized based on its container. ******************************************************************************/ + .cover-container { + display: flex; position: relative; overflow: hidden; + min-width: 80px; + min-height: 100px; + max-width: max-content; + outline: solid 1px #dbdbdb; } /* Book cover * -------------------------------------------------------------------------- */ + .book-cover { display: block; - width: auto; + max-width: 100%; + max-height: 100%; /* Useful when stretching under-sized images. */ image-rendering: optimizeQuality; image-rendering: smooth; } -/* `height: inherit` makes sure the height computed is not approximative, - without specifying a fixed height. */ -[class~="has-height"] .book-cover { - height: inherit; - max-height: 100%; -} - /* Cover caption * -------------------------------------------------------------------------- */ + .no-cover .cover_caption { position: absolute; - padding: 0.25em; - color: white; top: 0; + right: 0; + bottom: 0; left: 0; + padding: 0.25em; font-size: 0.75em; + color: white; + background-color: #002549; } /** Avatars @@ -206,16 +210,6 @@ body { display: inline; } -.is-32x32 { - min-width: 32px; - min-height: 32px; -} - -.is-96x96 { - min-width: 96px; - min-height: 96px; -} - /** Statuses: Quotes * * \e906: icon-quote-open @@ -274,6 +268,16 @@ body { /* Dimensions ******************************************************************************/ +.is-32x32 { + min-width: 32px !important; + min-height: 32px !important; +} + +.is-96x96 { + min-width: 96px !important; + min-height: 96px !important; +} + .is-h-small { height: 100px !important; } @@ -283,15 +287,54 @@ body { } @media only screen and (max-width: 768px) { - .is-h-small-mobile { - height: 100px !important; - } - .is-h-medium-mobile { height: 150px; } } +.is-min-w-none { + min-width: auto !important; +} + +/* Alignments + ******************************************************************************/ + +/* Flex item position + * + * This is for a default `flex-direction: row`. + * -------------------------------------------------------------------------- */ + +.align-r { + justify-content: flex-end; +} + +@media screen and (min-width: 769px) { + .align-r-tablet { + justify-content: flex-end; + } +} + +/* Spacings + ******************************************************************************/ + +@media screen and (max-width: 768px) { + .my-3-mobile { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; + } +} + +@media screen and (min-width: 769px) { + .ml-3-tablet { + margin-left: 0.75rem !important; + } + + .mx-3-tablet { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; + } +} + /* Book preview table ******************************************************************************/ diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 8ab61321..23f7dac0 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -48,7 +48,7 @@
      - {% include 'snippets/book_cover.html' with book=book cover_class='has-height is-h-medium-mobile' %} + {% include 'snippets/book_cover.html' with book=book cover_class='is-h-medium-mobile' %} {% include 'snippets/rate_action.html' with user=request.user book=book %}
      diff --git a/bookwyrm/templates/book/editions.html b/bookwyrm/templates/book/editions.html index 3eb66eae..009bdd66 100644 --- a/bookwyrm/templates/book/editions.html +++ b/bookwyrm/templates/book/editions.html @@ -13,32 +13,32 @@
      {% for book in editions %} -
      -
      - - {% include 'snippets/book_cover.html' with book=book cover_class='is-h-medium' %} - +
      +
      + {% include 'snippets/book_cover.html' with book=book cover_class='is-h-medium' %}
      -
      -

      + +
      +

      {{ book.title }}

      {% with book=book %} -
      +
      {% include 'book/publisher_info.html' %}
      -
      +
      {% include 'book/book_identifiers.html' %}
      {% endwith %}
      -
      + +
      {% include 'snippets/shelve_button/shelve_button.html' with book=book switch_mode=True %}
      diff --git a/bookwyrm/templates/lists/list_items.html b/bookwyrm/templates/lists/list_items.html index db6b6d60..f1a4938e 100644 --- a/bookwyrm/templates/lists/list_items.html +++ b/bookwyrm/templates/lists/list_items.html @@ -14,7 +14,7 @@ From b089f6c86a8697d542b32df657bd3258076078d8 Mon Sep 17 00:00:00 2001 From: Fabien Basmaison Date: Mon, 26 Apr 2021 15:20:48 +0200 Subject: [PATCH 027/252] Update Bulma from v0.9.1 to v0.9.2. --- bookwyrm/static/css/vendor/bulma.min.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/static/css/vendor/bulma.min.css b/bookwyrm/static/css/vendor/bulma.min.css index a807a314..ed54b7b3 100644 --- a/bookwyrm/static/css/vendor/bulma.min.css +++ b/bookwyrm/static/css/vendor/bulma.min.css @@ -1 +1 @@ -/*! bulma.io v0.9.1 | MIT License | github.com/jgthms/bulma */@-webkit-keyframes spinAround{from{transform:rotate(0)}to{transform:rotate(359deg)}}@keyframes spinAround{from{transform:rotate(0)}to{transform:rotate(359deg)}}.breadcrumb,.button,.delete,.file,.is-unselectable,.modal-close,.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous,.tabs{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless)::after,.select:not(.is-multiple):not(.is-loading)::after{border:3px solid transparent;border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:.625em;margin-top:-.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:.625em}.block:not(:last-child),.box:not(:last-child),.breadcrumb:not(:last-child),.content:not(:last-child),.highlight:not(:last-child),.level:not(:last-child),.message:not(:last-child),.notification:not(:last-child),.pagination:not(:last-child),.progress:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.tabs:not(:last-child),.title:not(:last-child){margin-bottom:1.5rem}.delete,.modal-close{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,.2);border:none;border-radius:290486px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:0;position:relative;vertical-align:top;width:20px}.delete::after,.delete::before,.modal-close::after,.modal-close::before{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.delete::before,.modal-close::before{height:2px;width:50%}.delete::after,.modal-close::after{height:50%;width:2px}.delete:focus,.delete:hover,.modal-close:focus,.modal-close:hover{background-color:rgba(10,10,10,.3)}.delete:active,.modal-close:active{background-color:rgba(10,10,10,.4)}.is-small.delete,.is-small.modal-close{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.delete,.is-medium.modal-close{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.delete,.is-large.modal-close{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.button.is-loading::after,.control.is-loading::after,.loader,.select.is-loading::after{-webkit-animation:spinAround .5s infinite linear;animation:spinAround .5s infinite linear;border:2px solid #dbdbdb;border-radius:290486px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.hero-video,.image.is-16by9 .has-ratio,.image.is-16by9 img,.image.is-1by1 .has-ratio,.image.is-1by1 img,.image.is-1by2 .has-ratio,.image.is-1by2 img,.image.is-1by3 .has-ratio,.image.is-1by3 img,.image.is-2by1 .has-ratio,.image.is-2by1 img,.image.is-2by3 .has-ratio,.image.is-2by3 img,.image.is-3by1 .has-ratio,.image.is-3by1 img,.image.is-3by2 .has-ratio,.image.is-3by2 img,.image.is-3by4 .has-ratio,.image.is-3by4 img,.image.is-3by5 .has-ratio,.image.is-3by5 img,.image.is-4by3 .has-ratio,.image.is-4by3 img,.image.is-4by5 .has-ratio,.image.is-4by5 img,.image.is-5by3 .has-ratio,.image.is-5by3 img,.image.is-5by4 .has-ratio,.image.is-5by4 img,.image.is-9by16 .has-ratio,.image.is-9by16 img,.image.is-square .has-ratio,.image.is-square img,.is-overlay,.modal,.modal-background{bottom:0;left:0;position:absolute;right:0;top:0}.button,.file-cta,.file-name,.input,.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous,.select select,.textarea{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(.5em - 1px);padding-left:calc(.75em - 1px);padding-right:calc(.75em - 1px);padding-top:calc(.5em - 1px);position:relative;vertical-align:top}.button:active,.button:focus,.file-cta:active,.file-cta:focus,.file-name:active,.file-name:focus,.input:active,.input:focus,.is-active.button,.is-active.file-cta,.is-active.file-name,.is-active.input,.is-active.pagination-ellipsis,.is-active.pagination-link,.is-active.pagination-next,.is-active.pagination-previous,.is-active.textarea,.is-focused.button,.is-focused.file-cta,.is-focused.file-name,.is-focused.input,.is-focused.pagination-ellipsis,.is-focused.pagination-link,.is-focused.pagination-next,.is-focused.pagination-previous,.is-focused.textarea,.pagination-ellipsis:active,.pagination-ellipsis:focus,.pagination-link:active,.pagination-link:focus,.pagination-next:active,.pagination-next:focus,.pagination-previous:active,.pagination-previous:focus,.select select.is-active,.select select.is-focused,.select select:active,.select select:focus,.textarea:active,.textarea:focus{outline:0}.button[disabled],.file-cta[disabled],.file-name[disabled],.input[disabled],.pagination-ellipsis[disabled],.pagination-link[disabled],.pagination-next[disabled],.pagination-previous[disabled],.select fieldset[disabled] select,.select select[disabled],.textarea[disabled],fieldset[disabled] .button,fieldset[disabled] .file-cta,fieldset[disabled] .file-name,fieldset[disabled] .input,fieldset[disabled] .pagination-ellipsis,fieldset[disabled] .pagination-link,fieldset[disabled] .pagination-next,fieldset[disabled] .pagination-previous,fieldset[disabled] .select select,fieldset[disabled] .textarea{cursor:not-allowed}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */blockquote,body,dd,dl,dt,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,html,iframe,legend,li,ol,p,pre,textarea,ul{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,::after,::before{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}html{background-color:#fff;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,optgroup,select,textarea{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:monospace}body{color:#4a4a4a;font-size:1em;font-weight:400;line-height:1.5}a{color:#3273dc;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#363636}code{background-color:#f5f5f5;color:#da1039;font-size:.875em;font-weight:400;padding:.25em .5em .25em}hr{background-color:#f5f5f5;border:none;display:block;height:2px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type=checkbox],input[type=radio]{vertical-align:baseline}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#363636;font-weight:700}fieldset{border:none}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#4a4a4a;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}table th{color:#363636}.box{background-color:#fff;border-radius:6px;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);color:#4a4a4a;display:block;padding:1.25rem}a.box:focus,a.box:hover{box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px #3273dc}a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2),0 0 0 1px #3273dc}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#363636;cursor:pointer;justify-content:center;padding-bottom:calc(.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(.5em - 1px);text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-large,.button .icon.is-medium,.button .icon.is-small{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-.5em - 1px);margin-right:calc(-.5em - 1px)}.button.is-hovered,.button:hover{border-color:#b5b5b5;color:#363636}.button.is-focused,.button:focus{border-color:#3273dc;color:#363636}.button.is-focused:not(:active),.button:focus:not(:active){box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.button.is-active,.button:active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#4a4a4a;text-decoration:underline}.button.is-text.is-focused,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text:hover{background-color:#f5f5f5;color:#363636}.button.is-text.is-active,.button.is-text:active{background-color:#e8e8e8;color:#363636}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}.button.is-white.is-hovered,.button.is-white:hover{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white.is-focused,.button.is-white:focus{border-color:transparent;color:#0a0a0a}.button.is-white.is-focused:not(:active),.button.is-white:focus:not(:active){box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.button.is-white.is-active,.button.is-white:active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:#fff;border-color:transparent;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-hovered,.button.is-white.is-inverted:hover{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a!important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined.is-focused,.button.is-white.is-outlined.is-hovered,.button.is-white.is-outlined:focus,.button.is-white.is-outlined:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-white.is-outlined.is-loading.is-focused::after,.button.is-white.is-outlined.is-loading.is-hovered::after,.button.is-white.is-outlined.is-loading:focus::after,.button.is-white.is-outlined.is-loading:hover::after{border-color:transparent transparent #0a0a0a #0a0a0a!important}.button.is-white.is-outlined[disabled],fieldset[disabled] .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined.is-focused,.button.is-white.is-inverted.is-outlined.is-hovered,.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined:hover{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-white.is-inverted.is-outlined.is-loading:focus::after,.button.is-white.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}.button.is-black.is-hovered,.button.is-black:hover{background-color:#040404;border-color:transparent;color:#fff}.button.is-black.is-focused,.button.is-black:focus{border-color:transparent;color:#fff}.button.is-black.is-focused:not(:active),.button.is-black:focus:not(:active){box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.button.is-black.is-active,.button.is-black:active{background-color:#000;border-color:transparent;color:#fff}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:#0a0a0a;border-color:transparent;box-shadow:none}.button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-hovered,.button.is-black.is-inverted:hover{background-color:#f2f2f2}.button.is-black.is-inverted[disabled],fieldset[disabled] .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined.is-focused,.button.is-black.is-outlined.is-hovered,.button.is-black.is-outlined:focus,.button.is-black.is-outlined:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a!important}.button.is-black.is-outlined.is-loading.is-focused::after,.button.is-black.is-outlined.is-loading.is-hovered::after,.button.is-black.is-outlined.is-loading:focus::after,.button.is-black.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-black.is-outlined[disabled],fieldset[disabled] .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined.is-focused,.button.is-black.is-inverted.is-outlined.is-hovered,.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined:hover{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-black.is-inverted.is-outlined.is-loading:focus::after,.button.is-black.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #0a0a0a #0a0a0a!important}.button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light.is-hovered,.button.is-light:hover{background-color:#eee;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light.is-focused,.button.is-light:focus{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light.is-focused:not(:active),.button.is-light:focus:not(:active){box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.button.is-light.is-active,.button.is-light:active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#f5f5f5;border-color:transparent;box-shadow:none}.button.is-light.is-inverted{background-color:rgba(0,0,0,.7);color:#f5f5f5}.button.is-light.is-inverted.is-hovered,.button.is-light.is-inverted:hover{background-color:rgba(0,0,0,.7)}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:rgba(0,0,0,.7);border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined.is-focused,.button.is-light.is-outlined.is-hovered,.button.is-light.is-outlined:focus,.button.is-light.is-outlined:hover{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5!important}.button.is-light.is-outlined.is-loading.is-focused::after,.button.is-light.is-outlined.is-loading.is-hovered::after,.button.is-light.is-outlined.is-loading:focus::after,.button.is-light.is-outlined.is-loading:hover::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);color:rgba(0,0,0,.7)}.button.is-light.is-inverted.is-outlined.is-focused,.button.is-light.is-inverted.is-outlined.is-hovered,.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined:hover{background-color:rgba(0,0,0,.7);color:#f5f5f5}.button.is-light.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-light.is-inverted.is-outlined.is-loading:focus::after,.button.is-light.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #f5f5f5 #f5f5f5!important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);box-shadow:none;color:rgba(0,0,0,.7)}.button.is-dark{background-color:#363636;border-color:transparent;color:#fff}.button.is-dark.is-hovered,.button.is-dark:hover{background-color:#2f2f2f;border-color:transparent;color:#fff}.button.is-dark.is-focused,.button.is-dark:focus{border-color:transparent;color:#fff}.button.is-dark.is-focused:not(:active),.button.is-dark:focus:not(:active){box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.button.is-dark.is-active,.button.is-dark:active{background-color:#292929;border-color:transparent;color:#fff}.button.is-dark[disabled],fieldset[disabled] .button.is-dark{background-color:#363636;border-color:transparent;box-shadow:none}.button.is-dark.is-inverted{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-hovered,.button.is-dark.is-inverted:hover{background-color:#f2f2f2}.button.is-dark.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-dark.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined.is-focused,.button.is-dark.is-outlined.is-hovered,.button.is-dark.is-outlined:focus,.button.is-dark.is-outlined:hover{background-color:#363636;border-color:#363636;color:#fff}.button.is-dark.is-outlined.is-loading::after{border-color:transparent transparent #363636 #363636!important}.button.is-dark.is-outlined.is-loading.is-focused::after,.button.is-dark.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-outlined.is-loading:focus::after,.button.is-dark.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-dark.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-dark.is-inverted.is-outlined.is-focused,.button.is-dark.is-inverted.is-outlined.is-hovered,.button.is-dark.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined:hover{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-inverted.is-outlined.is-loading:focus::after,.button.is-dark.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #363636 #363636!important}.button.is-dark.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary{background-color:#00d1b2;border-color:transparent;color:#fff}.button.is-primary.is-hovered,.button.is-primary:hover{background-color:#00c4a7;border-color:transparent;color:#fff}.button.is-primary.is-focused,.button.is-primary:focus{border-color:transparent;color:#fff}.button.is-primary.is-focused:not(:active),.button.is-primary:focus:not(:active){box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.button.is-primary.is-active,.button.is-primary:active{background-color:#00b89c;border-color:transparent;color:#fff}.button.is-primary[disabled],fieldset[disabled] .button.is-primary{background-color:#00d1b2;border-color:transparent;box-shadow:none}.button.is-primary.is-inverted{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted.is-hovered,.button.is-primary.is-inverted:hover{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled],fieldset[disabled] .button.is-primary.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#00d1b2}.button.is-primary.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;color:#00d1b2}.button.is-primary.is-outlined.is-focused,.button.is-primary.is-outlined.is-hovered,.button.is-primary.is-outlined:focus,.button.is-primary.is-outlined:hover{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.button.is-primary.is-outlined.is-loading::after{border-color:transparent transparent #00d1b2 #00d1b2!important}.button.is-primary.is-outlined.is-loading.is-focused::after,.button.is-primary.is-outlined.is-loading.is-hovered::after,.button.is-primary.is-outlined.is-loading:focus::after,.button.is-primary.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-primary.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;box-shadow:none;color:#00d1b2}.button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined.is-focused,.button.is-primary.is-inverted.is-outlined.is-hovered,.button.is-primary.is-inverted.is-outlined:focus,.button.is-primary.is-inverted.is-outlined:hover{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-primary.is-inverted.is-outlined.is-loading:focus::after,.button.is-primary.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #00d1b2 #00d1b2!important}.button.is-primary.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary.is-light{background-color:#ebfffc;color:#00947e}.button.is-primary.is-light.is-hovered,.button.is-primary.is-light:hover{background-color:#defffa;border-color:transparent;color:#00947e}.button.is-primary.is-light.is-active,.button.is-primary.is-light:active{background-color:#d1fff8;border-color:transparent;color:#00947e}.button.is-link{background-color:#3273dc;border-color:transparent;color:#fff}.button.is-link.is-hovered,.button.is-link:hover{background-color:#276cda;border-color:transparent;color:#fff}.button.is-link.is-focused,.button.is-link:focus{border-color:transparent;color:#fff}.button.is-link.is-focused:not(:active),.button.is-link:focus:not(:active){box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.button.is-link.is-active,.button.is-link:active{background-color:#2366d1;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#3273dc;border-color:transparent;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#3273dc}.button.is-link.is-inverted.is-hovered,.button.is-link.is-inverted:hover{background-color:#f2f2f2}.button.is-link.is-inverted[disabled],fieldset[disabled] .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#3273dc}.button.is-link.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-link.is-outlined{background-color:transparent;border-color:#3273dc;color:#3273dc}.button.is-link.is-outlined.is-focused,.button.is-link.is-outlined.is-hovered,.button.is-link.is-outlined:focus,.button.is-link.is-outlined:hover{background-color:#3273dc;border-color:#3273dc;color:#fff}.button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #3273dc #3273dc!important}.button.is-link.is-outlined.is-loading.is-focused::after,.button.is-link.is-outlined.is-loading.is-hovered::after,.button.is-link.is-outlined.is-loading:focus::after,.button.is-link.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-link.is-outlined[disabled],fieldset[disabled] .button.is-link.is-outlined{background-color:transparent;border-color:#3273dc;box-shadow:none;color:#3273dc}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined.is-focused,.button.is-link.is-inverted.is-outlined.is-hovered,.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined:hover{background-color:#fff;color:#3273dc}.button.is-link.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-link.is-inverted.is-outlined.is-loading:focus::after,.button.is-link.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #3273dc #3273dc!important}.button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-link.is-light{background-color:#eef3fc;color:#2160c4}.button.is-link.is-light.is-hovered,.button.is-link.is-light:hover{background-color:#e3ecfa;border-color:transparent;color:#2160c4}.button.is-link.is-light.is-active,.button.is-link.is-light:active{background-color:#d8e4f8;border-color:transparent;color:#2160c4}.button.is-info{background-color:#3298dc;border-color:transparent;color:#fff}.button.is-info.is-hovered,.button.is-info:hover{background-color:#2793da;border-color:transparent;color:#fff}.button.is-info.is-focused,.button.is-info:focus{border-color:transparent;color:#fff}.button.is-info.is-focused:not(:active),.button.is-info:focus:not(:active){box-shadow:0 0 0 .125em rgba(50,152,220,.25)}.button.is-info.is-active,.button.is-info:active{background-color:#238cd1;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#3298dc;border-color:transparent;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#3298dc}.button.is-info.is-inverted.is-hovered,.button.is-info.is-inverted:hover{background-color:#f2f2f2}.button.is-info.is-inverted[disabled],fieldset[disabled] .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#3298dc}.button.is-info.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-info.is-outlined{background-color:transparent;border-color:#3298dc;color:#3298dc}.button.is-info.is-outlined.is-focused,.button.is-info.is-outlined.is-hovered,.button.is-info.is-outlined:focus,.button.is-info.is-outlined:hover{background-color:#3298dc;border-color:#3298dc;color:#fff}.button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #3298dc #3298dc!important}.button.is-info.is-outlined.is-loading.is-focused::after,.button.is-info.is-outlined.is-loading.is-hovered::after,.button.is-info.is-outlined.is-loading:focus::after,.button.is-info.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-info.is-outlined[disabled],fieldset[disabled] .button.is-info.is-outlined{background-color:transparent;border-color:#3298dc;box-shadow:none;color:#3298dc}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined.is-focused,.button.is-info.is-inverted.is-outlined.is-hovered,.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined:hover{background-color:#fff;color:#3298dc}.button.is-info.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-info.is-inverted.is-outlined.is-loading:focus::after,.button.is-info.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #3298dc #3298dc!important}.button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-info.is-light{background-color:#eef6fc;color:#1d72aa}.button.is-info.is-light.is-hovered,.button.is-info.is-light:hover{background-color:#e3f1fa;border-color:transparent;color:#1d72aa}.button.is-info.is-light.is-active,.button.is-info.is-light:active{background-color:#d8ebf8;border-color:transparent;color:#1d72aa}.button.is-success{background-color:#48c774;border-color:transparent;color:#fff}.button.is-success.is-hovered,.button.is-success:hover{background-color:#3ec46d;border-color:transparent;color:#fff}.button.is-success.is-focused,.button.is-success:focus{border-color:transparent;color:#fff}.button.is-success.is-focused:not(:active),.button.is-success:focus:not(:active){box-shadow:0 0 0 .125em rgba(72,199,116,.25)}.button.is-success.is-active,.button.is-success:active{background-color:#3abb67;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#48c774;border-color:transparent;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#48c774}.button.is-success.is-inverted.is-hovered,.button.is-success.is-inverted:hover{background-color:#f2f2f2}.button.is-success.is-inverted[disabled],fieldset[disabled] .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#48c774}.button.is-success.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-success.is-outlined{background-color:transparent;border-color:#48c774;color:#48c774}.button.is-success.is-outlined.is-focused,.button.is-success.is-outlined.is-hovered,.button.is-success.is-outlined:focus,.button.is-success.is-outlined:hover{background-color:#48c774;border-color:#48c774;color:#fff}.button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #48c774 #48c774!important}.button.is-success.is-outlined.is-loading.is-focused::after,.button.is-success.is-outlined.is-loading.is-hovered::after,.button.is-success.is-outlined.is-loading:focus::after,.button.is-success.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-success.is-outlined[disabled],fieldset[disabled] .button.is-success.is-outlined{background-color:transparent;border-color:#48c774;box-shadow:none;color:#48c774}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined.is-focused,.button.is-success.is-inverted.is-outlined.is-hovered,.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined:hover{background-color:#fff;color:#48c774}.button.is-success.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-success.is-inverted.is-outlined.is-loading:focus::after,.button.is-success.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #48c774 #48c774!important}.button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-success.is-light{background-color:#effaf3;color:#257942}.button.is-success.is-light.is-hovered,.button.is-success.is-light:hover{background-color:#e6f7ec;border-color:transparent;color:#257942}.button.is-success.is-light.is-active,.button.is-success.is-light:active{background-color:#dcf4e4;border-color:transparent;color:#257942}.button.is-warning{background-color:#ffdd57;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning.is-hovered,.button.is-warning:hover{background-color:#ffdb4a;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning.is-focused,.button.is-warning:focus{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning.is-focused:not(:active),.button.is-warning:focus:not(:active){box-shadow:0 0 0 .125em rgba(255,221,87,.25)}.button.is-warning.is-active,.button.is-warning:active{background-color:#ffd83d;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#ffdd57;border-color:transparent;box-shadow:none}.button.is-warning.is-inverted{background-color:rgba(0,0,0,.7);color:#ffdd57}.button.is-warning.is-inverted.is-hovered,.button.is-warning.is-inverted:hover{background-color:rgba(0,0,0,.7)}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:rgba(0,0,0,.7);border-color:transparent;box-shadow:none;color:#ffdd57}.button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;color:#ffdd57}.button.is-warning.is-outlined.is-focused,.button.is-warning.is-outlined.is-hovered,.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined:hover{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,.7)}.button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #ffdd57 #ffdd57!important}.button.is-warning.is-outlined.is-loading.is-focused::after,.button.is-warning.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-outlined.is-loading:focus::after,.button.is-warning.is-outlined.is-loading:hover::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;box-shadow:none;color:#ffdd57}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);color:rgba(0,0,0,.7)}.button.is-warning.is-inverted.is-outlined.is-focused,.button.is-warning.is-inverted.is-outlined.is-hovered,.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined:hover{background-color:rgba(0,0,0,.7);color:#ffdd57}.button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-inverted.is-outlined.is-loading:focus::after,.button.is-warning.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #ffdd57 #ffdd57!important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);box-shadow:none;color:rgba(0,0,0,.7)}.button.is-warning.is-light{background-color:#fffbeb;color:#947600}.button.is-warning.is-light.is-hovered,.button.is-warning.is-light:hover{background-color:#fff8de;border-color:transparent;color:#947600}.button.is-warning.is-light.is-active,.button.is-warning.is-light:active{background-color:#fff6d1;border-color:transparent;color:#947600}.button.is-danger{background-color:#f14668;border-color:transparent;color:#fff}.button.is-danger.is-hovered,.button.is-danger:hover{background-color:#f03a5f;border-color:transparent;color:#fff}.button.is-danger.is-focused,.button.is-danger:focus{border-color:transparent;color:#fff}.button.is-danger.is-focused:not(:active),.button.is-danger:focus:not(:active){box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.button.is-danger.is-active,.button.is-danger:active{background-color:#ef2e55;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#f14668;border-color:transparent;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#f14668}.button.is-danger.is-inverted.is-hovered,.button.is-danger.is-inverted:hover{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled],fieldset[disabled] .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#f14668}.button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;color:#f14668}.button.is-danger.is-outlined.is-focused,.button.is-danger.is-outlined.is-hovered,.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined:hover{background-color:#f14668;border-color:#f14668;color:#fff}.button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #f14668 #f14668!important}.button.is-danger.is-outlined.is-loading.is-focused::after,.button.is-danger.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-outlined.is-loading:focus::after,.button.is-danger.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-danger.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;box-shadow:none;color:#f14668}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined.is-focused,.button.is-danger.is-inverted.is-outlined.is-hovered,.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined:hover{background-color:#fff;color:#f14668}.button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-inverted.is-outlined.is-loading:focus::after,.button.is-danger.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #f14668 #f14668!important}.button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.button.is-danger.is-light.is-hovered,.button.is-danger.is-light:hover{background-color:#fde0e6;border-color:transparent;color:#cc0f35}.button.is-danger.is-light.is-active,.button.is-danger.is-light:active{background-color:#fcd4dc;border-color:transparent;color:#cc0f35}.button.is-small{border-radius:2px;font-size:.75rem}.button.is-normal{font-size:1rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{color:transparent!important;pointer-events:none}.button.is-loading::after{position:absolute;left:calc(50% - (1em / 2));top:calc(50% - (1em / 2));position:absolute!important}.button.is-static{background-color:#f5f5f5;border-color:#dbdbdb;color:#7a7a7a;box-shadow:none;pointer-events:none}.button.is-rounded{border-radius:290486px;padding-left:calc(1em + .25em);padding-right:calc(1em + .25em)}.buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.buttons .button{margin-bottom:.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}.buttons:last-child{margin-bottom:-.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){border-radius:2px;font-size:.75rem}.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button.is-hovered,.buttons.has-addons .button:hover{z-index:2}.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-focused,.buttons.has-addons .button.is-selected,.buttons.has-addons .button:active,.buttons.has-addons .button:focus{z-index:3}.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button.is-selected:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button:focus:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.buttons.is-right{justify-content:flex-end}.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}.container.is-fluid{max-width:none!important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width:1024px){.container{max-width:960px}}@media screen and (max-width:1215px){.container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width:1407px){.container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width:1216px){.container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width:1408px){.container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.content li+li{margin-top:.25em}.content blockquote:not(:last-child),.content dl:not(:last-child),.content ol:not(:last-child),.content p:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child),.content ul:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:#363636;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:.8em}.content h5{font-size:1.125em;margin-bottom:.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style-position:outside;margin-left:2em;margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ol:not([type]).is-lower-alpha{list-style-type:lower-alpha}.content ol:not([type]).is-lower-roman{list-style-type:lower-roman}.content ol:not([type]).is-upper-alpha{list-style-type:upper-alpha}.content ol:not([type]).is-upper-roman{list-style-type:upper-roman}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content figure figcaption{font-style:italic}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:1.25em 1.5em;white-space:pre;word-wrap:normal}.content sub,.content sup{font-size:75%}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.content table th{color:#363636}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:0 0 2px;color:#363636}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#363636}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small{font-size:.75rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:290486px}.image.is-fullwidth{width:100%}.image.is-16by9 .has-ratio,.image.is-16by9 img,.image.is-1by1 .has-ratio,.image.is-1by1 img,.image.is-1by2 .has-ratio,.image.is-1by2 img,.image.is-1by3 .has-ratio,.image.is-1by3 img,.image.is-2by1 .has-ratio,.image.is-2by1 img,.image.is-2by3 .has-ratio,.image.is-2by3 img,.image.is-3by1 .has-ratio,.image.is-3by1 img,.image.is-3by2 .has-ratio,.image.is-3by2 img,.image.is-3by4 .has-ratio,.image.is-3by4 img,.image.is-3by5 .has-ratio,.image.is-3by5 img,.image.is-4by3 .has-ratio,.image.is-4by3 img,.image.is-4by5 .has-ratio,.image.is-4by5 img,.image.is-5by3 .has-ratio,.image.is-5by3 img,.image.is-5by4 .has-ratio,.image.is-5by4 img,.image.is-9by16 .has-ratio,.image.is-9by16 img,.image.is-square .has-ratio,.image.is-square img{height:100%;width:100%}.image.is-1by1,.image.is-square{padding-top:100%}.image.is-5by4{padding-top:80%}.image.is-4by3{padding-top:75%}.image.is-3by2{padding-top:66.6666%}.image.is-5by3{padding-top:60%}.image.is-16by9{padding-top:56.25%}.image.is-2by1{padding-top:50%}.image.is-3by1{padding-top:33.3333%}.image.is-4by5{padding-top:125%}.image.is-3by4{padding-top:133.3333%}.image.is-2by3{padding-top:150%}.image.is-3by5{padding-top:166.6666%}.image.is-9by16{padding-top:177.7777%}.image.is-1by2{padding-top:200%}.image.is-1by3{padding-top:300%}.image.is-16x16{height:16px;width:16px}.image.is-24x24{height:24px;width:24px}.image.is-32x32{height:32px;width:32px}.image.is-48x48{height:48px;width:48px}.image.is-64x64{height:64px;width:64px}.image.is-96x96{height:96px;width:96px}.image.is-128x128{height:128px;width:128px}.notification{background-color:#f5f5f5;border-radius:4px;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#fff}.notification pre code{background:0 0}.notification>.delete{right:.5rem;position:absolute;top:.5rem}.notification .content,.notification .subtitle,.notification .title{color:currentColor}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.notification.is-dark{background-color:#363636;color:#fff}.notification.is-primary{background-color:#00d1b2;color:#fff}.notification.is-primary.is-light{background-color:#ebfffc;color:#00947e}.notification.is-link{background-color:#3273dc;color:#fff}.notification.is-link.is-light{background-color:#eef3fc;color:#2160c4}.notification.is-info{background-color:#3298dc;color:#fff}.notification.is-info.is-light{background-color:#eef6fc;color:#1d72aa}.notification.is-success{background-color:#48c774;color:#fff}.notification.is-success.is-light{background-color:#effaf3;color:#257942}.notification.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.notification.is-warning.is-light{background-color:#fffbeb;color:#947600}.notification.is-danger{background-color:#f14668;color:#fff}.notification.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:290486px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#ededed}.progress::-webkit-progress-value{background-color:#4a4a4a}.progress::-moz-progress-bar{background-color:#4a4a4a}.progress::-ms-fill{background-color:#4a4a4a;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-white:indeterminate{background-image:linear-gradient(to right,#fff 30%,#ededed 30%)}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-black::-ms-fill{background-color:#0a0a0a}.progress.is-black:indeterminate{background-image:linear-gradient(to right,#0a0a0a 30%,#ededed 30%)}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(to right,#f5f5f5 30%,#ededed 30%)}.progress.is-dark::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill{background-color:#363636}.progress.is-dark:indeterminate{background-image:linear-gradient(to right,#363636 30%,#ededed 30%)}.progress.is-primary::-webkit-progress-value{background-color:#00d1b2}.progress.is-primary::-moz-progress-bar{background-color:#00d1b2}.progress.is-primary::-ms-fill{background-color:#00d1b2}.progress.is-primary:indeterminate{background-image:linear-gradient(to right,#00d1b2 30%,#ededed 30%)}.progress.is-link::-webkit-progress-value{background-color:#3273dc}.progress.is-link::-moz-progress-bar{background-color:#3273dc}.progress.is-link::-ms-fill{background-color:#3273dc}.progress.is-link:indeterminate{background-image:linear-gradient(to right,#3273dc 30%,#ededed 30%)}.progress.is-info::-webkit-progress-value{background-color:#3298dc}.progress.is-info::-moz-progress-bar{background-color:#3298dc}.progress.is-info::-ms-fill{background-color:#3298dc}.progress.is-info:indeterminate{background-image:linear-gradient(to right,#3298dc 30%,#ededed 30%)}.progress.is-success::-webkit-progress-value{background-color:#48c774}.progress.is-success::-moz-progress-bar{background-color:#48c774}.progress.is-success::-ms-fill{background-color:#48c774}.progress.is-success:indeterminate{background-image:linear-gradient(to right,#48c774 30%,#ededed 30%)}.progress.is-warning::-webkit-progress-value{background-color:#ffdd57}.progress.is-warning::-moz-progress-bar{background-color:#ffdd57}.progress.is-warning::-ms-fill{background-color:#ffdd57}.progress.is-warning:indeterminate{background-image:linear-gradient(to right,#ffdd57 30%,#ededed 30%)}.progress.is-danger::-webkit-progress-value{background-color:#f14668}.progress.is-danger::-moz-progress-bar{background-color:#f14668}.progress.is-danger::-ms-fill{background-color:#f14668}.progress.is-danger:indeterminate{background-image:linear-gradient(to right,#f14668 30%,#ededed 30%)}.progress:indeterminate{-webkit-animation-duration:1.5s;animation-duration:1.5s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:moveIndeterminate;animation-name:moveIndeterminate;-webkit-animation-timing-function:linear;animation-timing-function:linear;background-color:#ededed;background-image:linear-gradient(to right,#4a4a4a 30%,#ededed 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@-webkit-keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}.table{background-color:#fff;color:#363636}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#fff}.table td.is-primary,.table th.is-primary{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.table td.is-link,.table th.is-link{background-color:#3273dc;border-color:#3273dc;color:#fff}.table td.is-info,.table th.is-info{background-color:#3298dc;border-color:#3298dc;color:#fff}.table td.is-success,.table th.is-success{background-color:#48c774;border-color:#48c774;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,.7)}.table td.is-danger,.table th.is-danger{background-color:#f14668;border-color:#f14668;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#00d1b2;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table td.is-vcentered,.table th.is-vcentered{vertical-align:middle}.table th{color:#363636}.table th:not([align]){text-align:inherit}.table tr.is-selected{background-color:#00d1b2;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead{background-color:transparent}.table thead td,.table thead th{border-width:0 0 2px;color:#363636}.table tfoot{background-color:transparent}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#363636}.table tbody{background-color:transparent}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#f5f5f5}.table.is-narrow td,.table.is-narrow th{padding:.25em .5em}.table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#fafafa}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.tags .tag{margin-bottom:.5rem}.tags .tag:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.are-medium .tag:not(.is-normal):not(.is-large){font-size:1rem}.tags.are-large .tag:not(.is-normal):not(.is-medium){font-size:1.25rem}.tags.is-centered{justify-content:center}.tags.is-centered .tag{margin-right:.25rem;margin-left:.25rem}.tags.is-right{justify-content:flex-end}.tags.is-right .tag:not(:first-child){margin-left:.5rem}.tags.is-right .tag:not(:last-child){margin-right:0}.tags.has-addons .tag{margin-right:0}.tags.has-addons .tag:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.tags.has-addons .tag:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tag:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#4a4a4a;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:.75em;padding-right:.75em;white-space:nowrap}.tag:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}.tag:not(body).is-white{background-color:#fff;color:#0a0a0a}.tag:not(body).is-black{background-color:#0a0a0a;color:#fff}.tag:not(body).is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.tag:not(body).is-dark{background-color:#363636;color:#fff}.tag:not(body).is-primary{background-color:#00d1b2;color:#fff}.tag:not(body).is-primary.is-light{background-color:#ebfffc;color:#00947e}.tag:not(body).is-link{background-color:#3273dc;color:#fff}.tag:not(body).is-link.is-light{background-color:#eef3fc;color:#2160c4}.tag:not(body).is-info{background-color:#3298dc;color:#fff}.tag:not(body).is-info.is-light{background-color:#eef6fc;color:#1d72aa}.tag:not(body).is-success{background-color:#48c774;color:#fff}.tag:not(body).is-success.is-light{background-color:#effaf3;color:#257942}.tag:not(body).is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.tag:not(body).is-warning.is-light{background-color:#fffbeb;color:#947600}.tag:not(body).is-danger{background-color:#f14668;color:#fff}.tag:not(body).is-danger.is-light{background-color:#feecf0;color:#cc0f35}.tag:not(body).is-normal{font-size:.75rem}.tag:not(body).is-medium{font-size:1rem}.tag:not(body).is-large{font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}.tag:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}.tag:not(body).is-delete{margin-left:1px;padding:0;position:relative;width:2em}.tag:not(body).is-delete::after,.tag:not(body).is-delete::before{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.tag:not(body).is-delete::before{height:1px;width:50%}.tag:not(body).is-delete::after{height:50%;width:1px}.tag:not(body).is-delete:focus,.tag:not(body).is-delete:hover{background-color:#e8e8e8}.tag:not(body).is-delete:active{background-color:#dbdbdb}.tag:not(body).is-rounded{border-radius:290486px}a.tag:hover{text-decoration:underline}.subtitle,.title{word-break:break-word}.subtitle em,.subtitle span,.title em,.title span{font-weight:inherit}.subtitle sub,.title sub{font-size:.75em}.subtitle sup,.title sup{font-size:.75em}.subtitle .tag,.title .tag{vertical-align:middle}.title{color:#363636;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title+.highlight{margin-top:-.75rem}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#363636;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.highlight{font-weight:400;max-width:100%;overflow:hidden;padding:0}.highlight pre{overflow:auto;max-width:100%}.number{align-items:center;background-color:#f5f5f5;border-radius:290486px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:.25rem .5rem;text-align:center;vertical-align:top}.input,.select select,.textarea{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#363636}.input::-moz-placeholder,.select select::-moz-placeholder,.textarea::-moz-placeholder{color:rgba(54,54,54,.3)}.input::-webkit-input-placeholder,.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:rgba(54,54,54,.3)}.input:-moz-placeholder,.select select:-moz-placeholder,.textarea:-moz-placeholder{color:rgba(54,54,54,.3)}.input:-ms-input-placeholder,.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:rgba(54,54,54,.3)}.input:hover,.is-hovered.input,.is-hovered.textarea,.select select.is-hovered,.select select:hover,.textarea:hover{border-color:#b5b5b5}.input:active,.input:focus,.is-active.input,.is-active.textarea,.is-focused.input,.is-focused.textarea,.select select.is-active,.select select.is-focused,.select select:active,.select select:focus,.textarea:active,.textarea:focus{border-color:#3273dc;box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.input[disabled],.select fieldset[disabled] select,.select select[disabled],.textarea[disabled],fieldset[disabled] .input,fieldset[disabled] .select select,fieldset[disabled] .textarea{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#7a7a7a}.input[disabled]::-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,.select select[disabled]::-moz-placeholder,.textarea[disabled]::-moz-placeholder,fieldset[disabled] .input::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder{color:rgba(122,122,122,.3)}.input[disabled]::-webkit-input-placeholder,.select fieldset[disabled] select::-webkit-input-placeholder,.select select[disabled]::-webkit-input-placeholder,.textarea[disabled]::-webkit-input-placeholder,fieldset[disabled] .input::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,fieldset[disabled] .textarea::-webkit-input-placeholder{color:rgba(122,122,122,.3)}.input[disabled]:-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,.select select[disabled]:-moz-placeholder,.textarea[disabled]:-moz-placeholder,fieldset[disabled] .input:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder{color:rgba(122,122,122,.3)}.input[disabled]:-ms-input-placeholder,.select fieldset[disabled] select:-ms-input-placeholder,.select select[disabled]:-ms-input-placeholder,.textarea[disabled]:-ms-input-placeholder,fieldset[disabled] .input:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,fieldset[disabled] .textarea:-ms-input-placeholder{color:rgba(122,122,122,.3)}.input,.textarea{box-shadow:inset 0 .0625em .125em rgba(10,10,10,.05);max-width:100%;width:100%}.input[readonly],.textarea[readonly]{box-shadow:none}.is-white.input,.is-white.textarea{border-color:#fff}.is-white.input:active,.is-white.input:focus,.is-white.is-active.input,.is-white.is-active.textarea,.is-white.is-focused.input,.is-white.is-focused.textarea,.is-white.textarea:active,.is-white.textarea:focus{box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.is-black.input,.is-black.textarea{border-color:#0a0a0a}.is-black.input:active,.is-black.input:focus,.is-black.is-active.input,.is-black.is-active.textarea,.is-black.is-focused.input,.is-black.is-focused.textarea,.is-black.textarea:active,.is-black.textarea:focus{box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.is-light.input,.is-light.textarea{border-color:#f5f5f5}.is-light.input:active,.is-light.input:focus,.is-light.is-active.input,.is-light.is-active.textarea,.is-light.is-focused.input,.is-light.is-focused.textarea,.is-light.textarea:active,.is-light.textarea:focus{box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.is-dark.input,.is-dark.textarea{border-color:#363636}.is-dark.input:active,.is-dark.input:focus,.is-dark.is-active.input,.is-dark.is-active.textarea,.is-dark.is-focused.input,.is-dark.is-focused.textarea,.is-dark.textarea:active,.is-dark.textarea:focus{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.is-primary.input,.is-primary.textarea{border-color:#00d1b2}.is-primary.input:active,.is-primary.input:focus,.is-primary.is-active.input,.is-primary.is-active.textarea,.is-primary.is-focused.input,.is-primary.is-focused.textarea,.is-primary.textarea:active,.is-primary.textarea:focus{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.is-link.input,.is-link.textarea{border-color:#3273dc}.is-link.input:active,.is-link.input:focus,.is-link.is-active.input,.is-link.is-active.textarea,.is-link.is-focused.input,.is-link.is-focused.textarea,.is-link.textarea:active,.is-link.textarea:focus{box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.is-info.input,.is-info.textarea{border-color:#3298dc}.is-info.input:active,.is-info.input:focus,.is-info.is-active.input,.is-info.is-active.textarea,.is-info.is-focused.input,.is-info.is-focused.textarea,.is-info.textarea:active,.is-info.textarea:focus{box-shadow:0 0 0 .125em rgba(50,152,220,.25)}.is-success.input,.is-success.textarea{border-color:#48c774}.is-success.input:active,.is-success.input:focus,.is-success.is-active.input,.is-success.is-active.textarea,.is-success.is-focused.input,.is-success.is-focused.textarea,.is-success.textarea:active,.is-success.textarea:focus{box-shadow:0 0 0 .125em rgba(72,199,116,.25)}.is-warning.input,.is-warning.textarea{border-color:#ffdd57}.is-warning.input:active,.is-warning.input:focus,.is-warning.is-active.input,.is-warning.is-active.textarea,.is-warning.is-focused.input,.is-warning.is-focused.textarea,.is-warning.textarea:active,.is-warning.textarea:focus{box-shadow:0 0 0 .125em rgba(255,221,87,.25)}.is-danger.input,.is-danger.textarea{border-color:#f14668}.is-danger.input:active,.is-danger.input:focus,.is-danger.is-active.input,.is-danger.is-active.textarea,.is-danger.is-focused.input,.is-danger.is-focused.textarea,.is-danger.textarea:active,.is-danger.textarea:focus{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.is-small.input,.is-small.textarea{border-radius:2px;font-size:.75rem}.is-medium.input,.is-medium.textarea{font-size:1.25rem}.is-large.input,.is-large.textarea{font-size:1.5rem}.is-fullwidth.input,.is-fullwidth.textarea{display:block;width:100%}.is-inline.input,.is-inline.textarea{display:inline;width:auto}.input.is-rounded{border-radius:290486px;padding-left:calc(calc(.75em - 1px) + .375em);padding-right:calc(calc(.75em - 1px) + .375em)}.input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.textarea[rows]{height:initial}.textarea.has-fixed-size{resize:none}.checkbox,.radio{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.checkbox input,.radio input{cursor:pointer}.checkbox:hover,.radio:hover{color:#363636}.checkbox input[disabled],.checkbox[disabled],.radio input[disabled],.radio[disabled],fieldset[disabled] .checkbox,fieldset[disabled] .radio{color:#7a7a7a;cursor:not-allowed}.radio+.radio{margin-left:.5em}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.5em}.select:not(.is-multiple):not(.is-loading)::after{border-color:#3273dc;right:1.125em;z-index:4}.select.is-rounded select{border-radius:290486px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:0}.select select::-ms-expand{display:none}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#f5f5f5}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:.5em 1em}.select:not(.is-multiple):not(.is-loading):hover::after{border-color:#363636}.select.is-white:not(:hover)::after{border-color:#fff}.select.is-white select{border-color:#fff}.select.is-white select.is-hovered,.select.is-white select:hover{border-color:#f2f2f2}.select.is-white select.is-active,.select.is-white select.is-focused,.select.is-white select:active,.select.is-white select:focus{box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.select.is-black:not(:hover)::after{border-color:#0a0a0a}.select.is-black select{border-color:#0a0a0a}.select.is-black select.is-hovered,.select.is-black select:hover{border-color:#000}.select.is-black select.is-active,.select.is-black select.is-focused,.select.is-black select:active,.select.is-black select:focus{box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.select.is-light:not(:hover)::after{border-color:#f5f5f5}.select.is-light select{border-color:#f5f5f5}.select.is-light select.is-hovered,.select.is-light select:hover{border-color:#e8e8e8}.select.is-light select.is-active,.select.is-light select.is-focused,.select.is-light select:active,.select.is-light select:focus{box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.select.is-dark:not(:hover)::after{border-color:#363636}.select.is-dark select{border-color:#363636}.select.is-dark select.is-hovered,.select.is-dark select:hover{border-color:#292929}.select.is-dark select.is-active,.select.is-dark select.is-focused,.select.is-dark select:active,.select.is-dark select:focus{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.select.is-primary:not(:hover)::after{border-color:#00d1b2}.select.is-primary select{border-color:#00d1b2}.select.is-primary select.is-hovered,.select.is-primary select:hover{border-color:#00b89c}.select.is-primary select.is-active,.select.is-primary select.is-focused,.select.is-primary select:active,.select.is-primary select:focus{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.select.is-link:not(:hover)::after{border-color:#3273dc}.select.is-link select{border-color:#3273dc}.select.is-link select.is-hovered,.select.is-link select:hover{border-color:#2366d1}.select.is-link select.is-active,.select.is-link select.is-focused,.select.is-link select:active,.select.is-link select:focus{box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.select.is-info:not(:hover)::after{border-color:#3298dc}.select.is-info select{border-color:#3298dc}.select.is-info select.is-hovered,.select.is-info select:hover{border-color:#238cd1}.select.is-info select.is-active,.select.is-info select.is-focused,.select.is-info select:active,.select.is-info select:focus{box-shadow:0 0 0 .125em rgba(50,152,220,.25)}.select.is-success:not(:hover)::after{border-color:#48c774}.select.is-success select{border-color:#48c774}.select.is-success select.is-hovered,.select.is-success select:hover{border-color:#3abb67}.select.is-success select.is-active,.select.is-success select.is-focused,.select.is-success select:active,.select.is-success select:focus{box-shadow:0 0 0 .125em rgba(72,199,116,.25)}.select.is-warning:not(:hover)::after{border-color:#ffdd57}.select.is-warning select{border-color:#ffdd57}.select.is-warning select.is-hovered,.select.is-warning select:hover{border-color:#ffd83d}.select.is-warning select.is-active,.select.is-warning select.is-focused,.select.is-warning select:active,.select.is-warning select:focus{box-shadow:0 0 0 .125em rgba(255,221,87,.25)}.select.is-danger:not(:hover)::after{border-color:#f14668}.select.is-danger select{border-color:#f14668}.select.is-danger select.is-hovered,.select.is-danger select:hover{border-color:#ef2e55}.select.is-danger select.is-active,.select.is-danger select.is-focused,.select.is-danger select:active,.select.is-danger select:focus{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.select.is-small{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled::after{border-color:#7a7a7a}.select.is-fullwidth{width:100%}.select.is-fullwidth select{width:100%}.select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:.625em;transform:none}.select.is-loading.is-small:after{font-size:.75rem}.select.is-loading.is-medium:after{font-size:1.25rem}.select.is-loading.is-large:after{font-size:1.5rem}.file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}.file.is-white.is-hovered .file-cta,.file.is-white:hover .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.file.is-white.is-focused .file-cta,.file.is-white:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,255,255,.25);color:#0a0a0a}.file.is-white.is-active .file-cta,.file.is-white:active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}.file.is-black.is-hovered .file-cta,.file.is-black:hover .file-cta{background-color:#040404;border-color:transparent;color:#fff}.file.is-black.is-focused .file-cta,.file.is-black:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(10,10,10,.25);color:#fff}.file.is-black.is-active .file-cta,.file.is-black:active .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light.is-hovered .file-cta,.file.is-light:hover .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light.is-focused .file-cta,.file.is-light:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(245,245,245,.25);color:rgba(0,0,0,.7)}.file.is-light.is-active .file-cta,.file.is-light:active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-dark .file-cta{background-color:#363636;border-color:transparent;color:#fff}.file.is-dark.is-hovered .file-cta,.file.is-dark:hover .file-cta{background-color:#2f2f2f;border-color:transparent;color:#fff}.file.is-dark.is-focused .file-cta,.file.is-dark:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(54,54,54,.25);color:#fff}.file.is-dark.is-active .file-cta,.file.is-dark:active .file-cta{background-color:#292929;border-color:transparent;color:#fff}.file.is-primary .file-cta{background-color:#00d1b2;border-color:transparent;color:#fff}.file.is-primary.is-hovered .file-cta,.file.is-primary:hover .file-cta{background-color:#00c4a7;border-color:transparent;color:#fff}.file.is-primary.is-focused .file-cta,.file.is-primary:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(0,209,178,.25);color:#fff}.file.is-primary.is-active .file-cta,.file.is-primary:active .file-cta{background-color:#00b89c;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#3273dc;border-color:transparent;color:#fff}.file.is-link.is-hovered .file-cta,.file.is-link:hover .file-cta{background-color:#276cda;border-color:transparent;color:#fff}.file.is-link.is-focused .file-cta,.file.is-link:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(50,115,220,.25);color:#fff}.file.is-link.is-active .file-cta,.file.is-link:active .file-cta{background-color:#2366d1;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#3298dc;border-color:transparent;color:#fff}.file.is-info.is-hovered .file-cta,.file.is-info:hover .file-cta{background-color:#2793da;border-color:transparent;color:#fff}.file.is-info.is-focused .file-cta,.file.is-info:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(50,152,220,.25);color:#fff}.file.is-info.is-active .file-cta,.file.is-info:active .file-cta{background-color:#238cd1;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#48c774;border-color:transparent;color:#fff}.file.is-success.is-hovered .file-cta,.file.is-success:hover .file-cta{background-color:#3ec46d;border-color:transparent;color:#fff}.file.is-success.is-focused .file-cta,.file.is-success:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(72,199,116,.25);color:#fff}.file.is-success.is-active .file-cta,.file.is-success:active .file-cta{background-color:#3abb67;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#ffdd57;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning.is-hovered .file-cta,.file.is-warning:hover .file-cta{background-color:#ffdb4a;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning.is-focused .file-cta,.file.is-warning:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,221,87,.25);color:rgba(0,0,0,.7)}.file.is-warning.is-active .file-cta,.file.is-warning:active .file-cta{background-color:#ffd83d;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-danger .file-cta{background-color:#f14668;border-color:transparent;color:#fff}.file.is-danger.is-hovered .file-cta,.file.is-danger:hover .file-cta{background-color:#f03a5f;border-color:transparent;color:#fff}.file.is-danger.is-focused .file-cta,.file.is-danger:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(241,70,104,.25);color:#fff}.file.is-danger.is-active .file-cta,.file.is-danger:active .file-cta{background-color:#ef2e55;border-color:transparent;color:#fff}.file.is-small{font-size:.75rem}.file.is-medium{font-size:1.25rem}.file.is-medium .file-icon .fa{font-size:21px}.file.is-large{font-size:1.5rem}.file.is-large .file-icon .fa{font-size:28px}.file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}.file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}.file.has-name.is-empty .file-cta{border-radius:4px}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{flex-direction:column}.file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:21px}.file.is-boxed.is-small .file-icon .fa{font-size:14px}.file.is-boxed.is-medium .file-icon .fa{font-size:28px}.file.is-boxed.is-large .file-icon .fa{font-size:35px}.file.is-boxed.has-name .file-cta{border-radius:4px 4px 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 4px 4px;border-width:0 1px 1px}.file.is-centered{justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{flex-grow:1;max-width:none}.file.is-right{justify-content:flex-end}.file.is-right .file-cta{border-radius:0 4px 4px 0}.file.is-right .file-name{border-radius:4px 0 0 4px;border-width:1px 0 1px 1px;order:-1}.file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover .file-cta{background-color:#eee;color:#363636}.file-label:hover .file-name{border-color:#d5d5d5}.file-label:active .file-cta{background-color:#e8e8e8;color:#363636}.file-label:active .file-name{border-color:#cfcfcf}.file-input{height:100%;left:0;opacity:0;outline:0;position:absolute;top:0;width:100%}.file-cta,.file-name{border-color:#dbdbdb;border-radius:4px;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:#f5f5f5;color:#4a4a4a}.file-name{border-color:#dbdbdb;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}.file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}.file-icon .fa{font-size:14px}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:.5em}.label.is-small{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#f5f5f5}.help.is-dark{color:#363636}.help.is-primary{color:#00d1b2}.help.is-link{color:#3273dc}.help.is-info{color:#3298dc}.help.is-success{color:#48c774}.help.is-warning{color:#ffdd57}.help.is-danger{color:#f14668}.field:not(:last-child){margin-bottom:.75rem}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]).is-hovered,.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .input:not([disabled]).is-hovered,.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]).is-hovered,.field.has-addons .control .select select:not([disabled]):hover{z-index:2}.field.has-addons .control .button:not([disabled]).is-active,.field.has-addons .control .button:not([disabled]).is-focused,.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .input:not([disabled]).is-active,.field.has-addons .control .input:not([disabled]).is-focused,.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control .select select:not([disabled]).is-active,.field.has-addons .control .select select:not([disabled]).is-focused,.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select:not([disabled]):focus{z-index:3}.field.has-addons .control .button:not([disabled]).is-active:hover,.field.has-addons .control .button:not([disabled]).is-focused:hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .input:not([disabled]).is-active:hover,.field.has-addons .control .input:not([disabled]).is-focused:hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control .select select:not([disabled]).is-active:hover,.field.has-addons .control .select select:not([disabled]).is-focused:hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select:not([disabled]):focus:hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.has-addons.has-addons-centered{justify-content:center}.field.has-addons.has-addons-right{justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}.field.is-grouped{display:flex;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{justify-content:center}.field.is-grouped.is-grouped-right{justify-content:flex-end}.field.is-grouped.is-grouped-multiline{flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width:769px),print{.field.is-horizontal{display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width:768px){.field-label{margin-bottom:.5rem}}@media screen and (min-width:769px),print{.field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small{font-size:.75rem;padding-top:.375em}.field-label.is-normal{padding-top:.375em}.field-label.is-medium{font-size:1.25rem;padding-top:.375em}.field-label.is-large{font-size:1.5rem;padding-top:.375em}}.field-body .field .field{margin-bottom:0}@media screen and (min-width:769px),print{.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-right:.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}.control.has-icons-left .input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:#4a4a4a}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:2.5em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right .select select{padding-right:2.5em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{position:absolute!important;right:.625em;top:.625em;z-index:4}.control.is-loading.is-small:after{font-size:.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{align-items:center;color:#3273dc;display:flex;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#363636;cursor:default;pointer-events:none}.breadcrumb li+li::before{color:#b5b5b5;content:"\0002f"}.breadcrumb ol,.breadcrumb ul{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:.5em}.breadcrumb .icon:last-child{margin-left:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{justify-content:flex-end}.breadcrumb.is-small{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li+li::before{content:"\02192"}.breadcrumb.has-bullet-separator li+li::before{content:"\02022"}.breadcrumb.has-dot-separator li+li::before{content:"\000b7"}.breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}.card{background-color:#fff;border-radius:.25rem;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);color:#4a4a4a;max-width:100%;overflow:hidden;position:relative}.card-header{background-color:transparent;align-items:stretch;box-shadow:0 .125em .25em rgba(10,10,10,.1);display:flex}.card-header-title{align-items:center;color:#363636;display:flex;flex-grow:1;font-weight:700;padding:.75rem 1rem}.card-header-title.is-centered{justify-content:center}.card-header-icon{align-items:center;cursor:pointer;display:flex;justify-content:center;padding:.75rem 1rem}.card-image{display:block;position:relative}.card-content{background-color:transparent;padding:1.5rem}.card-footer{background-color:transparent;border-top:1px solid #ededed;align-items:stretch;display:flex}.card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}.card-footer-item:not(:last-child){border-right:1px solid #ededed}.card .media:not(:last-child){margin-bottom:1.5rem}.dropdown{display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}.dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}.dropdown-content{background-color:#fff;border-radius:4px;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);padding-bottom:.5rem;padding-top:.5rem}.dropdown-item{color:#4a4a4a;display:block;font-size:.875rem;line-height:1.5;padding:.375rem 1rem;position:relative}a.dropdown-item,button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}a.dropdown-item:hover,button.dropdown-item:hover{background-color:#f5f5f5;color:#0a0a0a}a.dropdown-item.is-active,button.dropdown-item.is-active{background-color:#3273dc;color:#fff}.dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:.5rem 0}.level{align-items:center;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}.level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width:769px),print{.level{display:flex}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .subtitle,.level-item .title{margin-bottom:0}@media screen and (max-width:768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width:769px),print{.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{align-items:center;justify-content:flex-start}@media screen and (max-width:768px){.level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width:769px),print{.level-left{display:flex}}.level-right{align-items:center;justify-content:flex-end}@media screen and (min-width:769px),print{.level-right{display:flex}}.media{align-items:flex-start;display:flex;text-align:inherit}.media .content:not(:last-child){margin-bottom:.75rem}.media .media{border-top:1px solid rgba(219,219,219,.5);display:flex;padding-top:.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:.5rem}.media .media .media{padding-top:.5rem}.media .media .media+.media{margin-top:.5rem}.media+.media{border-top:1px solid rgba(219,219,219,.5);margin-top:1rem;padding-top:1rem}.media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}.media-left,.media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width:768px){.media-content{overflow-x:auto}}.menu{font-size:1rem}.menu.is-small{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#4a4a4a;display:block;padding:.5em .75em}.menu-list a:hover{background-color:#f5f5f5;color:#363636}.menu-list a.is-active{background-color:#3273dc;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#7a7a7a;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.message.is-light .message-body{border-color:#f5f5f5}.message.is-dark{background-color:#fafafa}.message.is-dark .message-header{background-color:#363636;color:#fff}.message.is-dark .message-body{border-color:#363636}.message.is-primary{background-color:#ebfffc}.message.is-primary .message-header{background-color:#00d1b2;color:#fff}.message.is-primary .message-body{border-color:#00d1b2;color:#00947e}.message.is-link{background-color:#eef3fc}.message.is-link .message-header{background-color:#3273dc;color:#fff}.message.is-link .message-body{border-color:#3273dc;color:#2160c4}.message.is-info{background-color:#eef6fc}.message.is-info .message-header{background-color:#3298dc;color:#fff}.message.is-info .message-body{border-color:#3298dc;color:#1d72aa}.message.is-success{background-color:#effaf3}.message.is-success .message-header{background-color:#48c774;color:#fff}.message.is-success .message-body{border-color:#48c774;color:#257942}.message.is-warning{background-color:#fffbeb}.message.is-warning .message-header{background-color:#ffdd57;color:rgba(0,0,0,.7)}.message.is-warning .message-body{border-color:#ffdd57;color:#947600}.message.is-danger{background-color:#feecf0}.message.is-danger .message-header{background-color:#f14668;color:#fff}.message.is-danger .message-body{border-color:#f14668;color:#cc0f35}.message-header{align-items:center;background-color:#4a4a4a;border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:.75em 1em;position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:#dbdbdb;border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:#4a4a4a;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:transparent}.modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}.modal.is-active{display:flex}.modal-background{background-color:rgba(10,10,10,.86)}.modal-card,.modal-content{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width:769px){.modal-card,.modal-content{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{background:0 0;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}.modal-card-foot,.modal-card-head{align-items:center;background-color:#f5f5f5;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:6px;border-top-right-radius:6px}.modal-card-title{color:#363636;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:.5em}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link,.navbar.is-white .navbar-brand>.navbar-item{color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link.is-active,.navbar.is-white .navbar-brand .navbar-link:focus,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand>a.navbar-item:focus,.navbar.is-white .navbar-brand>a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width:1024px){.navbar.is-white .navbar-end .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-start>.navbar-item{color:#0a0a0a}.navbar.is-white .navbar-end .navbar-link.is-active,.navbar.is-white .navbar-end .navbar-link:focus,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end>a.navbar-item:focus,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-start .navbar-link:focus,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start>a.navbar-item:focus,.navbar.is-white .navbar-start>a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-end .navbar-link::after,.navbar.is-white .navbar-start .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand .navbar-link,.navbar.is-black .navbar-brand>.navbar-item{color:#fff}.navbar.is-black .navbar-brand .navbar-link.is-active,.navbar.is-black .navbar-brand .navbar-link:focus,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand>a.navbar-item:focus,.navbar.is-black .navbar-brand>a.navbar-item:hover{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-black .navbar-end .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-start>.navbar-item{color:#fff}.navbar.is-black .navbar-end .navbar-link.is-active,.navbar.is-black .navbar-end .navbar-link:focus,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end>a.navbar-item:focus,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-start .navbar-link:focus,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start>a.navbar-item:focus,.navbar.is-black .navbar-start>a.navbar-item:hover{background-color:#000;color:#fff}.navbar.is-black .navbar-end .navbar-link::after,.navbar.is-black .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link,.navbar.is-light .navbar-brand>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width:1024px){.navbar.is-light .navbar-end .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-start>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-end .navbar-link.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-end .navbar-link::after,.navbar.is-light .navbar-start .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,.7)}}.navbar.is-dark{background-color:#363636;color:#fff}.navbar.is-dark .navbar-brand .navbar-link,.navbar.is-dark .navbar-brand>.navbar-item{color:#fff}.navbar.is-dark .navbar-brand .navbar-link.is-active,.navbar.is-dark .navbar-brand .navbar-link:focus,.navbar.is-dark .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand>a.navbar-item:focus,.navbar.is-dark .navbar-brand>a.navbar-item:hover{background-color:#292929;color:#fff}.navbar.is-dark .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-dark .navbar-end .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.navbar.is-dark .navbar-start>.navbar-item{color:#fff}.navbar.is-dark .navbar-end .navbar-link.is-active,.navbar.is-dark .navbar-end .navbar-link:focus,.navbar.is-dark .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end>a.navbar-item:focus,.navbar.is-dark .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-start .navbar-link:focus,.navbar.is-dark .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start>a.navbar-item:focus,.navbar.is-dark .navbar-start>a.navbar-item:hover{background-color:#292929;color:#fff}.navbar.is-dark .navbar-end .navbar-link::after,.navbar.is-dark .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link{background-color:#292929;color:#fff}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#fff}}.navbar.is-primary{background-color:#00d1b2;color:#fff}.navbar.is-primary .navbar-brand .navbar-link,.navbar.is-primary .navbar-brand>.navbar-item{color:#fff}.navbar.is-primary .navbar-brand .navbar-link.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-primary .navbar-end .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.navbar.is-primary .navbar-start>.navbar-item{color:#fff}.navbar.is-primary .navbar-end .navbar-link.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-end .navbar-link::after,.navbar.is-primary .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active{background-color:#00d1b2;color:#fff}}.navbar.is-link{background-color:#3273dc;color:#fff}.navbar.is-link .navbar-brand .navbar-link,.navbar.is-link .navbar-brand>.navbar-item{color:#fff}.navbar.is-link .navbar-brand .navbar-link.is-active,.navbar.is-link .navbar-brand .navbar-link:focus,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover{background-color:#2366d1;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-link .navbar-end .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-start>.navbar-item{color:#fff}.navbar.is-link .navbar-end .navbar-link.is-active,.navbar.is-link .navbar-end .navbar-link:focus,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-start .navbar-link:focus,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover{background-color:#2366d1;color:#fff}.navbar.is-link .navbar-end .navbar-link::after,.navbar.is-link .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link{background-color:#2366d1;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#3273dc;color:#fff}}.navbar.is-info{background-color:#3298dc;color:#fff}.navbar.is-info .navbar-brand .navbar-link,.navbar.is-info .navbar-brand>.navbar-item{color:#fff}.navbar.is-info .navbar-brand .navbar-link.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover{background-color:#238cd1;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-info .navbar-end .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-start>.navbar-item{color:#fff}.navbar.is-info .navbar-end .navbar-link.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover{background-color:#238cd1;color:#fff}.navbar.is-info .navbar-end .navbar-link::after,.navbar.is-info .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link{background-color:#238cd1;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#3298dc;color:#fff}}.navbar.is-success{background-color:#48c774;color:#fff}.navbar.is-success .navbar-brand .navbar-link,.navbar.is-success .navbar-brand>.navbar-item{color:#fff}.navbar.is-success .navbar-brand .navbar-link.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover{background-color:#3abb67;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-success .navbar-end .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-start>.navbar-item{color:#fff}.navbar.is-success .navbar-end .navbar-link.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover{background-color:#3abb67;color:#fff}.navbar.is-success .navbar-end .navbar-link::after,.navbar.is-success .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link{background-color:#3abb67;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#48c774;color:#fff}}.navbar.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link,.navbar.is-warning .navbar-brand>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover{background-color:#ffd83d;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width:1024px){.navbar.is-warning .navbar-end .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-start>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-end .navbar-link.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover{background-color:#ffd83d;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-end .navbar-link::after,.navbar.is-warning .navbar-start .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link{background-color:#ffd83d;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffdd57;color:rgba(0,0,0,.7)}}.navbar.is-danger{background-color:#f14668;color:#fff}.navbar.is-danger .navbar-brand .navbar-link,.navbar.is-danger .navbar-brand>.navbar-item{color:#fff}.navbar.is-danger .navbar-brand .navbar-link.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-danger .navbar-end .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-start>.navbar-item{color:#fff}.navbar.is-danger .navbar-end .navbar-link.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-end .navbar-link::after,.navbar.is-danger .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#f14668;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #f5f5f5}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #f5f5f5}.navbar.is-fixed-top{top:0}body.has-navbar-fixed-top,html.has-navbar-fixed-top{padding-top:3.25rem}body.has-navbar-fixed-bottom,html.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{color:#4a4a4a;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color,opacity,transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:nth-child(1){top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,.05)}.navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#4a4a4a;display:block;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-.25rem;margin-right:-.25rem}.navbar-link,a.navbar-item{cursor:pointer}.navbar-link.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,a.navbar-item.is-active,a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover{background-color:#fafafa;color:#3273dc}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:transparent;border-bottom-color:#3273dc}.navbar-item.is-tab.is-active{background-color:transparent;border-bottom-color:#3273dc;border-bottom-style:solid;border-bottom-width:3px;color:#3273dc;padding-bottom:calc(.5rem - 3px)}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless)::after{border-color:#3273dc;margin-top:-.375em;right:1.125em}.navbar-dropdown{font-size:.875rem;padding-bottom:.5rem;padding-top:.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#f5f5f5;border:none;display:none;height:2px;margin:.5rem 0}@media screen and (max-width:1023px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link::after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px rgba(10,10,10,.1);padding:.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}body.has-navbar-fixed-top-touch,html.has-navbar-fixed-top-touch{padding-top:3.25rem}body.has-navbar-fixed-bottom-touch,html.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width:1024px){.navbar,.navbar-end,.navbar-menu,.navbar-start{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-spaced{padding:1rem 2rem}.navbar.is-spaced .navbar-end,.navbar.is-spaced .navbar-start{align-items:center}.navbar.is-spaced .navbar-link,.navbar.is-spaced a.navbar-item{border-radius:4px}.navbar.is-transparent .navbar-link.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover{background-color:transparent!important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent!important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#3273dc}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(.25em,-.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:2px solid #dbdbdb;border-radius:6px 6px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid #dbdbdb;box-shadow:0 8px 8px rgba(10,10,10,.1);display:none;font-size:.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#3273dc}.navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-dropdown{border-radius:6px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity,transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.container>.navbar .navbar-brand,.navbar>.container .navbar-brand{margin-left:-.75rem}.container>.navbar .navbar-menu,.navbar>.container .navbar-menu{margin-right:-.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-desktop{top:0}body.has-navbar-fixed-top-desktop,html.has-navbar-fixed-top-desktop{padding-top:3.25rem}body.has-navbar-fixed-bottom-desktop,html.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}body.has-spaced-navbar-fixed-top,html.has-spaced-navbar-fixed-top{padding-top:5.25rem}body.has-spaced-navbar-fixed-bottom,html.has-spaced-navbar-fixed-bottom{padding-bottom:5.25rem}.navbar-link.is-active,a.navbar-item.is-active{color:#0a0a0a}.navbar-link.is-active:not(:focus):not(:hover),a.navbar-item.is-active:not(:focus):not(:hover){background-color:transparent}.navbar-item.has-dropdown.is-active .navbar-link,.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link{background-color:#fafafa}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 3.25rem)}.pagination{font-size:1rem;margin:-.25rem}.pagination.is-small{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-next,.pagination.is-rounded .pagination-previous{padding-left:1em;padding-right:1em;border-radius:290486px}.pagination.is-rounded .pagination-link{border-radius:290486px}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}.pagination-link,.pagination-next,.pagination-previous{border-color:#dbdbdb;color:#363636;min-width:2.5em}.pagination-link:hover,.pagination-next:hover,.pagination-previous:hover{border-color:#b5b5b5;color:#363636}.pagination-link:focus,.pagination-next:focus,.pagination-previous:focus{border-color:#3273dc}.pagination-link:active,.pagination-next:active,.pagination-previous:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2)}.pagination-link[disabled],.pagination-next[disabled],.pagination-previous[disabled]{background-color:#dbdbdb;border-color:#dbdbdb;box-shadow:none;color:#7a7a7a;opacity:.5}.pagination-next,.pagination-previous{padding-left:.75em;padding-right:.75em;white-space:nowrap}.pagination-link.is-current{background-color:#3273dc;border-color:#3273dc;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{flex-wrap:wrap}@media screen and (max-width:768px){.pagination{flex-wrap:wrap}.pagination-next,.pagination-previous{flex-grow:1;flex-shrink:1}.pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width:769px),print{.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-previous{order:2}.pagination-next{order:3}.pagination{justify-content:space-between}.pagination.is-centered .pagination-previous{order:1}.pagination.is-centered .pagination-list{justify-content:center;order:2}.pagination.is-centered .pagination-next{order:3}.pagination.is-right .pagination-previous{order:1}.pagination.is-right .pagination-next{order:2}.pagination.is-right .pagination-list{justify-content:flex-end;order:3}}.panel{border-radius:6px;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}.panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}.panel.is-white .panel-block.is-active .panel-icon{color:#fff}.panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}.panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}.panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}.panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}.panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}.panel.is-dark .panel-heading{background-color:#363636;color:#fff}.panel.is-dark .panel-tabs a.is-active{border-bottom-color:#363636}.panel.is-dark .panel-block.is-active .panel-icon{color:#363636}.panel.is-primary .panel-heading{background-color:#00d1b2;color:#fff}.panel.is-primary .panel-tabs a.is-active{border-bottom-color:#00d1b2}.panel.is-primary .panel-block.is-active .panel-icon{color:#00d1b2}.panel.is-link .panel-heading{background-color:#3273dc;color:#fff}.panel.is-link .panel-tabs a.is-active{border-bottom-color:#3273dc}.panel.is-link .panel-block.is-active .panel-icon{color:#3273dc}.panel.is-info .panel-heading{background-color:#3298dc;color:#fff}.panel.is-info .panel-tabs a.is-active{border-bottom-color:#3298dc}.panel.is-info .panel-block.is-active .panel-icon{color:#3298dc}.panel.is-success .panel-heading{background-color:#48c774;color:#fff}.panel.is-success .panel-tabs a.is-active{border-bottom-color:#48c774}.panel.is-success .panel-block.is-active .panel-icon{color:#48c774}.panel.is-warning .panel-heading{background-color:#ffdd57;color:rgba(0,0,0,.7)}.panel.is-warning .panel-tabs a.is-active{border-bottom-color:#ffdd57}.panel.is-warning .panel-block.is-active .panel-icon{color:#ffdd57}.panel.is-danger .panel-heading{background-color:#f14668;color:#fff}.panel.is-danger .panel-tabs a.is-active{border-bottom-color:#f14668}.panel.is-danger .panel-block.is-active .panel-icon{color:#f14668}.panel-block:not(:last-child),.panel-tabs:not(:last-child){border-bottom:1px solid #ededed}.panel-heading{background-color:#ededed;border-radius:6px 6px 0 0;color:#363636;font-size:1.25em;font-weight:700;line-height:1.25;padding:.75em 1em}.panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#4a4a4a}.panel-list a:hover{color:#3273dc}.panel-block{align-items:center;color:#363636;display:flex;justify-content:flex-start;padding:.5em .75em}.panel-block input[type=checkbox]{margin-right:.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{flex-wrap:wrap}.panel-block.is-active{border-left-color:#3273dc;color:#363636}.panel-block.is-active .panel-icon{color:#3273dc}.panel-block:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#7a7a7a;margin-right:.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;color:#4a4a4a;display:flex;justify-content:center;margin-bottom:-1px;padding:.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#363636;color:#363636}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#3273dc;color:#3273dc}.tabs ul{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-left{padding-right:.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:.75em;padding-right:.75em}.tabs ul.is-right{justify-content:flex-end;padding-left:.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-right ul{justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:transparent!important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-toggle a{border-color:#dbdbdb;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabs.is-toggle li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.tabs.is-toggle li.is-active a{background-color:#3273dc;border-color:#3273dc;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:290486px;border-top-left-radius:290486px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:290486px;border-top-right-radius:290486px;padding-right:1.25em}.tabs.is-small{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{flex:none}.columns.is-mobile>.column.is-full{flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{flex:none;width:50%}.columns.is-mobile>.column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>.column.is-0{flex:none;width:0%}.columns.is-mobile>.column.is-offset-0{margin-left:0}.columns.is-mobile>.column.is-1{flex:none;width:8.33333%}.columns.is-mobile>.column.is-offset-1{margin-left:8.33333%}.columns.is-mobile>.column.is-2{flex:none;width:16.66667%}.columns.is-mobile>.column.is-offset-2{margin-left:16.66667%}.columns.is-mobile>.column.is-3{flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{flex:none;width:33.33333%}.columns.is-mobile>.column.is-offset-4{margin-left:33.33333%}.columns.is-mobile>.column.is-5{flex:none;width:41.66667%}.columns.is-mobile>.column.is-offset-5{margin-left:41.66667%}.columns.is-mobile>.column.is-6{flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{flex:none;width:58.33333%}.columns.is-mobile>.column.is-offset-7{margin-left:58.33333%}.columns.is-mobile>.column.is-8{flex:none;width:66.66667%}.columns.is-mobile>.column.is-offset-8{margin-left:66.66667%}.columns.is-mobile>.column.is-9{flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{flex:none;width:83.33333%}.columns.is-mobile>.column.is-offset-10{margin-left:83.33333%}.columns.is-mobile>.column.is-11{flex:none;width:91.66667%}.columns.is-mobile>.column.is-offset-11{margin-left:91.66667%}.columns.is-mobile>.column.is-12{flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width:768px){.column.is-narrow-mobile{flex:none}.column.is-full-mobile{flex:none;width:100%}.column.is-three-quarters-mobile{flex:none;width:75%}.column.is-two-thirds-mobile{flex:none;width:66.6666%}.column.is-half-mobile{flex:none;width:50%}.column.is-one-third-mobile{flex:none;width:33.3333%}.column.is-one-quarter-mobile{flex:none;width:25%}.column.is-one-fifth-mobile{flex:none;width:20%}.column.is-two-fifths-mobile{flex:none;width:40%}.column.is-three-fifths-mobile{flex:none;width:60%}.column.is-four-fifths-mobile{flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-0-mobile{flex:none;width:0%}.column.is-offset-0-mobile{margin-left:0}.column.is-1-mobile{flex:none;width:8.33333%}.column.is-offset-1-mobile{margin-left:8.33333%}.column.is-2-mobile{flex:none;width:16.66667%}.column.is-offset-2-mobile{margin-left:16.66667%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{flex:none;width:33.33333%}.column.is-offset-4-mobile{margin-left:33.33333%}.column.is-5-mobile{flex:none;width:41.66667%}.column.is-offset-5-mobile{margin-left:41.66667%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{flex:none;width:58.33333%}.column.is-offset-7-mobile{margin-left:58.33333%}.column.is-8-mobile{flex:none;width:66.66667%}.column.is-offset-8-mobile{margin-left:66.66667%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{flex:none;width:83.33333%}.column.is-offset-10-mobile{margin-left:83.33333%}.column.is-11-mobile{flex:none;width:91.66667%}.column.is-offset-11-mobile{margin-left:91.66667%}.column.is-12-mobile{flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width:769px),print{.column.is-narrow,.column.is-narrow-tablet{flex:none}.column.is-full,.column.is-full-tablet{flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-0,.column.is-0-tablet{flex:none;width:0%}.column.is-offset-0,.column.is-offset-0-tablet{margin-left:0}.column.is-1,.column.is-1-tablet{flex:none;width:8.33333%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.33333%}.column.is-2,.column.is-2-tablet{flex:none;width:16.66667%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.66667%}.column.is-3,.column.is-3-tablet{flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{flex:none;width:33.33333%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.33333%}.column.is-5,.column.is-5-tablet{flex:none;width:41.66667%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.66667%}.column.is-6,.column.is-6-tablet{flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{flex:none;width:58.33333%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.33333%}.column.is-8,.column.is-8-tablet{flex:none;width:66.66667%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.66667%}.column.is-9,.column.is-9-tablet{flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{flex:none;width:83.33333%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.33333%}.column.is-11,.column.is-11-tablet{flex:none;width:91.66667%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.66667%}.column.is-12,.column.is-12-tablet{flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width:1023px){.column.is-narrow-touch{flex:none}.column.is-full-touch{flex:none;width:100%}.column.is-three-quarters-touch{flex:none;width:75%}.column.is-two-thirds-touch{flex:none;width:66.6666%}.column.is-half-touch{flex:none;width:50%}.column.is-one-third-touch{flex:none;width:33.3333%}.column.is-one-quarter-touch{flex:none;width:25%}.column.is-one-fifth-touch{flex:none;width:20%}.column.is-two-fifths-touch{flex:none;width:40%}.column.is-three-fifths-touch{flex:none;width:60%}.column.is-four-fifths-touch{flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-0-touch{flex:none;width:0%}.column.is-offset-0-touch{margin-left:0}.column.is-1-touch{flex:none;width:8.33333%}.column.is-offset-1-touch{margin-left:8.33333%}.column.is-2-touch{flex:none;width:16.66667%}.column.is-offset-2-touch{margin-left:16.66667%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{flex:none;width:33.33333%}.column.is-offset-4-touch{margin-left:33.33333%}.column.is-5-touch{flex:none;width:41.66667%}.column.is-offset-5-touch{margin-left:41.66667%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{flex:none;width:58.33333%}.column.is-offset-7-touch{margin-left:58.33333%}.column.is-8-touch{flex:none;width:66.66667%}.column.is-offset-8-touch{margin-left:66.66667%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{flex:none;width:83.33333%}.column.is-offset-10-touch{margin-left:83.33333%}.column.is-11-touch{flex:none;width:91.66667%}.column.is-offset-11-touch{margin-left:91.66667%}.column.is-12-touch{flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width:1024px){.column.is-narrow-desktop{flex:none}.column.is-full-desktop{flex:none;width:100%}.column.is-three-quarters-desktop{flex:none;width:75%}.column.is-two-thirds-desktop{flex:none;width:66.6666%}.column.is-half-desktop{flex:none;width:50%}.column.is-one-third-desktop{flex:none;width:33.3333%}.column.is-one-quarter-desktop{flex:none;width:25%}.column.is-one-fifth-desktop{flex:none;width:20%}.column.is-two-fifths-desktop{flex:none;width:40%}.column.is-three-fifths-desktop{flex:none;width:60%}.column.is-four-fifths-desktop{flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-0-desktop{flex:none;width:0%}.column.is-offset-0-desktop{margin-left:0}.column.is-1-desktop{flex:none;width:8.33333%}.column.is-offset-1-desktop{margin-left:8.33333%}.column.is-2-desktop{flex:none;width:16.66667%}.column.is-offset-2-desktop{margin-left:16.66667%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{flex:none;width:33.33333%}.column.is-offset-4-desktop{margin-left:33.33333%}.column.is-5-desktop{flex:none;width:41.66667%}.column.is-offset-5-desktop{margin-left:41.66667%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{flex:none;width:58.33333%}.column.is-offset-7-desktop{margin-left:58.33333%}.column.is-8-desktop{flex:none;width:66.66667%}.column.is-offset-8-desktop{margin-left:66.66667%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{flex:none;width:83.33333%}.column.is-offset-10-desktop{margin-left:83.33333%}.column.is-11-desktop{flex:none;width:91.66667%}.column.is-offset-11-desktop{margin-left:91.66667%}.column.is-12-desktop{flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width:1216px){.column.is-narrow-widescreen{flex:none}.column.is-full-widescreen{flex:none;width:100%}.column.is-three-quarters-widescreen{flex:none;width:75%}.column.is-two-thirds-widescreen{flex:none;width:66.6666%}.column.is-half-widescreen{flex:none;width:50%}.column.is-one-third-widescreen{flex:none;width:33.3333%}.column.is-one-quarter-widescreen{flex:none;width:25%}.column.is-one-fifth-widescreen{flex:none;width:20%}.column.is-two-fifths-widescreen{flex:none;width:40%}.column.is-three-fifths-widescreen{flex:none;width:60%}.column.is-four-fifths-widescreen{flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-0-widescreen{flex:none;width:0%}.column.is-offset-0-widescreen{margin-left:0}.column.is-1-widescreen{flex:none;width:8.33333%}.column.is-offset-1-widescreen{margin-left:8.33333%}.column.is-2-widescreen{flex:none;width:16.66667%}.column.is-offset-2-widescreen{margin-left:16.66667%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{flex:none;width:33.33333%}.column.is-offset-4-widescreen{margin-left:33.33333%}.column.is-5-widescreen{flex:none;width:41.66667%}.column.is-offset-5-widescreen{margin-left:41.66667%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{flex:none;width:58.33333%}.column.is-offset-7-widescreen{margin-left:58.33333%}.column.is-8-widescreen{flex:none;width:66.66667%}.column.is-offset-8-widescreen{margin-left:66.66667%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{flex:none;width:83.33333%}.column.is-offset-10-widescreen{margin-left:83.33333%}.column.is-11-widescreen{flex:none;width:91.66667%}.column.is-offset-11-widescreen{margin-left:91.66667%}.column.is-12-widescreen{flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width:1408px){.column.is-narrow-fullhd{flex:none}.column.is-full-fullhd{flex:none;width:100%}.column.is-three-quarters-fullhd{flex:none;width:75%}.column.is-two-thirds-fullhd{flex:none;width:66.6666%}.column.is-half-fullhd{flex:none;width:50%}.column.is-one-third-fullhd{flex:none;width:33.3333%}.column.is-one-quarter-fullhd{flex:none;width:25%}.column.is-one-fifth-fullhd{flex:none;width:20%}.column.is-two-fifths-fullhd{flex:none;width:40%}.column.is-three-fifths-fullhd{flex:none;width:60%}.column.is-four-fifths-fullhd{flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-0-fullhd{flex:none;width:0%}.column.is-offset-0-fullhd{margin-left:0}.column.is-1-fullhd{flex:none;width:8.33333%}.column.is-offset-1-fullhd{margin-left:8.33333%}.column.is-2-fullhd{flex:none;width:16.66667%}.column.is-offset-2-fullhd{margin-left:16.66667%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{flex:none;width:33.33333%}.column.is-offset-4-fullhd{margin-left:33.33333%}.column.is-5-fullhd{flex:none;width:41.66667%}.column.is-offset-5-fullhd{margin-left:41.66667%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{flex:none;width:58.33333%}.column.is-offset-7-fullhd{margin-left:58.33333%}.column.is-8-fullhd{flex:none;width:66.66667%}.column.is-offset-8-fullhd{margin-left:66.66667%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{flex:none;width:83.33333%}.column.is-offset-10-fullhd{margin-left:83.33333%}.column.is-11-fullhd{flex:none;width:91.66667%}.column.is-offset-11-fullhd{margin-left:91.66667%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}.columns.is-centered{justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0!important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:flex}.columns.is-multiline{flex-wrap:wrap}.columns.is-vcentered{align-items:center}@media screen and (min-width:769px),print{.columns:not(.is-desktop){display:flex}}@media screen and (min-width:1024px){.columns.is-desktop{display:flex}}.columns.is-variable{--columnGap:0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}.columns.is-variable .column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap:0rem}@media screen and (max-width:768px){.columns.is-variable.is-0-mobile{--columnGap:0rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-0-tablet{--columnGap:0rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-0-tablet-only{--columnGap:0rem}}@media screen and (max-width:1023px){.columns.is-variable.is-0-touch{--columnGap:0rem}}@media screen and (min-width:1024px){.columns.is-variable.is-0-desktop{--columnGap:0rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-0-desktop-only{--columnGap:0rem}}@media screen and (min-width:1216px){.columns.is-variable.is-0-widescreen{--columnGap:0rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-0-widescreen-only{--columnGap:0rem}}@media screen and (min-width:1408px){.columns.is-variable.is-0-fullhd{--columnGap:0rem}}.columns.is-variable.is-1{--columnGap:0.25rem}@media screen and (max-width:768px){.columns.is-variable.is-1-mobile{--columnGap:0.25rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-1-tablet{--columnGap:0.25rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-1-tablet-only{--columnGap:0.25rem}}@media screen and (max-width:1023px){.columns.is-variable.is-1-touch{--columnGap:0.25rem}}@media screen and (min-width:1024px){.columns.is-variable.is-1-desktop{--columnGap:0.25rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-1-desktop-only{--columnGap:0.25rem}}@media screen and (min-width:1216px){.columns.is-variable.is-1-widescreen{--columnGap:0.25rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-1-widescreen-only{--columnGap:0.25rem}}@media screen and (min-width:1408px){.columns.is-variable.is-1-fullhd{--columnGap:0.25rem}}.columns.is-variable.is-2{--columnGap:0.5rem}@media screen and (max-width:768px){.columns.is-variable.is-2-mobile{--columnGap:0.5rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-2-tablet{--columnGap:0.5rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-2-tablet-only{--columnGap:0.5rem}}@media screen and (max-width:1023px){.columns.is-variable.is-2-touch{--columnGap:0.5rem}}@media screen and (min-width:1024px){.columns.is-variable.is-2-desktop{--columnGap:0.5rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-2-desktop-only{--columnGap:0.5rem}}@media screen and (min-width:1216px){.columns.is-variable.is-2-widescreen{--columnGap:0.5rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-2-widescreen-only{--columnGap:0.5rem}}@media screen and (min-width:1408px){.columns.is-variable.is-2-fullhd{--columnGap:0.5rem}}.columns.is-variable.is-3{--columnGap:0.75rem}@media screen and (max-width:768px){.columns.is-variable.is-3-mobile{--columnGap:0.75rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-3-tablet{--columnGap:0.75rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-3-tablet-only{--columnGap:0.75rem}}@media screen and (max-width:1023px){.columns.is-variable.is-3-touch{--columnGap:0.75rem}}@media screen and (min-width:1024px){.columns.is-variable.is-3-desktop{--columnGap:0.75rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-3-desktop-only{--columnGap:0.75rem}}@media screen and (min-width:1216px){.columns.is-variable.is-3-widescreen{--columnGap:0.75rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-3-widescreen-only{--columnGap:0.75rem}}@media screen and (min-width:1408px){.columns.is-variable.is-3-fullhd{--columnGap:0.75rem}}.columns.is-variable.is-4{--columnGap:1rem}@media screen and (max-width:768px){.columns.is-variable.is-4-mobile{--columnGap:1rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-4-tablet{--columnGap:1rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-4-tablet-only{--columnGap:1rem}}@media screen and (max-width:1023px){.columns.is-variable.is-4-touch{--columnGap:1rem}}@media screen and (min-width:1024px){.columns.is-variable.is-4-desktop{--columnGap:1rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-4-desktop-only{--columnGap:1rem}}@media screen and (min-width:1216px){.columns.is-variable.is-4-widescreen{--columnGap:1rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-4-widescreen-only{--columnGap:1rem}}@media screen and (min-width:1408px){.columns.is-variable.is-4-fullhd{--columnGap:1rem}}.columns.is-variable.is-5{--columnGap:1.25rem}@media screen and (max-width:768px){.columns.is-variable.is-5-mobile{--columnGap:1.25rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-5-tablet{--columnGap:1.25rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-5-tablet-only{--columnGap:1.25rem}}@media screen and (max-width:1023px){.columns.is-variable.is-5-touch{--columnGap:1.25rem}}@media screen and (min-width:1024px){.columns.is-variable.is-5-desktop{--columnGap:1.25rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-5-desktop-only{--columnGap:1.25rem}}@media screen and (min-width:1216px){.columns.is-variable.is-5-widescreen{--columnGap:1.25rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-5-widescreen-only{--columnGap:1.25rem}}@media screen and (min-width:1408px){.columns.is-variable.is-5-fullhd{--columnGap:1.25rem}}.columns.is-variable.is-6{--columnGap:1.5rem}@media screen and (max-width:768px){.columns.is-variable.is-6-mobile{--columnGap:1.5rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-6-tablet{--columnGap:1.5rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-6-tablet-only{--columnGap:1.5rem}}@media screen and (max-width:1023px){.columns.is-variable.is-6-touch{--columnGap:1.5rem}}@media screen and (min-width:1024px){.columns.is-variable.is-6-desktop{--columnGap:1.5rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-6-desktop-only{--columnGap:1.5rem}}@media screen and (min-width:1216px){.columns.is-variable.is-6-widescreen{--columnGap:1.5rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-6-widescreen-only{--columnGap:1.5rem}}@media screen and (min-width:1408px){.columns.is-variable.is-6-fullhd{--columnGap:1.5rem}}.columns.is-variable.is-7{--columnGap:1.75rem}@media screen and (max-width:768px){.columns.is-variable.is-7-mobile{--columnGap:1.75rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-7-tablet{--columnGap:1.75rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-7-tablet-only{--columnGap:1.75rem}}@media screen and (max-width:1023px){.columns.is-variable.is-7-touch{--columnGap:1.75rem}}@media screen and (min-width:1024px){.columns.is-variable.is-7-desktop{--columnGap:1.75rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-7-desktop-only{--columnGap:1.75rem}}@media screen and (min-width:1216px){.columns.is-variable.is-7-widescreen{--columnGap:1.75rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-7-widescreen-only{--columnGap:1.75rem}}@media screen and (min-width:1408px){.columns.is-variable.is-7-fullhd{--columnGap:1.75rem}}.columns.is-variable.is-8{--columnGap:2rem}@media screen and (max-width:768px){.columns.is-variable.is-8-mobile{--columnGap:2rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-8-tablet{--columnGap:2rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-8-tablet-only{--columnGap:2rem}}@media screen and (max-width:1023px){.columns.is-variable.is-8-touch{--columnGap:2rem}}@media screen and (min-width:1024px){.columns.is-variable.is-8-desktop{--columnGap:2rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-8-desktop-only{--columnGap:2rem}}@media screen and (min-width:1216px){.columns.is-variable.is-8-widescreen{--columnGap:2rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-8-widescreen-only{--columnGap:2rem}}@media screen and (min-width:1408px){.columns.is-variable.is-8-fullhd{--columnGap:2rem}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:-webkit-min-content;min-height:-moz-min-content;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0!important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem!important}@media screen and (min-width:769px),print{.tile:not(.is-child){display:flex}.tile.is-1{flex:none;width:8.33333%}.tile.is-2{flex:none;width:16.66667%}.tile.is-3{flex:none;width:25%}.tile.is-4{flex:none;width:33.33333%}.tile.is-5{flex:none;width:41.66667%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.33333%}.tile.is-8{flex:none;width:66.66667%}.tile.is-9{flex:none;width:75%}.tile.is-10{flex:none;width:83.33333%}.tile.is-11{flex:none;width:91.66667%}.tile.is-12{flex:none;width:100%}}.has-text-white{color:#fff!important}a.has-text-white:focus,a.has-text-white:hover{color:#e6e6e6!important}.has-background-white{background-color:#fff!important}.has-text-black{color:#0a0a0a!important}a.has-text-black:focus,a.has-text-black:hover{color:#000!important}.has-background-black{background-color:#0a0a0a!important}.has-text-light{color:#f5f5f5!important}a.has-text-light:focus,a.has-text-light:hover{color:#dbdbdb!important}.has-background-light{background-color:#f5f5f5!important}.has-text-dark{color:#363636!important}a.has-text-dark:focus,a.has-text-dark:hover{color:#1c1c1c!important}.has-background-dark{background-color:#363636!important}.has-text-primary{color:#00d1b2!important}a.has-text-primary:focus,a.has-text-primary:hover{color:#009e86!important}.has-background-primary{background-color:#00d1b2!important}.has-text-primary-light{color:#ebfffc!important}a.has-text-primary-light:focus,a.has-text-primary-light:hover{color:#b8fff4!important}.has-background-primary-light{background-color:#ebfffc!important}.has-text-primary-dark{color:#00947e!important}a.has-text-primary-dark:focus,a.has-text-primary-dark:hover{color:#00c7a9!important}.has-background-primary-dark{background-color:#00947e!important}.has-text-link{color:#3273dc!important}a.has-text-link:focus,a.has-text-link:hover{color:#205bbc!important}.has-background-link{background-color:#3273dc!important}.has-text-link-light{color:#eef3fc!important}a.has-text-link-light:focus,a.has-text-link-light:hover{color:#c2d5f5!important}.has-background-link-light{background-color:#eef3fc!important}.has-text-link-dark{color:#2160c4!important}a.has-text-link-dark:focus,a.has-text-link-dark:hover{color:#3b79de!important}.has-background-link-dark{background-color:#2160c4!important}.has-text-info{color:#3298dc!important}a.has-text-info:focus,a.has-text-info:hover{color:#207dbc!important}.has-background-info{background-color:#3298dc!important}.has-text-info-light{color:#eef6fc!important}a.has-text-info-light:focus,a.has-text-info-light:hover{color:#c2e0f5!important}.has-background-info-light{background-color:#eef6fc!important}.has-text-info-dark{color:#1d72aa!important}a.has-text-info-dark:focus,a.has-text-info-dark:hover{color:#248fd6!important}.has-background-info-dark{background-color:#1d72aa!important}.has-text-success{color:#48c774!important}a.has-text-success:focus,a.has-text-success:hover{color:#34a85c!important}.has-background-success{background-color:#48c774!important}.has-text-success-light{color:#effaf3!important}a.has-text-success-light:focus,a.has-text-success-light:hover{color:#c8eed6!important}.has-background-success-light{background-color:#effaf3!important}.has-text-success-dark{color:#257942!important}a.has-text-success-dark:focus,a.has-text-success-dark:hover{color:#31a058!important}.has-background-success-dark{background-color:#257942!important}.has-text-warning{color:#ffdd57!important}a.has-text-warning:focus,a.has-text-warning:hover{color:#ffd324!important}.has-background-warning{background-color:#ffdd57!important}.has-text-warning-light{color:#fffbeb!important}a.has-text-warning-light:focus,a.has-text-warning-light:hover{color:#fff1b8!important}.has-background-warning-light{background-color:#fffbeb!important}.has-text-warning-dark{color:#947600!important}a.has-text-warning-dark:focus,a.has-text-warning-dark:hover{color:#c79f00!important}.has-background-warning-dark{background-color:#947600!important}.has-text-danger{color:#f14668!important}a.has-text-danger:focus,a.has-text-danger:hover{color:#ee1742!important}.has-background-danger{background-color:#f14668!important}.has-text-danger-light{color:#feecf0!important}a.has-text-danger-light:focus,a.has-text-danger-light:hover{color:#fabdc9!important}.has-background-danger-light{background-color:#feecf0!important}.has-text-danger-dark{color:#cc0f35!important}a.has-text-danger-dark:focus,a.has-text-danger-dark:hover{color:#ee2049!important}.has-background-danger-dark{background-color:#cc0f35!important}.has-text-black-bis{color:#121212!important}.has-background-black-bis{background-color:#121212!important}.has-text-black-ter{color:#242424!important}.has-background-black-ter{background-color:#242424!important}.has-text-grey-darker{color:#363636!important}.has-background-grey-darker{background-color:#363636!important}.has-text-grey-dark{color:#4a4a4a!important}.has-background-grey-dark{background-color:#4a4a4a!important}.has-text-grey{color:#7a7a7a!important}.has-background-grey{background-color:#7a7a7a!important}.has-text-grey-light{color:#b5b5b5!important}.has-background-grey-light{background-color:#b5b5b5!important}.has-text-grey-lighter{color:#dbdbdb!important}.has-background-grey-lighter{background-color:#dbdbdb!important}.has-text-white-ter{color:#f5f5f5!important}.has-background-white-ter{background-color:#f5f5f5!important}.has-text-white-bis{color:#fafafa!important}.has-background-white-bis{background-color:#fafafa!important}.is-flex-direction-row{flex-direction:row!important}.is-flex-direction-row-reverse{flex-direction:row-reverse!important}.is-flex-direction-column{flex-direction:column!important}.is-flex-direction-column-reverse{flex-direction:column-reverse!important}.is-flex-wrap-nowrap{flex-wrap:nowrap!important}.is-flex-wrap-wrap{flex-wrap:wrap!important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse!important}.is-justify-content-flex-start{justify-content:flex-start!important}.is-justify-content-flex-end{justify-content:flex-end!important}.is-justify-content-center{justify-content:center!important}.is-justify-content-space-between{justify-content:space-between!important}.is-justify-content-space-around{justify-content:space-around!important}.is-justify-content-space-evenly{justify-content:space-evenly!important}.is-justify-content-start{justify-content:start!important}.is-justify-content-end{justify-content:end!important}.is-justify-content-left{justify-content:left!important}.is-justify-content-right{justify-content:right!important}.is-align-content-flex-start{align-content:flex-start!important}.is-align-content-flex-end{align-content:flex-end!important}.is-align-content-center{align-content:center!important}.is-align-content-space-between{align-content:space-between!important}.is-align-content-space-around{align-content:space-around!important}.is-align-content-space-evenly{align-content:space-evenly!important}.is-align-content-stretch{align-content:stretch!important}.is-align-content-start{align-content:start!important}.is-align-content-end{align-content:end!important}.is-align-content-baseline{align-content:baseline!important}.is-align-items-stretch{align-items:stretch!important}.is-align-items-flex-start{align-items:flex-start!important}.is-align-items-flex-end{align-items:flex-end!important}.is-align-items-center{align-items:center!important}.is-align-items-baseline{align-items:baseline!important}.is-align-items-start{align-items:start!important}.is-align-items-end{align-items:end!important}.is-align-items-self-start{align-items:self-start!important}.is-align-items-self-end{align-items:self-end!important}.is-align-self-auto{align-self:auto!important}.is-align-self-flex-start{align-self:flex-start!important}.is-align-self-flex-end{align-self:flex-end!important}.is-align-self-center{align-self:center!important}.is-align-self-baseline{align-self:baseline!important}.is-align-self-stretch{align-self:stretch!important}.is-flex-grow-0{flex-grow:0!important}.is-flex-grow-1{flex-grow:1!important}.is-flex-grow-2{flex-grow:2!important}.is-flex-grow-3{flex-grow:3!important}.is-flex-grow-4{flex-grow:4!important}.is-flex-grow-5{flex-grow:5!important}.is-flex-shrink-0{flex-shrink:0!important}.is-flex-shrink-1{flex-shrink:1!important}.is-flex-shrink-2{flex-shrink:2!important}.is-flex-shrink-3{flex-shrink:3!important}.is-flex-shrink-4{flex-shrink:4!important}.is-flex-shrink-5{flex-shrink:5!important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left!important}.is-pulled-right{float:right!important}.is-radiusless{border-radius:0!important}.is-shadowless{box-shadow:none!important}.is-clickable{cursor:pointer!important}.is-clipped{overflow:hidden!important}.is-relative{position:relative!important}.is-marginless{margin:0!important}.is-paddingless{padding:0!important}.m-0{margin:0!important}.mt-0{margin-top:0!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mx-0{margin-left:0!important;margin-right:0!important}.my-0{margin-top:0!important;margin-bottom:0!important}.m-1{margin:.25rem!important}.mt-1{margin-top:.25rem!important}.mr-1{margin-right:.25rem!important}.mb-1{margin-bottom:.25rem!important}.ml-1{margin-left:.25rem!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-2{margin:.5rem!important}.mt-2{margin-top:.5rem!important}.mr-2{margin-right:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2{margin-left:.5rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-3{margin:.75rem!important}.mt-3{margin-top:.75rem!important}.mr-3{margin-right:.75rem!important}.mb-3{margin-bottom:.75rem!important}.ml-3{margin-left:.75rem!important}.mx-3{margin-left:.75rem!important;margin-right:.75rem!important}.my-3{margin-top:.75rem!important;margin-bottom:.75rem!important}.m-4{margin:1rem!important}.mt-4{margin-top:1rem!important}.mr-4{margin-right:1rem!important}.mb-4{margin-bottom:1rem!important}.ml-4{margin-left:1rem!important}.mx-4{margin-left:1rem!important;margin-right:1rem!important}.my-4{margin-top:1rem!important;margin-bottom:1rem!important}.m-5{margin:1.5rem!important}.mt-5{margin-top:1.5rem!important}.mr-5{margin-right:1.5rem!important}.mb-5{margin-bottom:1.5rem!important}.ml-5{margin-left:1.5rem!important}.mx-5{margin-left:1.5rem!important;margin-right:1.5rem!important}.my-5{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-6{margin:3rem!important}.mt-6{margin-top:3rem!important}.mr-6{margin-right:3rem!important}.mb-6{margin-bottom:3rem!important}.ml-6{margin-left:3rem!important}.mx-6{margin-left:3rem!important;margin-right:3rem!important}.my-6{margin-top:3rem!important;margin-bottom:3rem!important}.p-0{padding:0!important}.pt-0{padding-top:0!important}.pr-0{padding-right:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.px-0{padding-left:0!important;padding-right:0!important}.py-0{padding-top:0!important;padding-bottom:0!important}.p-1{padding:.25rem!important}.pt-1{padding-top:.25rem!important}.pr-1{padding-right:.25rem!important}.pb-1{padding-bottom:.25rem!important}.pl-1{padding-left:.25rem!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-2{padding:.5rem!important}.pt-2{padding-top:.5rem!important}.pr-2{padding-right:.5rem!important}.pb-2{padding-bottom:.5rem!important}.pl-2{padding-left:.5rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-3{padding:.75rem!important}.pt-3{padding-top:.75rem!important}.pr-3{padding-right:.75rem!important}.pb-3{padding-bottom:.75rem!important}.pl-3{padding-left:.75rem!important}.px-3{padding-left:.75rem!important;padding-right:.75rem!important}.py-3{padding-top:.75rem!important;padding-bottom:.75rem!important}.p-4{padding:1rem!important}.pt-4{padding-top:1rem!important}.pr-4{padding-right:1rem!important}.pb-4{padding-bottom:1rem!important}.pl-4{padding-left:1rem!important}.px-4{padding-left:1rem!important;padding-right:1rem!important}.py-4{padding-top:1rem!important;padding-bottom:1rem!important}.p-5{padding:1.5rem!important}.pt-5{padding-top:1.5rem!important}.pr-5{padding-right:1.5rem!important}.pb-5{padding-bottom:1.5rem!important}.pl-5{padding-left:1.5rem!important}.px-5{padding-left:1.5rem!important;padding-right:1.5rem!important}.py-5{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-6{padding:3rem!important}.pt-6{padding-top:3rem!important}.pr-6{padding-right:3rem!important}.pb-6{padding-bottom:3rem!important}.pl-6{padding-left:3rem!important}.px-6{padding-left:3rem!important;padding-right:3rem!important}.py-6{padding-top:3rem!important;padding-bottom:3rem!important}.is-size-1{font-size:3rem!important}.is-size-2{font-size:2.5rem!important}.is-size-3{font-size:2rem!important}.is-size-4{font-size:1.5rem!important}.is-size-5{font-size:1.25rem!important}.is-size-6{font-size:1rem!important}.is-size-7{font-size:.75rem!important}@media screen and (max-width:768px){.is-size-1-mobile{font-size:3rem!important}.is-size-2-mobile{font-size:2.5rem!important}.is-size-3-mobile{font-size:2rem!important}.is-size-4-mobile{font-size:1.5rem!important}.is-size-5-mobile{font-size:1.25rem!important}.is-size-6-mobile{font-size:1rem!important}.is-size-7-mobile{font-size:.75rem!important}}@media screen and (min-width:769px),print{.is-size-1-tablet{font-size:3rem!important}.is-size-2-tablet{font-size:2.5rem!important}.is-size-3-tablet{font-size:2rem!important}.is-size-4-tablet{font-size:1.5rem!important}.is-size-5-tablet{font-size:1.25rem!important}.is-size-6-tablet{font-size:1rem!important}.is-size-7-tablet{font-size:.75rem!important}}@media screen and (max-width:1023px){.is-size-1-touch{font-size:3rem!important}.is-size-2-touch{font-size:2.5rem!important}.is-size-3-touch{font-size:2rem!important}.is-size-4-touch{font-size:1.5rem!important}.is-size-5-touch{font-size:1.25rem!important}.is-size-6-touch{font-size:1rem!important}.is-size-7-touch{font-size:.75rem!important}}@media screen and (min-width:1024px){.is-size-1-desktop{font-size:3rem!important}.is-size-2-desktop{font-size:2.5rem!important}.is-size-3-desktop{font-size:2rem!important}.is-size-4-desktop{font-size:1.5rem!important}.is-size-5-desktop{font-size:1.25rem!important}.is-size-6-desktop{font-size:1rem!important}.is-size-7-desktop{font-size:.75rem!important}}@media screen and (min-width:1216px){.is-size-1-widescreen{font-size:3rem!important}.is-size-2-widescreen{font-size:2.5rem!important}.is-size-3-widescreen{font-size:2rem!important}.is-size-4-widescreen{font-size:1.5rem!important}.is-size-5-widescreen{font-size:1.25rem!important}.is-size-6-widescreen{font-size:1rem!important}.is-size-7-widescreen{font-size:.75rem!important}}@media screen and (min-width:1408px){.is-size-1-fullhd{font-size:3rem!important}.is-size-2-fullhd{font-size:2.5rem!important}.is-size-3-fullhd{font-size:2rem!important}.is-size-4-fullhd{font-size:1.5rem!important}.is-size-5-fullhd{font-size:1.25rem!important}.is-size-6-fullhd{font-size:1rem!important}.is-size-7-fullhd{font-size:.75rem!important}}.has-text-centered{text-align:center!important}.has-text-justified{text-align:justify!important}.has-text-left{text-align:left!important}.has-text-right{text-align:right!important}@media screen and (max-width:768px){.has-text-centered-mobile{text-align:center!important}}@media screen and (min-width:769px),print{.has-text-centered-tablet{text-align:center!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-centered-tablet-only{text-align:center!important}}@media screen and (max-width:1023px){.has-text-centered-touch{text-align:center!important}}@media screen and (min-width:1024px){.has-text-centered-desktop{text-align:center!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-centered-desktop-only{text-align:center!important}}@media screen and (min-width:1216px){.has-text-centered-widescreen{text-align:center!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-centered-widescreen-only{text-align:center!important}}@media screen and (min-width:1408px){.has-text-centered-fullhd{text-align:center!important}}@media screen and (max-width:768px){.has-text-justified-mobile{text-align:justify!important}}@media screen and (min-width:769px),print{.has-text-justified-tablet{text-align:justify!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-justified-tablet-only{text-align:justify!important}}@media screen and (max-width:1023px){.has-text-justified-touch{text-align:justify!important}}@media screen and (min-width:1024px){.has-text-justified-desktop{text-align:justify!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-justified-desktop-only{text-align:justify!important}}@media screen and (min-width:1216px){.has-text-justified-widescreen{text-align:justify!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-justified-widescreen-only{text-align:justify!important}}@media screen and (min-width:1408px){.has-text-justified-fullhd{text-align:justify!important}}@media screen and (max-width:768px){.has-text-left-mobile{text-align:left!important}}@media screen and (min-width:769px),print{.has-text-left-tablet{text-align:left!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-left-tablet-only{text-align:left!important}}@media screen and (max-width:1023px){.has-text-left-touch{text-align:left!important}}@media screen and (min-width:1024px){.has-text-left-desktop{text-align:left!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-left-desktop-only{text-align:left!important}}@media screen and (min-width:1216px){.has-text-left-widescreen{text-align:left!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-left-widescreen-only{text-align:left!important}}@media screen and (min-width:1408px){.has-text-left-fullhd{text-align:left!important}}@media screen and (max-width:768px){.has-text-right-mobile{text-align:right!important}}@media screen and (min-width:769px),print{.has-text-right-tablet{text-align:right!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-right-tablet-only{text-align:right!important}}@media screen and (max-width:1023px){.has-text-right-touch{text-align:right!important}}@media screen and (min-width:1024px){.has-text-right-desktop{text-align:right!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-right-desktop-only{text-align:right!important}}@media screen and (min-width:1216px){.has-text-right-widescreen{text-align:right!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-right-widescreen-only{text-align:right!important}}@media screen and (min-width:1408px){.has-text-right-fullhd{text-align:right!important}}.is-capitalized{text-transform:capitalize!important}.is-lowercase{text-transform:lowercase!important}.is-uppercase{text-transform:uppercase!important}.is-italic{font-style:italic!important}.has-text-weight-light{font-weight:300!important}.has-text-weight-normal{font-weight:400!important}.has-text-weight-medium{font-weight:500!important}.has-text-weight-semibold{font-weight:600!important}.has-text-weight-bold{font-weight:700!important}.is-family-primary{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif!important}.is-family-secondary{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif!important}.is-family-sans-serif{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif!important}.is-family-monospace{font-family:monospace!important}.is-family-code{font-family:monospace!important}.is-block{display:block!important}@media screen and (max-width:768px){.is-block-mobile{display:block!important}}@media screen and (min-width:769px),print{.is-block-tablet{display:block!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-block-tablet-only{display:block!important}}@media screen and (max-width:1023px){.is-block-touch{display:block!important}}@media screen and (min-width:1024px){.is-block-desktop{display:block!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-block-desktop-only{display:block!important}}@media screen and (min-width:1216px){.is-block-widescreen{display:block!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-block-widescreen-only{display:block!important}}@media screen and (min-width:1408px){.is-block-fullhd{display:block!important}}.is-flex{display:flex!important}@media screen and (max-width:768px){.is-flex-mobile{display:flex!important}}@media screen and (min-width:769px),print{.is-flex-tablet{display:flex!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-flex-tablet-only{display:flex!important}}@media screen and (max-width:1023px){.is-flex-touch{display:flex!important}}@media screen and (min-width:1024px){.is-flex-desktop{display:flex!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-flex-desktop-only{display:flex!important}}@media screen and (min-width:1216px){.is-flex-widescreen{display:flex!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-flex-widescreen-only{display:flex!important}}@media screen and (min-width:1408px){.is-flex-fullhd{display:flex!important}}.is-inline{display:inline!important}@media screen and (max-width:768px){.is-inline-mobile{display:inline!important}}@media screen and (min-width:769px),print{.is-inline-tablet{display:inline!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-tablet-only{display:inline!important}}@media screen and (max-width:1023px){.is-inline-touch{display:inline!important}}@media screen and (min-width:1024px){.is-inline-desktop{display:inline!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-desktop-only{display:inline!important}}@media screen and (min-width:1216px){.is-inline-widescreen{display:inline!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-widescreen-only{display:inline!important}}@media screen and (min-width:1408px){.is-inline-fullhd{display:inline!important}}.is-inline-block{display:inline-block!important}@media screen and (max-width:768px){.is-inline-block-mobile{display:inline-block!important}}@media screen and (min-width:769px),print{.is-inline-block-tablet{display:inline-block!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-block-tablet-only{display:inline-block!important}}@media screen and (max-width:1023px){.is-inline-block-touch{display:inline-block!important}}@media screen and (min-width:1024px){.is-inline-block-desktop{display:inline-block!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-block-desktop-only{display:inline-block!important}}@media screen and (min-width:1216px){.is-inline-block-widescreen{display:inline-block!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-block-widescreen-only{display:inline-block!important}}@media screen and (min-width:1408px){.is-inline-block-fullhd{display:inline-block!important}}.is-inline-flex{display:inline-flex!important}@media screen and (max-width:768px){.is-inline-flex-mobile{display:inline-flex!important}}@media screen and (min-width:769px),print{.is-inline-flex-tablet{display:inline-flex!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-flex-tablet-only{display:inline-flex!important}}@media screen and (max-width:1023px){.is-inline-flex-touch{display:inline-flex!important}}@media screen and (min-width:1024px){.is-inline-flex-desktop{display:inline-flex!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-flex-desktop-only{display:inline-flex!important}}@media screen and (min-width:1216px){.is-inline-flex-widescreen{display:inline-flex!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-flex-widescreen-only{display:inline-flex!important}}@media screen and (min-width:1408px){.is-inline-flex-fullhd{display:inline-flex!important}}.is-hidden{display:none!important}.is-sr-only{border:none!important;clip:rect(0,0,0,0)!important;height:.01em!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:.01em!important}@media screen and (max-width:768px){.is-hidden-mobile{display:none!important}}@media screen and (min-width:769px),print{.is-hidden-tablet{display:none!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-hidden-tablet-only{display:none!important}}@media screen and (max-width:1023px){.is-hidden-touch{display:none!important}}@media screen and (min-width:1024px){.is-hidden-desktop{display:none!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-hidden-desktop-only{display:none!important}}@media screen and (min-width:1216px){.is-hidden-widescreen{display:none!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-hidden-widescreen-only{display:none!important}}@media screen and (min-width:1408px){.is-hidden-fullhd{display:none!important}}.is-invisible{visibility:hidden!important}@media screen and (max-width:768px){.is-invisible-mobile{visibility:hidden!important}}@media screen and (min-width:769px),print{.is-invisible-tablet{visibility:hidden!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-invisible-tablet-only{visibility:hidden!important}}@media screen and (max-width:1023px){.is-invisible-touch{visibility:hidden!important}}@media screen and (min-width:1024px){.is-invisible-desktop{visibility:hidden!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-invisible-desktop-only{visibility:hidden!important}}@media screen and (min-width:1216px){.is-invisible-widescreen{visibility:hidden!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-invisible-widescreen-only{visibility:hidden!important}}@media screen and (min-width:1408px){.is-invisible-fullhd{visibility:hidden!important}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:0 0}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10,10,10,.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width:1023px){.hero.is-white .navbar-menu{background-color:#fff}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(10,10,10,.7)}.hero.is-white .navbar-link.is-active,.hero.is-white .navbar-link:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg,#e6e6e6 0,#fff 71%,#fff 100%)}@media screen and (max-width:768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg,#e6e6e6 0,#fff 71%,#fff 100%)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-black .navbar-menu{background-color:#0a0a0a}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:rgba(255,255,255,.7)}.hero.is-black .navbar-link.is-active,.hero.is-black .navbar-link:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black a.navbar-item:hover{background-color:#000;color:#fff}.hero.is-black .tabs a{color:#fff;opacity:.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg,#000 0,#0a0a0a 71%,#181616 100%)}@media screen and (max-width:768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg,#000 0,#0a0a0a 71%,#181616 100%)}}.hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-light strong{color:inherit}.hero.is-light .title{color:rgba(0,0,0,.7)}.hero.is-light .subtitle{color:rgba(0,0,0,.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width:1023px){.hero.is-light .navbar-menu{background-color:#f5f5f5}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(0,0,0,.7)}.hero.is-light .navbar-link.is-active,.hero.is-light .navbar-link:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.hero.is-light .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg,#dfd8d9 0,#f5f5f5 71%,#fff 100%)}@media screen and (max-width:768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg,#dfd8d9 0,#f5f5f5 71%,#fff 100%)}}.hero.is-dark{background-color:#363636;color:#fff}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-dark strong{color:inherit}.hero.is-dark .title{color:#fff}.hero.is-dark .subtitle{color:rgba(255,255,255,.9)}.hero.is-dark .subtitle a:not(.button),.hero.is-dark .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-dark .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.hero.is-dark .navbar-link{color:rgba(255,255,255,.7)}.hero.is-dark .navbar-link.is-active,.hero.is-dark .navbar-link:hover,.hero.is-dark a.navbar-item.is-active,.hero.is-dark a.navbar-item:hover{background-color:#292929;color:#fff}.hero.is-dark .tabs a{color:#fff;opacity:.9}.hero.is-dark .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a{opacity:1}.hero.is-dark .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a{color:#fff}.hero.is-dark .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#363636}.hero.is-dark.is-bold{background-image:linear-gradient(141deg,#1f191a 0,#363636 71%,#46403f 100%)}@media screen and (max-width:768px){.hero.is-dark.is-bold .navbar-menu{background-image:linear-gradient(141deg,#1f191a 0,#363636 71%,#46403f 100%)}}.hero.is-primary{background-color:#00d1b2;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong{color:inherit}.hero.is-primary .title{color:#fff}.hero.is-primary .subtitle{color:rgba(255,255,255,.9)}.hero.is-primary .subtitle a:not(.button),.hero.is-primary .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-primary .navbar-menu{background-color:#00d1b2}}.hero.is-primary .navbar-item,.hero.is-primary .navbar-link{color:rgba(255,255,255,.7)}.hero.is-primary .navbar-link.is-active,.hero.is-primary .navbar-link:hover,.hero.is-primary a.navbar-item.is-active,.hero.is-primary a.navbar-item:hover{background-color:#00b89c;color:#fff}.hero.is-primary .tabs a{color:#fff;opacity:.9}.hero.is-primary .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a{opacity:1}.hero.is-primary .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#00d1b2}.hero.is-primary.is-bold{background-image:linear-gradient(141deg,#009e6c 0,#00d1b2 71%,#00e7eb 100%)}@media screen and (max-width:768px){.hero.is-primary.is-bold .navbar-menu{background-image:linear-gradient(141deg,#009e6c 0,#00d1b2 71%,#00e7eb 100%)}}.hero.is-link{background-color:#3273dc;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:rgba(255,255,255,.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-link .navbar-menu{background-color:#3273dc}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:rgba(255,255,255,.7)}.hero.is-link .navbar-link.is-active,.hero.is-link .navbar-link:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link a.navbar-item:hover{background-color:#2366d1;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:.9}.hero.is-link .tabs a:hover{opacity:1}.hero.is-link .tabs li.is-active a{opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3273dc}.hero.is-link.is-bold{background-image:linear-gradient(141deg,#1577c6 0,#3273dc 71%,#4366e5 100%)}@media screen and (max-width:768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg,#1577c6 0,#3273dc 71%,#4366e5 100%)}}.hero.is-info{background-color:#3298dc;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255,255,255,.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-info .navbar-menu{background-color:#3298dc}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:rgba(255,255,255,.7)}.hero.is-info .navbar-link.is-active,.hero.is-info .navbar-link:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info a.navbar-item:hover{background-color:#238cd1;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3298dc}.hero.is-info.is-bold{background-image:linear-gradient(141deg,#159dc6 0,#3298dc 71%,#4389e5 100%)}@media screen and (max-width:768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg,#159dc6 0,#3298dc 71%,#4389e5 100%)}}.hero.is-success{background-color:#48c774;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255,255,255,.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-success .navbar-menu{background-color:#48c774}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:rgba(255,255,255,.7)}.hero.is-success .navbar-link.is-active,.hero.is-success .navbar-link:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success a.navbar-item:hover{background-color:#3abb67;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#48c774}.hero.is-success.is-bold{background-image:linear-gradient(141deg,#29b342 0,#48c774 71%,#56d296 100%)}@media screen and (max-width:768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg,#29b342 0,#48c774 71%,#56d296 100%)}}.hero.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:rgba(0,0,0,.7)}.hero.is-warning .subtitle{color:rgba(0,0,0,.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width:1023px){.hero.is-warning .navbar-menu{background-color:#ffdd57}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(0,0,0,.7)}.hero.is-warning .navbar-link.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning a.navbar-item:hover{background-color:#ffd83d;color:rgba(0,0,0,.7)}.hero.is-warning .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#ffdd57}.hero.is-warning.is-bold{background-image:linear-gradient(141deg,#ffaf24 0,#ffdd57 71%,#fffa70 100%)}@media screen and (max-width:768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg,#ffaf24 0,#ffdd57 71%,#fffa70 100%)}}.hero.is-danger{background-color:#f14668;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255,255,255,.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-danger .navbar-menu{background-color:#f14668}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:rgba(255,255,255,.7)}.hero.is-danger .navbar-link.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger a.navbar-item:hover{background-color:#ef2e55;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#f14668}.hero.is-danger.is-bold{background-image:linear-gradient(141deg,#fa0a62 0,#f14668 71%,#f7595f 100%)}@media screen and (max-width:768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg,#fa0a62 0,#f14668 71%,#f7595f 100%)}}.hero.is-small .hero-body{padding:1.5rem}@media screen and (min-width:769px),print{.hero.is-medium .hero-body{padding:9rem 1.5rem}}@media screen and (min-width:769px),print{.hero.is-large .hero-body{padding:18rem 1.5rem}}.hero.is-fullheight .hero-body,.hero.is-fullheight-with-navbar .hero-body,.hero.is-halfheight .hero-body{align-items:center;display:flex}.hero.is-fullheight .hero-body>.container,.hero.is-fullheight-with-navbar .hero-body>.container,.hero.is-halfheight .hero-body>.container{flex-grow:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0)}.hero-video.is-transparent{opacity:.3}@media screen and (max-width:768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width:768px){.hero-buttons .button{display:flex}.hero-buttons .button:not(:last-child){margin-bottom:.75rem}}@media screen and (min-width:769px),print{.hero-buttons{display:flex;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-foot,.hero-head{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}.section{padding:3rem 1.5rem}@media screen and (min-width:1024px){.section.is-medium{padding:9rem 1.5rem}.section.is-large{padding:18rem 1.5rem}}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem} \ No newline at end of file +/*! bulma.io v0.9.2 | MIT License | github.com/jgthms/bulma */.button,.file-cta,.file-name,.input,.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous,.select select,.textarea{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(.5em - 1px);padding-left:calc(.75em - 1px);padding-right:calc(.75em - 1px);padding-top:calc(.5em - 1px);position:relative;vertical-align:top}.button:active,.button:focus,.file-cta:active,.file-cta:focus,.file-name:active,.file-name:focus,.input:active,.input:focus,.is-active.button,.is-active.file-cta,.is-active.file-name,.is-active.input,.is-active.pagination-ellipsis,.is-active.pagination-link,.is-active.pagination-next,.is-active.pagination-previous,.is-active.textarea,.is-focused.button,.is-focused.file-cta,.is-focused.file-name,.is-focused.input,.is-focused.pagination-ellipsis,.is-focused.pagination-link,.is-focused.pagination-next,.is-focused.pagination-previous,.is-focused.textarea,.pagination-ellipsis:active,.pagination-ellipsis:focus,.pagination-link:active,.pagination-link:focus,.pagination-next:active,.pagination-next:focus,.pagination-previous:active,.pagination-previous:focus,.select select.is-active,.select select.is-focused,.select select:active,.select select:focus,.textarea:active,.textarea:focus{outline:0}.button[disabled],.file-cta[disabled],.file-name[disabled],.input[disabled],.pagination-ellipsis[disabled],.pagination-link[disabled],.pagination-next[disabled],.pagination-previous[disabled],.select fieldset[disabled] select,.select select[disabled],.textarea[disabled],fieldset[disabled] .button,fieldset[disabled] .file-cta,fieldset[disabled] .file-name,fieldset[disabled] .input,fieldset[disabled] .pagination-ellipsis,fieldset[disabled] .pagination-link,fieldset[disabled] .pagination-next,fieldset[disabled] .pagination-previous,fieldset[disabled] .select select,fieldset[disabled] .textarea{cursor:not-allowed}.breadcrumb,.button,.file,.is-unselectable,.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous,.tabs{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless)::after,.select:not(.is-multiple):not(.is-loading)::after{border:3px solid transparent;border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:.625em;margin-top:-.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:.625em}.block:not(:last-child),.box:not(:last-child),.breadcrumb:not(:last-child),.content:not(:last-child),.highlight:not(:last-child),.level:not(:last-child),.message:not(:last-child),.notification:not(:last-child),.pagination:not(:last-child),.progress:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.tabs:not(:last-child),.title:not(:last-child){margin-bottom:1.5rem}.delete,.modal-close{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,.2);border:none;border-radius:290486px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:0;position:relative;vertical-align:top;width:20px}.delete::after,.delete::before,.modal-close::after,.modal-close::before{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.delete::before,.modal-close::before{height:2px;width:50%}.delete::after,.modal-close::after{height:50%;width:2px}.delete:focus,.delete:hover,.modal-close:focus,.modal-close:hover{background-color:rgba(10,10,10,.3)}.delete:active,.modal-close:active{background-color:rgba(10,10,10,.4)}.is-small.delete,.is-small.modal-close{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.delete,.is-medium.modal-close{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.delete,.is-large.modal-close{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.button.is-loading::after,.control.is-loading::after,.loader,.select.is-loading::after{-webkit-animation:spinAround .5s infinite linear;animation:spinAround .5s infinite linear;border:2px solid #dbdbdb;border-radius:290486px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.hero-video,.image.is-16by9 .has-ratio,.image.is-16by9 img,.image.is-1by1 .has-ratio,.image.is-1by1 img,.image.is-1by2 .has-ratio,.image.is-1by2 img,.image.is-1by3 .has-ratio,.image.is-1by3 img,.image.is-2by1 .has-ratio,.image.is-2by1 img,.image.is-2by3 .has-ratio,.image.is-2by3 img,.image.is-3by1 .has-ratio,.image.is-3by1 img,.image.is-3by2 .has-ratio,.image.is-3by2 img,.image.is-3by4 .has-ratio,.image.is-3by4 img,.image.is-3by5 .has-ratio,.image.is-3by5 img,.image.is-4by3 .has-ratio,.image.is-4by3 img,.image.is-4by5 .has-ratio,.image.is-4by5 img,.image.is-5by3 .has-ratio,.image.is-5by3 img,.image.is-5by4 .has-ratio,.image.is-5by4 img,.image.is-9by16 .has-ratio,.image.is-9by16 img,.image.is-square .has-ratio,.image.is-square img,.is-overlay,.modal,.modal-background{bottom:0;left:0;position:absolute;right:0;top:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */blockquote,body,dd,dl,dt,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,html,iframe,legend,li,ol,p,pre,textarea,ul{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,::after,::before{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}html{background-color:#fff;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,optgroup,select,textarea{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:monospace}body{color:#4a4a4a;font-size:1em;font-weight:400;line-height:1.5}a{color:#3273dc;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#363636}code{background-color:#f5f5f5;color:#da1039;font-size:.875em;font-weight:400;padding:.25em .5em .25em}hr{background-color:#f5f5f5;border:none;display:block;height:2px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type=checkbox],input[type=radio]{vertical-align:baseline}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#363636;font-weight:700}fieldset{border:none}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#4a4a4a;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}table th{color:#363636}@-webkit-keyframes spinAround{from{transform:rotate(0)}to{transform:rotate(359deg)}}@keyframes spinAround{from{transform:rotate(0)}to{transform:rotate(359deg)}}.box{background-color:#fff;border-radius:6px;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);color:#4a4a4a;display:block;padding:1.25rem}a.box:focus,a.box:hover{box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px #3273dc}a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2),0 0 0 1px #3273dc}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#363636;cursor:pointer;justify-content:center;padding-bottom:calc(.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(.5em - 1px);text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-large,.button .icon.is-medium,.button .icon.is-small{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-.5em - 1px);margin-right:calc(-.5em - 1px)}.button.is-hovered,.button:hover{border-color:#b5b5b5;color:#363636}.button.is-focused,.button:focus{border-color:#3273dc;color:#363636}.button.is-focused:not(:active),.button:focus:not(:active){box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.button.is-active,.button:active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#4a4a4a;text-decoration:underline}.button.is-text.is-focused,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text:hover{background-color:#f5f5f5;color:#363636}.button.is-text.is-active,.button.is-text:active{background-color:#e8e8e8;color:#363636}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-ghost{background:0 0;border-color:transparent;color:#3273dc;text-decoration:none}.button.is-ghost.is-hovered,.button.is-ghost:hover{color:#3273dc;text-decoration:underline}.button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}.button.is-white.is-hovered,.button.is-white:hover{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white.is-focused,.button.is-white:focus{border-color:transparent;color:#0a0a0a}.button.is-white.is-focused:not(:active),.button.is-white:focus:not(:active){box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.button.is-white.is-active,.button.is-white:active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:#fff;border-color:transparent;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-hovered,.button.is-white.is-inverted:hover{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a!important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined.is-focused,.button.is-white.is-outlined.is-hovered,.button.is-white.is-outlined:focus,.button.is-white.is-outlined:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-white.is-outlined.is-loading.is-focused::after,.button.is-white.is-outlined.is-loading.is-hovered::after,.button.is-white.is-outlined.is-loading:focus::after,.button.is-white.is-outlined.is-loading:hover::after{border-color:transparent transparent #0a0a0a #0a0a0a!important}.button.is-white.is-outlined[disabled],fieldset[disabled] .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined.is-focused,.button.is-white.is-inverted.is-outlined.is-hovered,.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined:hover{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-white.is-inverted.is-outlined.is-loading:focus::after,.button.is-white.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}.button.is-black.is-hovered,.button.is-black:hover{background-color:#040404;border-color:transparent;color:#fff}.button.is-black.is-focused,.button.is-black:focus{border-color:transparent;color:#fff}.button.is-black.is-focused:not(:active),.button.is-black:focus:not(:active){box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.button.is-black.is-active,.button.is-black:active{background-color:#000;border-color:transparent;color:#fff}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:#0a0a0a;border-color:transparent;box-shadow:none}.button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-hovered,.button.is-black.is-inverted:hover{background-color:#f2f2f2}.button.is-black.is-inverted[disabled],fieldset[disabled] .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined.is-focused,.button.is-black.is-outlined.is-hovered,.button.is-black.is-outlined:focus,.button.is-black.is-outlined:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a!important}.button.is-black.is-outlined.is-loading.is-focused::after,.button.is-black.is-outlined.is-loading.is-hovered::after,.button.is-black.is-outlined.is-loading:focus::after,.button.is-black.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-black.is-outlined[disabled],fieldset[disabled] .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined.is-focused,.button.is-black.is-inverted.is-outlined.is-hovered,.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined:hover{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-black.is-inverted.is-outlined.is-loading:focus::after,.button.is-black.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #0a0a0a #0a0a0a!important}.button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light.is-hovered,.button.is-light:hover{background-color:#eee;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light.is-focused,.button.is-light:focus{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light.is-focused:not(:active),.button.is-light:focus:not(:active){box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.button.is-light.is-active,.button.is-light:active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#f5f5f5;border-color:transparent;box-shadow:none}.button.is-light.is-inverted{background-color:rgba(0,0,0,.7);color:#f5f5f5}.button.is-light.is-inverted.is-hovered,.button.is-light.is-inverted:hover{background-color:rgba(0,0,0,.7)}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:rgba(0,0,0,.7);border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined.is-focused,.button.is-light.is-outlined.is-hovered,.button.is-light.is-outlined:focus,.button.is-light.is-outlined:hover{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5!important}.button.is-light.is-outlined.is-loading.is-focused::after,.button.is-light.is-outlined.is-loading.is-hovered::after,.button.is-light.is-outlined.is-loading:focus::after,.button.is-light.is-outlined.is-loading:hover::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);color:rgba(0,0,0,.7)}.button.is-light.is-inverted.is-outlined.is-focused,.button.is-light.is-inverted.is-outlined.is-hovered,.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined:hover{background-color:rgba(0,0,0,.7);color:#f5f5f5}.button.is-light.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-light.is-inverted.is-outlined.is-loading:focus::after,.button.is-light.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #f5f5f5 #f5f5f5!important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);box-shadow:none;color:rgba(0,0,0,.7)}.button.is-dark{background-color:#363636;border-color:transparent;color:#fff}.button.is-dark.is-hovered,.button.is-dark:hover{background-color:#2f2f2f;border-color:transparent;color:#fff}.button.is-dark.is-focused,.button.is-dark:focus{border-color:transparent;color:#fff}.button.is-dark.is-focused:not(:active),.button.is-dark:focus:not(:active){box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.button.is-dark.is-active,.button.is-dark:active{background-color:#292929;border-color:transparent;color:#fff}.button.is-dark[disabled],fieldset[disabled] .button.is-dark{background-color:#363636;border-color:transparent;box-shadow:none}.button.is-dark.is-inverted{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-hovered,.button.is-dark.is-inverted:hover{background-color:#f2f2f2}.button.is-dark.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-dark.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined.is-focused,.button.is-dark.is-outlined.is-hovered,.button.is-dark.is-outlined:focus,.button.is-dark.is-outlined:hover{background-color:#363636;border-color:#363636;color:#fff}.button.is-dark.is-outlined.is-loading::after{border-color:transparent transparent #363636 #363636!important}.button.is-dark.is-outlined.is-loading.is-focused::after,.button.is-dark.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-outlined.is-loading:focus::after,.button.is-dark.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-dark.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-dark.is-inverted.is-outlined.is-focused,.button.is-dark.is-inverted.is-outlined.is-hovered,.button.is-dark.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined:hover{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-inverted.is-outlined.is-loading:focus::after,.button.is-dark.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #363636 #363636!important}.button.is-dark.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary{background-color:#00d1b2;border-color:transparent;color:#fff}.button.is-primary.is-hovered,.button.is-primary:hover{background-color:#00c4a7;border-color:transparent;color:#fff}.button.is-primary.is-focused,.button.is-primary:focus{border-color:transparent;color:#fff}.button.is-primary.is-focused:not(:active),.button.is-primary:focus:not(:active){box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.button.is-primary.is-active,.button.is-primary:active{background-color:#00b89c;border-color:transparent;color:#fff}.button.is-primary[disabled],fieldset[disabled] .button.is-primary{background-color:#00d1b2;border-color:transparent;box-shadow:none}.button.is-primary.is-inverted{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted.is-hovered,.button.is-primary.is-inverted:hover{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled],fieldset[disabled] .button.is-primary.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#00d1b2}.button.is-primary.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;color:#00d1b2}.button.is-primary.is-outlined.is-focused,.button.is-primary.is-outlined.is-hovered,.button.is-primary.is-outlined:focus,.button.is-primary.is-outlined:hover{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.button.is-primary.is-outlined.is-loading::after{border-color:transparent transparent #00d1b2 #00d1b2!important}.button.is-primary.is-outlined.is-loading.is-focused::after,.button.is-primary.is-outlined.is-loading.is-hovered::after,.button.is-primary.is-outlined.is-loading:focus::after,.button.is-primary.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-primary.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;box-shadow:none;color:#00d1b2}.button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined.is-focused,.button.is-primary.is-inverted.is-outlined.is-hovered,.button.is-primary.is-inverted.is-outlined:focus,.button.is-primary.is-inverted.is-outlined:hover{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-primary.is-inverted.is-outlined.is-loading:focus::after,.button.is-primary.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #00d1b2 #00d1b2!important}.button.is-primary.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary.is-light{background-color:#ebfffc;color:#00947e}.button.is-primary.is-light.is-hovered,.button.is-primary.is-light:hover{background-color:#defffa;border-color:transparent;color:#00947e}.button.is-primary.is-light.is-active,.button.is-primary.is-light:active{background-color:#d1fff8;border-color:transparent;color:#00947e}.button.is-link{background-color:#3273dc;border-color:transparent;color:#fff}.button.is-link.is-hovered,.button.is-link:hover{background-color:#276cda;border-color:transparent;color:#fff}.button.is-link.is-focused,.button.is-link:focus{border-color:transparent;color:#fff}.button.is-link.is-focused:not(:active),.button.is-link:focus:not(:active){box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.button.is-link.is-active,.button.is-link:active{background-color:#2366d1;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#3273dc;border-color:transparent;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#3273dc}.button.is-link.is-inverted.is-hovered,.button.is-link.is-inverted:hover{background-color:#f2f2f2}.button.is-link.is-inverted[disabled],fieldset[disabled] .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#3273dc}.button.is-link.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-link.is-outlined{background-color:transparent;border-color:#3273dc;color:#3273dc}.button.is-link.is-outlined.is-focused,.button.is-link.is-outlined.is-hovered,.button.is-link.is-outlined:focus,.button.is-link.is-outlined:hover{background-color:#3273dc;border-color:#3273dc;color:#fff}.button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #3273dc #3273dc!important}.button.is-link.is-outlined.is-loading.is-focused::after,.button.is-link.is-outlined.is-loading.is-hovered::after,.button.is-link.is-outlined.is-loading:focus::after,.button.is-link.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-link.is-outlined[disabled],fieldset[disabled] .button.is-link.is-outlined{background-color:transparent;border-color:#3273dc;box-shadow:none;color:#3273dc}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined.is-focused,.button.is-link.is-inverted.is-outlined.is-hovered,.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined:hover{background-color:#fff;color:#3273dc}.button.is-link.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-link.is-inverted.is-outlined.is-loading:focus::after,.button.is-link.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #3273dc #3273dc!important}.button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-link.is-light{background-color:#eef3fc;color:#2160c4}.button.is-link.is-light.is-hovered,.button.is-link.is-light:hover{background-color:#e3ecfa;border-color:transparent;color:#2160c4}.button.is-link.is-light.is-active,.button.is-link.is-light:active{background-color:#d8e4f8;border-color:transparent;color:#2160c4}.button.is-info{background-color:#3298dc;border-color:transparent;color:#fff}.button.is-info.is-hovered,.button.is-info:hover{background-color:#2793da;border-color:transparent;color:#fff}.button.is-info.is-focused,.button.is-info:focus{border-color:transparent;color:#fff}.button.is-info.is-focused:not(:active),.button.is-info:focus:not(:active){box-shadow:0 0 0 .125em rgba(50,152,220,.25)}.button.is-info.is-active,.button.is-info:active{background-color:#238cd1;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#3298dc;border-color:transparent;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#3298dc}.button.is-info.is-inverted.is-hovered,.button.is-info.is-inverted:hover{background-color:#f2f2f2}.button.is-info.is-inverted[disabled],fieldset[disabled] .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#3298dc}.button.is-info.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-info.is-outlined{background-color:transparent;border-color:#3298dc;color:#3298dc}.button.is-info.is-outlined.is-focused,.button.is-info.is-outlined.is-hovered,.button.is-info.is-outlined:focus,.button.is-info.is-outlined:hover{background-color:#3298dc;border-color:#3298dc;color:#fff}.button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #3298dc #3298dc!important}.button.is-info.is-outlined.is-loading.is-focused::after,.button.is-info.is-outlined.is-loading.is-hovered::after,.button.is-info.is-outlined.is-loading:focus::after,.button.is-info.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-info.is-outlined[disabled],fieldset[disabled] .button.is-info.is-outlined{background-color:transparent;border-color:#3298dc;box-shadow:none;color:#3298dc}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined.is-focused,.button.is-info.is-inverted.is-outlined.is-hovered,.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined:hover{background-color:#fff;color:#3298dc}.button.is-info.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-info.is-inverted.is-outlined.is-loading:focus::after,.button.is-info.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #3298dc #3298dc!important}.button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-info.is-light{background-color:#eef6fc;color:#1d72aa}.button.is-info.is-light.is-hovered,.button.is-info.is-light:hover{background-color:#e3f1fa;border-color:transparent;color:#1d72aa}.button.is-info.is-light.is-active,.button.is-info.is-light:active{background-color:#d8ebf8;border-color:transparent;color:#1d72aa}.button.is-success{background-color:#48c774;border-color:transparent;color:#fff}.button.is-success.is-hovered,.button.is-success:hover{background-color:#3ec46d;border-color:transparent;color:#fff}.button.is-success.is-focused,.button.is-success:focus{border-color:transparent;color:#fff}.button.is-success.is-focused:not(:active),.button.is-success:focus:not(:active){box-shadow:0 0 0 .125em rgba(72,199,116,.25)}.button.is-success.is-active,.button.is-success:active{background-color:#3abb67;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#48c774;border-color:transparent;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#48c774}.button.is-success.is-inverted.is-hovered,.button.is-success.is-inverted:hover{background-color:#f2f2f2}.button.is-success.is-inverted[disabled],fieldset[disabled] .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#48c774}.button.is-success.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-success.is-outlined{background-color:transparent;border-color:#48c774;color:#48c774}.button.is-success.is-outlined.is-focused,.button.is-success.is-outlined.is-hovered,.button.is-success.is-outlined:focus,.button.is-success.is-outlined:hover{background-color:#48c774;border-color:#48c774;color:#fff}.button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #48c774 #48c774!important}.button.is-success.is-outlined.is-loading.is-focused::after,.button.is-success.is-outlined.is-loading.is-hovered::after,.button.is-success.is-outlined.is-loading:focus::after,.button.is-success.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-success.is-outlined[disabled],fieldset[disabled] .button.is-success.is-outlined{background-color:transparent;border-color:#48c774;box-shadow:none;color:#48c774}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined.is-focused,.button.is-success.is-inverted.is-outlined.is-hovered,.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined:hover{background-color:#fff;color:#48c774}.button.is-success.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-success.is-inverted.is-outlined.is-loading:focus::after,.button.is-success.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #48c774 #48c774!important}.button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-success.is-light{background-color:#effaf3;color:#257942}.button.is-success.is-light.is-hovered,.button.is-success.is-light:hover{background-color:#e6f7ec;border-color:transparent;color:#257942}.button.is-success.is-light.is-active,.button.is-success.is-light:active{background-color:#dcf4e4;border-color:transparent;color:#257942}.button.is-warning{background-color:#ffdd57;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning.is-hovered,.button.is-warning:hover{background-color:#ffdb4a;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning.is-focused,.button.is-warning:focus{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning.is-focused:not(:active),.button.is-warning:focus:not(:active){box-shadow:0 0 0 .125em rgba(255,221,87,.25)}.button.is-warning.is-active,.button.is-warning:active{background-color:#ffd83d;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#ffdd57;border-color:transparent;box-shadow:none}.button.is-warning.is-inverted{background-color:rgba(0,0,0,.7);color:#ffdd57}.button.is-warning.is-inverted.is-hovered,.button.is-warning.is-inverted:hover{background-color:rgba(0,0,0,.7)}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:rgba(0,0,0,.7);border-color:transparent;box-shadow:none;color:#ffdd57}.button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;color:#ffdd57}.button.is-warning.is-outlined.is-focused,.button.is-warning.is-outlined.is-hovered,.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined:hover{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,.7)}.button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #ffdd57 #ffdd57!important}.button.is-warning.is-outlined.is-loading.is-focused::after,.button.is-warning.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-outlined.is-loading:focus::after,.button.is-warning.is-outlined.is-loading:hover::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;box-shadow:none;color:#ffdd57}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);color:rgba(0,0,0,.7)}.button.is-warning.is-inverted.is-outlined.is-focused,.button.is-warning.is-inverted.is-outlined.is-hovered,.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined:hover{background-color:rgba(0,0,0,.7);color:#ffdd57}.button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-inverted.is-outlined.is-loading:focus::after,.button.is-warning.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #ffdd57 #ffdd57!important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);box-shadow:none;color:rgba(0,0,0,.7)}.button.is-warning.is-light{background-color:#fffbeb;color:#947600}.button.is-warning.is-light.is-hovered,.button.is-warning.is-light:hover{background-color:#fff8de;border-color:transparent;color:#947600}.button.is-warning.is-light.is-active,.button.is-warning.is-light:active{background-color:#fff6d1;border-color:transparent;color:#947600}.button.is-danger{background-color:#f14668;border-color:transparent;color:#fff}.button.is-danger.is-hovered,.button.is-danger:hover{background-color:#f03a5f;border-color:transparent;color:#fff}.button.is-danger.is-focused,.button.is-danger:focus{border-color:transparent;color:#fff}.button.is-danger.is-focused:not(:active),.button.is-danger:focus:not(:active){box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.button.is-danger.is-active,.button.is-danger:active{background-color:#ef2e55;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#f14668;border-color:transparent;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#f14668}.button.is-danger.is-inverted.is-hovered,.button.is-danger.is-inverted:hover{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled],fieldset[disabled] .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#f14668}.button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;color:#f14668}.button.is-danger.is-outlined.is-focused,.button.is-danger.is-outlined.is-hovered,.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined:hover{background-color:#f14668;border-color:#f14668;color:#fff}.button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #f14668 #f14668!important}.button.is-danger.is-outlined.is-loading.is-focused::after,.button.is-danger.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-outlined.is-loading:focus::after,.button.is-danger.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-danger.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;box-shadow:none;color:#f14668}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined.is-focused,.button.is-danger.is-inverted.is-outlined.is-hovered,.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined:hover{background-color:#fff;color:#f14668}.button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-inverted.is-outlined.is-loading:focus::after,.button.is-danger.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #f14668 #f14668!important}.button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.button.is-danger.is-light.is-hovered,.button.is-danger.is-light:hover{background-color:#fde0e6;border-color:transparent;color:#cc0f35}.button.is-danger.is-light.is-active,.button.is-danger.is-light:active{background-color:#fcd4dc;border-color:transparent;color:#cc0f35}.button.is-small{font-size:.75rem}.button.is-small:not(.is-rounded){border-radius:2px}.button.is-normal{font-size:1rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{color:transparent!important;pointer-events:none}.button.is-loading::after{position:absolute;left:calc(50% - (1em / 2));top:calc(50% - (1em / 2));position:absolute!important}.button.is-static{background-color:#f5f5f5;border-color:#dbdbdb;color:#7a7a7a;box-shadow:none;pointer-events:none}.button.is-rounded{border-radius:290486px;padding-left:calc(1em + .25em);padding-right:calc(1em + .25em)}.buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.buttons .button{margin-bottom:.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}.buttons:last-child{margin-bottom:-.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:2px}.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button.is-hovered,.buttons.has-addons .button:hover{z-index:2}.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-focused,.buttons.has-addons .button.is-selected,.buttons.has-addons .button:active,.buttons.has-addons .button:focus{z-index:3}.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button.is-selected:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button:focus:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.buttons.is-right{justify-content:flex-end}.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}.container.is-fluid{max-width:none!important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width:1024px){.container{max-width:960px}}@media screen and (max-width:1215px){.container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width:1407px){.container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width:1216px){.container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width:1408px){.container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.content li+li{margin-top:.25em}.content blockquote:not(:last-child),.content dl:not(:last-child),.content ol:not(:last-child),.content p:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child),.content ul:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:#363636;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:.8em}.content h5{font-size:1.125em;margin-bottom:.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style-position:outside;margin-left:2em;margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ol:not([type]).is-lower-alpha{list-style-type:lower-alpha}.content ol:not([type]).is-lower-roman{list-style-type:lower-roman}.content ol:not([type]).is-upper-alpha{list-style-type:upper-alpha}.content ol:not([type]).is-upper-roman{list-style-type:upper-roman}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content figure figcaption{font-style:italic}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:1.25em 1.5em;white-space:pre;word-wrap:normal}.content sub,.content sup{font-size:75%}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.content table th{color:#363636}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:0 0 2px;color:#363636}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#363636}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small{font-size:.75rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}.icon-text .icon{flex-grow:0;flex-shrink:0}.icon-text .icon:not(:last-child){margin-right:.25em}.icon-text .icon:not(:first-child){margin-left:.25em}div.icon-text{display:flex}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:290486px}.image.is-fullwidth{width:100%}.image.is-16by9 .has-ratio,.image.is-16by9 img,.image.is-1by1 .has-ratio,.image.is-1by1 img,.image.is-1by2 .has-ratio,.image.is-1by2 img,.image.is-1by3 .has-ratio,.image.is-1by3 img,.image.is-2by1 .has-ratio,.image.is-2by1 img,.image.is-2by3 .has-ratio,.image.is-2by3 img,.image.is-3by1 .has-ratio,.image.is-3by1 img,.image.is-3by2 .has-ratio,.image.is-3by2 img,.image.is-3by4 .has-ratio,.image.is-3by4 img,.image.is-3by5 .has-ratio,.image.is-3by5 img,.image.is-4by3 .has-ratio,.image.is-4by3 img,.image.is-4by5 .has-ratio,.image.is-4by5 img,.image.is-5by3 .has-ratio,.image.is-5by3 img,.image.is-5by4 .has-ratio,.image.is-5by4 img,.image.is-9by16 .has-ratio,.image.is-9by16 img,.image.is-square .has-ratio,.image.is-square img{height:100%;width:100%}.image.is-1by1,.image.is-square{padding-top:100%}.image.is-5by4{padding-top:80%}.image.is-4by3{padding-top:75%}.image.is-3by2{padding-top:66.6666%}.image.is-5by3{padding-top:60%}.image.is-16by9{padding-top:56.25%}.image.is-2by1{padding-top:50%}.image.is-3by1{padding-top:33.3333%}.image.is-4by5{padding-top:125%}.image.is-3by4{padding-top:133.3333%}.image.is-2by3{padding-top:150%}.image.is-3by5{padding-top:166.6666%}.image.is-9by16{padding-top:177.7777%}.image.is-1by2{padding-top:200%}.image.is-1by3{padding-top:300%}.image.is-16x16{height:16px;width:16px}.image.is-24x24{height:24px;width:24px}.image.is-32x32{height:32px;width:32px}.image.is-48x48{height:48px;width:48px}.image.is-64x64{height:64px;width:64px}.image.is-96x96{height:96px;width:96px}.image.is-128x128{height:128px;width:128px}.notification{background-color:#f5f5f5;border-radius:4px;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#fff}.notification pre code{background:0 0}.notification>.delete{right:.5rem;position:absolute;top:.5rem}.notification .content,.notification .subtitle,.notification .title{color:currentColor}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.notification.is-dark{background-color:#363636;color:#fff}.notification.is-primary{background-color:#00d1b2;color:#fff}.notification.is-primary.is-light{background-color:#ebfffc;color:#00947e}.notification.is-link{background-color:#3273dc;color:#fff}.notification.is-link.is-light{background-color:#eef3fc;color:#2160c4}.notification.is-info{background-color:#3298dc;color:#fff}.notification.is-info.is-light{background-color:#eef6fc;color:#1d72aa}.notification.is-success{background-color:#48c774;color:#fff}.notification.is-success.is-light{background-color:#effaf3;color:#257942}.notification.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.notification.is-warning.is-light{background-color:#fffbeb;color:#947600}.notification.is-danger{background-color:#f14668;color:#fff}.notification.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:290486px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#ededed}.progress::-webkit-progress-value{background-color:#4a4a4a}.progress::-moz-progress-bar{background-color:#4a4a4a}.progress::-ms-fill{background-color:#4a4a4a;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-white:indeterminate{background-image:linear-gradient(to right,#fff 30%,#ededed 30%)}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-black::-ms-fill{background-color:#0a0a0a}.progress.is-black:indeterminate{background-image:linear-gradient(to right,#0a0a0a 30%,#ededed 30%)}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(to right,#f5f5f5 30%,#ededed 30%)}.progress.is-dark::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill{background-color:#363636}.progress.is-dark:indeterminate{background-image:linear-gradient(to right,#363636 30%,#ededed 30%)}.progress.is-primary::-webkit-progress-value{background-color:#00d1b2}.progress.is-primary::-moz-progress-bar{background-color:#00d1b2}.progress.is-primary::-ms-fill{background-color:#00d1b2}.progress.is-primary:indeterminate{background-image:linear-gradient(to right,#00d1b2 30%,#ededed 30%)}.progress.is-link::-webkit-progress-value{background-color:#3273dc}.progress.is-link::-moz-progress-bar{background-color:#3273dc}.progress.is-link::-ms-fill{background-color:#3273dc}.progress.is-link:indeterminate{background-image:linear-gradient(to right,#3273dc 30%,#ededed 30%)}.progress.is-info::-webkit-progress-value{background-color:#3298dc}.progress.is-info::-moz-progress-bar{background-color:#3298dc}.progress.is-info::-ms-fill{background-color:#3298dc}.progress.is-info:indeterminate{background-image:linear-gradient(to right,#3298dc 30%,#ededed 30%)}.progress.is-success::-webkit-progress-value{background-color:#48c774}.progress.is-success::-moz-progress-bar{background-color:#48c774}.progress.is-success::-ms-fill{background-color:#48c774}.progress.is-success:indeterminate{background-image:linear-gradient(to right,#48c774 30%,#ededed 30%)}.progress.is-warning::-webkit-progress-value{background-color:#ffdd57}.progress.is-warning::-moz-progress-bar{background-color:#ffdd57}.progress.is-warning::-ms-fill{background-color:#ffdd57}.progress.is-warning:indeterminate{background-image:linear-gradient(to right,#ffdd57 30%,#ededed 30%)}.progress.is-danger::-webkit-progress-value{background-color:#f14668}.progress.is-danger::-moz-progress-bar{background-color:#f14668}.progress.is-danger::-ms-fill{background-color:#f14668}.progress.is-danger:indeterminate{background-image:linear-gradient(to right,#f14668 30%,#ededed 30%)}.progress:indeterminate{-webkit-animation-duration:1.5s;animation-duration:1.5s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:moveIndeterminate;animation-name:moveIndeterminate;-webkit-animation-timing-function:linear;animation-timing-function:linear;background-color:#ededed;background-image:linear-gradient(to right,#4a4a4a 30%,#ededed 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@-webkit-keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}.table{background-color:#fff;color:#363636}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#fff}.table td.is-primary,.table th.is-primary{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.table td.is-link,.table th.is-link{background-color:#3273dc;border-color:#3273dc;color:#fff}.table td.is-info,.table th.is-info{background-color:#3298dc;border-color:#3298dc;color:#fff}.table td.is-success,.table th.is-success{background-color:#48c774;border-color:#48c774;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,.7)}.table td.is-danger,.table th.is-danger{background-color:#f14668;border-color:#f14668;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#00d1b2;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table td.is-vcentered,.table th.is-vcentered{vertical-align:middle}.table th{color:#363636}.table th:not([align]){text-align:inherit}.table tr.is-selected{background-color:#00d1b2;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead{background-color:transparent}.table thead td,.table thead th{border-width:0 0 2px;color:#363636}.table tfoot{background-color:transparent}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#363636}.table tbody{background-color:transparent}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#f5f5f5}.table.is-narrow td,.table.is-narrow th{padding:.25em .5em}.table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#fafafa}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.tags .tag{margin-bottom:.5rem}.tags .tag:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.are-medium .tag:not(.is-normal):not(.is-large){font-size:1rem}.tags.are-large .tag:not(.is-normal):not(.is-medium){font-size:1.25rem}.tags.is-centered{justify-content:center}.tags.is-centered .tag{margin-right:.25rem;margin-left:.25rem}.tags.is-right{justify-content:flex-end}.tags.is-right .tag:not(:first-child){margin-left:.5rem}.tags.is-right .tag:not(:last-child){margin-right:0}.tags.has-addons .tag{margin-right:0}.tags.has-addons .tag:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.tags.has-addons .tag:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tag:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#4a4a4a;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:.75em;padding-right:.75em;white-space:nowrap}.tag:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}.tag:not(body).is-white{background-color:#fff;color:#0a0a0a}.tag:not(body).is-black{background-color:#0a0a0a;color:#fff}.tag:not(body).is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.tag:not(body).is-dark{background-color:#363636;color:#fff}.tag:not(body).is-primary{background-color:#00d1b2;color:#fff}.tag:not(body).is-primary.is-light{background-color:#ebfffc;color:#00947e}.tag:not(body).is-link{background-color:#3273dc;color:#fff}.tag:not(body).is-link.is-light{background-color:#eef3fc;color:#2160c4}.tag:not(body).is-info{background-color:#3298dc;color:#fff}.tag:not(body).is-info.is-light{background-color:#eef6fc;color:#1d72aa}.tag:not(body).is-success{background-color:#48c774;color:#fff}.tag:not(body).is-success.is-light{background-color:#effaf3;color:#257942}.tag:not(body).is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.tag:not(body).is-warning.is-light{background-color:#fffbeb;color:#947600}.tag:not(body).is-danger{background-color:#f14668;color:#fff}.tag:not(body).is-danger.is-light{background-color:#feecf0;color:#cc0f35}.tag:not(body).is-normal{font-size:.75rem}.tag:not(body).is-medium{font-size:1rem}.tag:not(body).is-large{font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}.tag:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}.tag:not(body).is-delete{margin-left:1px;padding:0;position:relative;width:2em}.tag:not(body).is-delete::after,.tag:not(body).is-delete::before{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.tag:not(body).is-delete::before{height:1px;width:50%}.tag:not(body).is-delete::after{height:50%;width:1px}.tag:not(body).is-delete:focus,.tag:not(body).is-delete:hover{background-color:#e8e8e8}.tag:not(body).is-delete:active{background-color:#dbdbdb}.tag:not(body).is-rounded{border-radius:290486px}a.tag:hover{text-decoration:underline}.subtitle,.title{word-break:break-word}.subtitle em,.subtitle span,.title em,.title span{font-weight:inherit}.subtitle sub,.title sub{font-size:.75em}.subtitle sup,.title sup{font-size:.75em}.subtitle .tag,.title .tag{vertical-align:middle}.title{color:#363636;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title+.highlight{margin-top:-.75rem}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#363636;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.highlight{font-weight:400;max-width:100%;overflow:hidden;padding:0}.highlight pre{overflow:auto;max-width:100%}.number{align-items:center;background-color:#f5f5f5;border-radius:290486px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:.25rem .5rem;text-align:center;vertical-align:top}.input,.select select,.textarea{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#363636}.input::-moz-placeholder,.select select::-moz-placeholder,.textarea::-moz-placeholder{color:rgba(54,54,54,.3)}.input::-webkit-input-placeholder,.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:rgba(54,54,54,.3)}.input:-moz-placeholder,.select select:-moz-placeholder,.textarea:-moz-placeholder{color:rgba(54,54,54,.3)}.input:-ms-input-placeholder,.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:rgba(54,54,54,.3)}.input:hover,.is-hovered.input,.is-hovered.textarea,.select select.is-hovered,.select select:hover,.textarea:hover{border-color:#b5b5b5}.input:active,.input:focus,.is-active.input,.is-active.textarea,.is-focused.input,.is-focused.textarea,.select select.is-active,.select select.is-focused,.select select:active,.select select:focus,.textarea:active,.textarea:focus{border-color:#3273dc;box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.input[disabled],.select fieldset[disabled] select,.select select[disabled],.textarea[disabled],fieldset[disabled] .input,fieldset[disabled] .select select,fieldset[disabled] .textarea{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#7a7a7a}.input[disabled]::-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,.select select[disabled]::-moz-placeholder,.textarea[disabled]::-moz-placeholder,fieldset[disabled] .input::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder{color:rgba(122,122,122,.3)}.input[disabled]::-webkit-input-placeholder,.select fieldset[disabled] select::-webkit-input-placeholder,.select select[disabled]::-webkit-input-placeholder,.textarea[disabled]::-webkit-input-placeholder,fieldset[disabled] .input::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,fieldset[disabled] .textarea::-webkit-input-placeholder{color:rgba(122,122,122,.3)}.input[disabled]:-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,.select select[disabled]:-moz-placeholder,.textarea[disabled]:-moz-placeholder,fieldset[disabled] .input:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder{color:rgba(122,122,122,.3)}.input[disabled]:-ms-input-placeholder,.select fieldset[disabled] select:-ms-input-placeholder,.select select[disabled]:-ms-input-placeholder,.textarea[disabled]:-ms-input-placeholder,fieldset[disabled] .input:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,fieldset[disabled] .textarea:-ms-input-placeholder{color:rgba(122,122,122,.3)}.input,.textarea{box-shadow:inset 0 .0625em .125em rgba(10,10,10,.05);max-width:100%;width:100%}.input[readonly],.textarea[readonly]{box-shadow:none}.is-white.input,.is-white.textarea{border-color:#fff}.is-white.input:active,.is-white.input:focus,.is-white.is-active.input,.is-white.is-active.textarea,.is-white.is-focused.input,.is-white.is-focused.textarea,.is-white.textarea:active,.is-white.textarea:focus{box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.is-black.input,.is-black.textarea{border-color:#0a0a0a}.is-black.input:active,.is-black.input:focus,.is-black.is-active.input,.is-black.is-active.textarea,.is-black.is-focused.input,.is-black.is-focused.textarea,.is-black.textarea:active,.is-black.textarea:focus{box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.is-light.input,.is-light.textarea{border-color:#f5f5f5}.is-light.input:active,.is-light.input:focus,.is-light.is-active.input,.is-light.is-active.textarea,.is-light.is-focused.input,.is-light.is-focused.textarea,.is-light.textarea:active,.is-light.textarea:focus{box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.is-dark.input,.is-dark.textarea{border-color:#363636}.is-dark.input:active,.is-dark.input:focus,.is-dark.is-active.input,.is-dark.is-active.textarea,.is-dark.is-focused.input,.is-dark.is-focused.textarea,.is-dark.textarea:active,.is-dark.textarea:focus{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.is-primary.input,.is-primary.textarea{border-color:#00d1b2}.is-primary.input:active,.is-primary.input:focus,.is-primary.is-active.input,.is-primary.is-active.textarea,.is-primary.is-focused.input,.is-primary.is-focused.textarea,.is-primary.textarea:active,.is-primary.textarea:focus{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.is-link.input,.is-link.textarea{border-color:#3273dc}.is-link.input:active,.is-link.input:focus,.is-link.is-active.input,.is-link.is-active.textarea,.is-link.is-focused.input,.is-link.is-focused.textarea,.is-link.textarea:active,.is-link.textarea:focus{box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.is-info.input,.is-info.textarea{border-color:#3298dc}.is-info.input:active,.is-info.input:focus,.is-info.is-active.input,.is-info.is-active.textarea,.is-info.is-focused.input,.is-info.is-focused.textarea,.is-info.textarea:active,.is-info.textarea:focus{box-shadow:0 0 0 .125em rgba(50,152,220,.25)}.is-success.input,.is-success.textarea{border-color:#48c774}.is-success.input:active,.is-success.input:focus,.is-success.is-active.input,.is-success.is-active.textarea,.is-success.is-focused.input,.is-success.is-focused.textarea,.is-success.textarea:active,.is-success.textarea:focus{box-shadow:0 0 0 .125em rgba(72,199,116,.25)}.is-warning.input,.is-warning.textarea{border-color:#ffdd57}.is-warning.input:active,.is-warning.input:focus,.is-warning.is-active.input,.is-warning.is-active.textarea,.is-warning.is-focused.input,.is-warning.is-focused.textarea,.is-warning.textarea:active,.is-warning.textarea:focus{box-shadow:0 0 0 .125em rgba(255,221,87,.25)}.is-danger.input,.is-danger.textarea{border-color:#f14668}.is-danger.input:active,.is-danger.input:focus,.is-danger.is-active.input,.is-danger.is-active.textarea,.is-danger.is-focused.input,.is-danger.is-focused.textarea,.is-danger.textarea:active,.is-danger.textarea:focus{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.is-small.input,.is-small.textarea{border-radius:2px;font-size:.75rem}.is-medium.input,.is-medium.textarea{font-size:1.25rem}.is-large.input,.is-large.textarea{font-size:1.5rem}.is-fullwidth.input,.is-fullwidth.textarea{display:block;width:100%}.is-inline.input,.is-inline.textarea{display:inline;width:auto}.input.is-rounded{border-radius:290486px;padding-left:calc(calc(.75em - 1px) + .375em);padding-right:calc(calc(.75em - 1px) + .375em)}.input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.textarea[rows]{height:initial}.textarea.has-fixed-size{resize:none}.checkbox,.radio{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.checkbox input,.radio input{cursor:pointer}.checkbox:hover,.radio:hover{color:#363636}.checkbox input[disabled],.checkbox[disabled],.radio input[disabled],.radio[disabled],fieldset[disabled] .checkbox,fieldset[disabled] .radio{color:#7a7a7a;cursor:not-allowed}.radio+.radio{margin-left:.5em}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.5em}.select:not(.is-multiple):not(.is-loading)::after{border-color:#3273dc;right:1.125em;z-index:4}.select.is-rounded select{border-radius:290486px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:0}.select select::-ms-expand{display:none}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#f5f5f5}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:.5em 1em}.select:not(.is-multiple):not(.is-loading):hover::after{border-color:#363636}.select.is-white:not(:hover)::after{border-color:#fff}.select.is-white select{border-color:#fff}.select.is-white select.is-hovered,.select.is-white select:hover{border-color:#f2f2f2}.select.is-white select.is-active,.select.is-white select.is-focused,.select.is-white select:active,.select.is-white select:focus{box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.select.is-black:not(:hover)::after{border-color:#0a0a0a}.select.is-black select{border-color:#0a0a0a}.select.is-black select.is-hovered,.select.is-black select:hover{border-color:#000}.select.is-black select.is-active,.select.is-black select.is-focused,.select.is-black select:active,.select.is-black select:focus{box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.select.is-light:not(:hover)::after{border-color:#f5f5f5}.select.is-light select{border-color:#f5f5f5}.select.is-light select.is-hovered,.select.is-light select:hover{border-color:#e8e8e8}.select.is-light select.is-active,.select.is-light select.is-focused,.select.is-light select:active,.select.is-light select:focus{box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.select.is-dark:not(:hover)::after{border-color:#363636}.select.is-dark select{border-color:#363636}.select.is-dark select.is-hovered,.select.is-dark select:hover{border-color:#292929}.select.is-dark select.is-active,.select.is-dark select.is-focused,.select.is-dark select:active,.select.is-dark select:focus{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.select.is-primary:not(:hover)::after{border-color:#00d1b2}.select.is-primary select{border-color:#00d1b2}.select.is-primary select.is-hovered,.select.is-primary select:hover{border-color:#00b89c}.select.is-primary select.is-active,.select.is-primary select.is-focused,.select.is-primary select:active,.select.is-primary select:focus{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.select.is-link:not(:hover)::after{border-color:#3273dc}.select.is-link select{border-color:#3273dc}.select.is-link select.is-hovered,.select.is-link select:hover{border-color:#2366d1}.select.is-link select.is-active,.select.is-link select.is-focused,.select.is-link select:active,.select.is-link select:focus{box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.select.is-info:not(:hover)::after{border-color:#3298dc}.select.is-info select{border-color:#3298dc}.select.is-info select.is-hovered,.select.is-info select:hover{border-color:#238cd1}.select.is-info select.is-active,.select.is-info select.is-focused,.select.is-info select:active,.select.is-info select:focus{box-shadow:0 0 0 .125em rgba(50,152,220,.25)}.select.is-success:not(:hover)::after{border-color:#48c774}.select.is-success select{border-color:#48c774}.select.is-success select.is-hovered,.select.is-success select:hover{border-color:#3abb67}.select.is-success select.is-active,.select.is-success select.is-focused,.select.is-success select:active,.select.is-success select:focus{box-shadow:0 0 0 .125em rgba(72,199,116,.25)}.select.is-warning:not(:hover)::after{border-color:#ffdd57}.select.is-warning select{border-color:#ffdd57}.select.is-warning select.is-hovered,.select.is-warning select:hover{border-color:#ffd83d}.select.is-warning select.is-active,.select.is-warning select.is-focused,.select.is-warning select:active,.select.is-warning select:focus{box-shadow:0 0 0 .125em rgba(255,221,87,.25)}.select.is-danger:not(:hover)::after{border-color:#f14668}.select.is-danger select{border-color:#f14668}.select.is-danger select.is-hovered,.select.is-danger select:hover{border-color:#ef2e55}.select.is-danger select.is-active,.select.is-danger select.is-focused,.select.is-danger select:active,.select.is-danger select:focus{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.select.is-small{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled::after{border-color:#7a7a7a}.select.is-fullwidth{width:100%}.select.is-fullwidth select{width:100%}.select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:.625em;transform:none}.select.is-loading.is-small:after{font-size:.75rem}.select.is-loading.is-medium:after{font-size:1.25rem}.select.is-loading.is-large:after{font-size:1.5rem}.file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}.file.is-white.is-hovered .file-cta,.file.is-white:hover .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.file.is-white.is-focused .file-cta,.file.is-white:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,255,255,.25);color:#0a0a0a}.file.is-white.is-active .file-cta,.file.is-white:active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}.file.is-black.is-hovered .file-cta,.file.is-black:hover .file-cta{background-color:#040404;border-color:transparent;color:#fff}.file.is-black.is-focused .file-cta,.file.is-black:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(10,10,10,.25);color:#fff}.file.is-black.is-active .file-cta,.file.is-black:active .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light.is-hovered .file-cta,.file.is-light:hover .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light.is-focused .file-cta,.file.is-light:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(245,245,245,.25);color:rgba(0,0,0,.7)}.file.is-light.is-active .file-cta,.file.is-light:active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-dark .file-cta{background-color:#363636;border-color:transparent;color:#fff}.file.is-dark.is-hovered .file-cta,.file.is-dark:hover .file-cta{background-color:#2f2f2f;border-color:transparent;color:#fff}.file.is-dark.is-focused .file-cta,.file.is-dark:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(54,54,54,.25);color:#fff}.file.is-dark.is-active .file-cta,.file.is-dark:active .file-cta{background-color:#292929;border-color:transparent;color:#fff}.file.is-primary .file-cta{background-color:#00d1b2;border-color:transparent;color:#fff}.file.is-primary.is-hovered .file-cta,.file.is-primary:hover .file-cta{background-color:#00c4a7;border-color:transparent;color:#fff}.file.is-primary.is-focused .file-cta,.file.is-primary:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(0,209,178,.25);color:#fff}.file.is-primary.is-active .file-cta,.file.is-primary:active .file-cta{background-color:#00b89c;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#3273dc;border-color:transparent;color:#fff}.file.is-link.is-hovered .file-cta,.file.is-link:hover .file-cta{background-color:#276cda;border-color:transparent;color:#fff}.file.is-link.is-focused .file-cta,.file.is-link:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(50,115,220,.25);color:#fff}.file.is-link.is-active .file-cta,.file.is-link:active .file-cta{background-color:#2366d1;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#3298dc;border-color:transparent;color:#fff}.file.is-info.is-hovered .file-cta,.file.is-info:hover .file-cta{background-color:#2793da;border-color:transparent;color:#fff}.file.is-info.is-focused .file-cta,.file.is-info:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(50,152,220,.25);color:#fff}.file.is-info.is-active .file-cta,.file.is-info:active .file-cta{background-color:#238cd1;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#48c774;border-color:transparent;color:#fff}.file.is-success.is-hovered .file-cta,.file.is-success:hover .file-cta{background-color:#3ec46d;border-color:transparent;color:#fff}.file.is-success.is-focused .file-cta,.file.is-success:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(72,199,116,.25);color:#fff}.file.is-success.is-active .file-cta,.file.is-success:active .file-cta{background-color:#3abb67;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#ffdd57;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning.is-hovered .file-cta,.file.is-warning:hover .file-cta{background-color:#ffdb4a;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning.is-focused .file-cta,.file.is-warning:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,221,87,.25);color:rgba(0,0,0,.7)}.file.is-warning.is-active .file-cta,.file.is-warning:active .file-cta{background-color:#ffd83d;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-danger .file-cta{background-color:#f14668;border-color:transparent;color:#fff}.file.is-danger.is-hovered .file-cta,.file.is-danger:hover .file-cta{background-color:#f03a5f;border-color:transparent;color:#fff}.file.is-danger.is-focused .file-cta,.file.is-danger:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(241,70,104,.25);color:#fff}.file.is-danger.is-active .file-cta,.file.is-danger:active .file-cta{background-color:#ef2e55;border-color:transparent;color:#fff}.file.is-small{font-size:.75rem}.file.is-medium{font-size:1.25rem}.file.is-medium .file-icon .fa{font-size:21px}.file.is-large{font-size:1.5rem}.file.is-large .file-icon .fa{font-size:28px}.file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}.file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}.file.has-name.is-empty .file-cta{border-radius:4px}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{flex-direction:column}.file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:21px}.file.is-boxed.is-small .file-icon .fa{font-size:14px}.file.is-boxed.is-medium .file-icon .fa{font-size:28px}.file.is-boxed.is-large .file-icon .fa{font-size:35px}.file.is-boxed.has-name .file-cta{border-radius:4px 4px 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 4px 4px;border-width:0 1px 1px}.file.is-centered{justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{flex-grow:1;max-width:none}.file.is-right{justify-content:flex-end}.file.is-right .file-cta{border-radius:0 4px 4px 0}.file.is-right .file-name{border-radius:4px 0 0 4px;border-width:1px 0 1px 1px;order:-1}.file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover .file-cta{background-color:#eee;color:#363636}.file-label:hover .file-name{border-color:#d5d5d5}.file-label:active .file-cta{background-color:#e8e8e8;color:#363636}.file-label:active .file-name{border-color:#cfcfcf}.file-input{height:100%;left:0;opacity:0;outline:0;position:absolute;top:0;width:100%}.file-cta,.file-name{border-color:#dbdbdb;border-radius:4px;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:#f5f5f5;color:#4a4a4a}.file-name{border-color:#dbdbdb;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}.file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}.file-icon .fa{font-size:14px}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:.5em}.label.is-small{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#f5f5f5}.help.is-dark{color:#363636}.help.is-primary{color:#00d1b2}.help.is-link{color:#3273dc}.help.is-info{color:#3298dc}.help.is-success{color:#48c774}.help.is-warning{color:#ffdd57}.help.is-danger{color:#f14668}.field:not(:last-child){margin-bottom:.75rem}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]).is-hovered,.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .input:not([disabled]).is-hovered,.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]).is-hovered,.field.has-addons .control .select select:not([disabled]):hover{z-index:2}.field.has-addons .control .button:not([disabled]).is-active,.field.has-addons .control .button:not([disabled]).is-focused,.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .input:not([disabled]).is-active,.field.has-addons .control .input:not([disabled]).is-focused,.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control .select select:not([disabled]).is-active,.field.has-addons .control .select select:not([disabled]).is-focused,.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select:not([disabled]):focus{z-index:3}.field.has-addons .control .button:not([disabled]).is-active:hover,.field.has-addons .control .button:not([disabled]).is-focused:hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .input:not([disabled]).is-active:hover,.field.has-addons .control .input:not([disabled]).is-focused:hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control .select select:not([disabled]).is-active:hover,.field.has-addons .control .select select:not([disabled]).is-focused:hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select:not([disabled]):focus:hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.has-addons.has-addons-centered{justify-content:center}.field.has-addons.has-addons-right{justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}.field.is-grouped{display:flex;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{justify-content:center}.field.is-grouped.is-grouped-right{justify-content:flex-end}.field.is-grouped.is-grouped-multiline{flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width:769px),print{.field.is-horizontal{display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width:768px){.field-label{margin-bottom:.5rem}}@media screen and (min-width:769px),print{.field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small{font-size:.75rem;padding-top:.375em}.field-label.is-normal{padding-top:.375em}.field-label.is-medium{font-size:1.25rem;padding-top:.375em}.field-label.is-large{font-size:1.5rem;padding-top:.375em}}.field-body .field .field{margin-bottom:0}@media screen and (min-width:769px),print{.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-right:.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}.control.has-icons-left .input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:#4a4a4a}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:2.5em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right .select select{padding-right:2.5em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{position:absolute!important;right:.625em;top:.625em;z-index:4}.control.is-loading.is-small:after{font-size:.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{align-items:center;color:#3273dc;display:flex;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#363636;cursor:default;pointer-events:none}.breadcrumb li+li::before{color:#b5b5b5;content:"\0002f"}.breadcrumb ol,.breadcrumb ul{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:.5em}.breadcrumb .icon:last-child{margin-left:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{justify-content:flex-end}.breadcrumb.is-small{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li+li::before{content:"\02192"}.breadcrumb.has-bullet-separator li+li::before{content:"\02022"}.breadcrumb.has-dot-separator li+li::before{content:"\000b7"}.breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}.card{background-color:#fff;border-radius:.25rem;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);color:#4a4a4a;max-width:100%;position:relative}.card-content:first-child,.card-footer:first-child,.card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-content:last-child,.card-footer:last-child,.card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-header{background-color:transparent;align-items:stretch;box-shadow:0 .125em .25em rgba(10,10,10,.1);display:flex}.card-header-title{align-items:center;color:#363636;display:flex;flex-grow:1;font-weight:700;padding:.75rem 1rem}.card-header-title.is-centered{justify-content:center}.card-header-icon{align-items:center;cursor:pointer;display:flex;justify-content:center;padding:.75rem 1rem}.card-image{display:block;position:relative}.card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-content{background-color:transparent;padding:1.5rem}.card-footer{background-color:transparent;border-top:1px solid #ededed;align-items:stretch;display:flex}.card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}.card-footer-item:not(:last-child){border-right:1px solid #ededed}.card .media:not(:last-child){margin-bottom:1.5rem}.dropdown{display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}.dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}.dropdown-content{background-color:#fff;border-radius:4px;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);padding-bottom:.5rem;padding-top:.5rem}.dropdown-item{color:#4a4a4a;display:block;font-size:.875rem;line-height:1.5;padding:.375rem 1rem;position:relative}a.dropdown-item,button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}a.dropdown-item:hover,button.dropdown-item:hover{background-color:#f5f5f5;color:#0a0a0a}a.dropdown-item.is-active,button.dropdown-item.is-active{background-color:#3273dc;color:#fff}.dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:.5rem 0}.level{align-items:center;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}.level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width:769px),print{.level{display:flex}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .subtitle,.level-item .title{margin-bottom:0}@media screen and (max-width:768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width:769px),print{.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{align-items:center;justify-content:flex-start}@media screen and (max-width:768px){.level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width:769px),print{.level-left{display:flex}}.level-right{align-items:center;justify-content:flex-end}@media screen and (min-width:769px),print{.level-right{display:flex}}.media{align-items:flex-start;display:flex;text-align:inherit}.media .content:not(:last-child){margin-bottom:.75rem}.media .media{border-top:1px solid rgba(219,219,219,.5);display:flex;padding-top:.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:.5rem}.media .media .media{padding-top:.5rem}.media .media .media+.media{margin-top:.5rem}.media+.media{border-top:1px solid rgba(219,219,219,.5);margin-top:1rem;padding-top:1rem}.media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}.media-left,.media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width:768px){.media-content{overflow-x:auto}}.menu{font-size:1rem}.menu.is-small{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#4a4a4a;display:block;padding:.5em .75em}.menu-list a:hover{background-color:#f5f5f5;color:#363636}.menu-list a.is-active{background-color:#3273dc;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#7a7a7a;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.message.is-light .message-body{border-color:#f5f5f5}.message.is-dark{background-color:#fafafa}.message.is-dark .message-header{background-color:#363636;color:#fff}.message.is-dark .message-body{border-color:#363636}.message.is-primary{background-color:#ebfffc}.message.is-primary .message-header{background-color:#00d1b2;color:#fff}.message.is-primary .message-body{border-color:#00d1b2;color:#00947e}.message.is-link{background-color:#eef3fc}.message.is-link .message-header{background-color:#3273dc;color:#fff}.message.is-link .message-body{border-color:#3273dc;color:#2160c4}.message.is-info{background-color:#eef6fc}.message.is-info .message-header{background-color:#3298dc;color:#fff}.message.is-info .message-body{border-color:#3298dc;color:#1d72aa}.message.is-success{background-color:#effaf3}.message.is-success .message-header{background-color:#48c774;color:#fff}.message.is-success .message-body{border-color:#48c774;color:#257942}.message.is-warning{background-color:#fffbeb}.message.is-warning .message-header{background-color:#ffdd57;color:rgba(0,0,0,.7)}.message.is-warning .message-body{border-color:#ffdd57;color:#947600}.message.is-danger{background-color:#feecf0}.message.is-danger .message-header{background-color:#f14668;color:#fff}.message.is-danger .message-body{border-color:#f14668;color:#cc0f35}.message-header{align-items:center;background-color:#4a4a4a;border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:.75em 1em;position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:#dbdbdb;border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:#4a4a4a;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:transparent}.modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}.modal.is-active{display:flex}.modal-background{background-color:rgba(10,10,10,.86)}.modal-card,.modal-content{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width:769px){.modal-card,.modal-content{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{background:0 0;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}.modal-card-foot,.modal-card-head{align-items:center;background-color:#f5f5f5;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:6px;border-top-right-radius:6px}.modal-card-title{color:#363636;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:.5em}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link,.navbar.is-white .navbar-brand>.navbar-item{color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link.is-active,.navbar.is-white .navbar-brand .navbar-link:focus,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand>a.navbar-item:focus,.navbar.is-white .navbar-brand>a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width:1024px){.navbar.is-white .navbar-end .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-start>.navbar-item{color:#0a0a0a}.navbar.is-white .navbar-end .navbar-link.is-active,.navbar.is-white .navbar-end .navbar-link:focus,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end>a.navbar-item:focus,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-start .navbar-link:focus,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start>a.navbar-item:focus,.navbar.is-white .navbar-start>a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-end .navbar-link::after,.navbar.is-white .navbar-start .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand .navbar-link,.navbar.is-black .navbar-brand>.navbar-item{color:#fff}.navbar.is-black .navbar-brand .navbar-link.is-active,.navbar.is-black .navbar-brand .navbar-link:focus,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand>a.navbar-item:focus,.navbar.is-black .navbar-brand>a.navbar-item:hover{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-black .navbar-end .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-start>.navbar-item{color:#fff}.navbar.is-black .navbar-end .navbar-link.is-active,.navbar.is-black .navbar-end .navbar-link:focus,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end>a.navbar-item:focus,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-start .navbar-link:focus,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start>a.navbar-item:focus,.navbar.is-black .navbar-start>a.navbar-item:hover{background-color:#000;color:#fff}.navbar.is-black .navbar-end .navbar-link::after,.navbar.is-black .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link,.navbar.is-light .navbar-brand>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width:1024px){.navbar.is-light .navbar-end .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-start>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-end .navbar-link.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-end .navbar-link::after,.navbar.is-light .navbar-start .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,.7)}}.navbar.is-dark{background-color:#363636;color:#fff}.navbar.is-dark .navbar-brand .navbar-link,.navbar.is-dark .navbar-brand>.navbar-item{color:#fff}.navbar.is-dark .navbar-brand .navbar-link.is-active,.navbar.is-dark .navbar-brand .navbar-link:focus,.navbar.is-dark .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand>a.navbar-item:focus,.navbar.is-dark .navbar-brand>a.navbar-item:hover{background-color:#292929;color:#fff}.navbar.is-dark .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-dark .navbar-end .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.navbar.is-dark .navbar-start>.navbar-item{color:#fff}.navbar.is-dark .navbar-end .navbar-link.is-active,.navbar.is-dark .navbar-end .navbar-link:focus,.navbar.is-dark .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end>a.navbar-item:focus,.navbar.is-dark .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-start .navbar-link:focus,.navbar.is-dark .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start>a.navbar-item:focus,.navbar.is-dark .navbar-start>a.navbar-item:hover{background-color:#292929;color:#fff}.navbar.is-dark .navbar-end .navbar-link::after,.navbar.is-dark .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link{background-color:#292929;color:#fff}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#fff}}.navbar.is-primary{background-color:#00d1b2;color:#fff}.navbar.is-primary .navbar-brand .navbar-link,.navbar.is-primary .navbar-brand>.navbar-item{color:#fff}.navbar.is-primary .navbar-brand .navbar-link.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-primary .navbar-end .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.navbar.is-primary .navbar-start>.navbar-item{color:#fff}.navbar.is-primary .navbar-end .navbar-link.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-end .navbar-link::after,.navbar.is-primary .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active{background-color:#00d1b2;color:#fff}}.navbar.is-link{background-color:#3273dc;color:#fff}.navbar.is-link .navbar-brand .navbar-link,.navbar.is-link .navbar-brand>.navbar-item{color:#fff}.navbar.is-link .navbar-brand .navbar-link.is-active,.navbar.is-link .navbar-brand .navbar-link:focus,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover{background-color:#2366d1;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-link .navbar-end .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-start>.navbar-item{color:#fff}.navbar.is-link .navbar-end .navbar-link.is-active,.navbar.is-link .navbar-end .navbar-link:focus,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-start .navbar-link:focus,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover{background-color:#2366d1;color:#fff}.navbar.is-link .navbar-end .navbar-link::after,.navbar.is-link .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link{background-color:#2366d1;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#3273dc;color:#fff}}.navbar.is-info{background-color:#3298dc;color:#fff}.navbar.is-info .navbar-brand .navbar-link,.navbar.is-info .navbar-brand>.navbar-item{color:#fff}.navbar.is-info .navbar-brand .navbar-link.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover{background-color:#238cd1;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-info .navbar-end .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-start>.navbar-item{color:#fff}.navbar.is-info .navbar-end .navbar-link.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover{background-color:#238cd1;color:#fff}.navbar.is-info .navbar-end .navbar-link::after,.navbar.is-info .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link{background-color:#238cd1;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#3298dc;color:#fff}}.navbar.is-success{background-color:#48c774;color:#fff}.navbar.is-success .navbar-brand .navbar-link,.navbar.is-success .navbar-brand>.navbar-item{color:#fff}.navbar.is-success .navbar-brand .navbar-link.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover{background-color:#3abb67;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-success .navbar-end .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-start>.navbar-item{color:#fff}.navbar.is-success .navbar-end .navbar-link.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover{background-color:#3abb67;color:#fff}.navbar.is-success .navbar-end .navbar-link::after,.navbar.is-success .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link{background-color:#3abb67;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#48c774;color:#fff}}.navbar.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link,.navbar.is-warning .navbar-brand>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover{background-color:#ffd83d;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width:1024px){.navbar.is-warning .navbar-end .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-start>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-end .navbar-link.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover{background-color:#ffd83d;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-end .navbar-link::after,.navbar.is-warning .navbar-start .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link{background-color:#ffd83d;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffdd57;color:rgba(0,0,0,.7)}}.navbar.is-danger{background-color:#f14668;color:#fff}.navbar.is-danger .navbar-brand .navbar-link,.navbar.is-danger .navbar-brand>.navbar-item{color:#fff}.navbar.is-danger .navbar-brand .navbar-link.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-danger .navbar-end .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-start>.navbar-item{color:#fff}.navbar.is-danger .navbar-end .navbar-link.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-end .navbar-link::after,.navbar.is-danger .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#f14668;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #f5f5f5}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #f5f5f5}.navbar.is-fixed-top{top:0}body.has-navbar-fixed-top,html.has-navbar-fixed-top{padding-top:3.25rem}body.has-navbar-fixed-bottom,html.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{color:#4a4a4a;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color,opacity,transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:nth-child(1){top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,.05)}.navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#4a4a4a;display:block;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-.25rem;margin-right:-.25rem}.navbar-link,a.navbar-item{cursor:pointer}.navbar-link.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,a.navbar-item.is-active,a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover{background-color:#fafafa;color:#3273dc}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:transparent;border-bottom-color:#3273dc}.navbar-item.is-tab.is-active{background-color:transparent;border-bottom-color:#3273dc;border-bottom-style:solid;border-bottom-width:3px;color:#3273dc;padding-bottom:calc(.5rem - 3px)}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless)::after{border-color:#3273dc;margin-top:-.375em;right:1.125em}.navbar-dropdown{font-size:.875rem;padding-bottom:.5rem;padding-top:.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#f5f5f5;border:none;display:none;height:2px;margin:.5rem 0}@media screen and (max-width:1023px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link::after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px rgba(10,10,10,.1);padding:.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}body.has-navbar-fixed-top-touch,html.has-navbar-fixed-top-touch{padding-top:3.25rem}body.has-navbar-fixed-bottom-touch,html.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width:1024px){.navbar,.navbar-end,.navbar-menu,.navbar-start{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-spaced{padding:1rem 2rem}.navbar.is-spaced .navbar-end,.navbar.is-spaced .navbar-start{align-items:center}.navbar.is-spaced .navbar-link,.navbar.is-spaced a.navbar-item{border-radius:4px}.navbar.is-transparent .navbar-link.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover{background-color:transparent!important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent!important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#3273dc}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(.25em,-.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:2px solid #dbdbdb;border-radius:6px 6px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid #dbdbdb;box-shadow:0 8px 8px rgba(10,10,10,.1);display:none;font-size:.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#3273dc}.navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-dropdown{border-radius:6px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity,transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.container>.navbar .navbar-brand,.navbar>.container .navbar-brand{margin-left:-.75rem}.container>.navbar .navbar-menu,.navbar>.container .navbar-menu{margin-right:-.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-desktop{top:0}body.has-navbar-fixed-top-desktop,html.has-navbar-fixed-top-desktop{padding-top:3.25rem}body.has-navbar-fixed-bottom-desktop,html.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}body.has-spaced-navbar-fixed-top,html.has-spaced-navbar-fixed-top{padding-top:5.25rem}body.has-spaced-navbar-fixed-bottom,html.has-spaced-navbar-fixed-bottom{padding-bottom:5.25rem}.navbar-link.is-active,a.navbar-item.is-active{color:#0a0a0a}.navbar-link.is-active:not(:focus):not(:hover),a.navbar-item.is-active:not(:focus):not(:hover){background-color:transparent}.navbar-item.has-dropdown.is-active .navbar-link,.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link{background-color:#fafafa}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 3.25rem)}.pagination{font-size:1rem;margin:-.25rem}.pagination.is-small{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-next,.pagination.is-rounded .pagination-previous{padding-left:1em;padding-right:1em;border-radius:290486px}.pagination.is-rounded .pagination-link{border-radius:290486px}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}.pagination-link,.pagination-next,.pagination-previous{border-color:#dbdbdb;color:#363636;min-width:2.5em}.pagination-link:hover,.pagination-next:hover,.pagination-previous:hover{border-color:#b5b5b5;color:#363636}.pagination-link:focus,.pagination-next:focus,.pagination-previous:focus{border-color:#3273dc}.pagination-link:active,.pagination-next:active,.pagination-previous:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2)}.pagination-link[disabled],.pagination-next[disabled],.pagination-previous[disabled]{background-color:#dbdbdb;border-color:#dbdbdb;box-shadow:none;color:#7a7a7a;opacity:.5}.pagination-next,.pagination-previous{padding-left:.75em;padding-right:.75em;white-space:nowrap}.pagination-link.is-current{background-color:#3273dc;border-color:#3273dc;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{flex-wrap:wrap}.pagination-list li{list-style:none}@media screen and (max-width:768px){.pagination{flex-wrap:wrap}.pagination-next,.pagination-previous{flex-grow:1;flex-shrink:1}.pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width:769px),print{.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-previous{order:2}.pagination-next{order:3}.pagination{justify-content:space-between}.pagination.is-centered .pagination-previous{order:1}.pagination.is-centered .pagination-list{justify-content:center;order:2}.pagination.is-centered .pagination-next{order:3}.pagination.is-right .pagination-previous{order:1}.pagination.is-right .pagination-next{order:2}.pagination.is-right .pagination-list{justify-content:flex-end;order:3}}.panel{border-radius:6px;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}.panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}.panel.is-white .panel-block.is-active .panel-icon{color:#fff}.panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}.panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}.panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}.panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}.panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}.panel.is-dark .panel-heading{background-color:#363636;color:#fff}.panel.is-dark .panel-tabs a.is-active{border-bottom-color:#363636}.panel.is-dark .panel-block.is-active .panel-icon{color:#363636}.panel.is-primary .panel-heading{background-color:#00d1b2;color:#fff}.panel.is-primary .panel-tabs a.is-active{border-bottom-color:#00d1b2}.panel.is-primary .panel-block.is-active .panel-icon{color:#00d1b2}.panel.is-link .panel-heading{background-color:#3273dc;color:#fff}.panel.is-link .panel-tabs a.is-active{border-bottom-color:#3273dc}.panel.is-link .panel-block.is-active .panel-icon{color:#3273dc}.panel.is-info .panel-heading{background-color:#3298dc;color:#fff}.panel.is-info .panel-tabs a.is-active{border-bottom-color:#3298dc}.panel.is-info .panel-block.is-active .panel-icon{color:#3298dc}.panel.is-success .panel-heading{background-color:#48c774;color:#fff}.panel.is-success .panel-tabs a.is-active{border-bottom-color:#48c774}.panel.is-success .panel-block.is-active .panel-icon{color:#48c774}.panel.is-warning .panel-heading{background-color:#ffdd57;color:rgba(0,0,0,.7)}.panel.is-warning .panel-tabs a.is-active{border-bottom-color:#ffdd57}.panel.is-warning .panel-block.is-active .panel-icon{color:#ffdd57}.panel.is-danger .panel-heading{background-color:#f14668;color:#fff}.panel.is-danger .panel-tabs a.is-active{border-bottom-color:#f14668}.panel.is-danger .panel-block.is-active .panel-icon{color:#f14668}.panel-block:not(:last-child),.panel-tabs:not(:last-child){border-bottom:1px solid #ededed}.panel-heading{background-color:#ededed;border-radius:6px 6px 0 0;color:#363636;font-size:1.25em;font-weight:700;line-height:1.25;padding:.75em 1em}.panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#4a4a4a}.panel-list a:hover{color:#3273dc}.panel-block{align-items:center;color:#363636;display:flex;justify-content:flex-start;padding:.5em .75em}.panel-block input[type=checkbox]{margin-right:.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{flex-wrap:wrap}.panel-block.is-active{border-left-color:#3273dc;color:#363636}.panel-block.is-active .panel-icon{color:#3273dc}.panel-block:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#7a7a7a;margin-right:.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;color:#4a4a4a;display:flex;justify-content:center;margin-bottom:-1px;padding:.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#363636;color:#363636}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#3273dc;color:#3273dc}.tabs ul{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-left{padding-right:.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:.75em;padding-right:.75em}.tabs ul.is-right{justify-content:flex-end;padding-left:.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-right ul{justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:transparent!important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-toggle a{border-color:#dbdbdb;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabs.is-toggle li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.tabs.is-toggle li.is-active a{background-color:#3273dc;border-color:#3273dc;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:290486px;border-top-left-radius:290486px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:290486px;border-top-right-radius:290486px;padding-right:1.25em}.tabs.is-small{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{flex:none;width:unset}.columns.is-mobile>.column.is-full{flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{flex:none;width:50%}.columns.is-mobile>.column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>.column.is-0{flex:none;width:0%}.columns.is-mobile>.column.is-offset-0{margin-left:0}.columns.is-mobile>.column.is-1{flex:none;width:8.33333%}.columns.is-mobile>.column.is-offset-1{margin-left:8.33333%}.columns.is-mobile>.column.is-2{flex:none;width:16.66667%}.columns.is-mobile>.column.is-offset-2{margin-left:16.66667%}.columns.is-mobile>.column.is-3{flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{flex:none;width:33.33333%}.columns.is-mobile>.column.is-offset-4{margin-left:33.33333%}.columns.is-mobile>.column.is-5{flex:none;width:41.66667%}.columns.is-mobile>.column.is-offset-5{margin-left:41.66667%}.columns.is-mobile>.column.is-6{flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{flex:none;width:58.33333%}.columns.is-mobile>.column.is-offset-7{margin-left:58.33333%}.columns.is-mobile>.column.is-8{flex:none;width:66.66667%}.columns.is-mobile>.column.is-offset-8{margin-left:66.66667%}.columns.is-mobile>.column.is-9{flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{flex:none;width:83.33333%}.columns.is-mobile>.column.is-offset-10{margin-left:83.33333%}.columns.is-mobile>.column.is-11{flex:none;width:91.66667%}.columns.is-mobile>.column.is-offset-11{margin-left:91.66667%}.columns.is-mobile>.column.is-12{flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width:768px){.column.is-narrow-mobile{flex:none;width:unset}.column.is-full-mobile{flex:none;width:100%}.column.is-three-quarters-mobile{flex:none;width:75%}.column.is-two-thirds-mobile{flex:none;width:66.6666%}.column.is-half-mobile{flex:none;width:50%}.column.is-one-third-mobile{flex:none;width:33.3333%}.column.is-one-quarter-mobile{flex:none;width:25%}.column.is-one-fifth-mobile{flex:none;width:20%}.column.is-two-fifths-mobile{flex:none;width:40%}.column.is-three-fifths-mobile{flex:none;width:60%}.column.is-four-fifths-mobile{flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-0-mobile{flex:none;width:0%}.column.is-offset-0-mobile{margin-left:0}.column.is-1-mobile{flex:none;width:8.33333%}.column.is-offset-1-mobile{margin-left:8.33333%}.column.is-2-mobile{flex:none;width:16.66667%}.column.is-offset-2-mobile{margin-left:16.66667%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{flex:none;width:33.33333%}.column.is-offset-4-mobile{margin-left:33.33333%}.column.is-5-mobile{flex:none;width:41.66667%}.column.is-offset-5-mobile{margin-left:41.66667%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{flex:none;width:58.33333%}.column.is-offset-7-mobile{margin-left:58.33333%}.column.is-8-mobile{flex:none;width:66.66667%}.column.is-offset-8-mobile{margin-left:66.66667%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{flex:none;width:83.33333%}.column.is-offset-10-mobile{margin-left:83.33333%}.column.is-11-mobile{flex:none;width:91.66667%}.column.is-offset-11-mobile{margin-left:91.66667%}.column.is-12-mobile{flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width:769px),print{.column.is-narrow,.column.is-narrow-tablet{flex:none;width:unset}.column.is-full,.column.is-full-tablet{flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-0,.column.is-0-tablet{flex:none;width:0%}.column.is-offset-0,.column.is-offset-0-tablet{margin-left:0}.column.is-1,.column.is-1-tablet{flex:none;width:8.33333%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.33333%}.column.is-2,.column.is-2-tablet{flex:none;width:16.66667%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.66667%}.column.is-3,.column.is-3-tablet{flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{flex:none;width:33.33333%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.33333%}.column.is-5,.column.is-5-tablet{flex:none;width:41.66667%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.66667%}.column.is-6,.column.is-6-tablet{flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{flex:none;width:58.33333%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.33333%}.column.is-8,.column.is-8-tablet{flex:none;width:66.66667%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.66667%}.column.is-9,.column.is-9-tablet{flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{flex:none;width:83.33333%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.33333%}.column.is-11,.column.is-11-tablet{flex:none;width:91.66667%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.66667%}.column.is-12,.column.is-12-tablet{flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width:1023px){.column.is-narrow-touch{flex:none;width:unset}.column.is-full-touch{flex:none;width:100%}.column.is-three-quarters-touch{flex:none;width:75%}.column.is-two-thirds-touch{flex:none;width:66.6666%}.column.is-half-touch{flex:none;width:50%}.column.is-one-third-touch{flex:none;width:33.3333%}.column.is-one-quarter-touch{flex:none;width:25%}.column.is-one-fifth-touch{flex:none;width:20%}.column.is-two-fifths-touch{flex:none;width:40%}.column.is-three-fifths-touch{flex:none;width:60%}.column.is-four-fifths-touch{flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-0-touch{flex:none;width:0%}.column.is-offset-0-touch{margin-left:0}.column.is-1-touch{flex:none;width:8.33333%}.column.is-offset-1-touch{margin-left:8.33333%}.column.is-2-touch{flex:none;width:16.66667%}.column.is-offset-2-touch{margin-left:16.66667%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{flex:none;width:33.33333%}.column.is-offset-4-touch{margin-left:33.33333%}.column.is-5-touch{flex:none;width:41.66667%}.column.is-offset-5-touch{margin-left:41.66667%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{flex:none;width:58.33333%}.column.is-offset-7-touch{margin-left:58.33333%}.column.is-8-touch{flex:none;width:66.66667%}.column.is-offset-8-touch{margin-left:66.66667%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{flex:none;width:83.33333%}.column.is-offset-10-touch{margin-left:83.33333%}.column.is-11-touch{flex:none;width:91.66667%}.column.is-offset-11-touch{margin-left:91.66667%}.column.is-12-touch{flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width:1024px){.column.is-narrow-desktop{flex:none;width:unset}.column.is-full-desktop{flex:none;width:100%}.column.is-three-quarters-desktop{flex:none;width:75%}.column.is-two-thirds-desktop{flex:none;width:66.6666%}.column.is-half-desktop{flex:none;width:50%}.column.is-one-third-desktop{flex:none;width:33.3333%}.column.is-one-quarter-desktop{flex:none;width:25%}.column.is-one-fifth-desktop{flex:none;width:20%}.column.is-two-fifths-desktop{flex:none;width:40%}.column.is-three-fifths-desktop{flex:none;width:60%}.column.is-four-fifths-desktop{flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-0-desktop{flex:none;width:0%}.column.is-offset-0-desktop{margin-left:0}.column.is-1-desktop{flex:none;width:8.33333%}.column.is-offset-1-desktop{margin-left:8.33333%}.column.is-2-desktop{flex:none;width:16.66667%}.column.is-offset-2-desktop{margin-left:16.66667%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{flex:none;width:33.33333%}.column.is-offset-4-desktop{margin-left:33.33333%}.column.is-5-desktop{flex:none;width:41.66667%}.column.is-offset-5-desktop{margin-left:41.66667%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{flex:none;width:58.33333%}.column.is-offset-7-desktop{margin-left:58.33333%}.column.is-8-desktop{flex:none;width:66.66667%}.column.is-offset-8-desktop{margin-left:66.66667%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{flex:none;width:83.33333%}.column.is-offset-10-desktop{margin-left:83.33333%}.column.is-11-desktop{flex:none;width:91.66667%}.column.is-offset-11-desktop{margin-left:91.66667%}.column.is-12-desktop{flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width:1216px){.column.is-narrow-widescreen{flex:none;width:unset}.column.is-full-widescreen{flex:none;width:100%}.column.is-three-quarters-widescreen{flex:none;width:75%}.column.is-two-thirds-widescreen{flex:none;width:66.6666%}.column.is-half-widescreen{flex:none;width:50%}.column.is-one-third-widescreen{flex:none;width:33.3333%}.column.is-one-quarter-widescreen{flex:none;width:25%}.column.is-one-fifth-widescreen{flex:none;width:20%}.column.is-two-fifths-widescreen{flex:none;width:40%}.column.is-three-fifths-widescreen{flex:none;width:60%}.column.is-four-fifths-widescreen{flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-0-widescreen{flex:none;width:0%}.column.is-offset-0-widescreen{margin-left:0}.column.is-1-widescreen{flex:none;width:8.33333%}.column.is-offset-1-widescreen{margin-left:8.33333%}.column.is-2-widescreen{flex:none;width:16.66667%}.column.is-offset-2-widescreen{margin-left:16.66667%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{flex:none;width:33.33333%}.column.is-offset-4-widescreen{margin-left:33.33333%}.column.is-5-widescreen{flex:none;width:41.66667%}.column.is-offset-5-widescreen{margin-left:41.66667%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{flex:none;width:58.33333%}.column.is-offset-7-widescreen{margin-left:58.33333%}.column.is-8-widescreen{flex:none;width:66.66667%}.column.is-offset-8-widescreen{margin-left:66.66667%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{flex:none;width:83.33333%}.column.is-offset-10-widescreen{margin-left:83.33333%}.column.is-11-widescreen{flex:none;width:91.66667%}.column.is-offset-11-widescreen{margin-left:91.66667%}.column.is-12-widescreen{flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width:1408px){.column.is-narrow-fullhd{flex:none;width:unset}.column.is-full-fullhd{flex:none;width:100%}.column.is-three-quarters-fullhd{flex:none;width:75%}.column.is-two-thirds-fullhd{flex:none;width:66.6666%}.column.is-half-fullhd{flex:none;width:50%}.column.is-one-third-fullhd{flex:none;width:33.3333%}.column.is-one-quarter-fullhd{flex:none;width:25%}.column.is-one-fifth-fullhd{flex:none;width:20%}.column.is-two-fifths-fullhd{flex:none;width:40%}.column.is-three-fifths-fullhd{flex:none;width:60%}.column.is-four-fifths-fullhd{flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-0-fullhd{flex:none;width:0%}.column.is-offset-0-fullhd{margin-left:0}.column.is-1-fullhd{flex:none;width:8.33333%}.column.is-offset-1-fullhd{margin-left:8.33333%}.column.is-2-fullhd{flex:none;width:16.66667%}.column.is-offset-2-fullhd{margin-left:16.66667%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{flex:none;width:33.33333%}.column.is-offset-4-fullhd{margin-left:33.33333%}.column.is-5-fullhd{flex:none;width:41.66667%}.column.is-offset-5-fullhd{margin-left:41.66667%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{flex:none;width:58.33333%}.column.is-offset-7-fullhd{margin-left:58.33333%}.column.is-8-fullhd{flex:none;width:66.66667%}.column.is-offset-8-fullhd{margin-left:66.66667%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{flex:none;width:83.33333%}.column.is-offset-10-fullhd{margin-left:83.33333%}.column.is-11-fullhd{flex:none;width:91.66667%}.column.is-offset-11-fullhd{margin-left:91.66667%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}.columns.is-centered{justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0!important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:flex}.columns.is-multiline{flex-wrap:wrap}.columns.is-vcentered{align-items:center}@media screen and (min-width:769px),print{.columns:not(.is-desktop){display:flex}}@media screen and (min-width:1024px){.columns.is-desktop{display:flex}}.columns.is-variable{--columnGap:0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}.columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap:0rem}@media screen and (max-width:768px){.columns.is-variable.is-0-mobile{--columnGap:0rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-0-tablet{--columnGap:0rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-0-tablet-only{--columnGap:0rem}}@media screen and (max-width:1023px){.columns.is-variable.is-0-touch{--columnGap:0rem}}@media screen and (min-width:1024px){.columns.is-variable.is-0-desktop{--columnGap:0rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-0-desktop-only{--columnGap:0rem}}@media screen and (min-width:1216px){.columns.is-variable.is-0-widescreen{--columnGap:0rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-0-widescreen-only{--columnGap:0rem}}@media screen and (min-width:1408px){.columns.is-variable.is-0-fullhd{--columnGap:0rem}}.columns.is-variable.is-1{--columnGap:0.25rem}@media screen and (max-width:768px){.columns.is-variable.is-1-mobile{--columnGap:0.25rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-1-tablet{--columnGap:0.25rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-1-tablet-only{--columnGap:0.25rem}}@media screen and (max-width:1023px){.columns.is-variable.is-1-touch{--columnGap:0.25rem}}@media screen and (min-width:1024px){.columns.is-variable.is-1-desktop{--columnGap:0.25rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-1-desktop-only{--columnGap:0.25rem}}@media screen and (min-width:1216px){.columns.is-variable.is-1-widescreen{--columnGap:0.25rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-1-widescreen-only{--columnGap:0.25rem}}@media screen and (min-width:1408px){.columns.is-variable.is-1-fullhd{--columnGap:0.25rem}}.columns.is-variable.is-2{--columnGap:0.5rem}@media screen and (max-width:768px){.columns.is-variable.is-2-mobile{--columnGap:0.5rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-2-tablet{--columnGap:0.5rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-2-tablet-only{--columnGap:0.5rem}}@media screen and (max-width:1023px){.columns.is-variable.is-2-touch{--columnGap:0.5rem}}@media screen and (min-width:1024px){.columns.is-variable.is-2-desktop{--columnGap:0.5rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-2-desktop-only{--columnGap:0.5rem}}@media screen and (min-width:1216px){.columns.is-variable.is-2-widescreen{--columnGap:0.5rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-2-widescreen-only{--columnGap:0.5rem}}@media screen and (min-width:1408px){.columns.is-variable.is-2-fullhd{--columnGap:0.5rem}}.columns.is-variable.is-3{--columnGap:0.75rem}@media screen and (max-width:768px){.columns.is-variable.is-3-mobile{--columnGap:0.75rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-3-tablet{--columnGap:0.75rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-3-tablet-only{--columnGap:0.75rem}}@media screen and (max-width:1023px){.columns.is-variable.is-3-touch{--columnGap:0.75rem}}@media screen and (min-width:1024px){.columns.is-variable.is-3-desktop{--columnGap:0.75rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-3-desktop-only{--columnGap:0.75rem}}@media screen and (min-width:1216px){.columns.is-variable.is-3-widescreen{--columnGap:0.75rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-3-widescreen-only{--columnGap:0.75rem}}@media screen and (min-width:1408px){.columns.is-variable.is-3-fullhd{--columnGap:0.75rem}}.columns.is-variable.is-4{--columnGap:1rem}@media screen and (max-width:768px){.columns.is-variable.is-4-mobile{--columnGap:1rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-4-tablet{--columnGap:1rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-4-tablet-only{--columnGap:1rem}}@media screen and (max-width:1023px){.columns.is-variable.is-4-touch{--columnGap:1rem}}@media screen and (min-width:1024px){.columns.is-variable.is-4-desktop{--columnGap:1rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-4-desktop-only{--columnGap:1rem}}@media screen and (min-width:1216px){.columns.is-variable.is-4-widescreen{--columnGap:1rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-4-widescreen-only{--columnGap:1rem}}@media screen and (min-width:1408px){.columns.is-variable.is-4-fullhd{--columnGap:1rem}}.columns.is-variable.is-5{--columnGap:1.25rem}@media screen and (max-width:768px){.columns.is-variable.is-5-mobile{--columnGap:1.25rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-5-tablet{--columnGap:1.25rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-5-tablet-only{--columnGap:1.25rem}}@media screen and (max-width:1023px){.columns.is-variable.is-5-touch{--columnGap:1.25rem}}@media screen and (min-width:1024px){.columns.is-variable.is-5-desktop{--columnGap:1.25rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-5-desktop-only{--columnGap:1.25rem}}@media screen and (min-width:1216px){.columns.is-variable.is-5-widescreen{--columnGap:1.25rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-5-widescreen-only{--columnGap:1.25rem}}@media screen and (min-width:1408px){.columns.is-variable.is-5-fullhd{--columnGap:1.25rem}}.columns.is-variable.is-6{--columnGap:1.5rem}@media screen and (max-width:768px){.columns.is-variable.is-6-mobile{--columnGap:1.5rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-6-tablet{--columnGap:1.5rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-6-tablet-only{--columnGap:1.5rem}}@media screen and (max-width:1023px){.columns.is-variable.is-6-touch{--columnGap:1.5rem}}@media screen and (min-width:1024px){.columns.is-variable.is-6-desktop{--columnGap:1.5rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-6-desktop-only{--columnGap:1.5rem}}@media screen and (min-width:1216px){.columns.is-variable.is-6-widescreen{--columnGap:1.5rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-6-widescreen-only{--columnGap:1.5rem}}@media screen and (min-width:1408px){.columns.is-variable.is-6-fullhd{--columnGap:1.5rem}}.columns.is-variable.is-7{--columnGap:1.75rem}@media screen and (max-width:768px){.columns.is-variable.is-7-mobile{--columnGap:1.75rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-7-tablet{--columnGap:1.75rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-7-tablet-only{--columnGap:1.75rem}}@media screen and (max-width:1023px){.columns.is-variable.is-7-touch{--columnGap:1.75rem}}@media screen and (min-width:1024px){.columns.is-variable.is-7-desktop{--columnGap:1.75rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-7-desktop-only{--columnGap:1.75rem}}@media screen and (min-width:1216px){.columns.is-variable.is-7-widescreen{--columnGap:1.75rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-7-widescreen-only{--columnGap:1.75rem}}@media screen and (min-width:1408px){.columns.is-variable.is-7-fullhd{--columnGap:1.75rem}}.columns.is-variable.is-8{--columnGap:2rem}@media screen and (max-width:768px){.columns.is-variable.is-8-mobile{--columnGap:2rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-8-tablet{--columnGap:2rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-8-tablet-only{--columnGap:2rem}}@media screen and (max-width:1023px){.columns.is-variable.is-8-touch{--columnGap:2rem}}@media screen and (min-width:1024px){.columns.is-variable.is-8-desktop{--columnGap:2rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-8-desktop-only{--columnGap:2rem}}@media screen and (min-width:1216px){.columns.is-variable.is-8-widescreen{--columnGap:2rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-8-widescreen-only{--columnGap:2rem}}@media screen and (min-width:1408px){.columns.is-variable.is-8-fullhd{--columnGap:2rem}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:-webkit-min-content;min-height:-moz-min-content;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0!important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem!important}@media screen and (min-width:769px),print{.tile:not(.is-child){display:flex}.tile.is-1{flex:none;width:8.33333%}.tile.is-2{flex:none;width:16.66667%}.tile.is-3{flex:none;width:25%}.tile.is-4{flex:none;width:33.33333%}.tile.is-5{flex:none;width:41.66667%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.33333%}.tile.is-8{flex:none;width:66.66667%}.tile.is-9{flex:none;width:75%}.tile.is-10{flex:none;width:83.33333%}.tile.is-11{flex:none;width:91.66667%}.tile.is-12{flex:none;width:100%}}.has-text-white{color:#fff!important}a.has-text-white:focus,a.has-text-white:hover{color:#e6e6e6!important}.has-background-white{background-color:#fff!important}.has-text-black{color:#0a0a0a!important}a.has-text-black:focus,a.has-text-black:hover{color:#000!important}.has-background-black{background-color:#0a0a0a!important}.has-text-light{color:#f5f5f5!important}a.has-text-light:focus,a.has-text-light:hover{color:#dbdbdb!important}.has-background-light{background-color:#f5f5f5!important}.has-text-dark{color:#363636!important}a.has-text-dark:focus,a.has-text-dark:hover{color:#1c1c1c!important}.has-background-dark{background-color:#363636!important}.has-text-primary{color:#00d1b2!important}a.has-text-primary:focus,a.has-text-primary:hover{color:#009e86!important}.has-background-primary{background-color:#00d1b2!important}.has-text-primary-light{color:#ebfffc!important}a.has-text-primary-light:focus,a.has-text-primary-light:hover{color:#b8fff4!important}.has-background-primary-light{background-color:#ebfffc!important}.has-text-primary-dark{color:#00947e!important}a.has-text-primary-dark:focus,a.has-text-primary-dark:hover{color:#00c7a9!important}.has-background-primary-dark{background-color:#00947e!important}.has-text-link{color:#3273dc!important}a.has-text-link:focus,a.has-text-link:hover{color:#205bbc!important}.has-background-link{background-color:#3273dc!important}.has-text-link-light{color:#eef3fc!important}a.has-text-link-light:focus,a.has-text-link-light:hover{color:#c2d5f5!important}.has-background-link-light{background-color:#eef3fc!important}.has-text-link-dark{color:#2160c4!important}a.has-text-link-dark:focus,a.has-text-link-dark:hover{color:#3b79de!important}.has-background-link-dark{background-color:#2160c4!important}.has-text-info{color:#3298dc!important}a.has-text-info:focus,a.has-text-info:hover{color:#207dbc!important}.has-background-info{background-color:#3298dc!important}.has-text-info-light{color:#eef6fc!important}a.has-text-info-light:focus,a.has-text-info-light:hover{color:#c2e0f5!important}.has-background-info-light{background-color:#eef6fc!important}.has-text-info-dark{color:#1d72aa!important}a.has-text-info-dark:focus,a.has-text-info-dark:hover{color:#248fd6!important}.has-background-info-dark{background-color:#1d72aa!important}.has-text-success{color:#48c774!important}a.has-text-success:focus,a.has-text-success:hover{color:#34a85c!important}.has-background-success{background-color:#48c774!important}.has-text-success-light{color:#effaf3!important}a.has-text-success-light:focus,a.has-text-success-light:hover{color:#c8eed6!important}.has-background-success-light{background-color:#effaf3!important}.has-text-success-dark{color:#257942!important}a.has-text-success-dark:focus,a.has-text-success-dark:hover{color:#31a058!important}.has-background-success-dark{background-color:#257942!important}.has-text-warning{color:#ffdd57!important}a.has-text-warning:focus,a.has-text-warning:hover{color:#ffd324!important}.has-background-warning{background-color:#ffdd57!important}.has-text-warning-light{color:#fffbeb!important}a.has-text-warning-light:focus,a.has-text-warning-light:hover{color:#fff1b8!important}.has-background-warning-light{background-color:#fffbeb!important}.has-text-warning-dark{color:#947600!important}a.has-text-warning-dark:focus,a.has-text-warning-dark:hover{color:#c79f00!important}.has-background-warning-dark{background-color:#947600!important}.has-text-danger{color:#f14668!important}a.has-text-danger:focus,a.has-text-danger:hover{color:#ee1742!important}.has-background-danger{background-color:#f14668!important}.has-text-danger-light{color:#feecf0!important}a.has-text-danger-light:focus,a.has-text-danger-light:hover{color:#fabdc9!important}.has-background-danger-light{background-color:#feecf0!important}.has-text-danger-dark{color:#cc0f35!important}a.has-text-danger-dark:focus,a.has-text-danger-dark:hover{color:#ee2049!important}.has-background-danger-dark{background-color:#cc0f35!important}.has-text-black-bis{color:#121212!important}.has-background-black-bis{background-color:#121212!important}.has-text-black-ter{color:#242424!important}.has-background-black-ter{background-color:#242424!important}.has-text-grey-darker{color:#363636!important}.has-background-grey-darker{background-color:#363636!important}.has-text-grey-dark{color:#4a4a4a!important}.has-background-grey-dark{background-color:#4a4a4a!important}.has-text-grey{color:#7a7a7a!important}.has-background-grey{background-color:#7a7a7a!important}.has-text-grey-light{color:#b5b5b5!important}.has-background-grey-light{background-color:#b5b5b5!important}.has-text-grey-lighter{color:#dbdbdb!important}.has-background-grey-lighter{background-color:#dbdbdb!important}.has-text-white-ter{color:#f5f5f5!important}.has-background-white-ter{background-color:#f5f5f5!important}.has-text-white-bis{color:#fafafa!important}.has-background-white-bis{background-color:#fafafa!important}.is-flex-direction-row{flex-direction:row!important}.is-flex-direction-row-reverse{flex-direction:row-reverse!important}.is-flex-direction-column{flex-direction:column!important}.is-flex-direction-column-reverse{flex-direction:column-reverse!important}.is-flex-wrap-nowrap{flex-wrap:nowrap!important}.is-flex-wrap-wrap{flex-wrap:wrap!important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse!important}.is-justify-content-flex-start{justify-content:flex-start!important}.is-justify-content-flex-end{justify-content:flex-end!important}.is-justify-content-center{justify-content:center!important}.is-justify-content-space-between{justify-content:space-between!important}.is-justify-content-space-around{justify-content:space-around!important}.is-justify-content-space-evenly{justify-content:space-evenly!important}.is-justify-content-start{justify-content:start!important}.is-justify-content-end{justify-content:end!important}.is-justify-content-left{justify-content:left!important}.is-justify-content-right{justify-content:right!important}.is-align-content-flex-start{align-content:flex-start!important}.is-align-content-flex-end{align-content:flex-end!important}.is-align-content-center{align-content:center!important}.is-align-content-space-between{align-content:space-between!important}.is-align-content-space-around{align-content:space-around!important}.is-align-content-space-evenly{align-content:space-evenly!important}.is-align-content-stretch{align-content:stretch!important}.is-align-content-start{align-content:start!important}.is-align-content-end{align-content:end!important}.is-align-content-baseline{align-content:baseline!important}.is-align-items-stretch{align-items:stretch!important}.is-align-items-flex-start{align-items:flex-start!important}.is-align-items-flex-end{align-items:flex-end!important}.is-align-items-center{align-items:center!important}.is-align-items-baseline{align-items:baseline!important}.is-align-items-start{align-items:start!important}.is-align-items-end{align-items:end!important}.is-align-items-self-start{align-items:self-start!important}.is-align-items-self-end{align-items:self-end!important}.is-align-self-auto{align-self:auto!important}.is-align-self-flex-start{align-self:flex-start!important}.is-align-self-flex-end{align-self:flex-end!important}.is-align-self-center{align-self:center!important}.is-align-self-baseline{align-self:baseline!important}.is-align-self-stretch{align-self:stretch!important}.is-flex-grow-0{flex-grow:0!important}.is-flex-grow-1{flex-grow:1!important}.is-flex-grow-2{flex-grow:2!important}.is-flex-grow-3{flex-grow:3!important}.is-flex-grow-4{flex-grow:4!important}.is-flex-grow-5{flex-grow:5!important}.is-flex-shrink-0{flex-shrink:0!important}.is-flex-shrink-1{flex-shrink:1!important}.is-flex-shrink-2{flex-shrink:2!important}.is-flex-shrink-3{flex-shrink:3!important}.is-flex-shrink-4{flex-shrink:4!important}.is-flex-shrink-5{flex-shrink:5!important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left!important}.is-pulled-right{float:right!important}.is-radiusless{border-radius:0!important}.is-shadowless{box-shadow:none!important}.is-clickable{cursor:pointer!important;pointer-events:all!important}.is-clipped{overflow:hidden!important}.is-relative{position:relative!important}.is-marginless{margin:0!important}.is-paddingless{padding:0!important}.m-0{margin:0!important}.mt-0{margin-top:0!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mx-0{margin-left:0!important;margin-right:0!important}.my-0{margin-top:0!important;margin-bottom:0!important}.m-1{margin:.25rem!important}.mt-1{margin-top:.25rem!important}.mr-1{margin-right:.25rem!important}.mb-1{margin-bottom:.25rem!important}.ml-1{margin-left:.25rem!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-2{margin:.5rem!important}.mt-2{margin-top:.5rem!important}.mr-2{margin-right:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2{margin-left:.5rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-3{margin:.75rem!important}.mt-3{margin-top:.75rem!important}.mr-3{margin-right:.75rem!important}.mb-3{margin-bottom:.75rem!important}.ml-3{margin-left:.75rem!important}.mx-3{margin-left:.75rem!important;margin-right:.75rem!important}.my-3{margin-top:.75rem!important;margin-bottom:.75rem!important}.m-4{margin:1rem!important}.mt-4{margin-top:1rem!important}.mr-4{margin-right:1rem!important}.mb-4{margin-bottom:1rem!important}.ml-4{margin-left:1rem!important}.mx-4{margin-left:1rem!important;margin-right:1rem!important}.my-4{margin-top:1rem!important;margin-bottom:1rem!important}.m-5{margin:1.5rem!important}.mt-5{margin-top:1.5rem!important}.mr-5{margin-right:1.5rem!important}.mb-5{margin-bottom:1.5rem!important}.ml-5{margin-left:1.5rem!important}.mx-5{margin-left:1.5rem!important;margin-right:1.5rem!important}.my-5{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-6{margin:3rem!important}.mt-6{margin-top:3rem!important}.mr-6{margin-right:3rem!important}.mb-6{margin-bottom:3rem!important}.ml-6{margin-left:3rem!important}.mx-6{margin-left:3rem!important;margin-right:3rem!important}.my-6{margin-top:3rem!important;margin-bottom:3rem!important}.p-0{padding:0!important}.pt-0{padding-top:0!important}.pr-0{padding-right:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.px-0{padding-left:0!important;padding-right:0!important}.py-0{padding-top:0!important;padding-bottom:0!important}.p-1{padding:.25rem!important}.pt-1{padding-top:.25rem!important}.pr-1{padding-right:.25rem!important}.pb-1{padding-bottom:.25rem!important}.pl-1{padding-left:.25rem!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-2{padding:.5rem!important}.pt-2{padding-top:.5rem!important}.pr-2{padding-right:.5rem!important}.pb-2{padding-bottom:.5rem!important}.pl-2{padding-left:.5rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-3{padding:.75rem!important}.pt-3{padding-top:.75rem!important}.pr-3{padding-right:.75rem!important}.pb-3{padding-bottom:.75rem!important}.pl-3{padding-left:.75rem!important}.px-3{padding-left:.75rem!important;padding-right:.75rem!important}.py-3{padding-top:.75rem!important;padding-bottom:.75rem!important}.p-4{padding:1rem!important}.pt-4{padding-top:1rem!important}.pr-4{padding-right:1rem!important}.pb-4{padding-bottom:1rem!important}.pl-4{padding-left:1rem!important}.px-4{padding-left:1rem!important;padding-right:1rem!important}.py-4{padding-top:1rem!important;padding-bottom:1rem!important}.p-5{padding:1.5rem!important}.pt-5{padding-top:1.5rem!important}.pr-5{padding-right:1.5rem!important}.pb-5{padding-bottom:1.5rem!important}.pl-5{padding-left:1.5rem!important}.px-5{padding-left:1.5rem!important;padding-right:1.5rem!important}.py-5{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-6{padding:3rem!important}.pt-6{padding-top:3rem!important}.pr-6{padding-right:3rem!important}.pb-6{padding-bottom:3rem!important}.pl-6{padding-left:3rem!important}.px-6{padding-left:3rem!important;padding-right:3rem!important}.py-6{padding-top:3rem!important;padding-bottom:3rem!important}.is-size-1{font-size:3rem!important}.is-size-2{font-size:2.5rem!important}.is-size-3{font-size:2rem!important}.is-size-4{font-size:1.5rem!important}.is-size-5{font-size:1.25rem!important}.is-size-6{font-size:1rem!important}.is-size-7{font-size:.75rem!important}@media screen and (max-width:768px){.is-size-1-mobile{font-size:3rem!important}.is-size-2-mobile{font-size:2.5rem!important}.is-size-3-mobile{font-size:2rem!important}.is-size-4-mobile{font-size:1.5rem!important}.is-size-5-mobile{font-size:1.25rem!important}.is-size-6-mobile{font-size:1rem!important}.is-size-7-mobile{font-size:.75rem!important}}@media screen and (min-width:769px),print{.is-size-1-tablet{font-size:3rem!important}.is-size-2-tablet{font-size:2.5rem!important}.is-size-3-tablet{font-size:2rem!important}.is-size-4-tablet{font-size:1.5rem!important}.is-size-5-tablet{font-size:1.25rem!important}.is-size-6-tablet{font-size:1rem!important}.is-size-7-tablet{font-size:.75rem!important}}@media screen and (max-width:1023px){.is-size-1-touch{font-size:3rem!important}.is-size-2-touch{font-size:2.5rem!important}.is-size-3-touch{font-size:2rem!important}.is-size-4-touch{font-size:1.5rem!important}.is-size-5-touch{font-size:1.25rem!important}.is-size-6-touch{font-size:1rem!important}.is-size-7-touch{font-size:.75rem!important}}@media screen and (min-width:1024px){.is-size-1-desktop{font-size:3rem!important}.is-size-2-desktop{font-size:2.5rem!important}.is-size-3-desktop{font-size:2rem!important}.is-size-4-desktop{font-size:1.5rem!important}.is-size-5-desktop{font-size:1.25rem!important}.is-size-6-desktop{font-size:1rem!important}.is-size-7-desktop{font-size:.75rem!important}}@media screen and (min-width:1216px){.is-size-1-widescreen{font-size:3rem!important}.is-size-2-widescreen{font-size:2.5rem!important}.is-size-3-widescreen{font-size:2rem!important}.is-size-4-widescreen{font-size:1.5rem!important}.is-size-5-widescreen{font-size:1.25rem!important}.is-size-6-widescreen{font-size:1rem!important}.is-size-7-widescreen{font-size:.75rem!important}}@media screen and (min-width:1408px){.is-size-1-fullhd{font-size:3rem!important}.is-size-2-fullhd{font-size:2.5rem!important}.is-size-3-fullhd{font-size:2rem!important}.is-size-4-fullhd{font-size:1.5rem!important}.is-size-5-fullhd{font-size:1.25rem!important}.is-size-6-fullhd{font-size:1rem!important}.is-size-7-fullhd{font-size:.75rem!important}}.has-text-centered{text-align:center!important}.has-text-justified{text-align:justify!important}.has-text-left{text-align:left!important}.has-text-right{text-align:right!important}@media screen and (max-width:768px){.has-text-centered-mobile{text-align:center!important}}@media screen and (min-width:769px),print{.has-text-centered-tablet{text-align:center!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-centered-tablet-only{text-align:center!important}}@media screen and (max-width:1023px){.has-text-centered-touch{text-align:center!important}}@media screen and (min-width:1024px){.has-text-centered-desktop{text-align:center!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-centered-desktop-only{text-align:center!important}}@media screen and (min-width:1216px){.has-text-centered-widescreen{text-align:center!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-centered-widescreen-only{text-align:center!important}}@media screen and (min-width:1408px){.has-text-centered-fullhd{text-align:center!important}}@media screen and (max-width:768px){.has-text-justified-mobile{text-align:justify!important}}@media screen and (min-width:769px),print{.has-text-justified-tablet{text-align:justify!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-justified-tablet-only{text-align:justify!important}}@media screen and (max-width:1023px){.has-text-justified-touch{text-align:justify!important}}@media screen and (min-width:1024px){.has-text-justified-desktop{text-align:justify!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-justified-desktop-only{text-align:justify!important}}@media screen and (min-width:1216px){.has-text-justified-widescreen{text-align:justify!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-justified-widescreen-only{text-align:justify!important}}@media screen and (min-width:1408px){.has-text-justified-fullhd{text-align:justify!important}}@media screen and (max-width:768px){.has-text-left-mobile{text-align:left!important}}@media screen and (min-width:769px),print{.has-text-left-tablet{text-align:left!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-left-tablet-only{text-align:left!important}}@media screen and (max-width:1023px){.has-text-left-touch{text-align:left!important}}@media screen and (min-width:1024px){.has-text-left-desktop{text-align:left!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-left-desktop-only{text-align:left!important}}@media screen and (min-width:1216px){.has-text-left-widescreen{text-align:left!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-left-widescreen-only{text-align:left!important}}@media screen and (min-width:1408px){.has-text-left-fullhd{text-align:left!important}}@media screen and (max-width:768px){.has-text-right-mobile{text-align:right!important}}@media screen and (min-width:769px),print{.has-text-right-tablet{text-align:right!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-right-tablet-only{text-align:right!important}}@media screen and (max-width:1023px){.has-text-right-touch{text-align:right!important}}@media screen and (min-width:1024px){.has-text-right-desktop{text-align:right!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-right-desktop-only{text-align:right!important}}@media screen and (min-width:1216px){.has-text-right-widescreen{text-align:right!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-right-widescreen-only{text-align:right!important}}@media screen and (min-width:1408px){.has-text-right-fullhd{text-align:right!important}}.is-capitalized{text-transform:capitalize!important}.is-lowercase{text-transform:lowercase!important}.is-uppercase{text-transform:uppercase!important}.is-italic{font-style:italic!important}.has-text-weight-light{font-weight:300!important}.has-text-weight-normal{font-weight:400!important}.has-text-weight-medium{font-weight:500!important}.has-text-weight-semibold{font-weight:600!important}.has-text-weight-bold{font-weight:700!important}.is-family-primary{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif!important}.is-family-secondary{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif!important}.is-family-sans-serif{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif!important}.is-family-monospace{font-family:monospace!important}.is-family-code{font-family:monospace!important}.is-block{display:block!important}@media screen and (max-width:768px){.is-block-mobile{display:block!important}}@media screen and (min-width:769px),print{.is-block-tablet{display:block!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-block-tablet-only{display:block!important}}@media screen and (max-width:1023px){.is-block-touch{display:block!important}}@media screen and (min-width:1024px){.is-block-desktop{display:block!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-block-desktop-only{display:block!important}}@media screen and (min-width:1216px){.is-block-widescreen{display:block!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-block-widescreen-only{display:block!important}}@media screen and (min-width:1408px){.is-block-fullhd{display:block!important}}.is-flex{display:flex!important}@media screen and (max-width:768px){.is-flex-mobile{display:flex!important}}@media screen and (min-width:769px),print{.is-flex-tablet{display:flex!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-flex-tablet-only{display:flex!important}}@media screen and (max-width:1023px){.is-flex-touch{display:flex!important}}@media screen and (min-width:1024px){.is-flex-desktop{display:flex!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-flex-desktop-only{display:flex!important}}@media screen and (min-width:1216px){.is-flex-widescreen{display:flex!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-flex-widescreen-only{display:flex!important}}@media screen and (min-width:1408px){.is-flex-fullhd{display:flex!important}}.is-inline{display:inline!important}@media screen and (max-width:768px){.is-inline-mobile{display:inline!important}}@media screen and (min-width:769px),print{.is-inline-tablet{display:inline!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-tablet-only{display:inline!important}}@media screen and (max-width:1023px){.is-inline-touch{display:inline!important}}@media screen and (min-width:1024px){.is-inline-desktop{display:inline!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-desktop-only{display:inline!important}}@media screen and (min-width:1216px){.is-inline-widescreen{display:inline!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-widescreen-only{display:inline!important}}@media screen and (min-width:1408px){.is-inline-fullhd{display:inline!important}}.is-inline-block{display:inline-block!important}@media screen and (max-width:768px){.is-inline-block-mobile{display:inline-block!important}}@media screen and (min-width:769px),print{.is-inline-block-tablet{display:inline-block!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-block-tablet-only{display:inline-block!important}}@media screen and (max-width:1023px){.is-inline-block-touch{display:inline-block!important}}@media screen and (min-width:1024px){.is-inline-block-desktop{display:inline-block!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-block-desktop-only{display:inline-block!important}}@media screen and (min-width:1216px){.is-inline-block-widescreen{display:inline-block!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-block-widescreen-only{display:inline-block!important}}@media screen and (min-width:1408px){.is-inline-block-fullhd{display:inline-block!important}}.is-inline-flex{display:inline-flex!important}@media screen and (max-width:768px){.is-inline-flex-mobile{display:inline-flex!important}}@media screen and (min-width:769px),print{.is-inline-flex-tablet{display:inline-flex!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-flex-tablet-only{display:inline-flex!important}}@media screen and (max-width:1023px){.is-inline-flex-touch{display:inline-flex!important}}@media screen and (min-width:1024px){.is-inline-flex-desktop{display:inline-flex!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-flex-desktop-only{display:inline-flex!important}}@media screen and (min-width:1216px){.is-inline-flex-widescreen{display:inline-flex!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-flex-widescreen-only{display:inline-flex!important}}@media screen and (min-width:1408px){.is-inline-flex-fullhd{display:inline-flex!important}}.is-hidden{display:none!important}.is-sr-only{border:none!important;clip:rect(0,0,0,0)!important;height:.01em!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:.01em!important}@media screen and (max-width:768px){.is-hidden-mobile{display:none!important}}@media screen and (min-width:769px),print{.is-hidden-tablet{display:none!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-hidden-tablet-only{display:none!important}}@media screen and (max-width:1023px){.is-hidden-touch{display:none!important}}@media screen and (min-width:1024px){.is-hidden-desktop{display:none!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-hidden-desktop-only{display:none!important}}@media screen and (min-width:1216px){.is-hidden-widescreen{display:none!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-hidden-widescreen-only{display:none!important}}@media screen and (min-width:1408px){.is-hidden-fullhd{display:none!important}}.is-invisible{visibility:hidden!important}@media screen and (max-width:768px){.is-invisible-mobile{visibility:hidden!important}}@media screen and (min-width:769px),print{.is-invisible-tablet{visibility:hidden!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-invisible-tablet-only{visibility:hidden!important}}@media screen and (max-width:1023px){.is-invisible-touch{visibility:hidden!important}}@media screen and (min-width:1024px){.is-invisible-desktop{visibility:hidden!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-invisible-desktop-only{visibility:hidden!important}}@media screen and (min-width:1216px){.is-invisible-widescreen{visibility:hidden!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-invisible-widescreen-only{visibility:hidden!important}}@media screen and (min-width:1408px){.is-invisible-fullhd{visibility:hidden!important}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:0 0}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10,10,10,.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width:1023px){.hero.is-white .navbar-menu{background-color:#fff}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(10,10,10,.7)}.hero.is-white .navbar-link.is-active,.hero.is-white .navbar-link:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg,#e6e6e6 0,#fff 71%,#fff 100%)}@media screen and (max-width:768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg,#e6e6e6 0,#fff 71%,#fff 100%)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-black .navbar-menu{background-color:#0a0a0a}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:rgba(255,255,255,.7)}.hero.is-black .navbar-link.is-active,.hero.is-black .navbar-link:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black a.navbar-item:hover{background-color:#000;color:#fff}.hero.is-black .tabs a{color:#fff;opacity:.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg,#000 0,#0a0a0a 71%,#181616 100%)}@media screen and (max-width:768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg,#000 0,#0a0a0a 71%,#181616 100%)}}.hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-light strong{color:inherit}.hero.is-light .title{color:rgba(0,0,0,.7)}.hero.is-light .subtitle{color:rgba(0,0,0,.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width:1023px){.hero.is-light .navbar-menu{background-color:#f5f5f5}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(0,0,0,.7)}.hero.is-light .navbar-link.is-active,.hero.is-light .navbar-link:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.hero.is-light .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg,#dfd8d9 0,#f5f5f5 71%,#fff 100%)}@media screen and (max-width:768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg,#dfd8d9 0,#f5f5f5 71%,#fff 100%)}}.hero.is-dark{background-color:#363636;color:#fff}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-dark strong{color:inherit}.hero.is-dark .title{color:#fff}.hero.is-dark .subtitle{color:rgba(255,255,255,.9)}.hero.is-dark .subtitle a:not(.button),.hero.is-dark .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-dark .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.hero.is-dark .navbar-link{color:rgba(255,255,255,.7)}.hero.is-dark .navbar-link.is-active,.hero.is-dark .navbar-link:hover,.hero.is-dark a.navbar-item.is-active,.hero.is-dark a.navbar-item:hover{background-color:#292929;color:#fff}.hero.is-dark .tabs a{color:#fff;opacity:.9}.hero.is-dark .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a{opacity:1}.hero.is-dark .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a{color:#fff}.hero.is-dark .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#363636}.hero.is-dark.is-bold{background-image:linear-gradient(141deg,#1f191a 0,#363636 71%,#46403f 100%)}@media screen and (max-width:768px){.hero.is-dark.is-bold .navbar-menu{background-image:linear-gradient(141deg,#1f191a 0,#363636 71%,#46403f 100%)}}.hero.is-primary{background-color:#00d1b2;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong{color:inherit}.hero.is-primary .title{color:#fff}.hero.is-primary .subtitle{color:rgba(255,255,255,.9)}.hero.is-primary .subtitle a:not(.button),.hero.is-primary .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-primary .navbar-menu{background-color:#00d1b2}}.hero.is-primary .navbar-item,.hero.is-primary .navbar-link{color:rgba(255,255,255,.7)}.hero.is-primary .navbar-link.is-active,.hero.is-primary .navbar-link:hover,.hero.is-primary a.navbar-item.is-active,.hero.is-primary a.navbar-item:hover{background-color:#00b89c;color:#fff}.hero.is-primary .tabs a{color:#fff;opacity:.9}.hero.is-primary .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a{opacity:1}.hero.is-primary .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#00d1b2}.hero.is-primary.is-bold{background-image:linear-gradient(141deg,#009e6c 0,#00d1b2 71%,#00e7eb 100%)}@media screen and (max-width:768px){.hero.is-primary.is-bold .navbar-menu{background-image:linear-gradient(141deg,#009e6c 0,#00d1b2 71%,#00e7eb 100%)}}.hero.is-link{background-color:#3273dc;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:rgba(255,255,255,.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-link .navbar-menu{background-color:#3273dc}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:rgba(255,255,255,.7)}.hero.is-link .navbar-link.is-active,.hero.is-link .navbar-link:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link a.navbar-item:hover{background-color:#2366d1;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:.9}.hero.is-link .tabs a:hover{opacity:1}.hero.is-link .tabs li.is-active a{opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3273dc}.hero.is-link.is-bold{background-image:linear-gradient(141deg,#1577c6 0,#3273dc 71%,#4366e5 100%)}@media screen and (max-width:768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg,#1577c6 0,#3273dc 71%,#4366e5 100%)}}.hero.is-info{background-color:#3298dc;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255,255,255,.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-info .navbar-menu{background-color:#3298dc}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:rgba(255,255,255,.7)}.hero.is-info .navbar-link.is-active,.hero.is-info .navbar-link:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info a.navbar-item:hover{background-color:#238cd1;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3298dc}.hero.is-info.is-bold{background-image:linear-gradient(141deg,#159dc6 0,#3298dc 71%,#4389e5 100%)}@media screen and (max-width:768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg,#159dc6 0,#3298dc 71%,#4389e5 100%)}}.hero.is-success{background-color:#48c774;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255,255,255,.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-success .navbar-menu{background-color:#48c774}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:rgba(255,255,255,.7)}.hero.is-success .navbar-link.is-active,.hero.is-success .navbar-link:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success a.navbar-item:hover{background-color:#3abb67;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#48c774}.hero.is-success.is-bold{background-image:linear-gradient(141deg,#29b342 0,#48c774 71%,#56d296 100%)}@media screen and (max-width:768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg,#29b342 0,#48c774 71%,#56d296 100%)}}.hero.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:rgba(0,0,0,.7)}.hero.is-warning .subtitle{color:rgba(0,0,0,.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width:1023px){.hero.is-warning .navbar-menu{background-color:#ffdd57}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(0,0,0,.7)}.hero.is-warning .navbar-link.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning a.navbar-item:hover{background-color:#ffd83d;color:rgba(0,0,0,.7)}.hero.is-warning .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#ffdd57}.hero.is-warning.is-bold{background-image:linear-gradient(141deg,#ffaf24 0,#ffdd57 71%,#fffa70 100%)}@media screen and (max-width:768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg,#ffaf24 0,#ffdd57 71%,#fffa70 100%)}}.hero.is-danger{background-color:#f14668;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255,255,255,.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-danger .navbar-menu{background-color:#f14668}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:rgba(255,255,255,.7)}.hero.is-danger .navbar-link.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger a.navbar-item:hover{background-color:#ef2e55;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#f14668}.hero.is-danger.is-bold{background-image:linear-gradient(141deg,#fa0a62 0,#f14668 71%,#f7595f 100%)}@media screen and (max-width:768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg,#fa0a62 0,#f14668 71%,#f7595f 100%)}}.hero.is-small .hero-body{padding:1.5rem}@media screen and (min-width:769px),print{.hero.is-medium .hero-body{padding:9rem 1.5rem}}@media screen and (min-width:769px),print{.hero.is-large .hero-body{padding:18rem 1.5rem}}.hero.is-fullheight .hero-body,.hero.is-fullheight-with-navbar .hero-body,.hero.is-halfheight .hero-body{align-items:center;display:flex}.hero.is-fullheight .hero-body>.container,.hero.is-fullheight-with-navbar .hero-body>.container,.hero.is-halfheight .hero-body>.container{flex-grow:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0)}.hero-video.is-transparent{opacity:.3}@media screen and (max-width:768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width:768px){.hero-buttons .button{display:flex}.hero-buttons .button:not(:last-child){margin-bottom:.75rem}}@media screen and (min-width:769px),print{.hero-buttons{display:flex;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-foot,.hero-head{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}.section{padding:3rem 1.5rem}@media screen and (min-width:1024px){.section.is-medium{padding:9rem 1.5rem}.section.is-large{padding:18rem 1.5rem}}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem} From 0cb80aeb55f531f40f493457cb78b33363091522 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 07:24:03 -0700 Subject: [PATCH 028/252] Preserve search results after adding a book --- bookwyrm/templates/lists/list.html | 2 +- bookwyrm/views/list.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/lists/list.html b/bookwyrm/templates/lists/list.html index a9f8e5c0..80e2ba20 100644 --- a/bookwyrm/templates/lists/list.html +++ b/bookwyrm/templates/lists/list.html @@ -116,7 +116,7 @@

      {% include 'snippets/book_titleby.html' with book=book %}

      -
      + {% csrf_token %} diff --git a/bookwyrm/views/list.py b/bookwyrm/views/list.py index a2cf7afe..fe7bba54 100644 --- a/bookwyrm/views/list.py +++ b/bookwyrm/views/list.py @@ -1,5 +1,6 @@ """ book list views""" from typing import Optional +from urllib.parse import urlencode from django.contrib.auth.decorators import login_required from django.core.paginator import Paginator @@ -9,6 +10,7 @@ from django.db.models.functions import Coalesce from django.http import HttpResponseNotFound, HttpResponseBadRequest, HttpResponse from django.shortcuts import get_object_or_404, redirect from django.template.response import TemplateResponse +from django.urls import reverse from django.utils.decorators import method_decorator from django.views import View from django.views.decorators.http import require_POST @@ -263,7 +265,8 @@ def add_book(request): # if the book is already on the list, don't flip out pass - return redirect("list", book_list.id) + path = reverse('list', args=[book_list.id]) + return redirect("{:s}?{:s}".format(path, urlencode(request.GET))) @require_POST From 0f6b5cc6be4ea11014322aa206bdc217f751405e Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 08:02:30 -0700 Subject: [PATCH 029/252] Filter list search results to hide already added books --- bookwyrm/connectors/connector_manager.py | 6 ++++-- bookwyrm/connectors/self_connector.py | 17 +++++++++-------- bookwyrm/views/list.py | 8 ++++++-- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/bookwyrm/connectors/connector_manager.py b/bookwyrm/connectors/connector_manager.py index 53198c0a..e9998906 100644 --- a/bookwyrm/connectors/connector_manager.py +++ b/bookwyrm/connectors/connector_manager.py @@ -67,10 +67,12 @@ def search(query, min_confidence=0.1): return results -def local_search(query, min_confidence=0.1, raw=False): +def local_search(query, min_confidence=0.1, raw=False, filters=None): """ only look at local search results """ connector = load_connector(models.Connector.objects.get(local=True)) - return connector.search(query, min_confidence=min_confidence, raw=raw) + return connector.search( + query, min_confidence=min_confidence, raw=raw, filters=filters + ) def isbn_local_search(query, raw=False): diff --git a/bookwyrm/connectors/self_connector.py b/bookwyrm/connectors/self_connector.py index 500ffd74..66560f21 100644 --- a/bookwyrm/connectors/self_connector.py +++ b/bookwyrm/connectors/self_connector.py @@ -13,15 +13,16 @@ class Connector(AbstractConnector): """ instantiate a connector """ # pylint: disable=arguments-differ - def search(self, query, min_confidence=0.1, raw=False): + def search(self, query, min_confidence=0.1, raw=False, filters=None): """ search your local database """ + filters = filters or [] if not query: return [] # first, try searching unqiue identifiers - results = search_identifiers(query) + results = search_identifiers(query, *filters) if not results: # then try searching title/author - results = search_title_author(query, min_confidence) + results = search_title_author(query, min_confidence, *filters) search_results = [] for result in results: if raw: @@ -98,15 +99,15 @@ class Connector(AbstractConnector): pass -def search_identifiers(query): +def search_identifiers(query, *filters): """ tries remote_id, isbn; defined as dedupe fields on the model """ - filters = [ + or_filters = [ {f.name: query} for f in models.Edition._meta.get_fields() if hasattr(f, "deduplication_field") and f.deduplication_field ] results = models.Edition.objects.filter( - reduce(operator.or_, (Q(**f) for f in filters)) + *filters, reduce(operator.or_, (Q(**f) for f in or_filters)) ).distinct() # when there are multiple editions of the same work, pick the default. @@ -114,7 +115,7 @@ def search_identifiers(query): return results.filter(parent_work__default_edition__id=F("id")) or results -def search_title_author(query, min_confidence): +def search_title_author(query, min_confidence, *filters): """ searches for title and author """ vector = ( SearchVector("title", weight="A") @@ -126,7 +127,7 @@ def search_title_author(query, min_confidence): results = ( models.Edition.objects.annotate(search=vector) .annotate(rank=SearchRank(vector, query)) - .filter(rank__gt=min_confidence) + .filter(*filters, rank__gt=min_confidence) .order_by("-rank") ) diff --git a/bookwyrm/views/list.py b/bookwyrm/views/list.py index fe7bba54..748f2b8b 100644 --- a/bookwyrm/views/list.py +++ b/bookwyrm/views/list.py @@ -137,7 +137,11 @@ class List(View): if query and request.user.is_authenticated: # search for books - suggestions = connector_manager.local_search(query, raw=True) + suggestions = connector_manager.local_search( + query, + raw=True, + filters=[~Q(parent_work__editions__in=book_list.books.all())], + ) elif request.user.is_authenticated: # just suggest whatever books are nearby suggestions = request.user.shelfbook_set.filter( @@ -265,7 +269,7 @@ def add_book(request): # if the book is already on the list, don't flip out pass - path = reverse('list', args=[book_list.id]) + path = reverse("list", args=[book_list.id]) return redirect("{:s}?{:s}".format(path, urlencode(request.GET))) From 7fcf48e84df267da030aacae638cd6ba072ed215 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 09:57:01 -0700 Subject: [PATCH 030/252] Adds success notification for adding books to lists --- bookwyrm/templates/lists/list.html | 10 + bookwyrm/views/list.py | 4 +- locale/de_DE/LC_MESSAGES/django.po | 2894 ++++++++++++++++++++------ locale/en_US/LC_MESSAGES/django.po | 2412 +++++++++++++++++---- locale/es/LC_MESSAGES/django.po | 2764 +++++++++++++++--------- locale/fr_FR/LC_MESSAGES/django.po | 2726 +++++++++++++++++++----- locale/zh_Hans/LC_MESSAGES/django.po | 2758 +++++++++++++++++++----- 7 files changed, 10401 insertions(+), 3167 deletions(-) diff --git a/bookwyrm/templates/lists/list.html b/bookwyrm/templates/lists/list.html index 80e2ba20..641038d0 100644 --- a/bookwyrm/templates/lists/list.html +++ b/bookwyrm/templates/lists/list.html @@ -13,6 +13,16 @@
      + {% if request.GET.updated %} +
      + {% if list.curation != "open" and request.user != list.user %} + {% trans "You successfully suggested a book for this list!" %} + {% else %} + {% trans "You successfully added a book to this list!" %} + {% endif %} +
      + {% endif %} + {% if not items.object_list.exists %}

      {% trans "This list is currently empty" %}

      {% else %} diff --git a/bookwyrm/views/list.py b/bookwyrm/views/list.py index 50bcb863..6a241ada 100644 --- a/bookwyrm/views/list.py +++ b/bookwyrm/views/list.py @@ -270,7 +270,9 @@ def add_book(request): pass path = reverse("list", args=[book_list.id]) - return redirect("{:s}?{:s}".format(path, urlencode(request.GET))) + params = request.GET + params["updated"] = True + return redirect("{:s}?{:s}".format(path, urlencode(params))) @require_POST diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index 962b9736..7acc3f96 100644 --- a/locale/de_DE/LC_MESSAGES/django.po +++ b/locale/de_DE/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-01 13:14-0700\n" +"POT-Creation-Date: 2021-04-26 09:56-0700\n" "PO-Revision-Date: 2021-03-02 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -18,39 +18,70 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: bookwyrm/forms.py:226 +#: bookwyrm/forms.py:224 #, fuzzy #| msgid "A user with that username already exists." msgid "A user with this email already exists." msgstr "Dieser Benutzename ist bereits vergeben." -#: bookwyrm/forms.py:240 +#: bookwyrm/forms.py:238 msgid "One Day" msgstr "Ein Tag" -#: bookwyrm/forms.py:241 +#: bookwyrm/forms.py:239 msgid "One Week" msgstr "Eine Woche" -#: bookwyrm/forms.py:242 +#: bookwyrm/forms.py:240 msgid "One Month" msgstr "Ein Monat" -#: bookwyrm/forms.py:243 +#: bookwyrm/forms.py:241 msgid "Does Not Expire" msgstr "Läuft nicht aus" -#: bookwyrm/forms.py:248 +#: bookwyrm/forms.py:246 #, python-format msgid "%(count)d uses" msgstr "%(count)d Benutzungen" -#: bookwyrm/forms.py:251 +#: bookwyrm/forms.py:249 #, fuzzy #| msgid "Unlisted" msgid "Unlimited" msgstr "Ungelistet" +#: bookwyrm/forms.py:293 +msgid "List Order" +msgstr "" + +#: bookwyrm/forms.py:294 +#, fuzzy +#| msgid "Title" +msgid "Book Title" +msgstr "Titel" + +#: bookwyrm/forms.py:295 bookwyrm/templates/snippets/create_status_form.html:31 +#: bookwyrm/templates/user/shelf.html:80 bookwyrm/templates/user/shelf.html:110 +msgid "Rating" +msgstr "" + +#: bookwyrm/forms.py:297 bookwyrm/templates/lists/list.html:82 +msgid "Sort By" +msgstr "" + +#: bookwyrm/forms.py:301 +#, fuzzy +#| msgid "Started reading" +msgid "Ascending" +msgstr "Zu lesen angefangen" + +#: bookwyrm/forms.py:302 +#, fuzzy +#| msgid "Started reading" +msgid "Descending" +msgstr "Zu lesen angefangen" + #: bookwyrm/models/fields.py:24 #, python-format msgid "%(value)s is not a valid remote_id" @@ -61,7 +92,7 @@ msgstr "%(value)s ist keine gültige remote_id" msgid "%(value)s is not a valid username" msgstr "%(value)s ist kein gültiger Username" -#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:157 +#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:153 msgid "username" msgstr "Username" @@ -69,23 +100,23 @@ msgstr "Username" msgid "A user with that username already exists." msgstr "Dieser Benutzename ist bereits vergeben." -#: bookwyrm/settings.py:150 +#: bookwyrm/settings.py:152 msgid "English" msgstr "Englisch" -#: bookwyrm/settings.py:151 +#: bookwyrm/settings.py:153 msgid "German" msgstr "Deutsch" -#: bookwyrm/settings.py:152 +#: bookwyrm/settings.py:154 msgid "Spanish" msgstr "Spanisch" -#: bookwyrm/settings.py:153 +#: bookwyrm/settings.py:155 msgid "French" msgstr "Französisch" -#: bookwyrm/settings.py:154 +#: bookwyrm/settings.py:156 msgid "Simplified Chinese" msgstr "Vereinfachtes Chinesisch" @@ -122,82 +153,72 @@ msgstr "" msgid "Books by %(name)s" msgstr "Bücher von %(name)s" -#: bookwyrm/templates/book/book.html:21 +#: bookwyrm/templates/book/book.html:33 #: bookwyrm/templates/discover/large-book.html:12 #: bookwyrm/templates/discover/small-book.html:9 msgid "by" msgstr "von" -#: bookwyrm/templates/book/book.html:29 bookwyrm/templates/book/book.html:30 +#: bookwyrm/templates/book/book.html:41 bookwyrm/templates/book/book.html:42 msgid "Edit Book" msgstr "Buch editieren" -#: bookwyrm/templates/book/book.html:49 +#: bookwyrm/templates/book/book.html:61 #: bookwyrm/templates/book/cover_modal.html:5 msgid "Add cover" msgstr "Cover hinzufügen" -#: bookwyrm/templates/book/book.html:53 +#: bookwyrm/templates/book/book.html:65 #, fuzzy #| msgid "Failed to load" msgid "Failed to load cover" msgstr "Laden fehlgeschlagen" -#: bookwyrm/templates/book/book.html:62 -msgid "ISBN:" -msgstr "" - -#: bookwyrm/templates/book/book.html:69 -#: bookwyrm/templates/book/edit_book.html:211 -msgid "OCLC Number:" -msgstr "OCLC Nummer:" - -#: bookwyrm/templates/book/book.html:76 -#: bookwyrm/templates/book/edit_book.html:215 -msgid "ASIN:" -msgstr "" - -#: bookwyrm/templates/book/book.html:85 +#: bookwyrm/templates/book/book.html:82 msgid "View on OpenLibrary" msgstr "In OpenLibrary ansehen" -#: bookwyrm/templates/book/book.html:94 +#: bookwyrm/templates/book/book.html:102 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" msgstr[0] "(%(review_count)s Bewertung)" msgstr[1] "(%(review_count)s Bewertungen)" -#: bookwyrm/templates/book/book.html:100 +#: bookwyrm/templates/book/book.html:114 msgid "Add Description" msgstr "Beschreibung hinzufügen" -#: bookwyrm/templates/book/book.html:107 -#: bookwyrm/templates/book/edit_book.html:101 +#: bookwyrm/templates/book/book.html:121 +#: bookwyrm/templates/book/edit_book.html:107 #: bookwyrm/templates/lists/form.html:12 msgid "Description:" msgstr "Beschreibung:" -#: bookwyrm/templates/book/book.html:111 -#: bookwyrm/templates/book/edit_book.html:225 +#: bookwyrm/templates/book/book.html:125 +#: bookwyrm/templates/book/edit_book.html:240 #: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 #: bookwyrm/templates/preferences/edit_user.html:70 +#: bookwyrm/templates/settings/edit_server.html:68 +#: bookwyrm/templates/settings/federated_server.html:93 #: bookwyrm/templates/settings/site.html:93 -#: bookwyrm/templates/snippets/readthrough.html:65 +#: bookwyrm/templates/snippets/readthrough.html:75 #: 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/start_reading_modal.html:34 +#: bookwyrm/templates/user_admin/user_moderation_actions.html:38 msgid "Save" msgstr "Speichern" -#: bookwyrm/templates/book/book.html:112 bookwyrm/templates/book/book.html:161 +#: bookwyrm/templates/book/book.html:126 bookwyrm/templates/book/book.html:175 #: bookwyrm/templates/book/cover_modal.html:32 -#: bookwyrm/templates/book/edit_book.html:226 +#: bookwyrm/templates/book/edit_book.html:241 #: bookwyrm/templates/edit_author.html:79 -#: bookwyrm/templates/moderation/report_modal.html:32 +#: bookwyrm/templates/moderation/report_modal.html:34 +#: bookwyrm/templates/settings/federated_server.html:94 #: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 #: bookwyrm/templates/snippets/goal_form.html:32 -#: bookwyrm/templates/snippets/readthrough.html:66 +#: bookwyrm/templates/snippets/readthrough.html:76 #: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:43 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43 #: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:35 @@ -205,80 +226,124 @@ msgstr "Speichern" msgid "Cancel" msgstr "Abbrechen" -#: bookwyrm/templates/book/book.html:121 +#: bookwyrm/templates/book/book.html:135 #, fuzzy, python-format #| msgid "%(title)s by " msgid "%(count)s editions" msgstr "%(title)s von" -#: bookwyrm/templates/book/book.html:129 +#: bookwyrm/templates/book/book.html:143 #, fuzzy, python-format #| msgid "Direct Messages with %(username)s" msgid "This edition is on your %(shelf_name)s shelf." msgstr "Direktnachrichten mit %(username)s" -#: bookwyrm/templates/book/book.html:135 +#: bookwyrm/templates/book/book.html:149 #, fuzzy, python-format -#| msgid " added %(book_title)s to your list \"%(list_name)s\"" -msgid "A different edition of this book is on your %(shelf_name)s shelf." -msgstr "hat %(book_title)s zu deiner Liste \"%(list_name)s\" Hinzugefügt" +#| msgid "" +#| " added %(book_title)s to your list " +#| "\"%(list_name)s\"" +msgid "" +"A different edition of this book is on your %(shelf_name)s shelf." +msgstr "" +"hat %(book_title)s zu deiner Liste " +"\"%(list_name)s\" Hinzugefügt" -#: bookwyrm/templates/book/book.html:144 +#: bookwyrm/templates/book/book.html:158 msgid "Your reading activity" msgstr "Deine Leseaktivität" -#: bookwyrm/templates/book/book.html:146 +#: bookwyrm/templates/book/book.html:160 msgid "Add read dates" msgstr "Lesedaten hinzufügen" -#: bookwyrm/templates/book/book.html:151 +#: bookwyrm/templates/book/book.html:165 msgid "You don't have any reading activity for this book." msgstr "Du hast keine Leseaktivität für dieses Buch." -#: bookwyrm/templates/book/book.html:158 +#: bookwyrm/templates/book/book.html:172 msgid "Create" msgstr "Erstellen" -#: bookwyrm/templates/book/book.html:180 +#: bookwyrm/templates/book/book.html:194 msgid "Subjects" msgstr "Themen" -#: bookwyrm/templates/book/book.html:191 +#: bookwyrm/templates/book/book.html:206 msgid "Places" msgstr "Orte" -#: bookwyrm/templates/book/book.html:202 bookwyrm/templates/layout.html:64 +#: bookwyrm/templates/book/book.html:217 bookwyrm/templates/layout.html:65 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search_results.html:91 #: bookwyrm/templates/user/user_layout.html:62 msgid "Lists" msgstr "Listen" -#: bookwyrm/templates/book/book.html:213 +#: bookwyrm/templates/book/book.html:228 #, fuzzy #| msgid "Go to list" msgid "Add to list" msgstr "Zur Liste" -#: bookwyrm/templates/book/book.html:223 +#: bookwyrm/templates/book/book.html:238 #: bookwyrm/templates/book/cover_modal.html:31 -#: bookwyrm/templates/lists/list.html:90 +#: bookwyrm/templates/lists/list.html:133 msgid "Add" msgstr "Hinzufügen" -#: bookwyrm/templates/book/book.html:251 +#: bookwyrm/templates/book/book.html:254 +#, fuzzy +#| msgid "Review" +msgid "Reviews" +msgstr "Bewerten" + +#: bookwyrm/templates/book/book.html:259 +#, fuzzy +#| msgid "Your shelves" +msgid "Your reviews" +msgstr "Deine Regale" + +#: bookwyrm/templates/book/book.html:265 +#, fuzzy +#| msgid "Your Account" +msgid "Your comments" +msgstr "Dein Account" + +#: bookwyrm/templates/book/book.html:271 +#, fuzzy +#| msgid "Your books" +msgid "Your quotes" +msgstr "Deine Bücher" + +#: bookwyrm/templates/book/book.html:305 msgid "rated it" msgstr "bewertet" +#: bookwyrm/templates/book/book_identifiers.html:8 +msgid "ISBN:" +msgstr "" + +#: bookwyrm/templates/book/book_identifiers.html:15 +#: bookwyrm/templates/book/edit_book.html:226 +msgid "OCLC Number:" +msgstr "OCLC Nummer:" + +#: bookwyrm/templates/book/book_identifiers.html:22 +#: bookwyrm/templates/book/edit_book.html:230 +msgid "ASIN:" +msgstr "" + #: bookwyrm/templates/book/cover_modal.html:17 -#: bookwyrm/templates/book/edit_book.html:163 +#: bookwyrm/templates/book/edit_book.html:178 #, fuzzy #| msgid "Add cover" msgid "Upload cover:" msgstr "Cover hinzufügen" #: bookwyrm/templates/book/cover_modal.html:23 -#: bookwyrm/templates/book/edit_book.html:169 +#: bookwyrm/templates/book/edit_book.html:184 msgid "Load cover from url:" msgstr "Cover von URL laden:" @@ -358,93 +423,93 @@ msgstr "Zurück" msgid "Metadata" msgstr "Metadaten" -#: bookwyrm/templates/book/edit_book.html:91 +#: bookwyrm/templates/book/edit_book.html:92 msgid "Title:" msgstr "Titel:" -#: bookwyrm/templates/book/edit_book.html:96 +#: bookwyrm/templates/book/edit_book.html:100 msgid "Subtitle:" msgstr "Untertitel:" -#: bookwyrm/templates/book/edit_book.html:106 +#: bookwyrm/templates/book/edit_book.html:113 msgid "Series:" msgstr "Serie:" -#: bookwyrm/templates/book/edit_book.html:111 +#: bookwyrm/templates/book/edit_book.html:120 msgid "Series number:" msgstr "Seriennummer:" -#: bookwyrm/templates/book/edit_book.html:117 +#: bookwyrm/templates/book/edit_book.html:126 #, fuzzy #| msgid "Published" msgid "Publisher:" msgstr "Veröffentlicht" -#: bookwyrm/templates/book/edit_book.html:119 +#: bookwyrm/templates/book/edit_book.html:128 msgid "Separate multiple publishers with commas." msgstr "Mehrere Herausgeber:innen durch Kommata trennen" -#: bookwyrm/templates/book/edit_book.html:125 +#: bookwyrm/templates/book/edit_book.html:135 msgid "First published date:" msgstr "Erstveröffentlichungsdatum:" -#: bookwyrm/templates/book/edit_book.html:130 +#: bookwyrm/templates/book/edit_book.html:143 msgid "Published date:" msgstr "Veröffentlichungsdatum:" -#: bookwyrm/templates/book/edit_book.html:137 +#: bookwyrm/templates/book/edit_book.html:152 #, fuzzy #| msgid "Author" msgid "Authors" msgstr "Autor*in" -#: bookwyrm/templates/book/edit_book.html:143 +#: bookwyrm/templates/book/edit_book.html:158 #, fuzzy, python-format #| msgid "Direct Messages with %(username)s" msgid "Remove %(name)s" msgstr "Direktnachrichten mit %(username)s" -#: bookwyrm/templates/book/edit_book.html:148 +#: bookwyrm/templates/book/edit_book.html:163 #, fuzzy #| msgid "Edit Author" msgid "Add Authors:" msgstr "Autor*in editieren" -#: bookwyrm/templates/book/edit_book.html:149 +#: bookwyrm/templates/book/edit_book.html:164 msgid "John Doe, Jane Smith" msgstr "" -#: bookwyrm/templates/book/edit_book.html:155 -#: bookwyrm/templates/user/shelf.html:75 +#: bookwyrm/templates/book/edit_book.html:170 +#: bookwyrm/templates/user/shelf.html:74 msgid "Cover" msgstr "" -#: bookwyrm/templates/book/edit_book.html:182 +#: bookwyrm/templates/book/edit_book.html:197 msgid "Physical Properties" msgstr "Physikalische Eigenschaften" -#: bookwyrm/templates/book/edit_book.html:183 +#: bookwyrm/templates/book/edit_book.html:198 #: bookwyrm/templates/book/format_filter.html:5 msgid "Format:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:191 +#: bookwyrm/templates/book/edit_book.html:206 msgid "Pages:" msgstr "Seiten:" -#: bookwyrm/templates/book/edit_book.html:198 +#: bookwyrm/templates/book/edit_book.html:213 msgid "Book Identifiers" msgstr "Buchidentifikatoren" -#: bookwyrm/templates/book/edit_book.html:199 +#: bookwyrm/templates/book/edit_book.html:214 msgid "ISBN 13:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:203 +#: bookwyrm/templates/book/edit_book.html:218 msgid "ISBN 10:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:207 +#: bookwyrm/templates/book/edit_book.html:222 #: bookwyrm/templates/edit_author.html:59 msgid "Openlibrary key:" msgstr "" @@ -468,46 +533,57 @@ msgstr "" msgid "Language:" msgstr "" -#: bookwyrm/templates/book/publisher_info.html:6 +#: bookwyrm/templates/book/publisher_info.html:22 +#, python-format +msgid "%(format)s" +msgstr "" + +#: bookwyrm/templates/book/publisher_info.html:24 #, python-format msgid "%(format)s, %(pages)s pages" msgstr "%(format)s, %(pages)s Seiten" -#: bookwyrm/templates/book/publisher_info.html:8 +#: bookwyrm/templates/book/publisher_info.html:26 #, python-format msgid "%(pages)s pages" msgstr "%(pages)s Seiten" -#: bookwyrm/templates/book/publisher_info.html:13 +#: bookwyrm/templates/book/publisher_info.html:38 #, fuzzy, python-format #| msgid "%(pages)s pages" msgid "%(languages)s language" msgstr "%(pages)s Seiten" -#: bookwyrm/templates/book/publisher_info.html:18 +#: bookwyrm/templates/book/publisher_info.html:64 #, python-format msgid "Published %(date)s by %(publisher)s." msgstr "Am %(date)s von %(publisher)s veröffentlicht." -#: bookwyrm/templates/book/publisher_info.html:20 +#: bookwyrm/templates/book/publisher_info.html:66 #, fuzzy, python-format #| msgid "Published date:" msgid "Published %(date)s" msgstr "Veröffentlichungsdatum:" -#: bookwyrm/templates/book/publisher_info.html:22 +#: bookwyrm/templates/book/publisher_info.html:68 #, python-format msgid "Published by %(publisher)s." msgstr "Veröffentlicht von %(publisher)s." #: bookwyrm/templates/components/inline_form.html:8 #: bookwyrm/templates/components/modal.html:11 -#: bookwyrm/templates/feed/feed_layout.html:57 +#: bookwyrm/templates/feed/feed_layout.html:70 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 msgid "Close" msgstr "Schließen" +#: bookwyrm/templates/compose.html:5 bookwyrm/templates/compose.html:8 +#, fuzzy +#| msgid "Boost status" +msgid "Compose status" +msgstr "Status teilen" + #: bookwyrm/templates/directory/community_filter.html:5 #, fuzzy #| msgid "Comment" @@ -528,7 +604,7 @@ msgstr "Föderiert" #: bookwyrm/templates/directory/directory.html:6 #: bookwyrm/templates/directory/directory.html:11 -#: bookwyrm/templates/layout.html:97 +#: bookwyrm/templates/layout.html:93 msgid "Directory" msgstr "" @@ -538,9 +614,15 @@ msgstr "" #: bookwyrm/templates/directory/directory.html:26 #, fuzzy, python-format -#| msgid "You can set or change your reading goal any time from your profile page" -msgid "You can opt-out at any time in your profile settings." -msgstr "Du kannst dein Leseziel jederzeit auf deiner Profilseite setzen oder ändern." +#| msgid "" +#| "You can set or change your reading goal any time from your profile page" +msgid "" +"You can opt-out at any time in your profile settings." +msgstr "" +"Du kannst dein Leseziel jederzeit auf deiner Profilseite setzen oder ändern." #: bookwyrm/templates/directory/directory.html:31 #: bookwyrm/templates/snippets/goal_card.html:22 @@ -661,7 +743,7 @@ msgid "Email address:" msgstr "E-Mail Adresse" #: bookwyrm/templates/discover/landing_layout.html:70 -#: bookwyrm/templates/moderation/report_modal.html:31 +#: bookwyrm/templates/moderation/report_modal.html:33 msgid "Submit" msgstr "Absenden" @@ -716,7 +798,9 @@ msgstr "" #: bookwyrm/templates/email/html_layout.html:21 #, python-format -msgid "BookWyrm hosted on %(site_name)s" +msgid "" +"BookWyrm hosted on " +"%(site_name)s" msgstr "" #: bookwyrm/templates/email/html_layout.html:23 @@ -736,12 +820,16 @@ msgstr "" #: bookwyrm/templates/email/invite/html_content.html:15 #, python-format -msgid "Learn more about this instance." +msgid "" +"Learn more about this instance." msgstr "" #: bookwyrm/templates/email/invite/text_content.html:4 #, python-format -msgid "You're invited to join %(site_name)s! Click the link below to create an account." +msgid "" +"You're invited to join %(site_name)s! Click the link below to create an " +"account." msgstr "" #: bookwyrm/templates/email/invite/text_content.html:8 @@ -753,7 +841,9 @@ msgstr "Mehr über diese Seite" #: bookwyrm/templates/email/password_reset/html_content.html:6 #: bookwyrm/templates/email/password_reset/text_content.html:4 #, python-format -msgid "You requested to reset your %(site_name)s password. Click the link below to set a new password and log in to your account." +msgid "" +"You requested to reset your %(site_name)s password. Click the link below to " +"set a new password and log in to your account." msgstr "" #: bookwyrm/templates/email/password_reset/html_content.html:9 @@ -766,7 +856,8 @@ msgstr "Passwort zurücksetzen!" #: bookwyrm/templates/email/password_reset/html_content.html:13 #: bookwyrm/templates/email/password_reset/text_content.html:8 -msgid "If you didn't request to reset your password, you can ignore this email." +msgid "" +"If you didn't request to reset your password, you can ignore this email." msgstr "" #: bookwyrm/templates/email/password_reset/subject.html:2 @@ -781,7 +872,7 @@ msgid "Direct Messages with %(username)s" msgstr "Direktnachrichten mit %(username)s" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:87 +#: bookwyrm/templates/layout.html:88 msgid "Direct Messages" msgstr "Direktnachrichten" @@ -816,6 +907,7 @@ msgid "Local" msgstr "Lokal" #: bookwyrm/templates/feed/feed.html:25 +#: bookwyrm/templates/settings/edit_server.html:40 msgid "Federated" msgstr "Föderiert" @@ -825,7 +917,8 @@ msgid "load 0 unread status(es)" msgstr "" #: bookwyrm/templates/feed/feed.html:48 -msgid "There aren't any activities right now! Try following a user to get started" +msgid "" +"There aren't any activities right now! Try following a user to get started" msgstr "Hier sind noch keine Aktivitäten! Folge anderen, um loszulegen" #: bookwyrm/templates/feed/feed.html:56 @@ -838,36 +931,38 @@ msgid "Updates" msgstr "" #: bookwyrm/templates/feed/feed_layout.html:11 -#: bookwyrm/templates/layout.html:58 +#: bookwyrm/templates/layout.html:59 #: bookwyrm/templates/user/books_header.html:3 msgid "Your books" msgstr "Deine Bücher" #: bookwyrm/templates/feed/feed_layout.html:13 -msgid "There are no books here right now! Try searching for a book to get started" -msgstr "Hier sind noch keine Bücher! Versuche nach Büchern zu suchen um loszulegen" +msgid "" +"There are no books here right now! Try searching for a book to get started" +msgstr "" +"Hier sind noch keine Bücher! Versuche nach Büchern zu suchen um loszulegen" -#: bookwyrm/templates/feed/feed_layout.html:23 +#: bookwyrm/templates/feed/feed_layout.html:24 #: bookwyrm/templates/user/shelf.html:28 #, fuzzy #| msgid "Read" msgid "To Read" msgstr "Auf der Leseliste" -#: bookwyrm/templates/feed/feed_layout.html:24 +#: bookwyrm/templates/feed/feed_layout.html:25 #: bookwyrm/templates/user/shelf.html:28 #, fuzzy #| msgid "Start reading" msgid "Currently Reading" msgstr "Gerade lesend" -#: bookwyrm/templates/feed/feed_layout.html:25 +#: bookwyrm/templates/feed/feed_layout.html:26 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:11 #: bookwyrm/templates/user/shelf.html:28 msgid "Read" msgstr "Gelesen" -#: bookwyrm/templates/feed/feed_layout.html:74 bookwyrm/templates/goal.html:26 +#: bookwyrm/templates/feed/feed_layout.html:88 bookwyrm/templates/goal.html:26 #: bookwyrm/templates/snippets/goal_card.html:6 #, python-format msgid "%(year)s Reading Goal" @@ -900,7 +995,7 @@ msgid "What are you reading?" msgstr "Zu lesen angefangen" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/lists/list.html:58 +#: bookwyrm/templates/lists/list.html:101 msgid "Search for a book" msgstr "Nach einem Buch suchen" @@ -920,8 +1015,8 @@ msgstr "" #: bookwyrm/templates/get_started/books.html:17 #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 -#: bookwyrm/templates/layout.html:37 bookwyrm/templates/layout.html:38 -#: bookwyrm/templates/lists/list.html:62 +#: bookwyrm/templates/layout.html:38 bookwyrm/templates/layout.html:39 +#: bookwyrm/templates/lists/list.html:105 msgid "Search" msgstr "Suche" @@ -938,7 +1033,7 @@ msgid "Popular on %(site_name)s" msgstr "Über %(site_name)s" #: bookwyrm/templates/get_started/books.html:51 -#: bookwyrm/templates/lists/list.html:75 +#: bookwyrm/templates/lists/list.html:118 msgid "No books found" msgstr "Keine Bücher gefunden" @@ -1016,7 +1111,9 @@ msgid "Show this account in suggested users:" msgstr "" #: bookwyrm/templates/get_started/profile.html:52 -msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users." +msgid "" +"Your account will show up in the directory, and may be recommended to other " +"BookWyrm users." msgstr "" #: bookwyrm/templates/get_started/users.html:11 @@ -1043,8 +1140,12 @@ msgstr "Ziel bearbeiten" #: bookwyrm/templates/goal.html:30 #: bookwyrm/templates/snippets/goal_card.html:13 #, python-format -msgid "Set a goal for how many books you'll finish reading in %(year)s, and track your progress throughout the year." -msgstr "Setze dir ein Ziel, wie viele Bücher du %(year)s lesen wirst und behalte deinen Fortschritt über's Jahr im Auge." +msgid "" +"Set a goal for how many books you'll finish reading in %(year)s, and track " +"your progress throughout the year." +msgstr "" +"Setze dir ein Ziel, wie viele Bücher du %(year)s lesen wirst und behalte " +"deinen Fortschritt über's Jahr im Auge." #: bookwyrm/templates/goal.html:39 #, python-format @@ -1062,7 +1163,7 @@ msgid "%(username)s's %(year)s Books" msgstr "%(username)ss %(year)s Bücher" #: bookwyrm/templates/import.html:5 bookwyrm/templates/import.html:9 -#: bookwyrm/templates/layout.html:102 +#: bookwyrm/templates/layout.html:98 msgid "Import Books" msgstr "Bücher importieren" @@ -1085,6 +1186,7 @@ msgid "Privacy setting for imported reviews:" msgstr "Datenschutzeinstellung für importierte Bewertungen" #: bookwyrm/templates/import.html:48 +#: bookwyrm/templates/settings/server_blocklist.html:64 msgid "Import" msgstr "Importieren" @@ -1127,8 +1229,12 @@ msgstr "Laden fehlgeschlagen" #: bookwyrm/templates/import_status.html:44 #, python-format -msgid "Jump to the bottom of the list to select the %(failed_count)s items which failed to import." -msgstr "Zum Ende der Liste springen, um die %(failed_count)s Einträge, deren Import fehlschlug, auszuwählen." +msgid "" +"Jump to the bottom of the list to select the %(failed_count)s items which " +"failed to import." +msgstr "" +"Zum Ende der Liste springen, um die %(failed_count)s Einträge, deren Import " +"fehlschlug, auszuwählen." #: bookwyrm/templates/import_status.html:79 msgid "Select all" @@ -1149,12 +1255,12 @@ msgstr "Buch" #: bookwyrm/templates/import_status.html:115 #: bookwyrm/templates/snippets/create_status_form.html:10 -#: bookwyrm/templates/user/shelf.html:76 +#: bookwyrm/templates/user/shelf.html:75 bookwyrm/templates/user/shelf.html:93 msgid "Title" msgstr "Titel" #: bookwyrm/templates/import_status.html:118 -#: bookwyrm/templates/user/shelf.html:77 +#: bookwyrm/templates/user/shelf.html:76 bookwyrm/templates/user/shelf.html:96 msgid "Author" msgstr "Autor*in" @@ -1191,91 +1297,94 @@ msgstr "Suchergebnisse für \"%(query)s\"" msgid "Matching Books" msgstr "Passende Bücher" -#: bookwyrm/templates/layout.html:33 +#: bookwyrm/templates/layout.html:34 msgid "Search for a book or user" msgstr "Suche nach Buch oder Benutzer*in" -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/layout.html:48 +#: bookwyrm/templates/layout.html:48 bookwyrm/templates/layout.html:49 msgid "Main navigation menu" msgstr "Navigationshauptmenü" -#: bookwyrm/templates/layout.html:61 +#: bookwyrm/templates/layout.html:62 msgid "Feed" msgstr "" -#: bookwyrm/templates/layout.html:92 -#: bookwyrm/templates/preferences/preferences_layout.html:14 -msgid "Profile" -msgstr "Profil" - -#: bookwyrm/templates/layout.html:107 +#: bookwyrm/templates/layout.html:103 msgid "Settings" msgstr "Einstellungen" -#: bookwyrm/templates/layout.html:116 -#: bookwyrm/templates/settings/admin_layout.html:24 +#: bookwyrm/templates/layout.html:112 +#: bookwyrm/templates/settings/admin_layout.html:31 #: bookwyrm/templates/settings/manage_invite_requests.html:15 #: bookwyrm/templates/settings/manage_invites.html:3 #: bookwyrm/templates/settings/manage_invites.html:15 msgid "Invites" msgstr "Einladungen" -#: bookwyrm/templates/layout.html:123 +#: bookwyrm/templates/layout.html:119 msgid "Admin" msgstr "" -#: bookwyrm/templates/layout.html:130 +#: bookwyrm/templates/layout.html:126 msgid "Log out" msgstr "Abmelden" -#: bookwyrm/templates/layout.html:138 bookwyrm/templates/layout.html:139 +#: bookwyrm/templates/layout.html:134 bookwyrm/templates/layout.html:135 #: bookwyrm/templates/notifications.html:6 #: bookwyrm/templates/notifications.html:10 msgid "Notifications" msgstr "Benachrichtigungen" -#: bookwyrm/templates/layout.html:156 bookwyrm/templates/layout.html:160 +#: bookwyrm/templates/layout.html:152 bookwyrm/templates/layout.html:156 #: bookwyrm/templates/login.html:17 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" msgstr "" -#: bookwyrm/templates/layout.html:161 +#: bookwyrm/templates/layout.html:157 msgid "password" msgstr "Passwort" -#: bookwyrm/templates/layout.html:162 bookwyrm/templates/login.html:36 +#: bookwyrm/templates/layout.html:158 bookwyrm/templates/login.html:36 msgid "Forgot your password?" msgstr "Passwort vergessen?" -#: bookwyrm/templates/layout.html:165 bookwyrm/templates/login.html:10 +#: bookwyrm/templates/layout.html:161 bookwyrm/templates/login.html:10 #: bookwyrm/templates/login.html:33 msgid "Log in" msgstr "Anmelden" -#: bookwyrm/templates/layout.html:173 +#: bookwyrm/templates/layout.html:169 msgid "Join" msgstr "" -#: bookwyrm/templates/layout.html:196 +#: bookwyrm/templates/layout.html:195 msgid "About this server" msgstr "Über diesen Server" -#: bookwyrm/templates/layout.html:200 +#: bookwyrm/templates/layout.html:199 msgid "Contact site admin" msgstr "Admin kontaktieren" -#: bookwyrm/templates/layout.html:207 +#: bookwyrm/templates/layout.html:206 #, python-format -msgid "Support %(site_name)s on %(support_title)s" -msgstr "%(site_name)s auf %(support_title)s unterstützen" +msgid "" +"Support %(site_name)s on " +"%(support_title)s" +msgstr "" +"%(site_name)s auf " +"%(support_title)s unterstützen" -#: bookwyrm/templates/layout.html:211 -msgid "BookWyrm is open source software. You can contribute or report issues on GitHub." -msgstr "BookWyrm ist open source Software. Du kannst dich auf GitHub beteiligen oder etwas melden." +#: bookwyrm/templates/layout.html:210 +msgid "" +"BookWyrm is open source software. You can contribute or report issues on GitHub." +msgstr "" +"BookWyrm ist open source Software. Du kannst dich auf GitHub beteiligen oder etwas melden." #: bookwyrm/templates/lists/create_form.html:5 -#: bookwyrm/templates/lists/lists.html:19 +#: bookwyrm/templates/lists/lists.html:20 msgid "Create List" msgstr "Liste erstellen" @@ -1341,7 +1450,7 @@ msgid "Anyone can suggest books, subject to your approval" msgstr "Alle können Bücher vorschlagen, du kannst diese bestätigen" #: bookwyrm/templates/lists/form.html:31 -#: bookwyrm/templates/moderation/reports.html:24 +#: bookwyrm/templates/moderation/reports.html:25 msgid "Open" msgstr "Offen" @@ -1349,46 +1458,84 @@ msgstr "Offen" msgid "Anyone can add books to this list" msgstr "Alle können Bücher hinzufügen" -#: bookwyrm/templates/lists/list.html:17 +#: bookwyrm/templates/lists/list.html:19 +msgid "You successfully suggested a book for this list!" +msgstr "" + +#: bookwyrm/templates/lists/list.html:21 +#, fuzzy +#| msgid "Anyone can add books to this list" +msgid "You successfully added a book to this list!" +msgstr "Alle können Bücher hinzufügen" + +#: bookwyrm/templates/lists/list.html:27 msgid "This list is currently empty" msgstr "Diese Liste ist momentan leer" -#: bookwyrm/templates/lists/list.html:35 +#: bookwyrm/templates/lists/list.html:46 #, fuzzy, python-format #| msgid "Direct Messages with %(username)s" msgid "Added by %(username)s" msgstr "Direktnachrichten mit %(username)s" -#: bookwyrm/templates/lists/list.html:41 -#: bookwyrm/templates/snippets/shelf_selector.html:28 +#: bookwyrm/templates/lists/list.html:58 +#, fuzzy +#| msgid "Started" +msgid "Set" +msgstr "Gestartet" + +#: bookwyrm/templates/lists/list.html:61 +#, fuzzy +#| msgid "List curation:" +msgid "List position" +msgstr "Listenkuratierung:" + +#: bookwyrm/templates/lists/list.html:67 +#: bookwyrm/templates/snippets/shelf_selector.html:26 msgid "Remove" msgstr "Entfernen" -#: bookwyrm/templates/lists/list.html:54 +#: bookwyrm/templates/lists/list.html:80 bookwyrm/templates/lists/list.html:92 +#, fuzzy +#| msgid "Your Lists" +msgid "Sort List" +msgstr "Deine Listen" + +#: bookwyrm/templates/lists/list.html:86 +#, fuzzy +#| msgid "List curation:" +msgid "Direction" +msgstr "Listenkuratierung:" + +#: bookwyrm/templates/lists/list.html:97 msgid "Add Books" msgstr "Bücher hinzufügen" -#: bookwyrm/templates/lists/list.html:54 +#: bookwyrm/templates/lists/list.html:97 msgid "Suggest Books" msgstr "Bücher vorschlagen" -#: bookwyrm/templates/lists/list.html:63 +#: bookwyrm/templates/lists/list.html:106 msgid "search" msgstr "suchen" -#: bookwyrm/templates/lists/list.html:69 +#: bookwyrm/templates/lists/list.html:112 msgid "Clear search" msgstr "Suche leeren" -#: bookwyrm/templates/lists/list.html:74 +#: bookwyrm/templates/lists/list.html:117 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "Keine passenden Bücher zu \"%(query)s\" gefunden" -#: bookwyrm/templates/lists/list.html:90 +#: bookwyrm/templates/lists/list.html:133 msgid "Suggest" msgstr "Vorschlagen" +#: bookwyrm/templates/lists/lists.html:14 bookwyrm/templates/user/lists.html:9 +msgid "Your Lists" +msgstr "Deine Listen" + #: bookwyrm/templates/login.html:4 msgid "Login" msgstr "" @@ -1406,65 +1553,41 @@ msgstr "Kontaktiere für eine Einladung eine*n Admin" msgid "More about this site" msgstr "Mehr über diese Seite" -#: bookwyrm/templates/moderation/report.html:5 #: bookwyrm/templates/moderation/report.html:6 +#: bookwyrm/templates/moderation/report.html:7 #: bookwyrm/templates/moderation/report_preview.html:6 #, python-format msgid "Report #%(report_id)s: %(username)s" msgstr "Meldung #%(report_id)s: %(username)s" -#: bookwyrm/templates/moderation/report.html:10 +#: bookwyrm/templates/moderation/report.html:11 msgid "Back to reports" msgstr "Zurück zu den Meldungen" -#: bookwyrm/templates/moderation/report.html:18 -#, fuzzy -#| msgid "Notifications" -msgid "Actions" -msgstr "Benachrichtigungen" - -#: bookwyrm/templates/moderation/report.html:19 -#, fuzzy -#| msgid "User Profile" -msgid "View user profile" -msgstr "Benutzerprofil" - -#: bookwyrm/templates/moderation/report.html:22 -#: bookwyrm/templates/snippets/status/status_options.html:25 -#: bookwyrm/templates/snippets/user_options.html:13 -msgid "Send direct message" -msgstr "Direktnachricht senden" - -#: bookwyrm/templates/moderation/report.html:27 -msgid "Deactivate user" -msgstr "Nutzer:in deaktivieren" - -#: bookwyrm/templates/moderation/report.html:29 -msgid "Reactivate user" -msgstr "Nutzer:in reaktivieren" - -#: bookwyrm/templates/moderation/report.html:36 +#: bookwyrm/templates/moderation/report.html:23 msgid "Moderator Comments" msgstr "Moderator:innenkommentare" -#: bookwyrm/templates/moderation/report.html:54 -#: bookwyrm/templates/snippets/create_status.html:12 -#: bookwyrm/templates/snippets/create_status_form.html:52 +#: bookwyrm/templates/moderation/report.html:41 +#: bookwyrm/templates/snippets/create_status.html:28 +#: bookwyrm/templates/snippets/create_status_form.html:53 msgid "Comment" msgstr "Kommentieren" -#: bookwyrm/templates/moderation/report.html:59 +#: bookwyrm/templates/moderation/report.html:46 #, fuzzy #| msgid "Delete status" msgid "Reported statuses" msgstr "Post löschen" -#: bookwyrm/templates/moderation/report.html:61 +#: bookwyrm/templates/moderation/report.html:48 msgid "No statuses reported" msgstr "Keine Beiträge gemeldet" -#: bookwyrm/templates/moderation/report.html:67 -msgid "Statuses has been deleted" +#: bookwyrm/templates/moderation/report.html:54 +#, fuzzy +#| msgid "Statuses has been deleted" +msgid "Status has been deleted" msgstr "Beiträge wurden gelöscht" #: bookwyrm/templates/moderation/report_modal.html:6 @@ -1473,12 +1596,13 @@ msgstr "Beiträge wurden gelöscht" msgid "Report @%(username)s" msgstr "Listen: %(username)s" -#: bookwyrm/templates/moderation/report_modal.html:21 +#: bookwyrm/templates/moderation/report_modal.html:23 #, python-format msgid "This report will be sent to %(site_name)s's moderators for review." -msgstr "Diese Meldung wird an die Moderator:innen von %(site_name)s weitergeletiet." +msgstr "" +"Diese Meldung wird an die Moderator:innen von %(site_name)s weitergeletiet." -#: bookwyrm/templates/moderation/report_modal.html:22 +#: bookwyrm/templates/moderation/report_modal.html:24 #, fuzzy #| msgid "More about this site" msgid "More info about this report:" @@ -1509,26 +1633,26 @@ msgid "Reports: %(server_name)s" msgstr "Listen: %(username)s" #: bookwyrm/templates/moderation/reports.html:8 -#: bookwyrm/templates/moderation/reports.html:16 -#: bookwyrm/templates/settings/admin_layout.html:28 +#: bookwyrm/templates/moderation/reports.html:17 +#: bookwyrm/templates/settings/admin_layout.html:35 #, fuzzy #| msgid "Recent Imports" msgid "Reports" msgstr "Aktuelle Importe" -#: bookwyrm/templates/moderation/reports.html:13 +#: bookwyrm/templates/moderation/reports.html:14 #, fuzzy, python-format #| msgid "Lists: %(username)s" msgid "Reports: %(server_name)s" msgstr "Listen: %(username)s" -#: bookwyrm/templates/moderation/reports.html:27 +#: bookwyrm/templates/moderation/reports.html:28 #, fuzzy #| msgid "Shelved" msgid "Resolved" msgstr "Ins Regal gestellt" -#: bookwyrm/templates/moderation/reports.html:34 +#: bookwyrm/templates/moderation/reports.html:37 #, fuzzy #| msgid "No books found" msgid "No reports found." @@ -1540,18 +1664,30 @@ msgstr "Benachrichtigungen löschen" #: bookwyrm/templates/notifications.html:53 #, python-format -msgid "favorited your review of %(book_title)s" -msgstr "hat deine Bewertung von %(book_title)s favorisiert" +msgid "" +"favorited your review of %(book_title)s" +msgstr "" +"hat deine Bewertung von %(book_title)s favorisiert" #: bookwyrm/templates/notifications.html:55 #, python-format -msgid "favorited your comment on %(book_title)s" -msgstr "hat deinen Kommentar zu %(book_title)s favorisiert" +msgid "" +"favorited your comment on %(book_title)s" +msgstr "" +"hat deinen Kommentar zu %(book_title)s favorisiert" #: bookwyrm/templates/notifications.html:57 #, python-format -msgid "favorited your quote from %(book_title)s" -msgstr " hat dein Zitat aus %(book_title)s favorisiert" +msgid "" +"favorited your quote from %(book_title)s" +msgstr "" +" hat dein Zitat aus %(book_title)s " +"favorisiert" #: bookwyrm/templates/notifications.html:59 #, python-format @@ -1560,18 +1696,30 @@ msgstr "hat deinen Status favorisiert" #: bookwyrm/templates/notifications.html:64 #, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "hat dich in einer Bewertung von %(book_title)s erwähnt" +msgid "" +"mentioned you in a review of " +"%(book_title)s" +msgstr "" +"hat dich in einer Bewertung von " +"%(book_title)s erwähnt" #: bookwyrm/templates/notifications.html:66 #, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "hat dich in einem Kommentar zu %(book_title)s erwähnt" +msgid "" +"mentioned you in a comment on " +"%(book_title)s" +msgstr "" +"hat dich in einem Kommentar zu " +"%(book_title)s erwähnt" #: bookwyrm/templates/notifications.html:68 #, python-format -msgid "mentioned you in a quote from %(book_title)s" -msgstr "hat dich in einem Zitat von %(book_title)s erwähnt" +msgid "" +"mentioned you in a quote from " +"%(book_title)s" +msgstr "" +"hat dich in einem Zitat von %(book_title)s erwähnt" #: bookwyrm/templates/notifications.html:70 #, python-format @@ -1580,23 +1728,39 @@ msgstr "hat dich in einem Status erwähnt" #: bookwyrm/templates/notifications.html:75 #, python-format -msgid "replied to your review of %(book_title)s" -msgstr "hat auf deine Bewertung von %(book_title)s geantwortet " +msgid "" +"replied to your review of %(book_title)s" +msgstr "" +"hat auf deine Bewertung von %(book_title)s geantwortet " #: bookwyrm/templates/notifications.html:77 #, python-format -msgid "replied to your comment on %(book_title)s" -msgstr "hat auf deinen Kommentar zu %(book_title)s geantwortet" +msgid "" +"replied to your comment on %(book_title)s" +msgstr "" +"hat auf deinen Kommentar zu %(book_title)s geantwortet" #: bookwyrm/templates/notifications.html:79 #, python-format -msgid "replied to your quote from %(book_title)s" -msgstr "hat auf dein Zitat aus %(book_title)s geantwortet" +msgid "" +"replied to your quote from %(book_title)s" +msgstr "" +"hat auf dein Zitat aus %(book_title)s geantwortet" #: bookwyrm/templates/notifications.html:81 #, python-format -msgid "replied to your status" -msgstr "hat auf deinen Status geantwortet" +msgid "" +"replied to your status" +msgstr "" +"hat auf deinen Status geantwortet" #: bookwyrm/templates/notifications.html:85 msgid "followed you" @@ -1608,18 +1772,30 @@ msgstr "hat dir eine Folgeanfrage geschickt" #: bookwyrm/templates/notifications.html:94 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "hat deine Bewertung von %(book_title)s geteilt" +msgid "" +"boosted your review of %(book_title)s" +msgstr "" +"hat deine Bewertung von %(book_title)s geteilt" #: bookwyrm/templates/notifications.html:96 #, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "hat deinen Kommentar zu%(book_title)s geteilt" +msgid "" +"boosted your comment on%(book_title)s" +msgstr "" +"hat deinen Kommentar zu%(book_title)s geteilt" #: bookwyrm/templates/notifications.html:98 #, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "hat dein Zitat aus %(book_title)s geteilt" +msgid "" +"boosted your quote from %(book_title)s" +msgstr "" +"hat dein Zitat aus %(book_title)s " +"geteilt" #: bookwyrm/templates/notifications.html:100 #, python-format @@ -1628,13 +1804,21 @@ msgstr "hat deinen Status geteilt" #: bookwyrm/templates/notifications.html:104 #, python-format -msgid " added %(book_title)s to your list \"%(list_name)s\"" -msgstr "hat %(book_title)s zu deiner Liste \"%(list_name)s\" Hinzugefügt" +msgid "" +" added %(book_title)s to your list " +"\"%(list_name)s\"" +msgstr "" +"hat %(book_title)s zu deiner Liste " +"\"%(list_name)s\" Hinzugefügt" #: bookwyrm/templates/notifications.html:106 #, python-format -msgid " suggested adding %(book_title)s to your list \"%(list_name)s\"" -msgstr "hat %(book_title)s für deine Liste \"%(list_name)s\" vorgeschlagen" +msgid "" +" suggested adding %(book_title)s to " +"your list \"%(list_name)s\"" +msgstr "" +"hat %(book_title)s für deine Liste " +"\"%(list_name)s\" vorgeschlagen" #: bookwyrm/templates/notifications.html:110 #, python-format @@ -1657,7 +1841,9 @@ msgstr "Passwort bestätigen:" #: bookwyrm/templates/password_reset_request.html:14 msgid "A link to reset your password will be sent to your email address" -msgstr "Ein Link zum Zurücksetzen deines Passworts wird an deine Mailadresse geschickt" +msgstr "" +"Ein Link zum Zurücksetzen deines Passworts wird an deine Mailadresse " +"geschickt" #: bookwyrm/templates/password_reset_request.html:28 msgid "Reset password" @@ -1695,7 +1881,9 @@ msgstr "Angegebenes Leseziel im Feed anzeigen." #: bookwyrm/templates/preferences/edit_user.html:62 #, python-format -msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users." +msgid "" +"Your account will show up in the directory, and may " +"be recommended to other BookWyrm users." msgstr "" #: bookwyrm/templates/preferences/edit_user.html:65 @@ -1706,6 +1894,10 @@ msgstr "" msgid "Account" msgstr "" +#: bookwyrm/templates/preferences/preferences_layout.html:14 +msgid "Profile" +msgstr "Profil" + #: bookwyrm/templates/preferences/preferences_layout.html:20 msgid "Relationships" msgstr "Beziehungen" @@ -1735,133 +1927,215 @@ msgstr "Keine Liste für \"%(query)s\" gefunden" msgid "Administration" msgstr "" -#: bookwyrm/templates/settings/admin_layout.html:15 +#: bookwyrm/templates/settings/admin_layout.html:22 msgid "Manage Users" msgstr "Nutzer*innen verwalten" -#: bookwyrm/templates/settings/admin_layout.html:19 -#: bookwyrm/templates/settings/user_admin.html:3 -#: bookwyrm/templates/settings/user_admin.html:10 +#: bookwyrm/templates/settings/admin_layout.html:26 +#: bookwyrm/templates/user_admin/user_admin.html:3 +#: bookwyrm/templates/user_admin/user_admin.html:10 msgid "Users" msgstr "" -#: bookwyrm/templates/settings/admin_layout.html:32 +#: bookwyrm/templates/settings/admin_layout.html:39 #: bookwyrm/templates/settings/federation.html:3 #: bookwyrm/templates/settings/federation.html:5 msgid "Federated Servers" msgstr "Föderierende Server" -#: bookwyrm/templates/settings/admin_layout.html:37 +#: bookwyrm/templates/settings/admin_layout.html:44 msgid "Instance Settings" msgstr "Instanzeinstellungen" -#: bookwyrm/templates/settings/admin_layout.html:41 +#: bookwyrm/templates/settings/admin_layout.html:48 #: bookwyrm/templates/settings/site.html:4 #: bookwyrm/templates/settings/site.html:6 msgid "Site Settings" msgstr "Seiteneinstellungen" -#: bookwyrm/templates/settings/admin_layout.html:44 +#: bookwyrm/templates/settings/admin_layout.html:51 #: bookwyrm/templates/settings/site.html:13 msgid "Instance Info" msgstr "Instanzinformationen" -#: bookwyrm/templates/settings/admin_layout.html:45 +#: bookwyrm/templates/settings/admin_layout.html:52 #: bookwyrm/templates/settings/site.html:39 msgid "Images" msgstr "Bilder" -#: bookwyrm/templates/settings/admin_layout.html:46 +#: bookwyrm/templates/settings/admin_layout.html:53 #: bookwyrm/templates/settings/site.html:59 msgid "Footer Content" msgstr "Inhalt des Footers" -#: bookwyrm/templates/settings/admin_layout.html:47 +#: bookwyrm/templates/settings/admin_layout.html:54 #: bookwyrm/templates/settings/site.html:77 msgid "Registration" msgstr "Registrierung" -#: bookwyrm/templates/settings/federated_server.html:7 +#: bookwyrm/templates/settings/edit_server.html:3 +#: bookwyrm/templates/settings/edit_server.html:6 +#: bookwyrm/templates/settings/edit_server.html:20 +#: bookwyrm/templates/settings/federation.html:9 +#: bookwyrm/templates/settings/federation.html:10 +#: bookwyrm/templates/settings/server_blocklist.html:3 +#: bookwyrm/templates/settings/server_blocklist.html:20 +#, fuzzy +#| msgid "Add cover" +msgid "Add server" +msgstr "Cover hinzufügen" + +#: bookwyrm/templates/settings/edit_server.html:7 +#: bookwyrm/templates/settings/federated_server.html:12 +#: bookwyrm/templates/settings/server_blocklist.html:7 #, fuzzy #| msgid "Back to reports" msgid "Back to server list" msgstr "Zurück zu den Meldungen" -#: bookwyrm/templates/settings/federated_server.html:12 -msgid "Details" -msgstr "" - -#: bookwyrm/templates/settings/federated_server.html:15 -msgid "Software:" -msgstr "" - -#: bookwyrm/templates/settings/federated_server.html:19 +#: bookwyrm/templates/settings/edit_server.html:16 +#: bookwyrm/templates/settings/server_blocklist.html:16 #, fuzzy -#| msgid "Description:" -msgid "Version:" -msgstr "Beschreibung:" +#| msgid "Import book" +msgid "Import block list" +msgstr "Buch importieren" -#: bookwyrm/templates/settings/federated_server.html:23 +#: bookwyrm/templates/settings/edit_server.html:30 +#, fuzzy +#| msgid "Instance Name:" +msgid "Instance:" +msgstr "Instanzname" + +#: bookwyrm/templates/settings/edit_server.html:37 +#: bookwyrm/templates/settings/federated_server.html:29 +#: bookwyrm/templates/user_admin/user_info.html:34 #, fuzzy #| msgid "Import Status" msgid "Status:" msgstr "Importstatus" -#: bookwyrm/templates/settings/federated_server.html:30 +#: bookwyrm/templates/settings/edit_server.html:41 +#: bookwyrm/templates/settings/federated_server.html:9 +#, fuzzy +#| msgid "Blocked Users" +msgid "Blocked" +msgstr "Blockierte Nutzer*innen" + +#: bookwyrm/templates/settings/edit_server.html:48 +#: bookwyrm/templates/settings/federated_server.html:21 +#: bookwyrm/templates/user_admin/user_info.html:26 +msgid "Software:" +msgstr "" + +#: bookwyrm/templates/settings/edit_server.html:55 +#: bookwyrm/templates/settings/federated_server.html:25 +#: bookwyrm/templates/user_admin/user_info.html:30 +#, fuzzy +#| msgid "Description:" +msgid "Version:" +msgstr "Beschreibung:" + +#: bookwyrm/templates/settings/edit_server.html:64 +msgid "Notes:" +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:18 +msgid "Details" +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:36 #: bookwyrm/templates/user/user_layout.html:50 msgid "Activity" msgstr "Aktivität" -#: bookwyrm/templates/settings/federated_server.html:33 +#: bookwyrm/templates/settings/federated_server.html:39 msgid "Users:" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:36 -#: bookwyrm/templates/settings/federated_server.html:43 +#: bookwyrm/templates/settings/federated_server.html:42 +#: bookwyrm/templates/settings/federated_server.html:49 msgid "View all" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:40 +#: bookwyrm/templates/settings/federated_server.html:46 #, fuzzy #| msgid "Recent Imports" msgid "Reports:" msgstr "Aktuelle Importe" -#: bookwyrm/templates/settings/federated_server.html:47 +#: bookwyrm/templates/settings/federated_server.html:53 #, fuzzy #| msgid "followed you" msgid "Followed by us:" msgstr "folgt dir" -#: bookwyrm/templates/settings/federated_server.html:53 +#: bookwyrm/templates/settings/federated_server.html:59 #, fuzzy #| msgid "followed you" msgid "Followed by them:" msgstr "folgt dir" -#: bookwyrm/templates/settings/federated_server.html:59 +#: bookwyrm/templates/settings/federated_server.html:65 #, fuzzy #| msgid "Blocked Users" msgid "Blocked by us:" msgstr "Blockierte Nutzer*innen" -#: bookwyrm/templates/settings/federation.html:13 +#: bookwyrm/templates/settings/federated_server.html:77 +#: bookwyrm/templates/user_admin/user_info.html:39 +msgid "Notes" +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:80 +#, fuzzy +#| msgid "Edit Book" +msgid "Edit" +msgstr "Buch editieren" + +#: bookwyrm/templates/settings/federated_server.html:100 +#: bookwyrm/templates/user_admin/user_moderation_actions.html:3 +#, fuzzy +#| msgid "Notifications" +msgid "Actions" +msgstr "Benachrichtigungen" + +#: bookwyrm/templates/settings/federated_server.html:104 +#: bookwyrm/templates/snippets/block_button.html:5 +msgid "Block" +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:105 +msgid "All users from this instance will be deactivated." +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:110 +#: bookwyrm/templates/snippets/block_button.html:10 +msgid "Un-block" +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:111 +msgid "All users from this instance will be re-activated." +msgstr "" + +#: bookwyrm/templates/settings/federation.html:20 +#: bookwyrm/templates/user_admin/server_filter.html:5 msgid "Server name" msgstr "Servername" -#: bookwyrm/templates/settings/federation.html:17 +#: bookwyrm/templates/settings/federation.html:24 #, fuzzy #| msgid "Federated" msgid "Date federated" msgstr "Föderiert" -#: bookwyrm/templates/settings/federation.html:21 +#: bookwyrm/templates/settings/federation.html:28 msgid "Software" msgstr "" -#: bookwyrm/templates/settings/federation.html:24 -#: bookwyrm/templates/settings/manage_invite_requests.html:33 -#: bookwyrm/templates/settings/user_admin.html:32 +#: bookwyrm/templates/settings/federation.html:31 +#: bookwyrm/templates/settings/manage_invite_requests.html:44 +#: bookwyrm/templates/settings/status_filter.html:5 +#: bookwyrm/templates/user_admin/user_admin.html:34 msgid "Status" msgstr "" @@ -1878,63 +2152,74 @@ msgstr "Einladungen" msgid "Ignored Invite Requests" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:31 -msgid "Date" -msgstr "" +#: bookwyrm/templates/settings/manage_invite_requests.html:35 +#, fuzzy +#| msgid "Federated" +msgid "Date requested" +msgstr "Föderiert" -#: bookwyrm/templates/settings/manage_invite_requests.html:32 +#: bookwyrm/templates/settings/manage_invite_requests.html:39 +#, fuzzy +#| msgid "Accept" +msgid "Date accepted" +msgstr "Annehmen" + +#: bookwyrm/templates/settings/manage_invite_requests.html:42 msgid "Email" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:34 +#: bookwyrm/templates/settings/manage_invite_requests.html:47 #, fuzzy #| msgid "Notifications" msgid "Action" msgstr "Benachrichtigungen" -#: bookwyrm/templates/settings/manage_invite_requests.html:37 +#: bookwyrm/templates/settings/manage_invite_requests.html:50 #, fuzzy #| msgid "Follow Requests" msgid "No requests" msgstr "Folgeanfragen" -#: bookwyrm/templates/settings/manage_invite_requests.html:45 +#: bookwyrm/templates/settings/manage_invite_requests.html:59 +#: bookwyrm/templates/settings/status_filter.html:16 #, fuzzy #| msgid "Accept" msgid "Accepted" msgstr "Annehmen" -#: bookwyrm/templates/settings/manage_invite_requests.html:47 +#: bookwyrm/templates/settings/manage_invite_requests.html:61 +#: bookwyrm/templates/settings/status_filter.html:12 msgid "Sent" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:49 +#: bookwyrm/templates/settings/manage_invite_requests.html:63 +#: bookwyrm/templates/settings/status_filter.html:8 msgid "Requested" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:57 +#: bookwyrm/templates/settings/manage_invite_requests.html:73 msgid "Send invite" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:59 +#: bookwyrm/templates/settings/manage_invite_requests.html:75 msgid "Re-send invite" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:70 +#: bookwyrm/templates/settings/manage_invite_requests.html:95 msgid "Ignore" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:72 -msgid "Un-gnore" +#: bookwyrm/templates/settings/manage_invite_requests.html:97 +msgid "Un-ignore" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:83 +#: bookwyrm/templates/settings/manage_invite_requests.html:108 #, fuzzy #| msgid "Back to reports" msgid "Back to pending requests" msgstr "Zurück zu den Meldungen" -#: bookwyrm/templates/settings/manage_invite_requests.html:85 +#: bookwyrm/templates/settings/manage_invite_requests.html:110 msgid "View ignored requests" msgstr "" @@ -1974,6 +2259,27 @@ msgstr "Mal benutzt" msgid "No active invites" msgstr "Keine aktiven Einladungen" +#: bookwyrm/templates/settings/server_blocklist.html:6 +#, fuzzy +#| msgid "Import Books" +msgid "Import Blocklist" +msgstr "Bücher importieren" + +#: bookwyrm/templates/settings/server_blocklist.html:26 +#: bookwyrm/templates/snippets/goal_progress.html:5 +msgid "Success!" +msgstr "Erfolg!" + +#: bookwyrm/templates/settings/server_blocklist.html:30 +#, fuzzy +#| msgid "Successfully imported" +msgid "Successfully blocked:" +msgstr "Erfolgreich importiert" + +#: bookwyrm/templates/settings/server_blocklist.html:32 +msgid "Failed:" +msgstr "" + #: bookwyrm/templates/settings/site.html:15 msgid "Instance Name:" msgstr "Instanzname" @@ -2032,152 +2338,108 @@ msgstr "Folgeanfragen" msgid "Registration closed text:" msgstr "Registrierungen geschlossen text" -#: bookwyrm/templates/settings/user_admin.html:7 -#, python-format -msgid "Users: %(server_name)s" -msgstr "" - -#: bookwyrm/templates/settings/user_admin.html:20 +#: bookwyrm/templates/snippets/book_cover.html:20 +#: bookwyrm/templates/snippets/search_result_text.html:10 #, fuzzy -#| msgid "username" -msgid "Username" -msgstr "Username" +#| msgid "Add cover" +msgid "No cover" +msgstr "Cover hinzufügen" -#: bookwyrm/templates/settings/user_admin.html:24 -#, fuzzy -#| msgid "Added:" -msgid "Date Added" -msgstr "Hinzugefügt:" - -#: bookwyrm/templates/settings/user_admin.html:28 -msgid "Last Active" -msgstr "" - -#: bookwyrm/templates/settings/user_admin.html:36 -#, fuzzy -#| msgid "Remove" -msgid "Remote server" -msgstr "Entfernen" - -#: bookwyrm/templates/settings/user_admin.html:45 -#, fuzzy -#| msgid "Activity" -msgid "Active" -msgstr "Aktivität" - -#: bookwyrm/templates/settings/user_admin.html:45 -msgid "Inactive" -msgstr "" - -#: bookwyrm/templates/settings/user_admin.html:50 -msgid "Not set" -msgstr "" - -#: bookwyrm/templates/snippets/block_button.html:5 -msgid "Block" -msgstr "" - -#: bookwyrm/templates/snippets/block_button.html:10 -msgid "Un-block" -msgstr "" - -#: bookwyrm/templates/snippets/book_titleby.html:3 +#: bookwyrm/templates/snippets/book_titleby.html:4 #, python-format msgid "%(title)s by " msgstr "%(title)s von " #: bookwyrm/templates/snippets/boost_button.html:8 #: bookwyrm/templates/snippets/boost_button.html:9 -#: bookwyrm/templates/snippets/status/status_body.html:51 -#: bookwyrm/templates/snippets/status/status_body.html:52 -msgid "Boost status" -msgstr "Status teilen" +#, fuzzy +#| msgid "boosted" +msgid "Boost" +msgstr "teilt" +#: bookwyrm/templates/snippets/boost_button.html:15 #: bookwyrm/templates/snippets/boost_button.html:16 -#: bookwyrm/templates/snippets/boost_button.html:17 -msgid "Un-boost status" +#, fuzzy +#| msgid "Un-boost status" +msgid "Un-boost" msgstr "Teilen zurücknehmen" #: bookwyrm/templates/snippets/content_warning_field.html:3 msgid "Spoiler alert:" msgstr "Spoileralarm:" -#: bookwyrm/templates/snippets/content_warning_field.html:4 +#: bookwyrm/templates/snippets/content_warning_field.html:10 msgid "Spoilers ahead!" msgstr "Spoileralarm!" -#: bookwyrm/templates/snippets/create_status.html:9 +#: bookwyrm/templates/snippets/create_status.html:17 msgid "Review" msgstr "Bewerten" -#: bookwyrm/templates/snippets/create_status.html:15 +#: bookwyrm/templates/snippets/create_status.html:39 msgid "Quote" msgstr "Zitieren" -#: bookwyrm/templates/snippets/create_status_form.html:18 +#: bookwyrm/templates/snippets/create_status_form.html:20 #, fuzzy #| msgid "Comment" msgid "Comment:" msgstr "Kommentieren" -#: bookwyrm/templates/snippets/create_status_form.html:20 +#: bookwyrm/templates/snippets/create_status_form.html:22 #, fuzzy #| msgid "Quote" msgid "Quote:" msgstr "Zitieren" -#: bookwyrm/templates/snippets/create_status_form.html:22 +#: bookwyrm/templates/snippets/create_status_form.html:24 #, fuzzy #| msgid "Review" msgid "Review:" msgstr "Bewerten" -#: bookwyrm/templates/snippets/create_status_form.html:29 -#: bookwyrm/templates/user/shelf.html:81 -msgid "Rating" -msgstr "" +#: bookwyrm/templates/snippets/create_status_form.html:42 +#: bookwyrm/templates/snippets/status/layout.html:30 +#: bookwyrm/templates/snippets/status/layout.html:48 +#: bookwyrm/templates/snippets/status/layout.html:49 +msgid "Reply" +msgstr "Antwort" -#: bookwyrm/templates/snippets/create_status_form.html:31 -#: bookwyrm/templates/snippets/rate_action.html:14 -#: bookwyrm/templates/snippets/stars.html:3 -msgid "No rating" -msgstr "Kein Rating" - -#: bookwyrm/templates/snippets/create_status_form.html:64 +#: bookwyrm/templates/snippets/create_status_form.html:67 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:16 msgid "Progress:" msgstr "Fortschritt:" -#: bookwyrm/templates/snippets/create_status_form.html:71 +#: bookwyrm/templates/snippets/create_status_form.html:75 #: bookwyrm/templates/snippets/readthrough_form.html:22 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30 msgid "pages" msgstr "Seiten" -#: bookwyrm/templates/snippets/create_status_form.html:72 +#: bookwyrm/templates/snippets/create_status_form.html:76 #: bookwyrm/templates/snippets/readthrough_form.html:23 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31 msgid "percent" msgstr "Prozent" -#: bookwyrm/templates/snippets/create_status_form.html:77 +#: bookwyrm/templates/snippets/create_status_form.html:82 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:36 #, python-format msgid "of %(pages)s pages" msgstr "von %(pages)s Seiten" -#: bookwyrm/templates/snippets/create_status_form.html:89 +#: bookwyrm/templates/snippets/create_status_form.html:97 msgid "Include spoiler alert" msgstr "Spoileralarm aktivieren" -#: bookwyrm/templates/snippets/create_status_form.html:95 +#: bookwyrm/templates/snippets/create_status_form.html:104 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:19 msgid "Private" msgstr "Privat" -#: bookwyrm/templates/snippets/create_status_form.html:102 +#: bookwyrm/templates/snippets/create_status_form.html:115 msgid "Post" msgstr "Absenden" @@ -2187,24 +2449,28 @@ msgstr "Diese Lesedaten löschen?" #: bookwyrm/templates/snippets/delete_readthrough_modal.html:7 #, python-format -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." +msgid "" +"You are deleting this readthrough and its %(count)s associated progress " +"updates." +msgstr "" +"Du löscht diesen Leseforschritt und %(count)s zugehörige Fortschrittsupdates." #: bookwyrm/templates/snippets/delete_readthrough_modal.html:15 #: bookwyrm/templates/snippets/follow_request_buttons.html:13 +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:391 msgid "Delete" msgstr "Löschen" #: bookwyrm/templates/snippets/fav_button.html:7 -#: bookwyrm/templates/snippets/fav_button.html:8 -#: bookwyrm/templates/snippets/status/status_body.html:55 -#: bookwyrm/templates/snippets/status/status_body.html:56 -msgid "Like status" -msgstr "Status favorisieren" +#: bookwyrm/templates/snippets/fav_button.html:9 +msgid "Like" +msgstr "" #: bookwyrm/templates/snippets/fav_button.html:15 #: bookwyrm/templates/snippets/fav_button.html:16 -msgid "Un-like status" +#, fuzzy +#| msgid "Un-like status" +msgid "Un-like" msgstr "Favorisieren zurücknehmen" #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:7 @@ -2217,11 +2483,11 @@ msgstr "Weniger anzeigen" msgid "Hide filters" msgstr "" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:19 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:22 msgid "Apply filters" msgstr "" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:23 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:26 #, fuzzy #| msgid "Clear search" msgid "Clear filters" @@ -2245,6 +2511,11 @@ msgstr "Entfolgen" msgid "Accept" msgstr "Annehmen" +#: bookwyrm/templates/snippets/form_rate_stars.html:20 +#: bookwyrm/templates/snippets/stars.html:13 +msgid "No rating" +msgstr "Kein Rating" + #: bookwyrm/templates/snippets/generated_status/goal.html:1 #, python-format msgid "set a goal to read %(counter)s book in %(year)s" @@ -2255,15 +2526,19 @@ msgstr[1] "Setze das Ziel, %(year)s %(counter)s Bücher zu lesen" #: bookwyrm/templates/snippets/generated_status/rating.html:3 #, fuzzy, python-format #| msgid "%(title)s by " -msgid "Rated %(title)s: %(display_rating)s star" -msgid_plural "Rated %(title)s: %(display_rating)s stars" +msgid "" +"Rated %(title)s: %(display_rating)s star" +msgid_plural "" +"Rated %(title)s: %(display_rating)s stars" msgstr[0] "%(title)s von " msgstr[1] "%(title)s von " #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgid "" +"Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "" +"Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" msgstr[0] "" msgstr[1] "" @@ -2274,8 +2549,12 @@ msgstr "" #: bookwyrm/templates/snippets/goal_card.html:23 #, python-format -msgid "You can set or change your reading goal any time from your profile page" -msgstr "Du kannst dein Leseziel jederzeit auf deiner Profilseite setzen oder ändern." +msgid "" +"You can set or change your reading goal any time from your profile page" +msgstr "" +"Du kannst dein Leseziel jederzeit auf deiner Profilseite setzen oder ändern." #: bookwyrm/templates/snippets/goal_form.html:9 msgid "Reading goal:" @@ -2300,10 +2579,6 @@ msgstr "Posten" msgid "Set goal" msgstr "Ziel setzen" -#: bookwyrm/templates/snippets/goal_progress.html:5 -msgid "Success!" -msgstr "Erfolg!" - #: bookwyrm/templates/snippets/goal_progress.html:7 #, python-format msgid "%(percent)s%% complete!" @@ -2311,19 +2586,38 @@ msgstr "%(percent)s%% komplett!" #: bookwyrm/templates/snippets/goal_progress.html:10 #, python-format -msgid "You've read %(read_count)s of %(goal_count)s books." -msgstr "Du hast %(read_count)s von %(goal_count)s Büchern gelesen." +msgid "" +"You've read %(read_count)s of %(goal_count)s books." +msgstr "" +"Du hast %(read_count)s von %(goal_count)s Büchern " +"gelesen." #: bookwyrm/templates/snippets/goal_progress.html:12 #, python-format -msgid "%(username)s has read %(read_count)s of %(goal_count)s books." -msgstr "%(username)s hat %(read_count)s von %(goal_count)s Büchern gelesen." +msgid "" +"%(username)s has read %(read_count)s of %(goal_count)s " +"books." +msgstr "" +"%(username)s hat %(read_count)s von %(goal_count)s " +"Büchern gelesen." -#: bookwyrm/templates/snippets/pagination.html:7 +#: bookwyrm/templates/snippets/page_text.html:4 +#, fuzzy, python-format +#| msgid "of %(pages)s pages" +msgid "page %(page)s of %(total_pages)s" +msgstr "von %(pages)s Seiten" + +#: bookwyrm/templates/snippets/page_text.html:6 +#, fuzzy, python-format +#| msgid "%(pages)s pages" +msgid "page %(page)s" +msgstr "%(pages)s Seiten" + +#: bookwyrm/templates/snippets/pagination.html:12 msgid "Previous" msgstr "Zurück" -#: bookwyrm/templates/snippets/pagination.html:15 +#: bookwyrm/templates/snippets/pagination.html:23 msgid "Next" msgstr "Weiter" @@ -2356,7 +2650,7 @@ msgstr "Folgende" msgid "Leave a rating" msgstr "Raten" -#: bookwyrm/templates/snippets/rate_action.html:29 +#: bookwyrm/templates/snippets/rate_action.html:19 msgid "Rate" msgstr "" @@ -2364,28 +2658,28 @@ msgstr "" msgid "Progress Updates:" msgstr "Fortschrittsupdates:" -#: bookwyrm/templates/snippets/readthrough.html:12 +#: bookwyrm/templates/snippets/readthrough.html:14 msgid "finished" msgstr "Abgeschlossen" -#: bookwyrm/templates/snippets/readthrough.html:15 +#: bookwyrm/templates/snippets/readthrough.html:25 msgid "Show all updates" msgstr "Zeige alle Updates" -#: bookwyrm/templates/snippets/readthrough.html:31 +#: bookwyrm/templates/snippets/readthrough.html:41 msgid "Delete this progress update" msgstr "Dieses Fortschrittsupdate löschen" -#: bookwyrm/templates/snippets/readthrough.html:41 +#: bookwyrm/templates/snippets/readthrough.html:51 msgid "started" msgstr "Angefangen" -#: bookwyrm/templates/snippets/readthrough.html:47 -#: bookwyrm/templates/snippets/readthrough.html:61 +#: bookwyrm/templates/snippets/readthrough.html:57 +#: bookwyrm/templates/snippets/readthrough.html:71 msgid "Edit read dates" msgstr "Lesedaten bearbeiten" -#: bookwyrm/templates/snippets/readthrough.html:51 +#: bookwyrm/templates/snippets/readthrough.html:61 msgid "Delete these read dates" msgstr "Diese Lesedaten löschen" @@ -2415,31 +2709,25 @@ msgid "Report" msgstr "Importieren" #: bookwyrm/templates/snippets/rss_title.html:5 -#: bookwyrm/templates/snippets/status/status_header.html:11 +#: bookwyrm/templates/snippets/status/status_header.html:34 msgid "rated" msgstr "" #: bookwyrm/templates/snippets/rss_title.html:7 -#: bookwyrm/templates/snippets/status/status_header.html:13 +#: bookwyrm/templates/snippets/status/status_header.html:36 msgid "reviewed" msgstr "bewertete" #: bookwyrm/templates/snippets/rss_title.html:9 -#: bookwyrm/templates/snippets/status/status_header.html:15 +#: bookwyrm/templates/snippets/status/status_header.html:38 msgid "commented on" msgstr "kommentierte" #: bookwyrm/templates/snippets/rss_title.html:11 -#: bookwyrm/templates/snippets/status/status_header.html:17 +#: bookwyrm/templates/snippets/status/status_header.html:40 msgid "quoted" msgstr "zitierte" -#: bookwyrm/templates/snippets/search_result_text.html:10 -#, fuzzy -#| msgid "Add cover" -msgid "No cover" -msgstr "Cover hinzufügen" - #: bookwyrm/templates/snippets/search_result_text.html:22 #, python-format msgid "by %(author)s" @@ -2461,7 +2749,7 @@ msgid "Finish \"%(book_title)s\"" msgstr "\"%(book_title)s\" abschließen" #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:5 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:35 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:34 #, fuzzy #| msgid "Progress" msgid "Update progress" @@ -2484,7 +2772,7 @@ msgstr "Lesen abschließen" msgid "Want to read" msgstr "Auf Leseliste setzen" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:48 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:45 #, fuzzy, python-format #| msgid "Lists: %(username)s" msgid "Remove from %(name)s" @@ -2500,64 +2788,68 @@ msgstr "\"%(book_title)s\" beginnen" msgid "Want to Read \"%(book_title)s\"" msgstr "\"%(book_title)s\" auf Leseliste setzen" +#: bookwyrm/templates/snippets/status/content_status.html:67 +#: bookwyrm/templates/snippets/trimmed_text.html:14 +msgid "Show more" +msgstr "Mehr anzeigen" + +#: bookwyrm/templates/snippets/status/content_status.html:82 +#: bookwyrm/templates/snippets/trimmed_text.html:29 +msgid "Show less" +msgstr "Weniger anzeigen" + +#: bookwyrm/templates/snippets/status/content_status.html:112 +msgid "Open image in new window" +msgstr "Bild in neuem Fenster öffnen" + +#: bookwyrm/templates/snippets/status/layout.html:22 +#: bookwyrm/templates/snippets/status/status_options.html:17 +msgid "Delete status" +msgstr "Post löschen" + +#: bookwyrm/templates/snippets/status/layout.html:52 +#: bookwyrm/templates/snippets/status/layout.html:53 +msgid "Boost status" +msgstr "Status teilen" + +#: bookwyrm/templates/snippets/status/layout.html:56 +#: bookwyrm/templates/snippets/status/layout.html:57 +msgid "Like status" +msgstr "Status favorisieren" + #: bookwyrm/templates/snippets/status/status.html:9 msgid "boosted" msgstr "teilt" -#: bookwyrm/templates/snippets/status/status_body.html:27 -#: bookwyrm/templates/snippets/status/status_options.html:18 -msgid "Delete status" -msgstr "Post löschen" - -#: bookwyrm/templates/snippets/status/status_body.html:34 -#: bookwyrm/templates/snippets/status/status_body.html:47 -#: bookwyrm/templates/snippets/status/status_body.html:48 -msgid "Reply" -msgstr "Antwort" - -#: bookwyrm/templates/snippets/status/status_content.html:18 -#: bookwyrm/templates/snippets/trimmed_text.html:15 -msgid "Show more" -msgstr "Mehr anzeigen" - -#: bookwyrm/templates/snippets/status/status_content.html:25 -#: bookwyrm/templates/snippets/trimmed_text.html:25 -msgid "Show less" -msgstr "Weniger anzeigen" - -#: bookwyrm/templates/snippets/status/status_content.html:46 -msgid "Open image in new window" -msgstr "Bild in neuem Fenster öffnen" - -#: bookwyrm/templates/snippets/status/status_header.html:22 +#: bookwyrm/templates/snippets/status/status_header.html:44 #, fuzzy, python-format -#| msgid "Direct Messages with %(username)s" -msgid "replied to %(username)s's review" -msgstr "Direktnachrichten mit %(username)s" - -#: bookwyrm/templates/snippets/status/status_header.html:24 -#, fuzzy, python-format -#| msgid "replied to your status" -msgid "replied to %(username)s's comment" -msgstr "hat auf deinen Status geantwortet" - -#: bookwyrm/templates/snippets/status/status_header.html:26 -#, fuzzy, python-format -#| msgid "replied to your status" -msgid "replied to %(username)s's quote" -msgstr "hat auf deinen Status geantwortet" - -#: bookwyrm/templates/snippets/status/status_header.html:28 -#, fuzzy, python-format -#| msgid "replied to your status" -msgid "replied to %(username)s's status" -msgstr "hat auf deinen Status geantwortet" +#| msgid "" +#| "replied to your status" +msgid "" +"replied to %(username)s's status" +msgstr "" +"hat auf deinen Status geantwortet" #: bookwyrm/templates/snippets/status/status_options.html:7 #: bookwyrm/templates/snippets/user_options.html:7 msgid "More options" msgstr "Mehr Optionen" +#: bookwyrm/templates/snippets/status/status_options.html:26 +#, fuzzy +#| msgid "Delete these read dates" +msgid "Delete & re-draft" +msgstr "Diese Lesedaten löschen" + +#: bookwyrm/templates/snippets/status/status_options.html:35 +#: bookwyrm/templates/snippets/user_options.html:13 +#: bookwyrm/templates/user_admin/user_moderation_actions.html:6 +msgid "Send direct message" +msgstr "Direktnachricht senden" + #: bookwyrm/templates/snippets/switch_edition_button.html:5 msgid "Switch to this edition" msgstr "Zu dieser Edition wechseln" @@ -2574,19 +2866,6 @@ msgstr "Zu lesen angefangen" msgid "Sorted descending" msgstr "Zu lesen angefangen" -#: bookwyrm/templates/snippets/tag.html:14 -msgid "Remove tag" -msgstr "Tag entfernen" - -#: bookwyrm/templates/snippets/tag.html:18 -msgid "Add tag" -msgstr "Tag hinzufügen" - -#: bookwyrm/templates/tag.html:9 -#, python-format -msgid "Books tagged \"%(tag.name)s\"" -msgstr "Mit \"%(tag.name)s\" markierte Bücher" - #: bookwyrm/templates/user/books_header.html:5 #, fuzzy, python-format #| msgid "%(username)s's %(year)s Books" @@ -2626,10 +2905,6 @@ msgstr "Folgend" msgid "%(username)s isn't following any users" msgstr "%(username)s folgt niemandem" -#: bookwyrm/templates/user/lists.html:9 -msgid "Your Lists" -msgstr "Deine Listen" - #: bookwyrm/templates/user/lists.html:11 #, python-format msgid "Lists: %(username)s" @@ -2639,7 +2914,7 @@ msgstr "Listen: %(username)s" msgid "Create list" msgstr "Liste Erstellen" -#: bookwyrm/templates/user/shelf.html:24 bookwyrm/views/shelf.py:56 +#: bookwyrm/templates/user/shelf.html:24 bookwyrm/views/shelf.py:51 #, fuzzy #| msgid "books" msgid "All books" @@ -2653,23 +2928,23 @@ msgstr "Regal erstellen" msgid "Edit shelf" msgstr "Regal bearbeiten" -#: bookwyrm/templates/user/shelf.html:78 +#: bookwyrm/templates/user/shelf.html:77 bookwyrm/templates/user/shelf.html:99 msgid "Shelved" msgstr "Ins Regal gestellt" -#: bookwyrm/templates/user/shelf.html:79 +#: bookwyrm/templates/user/shelf.html:78 bookwyrm/templates/user/shelf.html:103 msgid "Started" msgstr "Gestartet" -#: bookwyrm/templates/user/shelf.html:80 +#: bookwyrm/templates/user/shelf.html:79 bookwyrm/templates/user/shelf.html:106 msgid "Finished" msgstr "Abgeschlossen" -#: bookwyrm/templates/user/shelf.html:127 +#: bookwyrm/templates/user/shelf.html:132 msgid "This shelf is empty." msgstr "Dieses Regal ist leer." -#: bookwyrm/templates/user/shelf.html:133 +#: bookwyrm/templates/user/shelf.html:138 msgid "Delete shelf" msgstr "Regal löschen" @@ -2735,6 +3010,87 @@ msgstr[1] "%(counter)s Folgende" msgid "%(counter)s following" msgstr "Folgt %(counter)s" +#: bookwyrm/templates/user_admin/user.html:11 +#, fuzzy +#| msgid "Back to reports" +msgid "Back to users" +msgstr "Zurück zu den Meldungen" + +#: bookwyrm/templates/user_admin/user_admin.html:7 +#, python-format +msgid "Users: %(server_name)s" +msgstr "" + +#: bookwyrm/templates/user_admin/user_admin.html:22 +#: bookwyrm/templates/user_admin/username_filter.html:5 +#, fuzzy +#| msgid "username" +msgid "Username" +msgstr "Username" + +#: bookwyrm/templates/user_admin/user_admin.html:26 +#, fuzzy +#| msgid "Added:" +msgid "Date Added" +msgstr "Hinzugefügt:" + +#: bookwyrm/templates/user_admin/user_admin.html:30 +msgid "Last Active" +msgstr "" + +#: bookwyrm/templates/user_admin/user_admin.html:38 +#, fuzzy +#| msgid "Remove" +msgid "Remote server" +msgstr "Entfernen" + +#: bookwyrm/templates/user_admin/user_admin.html:47 +#, fuzzy +#| msgid "Activity" +msgid "Active" +msgstr "Aktivität" + +#: bookwyrm/templates/user_admin/user_admin.html:47 +msgid "Inactive" +msgstr "" + +#: bookwyrm/templates/user_admin/user_admin.html:52 +#: bookwyrm/templates/user_admin/user_info.html:49 +msgid "Not set" +msgstr "" + +#: bookwyrm/templates/user_admin/user_info.html:5 +msgid "User details" +msgstr "" + +#: bookwyrm/templates/user_admin/user_info.html:14 +#, fuzzy +#| msgid "User Profile" +msgid "View user profile" +msgstr "Benutzerprofil" + +#: bookwyrm/templates/user_admin/user_info.html:20 +#, fuzzy +#| msgid "Instance Settings" +msgid "Instance details" +msgstr "Instanzeinstellungen" + +#: bookwyrm/templates/user_admin/user_info.html:46 +msgid "View instance" +msgstr "" + +#: bookwyrm/templates/user_admin/user_moderation_actions.html:11 +msgid "Suspend user" +msgstr "" + +#: bookwyrm/templates/user_admin/user_moderation_actions.html:13 +msgid "Un-suspend user" +msgstr "" + +#: bookwyrm/templates/user_admin/user_moderation_actions.html:21 +msgid "Access level:" +msgstr "" + #: bookwyrm/views/password.py:32 #, fuzzy #| msgid "A user with that username already exists." @@ -2746,6 +3102,1443 @@ msgstr "Dieser Benutzename ist bereits vergeben." msgid "A password reset link sent to %s" msgstr "" +#: venv3/lib/python3.8/site-packages/_pytest/config/argparsing.py:442 +#, python-format +msgid "ambiguous option: %(option)s could match %(matches)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/contrib/messages/apps.py:7 +#, fuzzy +#| msgid "All messages" +msgid "Messages" +msgstr "Alle Nachrichten" + +#: venv3/lib/python3.8/site-packages/django/contrib/sitemaps/apps.py:7 +msgid "Site Maps" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/contrib/staticfiles/apps.py:9 +msgid "Static Files" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/contrib/syndication/apps.py:7 +msgid "Syndication" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/paginator.py:45 +msgid "That page number is not an integer" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/paginator.py:47 +msgid "That page number is less than 1" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/paginator.py:52 +msgid "That page contains no results" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:32 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid value." +msgstr "E-Mail Adresse" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:103 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:659 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid URL." +msgstr "E-Mail Adresse" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:155 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid integer." +msgstr "E-Mail Adresse" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:166 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid email address." +msgstr "E-Mail Adresse" + +#. Translators: "letters" means latin letters: a-z and A-Z. +#: venv3/lib/python3.8/site-packages/django/core/validators.py:240 +msgid "" +"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:247 +msgid "" +"Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or " +"hyphens." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:256 +#: venv3/lib/python3.8/site-packages/django/core/validators.py:276 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid IPv4 address." +msgstr "E-Mail Adresse" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:261 +#: venv3/lib/python3.8/site-packages/django/core/validators.py:277 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid IPv6 address." +msgstr "E-Mail Adresse" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:271 +#: venv3/lib/python3.8/site-packages/django/core/validators.py:275 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid IPv4 or IPv6 address." +msgstr "E-Mail Adresse" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:305 +msgid "Enter only digits separated by commas." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:311 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:343 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:352 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:362 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d character (it has " +"%(show_value)d)." +msgid_plural "" +"Ensure this value has at least %(limit_value)d characters (it has " +"%(show_value)d)." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:377 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d character (it has " +"%(show_value)d)." +msgid_plural "" +"Ensure this value has at most %(limit_value)d characters (it has " +"%(show_value)d)." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:396 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:291 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:326 +#, fuzzy +#| msgid "Series number:" +msgid "Enter a number." +msgstr "Seriennummer:" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:398 +#, python-format +msgid "Ensure that there are no more than %(max)s digit in total." +msgid_plural "Ensure that there are no more than %(max)s digits in total." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:403 +#, python-format +msgid "Ensure that there are no more than %(max)s decimal place." +msgid_plural "Ensure that there are no more than %(max)s decimal places." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:408 +#, python-format +msgid "" +"Ensure that there are no more than %(max)s digit before the decimal point." +msgid_plural "" +"Ensure that there are no more than %(max)s digits before the decimal point." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:470 +#, python-format +msgid "" +"File extension “%(extension)s” is not allowed. Allowed extensions are: " +"%(allowed_extensions)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:522 +msgid "Null characters are not allowed." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/base.py:1181 +#: venv3/lib/python3.8/site-packages/django/forms/models.py:759 +msgid "and" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/base.py:1183 +#, fuzzy, python-format +#| msgid "A user with that username already exists." +msgid "%(model_name)s with this %(field_labels)s already exists." +msgstr "Dieser Benutzename ist bereits vergeben." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:104 +#, fuzzy, python-format +#| msgid "%(value)s is not a valid remote_id" +msgid "Value %(value)r is not a valid choice." +msgstr "%(value)s ist keine gültige remote_id" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:105 +#, fuzzy +#| msgid "This shelf is empty." +msgid "This field cannot be null." +msgstr "Dieses Regal ist leer." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:106 +msgid "This field cannot be blank." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:107 +#, fuzzy, python-format +#| msgid "A user with that username already exists." +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "Dieser Benutzename ist bereits vergeben." + +#. Translators: The 'lookup_type' is one of 'date', 'year' or 'month'. +#. Eg: "Title must be unique for pub_date year" +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:111 +#, python-format +msgid "" +"%(field_label)s must be unique for %(date_field_label)s %(lookup_type)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:130 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:937 +#, python-format +msgid "“%(value)s” value must be either True or False." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:938 +#, python-format +msgid "“%(value)s” value must be either True, False, or None." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:940 +msgid "Boolean (Either True or False)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:981 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1045 +#, fuzzy +#| msgid "No active invites" +msgid "Comma-separated integers" +msgstr "Keine aktiven Einladungen" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1094 +#, python-format +msgid "" +"“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD " +"format." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1096 +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1239 +#, python-format +msgid "" +"“%(value)s” value has the correct format (YYYY-MM-DD) but it is an invalid " +"date." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1099 +msgid "Date (without time)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1237 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[." +"uuuuuu]][TZ] format." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1241 +#, python-format +msgid "" +"“%(value)s” value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]" +"[TZ]) but it is an invalid date/time." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1245 +msgid "Date (with time)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1393 +#, fuzzy, python-format +#| msgid "%(value)s is not a valid username" +msgid "“%(value)s” value must be a decimal number." +msgstr "%(value)s ist kein gültiger Username" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1395 +#, fuzzy +#| msgid "Series number:" +msgid "Decimal number" +msgstr "Seriennummer:" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1534 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[." +"uuuuuu] format." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1537 +#, fuzzy +#| msgid "List curation:" +msgid "Duration" +msgstr "Listenkuratierung:" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1587 +#, fuzzy +#| msgid "Email address:" +msgid "Email address" +msgstr "E-Mail Adresse" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1610 +msgid "File path" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1676 +#, fuzzy, python-format +#| msgid "%(value)s is not a valid username" +msgid "“%(value)s” value must be a float." +msgstr "%(value)s ist kein gültiger Username" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1678 +msgid "Floating point number" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1716 +#, python-format +msgid "“%(value)s” value must be an integer." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1718 +msgid "Integer" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1801 +#, fuzzy +#| msgid "No active invites" +msgid "Big (8 byte) integer" +msgstr "Keine aktiven Einladungen" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1817 +#, fuzzy +#| msgid "Email address:" +msgid "IPv4 address" +msgstr "E-Mail Adresse" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1848 +#, fuzzy +#| msgid "Email address:" +msgid "IP address" +msgstr "E-Mail Adresse" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1928 +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1929 +#, python-format +msgid "“%(value)s” value must be either None, True or False." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1931 +msgid "Boolean (Either True, False or None)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1966 +#, fuzzy +#| msgid "No active invites" +msgid "Positive integer" +msgstr "Keine aktiven Einladungen" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1979 +#, fuzzy +#| msgid "No active invites" +msgid "Positive small integer" +msgstr "Keine aktiven Einladungen" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1993 +#, python-format +msgid "Slug (up to %(max_length)s)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2025 +msgid "Small integer" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2032 +msgid "Text" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2060 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] " +"format." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2062 +#, python-format +msgid "" +"“%(value)s” value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an " +"invalid time." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2065 +msgid "Time" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2191 +msgid "URL" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2213 +msgid "Raw binary data" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2278 +#, fuzzy, python-format +#| msgid "%(value)s is not a valid username" +msgid "“%(value)s” is not a valid UUID." +msgstr "%(value)s ist kein gültiger Username" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2280 +msgid "Universally unique identifier" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/files.py:221 +msgid "File" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/files.py:360 +#, fuzzy +#| msgid "Images" +msgid "Image" +msgstr "Bilder" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:778 +#, python-format +msgid "%(model)s instance with %(field)s %(value)r does not exist." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:780 +msgid "Foreign Key (type determined by related field)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1012 +#, fuzzy +#| msgid "Relationships" +msgid "One-to-one relationship" +msgstr "Beziehungen" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1066 +#, fuzzy, python-format +#| msgid "Relationships" +msgid "%(from)s-%(to)s relationship" +msgstr "Beziehungen" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1067 +#, fuzzy, python-format +#| msgid "Relationships" +msgid "%(from)s-%(to)s relationships" +msgstr "Beziehungen" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1109 +#, fuzzy +#| msgid "Relationships" +msgid "Many-to-many relationship" +msgstr "Beziehungen" + +#. Translators: If found as last label character, these punctuation +#. characters will prevent the default label_suffix to be appended to the label +#: venv3/lib/python3.8/site-packages/django/forms/boundfield.py:149 +msgid ":?.!" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:53 +#, fuzzy +#| msgid "This shelf is empty." +msgid "This field is required." +msgstr "Dieses Regal ist leer." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:246 +#, fuzzy +#| msgid "Series number:" +msgid "Enter a whole number." +msgstr "Seriennummer:" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:397 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:1127 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid date." +msgstr "E-Mail Adresse" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:421 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:1128 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid time." +msgstr "E-Mail Adresse" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:443 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid date/time." +msgstr "E-Mail Adresse" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:472 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid duration." +msgstr "E-Mail Adresse" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:473 +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:533 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:534 +msgid "No file was submitted." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:535 +#, fuzzy +#| msgid "This shelf is empty." +msgid "The submitted file is empty." +msgstr "Dieses Regal ist leer." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:537 +#, python-format +msgid "Ensure this filename has at most %(max)d character (it has %(length)d)." +msgid_plural "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:540 +msgid "Please either submit a file or check the clear checkbox, not both." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:601 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:763 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:853 +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1275 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:854 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:969 +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1274 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a list of values." +msgstr "E-Mail Adresse" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:970 +msgid "Enter a complete value." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:1186 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid UUID." +msgstr "E-Mail Adresse" + +#. Translators: This is the default suffix added to form field labels +#: venv3/lib/python3.8/site-packages/django/forms/forms.py:81 +msgid ":" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/forms.py:207 +#, python-format +msgid "(Hidden field %(name)s) %(error)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:93 +msgid "ManagementForm data is missing or has been tampered with" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:345 +#, python-format +msgid "Please submit %d or fewer forms." +msgid_plural "Please submit %d or fewer forms." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:352 +#, python-format +msgid "Please submit %d or more forms." +msgid_plural "Please submit %d or more forms." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:379 +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:386 +msgid "Order" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:754 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:758 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:764 +#, python-format +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:773 +msgid "Please correct the duplicate values below." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1094 +msgid "The inline value did not match the parent instance." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1161 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1277 +#, fuzzy, python-format +#| msgid "%(value)s is not a valid username" +msgid "“%(pk)s” is not a valid value." +msgstr "%(value)s ist kein gültiger Username" + +#: venv3/lib/python3.8/site-packages/django/forms/utils.py:162 +#, python-format +msgid "" +"%(datetime)s couldn’t be interpreted in time zone %(current_timezone)s; it " +"may be ambiguous or it may not exist." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:395 +msgid "Clear" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:396 +#, fuzzy +#| msgid "Start reading" +msgid "Currently" +msgstr "Gerade lesend" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:397 +#, fuzzy +#| msgid "Change shelf" +msgid "Change" +msgstr "Regal wechseln" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:709 +msgid "Unknown" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:710 +msgid "Yes" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:711 +msgid "No" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:788 +msgid "yes,no,maybe" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:817 +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:834 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:836 +#, python-format +msgid "%s KB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:838 +#, python-format +msgid "%s MB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:840 +#, python-format +msgid "%s GB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:842 +#, python-format +msgid "%s TB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:844 +#, python-format +msgid "%s PB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:62 +msgid "p.m." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:63 +msgid "a.m." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:68 +msgid "PM" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:69 +msgid "AM" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:150 +msgid "midnight" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:152 +msgid "noon" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:295 +msgid "Monday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:296 +msgid "Tuesday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:297 +msgid "Wednesday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:298 +msgid "Thursday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:299 +msgid "Friday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:7 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:300 +msgid "Saturday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:7 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:301 +msgid "Sunday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Mon" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Tue" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Wed" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Thu" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Fri" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:11 +#, fuzzy +#| msgid "Started" +msgid "Sat" +msgstr "Gestartet" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:11 +msgid "Sun" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:281 +msgid "January" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:282 +msgid "February" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:283 +#, fuzzy +#| msgid "Search" +msgid "March" +msgstr "Suche" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:284 +msgid "April" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:285 +msgid "May" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:286 +msgid "June" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:287 +msgid "July" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:288 +msgid "August" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:289 +#, fuzzy +#| msgid "Series number:" +msgid "September" +msgstr "Seriennummer:" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:290 +msgid "October" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:291 +msgid "November" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:16 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:292 +#, fuzzy +#| msgid "Series number:" +msgid "December" +msgstr "Seriennummer:" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "jan" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "feb" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "mar" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "apr" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "may" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "jun" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "jul" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "aug" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "sep" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "oct" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "nov" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "dec" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:23 +msgctxt "abbrev. month" +msgid "Jan." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:24 +msgctxt "abbrev. month" +msgid "Feb." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:25 +#, fuzzy +#| msgid "Search" +msgctxt "abbrev. month" +msgid "March" +msgstr "Suche" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:26 +msgctxt "abbrev. month" +msgid "April" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:27 +msgctxt "abbrev. month" +msgid "May" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:28 +msgctxt "abbrev. month" +msgid "June" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:29 +msgctxt "abbrev. month" +msgid "July" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:30 +msgctxt "abbrev. month" +msgid "Aug." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:31 +msgctxt "abbrev. month" +msgid "Sept." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:32 +msgctxt "abbrev. month" +msgid "Oct." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:33 +msgctxt "abbrev. month" +msgid "Nov." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:34 +msgctxt "abbrev. month" +msgid "Dec." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:37 +msgctxt "alt. month" +msgid "January" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:38 +msgctxt "alt. month" +msgid "February" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:39 +#, fuzzy +#| msgid "Search" +msgctxt "alt. month" +msgid "March" +msgstr "Suche" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:40 +msgctxt "alt. month" +msgid "April" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:41 +msgctxt "alt. month" +msgid "May" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:42 +msgctxt "alt. month" +msgid "June" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:43 +msgctxt "alt. month" +msgid "July" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:44 +msgctxt "alt. month" +msgid "August" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:45 +#, fuzzy +#| msgid "Series number:" +msgctxt "alt. month" +msgid "September" +msgstr "Seriennummer:" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:46 +msgctxt "alt. month" +msgid "October" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:47 +msgctxt "alt. month" +msgid "November" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:48 +#, fuzzy +#| msgid "Series number:" +msgctxt "alt. month" +msgid "December" +msgstr "Seriennummer:" + +#: venv3/lib/python3.8/site-packages/django/utils/ipv6.py:8 +#, fuzzy +#| msgid "Email address:" +msgid "This is not a valid IPv6 address." +msgstr "E-Mail Adresse" + +#: venv3/lib/python3.8/site-packages/django/utils/text.py:69 +#, python-format +msgctxt "String to return when truncating text" +msgid "%(truncated_text)s…" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/text.py:235 +msgid "or" +msgstr "" + +#. Translators: This string is used as a separator between list elements +#: venv3/lib/python3.8/site-packages/django/utils/text.py:254 +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:83 +msgid ", " +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:9 +#, python-format +msgid "%d year" +msgid_plural "%d years" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:10 +#, python-format +msgid "%d month" +msgid_plural "%d months" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:11 +#, python-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:12 +#, python-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:13 +#, python-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:14 +#, python-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:72 +msgid "0 minutes" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:110 +msgid "Forbidden" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:111 +msgid "CSRF verification failed. Request aborted." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:115 +msgid "" +"You are seeing this message because this HTTPS site requires a “Referer " +"header” to be sent by your Web browser, but none was sent. This header is " +"required for security reasons, to ensure that your browser is not being " +"hijacked by third parties." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:120 +msgid "" +"If you have configured your browser to disable “Referer” headers, please re-" +"enable them, at least for this site, or for HTTPS connections, or for “same-" +"origin” requests." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:124 +msgid "" +"If you are using the tag or " +"including the “Referrer-Policy: no-referrer” header, please remove them. The " +"CSRF protection requires the “Referer” header to do strict referer checking. " +"If you’re concerned about privacy, use alternatives like for links to third-party sites." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:132 +msgid "" +"You are seeing this message because this site requires a CSRF cookie when " +"submitting forms. This cookie is required for security reasons, to ensure " +"that your browser is not being hijacked by third parties." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:137 +msgid "" +"If you have configured your browser to disable cookies, please re-enable " +"them, at least for this site, or for “same-origin” requests." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:142 +msgid "More information is available with DEBUG=True." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:41 +msgid "No year specified" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:61 +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:111 +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:208 +msgid "Date out of range" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:90 +msgid "No month specified" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:142 +msgid "No day specified" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:188 +msgid "No week specified" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:338 +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:367 +#, python-format +msgid "No %(verbose_name_plural)s available" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:589 +#, python-format +msgid "" +"Future %(verbose_name_plural)s not available because %(class_name)s." +"allow_future is False." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:623 +#, python-format +msgid "Invalid date string “%(datestr)s” given format “%(format)s”" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/detail.py:54 +#, fuzzy, python-format +#| msgid "No books found matching the query \"%(query)s\"" +msgid "No %(verbose_name)s found matching the query" +msgstr "Keine passenden Bücher zu \"%(query)s\" gefunden" + +#: venv3/lib/python3.8/site-packages/django/views/generic/list.py:67 +msgid "Page is not “last”, nor can it be converted to an int." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/list.py:72 +#, python-format +msgid "Invalid page (%(page_number)s): %(message)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/list.py:154 +#, python-format +msgid "Empty list and “%(class_name)s.allow_empty” is False." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/static.py:40 +msgid "Directory indexes are not allowed here." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/static.py:42 +#, fuzzy, python-format +#| msgid "%(value)s is not a valid username" +msgid "“%(path)s” does not exist" +msgstr "%(value)s ist kein gültiger Username" + +#: venv3/lib/python3.8/site-packages/django/views/static.py:80 +#, python-format +msgid "Index of %(directory)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:7 +msgid "Django: the Web framework for perfectionists with deadlines." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:346 +#, python-format +msgid "" +"View release notes for Django %(version)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:368 +msgid "The install worked successfully! Congratulations!" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:369 +#, python-format +msgid "" +"You are seeing this page because DEBUG=True is in your settings file and you have not configured any " +"URLs." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:384 +msgid "Django Documentation" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:385 +msgid "Topics, references, & how-to’s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:396 +msgid "Tutorial: A Polling App" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:397 +msgid "Get started with Django" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:408 +#, fuzzy +#| msgid "Comment" +msgid "Django Community" +msgstr "Kommentieren" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:409 +msgid "Connect, get help, or contribute" +msgstr "" + +#: venv3/lib/python3.8/site-packages/kombu/transport/qpid.py:1301 +#, python-format +msgid "Attempting to connect to qpid with SASL mechanism %s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/kombu/transport/qpid.py:1306 +#, python-format +msgid "Connected to qpid with SASL mechanism %s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/kombu/transport/qpid.py:1324 +#, python-format +msgid "Unable to connect to qpid with SASL mechanism %s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:371 +msgid "1 second ago" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:377 +msgid "1 minute ago" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:382 +msgid "1 hour ago" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:385 +#, python-format +msgid "%(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:387 +msgid "yesterday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:387 +#, python-format +msgid "yesterday at %(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:389 +#, python-format +msgid "%(weekday)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:389 +#, python-format +msgid "%(weekday)s at %(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:392 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:445 +#, python-format +msgid "%(month_name)s %(day)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:394 +#, python-format +msgid "%(month_name)s %(day)s at %(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:399 +#, python-format +msgid "%(month_name)s %(day)s, %(year)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:401 +#, python-format +msgid "%(month_name)s %(day)s, %(year)s at %(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:439 +#, python-format +msgid "%(weekday)s, %(month_name)s %(day)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:462 +#, python-format +msgid "%(commas)s and %(last)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:68 +msgctxt "law" +msgid "right" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:69 +msgctxt "good" +msgid "right" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:71 +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:74 +msgctxt "organization" +msgid "club" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:76 +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:77 +msgctxt "stick" +msgid "club" +msgstr "" + +#~ msgid "Deactivate user" +#~ msgstr "Nutzer:in deaktivieren" + +#~ msgid "Reactivate user" +#~ msgstr "Nutzer:in reaktivieren" + +#, fuzzy, python-format +#~| msgid "Direct Messages with %(username)s" +#~ msgid "" +#~ "replied to %(username)s's review" +#~ msgstr "Direktnachrichten mit %(username)s" + +#, fuzzy, python-format +#~| msgid "" +#~| "replied to your status" +#~ msgid "" +#~ "replied to %(username)s's comment" +#~ msgstr "" +#~ "hat auf deinen Status geantwortet" + +#, fuzzy, python-format +#~| msgid "" +#~| "replied to your status" +#~ msgid "" +#~ "replied to %(username)s's quote" +#~ msgstr "" +#~ "hat auf deinen Status geantwortet" + +#~ msgid "Remove tag" +#~ msgstr "Tag entfernen" + +#~ msgid "Add tag" +#~ msgstr "Tag hinzufügen" + +#, python-format +#~ msgid "Books tagged \"%(tag.name)s\"" +#~ msgstr "Mit \"%(tag.name)s\" markierte Bücher" + #, fuzzy #~| msgid "Started" #~ msgid "Getting Started" @@ -2756,9 +4549,6 @@ msgstr "" #~ msgid "No users were found for \"%(query)s\"" #~ msgstr "Keine Nutzer*innen für \"%(query)s\" gefunden" -#~ msgid "Your shelves" -#~ msgstr "Deine Regale" - #~ msgid "Your lists" #~ msgstr "Deine Listen" @@ -2799,134 +4589,6 @@ msgstr "" #~ msgid "Send follow request" #~ msgstr "Folgeanfrage senden" -#, fuzzy -#~| msgid "All messages" -#~ msgid "Messages" -#~ msgstr "Alle Nachrichten" - -#, fuzzy -#~| msgid "Email address:" -#~ msgid "Enter a valid email address." -#~ msgstr "E-Mail Adresse" - -#, fuzzy -#~| msgid "Series number:" -#~ msgid "Enter a number." -#~ msgstr "Seriennummer:" - -#, fuzzy -#~| msgid "%(value)s is not a valid remote_id" -#~ msgid "Value %(value)r is not a valid choice." -#~ msgstr "%(value)s ist keine gültige remote_id" - -#, fuzzy -#~| msgid "Series number:" -#~ msgid "Decimal number" -#~ msgstr "Seriennummer:" - -#, fuzzy -#~| msgid "List curation:" -#~ msgid "Duration" -#~ msgstr "Listenkuratierung:" - -#, fuzzy -#~| msgid "Email address:" -#~ msgid "Email address" -#~ msgstr "E-Mail Adresse" - -#, fuzzy -#~| msgid "Email address:" -#~ msgid "IPv4 address" -#~ msgstr "E-Mail Adresse" - -#, fuzzy -#~| msgid "Email address:" -#~ msgid "IP address" -#~ msgstr "E-Mail Adresse" - -#, fuzzy -#~| msgid "No active invites" -#~ msgid "Positive integer" -#~ msgstr "Keine aktiven Einladungen" - -#, fuzzy -#~| msgid "%(value)s is not a valid username" -#~ msgid "“%(value)s” is not a valid UUID." -#~ msgstr "%(value)s ist kein gültiger Username" - -#, fuzzy -#~| msgid "Images" -#~ msgid "Image" -#~ msgstr "Bilder" - -#, fuzzy -#~| msgid "Relationships" -#~ msgid "One-to-one relationship" -#~ msgstr "Beziehungen" - -#, fuzzy -#~| msgid "This shelf is empty." -#~ msgid "This field is required." -#~ msgstr "Dieses Regal ist leer." - -#, fuzzy -#~| msgid "This shelf is empty." -#~ msgid "The submitted file is empty." -#~ msgstr "Dieses Regal ist leer." - -#, fuzzy -#~| msgid "%(value)s is not a valid username" -#~ msgid "“%(pk)s” is not a valid value." -#~ msgstr "%(value)s ist kein gültiger Username" - -#, fuzzy -#~| msgid "Start reading" -#~ msgid "Currently" -#~ msgstr "Gerade lesend" - -#, fuzzy -#~| msgid "Change shelf" -#~ msgid "Change" -#~ msgstr "Regal wechseln" - -#, fuzzy -#~| msgid "Started" -#~ msgid "Sat" -#~ msgstr "Gestartet" - -#, fuzzy -#~| msgid "Search" -#~ msgid "March" -#~ msgstr "Suche" - -#, fuzzy -#~| msgid "Series number:" -#~ msgid "September" -#~ msgstr "Seriennummer:" - -#, fuzzy -#~| msgid "Search" -#~ msgctxt "abbrev. month" -#~ msgid "March" -#~ msgstr "Suche" - -#, fuzzy -#~| msgid "Search" -#~ msgctxt "alt. month" -#~ msgid "March" -#~ msgstr "Suche" - -#, fuzzy -#~| msgid "Series number:" -#~ msgctxt "alt. month" -#~ msgid "September" -#~ msgstr "Seriennummer:" - -#, fuzzy -#~| msgid "No books found matching the query \"%(query)s\"" -#~ msgid "No %(verbose_name)s found matching the query" -#~ msgstr "Keine passenden Bücher zu \"%(query)s\" gefunden" - #~ msgid "Announcements" #~ msgstr "Ankündigungen" diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index a8720f17..6685605a 100644 --- a/locale/en_US/LC_MESSAGES/django.po +++ b/locale/en_US/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-01 13:14-0700\n" +"POT-Creation-Date: 2021-04-26 09:56-0700\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -18,35 +18,60 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: bookwyrm/forms.py:226 +#: bookwyrm/forms.py:224 msgid "A user with this email already exists." msgstr "" -#: bookwyrm/forms.py:240 +#: bookwyrm/forms.py:238 msgid "One Day" msgstr "" -#: bookwyrm/forms.py:241 +#: bookwyrm/forms.py:239 msgid "One Week" msgstr "" -#: bookwyrm/forms.py:242 +#: bookwyrm/forms.py:240 msgid "One Month" msgstr "" -#: bookwyrm/forms.py:243 +#: bookwyrm/forms.py:241 msgid "Does Not Expire" msgstr "" -#: bookwyrm/forms.py:248 +#: bookwyrm/forms.py:246 #, python-format msgid "%(count)d uses" msgstr "" -#: bookwyrm/forms.py:251 +#: bookwyrm/forms.py:249 msgid "Unlimited" msgstr "" +#: bookwyrm/forms.py:293 +msgid "List Order" +msgstr "" + +#: bookwyrm/forms.py:294 +msgid "Book Title" +msgstr "" + +#: bookwyrm/forms.py:295 bookwyrm/templates/snippets/create_status_form.html:31 +#: bookwyrm/templates/user/shelf.html:80 bookwyrm/templates/user/shelf.html:110 +msgid "Rating" +msgstr "" + +#: bookwyrm/forms.py:297 bookwyrm/templates/lists/list.html:82 +msgid "Sort By" +msgstr "" + +#: bookwyrm/forms.py:301 +msgid "Ascending" +msgstr "" + +#: bookwyrm/forms.py:302 +msgid "Descending" +msgstr "" + #: bookwyrm/models/fields.py:24 #, python-format msgid "%(value)s is not a valid remote_id" @@ -57,7 +82,7 @@ msgstr "" msgid "%(value)s is not a valid username" msgstr "" -#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:157 +#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:153 msgid "username" msgstr "" @@ -65,23 +90,23 @@ msgstr "" msgid "A user with that username already exists." msgstr "" -#: bookwyrm/settings.py:150 +#: bookwyrm/settings.py:152 msgid "English" msgstr "" -#: bookwyrm/settings.py:151 +#: bookwyrm/settings.py:153 msgid "German" msgstr "" -#: bookwyrm/settings.py:152 +#: bookwyrm/settings.py:154 msgid "Spanish" msgstr "" -#: bookwyrm/settings.py:153 +#: bookwyrm/settings.py:155 msgid "French" msgstr "" -#: bookwyrm/settings.py:154 +#: bookwyrm/settings.py:156 msgid "Simplified Chinese" msgstr "" @@ -118,80 +143,70 @@ msgstr "" msgid "Books by %(name)s" msgstr "" -#: bookwyrm/templates/book/book.html:21 +#: bookwyrm/templates/book/book.html:33 #: bookwyrm/templates/discover/large-book.html:12 #: bookwyrm/templates/discover/small-book.html:9 msgid "by" msgstr "" -#: bookwyrm/templates/book/book.html:29 bookwyrm/templates/book/book.html:30 +#: bookwyrm/templates/book/book.html:41 bookwyrm/templates/book/book.html:42 msgid "Edit Book" msgstr "" -#: bookwyrm/templates/book/book.html:49 +#: bookwyrm/templates/book/book.html:61 #: bookwyrm/templates/book/cover_modal.html:5 msgid "Add cover" msgstr "" -#: bookwyrm/templates/book/book.html:53 +#: bookwyrm/templates/book/book.html:65 msgid "Failed to load cover" msgstr "" -#: bookwyrm/templates/book/book.html:62 -msgid "ISBN:" -msgstr "" - -#: bookwyrm/templates/book/book.html:69 -#: bookwyrm/templates/book/edit_book.html:211 -msgid "OCLC Number:" -msgstr "" - -#: bookwyrm/templates/book/book.html:76 -#: bookwyrm/templates/book/edit_book.html:215 -msgid "ASIN:" -msgstr "" - -#: bookwyrm/templates/book/book.html:85 +#: bookwyrm/templates/book/book.html:82 msgid "View on OpenLibrary" msgstr "" -#: bookwyrm/templates/book/book.html:94 +#: bookwyrm/templates/book/book.html:102 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" msgstr[0] "" msgstr[1] "" -#: bookwyrm/templates/book/book.html:100 +#: bookwyrm/templates/book/book.html:114 msgid "Add Description" msgstr "" -#: bookwyrm/templates/book/book.html:107 -#: bookwyrm/templates/book/edit_book.html:101 +#: bookwyrm/templates/book/book.html:121 +#: bookwyrm/templates/book/edit_book.html:107 #: bookwyrm/templates/lists/form.html:12 msgid "Description:" msgstr "" -#: bookwyrm/templates/book/book.html:111 -#: bookwyrm/templates/book/edit_book.html:225 +#: bookwyrm/templates/book/book.html:125 +#: bookwyrm/templates/book/edit_book.html:240 #: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 #: bookwyrm/templates/preferences/edit_user.html:70 +#: bookwyrm/templates/settings/edit_server.html:68 +#: bookwyrm/templates/settings/federated_server.html:93 #: bookwyrm/templates/settings/site.html:93 -#: bookwyrm/templates/snippets/readthrough.html:65 +#: bookwyrm/templates/snippets/readthrough.html:75 #: 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/start_reading_modal.html:34 +#: bookwyrm/templates/user_admin/user_moderation_actions.html:38 msgid "Save" msgstr "" -#: bookwyrm/templates/book/book.html:112 bookwyrm/templates/book/book.html:161 +#: bookwyrm/templates/book/book.html:126 bookwyrm/templates/book/book.html:175 #: bookwyrm/templates/book/cover_modal.html:32 -#: bookwyrm/templates/book/edit_book.html:226 +#: bookwyrm/templates/book/edit_book.html:241 #: bookwyrm/templates/edit_author.html:79 -#: bookwyrm/templates/moderation/report_modal.html:32 +#: bookwyrm/templates/moderation/report_modal.html:34 +#: bookwyrm/templates/settings/federated_server.html:94 #: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 #: bookwyrm/templates/snippets/goal_form.html:32 -#: bookwyrm/templates/snippets/readthrough.html:66 +#: bookwyrm/templates/snippets/readthrough.html:76 #: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:43 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43 #: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:35 @@ -199,73 +214,105 @@ msgstr "" msgid "Cancel" msgstr "" -#: bookwyrm/templates/book/book.html:121 +#: bookwyrm/templates/book/book.html:135 #, python-format msgid "%(count)s editions" msgstr "" -#: bookwyrm/templates/book/book.html:129 +#: bookwyrm/templates/book/book.html:143 #, python-format msgid "This edition is on your %(shelf_name)s shelf." msgstr "" -#: bookwyrm/templates/book/book.html:135 +#: bookwyrm/templates/book/book.html:149 #, python-format -msgid "A different edition of this book is on your %(shelf_name)s shelf." -msgstr "" - -#: bookwyrm/templates/book/book.html:144 -msgid "Your reading activity" -msgstr "" - -#: bookwyrm/templates/book/book.html:146 -msgid "Add read dates" -msgstr "" - -#: bookwyrm/templates/book/book.html:151 -msgid "You don't have any reading activity for this book." +msgid "" +"A different edition of this book is on your %(shelf_name)s shelf." msgstr "" #: bookwyrm/templates/book/book.html:158 +msgid "Your reading activity" +msgstr "" + +#: bookwyrm/templates/book/book.html:160 +msgid "Add read dates" +msgstr "" + +#: bookwyrm/templates/book/book.html:165 +msgid "You don't have any reading activity for this book." +msgstr "" + +#: bookwyrm/templates/book/book.html:172 msgid "Create" msgstr "" -#: bookwyrm/templates/book/book.html:180 +#: bookwyrm/templates/book/book.html:194 msgid "Subjects" msgstr "" -#: bookwyrm/templates/book/book.html:191 +#: bookwyrm/templates/book/book.html:206 msgid "Places" msgstr "" -#: bookwyrm/templates/book/book.html:202 bookwyrm/templates/layout.html:64 +#: bookwyrm/templates/book/book.html:217 bookwyrm/templates/layout.html:65 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search_results.html:91 #: bookwyrm/templates/user/user_layout.html:62 msgid "Lists" msgstr "" -#: bookwyrm/templates/book/book.html:213 +#: bookwyrm/templates/book/book.html:228 msgid "Add to list" msgstr "" -#: bookwyrm/templates/book/book.html:223 +#: bookwyrm/templates/book/book.html:238 #: bookwyrm/templates/book/cover_modal.html:31 -#: bookwyrm/templates/lists/list.html:90 +#: bookwyrm/templates/lists/list.html:133 msgid "Add" msgstr "" -#: bookwyrm/templates/book/book.html:251 +#: bookwyrm/templates/book/book.html:254 +msgid "Reviews" +msgstr "" + +#: bookwyrm/templates/book/book.html:259 +msgid "Your reviews" +msgstr "" + +#: bookwyrm/templates/book/book.html:265 +msgid "Your comments" +msgstr "" + +#: bookwyrm/templates/book/book.html:271 +msgid "Your quotes" +msgstr "" + +#: bookwyrm/templates/book/book.html:305 msgid "rated it" msgstr "" +#: bookwyrm/templates/book/book_identifiers.html:8 +msgid "ISBN:" +msgstr "" + +#: bookwyrm/templates/book/book_identifiers.html:15 +#: bookwyrm/templates/book/edit_book.html:226 +msgid "OCLC Number:" +msgstr "" + +#: bookwyrm/templates/book/book_identifiers.html:22 +#: bookwyrm/templates/book/edit_book.html:230 +msgid "ASIN:" +msgstr "" + #: bookwyrm/templates/book/cover_modal.html:17 -#: bookwyrm/templates/book/edit_book.html:163 +#: bookwyrm/templates/book/edit_book.html:178 msgid "Upload cover:" msgstr "" #: bookwyrm/templates/book/cover_modal.html:23 -#: bookwyrm/templates/book/edit_book.html:169 +#: bookwyrm/templates/book/edit_book.html:184 msgid "Load cover from url:" msgstr "" @@ -341,86 +388,86 @@ msgstr "" msgid "Metadata" msgstr "" -#: bookwyrm/templates/book/edit_book.html:91 +#: bookwyrm/templates/book/edit_book.html:92 msgid "Title:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:96 +#: bookwyrm/templates/book/edit_book.html:100 msgid "Subtitle:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:106 +#: bookwyrm/templates/book/edit_book.html:113 msgid "Series:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:111 +#: bookwyrm/templates/book/edit_book.html:120 msgid "Series number:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:117 +#: bookwyrm/templates/book/edit_book.html:126 msgid "Publisher:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:119 +#: bookwyrm/templates/book/edit_book.html:128 msgid "Separate multiple publishers with commas." msgstr "" -#: bookwyrm/templates/book/edit_book.html:125 +#: bookwyrm/templates/book/edit_book.html:135 msgid "First published date:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:130 +#: bookwyrm/templates/book/edit_book.html:143 msgid "Published date:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:137 +#: bookwyrm/templates/book/edit_book.html:152 msgid "Authors" msgstr "" -#: bookwyrm/templates/book/edit_book.html:143 +#: bookwyrm/templates/book/edit_book.html:158 #, python-format msgid "Remove %(name)s" msgstr "" -#: bookwyrm/templates/book/edit_book.html:148 +#: bookwyrm/templates/book/edit_book.html:163 msgid "Add Authors:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:149 +#: bookwyrm/templates/book/edit_book.html:164 msgid "John Doe, Jane Smith" msgstr "" -#: bookwyrm/templates/book/edit_book.html:155 -#: bookwyrm/templates/user/shelf.html:75 +#: bookwyrm/templates/book/edit_book.html:170 +#: bookwyrm/templates/user/shelf.html:74 msgid "Cover" msgstr "" -#: bookwyrm/templates/book/edit_book.html:182 +#: bookwyrm/templates/book/edit_book.html:197 msgid "Physical Properties" msgstr "" -#: bookwyrm/templates/book/edit_book.html:183 +#: bookwyrm/templates/book/edit_book.html:198 #: bookwyrm/templates/book/format_filter.html:5 msgid "Format:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:191 +#: bookwyrm/templates/book/edit_book.html:206 msgid "Pages:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:198 +#: bookwyrm/templates/book/edit_book.html:213 msgid "Book Identifiers" msgstr "" -#: bookwyrm/templates/book/edit_book.html:199 +#: bookwyrm/templates/book/edit_book.html:214 msgid "ISBN 13:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:203 +#: bookwyrm/templates/book/edit_book.html:218 msgid "ISBN 10:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:207 +#: bookwyrm/templates/book/edit_book.html:222 #: bookwyrm/templates/edit_author.html:59 msgid "Openlibrary key:" msgstr "" @@ -444,44 +491,53 @@ msgstr "" msgid "Language:" msgstr "" -#: bookwyrm/templates/book/publisher_info.html:6 +#: bookwyrm/templates/book/publisher_info.html:22 +#, python-format +msgid "%(format)s" +msgstr "" + +#: bookwyrm/templates/book/publisher_info.html:24 #, python-format msgid "%(format)s, %(pages)s pages" msgstr "" -#: bookwyrm/templates/book/publisher_info.html:8 +#: bookwyrm/templates/book/publisher_info.html:26 #, python-format msgid "%(pages)s pages" msgstr "" -#: bookwyrm/templates/book/publisher_info.html:13 +#: bookwyrm/templates/book/publisher_info.html:38 #, python-format msgid "%(languages)s language" msgstr "" -#: bookwyrm/templates/book/publisher_info.html:18 +#: bookwyrm/templates/book/publisher_info.html:64 #, python-format msgid "Published %(date)s by %(publisher)s." msgstr "" -#: bookwyrm/templates/book/publisher_info.html:20 +#: bookwyrm/templates/book/publisher_info.html:66 #, python-format msgid "Published %(date)s" msgstr "" -#: bookwyrm/templates/book/publisher_info.html:22 +#: bookwyrm/templates/book/publisher_info.html:68 #, python-format msgid "Published by %(publisher)s." msgstr "" #: bookwyrm/templates/components/inline_form.html:8 #: bookwyrm/templates/components/modal.html:11 -#: bookwyrm/templates/feed/feed_layout.html:57 +#: bookwyrm/templates/feed/feed_layout.html:70 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 msgid "Close" msgstr "" +#: bookwyrm/templates/compose.html:5 bookwyrm/templates/compose.html:8 +msgid "Compose status" +msgstr "" + #: bookwyrm/templates/directory/community_filter.html:5 msgid "Community" msgstr "" @@ -496,7 +552,7 @@ msgstr "" #: bookwyrm/templates/directory/directory.html:6 #: bookwyrm/templates/directory/directory.html:11 -#: bookwyrm/templates/layout.html:97 +#: bookwyrm/templates/layout.html:93 msgid "Directory" msgstr "" @@ -506,7 +562,9 @@ msgstr "" #: bookwyrm/templates/directory/directory.html:26 #, python-format -msgid "You can opt-out at any time in your profile settings." +msgid "" +"You can opt-out at any time in your profile settings." msgstr "" #: bookwyrm/templates/directory/directory.html:31 @@ -620,7 +678,7 @@ msgid "Email address:" msgstr "" #: bookwyrm/templates/discover/landing_layout.html:70 -#: bookwyrm/templates/moderation/report_modal.html:31 +#: bookwyrm/templates/moderation/report_modal.html:33 msgid "Submit" msgstr "" @@ -673,7 +731,9 @@ msgstr "" #: bookwyrm/templates/email/html_layout.html:21 #, python-format -msgid "BookWyrm hosted on %(site_name)s" +msgid "" +"BookWyrm hosted on " +"%(site_name)s" msgstr "" #: bookwyrm/templates/email/html_layout.html:23 @@ -692,12 +752,16 @@ msgstr "" #: bookwyrm/templates/email/invite/html_content.html:15 #, python-format -msgid "Learn more about this instance." +msgid "" +"Learn more about this instance." msgstr "" #: bookwyrm/templates/email/invite/text_content.html:4 #, python-format -msgid "You're invited to join %(site_name)s! Click the link below to create an account." +msgid "" +"You're invited to join %(site_name)s! Click the link below to create an " +"account." msgstr "" #: bookwyrm/templates/email/invite/text_content.html:8 @@ -707,7 +771,9 @@ msgstr "" #: bookwyrm/templates/email/password_reset/html_content.html:6 #: bookwyrm/templates/email/password_reset/text_content.html:4 #, python-format -msgid "You requested to reset your %(site_name)s password. Click the link below to set a new password and log in to your account." +msgid "" +"You requested to reset your %(site_name)s password. Click the link below to " +"set a new password and log in to your account." msgstr "" #: bookwyrm/templates/email/password_reset/html_content.html:9 @@ -720,7 +786,8 @@ msgstr "" #: bookwyrm/templates/email/password_reset/html_content.html:13 #: bookwyrm/templates/email/password_reset/text_content.html:8 -msgid "If you didn't request to reset your password, you can ignore this email." +msgid "" +"If you didn't request to reset your password, you can ignore this email." msgstr "" #: bookwyrm/templates/email/password_reset/subject.html:2 @@ -734,7 +801,7 @@ msgid "Direct Messages with %(username)s" msgstr "" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:87 +#: bookwyrm/templates/layout.html:88 msgid "Direct Messages" msgstr "" @@ -767,6 +834,7 @@ msgid "Local" msgstr "" #: bookwyrm/templates/feed/feed.html:25 +#: bookwyrm/templates/settings/edit_server.html:40 msgid "Federated" msgstr "" @@ -776,7 +844,8 @@ msgid "load 0 unread status(es)" msgstr "" #: bookwyrm/templates/feed/feed.html:48 -msgid "There aren't any activities right now! Try following a user to get started" +msgid "" +"There aren't any activities right now! Try following a user to get started" msgstr "" #: bookwyrm/templates/feed/feed.html:56 @@ -789,32 +858,33 @@ msgid "Updates" msgstr "" #: bookwyrm/templates/feed/feed_layout.html:11 -#: bookwyrm/templates/layout.html:58 +#: bookwyrm/templates/layout.html:59 #: bookwyrm/templates/user/books_header.html:3 msgid "Your books" msgstr "" #: bookwyrm/templates/feed/feed_layout.html:13 -msgid "There are no books here right now! Try searching for a book to get started" -msgstr "" - -#: bookwyrm/templates/feed/feed_layout.html:23 -#: bookwyrm/templates/user/shelf.html:28 -msgid "To Read" +msgid "" +"There are no books here right now! Try searching for a book to get started" msgstr "" #: bookwyrm/templates/feed/feed_layout.html:24 #: bookwyrm/templates/user/shelf.html:28 -msgid "Currently Reading" +msgid "To Read" msgstr "" #: bookwyrm/templates/feed/feed_layout.html:25 +#: bookwyrm/templates/user/shelf.html:28 +msgid "Currently Reading" +msgstr "" + +#: bookwyrm/templates/feed/feed_layout.html:26 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:11 #: bookwyrm/templates/user/shelf.html:28 msgid "Read" msgstr "" -#: bookwyrm/templates/feed/feed_layout.html:74 bookwyrm/templates/goal.html:26 +#: bookwyrm/templates/feed/feed_layout.html:88 bookwyrm/templates/goal.html:26 #: bookwyrm/templates/snippets/goal_card.html:6 #, python-format msgid "%(year)s Reading Goal" @@ -844,7 +914,7 @@ msgid "What are you reading?" msgstr "" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/lists/list.html:58 +#: bookwyrm/templates/lists/list.html:101 msgid "Search for a book" msgstr "" @@ -864,8 +934,8 @@ msgstr "" #: bookwyrm/templates/get_started/books.html:17 #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 -#: bookwyrm/templates/layout.html:37 bookwyrm/templates/layout.html:38 -#: bookwyrm/templates/lists/list.html:62 +#: bookwyrm/templates/layout.html:38 bookwyrm/templates/layout.html:39 +#: bookwyrm/templates/lists/list.html:105 msgid "Search" msgstr "" @@ -879,7 +949,7 @@ msgid "Popular on %(site_name)s" msgstr "" #: bookwyrm/templates/get_started/books.html:51 -#: bookwyrm/templates/lists/list.html:75 +#: bookwyrm/templates/lists/list.html:118 msgid "No books found" msgstr "" @@ -948,7 +1018,9 @@ msgid "Show this account in suggested users:" msgstr "" #: bookwyrm/templates/get_started/profile.html:52 -msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users." +msgid "" +"Your account will show up in the directory, and may be recommended to other " +"BookWyrm users." msgstr "" #: bookwyrm/templates/get_started/users.html:11 @@ -973,7 +1045,9 @@ msgstr "" #: bookwyrm/templates/goal.html:30 #: bookwyrm/templates/snippets/goal_card.html:13 #, python-format -msgid "Set a goal for how many books you'll finish reading in %(year)s, and track your progress throughout the year." +msgid "" +"Set a goal for how many books you'll finish reading in %(year)s, and track " +"your progress throughout the year." msgstr "" #: bookwyrm/templates/goal.html:39 @@ -992,7 +1066,7 @@ msgid "%(username)s's %(year)s Books" msgstr "" #: bookwyrm/templates/import.html:5 bookwyrm/templates/import.html:9 -#: bookwyrm/templates/layout.html:102 +#: bookwyrm/templates/layout.html:98 msgid "Import Books" msgstr "" @@ -1013,6 +1087,7 @@ msgid "Privacy setting for imported reviews:" msgstr "" #: bookwyrm/templates/import.html:48 +#: bookwyrm/templates/settings/server_blocklist.html:64 msgid "Import" msgstr "" @@ -1055,7 +1130,9 @@ msgstr "" #: bookwyrm/templates/import_status.html:44 #, 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 "" #: bookwyrm/templates/import_status.html:79 @@ -1077,12 +1154,12 @@ msgstr "" #: bookwyrm/templates/import_status.html:115 #: bookwyrm/templates/snippets/create_status_form.html:10 -#: bookwyrm/templates/user/shelf.html:76 +#: bookwyrm/templates/user/shelf.html:75 bookwyrm/templates/user/shelf.html:93 msgid "Title" msgstr "" #: bookwyrm/templates/import_status.html:118 -#: bookwyrm/templates/user/shelf.html:77 +#: bookwyrm/templates/user/shelf.html:76 bookwyrm/templates/user/shelf.html:96 msgid "Author" msgstr "" @@ -1119,91 +1196,90 @@ msgstr "" msgid "Matching Books" msgstr "" -#: bookwyrm/templates/layout.html:33 +#: bookwyrm/templates/layout.html:34 msgid "Search for a book or user" msgstr "" -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/layout.html:48 +#: bookwyrm/templates/layout.html:48 bookwyrm/templates/layout.html:49 msgid "Main navigation menu" msgstr "" -#: bookwyrm/templates/layout.html:61 +#: bookwyrm/templates/layout.html:62 msgid "Feed" msgstr "" -#: bookwyrm/templates/layout.html:92 -#: bookwyrm/templates/preferences/preferences_layout.html:14 -msgid "Profile" -msgstr "" - -#: bookwyrm/templates/layout.html:107 +#: bookwyrm/templates/layout.html:103 msgid "Settings" msgstr "" -#: bookwyrm/templates/layout.html:116 -#: bookwyrm/templates/settings/admin_layout.html:24 +#: bookwyrm/templates/layout.html:112 +#: bookwyrm/templates/settings/admin_layout.html:31 #: bookwyrm/templates/settings/manage_invite_requests.html:15 #: bookwyrm/templates/settings/manage_invites.html:3 #: bookwyrm/templates/settings/manage_invites.html:15 msgid "Invites" msgstr "" -#: bookwyrm/templates/layout.html:123 +#: bookwyrm/templates/layout.html:119 msgid "Admin" msgstr "" -#: bookwyrm/templates/layout.html:130 +#: bookwyrm/templates/layout.html:126 msgid "Log out" msgstr "" -#: bookwyrm/templates/layout.html:138 bookwyrm/templates/layout.html:139 +#: bookwyrm/templates/layout.html:134 bookwyrm/templates/layout.html:135 #: bookwyrm/templates/notifications.html:6 #: bookwyrm/templates/notifications.html:10 msgid "Notifications" msgstr "" -#: bookwyrm/templates/layout.html:156 bookwyrm/templates/layout.html:160 +#: bookwyrm/templates/layout.html:152 bookwyrm/templates/layout.html:156 #: bookwyrm/templates/login.html:17 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" msgstr "" -#: bookwyrm/templates/layout.html:161 +#: bookwyrm/templates/layout.html:157 msgid "password" msgstr "" -#: bookwyrm/templates/layout.html:162 bookwyrm/templates/login.html:36 +#: bookwyrm/templates/layout.html:158 bookwyrm/templates/login.html:36 msgid "Forgot your password?" msgstr "" -#: bookwyrm/templates/layout.html:165 bookwyrm/templates/login.html:10 +#: bookwyrm/templates/layout.html:161 bookwyrm/templates/login.html:10 #: bookwyrm/templates/login.html:33 msgid "Log in" msgstr "" -#: bookwyrm/templates/layout.html:173 +#: bookwyrm/templates/layout.html:169 msgid "Join" msgstr "" -#: bookwyrm/templates/layout.html:196 +#: bookwyrm/templates/layout.html:195 msgid "About this server" msgstr "" -#: bookwyrm/templates/layout.html:200 +#: bookwyrm/templates/layout.html:199 msgid "Contact site admin" msgstr "" -#: bookwyrm/templates/layout.html:207 +#: bookwyrm/templates/layout.html:206 #, python-format -msgid "Support %(site_name)s on %(support_title)s" +msgid "" +"Support %(site_name)s on " +"%(support_title)s" msgstr "" -#: bookwyrm/templates/layout.html:211 -msgid "BookWyrm is open source software. You can contribute or report issues on GitHub." +#: bookwyrm/templates/layout.html:210 +msgid "" +"BookWyrm is open source software. You can contribute or report issues on GitHub." msgstr "" #: bookwyrm/templates/lists/create_form.html:5 -#: bookwyrm/templates/lists/lists.html:19 +#: bookwyrm/templates/lists/lists.html:20 msgid "Create List" msgstr "" @@ -1267,7 +1343,7 @@ msgid "Anyone can suggest books, subject to your approval" msgstr "" #: bookwyrm/templates/lists/form.html:31 -#: bookwyrm/templates/moderation/reports.html:24 +#: bookwyrm/templates/moderation/reports.html:25 msgid "Open" msgstr "" @@ -1275,45 +1351,73 @@ msgstr "" msgid "Anyone can add books to this list" msgstr "" -#: bookwyrm/templates/lists/list.html:17 +#: bookwyrm/templates/lists/list.html:19 +msgid "You successfully suggested a book for this list!" +msgstr "" + +#: bookwyrm/templates/lists/list.html:21 +msgid "You successfully added a book to this list!" +msgstr "" + +#: bookwyrm/templates/lists/list.html:27 msgid "This list is currently empty" msgstr "" -#: bookwyrm/templates/lists/list.html:35 +#: bookwyrm/templates/lists/list.html:46 #, python-format msgid "Added by %(username)s" msgstr "" -#: bookwyrm/templates/lists/list.html:41 -#: bookwyrm/templates/snippets/shelf_selector.html:28 +#: bookwyrm/templates/lists/list.html:58 +msgid "Set" +msgstr "" + +#: bookwyrm/templates/lists/list.html:61 +msgid "List position" +msgstr "" + +#: bookwyrm/templates/lists/list.html:67 +#: bookwyrm/templates/snippets/shelf_selector.html:26 msgid "Remove" msgstr "" -#: bookwyrm/templates/lists/list.html:54 +#: bookwyrm/templates/lists/list.html:80 bookwyrm/templates/lists/list.html:92 +msgid "Sort List" +msgstr "" + +#: bookwyrm/templates/lists/list.html:86 +msgid "Direction" +msgstr "" + +#: bookwyrm/templates/lists/list.html:97 msgid "Add Books" msgstr "" -#: bookwyrm/templates/lists/list.html:54 +#: bookwyrm/templates/lists/list.html:97 msgid "Suggest Books" msgstr "" -#: bookwyrm/templates/lists/list.html:63 +#: bookwyrm/templates/lists/list.html:106 msgid "search" msgstr "" -#: bookwyrm/templates/lists/list.html:69 +#: bookwyrm/templates/lists/list.html:112 msgid "Clear search" msgstr "" -#: bookwyrm/templates/lists/list.html:74 +#: bookwyrm/templates/lists/list.html:117 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "" -#: bookwyrm/templates/lists/list.html:90 +#: bookwyrm/templates/lists/list.html:133 msgid "Suggest" msgstr "" +#: bookwyrm/templates/lists/lists.html:14 bookwyrm/templates/user/lists.html:9 +msgid "Your Lists" +msgstr "" + #: bookwyrm/templates/login.html:4 msgid "Login" msgstr "" @@ -1331,59 +1435,37 @@ msgstr "" msgid "More about this site" msgstr "" -#: bookwyrm/templates/moderation/report.html:5 #: bookwyrm/templates/moderation/report.html:6 +#: bookwyrm/templates/moderation/report.html:7 #: bookwyrm/templates/moderation/report_preview.html:6 #, python-format msgid "Report #%(report_id)s: %(username)s" msgstr "" -#: bookwyrm/templates/moderation/report.html:10 +#: bookwyrm/templates/moderation/report.html:11 msgid "Back to reports" msgstr "" -#: bookwyrm/templates/moderation/report.html:18 -msgid "Actions" -msgstr "" - -#: bookwyrm/templates/moderation/report.html:19 -msgid "View user profile" -msgstr "" - -#: bookwyrm/templates/moderation/report.html:22 -#: bookwyrm/templates/snippets/status/status_options.html:25 -#: bookwyrm/templates/snippets/user_options.html:13 -msgid "Send direct message" -msgstr "" - -#: bookwyrm/templates/moderation/report.html:27 -msgid "Deactivate user" -msgstr "" - -#: bookwyrm/templates/moderation/report.html:29 -msgid "Reactivate user" -msgstr "" - -#: bookwyrm/templates/moderation/report.html:36 +#: bookwyrm/templates/moderation/report.html:23 msgid "Moderator Comments" msgstr "" -#: bookwyrm/templates/moderation/report.html:54 -#: bookwyrm/templates/snippets/create_status.html:12 -#: bookwyrm/templates/snippets/create_status_form.html:52 +#: bookwyrm/templates/moderation/report.html:41 +#: bookwyrm/templates/snippets/create_status.html:28 +#: bookwyrm/templates/snippets/create_status_form.html:53 msgid "Comment" msgstr "" -#: bookwyrm/templates/moderation/report.html:59 +#: bookwyrm/templates/moderation/report.html:46 msgid "Reported statuses" msgstr "" -#: bookwyrm/templates/moderation/report.html:61 +#: bookwyrm/templates/moderation/report.html:48 msgid "No statuses reported" msgstr "" -#: bookwyrm/templates/moderation/report.html:67 -msgid "Statuses has been deleted" +#: bookwyrm/templates/moderation/report.html:54 +msgid "Status has been deleted" msgstr "" #: bookwyrm/templates/moderation/report_modal.html:6 @@ -1391,12 +1473,12 @@ msgstr "" msgid "Report @%(username)s" msgstr "" -#: bookwyrm/templates/moderation/report_modal.html:21 +#: bookwyrm/templates/moderation/report_modal.html:23 #, python-format msgid "This report will be sent to %(site_name)s's moderators for review." msgstr "" -#: bookwyrm/templates/moderation/report_modal.html:22 +#: bookwyrm/templates/moderation/report_modal.html:24 msgid "More info about this report:" msgstr "" @@ -1423,21 +1505,21 @@ msgid "Reports: %(server_name)s" msgstr "" #: bookwyrm/templates/moderation/reports.html:8 -#: bookwyrm/templates/moderation/reports.html:16 -#: bookwyrm/templates/settings/admin_layout.html:28 +#: bookwyrm/templates/moderation/reports.html:17 +#: bookwyrm/templates/settings/admin_layout.html:35 msgid "Reports" msgstr "" -#: bookwyrm/templates/moderation/reports.html:13 +#: bookwyrm/templates/moderation/reports.html:14 #, python-format msgid "Reports: %(server_name)s" msgstr "" -#: bookwyrm/templates/moderation/reports.html:27 +#: bookwyrm/templates/moderation/reports.html:28 msgid "Resolved" msgstr "" -#: bookwyrm/templates/moderation/reports.html:34 +#: bookwyrm/templates/moderation/reports.html:37 msgid "No reports found." msgstr "" @@ -1447,17 +1529,23 @@ msgstr "" #: bookwyrm/templates/notifications.html:53 #, python-format -msgid "favorited your review of %(book_title)s" +msgid "" +"favorited your review of %(book_title)s" msgstr "" #: bookwyrm/templates/notifications.html:55 #, python-format -msgid "favorited your comment on %(book_title)s" +msgid "" +"favorited your comment on %(book_title)s" msgstr "" #: bookwyrm/templates/notifications.html:57 #, python-format -msgid "favorited your quote from %(book_title)s" +msgid "" +"favorited your quote from %(book_title)s" msgstr "" #: bookwyrm/templates/notifications.html:59 @@ -1467,17 +1555,23 @@ msgstr "" #: bookwyrm/templates/notifications.html:64 #, python-format -msgid "mentioned you in a review of %(book_title)s" +msgid "" +"mentioned you in a review of " +"%(book_title)s" msgstr "" #: bookwyrm/templates/notifications.html:66 #, python-format -msgid "mentioned you in a comment on %(book_title)s" +msgid "" +"mentioned you in a comment on " +"%(book_title)s" msgstr "" #: bookwyrm/templates/notifications.html:68 #, python-format -msgid "mentioned you in a quote from %(book_title)s" +msgid "" +"mentioned you in a quote from " +"%(book_title)s" msgstr "" #: bookwyrm/templates/notifications.html:70 @@ -1487,22 +1581,30 @@ msgstr "" #: bookwyrm/templates/notifications.html:75 #, python-format -msgid "replied to your review of %(book_title)s" +msgid "" +"replied to your review of %(book_title)s" msgstr "" #: bookwyrm/templates/notifications.html:77 #, python-format -msgid "replied to your comment on %(book_title)s" +msgid "" +"replied to your comment on %(book_title)s" msgstr "" #: bookwyrm/templates/notifications.html:79 #, python-format -msgid "replied to your quote from %(book_title)s" +msgid "" +"replied to your quote from %(book_title)s" msgstr "" #: bookwyrm/templates/notifications.html:81 #, python-format -msgid "replied to your status" +msgid "" +"replied to your status" msgstr "" #: bookwyrm/templates/notifications.html:85 @@ -1515,17 +1617,23 @@ msgstr "" #: bookwyrm/templates/notifications.html:94 #, python-format -msgid "boosted your review of %(book_title)s" +msgid "" +"boosted your review of %(book_title)s" msgstr "" #: bookwyrm/templates/notifications.html:96 #, python-format -msgid "boosted your comment on%(book_title)s" +msgid "" +"boosted your comment on%(book_title)s" msgstr "" #: bookwyrm/templates/notifications.html:98 #, python-format -msgid "boosted your quote from %(book_title)s" +msgid "" +"boosted your quote from %(book_title)s" msgstr "" #: bookwyrm/templates/notifications.html:100 @@ -1535,12 +1643,16 @@ msgstr "" #: bookwyrm/templates/notifications.html:104 #, python-format -msgid " added %(book_title)s to your list \"%(list_name)s\"" +msgid "" +" added %(book_title)s to your list " +"\"%(list_name)s\"" msgstr "" #: bookwyrm/templates/notifications.html:106 #, python-format -msgid " suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgid "" +" suggested adding %(book_title)s to " +"your list \"%(list_name)s\"" msgstr "" #: bookwyrm/templates/notifications.html:110 @@ -1602,7 +1714,9 @@ msgstr "" #: bookwyrm/templates/preferences/edit_user.html:62 #, python-format -msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users." +msgid "" +"Your account will show up in the directory, and may " +"be recommended to other BookWyrm users." msgstr "" #: bookwyrm/templates/preferences/edit_user.html:65 @@ -1613,6 +1727,10 @@ msgstr "" msgid "Account" msgstr "" +#: bookwyrm/templates/preferences/preferences_layout.html:14 +msgid "Profile" +msgstr "" + #: bookwyrm/templates/preferences/preferences_layout.html:20 msgid "Relationships" msgstr "" @@ -1642,117 +1760,187 @@ msgstr "" msgid "Administration" msgstr "" -#: bookwyrm/templates/settings/admin_layout.html:15 +#: bookwyrm/templates/settings/admin_layout.html:22 msgid "Manage Users" msgstr "" -#: bookwyrm/templates/settings/admin_layout.html:19 -#: bookwyrm/templates/settings/user_admin.html:3 -#: bookwyrm/templates/settings/user_admin.html:10 +#: bookwyrm/templates/settings/admin_layout.html:26 +#: bookwyrm/templates/user_admin/user_admin.html:3 +#: bookwyrm/templates/user_admin/user_admin.html:10 msgid "Users" msgstr "" -#: bookwyrm/templates/settings/admin_layout.html:32 +#: bookwyrm/templates/settings/admin_layout.html:39 #: bookwyrm/templates/settings/federation.html:3 #: bookwyrm/templates/settings/federation.html:5 msgid "Federated Servers" msgstr "" -#: bookwyrm/templates/settings/admin_layout.html:37 +#: bookwyrm/templates/settings/admin_layout.html:44 msgid "Instance Settings" msgstr "" -#: bookwyrm/templates/settings/admin_layout.html:41 +#: bookwyrm/templates/settings/admin_layout.html:48 #: bookwyrm/templates/settings/site.html:4 #: bookwyrm/templates/settings/site.html:6 msgid "Site Settings" msgstr "" -#: bookwyrm/templates/settings/admin_layout.html:44 +#: bookwyrm/templates/settings/admin_layout.html:51 #: bookwyrm/templates/settings/site.html:13 msgid "Instance Info" msgstr "" -#: bookwyrm/templates/settings/admin_layout.html:45 +#: bookwyrm/templates/settings/admin_layout.html:52 #: bookwyrm/templates/settings/site.html:39 msgid "Images" msgstr "" -#: bookwyrm/templates/settings/admin_layout.html:46 +#: bookwyrm/templates/settings/admin_layout.html:53 #: bookwyrm/templates/settings/site.html:59 msgid "Footer Content" msgstr "" -#: bookwyrm/templates/settings/admin_layout.html:47 +#: bookwyrm/templates/settings/admin_layout.html:54 #: bookwyrm/templates/settings/site.html:77 msgid "Registration" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:7 +#: bookwyrm/templates/settings/edit_server.html:3 +#: bookwyrm/templates/settings/edit_server.html:6 +#: bookwyrm/templates/settings/edit_server.html:20 +#: bookwyrm/templates/settings/federation.html:9 +#: bookwyrm/templates/settings/federation.html:10 +#: bookwyrm/templates/settings/server_blocklist.html:3 +#: bookwyrm/templates/settings/server_blocklist.html:20 +msgid "Add server" +msgstr "" + +#: bookwyrm/templates/settings/edit_server.html:7 +#: bookwyrm/templates/settings/federated_server.html:12 +#: bookwyrm/templates/settings/server_blocklist.html:7 msgid "Back to server list" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:12 -msgid "Details" +#: bookwyrm/templates/settings/edit_server.html:16 +#: bookwyrm/templates/settings/server_blocklist.html:16 +msgid "Import block list" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:15 -msgid "Software:" +#: bookwyrm/templates/settings/edit_server.html:30 +msgid "Instance:" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:19 -msgid "Version:" -msgstr "" - -#: bookwyrm/templates/settings/federated_server.html:23 +#: bookwyrm/templates/settings/edit_server.html:37 +#: bookwyrm/templates/settings/federated_server.html:29 +#: bookwyrm/templates/user_admin/user_info.html:34 msgid "Status:" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:30 +#: bookwyrm/templates/settings/edit_server.html:41 +#: bookwyrm/templates/settings/federated_server.html:9 +msgid "Blocked" +msgstr "" + +#: bookwyrm/templates/settings/edit_server.html:48 +#: bookwyrm/templates/settings/federated_server.html:21 +#: bookwyrm/templates/user_admin/user_info.html:26 +msgid "Software:" +msgstr "" + +#: bookwyrm/templates/settings/edit_server.html:55 +#: bookwyrm/templates/settings/federated_server.html:25 +#: bookwyrm/templates/user_admin/user_info.html:30 +msgid "Version:" +msgstr "" + +#: bookwyrm/templates/settings/edit_server.html:64 +msgid "Notes:" +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:18 +msgid "Details" +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:36 #: bookwyrm/templates/user/user_layout.html:50 msgid "Activity" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:33 +#: bookwyrm/templates/settings/federated_server.html:39 msgid "Users:" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:36 -#: bookwyrm/templates/settings/federated_server.html:43 +#: bookwyrm/templates/settings/federated_server.html:42 +#: bookwyrm/templates/settings/federated_server.html:49 msgid "View all" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:40 +#: bookwyrm/templates/settings/federated_server.html:46 msgid "Reports:" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:47 +#: bookwyrm/templates/settings/federated_server.html:53 msgid "Followed by us:" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:53 +#: bookwyrm/templates/settings/federated_server.html:59 msgid "Followed by them:" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:59 +#: bookwyrm/templates/settings/federated_server.html:65 msgid "Blocked by us:" msgstr "" -#: bookwyrm/templates/settings/federation.html:13 +#: bookwyrm/templates/settings/federated_server.html:77 +#: bookwyrm/templates/user_admin/user_info.html:39 +msgid "Notes" +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:80 +msgid "Edit" +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:100 +#: bookwyrm/templates/user_admin/user_moderation_actions.html:3 +msgid "Actions" +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:104 +#: bookwyrm/templates/snippets/block_button.html:5 +msgid "Block" +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:105 +msgid "All users from this instance will be deactivated." +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:110 +#: bookwyrm/templates/snippets/block_button.html:10 +msgid "Un-block" +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:111 +msgid "All users from this instance will be re-activated." +msgstr "" + +#: bookwyrm/templates/settings/federation.html:20 +#: bookwyrm/templates/user_admin/server_filter.html:5 msgid "Server name" msgstr "" -#: bookwyrm/templates/settings/federation.html:17 +#: bookwyrm/templates/settings/federation.html:24 msgid "Date federated" msgstr "" -#: bookwyrm/templates/settings/federation.html:21 +#: bookwyrm/templates/settings/federation.html:28 msgid "Software" msgstr "" -#: bookwyrm/templates/settings/federation.html:24 -#: bookwyrm/templates/settings/manage_invite_requests.html:33 -#: bookwyrm/templates/settings/user_admin.html:32 +#: bookwyrm/templates/settings/federation.html:31 +#: bookwyrm/templates/settings/manage_invite_requests.html:44 +#: bookwyrm/templates/settings/status_filter.html:5 +#: bookwyrm/templates/user_admin/user_admin.html:34 msgid "Status" msgstr "" @@ -1767,55 +1955,62 @@ msgstr "" msgid "Ignored Invite Requests" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:31 -msgid "Date" +#: bookwyrm/templates/settings/manage_invite_requests.html:35 +msgid "Date requested" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:32 +#: bookwyrm/templates/settings/manage_invite_requests.html:39 +msgid "Date accepted" +msgstr "" + +#: bookwyrm/templates/settings/manage_invite_requests.html:42 msgid "Email" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:34 +#: bookwyrm/templates/settings/manage_invite_requests.html:47 msgid "Action" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:37 +#: bookwyrm/templates/settings/manage_invite_requests.html:50 msgid "No requests" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:45 +#: bookwyrm/templates/settings/manage_invite_requests.html:59 +#: bookwyrm/templates/settings/status_filter.html:16 msgid "Accepted" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:47 +#: bookwyrm/templates/settings/manage_invite_requests.html:61 +#: bookwyrm/templates/settings/status_filter.html:12 msgid "Sent" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:49 +#: bookwyrm/templates/settings/manage_invite_requests.html:63 +#: bookwyrm/templates/settings/status_filter.html:8 msgid "Requested" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:57 +#: bookwyrm/templates/settings/manage_invite_requests.html:73 msgid "Send invite" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:59 +#: bookwyrm/templates/settings/manage_invite_requests.html:75 msgid "Re-send invite" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:70 +#: bookwyrm/templates/settings/manage_invite_requests.html:95 msgid "Ignore" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:72 -msgid "Un-gnore" +#: bookwyrm/templates/settings/manage_invite_requests.html:97 +msgid "Un-ignore" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:83 +#: bookwyrm/templates/settings/manage_invite_requests.html:108 msgid "Back to pending requests" msgstr "" -#: bookwyrm/templates/settings/manage_invite_requests.html:85 +#: bookwyrm/templates/settings/manage_invite_requests.html:110 msgid "View ignored requests" msgstr "" @@ -1855,6 +2050,23 @@ msgstr "" msgid "No active invites" msgstr "" +#: bookwyrm/templates/settings/server_blocklist.html:6 +msgid "Import Blocklist" +msgstr "" + +#: bookwyrm/templates/settings/server_blocklist.html:26 +#: bookwyrm/templates/snippets/goal_progress.html:5 +msgid "Success!" +msgstr "" + +#: bookwyrm/templates/settings/server_blocklist.html:30 +msgid "Successfully blocked:" +msgstr "" + +#: bookwyrm/templates/settings/server_blocklist.html:32 +msgid "Failed:" +msgstr "" + #: bookwyrm/templates/settings/site.html:15 msgid "Instance Name:" msgstr "" @@ -1911,138 +2123,96 @@ msgstr "" msgid "Registration closed text:" msgstr "" -#: bookwyrm/templates/settings/user_admin.html:7 -#, python-format -msgid "Users: %(server_name)s" +#: bookwyrm/templates/snippets/book_cover.html:20 +#: bookwyrm/templates/snippets/search_result_text.html:10 +msgid "No cover" msgstr "" -#: bookwyrm/templates/settings/user_admin.html:20 -msgid "Username" -msgstr "" - -#: bookwyrm/templates/settings/user_admin.html:24 -msgid "Date Added" -msgstr "" - -#: bookwyrm/templates/settings/user_admin.html:28 -msgid "Last Active" -msgstr "" - -#: bookwyrm/templates/settings/user_admin.html:36 -msgid "Remote server" -msgstr "" - -#: bookwyrm/templates/settings/user_admin.html:45 -msgid "Active" -msgstr "" - -#: bookwyrm/templates/settings/user_admin.html:45 -msgid "Inactive" -msgstr "" - -#: bookwyrm/templates/settings/user_admin.html:50 -msgid "Not set" -msgstr "" - -#: bookwyrm/templates/snippets/block_button.html:5 -msgid "Block" -msgstr "" - -#: bookwyrm/templates/snippets/block_button.html:10 -msgid "Un-block" -msgstr "" - -#: bookwyrm/templates/snippets/book_titleby.html:3 +#: bookwyrm/templates/snippets/book_titleby.html:4 #, python-format msgid "%(title)s by " msgstr "" #: bookwyrm/templates/snippets/boost_button.html:8 #: bookwyrm/templates/snippets/boost_button.html:9 -#: bookwyrm/templates/snippets/status/status_body.html:51 -#: bookwyrm/templates/snippets/status/status_body.html:52 -msgid "Boost status" +msgid "Boost" msgstr "" +#: bookwyrm/templates/snippets/boost_button.html:15 #: bookwyrm/templates/snippets/boost_button.html:16 -#: bookwyrm/templates/snippets/boost_button.html:17 -msgid "Un-boost status" +msgid "Un-boost" msgstr "" #: bookwyrm/templates/snippets/content_warning_field.html:3 msgid "Spoiler alert:" msgstr "" -#: bookwyrm/templates/snippets/content_warning_field.html:4 +#: bookwyrm/templates/snippets/content_warning_field.html:10 msgid "Spoilers ahead!" msgstr "" -#: bookwyrm/templates/snippets/create_status.html:9 +#: bookwyrm/templates/snippets/create_status.html:17 msgid "Review" msgstr "" -#: bookwyrm/templates/snippets/create_status.html:15 +#: bookwyrm/templates/snippets/create_status.html:39 msgid "Quote" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:18 +#: bookwyrm/templates/snippets/create_status_form.html:20 msgid "Comment:" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:20 +#: bookwyrm/templates/snippets/create_status_form.html:22 msgid "Quote:" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:22 +#: bookwyrm/templates/snippets/create_status_form.html:24 msgid "Review:" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:29 -#: bookwyrm/templates/user/shelf.html:81 -msgid "Rating" +#: bookwyrm/templates/snippets/create_status_form.html:42 +#: bookwyrm/templates/snippets/status/layout.html:30 +#: bookwyrm/templates/snippets/status/layout.html:48 +#: bookwyrm/templates/snippets/status/layout.html:49 +msgid "Reply" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:31 -#: bookwyrm/templates/snippets/rate_action.html:14 -#: bookwyrm/templates/snippets/stars.html:3 -msgid "No rating" -msgstr "" - -#: bookwyrm/templates/snippets/create_status_form.html:64 +#: bookwyrm/templates/snippets/create_status_form.html:67 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:16 msgid "Progress:" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:71 +#: bookwyrm/templates/snippets/create_status_form.html:75 #: bookwyrm/templates/snippets/readthrough_form.html:22 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30 msgid "pages" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:72 +#: bookwyrm/templates/snippets/create_status_form.html:76 #: bookwyrm/templates/snippets/readthrough_form.html:23 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31 msgid "percent" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:77 +#: bookwyrm/templates/snippets/create_status_form.html:82 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:36 #, python-format msgid "of %(pages)s pages" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:89 +#: bookwyrm/templates/snippets/create_status_form.html:97 msgid "Include spoiler alert" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:95 +#: bookwyrm/templates/snippets/create_status_form.html:104 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:19 msgid "Private" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:102 +#: bookwyrm/templates/snippets/create_status_form.html:115 msgid "Post" msgstr "" @@ -2052,24 +2222,25 @@ msgstr "" #: bookwyrm/templates/snippets/delete_readthrough_modal.html:7 #, python-format -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 "" #: bookwyrm/templates/snippets/delete_readthrough_modal.html:15 #: bookwyrm/templates/snippets/follow_request_buttons.html:13 +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:391 msgid "Delete" msgstr "" #: bookwyrm/templates/snippets/fav_button.html:7 -#: bookwyrm/templates/snippets/fav_button.html:8 -#: bookwyrm/templates/snippets/status/status_body.html:55 -#: bookwyrm/templates/snippets/status/status_body.html:56 -msgid "Like status" +#: bookwyrm/templates/snippets/fav_button.html:9 +msgid "Like" msgstr "" #: bookwyrm/templates/snippets/fav_button.html:15 #: bookwyrm/templates/snippets/fav_button.html:16 -msgid "Un-like status" +msgid "Un-like" msgstr "" #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:7 @@ -2080,11 +2251,11 @@ msgstr "" msgid "Hide filters" msgstr "" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:19 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:22 msgid "Apply filters" msgstr "" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:23 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:26 msgid "Clear filters" msgstr "" @@ -2104,6 +2275,11 @@ msgstr "" msgid "Accept" msgstr "" +#: bookwyrm/templates/snippets/form_rate_stars.html:20 +#: bookwyrm/templates/snippets/stars.html:13 +msgid "No rating" +msgstr "" + #: bookwyrm/templates/snippets/generated_status/goal.html:1 #, python-format msgid "set a goal to read %(counter)s book in %(year)s" @@ -2113,15 +2289,19 @@ msgstr[1] "" #: bookwyrm/templates/snippets/generated_status/rating.html:3 #, python-format -msgid "Rated %(title)s: %(display_rating)s star" -msgid_plural "Rated %(title)s: %(display_rating)s stars" +msgid "" +"Rated %(title)s: %(display_rating)s star" +msgid_plural "" +"Rated %(title)s: %(display_rating)s stars" msgstr[0] "" msgstr[1] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgid "" +"Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "" +"Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" msgstr[0] "" msgstr[1] "" @@ -2132,7 +2312,9 @@ msgstr "" #: bookwyrm/templates/snippets/goal_card.html:23 #, python-format -msgid "You can set or change your reading goal any time from your profile page" +msgid "" +"You can set or change your reading goal any time from your profile page" msgstr "" #: bookwyrm/templates/snippets/goal_form.html:9 @@ -2158,10 +2340,6 @@ msgstr "" msgid "Set goal" msgstr "" -#: bookwyrm/templates/snippets/goal_progress.html:5 -msgid "Success!" -msgstr "" - #: bookwyrm/templates/snippets/goal_progress.html:7 #, python-format msgid "%(percent)s%% complete!" @@ -2169,19 +2347,32 @@ msgstr "" #: bookwyrm/templates/snippets/goal_progress.html:10 #, python-format -msgid "You've read %(read_count)s of %(goal_count)s books." +msgid "" +"You've read %(read_count)s of %(goal_count)s books." msgstr "" #: bookwyrm/templates/snippets/goal_progress.html:12 #, python-format -msgid "%(username)s has read %(read_count)s of %(goal_count)s books." +msgid "" +"%(username)s has read %(read_count)s of %(goal_count)s " +"books." msgstr "" -#: bookwyrm/templates/snippets/pagination.html:7 +#: bookwyrm/templates/snippets/page_text.html:4 +#, python-format +msgid "page %(page)s of %(total_pages)s" +msgstr "" + +#: bookwyrm/templates/snippets/page_text.html:6 +#, python-format +msgid "page %(page)s" +msgstr "" + +#: bookwyrm/templates/snippets/pagination.html:12 msgid "Previous" msgstr "" -#: bookwyrm/templates/snippets/pagination.html:15 +#: bookwyrm/templates/snippets/pagination.html:23 msgid "Next" msgstr "" @@ -2214,7 +2405,7 @@ msgstr "" msgid "Leave a rating" msgstr "" -#: bookwyrm/templates/snippets/rate_action.html:29 +#: bookwyrm/templates/snippets/rate_action.html:19 msgid "Rate" msgstr "" @@ -2222,28 +2413,28 @@ msgstr "" msgid "Progress Updates:" msgstr "" -#: bookwyrm/templates/snippets/readthrough.html:12 +#: bookwyrm/templates/snippets/readthrough.html:14 msgid "finished" msgstr "" -#: bookwyrm/templates/snippets/readthrough.html:15 +#: bookwyrm/templates/snippets/readthrough.html:25 msgid "Show all updates" msgstr "" -#: bookwyrm/templates/snippets/readthrough.html:31 +#: bookwyrm/templates/snippets/readthrough.html:41 msgid "Delete this progress update" msgstr "" -#: bookwyrm/templates/snippets/readthrough.html:41 +#: bookwyrm/templates/snippets/readthrough.html:51 msgid "started" msgstr "" -#: bookwyrm/templates/snippets/readthrough.html:47 -#: bookwyrm/templates/snippets/readthrough.html:61 +#: bookwyrm/templates/snippets/readthrough.html:57 +#: bookwyrm/templates/snippets/readthrough.html:71 msgid "Edit read dates" msgstr "" -#: bookwyrm/templates/snippets/readthrough.html:51 +#: bookwyrm/templates/snippets/readthrough.html:61 msgid "Delete these read dates" msgstr "" @@ -2271,29 +2462,25 @@ msgid "Report" msgstr "" #: bookwyrm/templates/snippets/rss_title.html:5 -#: bookwyrm/templates/snippets/status/status_header.html:11 +#: bookwyrm/templates/snippets/status/status_header.html:34 msgid "rated" msgstr "" #: bookwyrm/templates/snippets/rss_title.html:7 -#: bookwyrm/templates/snippets/status/status_header.html:13 +#: bookwyrm/templates/snippets/status/status_header.html:36 msgid "reviewed" msgstr "" #: bookwyrm/templates/snippets/rss_title.html:9 -#: bookwyrm/templates/snippets/status/status_header.html:15 +#: bookwyrm/templates/snippets/status/status_header.html:38 msgid "commented on" msgstr "" #: bookwyrm/templates/snippets/rss_title.html:11 -#: bookwyrm/templates/snippets/status/status_header.html:17 +#: bookwyrm/templates/snippets/status/status_header.html:40 msgid "quoted" msgstr "" -#: bookwyrm/templates/snippets/search_result_text.html:10 -msgid "No cover" -msgstr "" - #: bookwyrm/templates/snippets/search_result_text.html:22 #, python-format msgid "by %(author)s" @@ -2313,7 +2500,7 @@ msgid "Finish \"%(book_title)s\"" msgstr "" #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:5 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:35 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:34 msgid "Update progress" msgstr "" @@ -2334,7 +2521,7 @@ msgstr "" msgid "Want to read" msgstr "" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:48 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:45 #, python-format msgid "Remove from %(name)s" msgstr "" @@ -2349,53 +2536,44 @@ msgstr "" msgid "Want to Read \"%(book_title)s\"" msgstr "" +#: bookwyrm/templates/snippets/status/content_status.html:67 +#: bookwyrm/templates/snippets/trimmed_text.html:14 +msgid "Show more" +msgstr "" + +#: bookwyrm/templates/snippets/status/content_status.html:82 +#: bookwyrm/templates/snippets/trimmed_text.html:29 +msgid "Show less" +msgstr "" + +#: bookwyrm/templates/snippets/status/content_status.html:112 +msgid "Open image in new window" +msgstr "" + +#: bookwyrm/templates/snippets/status/layout.html:22 +#: bookwyrm/templates/snippets/status/status_options.html:17 +msgid "Delete status" +msgstr "" + +#: bookwyrm/templates/snippets/status/layout.html:52 +#: bookwyrm/templates/snippets/status/layout.html:53 +msgid "Boost status" +msgstr "" + +#: bookwyrm/templates/snippets/status/layout.html:56 +#: bookwyrm/templates/snippets/status/layout.html:57 +msgid "Like status" +msgstr "" + #: bookwyrm/templates/snippets/status/status.html:9 msgid "boosted" msgstr "" -#: bookwyrm/templates/snippets/status/status_body.html:27 -#: bookwyrm/templates/snippets/status/status_options.html:18 -msgid "Delete status" -msgstr "" - -#: bookwyrm/templates/snippets/status/status_body.html:34 -#: bookwyrm/templates/snippets/status/status_body.html:47 -#: bookwyrm/templates/snippets/status/status_body.html:48 -msgid "Reply" -msgstr "" - -#: bookwyrm/templates/snippets/status/status_content.html:18 -#: bookwyrm/templates/snippets/trimmed_text.html:15 -msgid "Show more" -msgstr "" - -#: bookwyrm/templates/snippets/status/status_content.html:25 -#: bookwyrm/templates/snippets/trimmed_text.html:25 -msgid "Show less" -msgstr "" - -#: bookwyrm/templates/snippets/status/status_content.html:46 -msgid "Open image in new window" -msgstr "" - -#: bookwyrm/templates/snippets/status/status_header.html:22 +#: bookwyrm/templates/snippets/status/status_header.html:44 #, python-format -msgid "replied to %(username)s's review" -msgstr "" - -#: bookwyrm/templates/snippets/status/status_header.html:24 -#, python-format -msgid "replied to %(username)s's comment" -msgstr "" - -#: bookwyrm/templates/snippets/status/status_header.html:26 -#, python-format -msgid "replied to %(username)s's quote" -msgstr "" - -#: bookwyrm/templates/snippets/status/status_header.html:28 -#, python-format -msgid "replied to %(username)s's status" +msgid "" +"replied to %(username)s's status" msgstr "" #: bookwyrm/templates/snippets/status/status_options.html:7 @@ -2403,6 +2581,16 @@ msgstr "" msgid "More options" msgstr "" +#: bookwyrm/templates/snippets/status/status_options.html:26 +msgid "Delete & re-draft" +msgstr "" + +#: bookwyrm/templates/snippets/status/status_options.html:35 +#: bookwyrm/templates/snippets/user_options.html:13 +#: bookwyrm/templates/user_admin/user_moderation_actions.html:6 +msgid "Send direct message" +msgstr "" + #: bookwyrm/templates/snippets/switch_edition_button.html:5 msgid "Switch to this edition" msgstr "" @@ -2415,19 +2603,6 @@ msgstr "" msgid "Sorted descending" msgstr "" -#: bookwyrm/templates/snippets/tag.html:14 -msgid "Remove tag" -msgstr "" - -#: bookwyrm/templates/snippets/tag.html:18 -msgid "Add tag" -msgstr "" - -#: bookwyrm/templates/tag.html:9 -#, python-format -msgid "Books tagged \"%(tag.name)s\"" -msgstr "" - #: bookwyrm/templates/user/books_header.html:5 #, python-format msgid "%(username)s's books" @@ -2466,10 +2641,6 @@ msgstr "" msgid "%(username)s isn't following any users" msgstr "" -#: bookwyrm/templates/user/lists.html:9 -msgid "Your Lists" -msgstr "" - #: bookwyrm/templates/user/lists.html:11 #, python-format msgid "Lists: %(username)s" @@ -2479,7 +2650,7 @@ msgstr "" msgid "Create list" msgstr "" -#: bookwyrm/templates/user/shelf.html:24 bookwyrm/views/shelf.py:56 +#: bookwyrm/templates/user/shelf.html:24 bookwyrm/views/shelf.py:51 msgid "All books" msgstr "" @@ -2491,23 +2662,23 @@ msgstr "" msgid "Edit shelf" msgstr "" -#: bookwyrm/templates/user/shelf.html:78 +#: bookwyrm/templates/user/shelf.html:77 bookwyrm/templates/user/shelf.html:99 msgid "Shelved" msgstr "" -#: bookwyrm/templates/user/shelf.html:79 +#: bookwyrm/templates/user/shelf.html:78 bookwyrm/templates/user/shelf.html:103 msgid "Started" msgstr "" -#: bookwyrm/templates/user/shelf.html:80 +#: bookwyrm/templates/user/shelf.html:79 bookwyrm/templates/user/shelf.html:106 msgid "Finished" msgstr "" -#: bookwyrm/templates/user/shelf.html:127 +#: bookwyrm/templates/user/shelf.html:132 msgid "This shelf is empty." msgstr "" -#: bookwyrm/templates/user/shelf.html:133 +#: bookwyrm/templates/user/shelf.html:138 msgid "Delete shelf" msgstr "" @@ -2570,6 +2741,73 @@ msgstr[1] "" msgid "%(counter)s following" msgstr "" +#: bookwyrm/templates/user_admin/user.html:11 +msgid "Back to users" +msgstr "" + +#: bookwyrm/templates/user_admin/user_admin.html:7 +#, python-format +msgid "Users: %(server_name)s" +msgstr "" + +#: bookwyrm/templates/user_admin/user_admin.html:22 +#: bookwyrm/templates/user_admin/username_filter.html:5 +msgid "Username" +msgstr "" + +#: bookwyrm/templates/user_admin/user_admin.html:26 +msgid "Date Added" +msgstr "" + +#: bookwyrm/templates/user_admin/user_admin.html:30 +msgid "Last Active" +msgstr "" + +#: bookwyrm/templates/user_admin/user_admin.html:38 +msgid "Remote server" +msgstr "" + +#: bookwyrm/templates/user_admin/user_admin.html:47 +msgid "Active" +msgstr "" + +#: bookwyrm/templates/user_admin/user_admin.html:47 +msgid "Inactive" +msgstr "" + +#: bookwyrm/templates/user_admin/user_admin.html:52 +#: bookwyrm/templates/user_admin/user_info.html:49 +msgid "Not set" +msgstr "" + +#: bookwyrm/templates/user_admin/user_info.html:5 +msgid "User details" +msgstr "" + +#: bookwyrm/templates/user_admin/user_info.html:14 +msgid "View user profile" +msgstr "" + +#: bookwyrm/templates/user_admin/user_info.html:20 +msgid "Instance details" +msgstr "" + +#: bookwyrm/templates/user_admin/user_info.html:46 +msgid "View instance" +msgstr "" + +#: bookwyrm/templates/user_admin/user_moderation_actions.html:11 +msgid "Suspend user" +msgstr "" + +#: bookwyrm/templates/user_admin/user_moderation_actions.html:13 +msgid "Un-suspend user" +msgstr "" + +#: bookwyrm/templates/user_admin/user_moderation_actions.html:21 +msgid "Access level:" +msgstr "" + #: bookwyrm/views/password.py:32 msgid "No user with that email address was found." msgstr "" @@ -2578,3 +2816,1299 @@ msgstr "" #, python-format msgid "A password reset link sent to %s" msgstr "" + +#: venv3/lib/python3.8/site-packages/_pytest/config/argparsing.py:442 +#, python-format +msgid "ambiguous option: %(option)s could match %(matches)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/contrib/messages/apps.py:7 +msgid "Messages" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/contrib/sitemaps/apps.py:7 +msgid "Site Maps" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/contrib/staticfiles/apps.py:9 +msgid "Static Files" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/contrib/syndication/apps.py:7 +msgid "Syndication" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/paginator.py:45 +msgid "That page number is not an integer" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/paginator.py:47 +msgid "That page number is less than 1" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/paginator.py:52 +msgid "That page contains no results" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:32 +msgid "Enter a valid value." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:103 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:659 +msgid "Enter a valid URL." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:155 +msgid "Enter a valid integer." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:166 +msgid "Enter a valid email address." +msgstr "" + +#. Translators: "letters" means latin letters: a-z and A-Z. +#: venv3/lib/python3.8/site-packages/django/core/validators.py:240 +msgid "" +"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:247 +msgid "" +"Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or " +"hyphens." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:256 +#: venv3/lib/python3.8/site-packages/django/core/validators.py:276 +msgid "Enter a valid IPv4 address." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:261 +#: venv3/lib/python3.8/site-packages/django/core/validators.py:277 +msgid "Enter a valid IPv6 address." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:271 +#: venv3/lib/python3.8/site-packages/django/core/validators.py:275 +msgid "Enter a valid IPv4 or IPv6 address." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:305 +msgid "Enter only digits separated by commas." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:311 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:343 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:352 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:362 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d character (it has " +"%(show_value)d)." +msgid_plural "" +"Ensure this value has at least %(limit_value)d characters (it has " +"%(show_value)d)." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:377 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d character (it has " +"%(show_value)d)." +msgid_plural "" +"Ensure this value has at most %(limit_value)d characters (it has " +"%(show_value)d)." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:396 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:291 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:326 +msgid "Enter a number." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:398 +#, python-format +msgid "Ensure that there are no more than %(max)s digit in total." +msgid_plural "Ensure that there are no more than %(max)s digits in total." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:403 +#, python-format +msgid "Ensure that there are no more than %(max)s decimal place." +msgid_plural "Ensure that there are no more than %(max)s decimal places." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:408 +#, python-format +msgid "" +"Ensure that there are no more than %(max)s digit before the decimal point." +msgid_plural "" +"Ensure that there are no more than %(max)s digits before the decimal point." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:470 +#, python-format +msgid "" +"File extension “%(extension)s” is not allowed. Allowed extensions are: " +"%(allowed_extensions)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:522 +msgid "Null characters are not allowed." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/base.py:1181 +#: venv3/lib/python3.8/site-packages/django/forms/models.py:759 +msgid "and" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/base.py:1183 +#, python-format +msgid "%(model_name)s with this %(field_labels)s already exists." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:104 +#, python-format +msgid "Value %(value)r is not a valid choice." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:105 +msgid "This field cannot be null." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:106 +msgid "This field cannot be blank." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:107 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "" + +#. Translators: The 'lookup_type' is one of 'date', 'year' or 'month'. +#. Eg: "Title must be unique for pub_date year" +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:111 +#, python-format +msgid "" +"%(field_label)s must be unique for %(date_field_label)s %(lookup_type)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:130 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:937 +#, python-format +msgid "“%(value)s” value must be either True or False." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:938 +#, python-format +msgid "“%(value)s” value must be either True, False, or None." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:940 +msgid "Boolean (Either True or False)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:981 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1045 +msgid "Comma-separated integers" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1094 +#, python-format +msgid "" +"“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD " +"format." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1096 +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1239 +#, python-format +msgid "" +"“%(value)s” value has the correct format (YYYY-MM-DD) but it is an invalid " +"date." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1099 +msgid "Date (without time)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1237 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[." +"uuuuuu]][TZ] format." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1241 +#, python-format +msgid "" +"“%(value)s” value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]" +"[TZ]) but it is an invalid date/time." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1245 +msgid "Date (with time)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1393 +#, python-format +msgid "“%(value)s” value must be a decimal number." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1395 +msgid "Decimal number" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1534 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[." +"uuuuuu] format." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1537 +msgid "Duration" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1587 +msgid "Email address" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1610 +msgid "File path" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1676 +#, python-format +msgid "“%(value)s” value must be a float." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1678 +msgid "Floating point number" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1716 +#, python-format +msgid "“%(value)s” value must be an integer." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1718 +msgid "Integer" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1801 +msgid "Big (8 byte) integer" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1817 +msgid "IPv4 address" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1848 +msgid "IP address" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1928 +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1929 +#, python-format +msgid "“%(value)s” value must be either None, True or False." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1931 +msgid "Boolean (Either True, False or None)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1966 +msgid "Positive integer" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1979 +msgid "Positive small integer" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1993 +#, python-format +msgid "Slug (up to %(max_length)s)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2025 +msgid "Small integer" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2032 +msgid "Text" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2060 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] " +"format." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2062 +#, python-format +msgid "" +"“%(value)s” value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an " +"invalid time." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2065 +msgid "Time" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2191 +msgid "URL" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2213 +msgid "Raw binary data" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2278 +#, python-format +msgid "“%(value)s” is not a valid UUID." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2280 +msgid "Universally unique identifier" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/files.py:221 +msgid "File" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/files.py:360 +msgid "Image" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:778 +#, python-format +msgid "%(model)s instance with %(field)s %(value)r does not exist." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:780 +msgid "Foreign Key (type determined by related field)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1012 +msgid "One-to-one relationship" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1066 +#, python-format +msgid "%(from)s-%(to)s relationship" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1067 +#, python-format +msgid "%(from)s-%(to)s relationships" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1109 +msgid "Many-to-many relationship" +msgstr "" + +#. Translators: If found as last label character, these punctuation +#. characters will prevent the default label_suffix to be appended to the label +#: venv3/lib/python3.8/site-packages/django/forms/boundfield.py:149 +msgid ":?.!" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:53 +msgid "This field is required." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:246 +msgid "Enter a whole number." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:397 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:1127 +msgid "Enter a valid date." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:421 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:1128 +msgid "Enter a valid time." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:443 +msgid "Enter a valid date/time." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:472 +msgid "Enter a valid duration." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:473 +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:533 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:534 +msgid "No file was submitted." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:535 +msgid "The submitted file is empty." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:537 +#, python-format +msgid "Ensure this filename has at most %(max)d character (it has %(length)d)." +msgid_plural "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:540 +msgid "Please either submit a file or check the clear checkbox, not both." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:601 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:763 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:853 +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1275 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:854 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:969 +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1274 +msgid "Enter a list of values." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:970 +msgid "Enter a complete value." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:1186 +msgid "Enter a valid UUID." +msgstr "" + +#. Translators: This is the default suffix added to form field labels +#: venv3/lib/python3.8/site-packages/django/forms/forms.py:81 +msgid ":" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/forms.py:207 +#, python-format +msgid "(Hidden field %(name)s) %(error)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:93 +msgid "ManagementForm data is missing or has been tampered with" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:345 +#, python-format +msgid "Please submit %d or fewer forms." +msgid_plural "Please submit %d or fewer forms." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:352 +#, python-format +msgid "Please submit %d or more forms." +msgid_plural "Please submit %d or more forms." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:379 +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:386 +msgid "Order" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:754 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:758 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:764 +#, python-format +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:773 +msgid "Please correct the duplicate values below." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1094 +msgid "The inline value did not match the parent instance." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1161 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1277 +#, python-format +msgid "“%(pk)s” is not a valid value." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/utils.py:162 +#, python-format +msgid "" +"%(datetime)s couldn’t be interpreted in time zone %(current_timezone)s; it " +"may be ambiguous or it may not exist." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:395 +msgid "Clear" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:396 +msgid "Currently" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:397 +msgid "Change" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:709 +msgid "Unknown" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:710 +msgid "Yes" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:711 +msgid "No" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:788 +msgid "yes,no,maybe" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:817 +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:834 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:836 +#, python-format +msgid "%s KB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:838 +#, python-format +msgid "%s MB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:840 +#, python-format +msgid "%s GB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:842 +#, python-format +msgid "%s TB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:844 +#, python-format +msgid "%s PB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:62 +msgid "p.m." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:63 +msgid "a.m." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:68 +msgid "PM" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:69 +msgid "AM" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:150 +msgid "midnight" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:152 +msgid "noon" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:295 +msgid "Monday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:296 +msgid "Tuesday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:297 +msgid "Wednesday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:298 +msgid "Thursday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:299 +msgid "Friday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:7 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:300 +msgid "Saturday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:7 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:301 +msgid "Sunday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Mon" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Tue" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Wed" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Thu" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Fri" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:11 +msgid "Sat" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:11 +msgid "Sun" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:281 +msgid "January" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:282 +msgid "February" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:283 +msgid "March" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:284 +msgid "April" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:285 +msgid "May" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:286 +msgid "June" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:287 +msgid "July" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:288 +msgid "August" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:289 +msgid "September" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:290 +msgid "October" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:291 +msgid "November" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:16 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:292 +msgid "December" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "jan" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "feb" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "mar" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "apr" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "may" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "jun" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "jul" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "aug" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "sep" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "oct" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "nov" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "dec" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:23 +msgctxt "abbrev. month" +msgid "Jan." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:24 +msgctxt "abbrev. month" +msgid "Feb." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:25 +msgctxt "abbrev. month" +msgid "March" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:26 +msgctxt "abbrev. month" +msgid "April" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:27 +msgctxt "abbrev. month" +msgid "May" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:28 +msgctxt "abbrev. month" +msgid "June" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:29 +msgctxt "abbrev. month" +msgid "July" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:30 +msgctxt "abbrev. month" +msgid "Aug." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:31 +msgctxt "abbrev. month" +msgid "Sept." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:32 +msgctxt "abbrev. month" +msgid "Oct." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:33 +msgctxt "abbrev. month" +msgid "Nov." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:34 +msgctxt "abbrev. month" +msgid "Dec." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:37 +msgctxt "alt. month" +msgid "January" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:38 +msgctxt "alt. month" +msgid "February" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:39 +msgctxt "alt. month" +msgid "March" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:40 +msgctxt "alt. month" +msgid "April" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:41 +msgctxt "alt. month" +msgid "May" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:42 +msgctxt "alt. month" +msgid "June" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:43 +msgctxt "alt. month" +msgid "July" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:44 +msgctxt "alt. month" +msgid "August" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:45 +msgctxt "alt. month" +msgid "September" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:46 +msgctxt "alt. month" +msgid "October" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:47 +msgctxt "alt. month" +msgid "November" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:48 +msgctxt "alt. month" +msgid "December" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/ipv6.py:8 +msgid "This is not a valid IPv6 address." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/text.py:69 +#, python-format +msgctxt "String to return when truncating text" +msgid "%(truncated_text)s…" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/text.py:235 +msgid "or" +msgstr "" + +#. Translators: This string is used as a separator between list elements +#: venv3/lib/python3.8/site-packages/django/utils/text.py:254 +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:83 +msgid ", " +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:9 +#, python-format +msgid "%d year" +msgid_plural "%d years" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:10 +#, python-format +msgid "%d month" +msgid_plural "%d months" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:11 +#, python-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:12 +#, python-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:13 +#, python-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:14 +#, python-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:72 +msgid "0 minutes" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:110 +msgid "Forbidden" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:111 +msgid "CSRF verification failed. Request aborted." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:115 +msgid "" +"You are seeing this message because this HTTPS site requires a “Referer " +"header” to be sent by your Web browser, but none was sent. This header is " +"required for security reasons, to ensure that your browser is not being " +"hijacked by third parties." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:120 +msgid "" +"If you have configured your browser to disable “Referer” headers, please re-" +"enable them, at least for this site, or for HTTPS connections, or for “same-" +"origin” requests." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:124 +msgid "" +"If you are using the tag or " +"including the “Referrer-Policy: no-referrer” header, please remove them. The " +"CSRF protection requires the “Referer” header to do strict referer checking. " +"If you’re concerned about privacy, use alternatives like for links to third-party sites." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:132 +msgid "" +"You are seeing this message because this site requires a CSRF cookie when " +"submitting forms. This cookie is required for security reasons, to ensure " +"that your browser is not being hijacked by third parties." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:137 +msgid "" +"If you have configured your browser to disable cookies, please re-enable " +"them, at least for this site, or for “same-origin” requests." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:142 +msgid "More information is available with DEBUG=True." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:41 +msgid "No year specified" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:61 +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:111 +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:208 +msgid "Date out of range" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:90 +msgid "No month specified" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:142 +msgid "No day specified" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:188 +msgid "No week specified" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:338 +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:367 +#, python-format +msgid "No %(verbose_name_plural)s available" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:589 +#, python-format +msgid "" +"Future %(verbose_name_plural)s not available because %(class_name)s." +"allow_future is False." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:623 +#, python-format +msgid "Invalid date string “%(datestr)s” given format “%(format)s”" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/detail.py:54 +#, python-format +msgid "No %(verbose_name)s found matching the query" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/list.py:67 +msgid "Page is not “last”, nor can it be converted to an int." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/list.py:72 +#, python-format +msgid "Invalid page (%(page_number)s): %(message)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/list.py:154 +#, python-format +msgid "Empty list and “%(class_name)s.allow_empty” is False." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/static.py:40 +msgid "Directory indexes are not allowed here." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/static.py:42 +#, python-format +msgid "“%(path)s” does not exist" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/static.py:80 +#, python-format +msgid "Index of %(directory)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:7 +msgid "Django: the Web framework for perfectionists with deadlines." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:346 +#, python-format +msgid "" +"View release notes for Django %(version)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:368 +msgid "The install worked successfully! Congratulations!" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:369 +#, python-format +msgid "" +"You are seeing this page because DEBUG=True is in your settings file and you have not configured any " +"URLs." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:384 +msgid "Django Documentation" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:385 +msgid "Topics, references, & how-to’s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:396 +msgid "Tutorial: A Polling App" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:397 +msgid "Get started with Django" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:408 +msgid "Django Community" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:409 +msgid "Connect, get help, or contribute" +msgstr "" + +#: venv3/lib/python3.8/site-packages/kombu/transport/qpid.py:1301 +#, python-format +msgid "Attempting to connect to qpid with SASL mechanism %s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/kombu/transport/qpid.py:1306 +#, python-format +msgid "Connected to qpid with SASL mechanism %s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/kombu/transport/qpid.py:1324 +#, python-format +msgid "Unable to connect to qpid with SASL mechanism %s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:371 +msgid "1 second ago" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:377 +msgid "1 minute ago" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:382 +msgid "1 hour ago" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:385 +#, python-format +msgid "%(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:387 +msgid "yesterday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:387 +#, python-format +msgid "yesterday at %(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:389 +#, python-format +msgid "%(weekday)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:389 +#, python-format +msgid "%(weekday)s at %(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:392 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:445 +#, python-format +msgid "%(month_name)s %(day)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:394 +#, python-format +msgid "%(month_name)s %(day)s at %(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:399 +#, python-format +msgid "%(month_name)s %(day)s, %(year)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:401 +#, python-format +msgid "%(month_name)s %(day)s, %(year)s at %(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:439 +#, python-format +msgid "%(weekday)s, %(month_name)s %(day)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:462 +#, python-format +msgid "%(commas)s and %(last)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:68 +msgctxt "law" +msgid "right" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:69 +msgctxt "good" +msgid "right" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:71 +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:74 +msgctxt "organization" +msgid "club" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:76 +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:77 +msgctxt "stick" +msgid "club" +msgstr "" diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po index 87f443a0..7994ce69 100644 --- a/locale/es/LC_MESSAGES/django.po +++ b/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-25 04:01+0000\n" +"POT-Creation-Date: 2021-04-26 09:56-0700\n" "PO-Revision-Date: 2021-03-19 11:49+0800\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -56,11 +56,11 @@ msgid "Book Title" msgstr "Título" #: bookwyrm/forms.py:295 bookwyrm/templates/snippets/create_status_form.html:31 -#: bookwyrm/templates/user/shelf.html:81 +#: bookwyrm/templates/user/shelf.html:80 bookwyrm/templates/user/shelf.html:110 msgid "Rating" msgstr "Calificación" -#: bookwyrm/forms.py:297 bookwyrm/templates/lists/list.html:72 +#: bookwyrm/forms.py:297 bookwyrm/templates/lists/list.html:82 msgid "Sort By" msgstr "Ordenar por" @@ -222,12 +222,17 @@ msgstr "%(count)s ediciones" #: bookwyrm/templates/book/book.html:143 #, python-format msgid "This edition is on your %(shelf_name)s shelf." -msgstr "Esta edición está en tu %(shelf_name)s estante." +msgstr "" +"Esta edición está en tu %(shelf_name)s estante." #: bookwyrm/templates/book/book.html:149 #, python-format -msgid "A different edition of this book is on your %(shelf_name)s shelf." -msgstr "Una edición diferente de este libro está en tu %(shelf_name)s estante." +msgid "" +"A different edition of this book is on your %(shelf_name)s shelf." +msgstr "" +"Una edición diferente de este libro está en tu " +"%(shelf_name)s estante." #: bookwyrm/templates/book/book.html:158 msgid "Your reading activity" @@ -266,11 +271,35 @@ msgstr "Agregar a lista" #: bookwyrm/templates/book/book.html:238 #: bookwyrm/templates/book/cover_modal.html:31 -#: bookwyrm/templates/lists/list.html:123 +#: bookwyrm/templates/lists/list.html:133 msgid "Add" msgstr "Agregar" -#: bookwyrm/templates/book/book.html:276 +#: bookwyrm/templates/book/book.html:254 +#, fuzzy +#| msgid "Review" +msgid "Reviews" +msgstr "Reseña" + +#: bookwyrm/templates/book/book.html:259 +#, fuzzy +#| msgid "Your shelves" +msgid "Your reviews" +msgstr "Tus estantes" + +#: bookwyrm/templates/book/book.html:265 +#, fuzzy +#| msgid "Your Account" +msgid "Your comments" +msgstr "Tu cuenta" + +#: bookwyrm/templates/book/book.html:271 +#, fuzzy +#| msgid "Your books" +msgid "Your quotes" +msgstr "Tus libros" + +#: bookwyrm/templates/book/book.html:305 msgid "rated it" msgstr "lo calificó con" @@ -420,7 +449,7 @@ msgid "John Doe, Jane Smith" msgstr "Juan Nadie, Natalia Natalia" #: bookwyrm/templates/book/edit_book.html:170 -#: bookwyrm/templates/user/shelf.html:75 +#: bookwyrm/templates/user/shelf.html:74 msgid "Cover" msgstr "Portada:" @@ -544,8 +573,12 @@ msgstr "Haz que tu perfil sea reconocible a otros usarios de BookWyrm." #: bookwyrm/templates/directory/directory.html:26 #, python-format -msgid "You can opt-out at any time in your profile settings." -msgstr "Puedes optar por no en cualquier hora en tus configuraciones de perfil." +msgid "" +"You can opt-out at any time in your profile settings." +msgstr "" +"Puedes optar por no en cualquier hora en tus configuraciones de perfil." #: bookwyrm/templates/directory/directory.html:31 #: bookwyrm/templates/snippets/goal_card.html:22 @@ -711,8 +744,12 @@ msgstr "Hola, " #: bookwyrm/templates/email/html_layout.html:21 #, python-format -msgid "BookWyrm hosted on %(site_name)s" -msgstr "BookWyrm alojado en %(site_name)s" +msgid "" +"BookWyrm hosted on " +"%(site_name)s" +msgstr "" +"BookWyrm alojado en " +"%(site_name)s" #: bookwyrm/templates/email/html_layout.html:23 msgid "Email preference" @@ -730,13 +767,21 @@ msgstr "Únete ahora" #: bookwyrm/templates/email/invite/html_content.html:15 #, python-format -msgid "Learn more about this instance." -msgstr "Aprenda más sobre esta instancia." +msgid "" +"Learn more about this instance." +msgstr "" +"Aprenda más sobre esta " +"instancia." #: bookwyrm/templates/email/invite/text_content.html:4 #, python-format -msgid "You're invited to join %(site_name)s! Click the link below to create an account." -msgstr "Estás invitado a unirte con %(site_name)s! Haz clic en el enlace a continuación para crear una cuenta." +msgid "" +"You're invited to join %(site_name)s! Click the link below to create an " +"account." +msgstr "" +"Estás invitado a unirte con %(site_name)s! Haz clic en el enlace a " +"continuación para crear una cuenta." #: bookwyrm/templates/email/invite/text_content.html:8 msgid "Learn more about this instance:" @@ -745,8 +790,13 @@ msgstr "Aprende más sobre esta intancia:" #: bookwyrm/templates/email/password_reset/html_content.html:6 #: bookwyrm/templates/email/password_reset/text_content.html:4 #, python-format -msgid "You requested to reset your %(site_name)s password. Click the link below to set a new password and log in to your account." -msgstr "Tú solicitaste reestablecer tu %(site_name)s contraseña. Haz clic en el enlace a continuación para establecer una nueva contraseña e ingresar a tu cuenta." +msgid "" +"You requested to reset your %(site_name)s password. Click the link below to " +"set a new password and log in to your account." +msgstr "" +"Tú solicitaste reestablecer tu %(site_name)s contraseña. Haz clic en el " +"enlace a continuación para establecer una nueva contraseña e ingresar a tu " +"cuenta." #: bookwyrm/templates/email/password_reset/html_content.html:9 #: bookwyrm/templates/password_reset.html:4 @@ -758,8 +808,10 @@ msgstr "Restablecer contraseña" #: bookwyrm/templates/email/password_reset/html_content.html:13 #: bookwyrm/templates/email/password_reset/text_content.html:8 -msgid "If you didn't request to reset your password, you can ignore this email." -msgstr "Si no solicitaste reestablecer tu contraseña, puedes ignorar este mensaje." +msgid "" +"If you didn't request to reset your password, you can ignore this email." +msgstr "" +"Si no solicitaste reestablecer tu contraseña, puedes ignorar este mensaje." #: bookwyrm/templates/email/password_reset/subject.html:2 #, python-format @@ -812,10 +864,12 @@ msgstr "Federalizado" #: bookwyrm/templates/feed/feed.html:33 #, python-format msgid "load 0 unread status(es)" -msgstr "cargar 0 status(es) no leídos" +msgstr "" +"cargar 0 status(es) no leídos" #: bookwyrm/templates/feed/feed.html:48 -msgid "There aren't any activities right now! Try following a user to get started" +msgid "" +"There aren't any activities right now! Try following a user to get started" msgstr "¡No hay actividad ahora mismo! Sigue a otro usuario para empezar" #: bookwyrm/templates/feed/feed.html:56 @@ -834,7 +888,8 @@ msgid "Your books" msgstr "Tus libros" #: bookwyrm/templates/feed/feed_layout.html:13 -msgid "There are no books here right now! Try searching for a book to get started" +msgid "" +"There are no books here right now! Try searching for a book to get started" msgstr "¡No hay ningún libro aqui ahorita! Busca a un libro para empezar" #: bookwyrm/templates/feed/feed_layout.html:24 @@ -883,7 +938,7 @@ msgid "What are you reading?" msgstr "¿Qué estás leyendo?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/lists/list.html:91 +#: bookwyrm/templates/lists/list.html:101 msgid "Search for a book" msgstr "Buscar libros" @@ -904,7 +959,7 @@ msgstr "Puedes agregar libros cuando comiences a usar %(site_name)s." #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/layout.html:38 bookwyrm/templates/layout.html:39 -#: bookwyrm/templates/lists/list.html:95 +#: bookwyrm/templates/lists/list.html:105 msgid "Search" msgstr "Buscar" @@ -918,7 +973,7 @@ msgid "Popular on %(site_name)s" msgstr "Popular en %(site_name)s" #: bookwyrm/templates/get_started/books.html:51 -#: bookwyrm/templates/lists/list.html:108 +#: bookwyrm/templates/lists/list.html:118 msgid "No books found" msgstr "No se encontró ningún libro" @@ -987,8 +1042,12 @@ msgid "Show this account in suggested users:" msgstr "Mostrar esta cuenta en los usuarios sugeridos:" #: bookwyrm/templates/get_started/profile.html:52 -msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users." -msgstr "Tu cuenta se aparecerá en el directorio, y puede ser recomendado a otros usuarios de BookWyrm." +msgid "" +"Your account will show up in the directory, and may be recommended to other " +"BookWyrm users." +msgstr "" +"Tu cuenta se aparecerá en el directorio, y puede ser recomendado a otros " +"usuarios de BookWyrm." #: bookwyrm/templates/get_started/users.html:11 msgid "Search for a user" @@ -1012,8 +1071,12 @@ msgstr "Editar meta" #: bookwyrm/templates/goal.html:30 #: bookwyrm/templates/snippets/goal_card.html:13 #, python-format -msgid "Set a goal for how many books you'll finish reading in %(year)s, and track your progress throughout the year." -msgstr "Establece una meta para cuantos libros leerás en %(year)s, y seguir tu progreso durante el año." +msgid "" +"Set a goal for how many books you'll finish reading in %(year)s, and track " +"your progress throughout the year." +msgstr "" +"Establece una meta para cuantos libros leerás en %(year)s, y seguir tu " +"progreso durante el año." #: bookwyrm/templates/goal.html:39 #, python-format @@ -1095,8 +1158,12 @@ msgstr "No se pudo cargar" #: bookwyrm/templates/import_status.html:44 #, python-format -msgid "Jump to the bottom of the list to select the %(failed_count)s items which failed to import." -msgstr "Saltar al final de la lista para seleccionar los %(failed_count)s artículos que no se pudieron importar." +msgid "" +"Jump to the bottom of the list to select the %(failed_count)s items which " +"failed to import." +msgstr "" +"Saltar al final de la lista para seleccionar los %(failed_count)s artículos " +"que no se pudieron importar." #: bookwyrm/templates/import_status.html:79 msgid "Select all" @@ -1117,12 +1184,12 @@ msgstr "Libro" #: bookwyrm/templates/import_status.html:115 #: bookwyrm/templates/snippets/create_status_form.html:10 -#: bookwyrm/templates/user/shelf.html:76 +#: bookwyrm/templates/user/shelf.html:75 bookwyrm/templates/user/shelf.html:93 msgid "Title" msgstr "Título" #: bookwyrm/templates/import_status.html:118 -#: bookwyrm/templates/user/shelf.html:77 +#: bookwyrm/templates/user/shelf.html:76 bookwyrm/templates/user/shelf.html:96 msgid "Author" msgstr "Autor/Autora" @@ -1230,12 +1297,20 @@ msgstr "Contactarse con administradores del sitio" #: bookwyrm/templates/layout.html:206 #, python-format -msgid "Support %(site_name)s on %(support_title)s" -msgstr "Apoyar %(site_name)s en %(support_title)s" +msgid "" +"Support %(site_name)s on " +"%(support_title)s" +msgstr "" +"Apoyar %(site_name)s en " +"%(support_title)s" #: bookwyrm/templates/layout.html:210 -msgid "BookWyrm is open source software. You can contribute or report issues on GitHub." -msgstr "BookWyrm es software de código abierto. Puedes contribuir o reportar problemas en GitHub." +msgid "" +"BookWyrm is open source software. You can contribute or report issues on GitHub." +msgstr "" +"BookWyrm es software de código abierto. Puedes contribuir o reportar " +"problemas en GitHub." #: bookwyrm/templates/lists/create_form.html:5 #: bookwyrm/templates/lists/lists.html:20 @@ -1310,58 +1385,69 @@ msgstr "Abierto" msgid "Anyone can add books to this list" msgstr "Cualquer usuario puede agregar libros a esta lista" -#: bookwyrm/templates/lists/list.html:17 +#: bookwyrm/templates/lists/list.html:19 +msgid "You successfully suggested a book for this list!" +msgstr "" + +#: bookwyrm/templates/lists/list.html:21 +#, fuzzy +#| msgid "Anyone can add books to this list" +msgid "You successfully added a book to this list!" +msgstr "Cualquer usuario puede agregar libros a esta lista" + +#: bookwyrm/templates/lists/list.html:27 msgid "This list is currently empty" msgstr "Esta lista está vacia" -#: bookwyrm/templates/lists/list.html:36 +#: bookwyrm/templates/lists/list.html:46 #, python-format msgid "Added by %(username)s" msgstr "Agregado por %(username)s" -#: bookwyrm/templates/lists/list.html:48 +#: bookwyrm/templates/lists/list.html:58 msgid "Set" msgstr "Establecido" -#: bookwyrm/templates/lists/list.html:51 +#: bookwyrm/templates/lists/list.html:61 msgid "List position" msgstr "Posición" -#: bookwyrm/templates/lists/list.html:57 +#: bookwyrm/templates/lists/list.html:67 #: bookwyrm/templates/snippets/shelf_selector.html:26 msgid "Remove" msgstr "Quitar" -#: bookwyrm/templates/lists/list.html:70 bookwyrm/templates/lists/list.html:82 +#: bookwyrm/templates/lists/list.html:80 bookwyrm/templates/lists/list.html:92 msgid "Sort List" msgstr "Ordena la lista" -#: bookwyrm/templates/lists/list.html:76 +#: bookwyrm/templates/lists/list.html:86 msgid "Direction" msgstr "Dirección" -#: bookwyrm/templates/lists/list.html:87 +#: bookwyrm/templates/lists/list.html:97 msgid "Add Books" msgstr "Agregar libros" -#: bookwyrm/templates/lists/list.html:87 +#: bookwyrm/templates/lists/list.html:97 msgid "Suggest Books" msgstr "Sugerir libros" -#: bookwyrm/templates/lists/list.html:96 +#: bookwyrm/templates/lists/list.html:106 msgid "search" msgstr "buscar" -#: bookwyrm/templates/lists/list.html:102 +#: bookwyrm/templates/lists/list.html:112 msgid "Clear search" msgstr "Borrar búsqueda" -#: bookwyrm/templates/lists/list.html:107 +#: bookwyrm/templates/lists/list.html:117 #, python-format msgid "No books found matching the query \"%(query)s\"" -msgstr "No se encontró ningún libro correspondiente a la búsqueda: \"%(query)s\"" +msgstr "" +"No se encontró ningún libro correspondiente a la búsqueda: \"%(query)s\"" -#: bookwyrm/templates/lists/list.html:123 +#: bookwyrm/templates/lists/list.html:133 msgid "Suggest" msgstr "Sugerir" @@ -1427,7 +1513,8 @@ msgstr "Reportar @%(username)s" #: bookwyrm/templates/moderation/report_modal.html:23 #, python-format msgid "This report will be sent to %(site_name)s's moderators for review." -msgstr "Este informe se enviará a los moderadores de %(site_name)s para la revisión." +msgstr "" +"Este informe se enviará a los moderadores de %(site_name)s para la revisión." #: bookwyrm/templates/moderation/report_modal.html:24 msgid "More info about this report:" @@ -1480,18 +1567,29 @@ msgstr "Borrar notificaciones" #: bookwyrm/templates/notifications.html:53 #, python-format -msgid "favorited your review of %(book_title)s" -msgstr "le gustó tu reseña de %(book_title)s" +msgid "" +"favorited your review of %(book_title)s" +msgstr "" +"le gustó tu reseña de %(book_title)s" #: bookwyrm/templates/notifications.html:55 #, python-format -msgid "favorited your comment on %(book_title)s" -msgstr "le gustó tu comentario en %(book_title)s" +msgid "" +"favorited your comment on %(book_title)s" +msgstr "" +"le gustó tu comentario en %(book_title)s" #: bookwyrm/templates/notifications.html:57 #, python-format -msgid "favorited your quote from %(book_title)s" -msgstr "le gustó tu cita de %(book_title)s" +msgid "" +"favorited your quote from %(book_title)s" +msgstr "" +"le gustó tu cita de %(book_title)s" #: bookwyrm/templates/notifications.html:59 #, python-format @@ -1500,18 +1598,30 @@ msgstr "le gustó tu status" #: bookwyrm/templates/notifications.html:64 #, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "te mencionó en una reseña de %(book_title)s" +msgid "" +"mentioned you in a review of " +"%(book_title)s" +msgstr "" +"te mencionó en una reseña de " +"%(book_title)s" #: bookwyrm/templates/notifications.html:66 #, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "te mencionó en un comentario de %(book_title)s" +msgid "" +"mentioned you in a comment on " +"%(book_title)s" +msgstr "" +"te mencionó en un comentario de " +"%(book_title)s" #: bookwyrm/templates/notifications.html:68 #, python-format -msgid "mentioned you in a quote from %(book_title)s" -msgstr "te mencionó en una cita de %(book_title)s" +msgid "" +"mentioned you in a quote from " +"%(book_title)s" +msgstr "" +"te mencionó en una cita de %(book_title)s" #: bookwyrm/templates/notifications.html:70 #, python-format @@ -1520,23 +1630,39 @@ msgstr "te mencionó en un status" #: bookwyrm/templates/notifications.html:75 #, python-format -msgid "replied to your review of %(book_title)s" -msgstr "respondió a tu reseña de %(book_title)s" +msgid "" +"replied to your review of %(book_title)s" +msgstr "" +"respondió a tu reseña de %(book_title)s" #: bookwyrm/templates/notifications.html:77 #, python-format -msgid "replied to your comment on %(book_title)s" -msgstr "respondió a tu comentario en %(book_title)s" +msgid "" +"replied to your comment on %(book_title)s" +msgstr "" +"respondió a tu comentario en %(book_title)s" #: bookwyrm/templates/notifications.html:79 #, python-format -msgid "replied to your quote from %(book_title)s" -msgstr "respondió a tu cita de %(book_title)s" +msgid "" +"replied to your quote from %(book_title)s" +msgstr "" +"respondió a tu cita de %(book_title)s" #: bookwyrm/templates/notifications.html:81 #, python-format -msgid "replied to your status" -msgstr "respondió a tu status" +msgid "" +"replied to your status" +msgstr "" +"respondió a tu status" #: bookwyrm/templates/notifications.html:85 msgid "followed you" @@ -1548,18 +1674,29 @@ msgstr "te quiere seguir" #: bookwyrm/templates/notifications.html:94 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "respaldó tu reseña de %(book_title)s" +msgid "" +"boosted your review of %(book_title)s" +msgstr "" +"respaldó tu reseña de %(book_title)s" #: bookwyrm/templates/notifications.html:96 #, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "respaldó tu comentario en%(book_title)s" +msgid "" +"boosted your comment on%(book_title)s" +msgstr "" +"respaldó tu comentario en%(book_title)s" #: bookwyrm/templates/notifications.html:98 #, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "respaldó tucita de %(book_title)s" +msgid "" +"boosted your quote from %(book_title)s" +msgstr "" +"respaldó tucita de %(book_title)s" #: bookwyrm/templates/notifications.html:100 #, python-format @@ -1568,13 +1705,21 @@ msgstr "respaldó tu status" #: bookwyrm/templates/notifications.html:104 #, python-format -msgid " added %(book_title)s to your list \"%(list_name)s\"" -msgstr " agregó %(book_title)s a tu lista \"%(list_name)s\"" +msgid "" +" added %(book_title)s to your list " +"\"%(list_name)s\"" +msgstr "" +" agregó %(book_title)s a tu lista " +"\"%(list_name)s\"" #: bookwyrm/templates/notifications.html:106 #, python-format -msgid " suggested adding %(book_title)s to your list \"%(list_name)s\"" -msgstr " sugirió agregar %(book_title)s a tu lista \"%(list_name)s\"" +msgid "" +" suggested adding %(book_title)s to " +"your list \"%(list_name)s\"" +msgstr "" +" sugirió agregar %(book_title)s a tu " +"lista \"%(list_name)s\"" #: bookwyrm/templates/notifications.html:110 #, python-format @@ -1597,7 +1742,9 @@ msgstr "Confirmar contraseña:" #: bookwyrm/templates/password_reset_request.html:14 msgid "A link to reset your password will be sent to your email address" -msgstr "Un enlace para restablecer tu contraseña se enviará a tu dirección de correo electrónico" +msgstr "" +"Un enlace para restablecer tu contraseña se enviará a tu dirección de correo " +"electrónico" #: bookwyrm/templates/password_reset_request.html:28 msgid "Reset password" @@ -1635,8 +1782,12 @@ msgstr "Mostrar meta de lectura en el feed:" #: bookwyrm/templates/preferences/edit_user.html:62 #, python-format -msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users." -msgstr "Tu cuenta se aparecerá en el directorio, y puede ser recomendado a otros usuarios de BookWyrm." +msgid "" +"Your account will show up in the directory, and may " +"be recommended to other BookWyrm users." +msgstr "" +"Tu cuenta se aparecerá en el directorio, y puede " +"ser recomendado a otros usuarios de BookWyrm." #: bookwyrm/templates/preferences/edit_user.html:65 msgid "Preferred Timezone: " @@ -2054,14 +2205,16 @@ msgstr "%(title)s por " #: bookwyrm/templates/snippets/boost_button.html:8 #: bookwyrm/templates/snippets/boost_button.html:9 -#: bookwyrm/templates/snippets/status/layout.html:47 -#: bookwyrm/templates/snippets/status/layout.html:48 -msgid "Boost status" -msgstr "Status de respaldo" +#, fuzzy +#| msgid "boosted" +msgid "Boost" +msgstr "respaldó" +#: bookwyrm/templates/snippets/boost_button.html:15 #: bookwyrm/templates/snippets/boost_button.html:16 -#: bookwyrm/templates/snippets/boost_button.html:17 -msgid "Un-boost status" +#, fuzzy +#| msgid "Un-boost status" +msgid "Un-boost" msgstr "Status de des-respaldo" #: bookwyrm/templates/snippets/content_warning_field.html:3 @@ -2094,8 +2247,8 @@ msgstr "Reseña:" #: bookwyrm/templates/snippets/create_status_form.html:42 #: bookwyrm/templates/snippets/status/layout.html:30 -#: bookwyrm/templates/snippets/status/layout.html:43 -#: bookwyrm/templates/snippets/status/layout.html:44 +#: bookwyrm/templates/snippets/status/layout.html:48 +#: bookwyrm/templates/snippets/status/layout.html:49 msgid "Reply" msgstr "Respuesta" @@ -2143,24 +2296,29 @@ msgstr "¿Eliminar estas fechas de lectura?" #: bookwyrm/templates/snippets/delete_readthrough_modal.html:7 #, python-format -msgid "You are deleting this readthrough and its %(count)s associated progress updates." -msgstr "Estás eliminando esta lectura y sus %(count)s actualizaciones de progreso asociados." +msgid "" +"You are deleting this readthrough and its %(count)s associated progress " +"updates." +msgstr "" +"Estás eliminando esta lectura y sus %(count)s actualizaciones de progreso " +"asociados." #: bookwyrm/templates/snippets/delete_readthrough_modal.html:15 #: bookwyrm/templates/snippets/follow_request_buttons.html:13 +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:391 msgid "Delete" msgstr "Eliminar" #: bookwyrm/templates/snippets/fav_button.html:7 -#: bookwyrm/templates/snippets/fav_button.html:8 -#: bookwyrm/templates/snippets/status/layout.html:51 -#: bookwyrm/templates/snippets/status/layout.html:52 -msgid "Like status" -msgstr "Me gusta status" +#: bookwyrm/templates/snippets/fav_button.html:9 +msgid "Like" +msgstr "" #: bookwyrm/templates/snippets/fav_button.html:15 #: bookwyrm/templates/snippets/fav_button.html:16 -msgid "Un-like status" +#, fuzzy +#| msgid "Un-like status" +msgid "Un-like" msgstr "Quitar me gusta de status" #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:7 @@ -2200,14 +2358,6 @@ msgstr "Aceptar" msgid "No rating" msgstr "No calificación" -#: bookwyrm/templates/snippets/form_rate_stars.html:45 -#: bookwyrm/templates/snippets/stars.html:7 -#, python-format -msgid "%(rating)s star" -msgid_plural "%(rating)s stars" -msgstr[0] "%(rating)s estrella" -msgstr[1] "%(rating)s estrellas" - #: bookwyrm/templates/snippets/generated_status/goal.html:1 #, python-format msgid "set a goal to read %(counter)s book in %(year)s" @@ -2217,17 +2367,27 @@ msgstr[1] "estableció una meta de leer %(counter)s libros en %(year)s" #: bookwyrm/templates/snippets/generated_status/rating.html:3 #, python-format -msgid "Rated %(title)s: %(display_rating)s star" -msgid_plural "Rated %(title)s: %(display_rating)s stars" -msgstr[0] "Reseño %(title)s: %(display_rating)s estrella" -msgstr[1] "Reseño %(title)s: %(display_rating)s estrellas" +msgid "" +"Rated %(title)s: %(display_rating)s star" +msgid_plural "" +"Rated %(title)s: %(display_rating)s stars" +msgstr[0] "" +"Reseño %(title)s: %(display_rating)s " +"estrella" +msgstr[1] "" +"Reseño %(title)s: %(display_rating)s " +"estrellas" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Reseña de \"%(book_title)s\" (%(display_rating)s estrella): %(review_title)s" -msgstr[1] "Reseña de \"%(book_title)s\" (%(display_rating)s estrellas): %(review_title)s" +msgid "" +"Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "" +"Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "" +"Reseña de \"%(book_title)s\" (%(display_rating)s estrella): %(review_title)s" +msgstr[1] "" +"Reseña de \"%(book_title)s\" (%(display_rating)s estrellas): %(review_title)s" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8 #, python-format @@ -2236,8 +2396,12 @@ msgstr "Reseña de \"%(book_title)s\": %(review_title)s" #: bookwyrm/templates/snippets/goal_card.html:23 #, python-format -msgid "You can set or change your reading goal any time from your profile page" -msgstr "Puedes establecer o cambiar tu meta de lectura en cualquier momento que desees desde tu perfil" +msgid "" +"You can set or change your reading goal any time from your profile page" +msgstr "" +"Puedes establecer o cambiar tu meta de lectura en cualquier momento que " +"desees desde tu perfil" #: bookwyrm/templates/snippets/goal_form.html:9 msgid "Reading goal:" @@ -2269,13 +2433,19 @@ msgstr "%(percent)s%% terminado!" #: bookwyrm/templates/snippets/goal_progress.html:10 #, python-format -msgid "You've read %(read_count)s of %(goal_count)s books." -msgstr "Has leído %(read_count)s de %(goal_count)s libros." +msgid "" +"You've read %(read_count)s of %(goal_count)s books." +msgstr "" +"Has leído %(read_count)s de %(goal_count)s libros." #: bookwyrm/templates/snippets/goal_progress.html:12 #, python-format -msgid "%(username)s has read %(read_count)s of %(goal_count)s books." -msgstr "%(username)s ha leído %(read_count)s de %(goal_count)s libros." +msgid "" +"%(username)s has read %(read_count)s of %(goal_count)s " +"books." +msgstr "" +"%(username)s ha leído %(read_count)s de %(goal_count)s " +"libros." #: bookwyrm/templates/snippets/page_text.html:4 #, python-format @@ -2283,6 +2453,8 @@ msgid "page %(page)s of %(total_pages)s" msgstr "página %(page)s de %(total_pages)s" #: bookwyrm/templates/snippets/page_text.html:6 +#, fuzzy, python-format +#| msgid "page %(page)s" msgid "page %(page)s" msgstr "página %(pages)s" @@ -2380,22 +2552,22 @@ msgid "Report" msgstr "Reportar" #: bookwyrm/templates/snippets/rss_title.html:5 -#: bookwyrm/templates/snippets/status/status_header.html:21 +#: bookwyrm/templates/snippets/status/status_header.html:34 msgid "rated" msgstr "calificó" #: bookwyrm/templates/snippets/rss_title.html:7 -#: bookwyrm/templates/snippets/status/status_header.html:23 +#: bookwyrm/templates/snippets/status/status_header.html:36 msgid "reviewed" msgstr "reseñó" #: bookwyrm/templates/snippets/rss_title.html:9 -#: bookwyrm/templates/snippets/status/status_header.html:25 +#: bookwyrm/templates/snippets/status/status_header.html:38 msgid "commented on" msgstr "comentó en" #: bookwyrm/templates/snippets/rss_title.html:11 -#: bookwyrm/templates/snippets/status/status_header.html:27 +#: bookwyrm/templates/snippets/status/status_header.html:40 msgid "quoted" msgstr "citó" @@ -2454,62 +2626,58 @@ msgstr "Empezar \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Quiero leer \"%(book_title)s\"" -#: bookwyrm/templates/snippets/status/content_status.html:60 -#: bookwyrm/templates/snippets/status/status_content.html:50 +#: bookwyrm/templates/snippets/status/content_status.html:67 #: bookwyrm/templates/snippets/trimmed_text.html:14 msgid "Show more" msgstr "Mostrar más" -#: bookwyrm/templates/snippets/status/content_status.html:75 -#: bookwyrm/templates/snippets/status/status_content.html:65 +#: bookwyrm/templates/snippets/status/content_status.html:82 #: bookwyrm/templates/snippets/trimmed_text.html:29 msgid "Show less" msgstr "Mostrar menos" -#: bookwyrm/templates/snippets/status/content_status.html:105 -#: bookwyrm/templates/snippets/status/status_content.html:95 +#: bookwyrm/templates/snippets/status/content_status.html:112 msgid "Open image in new window" msgstr "Abrir imagen en una nueva ventana" #: bookwyrm/templates/snippets/status/layout.html:22 -#: bookwyrm/templates/snippets/status/status_options.html:18 +#: bookwyrm/templates/snippets/status/status_options.html:17 msgid "Delete status" msgstr "Eliminar status" +#: bookwyrm/templates/snippets/status/layout.html:52 +#: bookwyrm/templates/snippets/status/layout.html:53 +msgid "Boost status" +msgstr "Status de respaldo" + +#: bookwyrm/templates/snippets/status/layout.html:56 +#: bookwyrm/templates/snippets/status/layout.html:57 +msgid "Like status" +msgstr "Me gusta status" + #: bookwyrm/templates/snippets/status/status.html:9 msgid "boosted" msgstr "respaldó" -#: bookwyrm/templates/snippets/status/status_header.html:32 +#: bookwyrm/templates/snippets/status/status_header.html:44 #, python-format -msgid "replied to %(username)s's review" -msgstr "respondió a la reseña de %(username)s " - -#: bookwyrm/templates/snippets/status/status_header.html:34 -#, python-format -msgid "replied to %(username)s's comment" -msgstr "respondió al comentario de %(username)s " - -#: bookwyrm/templates/snippets/status/status_header.html:36 -#, python-format -msgid "replied to %(username)s's quote" -msgstr "respondió a la cita de %(username)s " - -#: bookwyrm/templates/snippets/status/status_header.html:38 -#, python-format -msgid "replied to %(username)s's status" -msgstr "respondió al status de %(username)s " +msgid "" +"replied to %(username)s's status" +msgstr "" +"respondió al status de %(username)s " #: bookwyrm/templates/snippets/status/status_options.html:7 #: bookwyrm/templates/snippets/user_options.html:7 msgid "More options" msgstr "Más opciones" -#: bookwyrm/templates/snippets/status/status_options.html:27 +#: bookwyrm/templates/snippets/status/status_options.html:26 msgid "Delete & re-draft" msgstr "Eliminar y recomponer" -#: bookwyrm/templates/snippets/status/status_options.html:36 +#: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/user_options.html:13 #: bookwyrm/templates/user_admin/user_moderation_actions.html:6 msgid "Send direct message" @@ -2586,23 +2754,23 @@ msgstr "Crear estante" msgid "Edit shelf" msgstr "Editar estante" -#: bookwyrm/templates/user/shelf.html:78 +#: bookwyrm/templates/user/shelf.html:77 bookwyrm/templates/user/shelf.html:99 msgid "Shelved" msgstr "Archivado" -#: bookwyrm/templates/user/shelf.html:79 +#: bookwyrm/templates/user/shelf.html:78 bookwyrm/templates/user/shelf.html:103 msgid "Started" msgstr "Empezado" -#: bookwyrm/templates/user/shelf.html:80 +#: bookwyrm/templates/user/shelf.html:79 bookwyrm/templates/user/shelf.html:106 msgid "Finished" msgstr "Terminado" -#: bookwyrm/templates/user/shelf.html:129 +#: bookwyrm/templates/user/shelf.html:132 msgid "This shelf is empty." msgstr "Este estante está vacio." -#: bookwyrm/templates/user/shelf.html:135 +#: bookwyrm/templates/user/shelf.html:138 msgid "Delete shelf" msgstr "Eliminar estante" @@ -2734,13 +2902,1433 @@ msgstr "Nivel de acceso:" #: bookwyrm/views/password.py:32 msgid "No user with that email address was found." -msgstr "No se pudo encontrar un usuario con esa dirección de correo electrónico." +msgstr "" +"No se pudo encontrar un usuario con esa dirección de correo electrónico." #: bookwyrm/views/password.py:41 #, python-format msgid "A password reset link sent to %s" msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" +#: venv3/lib/python3.8/site-packages/_pytest/config/argparsing.py:442 +#, python-format +msgid "ambiguous option: %(option)s could match %(matches)s" +msgstr "opción ambiguo: %(option)s pudiera coincidir con %(matches)s" + +#: venv3/lib/python3.8/site-packages/django/contrib/messages/apps.py:7 +msgid "Messages" +msgstr "Mensajes" + +#: venv3/lib/python3.8/site-packages/django/contrib/sitemaps/apps.py:7 +msgid "Site Maps" +msgstr "Mapas de sitio" + +#: venv3/lib/python3.8/site-packages/django/contrib/staticfiles/apps.py:9 +msgid "Static Files" +msgstr "Archivos estáticos" + +#: venv3/lib/python3.8/site-packages/django/contrib/syndication/apps.py:7 +msgid "Syndication" +msgstr "Sindicación" + +#: venv3/lib/python3.8/site-packages/django/core/paginator.py:45 +msgid "That page number is not an integer" +msgstr "Ese numero de pagina no es un entero" + +#: venv3/lib/python3.8/site-packages/django/core/paginator.py:47 +msgid "That page number is less than 1" +msgstr "Ese numero de pagina es menos que uno" + +#: venv3/lib/python3.8/site-packages/django/core/paginator.py:52 +msgid "That page contains no results" +msgstr "Esa pagina no contiene resultados" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:32 +msgid "Enter a valid value." +msgstr "Ingrese un valor válido." + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:103 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:659 +msgid "Enter a valid URL." +msgstr "Ingrese una URL válida." + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:155 +msgid "Enter a valid integer." +msgstr "Ingrese un entero válido." + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:166 +msgid "Enter a valid email address." +msgstr "Ingrese una dirección de correo electrónico válida." + +#. Translators: "letters" means latin letters: a-z and A-Z. +#: venv3/lib/python3.8/site-packages/django/core/validators.py:240 +msgid "" +"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Ingrese un “slug” válido que consiste de letras, numeros, guiones bajos, o " +"guiones" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:247 +msgid "" +"Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or " +"hyphens." +msgstr "" +"Ingrese un “slug” válido que consiste de letras Unicode, numeros, guiones " +"bajos, o guiones" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:256 +#: venv3/lib/python3.8/site-packages/django/core/validators.py:276 +msgid "Enter a valid IPv4 address." +msgstr "Ingrese una dirección IPv4 válida." + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:261 +#: venv3/lib/python3.8/site-packages/django/core/validators.py:277 +msgid "Enter a valid IPv6 address." +msgstr "Ingrese una dirección IPv6 válida." + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:271 +#: venv3/lib/python3.8/site-packages/django/core/validators.py:275 +msgid "Enter a valid IPv4 or IPv6 address." +msgstr "Ingrese una dirección IPv4 o IPv6 válida." + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:305 +msgid "Enter only digits separated by commas." +msgstr "Ingrese solo digitos separados por comas." + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:311 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "Asegura que este valor es %(limit_value)s (es %(show_value)s)." + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:343 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Asegura que este valor es menor que o iguala a %(limit_value)s." + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:352 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Asegura que este valor es más que o que iguala a %(limit_value)s." + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:362 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d character (it has " +"%(show_value)d)." +msgid_plural "" +"Ensure this value has at least %(limit_value)d characters (it has " +"%(show_value)d)." +msgstr[0] "" +"Verifica que este valor tiene por lo menos %(limit_value)d carácter. (Tiene " +"%(show_value)d).)" +msgstr[1] "" +"Verifica que este valor tiene por lo menos %(limit_value)d caracteres. " +"(Tiene %(show_value)d).)" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:377 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d character (it has " +"%(show_value)d)." +msgid_plural "" +"Ensure this value has at most %(limit_value)d characters (it has " +"%(show_value)d)." +msgstr[0] "" +"Verifica que este valor tiene a lo sumo %(limit_value)d carácter. (Tiene " +"%(show_value)d).)" +msgstr[1] "" +"Verifica que este valor tiene a lo sumo %(limit_value)d caracteres. (Tiene " +"%(show_value)d).)" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:396 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:291 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:326 +msgid "Enter a number." +msgstr "Ingrese un número." + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:398 +#, python-format +msgid "Ensure that there are no more than %(max)s digit in total." +msgid_plural "Ensure that there are no more than %(max)s digits in total." +msgstr[0] "Verifica que no hay más que %(max)s digito en total." +msgstr[1] "Verifica que no hay más que %(max)s digitos en total." + +# is +#: venv3/lib/python3.8/site-packages/django/core/validators.py:403 +#, python-format +msgid "Ensure that there are no more than %(max)s decimal place." +msgid_plural "Ensure that there are no more than %(max)s decimal places." +msgstr[0] "Verifica que no hay más que %(max)s cifra decimal." +msgstr[1] "Verifica que no hay más que %(max)s cifras decimales." + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:408 +#, python-format +msgid "" +"Ensure that there are no more than %(max)s digit before the decimal point." +msgid_plural "" +"Ensure that there are no more than %(max)s digits before the decimal point." +msgstr[0] "" +"Verifica que no hay más que %(max)s digito antes de la coma decimal." +msgstr[1] "" +"Verifica que no hay más que %(max)s digitos antes de la coma decimal." + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:470 +#, python-format +msgid "" +"File extension “%(extension)s” is not allowed. Allowed extensions are: " +"%(allowed_extensions)s." +msgstr "" +"No se permite la extensión de archivo “%(extension)s”. Extensiones " +"permitidas son: %(allowed_extensions)s." + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:522 +msgid "Null characters are not allowed." +msgstr "No se permiten caracteres nulos" + +#: venv3/lib/python3.8/site-packages/django/db/models/base.py:1181 +#: venv3/lib/python3.8/site-packages/django/forms/models.py:759 +msgid "and" +msgstr "y" + +#: venv3/lib/python3.8/site-packages/django/db/models/base.py:1183 +#, python-format +msgid "%(model_name)s with this %(field_labels)s already exists." +msgstr "Ya existe %(model_name)s con este %(field_labels)s." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:104 +#, python-format +msgid "Value %(value)r is not a valid choice." +msgstr "El valor %(value)s no es una opción válida." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:105 +msgid "This field cannot be null." +msgstr "Este campo no puede ser nulo." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:106 +msgid "This field cannot be blank." +msgstr "Este campo no puede ser vacio." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:107 +#, fuzzy, python-format +#| msgid "%(model_name)s with this %(field_label)s already exists." +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "Ya existe %(model_name)s con este %(field_labels)s." + +#. Translators: The 'lookup_type' is one of 'date', 'year' or 'month'. +#. Eg: "Title must be unique for pub_date year" +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:111 +#, python-format +msgid "" +"%(field_label)s must be unique for %(date_field_label)s %(lookup_type)s." +msgstr "" +"%(field_label)s deben ser unicos por %(date_field_label)s %(lookup_type)s." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:130 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "Campo de tipo: %(field_type)s" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:937 +#, python-format +msgid "“%(value)s” value must be either True or False." +msgstr "“%(value)s” valor debe ser o verdadero o falso." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:938 +#, python-format +msgid "“%(value)s” value must be either True, False, or None." +msgstr "%(value)s” valor debe ser o True, False, o None." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:940 +msgid "Boolean (Either True or False)" +msgstr "Booleano (O True O False)" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:981 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "Cadena (máximo de %(max_length)s caracteres)" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1045 +msgid "Comma-separated integers" +msgstr "Enteros separados por comas" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1094 +#, python-format +msgid "" +"“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD " +"format." +msgstr "" +"“%(value)s” valor tiene un formato de fecha inválido. Hay que estar de " +"formato YYYY-MM-DD." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1096 +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1239 +#, python-format +msgid "" +"“%(value)s” value has the correct format (YYYY-MM-DD) but it is an invalid " +"date." +msgstr "" +"“%(value)s” valor tiene el formato correcto (YYYY-MM-DD) pero la fecha es " +"invalida." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1099 +msgid "Date (without time)" +msgstr "Fecha (sin la hora)" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1237 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[." +"uuuuuu]][TZ] format." +msgstr "" +"“%(value)s” valor tiene un formato invalido. Debe estar en formato YYYY-MM-" +"DD HH:MM[:ss[.uuuuuu]][TZ]." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1241 +#, python-format +msgid "" +"“%(value)s” value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]" +"[TZ]) but it is an invalid date/time." +msgstr "" +"“%(value)s” valor tiene el formato correcto (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]" +"[TZ]) pero es una fecha/hora invalida." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1245 +msgid "Date (with time)" +msgstr "Fecha (con la hora)" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1393 +#, python-format +msgid "“%(value)s” value must be a decimal number." +msgstr "El valor de “%(value)s” debe ser un número decimal." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1395 +msgid "Decimal number" +msgstr "Número decimal" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1534 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[." +"uuuuuu] format." +msgstr "" +"“%(value)s” valor tiene un formato invalido. Debe estar en formato [DD] " +"[[HH:]MM:]ss[.uuuuuu]." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1537 +msgid "Duration" +msgstr "Duración" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1587 +msgid "Email address" +msgstr "Dirección de correo electrónico" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1610 +msgid "File path" +msgstr "Ruta de archivo" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1676 +#, python-format +msgid "“%(value)s” value must be a float." +msgstr "%(value)s no es un usuario válido" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1678 +msgid "Floating point number" +msgstr "Número de coma flotante" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1716 +#, python-format +msgid "“%(value)s” value must be an integer." +msgstr "“%(value)s” valor debe ser un entero." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1718 +msgid "Integer" +msgstr "Entero" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1801 +msgid "Big (8 byte) integer" +msgstr "Entero grande (8 byte)" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1817 +msgid "IPv4 address" +msgstr "Dirección IPv4" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1848 +msgid "IP address" +msgstr "Dirección IP" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1928 +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1929 +#, python-format +msgid "“%(value)s” value must be either None, True or False." +msgstr "Valor “%(value)s” debe ser o None, True, o False." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1931 +msgid "Boolean (Either True, False or None)" +msgstr "Booleano (O True, Falso, o None)" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1966 +msgid "Positive integer" +msgstr "Entero positivo" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1979 +msgid "Positive small integer" +msgstr "Entero positivo pequeño " + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1993 +#, python-format +msgid "Slug (up to %(max_length)s)" +msgstr "Slug (máximo de %(max_length)s)" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2025 +msgid "Small integer" +msgstr "Entero pequeño" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2032 +msgid "Text" +msgstr "Texto" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2060 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] " +"format." +msgstr "" +"“%(value)s” valor tiene un formato invalido. Debe estar en formato HH:MM[:" +"ss[.uuuuuu]]." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2062 +#, python-format +msgid "" +"“%(value)s” value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an " +"invalid time." +msgstr "" +"“%(value)s” valor tiene el formato correcto (HH:MM[:ss[.uuuuuu]]) pero es " +"una hora invalida." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2065 +msgid "Time" +msgstr "Tiempo" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2191 +msgid "URL" +msgstr "URL" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2213 +msgid "Raw binary data" +msgstr "Datos binarios sin procesar" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2278 +#, python-format +msgid "“%(value)s” is not a valid UUID." +msgstr "%(value)s no es una UUID válida." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2280 +msgid "Universally unique identifier" +msgstr "Identificador universalmente único" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/files.py:221 +msgid "File" +msgstr "Archivo" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/files.py:360 +msgid "Image" +msgstr "Imágen" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:778 +#, python-format +msgid "%(model)s instance with %(field)s %(value)r does not exist." +msgstr "%(model)s instancia con %(field)s %(value)r no existe." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:780 +msgid "Foreign Key (type determined by related field)" +msgstr "Clave externa (tipo determinado por campo relacionado)" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1012 +msgid "One-to-one relationship" +msgstr "Relación uno-a-uno" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1066 +#, python-format +msgid "%(from)s-%(to)s relationship" +msgstr "relación %(from)s-%(to)s" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1067 +#, python-format +msgid "%(from)s-%(to)s relationships" +msgstr "relaciones %(from)s-%(to)s" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1109 +msgid "Many-to-many relationship" +msgstr "Relaciones mucho-a-mucho" + +#. Translators: If found as last label character, these punctuation +#. characters will prevent the default label_suffix to be appended to the label +#: venv3/lib/python3.8/site-packages/django/forms/boundfield.py:149 +msgid ":?.!" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:53 +msgid "This field is required." +msgstr "Este campo es requerido." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:246 +msgid "Enter a whole number." +msgstr "Ingrese un número entero." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:397 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:1127 +msgid "Enter a valid date." +msgstr "Ingrese una fecha válida." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:421 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:1128 +msgid "Enter a valid time." +msgstr "Ingrese una hora válida." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:443 +msgid "Enter a valid date/time." +msgstr "Ingrese una fecha/hora válida." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:472 +msgid "Enter a valid duration." +msgstr "Ingrese una duración válida." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:473 +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "El número de dias debe ser entre {min_days} y {max_days}." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:533 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" +"No se aceptó ningun archivo. Verfica el tipo de codificación en el " +"formulario." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:534 +msgid "No file was submitted." +msgstr "No se aceptó ningun archivo." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:535 +msgid "The submitted file is empty." +msgstr "El archivo enviado está vacio." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:537 +#, python-format +msgid "Ensure this filename has at most %(max)d character (it has %(length)d)." +msgid_plural "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr[0] "" +"Verifica que este nombre de archivo no tiene más que %(max)d carácter. " +"(Tiene %(length)d)." +msgstr[1] "" +"Verifica que este nombre de archivo no tiene más que %(max)d caracteres. " +"(Tiene %(length)d)." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:540 +msgid "Please either submit a file or check the clear checkbox, not both." +msgstr "Por favor, o envia un archivo o marca la casilla vacia, no los dos." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:601 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Subir una imagen válida. El archivo que subiste o no fue imagen o fue " +"corrupto." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:763 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:853 +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1275 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "" +"Selecciona una opción válida. %(value)s no es una de las opciones " +"disponibles." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:854 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:969 +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1274 +msgid "Enter a list of values." +msgstr "Ingrese una lista de valores." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:970 +msgid "Enter a complete value." +msgstr "Ingresa un valor completo." + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:1186 +msgid "Enter a valid UUID." +msgstr "Ingrese una UUID válida." + +#. Translators: This is the default suffix added to form field labels +#: venv3/lib/python3.8/site-packages/django/forms/forms.py:81 +msgid ":" +msgstr ":" + +#: venv3/lib/python3.8/site-packages/django/forms/forms.py:207 +#, python-format +msgid "(Hidden field %(name)s) %(error)s" +msgstr "(Campo oculto %(name)s) %(error)s" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:93 +msgid "ManagementForm data is missing or has been tampered with" +msgstr "Datos de ManagementForm está ausento o ha sido corrompido" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:345 +#, python-format +msgid "Please submit %d or fewer forms." +msgid_plural "Please submit %d or fewer forms." +msgstr[0] "Por favor, enviar %d o menos formularios." +msgstr[1] "Por favor, enviar %d o menos formularios." + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:352 +#, python-format +msgid "Please submit %d or more forms." +msgid_plural "Please submit %d or more forms." +msgstr[0] "Por favor, enviar %d o más formularios." +msgstr[1] "Por favor, enviar %d o más formularios." + +# TODO cc @mouse is this a verb or noun +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:379 +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:386 +#, fuzzy +msgid "Order" +msgstr "Pedir" + +# if verb +# msgstr "Pedido" # if noun +#: venv3/lib/python3.8/site-packages/django/forms/models.py:754 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "Por favor corrige los datos duplicados en %(field)s." + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:758 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "" +"Por favor corrige los datos duplicados en %(field)s, los cuales deben ser " +"unicos." + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:764 +#, python-format +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" +"Por favor corrige los datos duplicados en %(field_name)s los cuales deben " +"ser unicos por el %(lookup)s en %(date_field)s." + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:773 +msgid "Please correct the duplicate values below." +msgstr "Por favor corrige los valores duplicados a continuación." + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1094 +msgid "The inline value did not match the parent instance." +msgstr "El valor en línea no empareja la instancia progenitor." + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1161 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" +"Selecciona una opción válida. Esa opción no es una de las opciones " +"disponibles." + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1277 +#, python-format +msgid "“%(pk)s” is not a valid value." +msgstr "“%(pk)s” no es un valor válido." + +#: venv3/lib/python3.8/site-packages/django/forms/utils.py:162 +#, python-format +msgid "" +"%(datetime)s couldn’t be interpreted in time zone %(current_timezone)s; it " +"may be ambiguous or it may not exist." +msgstr "" +"%(datetime)s no se pudo interpretar en la zona horaria %(current_timezone)s; " +"puede ser ambiguo o puede que no exista." + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:395 +msgid "Clear" +msgstr "Borrar" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:396 +msgid "Currently" +msgstr "Actualmente" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:397 +msgid "Change" +msgstr "Cambiar" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:709 +msgid "Unknown" +msgstr "Desconocido" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:710 +msgid "Yes" +msgstr "Sí" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:711 +msgid "No" +msgstr "No" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:788 +msgid "yes,no,maybe" +msgstr "sí,no,quizás" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:817 +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:834 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d byte" +msgstr[1] "%(size)d bytes" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:836 +#, python-format +msgid "%s KB" +msgstr "%s KB" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:838 +#, python-format +msgid "%s MB" +msgstr "%s MB" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:840 +#, python-format +msgid "%s GB" +msgstr "%s GB" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:842 +#, python-format +msgid "%s TB" +msgstr "%s TB" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:844 +#, python-format +msgid "%s PB" +msgstr "%s PB" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:62 +msgid "p.m." +msgstr "p.m." + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:63 +msgid "a.m." +msgstr "a.m." + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:68 +msgid "PM" +msgstr "PM" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:69 +msgid "AM" +msgstr "AM" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:150 +msgid "midnight" +msgstr "medianoche" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:152 +msgid "noon" +msgstr "mediodia" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:295 +msgid "Monday" +msgstr "Lunes" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:296 +msgid "Tuesday" +msgstr "Martes" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:297 +msgid "Wednesday" +msgstr "Miercoles" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:298 +msgid "Thursday" +msgstr "Jueves" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:299 +msgid "Friday" +msgstr "Viernes" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:7 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:300 +msgid "Saturday" +msgstr "Sábado" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:7 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:301 +msgid "Sunday" +msgstr "Domino" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Mon" +msgstr "Lun" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Tue" +msgstr "Mar" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Wed" +msgstr "Mie" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Thu" +msgstr "Jue" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Fri" +msgstr "Vie" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:11 +msgid "Sat" +msgstr "Sáb" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:11 +msgid "Sun" +msgstr "Dom" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:281 +msgid "January" +msgstr "Enero" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:282 +msgid "February" +msgstr "Febrero" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:283 +msgid "March" +msgstr "Marzo" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:284 +msgid "April" +msgstr "Abril" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:285 +msgid "May" +msgstr "Mayo" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:286 +msgid "June" +msgstr "Junio" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:287 +msgid "July" +msgstr "Julio" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:288 +msgid "August" +msgstr "Agosto" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:289 +msgid "September" +msgstr "Septiembre" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:290 +msgid "October" +msgstr "Octubre" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:291 +msgid "November" +msgstr "Noviembre" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:16 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:292 +msgid "December" +msgstr "Diciembre" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "jan" +msgstr "ene" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "feb" +msgstr "feb" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "mar" +msgstr "mar" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "apr" +msgstr "abr" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "may" +msgstr "may" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "jun" +msgstr "jun" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "jul" +msgstr "jul" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "aug" +msgstr "ago" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "sep" +msgstr "sep" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "oct" +msgstr "oct" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "nov" +msgstr "nov" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "dec" +msgstr "dic" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:23 +msgctxt "abbrev. month" +msgid "Jan." +msgstr "en." + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:24 +msgctxt "abbrev. month" +msgid "Feb." +msgstr "feb." + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:25 +msgctxt "abbrev. month" +msgid "March" +msgstr "mzo." + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:26 +msgctxt "abbrev. month" +msgid "April" +msgstr "abr." + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:27 +msgctxt "abbrev. month" +msgid "May" +msgstr "my." + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:28 +msgctxt "abbrev. month" +msgid "June" +msgstr "jun." + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:29 +msgctxt "abbrev. month" +msgid "July" +msgstr "jul." + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:30 +msgctxt "abbrev. month" +msgid "Aug." +msgstr "agto." + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:31 +msgctxt "abbrev. month" +msgid "Sept." +msgstr "set." + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:32 +msgctxt "abbrev. month" +msgid "Oct." +msgstr "oct." + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:33 +msgctxt "abbrev. month" +msgid "Nov." +msgstr "nov." + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:34 +msgctxt "abbrev. month" +msgid "Dec." +msgstr "dic." + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:37 +msgctxt "alt. month" +msgid "January" +msgstr "Enero" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:38 +msgctxt "alt. month" +msgid "February" +msgstr "Febrero" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:39 +msgctxt "alt. month" +msgid "March" +msgstr "Marzo" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:40 +msgctxt "alt. month" +msgid "April" +msgstr "Abril" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:41 +msgctxt "alt. month" +msgid "May" +msgstr "Mayo" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:42 +msgctxt "alt. month" +msgid "June" +msgstr "Junio" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:43 +msgctxt "alt. month" +msgid "July" +msgstr "Julio" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:44 +msgctxt "alt. month" +msgid "August" +msgstr "Agosto" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:45 +msgctxt "alt. month" +msgid "September" +msgstr "Septiembre" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:46 +msgctxt "alt. month" +msgid "October" +msgstr "Octubre" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:47 +msgctxt "alt. month" +msgid "November" +msgstr "Noviembre" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:48 +msgctxt "alt. month" +msgid "December" +msgstr "Diciembre" + +#: venv3/lib/python3.8/site-packages/django/utils/ipv6.py:8 +msgid "This is not a valid IPv6 address." +msgstr "Esta no es una dirección IPv6 válida." + +#: venv3/lib/python3.8/site-packages/django/utils/text.py:69 +#, python-format +msgctxt "String to return when truncating text" +msgid "%(truncated_text)s…" +msgstr "%(truncated_text)s…" + +#: venv3/lib/python3.8/site-packages/django/utils/text.py:235 +msgid "or" +msgstr "o" + +#. Translators: This string is used as a separator between list elements +#: venv3/lib/python3.8/site-packages/django/utils/text.py:254 +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:83 +msgid ", " +msgstr ", " + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:9 +#, python-format +msgid "%d year" +msgid_plural "%d years" +msgstr[0] "%d año" +msgstr[1] "%d años" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:10 +#, python-format +msgid "%d month" +msgid_plural "%d months" +msgstr[0] "%d mes" +msgstr[1] "%d meses" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:11 +#, python-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "%d semana" +msgstr[1] "%d semanas" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:12 +#, python-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "%d día" +msgstr[1] "%d días" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:13 +#, python-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d hora" +msgstr[1] "%d horas" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:14 +#, python-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuto" +msgstr[1] "%d minutos" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:72 +#, fuzzy +#| msgid "%d minute" +#| msgid_plural "%d minutes" +msgid "0 minutes" +msgstr "%d minuto" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:110 +msgid "Forbidden" +msgstr "Prohibido" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:111 +msgid "CSRF verification failed. Request aborted." +msgstr "Se falló la verificación CSRF. Se abortó la solicitud." + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:115 +msgid "" +"You are seeing this message because this HTTPS site requires a “Referer " +"header” to be sent by your Web browser, but none was sent. This header is " +"required for security reasons, to ensure that your browser is not being " +"hijacked by third parties." +msgstr "" +"Estás viendo este mensaje porque este sitio HTTPS requiere que tu navegador " +"Web envie un “Referer header”, pero no se la envió. Esta cabecedera se " +"requiere por razones de seguridad, para asegurar que tu navegador no sea " +"secuestrado por terceros." + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:120 +msgid "" +"If you have configured your browser to disable “Referer” headers, please re-" +"enable them, at least for this site, or for HTTPS connections, or for “same-" +"origin” requests." +msgstr "" +"Si has configurado su navegador para deshabilitar las cabecederas “Referer”, " +"vuelva a habilitarlos, al menos para este sitio, o para conexiones HTTPS, o " +"para solicitudes del “same-origin”. " + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:124 +msgid "" +"If you are using the tag or " +"including the “Referrer-Policy: no-referrer” header, please remove them. The " +"CSRF protection requires the “Referer” header to do strict referer checking. " +"If you’re concerned about privacy, use alternatives like for links to third-party sites." +msgstr "" +"Si estás usando la eqtigueta o estás incluyendo la cabecedera “Referrer-Policy: no-referrer”, " +"quitalas por favor. La protección CSRF require la cabecedera “Referer” para " +"hacer verficación “strict referer“. Si te preocupa la privacidad, utiliza " +"alternativas como para sitios de terceros." + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:132 +msgid "" +"You are seeing this message because this site requires a CSRF cookie when " +"submitting forms. This cookie is required for security reasons, to ensure " +"that your browser is not being hijacked by third parties." +msgstr "" +"Estás viendo este mensaje porque este sitio requiere un cookie CSRF cuando " +"se envie formularios. Este cookie se requiere por razones de seguridad, para " +"asegurar que tu navegador no sea secuestrado por terceros." + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:137 +msgid "" +"If you have configured your browser to disable cookies, please re-enable " +"them, at least for this site, or for “same-origin” requests." +msgstr "" +"Si has configurado su navegador para deshabilitar los cookies, vuelva a " +"habilitarlos, al menos para este sitio, o para conexiones HTTPS, o para " +"solicitudes del “same-origin”. " + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:142 +msgid "More information is available with DEBUG=True." +msgstr "Más información es disponible con DEBUG=True." + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:41 +msgid "No year specified" +msgstr "Ningun año fue especificado" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:61 +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:111 +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:208 +msgid "Date out of range" +msgstr "Fecha fuera de rango" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:90 +msgid "No month specified" +msgstr "Ningun mes fue especificado" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:142 +msgid "No day specified" +msgstr "Ningun día fue especificado" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:188 +msgid "No week specified" +msgstr "Ninguna semana fue especificado" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:338 +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:367 +#, python-format +msgid "No %(verbose_name_plural)s available" +msgstr "No %(verbose_name_plural)s disponible" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:589 +#, python-format +msgid "" +"Future %(verbose_name_plural)s not available because %(class_name)s." +"allow_future is False." +msgstr "" +"%(verbose_name_plural)s del futuro no está disponible porque %(class_name)s." +"allow_future es False." + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:623 +#, python-format +msgid "Invalid date string “%(datestr)s” given format “%(format)s”" +msgstr "Cadena de fecha invalida “%(datestr)s” dado el formato “%(format)s”" + +#: venv3/lib/python3.8/site-packages/django/views/generic/detail.py:54 +#, python-format +msgid "No %(verbose_name)s found matching the query" +msgstr "No se encontró ningún %(verbose_name)s correspondiente a la búsqueda" + +#: venv3/lib/python3.8/site-packages/django/views/generic/list.py:67 +msgid "Page is not “last”, nor can it be converted to an int." +msgstr "Página no es “last”, ni puede ser convertido en un int." + +#: venv3/lib/python3.8/site-packages/django/views/generic/list.py:72 +#, python-format +msgid "Invalid page (%(page_number)s): %(message)s" +msgstr "Página invalida (%(page_number)s): %(message)s" + +#: venv3/lib/python3.8/site-packages/django/views/generic/list.py:154 +#, python-format +msgid "Empty list and “%(class_name)s.allow_empty” is False." +msgstr "Lista vacia y “%(class_name)s.allow_empty” es False." + +#: venv3/lib/python3.8/site-packages/django/views/static.py:40 +msgid "Directory indexes are not allowed here." +msgstr "Indices directorios no se permiten aquí." + +#: venv3/lib/python3.8/site-packages/django/views/static.py:42 +#, python-format +msgid "“%(path)s” does not exist" +msgstr "“%(path)s” no existe" + +#: venv3/lib/python3.8/site-packages/django/views/static.py:80 +#, python-format +msgid "Index of %(directory)s" +msgstr "Indice de %(directory)s" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:7 +msgid "Django: the Web framework for perfectionists with deadlines." +msgstr "Django: el estructura Web para perfeccionistas con fechas límites." + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:346 +#, python-format +msgid "" +"View release notes for Django %(version)s" +msgstr "" +"Ver notas de lanzamiento por Django " +"%(version)s" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:368 +msgid "The install worked successfully! Congratulations!" +msgstr "¡La instalación fue exitoso! ¡Felicidades!" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:369 +#, python-format +msgid "" +"You are seeing this page because DEBUG=True is in your settings file and you have not configured any " +"URLs." +msgstr "" +"Estás viendo esta pagina porque DEBUG=True está en tu archivo de configuración y no has configurado " +"ningún URL." + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:384 +msgid "Django Documentation" +msgstr "Documentación de Django" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:385 +msgid "Topics, references, & how-to’s" +msgstr "Tópicos, referencias, & instrucciones paso-a-paso" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:396 +msgid "Tutorial: A Polling App" +msgstr "Tutorial: Una aplicación polling" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:397 +msgid "Get started with Django" +msgstr "Empezar con Django" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:408 +msgid "Django Community" +msgstr "Comunidad Django" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:409 +msgid "Connect, get help, or contribute" +msgstr "Conectarse, encontrar ayuda, o contribuir" + +#: venv3/lib/python3.8/site-packages/kombu/transport/qpid.py:1301 +#, python-format +msgid "Attempting to connect to qpid with SASL mechanism %s" +msgstr "Intentando conectar con qpid con mecanismo SASL %s" + +#: venv3/lib/python3.8/site-packages/kombu/transport/qpid.py:1306 +#, python-format +msgid "Connected to qpid with SASL mechanism %s" +msgstr "Conectado con qpid con mecanismo SASL %s" + +#: venv3/lib/python3.8/site-packages/kombu/transport/qpid.py:1324 +#, python-format +msgid "Unable to connect to qpid with SASL mechanism %s" +msgstr "No se pudo conectar con qpid con mecanismo SASL %s" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:371 +msgid "1 second ago" +msgstr "Hace 1 segundo" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:377 +msgid "1 minute ago" +msgstr "Hace 1 minuto" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:382 +msgid "1 hour ago" +msgstr "Hace 1 hora" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:385 +#, python-format +msgid "%(time)s" +msgstr "%(time)s" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:387 +msgid "yesterday" +msgstr "ayer" + +# TODO cc @mouse this could be grammatically incorrect if the time said 1 o'clock +# a working clock is broken twice a day! +#: venv3/lib/python3.8/site-packages/tornado/locale.py:387 +#, python-format +msgid "yesterday at %(time)s" +msgstr "ayer a las %(time)s" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:389 +#, python-format +msgid "%(weekday)s" +msgstr "%(weekday)s" + +# TODO cc @mouse this could be grammatically incorrect if the time said 1 o'clock +# a working clock is broken twice a day! +#: venv3/lib/python3.8/site-packages/tornado/locale.py:389 +#, python-format +msgid "%(weekday)s at %(time)s" +msgstr "%(weekday)s a las %(time)s" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:392 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:445 +#, python-format +msgid "%(month_name)s %(day)s" +msgstr "%(day)s %(month_name)s" + +# TODO cc @mouse this could be grammatically incorrect if the time said 1 o'clock +# a working clock is broken twice a day! +#: venv3/lib/python3.8/site-packages/tornado/locale.py:394 +#, python-format +msgid "%(month_name)s %(day)s at %(time)s" +msgstr "%(day)s %(month_name)s a las %(time)s" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:399 +#, python-format +msgid "%(month_name)s %(day)s, %(year)s" +msgstr "%(day)s %(month_name)s, %(year)s" + +# TODO cc @mouse this could be grammatically incorrect if the time said 1 o'clock +# a working clock is broken twice a day! +#: venv3/lib/python3.8/site-packages/tornado/locale.py:401 +#, python-format +msgid "%(month_name)s %(day)s, %(year)s at %(time)s" +msgstr "%(day)s %(month_name)s, %(year)s a las %(time)s" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:439 +#, python-format +msgid "%(weekday)s, %(month_name)s %(day)s" +msgstr "%(weekday)s, %(day)s %(month_name)s" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:462 +#, python-format +msgid "%(commas)s and %(last)s" +msgstr "%(commas)s y %(last)s" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:68 +msgctxt "law" +msgid "right" +msgstr "justo" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:69 +msgctxt "good" +msgid "right" +msgstr "correcto" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:71 +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:74 +msgctxt "organization" +msgid "club" +msgstr "club" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:76 +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:77 +msgctxt "stick" +msgid "club" +msgstr "garrote" + +#, python-format +#~ msgid "%(rating)s star" +#~ msgid_plural "%(rating)s stars" +#~ msgstr[0] "%(rating)s estrella" +#~ msgstr[1] "%(rating)s estrellas" + +#, python-format +#~ msgid "" +#~ "replied to %(username)s's review" +#~ msgstr "" +#~ "respondió a la reseña de %(username)s " + +#, python-format +#~ msgid "" +#~ "replied to %(username)s's comment" +#~ msgstr "" +#~ "respondió al comentario de %(username)s " + +#, python-format +#~ msgid "" +#~ "replied to %(username)s's quote" +#~ msgstr "" +#~ "respondió a la cita de %(username)s " + #~ msgid "Remove tag" #~ msgstr "Eliminar etiqueta" @@ -2756,867 +4344,18 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "Reactivate user" #~ msgstr "Reactivar usuario" -#~ msgid "ambiguous option: %(option)s could match %(matches)s" -#~ msgstr "opción ambiguo: %(option)s pudiera coincidir con %(matches)s" - -#~ msgid "Messages" -#~ msgstr "Mensajes" - -#~ msgid "Site Maps" -#~ msgstr "Mapas de sitio" - -#~ msgid "Static Files" -#~ msgstr "Archivos estáticos" - -#~ msgid "Syndication" -#~ msgstr "Sindicación" - -#~ msgid "That page number is not an integer" -#~ msgstr "Ese numero de pagina no es un entero" - -#~ msgid "That page number is less than 1" -#~ msgstr "Ese numero de pagina es menos que uno" - -#~ msgid "That page contains no results" -#~ msgstr "Esa pagina no contiene resultados" - -#~ msgid "Enter a valid value." -#~ msgstr "Ingrese un valor válido." - -#~ msgid "Enter a valid URL." -#~ msgstr "Ingrese una URL válida." - -#~ msgid "Enter a valid integer." -#~ msgstr "Ingrese un entero válido." - -#~ msgid "Enter a valid email address." -#~ msgstr "Ingrese una dirección de correo electrónico válida." - -#~ msgid "Enter a valid “slug” consisting of letters, numbers, underscores or hyphens." -#~ msgstr "Ingrese un “slug” válido que consiste de letras, numeros, guiones bajos, o guiones" - -#~ msgid "Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or hyphens." -#~ msgstr "Ingrese un “slug” válido que consiste de letras Unicode, numeros, guiones bajos, o guiones" - -#~ msgid "Enter a valid IPv4 address." -#~ msgstr "Ingrese una dirección IPv4 válida." - -#~ msgid "Enter a valid IPv6 address." -#~ msgstr "Ingrese una dirección IPv6 válida." - -#~ msgid "Enter a valid IPv4 or IPv6 address." -#~ msgstr "Ingrese una dirección IPv4 o IPv6 válida." - -#~ msgid "Enter only digits separated by commas." -#~ msgstr "Ingrese solo digitos separados por comas." - -#~ msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." -#~ msgstr "Asegura que este valor es %(limit_value)s (es %(show_value)s)." - -#~ msgid "Ensure this value is less than or equal to %(limit_value)s." -#~ msgstr "Asegura que este valor es menor que o iguala a %(limit_value)s." - -#~ msgid "Ensure this value is greater than or equal to %(limit_value)s." -#~ msgstr "Asegura que este valor es más que o que iguala a %(limit_value)s." - -#~ msgid "Ensure this value has at least %(limit_value)d character (it has %(show_value)d)." -#~ msgid_plural "Ensure this value has at least %(limit_value)d characters (it has %(show_value)d)." -#~ msgstr[0] "Verifica que este valor tiene por lo menos %(limit_value)d carácter. (Tiene %(show_value)d).)" -#~ msgstr[1] "Verifica que este valor tiene por lo menos %(limit_value)d caracteres. (Tiene %(show_value)d).)" - -#~ msgid "Ensure this value has at most %(limit_value)d character (it has %(show_value)d)." -#~ msgid_plural "Ensure this value has at most %(limit_value)d characters (it has %(show_value)d)." -#~ msgstr[0] "Verifica que este valor tiene a lo sumo %(limit_value)d carácter. (Tiene %(show_value)d).)" -#~ msgstr[1] "Verifica que este valor tiene a lo sumo %(limit_value)d caracteres. (Tiene %(show_value)d).)" - -#~ msgid "Enter a number." -#~ msgstr "Ingrese un número." - -#~ msgid "Ensure that there are no more than %(max)s digit in total." -#~ msgid_plural "Ensure that there are no more than %(max)s digits in total." -#~ msgstr[0] "Verifica que no hay más que %(max)s digito en total." -#~ msgstr[1] "Verifica que no hay más que %(max)s digitos en total." - -# is -#~ msgid "Ensure that there are no more than %(max)s decimal place." -#~ msgid_plural "Ensure that there are no more than %(max)s decimal places." -#~ msgstr[0] "Verifica que no hay más que %(max)s cifra decimal." -#~ msgstr[1] "Verifica que no hay más que %(max)s cifras decimales." - -#~ msgid "Ensure that there are no more than %(max)s digit before the decimal point." -#~ msgid_plural "Ensure that there are no more than %(max)s digits before the decimal point." -#~ msgstr[0] "Verifica que no hay más que %(max)s digito antes de la coma decimal." -#~ msgstr[1] "Verifica que no hay más que %(max)s digitos antes de la coma decimal." - -#~ msgid "File extension “%(extension)s” is not allowed. Allowed extensions are: %(allowed_extensions)s." -#~ msgstr "No se permite la extensión de archivo “%(extension)s”. Extensiones permitidas son: %(allowed_extensions)s." - -#~ msgid "Null characters are not allowed." -#~ msgstr "No se permiten caracteres nulos" - -#~ msgid "and" -#~ msgstr "y" - -#~ msgid "%(model_name)s with this %(field_labels)s already exists." -#~ msgstr "Ya existe %(model_name)s con este %(field_labels)s." - -#~ msgid "Value %(value)r is not a valid choice." -#~ msgstr "El valor %(value)s no es una opción válida." - -#~ msgid "This field cannot be null." -#~ msgstr "Este campo no puede ser nulo." - -#~ msgid "This field cannot be blank." -#~ msgstr "Este campo no puede ser vacio." - -#~ msgid "%(model_name)s with this %(field_label)s already exists." -#~ msgstr "Ya existe %(model_name)s con este %(field_labels)s." - -#~ msgid "%(field_label)s must be unique for %(date_field_label)s %(lookup_type)s." -#~ msgstr "%(field_label)s deben ser unicos por %(date_field_label)s %(lookup_type)s." - -#~ msgid "Field of type: %(field_type)s" -#~ msgstr "Campo de tipo: %(field_type)s" - -#~ msgid "“%(value)s” value must be either True or False." -#~ msgstr "“%(value)s” valor debe ser o verdadero o falso." - -#~ msgid "“%(value)s” value must be either True, False, or None." -#~ msgstr "%(value)s” valor debe ser o True, False, o None." - -#~ msgid "Boolean (Either True or False)" -#~ msgstr "Booleano (O True O False)" - -#~ msgid "String (up to %(max_length)s)" -#~ msgstr "Cadena (máximo de %(max_length)s caracteres)" - -#~ msgid "Comma-separated integers" -#~ msgstr "Enteros separados por comas" - -#~ msgid "“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD format." -#~ msgstr "“%(value)s” valor tiene un formato de fecha inválido. Hay que estar de formato YYYY-MM-DD." - -#~ msgid "“%(value)s” value has the correct format (YYYY-MM-DD) but it is an invalid date." -#~ msgstr "“%(value)s” valor tiene el formato correcto (YYYY-MM-DD) pero la fecha es invalida." - -#~ msgid "Date (without time)" -#~ msgstr "Fecha (sin la hora)" - -#~ msgid "“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format." -#~ msgstr "“%(value)s” valor tiene un formato invalido. Debe estar en formato YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]." - -#~ msgid "“%(value)s” value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) but it is an invalid date/time." -#~ msgstr "“%(value)s” valor tiene el formato correcto (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) pero es una fecha/hora invalida." - -#~ msgid "Date (with time)" -#~ msgstr "Fecha (con la hora)" - -#~ msgid "“%(value)s” value must be a decimal number." -#~ msgstr "El valor de “%(value)s” debe ser un número decimal." - -#~ msgid "Decimal number" -#~ msgstr "Número decimal" - -#~ msgid "“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[.uuuuuu] format." -#~ msgstr "“%(value)s” valor tiene un formato invalido. Debe estar en formato [DD] [[HH:]MM:]ss[.uuuuuu]." - -#~ msgid "Duration" -#~ msgstr "Duración" - -#~ msgid "Email address" -#~ msgstr "Dirección de correo electrónico" - -#~ msgid "File path" -#~ msgstr "Ruta de archivo" - -#~ msgid "“%(value)s” value must be a float." -#~ msgstr "%(value)s no es un usuario válido" - -#~ msgid "Floating point number" -#~ msgstr "Número de coma flotante" - -#~ msgid "“%(value)s” value must be an integer." -#~ msgstr "“%(value)s” valor debe ser un entero." - -#~ msgid "Integer" -#~ msgstr "Entero" - -#~ msgid "Big (8 byte) integer" -#~ msgstr "Entero grande (8 byte)" - -#~ msgid "IPv4 address" -#~ msgstr "Dirección IPv4" - -#~ msgid "IP address" -#~ msgstr "Dirección IP" - -#~ msgid "“%(value)s” value must be either None, True or False." -#~ msgstr "Valor “%(value)s” debe ser o None, True, o False." - -#~ msgid "Boolean (Either True, False or None)" -#~ msgstr "Booleano (O True, Falso, o None)" - #~ msgid "Positive big integer" #~ msgstr "Entero positivo grande" -#~ msgid "Positive integer" -#~ msgstr "Entero positivo" - -#~ msgid "Positive small integer" -#~ msgstr "Entero positivo pequeño " - -#~ msgid "Slug (up to %(max_length)s)" -#~ msgstr "Slug (máximo de %(max_length)s)" - -#~ msgid "Small integer" -#~ msgstr "Entero pequeño" - -#~ msgid "Text" -#~ msgstr "Texto" - -#~ msgid "“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] format." -#~ msgstr "“%(value)s” valor tiene un formato invalido. Debe estar en formato HH:MM[:ss[.uuuuuu]]." - -#~ msgid "“%(value)s” value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an invalid time." -#~ msgstr "“%(value)s” valor tiene el formato correcto (HH:MM[:ss[.uuuuuu]]) pero es una hora invalida." - -#~ msgid "Time" -#~ msgstr "Tiempo" - -#~ msgid "URL" -#~ msgstr "URL" - -#~ msgid "Raw binary data" -#~ msgstr "Datos binarios sin procesar" - -#~ msgid "“%(value)s” is not a valid UUID." -#~ msgstr "%(value)s no es una UUID válida." - -#~ msgid "Universally unique identifier" -#~ msgstr "Identificador universalmente único" - -#~ msgid "File" -#~ msgstr "Archivo" - -#~ msgid "Image" -#~ msgstr "Imágen" - #~ msgid "A JSON object" #~ msgstr "Un objeto JSON" #~ msgid "Value must be valid JSON." #~ msgstr "Valor debe ser JSON válido." -#~ msgid "%(model)s instance with %(field)s %(value)r does not exist." -#~ msgstr "%(model)s instancia con %(field)s %(value)r no existe." - -#~ msgid "Foreign Key (type determined by related field)" -#~ msgstr "Clave externa (tipo determinado por campo relacionado)" - -#~ msgid "One-to-one relationship" -#~ msgstr "Relación uno-a-uno" - -#~ msgid "%(from)s-%(to)s relationship" -#~ msgstr "relación %(from)s-%(to)s" - -#~ msgid "%(from)s-%(to)s relationships" -#~ msgstr "relaciones %(from)s-%(to)s" - -#~ msgid "Many-to-many relationship" -#~ msgstr "Relaciones mucho-a-mucho" - -#~ msgid "This field is required." -#~ msgstr "Este campo es requerido." - -#~ msgid "Enter a whole number." -#~ msgstr "Ingrese un número entero." - -#~ msgid "Enter a valid date." -#~ msgstr "Ingrese una fecha válida." - -#~ msgid "Enter a valid time." -#~ msgstr "Ingrese una hora válida." - -#~ msgid "Enter a valid date/time." -#~ msgstr "Ingrese una fecha/hora válida." - -#~ msgid "Enter a valid duration." -#~ msgstr "Ingrese una duración válida." - -#~ msgid "The number of days must be between {min_days} and {max_days}." -#~ msgstr "El número de dias debe ser entre {min_days} y {max_days}." - -#~ msgid "No file was submitted. Check the encoding type on the form." -#~ msgstr "No se aceptó ningun archivo. Verfica el tipo de codificación en el formulario." - -#~ msgid "No file was submitted." -#~ msgstr "No se aceptó ningun archivo." - -#~ msgid "The submitted file is empty." -#~ msgstr "El archivo enviado está vacio." - -#~ msgid "Ensure this filename has at most %(max)d character (it has %(length)d)." -#~ msgid_plural "Ensure this filename has at most %(max)d characters (it has %(length)d)." -#~ msgstr[0] "Verifica que este nombre de archivo no tiene más que %(max)d carácter. (Tiene %(length)d)." -#~ msgstr[1] "Verifica que este nombre de archivo no tiene más que %(max)d caracteres. (Tiene %(length)d)." - -#~ msgid "Please either submit a file or check the clear checkbox, not both." -#~ msgstr "Por favor, o envia un archivo o marca la casilla vacia, no los dos." - -#~ msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." -#~ msgstr "Subir una imagen válida. El archivo que subiste o no fue imagen o fue corrupto." - -#~ msgid "Select a valid choice. %(value)s is not one of the available choices." -#~ msgstr "Selecciona una opción válida. %(value)s no es una de las opciones disponibles." - -#~ msgid "Enter a list of values." -#~ msgstr "Ingrese una lista de valores." - -#~ msgid "Enter a complete value." -#~ msgstr "Ingresa un valor completo." - -#~ msgid "Enter a valid UUID." -#~ msgstr "Ingrese una UUID válida." - #~ msgid "Enter a valid JSON." #~ msgstr "Ingrese una JSON válida." -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "(Hidden field %(name)s) %(error)s" -#~ msgstr "(Campo oculto %(name)s) %(error)s" - -#~ msgid "ManagementForm data is missing or has been tampered with" -#~ msgstr "Datos de ManagementForm está ausento o ha sido corrompido" - -#~ msgid "Please submit %d or fewer forms." -#~ msgid_plural "Please submit %d or fewer forms." -#~ msgstr[0] "Por favor, enviar %d o menos formularios." -#~ msgstr[1] "Por favor, enviar %d o menos formularios." - -#~ msgid "Please submit %d or more forms." -#~ msgid_plural "Please submit %d or more forms." -#~ msgstr[0] "Por favor, enviar %d o más formularios." -#~ msgstr[1] "Por favor, enviar %d o más formularios." - -# TODO cc @mouse is this a verb or noun -#, fuzzy -#~ msgid "Order" -#~ msgstr "Pedir" - -# if verb -# msgstr "Pedido" # if noun -#~ msgid "Please correct the duplicate data for %(field)s." -#~ msgstr "Por favor corrige los datos duplicados en %(field)s." - -#~ msgid "Please correct the duplicate data for %(field)s, which must be unique." -#~ msgstr "Por favor corrige los datos duplicados en %(field)s, los cuales deben ser unicos." - -#~ msgid "Please correct the duplicate data for %(field_name)s which must be unique for the %(lookup)s in %(date_field)s." -#~ msgstr "Por favor corrige los datos duplicados en %(field_name)s los cuales deben ser unicos por el %(lookup)s en %(date_field)s." - -#~ msgid "Please correct the duplicate values below." -#~ msgstr "Por favor corrige los valores duplicados a continuación." - -#~ msgid "The inline value did not match the parent instance." -#~ msgstr "El valor en línea no empareja la instancia progenitor." - -#~ msgid "Select a valid choice. That choice is not one of the available choices." -#~ msgstr "Selecciona una opción válida. Esa opción no es una de las opciones disponibles." - -#~ msgid "“%(pk)s” is not a valid value." -#~ msgstr "“%(pk)s” no es un valor válido." - -#~ msgid "%(datetime)s couldn’t be interpreted in time zone %(current_timezone)s; it may be ambiguous or it may not exist." -#~ msgstr "%(datetime)s no se pudo interpretar en la zona horaria %(current_timezone)s; puede ser ambiguo o puede que no exista." - -#~ msgid "Clear" -#~ msgstr "Borrar" - -#~ msgid "Currently" -#~ msgstr "Actualmente" - -#~ msgid "Change" -#~ msgstr "Cambiar" - -#~ msgid "Unknown" -#~ msgstr "Desconocido" - -#~ msgid "Yes" -#~ msgstr "Sí" - -#~ msgid "No" -#~ msgstr "No" - -#~ msgid "yes,no,maybe" -#~ msgstr "sí,no,quizás" - -#~ msgid "%(size)d byte" -#~ msgid_plural "%(size)d bytes" -#~ msgstr[0] "%(size)d byte" -#~ msgstr[1] "%(size)d bytes" - -#~ msgid "%s KB" -#~ msgstr "%s KB" - -#~ msgid "%s MB" -#~ msgstr "%s MB" - -#~ msgid "%s GB" -#~ msgstr "%s GB" - -#~ msgid "%s TB" -#~ msgstr "%s TB" - -#~ msgid "%s PB" -#~ msgstr "%s PB" - -#~ msgid "p.m." -#~ msgstr "p.m." - -#~ msgid "a.m." -#~ msgstr "a.m." - -#~ msgid "PM" -#~ msgstr "PM" - -#~ msgid "AM" -#~ msgstr "AM" - -#~ msgid "midnight" -#~ msgstr "medianoche" - -#~ msgid "noon" -#~ msgstr "mediodia" - -#~ msgid "Monday" -#~ msgstr "Lunes" - -#~ msgid "Tuesday" -#~ msgstr "Martes" - -#~ msgid "Wednesday" -#~ msgstr "Miercoles" - -#~ msgid "Thursday" -#~ msgstr "Jueves" - -#~ msgid "Friday" -#~ msgstr "Viernes" - -#~ msgid "Saturday" -#~ msgstr "Sábado" - -#~ msgid "Sunday" -#~ msgstr "Domino" - -#~ msgid "Mon" -#~ msgstr "Lun" - -#~ msgid "Tue" -#~ msgstr "Mar" - -#~ msgid "Wed" -#~ msgstr "Mie" - -#~ msgid "Thu" -#~ msgstr "Jue" - -#~ msgid "Fri" -#~ msgstr "Vie" - -#~ msgid "Sat" -#~ msgstr "Sáb" - -#~ msgid "Sun" -#~ msgstr "Dom" - -#~ msgid "January" -#~ msgstr "Enero" - -#~ msgid "February" -#~ msgstr "Febrero" - -#~ msgid "March" -#~ msgstr "Marzo" - -#~ msgid "April" -#~ msgstr "Abril" - -#~ msgid "May" -#~ msgstr "Mayo" - -#~ msgid "June" -#~ msgstr "Junio" - -#~ msgid "July" -#~ msgstr "Julio" - -#~ msgid "August" -#~ msgstr "Agosto" - -#~ msgid "September" -#~ msgstr "Septiembre" - -#~ msgid "October" -#~ msgstr "Octubre" - -#~ msgid "November" -#~ msgstr "Noviembre" - -#~ msgid "December" -#~ msgstr "Diciembre" - -#~ msgid "jan" -#~ msgstr "ene" - -#~ msgid "feb" -#~ msgstr "feb" - -#~ msgid "mar" -#~ msgstr "mar" - -#~ msgid "apr" -#~ msgstr "abr" - -#~ msgid "may" -#~ msgstr "may" - -#~ msgid "jun" -#~ msgstr "jun" - -#~ msgid "jul" -#~ msgstr "jul" - -#~ msgid "aug" -#~ msgstr "ago" - -#~ msgid "sep" -#~ msgstr "sep" - -#~ msgid "oct" -#~ msgstr "oct" - -#~ msgid "nov" -#~ msgstr "nov" - -#~ msgid "dec" -#~ msgstr "dic" - -#~ msgctxt "abbrev. month" -#~ msgid "Jan." -#~ msgstr "en." - -#~ msgctxt "abbrev. month" -#~ msgid "Feb." -#~ msgstr "feb." - -#~ msgctxt "abbrev. month" -#~ msgid "March" -#~ msgstr "mzo." - -#~ msgctxt "abbrev. month" -#~ msgid "April" -#~ msgstr "abr." - -#~ msgctxt "abbrev. month" -#~ msgid "May" -#~ msgstr "my." - -#~ msgctxt "abbrev. month" -#~ msgid "June" -#~ msgstr "jun." - -#~ msgctxt "abbrev. month" -#~ msgid "July" -#~ msgstr "jul." - -#~ msgctxt "abbrev. month" -#~ msgid "Aug." -#~ msgstr "agto." - -#~ msgctxt "abbrev. month" -#~ msgid "Sept." -#~ msgstr "set." - -#~ msgctxt "abbrev. month" -#~ msgid "Oct." -#~ msgstr "oct." - -#~ msgctxt "abbrev. month" -#~ msgid "Nov." -#~ msgstr "nov." - -#~ msgctxt "abbrev. month" -#~ msgid "Dec." -#~ msgstr "dic." - -#~ msgctxt "alt. month" -#~ msgid "January" -#~ msgstr "Enero" - -#~ msgctxt "alt. month" -#~ msgid "February" -#~ msgstr "Febrero" - -#~ msgctxt "alt. month" -#~ msgid "March" -#~ msgstr "Marzo" - -#~ msgctxt "alt. month" -#~ msgid "April" -#~ msgstr "Abril" - -#~ msgctxt "alt. month" -#~ msgid "May" -#~ msgstr "Mayo" - -#~ msgctxt "alt. month" -#~ msgid "June" -#~ msgstr "Junio" - -#~ msgctxt "alt. month" -#~ msgid "July" -#~ msgstr "Julio" - -#~ msgctxt "alt. month" -#~ msgid "August" -#~ msgstr "Agosto" - -#~ msgctxt "alt. month" -#~ msgid "September" -#~ msgstr "Septiembre" - -#~ msgctxt "alt. month" -#~ msgid "October" -#~ msgstr "Octubre" - -#~ msgctxt "alt. month" -#~ msgid "November" -#~ msgstr "Noviembre" - -#~ msgctxt "alt. month" -#~ msgid "December" -#~ msgstr "Diciembre" - -#~ msgid "This is not a valid IPv6 address." -#~ msgstr "Esta no es una dirección IPv6 válida." - -#~ msgctxt "String to return when truncating text" -#~ msgid "%(truncated_text)s…" -#~ msgstr "%(truncated_text)s…" - -#~ msgid "or" -#~ msgstr "o" - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid "%d year" -#~ msgid_plural "%d years" -#~ msgstr[0] "%d año" -#~ msgstr[1] "%d años" - -#~ msgid "%d month" -#~ msgid_plural "%d months" -#~ msgstr[0] "%d mes" -#~ msgstr[1] "%d meses" - -#~ msgid "%d week" -#~ msgid_plural "%d weeks" -#~ msgstr[0] "%d semana" -#~ msgstr[1] "%d semanas" - -#~ msgid "%d day" -#~ msgid_plural "%d days" -#~ msgstr[0] "%d día" -#~ msgstr[1] "%d días" - -#~ msgid "%d hour" -#~ msgid_plural "%d hours" -#~ msgstr[0] "%d hora" -#~ msgstr[1] "%d horas" - -#~ msgid "%d minute" -#~ msgid_plural "%d minutes" -#~ msgstr[0] "%d minuto" -#~ msgstr[1] "%d minutos" - -#~ msgid "Forbidden" -#~ msgstr "Prohibido" - -#~ msgid "CSRF verification failed. Request aborted." -#~ msgstr "Se falló la verificación CSRF. Se abortó la solicitud." - -#~ msgid "You are seeing this message because this HTTPS site requires a “Referer header” to be sent by your Web browser, but none was sent. This header is required for security reasons, to ensure that your browser is not being hijacked by third parties." -#~ msgstr "Estás viendo este mensaje porque este sitio HTTPS requiere que tu navegador Web envie un “Referer header”, pero no se la envió. Esta cabecedera se requiere por razones de seguridad, para asegurar que tu navegador no sea secuestrado por terceros." - -#~ msgid "If you have configured your browser to disable “Referer” headers, please re-enable them, at least for this site, or for HTTPS connections, or for “same-origin” requests." -#~ msgstr "Si has configurado su navegador para deshabilitar las cabecederas “Referer”, vuelva a habilitarlos, al menos para este sitio, o para conexiones HTTPS, o para solicitudes del “same-origin”. " - -#~ msgid "If you are using the tag or including the “Referrer-Policy: no-referrer” header, please remove them. The CSRF protection requires the “Referer” header to do strict referer checking. If you’re concerned about privacy, use alternatives like for links to third-party sites." -#~ msgstr "Si estás usando la eqtigueta o estás incluyendo la cabecedera “Referrer-Policy: no-referrer”, quitalas por favor. La protección CSRF require la cabecedera “Referer” para hacer verficación “strict referer“. Si te preocupa la privacidad, utiliza alternativas como para sitios de terceros." - -#~ msgid "You are seeing this message because this site requires a CSRF cookie when submitting forms. This cookie is required for security reasons, to ensure that your browser is not being hijacked by third parties." -#~ msgstr "Estás viendo este mensaje porque este sitio requiere un cookie CSRF cuando se envie formularios. Este cookie se requiere por razones de seguridad, para asegurar que tu navegador no sea secuestrado por terceros." - -#~ msgid "If you have configured your browser to disable cookies, please re-enable them, at least for this site, or for “same-origin” requests." -#~ msgstr "Si has configurado su navegador para deshabilitar los cookies, vuelva a habilitarlos, al menos para este sitio, o para conexiones HTTPS, o para solicitudes del “same-origin”. " - -#~ msgid "More information is available with DEBUG=True." -#~ msgstr "Más información es disponible con DEBUG=True." - -#~ msgid "No year specified" -#~ msgstr "Ningun año fue especificado" - -#~ msgid "Date out of range" -#~ msgstr "Fecha fuera de rango" - -#~ msgid "No month specified" -#~ msgstr "Ningun mes fue especificado" - -#~ msgid "No day specified" -#~ msgstr "Ningun día fue especificado" - -#~ msgid "No week specified" -#~ msgstr "Ninguna semana fue especificado" - -#~ msgid "No %(verbose_name_plural)s available" -#~ msgstr "No %(verbose_name_plural)s disponible" - -#~ msgid "Future %(verbose_name_plural)s not available because %(class_name)s.allow_future is False." -#~ msgstr "%(verbose_name_plural)s del futuro no está disponible porque %(class_name)s.allow_future es False." - -#~ msgid "Invalid date string “%(datestr)s” given format “%(format)s”" -#~ msgstr "Cadena de fecha invalida “%(datestr)s” dado el formato “%(format)s”" - -#~ msgid "No %(verbose_name)s found matching the query" -#~ msgstr "No se encontró ningún %(verbose_name)s correspondiente a la búsqueda" - -#~ msgid "Page is not “last”, nor can it be converted to an int." -#~ msgstr "Página no es “last”, ni puede ser convertido en un int." - -#~ msgid "Invalid page (%(page_number)s): %(message)s" -#~ msgstr "Página invalida (%(page_number)s): %(message)s" - -#~ msgid "Empty list and “%(class_name)s.allow_empty” is False." -#~ msgstr "Lista vacia y “%(class_name)s.allow_empty” es False." - -#~ msgid "Directory indexes are not allowed here." -#~ msgstr "Indices directorios no se permiten aquí." - -#~ msgid "“%(path)s” does not exist" -#~ msgstr "“%(path)s” no existe" - -#~ msgid "Index of %(directory)s" -#~ msgstr "Indice de %(directory)s" - -#~ msgid "Django: the Web framework for perfectionists with deadlines." -#~ msgstr "Django: el estructura Web para perfeccionistas con fechas límites." - -#~ msgid "View release notes for Django %(version)s" -#~ msgstr "Ver notas de lanzamiento por Django %(version)s" - -#~ msgid "The install worked successfully! Congratulations!" -#~ msgstr "¡La instalación fue exitoso! ¡Felicidades!" - -#~ msgid "You are seeing this page because DEBUG=True is in your settings file and you have not configured any URLs." -#~ msgstr "Estás viendo esta pagina porque DEBUG=True está en tu archivo de configuración y no has configurado ningún URL." - -#~ msgid "Django Documentation" -#~ msgstr "Documentación de Django" - -#~ msgid "Topics, references, & how-to’s" -#~ msgstr "Tópicos, referencias, & instrucciones paso-a-paso" - -#~ msgid "Tutorial: A Polling App" -#~ msgstr "Tutorial: Una aplicación polling" - -#~ msgid "Get started with Django" -#~ msgstr "Empezar con Django" - -#~ msgid "Django Community" -#~ msgstr "Comunidad Django" - -#~ msgid "Connect, get help, or contribute" -#~ msgstr "Conectarse, encontrar ayuda, o contribuir" - -#~ msgid "Attempting to connect to qpid with SASL mechanism %s" -#~ msgstr "Intentando conectar con qpid con mecanismo SASL %s" - -#~ msgid "Connected to qpid with SASL mechanism %s" -#~ msgstr "Conectado con qpid con mecanismo SASL %s" - -#~ msgid "Unable to connect to qpid with SASL mechanism %s" -#~ msgstr "No se pudo conectar con qpid con mecanismo SASL %s" - -#~ msgid "1 second ago" -#~ msgstr "Hace 1 segundo" - -#~ msgid "1 minute ago" -#~ msgstr "Hace 1 minuto" - -#~ msgid "1 hour ago" -#~ msgstr "Hace 1 hora" - -#~ msgid "%(time)s" -#~ msgstr "%(time)s" - -#~ msgid "yesterday" -#~ msgstr "ayer" - -# TODO cc @mouse this could be grammatically incorrect if the time said 1 o'clock -# a working clock is broken twice a day! -#~ msgid "yesterday at %(time)s" -#~ msgstr "ayer a las %(time)s" - -#~ msgid "%(weekday)s" -#~ msgstr "%(weekday)s" - -# TODO cc @mouse this could be grammatically incorrect if the time said 1 o'clock -# a working clock is broken twice a day! -#~ msgid "%(weekday)s at %(time)s" -#~ msgstr "%(weekday)s a las %(time)s" - -#~ msgid "%(month_name)s %(day)s" -#~ msgstr "%(day)s %(month_name)s" - -# TODO cc @mouse this could be grammatically incorrect if the time said 1 o'clock -# a working clock is broken twice a day! -#~ msgid "%(month_name)s %(day)s at %(time)s" -#~ msgstr "%(day)s %(month_name)s a las %(time)s" - -#~ msgid "%(month_name)s %(day)s, %(year)s" -#~ msgstr "%(day)s %(month_name)s, %(year)s" - -# TODO cc @mouse this could be grammatically incorrect if the time said 1 o'clock -# a working clock is broken twice a day! -#~ msgid "%(month_name)s %(day)s, %(year)s at %(time)s" -#~ msgstr "%(day)s %(month_name)s, %(year)s a las %(time)s" - -#~ msgid "%(weekday)s, %(month_name)s %(day)s" -#~ msgstr "%(weekday)s, %(day)s %(month_name)s" - -#~ msgid "%(commas)s and %(last)s" -#~ msgstr "%(commas)s y %(last)s" - -#~ msgctxt "law" -#~ msgid "right" -#~ msgstr "justo" - -#~ msgctxt "good" -#~ msgid "right" -#~ msgstr "correcto" - -#~ msgctxt "organization" -#~ msgid "club" -#~ msgstr "club" - -#~ msgctxt "stick" -#~ msgid "club" -#~ msgstr "garrote" - #, fuzzy #~| msgid "Started" #~ msgid "Getting Started" @@ -3630,9 +4369,6 @@ msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" #~ msgid "Tags" #~ msgstr "Etiquetas" -#~ msgid "Your shelves" -#~ msgstr "Tus estantes" - #~ msgid "Your lists" #~ msgstr "Tus listas" diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index c05a9f7a..ee2f7936 100644 --- a/locale/fr_FR/LC_MESSAGES/django.po +++ b/locale/fr_FR/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-09 21:53+0000\n" +"POT-Creation-Date: 2021-04-26 09:56-0700\n" "PO-Revision-Date: 2021-04-05 12:44+0100\n" "Last-Translator: Fabien Basmaison \n" "Language-Team: Mouse Reeve \n" @@ -18,35 +18,66 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: bookwyrm/forms.py:226 +#: bookwyrm/forms.py:224 msgid "A user with this email already exists." msgstr "Cet email est déjà associé à un compte." -#: bookwyrm/forms.py:240 +#: bookwyrm/forms.py:238 msgid "One Day" msgstr "Un jour" -#: bookwyrm/forms.py:241 +#: bookwyrm/forms.py:239 msgid "One Week" msgstr "Une semaine" -#: bookwyrm/forms.py:242 +#: bookwyrm/forms.py:240 msgid "One Month" msgstr "Un mois" -#: bookwyrm/forms.py:243 +#: bookwyrm/forms.py:241 msgid "Does Not Expire" msgstr "Sans expiration" -#: bookwyrm/forms.py:248 +#: bookwyrm/forms.py:246 #, python-format msgid "%(count)d uses" msgstr "%(count)d utilisations" -#: bookwyrm/forms.py:251 +#: bookwyrm/forms.py:249 msgid "Unlimited" msgstr "Sans limite" +#: bookwyrm/forms.py:293 +msgid "List Order" +msgstr "" + +#: bookwyrm/forms.py:294 +#, fuzzy +#| msgid "Title" +msgid "Book Title" +msgstr "Titre" + +#: bookwyrm/forms.py:295 bookwyrm/templates/snippets/create_status_form.html:31 +#: bookwyrm/templates/user/shelf.html:80 bookwyrm/templates/user/shelf.html:110 +msgid "Rating" +msgstr "Note" + +#: bookwyrm/forms.py:297 bookwyrm/templates/lists/list.html:82 +msgid "Sort By" +msgstr "" + +#: bookwyrm/forms.py:301 +#, fuzzy +#| msgid "Sorted ascending" +msgid "Ascending" +msgstr "Trié par ordre croissant" + +#: bookwyrm/forms.py:302 +#, fuzzy +#| msgid "Sorted ascending" +msgid "Descending" +msgstr "Trié par ordre croissant" + #: bookwyrm/models/fields.py:24 #, python-format msgid "%(value)s is not a valid remote_id" @@ -57,7 +88,7 @@ msgstr "%(value)s n’est pas une remote_id valide." msgid "%(value)s is not a valid username" msgstr "%(value)s n’est pas un nom de compte valide." -#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:152 +#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:153 msgid "username" msgstr "nom du compte :" @@ -65,23 +96,23 @@ msgstr "nom du compte :" msgid "A user with that username already exists." msgstr "Ce nom est déjà associé à un compte." -#: bookwyrm/settings.py:150 +#: bookwyrm/settings.py:152 msgid "English" msgstr "English" -#: bookwyrm/settings.py:151 +#: bookwyrm/settings.py:153 msgid "German" msgstr "Deutsch" -#: bookwyrm/settings.py:152 +#: bookwyrm/settings.py:154 msgid "Spanish" msgstr "Español" -#: bookwyrm/settings.py:153 +#: bookwyrm/settings.py:155 msgid "French" msgstr "Français" -#: bookwyrm/settings.py:154 +#: bookwyrm/settings.py:156 msgid "Simplified Chinese" msgstr "简化字" @@ -137,58 +168,48 @@ msgstr "Ajouter une couverture" msgid "Failed to load cover" msgstr "La couverture n’a pu être chargée" -#: bookwyrm/templates/book/book.html:74 -msgid "ISBN:" -msgstr "ISBN :" - -#: bookwyrm/templates/book/book.html:81 -#: bookwyrm/templates/book/edit_book.html:223 -msgid "OCLC Number:" -msgstr "Numéro OCLC :" - -#: bookwyrm/templates/book/book.html:88 -#: bookwyrm/templates/book/edit_book.html:227 -msgid "ASIN:" -msgstr "ASIN :" - -#: bookwyrm/templates/book/book.html:97 +#: bookwyrm/templates/book/book.html:82 msgid "View on OpenLibrary" msgstr "Voir sur OpenLibrary" -#: bookwyrm/templates/book/book.html:117 +#: bookwyrm/templates/book/book.html:102 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" msgstr[0] "(%(review_count)s critique)" msgstr[1] "(%(review_count)s critiques)" -#: bookwyrm/templates/book/book.html:129 +#: bookwyrm/templates/book/book.html:114 msgid "Add Description" msgstr "Ajouter une description" -#: bookwyrm/templates/book/book.html:136 +#: bookwyrm/templates/book/book.html:121 #: bookwyrm/templates/book/edit_book.html:107 #: bookwyrm/templates/lists/form.html:12 msgid "Description:" msgstr "Description :" -#: bookwyrm/templates/book/book.html:140 -#: bookwyrm/templates/book/edit_book.html:237 +#: bookwyrm/templates/book/book.html:125 +#: bookwyrm/templates/book/edit_book.html:240 #: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 #: bookwyrm/templates/preferences/edit_user.html:70 +#: bookwyrm/templates/settings/edit_server.html:68 +#: bookwyrm/templates/settings/federated_server.html:93 #: bookwyrm/templates/settings/site.html:93 #: bookwyrm/templates/snippets/readthrough.html:75 #: 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/start_reading_modal.html:34 +#: bookwyrm/templates/user_admin/user_moderation_actions.html:38 msgid "Save" msgstr "Enregistrer" -#: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:190 +#: bookwyrm/templates/book/book.html:126 bookwyrm/templates/book/book.html:175 #: bookwyrm/templates/book/cover_modal.html:32 -#: bookwyrm/templates/book/edit_book.html:238 +#: bookwyrm/templates/book/edit_book.html:241 #: bookwyrm/templates/edit_author.html:79 -#: bookwyrm/templates/moderation/report_modal.html:32 +#: bookwyrm/templates/moderation/report_modal.html:34 +#: bookwyrm/templates/settings/federated_server.html:94 #: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 #: bookwyrm/templates/snippets/goal_form.html:32 #: bookwyrm/templates/snippets/readthrough.html:76 @@ -199,73 +220,116 @@ msgstr "Enregistrer" msgid "Cancel" msgstr "Annuler" -#: bookwyrm/templates/book/book.html:150 +#: bookwyrm/templates/book/book.html:135 #, python-format msgid "%(count)s editions" msgstr "%(count)s éditions" -#: bookwyrm/templates/book/book.html:158 +#: bookwyrm/templates/book/book.html:143 #, python-format msgid "This edition is on your %(shelf_name)s shelf." -msgstr "Cette édition est sur votre étagère %(shelf_name)s." +msgstr "" +"Cette édition est sur votre étagère %(shelf_name)s." -#: bookwyrm/templates/book/book.html:164 +#: bookwyrm/templates/book/book.html:149 #, python-format -msgid "A different edition of this book is on your %(shelf_name)s shelf." -msgstr "Une édition différente de ce livre existe sur votre étagère %(shelf_name)s." +msgid "" +"A different edition of this book is on your %(shelf_name)s shelf." +msgstr "" +"Une édition différente de ce livre existe sur " +"votre étagère %(shelf_name)s." -#: bookwyrm/templates/book/book.html:173 +#: bookwyrm/templates/book/book.html:158 msgid "Your reading activity" msgstr "Votre activité de lecture" -#: bookwyrm/templates/book/book.html:175 +#: bookwyrm/templates/book/book.html:160 msgid "Add read dates" msgstr "Ajouter des dates de lecture" -#: bookwyrm/templates/book/book.html:180 +#: bookwyrm/templates/book/book.html:165 msgid "You don't have any reading activity for this book." msgstr "Vous n’avez aucune activité de lecture pour ce livre" -#: bookwyrm/templates/book/book.html:187 +#: bookwyrm/templates/book/book.html:172 msgid "Create" msgstr "Créer" -#: bookwyrm/templates/book/book.html:209 +#: bookwyrm/templates/book/book.html:194 msgid "Subjects" msgstr "Sujets" -#: bookwyrm/templates/book/book.html:221 +#: bookwyrm/templates/book/book.html:206 msgid "Places" msgstr "Lieux" -#: bookwyrm/templates/book/book.html:232 bookwyrm/templates/layout.html:64 +#: bookwyrm/templates/book/book.html:217 bookwyrm/templates/layout.html:65 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search_results.html:91 #: bookwyrm/templates/user/user_layout.html:62 msgid "Lists" msgstr "Listes" -#: bookwyrm/templates/book/book.html:243 +#: bookwyrm/templates/book/book.html:228 msgid "Add to list" msgstr "Ajouter à la liste" -#: bookwyrm/templates/book/book.html:253 +#: bookwyrm/templates/book/book.html:238 #: bookwyrm/templates/book/cover_modal.html:31 -#: bookwyrm/templates/lists/list.html:90 +#: bookwyrm/templates/lists/list.html:133 msgid "Add" msgstr "Ajouter" -#: bookwyrm/templates/book/book.html:291 +#: bookwyrm/templates/book/book.html:254 +#, fuzzy +#| msgid "Review" +msgid "Reviews" +msgstr "Critique" + +#: bookwyrm/templates/book/book.html:259 +#, fuzzy +#| msgid "Your shelves" +msgid "Your reviews" +msgstr "Vos étagères" + +#: bookwyrm/templates/book/book.html:265 +#, fuzzy +#| msgid "Your Account" +msgid "Your comments" +msgstr "Votre compte" + +#: bookwyrm/templates/book/book.html:271 +#, fuzzy +#| msgid "Your books" +msgid "Your quotes" +msgstr "Vos livres" + +#: bookwyrm/templates/book/book.html:305 msgid "rated it" msgstr "l’a noté" +#: bookwyrm/templates/book/book_identifiers.html:8 +msgid "ISBN:" +msgstr "ISBN :" + +#: bookwyrm/templates/book/book_identifiers.html:15 +#: bookwyrm/templates/book/edit_book.html:226 +msgid "OCLC Number:" +msgstr "Numéro OCLC :" + +#: bookwyrm/templates/book/book_identifiers.html:22 +#: bookwyrm/templates/book/edit_book.html:230 +msgid "ASIN:" +msgstr "ASIN :" + #: bookwyrm/templates/book/cover_modal.html:17 -#: bookwyrm/templates/book/edit_book.html:175 +#: bookwyrm/templates/book/edit_book.html:178 msgid "Upload cover:" msgstr "Charger une couverture :" #: bookwyrm/templates/book/cover_modal.html:23 -#: bookwyrm/templates/book/edit_book.html:181 +#: bookwyrm/templates/book/edit_book.html:184 msgid "Load cover from url:" msgstr "Charger la couverture depuis une URL :" @@ -349,78 +413,78 @@ msgstr "Titre :" msgid "Subtitle:" msgstr "Sous‑titre :" -#: bookwyrm/templates/book/edit_book.html:112 +#: bookwyrm/templates/book/edit_book.html:113 msgid "Series:" msgstr "Série :" -#: bookwyrm/templates/book/edit_book.html:117 +#: bookwyrm/templates/book/edit_book.html:120 msgid "Series number:" msgstr "Numéro dans la série :" -#: bookwyrm/templates/book/edit_book.html:123 +#: bookwyrm/templates/book/edit_book.html:126 msgid "Publisher:" msgstr "Éditeur :" -#: bookwyrm/templates/book/edit_book.html:125 +#: bookwyrm/templates/book/edit_book.html:128 msgid "Separate multiple publishers with commas." msgstr "Séparez plusieurs éditeurs par une virgule." -#: bookwyrm/templates/book/edit_book.html:132 +#: bookwyrm/templates/book/edit_book.html:135 msgid "First published date:" msgstr "Première date de publication :" -#: bookwyrm/templates/book/edit_book.html:140 +#: bookwyrm/templates/book/edit_book.html:143 msgid "Published date:" msgstr "Date de publication :" -#: bookwyrm/templates/book/edit_book.html:149 +#: bookwyrm/templates/book/edit_book.html:152 msgid "Authors" msgstr "Auteurs ou autrices" -#: bookwyrm/templates/book/edit_book.html:155 +#: bookwyrm/templates/book/edit_book.html:158 #, python-format msgid "Remove %(name)s" msgstr "Supprimer %(name)s" -#: bookwyrm/templates/book/edit_book.html:160 +#: bookwyrm/templates/book/edit_book.html:163 msgid "Add Authors:" msgstr "Ajouter des auteurs ou autrices :" -#: bookwyrm/templates/book/edit_book.html:161 +#: bookwyrm/templates/book/edit_book.html:164 msgid "John Doe, Jane Smith" msgstr "Claude Dupont, Dominique Durand" -#: bookwyrm/templates/book/edit_book.html:167 -#: bookwyrm/templates/user/shelf.html:75 +#: bookwyrm/templates/book/edit_book.html:170 +#: bookwyrm/templates/user/shelf.html:74 msgid "Cover" msgstr "Couverture" -#: bookwyrm/templates/book/edit_book.html:194 +#: bookwyrm/templates/book/edit_book.html:197 msgid "Physical Properties" msgstr "Propriétés physiques" -#: bookwyrm/templates/book/edit_book.html:195 +#: bookwyrm/templates/book/edit_book.html:198 #: bookwyrm/templates/book/format_filter.html:5 msgid "Format:" msgstr "Format :" -#: bookwyrm/templates/book/edit_book.html:203 +#: bookwyrm/templates/book/edit_book.html:206 msgid "Pages:" msgstr "Pages :" -#: bookwyrm/templates/book/edit_book.html:210 +#: bookwyrm/templates/book/edit_book.html:213 msgid "Book Identifiers" msgstr "Identifiants du livre" -#: bookwyrm/templates/book/edit_book.html:211 +#: bookwyrm/templates/book/edit_book.html:214 msgid "ISBN 13:" msgstr "ISBN 13 :" -#: bookwyrm/templates/book/edit_book.html:215 +#: bookwyrm/templates/book/edit_book.html:218 msgid "ISBN 10:" msgstr "ISBN 10 :" -#: bookwyrm/templates/book/edit_book.html:219 +#: bookwyrm/templates/book/edit_book.html:222 #: bookwyrm/templates/edit_author.html:59 msgid "Openlibrary key:" msgstr "Clé Openlibrary :" @@ -464,17 +528,17 @@ msgstr "%(pages)s pages" msgid "%(languages)s language" msgstr "%(languages)s langues" -#: bookwyrm/templates/book/publisher_info.html:65 +#: bookwyrm/templates/book/publisher_info.html:64 #, python-format msgid "Published %(date)s by %(publisher)s." msgstr "Publié %(date)s par %(publisher)s." -#: bookwyrm/templates/book/publisher_info.html:67 +#: bookwyrm/templates/book/publisher_info.html:66 #, python-format msgid "Published %(date)s" msgstr "Publié %(date)s" -#: bookwyrm/templates/book/publisher_info.html:69 +#: bookwyrm/templates/book/publisher_info.html:68 #, python-format msgid "Published by %(publisher)s." msgstr "Publié par %(publisher)s." @@ -505,18 +569,24 @@ msgstr "Communauté fédérée" #: bookwyrm/templates/directory/directory.html:6 #: bookwyrm/templates/directory/directory.html:11 -#: bookwyrm/templates/layout.html:92 +#: bookwyrm/templates/layout.html:93 msgid "Directory" msgstr "Répertoire" #: bookwyrm/templates/directory/directory.html:19 msgid "Make your profile discoverable to other BookWyrm users." -msgstr "Autoriser d’autres utilisateurs ou utilisatrices de BookWyrm à découvrir votre profil." +msgstr "" +"Autoriser d’autres utilisateurs ou utilisatrices de BookWyrm à découvrir " +"votre profil." #: bookwyrm/templates/directory/directory.html:26 #, python-format -msgid "You can opt-out at any time in your profile settings." -msgstr "Vous pouvez décider de ne plus y figurer à n’importe quel moment depuis vos paramètres de profil." +msgid "" +"You can opt-out at any time in your profile settings." +msgstr "" +"Vous pouvez décider de ne plus y figurer à n’importe quel moment depuis vos " +"paramètres de profil." #: bookwyrm/templates/directory/directory.html:31 #: bookwyrm/templates/snippets/goal_card.html:22 @@ -629,7 +699,7 @@ msgid "Email address:" msgstr "Adresse email :" #: bookwyrm/templates/discover/landing_layout.html:70 -#: bookwyrm/templates/moderation/report_modal.html:31 +#: bookwyrm/templates/moderation/report_modal.html:33 msgid "Submit" msgstr "Valider" @@ -682,8 +752,12 @@ msgstr "Bien le bonjour," #: bookwyrm/templates/email/html_layout.html:21 #, python-format -msgid "BookWyrm hosted on %(site_name)s" -msgstr "BookWyrm, hébergé par %(site_name)s" +msgid "" +"BookWyrm hosted on " +"%(site_name)s" +msgstr "" +"BookWyrm, hébergé par %(site_name)s" #: bookwyrm/templates/email/html_layout.html:23 msgid "Email preference" @@ -701,13 +775,21 @@ msgstr "S’enregistrer maintenant" #: bookwyrm/templates/email/invite/html_content.html:15 #, python-format -msgid "Learn more about this instance." -msgstr "En savoir plus sur cette instance." +msgid "" +"Learn more about this instance." +msgstr "" +"En savoir plus sur cette " +"instance." #: bookwyrm/templates/email/invite/text_content.html:4 #, python-format -msgid "You're invited to join %(site_name)s! Click the link below to create an account." -msgstr "Vous avez reçu une invitation à rejoindre %(site_name)s ! Cliquez le lien suivant pour créer un compte." +msgid "" +"You're invited to join %(site_name)s! Click the link below to create an " +"account." +msgstr "" +"Vous avez reçu une invitation à rejoindre %(site_name)s ! Cliquez le lien " +"suivant pour créer un compte." #: bookwyrm/templates/email/invite/text_content.html:8 msgid "Learn more about this instance:" @@ -716,8 +798,13 @@ msgstr "En savoir plus sur cete instance :" #: bookwyrm/templates/email/password_reset/html_content.html:6 #: bookwyrm/templates/email/password_reset/text_content.html:4 #, python-format -msgid "You requested to reset your %(site_name)s password. Click the link below to set a new password and log in to your account." -msgstr "Une demande de réinitialisation de votre mot de passe sur %(site_name)s a été initialisée. Cliquez le lien suivant pour définir un nouveau mot de passe et vous connecter à votre compte." +msgid "" +"You requested to reset your %(site_name)s password. Click the link below to " +"set a new password and log in to your account." +msgstr "" +"Une demande de réinitialisation de votre mot de passe sur %(site_name)s a été initialisée. Cliquez le lien suivant pour définir un nouveau mot de " +"passe et vous connecter à votre compte." #: bookwyrm/templates/email/password_reset/html_content.html:9 #: bookwyrm/templates/password_reset.html:4 @@ -729,8 +816,11 @@ msgstr "Changez le mot de passe" #: bookwyrm/templates/email/password_reset/html_content.html:13 #: bookwyrm/templates/email/password_reset/text_content.html:8 -msgid "If you didn't request to reset your password, you can ignore this email." -msgstr "Si vous n’avez pas demandé la réinitialisation de votre mot de passe, vous pouvez ignorer cet email." +msgid "" +"If you didn't request to reset your password, you can ignore this email." +msgstr "" +"Si vous n’avez pas demandé la réinitialisation de votre mot de passe, vous " +"pouvez ignorer cet email." #: bookwyrm/templates/email/password_reset/subject.html:2 #, python-format @@ -743,7 +833,7 @@ msgid "Direct Messages with %(username)s" msgstr "Messages directs avec %(username)s" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:87 +#: bookwyrm/templates/layout.html:88 msgid "Direct Messages" msgstr "Messages directs" @@ -776,17 +866,21 @@ msgid "Local" msgstr "Local" #: bookwyrm/templates/feed/feed.html:25 +#: bookwyrm/templates/settings/edit_server.html:40 msgid "Federated" msgstr "Fédéré" #: bookwyrm/templates/feed/feed.html:33 #, python-format msgid "load 0 unread status(es)" -msgstr "charger le(s) 0 statut(s) non lu(s)" +msgstr "" +"charger le(s) 0 statut(s) non lu(s)" #: bookwyrm/templates/feed/feed.html:48 -msgid "There aren't any activities right now! Try following a user to get started" -msgstr "Aucune activité pour l’instant ! Abonnez‑vous à quelqu’un pour commencer" +msgid "" +"There aren't any activities right now! Try following a user to get started" +msgstr "" +"Aucune activité pour l’instant ! Abonnez‑vous à quelqu’un pour commencer" #: bookwyrm/templates/feed/feed.html:56 #: bookwyrm/templates/get_started/users.html:6 @@ -798,13 +892,14 @@ msgid "Updates" msgstr "Mises à jour" #: bookwyrm/templates/feed/feed_layout.html:11 -#: bookwyrm/templates/layout.html:58 +#: bookwyrm/templates/layout.html:59 #: bookwyrm/templates/user/books_header.html:3 msgid "Your books" msgstr "Vos livres" #: bookwyrm/templates/feed/feed_layout.html:13 -msgid "There are no books here right now! Try searching for a book to get started" +msgid "" +"There are no books here right now! Try searching for a book to get started" msgstr "Aucun livre ici pour l’instant ! Cherchez un livre pour commencer" #: bookwyrm/templates/feed/feed_layout.html:24 @@ -853,7 +948,7 @@ msgid "What are you reading?" msgstr "Que lisez‑vous ?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/lists/list.html:58 +#: bookwyrm/templates/lists/list.html:101 msgid "Search for a book" msgstr "Chercher un livre" @@ -867,14 +962,16 @@ msgstr "Aucun livre trouvé pour « %(query)s »" #: bookwyrm/templates/get_started/books.html:11 #, python-format msgid "You can add books when you start using %(site_name)s." -msgstr "Vous pourrez ajouter des livres lorsque vous commencerez à utiliser %(site_name)s." +msgstr "" +"Vous pourrez ajouter des livres lorsque vous commencerez à utiliser " +"%(site_name)s." #: bookwyrm/templates/get_started/books.html:16 #: bookwyrm/templates/get_started/books.html:17 #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 -#: bookwyrm/templates/layout.html:37 bookwyrm/templates/layout.html:38 -#: bookwyrm/templates/lists/list.html:62 +#: bookwyrm/templates/layout.html:38 bookwyrm/templates/layout.html:39 +#: bookwyrm/templates/lists/list.html:105 msgid "Search" msgstr "Chercher" @@ -888,7 +985,7 @@ msgid "Popular on %(site_name)s" msgstr "Populaire sur %(site_name)s" #: bookwyrm/templates/get_started/books.html:51 -#: bookwyrm/templates/lists/list.html:75 +#: bookwyrm/templates/lists/list.html:118 msgid "No books found" msgstr "Aucun livre trouvé" @@ -957,8 +1054,12 @@ msgid "Show this account in suggested users:" msgstr "Afficher ce compte dans ceux suggérés :" #: bookwyrm/templates/get_started/profile.html:52 -msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users." -msgstr "Votre compte sera listé dans le répertoire et pourra être recommandé à d’autres utilisateurs ou utilisatrices de BookWyrm." +msgid "" +"Your account will show up in the directory, and may be recommended to other " +"BookWyrm users." +msgstr "" +"Votre compte sera listé dans le répertoire et pourra être recommandé à " +"d’autres utilisateurs ou utilisatrices de BookWyrm." #: bookwyrm/templates/get_started/users.html:11 msgid "Search for a user" @@ -982,8 +1083,12 @@ msgstr "Modifier le défi" #: bookwyrm/templates/goal.html:30 #: bookwyrm/templates/snippets/goal_card.html:13 #, python-format -msgid "Set a goal for how many books you'll finish reading in %(year)s, and track your progress throughout the year." -msgstr "Définissez un nombre de livre à lire comme objectif pour %(year)s, et suivezvotre progression au fil de l’année." +msgid "" +"Set a goal for how many books you'll finish reading in %(year)s, and track " +"your progress throughout the year." +msgstr "" +"Définissez un nombre de livre à lire comme objectif pour %(year)s, et " +"suivezvotre progression au fil de l’année." #: bookwyrm/templates/goal.html:39 #, python-format @@ -1001,7 +1106,7 @@ msgid "%(username)s's %(year)s Books" msgstr "Livres de %(username)s en %(year)s" #: bookwyrm/templates/import.html:5 bookwyrm/templates/import.html:9 -#: bookwyrm/templates/layout.html:97 +#: bookwyrm/templates/layout.html:98 msgid "Import Books" msgstr "Importer des livres" @@ -1022,6 +1127,7 @@ msgid "Privacy setting for imported reviews:" msgstr "Confidentialité des critiques importées :" #: bookwyrm/templates/import.html:48 +#: bookwyrm/templates/settings/server_blocklist.html:64 msgid "Import" msgstr "Importer" @@ -1064,8 +1170,12 @@ msgstr "Items non importés" #: bookwyrm/templates/import_status.html:44 #, python-format -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 n’ayant pu être importés." +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 n’ayant " +"pu être importés." #: bookwyrm/templates/import_status.html:79 msgid "Select all" @@ -1086,12 +1196,12 @@ msgstr "Livre" #: bookwyrm/templates/import_status.html:115 #: bookwyrm/templates/snippets/create_status_form.html:10 -#: bookwyrm/templates/user/shelf.html:76 +#: bookwyrm/templates/user/shelf.html:75 bookwyrm/templates/user/shelf.html:93 msgid "Title" msgstr "Titre" #: bookwyrm/templates/import_status.html:118 -#: bookwyrm/templates/user/shelf.html:77 +#: bookwyrm/templates/user/shelf.html:76 bookwyrm/templates/user/shelf.html:96 msgid "Author" msgstr "Auteur ou autrice" @@ -1128,86 +1238,94 @@ msgstr "Résultats de recherche pour « %(query)s »" msgid "Matching Books" msgstr "Livres correspondants" -#: bookwyrm/templates/layout.html:33 +#: bookwyrm/templates/layout.html:34 msgid "Search for a book or user" msgstr "Chercher un livre ou un compte" -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/layout.html:48 +#: bookwyrm/templates/layout.html:48 bookwyrm/templates/layout.html:49 msgid "Main navigation menu" msgstr "Menu de navigation principal " -#: bookwyrm/templates/layout.html:61 +#: bookwyrm/templates/layout.html:62 msgid "Feed" msgstr "Fil d’actualité" -#: bookwyrm/templates/layout.html:102 +#: bookwyrm/templates/layout.html:103 msgid "Settings" msgstr "Paramètres" -#: bookwyrm/templates/layout.html:111 -#: bookwyrm/templates/settings/admin_layout.html:24 +#: bookwyrm/templates/layout.html:112 +#: bookwyrm/templates/settings/admin_layout.html:31 #: bookwyrm/templates/settings/manage_invite_requests.html:15 #: bookwyrm/templates/settings/manage_invites.html:3 #: bookwyrm/templates/settings/manage_invites.html:15 msgid "Invites" msgstr "Invitations" -#: bookwyrm/templates/layout.html:118 +#: bookwyrm/templates/layout.html:119 msgid "Admin" msgstr "Admin" -#: bookwyrm/templates/layout.html:125 +#: bookwyrm/templates/layout.html:126 msgid "Log out" msgstr "Se déconnecter" -#: bookwyrm/templates/layout.html:133 bookwyrm/templates/layout.html:134 +#: bookwyrm/templates/layout.html:134 bookwyrm/templates/layout.html:135 #: bookwyrm/templates/notifications.html:6 #: bookwyrm/templates/notifications.html:10 msgid "Notifications" msgstr "Notifications" -#: bookwyrm/templates/layout.html:151 bookwyrm/templates/layout.html:155 +#: bookwyrm/templates/layout.html:152 bookwyrm/templates/layout.html:156 #: bookwyrm/templates/login.html:17 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" msgstr "Nom du compte :" -#: bookwyrm/templates/layout.html:156 +#: bookwyrm/templates/layout.html:157 msgid "password" msgstr "Mot de passe" -#: bookwyrm/templates/layout.html:157 bookwyrm/templates/login.html:36 +#: bookwyrm/templates/layout.html:158 bookwyrm/templates/login.html:36 msgid "Forgot your password?" msgstr "Mot de passe oublié ?" -#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:10 +#: bookwyrm/templates/layout.html:161 bookwyrm/templates/login.html:10 #: bookwyrm/templates/login.html:33 msgid "Log in" msgstr "Se connecter" -#: bookwyrm/templates/layout.html:168 +#: bookwyrm/templates/layout.html:169 msgid "Join" msgstr "Rejoindre" -#: bookwyrm/templates/layout.html:191 +#: bookwyrm/templates/layout.html:195 msgid "About this server" msgstr "À propos de ce serveur" -#: bookwyrm/templates/layout.html:195 +#: bookwyrm/templates/layout.html:199 msgid "Contact site admin" msgstr "Contacter l’administrateur du site" -#: bookwyrm/templates/layout.html:202 -#, python-format -msgid "Support %(site_name)s on %(support_title)s" -msgstr "Soutenez %(site_name)s avec %(support_title)s" - #: bookwyrm/templates/layout.html:206 -msgid "BookWyrm is open source software. You can contribute or report issues on GitHub." -msgstr "BookWyrm est un logiciel libre. Vous pouvez contribuer ou faire des rapports de bogues via GitHub." +#, python-format +msgid "" +"Support %(site_name)s on " +"%(support_title)s" +msgstr "" +"Soutenez %(site_name)s avec " +"%(support_title)s" + +#: bookwyrm/templates/layout.html:210 +msgid "" +"BookWyrm is open source software. You can contribute or report issues on GitHub." +msgstr "" +"BookWyrm est un logiciel libre. Vous pouvez contribuer ou faire des rapports " +"de bogues via GitHub." #: bookwyrm/templates/lists/create_form.html:5 -#: bookwyrm/templates/lists/lists.html:19 +#: bookwyrm/templates/lists/lists.html:20 msgid "Create List" msgstr "Créer une liste" @@ -1271,7 +1389,7 @@ msgid "Anyone can suggest books, subject to your approval" msgstr "N’importe qui peut suggérer des livres, soumis à votre approbation" #: bookwyrm/templates/lists/form.html:31 -#: bookwyrm/templates/moderation/reports.html:24 +#: bookwyrm/templates/moderation/reports.html:25 msgid "Open" msgstr "Ouverte" @@ -1279,42 +1397,76 @@ msgstr "Ouverte" msgid "Anyone can add books to this list" msgstr "N’importe qui peut suggérer des livres" -#: bookwyrm/templates/lists/list.html:17 +#: bookwyrm/templates/lists/list.html:19 +msgid "You successfully suggested a book for this list!" +msgstr "" + +#: bookwyrm/templates/lists/list.html:21 +#, fuzzy +#| msgid "Anyone can add books to this list" +msgid "You successfully added a book to this list!" +msgstr "N’importe qui peut suggérer des livres" + +#: bookwyrm/templates/lists/list.html:27 msgid "This list is currently empty" msgstr "Cette liste est vide actuellement" -#: bookwyrm/templates/lists/list.html:35 +#: bookwyrm/templates/lists/list.html:46 #, python-format msgid "Added by %(username)s" msgstr "Ajoutée par %(username)s" -#: bookwyrm/templates/lists/list.html:41 +#: bookwyrm/templates/lists/list.html:58 +#, fuzzy +#| msgid "Sent" +msgid "Set" +msgstr "Envoyé(e)s" + +#: bookwyrm/templates/lists/list.html:61 +#, fuzzy +#| msgid "List curation:" +msgid "List position" +msgstr "Modération de la liste :" + +#: bookwyrm/templates/lists/list.html:67 #: bookwyrm/templates/snippets/shelf_selector.html:26 msgid "Remove" msgstr "Supprimer" -#: bookwyrm/templates/lists/list.html:54 +#: bookwyrm/templates/lists/list.html:80 bookwyrm/templates/lists/list.html:92 +#, fuzzy +#| msgid "Your Lists" +msgid "Sort List" +msgstr "Vos listes" + +#: bookwyrm/templates/lists/list.html:86 +#, fuzzy +#| msgid "Directory" +msgid "Direction" +msgstr "Répertoire" + +#: bookwyrm/templates/lists/list.html:97 msgid "Add Books" msgstr "Ajouter des livres" -#: bookwyrm/templates/lists/list.html:54 +#: bookwyrm/templates/lists/list.html:97 msgid "Suggest Books" msgstr "Suggérer des livres" -#: bookwyrm/templates/lists/list.html:63 +#: bookwyrm/templates/lists/list.html:106 msgid "search" msgstr "Chercher" -#: bookwyrm/templates/lists/list.html:69 +#: bookwyrm/templates/lists/list.html:112 msgid "Clear search" msgstr "Vider la requête" -#: bookwyrm/templates/lists/list.html:74 +#: bookwyrm/templates/lists/list.html:117 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "Aucun livre trouvé pour la requête « %(query)s »" -#: bookwyrm/templates/lists/list.html:90 +#: bookwyrm/templates/lists/list.html:133 msgid "Suggest" msgstr "Suggérer" @@ -1339,59 +1491,39 @@ msgstr "Contacter un administrateur pour obtenir une invitation" msgid "More about this site" msgstr "En savoir plus sur ce site" -#: bookwyrm/templates/moderation/report.html:5 #: bookwyrm/templates/moderation/report.html:6 +#: bookwyrm/templates/moderation/report.html:7 #: bookwyrm/templates/moderation/report_preview.html:6 #, python-format msgid "Report #%(report_id)s: %(username)s" msgstr "Signalement #%(report_id)s : %(username)s" -#: bookwyrm/templates/moderation/report.html:10 +#: bookwyrm/templates/moderation/report.html:11 msgid "Back to reports" msgstr "Retour aux signalements" -#: bookwyrm/templates/moderation/report.html:18 -msgid "Actions" -msgstr "Actions" - -#: bookwyrm/templates/moderation/report.html:19 -msgid "View user profile" -msgstr "Voir le profil" - -#: bookwyrm/templates/moderation/report.html:22 -#: bookwyrm/templates/snippets/status/status_options.html:35 -#: bookwyrm/templates/snippets/user_options.html:13 -msgid "Send direct message" -msgstr "Envoyer un message direct" - -#: bookwyrm/templates/moderation/report.html:27 -msgid "Deactivate user" -msgstr "Désactiver le compte" - -#: bookwyrm/templates/moderation/report.html:29 -msgid "Reactivate user" -msgstr "Réactiver le compte" - -#: bookwyrm/templates/moderation/report.html:36 +#: bookwyrm/templates/moderation/report.html:23 msgid "Moderator Comments" msgstr "Commentaires de l’équipe de modération" -#: bookwyrm/templates/moderation/report.html:54 +#: bookwyrm/templates/moderation/report.html:41 #: bookwyrm/templates/snippets/create_status.html:28 -#: bookwyrm/templates/snippets/create_status_form.html:44 +#: bookwyrm/templates/snippets/create_status_form.html:53 msgid "Comment" msgstr "Commentaire" -#: bookwyrm/templates/moderation/report.html:59 +#: bookwyrm/templates/moderation/report.html:46 msgid "Reported statuses" msgstr "Statuts signalés" -#: bookwyrm/templates/moderation/report.html:61 +#: bookwyrm/templates/moderation/report.html:48 msgid "No statuses reported" msgstr "Aucun statut signalé" -#: bookwyrm/templates/moderation/report.html:67 -msgid "Statuses has been deleted" +#: bookwyrm/templates/moderation/report.html:54 +#, fuzzy +#| msgid "Statuses has been deleted" +msgid "Status has been deleted" msgstr "Les statuts ont été supprimés" #: bookwyrm/templates/moderation/report_modal.html:6 @@ -1399,12 +1531,14 @@ msgstr "Les statuts ont été supprimés" msgid "Report @%(username)s" msgstr "Signaler @%(username)s" -#: bookwyrm/templates/moderation/report_modal.html:21 +#: bookwyrm/templates/moderation/report_modal.html:23 #, python-format msgid "This report will be sent to %(site_name)s's moderators for review." -msgstr "Ce signalement sera envoyé à l’équipe de modération de %(site_name)s pour traitement." +msgstr "" +"Ce signalement sera envoyé à l’équipe de modération de %(site_name)s pour " +"traitement." -#: bookwyrm/templates/moderation/report_modal.html:22 +#: bookwyrm/templates/moderation/report_modal.html:24 msgid "More info about this report:" msgstr "En savoir plus sur ce signalement :" @@ -1431,21 +1565,21 @@ msgid "Reports: %(server_name)s" msgstr "Signalements : %(server_name)s" #: bookwyrm/templates/moderation/reports.html:8 -#: bookwyrm/templates/moderation/reports.html:16 -#: bookwyrm/templates/settings/admin_layout.html:28 +#: bookwyrm/templates/moderation/reports.html:17 +#: bookwyrm/templates/settings/admin_layout.html:35 msgid "Reports" msgstr "Signalements" -#: bookwyrm/templates/moderation/reports.html:13 +#: bookwyrm/templates/moderation/reports.html:14 #, python-format msgid "Reports: %(server_name)s" msgstr "Signalements: %(server_name)s" -#: bookwyrm/templates/moderation/reports.html:27 +#: bookwyrm/templates/moderation/reports.html:28 msgid "Resolved" msgstr "Résolus" -#: bookwyrm/templates/moderation/reports.html:34 +#: bookwyrm/templates/moderation/reports.html:37 msgid "No reports found." msgstr "Aucun signalement trouvé." @@ -1455,18 +1589,30 @@ msgstr "Supprimer les notifications" #: bookwyrm/templates/notifications.html:53 #, python-format -msgid "favorited your review of %(book_title)s" -msgstr "a ajouté votre critique de %(book_title)s à ses favoris" +msgid "" +"favorited your review of %(book_title)s" +msgstr "" +"a ajouté votre critique de %(book_title)s à ses favoris" #: bookwyrm/templates/notifications.html:55 #, python-format -msgid "favorited your comment on %(book_title)s" -msgstr "a ajouté votre commentaire sur %(book_title)s à ses favoris" +msgid "" +"favorited your comment on %(book_title)s" +msgstr "" +"a ajouté votre commentaire sur " +"%(book_title)s à ses favoris" #: bookwyrm/templates/notifications.html:57 #, python-format -msgid "favorited your quote from %(book_title)s" -msgstr "a ajouté votre citation de %(book_title)s à ses favoris" +msgid "" +"favorited your quote from %(book_title)s" +msgstr "" +"a ajouté votre citation de %(book_title)s à ses favoris" #: bookwyrm/templates/notifications.html:59 #, python-format @@ -1475,18 +1621,30 @@ msgstr "a ajouté votre statut à ses favoris" #: bookwyrm/templates/notifications.html:64 #, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "vous a mentionné dans sa critique de %(book_title)s" +msgid "" +"mentioned you in a review of " +"%(book_title)s" +msgstr "" +"vous a mentionné dans sa critique de " +"%(book_title)s" #: bookwyrm/templates/notifications.html:66 #, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "vous a mentionné dans son commentaire sur %(book_title)s" +msgid "" +"mentioned you in a comment on " +"%(book_title)s" +msgstr "" +"vous a mentionné dans son commentaire sur " +"%(book_title)s" #: bookwyrm/templates/notifications.html:68 #, python-format -msgid "mentioned you in a quote from %(book_title)s" -msgstr "vous a mentionné dans sa citation de %(book_title)s" +msgid "" +"mentioned you in a quote from " +"%(book_title)s" +msgstr "" +"vous a mentionné dans sa citation de " +"%(book_title)s" #: bookwyrm/templates/notifications.html:70 #, python-format @@ -1495,23 +1653,39 @@ msgstr "vous a mentionné dans son statut" #: bookwyrm/templates/notifications.html:75 #, python-format -msgid "replied to your review of %(book_title)s" -msgstr "a répondu à votre critique de %(book_title)s" +msgid "" +"replied to your review of %(book_title)s" +msgstr "" +"a répondu à votre critique de %(book_title)s" #: bookwyrm/templates/notifications.html:77 #, python-format -msgid "replied to your comment on %(book_title)s" -msgstr "a répondu à votre commentaire sur %(book_title)s" +msgid "" +"replied to your comment on %(book_title)s" +msgstr "" +"a répondu à votre commentaire sur %(book_title)s" #: bookwyrm/templates/notifications.html:79 #, python-format -msgid "replied to your quote from %(book_title)s" -msgstr "a répondu à votre citation de %(book_title)s" +msgid "" +"replied to your quote from %(book_title)s" +msgstr "" +"a répondu à votre citation de %(book_title)s" #: bookwyrm/templates/notifications.html:81 #, python-format -msgid "replied to your status" -msgstr "a répondu à votre statut" +msgid "" +"replied to your status" +msgstr "" +"a répondu à votre statut" #: bookwyrm/templates/notifications.html:85 msgid "followed you" @@ -1523,18 +1697,30 @@ msgstr "vous a envoyé une demande d’abonnement" #: bookwyrm/templates/notifications.html:94 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "a partagé votre critique de %(book_title)s" +msgid "" +"boosted your review of %(book_title)s" +msgstr "" +"a partagé votre critique de %(book_title)s" #: bookwyrm/templates/notifications.html:96 #, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "a partagé votre commentaire sur %(book_title)s" +msgid "" +"boosted your comment on%(book_title)s" +msgstr "" +"a partagé votre commentaire sur " +"%(book_title)s" #: bookwyrm/templates/notifications.html:98 #, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "a partagé votre citation de %(book_title)s" +msgid "" +"boosted your quote from %(book_title)s" +msgstr "" +"a partagé votre citation de %(book_title)s" #: bookwyrm/templates/notifications.html:100 #, python-format @@ -1543,13 +1729,21 @@ msgstr "a partagé votre statut" #: bookwyrm/templates/notifications.html:104 #, python-format -msgid " added %(book_title)s to your list \"%(list_name)s\"" -msgstr " a ajouté %(book_title)s à votre liste « %(list_name)s »" +msgid "" +" added %(book_title)s to your list " +"\"%(list_name)s\"" +msgstr "" +" a ajouté %(book_title)s à votre " +"liste « %(list_name)s »" #: bookwyrm/templates/notifications.html:106 #, python-format -msgid " suggested adding %(book_title)s to your list \"%(list_name)s\"" -msgstr " a suggégré l’ajout de %(book_title)s à votre liste « %(list_name)s »" +msgid "" +" suggested adding %(book_title)s to " +"your list \"%(list_name)s\"" +msgstr "" +" a suggégré l’ajout de %(book_title)s " +"à votre liste « %(list_name)s »" #: bookwyrm/templates/notifications.html:110 #, python-format @@ -1559,7 +1753,8 @@ msgstr "Votre importation est terminée." #: bookwyrm/templates/notifications.html:113 #, python-format msgid "A new report needs moderation." -msgstr "Un nouveau signalement a besoin d’être traité." +msgstr "" +"Un nouveau signalement a besoin d’être traité." #: bookwyrm/templates/notifications.html:139 msgid "You're all caught up!" @@ -1572,7 +1767,8 @@ msgstr "Confirmez le mot de passe :" #: bookwyrm/templates/password_reset_request.html:14 msgid "A link to reset your password will be sent to your email address" -msgstr "Un lien pour changer votre mot de passe sera envoyé à votre addresse email" +msgstr "" +"Un lien pour changer votre mot de passe sera envoyé à votre addresse email" #: bookwyrm/templates/password_reset_request.html:28 msgid "Reset password" @@ -1606,12 +1802,17 @@ msgstr "Modifier le profil" #: bookwyrm/templates/preferences/edit_user.html:46 msgid "Show set reading goal prompt in feed:" -msgstr "Afficher le message pour définir un défi lecture dans le fil d’actualité :" +msgstr "" +"Afficher le message pour définir un défi lecture dans le fil d’actualité :" #: bookwyrm/templates/preferences/edit_user.html:62 #, python-format -msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users." -msgstr "Votre compte sera listé dans le répertoire et pourra être recommandé à d’autres utilisateurs ou utilisatrices de BookWyrm." +msgid "" +"Your account will show up in the directory, and may " +"be recommended to other BookWyrm users." +msgstr "" +"Votre compte sera listé dans le répertoire et " +"pourra être recommandé à d’autres utilisateurs ou utilisatrices de BookWyrm." #: bookwyrm/templates/preferences/edit_user.html:65 msgid "Preferred Timezone: " @@ -1654,118 +1855,197 @@ msgstr "Aucune liste trouvée pour « %(query)s »" msgid "Administration" msgstr "Administration" -#: bookwyrm/templates/settings/admin_layout.html:15 +#: bookwyrm/templates/settings/admin_layout.html:22 msgid "Manage Users" msgstr "Gérer les comptes" -#: bookwyrm/templates/settings/admin_layout.html:19 -#: bookwyrm/templates/settings/user_admin.html:3 -#: bookwyrm/templates/settings/user_admin.html:10 +#: bookwyrm/templates/settings/admin_layout.html:26 +#: bookwyrm/templates/user_admin/user_admin.html:3 +#: bookwyrm/templates/user_admin/user_admin.html:10 msgid "Users" msgstr "Comptes" -#: bookwyrm/templates/settings/admin_layout.html:32 +#: bookwyrm/templates/settings/admin_layout.html:39 #: bookwyrm/templates/settings/federation.html:3 #: bookwyrm/templates/settings/federation.html:5 msgid "Federated Servers" msgstr "Serveurs fédérés" -#: bookwyrm/templates/settings/admin_layout.html:37 +#: bookwyrm/templates/settings/admin_layout.html:44 msgid "Instance Settings" msgstr "Paramètres de l’instance" -#: bookwyrm/templates/settings/admin_layout.html:41 +#: bookwyrm/templates/settings/admin_layout.html:48 #: bookwyrm/templates/settings/site.html:4 #: bookwyrm/templates/settings/site.html:6 msgid "Site Settings" msgstr "Paramètres du site" -#: bookwyrm/templates/settings/admin_layout.html:44 +#: bookwyrm/templates/settings/admin_layout.html:51 #: bookwyrm/templates/settings/site.html:13 msgid "Instance Info" msgstr "Information sur l’instance" -#: bookwyrm/templates/settings/admin_layout.html:45 +#: bookwyrm/templates/settings/admin_layout.html:52 #: bookwyrm/templates/settings/site.html:39 msgid "Images" msgstr "Images" -#: bookwyrm/templates/settings/admin_layout.html:46 +#: bookwyrm/templates/settings/admin_layout.html:53 #: bookwyrm/templates/settings/site.html:59 msgid "Footer Content" msgstr "Contenu du pied de page" -#: bookwyrm/templates/settings/admin_layout.html:47 +#: bookwyrm/templates/settings/admin_layout.html:54 #: bookwyrm/templates/settings/site.html:77 msgid "Registration" msgstr "Enregistrement" -#: bookwyrm/templates/settings/federated_server.html:7 +#: bookwyrm/templates/settings/edit_server.html:3 +#: bookwyrm/templates/settings/edit_server.html:6 +#: bookwyrm/templates/settings/edit_server.html:20 +#: bookwyrm/templates/settings/federation.html:9 +#: bookwyrm/templates/settings/federation.html:10 +#: bookwyrm/templates/settings/server_blocklist.html:3 +#: bookwyrm/templates/settings/server_blocklist.html:20 +#, fuzzy +#| msgid "Add cover" +msgid "Add server" +msgstr "Ajouter une couverture" + +#: bookwyrm/templates/settings/edit_server.html:7 +#: bookwyrm/templates/settings/federated_server.html:12 +#: bookwyrm/templates/settings/server_blocklist.html:7 msgid "Back to server list" msgstr "Retour à la liste des serveurs" -#: bookwyrm/templates/settings/federated_server.html:12 -msgid "Details" -msgstr "Détails" +#: bookwyrm/templates/settings/edit_server.html:16 +#: bookwyrm/templates/settings/server_blocklist.html:16 +#, fuzzy +#| msgid "Import book" +msgid "Import block list" +msgstr "Importer le livre" -#: bookwyrm/templates/settings/federated_server.html:15 -msgid "Software:" -msgstr "Logiciel :" +#: bookwyrm/templates/settings/edit_server.html:30 +#, fuzzy +#| msgid "Instance Name:" +msgid "Instance:" +msgstr "Nom de l’instance :" -#: bookwyrm/templates/settings/federated_server.html:19 -msgid "Version:" -msgstr "Description :" - -#: bookwyrm/templates/settings/federated_server.html:23 +#: bookwyrm/templates/settings/edit_server.html:37 +#: bookwyrm/templates/settings/federated_server.html:29 +#: bookwyrm/templates/user_admin/user_info.html:34 msgid "Status:" msgstr "Statut :" -#: bookwyrm/templates/settings/federated_server.html:30 +#: bookwyrm/templates/settings/edit_server.html:41 +#: bookwyrm/templates/settings/federated_server.html:9 +#, fuzzy +#| msgid "Block" +msgid "Blocked" +msgstr "Bloquer" + +#: bookwyrm/templates/settings/edit_server.html:48 +#: bookwyrm/templates/settings/federated_server.html:21 +#: bookwyrm/templates/user_admin/user_info.html:26 +msgid "Software:" +msgstr "Logiciel :" + +#: bookwyrm/templates/settings/edit_server.html:55 +#: bookwyrm/templates/settings/federated_server.html:25 +#: bookwyrm/templates/user_admin/user_info.html:30 +msgid "Version:" +msgstr "Description :" + +#: bookwyrm/templates/settings/edit_server.html:64 +msgid "Notes:" +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:18 +msgid "Details" +msgstr "Détails" + +#: bookwyrm/templates/settings/federated_server.html:36 #: bookwyrm/templates/user/user_layout.html:50 msgid "Activity" msgstr "Activité" -#: bookwyrm/templates/settings/federated_server.html:33 +#: bookwyrm/templates/settings/federated_server.html:39 msgid "Users:" msgstr "Comptes :" -#: bookwyrm/templates/settings/federated_server.html:36 -#: bookwyrm/templates/settings/federated_server.html:43 +#: bookwyrm/templates/settings/federated_server.html:42 +#: bookwyrm/templates/settings/federated_server.html:49 msgid "View all" msgstr "Voir tous" -#: bookwyrm/templates/settings/federated_server.html:40 +#: bookwyrm/templates/settings/federated_server.html:46 msgid "Reports:" msgstr "Signalements :" -#: bookwyrm/templates/settings/federated_server.html:47 +#: bookwyrm/templates/settings/federated_server.html:53 msgid "Followed by us:" msgstr "Suivi par nous :" -#: bookwyrm/templates/settings/federated_server.html:53 +#: bookwyrm/templates/settings/federated_server.html:59 msgid "Followed by them:" msgstr "Suivi par eux :" -#: bookwyrm/templates/settings/federated_server.html:59 +#: bookwyrm/templates/settings/federated_server.html:65 msgid "Blocked by us:" msgstr "Bloqués par nous :" -#: bookwyrm/templates/settings/federation.html:13 +#: bookwyrm/templates/settings/federated_server.html:77 +#: bookwyrm/templates/user_admin/user_info.html:39 +msgid "Notes" +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:80 +#, fuzzy +#| msgid "Edit Book" +msgid "Edit" +msgstr "Modifier le livre" + +#: bookwyrm/templates/settings/federated_server.html:100 +#: bookwyrm/templates/user_admin/user_moderation_actions.html:3 +msgid "Actions" +msgstr "Actions" + +#: bookwyrm/templates/settings/federated_server.html:104 +#: bookwyrm/templates/snippets/block_button.html:5 +msgid "Block" +msgstr "Bloquer" + +#: bookwyrm/templates/settings/federated_server.html:105 +msgid "All users from this instance will be deactivated." +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:110 +#: bookwyrm/templates/snippets/block_button.html:10 +msgid "Un-block" +msgstr "Débloquer" + +#: bookwyrm/templates/settings/federated_server.html:111 +msgid "All users from this instance will be re-activated." +msgstr "" + +#: bookwyrm/templates/settings/federation.html:20 +#: bookwyrm/templates/user_admin/server_filter.html:5 msgid "Server name" msgstr "Nom du serveur" -#: bookwyrm/templates/settings/federation.html:17 +#: bookwyrm/templates/settings/federation.html:24 msgid "Date federated" msgstr "Date de fédération" -#: bookwyrm/templates/settings/federation.html:21 +#: bookwyrm/templates/settings/federation.html:28 msgid "Software" msgstr "Logiciel" -#: bookwyrm/templates/settings/federation.html:24 +#: bookwyrm/templates/settings/federation.html:31 #: bookwyrm/templates/settings/manage_invite_requests.html:44 #: bookwyrm/templates/settings/status_filter.html:5 -#: bookwyrm/templates/settings/user_admin.html:32 +#: bookwyrm/templates/user_admin/user_admin.html:34 msgid "Status" msgstr "Statut" @@ -1875,6 +2155,27 @@ msgstr "Nombre de fois utilisée" msgid "No active invites" msgstr "Aucune invitation active" +#: bookwyrm/templates/settings/server_blocklist.html:6 +#, fuzzy +#| msgid "Import Books" +msgid "Import Blocklist" +msgstr "Importer des livres" + +#: bookwyrm/templates/settings/server_blocklist.html:26 +#: bookwyrm/templates/snippets/goal_progress.html:5 +msgid "Success!" +msgstr "Bravo !" + +#: bookwyrm/templates/settings/server_blocklist.html:30 +#, fuzzy +#| msgid "Successfully imported" +msgid "Successfully blocked:" +msgstr "Importation réussie" + +#: bookwyrm/templates/settings/server_blocklist.html:32 +msgid "Failed:" +msgstr "" + #: bookwyrm/templates/settings/site.html:15 msgid "Instance Name:" msgstr "Nom de l’instance :" @@ -1931,67 +2232,28 @@ msgstr "Autoriser les demandes d’invitation :" msgid "Registration closed text:" msgstr "Texte affiché lorsque les enregistrements sont clos :" -#: bookwyrm/templates/settings/user_admin.html:7 -#, python-format -msgid "Users: %(server_name)s" -msgstr "Comptes : %(server_name)s" - -#: bookwyrm/templates/settings/user_admin.html:20 -msgid "Username" -msgstr "Nom du compte" - -#: bookwyrm/templates/settings/user_admin.html:24 -msgid "Date Added" -msgstr "Date d’ajout" - -#: bookwyrm/templates/settings/user_admin.html:28 -msgid "Last Active" -msgstr "Dernière activité" - -#: bookwyrm/templates/settings/user_admin.html:36 -msgid "Remote server" -msgstr "Serveur distant" - -#: bookwyrm/templates/settings/user_admin.html:45 -msgid "Active" -msgstr "Actif" - -#: bookwyrm/templates/settings/user_admin.html:45 -msgid "Inactive" -msgstr "Inactif" - -#: bookwyrm/templates/settings/user_admin.html:50 -msgid "Not set" -msgstr "Non défini" - -#: bookwyrm/templates/snippets/block_button.html:5 -msgid "Block" -msgstr "Bloquer" - -#: bookwyrm/templates/snippets/block_button.html:10 -msgid "Un-block" -msgstr "Débloquer" - #: bookwyrm/templates/snippets/book_cover.html:20 #: bookwyrm/templates/snippets/search_result_text.html:10 msgid "No cover" msgstr "Aucune couverture" -#: bookwyrm/templates/snippets/book_titleby.html:3 +#: bookwyrm/templates/snippets/book_titleby.html:4 #, python-format msgid "%(title)s by " msgstr "%(title)s par " #: bookwyrm/templates/snippets/boost_button.html:8 #: bookwyrm/templates/snippets/boost_button.html:9 -#: bookwyrm/templates/snippets/status/status_body.html:52 -#: bookwyrm/templates/snippets/status/status_body.html:53 -msgid "Boost status" -msgstr "Partager le statut" +#, fuzzy +#| msgid "boosted" +msgid "Boost" +msgstr "partagé" +#: bookwyrm/templates/snippets/boost_button.html:15 #: bookwyrm/templates/snippets/boost_button.html:16 -#: bookwyrm/templates/snippets/boost_button.html:17 -msgid "Un-boost status" +#, fuzzy +#| msgid "Un-boost status" +msgid "Un-boost" msgstr "Annuler le partage du statut" #: bookwyrm/templates/snippets/content_warning_field.html:3 @@ -2010,58 +2272,60 @@ msgstr "Critique" msgid "Quote" msgstr "Citation" -#: bookwyrm/templates/snippets/create_status_form.html:18 +#: bookwyrm/templates/snippets/create_status_form.html:20 msgid "Comment:" msgstr "Commentaire :" -#: bookwyrm/templates/snippets/create_status_form.html:20 +#: bookwyrm/templates/snippets/create_status_form.html:22 msgid "Quote:" msgstr "Citation :" -#: bookwyrm/templates/snippets/create_status_form.html:22 +#: bookwyrm/templates/snippets/create_status_form.html:24 msgid "Review:" msgstr "Critique :" -#: bookwyrm/templates/snippets/create_status_form.html:29 -#: bookwyrm/templates/user/shelf.html:81 -msgid "Rating" -msgstr "Note" +#: bookwyrm/templates/snippets/create_status_form.html:42 +#: bookwyrm/templates/snippets/status/layout.html:30 +#: bookwyrm/templates/snippets/status/layout.html:48 +#: bookwyrm/templates/snippets/status/layout.html:49 +msgid "Reply" +msgstr "Répondre" -#: bookwyrm/templates/snippets/create_status_form.html:56 +#: bookwyrm/templates/snippets/create_status_form.html:67 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:16 msgid "Progress:" msgstr "Progression :" -#: bookwyrm/templates/snippets/create_status_form.html:63 +#: bookwyrm/templates/snippets/create_status_form.html:75 #: bookwyrm/templates/snippets/readthrough_form.html:22 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30 msgid "pages" msgstr "pages" -#: bookwyrm/templates/snippets/create_status_form.html:64 +#: bookwyrm/templates/snippets/create_status_form.html:76 #: bookwyrm/templates/snippets/readthrough_form.html:23 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31 msgid "percent" msgstr "pourcent" -#: bookwyrm/templates/snippets/create_status_form.html:69 +#: bookwyrm/templates/snippets/create_status_form.html:82 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:36 #, python-format msgid "of %(pages)s pages" msgstr "sur %(pages)s pages" -#: bookwyrm/templates/snippets/create_status_form.html:81 +#: bookwyrm/templates/snippets/create_status_form.html:97 msgid "Include spoiler alert" msgstr "Afficher une alerte spoiler" -#: bookwyrm/templates/snippets/create_status_form.html:88 +#: bookwyrm/templates/snippets/create_status_form.html:104 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:19 msgid "Private" msgstr "Privé" -#: bookwyrm/templates/snippets/create_status_form.html:99 +#: bookwyrm/templates/snippets/create_status_form.html:115 msgid "Post" msgstr "Publier" @@ -2071,24 +2335,27 @@ msgstr "Supprimer ces dates de lecture ?" #: bookwyrm/templates/snippets/delete_readthrough_modal.html:7 #, python-format -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 "Vous avez supprimé ce résumé et ses %(count)s progressions associées." #: bookwyrm/templates/snippets/delete_readthrough_modal.html:15 #: bookwyrm/templates/snippets/follow_request_buttons.html:13 +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:391 msgid "Delete" msgstr "Supprimer" #: bookwyrm/templates/snippets/fav_button.html:7 -#: bookwyrm/templates/snippets/fav_button.html:8 -#: bookwyrm/templates/snippets/status/status_body.html:56 -#: bookwyrm/templates/snippets/status/status_body.html:57 -msgid "Like status" -msgstr "Ajouter le statut aux favoris" +#: bookwyrm/templates/snippets/fav_button.html:9 +msgid "Like" +msgstr "" #: bookwyrm/templates/snippets/fav_button.html:15 #: bookwyrm/templates/snippets/fav_button.html:16 -msgid "Un-like status" +#, fuzzy +#| msgid "Un-like status" +msgid "Un-like" msgstr "Retirer le statut des favoris" #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:7 @@ -2128,14 +2395,6 @@ msgstr "Accepter" msgid "No rating" msgstr "Aucune note" -#: bookwyrm/templates/snippets/form_rate_stars.html:45 -#: bookwyrm/templates/snippets/stars.html:7 -#, python-format -msgid "%(rating)s star" -msgid_plural "%(rating)s stars" -msgstr[0] "%(rating)s étoile" -msgstr[1] "%(rating)s étoiles" - #: bookwyrm/templates/snippets/generated_status/goal.html:1 #, python-format msgid "set a goal to read %(counter)s book in %(year)s" @@ -2145,17 +2404,24 @@ msgstr[1] "souhaite lire %(counter)s livres en %(year)s" #: bookwyrm/templates/snippets/generated_status/rating.html:3 #, python-format -msgid "Rated %(title)s: %(display_rating)s star" -msgid_plural "Rated %(title)s: %(display_rating)s stars" +msgid "" +"Rated %(title)s: %(display_rating)s star" +msgid_plural "" +"Rated %(title)s: %(display_rating)s stars" msgstr[0] "A noté %(title)s : %(display_rating)s star" -msgstr[1] "A noté %(title)s : %(display_rating)s stars" +msgstr[1] "" +"A noté %(title)s : %(display_rating)s stars" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Critique de « %(book_title)s » (%(display_rating)s star): %(review_title)s" -msgstr[1] "Critique de « %(book_title)s » (%(display_rating)s stars) : %(review_title)s" +msgid "" +"Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "" +"Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "" +"Critique de « %(book_title)s » (%(display_rating)s star): %(review_title)s" +msgstr[1] "" +"Critique de « %(book_title)s » (%(display_rating)s stars) : %(review_title)s" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8 #, python-format @@ -2164,8 +2430,12 @@ msgstr "Critique de « %(book_title)s » : %(review_title)s" #: bookwyrm/templates/snippets/goal_card.html:23 #, python-format -msgid "You can set or change your reading goal any time from your profile page" -msgstr "Vous pouvez définir ou changer votre défi lecture à n’importe quel moment depuis votre profil" +msgid "" +"You can set or change your reading goal any time from your profile page" +msgstr "" +"Vous pouvez définir ou changer votre défi lecture à n’importe quel moment " +"depuis votre profil" #: bookwyrm/templates/snippets/goal_form.html:9 msgid "Reading goal:" @@ -2190,10 +2460,6 @@ msgstr "Publier sur le fil d’actualité" msgid "Set goal" msgstr "Valider ce défi" -#: bookwyrm/templates/snippets/goal_progress.html:5 -msgid "Success!" -msgstr "Bravo !" - #: bookwyrm/templates/snippets/goal_progress.html:7 #, python-format msgid "%(percent)s%% complete!" @@ -2201,13 +2467,20 @@ msgstr "%(percent)s%% terminé !" #: bookwyrm/templates/snippets/goal_progress.html:10 #, python-format -msgid "You've read %(read_count)s of %(goal_count)s books." -msgstr "Vous avez lu %(read_count)s sur %(goal_count)s livres." +msgid "" +"You've read %(read_count)s of %(goal_count)s books." +msgstr "" +"Vous avez lu %(read_count)s sur %(goal_count)s livres." #: bookwyrm/templates/snippets/goal_progress.html:12 #, python-format -msgid "%(username)s has read %(read_count)s of %(goal_count)s books." -msgstr "%(username)s a lu %(read_count)s sur %(goal_count)s livres." +msgid "" +"%(username)s has read %(read_count)s of %(goal_count)s " +"books." +msgstr "" +"%(username)s a lu %(read_count)s sur %(goal_count)s " +"livres." #: bookwyrm/templates/snippets/page_text.html:4 #, python-format @@ -2313,22 +2586,22 @@ msgid "Report" msgstr "Signaler" #: bookwyrm/templates/snippets/rss_title.html:5 -#: bookwyrm/templates/snippets/status/status_header.html:21 +#: bookwyrm/templates/snippets/status/status_header.html:34 msgid "rated" msgstr "a noté" #: bookwyrm/templates/snippets/rss_title.html:7 -#: bookwyrm/templates/snippets/status/status_header.html:23 +#: bookwyrm/templates/snippets/status/status_header.html:36 msgid "reviewed" msgstr "a écrit une critique de" #: bookwyrm/templates/snippets/rss_title.html:9 -#: bookwyrm/templates/snippets/status/status_header.html:25 +#: bookwyrm/templates/snippets/status/status_header.html:38 msgid "commented on" msgstr "a commenté" #: bookwyrm/templates/snippets/rss_title.html:11 -#: bookwyrm/templates/snippets/status/status_header.html:27 +#: bookwyrm/templates/snippets/status/status_header.html:40 msgid "quoted" msgstr "a cité" @@ -2351,7 +2624,7 @@ msgid "Finish \"%(book_title)s\"" msgstr "Terminer « %(book_title)s »" #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:5 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:35 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:34 msgid "Update progress" msgstr "Progression de la mise à jour" @@ -2372,7 +2645,7 @@ msgstr "Terminer la lecture" msgid "Want to read" msgstr "Je veux le lire" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:48 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:45 #, python-format msgid "Remove from %(name)s" msgstr "Retirer de %(name)s" @@ -2387,64 +2660,63 @@ msgstr "Commencer « %(book_title)s »" msgid "Want to Read \"%(book_title)s\"" msgstr "A envie de lire « %(book_title)s »" +#: bookwyrm/templates/snippets/status/content_status.html:67 +#: bookwyrm/templates/snippets/trimmed_text.html:14 +msgid "Show more" +msgstr "Déplier" + +#: bookwyrm/templates/snippets/status/content_status.html:82 +#: bookwyrm/templates/snippets/trimmed_text.html:29 +msgid "Show less" +msgstr "Replier" + +#: bookwyrm/templates/snippets/status/content_status.html:112 +msgid "Open image in new window" +msgstr "Ouvrir l’image dans une nouvelle fenêtre" + +#: bookwyrm/templates/snippets/status/layout.html:22 +#: bookwyrm/templates/snippets/status/status_options.html:17 +msgid "Delete status" +msgstr "Supprimer le statut" + +#: bookwyrm/templates/snippets/status/layout.html:52 +#: bookwyrm/templates/snippets/status/layout.html:53 +msgid "Boost status" +msgstr "Partager le statut" + +#: bookwyrm/templates/snippets/status/layout.html:56 +#: bookwyrm/templates/snippets/status/layout.html:57 +msgid "Like status" +msgstr "Ajouter le statut aux favoris" + #: bookwyrm/templates/snippets/status/status.html:9 msgid "boosted" msgstr "partagé" -#: bookwyrm/templates/snippets/status/status_body.html:27 -#: bookwyrm/templates/snippets/status/status_options.html:18 -msgid "Delete status" -msgstr "Supprimer le statut" - -#: bookwyrm/templates/snippets/status/status_body.html:35 -#: bookwyrm/templates/snippets/status/status_body.html:48 -#: bookwyrm/templates/snippets/status/status_body.html:49 -msgid "Reply" -msgstr "Répondre" - -#: bookwyrm/templates/snippets/status/status_content.html:52 -#: bookwyrm/templates/snippets/trimmed_text.html:15 -msgid "Show more" -msgstr "Déplier" - -#: bookwyrm/templates/snippets/status/status_content.html:67 -#: bookwyrm/templates/snippets/trimmed_text.html:30 -msgid "Show less" -msgstr "Replier" - -#: bookwyrm/templates/snippets/status/status_content.html:97 -msgid "Open image in new window" -msgstr "Ouvrir l’image dans une nouvelle fenêtre" - -#: bookwyrm/templates/snippets/status/status_header.html:32 +#: bookwyrm/templates/snippets/status/status_header.html:44 #, python-format -msgid "replied to %(username)s's review" -msgstr "a répondu à la critique de %(username)s" - -#: bookwyrm/templates/snippets/status/status_header.html:34 -#, python-format -msgid "replied to %(username)s's comment" -msgstr "a répondu au commentaire de %(username)s" - -#: bookwyrm/templates/snippets/status/status_header.html:36 -#, python-format -msgid "replied to %(username)s's quote" -msgstr "a répondu à la citation de %(username)s" - -#: bookwyrm/templates/snippets/status/status_header.html:38 -#, python-format -msgid "replied to %(username)s's status" -msgstr "a répondu au statut de %(username)s" +msgid "" +"replied to %(username)s's status" +msgstr "" +"a répondu au statut de %(username)s" #: bookwyrm/templates/snippets/status/status_options.html:7 #: bookwyrm/templates/snippets/user_options.html:7 msgid "More options" msgstr "Plus d’options" -#: bookwyrm/templates/snippets/status/status_options.html:27 +#: bookwyrm/templates/snippets/status/status_options.html:26 msgid "Delete & re-draft" msgstr "Supprimer & recommencer la rédaction" +#: bookwyrm/templates/snippets/status/status_options.html:35 +#: bookwyrm/templates/snippets/user_options.html:13 +#: bookwyrm/templates/user_admin/user_moderation_actions.html:6 +msgid "Send direct message" +msgstr "Envoyer un message direct" + #: bookwyrm/templates/snippets/switch_edition_button.html:5 msgid "Switch to this edition" msgstr "Changer vers cette édition" @@ -2457,19 +2729,6 @@ msgstr "Trié par ordre croissant" msgid "Sorted descending" msgstr "Trié par ordre décroissant" -#: bookwyrm/templates/snippets/tag.html:14 -msgid "Remove tag" -msgstr "Supprimer le tag" - -#: bookwyrm/templates/snippets/tag.html:18 -msgid "Add tag" -msgstr "Ajouter un tag" - -#: bookwyrm/templates/tag.html:9 -#, python-format -msgid "Books tagged \"%(tag.name)s\"" -msgstr "Livres tagués « %(tag.name)s »" - #: bookwyrm/templates/user/books_header.html:5 #, python-format msgid "%(username)s's books" @@ -2517,7 +2776,7 @@ msgstr "Listes : %(username)s" msgid "Create list" msgstr "Créer une liste" -#: bookwyrm/templates/user/shelf.html:24 bookwyrm/views/shelf.py:56 +#: bookwyrm/templates/user/shelf.html:24 bookwyrm/views/shelf.py:51 msgid "All books" msgstr "Tous les livres" @@ -2529,23 +2788,23 @@ msgstr "Créer l’étagère" msgid "Edit shelf" msgstr "Modifier l’étagère" -#: bookwyrm/templates/user/shelf.html:78 +#: bookwyrm/templates/user/shelf.html:77 bookwyrm/templates/user/shelf.html:99 msgid "Shelved" msgstr "Ajouté à une étagère" -#: bookwyrm/templates/user/shelf.html:79 +#: bookwyrm/templates/user/shelf.html:78 bookwyrm/templates/user/shelf.html:103 msgid "Started" msgstr "Commencé" -#: bookwyrm/templates/user/shelf.html:80 +#: bookwyrm/templates/user/shelf.html:79 bookwyrm/templates/user/shelf.html:106 msgid "Finished" msgstr "Terminé" -#: bookwyrm/templates/user/shelf.html:129 +#: bookwyrm/templates/user/shelf.html:132 msgid "This shelf is empty." msgstr "Cette étagère est vide" -#: bookwyrm/templates/user/shelf.html:135 +#: bookwyrm/templates/user/shelf.html:138 msgid "Delete shelf" msgstr "Supprimer l’étagère" @@ -2608,6 +2867,79 @@ msgstr[1] "%(counter)s abonnements" msgid "%(counter)s following" msgstr "%(counter)s abonnements" +#: bookwyrm/templates/user_admin/user.html:11 +#, fuzzy +#| msgid "Back to reports" +msgid "Back to users" +msgstr "Retour aux signalements" + +#: bookwyrm/templates/user_admin/user_admin.html:7 +#, python-format +msgid "Users: %(server_name)s" +msgstr "Comptes : %(server_name)s" + +#: bookwyrm/templates/user_admin/user_admin.html:22 +#: bookwyrm/templates/user_admin/username_filter.html:5 +msgid "Username" +msgstr "Nom du compte" + +#: bookwyrm/templates/user_admin/user_admin.html:26 +msgid "Date Added" +msgstr "Date d’ajout" + +#: bookwyrm/templates/user_admin/user_admin.html:30 +msgid "Last Active" +msgstr "Dernière activité" + +#: bookwyrm/templates/user_admin/user_admin.html:38 +msgid "Remote server" +msgstr "Serveur distant" + +#: bookwyrm/templates/user_admin/user_admin.html:47 +msgid "Active" +msgstr "Actif" + +#: bookwyrm/templates/user_admin/user_admin.html:47 +msgid "Inactive" +msgstr "Inactif" + +#: bookwyrm/templates/user_admin/user_admin.html:52 +#: bookwyrm/templates/user_admin/user_info.html:49 +msgid "Not set" +msgstr "Non défini" + +#: bookwyrm/templates/user_admin/user_info.html:5 +#, fuzzy +#| msgid "Details" +msgid "User details" +msgstr "Détails" + +#: bookwyrm/templates/user_admin/user_info.html:14 +msgid "View user profile" +msgstr "Voir le profil" + +#: bookwyrm/templates/user_admin/user_info.html:20 +#, fuzzy +#| msgid "Instance Settings" +msgid "Instance details" +msgstr "Paramètres de l’instance" + +#: bookwyrm/templates/user_admin/user_info.html:46 +msgid "View instance" +msgstr "" + +#: bookwyrm/templates/user_admin/user_moderation_actions.html:11 +msgid "Suspend user" +msgstr "" + +#: bookwyrm/templates/user_admin/user_moderation_actions.html:13 +msgid "Un-suspend user" +msgstr "" + +#: bookwyrm/templates/user_admin/user_moderation_actions.html:21 +msgid "Access level:" +msgstr "" + #: bookwyrm/views/password.py:32 msgid "No user with that email address was found." msgstr "Aucun compte avec cette adresse email n’a été trouvé." @@ -2617,6 +2949,1444 @@ msgstr "Aucun compte avec cette adresse email n’a été trouvé." msgid "A password reset link sent to %s" msgstr "Un lien de réinitialisation a été envoyé à %s." +#: venv3/lib/python3.8/site-packages/_pytest/config/argparsing.py:442 +#, python-format +msgid "ambiguous option: %(option)s could match %(matches)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/contrib/messages/apps.py:7 +#, fuzzy +#| msgid "All messages" +msgid "Messages" +msgstr "Tous les messages" + +#: venv3/lib/python3.8/site-packages/django/contrib/sitemaps/apps.py:7 +msgid "Site Maps" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/contrib/staticfiles/apps.py:9 +msgid "Static Files" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/contrib/syndication/apps.py:7 +msgid "Syndication" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/paginator.py:45 +msgid "That page number is not an integer" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/paginator.py:47 +msgid "That page number is less than 1" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/paginator.py:52 +msgid "That page contains no results" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:32 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid value." +msgstr "Adresse email :" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:103 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:659 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid URL." +msgstr "Adresse email :" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:155 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid integer." +msgstr "Adresse email :" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:166 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid email address." +msgstr "Adresse email :" + +#. Translators: "letters" means latin letters: a-z and A-Z. +#: venv3/lib/python3.8/site-packages/django/core/validators.py:240 +msgid "" +"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:247 +msgid "" +"Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or " +"hyphens." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:256 +#: venv3/lib/python3.8/site-packages/django/core/validators.py:276 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid IPv4 address." +msgstr "Adresse email :" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:261 +#: venv3/lib/python3.8/site-packages/django/core/validators.py:277 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid IPv6 address." +msgstr "Adresse email :" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:271 +#: venv3/lib/python3.8/site-packages/django/core/validators.py:275 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid IPv4 or IPv6 address." +msgstr "Adresse email :" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:305 +msgid "Enter only digits separated by commas." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:311 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:343 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:352 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:362 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d character (it has " +"%(show_value)d)." +msgid_plural "" +"Ensure this value has at least %(limit_value)d characters (it has " +"%(show_value)d)." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:377 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d character (it has " +"%(show_value)d)." +msgid_plural "" +"Ensure this value has at most %(limit_value)d characters (it has " +"%(show_value)d)." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:396 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:291 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:326 +#, fuzzy +#| msgid "Series number:" +msgid "Enter a number." +msgstr "Numéro dans la série :" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:398 +#, python-format +msgid "Ensure that there are no more than %(max)s digit in total." +msgid_plural "Ensure that there are no more than %(max)s digits in total." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:403 +#, python-format +msgid "Ensure that there are no more than %(max)s decimal place." +msgid_plural "Ensure that there are no more than %(max)s decimal places." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:408 +#, python-format +msgid "" +"Ensure that there are no more than %(max)s digit before the decimal point." +msgid_plural "" +"Ensure that there are no more than %(max)s digits before the decimal point." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:470 +#, python-format +msgid "" +"File extension “%(extension)s” is not allowed. Allowed extensions are: " +"%(allowed_extensions)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:522 +msgid "Null characters are not allowed." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/base.py:1181 +#: venv3/lib/python3.8/site-packages/django/forms/models.py:759 +msgid "and" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/base.py:1183 +#, fuzzy, python-format +#| msgid "A user with this email already exists." +msgid "%(model_name)s with this %(field_labels)s already exists." +msgstr "Cet email est déjà associé à un compte." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:104 +#, fuzzy, python-format +#| msgid "%(value)s is not a valid remote_id" +msgid "Value %(value)r is not a valid choice." +msgstr "%(value)s n’est pas une remote_id valide." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:105 +#, fuzzy +#| msgid "This shelf is empty." +msgid "This field cannot be null." +msgstr "Cette étagère est vide" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:106 +msgid "This field cannot be blank." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:107 +#, fuzzy, python-format +#| msgid "A user with this email already exists." +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "Cet email est déjà associé à un compte." + +#. Translators: The 'lookup_type' is one of 'date', 'year' or 'month'. +#. Eg: "Title must be unique for pub_date year" +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:111 +#, python-format +msgid "" +"%(field_label)s must be unique for %(date_field_label)s %(lookup_type)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:130 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:937 +#, python-format +msgid "“%(value)s” value must be either True or False." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:938 +#, python-format +msgid "“%(value)s” value must be either True, False, or None." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:940 +msgid "Boolean (Either True or False)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:981 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1045 +#, fuzzy +#| msgid "No active invites" +msgid "Comma-separated integers" +msgstr "Aucune invitation active" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1094 +#, python-format +msgid "" +"“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD " +"format." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1096 +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1239 +#, python-format +msgid "" +"“%(value)s” value has the correct format (YYYY-MM-DD) but it is an invalid " +"date." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1099 +msgid "Date (without time)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1237 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[." +"uuuuuu]][TZ] format." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1241 +#, python-format +msgid "" +"“%(value)s” value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]" +"[TZ]) but it is an invalid date/time." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1245 +msgid "Date (with time)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1393 +#, python-format +msgid "“%(value)s” value must be a decimal number." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1395 +#, fuzzy +#| msgid "Series number:" +msgid "Decimal number" +msgstr "Numéro dans la série :" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1534 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[." +"uuuuuu] format." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1537 +#, fuzzy +#| msgid "List curation:" +msgid "Duration" +msgstr "Modération de la liste :" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1587 +#, fuzzy +#| msgid "Email address:" +msgid "Email address" +msgstr "Adresse email :" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1610 +msgid "File path" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1676 +#, python-format +msgid "“%(value)s” value must be a float." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1678 +msgid "Floating point number" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1716 +#, python-format +msgid "“%(value)s” value must be an integer." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1718 +msgid "Integer" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1801 +#, fuzzy +#| msgid "No active invites" +msgid "Big (8 byte) integer" +msgstr "Aucune invitation active" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1817 +#, fuzzy +#| msgid "Email address:" +msgid "IPv4 address" +msgstr "Adresse email :" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1848 +#, fuzzy +#| msgid "Email address:" +msgid "IP address" +msgstr "Adresse email :" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1928 +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1929 +#, python-format +msgid "“%(value)s” value must be either None, True or False." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1931 +msgid "Boolean (Either True, False or None)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1966 +#, fuzzy +#| msgid "No active invites" +msgid "Positive integer" +msgstr "Aucune invitation active" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1979 +#, fuzzy +#| msgid "No active invites" +msgid "Positive small integer" +msgstr "Aucune invitation active" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1993 +#, python-format +msgid "Slug (up to %(max_length)s)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2025 +msgid "Small integer" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2032 +msgid "Text" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2060 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] " +"format." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2062 +#, python-format +msgid "" +"“%(value)s” value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an " +"invalid time." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2065 +msgid "Time" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2191 +msgid "URL" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2213 +msgid "Raw binary data" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2278 +#, fuzzy, python-format +#| msgid "%(value)s is not a valid username" +msgid "“%(value)s” is not a valid UUID." +msgstr "%(value)s n’est pas un nom de compte valide." + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2280 +msgid "Universally unique identifier" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/files.py:221 +msgid "File" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/files.py:360 +#, fuzzy +#| msgid "Images" +msgid "Image" +msgstr "Images" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:778 +#, python-format +msgid "%(model)s instance with %(field)s %(value)r does not exist." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:780 +msgid "Foreign Key (type determined by related field)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1012 +#, fuzzy +#| msgid "Relationships" +msgid "One-to-one relationship" +msgstr "Relations" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1066 +#, fuzzy, python-format +#| msgid "Relationships" +msgid "%(from)s-%(to)s relationship" +msgstr "Relations" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1067 +#, fuzzy, python-format +#| msgid "Relationships" +msgid "%(from)s-%(to)s relationships" +msgstr "Relations" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1109 +#, fuzzy +#| msgid "Relationships" +msgid "Many-to-many relationship" +msgstr "Relations" + +#. Translators: If found as last label character, these punctuation +#. characters will prevent the default label_suffix to be appended to the label +#: venv3/lib/python3.8/site-packages/django/forms/boundfield.py:149 +msgid ":?.!" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:53 +#, fuzzy +#| msgid "This shelf is empty." +msgid "This field is required." +msgstr "Cette étagère est vide" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:246 +#, fuzzy +#| msgid "Series number:" +msgid "Enter a whole number." +msgstr "Numéro dans la série :" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:397 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:1127 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid date." +msgstr "Adresse email :" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:421 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:1128 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid time." +msgstr "Adresse email :" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:443 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid date/time." +msgstr "Adresse email :" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:472 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid duration." +msgstr "Adresse email :" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:473 +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:533 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:534 +msgid "No file was submitted." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:535 +#, fuzzy +#| msgid "This shelf is empty." +msgid "The submitted file is empty." +msgstr "Cette étagère est vide" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:537 +#, python-format +msgid "Ensure this filename has at most %(max)d character (it has %(length)d)." +msgid_plural "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:540 +msgid "Please either submit a file or check the clear checkbox, not both." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:601 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:763 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:853 +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1275 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:854 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:969 +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1274 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a list of values." +msgstr "Adresse email :" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:970 +msgid "Enter a complete value." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:1186 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid UUID." +msgstr "Adresse email :" + +#. Translators: This is the default suffix added to form field labels +#: venv3/lib/python3.8/site-packages/django/forms/forms.py:81 +msgid ":" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/forms.py:207 +#, python-format +msgid "(Hidden field %(name)s) %(error)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:93 +msgid "ManagementForm data is missing or has been tampered with" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:345 +#, python-format +msgid "Please submit %d or fewer forms." +msgid_plural "Please submit %d or fewer forms." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:352 +#, python-format +msgid "Please submit %d or more forms." +msgid_plural "Please submit %d or more forms." +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:379 +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:386 +#, fuzzy +#| msgid "Order by" +msgid "Order" +msgstr "Trier par" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:754 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:758 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:764 +#, python-format +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:773 +msgid "Please correct the duplicate values below." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1094 +msgid "The inline value did not match the parent instance." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1161 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1277 +#, fuzzy, python-format +#| msgid "%(value)s is not a valid username" +msgid "“%(pk)s” is not a valid value." +msgstr "%(value)s n’est pas un nom de compte valide." + +#: venv3/lib/python3.8/site-packages/django/forms/utils.py:162 +#, python-format +msgid "" +"%(datetime)s couldn’t be interpreted in time zone %(current_timezone)s; it " +"may be ambiguous or it may not exist." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:395 +msgid "Clear" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:396 +#, fuzzy +#| msgid "Started reading" +msgid "Currently" +msgstr "Commencer la lecture" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:397 +#, fuzzy +#| msgid "Change shelf" +msgid "Change" +msgstr "Changer d’étagère" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:709 +msgid "Unknown" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:710 +msgid "Yes" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:711 +msgid "No" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:788 +msgid "yes,no,maybe" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:817 +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:834 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:836 +#, python-format +msgid "%s KB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:838 +#, python-format +msgid "%s MB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:840 +#, python-format +msgid "%s GB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:842 +#, python-format +msgid "%s TB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:844 +#, python-format +msgid "%s PB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:62 +msgid "p.m." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:63 +msgid "a.m." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:68 +msgid "PM" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:69 +msgid "AM" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:150 +msgid "midnight" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:152 +msgid "noon" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:295 +msgid "Monday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:296 +msgid "Tuesday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:297 +msgid "Wednesday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:298 +msgid "Thursday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:299 +msgid "Friday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:7 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:300 +msgid "Saturday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:7 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:301 +msgid "Sunday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Mon" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Tue" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Wed" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Thu" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Fri" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:11 +#, fuzzy +#| msgid "Status" +msgid "Sat" +msgstr "Statut" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:11 +msgid "Sun" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:281 +msgid "January" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:282 +msgid "February" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:283 +#, fuzzy +#| msgid "Search" +msgid "March" +msgstr "Chercher" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:284 +msgid "April" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:285 +msgid "May" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:286 +msgid "June" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:287 +msgid "July" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:288 +msgid "August" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:289 +#, fuzzy +#| msgid "Series number:" +msgid "September" +msgstr "Numéro dans la série :" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:290 +msgid "October" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:291 +msgid "November" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:16 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:292 +#, fuzzy +#| msgid "Series number:" +msgid "December" +msgstr "Numéro dans la série :" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "jan" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "feb" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "mar" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "apr" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "may" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "jun" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "jul" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "aug" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "sep" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "oct" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "nov" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "dec" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:23 +msgctxt "abbrev. month" +msgid "Jan." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:24 +msgctxt "abbrev. month" +msgid "Feb." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:25 +#, fuzzy +#| msgid "Search" +msgctxt "abbrev. month" +msgid "March" +msgstr "Chercher" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:26 +msgctxt "abbrev. month" +msgid "April" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:27 +msgctxt "abbrev. month" +msgid "May" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:28 +msgctxt "abbrev. month" +msgid "June" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:29 +msgctxt "abbrev. month" +msgid "July" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:30 +msgctxt "abbrev. month" +msgid "Aug." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:31 +msgctxt "abbrev. month" +msgid "Sept." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:32 +msgctxt "abbrev. month" +msgid "Oct." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:33 +msgctxt "abbrev. month" +msgid "Nov." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:34 +msgctxt "abbrev. month" +msgid "Dec." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:37 +msgctxt "alt. month" +msgid "January" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:38 +msgctxt "alt. month" +msgid "February" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:39 +#, fuzzy +#| msgid "Search" +msgctxt "alt. month" +msgid "March" +msgstr "Chercher" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:40 +msgctxt "alt. month" +msgid "April" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:41 +msgctxt "alt. month" +msgid "May" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:42 +msgctxt "alt. month" +msgid "June" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:43 +msgctxt "alt. month" +msgid "July" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:44 +msgctxt "alt. month" +msgid "August" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:45 +#, fuzzy +#| msgid "Series number:" +msgctxt "alt. month" +msgid "September" +msgstr "Numéro dans la série :" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:46 +msgctxt "alt. month" +msgid "October" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:47 +msgctxt "alt. month" +msgid "November" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:48 +#, fuzzy +#| msgid "Series number:" +msgctxt "alt. month" +msgid "December" +msgstr "Numéro dans la série :" + +#: venv3/lib/python3.8/site-packages/django/utils/ipv6.py:8 +#, fuzzy +#| msgid "Email address:" +msgid "This is not a valid IPv6 address." +msgstr "Adresse email :" + +#: venv3/lib/python3.8/site-packages/django/utils/text.py:69 +#, python-format +msgctxt "String to return when truncating text" +msgid "%(truncated_text)s…" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/text.py:235 +msgid "or" +msgstr "" + +#. Translators: This string is used as a separator between list elements +#: venv3/lib/python3.8/site-packages/django/utils/text.py:254 +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:83 +msgid ", " +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:9 +#, python-format +msgid "%d year" +msgid_plural "%d years" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:10 +#, python-format +msgid "%d month" +msgid_plural "%d months" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:11 +#, python-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:12 +#, python-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:13 +#, python-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:14 +#, python-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "" +msgstr[1] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:72 +msgid "0 minutes" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:110 +msgid "Forbidden" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:111 +msgid "CSRF verification failed. Request aborted." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:115 +msgid "" +"You are seeing this message because this HTTPS site requires a “Referer " +"header” to be sent by your Web browser, but none was sent. This header is " +"required for security reasons, to ensure that your browser is not being " +"hijacked by third parties." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:120 +msgid "" +"If you have configured your browser to disable “Referer” headers, please re-" +"enable them, at least for this site, or for HTTPS connections, or for “same-" +"origin” requests." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:124 +msgid "" +"If you are using the tag or " +"including the “Referrer-Policy: no-referrer” header, please remove them. The " +"CSRF protection requires the “Referer” header to do strict referer checking. " +"If you’re concerned about privacy, use alternatives like for links to third-party sites." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:132 +msgid "" +"You are seeing this message because this site requires a CSRF cookie when " +"submitting forms. This cookie is required for security reasons, to ensure " +"that your browser is not being hijacked by third parties." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:137 +msgid "" +"If you have configured your browser to disable cookies, please re-enable " +"them, at least for this site, or for “same-origin” requests." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:142 +msgid "More information is available with DEBUG=True." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:41 +msgid "No year specified" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:61 +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:111 +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:208 +msgid "Date out of range" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:90 +msgid "No month specified" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:142 +msgid "No day specified" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:188 +msgid "No week specified" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:338 +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:367 +#, python-format +msgid "No %(verbose_name_plural)s available" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:589 +#, python-format +msgid "" +"Future %(verbose_name_plural)s not available because %(class_name)s." +"allow_future is False." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:623 +#, python-format +msgid "Invalid date string “%(datestr)s” given format “%(format)s”" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/detail.py:54 +#, fuzzy, python-format +#| msgid "No books found matching the query \"%(query)s\"" +msgid "No %(verbose_name)s found matching the query" +msgstr "Aucun livre trouvé pour la requête « %(query)s »" + +#: venv3/lib/python3.8/site-packages/django/views/generic/list.py:67 +msgid "Page is not “last”, nor can it be converted to an int." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/list.py:72 +#, python-format +msgid "Invalid page (%(page_number)s): %(message)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/list.py:154 +#, python-format +msgid "Empty list and “%(class_name)s.allow_empty” is False." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/static.py:40 +msgid "Directory indexes are not allowed here." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/static.py:42 +#, python-format +msgid "“%(path)s” does not exist" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/static.py:80 +#, python-format +msgid "Index of %(directory)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:7 +msgid "Django: the Web framework for perfectionists with deadlines." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:346 +#, python-format +msgid "" +"View release notes for Django %(version)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:368 +msgid "The install worked successfully! Congratulations!" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:369 +#, python-format +msgid "" +"You are seeing this page because DEBUG=True is in your settings file and you have not configured any " +"URLs." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:384 +msgid "Django Documentation" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:385 +msgid "Topics, references, & how-to’s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:396 +msgid "Tutorial: A Polling App" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:397 +msgid "Get started with Django" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:408 +#, fuzzy +#| msgid "Community" +msgid "Django Community" +msgstr "Communauté" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:409 +msgid "Connect, get help, or contribute" +msgstr "" + +#: venv3/lib/python3.8/site-packages/kombu/transport/qpid.py:1301 +#, python-format +msgid "Attempting to connect to qpid with SASL mechanism %s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/kombu/transport/qpid.py:1306 +#, python-format +msgid "Connected to qpid with SASL mechanism %s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/kombu/transport/qpid.py:1324 +#, python-format +msgid "Unable to connect to qpid with SASL mechanism %s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:371 +msgid "1 second ago" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:377 +msgid "1 minute ago" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:382 +msgid "1 hour ago" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:385 +#, python-format +msgid "%(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:387 +msgid "yesterday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:387 +#, python-format +msgid "yesterday at %(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:389 +#, python-format +msgid "%(weekday)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:389 +#, python-format +msgid "%(weekday)s at %(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:392 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:445 +#, python-format +msgid "%(month_name)s %(day)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:394 +#, python-format +msgid "%(month_name)s %(day)s at %(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:399 +#, python-format +msgid "%(month_name)s %(day)s, %(year)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:401 +#, python-format +msgid "%(month_name)s %(day)s, %(year)s at %(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:439 +#, python-format +msgid "%(weekday)s, %(month_name)s %(day)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:462 +#, python-format +msgid "%(commas)s and %(last)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:68 +msgctxt "law" +msgid "right" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:69 +msgctxt "good" +msgid "right" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:71 +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:74 +msgctxt "organization" +msgid "club" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:76 +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:77 +msgctxt "stick" +msgid "club" +msgstr "" + +#~ msgid "Deactivate user" +#~ msgstr "Désactiver le compte" + +#~ msgid "Reactivate user" +#~ msgstr "Réactiver le compte" + +#, python-format +#~ msgid "%(rating)s star" +#~ msgid_plural "%(rating)s stars" +#~ msgstr[0] "%(rating)s étoile" +#~ msgstr[1] "%(rating)s étoiles" + +#, python-format +#~ msgid "" +#~ "replied to %(username)s's review" +#~ msgstr "" +#~ "a répondu à la critique de %(username)s" + +#, python-format +#~ msgid "" +#~ "replied to %(username)s's comment" +#~ msgstr "" +#~ "a répondu au commentaire de %(username)s" + +#, python-format +#~ msgid "" +#~ "replied to %(username)s's quote" +#~ msgstr "" +#~ "a répondu à la citation de %(username)s" + +#~ msgid "Remove tag" +#~ msgstr "Supprimer le tag" + +#~ msgid "Add tag" +#~ msgstr "Ajouter un tag" + +#, python-format +#~ msgid "Books tagged \"%(tag.name)s\"" +#~ msgstr "Livres tagués « %(tag.name)s »" + #, fuzzy #~| msgid "Started" #~ msgid "Getting Started" @@ -2630,9 +4400,6 @@ msgstr "Un lien de réinitialisation a été envoyé à %s." #~ msgid "Tags" #~ msgstr "Tags" -#~ msgid "Your shelves" -#~ msgstr "Vos étagères" - #~ msgid "Your lists" #~ msgstr "Vos listes" @@ -2674,119 +4441,6 @@ msgstr "Un lien de réinitialisation a été envoyé à %s." #~ msgid "Send follow request" #~ msgstr "Envoyer une demande d’abonnement" -#, fuzzy -#~| msgid "All messages" -#~ msgid "Messages" -#~ msgstr "Tous les messages" - -#, fuzzy -#~| msgid "Email address:" -#~ msgid "Enter a valid email address." -#~ msgstr "Adresse email :" - -#, fuzzy -#~| msgid "Series number:" -#~ msgid "Enter a number." -#~ msgstr "Numéro dans la série :" - -#, fuzzy -#~| msgid "Series number:" -#~ msgid "Decimal number" -#~ msgstr "Numéro dans la série :" - -#, fuzzy -#~| msgid "List curation:" -#~ msgid "Duration" -#~ msgstr "Modération de la liste :" - -#, fuzzy -#~| msgid "Email address:" -#~ msgid "Email address" -#~ msgstr "Adresse email :" - -#, fuzzy -#~| msgid "Email address:" -#~ msgid "IPv4 address" -#~ msgstr "Adresse email :" - -#, fuzzy -#~| msgid "Email address:" -#~ msgid "IP address" -#~ msgstr "Adresse email :" - -#, fuzzy -#~| msgid "No active invites" -#~ msgid "Positive integer" -#~ msgstr "Aucune invitation active" - -#, fuzzy -#~| msgid "Images" -#~ msgid "Image" -#~ msgstr "Images" - -#, fuzzy -#~| msgid "Relationships" -#~ msgid "One-to-one relationship" -#~ msgstr "Relations" - -#, fuzzy -#~| msgid "This shelf is empty." -#~ msgid "This field is required." -#~ msgstr "Cette étagère est vide" - -#, fuzzy -#~| msgid "This shelf is empty." -#~ msgid "The submitted file is empty." -#~ msgstr "Cette étagère est vide" - -#, fuzzy -#~| msgid "Started reading" -#~ msgid "Currently" -#~ msgstr "Commencer la lecture" - -#, fuzzy -#~| msgid "Change shelf" -#~ msgid "Change" -#~ msgstr "Changer d’étagère" - -#, fuzzy -#~| msgid "Status" -#~ msgid "Sat" -#~ msgstr "Statut" - -#, fuzzy -#~| msgid "Search" -#~ msgid "March" -#~ msgstr "Chercher" - -#, fuzzy -#~| msgid "Series number:" -#~ msgid "September" -#~ msgstr "Numéro dans la série :" - -#, fuzzy -#~| msgid "Search" -#~ msgctxt "abbrev. month" -#~ msgid "March" -#~ msgstr "Chercher" - -#, fuzzy -#~| msgid "Search" -#~ msgctxt "alt. month" -#~ msgid "March" -#~ msgstr "Chercher" - -#, fuzzy -#~| msgid "Series number:" -#~ msgctxt "alt. month" -#~ msgid "September" -#~ msgstr "Numéro dans la série :" - -#, fuzzy -#~| msgid "No books found matching the query \"%(query)s\"" -#~ msgid "No %(verbose_name)s found matching the query" -#~ msgstr "Aucun livre trouvé pour la requête « %(query)s »" - #~ msgid "Announcements" #~ msgstr "Annonces" diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index 66a26636..789960cc 100644 --- a/locale/zh_Hans/LC_MESSAGES/django.po +++ b/locale/zh_Hans/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-04 04:17+0000\n" +"POT-Creation-Date: 2021-04-26 09:56-0700\n" "PO-Revision-Date: 2021-03-20 00:56+0000\n" "Last-Translator: Kana \n" "Language-Team: Mouse Reeve \n" @@ -18,35 +18,66 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: bookwyrm/forms.py:226 +#: bookwyrm/forms.py:224 msgid "A user with this email already exists." msgstr "已经存在使用该邮箱的用户。" -#: bookwyrm/forms.py:240 +#: bookwyrm/forms.py:238 msgid "One Day" msgstr "一天" -#: bookwyrm/forms.py:241 +#: bookwyrm/forms.py:239 msgid "One Week" msgstr "一周" -#: bookwyrm/forms.py:242 +#: bookwyrm/forms.py:240 msgid "One Month" msgstr "一个月" -#: bookwyrm/forms.py:243 +#: bookwyrm/forms.py:241 msgid "Does Not Expire" msgstr "永不失效" -#: bookwyrm/forms.py:248 +#: bookwyrm/forms.py:246 #, python-format msgid "%(count)d uses" msgstr "%(count)d 次使用" -#: bookwyrm/forms.py:251 +#: bookwyrm/forms.py:249 msgid "Unlimited" msgstr "不受限" +#: bookwyrm/forms.py:293 +msgid "List Order" +msgstr "" + +#: bookwyrm/forms.py:294 +#, fuzzy +#| msgid "Title" +msgid "Book Title" +msgstr "标题" + +#: bookwyrm/forms.py:295 bookwyrm/templates/snippets/create_status_form.html:31 +#: bookwyrm/templates/user/shelf.html:80 bookwyrm/templates/user/shelf.html:110 +msgid "Rating" +msgstr "评价" + +#: bookwyrm/forms.py:297 bookwyrm/templates/lists/list.html:82 +msgid "Sort By" +msgstr "" + +#: bookwyrm/forms.py:301 +#, fuzzy +#| msgid "Sorted ascending" +msgid "Ascending" +msgstr "升序排序" + +#: bookwyrm/forms.py:302 +#, fuzzy +#| msgid "Sorted ascending" +msgid "Descending" +msgstr "升序排序" + #: bookwyrm/models/fields.py:24 #, python-format msgid "%(value)s is not a valid remote_id" @@ -57,7 +88,7 @@ msgstr "%(value)s 不是有效的 remote_id" msgid "%(value)s is not a valid username" msgstr "%(value)s 不是有效的用户名" -#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:152 +#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:153 msgid "username" msgstr "用户名" @@ -65,23 +96,23 @@ msgstr "用户名" msgid "A user with that username already exists." msgstr "已经存在使用该用户名的用户。" -#: bookwyrm/settings.py:150 +#: bookwyrm/settings.py:152 msgid "English" msgstr "English(英语)" -#: bookwyrm/settings.py:151 +#: bookwyrm/settings.py:153 msgid "German" msgstr "Deutsch(德语)" -#: bookwyrm/settings.py:152 +#: bookwyrm/settings.py:154 msgid "Spanish" msgstr "Español(西班牙语)" -#: bookwyrm/settings.py:153 +#: bookwyrm/settings.py:155 msgid "French" msgstr "Français(法语)" -#: bookwyrm/settings.py:154 +#: bookwyrm/settings.py:156 msgid "Simplified Chinese" msgstr "简体中文" @@ -118,76 +149,66 @@ msgstr "维基百科" msgid "Books by %(name)s" msgstr "%(name)s 所著的书" -#: bookwyrm/templates/book/book.html:21 +#: bookwyrm/templates/book/book.html:33 #: bookwyrm/templates/discover/large-book.html:12 #: bookwyrm/templates/discover/small-book.html:9 msgid "by" msgstr "作者" -#: bookwyrm/templates/book/book.html:29 bookwyrm/templates/book/book.html:30 +#: bookwyrm/templates/book/book.html:41 bookwyrm/templates/book/book.html:42 msgid "Edit Book" msgstr "编辑书目" -#: bookwyrm/templates/book/book.html:49 +#: bookwyrm/templates/book/book.html:61 #: bookwyrm/templates/book/cover_modal.html:5 msgid "Add cover" msgstr "添加封面" -#: bookwyrm/templates/book/book.html:53 +#: bookwyrm/templates/book/book.html:65 msgid "Failed to load cover" msgstr "加载封面失败" -#: bookwyrm/templates/book/book.html:62 -msgid "ISBN:" -msgstr "ISBN:" - -#: bookwyrm/templates/book/book.html:69 -#: bookwyrm/templates/book/edit_book.html:211 -msgid "OCLC Number:" -msgstr "OCLC 号:" - -#: bookwyrm/templates/book/book.html:76 -#: bookwyrm/templates/book/edit_book.html:215 -msgid "ASIN:" -msgstr "ASIN:" - -#: bookwyrm/templates/book/book.html:85 +#: bookwyrm/templates/book/book.html:82 msgid "View on OpenLibrary" msgstr "在 OpenLibrary 查看" -#: bookwyrm/templates/book/book.html:94 +#: bookwyrm/templates/book/book.html:102 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" msgstr[0] "(%(review_count)s 则书评)" -#: bookwyrm/templates/book/book.html:100 +#: bookwyrm/templates/book/book.html:114 msgid "Add Description" msgstr "添加描述" -#: bookwyrm/templates/book/book.html:107 -#: bookwyrm/templates/book/edit_book.html:101 +#: bookwyrm/templates/book/book.html:121 +#: bookwyrm/templates/book/edit_book.html:107 #: bookwyrm/templates/lists/form.html:12 msgid "Description:" msgstr "描述:" -#: bookwyrm/templates/book/book.html:111 -#: bookwyrm/templates/book/edit_book.html:225 +#: bookwyrm/templates/book/book.html:125 +#: bookwyrm/templates/book/edit_book.html:240 #: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 #: bookwyrm/templates/preferences/edit_user.html:70 +#: bookwyrm/templates/settings/edit_server.html:68 +#: bookwyrm/templates/settings/federated_server.html:93 #: bookwyrm/templates/settings/site.html:93 #: bookwyrm/templates/snippets/readthrough.html:75 #: 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/start_reading_modal.html:34 +#: bookwyrm/templates/user_admin/user_moderation_actions.html:38 msgid "Save" msgstr "保存" -#: bookwyrm/templates/book/book.html:112 bookwyrm/templates/book/book.html:161 +#: bookwyrm/templates/book/book.html:126 bookwyrm/templates/book/book.html:175 #: bookwyrm/templates/book/cover_modal.html:32 -#: bookwyrm/templates/book/edit_book.html:226 +#: bookwyrm/templates/book/edit_book.html:241 #: bookwyrm/templates/edit_author.html:79 -#: bookwyrm/templates/moderation/report_modal.html:32 +#: bookwyrm/templates/moderation/report_modal.html:34 +#: bookwyrm/templates/settings/federated_server.html:94 #: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 #: bookwyrm/templates/snippets/goal_form.html:32 #: bookwyrm/templates/snippets/readthrough.html:76 @@ -198,73 +219,115 @@ msgstr "保存" msgid "Cancel" msgstr "取消" -#: bookwyrm/templates/book/book.html:121 +#: bookwyrm/templates/book/book.html:135 #, python-format msgid "%(count)s editions" msgstr "%(count)s 个版本" -#: bookwyrm/templates/book/book.html:129 +#: bookwyrm/templates/book/book.html:143 #, python-format msgid "This edition is on your %(shelf_name)s shelf." msgstr "此版本在你的 %(shelf_name)s 书架上。" -#: bookwyrm/templates/book/book.html:135 +#: bookwyrm/templates/book/book.html:149 #, python-format -msgid "A different edition of this book is on your %(shelf_name)s shelf." -msgstr "本书的 另一个版本 在你的 %(shelf_name)s 书架上。" +msgid "" +"A different edition of this book is on your %(shelf_name)s shelf." +msgstr "" +"本书的 另一个版本 在你的 %(shelf_name)s 书架上。" -#: bookwyrm/templates/book/book.html:144 +#: bookwyrm/templates/book/book.html:158 msgid "Your reading activity" msgstr "你的阅读活动" -#: bookwyrm/templates/book/book.html:146 +#: bookwyrm/templates/book/book.html:160 msgid "Add read dates" msgstr "添加阅读日期" -#: bookwyrm/templates/book/book.html:151 +#: bookwyrm/templates/book/book.html:165 msgid "You don't have any reading activity for this book." msgstr "你还没有任何这本书的阅读活动。" -#: bookwyrm/templates/book/book.html:158 +#: bookwyrm/templates/book/book.html:172 msgid "Create" msgstr "创建" -#: bookwyrm/templates/book/book.html:180 +#: bookwyrm/templates/book/book.html:194 msgid "Subjects" msgstr "主题" -#: bookwyrm/templates/book/book.html:191 +#: bookwyrm/templates/book/book.html:206 msgid "Places" msgstr "地点" -#: bookwyrm/templates/book/book.html:202 bookwyrm/templates/layout.html:64 +#: bookwyrm/templates/book/book.html:217 bookwyrm/templates/layout.html:65 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search_results.html:91 #: bookwyrm/templates/user/user_layout.html:62 msgid "Lists" msgstr "列表" -#: bookwyrm/templates/book/book.html:213 +#: bookwyrm/templates/book/book.html:228 msgid "Add to list" msgstr "添加到列表" -#: bookwyrm/templates/book/book.html:223 +#: bookwyrm/templates/book/book.html:238 #: bookwyrm/templates/book/cover_modal.html:31 -#: bookwyrm/templates/lists/list.html:90 +#: bookwyrm/templates/lists/list.html:133 msgid "Add" msgstr "添加" -#: bookwyrm/templates/book/book.html:251 +#: bookwyrm/templates/book/book.html:254 +#, fuzzy +#| msgid "Review" +msgid "Reviews" +msgstr "书评" + +#: bookwyrm/templates/book/book.html:259 +#, fuzzy +#| msgid "Your shelves" +msgid "Your reviews" +msgstr "你的书架" + +#: bookwyrm/templates/book/book.html:265 +#, fuzzy +#| msgid "Your Account" +msgid "Your comments" +msgstr "你的帐号" + +#: bookwyrm/templates/book/book.html:271 +#, fuzzy +#| msgid "Your books" +msgid "Your quotes" +msgstr "你的书目" + +#: bookwyrm/templates/book/book.html:305 msgid "rated it" msgstr "评价了" +#: bookwyrm/templates/book/book_identifiers.html:8 +msgid "ISBN:" +msgstr "ISBN:" + +#: bookwyrm/templates/book/book_identifiers.html:15 +#: bookwyrm/templates/book/edit_book.html:226 +msgid "OCLC Number:" +msgstr "OCLC 号:" + +#: bookwyrm/templates/book/book_identifiers.html:22 +#: bookwyrm/templates/book/edit_book.html:230 +msgid "ASIN:" +msgstr "ASIN:" + #: bookwyrm/templates/book/cover_modal.html:17 -#: bookwyrm/templates/book/edit_book.html:163 +#: bookwyrm/templates/book/edit_book.html:178 msgid "Upload cover:" msgstr "上传封面:" #: bookwyrm/templates/book/cover_modal.html:23 -#: bookwyrm/templates/book/edit_book.html:169 +#: bookwyrm/templates/book/edit_book.html:184 msgid "Load cover from url:" msgstr "从网址加载封面:" @@ -340,86 +403,86 @@ msgstr "返回" msgid "Metadata" msgstr "元数据" -#: bookwyrm/templates/book/edit_book.html:91 +#: bookwyrm/templates/book/edit_book.html:92 msgid "Title:" msgstr "标题:" -#: bookwyrm/templates/book/edit_book.html:96 +#: bookwyrm/templates/book/edit_book.html:100 msgid "Subtitle:" msgstr "副标题:" -#: bookwyrm/templates/book/edit_book.html:106 +#: bookwyrm/templates/book/edit_book.html:113 msgid "Series:" msgstr "系列:" -#: bookwyrm/templates/book/edit_book.html:111 +#: bookwyrm/templates/book/edit_book.html:120 msgid "Series number:" msgstr "系列编号:" -#: bookwyrm/templates/book/edit_book.html:117 +#: bookwyrm/templates/book/edit_book.html:126 msgid "Publisher:" msgstr "出版社:" -#: bookwyrm/templates/book/edit_book.html:119 +#: bookwyrm/templates/book/edit_book.html:128 msgid "Separate multiple publishers with commas." msgstr "请用英文逗号(,)分开多个出版社。" -#: bookwyrm/templates/book/edit_book.html:125 +#: bookwyrm/templates/book/edit_book.html:135 msgid "First published date:" msgstr "初版时间:" -#: bookwyrm/templates/book/edit_book.html:130 +#: bookwyrm/templates/book/edit_book.html:143 msgid "Published date:" msgstr "出版时间:" -#: bookwyrm/templates/book/edit_book.html:137 +#: bookwyrm/templates/book/edit_book.html:152 msgid "Authors" msgstr "作者" -#: bookwyrm/templates/book/edit_book.html:143 +#: bookwyrm/templates/book/edit_book.html:158 #, python-format msgid "Remove %(name)s" msgstr "移除 %(name)s" -#: bookwyrm/templates/book/edit_book.html:148 +#: bookwyrm/templates/book/edit_book.html:163 msgid "Add Authors:" msgstr "添加作者:" -#: bookwyrm/templates/book/edit_book.html:149 +#: bookwyrm/templates/book/edit_book.html:164 msgid "John Doe, Jane Smith" msgstr "张三, 李四" -#: bookwyrm/templates/book/edit_book.html:155 -#: bookwyrm/templates/user/shelf.html:75 +#: bookwyrm/templates/book/edit_book.html:170 +#: bookwyrm/templates/user/shelf.html:74 msgid "Cover" msgstr "封面" -#: bookwyrm/templates/book/edit_book.html:182 +#: bookwyrm/templates/book/edit_book.html:197 msgid "Physical Properties" msgstr "实体性质" -#: bookwyrm/templates/book/edit_book.html:183 +#: bookwyrm/templates/book/edit_book.html:198 #: bookwyrm/templates/book/format_filter.html:5 msgid "Format:" msgstr "格式:" -#: bookwyrm/templates/book/edit_book.html:191 +#: bookwyrm/templates/book/edit_book.html:206 msgid "Pages:" msgstr "页数:" -#: bookwyrm/templates/book/edit_book.html:198 +#: bookwyrm/templates/book/edit_book.html:213 msgid "Book Identifiers" msgstr "书目标识号" -#: bookwyrm/templates/book/edit_book.html:199 +#: bookwyrm/templates/book/edit_book.html:214 msgid "ISBN 13:" msgstr "ISBN 13:" -#: bookwyrm/templates/book/edit_book.html:203 +#: bookwyrm/templates/book/edit_book.html:218 msgid "ISBN 10:" msgstr "ISBN 10:" -#: bookwyrm/templates/book/edit_book.html:207 +#: bookwyrm/templates/book/edit_book.html:222 #: bookwyrm/templates/edit_author.html:59 msgid "Openlibrary key:" msgstr "Openlibrary key:" @@ -443,44 +506,55 @@ msgstr "所有" msgid "Language:" msgstr "语言:" -#: bookwyrm/templates/book/publisher_info.html:6 +#: bookwyrm/templates/book/publisher_info.html:22 +#, python-format +msgid "%(format)s" +msgstr "" + +#: bookwyrm/templates/book/publisher_info.html:24 #, python-format msgid "%(format)s, %(pages)s pages" msgstr "%(format)s, %(pages)s 页" -#: bookwyrm/templates/book/publisher_info.html:8 +#: bookwyrm/templates/book/publisher_info.html:26 #, python-format msgid "%(pages)s pages" msgstr "%(pages)s 页" -#: bookwyrm/templates/book/publisher_info.html:13 +#: bookwyrm/templates/book/publisher_info.html:38 #, python-format msgid "%(languages)s language" msgstr "%(languages)s 语言" -#: bookwyrm/templates/book/publisher_info.html:18 +#: bookwyrm/templates/book/publisher_info.html:64 #, python-format msgid "Published %(date)s by %(publisher)s." msgstr "在 %(date)s 由 %(publisher)s 出版。" -#: bookwyrm/templates/book/publisher_info.html:20 +#: bookwyrm/templates/book/publisher_info.html:66 #, python-format msgid "Published %(date)s" msgstr "于 %(date)s 出版" -#: bookwyrm/templates/book/publisher_info.html:22 +#: bookwyrm/templates/book/publisher_info.html:68 #, python-format msgid "Published by %(publisher)s." msgstr "由 %(publisher)s 出版。" #: bookwyrm/templates/components/inline_form.html:8 #: bookwyrm/templates/components/modal.html:11 -#: bookwyrm/templates/feed/feed_layout.html:57 +#: bookwyrm/templates/feed/feed_layout.html:70 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 msgid "Close" msgstr "关闭" +#: bookwyrm/templates/compose.html:5 bookwyrm/templates/compose.html:8 +#, fuzzy +#| msgid "Boost status" +msgid "Compose status" +msgstr "转发状态" + #: bookwyrm/templates/directory/community_filter.html:5 msgid "Community" msgstr "社区" @@ -495,7 +569,7 @@ msgstr "跨站社区" #: bookwyrm/templates/directory/directory.html:6 #: bookwyrm/templates/directory/directory.html:11 -#: bookwyrm/templates/layout.html:92 +#: bookwyrm/templates/layout.html:93 msgid "Directory" msgstr "目录" @@ -505,7 +579,9 @@ msgstr "使你的个人资料可以被其它 BookWyrm 用户发现。" #: bookwyrm/templates/directory/directory.html:26 #, python-format -msgid "You can opt-out at any time in your profile settings." +msgid "" +"You can opt-out at any time in your profile settings." msgstr "你可以在任何时候从你的 个人资料设定 中退出。" #: bookwyrm/templates/directory/directory.html:31 @@ -617,7 +693,7 @@ msgid "Email address:" msgstr "邮箱地址:" #: bookwyrm/templates/discover/landing_layout.html:70 -#: bookwyrm/templates/moderation/report_modal.html:31 +#: bookwyrm/templates/moderation/report_modal.html:33 msgid "Submit" msgstr "提交" @@ -670,8 +746,12 @@ msgstr "你好呀," #: bookwyrm/templates/email/html_layout.html:21 #, python-format -msgid "BookWyrm hosted on %(site_name)s" -msgstr "位于 %(site_name)s 的 BookWyrm" +msgid "" +"BookWyrm hosted on " +"%(site_name)s" +msgstr "" +"位于 %(site_name)s 的 BookWyrm" #: bookwyrm/templates/email/html_layout.html:23 msgid "Email preference" @@ -689,12 +769,17 @@ msgstr "立即加入" #: bookwyrm/templates/email/invite/html_content.html:15 #, python-format -msgid "Learn more about this instance." -msgstr "了解更多 有关本实例的信息。" +msgid "" +"Learn more about this instance." +msgstr "" +"了解更多 有关本实例的信息。" #: bookwyrm/templates/email/invite/text_content.html:4 #, python-format -msgid "You're invited to join %(site_name)s! Click the link below to create an account." +msgid "" +"You're invited to join %(site_name)s! Click the link below to create an " +"account." msgstr "你受邀请加入 %(site_name)s!点击下面的连接来创建帐号。" #: bookwyrm/templates/email/invite/text_content.html:8 @@ -704,8 +789,12 @@ msgstr "了解更多有关本实例的信息:" #: bookwyrm/templates/email/password_reset/html_content.html:6 #: bookwyrm/templates/email/password_reset/text_content.html:4 #, python-format -msgid "You requested to reset your %(site_name)s password. Click the link below to set a new password and log in to your account." -msgstr "你请求重置你在 %(site_name)s 的密码。点击下面的链接来设置新密码并登录你的帐号。" +msgid "" +"You requested to reset your %(site_name)s password. Click the link below to " +"set a new password and log in to your account." +msgstr "" +"你请求重置你在 %(site_name)s 的密码。点击下面的链接来设置新密码并登录你的帐" +"号。" #: bookwyrm/templates/email/password_reset/html_content.html:9 #: bookwyrm/templates/password_reset.html:4 @@ -717,7 +806,8 @@ msgstr "重设密码" #: bookwyrm/templates/email/password_reset/html_content.html:13 #: bookwyrm/templates/email/password_reset/text_content.html:8 -msgid "If you didn't request to reset your password, you can ignore this email." +msgid "" +"If you didn't request to reset your password, you can ignore this email." msgstr "如果你没有请求重设密码,你可以忽略这封邮件。" #: bookwyrm/templates/email/password_reset/subject.html:2 @@ -731,7 +821,7 @@ msgid "Direct Messages with %(username)s" msgstr "与 %(username)s 私信" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:87 +#: bookwyrm/templates/layout.html:88 msgid "Direct Messages" msgstr "私信" @@ -764,6 +854,7 @@ msgid "Local" msgstr "本站" #: bookwyrm/templates/feed/feed.html:25 +#: bookwyrm/templates/settings/edit_server.html:40 msgid "Federated" msgstr "跨站" @@ -773,7 +864,8 @@ msgid "load 0 unread status(es)" msgstr "加载 0 条未读状态" #: bookwyrm/templates/feed/feed.html:48 -msgid "There aren't any activities right now! Try following a user to get started" +msgid "" +"There aren't any activities right now! Try following a user to get started" msgstr "现在还没有任何活动!尝试着从关注一个用户开始吧" #: bookwyrm/templates/feed/feed.html:56 @@ -786,32 +878,33 @@ msgid "Updates" msgstr "更新" #: bookwyrm/templates/feed/feed_layout.html:11 -#: bookwyrm/templates/layout.html:58 +#: bookwyrm/templates/layout.html:59 #: bookwyrm/templates/user/books_header.html:3 msgid "Your books" msgstr "你的书目" #: bookwyrm/templates/feed/feed_layout.html:13 -msgid "There are no books here right now! Try searching for a book to get started" +msgid "" +"There are no books here right now! Try searching for a book to get started" msgstr "现在这里还没有任何书目!尝试着从搜索某本书开始吧" -#: bookwyrm/templates/feed/feed_layout.html:23 +#: bookwyrm/templates/feed/feed_layout.html:24 #: bookwyrm/templates/user/shelf.html:28 msgid "To Read" msgstr "想读" -#: bookwyrm/templates/feed/feed_layout.html:24 +#: bookwyrm/templates/feed/feed_layout.html:25 #: bookwyrm/templates/user/shelf.html:28 msgid "Currently Reading" msgstr "在读" -#: bookwyrm/templates/feed/feed_layout.html:25 +#: bookwyrm/templates/feed/feed_layout.html:26 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:11 #: bookwyrm/templates/user/shelf.html:28 msgid "Read" msgstr "读过" -#: bookwyrm/templates/feed/feed_layout.html:74 bookwyrm/templates/goal.html:26 +#: bookwyrm/templates/feed/feed_layout.html:88 bookwyrm/templates/goal.html:26 #: bookwyrm/templates/snippets/goal_card.html:6 #, python-format msgid "%(year)s Reading Goal" @@ -839,7 +932,7 @@ msgid "What are you reading?" msgstr "你在阅读什么?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/lists/list.html:58 +#: bookwyrm/templates/lists/list.html:101 msgid "Search for a book" msgstr "搜索书目" @@ -859,8 +952,8 @@ msgstr "你可以在开始使用 %(site_name)s 后添加书目。" #: bookwyrm/templates/get_started/books.html:17 #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 -#: bookwyrm/templates/layout.html:37 bookwyrm/templates/layout.html:38 -#: bookwyrm/templates/lists/list.html:62 +#: bookwyrm/templates/layout.html:38 bookwyrm/templates/layout.html:39 +#: bookwyrm/templates/lists/list.html:105 msgid "Search" msgstr "搜索" @@ -874,7 +967,7 @@ msgid "Popular on %(site_name)s" msgstr "%(site_name)s 上的热门" #: bookwyrm/templates/get_started/books.html:51 -#: bookwyrm/templates/lists/list.html:75 +#: bookwyrm/templates/lists/list.html:118 msgid "No books found" msgstr "没有找到书目" @@ -943,7 +1036,9 @@ msgid "Show this account in suggested users:" msgstr "在推荐的用户中显示此帐号:" #: bookwyrm/templates/get_started/profile.html:52 -msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users." +msgid "" +"Your account will show up in the directory, and may be recommended to other " +"BookWyrm users." msgstr "你的帐号会显示在目录中,并且可能会受其它 BookWyrm 用户推荐。" #: bookwyrm/templates/get_started/users.html:11 @@ -968,7 +1063,9 @@ msgstr "编辑目标" #: bookwyrm/templates/goal.html:30 #: bookwyrm/templates/snippets/goal_card.html:13 #, python-format -msgid "Set a goal for how many books you'll finish reading in %(year)s, and track your progress throughout the year." +msgid "" +"Set a goal for how many books you'll finish reading in %(year)s, and track " +"your progress throughout the year." msgstr "设定一个 %(year)s 内要读多少书的目标,并记录你全年的进度。" #: bookwyrm/templates/goal.html:39 @@ -987,7 +1084,7 @@ msgid "%(username)s's %(year)s Books" msgstr "%(username)s 在 %(year)s 的书目" #: bookwyrm/templates/import.html:5 bookwyrm/templates/import.html:9 -#: bookwyrm/templates/layout.html:97 +#: bookwyrm/templates/layout.html:98 msgid "Import Books" msgstr "导入书目" @@ -1008,6 +1105,7 @@ msgid "Privacy setting for imported reviews:" msgstr "导入书评的隐私设定" #: bookwyrm/templates/import.html:48 +#: bookwyrm/templates/settings/server_blocklist.html:64 msgid "Import" msgstr "导入" @@ -1050,7 +1148,9 @@ msgstr "加载失败" #: bookwyrm/templates/import_status.html:44 #, 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 "跳转至列表底部来选取 %(failed_count)s 个导入失败的项目。" #: bookwyrm/templates/import_status.html:79 @@ -1072,12 +1172,12 @@ msgstr "书目" #: bookwyrm/templates/import_status.html:115 #: bookwyrm/templates/snippets/create_status_form.html:10 -#: bookwyrm/templates/user/shelf.html:76 +#: bookwyrm/templates/user/shelf.html:75 bookwyrm/templates/user/shelf.html:93 msgid "Title" msgstr "标题" #: bookwyrm/templates/import_status.html:118 -#: bookwyrm/templates/user/shelf.html:77 +#: bookwyrm/templates/user/shelf.html:76 bookwyrm/templates/user/shelf.html:96 msgid "Author" msgstr "作者" @@ -1114,86 +1214,94 @@ msgstr "\"%(query)s\" 的搜索结果" msgid "Matching Books" msgstr "匹配的书目" -#: bookwyrm/templates/layout.html:33 +#: bookwyrm/templates/layout.html:34 msgid "Search for a book or user" msgstr "搜索书目或用户" -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/layout.html:48 +#: bookwyrm/templates/layout.html:48 bookwyrm/templates/layout.html:49 msgid "Main navigation menu" msgstr "主导航菜单" -#: bookwyrm/templates/layout.html:61 +#: bookwyrm/templates/layout.html:62 msgid "Feed" msgstr "动态" -#: bookwyrm/templates/layout.html:102 +#: bookwyrm/templates/layout.html:103 msgid "Settings" msgstr "设置" -#: bookwyrm/templates/layout.html:111 -#: bookwyrm/templates/settings/admin_layout.html:24 +#: bookwyrm/templates/layout.html:112 +#: bookwyrm/templates/settings/admin_layout.html:31 #: bookwyrm/templates/settings/manage_invite_requests.html:15 #: bookwyrm/templates/settings/manage_invites.html:3 #: bookwyrm/templates/settings/manage_invites.html:15 msgid "Invites" msgstr "邀请" -#: bookwyrm/templates/layout.html:118 +#: bookwyrm/templates/layout.html:119 msgid "Admin" msgstr "管理员" -#: bookwyrm/templates/layout.html:125 +#: bookwyrm/templates/layout.html:126 msgid "Log out" msgstr "登出" -#: bookwyrm/templates/layout.html:133 bookwyrm/templates/layout.html:134 +#: bookwyrm/templates/layout.html:134 bookwyrm/templates/layout.html:135 #: bookwyrm/templates/notifications.html:6 #: bookwyrm/templates/notifications.html:10 msgid "Notifications" msgstr "通知" -#: bookwyrm/templates/layout.html:151 bookwyrm/templates/layout.html:155 +#: bookwyrm/templates/layout.html:152 bookwyrm/templates/layout.html:156 #: bookwyrm/templates/login.html:17 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" msgstr "用户名:" -#: bookwyrm/templates/layout.html:156 +#: bookwyrm/templates/layout.html:157 msgid "password" msgstr "密码" -#: bookwyrm/templates/layout.html:157 bookwyrm/templates/login.html:36 +#: bookwyrm/templates/layout.html:158 bookwyrm/templates/login.html:36 msgid "Forgot your password?" msgstr "忘记了密码?" -#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:10 +#: bookwyrm/templates/layout.html:161 bookwyrm/templates/login.html:10 #: bookwyrm/templates/login.html:33 msgid "Log in" msgstr "登录" -#: bookwyrm/templates/layout.html:168 +#: bookwyrm/templates/layout.html:169 msgid "Join" msgstr "加入" -#: bookwyrm/templates/layout.html:191 +#: bookwyrm/templates/layout.html:195 msgid "About this server" msgstr "关于本服务器" -#: bookwyrm/templates/layout.html:195 +#: bookwyrm/templates/layout.html:199 msgid "Contact site admin" msgstr "联系站点管理员" -#: bookwyrm/templates/layout.html:202 -#, python-format -msgid "Support %(site_name)s on %(support_title)s" -msgstr "在 %(support_title)s 上支持 %(site_name)s" - #: bookwyrm/templates/layout.html:206 -msgid "BookWyrm is open source software. You can contribute or report issues on GitHub." -msgstr "BookWyrm 是开源软件。你可以在 GitHub 贡献或报告问题。" +#, python-format +msgid "" +"Support %(site_name)s on " +"%(support_title)s" +msgstr "" +"在 %(support_title)s 上支" +"持 %(site_name)s" + +#: bookwyrm/templates/layout.html:210 +msgid "" +"BookWyrm is open source software. You can contribute or report issues on GitHub." +msgstr "" +"BookWyrm 是开源软件。你可以在 GitHub 贡献或报告问题。" #: bookwyrm/templates/lists/create_form.html:5 -#: bookwyrm/templates/lists/lists.html:19 +#: bookwyrm/templates/lists/lists.html:20 msgid "Create List" msgstr "创建列表" @@ -1257,7 +1365,7 @@ msgid "Anyone can suggest books, subject to your approval" msgstr "任何人都可以推荐书目、主题让你批准" #: bookwyrm/templates/lists/form.html:31 -#: bookwyrm/templates/moderation/reports.html:24 +#: bookwyrm/templates/moderation/reports.html:25 msgid "Open" msgstr "开放" @@ -1265,45 +1373,83 @@ msgstr "开放" msgid "Anyone can add books to this list" msgstr "任何人都可以向此列表中添加书目" -#: bookwyrm/templates/lists/list.html:17 +#: bookwyrm/templates/lists/list.html:19 +msgid "You successfully suggested a book for this list!" +msgstr "" + +#: bookwyrm/templates/lists/list.html:21 +#, fuzzy +#| msgid "Anyone can add books to this list" +msgid "You successfully added a book to this list!" +msgstr "任何人都可以向此列表中添加书目" + +#: bookwyrm/templates/lists/list.html:27 msgid "This list is currently empty" msgstr "此列表当前是空的" -#: bookwyrm/templates/lists/list.html:35 +#: bookwyrm/templates/lists/list.html:46 #, python-format msgid "Added by %(username)s" msgstr "由 %(username)s 添加" -#: bookwyrm/templates/lists/list.html:41 +#: bookwyrm/templates/lists/list.html:58 +#, fuzzy +#| msgid "Sent" +msgid "Set" +msgstr "已发送" + +#: bookwyrm/templates/lists/list.html:61 +#, fuzzy +#| msgid "List curation:" +msgid "List position" +msgstr "列表策展:" + +#: bookwyrm/templates/lists/list.html:67 #: bookwyrm/templates/snippets/shelf_selector.html:26 msgid "Remove" msgstr "移除" -#: bookwyrm/templates/lists/list.html:54 +#: bookwyrm/templates/lists/list.html:80 bookwyrm/templates/lists/list.html:92 +#, fuzzy +#| msgid "Your Lists" +msgid "Sort List" +msgstr "你的列表" + +#: bookwyrm/templates/lists/list.html:86 +#, fuzzy +#| msgid "Directory" +msgid "Direction" +msgstr "目录" + +#: bookwyrm/templates/lists/list.html:97 msgid "Add Books" msgstr "添加书目" -#: bookwyrm/templates/lists/list.html:54 +#: bookwyrm/templates/lists/list.html:97 msgid "Suggest Books" msgstr "推荐书目" -#: bookwyrm/templates/lists/list.html:63 +#: bookwyrm/templates/lists/list.html:106 msgid "search" msgstr "搜索" -#: bookwyrm/templates/lists/list.html:69 +#: bookwyrm/templates/lists/list.html:112 msgid "Clear search" msgstr "清除搜索" -#: bookwyrm/templates/lists/list.html:74 +#: bookwyrm/templates/lists/list.html:117 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "没有符合 \"%(query)s\" 请求的书目" -#: bookwyrm/templates/lists/list.html:90 +#: bookwyrm/templates/lists/list.html:133 msgid "Suggest" msgstr "推荐" +#: bookwyrm/templates/lists/lists.html:14 bookwyrm/templates/user/lists.html:9 +msgid "Your Lists" +msgstr "你的列表" + #: bookwyrm/templates/login.html:4 msgid "Login" msgstr "登录" @@ -1321,59 +1467,39 @@ msgstr "联系管理员以取得邀请" msgid "More about this site" msgstr "关于本站点的更多" -#: bookwyrm/templates/moderation/report.html:5 #: bookwyrm/templates/moderation/report.html:6 +#: bookwyrm/templates/moderation/report.html:7 #: bookwyrm/templates/moderation/report_preview.html:6 #, python-format msgid "Report #%(report_id)s: %(username)s" msgstr "报告 #%(report_id)s: %(username)s" -#: bookwyrm/templates/moderation/report.html:10 +#: bookwyrm/templates/moderation/report.html:11 msgid "Back to reports" msgstr "回到报告" -#: bookwyrm/templates/moderation/report.html:18 -msgid "Actions" -msgstr "动作" - -#: bookwyrm/templates/moderation/report.html:19 -msgid "View user profile" -msgstr "查看用户个人资料" - -#: bookwyrm/templates/moderation/report.html:22 -#: bookwyrm/templates/snippets/status/status_options.html:25 -#: bookwyrm/templates/snippets/user_options.html:13 -msgid "Send direct message" -msgstr "发送私信" - -#: bookwyrm/templates/moderation/report.html:27 -msgid "Deactivate user" -msgstr "停用用户" - -#: bookwyrm/templates/moderation/report.html:29 -msgid "Reactivate user" -msgstr "启用用户" - -#: bookwyrm/templates/moderation/report.html:36 +#: bookwyrm/templates/moderation/report.html:23 msgid "Moderator Comments" msgstr "监察员评论" -#: bookwyrm/templates/moderation/report.html:54 -#: bookwyrm/templates/snippets/create_status.html:12 -#: bookwyrm/templates/snippets/create_status_form.html:52 +#: bookwyrm/templates/moderation/report.html:41 +#: bookwyrm/templates/snippets/create_status.html:28 +#: bookwyrm/templates/snippets/create_status_form.html:53 msgid "Comment" msgstr "评论" -#: bookwyrm/templates/moderation/report.html:59 +#: bookwyrm/templates/moderation/report.html:46 msgid "Reported statuses" msgstr "被报告的状态" -#: bookwyrm/templates/moderation/report.html:61 +#: bookwyrm/templates/moderation/report.html:48 msgid "No statuses reported" msgstr "没有被报告的状态" -#: bookwyrm/templates/moderation/report.html:67 -msgid "Statuses has been deleted" +#: bookwyrm/templates/moderation/report.html:54 +#, fuzzy +#| msgid "Statuses has been deleted" +msgid "Status has been deleted" msgstr "状态已被删除" #: bookwyrm/templates/moderation/report_modal.html:6 @@ -1381,12 +1507,12 @@ msgstr "状态已被删除" msgid "Report @%(username)s" msgstr "报告 %(username)s" -#: bookwyrm/templates/moderation/report_modal.html:21 +#: bookwyrm/templates/moderation/report_modal.html:23 #, python-format msgid "This report will be sent to %(site_name)s's moderators for review." msgstr "本报告会被发送至 %(site_name)s 的监察员以复查。" -#: bookwyrm/templates/moderation/report_modal.html:22 +#: bookwyrm/templates/moderation/report_modal.html:24 msgid "More info about this report:" msgstr "关于本报告的更多信息" @@ -1413,21 +1539,21 @@ msgid "Reports: %(server_name)s" msgstr "报告: %(server_name)s" #: bookwyrm/templates/moderation/reports.html:8 -#: bookwyrm/templates/moderation/reports.html:16 -#: bookwyrm/templates/settings/admin_layout.html:28 +#: bookwyrm/templates/moderation/reports.html:17 +#: bookwyrm/templates/settings/admin_layout.html:35 msgid "Reports" msgstr "报告" -#: bookwyrm/templates/moderation/reports.html:13 +#: bookwyrm/templates/moderation/reports.html:14 #, python-format msgid "Reports: %(server_name)s" msgstr "报告: %(server_name)s" -#: bookwyrm/templates/moderation/reports.html:27 +#: bookwyrm/templates/moderation/reports.html:28 msgid "Resolved" msgstr "已解决" -#: bookwyrm/templates/moderation/reports.html:34 +#: bookwyrm/templates/moderation/reports.html:37 msgid "No reports found." msgstr "没有找到报告" @@ -1437,18 +1563,27 @@ msgstr "删除通知" #: bookwyrm/templates/notifications.html:53 #, python-format -msgid "favorited your review of %(book_title)s" -msgstr "喜欢了你 %(book_title)s 的书评" +msgid "" +"favorited your review of %(book_title)s" +msgstr "" +"喜欢了你 %(book_title)s 的书评" #: bookwyrm/templates/notifications.html:55 #, python-format -msgid "favorited your comment on %(book_title)s" -msgstr "喜欢了你 %(book_title)s 的评论" +msgid "" +"favorited your comment on %(book_title)s" +msgstr "" +"喜欢了你 %(book_title)s 的评论" #: bookwyrm/templates/notifications.html:57 #, python-format -msgid "favorited your quote from %(book_title)s" -msgstr "喜欢了你 来自 %(book_title)s 的引用" +msgid "" +"favorited your quote from %(book_title)s" +msgstr "" +"喜欢了你 来自 %(book_title)s 的引用" #: bookwyrm/templates/notifications.html:59 #, python-format @@ -1457,18 +1592,30 @@ msgstr "喜欢了你的 状态" #: bookwyrm/templates/notifications.html:64 #, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "在 %(book_title)s 的书评 里提到了你" +msgid "" +"mentioned you in a review of " +"%(book_title)s" +msgstr "" +"在 %(book_title)s 的书评 里提到" +"了你" #: bookwyrm/templates/notifications.html:66 #, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "在 %(book_title)s 的评论 里提到了你" +msgid "" +"mentioned you in a comment on " +"%(book_title)s" +msgstr "" +"在 %(book_title)s 的评论 里提到" +"了你" #: bookwyrm/templates/notifications.html:68 #, python-format -msgid "mentioned you in a quote from %(book_title)s" -msgstr "在 %(book_title)s 的引用 中提到了你" +msgid "" +"mentioned you in a quote from " +"%(book_title)s" +msgstr "" +"在 %(book_title)s 的引用 中提到" +"了你" #: bookwyrm/templates/notifications.html:70 #, python-format @@ -1477,23 +1624,39 @@ msgstr "在 状态 中提到了你" #: bookwyrm/templates/notifications.html:75 #, python-format -msgid "replied to your review of %(book_title)s" -msgstr "回复 了你的 %(book_title)s 的书评" +msgid "" +"replied to your review of %(book_title)s" +msgstr "" +"回复 了你的 对 " +"%(book_title)s 的书评" #: bookwyrm/templates/notifications.html:77 #, python-format -msgid "replied to your comment on %(book_title)s" -msgstr "回复 了你的 %(book_title)s 的评论" +msgid "" +"replied to your comment on %(book_title)s" +msgstr "" +"回复 了你的 对 " +"%(book_title)s 的评论" #: bookwyrm/templates/notifications.html:79 #, python-format -msgid "replied to your quote from %(book_title)s" -msgstr "回复 了你 %(book_title)s 中的引用" +msgid "" +"replied to your quote from %(book_title)s" +msgstr "" +"回复 了你 对 " +"%(book_title)s 中的引用" #: bookwyrm/templates/notifications.html:81 #, python-format -msgid "replied to your status" -msgstr "回复 了你的 状态" +msgid "" +"replied to your status" +msgstr "" +"回复 了你的 状态" +"" #: bookwyrm/templates/notifications.html:85 msgid "followed you" @@ -1505,18 +1668,27 @@ msgstr "向你发送了关注请求" #: bookwyrm/templates/notifications.html:94 #, python-format -msgid "boosted your review of %(book_title)s" -msgstr "转发了你的 %(book_title)s 的书评" +msgid "" +"boosted your review of %(book_title)s" +msgstr "" +"转发了你的 %(book_title)s 的书评" #: bookwyrm/templates/notifications.html:96 #, python-format -msgid "boosted your comment on%(book_title)s" -msgstr "转发了你的 %(book_title)s 的评论" +msgid "" +"boosted your comment on%(book_title)s" +msgstr "" +"转发了你的 %(book_title)s 的评论" #: bookwyrm/templates/notifications.html:98 #, python-format -msgid "boosted your quote from %(book_title)s" -msgstr "转发了你的 %(book_title)s 的引用" +msgid "" +"boosted your quote from %(book_title)s" +msgstr "" +"转发了你的 %(book_title)s 的引用" #: bookwyrm/templates/notifications.html:100 #, python-format @@ -1525,13 +1697,21 @@ msgstr "转发了你的 状态" #: bookwyrm/templates/notifications.html:104 #, python-format -msgid " added %(book_title)s to your list \"%(list_name)s\"" -msgstr " 添加了 %(book_title)s 到你的列表 \"%(list_name)s\"" +msgid "" +" added %(book_title)s to your list " +"\"%(list_name)s\"" +msgstr "" +" 添加了 %(book_title)s 到你的列表 " +"\"%(list_name)s\"" #: bookwyrm/templates/notifications.html:106 #, python-format -msgid " suggested adding %(book_title)s to your list \"%(list_name)s\"" -msgstr " 推荐添加 %(book_title)s 到你的列表 \"%(list_name)s\"" +msgid "" +" suggested adding %(book_title)s to " +"your list \"%(list_name)s\"" +msgstr "" +" 推荐添加 %(book_title)s 到你的列表 " +"\"%(list_name)s\"" #: bookwyrm/templates/notifications.html:110 #, python-format @@ -1592,8 +1772,12 @@ msgstr "在消息流中显示设置阅读目标的提示:" #: bookwyrm/templates/preferences/edit_user.html:62 #, python-format -msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users." -msgstr "你的帐号会显示在 目录 中,并可能受其它 BookWyrm 用户推荐。" +msgid "" +"Your account will show up in the directory, and may " +"be recommended to other BookWyrm users." +msgstr "" +"你的帐号会显示在 目录 中,并可能受其它 BookWyrm 用户" +"推荐。" #: bookwyrm/templates/preferences/edit_user.html:65 msgid "Preferred Timezone: " @@ -1636,118 +1820,197 @@ msgstr "没有找到 \"%(query)s\" 的列表" msgid "Administration" msgstr "管理" -#: bookwyrm/templates/settings/admin_layout.html:15 +#: bookwyrm/templates/settings/admin_layout.html:22 msgid "Manage Users" msgstr "管理用户" -#: bookwyrm/templates/settings/admin_layout.html:19 -#: bookwyrm/templates/settings/user_admin.html:3 -#: bookwyrm/templates/settings/user_admin.html:10 +#: bookwyrm/templates/settings/admin_layout.html:26 +#: bookwyrm/templates/user_admin/user_admin.html:3 +#: bookwyrm/templates/user_admin/user_admin.html:10 msgid "Users" msgstr "用户" -#: bookwyrm/templates/settings/admin_layout.html:32 +#: bookwyrm/templates/settings/admin_layout.html:39 #: bookwyrm/templates/settings/federation.html:3 #: bookwyrm/templates/settings/federation.html:5 msgid "Federated Servers" msgstr "互联的服务器" -#: bookwyrm/templates/settings/admin_layout.html:37 +#: bookwyrm/templates/settings/admin_layout.html:44 msgid "Instance Settings" msgstr "实例设置" -#: bookwyrm/templates/settings/admin_layout.html:41 +#: bookwyrm/templates/settings/admin_layout.html:48 #: bookwyrm/templates/settings/site.html:4 #: bookwyrm/templates/settings/site.html:6 msgid "Site Settings" msgstr "站点设置" -#: bookwyrm/templates/settings/admin_layout.html:44 +#: bookwyrm/templates/settings/admin_layout.html:51 #: bookwyrm/templates/settings/site.html:13 msgid "Instance Info" msgstr "实例信息" -#: bookwyrm/templates/settings/admin_layout.html:45 +#: bookwyrm/templates/settings/admin_layout.html:52 #: bookwyrm/templates/settings/site.html:39 msgid "Images" msgstr "图像" -#: bookwyrm/templates/settings/admin_layout.html:46 +#: bookwyrm/templates/settings/admin_layout.html:53 #: bookwyrm/templates/settings/site.html:59 msgid "Footer Content" msgstr "页脚内容" -#: bookwyrm/templates/settings/admin_layout.html:47 +#: bookwyrm/templates/settings/admin_layout.html:54 #: bookwyrm/templates/settings/site.html:77 msgid "Registration" msgstr "注册" -#: bookwyrm/templates/settings/federated_server.html:7 +#: bookwyrm/templates/settings/edit_server.html:3 +#: bookwyrm/templates/settings/edit_server.html:6 +#: bookwyrm/templates/settings/edit_server.html:20 +#: bookwyrm/templates/settings/federation.html:9 +#: bookwyrm/templates/settings/federation.html:10 +#: bookwyrm/templates/settings/server_blocklist.html:3 +#: bookwyrm/templates/settings/server_blocklist.html:20 +#, fuzzy +#| msgid "Add cover" +msgid "Add server" +msgstr "添加封面" + +#: bookwyrm/templates/settings/edit_server.html:7 +#: bookwyrm/templates/settings/federated_server.html:12 +#: bookwyrm/templates/settings/server_blocklist.html:7 msgid "Back to server list" msgstr "回到服务器列表" -#: bookwyrm/templates/settings/federated_server.html:12 -msgid "Details" -msgstr "详细" +#: bookwyrm/templates/settings/edit_server.html:16 +#: bookwyrm/templates/settings/server_blocklist.html:16 +#, fuzzy +#| msgid "Import book" +msgid "Import block list" +msgstr "导入书目" -#: bookwyrm/templates/settings/federated_server.html:15 -msgid "Software:" -msgstr "软件:" +#: bookwyrm/templates/settings/edit_server.html:30 +#, fuzzy +#| msgid "Instance Name:" +msgid "Instance:" +msgstr "实例名称" -#: bookwyrm/templates/settings/federated_server.html:19 -msgid "Version:" -msgstr "版本:" - -#: bookwyrm/templates/settings/federated_server.html:23 +#: bookwyrm/templates/settings/edit_server.html:37 +#: bookwyrm/templates/settings/federated_server.html:29 +#: bookwyrm/templates/user_admin/user_info.html:34 msgid "Status:" msgstr "状态:" -#: bookwyrm/templates/settings/federated_server.html:30 +#: bookwyrm/templates/settings/edit_server.html:41 +#: bookwyrm/templates/settings/federated_server.html:9 +#, fuzzy +#| msgid "Block" +msgid "Blocked" +msgstr "屏蔽" + +#: bookwyrm/templates/settings/edit_server.html:48 +#: bookwyrm/templates/settings/federated_server.html:21 +#: bookwyrm/templates/user_admin/user_info.html:26 +msgid "Software:" +msgstr "软件:" + +#: bookwyrm/templates/settings/edit_server.html:55 +#: bookwyrm/templates/settings/federated_server.html:25 +#: bookwyrm/templates/user_admin/user_info.html:30 +msgid "Version:" +msgstr "版本:" + +#: bookwyrm/templates/settings/edit_server.html:64 +msgid "Notes:" +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:18 +msgid "Details" +msgstr "详细" + +#: bookwyrm/templates/settings/federated_server.html:36 #: bookwyrm/templates/user/user_layout.html:50 msgid "Activity" msgstr "活动" -#: bookwyrm/templates/settings/federated_server.html:33 +#: bookwyrm/templates/settings/federated_server.html:39 msgid "Users:" msgstr "用户:" -#: bookwyrm/templates/settings/federated_server.html:36 -#: bookwyrm/templates/settings/federated_server.html:43 +#: bookwyrm/templates/settings/federated_server.html:42 +#: bookwyrm/templates/settings/federated_server.html:49 msgid "View all" msgstr "查看全部" -#: bookwyrm/templates/settings/federated_server.html:40 +#: bookwyrm/templates/settings/federated_server.html:46 msgid "Reports:" msgstr "报告:" -#: bookwyrm/templates/settings/federated_server.html:47 +#: bookwyrm/templates/settings/federated_server.html:53 msgid "Followed by us:" msgstr "我们关注了的:" -#: bookwyrm/templates/settings/federated_server.html:53 +#: bookwyrm/templates/settings/federated_server.html:59 msgid "Followed by them:" msgstr "TA 们关注了的:" -#: bookwyrm/templates/settings/federated_server.html:59 +#: bookwyrm/templates/settings/federated_server.html:65 msgid "Blocked by us:" msgstr "我们所屏蔽的:" -#: bookwyrm/templates/settings/federation.html:13 +#: bookwyrm/templates/settings/federated_server.html:77 +#: bookwyrm/templates/user_admin/user_info.html:39 +msgid "Notes" +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:80 +#, fuzzy +#| msgid "Edit Book" +msgid "Edit" +msgstr "编辑书目" + +#: bookwyrm/templates/settings/federated_server.html:100 +#: bookwyrm/templates/user_admin/user_moderation_actions.html:3 +msgid "Actions" +msgstr "动作" + +#: bookwyrm/templates/settings/federated_server.html:104 +#: bookwyrm/templates/snippets/block_button.html:5 +msgid "Block" +msgstr "屏蔽" + +#: bookwyrm/templates/settings/federated_server.html:105 +msgid "All users from this instance will be deactivated." +msgstr "" + +#: bookwyrm/templates/settings/federated_server.html:110 +#: bookwyrm/templates/snippets/block_button.html:10 +msgid "Un-block" +msgstr "取消屏蔽" + +#: bookwyrm/templates/settings/federated_server.html:111 +msgid "All users from this instance will be re-activated." +msgstr "" + +#: bookwyrm/templates/settings/federation.html:20 +#: bookwyrm/templates/user_admin/server_filter.html:5 msgid "Server name" msgstr "服务器名称" -#: bookwyrm/templates/settings/federation.html:17 +#: bookwyrm/templates/settings/federation.html:24 msgid "Date federated" msgstr "跨站日期" -#: bookwyrm/templates/settings/federation.html:21 +#: bookwyrm/templates/settings/federation.html:28 msgid "Software" msgstr "软件" -#: bookwyrm/templates/settings/federation.html:24 -#: bookwyrm/templates/settings/manage_invite_requests.html:40 +#: bookwyrm/templates/settings/federation.html:31 +#: bookwyrm/templates/settings/manage_invite_requests.html:44 #: bookwyrm/templates/settings/status_filter.html:5 -#: bookwyrm/templates/settings/user_admin.html:32 +#: bookwyrm/templates/user_admin/user_admin.html:34 msgid "Status" msgstr "状态" @@ -1763,57 +2026,65 @@ msgid "Ignored Invite Requests" msgstr "已忽略的邀请请求" #: bookwyrm/templates/settings/manage_invite_requests.html:35 -msgid "Date" -msgstr "日期" +#, fuzzy +#| msgid "Date federated" +msgid "Date requested" +msgstr "跨站日期" -#: bookwyrm/templates/settings/manage_invite_requests.html:38 +#: bookwyrm/templates/settings/manage_invite_requests.html:39 +#, fuzzy +#| msgid "Accepted" +msgid "Date accepted" +msgstr "已接受" + +#: bookwyrm/templates/settings/manage_invite_requests.html:42 msgid "Email" msgstr "邮箱" -#: bookwyrm/templates/settings/manage_invite_requests.html:43 +#: bookwyrm/templates/settings/manage_invite_requests.html:47 msgid "Action" msgstr "动作" -#: bookwyrm/templates/settings/manage_invite_requests.html:46 +#: bookwyrm/templates/settings/manage_invite_requests.html:50 msgid "No requests" msgstr "没有请求" -#: bookwyrm/templates/settings/manage_invite_requests.html:54 +#: bookwyrm/templates/settings/manage_invite_requests.html:59 #: bookwyrm/templates/settings/status_filter.html:16 msgid "Accepted" msgstr "已接受" -#: bookwyrm/templates/settings/manage_invite_requests.html:56 +#: bookwyrm/templates/settings/manage_invite_requests.html:61 #: bookwyrm/templates/settings/status_filter.html:12 msgid "Sent" msgstr "已发送" -#: bookwyrm/templates/settings/manage_invite_requests.html:58 +#: bookwyrm/templates/settings/manage_invite_requests.html:63 #: bookwyrm/templates/settings/status_filter.html:8 msgid "Requested" msgstr "已请求" -#: bookwyrm/templates/settings/manage_invite_requests.html:68 +#: bookwyrm/templates/settings/manage_invite_requests.html:73 msgid "Send invite" msgstr "发送请求" -#: bookwyrm/templates/settings/manage_invite_requests.html:70 +#: bookwyrm/templates/settings/manage_invite_requests.html:75 msgid "Re-send invite" msgstr "重新发送请求" -#: bookwyrm/templates/settings/manage_invite_requests.html:90 +#: bookwyrm/templates/settings/manage_invite_requests.html:95 msgid "Ignore" msgstr "忽略" -#: bookwyrm/templates/settings/manage_invite_requests.html:92 +#: bookwyrm/templates/settings/manage_invite_requests.html:97 msgid "Un-ignore" msgstr "取消忽略" -#: bookwyrm/templates/settings/manage_invite_requests.html:103 +#: bookwyrm/templates/settings/manage_invite_requests.html:108 msgid "Back to pending requests" msgstr "回到待处理的请求" -#: bookwyrm/templates/settings/manage_invite_requests.html:105 +#: bookwyrm/templates/settings/manage_invite_requests.html:110 msgid "View ignored requests" msgstr "查看忽略的请求" @@ -1853,6 +2124,27 @@ msgstr "已使用次数" msgid "No active invites" msgstr "无有效的邀请" +#: bookwyrm/templates/settings/server_blocklist.html:6 +#, fuzzy +#| msgid "Import Books" +msgid "Import Blocklist" +msgstr "导入书目" + +#: bookwyrm/templates/settings/server_blocklist.html:26 +#: bookwyrm/templates/snippets/goal_progress.html:5 +msgid "Success!" +msgstr "成功!" + +#: bookwyrm/templates/settings/server_blocklist.html:30 +#, fuzzy +#| msgid "Successfully imported" +msgid "Successfully blocked:" +msgstr "成功导入了" + +#: bookwyrm/templates/settings/server_blocklist.html:32 +msgid "Failed:" +msgstr "" + #: bookwyrm/templates/settings/site.html:15 msgid "Instance Name:" msgstr "实例名称" @@ -1909,138 +2201,100 @@ msgstr "允许请求邀请:" msgid "Registration closed text:" msgstr "注册关闭文字:" -#: bookwyrm/templates/settings/user_admin.html:7 -#, python-format -msgid "Users: %(server_name)s" -msgstr "用户: %(server_name)s" +#: bookwyrm/templates/snippets/book_cover.html:20 +#: bookwyrm/templates/snippets/search_result_text.html:10 +msgid "No cover" +msgstr "没有封面" -#: bookwyrm/templates/settings/user_admin.html:20 -msgid "Username" -msgstr "用户名" - -#: bookwyrm/templates/settings/user_admin.html:24 -msgid "Date Added" -msgstr "添加日期:" - -#: bookwyrm/templates/settings/user_admin.html:28 -msgid "Last Active" -msgstr "最后或缺" - -#: bookwyrm/templates/settings/user_admin.html:36 -msgid "Remote server" -msgstr "移除服务器" - -#: bookwyrm/templates/settings/user_admin.html:45 -msgid "Active" -msgstr "活跃" - -#: bookwyrm/templates/settings/user_admin.html:45 -msgid "Inactive" -msgstr "停用" - -#: bookwyrm/templates/settings/user_admin.html:50 -msgid "Not set" -msgstr "未设置" - -#: bookwyrm/templates/snippets/block_button.html:5 -msgid "Block" -msgstr "屏蔽" - -#: bookwyrm/templates/snippets/block_button.html:10 -msgid "Un-block" -msgstr "取消屏蔽" - -#: bookwyrm/templates/snippets/book_titleby.html:3 +#: bookwyrm/templates/snippets/book_titleby.html:4 #, python-format msgid "%(title)s by " msgstr "%(title)s 来自" #: bookwyrm/templates/snippets/boost_button.html:8 #: bookwyrm/templates/snippets/boost_button.html:9 -#: bookwyrm/templates/snippets/status/status_body.html:51 -#: bookwyrm/templates/snippets/status/status_body.html:52 -msgid "Boost status" -msgstr "转发状态" +#, fuzzy +#| msgid "boosted" +msgid "Boost" +msgstr "转发了" +#: bookwyrm/templates/snippets/boost_button.html:15 #: bookwyrm/templates/snippets/boost_button.html:16 -#: bookwyrm/templates/snippets/boost_button.html:17 -msgid "Un-boost status" +#, fuzzy +#| msgid "Un-boost status" +msgid "Un-boost" msgstr "取消转发状态" #: bookwyrm/templates/snippets/content_warning_field.html:3 msgid "Spoiler alert:" msgstr "剧透警告:" -#: bookwyrm/templates/snippets/content_warning_field.html:4 +#: bookwyrm/templates/snippets/content_warning_field.html:10 msgid "Spoilers ahead!" msgstr "前有剧透!" -#: bookwyrm/templates/snippets/create_status.html:9 +#: bookwyrm/templates/snippets/create_status.html:17 msgid "Review" msgstr "书评" -#: bookwyrm/templates/snippets/create_status.html:15 +#: bookwyrm/templates/snippets/create_status.html:39 msgid "Quote" msgstr "引用" -#: bookwyrm/templates/snippets/create_status_form.html:18 +#: bookwyrm/templates/snippets/create_status_form.html:20 msgid "Comment:" msgstr "评论:" -#: bookwyrm/templates/snippets/create_status_form.html:20 +#: bookwyrm/templates/snippets/create_status_form.html:22 msgid "Quote:" msgstr "引用:" -#: bookwyrm/templates/snippets/create_status_form.html:22 +#: bookwyrm/templates/snippets/create_status_form.html:24 msgid "Review:" msgstr "书评:" -#: bookwyrm/templates/snippets/create_status_form.html:29 -#: bookwyrm/templates/user/shelf.html:81 -msgid "Rating" -msgstr "评价" +#: bookwyrm/templates/snippets/create_status_form.html:42 +#: bookwyrm/templates/snippets/status/layout.html:30 +#: bookwyrm/templates/snippets/status/layout.html:48 +#: bookwyrm/templates/snippets/status/layout.html:49 +msgid "Reply" +msgstr "回复" -#: bookwyrm/templates/snippets/create_status_form.html:31 -#: bookwyrm/templates/snippets/rate_action.html:14 -#: bookwyrm/templates/snippets/stars.html:3 -msgid "No rating" -msgstr "没有评价" - -#: bookwyrm/templates/snippets/create_status_form.html:64 +#: bookwyrm/templates/snippets/create_status_form.html:67 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:16 msgid "Progress:" msgstr "进度:" -#: bookwyrm/templates/snippets/create_status_form.html:71 +#: bookwyrm/templates/snippets/create_status_form.html:75 #: bookwyrm/templates/snippets/readthrough_form.html:22 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30 msgid "pages" msgstr "页数" -#: bookwyrm/templates/snippets/create_status_form.html:72 +#: bookwyrm/templates/snippets/create_status_form.html:76 #: bookwyrm/templates/snippets/readthrough_form.html:23 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31 msgid "percent" msgstr "百分比" -#: bookwyrm/templates/snippets/create_status_form.html:77 +#: bookwyrm/templates/snippets/create_status_form.html:82 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:36 #, python-format msgid "of %(pages)s pages" msgstr "全书 %(pages)s 页" -#: bookwyrm/templates/snippets/create_status_form.html:89 +#: bookwyrm/templates/snippets/create_status_form.html:97 msgid "Include spoiler alert" msgstr "加入剧透警告" -#: bookwyrm/templates/snippets/create_status_form.html:95 +#: bookwyrm/templates/snippets/create_status_form.html:104 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:19 msgid "Private" msgstr "私密" -#: bookwyrm/templates/snippets/create_status_form.html:102 +#: bookwyrm/templates/snippets/create_status_form.html:115 msgid "Post" msgstr "发布" @@ -2050,24 +2304,27 @@ msgstr "删除这些阅读日期吗?" #: bookwyrm/templates/snippets/delete_readthrough_modal.html:7 #, python-format -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 次进度更新。" #: bookwyrm/templates/snippets/delete_readthrough_modal.html:15 #: bookwyrm/templates/snippets/follow_request_buttons.html:13 +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:391 msgid "Delete" msgstr "删除" #: bookwyrm/templates/snippets/fav_button.html:7 -#: bookwyrm/templates/snippets/fav_button.html:8 -#: bookwyrm/templates/snippets/status/status_body.html:55 -#: bookwyrm/templates/snippets/status/status_body.html:56 -msgid "Like status" -msgstr "喜欢状态" +#: bookwyrm/templates/snippets/fav_button.html:9 +msgid "Like" +msgstr "" #: bookwyrm/templates/snippets/fav_button.html:15 #: bookwyrm/templates/snippets/fav_button.html:16 -msgid "Un-like status" +#, fuzzy +#| msgid "Un-like status" +msgid "Un-like" msgstr "取消喜欢状态" #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:7 @@ -2102,6 +2359,11 @@ msgstr "取消关注" msgid "Accept" msgstr "接受" +#: bookwyrm/templates/snippets/form_rate_stars.html:20 +#: bookwyrm/templates/snippets/stars.html:13 +msgid "No rating" +msgstr "没有评价" + #: bookwyrm/templates/snippets/generated_status/goal.html:1 #, python-format msgid "set a goal to read %(counter)s book in %(year)s" @@ -2110,15 +2372,21 @@ msgstr[0] "设定了在 %(year)s 内要读 %(counter)s 本书的目标" #: bookwyrm/templates/snippets/generated_status/rating.html:3 #, python-format -msgid "Rated %(title)s: %(display_rating)s star" -msgid_plural "Rated %(title)s: %(display_rating)s stars" -msgstr[0] "为 %(title)s 打了分: %(display_rating)s 星" +msgid "" +"Rated %(title)s: %(display_rating)s star" +msgid_plural "" +"Rated %(title)s: %(display_rating)s stars" +msgstr[0] "" +"为 %(title)s 打了分: %(display_rating)s 星" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "\"%(book_title)s\" 的书评(%(display_rating)s 星): %(review_title)s" +msgid "" +"Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "" +"Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "" +"\"%(book_title)s\" 的书评(%(display_rating)s 星): %(review_title)s" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8 #, python-format @@ -2127,8 +2395,12 @@ msgstr "\"%(book_title)s\" 的书评: %(review_title)s" #: bookwyrm/templates/snippets/goal_card.html:23 #, python-format -msgid "You can set or change your reading goal any time from your profile page" -msgstr "你可以在任何时候从你的个人资料页面 中设置或改变你的阅读目标" +msgid "" +"You can set or change your reading goal any time from your profile page" +msgstr "" +"你可以在任何时候从你的个人资料页面 中设置或改变你的" +"阅读目标" #: bookwyrm/templates/snippets/goal_form.html:9 msgid "Reading goal:" @@ -2153,10 +2425,6 @@ msgstr "发布到消息流中" msgid "Set goal" msgstr "设置目标" -#: bookwyrm/templates/snippets/goal_progress.html:5 -msgid "Success!" -msgstr "成功!" - #: bookwyrm/templates/snippets/goal_progress.html:7 #, python-format msgid "%(percent)s%% complete!" @@ -2164,13 +2432,20 @@ msgstr "完成了 %(percent)s%% !" #: bookwyrm/templates/snippets/goal_progress.html:10 #, python-format -msgid "You've read %(read_count)s of %(goal_count)s books." -msgstr "你已经阅读了 %(goal_count)s 本书中的 %(read_count)s 本。" +msgid "" +"You've read %(read_count)s of %(goal_count)s books." +msgstr "" +"你已经阅读了 %(goal_count)s 本书中的 %(read_count)s 本。" #: bookwyrm/templates/snippets/goal_progress.html:12 #, python-format -msgid "%(username)s has read %(read_count)s of %(goal_count)s books." -msgstr "%(username)s 已经阅读了 %(goal_count)s 本书中的 %(read_count)s 本。" +msgid "" +"%(username)s has read %(read_count)s of %(goal_count)s " +"books." +msgstr "" +"%(username)s 已经阅读了 %(goal_count)s 本书中的 " +"%(read_count)s 本。" #: bookwyrm/templates/snippets/page_text.html:4 #, python-format @@ -2182,11 +2457,11 @@ msgstr "%(total_pages)s 页中的第 %(page)s 页" msgid "page %(page)s" msgstr "第 %(page)s 页" -#: bookwyrm/templates/snippets/pagination.html:5 +#: bookwyrm/templates/snippets/pagination.html:12 msgid "Previous" msgstr "往前" -#: bookwyrm/templates/snippets/pagination.html:9 +#: bookwyrm/templates/snippets/pagination.html:23 msgid "Next" msgstr "往后" @@ -2219,7 +2494,7 @@ msgstr "关注者" msgid "Leave a rating" msgstr "留下评价" -#: bookwyrm/templates/snippets/rate_action.html:29 +#: bookwyrm/templates/snippets/rate_action.html:19 msgid "Rate" msgstr "评价" @@ -2276,29 +2551,25 @@ msgid "Report" msgstr "报告" #: bookwyrm/templates/snippets/rss_title.html:5 -#: bookwyrm/templates/snippets/status/status_header.html:11 +#: bookwyrm/templates/snippets/status/status_header.html:34 msgid "rated" msgstr "评价了" #: bookwyrm/templates/snippets/rss_title.html:7 -#: bookwyrm/templates/snippets/status/status_header.html:13 +#: bookwyrm/templates/snippets/status/status_header.html:36 msgid "reviewed" msgstr "写了书评给" #: bookwyrm/templates/snippets/rss_title.html:9 -#: bookwyrm/templates/snippets/status/status_header.html:15 +#: bookwyrm/templates/snippets/status/status_header.html:38 msgid "commented on" msgstr "评论了" #: bookwyrm/templates/snippets/rss_title.html:11 -#: bookwyrm/templates/snippets/status/status_header.html:17 +#: bookwyrm/templates/snippets/status/status_header.html:40 msgid "quoted" msgstr "引用了" -#: bookwyrm/templates/snippets/search_result_text.html:10 -msgid "No cover" -msgstr "没有封面" - #: bookwyrm/templates/snippets/search_result_text.html:22 #, python-format msgid "by %(author)s" @@ -2318,7 +2589,7 @@ msgid "Finish \"%(book_title)s\"" msgstr "完成 \"%(book_title)s\"" #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:5 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:35 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:34 msgid "Update progress" msgstr "更新进度" @@ -2339,7 +2610,7 @@ msgstr "完成阅读" msgid "Want to read" msgstr "想要阅读" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:48 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:45 #, python-format msgid "Remove from %(name)s" msgstr "从 %(name)s 移除" @@ -2354,60 +2625,65 @@ msgstr "开始 \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "想要阅读 \"%(book_title)s\"" +#: bookwyrm/templates/snippets/status/content_status.html:67 +#: bookwyrm/templates/snippets/trimmed_text.html:14 +msgid "Show more" +msgstr "显示更多" + +#: bookwyrm/templates/snippets/status/content_status.html:82 +#: bookwyrm/templates/snippets/trimmed_text.html:29 +msgid "Show less" +msgstr "显示更少" + +#: bookwyrm/templates/snippets/status/content_status.html:112 +msgid "Open image in new window" +msgstr "在新窗口中打开图像" + +#: bookwyrm/templates/snippets/status/layout.html:22 +#: bookwyrm/templates/snippets/status/status_options.html:17 +msgid "Delete status" +msgstr "删除发文" + +#: bookwyrm/templates/snippets/status/layout.html:52 +#: bookwyrm/templates/snippets/status/layout.html:53 +msgid "Boost status" +msgstr "转发状态" + +#: bookwyrm/templates/snippets/status/layout.html:56 +#: bookwyrm/templates/snippets/status/layout.html:57 +msgid "Like status" +msgstr "喜欢状态" + #: bookwyrm/templates/snippets/status/status.html:9 msgid "boosted" msgstr "转发了" -#: bookwyrm/templates/snippets/status/status_body.html:27 -#: bookwyrm/templates/snippets/status/status_options.html:18 -msgid "Delete status" -msgstr "删除发文" - -#: bookwyrm/templates/snippets/status/status_body.html:34 -#: bookwyrm/templates/snippets/status/status_body.html:47 -#: bookwyrm/templates/snippets/status/status_body.html:48 -msgid "Reply" -msgstr "回复" - -#: bookwyrm/templates/snippets/status/status_content.html:18 -#: bookwyrm/templates/snippets/trimmed_text.html:15 -msgid "Show more" -msgstr "显示更多" - -#: bookwyrm/templates/snippets/status/status_content.html:25 -#: bookwyrm/templates/snippets/trimmed_text.html:25 -msgid "Show less" -msgstr "显示更少" - -#: bookwyrm/templates/snippets/status/status_content.html:46 -msgid "Open image in new window" -msgstr "在新窗口中打开图像" - -#: bookwyrm/templates/snippets/status/status_header.html:22 +#: bookwyrm/templates/snippets/status/status_header.html:44 #, python-format -msgid "replied to %(username)s's review" -msgstr "回复了 %(username)s书评" - -#: bookwyrm/templates/snippets/status/status_header.html:24 -#, python-format -msgid "replied to %(username)s's comment" -msgstr "恢复了 %(username)s评论" - -#: bookwyrm/templates/snippets/status/status_header.html:26 -#, python-format -msgid "replied to %(username)s's quote" -msgstr "回复了 %(username)s引用" - -#: bookwyrm/templates/snippets/status/status_header.html:28 -#, python-format -msgid "replied to %(username)s's status" -msgstr "回复了 %(username)s状态" +msgid "" +"replied to %(username)s's status" +msgstr "" +"回复了 %(username)s状态" #: bookwyrm/templates/snippets/status/status_options.html:7 #: bookwyrm/templates/snippets/user_options.html:7 msgid "More options" msgstr "更多选项" +#: bookwyrm/templates/snippets/status/status_options.html:26 +#, fuzzy +#| msgid "Delete these read dates" +msgid "Delete & re-draft" +msgstr "删除这些阅读日期" + +#: bookwyrm/templates/snippets/status/status_options.html:35 +#: bookwyrm/templates/snippets/user_options.html:13 +#: bookwyrm/templates/user_admin/user_moderation_actions.html:6 +msgid "Send direct message" +msgstr "发送私信" + #: bookwyrm/templates/snippets/switch_edition_button.html:5 msgid "Switch to this edition" msgstr "切换到此版本" @@ -2420,19 +2696,6 @@ msgstr "升序排序" msgid "Sorted descending" msgstr "降序排序" -#: bookwyrm/templates/snippets/tag.html:14 -msgid "Remove tag" -msgstr "移除标签" - -#: bookwyrm/templates/snippets/tag.html:18 -msgid "Add tag" -msgstr "添加标签" - -#: bookwyrm/templates/tag.html:9 -#, python-format -msgid "Books tagged \"%(tag.name)s\"" -msgstr "标有 \"%(tag.name)s\" 标签的书" - #: bookwyrm/templates/user/books_header.html:5 #, python-format msgid "%(username)s's books" @@ -2471,10 +2734,6 @@ msgstr "正在关注" msgid "%(username)s isn't following any users" msgstr "%(username)s 没有关注任何用户" -#: bookwyrm/templates/user/lists.html:9 -msgid "Your Lists" -msgstr "你的列表" - #: bookwyrm/templates/user/lists.html:11 #, python-format msgid "Lists: %(username)s" @@ -2484,7 +2743,7 @@ msgstr "列表: %(username)s" msgid "Create list" msgstr "创建列表" -#: bookwyrm/templates/user/shelf.html:24 bookwyrm/views/shelf.py:56 +#: bookwyrm/templates/user/shelf.html:24 bookwyrm/views/shelf.py:51 msgid "All books" msgstr "所有书目" @@ -2496,23 +2755,23 @@ msgstr "创建书架" msgid "Edit shelf" msgstr "编辑书架" -#: bookwyrm/templates/user/shelf.html:78 +#: bookwyrm/templates/user/shelf.html:77 bookwyrm/templates/user/shelf.html:99 msgid "Shelved" msgstr "上架时间" -#: bookwyrm/templates/user/shelf.html:79 +#: bookwyrm/templates/user/shelf.html:78 bookwyrm/templates/user/shelf.html:103 msgid "Started" msgstr "开始时间" -#: bookwyrm/templates/user/shelf.html:80 +#: bookwyrm/templates/user/shelf.html:79 bookwyrm/templates/user/shelf.html:106 msgid "Finished" msgstr "完成时间" -#: bookwyrm/templates/user/shelf.html:129 +#: bookwyrm/templates/user/shelf.html:132 msgid "This shelf is empty." msgstr "此书架是空的。" -#: bookwyrm/templates/user/shelf.html:135 +#: bookwyrm/templates/user/shelf.html:138 msgid "Delete shelf" msgstr "删除书架" @@ -2574,6 +2833,79 @@ msgstr[0] "%(counter)s 个关注者" msgid "%(counter)s following" msgstr "关注着 %(counter)s 人" +#: bookwyrm/templates/user_admin/user.html:11 +#, fuzzy +#| msgid "Back to reports" +msgid "Back to users" +msgstr "回到报告" + +#: bookwyrm/templates/user_admin/user_admin.html:7 +#, python-format +msgid "Users: %(server_name)s" +msgstr "用户: %(server_name)s" + +#: bookwyrm/templates/user_admin/user_admin.html:22 +#: bookwyrm/templates/user_admin/username_filter.html:5 +msgid "Username" +msgstr "用户名" + +#: bookwyrm/templates/user_admin/user_admin.html:26 +msgid "Date Added" +msgstr "添加日期:" + +#: bookwyrm/templates/user_admin/user_admin.html:30 +msgid "Last Active" +msgstr "最后或缺" + +#: bookwyrm/templates/user_admin/user_admin.html:38 +msgid "Remote server" +msgstr "移除服务器" + +#: bookwyrm/templates/user_admin/user_admin.html:47 +msgid "Active" +msgstr "活跃" + +#: bookwyrm/templates/user_admin/user_admin.html:47 +msgid "Inactive" +msgstr "停用" + +#: bookwyrm/templates/user_admin/user_admin.html:52 +#: bookwyrm/templates/user_admin/user_info.html:49 +msgid "Not set" +msgstr "未设置" + +#: bookwyrm/templates/user_admin/user_info.html:5 +#, fuzzy +#| msgid "Details" +msgid "User details" +msgstr "详细" + +#: bookwyrm/templates/user_admin/user_info.html:14 +msgid "View user profile" +msgstr "查看用户个人资料" + +#: bookwyrm/templates/user_admin/user_info.html:20 +#, fuzzy +#| msgid "Instance Settings" +msgid "Instance details" +msgstr "实例设置" + +#: bookwyrm/templates/user_admin/user_info.html:46 +msgid "View instance" +msgstr "" + +#: bookwyrm/templates/user_admin/user_moderation_actions.html:11 +msgid "Suspend user" +msgstr "" + +#: bookwyrm/templates/user_admin/user_moderation_actions.html:13 +msgid "Un-suspend user" +msgstr "" + +#: bookwyrm/templates/user_admin/user_moderation_actions.html:21 +msgid "Access level:" +msgstr "" + #: bookwyrm/views/password.py:32 msgid "No user with that email address was found." msgstr "没有找到使用该邮箱的用户。" @@ -2583,6 +2915,1426 @@ msgstr "没有找到使用该邮箱的用户。" msgid "A password reset link sent to %s" msgstr "密码重置连接已发送给 %s" +#: venv3/lib/python3.8/site-packages/_pytest/config/argparsing.py:442 +#, python-format +msgid "ambiguous option: %(option)s could match %(matches)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/contrib/messages/apps.py:7 +#, fuzzy +#| msgid "All messages" +msgid "Messages" +msgstr "所有消息" + +#: venv3/lib/python3.8/site-packages/django/contrib/sitemaps/apps.py:7 +msgid "Site Maps" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/contrib/staticfiles/apps.py:9 +msgid "Static Files" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/contrib/syndication/apps.py:7 +msgid "Syndication" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/paginator.py:45 +msgid "That page number is not an integer" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/paginator.py:47 +msgid "That page number is less than 1" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/paginator.py:52 +msgid "That page contains no results" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:32 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid value." +msgstr "邮箱地址:" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:103 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:659 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid URL." +msgstr "邮箱地址:" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:155 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid integer." +msgstr "邮箱地址:" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:166 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid email address." +msgstr "邮箱地址:" + +#. Translators: "letters" means latin letters: a-z and A-Z. +#: venv3/lib/python3.8/site-packages/django/core/validators.py:240 +msgid "" +"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:247 +msgid "" +"Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or " +"hyphens." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:256 +#: venv3/lib/python3.8/site-packages/django/core/validators.py:276 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid IPv4 address." +msgstr "邮箱地址:" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:261 +#: venv3/lib/python3.8/site-packages/django/core/validators.py:277 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid IPv6 address." +msgstr "邮箱地址:" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:271 +#: venv3/lib/python3.8/site-packages/django/core/validators.py:275 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid IPv4 or IPv6 address." +msgstr "邮箱地址:" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:305 +msgid "Enter only digits separated by commas." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:311 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:343 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:352 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:362 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d character (it has " +"%(show_value)d)." +msgid_plural "" +"Ensure this value has at least %(limit_value)d characters (it has " +"%(show_value)d)." +msgstr[0] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:377 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d character (it has " +"%(show_value)d)." +msgid_plural "" +"Ensure this value has at most %(limit_value)d characters (it has " +"%(show_value)d)." +msgstr[0] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:396 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:291 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:326 +#, fuzzy +#| msgid "Series number:" +msgid "Enter a number." +msgstr "系列编号:" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:398 +#, python-format +msgid "Ensure that there are no more than %(max)s digit in total." +msgid_plural "Ensure that there are no more than %(max)s digits in total." +msgstr[0] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:403 +#, python-format +msgid "Ensure that there are no more than %(max)s decimal place." +msgid_plural "Ensure that there are no more than %(max)s decimal places." +msgstr[0] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:408 +#, python-format +msgid "" +"Ensure that there are no more than %(max)s digit before the decimal point." +msgid_plural "" +"Ensure that there are no more than %(max)s digits before the decimal point." +msgstr[0] "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:470 +#, python-format +msgid "" +"File extension “%(extension)s” is not allowed. Allowed extensions are: " +"%(allowed_extensions)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/core/validators.py:522 +msgid "Null characters are not allowed." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/base.py:1181 +#: venv3/lib/python3.8/site-packages/django/forms/models.py:759 +msgid "and" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/base.py:1183 +#, fuzzy, python-format +#| msgid "A user with this email already exists." +msgid "%(model_name)s with this %(field_labels)s already exists." +msgstr "已经存在使用该邮箱的用户。" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:104 +#, fuzzy, python-format +#| msgid "%(value)s is not a valid remote_id" +msgid "Value %(value)r is not a valid choice." +msgstr "%(value)s 不是有效的 remote_id" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:105 +#, fuzzy +#| msgid "This shelf is empty." +msgid "This field cannot be null." +msgstr "此书架是空的。" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:106 +msgid "This field cannot be blank." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:107 +#, fuzzy, python-format +#| msgid "A user with this email already exists." +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "已经存在使用该邮箱的用户。" + +#. Translators: The 'lookup_type' is one of 'date', 'year' or 'month'. +#. Eg: "Title must be unique for pub_date year" +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:111 +#, python-format +msgid "" +"%(field_label)s must be unique for %(date_field_label)s %(lookup_type)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:130 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:937 +#, python-format +msgid "“%(value)s” value must be either True or False." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:938 +#, python-format +msgid "“%(value)s” value must be either True, False, or None." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:940 +msgid "Boolean (Either True or False)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:981 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1045 +#, fuzzy +#| msgid "No active invites" +msgid "Comma-separated integers" +msgstr "无有效的邀请" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1094 +#, python-format +msgid "" +"“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD " +"format." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1096 +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1239 +#, python-format +msgid "" +"“%(value)s” value has the correct format (YYYY-MM-DD) but it is an invalid " +"date." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1099 +msgid "Date (without time)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1237 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[." +"uuuuuu]][TZ] format." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1241 +#, python-format +msgid "" +"“%(value)s” value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]" +"[TZ]) but it is an invalid date/time." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1245 +msgid "Date (with time)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1393 +#, python-format +msgid "“%(value)s” value must be a decimal number." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1395 +#, fuzzy +#| msgid "Series number:" +msgid "Decimal number" +msgstr "系列编号:" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1534 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[." +"uuuuuu] format." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1537 +#, fuzzy +#| msgid "List curation:" +msgid "Duration" +msgstr "列表策展:" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1587 +#, fuzzy +#| msgid "Email address:" +msgid "Email address" +msgstr "邮箱地址:" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1610 +msgid "File path" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1676 +#, python-format +msgid "“%(value)s” value must be a float." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1678 +msgid "Floating point number" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1716 +#, python-format +msgid "“%(value)s” value must be an integer." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1718 +msgid "Integer" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1801 +#, fuzzy +#| msgid "No active invites" +msgid "Big (8 byte) integer" +msgstr "无有效的邀请" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1817 +#, fuzzy +#| msgid "Email address:" +msgid "IPv4 address" +msgstr "邮箱地址:" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1848 +#, fuzzy +#| msgid "Email address:" +msgid "IP address" +msgstr "邮箱地址:" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1928 +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1929 +#, python-format +msgid "“%(value)s” value must be either None, True or False." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1931 +msgid "Boolean (Either True, False or None)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1966 +#, fuzzy +#| msgid "No active invites" +msgid "Positive integer" +msgstr "无有效的邀请" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1979 +#, fuzzy +#| msgid "No active invites" +msgid "Positive small integer" +msgstr "无有效的邀请" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:1993 +#, python-format +msgid "Slug (up to %(max_length)s)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2025 +msgid "Small integer" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2032 +msgid "Text" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2060 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] " +"format." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2062 +#, python-format +msgid "" +"“%(value)s” value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an " +"invalid time." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2065 +msgid "Time" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2191 +msgid "URL" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2213 +msgid "Raw binary data" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2278 +#, fuzzy, python-format +#| msgid "%(value)s is not a valid username" +msgid "“%(value)s” is not a valid UUID." +msgstr "%(value)s 不是有效的用户名" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/__init__.py:2280 +msgid "Universally unique identifier" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/files.py:221 +msgid "File" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/files.py:360 +#, fuzzy +#| msgid "Images" +msgid "Image" +msgstr "图像" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:778 +#, python-format +msgid "%(model)s instance with %(field)s %(value)r does not exist." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:780 +msgid "Foreign Key (type determined by related field)" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1012 +#, fuzzy +#| msgid "Relationships" +msgid "One-to-one relationship" +msgstr "关系" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1066 +#, fuzzy, python-format +#| msgid "Relationships" +msgid "%(from)s-%(to)s relationship" +msgstr "关系" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1067 +#, fuzzy, python-format +#| msgid "Relationships" +msgid "%(from)s-%(to)s relationships" +msgstr "关系" + +#: venv3/lib/python3.8/site-packages/django/db/models/fields/related.py:1109 +#, fuzzy +#| msgid "Relationships" +msgid "Many-to-many relationship" +msgstr "关系" + +#. Translators: If found as last label character, these punctuation +#. characters will prevent the default label_suffix to be appended to the label +#: venv3/lib/python3.8/site-packages/django/forms/boundfield.py:149 +msgid ":?.!" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:53 +#, fuzzy +#| msgid "This shelf is empty." +msgid "This field is required." +msgstr "此书架是空的。" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:246 +#, fuzzy +#| msgid "Series number:" +msgid "Enter a whole number." +msgstr "系列编号:" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:397 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:1127 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid date." +msgstr "邮箱地址:" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:421 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:1128 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid time." +msgstr "邮箱地址:" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:443 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid date/time." +msgstr "邮箱地址:" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:472 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid duration." +msgstr "邮箱地址:" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:473 +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:533 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:534 +msgid "No file was submitted." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:535 +#, fuzzy +#| msgid "This shelf is empty." +msgid "The submitted file is empty." +msgstr "此书架是空的。" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:537 +#, python-format +msgid "Ensure this filename has at most %(max)d character (it has %(length)d)." +msgid_plural "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr[0] "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:540 +msgid "Please either submit a file or check the clear checkbox, not both." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:601 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:763 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:853 +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1275 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:854 +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:969 +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1274 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a list of values." +msgstr "邮箱地址:" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:970 +msgid "Enter a complete value." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/fields.py:1186 +#, fuzzy +#| msgid "Email address:" +msgid "Enter a valid UUID." +msgstr "邮箱地址:" + +#. Translators: This is the default suffix added to form field labels +#: venv3/lib/python3.8/site-packages/django/forms/forms.py:81 +msgid ":" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/forms.py:207 +#, python-format +msgid "(Hidden field %(name)s) %(error)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:93 +msgid "ManagementForm data is missing or has been tampered with" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:345 +#, python-format +msgid "Please submit %d or fewer forms." +msgid_plural "Please submit %d or fewer forms." +msgstr[0] "" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:352 +#, python-format +msgid "Please submit %d or more forms." +msgid_plural "Please submit %d or more forms." +msgstr[0] "" + +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:379 +#: venv3/lib/python3.8/site-packages/django/forms/formsets.py:386 +#, fuzzy +#| msgid "Order by" +msgid "Order" +msgstr "排列顺序" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:754 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:758 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:764 +#, python-format +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:773 +msgid "Please correct the duplicate values below." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1094 +msgid "The inline value did not match the parent instance." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1161 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/models.py:1277 +#, fuzzy, python-format +#| msgid "%(value)s is not a valid username" +msgid "“%(pk)s” is not a valid value." +msgstr "%(value)s 不是有效的用户名" + +#: venv3/lib/python3.8/site-packages/django/forms/utils.py:162 +#, python-format +msgid "" +"%(datetime)s couldn’t be interpreted in time zone %(current_timezone)s; it " +"may be ambiguous or it may not exist." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:395 +msgid "Clear" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:396 +#, fuzzy +#| msgid "Start reading" +msgid "Currently" +msgstr "开始阅读" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:397 +#, fuzzy +#| msgid "Change shelf" +msgid "Change" +msgstr "改变书架" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:709 +msgid "Unknown" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:710 +msgid "Yes" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/forms/widgets.py:711 +msgid "No" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:788 +msgid "yes,no,maybe" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:817 +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:834 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:836 +#, python-format +msgid "%s KB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:838 +#, python-format +msgid "%s MB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:840 +#, python-format +msgid "%s GB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:842 +#, python-format +msgid "%s TB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/template/defaultfilters.py:844 +#, python-format +msgid "%s PB" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:62 +msgid "p.m." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:63 +msgid "a.m." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:68 +msgid "PM" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:69 +msgid "AM" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:150 +msgid "midnight" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dateformat.py:152 +msgid "noon" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:295 +msgid "Monday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:296 +msgid "Tuesday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:297 +msgid "Wednesday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:298 +msgid "Thursday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:6 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:299 +msgid "Friday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:7 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:300 +msgid "Saturday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:7 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:301 +msgid "Sunday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Mon" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Tue" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Wed" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Thu" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:10 +msgid "Fri" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:11 +#, fuzzy +#| msgid "Status" +msgid "Sat" +msgstr "状态" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:11 +msgid "Sun" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:281 +msgid "January" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:282 +msgid "February" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:283 +#, fuzzy +#| msgid "Search" +msgid "March" +msgstr "搜索" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:284 +msgid "April" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:285 +msgid "May" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:14 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:286 +msgid "June" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:287 +msgid "July" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:288 +msgid "August" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:289 +#, fuzzy +#| msgid "Series number:" +msgid "September" +msgstr "系列编号:" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:290 +msgid "October" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:15 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:291 +msgid "November" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:16 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:292 +#, fuzzy +#| msgid "Series number:" +msgid "December" +msgstr "系列编号:" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "jan" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "feb" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "mar" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "apr" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "may" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:19 +msgid "jun" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "jul" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "aug" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "sep" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "oct" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "nov" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:20 +msgid "dec" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:23 +msgctxt "abbrev. month" +msgid "Jan." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:24 +msgctxt "abbrev. month" +msgid "Feb." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:25 +#, fuzzy +#| msgid "Search" +msgctxt "abbrev. month" +msgid "March" +msgstr "搜索" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:26 +msgctxt "abbrev. month" +msgid "April" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:27 +msgctxt "abbrev. month" +msgid "May" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:28 +msgctxt "abbrev. month" +msgid "June" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:29 +msgctxt "abbrev. month" +msgid "July" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:30 +msgctxt "abbrev. month" +msgid "Aug." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:31 +msgctxt "abbrev. month" +msgid "Sept." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:32 +msgctxt "abbrev. month" +msgid "Oct." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:33 +msgctxt "abbrev. month" +msgid "Nov." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:34 +msgctxt "abbrev. month" +msgid "Dec." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:37 +msgctxt "alt. month" +msgid "January" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:38 +msgctxt "alt. month" +msgid "February" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:39 +#, fuzzy +#| msgid "Search" +msgctxt "alt. month" +msgid "March" +msgstr "搜索" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:40 +msgctxt "alt. month" +msgid "April" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:41 +msgctxt "alt. month" +msgid "May" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:42 +msgctxt "alt. month" +msgid "June" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:43 +msgctxt "alt. month" +msgid "July" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:44 +msgctxt "alt. month" +msgid "August" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:45 +#, fuzzy +#| msgid "Series number:" +msgctxt "alt. month" +msgid "September" +msgstr "系列编号:" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:46 +msgctxt "alt. month" +msgid "October" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:47 +msgctxt "alt. month" +msgid "November" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/dates.py:48 +#, fuzzy +#| msgid "Series number:" +msgctxt "alt. month" +msgid "December" +msgstr "系列编号:" + +#: venv3/lib/python3.8/site-packages/django/utils/ipv6.py:8 +#, fuzzy +#| msgid "Email address:" +msgid "This is not a valid IPv6 address." +msgstr "邮箱地址:" + +#: venv3/lib/python3.8/site-packages/django/utils/text.py:69 +#, python-format +msgctxt "String to return when truncating text" +msgid "%(truncated_text)s…" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/text.py:235 +msgid "or" +msgstr "" + +#. Translators: This string is used as a separator between list elements +#: venv3/lib/python3.8/site-packages/django/utils/text.py:254 +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:83 +msgid ", " +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:9 +#, python-format +msgid "%d year" +msgid_plural "%d years" +msgstr[0] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:10 +#, python-format +msgid "%d month" +msgid_plural "%d months" +msgstr[0] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:11 +#, python-format +msgid "%d week" +msgid_plural "%d weeks" +msgstr[0] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:12 +#, python-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:13 +#, python-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:14 +#, python-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "" + +#: venv3/lib/python3.8/site-packages/django/utils/timesince.py:72 +msgid "0 minutes" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:110 +msgid "Forbidden" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:111 +msgid "CSRF verification failed. Request aborted." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:115 +msgid "" +"You are seeing this message because this HTTPS site requires a “Referer " +"header” to be sent by your Web browser, but none was sent. This header is " +"required for security reasons, to ensure that your browser is not being " +"hijacked by third parties." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:120 +msgid "" +"If you have configured your browser to disable “Referer” headers, please re-" +"enable them, at least for this site, or for HTTPS connections, or for “same-" +"origin” requests." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:124 +msgid "" +"If you are using the tag or " +"including the “Referrer-Policy: no-referrer” header, please remove them. The " +"CSRF protection requires the “Referer” header to do strict referer checking. " +"If you’re concerned about privacy, use alternatives like for links to third-party sites." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:132 +msgid "" +"You are seeing this message because this site requires a CSRF cookie when " +"submitting forms. This cookie is required for security reasons, to ensure " +"that your browser is not being hijacked by third parties." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:137 +msgid "" +"If you have configured your browser to disable cookies, please re-enable " +"them, at least for this site, or for “same-origin” requests." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/csrf.py:142 +msgid "More information is available with DEBUG=True." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:41 +msgid "No year specified" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:61 +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:111 +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:208 +msgid "Date out of range" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:90 +msgid "No month specified" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:142 +msgid "No day specified" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:188 +msgid "No week specified" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:338 +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:367 +#, python-format +msgid "No %(verbose_name_plural)s available" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:589 +#, python-format +msgid "" +"Future %(verbose_name_plural)s not available because %(class_name)s." +"allow_future is False." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/dates.py:623 +#, python-format +msgid "Invalid date string “%(datestr)s” given format “%(format)s”" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/detail.py:54 +#, fuzzy, python-format +#| msgid "No books found matching the query \"%(query)s\"" +msgid "No %(verbose_name)s found matching the query" +msgstr "没有符合 \"%(query)s\" 请求的书目" + +#: venv3/lib/python3.8/site-packages/django/views/generic/list.py:67 +msgid "Page is not “last”, nor can it be converted to an int." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/list.py:72 +#, python-format +msgid "Invalid page (%(page_number)s): %(message)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/generic/list.py:154 +#, python-format +msgid "Empty list and “%(class_name)s.allow_empty” is False." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/static.py:40 +msgid "Directory indexes are not allowed here." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/static.py:42 +#, python-format +msgid "“%(path)s” does not exist" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/static.py:80 +#, python-format +msgid "Index of %(directory)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:7 +msgid "Django: the Web framework for perfectionists with deadlines." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:346 +#, python-format +msgid "" +"View release notes for Django %(version)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:368 +msgid "The install worked successfully! Congratulations!" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:369 +#, python-format +msgid "" +"You are seeing this page because DEBUG=True is in your settings file and you have not configured any " +"URLs." +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:384 +msgid "Django Documentation" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:385 +msgid "Topics, references, & how-to’s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:396 +msgid "Tutorial: A Polling App" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:397 +msgid "Get started with Django" +msgstr "" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:408 +#, fuzzy +#| msgid "Community" +msgid "Django Community" +msgstr "社区" + +#: venv3/lib/python3.8/site-packages/django/views/templates/default_urlconf.html:409 +msgid "Connect, get help, or contribute" +msgstr "" + +#: venv3/lib/python3.8/site-packages/kombu/transport/qpid.py:1301 +#, python-format +msgid "Attempting to connect to qpid with SASL mechanism %s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/kombu/transport/qpid.py:1306 +#, python-format +msgid "Connected to qpid with SASL mechanism %s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/kombu/transport/qpid.py:1324 +#, python-format +msgid "Unable to connect to qpid with SASL mechanism %s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:371 +msgid "1 second ago" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:377 +msgid "1 minute ago" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:382 +msgid "1 hour ago" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:385 +#, python-format +msgid "%(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:387 +msgid "yesterday" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:387 +#, python-format +msgid "yesterday at %(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:389 +#, python-format +msgid "%(weekday)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:389 +#, python-format +msgid "%(weekday)s at %(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:392 +#: venv3/lib/python3.8/site-packages/tornado/locale.py:445 +#, python-format +msgid "%(month_name)s %(day)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:394 +#, python-format +msgid "%(month_name)s %(day)s at %(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:399 +#, python-format +msgid "%(month_name)s %(day)s, %(year)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:401 +#, python-format +msgid "%(month_name)s %(day)s, %(year)s at %(time)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:439 +#, python-format +msgid "%(weekday)s, %(month_name)s %(day)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/locale.py:462 +#, python-format +msgid "%(commas)s and %(last)s" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:68 +msgctxt "law" +msgid "right" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:69 +msgctxt "good" +msgid "right" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:71 +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:74 +msgctxt "organization" +msgid "club" +msgstr "" + +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:76 +#: venv3/lib/python3.8/site-packages/tornado/test/locale_test.py:77 +msgctxt "stick" +msgid "club" +msgstr "" + +#~ msgid "Deactivate user" +#~ msgstr "停用用户" + +#~ msgid "Reactivate user" +#~ msgstr "启用用户" + +#~ msgid "Date" +#~ msgstr "日期" + +#, python-format +#~ msgid "" +#~ "replied to %(username)s's review" +#~ msgstr "" +#~ "回复了 %(username)s书评" + +#, python-format +#~ msgid "" +#~ "replied to %(username)s's comment" +#~ msgstr "" +#~ "恢复了 %(username)s评论" + +#, python-format +#~ msgid "" +#~ "replied to %(username)s's quote" +#~ msgstr "" +#~ "回复了 %(username)s引用" + +#~ msgid "Remove tag" +#~ msgstr "移除标签" + +#~ msgid "Add tag" +#~ msgstr "添加标签" + +#, python-format +#~ msgid "Books tagged \"%(tag.name)s\"" +#~ msgstr "标有 \"%(tag.name)s\" 标签的书" + #, fuzzy #~| msgid "Started" #~ msgid "Getting Started" @@ -2596,9 +4348,6 @@ msgstr "密码重置连接已发送给 %s" #~ msgid "Tags" #~ msgstr "标签" -#~ msgid "Your shelves" -#~ msgstr "你的书架" - #~ msgid "Your lists" #~ msgstr "你的列表" @@ -2638,119 +4387,6 @@ msgstr "密码重置连接已发送给 %s" #~ msgid "Send follow request" #~ msgstr "发送关注请求" -#, fuzzy -#~| msgid "All messages" -#~ msgid "Messages" -#~ msgstr "所有消息" - -#, fuzzy -#~| msgid "Email address:" -#~ msgid "Enter a valid email address." -#~ msgstr "邮箱地址:" - -#, fuzzy -#~| msgid "Series number:" -#~ msgid "Enter a number." -#~ msgstr "系列编号:" - -#, fuzzy -#~| msgid "Series number:" -#~ msgid "Decimal number" -#~ msgstr "系列编号:" - -#, fuzzy -#~| msgid "List curation:" -#~ msgid "Duration" -#~ msgstr "列表策展:" - -#, fuzzy -#~| msgid "Email address:" -#~ msgid "Email address" -#~ msgstr "邮箱地址:" - -#, fuzzy -#~| msgid "Email address:" -#~ msgid "IPv4 address" -#~ msgstr "邮箱地址:" - -#, fuzzy -#~| msgid "Email address:" -#~ msgid "IP address" -#~ msgstr "邮箱地址:" - -#, fuzzy -#~| msgid "No active invites" -#~ msgid "Positive integer" -#~ msgstr "无有效的邀请" - -#, fuzzy -#~| msgid "Images" -#~ msgid "Image" -#~ msgstr "图像" - -#, fuzzy -#~| msgid "Relationships" -#~ msgid "One-to-one relationship" -#~ msgstr "关系" - -#, fuzzy -#~| msgid "This shelf is empty." -#~ msgid "This field is required." -#~ msgstr "此书架是空的。" - -#, fuzzy -#~| msgid "This shelf is empty." -#~ msgid "The submitted file is empty." -#~ msgstr "此书架是空的。" - -#, fuzzy -#~| msgid "Start reading" -#~ msgid "Currently" -#~ msgstr "开始阅读" - -#, fuzzy -#~| msgid "Change shelf" -#~ msgid "Change" -#~ msgstr "改变书架" - -#, fuzzy -#~| msgid "Status" -#~ msgid "Sat" -#~ msgstr "状态" - -#, fuzzy -#~| msgid "Search" -#~ msgid "March" -#~ msgstr "搜索" - -#, fuzzy -#~| msgid "Series number:" -#~ msgid "September" -#~ msgstr "系列编号:" - -#, fuzzy -#~| msgid "Search" -#~ msgctxt "abbrev. month" -#~ msgid "March" -#~ msgstr "搜索" - -#, fuzzy -#~| msgid "Search" -#~ msgctxt "alt. month" -#~ msgid "March" -#~ msgstr "搜索" - -#, fuzzy -#~| msgid "Series number:" -#~ msgctxt "alt. month" -#~ msgid "September" -#~ msgstr "系列编号:" - -#, fuzzy -#~| msgid "No books found matching the query \"%(query)s\"" -#~ msgid "No %(verbose_name)s found matching the query" -#~ msgstr "没有符合 \"%(query)s\" 请求的书目" - #~ msgid "Announcements" #~ msgstr "公告" From c2ffdb8f03da3e1c6caceaa573efb9d66ec27700 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 10:04:33 -0700 Subject: [PATCH 031/252] Import ratings as ratings, not reviews --- bookwyrm/importers/importer.py | 45 ++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/bookwyrm/importers/importer.py b/bookwyrm/importers/importer.py index c1e41897..89c62e73 100644 --- a/bookwyrm/importers/importer.py +++ b/bookwyrm/importers/importer.py @@ -116,24 +116,33 @@ def handle_imported_book(source, user, item, include_reviews, privacy): read.save() if include_reviews and (item.rating or item.review): - review_title = ( - "Review of {!r} on {!r}".format( - item.book.title, - source, - ) - if item.review - else "" - ) - # we don't know the publication date of the review, # but "now" is a bad guess published_date_guess = item.date_read or item.date_added - models.Review.objects.create( - user=user, - book=item.book, - name=review_title, - content=item.review, - rating=item.rating, - published_date=published_date_guess, - privacy=privacy, - ) + if item.review: + review_title = ( + "Review of {!r} on {!r}".format( + item.book.title, + source, + ) + if item.review + else "" + ) + models.Review.objects.create( + user=user, + book=item.book, + name=review_title, + content=item.review, + rating=item.rating, + published_date=published_date_guess, + privacy=privacy, + ) + else: + # just a rating + models.ReviewRating.objects.create( + user=user, + book=item.book, + rating=item.rating, + published_date=published_date_guess, + privacy=privacy, + ) From 99efe6b290dc07a117764904e41f59480d34f4b8 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 10:11:13 -0700 Subject: [PATCH 032/252] Limit how many notifications are loaded --- bookwyrm/views/notifications.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/views/notifications.py b/bookwyrm/views/notifications.py index e0e2102d..0324f595 100644 --- a/bookwyrm/views/notifications.py +++ b/bookwyrm/views/notifications.py @@ -16,7 +16,7 @@ class Notifications(View): notifications = request.user.notification_set.all().order_by("-created_date") unread = [n.id for n in notifications.filter(read=False)] data = { - "notifications": notifications, + "notifications": notifications[:50], "unread": unread, } notifications.update(read=True) From 786cf4fb977857e8e441fbcbec4ca47f430dc04f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 10:26:27 -0700 Subject: [PATCH 033/252] Paginate followers/following pages --- bookwyrm/templates/user/followers.html | 2 ++ bookwyrm/templates/user/following.html | 2 ++ bookwyrm/views/notifications.py | 2 +- bookwyrm/views/user.py | 6 ++++-- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/bookwyrm/templates/user/followers.html b/bookwyrm/templates/user/followers.html index 45d87a3d..b294db90 100644 --- a/bookwyrm/templates/user/followers.html +++ b/bookwyrm/templates/user/followers.html @@ -29,4 +29,6 @@
      {% blocktrans with username=user.display_name %}{{ username }} has no followers{% endblocktrans %}
      {% endif %}
      + +{% include 'snippets/pagination.html' with page=followers path=request.path %} {% endblock %} diff --git a/bookwyrm/templates/user/following.html b/bookwyrm/templates/user/following.html index 5904c1bb..38c01ad2 100644 --- a/bookwyrm/templates/user/following.html +++ b/bookwyrm/templates/user/following.html @@ -29,4 +29,6 @@
      {% blocktrans with username=user|username %}{{ username }} isn't following any users{% endblocktrans %}
      {% endif %}
      + +{% include 'snippets/pagination.html' with page=following path=request.path %} {% endblock %} diff --git a/bookwyrm/views/notifications.py b/bookwyrm/views/notifications.py index 0324f595..3d08cade 100644 --- a/bookwyrm/views/notifications.py +++ b/bookwyrm/views/notifications.py @@ -16,7 +16,7 @@ class Notifications(View): notifications = request.user.notification_set.all().order_by("-created_date") unread = [n.id for n in notifications.filter(read=False)] data = { - "notifications": notifications[:50], + "notifications": notifications[:50], "unread": unread, } notifications.update(read=True) diff --git a/bookwyrm/views/user.py b/bookwyrm/views/user.py index 05fdb606..d394c1d7 100644 --- a/bookwyrm/views/user.py +++ b/bookwyrm/views/user.py @@ -106,10 +106,11 @@ class Followers(View): if is_api_request(request): return ActivitypubResponse(user.to_followers_activity(**request.GET)) + paginated = Paginator(user.followers.all(), PAGE_LENGTH) data = { "user": user, "is_self": request.user.id == user.id, - "followers": user.followers.all(), + "followers": paginated.page(request.GET.get("page", 1)), } return TemplateResponse(request, "user/followers.html", data) @@ -131,10 +132,11 @@ class Following(View): if is_api_request(request): return ActivitypubResponse(user.to_following_activity(**request.GET)) + paginated = Paginator(user.followers.all(), PAGE_LENGTH) data = { "user": user, "is_self": request.user.id == user.id, - "following": user.following.all(), + "following": paginated.page(request.GET.get("page", 1)), } return TemplateResponse(request, "user/following.html", data) From 8b154b69fbb40caa3e8d115fa494277136b84a0e Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 10:35:37 -0700 Subject: [PATCH 034/252] Fixes follower/following logic in suggested user annotations --- bookwyrm/views/helpers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bookwyrm/views/helpers.py b/bookwyrm/views/helpers.py index 8a60b54c..6207f63e 100644 --- a/bookwyrm/views/helpers.py +++ b/bookwyrm/views/helpers.py @@ -190,11 +190,11 @@ def get_annotated_users(user, *args, **kwargs): .exclude(Q(id__in=user.blocks.all()) | Q(blocks=user)) .annotate( mutuals=Count( - "following", + "followers", filter=Q( ~Q(id=user.id), ~Q(id__in=user.following.all()), - following__in=user.following.all(), + followers__in=user.following.all(), ), distinct=True, ), From 141d1a9a17d7f9fd4c0715436e023f96f94b1ed8 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 11:22:08 -0700 Subject: [PATCH 035/252] Adds auto field setting to avoid hella warnings --- bookwyrm/settings.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index fb5488e7..57bf2873 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -34,6 +34,8 @@ LOCALE_PATHS = [ os.path.join(BASE_DIR, "locale"), ] +DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' + # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/ From cd869dde09af75c82f741d8768c21fe4423d67f1 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 11:28:33 -0700 Subject: [PATCH 036/252] Fixes tests of bookwyrm abstract model --- bookwyrm/settings.py | 2 +- bookwyrm/tests/models/test_base_model.py | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 57bf2873..b679e2d4 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -34,7 +34,7 @@ LOCALE_PATHS = [ os.path.join(BASE_DIR, "locale"), ] -DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' +DEFAULT_AUTO_FIELD = "django.db.models.AutoField" # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/ diff --git a/bookwyrm/tests/models/test_base_model.py b/bookwyrm/tests/models/test_base_model.py index 5a8350b2..41aff1fc 100644 --- a/bookwyrm/tests/models/test_base_model.py +++ b/bookwyrm/tests/models/test_base_model.py @@ -26,20 +26,22 @@ class BaseModel(TestCase): outbox="https://example.com/users/rat/outbox", ) + class TestModel(base_model.BookWyrmModel): + """ just making it not abstract """ + self.test_model = TestModel() + def test_remote_id(self): """these should be generated""" - instance = base_model.BookWyrmModel() - instance.id = 1 - expected = instance.get_remote_id() - self.assertEqual(expected, "https://%s/bookwyrmmodel/1" % DOMAIN) + self.test_model.id = 1 + expected = self.test_model.get_remote_id() + self.assertEqual(expected, "https://%s/testmodel/1" % DOMAIN) def test_remote_id_with_user(self): """format of remote id when there's a user object""" - instance = base_model.BookWyrmModel() - instance.user = self.local_user - instance.id = 1 - expected = instance.get_remote_id() - self.assertEqual(expected, "https://%s/user/mouse/bookwyrmmodel/1" % DOMAIN) + self.test_model.user = self.local_user + self.test_model.id = 1 + expected = self.test_model.get_remote_id() + self.assertEqual(expected, "https://%s/user/mouse/testmodel/1" % DOMAIN) def test_set_remote_id(self): """this function sets remote ids after creation""" From df31ac9742c295f770c00c07e2e34b6c44b0981d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 11:33:17 -0700 Subject: [PATCH 037/252] Show rating in statuses --- bookwyrm/templates/snippets/status/status_header.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/bookwyrm/templates/snippets/status/status_header.html b/bookwyrm/templates/snippets/status/status_header.html index 3b46b9ce..b9faf64e 100644 --- a/bookwyrm/templates/snippets/status/status_header.html +++ b/bookwyrm/templates/snippets/status/status_header.html @@ -6,7 +6,7 @@
      @@ -47,7 +47,7 @@ {% if status.book %} {% if status.status_type == 'GeneratedNote' or status.status_type == 'Rating' %} - {{ status.book|title }}{% if status.status_type == 'Rating' %}: + {{ status.book|title }}{% if status.status_type == 'Rating' %}: {% include 'snippets/stars.html' with rating=status.rating %} - {% include 'snippets/stars.html' with rating=status.rating %} {% endif %} {% else %} {% include 'snippets/book_titleby.html' with book=status.book %} From b16ac91b16b8c2542a50cb7b6e57445225f864ac Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 11:34:04 -0700 Subject: [PATCH 038/252] Python formatting --- bookwyrm/tests/models/test_base_model.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bookwyrm/tests/models/test_base_model.py b/bookwyrm/tests/models/test_base_model.py index 41aff1fc..d500e8ea 100644 --- a/bookwyrm/tests/models/test_base_model.py +++ b/bookwyrm/tests/models/test_base_model.py @@ -28,6 +28,7 @@ class BaseModel(TestCase): class TestModel(base_model.BookWyrmModel): """ just making it not abstract """ + self.test_model = TestModel() def test_remote_id(self): From ff8601f329c5b90b28ca7746071cfbb3694fdffb Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 11:37:07 -0700 Subject: [PATCH 039/252] Fixes spacing for new Black release --- bookwyrm/tests/models/test_base_model.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/tests/models/test_base_model.py b/bookwyrm/tests/models/test_base_model.py index d500e8ea..f473085b 100644 --- a/bookwyrm/tests/models/test_base_model.py +++ b/bookwyrm/tests/models/test_base_model.py @@ -27,7 +27,7 @@ class BaseModel(TestCase): ) class TestModel(base_model.BookWyrmModel): - """ just making it not abstract """ + """just making it not abstract""" self.test_model = TestModel() From 5bb341ba52efc6621153f7bf65a45924e87245b5 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 11:43:13 -0700 Subject: [PATCH 040/252] Use copy of requests GET params in list redirect --- bookwyrm/views/list.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/views/list.py b/bookwyrm/views/list.py index 6a241ada..89b936e9 100644 --- a/bookwyrm/views/list.py +++ b/bookwyrm/views/list.py @@ -270,7 +270,7 @@ def add_book(request): pass path = reverse("list", args=[book_list.id]) - params = request.GET + params = request.GET.copy() params["updated"] = True return redirect("{:s}?{:s}".format(path, urlencode(params))) From 7006f30ac8c0e4f6985de079d4834d920f5353c8 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 11:51:17 -0700 Subject: [PATCH 041/252] Uses unique test model name --- bookwyrm/tests/models/test_base_model.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bookwyrm/tests/models/test_base_model.py b/bookwyrm/tests/models/test_base_model.py index f473085b..ef2cd900 100644 --- a/bookwyrm/tests/models/test_base_model.py +++ b/bookwyrm/tests/models/test_base_model.py @@ -26,10 +26,10 @@ class BaseModel(TestCase): outbox="https://example.com/users/rat/outbox", ) - class TestModel(base_model.BookWyrmModel): + class BookWyrmTestModel(base_model.BookWyrmModel): """just making it not abstract""" - self.test_model = TestModel() + self.test_model = BookWyrmTestModel() def test_remote_id(self): """these should be generated""" From 4deb94714cf411b9383b03a3ba294a7bb1ebb1b0 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 13:48:54 -0700 Subject: [PATCH 042/252] Adds test for import rating --- .../tests/importers/test_goodreads_import.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/bookwyrm/tests/importers/test_goodreads_import.py b/bookwyrm/tests/importers/test_goodreads_import.py index 0e39d5ec..655567d0 100644 --- a/bookwyrm/tests/importers/test_goodreads_import.py +++ b/bookwyrm/tests/importers/test_goodreads_import.py @@ -228,6 +228,32 @@ class GoodreadsImport(TestCase): self.assertEqual(review.published_date.day, 8) self.assertEqual(review.privacy, "unlisted") + @patch("bookwyrm.activitystreams.ActivityStream.add_status") + def test_handle_imported_book_rating(self, _): + """goodreads rating import""" + import_job = models.ImportJob.objects.create(user=self.user) + datafile = pathlib.Path(__file__).parent.joinpath( + "../data/goodreads-rating.csv" + ) + csv_file = open(datafile, "r") + entry = list(csv.DictReader(csv_file))[2] + entry = self.importer.parse_fields(entry) + import_item = models.ImportItem.objects.create( + job_id=import_job.id, index=0, data=entry, book=self.book + ) + + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + handle_imported_book( + self.importer.service, self.user, import_item, True, "unlisted" + ) + review = models.ReviewRating.objects.get(book=self.book, user=self.user) + self.assertIsInstance(review, models.ReviewRating) + self.assertEqual(review.rating, 2) + self.assertEqual(review.published_date.year, 2019) + self.assertEqual(review.published_date.month, 7) + self.assertEqual(review.published_date.day, 8) + self.assertEqual(review.privacy, "unlisted") + def test_handle_imported_book_reviews_disabled(self): """goodreads review import""" import_job = models.ImportJob.objects.create(user=self.user) From 55eb1c45263b403f0c9b3f06fcc6607b3cca35bf Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 13:50:43 -0700 Subject: [PATCH 043/252] Fixes model name --- bookwyrm/tests/models/test_base_model.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bookwyrm/tests/models/test_base_model.py b/bookwyrm/tests/models/test_base_model.py index ef2cd900..75d0444c 100644 --- a/bookwyrm/tests/models/test_base_model.py +++ b/bookwyrm/tests/models/test_base_model.py @@ -35,14 +35,14 @@ class BaseModel(TestCase): """these should be generated""" self.test_model.id = 1 expected = self.test_model.get_remote_id() - self.assertEqual(expected, "https://%s/testmodel/1" % DOMAIN) + self.assertEqual(expected, "https://%s/bookwyrmtestmodel/1" % DOMAIN) def test_remote_id_with_user(self): """format of remote id when there's a user object""" self.test_model.user = self.local_user self.test_model.id = 1 expected = self.test_model.get_remote_id() - self.assertEqual(expected, "https://%s/user/mouse/testmodel/1" % DOMAIN) + self.assertEqual(expected, "https://%s/user/mouse/bookwyrmtestmodel/1" % DOMAIN) def test_set_remote_id(self): """this function sets remote ids after creation""" From 674c4a99dfdd043e99d60f5bddbcba0846fa5f29 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 13:56:09 -0700 Subject: [PATCH 044/252] Adds missing data file --- bookwyrm/tests/data/goodreads-rating.csv | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 bookwyrm/tests/data/goodreads-rating.csv diff --git a/bookwyrm/tests/data/goodreads-rating.csv b/bookwyrm/tests/data/goodreads-rating.csv new file mode 100644 index 00000000..fec0c77d --- /dev/null +++ b/bookwyrm/tests/data/goodreads-rating.csv @@ -0,0 +1,5 @@ +Book Id,Title,Author,Author l-f,Additional Authors,ISBN,ISBN13,My Rating,Average Rating,Publisher,Binding,Number of Pages,Year Published,Original Publication Year,Date Read,Date Added,Bookshelves,Bookshelves with positions,Exclusive Shelf,My Review,Spoiler,Private Notes,Read Count,Recommended For,Recommended By,Owned Copies,Original Purchase Date,Original Purchase Location,Condition,Condition Description,BCID +42036538,Gideon the Ninth (The Locked Tomb #1),Tamsyn Muir,"Muir, Tamsyn",,"=""1250313198""","=""9781250313195""",0,4.20,Tor,Hardcover,448,2019,2019,2020/10/25,2020/10/21,,,read,,,,1,,,0,,,,, +52691223,Subcutanean,Aaron A. Reed,"Reed, Aaron A.",,"=""""","=""""",0,4.45,,Paperback,232,2020,,2020/03/06,2020/03/05,,,read,,,,1,,,0,,,,, +28694510,Patisserie at Home,Mélanie Dupuis,"Dupuis, Mélanie",Anne Cazor,"=""0062445316""","=""9780062445315""",2,4.60,Harper Design,Hardcover,288,2016,,,2019/07/08,,,read,,,,2,,,0,,,,, + From 85297426e07917c20d5d5d7fed344380af5b6608 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 14:33:16 -0700 Subject: [PATCH 045/252] Adds merge migration --- ...63_auto_20210407_0045_0070_auto_20210423_0121.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 bookwyrm/migrations/0071_merge_0063_auto_20210407_0045_0070_auto_20210423_0121.py diff --git a/bookwyrm/migrations/0071_merge_0063_auto_20210407_0045_0070_auto_20210423_0121.py b/bookwyrm/migrations/0071_merge_0063_auto_20210407_0045_0070_auto_20210423_0121.py new file mode 100644 index 00000000..b6489b80 --- /dev/null +++ b/bookwyrm/migrations/0071_merge_0063_auto_20210407_0045_0070_auto_20210423_0121.py @@ -0,0 +1,13 @@ +# Generated by Django 3.2 on 2021-04-26 21:32 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0063_auto_20210407_0045"), + ("bookwyrm", "0070_auto_20210423_0121"), + ] + + operations = [] From 7b65291a59b6f3b5f7a64360227ce41451aec5b5 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 26 Apr 2021 14:43:29 -0700 Subject: [PATCH 046/252] Python formatting for the new Black standard --- bookwyrm/activitypub/book.py | 2 +- bookwyrm/connectors/abstract_connector.py | 4 ++-- bookwyrm/connectors/inventaire.py | 14 +++++++------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/bookwyrm/activitypub/book.py b/bookwyrm/activitypub/book.py index dfe14b6f..597d7a66 100644 --- a/bookwyrm/activitypub/book.py +++ b/bookwyrm/activitypub/book.py @@ -8,7 +8,7 @@ from .image import Document @dataclass(init=False) class BookData(ActivityObject): - """ shared fields for all book data and authors""" + """shared fields for all book data and authors""" openlibraryKey: str = None inventaireId: str = None diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index 14fe3cb7..fd2b2707 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -69,7 +69,7 @@ class AbstractMinimalConnector(ABC): return results def get_search_data(self, remote_id, **kwargs): # pylint: disable=no-self-use - """ this allows connectors to override the default behavior """ + """this allows connectors to override the default behavior""" return get_data(remote_id, **kwargs) @abstractmethod @@ -155,7 +155,7 @@ class AbstractConnector(AbstractMinimalConnector): return edition def get_book_data(self, remote_id): # pylint: disable=no-self-use - """ this allows connectors to override the default behavior """ + """this allows connectors to override the default behavior""" return get_data(remote_id) def create_edition_from_data(self, work, edition_data): diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index 594fe810..ae6fb862 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -6,7 +6,7 @@ from .connector_manager import ConnectorException class Connector(AbstractConnector): - """ instantiate a connector for OL """ + """instantiate a connector for OL""" def __init__(self, identifier): super().__init__(identifier) @@ -51,7 +51,7 @@ class Connector(AbstractConnector): ] + shared_mappings def get_remote_id(self, value): - """ convert an id/uri into a url """ + """convert an id/uri into a url""" return "{:s}?action=by-uris&uris={:s}".format(self.books_url, value) def get_book_data(self, remote_id): @@ -88,16 +88,16 @@ class Connector(AbstractConnector): ) def parse_isbn_search_data(self, data): - """ boop doop """ + """boop doop""" def format_isbn_search_result(self, search_result): - """ beep bloop """ + """beep bloop""" def is_work_data(self, data): return data.get("type") == "work" def load_edition_data(self, work_uri): - """ get a list of editions for a work """ + """get a list of editions for a work""" url = "{:s}?action=reverse-claims&property=wdt:P629&value={:s}".format( self.books_url, work_uri ) @@ -149,7 +149,7 @@ class Connector(AbstractConnector): return "%s%s" % (self.covers_url, cover_id) def resolve_keys(self, keys): - """ cool, it's "wd:Q3156592" now what the heck does that mean """ + """cool, it's "wd:Q3156592" now what the heck does that mean""" results = [] for uri in keys: try: @@ -161,5 +161,5 @@ class Connector(AbstractConnector): def get_language_code(options, code="en"): - """ when there are a bunch of translation but we need a single field """ + """when there are a bunch of translation but we need a single field""" return options.get(code) From 8ddc292ee634af784594b307c53f02fe3fb9174e Mon Sep 17 00:00:00 2001 From: Fabien Basmaison Date: Tue, 27 Apr 2021 14:58:30 +0200 Subject: [PATCH 047/252] cover: Change the logic again: - Work on feeds. - Add `.is-cover` to modify the behaviours of columns. - Only apply logic for dimensions on the cover container; too many contextual side effects otherwise. - Add classes to dimension and align, including auto margins for flex. - Rename classes in templates accordingly. --- bookwyrm/static/css/bookwyrm.css | 243 ++++++++++++++++-- bookwyrm/templates/book/book.html | 2 +- bookwyrm/templates/book/edit_book.html | 2 +- bookwyrm/templates/book/editions.html | 8 +- bookwyrm/templates/discover/small-book.html | 2 +- bookwyrm/templates/feed/feed_layout.html | 2 +- bookwyrm/templates/import_status.html | 2 +- bookwyrm/templates/lists/curate.html | 10 +- bookwyrm/templates/lists/list.html | 16 +- bookwyrm/templates/lists/list_items.html | 4 +- .../snippets/search_result_text.html | 4 +- .../snippets/status/content_status.html | 39 +-- .../snippets/status/generated_status.html | 31 ++- bookwyrm/templates/user/user.html | 2 +- 14 files changed, 294 insertions(+), 73 deletions(-) diff --git a/bookwyrm/static/css/bookwyrm.css b/bookwyrm/static/css/bookwyrm.css index 8f95cfeb..4d27c2a4 100644 --- a/bookwyrm/static/css/bookwyrm.css +++ b/bookwyrm/static/css/bookwyrm.css @@ -159,19 +159,33 @@ body { /** Book covers * - * - The context gives the extrinsic dimensions. - * - .cover-container gives the intrinsic dimensions and position. + * - .is-cover gives the behaviour of the cover and its surrounding. + * - .cover-container gives the dimensions and position (for borders, image and other elements). * - .book-cover is positioned and sized based on its container. + * + * To have the cover with specific dimensions, specify a width or height for + * standard bulma’s named breapoints: + * + * is-[w|h]-[xs|s|m|l|xl]-[mobile|tablet|desktop] ******************************************************************************/ +.column.is-cover { + flex-grow: 0 !important; +} + +.column.is-cover, +.column.is-cover + .column { + flex-basis: auto !important; +} + .cover-container { display: flex; + justify-content: center; + align-items: center; position: relative; + width: max-content; + max-width: 100%; overflow: hidden; - min-width: 80px; - min-height: 100px; - max-width: max-content; - outline: solid 1px #dbdbdb; } /* Book cover @@ -278,46 +292,231 @@ body { min-height: 96px !important; } -.is-h-small { +.is-w-auto { + width: auto !important; +} + +.is-w-xs { + width: 80px !important; +} + +.is-w-s { + width: 100px !important; +} + +.is-w-m { + width: 150px !important; +} + +.is-w-l { + width: 200px !important; +} + +.is-h-xs { + height: 80px !important; +} + +.is-h-s { height: 100px !important; } -.is-h-medium { +.is-h-m { height: 150px !important; } +.is-h-l { + height: 200px !important; +} + @media only screen and (max-width: 768px) { - .is-h-medium-mobile { - height: 150px; + .is-w-auto-mobile { + width: auto !important; + } + + .is-w-xs-mobile { + width: 80px !important; + } + + .is-w-s-mobile { + width: 100px !important; + } + + .is-w-m-mobile { + width: 150px !important; + } + + .is-w-l-mobile { + width: 200px !important; + } + + .is-h-xs-mobile { + height: 80px !important; + } + + .is-h-s-mobile { + height: 100px !important; + } + + .is-h-m-mobile { + height: 150px !important; + } + + .is-h-l-mobile { + height: 200px !important; } } -.is-min-w-none { - min-width: auto !important; +@media only screen and (min-width: 769px) { + .is-w-auto-tablet { + width: auto !important; + } + + .is-w-xs-tablet { + width: 80px !important; + } + + .is-w-s-tablet { + width: 100px !important; + } + + .is-w-m-tablet { + width: 150px !important; + } + + .is-w-l-tablet { + width: 200px !important; + } + + .is-h-xs-tablet { + height: 80px !important; + } + + .is-h-s-tablet { + height: 100px !important; + } + + .is-h-m-tablet { + height: 150px !important; + } + + .is-h-l-tablet { + height: 200px !important; + } +} + +@media only screen and (min-width: 1024px) { + .is-w-auto-desktop { + width: auto !important; + } + + .is-w-xs-desktop { + width: 80px !important; + } + + .is-w-s-desktop { + width: 100px !important; + } + + .is-w-m-desktop { + width: 150px !important; + } + + .is-w-l-desktop { + width: 200px !important; + } + + .is-h-xs-desktop { + height: 80px !important; + } + + .is-h-s-desktop { + height: 100px !important; + } + + .is-h-m-desktop { + height: 150px !important; + } + + .is-h-l-desktop { + height: 200px !important; + } } /* Alignments ******************************************************************************/ /* Flex item position - * - * This is for a default `flex-direction: row`. * -------------------------------------------------------------------------- */ -.align-r { - justify-content: flex-end; +.align { + display: flex !important; + flex-direction: row !important; +} + +.align.to-c { + justify-content: center !important; +} + +.align.to-r { + justify-content: flex-end !important; +} + +.align.to-l { + justify-content: flex-start !important; +} + +@media screen and (max-width: 768px) { + .align.to-c-mobile { + justify-content: center !important; + } + + .align.to-r-mobile { + justify-content: flex-end !important; + } + + .align.to-l-mobile { + justify-content: flex-start !important; + } } @media screen and (min-width: 769px) { - .align-r-tablet { - justify-content: flex-end; + .align.to-c-tablet { + justify-content: center !important; + } + + .align.to-r-tablet { + justify-content: flex-end !important; + } + + .align.to-l-tablet { + justify-content: flex-start !important; } } /* Spacings ******************************************************************************/ +.mr-auto { + margin-right: auto !important; +} + +.ml-auto { + margin-left: auto !important; +} + @media screen and (max-width: 768px) { + .mr-auto-mobile { + margin-right: auto !important; + } + + .ml-auto-mobile { + margin-left: auto !important; + } + + .ml-3-mobile { + margin-left: 0.75rem !important; + } + .my-3-mobile { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; @@ -325,6 +524,14 @@ body { } @media screen and (min-width: 769px) { + .mr-auto-tablet { + margin-right: auto !important; + } + + .ml-auto-tablet { + margin-left: auto !important; + } + .ml-3-tablet { margin-left: 0.75rem !important; } diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 23f7dac0..a9932910 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -48,7 +48,7 @@
      - {% include 'snippets/book_cover.html' with book=book cover_class='is-h-medium-mobile' %} + {% include 'snippets/book_cover.html' with book=book cover_class='is-h-m-mobile' %} {% include 'snippets/rate_action.html' with user=request.user book=book %}
      diff --git a/bookwyrm/templates/book/edit_book.html b/bookwyrm/templates/book/edit_book.html index 0cb1a9b1..de9c9535 100644 --- a/bookwyrm/templates/book/edit_book.html +++ b/bookwyrm/templates/book/edit_book.html @@ -170,7 +170,7 @@

      {% trans "Cover" %}

      - {% include 'snippets/book_cover.html' with book=book cover_class='is-h-small' %} + {% include 'snippets/book_cover.html' with book=book cover_class='is-h-s' %}
      diff --git a/bookwyrm/templates/book/editions.html b/bookwyrm/templates/book/editions.html index 009bdd66..dd580234 100644 --- a/bookwyrm/templates/book/editions.html +++ b/bookwyrm/templates/book/editions.html @@ -14,11 +14,11 @@
      {% for book in editions %}
      -
      - {% include 'snippets/book_cover.html' with book=book cover_class='is-h-medium' %} +
      + {% include 'snippets/book_cover.html' with book=book cover_class='is-w-m is-h-m align to-l-mobile' %}
      -
      +

      {{ book.title }} @@ -26,7 +26,7 @@

      {% with book=book %} -
      +
      {% include 'book/publisher_info.html' %}
      diff --git a/bookwyrm/templates/discover/small-book.html b/bookwyrm/templates/discover/small-book.html index c1f5f165..f0e1626c 100644 --- a/bookwyrm/templates/discover/small-book.html +++ b/bookwyrm/templates/discover/small-book.html @@ -6,7 +6,7 @@ {% with book=book %}
      {% include 'snippets/book_cover.html' with cover_class='is-h-small' %} + >{% include 'snippets/book_cover.html' with cover_class='is-h-s' %} {% include 'snippets/stars.html' with rating=book|rating:request.user %} diff --git a/bookwyrm/templates/feed/feed_layout.html b/bookwyrm/templates/feed/feed_layout.html index 669c2aaa..75fc1951 100644 --- a/bookwyrm/templates/feed/feed_layout.html +++ b/bookwyrm/templates/feed/feed_layout.html @@ -37,7 +37,7 @@ aria-label="{{ book.title }}" aria-selected="{% if active_book == book.id|stringformat:'d' %}true{% elif shelf_counter == 1 and forloop.first %}true{% else %}false{% endif %}" aria-controls="book-{{ book.id }}"> - {% include 'snippets/book_cover.html' with book=book cover_class='is-h-medium' %} + {% include 'snippets/book_cover.html' with book=book cover_class='is-h-m' %} {% endfor %} diff --git a/bookwyrm/templates/import_status.html b/bookwyrm/templates/import_status.html index 05c811d2..3ce929e6 100644 --- a/bookwyrm/templates/import_status.html +++ b/bookwyrm/templates/import_status.html @@ -125,7 +125,7 @@ {% if item.book %} - {% include 'snippets/book_cover.html' with book=item.book cover_class='is-h-small' %} + {% include 'snippets/book_cover.html' with book=item.book cover_class='is-h-s' %} {% endif %} diff --git a/bookwyrm/templates/lists/curate.html b/bookwyrm/templates/lists/curate.html index 529f51c3..492b399b 100644 --- a/bookwyrm/templates/lists/curate.html +++ b/bookwyrm/templates/lists/curate.html @@ -25,23 +25,23 @@ mb-6 " > -
      +
      -
      +
      {% trans "Suggested by" %} diff --git a/bookwyrm/templates/lists/list.html b/bookwyrm/templates/lists/list.html index 0b1b05d3..b28c469d 100644 --- a/bookwyrm/templates/lists/list.html +++ b/bookwyrm/templates/lists/list.html @@ -37,13 +37,13 @@ columns is-mobile is-gapless " > -
      + -
      +
      {% include 'snippets/book_titleby.html' %} {% include 'snippets/stars.html' with rating=item.book|rating:request.user %} {% include 'snippets/shelve_button/shelve_button.html' %} @@ -133,11 +133,15 @@ {% if suggested_books|length > 0 %} {% for book in suggested_books %}
      - -
      +

      {% include 'snippets/book_titleby.html' with book=book %}

      diff --git a/bookwyrm/templates/lists/list_items.html b/bookwyrm/templates/lists/list_items.html index f1a4938e..b59e2a96 100644 --- a/bookwyrm/templates/lists/list_items.html +++ b/bookwyrm/templates/lists/list_items.html @@ -13,8 +13,8 @@ {% if list_books %} diff --git a/bookwyrm/templates/snippets/search_result_text.html b/bookwyrm/templates/snippets/search_result_text.html index e234c82c..663ef865 100644 --- a/bookwyrm/templates/snippets/search_result_text.html +++ b/bookwyrm/templates/snippets/search_result_text.html @@ -1,6 +1,8 @@ {% load i18n %}
      - {% include 'snippets/book_cover.html' with book=result cover_class='column' img_path=false %} +
      + {% include 'snippets/book_cover.html' with book=result cover_class='is-w-xs is-h-xs' img_path=false %} +

      diff --git a/bookwyrm/templates/snippets/status/content_status.html b/bookwyrm/templates/snippets/status/content_status.html index b2946b83..31ba33b5 100644 --- a/bookwyrm/templates/snippets/status/content_status.html +++ b/bookwyrm/templates/snippets/status/content_status.html @@ -10,27 +10,30 @@ {% endif %} > -

      +
      {% if not hide_book %} - {% with book=status.book|default:status.mention_books.first %} - {% if book %} -
      -
      -
      - {% include 'snippets/book_cover.html' with book=book %} - {% include 'snippets/stars.html' with rating=book|rating:request.user %} - {% include 'snippets/shelve_button/shelve_button.html' with book=book %} -
      -
      -

      {{ book|book_description|to_markdown|default:""|safe|truncatewords_html:15 }}

      -
      -
      -
      - {% endif %} - {% endwith %} + {% with book=status.book|default:status.mention_books.first %} + {% if book %} +
      +
      +
      + {% include 'snippets/book_cover.html' with book=book cover_class='is-h-xs is-h-l-tablet' %} + + {% include 'snippets/stars.html' with rating=book|rating:request.user %} + + {% include 'snippets/shelve_button/shelve_button.html' with book=book %} +
      + +
      +

      {{ book|book_description|to_markdown|default:""|safe|truncatewords_html:15 }}

      +
      +
      +
      + {% endif %} + {% endwith %} {% endif %} -
      +
      {% if status_type == 'Review' %}

      -
      -
      - {% include 'snippets/book_cover.html' with book=book cover_class='is-h-small' %} + {% with book=status.book|default:status.mention_books.first %} +
      + + {% include 'snippets/book_cover.html' with book=book cover_class='is-h-xs is-h-s-tablet' %} + + +
      +

      + {% include 'snippets/book_titleby.html' with book=book %} +

      + +

      + {{ book|book_description|to_markdown|default:""|safe|truncatewords_html:20 }} +

      + + {% include 'snippets/shelve_button/shelve_button.html' with book=book %} +
      -
      -
      -

      {% include 'snippets/book_titleby.html' with book=book %}

      -

      {{ book|book_description|to_markdown|default:""|safe|truncatewords_html:20 }}

      - {% include 'snippets/shelve_button/shelve_button.html' with book=book %} -
      -
      -{% endwith %} + {% endwith %} {% endif %} {% endspaceless %} diff --git a/bookwyrm/templates/user/user.html b/bookwyrm/templates/user/user.html index 80dac213..444385fe 100644 --- a/bookwyrm/templates/user/user.html +++ b/bookwyrm/templates/user/user.html @@ -36,7 +36,7 @@ {% for book in shelf.books %} {% endfor %} From d8b6676976f48b24dcc2873aebb8eb3143112a9e Mon Sep 17 00:00:00 2001 From: Fabien Basmaison Date: Tue, 27 Apr 2021 16:27:39 +0200 Subject: [PATCH 048/252] cover: Udpate logged out home and discover. --- bookwyrm/static/css/bookwyrm.css | 44 +++++++++++++++++++++ bookwyrm/templates/discover/large-book.html | 10 +++-- bookwyrm/templates/discover/small-book.html | 6 +-- 3 files changed, 53 insertions(+), 7 deletions(-) diff --git a/bookwyrm/static/css/bookwyrm.css b/bookwyrm/static/css/bookwyrm.css index 4d27c2a4..98801fa1 100644 --- a/bookwyrm/static/css/bookwyrm.css +++ b/bookwyrm/static/css/bookwyrm.css @@ -167,6 +167,9 @@ body { * standard bulma’s named breapoints: * * is-[w|h]-[xs|s|m|l|xl]-[mobile|tablet|desktop] + * + * When using `.column.is-N`, add `.is-w-auto` to the container so that the flex + * calculations are not biased by the default `max-content`. ******************************************************************************/ .column.is-cover { @@ -280,6 +283,7 @@ body { } /* Dimensions + * @todo These could be in rem. ******************************************************************************/ .is-32x32 { @@ -312,6 +316,10 @@ body { width: 200px !important; } +.is-w-xxl { + width: 500px !important; +} + .is-h-xs { height: 80px !important; } @@ -328,6 +336,10 @@ body { height: 200px !important; } +.is-h-xxl { + height: 500px !important; +} + @media only screen and (max-width: 768px) { .is-w-auto-mobile { width: auto !important; @@ -349,6 +361,10 @@ body { width: 200px !important; } + .is-w-xxl-mobile { + width: 500px !important; + } + .is-h-xs-mobile { height: 80px !important; } @@ -364,6 +380,10 @@ body { .is-h-l-mobile { height: 200px !important; } + + .is-h-xxl-mobile { + height: 500px !important; + } } @media only screen and (min-width: 769px) { @@ -387,6 +407,10 @@ body { width: 200px !important; } + .is-w-xxl-tablet { + width: 500px !important; + } + .is-h-xs-tablet { height: 80px !important; } @@ -402,6 +426,10 @@ body { .is-h-l-tablet { height: 200px !important; } + + .is-h-xxl-tablet { + height: 500px !important; + } } @media only screen and (min-width: 1024px) { @@ -425,6 +453,10 @@ body { width: 200px !important; } + .is-w-xxl-desktop { + width: 500px !important; + } + .is-h-xs-desktop { height: 80px !important; } @@ -440,6 +472,10 @@ body { .is-h-l-desktop { height: 200px !important; } + + .is-h-xxl-desktop { + height: 500px !important; + } } /* Alignments @@ -461,6 +497,10 @@ body { justify-content: flex-end !important; } +.align.to-b { + align-items: flex-end !important; +} + .align.to-l { justify-content: flex-start !important; } @@ -513,6 +553,10 @@ body { margin-left: auto !important; } + .mt-3-mobile { + margin-top: 0.75rem !important; + } + .ml-3-mobile { margin-left: 0.75rem !important; } diff --git a/bookwyrm/templates/discover/large-book.html b/bookwyrm/templates/discover/large-book.html index c7b39ebb..1808a0f9 100644 --- a/bookwyrm/templates/discover/large-book.html +++ b/bookwyrm/templates/discover/large-book.html @@ -4,16 +4,18 @@ {% if book %} {% with book=book %} -
      -
      +
      +
      {% include 'snippets/book_cover.html' %} + >{% include 'snippets/book_cover.html' with cover_class='is-w-l-mobile is-w-auto-tablet' %} {% include 'snippets/stars.html' with rating=book|rating:request.user %}
      -
      + +

      {{ book.title }}

      diff --git a/bookwyrm/templates/discover/small-book.html b/bookwyrm/templates/discover/small-book.html index f0e1626c..ad7e00fb 100644 --- a/bookwyrm/templates/discover/small-book.html +++ b/bookwyrm/templates/discover/small-book.html @@ -4,9 +4,9 @@ {% if book %} {% with book=book %} - {% include 'snippets/book_cover.html' with cover_class='is-h-s' %} + + {% include 'snippets/book_cover.html' with cover_class='is-w-l-mobile is-h-l-tablet is-w-auto align to-b to-l' %} + {% include 'snippets/stars.html' with rating=book|rating:request.user %} From 8d53b7589fc448b84a8fa63fb1ee47552c06769c Mon Sep 17 00:00:00 2001 From: Fabien Basmaison Date: Tue, 27 Apr 2021 17:23:37 +0200 Subject: [PATCH 049/252] cover: Update /get-started/books: - Remove `.content` from templates. - Remove a stray unclosed label. --- .../templates/get_started/book_preview.html | 8 +-- bookwyrm/templates/get_started/books.html | 63 +++++++++++-------- 2 files changed, 40 insertions(+), 31 deletions(-) diff --git a/bookwyrm/templates/get_started/book_preview.html b/bookwyrm/templates/get_started/book_preview.html index 04d0c424..578fef70 100644 --- a/bookwyrm/templates/get_started/book_preview.html +++ b/bookwyrm/templates/get_started/book_preview.html @@ -1,8 +1,8 @@ {% load i18n %} -
      - {% include 'snippets/book_cover.html' with book=book %} -

      From 095b60bff107ab36370ce1743fb585a38598e904 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 29 Apr 2021 11:22:09 -0700 Subject: [PATCH 081/252] Show search result context for inventaire results --- bookwyrm/connectors/inventaire.py | 2 ++ bookwyrm/templates/snippets/search_result_text.html | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index 896f84af..dc27f2c0 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -86,6 +86,7 @@ class Connector(AbstractConnector): return SearchResult( title=search_result.get("label"), key=self.get_remote_id(search_result.get("uri")), + author=search_result.get("description"), view_link="{:s}/entity/{:s}".format( self.base_url, search_result.get("uri") ), @@ -108,6 +109,7 @@ class Connector(AbstractConnector): return SearchResult( title=title[0], key=self.get_remote_id(search_result.get("uri")), + author=search_result.get("description"), view_link="{:s}/entity/{:s}".format( self.base_url, search_result.get("uri") ), diff --git a/bookwyrm/templates/snippets/search_result_text.html b/bookwyrm/templates/snippets/search_result_text.html index 2f6ba503..26623c05 100644 --- a/bookwyrm/templates/snippets/search_result_text.html +++ b/bookwyrm/templates/snippets/search_result_text.html @@ -18,8 +18,13 @@ {{ result.title }} +

      +

      {% if result.author %} - {% blocktrans with author=result.author %}by {{ author }}{% endblocktrans %}{% endif %}{% if result.year %} ({{ result.year }}) + {{ result.author }} + {% endif %} + {% if result.year %} + ({{ result.year }}) {% endif %}

      From a31d05c6947d2469d4adc9a22975d6155082e8dd Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 29 Apr 2021 11:31:01 -0700 Subject: [PATCH 082/252] Don't crash on books with no isbn --- bookwyrm/models/book.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bookwyrm/models/book.py b/bookwyrm/models/book.py index 0539414a..869ff04d 100644 --- a/bookwyrm/models/book.py +++ b/bookwyrm/models/book.py @@ -240,8 +240,10 @@ class Edition(Book): self.isbn_13 = isbn_10_to_13(self.isbn_10) # normalize isbn format - self.isbn_10 = re.sub(r"[^0-9X]", "", self.isbn_10) - self.isbn_13 = re.sub(r"[^0-9X]", "", self.isbn_13) + if self.isbn_10: + self.isbn_10 = re.sub(r"[^0-9X]", "", self.isbn_10) + if self.isbn_13: + self.isbn_13 = re.sub(r"[^0-9X]", "", self.isbn_13) # set rank self.edition_rank = self.get_rank() From 0dcd7853f7ad4e94dc70104c7f8484f05a4f1844 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 29 Apr 2021 11:38:51 -0700 Subject: [PATCH 083/252] Updates locales --- locale/de_DE/LC_MESSAGES/django.mo | Bin 25779 -> 25234 bytes locale/de_DE/LC_MESSAGES/django.po | 73 ++++++++++++++------------- locale/en_US/LC_MESSAGES/django.po | 67 ++++++++++++------------ locale/es/LC_MESSAGES/django.mo | Bin 42362 -> 65330 bytes locale/es/LC_MESSAGES/django.po | 73 ++++++++++++++------------- locale/fr_FR/LC_MESSAGES/django.mo | Bin 42851 -> 41556 bytes locale/fr_FR/LC_MESSAGES/django.po | 73 ++++++++++++++------------- locale/zh_Hans/LC_MESSAGES/django.mo | Bin 38418 -> 37261 bytes locale/zh_Hans/LC_MESSAGES/django.po | 73 ++++++++++++++------------- 9 files changed, 189 insertions(+), 170 deletions(-) diff --git a/locale/de_DE/LC_MESSAGES/django.mo b/locale/de_DE/LC_MESSAGES/django.mo index dca726855f8f9060958660f8ab5bae1e36db3fd9..3f41eda575696af9585b5df60f4b09c991259496 100644 GIT binary patch delta 7645 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 P?qvmoyxhMQ?)UsZj4dN2 delta 8133 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 Di1DHT diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index 7acc3f96..bbdd1327 100644 --- a/locale/de_DE/LC_MESSAGES/django.po +++ b/locale/de_DE/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-26 09:56-0700\n" +"POT-Creation-Date: 2021-04-29 11:36-0700\n" "PO-Revision-Date: 2021-03-02 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -100,23 +100,23 @@ msgstr "Username" msgid "A user with that username already exists." msgstr "Dieser Benutzename ist bereits vergeben." -#: bookwyrm/settings.py:152 +#: bookwyrm/settings.py:155 msgid "English" msgstr "Englisch" -#: bookwyrm/settings.py:153 +#: bookwyrm/settings.py:156 msgid "German" msgstr "Deutsch" -#: bookwyrm/settings.py:154 +#: bookwyrm/settings.py:157 msgid "Spanish" msgstr "Spanisch" -#: bookwyrm/settings.py:155 +#: bookwyrm/settings.py:158 msgid "French" msgstr "Französisch" -#: bookwyrm/settings.py:156 +#: bookwyrm/settings.py:159 msgid "Simplified Chinese" msgstr "Vereinfachtes Chinesisch" @@ -178,24 +178,30 @@ msgstr "Laden fehlgeschlagen" msgid "View on OpenLibrary" msgstr "In OpenLibrary ansehen" -#: bookwyrm/templates/book/book.html:102 +#: bookwyrm/templates/book/book.html:85 +#, fuzzy +#| msgid "View on OpenLibrary" +msgid "View on Inventaire" +msgstr "In OpenLibrary ansehen" + +#: bookwyrm/templates/book/book.html:105 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" msgstr[0] "(%(review_count)s Bewertung)" msgstr[1] "(%(review_count)s Bewertungen)" -#: bookwyrm/templates/book/book.html:114 +#: bookwyrm/templates/book/book.html:117 msgid "Add Description" msgstr "Beschreibung hinzufügen" -#: bookwyrm/templates/book/book.html:121 +#: bookwyrm/templates/book/book.html:124 #: bookwyrm/templates/book/edit_book.html:107 #: bookwyrm/templates/lists/form.html:12 msgid "Description:" msgstr "Beschreibung:" -#: bookwyrm/templates/book/book.html:125 +#: bookwyrm/templates/book/book.html:128 #: bookwyrm/templates/book/edit_book.html:240 #: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 #: bookwyrm/templates/preferences/edit_user.html:70 @@ -210,7 +216,7 @@ msgstr "Beschreibung:" msgid "Save" msgstr "Speichern" -#: bookwyrm/templates/book/book.html:126 bookwyrm/templates/book/book.html:175 +#: bookwyrm/templates/book/book.html:129 bookwyrm/templates/book/book.html:178 #: bookwyrm/templates/book/cover_modal.html:32 #: bookwyrm/templates/book/edit_book.html:241 #: bookwyrm/templates/edit_author.html:79 @@ -226,19 +232,19 @@ msgstr "Speichern" msgid "Cancel" msgstr "Abbrechen" -#: bookwyrm/templates/book/book.html:135 +#: bookwyrm/templates/book/book.html:138 #, fuzzy, python-format #| msgid "%(title)s by " msgid "%(count)s editions" msgstr "%(title)s von" -#: bookwyrm/templates/book/book.html:143 +#: bookwyrm/templates/book/book.html:146 #, fuzzy, python-format #| msgid "Direct Messages with %(username)s" msgid "This edition is on your %(shelf_name)s shelf." msgstr "Direktnachrichten mit %(username)s" -#: bookwyrm/templates/book/book.html:149 +#: bookwyrm/templates/book/book.html:152 #, fuzzy, python-format #| msgid "" #| " added %(book_title)s to your list " @@ -250,74 +256,74 @@ msgstr "" "hat %(book_title)s zu deiner Liste " "\"%(list_name)s\" Hinzugefügt" -#: bookwyrm/templates/book/book.html:158 +#: bookwyrm/templates/book/book.html:161 msgid "Your reading activity" msgstr "Deine Leseaktivität" -#: bookwyrm/templates/book/book.html:160 +#: bookwyrm/templates/book/book.html:163 msgid "Add read dates" msgstr "Lesedaten hinzufügen" -#: bookwyrm/templates/book/book.html:165 +#: bookwyrm/templates/book/book.html:168 msgid "You don't have any reading activity for this book." msgstr "Du hast keine Leseaktivität für dieses Buch." -#: bookwyrm/templates/book/book.html:172 +#: bookwyrm/templates/book/book.html:175 msgid "Create" msgstr "Erstellen" -#: bookwyrm/templates/book/book.html:194 +#: bookwyrm/templates/book/book.html:197 msgid "Subjects" msgstr "Themen" -#: bookwyrm/templates/book/book.html:206 +#: bookwyrm/templates/book/book.html:209 msgid "Places" msgstr "Orte" -#: bookwyrm/templates/book/book.html:217 bookwyrm/templates/layout.html:65 +#: bookwyrm/templates/book/book.html:220 bookwyrm/templates/layout.html:65 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search_results.html:91 #: bookwyrm/templates/user/user_layout.html:62 msgid "Lists" msgstr "Listen" -#: bookwyrm/templates/book/book.html:228 +#: bookwyrm/templates/book/book.html:231 #, fuzzy #| msgid "Go to list" msgid "Add to list" msgstr "Zur Liste" -#: bookwyrm/templates/book/book.html:238 +#: bookwyrm/templates/book/book.html:241 #: bookwyrm/templates/book/cover_modal.html:31 #: bookwyrm/templates/lists/list.html:133 msgid "Add" msgstr "Hinzufügen" -#: bookwyrm/templates/book/book.html:254 +#: bookwyrm/templates/book/book.html:257 #, fuzzy #| msgid "Review" msgid "Reviews" msgstr "Bewerten" -#: bookwyrm/templates/book/book.html:259 +#: bookwyrm/templates/book/book.html:262 #, fuzzy #| msgid "Your shelves" msgid "Your reviews" msgstr "Deine Regale" -#: bookwyrm/templates/book/book.html:265 +#: bookwyrm/templates/book/book.html:268 #, fuzzy #| msgid "Your Account" msgid "Your comments" msgstr "Dein Account" -#: bookwyrm/templates/book/book.html:271 +#: bookwyrm/templates/book/book.html:274 #, fuzzy #| msgid "Your books" msgid "Your quotes" msgstr "Deine Bücher" -#: bookwyrm/templates/book/book.html:305 +#: bookwyrm/templates/book/book.html:308 msgid "rated it" msgstr "bewertet" @@ -2728,12 +2734,7 @@ msgstr "kommentierte" msgid "quoted" msgstr "zitierte" -#: bookwyrm/templates/snippets/search_result_text.html:22 -#, python-format -msgid "by %(author)s" -msgstr "von %(author)s" - -#: bookwyrm/templates/snippets/search_result_text.html:30 +#: bookwyrm/templates/snippets/search_result_text.html:35 msgid "Import book" msgstr "Buch importieren" @@ -4495,6 +4496,10 @@ msgctxt "stick" msgid "club" msgstr "" +#, python-format +#~ msgid "by %(author)s" +#~ msgstr "von %(author)s" + #~ msgid "Deactivate user" #~ msgstr "Nutzer:in deaktivieren" diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index 6685605a..3637bb77 100644 --- a/locale/en_US/LC_MESSAGES/django.po +++ b/locale/en_US/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-26 09:56-0700\n" +"POT-Creation-Date: 2021-04-29 11:36-0700\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -90,23 +90,23 @@ msgstr "" msgid "A user with that username already exists." msgstr "" -#: bookwyrm/settings.py:152 +#: bookwyrm/settings.py:155 msgid "English" msgstr "" -#: bookwyrm/settings.py:153 +#: bookwyrm/settings.py:156 msgid "German" msgstr "" -#: bookwyrm/settings.py:154 +#: bookwyrm/settings.py:157 msgid "Spanish" msgstr "" -#: bookwyrm/settings.py:155 +#: bookwyrm/settings.py:158 msgid "French" msgstr "" -#: bookwyrm/settings.py:156 +#: bookwyrm/settings.py:159 msgid "Simplified Chinese" msgstr "" @@ -166,24 +166,28 @@ msgstr "" msgid "View on OpenLibrary" msgstr "" -#: bookwyrm/templates/book/book.html:102 +#: bookwyrm/templates/book/book.html:85 +msgid "View on Inventaire" +msgstr "" + +#: bookwyrm/templates/book/book.html:105 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" msgstr[0] "" msgstr[1] "" -#: bookwyrm/templates/book/book.html:114 +#: bookwyrm/templates/book/book.html:117 msgid "Add Description" msgstr "" -#: bookwyrm/templates/book/book.html:121 +#: bookwyrm/templates/book/book.html:124 #: bookwyrm/templates/book/edit_book.html:107 #: bookwyrm/templates/lists/form.html:12 msgid "Description:" msgstr "" -#: bookwyrm/templates/book/book.html:125 +#: bookwyrm/templates/book/book.html:128 #: bookwyrm/templates/book/edit_book.html:240 #: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 #: bookwyrm/templates/preferences/edit_user.html:70 @@ -198,7 +202,7 @@ msgstr "" msgid "Save" msgstr "" -#: bookwyrm/templates/book/book.html:126 bookwyrm/templates/book/book.html:175 +#: bookwyrm/templates/book/book.html:129 bookwyrm/templates/book/book.html:178 #: bookwyrm/templates/book/cover_modal.html:32 #: bookwyrm/templates/book/edit_book.html:241 #: bookwyrm/templates/edit_author.html:79 @@ -214,81 +218,81 @@ msgstr "" msgid "Cancel" msgstr "" -#: bookwyrm/templates/book/book.html:135 +#: bookwyrm/templates/book/book.html:138 #, python-format msgid "%(count)s editions" msgstr "" -#: bookwyrm/templates/book/book.html:143 +#: bookwyrm/templates/book/book.html:146 #, python-format msgid "This edition is on your %(shelf_name)s shelf." msgstr "" -#: bookwyrm/templates/book/book.html:149 +#: bookwyrm/templates/book/book.html:152 #, python-format msgid "" "A different edition of this book is on your %(shelf_name)s shelf." msgstr "" -#: bookwyrm/templates/book/book.html:158 +#: bookwyrm/templates/book/book.html:161 msgid "Your reading activity" msgstr "" -#: bookwyrm/templates/book/book.html:160 +#: bookwyrm/templates/book/book.html:163 msgid "Add read dates" msgstr "" -#: bookwyrm/templates/book/book.html:165 +#: bookwyrm/templates/book/book.html:168 msgid "You don't have any reading activity for this book." msgstr "" -#: bookwyrm/templates/book/book.html:172 +#: bookwyrm/templates/book/book.html:175 msgid "Create" msgstr "" -#: bookwyrm/templates/book/book.html:194 +#: bookwyrm/templates/book/book.html:197 msgid "Subjects" msgstr "" -#: bookwyrm/templates/book/book.html:206 +#: bookwyrm/templates/book/book.html:209 msgid "Places" msgstr "" -#: bookwyrm/templates/book/book.html:217 bookwyrm/templates/layout.html:65 +#: bookwyrm/templates/book/book.html:220 bookwyrm/templates/layout.html:65 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search_results.html:91 #: bookwyrm/templates/user/user_layout.html:62 msgid "Lists" msgstr "" -#: bookwyrm/templates/book/book.html:228 +#: bookwyrm/templates/book/book.html:231 msgid "Add to list" msgstr "" -#: bookwyrm/templates/book/book.html:238 +#: bookwyrm/templates/book/book.html:241 #: bookwyrm/templates/book/cover_modal.html:31 #: bookwyrm/templates/lists/list.html:133 msgid "Add" msgstr "" -#: bookwyrm/templates/book/book.html:254 +#: bookwyrm/templates/book/book.html:257 msgid "Reviews" msgstr "" -#: bookwyrm/templates/book/book.html:259 +#: bookwyrm/templates/book/book.html:262 msgid "Your reviews" msgstr "" -#: bookwyrm/templates/book/book.html:265 +#: bookwyrm/templates/book/book.html:268 msgid "Your comments" msgstr "" -#: bookwyrm/templates/book/book.html:271 +#: bookwyrm/templates/book/book.html:274 msgid "Your quotes" msgstr "" -#: bookwyrm/templates/book/book.html:305 +#: bookwyrm/templates/book/book.html:308 msgid "rated it" msgstr "" @@ -2481,12 +2485,7 @@ msgstr "" msgid "quoted" msgstr "" -#: bookwyrm/templates/snippets/search_result_text.html:22 -#, python-format -msgid "by %(author)s" -msgstr "" - -#: bookwyrm/templates/snippets/search_result_text.html:30 +#: bookwyrm/templates/snippets/search_result_text.html:35 msgid "Import book" msgstr "" diff --git a/locale/es/LC_MESSAGES/django.mo b/locale/es/LC_MESSAGES/django.mo index 64baee4f2fb999e55a052d3f2f25e231cbdc0e16..1fb1ae530173b3a63652ee8d1e2face2a044ffc5 100644 GIT binary patch literal 65330 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 O_<{5vd27 delta 14241 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\n" "Language-Team: LANGUAGE \n" @@ -90,23 +90,23 @@ msgstr "nombre de usuario" msgid "A user with that username already exists." msgstr "Ya existe un usuario con ese nombre." -#: bookwyrm/settings.py:152 +#: bookwyrm/settings.py:155 msgid "English" msgstr "Inglés" -#: bookwyrm/settings.py:153 +#: bookwyrm/settings.py:156 msgid "German" msgstr "Aléman" -#: bookwyrm/settings.py:154 +#: bookwyrm/settings.py:157 msgid "Spanish" msgstr "Español" -#: bookwyrm/settings.py:155 +#: bookwyrm/settings.py:158 msgid "French" msgstr "Francés" -#: bookwyrm/settings.py:156 +#: bookwyrm/settings.py:159 msgid "Simplified Chinese" msgstr "Chino simplificado" @@ -166,24 +166,30 @@ msgstr "No se pudo cargar la portada" msgid "View on OpenLibrary" msgstr "Ver en OpenLibrary" -#: bookwyrm/templates/book/book.html:102 +#: bookwyrm/templates/book/book.html:85 +#, fuzzy +#| msgid "View on OpenLibrary" +msgid "View on Inventaire" +msgstr "Ver en OpenLibrary" + +#: bookwyrm/templates/book/book.html:105 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" msgstr[0] "(%(review_count)s reseña)" msgstr[1] "(%(review_count)s reseñas)" -#: bookwyrm/templates/book/book.html:114 +#: bookwyrm/templates/book/book.html:117 msgid "Add Description" msgstr "Agregar descripción" -#: bookwyrm/templates/book/book.html:121 +#: bookwyrm/templates/book/book.html:124 #: bookwyrm/templates/book/edit_book.html:107 #: bookwyrm/templates/lists/form.html:12 msgid "Description:" msgstr "Descripción:" -#: bookwyrm/templates/book/book.html:125 +#: bookwyrm/templates/book/book.html:128 #: bookwyrm/templates/book/edit_book.html:240 #: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 #: bookwyrm/templates/preferences/edit_user.html:70 @@ -198,7 +204,7 @@ msgstr "Descripción:" msgid "Save" msgstr "Guardar" -#: bookwyrm/templates/book/book.html:126 bookwyrm/templates/book/book.html:175 +#: bookwyrm/templates/book/book.html:129 bookwyrm/templates/book/book.html:178 #: bookwyrm/templates/book/cover_modal.html:32 #: bookwyrm/templates/book/edit_book.html:241 #: bookwyrm/templates/edit_author.html:79 @@ -214,18 +220,18 @@ msgstr "Guardar" msgid "Cancel" msgstr "Cancelar" -#: bookwyrm/templates/book/book.html:135 +#: bookwyrm/templates/book/book.html:138 #, python-format msgid "%(count)s editions" msgstr "%(count)s ediciones" -#: bookwyrm/templates/book/book.html:143 +#: bookwyrm/templates/book/book.html:146 #, python-format msgid "This edition is on your %(shelf_name)s shelf." msgstr "" "Esta edición está en tu %(shelf_name)s estante." -#: bookwyrm/templates/book/book.html:149 +#: bookwyrm/templates/book/book.html:152 #, python-format msgid "" "A different edition of this book is on your edición diferente de este libro está en tu " "%(shelf_name)s estante." -#: bookwyrm/templates/book/book.html:158 +#: bookwyrm/templates/book/book.html:161 msgid "Your reading activity" msgstr "Tu actividad de lectura" -#: bookwyrm/templates/book/book.html:160 +#: bookwyrm/templates/book/book.html:163 msgid "Add read dates" msgstr "Agregar fechas de lectura" -#: bookwyrm/templates/book/book.html:165 +#: bookwyrm/templates/book/book.html:168 msgid "You don't have any reading activity for this book." msgstr "No tienes ninguna actividad de lectura para este libro." -#: bookwyrm/templates/book/book.html:172 +#: bookwyrm/templates/book/book.html:175 msgid "Create" msgstr "Crear" -#: bookwyrm/templates/book/book.html:194 +#: bookwyrm/templates/book/book.html:197 msgid "Subjects" msgstr "Sujetos" -#: bookwyrm/templates/book/book.html:206 +#: bookwyrm/templates/book/book.html:209 msgid "Places" msgstr "Lugares" -#: bookwyrm/templates/book/book.html:217 bookwyrm/templates/layout.html:65 +#: bookwyrm/templates/book/book.html:220 bookwyrm/templates/layout.html:65 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search_results.html:91 #: bookwyrm/templates/user/user_layout.html:62 msgid "Lists" msgstr "Listas" -#: bookwyrm/templates/book/book.html:228 +#: bookwyrm/templates/book/book.html:231 msgid "Add to list" msgstr "Agregar a lista" -#: bookwyrm/templates/book/book.html:238 +#: bookwyrm/templates/book/book.html:241 #: bookwyrm/templates/book/cover_modal.html:31 #: bookwyrm/templates/lists/list.html:133 msgid "Add" msgstr "Agregar" -#: bookwyrm/templates/book/book.html:254 +#: bookwyrm/templates/book/book.html:257 #, fuzzy #| msgid "Review" msgid "Reviews" msgstr "Reseña" -#: bookwyrm/templates/book/book.html:259 +#: bookwyrm/templates/book/book.html:262 #, fuzzy #| msgid "Your shelves" msgid "Your reviews" msgstr "Tus estantes" -#: bookwyrm/templates/book/book.html:265 +#: bookwyrm/templates/book/book.html:268 #, fuzzy #| msgid "Your Account" msgid "Your comments" msgstr "Tu cuenta" -#: bookwyrm/templates/book/book.html:271 +#: bookwyrm/templates/book/book.html:274 #, fuzzy #| msgid "Your books" msgid "Your quotes" msgstr "Tus libros" -#: bookwyrm/templates/book/book.html:305 +#: bookwyrm/templates/book/book.html:308 msgid "rated it" msgstr "lo calificó con" @@ -2571,12 +2577,7 @@ msgstr "comentó en" msgid "quoted" msgstr "citó" -#: bookwyrm/templates/snippets/search_result_text.html:22 -#, python-format -msgid "by %(author)s" -msgstr "por %(author)s" - -#: bookwyrm/templates/snippets/search_result_text.html:30 +#: bookwyrm/templates/snippets/search_result_text.html:35 msgid "Import book" msgstr "Importar libro" @@ -4299,6 +4300,10 @@ msgctxt "stick" msgid "club" msgstr "garrote" +#, python-format +#~ msgid "by %(author)s" +#~ msgstr "por %(author)s" + #, python-format #~ msgid "%(rating)s star" #~ msgid_plural "%(rating)s stars" diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index b91a542dbfb13e56f1baff5aeab3b9c4a3088116..b88e6e3e553d7ff3d88570f27eff191e6a57ad71 100644 GIT binary patch delta 12040 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 A*#H0l diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index ee2f7936..ee7a5534 100644 --- a/locale/fr_FR/LC_MESSAGES/django.po +++ b/locale/fr_FR/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-26 09:56-0700\n" +"POT-Creation-Date: 2021-04-29 11:36-0700\n" "PO-Revision-Date: 2021-04-05 12:44+0100\n" "Last-Translator: Fabien Basmaison \n" "Language-Team: Mouse Reeve \n" @@ -96,23 +96,23 @@ msgstr "nom du compte :" msgid "A user with that username already exists." msgstr "Ce nom est déjà associé à un compte." -#: bookwyrm/settings.py:152 +#: bookwyrm/settings.py:155 msgid "English" msgstr "English" -#: bookwyrm/settings.py:153 +#: bookwyrm/settings.py:156 msgid "German" msgstr "Deutsch" -#: bookwyrm/settings.py:154 +#: bookwyrm/settings.py:157 msgid "Spanish" msgstr "Español" -#: bookwyrm/settings.py:155 +#: bookwyrm/settings.py:158 msgid "French" msgstr "Français" -#: bookwyrm/settings.py:156 +#: bookwyrm/settings.py:159 msgid "Simplified Chinese" msgstr "简化字" @@ -172,24 +172,30 @@ msgstr "La couverture n’a pu être chargée" msgid "View on OpenLibrary" msgstr "Voir sur OpenLibrary" -#: bookwyrm/templates/book/book.html:102 +#: bookwyrm/templates/book/book.html:85 +#, fuzzy +#| msgid "View on OpenLibrary" +msgid "View on Inventaire" +msgstr "Voir sur OpenLibrary" + +#: bookwyrm/templates/book/book.html:105 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" msgstr[0] "(%(review_count)s critique)" msgstr[1] "(%(review_count)s critiques)" -#: bookwyrm/templates/book/book.html:114 +#: bookwyrm/templates/book/book.html:117 msgid "Add Description" msgstr "Ajouter une description" -#: bookwyrm/templates/book/book.html:121 +#: bookwyrm/templates/book/book.html:124 #: bookwyrm/templates/book/edit_book.html:107 #: bookwyrm/templates/lists/form.html:12 msgid "Description:" msgstr "Description :" -#: bookwyrm/templates/book/book.html:125 +#: bookwyrm/templates/book/book.html:128 #: bookwyrm/templates/book/edit_book.html:240 #: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 #: bookwyrm/templates/preferences/edit_user.html:70 @@ -204,7 +210,7 @@ msgstr "Description :" msgid "Save" msgstr "Enregistrer" -#: bookwyrm/templates/book/book.html:126 bookwyrm/templates/book/book.html:175 +#: bookwyrm/templates/book/book.html:129 bookwyrm/templates/book/book.html:178 #: bookwyrm/templates/book/cover_modal.html:32 #: bookwyrm/templates/book/edit_book.html:241 #: bookwyrm/templates/edit_author.html:79 @@ -220,18 +226,18 @@ msgstr "Enregistrer" msgid "Cancel" msgstr "Annuler" -#: bookwyrm/templates/book/book.html:135 +#: bookwyrm/templates/book/book.html:138 #, python-format msgid "%(count)s editions" msgstr "%(count)s éditions" -#: bookwyrm/templates/book/book.html:143 +#: bookwyrm/templates/book/book.html:146 #, python-format msgid "This edition is on your %(shelf_name)s shelf." msgstr "" "Cette édition est sur votre étagère %(shelf_name)s." -#: bookwyrm/templates/book/book.html:149 +#: bookwyrm/templates/book/book.html:152 #, python-format msgid "" "A different edition of this book is on your édition différente de ce livre existe sur " "votre étagère %(shelf_name)s." -#: bookwyrm/templates/book/book.html:158 +#: bookwyrm/templates/book/book.html:161 msgid "Your reading activity" msgstr "Votre activité de lecture" -#: bookwyrm/templates/book/book.html:160 +#: bookwyrm/templates/book/book.html:163 msgid "Add read dates" msgstr "Ajouter des dates de lecture" -#: bookwyrm/templates/book/book.html:165 +#: bookwyrm/templates/book/book.html:168 msgid "You don't have any reading activity for this book." msgstr "Vous n’avez aucune activité de lecture pour ce livre" -#: bookwyrm/templates/book/book.html:172 +#: bookwyrm/templates/book/book.html:175 msgid "Create" msgstr "Créer" -#: bookwyrm/templates/book/book.html:194 +#: bookwyrm/templates/book/book.html:197 msgid "Subjects" msgstr "Sujets" -#: bookwyrm/templates/book/book.html:206 +#: bookwyrm/templates/book/book.html:209 msgid "Places" msgstr "Lieux" -#: bookwyrm/templates/book/book.html:217 bookwyrm/templates/layout.html:65 +#: bookwyrm/templates/book/book.html:220 bookwyrm/templates/layout.html:65 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search_results.html:91 #: bookwyrm/templates/user/user_layout.html:62 msgid "Lists" msgstr "Listes" -#: bookwyrm/templates/book/book.html:228 +#: bookwyrm/templates/book/book.html:231 msgid "Add to list" msgstr "Ajouter à la liste" -#: bookwyrm/templates/book/book.html:238 +#: bookwyrm/templates/book/book.html:241 #: bookwyrm/templates/book/cover_modal.html:31 #: bookwyrm/templates/lists/list.html:133 msgid "Add" msgstr "Ajouter" -#: bookwyrm/templates/book/book.html:254 +#: bookwyrm/templates/book/book.html:257 #, fuzzy #| msgid "Review" msgid "Reviews" msgstr "Critique" -#: bookwyrm/templates/book/book.html:259 +#: bookwyrm/templates/book/book.html:262 #, fuzzy #| msgid "Your shelves" msgid "Your reviews" msgstr "Vos étagères" -#: bookwyrm/templates/book/book.html:265 +#: bookwyrm/templates/book/book.html:268 #, fuzzy #| msgid "Your Account" msgid "Your comments" msgstr "Votre compte" -#: bookwyrm/templates/book/book.html:271 +#: bookwyrm/templates/book/book.html:274 #, fuzzy #| msgid "Your books" msgid "Your quotes" msgstr "Vos livres" -#: bookwyrm/templates/book/book.html:305 +#: bookwyrm/templates/book/book.html:308 msgid "rated it" msgstr "l’a noté" @@ -2605,12 +2611,7 @@ msgstr "a commenté" msgid "quoted" msgstr "a cité" -#: bookwyrm/templates/snippets/search_result_text.html:22 -#, python-format -msgid "by %(author)s" -msgstr "par %(author)s" - -#: bookwyrm/templates/snippets/search_result_text.html:30 +#: bookwyrm/templates/snippets/search_result_text.html:35 msgid "Import book" msgstr "Importer le livre" @@ -4341,6 +4342,10 @@ msgctxt "stick" msgid "club" msgstr "" +#, python-format +#~ msgid "by %(author)s" +#~ msgstr "par %(author)s" + #~ msgid "Deactivate user" #~ msgstr "Désactiver le compte" diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo index 07b8d63ca2e7a940d4feb0d0a94892b7a708e8b5..765ee77f337dbac59fdba575943504652b01f890 100644 GIT binary patch delta 11940 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 delta 12587 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 V7QeP{8O!@`c=dzzbg=N^{{de=0A diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index 789960cc..af3bc59b 100644 --- a/locale/zh_Hans/LC_MESSAGES/django.po +++ b/locale/zh_Hans/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-26 09:56-0700\n" +"POT-Creation-Date: 2021-04-29 11:36-0700\n" "PO-Revision-Date: 2021-03-20 00:56+0000\n" "Last-Translator: Kana \n" "Language-Team: Mouse Reeve \n" @@ -96,23 +96,23 @@ msgstr "用户名" msgid "A user with that username already exists." msgstr "已经存在使用该用户名的用户。" -#: bookwyrm/settings.py:152 +#: bookwyrm/settings.py:155 msgid "English" msgstr "English(英语)" -#: bookwyrm/settings.py:153 +#: bookwyrm/settings.py:156 msgid "German" msgstr "Deutsch(德语)" -#: bookwyrm/settings.py:154 +#: bookwyrm/settings.py:157 msgid "Spanish" msgstr "Español(西班牙语)" -#: bookwyrm/settings.py:155 +#: bookwyrm/settings.py:158 msgid "French" msgstr "Français(法语)" -#: bookwyrm/settings.py:156 +#: bookwyrm/settings.py:159 msgid "Simplified Chinese" msgstr "简体中文" @@ -172,23 +172,29 @@ msgstr "加载封面失败" msgid "View on OpenLibrary" msgstr "在 OpenLibrary 查看" -#: bookwyrm/templates/book/book.html:102 +#: bookwyrm/templates/book/book.html:85 +#, fuzzy +#| msgid "View on OpenLibrary" +msgid "View on Inventaire" +msgstr "在 OpenLibrary 查看" + +#: bookwyrm/templates/book/book.html:105 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" msgstr[0] "(%(review_count)s 则书评)" -#: bookwyrm/templates/book/book.html:114 +#: bookwyrm/templates/book/book.html:117 msgid "Add Description" msgstr "添加描述" -#: bookwyrm/templates/book/book.html:121 +#: bookwyrm/templates/book/book.html:124 #: bookwyrm/templates/book/edit_book.html:107 #: bookwyrm/templates/lists/form.html:12 msgid "Description:" msgstr "描述:" -#: bookwyrm/templates/book/book.html:125 +#: bookwyrm/templates/book/book.html:128 #: bookwyrm/templates/book/edit_book.html:240 #: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 #: bookwyrm/templates/preferences/edit_user.html:70 @@ -203,7 +209,7 @@ msgstr "描述:" msgid "Save" msgstr "保存" -#: bookwyrm/templates/book/book.html:126 bookwyrm/templates/book/book.html:175 +#: bookwyrm/templates/book/book.html:129 bookwyrm/templates/book/book.html:178 #: bookwyrm/templates/book/cover_modal.html:32 #: bookwyrm/templates/book/edit_book.html:241 #: bookwyrm/templates/edit_author.html:79 @@ -219,17 +225,17 @@ msgstr "保存" msgid "Cancel" msgstr "取消" -#: bookwyrm/templates/book/book.html:135 +#: bookwyrm/templates/book/book.html:138 #, python-format msgid "%(count)s editions" msgstr "%(count)s 个版本" -#: bookwyrm/templates/book/book.html:143 +#: bookwyrm/templates/book/book.html:146 #, python-format msgid "This edition is on your %(shelf_name)s shelf." msgstr "此版本在你的 %(shelf_name)s 书架上。" -#: bookwyrm/templates/book/book.html:149 +#: bookwyrm/templates/book/book.html:152 #, python-format msgid "" "A different edition of this book is on your 另一个版本 在你的 %(shelf_name)s 书架上。" -#: bookwyrm/templates/book/book.html:158 +#: bookwyrm/templates/book/book.html:161 msgid "Your reading activity" msgstr "你的阅读活动" -#: bookwyrm/templates/book/book.html:160 +#: bookwyrm/templates/book/book.html:163 msgid "Add read dates" msgstr "添加阅读日期" -#: bookwyrm/templates/book/book.html:165 +#: bookwyrm/templates/book/book.html:168 msgid "You don't have any reading activity for this book." msgstr "你还没有任何这本书的阅读活动。" -#: bookwyrm/templates/book/book.html:172 +#: bookwyrm/templates/book/book.html:175 msgid "Create" msgstr "创建" -#: bookwyrm/templates/book/book.html:194 +#: bookwyrm/templates/book/book.html:197 msgid "Subjects" msgstr "主题" -#: bookwyrm/templates/book/book.html:206 +#: bookwyrm/templates/book/book.html:209 msgid "Places" msgstr "地点" -#: bookwyrm/templates/book/book.html:217 bookwyrm/templates/layout.html:65 +#: bookwyrm/templates/book/book.html:220 bookwyrm/templates/layout.html:65 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search_results.html:91 #: bookwyrm/templates/user/user_layout.html:62 msgid "Lists" msgstr "列表" -#: bookwyrm/templates/book/book.html:228 +#: bookwyrm/templates/book/book.html:231 msgid "Add to list" msgstr "添加到列表" -#: bookwyrm/templates/book/book.html:238 +#: bookwyrm/templates/book/book.html:241 #: bookwyrm/templates/book/cover_modal.html:31 #: bookwyrm/templates/lists/list.html:133 msgid "Add" msgstr "添加" -#: bookwyrm/templates/book/book.html:254 +#: bookwyrm/templates/book/book.html:257 #, fuzzy #| msgid "Review" msgid "Reviews" msgstr "书评" -#: bookwyrm/templates/book/book.html:259 +#: bookwyrm/templates/book/book.html:262 #, fuzzy #| msgid "Your shelves" msgid "Your reviews" msgstr "你的书架" -#: bookwyrm/templates/book/book.html:265 +#: bookwyrm/templates/book/book.html:268 #, fuzzy #| msgid "Your Account" msgid "Your comments" msgstr "你的帐号" -#: bookwyrm/templates/book/book.html:271 +#: bookwyrm/templates/book/book.html:274 #, fuzzy #| msgid "Your books" msgid "Your quotes" msgstr "你的书目" -#: bookwyrm/templates/book/book.html:305 +#: bookwyrm/templates/book/book.html:308 msgid "rated it" msgstr "评价了" @@ -2570,12 +2576,7 @@ msgstr "评论了" msgid "quoted" msgstr "引用了" -#: bookwyrm/templates/snippets/search_result_text.html:22 -#, python-format -msgid "by %(author)s" -msgstr "由 %(author)s 所著" - -#: bookwyrm/templates/snippets/search_result_text.html:30 +#: bookwyrm/templates/snippets/search_result_text.html:35 msgid "Import book" msgstr "导入书目" @@ -4292,6 +4293,10 @@ msgctxt "stick" msgid "club" msgstr "" +#, python-format +#~ msgid "by %(author)s" +#~ msgstr "由 %(author)s 所著" + #~ msgid "Deactivate user" #~ msgstr "停用用户" From 9e2b4f61bb65d5ed2c506fc289fa92a17e2cfdc1 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 29 Apr 2021 12:13:49 -0700 Subject: [PATCH 084/252] Make subheaders a lil smaller --- bookwyrm/templates/search_results.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bookwyrm/templates/search_results.html b/bookwyrm/templates/search_results.html index 4c9c23da..2dba79a2 100644 --- a/bookwyrm/templates/search_results.html +++ b/bookwyrm/templates/search_results.html @@ -11,7 +11,7 @@
      -

      {% trans "Matching Books" %}

      +

      {% trans "Matching Books" %}

      {% if not local_results.results %}

      {% blocktrans %}No books found for "{{ query }}"{% endblocktrans %}

      @@ -71,7 +71,7 @@
      -

      {% trans "Matching Users" %}

      +

      {% trans "Matching Users" %}

      {% if not user_results %}

      {% blocktrans %}No users found for "{{ query }}"{% endblocktrans %}

      {% endif %} @@ -88,7 +88,7 @@
-

{% trans "Lists" %}

+

{% trans "Lists" %}

{% if not list_results %}

{% blocktrans %}No lists found for "{{ query }}"{% endblocktrans %}

{% endif %} From 9d89aaf9fcdbfb84187ae0ac9c991fc2a94e8ac7 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 29 Apr 2021 12:18:55 -0700 Subject: [PATCH 085/252] Don't let logged out viwers search for users --- bookwyrm/templates/search_results.html | 6 +++-- bookwyrm/views/search.py | 37 +++++++++++++------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/bookwyrm/templates/search_results.html b/bookwyrm/templates/search_results.html index 2dba79a2..9188c1f0 100644 --- a/bookwyrm/templates/search_results.html +++ b/bookwyrm/templates/search_results.html @@ -70,10 +70,11 @@ {% endif %}
+ {% if request.user.is_authenticated %}

{% trans "Matching Users" %}

{% if not user_results %} -

{% blocktrans %}No users found for "{{ query }}"{% endblocktrans %}

+

{% blocktrans %}No users found for "{{ query }}"{% endblocktrans %}

{% endif %}
    {% for result in user_results %} @@ -87,10 +88,11 @@ {% endfor %}
+ {% endif %}

{% trans "Lists" %}

{% if not list_results %} -

{% blocktrans %}No lists found for "{{ query }}"{% endblocktrans %}

+

{% blocktrans %}No lists found for "{{ query }}"{% endblocktrans %}

{% endif %} {% for result in list_results %}
diff --git a/bookwyrm/views/search.py b/bookwyrm/views/search.py index 4543b55e..bd5ac3c7 100644 --- a/bookwyrm/views/search.py +++ b/bookwyrm/views/search.py @@ -30,27 +30,30 @@ class Search(View): ) return JsonResponse([r.json() for r in book_results], safe=False) + data = {"query": query or ""} + # use webfinger for mastodon style account@domain.com username if query and re.match(regex.full_username, query): handle_remote_webfinger(query) # do a user search - user_results = ( - models.User.viewer_aware_objects(request.user) - .annotate( - similarity=Greatest( - TrigramSimilarity("username", query), - TrigramSimilarity("localname", query), + if request.user.is_authenticated: + data["user_results"] = ( + models.User.viewer_aware_objects(request.user) + .annotate( + similarity=Greatest( + TrigramSimilarity("username", query), + TrigramSimilarity("localname", query), + ) ) + .filter( + similarity__gt=0.5, + ) + .order_by("-similarity")[:10] ) - .filter( - similarity__gt=0.5, - ) - .order_by("-similarity")[:10] - ) # any relevent lists? - list_results = ( + data["list_results"] = ( privacy_filter( request.user, models.List.objects, @@ -68,11 +71,7 @@ class Search(View): .order_by("-similarity")[:10] ) - book_results = connector_manager.search(query, min_confidence=min_confidence) - data = { - "book_results": book_results, - "user_results": user_results, - "list_results": list_results, - "query": query or "", - } + data["book_results"] = connector_manager.search( + query, min_confidence=min_confidence + ) return TemplateResponse(request, "search_results.html", data) From 6d7b3e9ae76bacd98bb43c35a3cd7338fd0dafb8 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 29 Apr 2021 12:56:42 -0700 Subject: [PATCH 086/252] Show/hide individual search results --- bookwyrm/templates/search_results.html | 37 +++++++++++++++++++------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/bookwyrm/templates/search_results.html b/bookwyrm/templates/search_results.html index 9188c1f0..f911bec7 100644 --- a/bookwyrm/templates/search_results.html +++ b/bookwyrm/templates/search_results.html @@ -42,18 +42,35 @@ {% if result_set.results %}
{% if not result_set.connector.local %} -

- Results from {% if result_set.connector.name %}{{ result_set.connector.name }}{% else %}{{ result_set.connector.identifier }}{% endif %} -

+
+ +
+ {% trans "Show" as button_text %} + {% include 'snippets/toggle/open_button.html' with text=button_text small=True controls_text="more-results-panel" controls_uid=result_set.connector.identifier class="is-small" icon="arrow-down" pressed=forloop.first %} +
+
{% endif %} -
    - {% for result in result_set.results %} -
  • - {% include 'snippets/search_result_text.html' with result=result remote_result=True %} -
  • - {% endfor %} -
+
+
+
+ {% trans "Close" as button_text %} + {% include 'snippets/toggle/toggle_button.html' with label=button_text class="delete" nonbutton=True controls_text="more-results-panel" controls_uid=result_set.connector.identifier pressed=forloop.first %} +
+
    + {% for result in result_set.results %} +
  • + {% include 'snippets/search_result_text.html' with result=result remote_result=True %} +
  • + {% endfor %} +
+
+
{% endif %} {% endfor %} From 15790abc703619858ad019fe4ac288975ff61f8d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 29 Apr 2021 13:03:56 -0700 Subject: [PATCH 087/252] Don't show broken image previews when cover is absent --- bookwyrm/connectors/bookwyrm_connector.py | 2 +- bookwyrm/connectors/self_connector.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/bookwyrm/connectors/bookwyrm_connector.py b/bookwyrm/connectors/bookwyrm_connector.py index 6b1d2f8c..10a633b2 100644 --- a/bookwyrm/connectors/bookwyrm_connector.py +++ b/bookwyrm/connectors/bookwyrm_connector.py @@ -6,7 +6,7 @@ from .abstract_connector import AbstractMinimalConnector, SearchResult class Connector(AbstractMinimalConnector): """this is basically just for search""" - def get_or_create_book(self, remote_id, work=None): + def get_or_create_book(self, remote_id): return activitypub.resolve_remote_id(remote_id, model=models.Edition) def parse_search_data(self, data): diff --git a/bookwyrm/connectors/self_connector.py b/bookwyrm/connectors/self_connector.py index 6b1b349f..a8f85834 100644 --- a/bookwyrm/connectors/self_connector.py +++ b/bookwyrm/connectors/self_connector.py @@ -69,6 +69,10 @@ class Connector(AbstractConnector): return search_results def format_search_result(self, search_result): + cover = None + if search_result.cover: + cover = "%s%s" % (self.covers_url, search_result.cover) + return SearchResult( title=search_result.title, key=search_result.remote_id, @@ -77,7 +81,7 @@ class Connector(AbstractConnector): if search_result.published_date else None, connector=self, - cover="%s%s" % (self.covers_url, search_result.cover), + cover=cover, confidence=search_result.rank if hasattr(search_result, "rank") else 1, ) From f4ebecfe75f598fa94be4d28f5048399e26e5708 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 29 Apr 2021 13:11:37 -0700 Subject: [PATCH 088/252] Add background to search result boxes --- bookwyrm/templates/search_results.html | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/bookwyrm/templates/search_results.html b/bookwyrm/templates/search_results.html index f911bec7..909b0a25 100644 --- a/bookwyrm/templates/search_results.html +++ b/bookwyrm/templates/search_results.html @@ -29,18 +29,23 @@ {% if request.user.is_authenticated %} {% if book_results|slice:":1" and local_results.results %}
-

+

{% trans "Didn't find what you were looking for?" %} -

+

{% trans "Show results from other catalogues" as button_text %} {% include 'snippets/toggle/open_button.html' with text=button_text small=True controls_text="more-results" %} + + {% if local_results.results %} + {% trans "Hide results from other catalogues" as button_text %} + {% include 'snippets/toggle/close_button.html' with text=button_text small=True controls_text="more-results" %} + {% endif %}
{% endif %}
{% for result_set in book_results|slice:"1:" %} {% if result_set.results %} -
+
{% if not result_set.connector.local %}
@@ -56,7 +61,7 @@
{% endif %} -
+
{% trans "Close" as button_text %} @@ -74,11 +79,6 @@
{% endif %} {% endfor %} - - {% if local_results.results %} - {% trans "Hide results from other catalogues" as button_text %} - {% include 'snippets/toggle/close_button.html' with text=button_text small=True controls_text="more-results" %} - {% endif %}
From 6f38ab167e6a8fa53358521352c4929c09c07811 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 29 Apr 2021 13:21:35 -0700 Subject: [PATCH 089/252] Show clarifying text for empty search when logged out --- bookwyrm/templates/search_results.html | 11 ++++++++--- bookwyrm/urls.py | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/bookwyrm/templates/search_results.html b/bookwyrm/templates/search_results.html index 909b0a25..337e88f8 100644 --- a/bookwyrm/templates/search_results.html +++ b/bookwyrm/templates/search_results.html @@ -14,7 +14,12 @@

{% trans "Matching Books" %}

{% if not local_results.results %} -

{% blocktrans %}No books found for "{{ query }}"{% endblocktrans %}

+

{% blocktrans %}No books found for "{{ query }}"{% endblocktrans %}

+ {% if not user.is_authenticated %} +

+ {% trans "Log in to import or add books." %} +

+ {% endif %} {% else %}
    {% for result in local_results.results %} @@ -88,7 +93,7 @@
{% if request.user.is_authenticated %} -
+

{% trans "Matching Users" %}

{% if not user_results %}

{% blocktrans %}No users found for "{{ query }}"{% endblocktrans %}

@@ -106,7 +111,7 @@
{% endif %} -
+

{% trans "Lists" %}

{% if not list_results %}

{% blocktrans %}No lists found for "{{ query }}"{% endblocktrans %}

diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 53ceeaa8..24c80b04 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -43,7 +43,7 @@ urlpatterns = [ re_path("^api/updates/notifications/?$", views.get_notification_count), re_path("^api/updates/stream/(?P[a-z]+)/?$", views.get_unread_status_count), # authentication - re_path(r"^login/?$", views.Login.as_view()), + re_path(r"^login/?$", views.Login.as_view(), name="login"), re_path(r"^register/?$", views.Register.as_view()), re_path(r"^logout/?$", views.Logout.as_view()), re_path(r"^password-reset/?$", views.PasswordResetRequest.as_view()), From 533cba3ce0c000001911164106362b3621a25989 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 29 Apr 2021 13:25:44 -0700 Subject: [PATCH 090/252] Updates locales --- locale/de_DE/LC_MESSAGES/django.po | 27 +++++++++++++++++++-------- locale/en_US/LC_MESSAGES/django.po | 25 +++++++++++++++++-------- locale/es/LC_MESSAGES/django.po | 27 +++++++++++++++++++-------- locale/fr_FR/LC_MESSAGES/django.po | 27 +++++++++++++++++++-------- locale/zh_Hans/LC_MESSAGES/django.po | 27 +++++++++++++++++++-------- 5 files changed, 93 insertions(+), 40 deletions(-) diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index bbdd1327..d7ad8724 100644 --- a/locale/de_DE/LC_MESSAGES/django.po +++ b/locale/de_DE/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-29 11:36-0700\n" +"POT-Creation-Date: 2021-04-29 13:24-0700\n" "PO-Revision-Date: 2021-03-02 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -282,7 +282,7 @@ msgstr "Orte" #: bookwyrm/templates/book/book.html:220 bookwyrm/templates/layout.html:65 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 -#: bookwyrm/templates/search_results.html:91 +#: bookwyrm/templates/search_results.html:115 #: bookwyrm/templates/user/user_layout.html:62 msgid "Lists" msgstr "Listen" @@ -581,6 +581,7 @@ msgstr "Veröffentlicht von %(publisher)s." #: bookwyrm/templates/feed/feed_layout.html:70 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 +#: bookwyrm/templates/search_results.html:72 msgid "Close" msgstr "Schließen" @@ -1129,7 +1130,7 @@ msgid "Search for a user" msgstr "Suche nach Buch oder Benutzer*in" #: bookwyrm/templates/get_started/users.html:13 -#: bookwyrm/templates/search_results.html:76 +#: bookwyrm/templates/search_results.html:99 #, python-format msgid "No users found for \"%(query)s\"" msgstr "Keine Nutzer*innen für \"%(query)s\" gefunden" @@ -1908,23 +1909,33 @@ msgstr "Profil" msgid "Relationships" msgstr "Beziehungen" -#: bookwyrm/templates/search_results.html:33 +#: bookwyrm/templates/search_results.html:20 +msgid "Log in to import or add books." +msgstr "" + +#: bookwyrm/templates/search_results.html:38 msgid "Didn't find what you were looking for?" msgstr "Nicht gefunden, wonach du gesucht hast?" -#: bookwyrm/templates/search_results.html:35 +#: bookwyrm/templates/search_results.html:40 msgid "Show results from other catalogues" msgstr "Ergebnisse aus anderen Katalogen zeigen" -#: bookwyrm/templates/search_results.html:62 +#: bookwyrm/templates/search_results.html:44 msgid "Hide results from other catalogues" msgstr "Ergebnisse aus anderen Katalogen ausblenden" -#: bookwyrm/templates/search_results.html:74 +#: bookwyrm/templates/search_results.html:63 +#, fuzzy +#| msgid "Show more" +msgid "Show" +msgstr "Mehr anzeigen" + +#: bookwyrm/templates/search_results.html:97 msgid "Matching Users" msgstr "Passende Nutzer*innen" -#: bookwyrm/templates/search_results.html:93 +#: bookwyrm/templates/search_results.html:117 #, python-format msgid "No lists found for \"%(query)s\"" msgstr "Keine Liste für \"%(query)s\" gefunden" diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index 3637bb77..c3df47ae 100644 --- a/locale/en_US/LC_MESSAGES/django.po +++ b/locale/en_US/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-29 11:36-0700\n" +"POT-Creation-Date: 2021-04-29 13:24-0700\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -261,7 +261,7 @@ msgstr "" #: bookwyrm/templates/book/book.html:220 bookwyrm/templates/layout.html:65 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 -#: bookwyrm/templates/search_results.html:91 +#: bookwyrm/templates/search_results.html:115 #: bookwyrm/templates/user/user_layout.html:62 msgid "Lists" msgstr "" @@ -535,6 +535,7 @@ msgstr "" #: bookwyrm/templates/feed/feed_layout.html:70 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 +#: bookwyrm/templates/search_results.html:72 msgid "Close" msgstr "" @@ -1032,7 +1033,7 @@ msgid "Search for a user" msgstr "" #: bookwyrm/templates/get_started/users.html:13 -#: bookwyrm/templates/search_results.html:76 +#: bookwyrm/templates/search_results.html:99 #, python-format msgid "No users found for \"%(query)s\"" msgstr "" @@ -1739,23 +1740,31 @@ msgstr "" msgid "Relationships" msgstr "" -#: bookwyrm/templates/search_results.html:33 +#: bookwyrm/templates/search_results.html:20 +msgid "Log in to import or add books." +msgstr "" + +#: bookwyrm/templates/search_results.html:38 msgid "Didn't find what you were looking for?" msgstr "" -#: bookwyrm/templates/search_results.html:35 +#: bookwyrm/templates/search_results.html:40 msgid "Show results from other catalogues" msgstr "" -#: bookwyrm/templates/search_results.html:62 +#: bookwyrm/templates/search_results.html:44 msgid "Hide results from other catalogues" msgstr "" -#: bookwyrm/templates/search_results.html:74 +#: bookwyrm/templates/search_results.html:63 +msgid "Show" +msgstr "" + +#: bookwyrm/templates/search_results.html:97 msgid "Matching Users" msgstr "" -#: bookwyrm/templates/search_results.html:93 +#: bookwyrm/templates/search_results.html:117 #, python-format msgid "No lists found for \"%(query)s\"" msgstr "" diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po index 8385f7f6..dab4c486 100644 --- a/locale/es/LC_MESSAGES/django.po +++ b/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-29 11:36-0700\n" +"POT-Creation-Date: 2021-04-29 13:24-0700\n" "PO-Revision-Date: 2021-03-19 11:49+0800\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -266,7 +266,7 @@ msgstr "Lugares" #: bookwyrm/templates/book/book.html:220 bookwyrm/templates/layout.html:65 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 -#: bookwyrm/templates/search_results.html:91 +#: bookwyrm/templates/search_results.html:115 #: bookwyrm/templates/user/user_layout.html:62 msgid "Lists" msgstr "Listas" @@ -548,6 +548,7 @@ msgstr "Publicado por %(publisher)s." #: bookwyrm/templates/feed/feed_layout.html:70 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 +#: bookwyrm/templates/search_results.html:72 msgid "Close" msgstr "Cerrar" @@ -1060,7 +1061,7 @@ msgid "Search for a user" msgstr "Buscar un usuario" #: bookwyrm/templates/get_started/users.html:13 -#: bookwyrm/templates/search_results.html:76 +#: bookwyrm/templates/search_results.html:99 #, python-format msgid "No users found for \"%(query)s\"" msgstr "No se encontró ningún usuario correspondiente a \"%(query)s\"" @@ -1811,23 +1812,33 @@ msgstr "Perfil" msgid "Relationships" msgstr "Relaciones" -#: bookwyrm/templates/search_results.html:33 +#: bookwyrm/templates/search_results.html:20 +msgid "Log in to import or add books." +msgstr "" + +#: bookwyrm/templates/search_results.html:38 msgid "Didn't find what you were looking for?" msgstr "¿No encontraste lo que buscabas?" -#: bookwyrm/templates/search_results.html:35 +#: bookwyrm/templates/search_results.html:40 msgid "Show results from other catalogues" msgstr "Mostrar resultados de otros catálogos" -#: bookwyrm/templates/search_results.html:62 +#: bookwyrm/templates/search_results.html:44 msgid "Hide results from other catalogues" msgstr "Ocultar resultados de otros catálogos" -#: bookwyrm/templates/search_results.html:74 +#: bookwyrm/templates/search_results.html:63 +#, fuzzy +#| msgid "Show more" +msgid "Show" +msgstr "Mostrar más" + +#: bookwyrm/templates/search_results.html:97 msgid "Matching Users" msgstr "Usuarios correspondientes" -#: bookwyrm/templates/search_results.html:93 +#: bookwyrm/templates/search_results.html:117 #, python-format msgid "No lists found for \"%(query)s\"" msgstr "No se encontró ningúna lista correspondiente a \"%(query)s\"" diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index ee7a5534..01963e46 100644 --- a/locale/fr_FR/LC_MESSAGES/django.po +++ b/locale/fr_FR/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-29 11:36-0700\n" +"POT-Creation-Date: 2021-04-29 13:24-0700\n" "PO-Revision-Date: 2021-04-05 12:44+0100\n" "Last-Translator: Fabien Basmaison \n" "Language-Team: Mouse Reeve \n" @@ -272,7 +272,7 @@ msgstr "Lieux" #: bookwyrm/templates/book/book.html:220 bookwyrm/templates/layout.html:65 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 -#: bookwyrm/templates/search_results.html:91 +#: bookwyrm/templates/search_results.html:115 #: bookwyrm/templates/user/user_layout.html:62 msgid "Lists" msgstr "Listes" @@ -554,6 +554,7 @@ msgstr "Publié par %(publisher)s." #: bookwyrm/templates/feed/feed_layout.html:70 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 +#: bookwyrm/templates/search_results.html:72 msgid "Close" msgstr "Fermer" @@ -1072,7 +1073,7 @@ msgid "Search for a user" msgstr "Chercher un compte" #: bookwyrm/templates/get_started/users.html:13 -#: bookwyrm/templates/search_results.html:76 +#: bookwyrm/templates/search_results.html:99 #, python-format msgid "No users found for \"%(query)s\"" msgstr "Aucun compte trouvé pour « %(query)s »" @@ -1836,23 +1837,33 @@ msgstr "Profil" msgid "Relationships" msgstr "Relations" -#: bookwyrm/templates/search_results.html:33 +#: bookwyrm/templates/search_results.html:20 +msgid "Log in to import or add books." +msgstr "" + +#: bookwyrm/templates/search_results.html:38 msgid "Didn't find what you were looking for?" msgstr "Vous n’avez pas trouvé ce que vous cherchiez ?" -#: bookwyrm/templates/search_results.html:35 +#: bookwyrm/templates/search_results.html:40 msgid "Show results from other catalogues" msgstr "Montrer les résultats d’autres catalogues" -#: bookwyrm/templates/search_results.html:62 +#: bookwyrm/templates/search_results.html:44 msgid "Hide results from other catalogues" msgstr "Masquer les résultats d’autres catalogues" -#: bookwyrm/templates/search_results.html:74 +#: bookwyrm/templates/search_results.html:63 +#, fuzzy +#| msgid "Show more" +msgid "Show" +msgstr "Déplier" + +#: bookwyrm/templates/search_results.html:97 msgid "Matching Users" msgstr "Comptes correspondants" -#: bookwyrm/templates/search_results.html:93 +#: bookwyrm/templates/search_results.html:117 #, python-format msgid "No lists found for \"%(query)s\"" msgstr "Aucune liste trouvée pour « %(query)s »" diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index af3bc59b..783fc70a 100644 --- a/locale/zh_Hans/LC_MESSAGES/django.po +++ b/locale/zh_Hans/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-29 11:36-0700\n" +"POT-Creation-Date: 2021-04-29 13:24-0700\n" "PO-Revision-Date: 2021-03-20 00:56+0000\n" "Last-Translator: Kana \n" "Language-Team: Mouse Reeve \n" @@ -270,7 +270,7 @@ msgstr "地点" #: bookwyrm/templates/book/book.html:220 bookwyrm/templates/layout.html:65 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 -#: bookwyrm/templates/search_results.html:91 +#: bookwyrm/templates/search_results.html:115 #: bookwyrm/templates/user/user_layout.html:62 msgid "Lists" msgstr "列表" @@ -552,6 +552,7 @@ msgstr "由 %(publisher)s 出版。" #: bookwyrm/templates/feed/feed_layout.html:70 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 +#: bookwyrm/templates/search_results.html:72 msgid "Close" msgstr "关闭" @@ -1052,7 +1053,7 @@ msgid "Search for a user" msgstr "搜索用户" #: bookwyrm/templates/get_started/users.html:13 -#: bookwyrm/templates/search_results.html:76 +#: bookwyrm/templates/search_results.html:99 #, python-format msgid "No users found for \"%(query)s\"" msgstr "没有找到 \"%(query)s\" 的用户" @@ -1801,23 +1802,33 @@ msgstr "个人资料" msgid "Relationships" msgstr "关系" -#: bookwyrm/templates/search_results.html:33 +#: bookwyrm/templates/search_results.html:20 +msgid "Log in to import or add books." +msgstr "" + +#: bookwyrm/templates/search_results.html:38 msgid "Didn't find what you were looking for?" msgstr "没有找到你想找的?" -#: bookwyrm/templates/search_results.html:35 +#: bookwyrm/templates/search_results.html:40 msgid "Show results from other catalogues" msgstr "显示其它类别的结果" -#: bookwyrm/templates/search_results.html:62 +#: bookwyrm/templates/search_results.html:44 msgid "Hide results from other catalogues" msgstr "隐藏其它类别的结果" -#: bookwyrm/templates/search_results.html:74 +#: bookwyrm/templates/search_results.html:63 +#, fuzzy +#| msgid "Show more" +msgid "Show" +msgstr "显示更多" + +#: bookwyrm/templates/search_results.html:97 msgid "Matching Users" msgstr "匹配的用户" -#: bookwyrm/templates/search_results.html:93 +#: bookwyrm/templates/search_results.html:117 #, python-format msgid "No lists found for \"%(query)s\"" msgstr "没有找到 \"%(query)s\" 的列表" From 3feba60665a92a2fe71032a721a8d6279f761e02 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 29 Apr 2021 13:54:17 -0700 Subject: [PATCH 091/252] Fixes test --- bookwyrm/tests/views/test_helpers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/tests/views/test_helpers.py b/bookwyrm/tests/views/test_helpers.py index 6a435ff3..0dddd2a1 100644 --- a/bookwyrm/tests/views/test_helpers.py +++ b/bookwyrm/tests/views/test_helpers.py @@ -219,7 +219,7 @@ class ViewsHelpers(TestCase): with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): # 1 shared follow self.local_user.following.add(user_2) - user_1.following.add(user_2) + user_1.followers.add(user_2) # 1 shared book models.ShelfBook.objects.create( From daf65e230de424ae8ae2bcea437570fd54cf3c7a Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 29 Apr 2021 14:43:14 -0700 Subject: [PATCH 092/252] Test for failing rate federation --- .../tests/views/inbox/test_inbox_create.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/bookwyrm/tests/views/inbox/test_inbox_create.py b/bookwyrm/tests/views/inbox/test_inbox_create.py index e7a12024..b59a975f 100644 --- a/bookwyrm/tests/views/inbox/test_inbox_create.py +++ b/bookwyrm/tests/views/inbox/test_inbox_create.py @@ -127,6 +127,43 @@ class InboxCreate(TestCase): self.assertTrue(models.Notification.objects.filter(user=self.local_user)) self.assertEqual(models.Notification.objects.get().notification_type, "REPLY") + def test_create_rating(self): + """a remote rating activity""" + models.Edition.objects.create( + title="Test Book", origin_id="https://example.com/book/1" + ) + activity = self.create_json + activity["object"] = { + "id": "https://example.com/user/mouse/reviewrating/12", + "type": "Rating", + "published": "2021-04-29T21:27:30.014235+00:00", + "attributedTo": "https://example.com/user/mouse", + "to": ["https://www.w3.org/ns/activitystreams#Public"], + "cc": ["https://example.com/user/mouse/followers"], + "replies": { + "id": "https://example.com/user/mouse/reviewrating/12/replies", + "type": "OrderedCollection", + "totalItems": 0, + "first": "https://example.com/user/mouse/reviewrating/12/replies?page=1", + "last": "https://example.com/user/mouse/reviewrating/12/replies?page=1", + "@context": "https://www.w3.org/ns/activitystreams", + }, + "inReplyTo": "", + "summary": "", + "tag": [], + "attachment": [], + "sensitive": False, + "inReplyToBook": "https://example.com/book/1", + "rating": 3, + "@context": "https://www.w3.org/ns/activitystreams", + } + with patch("bookwyrm.activitystreams.ActivityStream.add_status") as redis_mock: + views.inbox.activity_task(activity) + self.assertTrue(redis_mock.called) + rating = models.Status.objects.select_subclasses().first() + self.assertEqual(rating.book, self.book) + self.assertEqual(rating.rating, 3.0) + def test_create_list(self): """a new list""" activity = self.create_json From d61ba2e474a8e58f2683387d797b77895f6e0ca2 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 29 Apr 2021 15:16:51 -0700 Subject: [PATCH 093/252] Fixes review rating serialization --- bookwyrm/activitypub/note.py | 1 + bookwyrm/tests/views/inbox/test_inbox_create.py | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/bookwyrm/activitypub/note.py b/bookwyrm/activitypub/note.py index b501c3d6..ea2e92b6 100644 --- a/bookwyrm/activitypub/note.py +++ b/bookwyrm/activitypub/note.py @@ -83,4 +83,5 @@ class Rating(Comment): rating: int content: str = None + name: str = None # not used, but the model inherits from Review type: str = "Rating" diff --git a/bookwyrm/tests/views/inbox/test_inbox_create.py b/bookwyrm/tests/views/inbox/test_inbox_create.py index b59a975f..958dfee8 100644 --- a/bookwyrm/tests/views/inbox/test_inbox_create.py +++ b/bookwyrm/tests/views/inbox/test_inbox_create.py @@ -129,8 +129,8 @@ class InboxCreate(TestCase): def test_create_rating(self): """a remote rating activity""" - models.Edition.objects.create( - title="Test Book", origin_id="https://example.com/book/1" + book = models.Edition.objects.create( + title="Test Book", remote_id="https://example.com/book/1" ) activity = self.create_json activity["object"] = { @@ -160,8 +160,8 @@ class InboxCreate(TestCase): with patch("bookwyrm.activitystreams.ActivityStream.add_status") as redis_mock: views.inbox.activity_task(activity) self.assertTrue(redis_mock.called) - rating = models.Status.objects.select_subclasses().first() - self.assertEqual(rating.book, self.book) + rating = models.ReviewRating.objects.first() + self.assertEqual(rating.book, book) self.assertEqual(rating.rating, 3.0) def test_create_list(self): From aa3cdee73119530cdba51beb052f260369f52484 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 06:43:43 -0700 Subject: [PATCH 094/252] Fixes invalid url breaking change password flow --- bookwyrm/templates/preferences/change_password.html | 2 +- bookwyrm/urls.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/preferences/change_password.html b/bookwyrm/templates/preferences/change_password.html index ab8be717..9f5b7e8b 100644 --- a/bookwyrm/templates/preferences/change_password.html +++ b/bookwyrm/templates/preferences/change_password.html @@ -8,7 +8,7 @@ {% endblock %} {% block panel %} - + {% csrf_token %}
diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 24c80b04..99e51ff3 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -224,7 +224,11 @@ urlpatterns = [ re_path(r"^hide-goal/?$", views.hide_goal, name="hide-goal"), # preferences re_path(r"^preferences/profile/?$", views.EditUser.as_view(), name="prefs-profile"), - re_path(r"^preferences/password/?$", views.ChangePassword.as_view()), + re_path( + r"^preferences/password/?$", + views.ChangePassword.as_view(), + name="prefs-password", + ), re_path(r"^preferences/block/?$", views.Block.as_view()), re_path(r"^block/(?P\d+)/?$", views.Block.as_view()), re_path(r"^unblock/(?P\d+)/?$", views.unblock), From 454dd25681af9de9e08ddc021eb29c25ec1ab2f8 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 07:49:34 -0700 Subject: [PATCH 095/252] Only make notification count red for mentions --- bookwyrm/models/user.py | 13 +++++++++++++ bookwyrm/static/js/bookwyrm.js | 2 ++ bookwyrm/templates/layout.html | 7 +++++-- bookwyrm/views/updates.py | 3 ++- 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/bookwyrm/models/user.py b/bookwyrm/models/user.py index 3efbd6ac..25726468 100644 --- a/bookwyrm/models/user.py +++ b/bookwyrm/models/user.py @@ -150,6 +150,19 @@ class User(OrderedCollectionPageMixin, AbstractUser): """for consistent naming""" return not self.is_active + @property + def unread_notification_count(self): + """ count of notifications, for the templates """ + return self.notification_set.filter(read=False).count() + + @property + def has_unread_mentions(self): + """ whether any of the unread notifications are conversations """ + return self.notification_set.filter( + read=False, + notification_type__in=["REPLY", "MENTION", "TAG"], + ).exists() + activity_serializer = activitypub.Person @classmethod diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js index 485daf15..3659a20e 100644 --- a/bookwyrm/static/js/bookwyrm.js +++ b/bookwyrm/static/js/bookwyrm.js @@ -97,10 +97,12 @@ let BookWyrm = new class { updateCountElement(counter, data) { const currentCount = counter.innerText; const count = data.count; + const hasMentions = data.has_mentions; if (count != currentCount) { this.addRemoveClass(counter.closest('[data-poll-wrapper]'), 'is-hidden', count < 1); counter.innerText = count; + this.addRemoveClass(counter.closest('[data-poll-wrapper]'), 'is-danger', hasMentions); } } diff --git a/bookwyrm/templates/layout.html b/bookwyrm/templates/layout.html index 84482cdf..770666e8 100644 --- a/bookwyrm/templates/layout.html +++ b/bookwyrm/templates/layout.html @@ -135,8 +135,11 @@ {% trans "Notifications" %} - - {{ request.user | notification_count }} + + {{ request.user.unread_notification_count }}
diff --git a/bookwyrm/views/updates.py b/bookwyrm/views/updates.py index 34902272..72614562 100644 --- a/bookwyrm/views/updates.py +++ b/bookwyrm/views/updates.py @@ -10,7 +10,8 @@ def get_notification_count(request): """any notifications waiting?""" return JsonResponse( { - "count": request.user.notification_set.filter(read=False).count(), + "count": request.user.unread_notification_count, + "has_mentions": request.user.has_unread_mentions, } ) From 2867d703ccc32dada6f9e85c815e3c04354a9788 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 07:57:38 -0700 Subject: [PATCH 096/252] Fixes python formatting --- bookwyrm/models/user.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bookwyrm/models/user.py b/bookwyrm/models/user.py index 25726468..2c5bef4a 100644 --- a/bookwyrm/models/user.py +++ b/bookwyrm/models/user.py @@ -152,12 +152,12 @@ class User(OrderedCollectionPageMixin, AbstractUser): @property def unread_notification_count(self): - """ count of notifications, for the templates """ + """count of notifications, for the templates""" return self.notification_set.filter(read=False).count() @property def has_unread_mentions(self): - """ whether any of the unread notifications are conversations """ + """whether any of the unread notifications are conversations""" return self.notification_set.filter( read=False, notification_type__in=["REPLY", "MENTION", "TAG"], From d2355fef96e8ea517815a2163239fb70236164d4 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 08:23:02 -0700 Subject: [PATCH 097/252] Consistent display on followers/following pages --- bookwyrm/templates/user/followers.html | 2 +- bookwyrm/templates/user/following.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bookwyrm/templates/user/followers.html b/bookwyrm/templates/user/followers.html index b294db90..2a7ccd1e 100644 --- a/bookwyrm/templates/user/followers.html +++ b/bookwyrm/templates/user/followers.html @@ -25,7 +25,7 @@
{% endfor %} - {% if not followers.count %} + {% if not followers %}
{% blocktrans with username=user.display_name %}{{ username }} has no followers{% endblocktrans %}
{% endif %}
diff --git a/bookwyrm/templates/user/following.html b/bookwyrm/templates/user/following.html index 38c01ad2..b41d5126 100644 --- a/bookwyrm/templates/user/following.html +++ b/bookwyrm/templates/user/following.html @@ -20,12 +20,12 @@ ({{ follower.username }}) -
+
{% include 'snippets/follow_button.html' with user=follower %}
{% endfor %} - {% if not following.count %} + {% if not following %}
{% blocktrans with username=user|username %}{{ username }} isn't following any users{% endblocktrans %}
{% endif %} From 862ef835366bb716a47f8716c9713ed301e51b36 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 08:40:47 -0700 Subject: [PATCH 098/252] Move user templates into more subdirectories --- bookwyrm/templates/goal.html | 2 +- .../templates/user/{user_layout.html => layout.html} | 0 .../templates/user/{ => relationships}/followers.html | 2 +- .../templates/user/{ => relationships}/following.html | 2 +- bookwyrm/templates/user/{ => shelf}/books_header.html | 0 .../templates/user/{ => shelf}/create_shelf_form.html | 0 .../templates/user/{ => shelf}/edit_shelf_form.html | 0 bookwyrm/templates/user/{ => shelf}/shelf.html | 10 +++++----- bookwyrm/templates/user/user.html | 8 ++++---- bookwyrm/views/shelf.py | 2 +- bookwyrm/views/user.py | 4 ++-- 11 files changed, 15 insertions(+), 15 deletions(-) rename bookwyrm/templates/user/{user_layout.html => layout.html} (100%) rename bookwyrm/templates/user/{ => relationships}/followers.html (96%) rename bookwyrm/templates/user/{ => relationships}/following.html (96%) rename bookwyrm/templates/user/{ => shelf}/books_header.html (100%) rename bookwyrm/templates/user/{ => shelf}/create_shelf_form.html (100%) rename bookwyrm/templates/user/{ => shelf}/edit_shelf_form.html (100%) rename bookwyrm/templates/user/{ => shelf}/shelf.html (94%) diff --git a/bookwyrm/templates/goal.html b/bookwyrm/templates/goal.html index 32b5062d..22aba08e 100644 --- a/bookwyrm/templates/goal.html +++ b/bookwyrm/templates/goal.html @@ -1,4 +1,4 @@ -{% extends 'user/user_layout.html' %} +{% extends 'user/layout.html' %} {% load i18n %} {% block header %} diff --git a/bookwyrm/templates/user/user_layout.html b/bookwyrm/templates/user/layout.html similarity index 100% rename from bookwyrm/templates/user/user_layout.html rename to bookwyrm/templates/user/layout.html diff --git a/bookwyrm/templates/user/followers.html b/bookwyrm/templates/user/relationships/followers.html similarity index 96% rename from bookwyrm/templates/user/followers.html rename to bookwyrm/templates/user/relationships/followers.html index 2a7ccd1e..c69416dc 100644 --- a/bookwyrm/templates/user/followers.html +++ b/bookwyrm/templates/user/relationships/followers.html @@ -1,4 +1,4 @@ -{% extends 'user/user_layout.html' %} +{% extends 'user/layout.html' %} {% load i18n %} {% load bookwyrm_tags %} diff --git a/bookwyrm/templates/user/following.html b/bookwyrm/templates/user/relationships/following.html similarity index 96% rename from bookwyrm/templates/user/following.html rename to bookwyrm/templates/user/relationships/following.html index b41d5126..a1feeb76 100644 --- a/bookwyrm/templates/user/following.html +++ b/bookwyrm/templates/user/relationships/following.html @@ -1,4 +1,4 @@ -{% extends 'user/user_layout.html' %} +{% extends 'user/layout.html' %} {% load i18n %} {% load bookwyrm_tags %} diff --git a/bookwyrm/templates/user/books_header.html b/bookwyrm/templates/user/shelf/books_header.html similarity index 100% rename from bookwyrm/templates/user/books_header.html rename to bookwyrm/templates/user/shelf/books_header.html diff --git a/bookwyrm/templates/user/create_shelf_form.html b/bookwyrm/templates/user/shelf/create_shelf_form.html similarity index 100% rename from bookwyrm/templates/user/create_shelf_form.html rename to bookwyrm/templates/user/shelf/create_shelf_form.html diff --git a/bookwyrm/templates/user/edit_shelf_form.html b/bookwyrm/templates/user/shelf/edit_shelf_form.html similarity index 100% rename from bookwyrm/templates/user/edit_shelf_form.html rename to bookwyrm/templates/user/shelf/edit_shelf_form.html diff --git a/bookwyrm/templates/user/shelf.html b/bookwyrm/templates/user/shelf/shelf.html similarity index 94% rename from bookwyrm/templates/user/shelf.html rename to bookwyrm/templates/user/shelf/shelf.html index 33616258..93f0c15f 100644 --- a/bookwyrm/templates/user/shelf.html +++ b/bookwyrm/templates/user/shelf/shelf.html @@ -1,16 +1,16 @@ -{% extends 'user/user_layout.html' %} +{% extends 'user/layout.html' %} {% load bookwyrm_tags %} {% load humanize %} {% load i18n %} {% block title %} -{% include 'user/books_header.html' %} +{% include 'user/shelf/books_header.html' %} {% endblock %} {% block header %}

- {% include 'user/books_header.html' %} + {% include 'user/shelf/books_header.html' %}

{% endblock %} @@ -41,7 +41,7 @@
- {% include 'user/create_shelf_form.html' with controls_text='create-shelf-form' %} + {% include 'user/shelf/create_shelf_form.html' with controls_text='create-shelf-form' %}
@@ -62,7 +62,7 @@
- {% include 'user/edit_shelf_form.html' with controls_text="edit-shelf-form" %} + {% include 'user/shelf/edit_shelf_form.html' with controls_text="edit-shelf-form" %}
diff --git a/bookwyrm/templates/user/user.html b/bookwyrm/templates/user/user.html index a97d26ab..fead8fcf 100644 --- a/bookwyrm/templates/user/user.html +++ b/bookwyrm/templates/user/user.html @@ -1,4 +1,4 @@ -{% extends 'user/user_layout.html' %} +{% extends 'user/layout.html' %} {% load i18n %} {% load bookwyrm_tags %} @@ -11,7 +11,7 @@
{% if is_self %}
- + {% trans "Edit profile" %} @@ -25,7 +25,7 @@ {% if user.bookwyrm_user %}

- {% include 'user/books_header.html' %} + {% include 'user/shelf/books_header.html' %}

{% for shelf in shelves %} @@ -56,7 +56,7 @@ {% elif user == request.user %} {% endif %} diff --git a/bookwyrm/views/shelf.py b/bookwyrm/views/shelf.py index 9bcf0a4a..ca05ec1e 100644 --- a/bookwyrm/views/shelf.py +++ b/bookwyrm/views/shelf.py @@ -68,7 +68,7 @@ class Shelf(View): "books": paginated.get_page(request.GET.get("page")), } - return TemplateResponse(request, "user/shelf.html", data) + return TemplateResponse(request, "user/shelf/shelf.html", data) @method_decorator(login_required, name="dispatch") # pylint: disable=unused-argument diff --git a/bookwyrm/views/user.py b/bookwyrm/views/user.py index d394c1d7..af31fd47 100644 --- a/bookwyrm/views/user.py +++ b/bookwyrm/views/user.py @@ -112,7 +112,7 @@ class Followers(View): "is_self": request.user.id == user.id, "followers": paginated.page(request.GET.get("page", 1)), } - return TemplateResponse(request, "user/followers.html", data) + return TemplateResponse(request, "user/relationships/followers.html", data) class Following(View): @@ -138,7 +138,7 @@ class Following(View): "is_self": request.user.id == user.id, "following": paginated.page(request.GET.get("page", 1)), } - return TemplateResponse(request, "user/following.html", data) + return TemplateResponse(request, "user/relationships/following.html", data) @method_decorator(login_required, name="dispatch") From e4cecf2874103890be40f376cb399e2e21e7036c Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 09:02:14 -0700 Subject: [PATCH 099/252] Coherent logic on which tabs show in the user page --- bookwyrm/templates/user/layout.html | 4 ++-- bookwyrm/templates/user/lists.html | 2 +- bookwyrm/templates/user/shelf/shelf.html | 4 +++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/bookwyrm/templates/user/layout.html b/bookwyrm/templates/user/layout.html index 0c3e94e3..0f04f628 100644 --- a/bookwyrm/templates/user/layout.html +++ b/bookwyrm/templates/user/layout.html @@ -41,8 +41,8 @@
{% endif %}
+{% block tabs %} {% with user|username as username %} -{% if 'user/'|add:username|add:'/books' not in request.path and 'user/'|add:username|add:'/shelf' not in request.path %} -{% endif %} {% endwith %} +{% endblock %} {% block panel %}{% endblock %} diff --git a/bookwyrm/templates/user/lists.html b/bookwyrm/templates/user/lists.html index b2fd9eef..aa8ad7fb 100644 --- a/bookwyrm/templates/user/lists.html +++ b/bookwyrm/templates/user/lists.html @@ -1,4 +1,4 @@ -{% extends 'user/user_layout.html' %} +{% extends 'user/layout.html' %} {% load i18n %} {% block header %} diff --git a/bookwyrm/templates/user/shelf/shelf.html b/bookwyrm/templates/user/shelf/shelf.html index 93f0c15f..639ab502 100644 --- a/bookwyrm/templates/user/shelf/shelf.html +++ b/bookwyrm/templates/user/shelf/shelf.html @@ -15,7 +15,7 @@ {% endblock %} -{% block panel %} +{% block tabs %}
@@ -39,7 +39,9 @@
{% endif %}
+{% endblock %} +{% block panel %}
{% include 'user/shelf/create_shelf_form.html' with controls_text='create-shelf-form' %}
From 418e656aea8d5faf1b84afe27337891324f22f0c Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 09:17:46 -0700 Subject: [PATCH 100/252] Uses layout for followers/following page --- bookwyrm/templates/user/layout.html | 6 +++- .../user/relationships/followers.html | 30 ++++--------------- .../user/relationships/following.html | 30 ++++--------------- .../templates/user/relationships/layout.html | 29 ++++++++++++++++++ bookwyrm/views/user.py | 6 ++-- 5 files changed, 47 insertions(+), 54 deletions(-) create mode 100644 bookwyrm/templates/user/relationships/layout.html diff --git a/bookwyrm/templates/user/layout.html b/bookwyrm/templates/user/layout.html index 0f04f628..dcdf7ccf 100644 --- a/bookwyrm/templates/user/layout.html +++ b/bookwyrm/templates/user/layout.html @@ -7,7 +7,11 @@ {% block content %}
- {% block header %}{% endblock %} + {% block header %} +

+ {% trans "User Profile" %} +

+ {% endblock %}
{# user bio #} diff --git a/bookwyrm/templates/user/relationships/followers.html b/bookwyrm/templates/user/relationships/followers.html index c69416dc..223f38c7 100644 --- a/bookwyrm/templates/user/relationships/followers.html +++ b/bookwyrm/templates/user/relationships/followers.html @@ -1,34 +1,14 @@ -{% extends 'user/layout.html' %} +{% extends 'user/relationships/layout.html' %} {% load i18n %} -{% load bookwyrm_tags %} {% block header %}

- {% trans "User Profile" %} + {% trans "Followers" %}

{% endblock %} -{% block panel %} -
-

{% trans "Followers" %}

- {% for follower in followers %} -
- -
- {% include 'snippets/follow_button.html' with user=follower %} -
-
- {% endfor %} - {% if not followers %} -
{% blocktrans with username=user.display_name %}{{ username }} has no followers{% endblocktrans %}
- {% endif %} +{% block nullstate %} +
+ {% blocktrans with username=user.display_name %}{{ username }} has no followers{% endblocktrans %}
- -{% include 'snippets/pagination.html' with page=followers path=request.path %} {% endblock %} diff --git a/bookwyrm/templates/user/relationships/following.html b/bookwyrm/templates/user/relationships/following.html index a1feeb76..5689bc61 100644 --- a/bookwyrm/templates/user/relationships/following.html +++ b/bookwyrm/templates/user/relationships/following.html @@ -1,34 +1,14 @@ -{% extends 'user/layout.html' %} +{% extends 'user/relationships/layout.html' %} {% load i18n %} -{% load bookwyrm_tags %} {% block header %}

- {% trans "User Profile" %} + {% trans "Following" %}

{% endblock %} -{% block panel %} -
-

{% trans "Following" %}

- {% for follower in user.following.all %} -
- -
- {% include 'snippets/follow_button.html' with user=follower %} -
-
- {% endfor %} - {% if not following %} -
{% blocktrans with username=user|username %}{{ username }} isn't following any users{% endblocktrans %}
- {% endif %} +{% block nullstate %} +
+ {% blocktrans with username=user.display_name %}{{ username }} isn't following any users{% endblocktrans %}
- -{% include 'snippets/pagination.html' with page=following path=request.path %} {% endblock %} diff --git a/bookwyrm/templates/user/relationships/layout.html b/bookwyrm/templates/user/relationships/layout.html new file mode 100644 index 00000000..ab38e662 --- /dev/null +++ b/bookwyrm/templates/user/relationships/layout.html @@ -0,0 +1,29 @@ +{% extends 'user/layout.html' %} +{% load i18n %} +{% load bookwyrm_tags %} + +{% block panel %} +
+ {% for follow in follow_list %} +
+ +
+ {% include 'snippets/follow_button.html' with user=follow %} +
+
+ {% endfor %} + + {% if not follow_list %} + {% block nullstate %} + {% endblock %} + {% endif %} +
+ +{% include 'snippets/pagination.html' with page=follow_list path=request.path %} +{% endblock %} diff --git a/bookwyrm/views/user.py b/bookwyrm/views/user.py index af31fd47..5584ce99 100644 --- a/bookwyrm/views/user.py +++ b/bookwyrm/views/user.py @@ -110,7 +110,7 @@ class Followers(View): data = { "user": user, "is_self": request.user.id == user.id, - "followers": paginated.page(request.GET.get("page", 1)), + "follow_list": paginated.page(request.GET.get("page", 1)), } return TemplateResponse(request, "user/relationships/followers.html", data) @@ -132,11 +132,11 @@ class Following(View): if is_api_request(request): return ActivitypubResponse(user.to_following_activity(**request.GET)) - paginated = Paginator(user.followers.all(), PAGE_LENGTH) + paginated = Paginator(user.following.all(), PAGE_LENGTH) data = { "user": user, "is_self": request.user.id == user.id, - "following": paginated.page(request.GET.get("page", 1)), + "follow_list": paginated.page(request.GET.get("page", 1)), } return TemplateResponse(request, "user/relationships/following.html", data) From b65d0d05c9f49c375f32f8252d33a091aac3f0aa Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 09:23:59 -0700 Subject: [PATCH 101/252] Tabs for relationship views --- bookwyrm/templates/user/layout.html | 1 + .../templates/user/relationships/layout.html | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/bookwyrm/templates/user/layout.html b/bookwyrm/templates/user/layout.html index dcdf7ccf..661d8078 100644 --- a/bookwyrm/templates/user/layout.html +++ b/bookwyrm/templates/user/layout.html @@ -45,6 +45,7 @@
{% endif %}
+ {% block tabs %} {% with user|username as username %}
{% endwith %} {% endblock %} From b4ef800505de3305a428c8e455d9ce3be491d368 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 12:07:59 -0700 Subject: [PATCH 115/252] Hide start list item in readthrough if absent --- bookwyrm/templates/snippets/readthrough.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bookwyrm/templates/snippets/readthrough.html b/bookwyrm/templates/snippets/readthrough.html index cebdc2cd..d5e79b86 100644 --- a/bookwyrm/templates/snippets/readthrough.html +++ b/bookwyrm/templates/snippets/readthrough.html @@ -48,7 +48,9 @@ {% endif %} {% endif %} + {% if readthrough.start_date %}
  • {{ readthrough.start_date | localtime | naturalday }}: {% trans "started" %}
  • + {% endif %}
    From 485d20696be089782b5c85f0e19c0d4b89d85ffd Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 12:50:35 -0700 Subject: [PATCH 116/252] Fixes loading inventaire data by language code --- bookwyrm/connectors/abstract_connector.py | 4 ++++ bookwyrm/connectors/inventaire.py | 7 ++++++- .../connectors/test_inventaire_connector.py | 17 ++++++++++++++++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index 76718823..db80677f 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -217,6 +217,10 @@ def dict_from_mappings(data, mappings): the subclass""" result = {} for mapping in mappings: + # sometimes there are multiple mappings for one field, don't + # overwrite earlier writes in that case + if mapping.local_field in result and result[mapping.local_field]: + continue result[mapping.local_field] = mapping.get_value(data) return result diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index dc27f2c0..c13ef7f8 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -21,6 +21,7 @@ class Connector(AbstractConnector): ] self.book_mappings = [ Mapping("title", remote_field="wdt:P1476", formatter=get_first), + Mapping("title", remote_field="labels", formatter=get_language_code), Mapping("subtitle", remote_field="wdt:P1680", formatter=get_first), Mapping("inventaireId", remote_field="uri"), Mapping( @@ -211,4 +212,8 @@ class Connector(AbstractConnector): def get_language_code(options, code="en"): """when there are a bunch of translation but we need a single field""" - return options.get(code) + result = options.get(code) + if result: + return result + values = list(options.values()) + return values[0] if values else None diff --git a/bookwyrm/tests/connectors/test_inventaire_connector.py b/bookwyrm/tests/connectors/test_inventaire_connector.py index 4058b067..a32fa72b 100644 --- a/bookwyrm/tests/connectors/test_inventaire_connector.py +++ b/bookwyrm/tests/connectors/test_inventaire_connector.py @@ -5,7 +5,7 @@ from django.test import TestCase import responses from bookwyrm import models -from bookwyrm.connectors.inventaire import Connector +from bookwyrm.connectors.inventaire import Connector, get_language_code class Inventaire(TestCase): @@ -156,3 +156,18 @@ class Inventaire(TestCase): formatted.cover, "https://covers.inventaire.io/img/entities/12345", ) + + def test_get_language_code(self): + """ get english or whatever is in reach """ + options = { + "de": "bip", + "en": "hi", + "fr": "there", + } + self.assertEqual(get_language_code(options), "hi") + + options = { + "fr": "there", + } + self.assertEqual(get_language_code(options), "there") + self.assertIsNone(get_language_code({})) From 122e0cbd6d816cbb6f23c9d741a5d7d848b878a1 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 12:52:20 -0700 Subject: [PATCH 117/252] Python formatting --- bookwyrm/tests/connectors/test_inventaire_connector.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/tests/connectors/test_inventaire_connector.py b/bookwyrm/tests/connectors/test_inventaire_connector.py index a32fa72b..71e407e9 100644 --- a/bookwyrm/tests/connectors/test_inventaire_connector.py +++ b/bookwyrm/tests/connectors/test_inventaire_connector.py @@ -158,7 +158,7 @@ class Inventaire(TestCase): ) def test_get_language_code(self): - """ get english or whatever is in reach """ + """get english or whatever is in reach""" options = { "de": "bip", "en": "hi", From 9fea07039889c9962eb0e842dad375ebdcd78f3e Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 12:53:57 -0700 Subject: [PATCH 118/252] Update bookwyrm/management/commands/initdb.py Co-authored-by: Joachim --- bookwyrm/management/commands/initdb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/management/commands/initdb.py b/bookwyrm/management/commands/initdb.py index 2e88ce5d..71ac511a 100644 --- a/bookwyrm/management/commands/initdb.py +++ b/bookwyrm/management/commands/initdb.py @@ -15,7 +15,7 @@ def init_groups(): def init_permissions(): - """permissin types""" + """permission types""" permissions = [ { "codename": "edit_instance_settings", From 01f2d80cbd6a604bcb0a1b192ebc4c56c1b0e62e Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 13:21:19 -0700 Subject: [PATCH 119/252] Show book descriptions in list items --- bookwyrm/templates/lists/list.html | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/lists/list.html b/bookwyrm/templates/lists/list.html index 9243d3af..2902f793 100644 --- a/bookwyrm/templates/lists/list.html +++ b/bookwyrm/templates/lists/list.html @@ -44,8 +44,15 @@
    - {% include 'snippets/book_titleby.html' %} - {% include 'snippets/stars.html' with rating=item.book|rating:request.user %} +

    + {% include 'snippets/book_titleby.html' %} +

    +

    + {% include 'snippets/stars.html' with rating=item.book|rating:request.user %} +

    +

    + {{ book|book_description|to_markdown|default:""|safe|truncatewords_html:20 }} +

    {% include 'snippets/shelve_button/shelve_button.html' %}
    From c373a0b818dfea5ebe8a7aa1e9ce1c409c68bf3d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 13:38:03 -0700 Subject: [PATCH 120/252] Highlight report notifications --- bookwyrm/models/user.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/models/user.py b/bookwyrm/models/user.py index 2c5bef4a..7c943bec 100644 --- a/bookwyrm/models/user.py +++ b/bookwyrm/models/user.py @@ -160,7 +160,7 @@ class User(OrderedCollectionPageMixin, AbstractUser): """whether any of the unread notifications are conversations""" return self.notification_set.filter( read=False, - notification_type__in=["REPLY", "MENTION", "TAG"], + notification_type__in=["REPLY", "MENTION", "TAG", "REPORT"], ).exists() activity_serializer = activitypub.Person From 544e29fe76754bdaa1589bac7288cddc9d7b3d3c Mon Sep 17 00:00:00 2001 From: Fabien Basmaison Date: Fri, 30 Apr 2021 22:44:53 +0200 Subject: [PATCH 121/252] Fix lists layout for user. --- bookwyrm/templates/user/lists.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/user/lists.html b/bookwyrm/templates/user/lists.html index b2fd9eef..8fe149d5 100644 --- a/bookwyrm/templates/user/lists.html +++ b/bookwyrm/templates/user/lists.html @@ -23,7 +23,7 @@ {% block panel %} -
    +

    {% trans "Create list" %}

    From a2621bce1223292dbf0647c7c153e8ea578d5f5c Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 15:48:52 -0700 Subject: [PATCH 122/252] Fixes getting authors from work data --- bookwyrm/connectors/abstract_connector.py | 15 ++++++++------- bookwyrm/connectors/inventaire.py | 5 ++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index db80677f..18ccb942 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -122,7 +122,6 @@ class AbstractConnector(AbstractMinimalConnector): # load the json data = self.get_book_data(remote_id) - mapped_data = dict_from_mappings(data, self.book_mappings) if self.is_work_data(data): try: edition_data = self.get_edition_from_work_data(data) @@ -130,24 +129,26 @@ class AbstractConnector(AbstractMinimalConnector): # hack: re-use the work data as the edition data # this is why remote ids aren't necessarily unique edition_data = data - work_data = mapped_data + work_data = data else: edition_data = data try: work_data = self.get_work_from_edition_data(data) - work_data = dict_from_mappings(work_data, self.book_mappings) - except (KeyError, ConnectorException): - work_data = mapped_data + except (KeyError, ConnectorException) as e: + logger.exception(e) + work_data = data if not work_data or not edition_data: raise ConnectorException("Unable to load book data: %s" % remote_id) with transaction.atomic(): # create activitypub object - work_activity = activitypub.Work(**work_data) + work_activity = activitypub.Work( + **dict_from_mappings(work_data, self.book_mappings) + ) # this will dedupe automatically work = work_activity.to_model(model=models.Work) - for author in self.get_authors_from_data(data): + for author in self.get_authors_from_data(work_data): work.authors.add(author) edition = self.create_edition_from_data(work, edition_data) diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index c13ef7f8..60f490f3 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -137,9 +137,8 @@ class Connector(AbstractConnector): return self.get_book_data(self.get_remote_id(uri)) def get_work_from_edition_data(self, data): - try: - uri = data["claims"]["wdt:P629"] - except KeyError: + uri = data.get("wdt:P629", [None])[0] + if not uri: raise ConnectorException("Invalid book data") return self.get_book_data(self.get_remote_id(uri)) From f2a6cfb4f3a9c0cc42cd1db46271ef5ca1fbcfea Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 16:04:27 -0700 Subject: [PATCH 123/252] Remove deduplication of external search results --- bookwyrm/connectors/connector_manager.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/bookwyrm/connectors/connector_manager.py b/bookwyrm/connectors/connector_manager.py index 3a6bf13c..86cebe80 100644 --- a/bookwyrm/connectors/connector_manager.py +++ b/bookwyrm/connectors/connector_manager.py @@ -29,8 +29,6 @@ def search(query, min_confidence=0.1): isbn = re.sub(r"[\W_]", "", query) maybe_isbn = len(isbn) in [10, 13] # ISBN10 or ISBN13 - dedup_slug = lambda r: "%s/%s/%s" % (r.title, r.author, r.year) - result_index = set() for connector in get_connectors(): result_set = None if maybe_isbn: @@ -53,10 +51,6 @@ def search(query, min_confidence=0.1): logger.exception(e) continue - # if the search results look the same, ignore them - result_set = [r for r in result_set if dedup_slug(r) not in result_index] - # `|=` concats two sets. WE ARE GETTING FANCY HERE - result_index |= set(dedup_slug(r) for r in result_set) results.append( { "connector": connector, From f55ded092cb587693c1dc303a7383610e860515e Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 16:44:14 -0700 Subject: [PATCH 124/252] Fixes link on follow pages --- bookwyrm/templates/user/relationships/layout.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/user/relationships/layout.html b/bookwyrm/templates/user/relationships/layout.html index 5baaf1f9..f36b304c 100644 --- a/bookwyrm/templates/user/relationships/layout.html +++ b/bookwyrm/templates/user/relationships/layout.html @@ -24,7 +24,7 @@ {% for follow in follow_list %}
    - + {% include 'snippets/avatar.html' with user=follow %} {{ follow.display_name }} From 4b73c37126fe052bbb4aaf7e80d6e4c679bd5d8b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 18:06:30 -0700 Subject: [PATCH 125/252] Separate out search types --- bookwyrm/views/search.py | 80 ++++++++++++++++++++++++++-------------- 1 file changed, 53 insertions(+), 27 deletions(-) diff --git a/bookwyrm/views/search.py b/bookwyrm/views/search.py index bd5ac3c7..df80603c 100644 --- a/bookwyrm/views/search.py +++ b/bookwyrm/views/search.py @@ -18,7 +18,7 @@ from .helpers import handle_remote_webfinger class Search(View): """search users or books""" - def get(self, request): + def get(self, request, search_type=None): """that search bar up top""" query = request.GET.get("q") min_confidence = request.GET.get("min_confidence", 0.1) @@ -30,32 +30,62 @@ class Search(View): ) return JsonResponse([r.json() for r in book_results], safe=False) - data = {"query": query or ""} + data = {"query": query, "type": search_type} + # make a guess about what type of query this is for + if search_type == "user" or (not search_type and "@" in query): + results = user_search(query, request.user) + elif search_type == "list": + results = list_search(query, request.user) + else: + results = book_search(query, min_confidence) + return TemplateResponse(request, "search_results.html", {**data, **results}) - # use webfinger for mastodon style account@domain.com username - if query and re.match(regex.full_username, query): - handle_remote_webfinger(query) - # do a user search - if request.user.is_authenticated: - data["user_results"] = ( - models.User.viewer_aware_objects(request.user) - .annotate( - similarity=Greatest( - TrigramSimilarity("username", query), - TrigramSimilarity("localname", query), - ) +def book_search(query, min_confidence): + """that search bar up top""" + + return { + "query": query or "", + "book_results": connector_manager.search(query, min_confidence=min_confidence), + } + + +def user_search(query, viewer): + """that search bar up top""" + # logged out viewers can't search users + if not viewer.is_authenticated: + return None + + # use webfinger for mastodon style account@domain.com username to load the user if + # they don't exist locally (handle_remote_webfinger will check the db) + if re.match(regex.full_username, query): + handle_remote_webfinger(query) + + return { + "query": query, + "user_results": ( + models.User.viewer_aware_objects(viewer) + .annotate( + similarity=Greatest( + TrigramSimilarity("username", query), + TrigramSimilarity("localname", query), ) - .filter( - similarity__gt=0.5, - ) - .order_by("-similarity")[:10] ) + .filter( + similarity__gt=0.5, + ) + .order_by("-similarity")[:10] + ), + } - # any relevent lists? - data["list_results"] = ( + +def list_search(query, viewer): + """any relevent lists?""" + return { + "query": query, + "list_results": ( privacy_filter( - request.user, + viewer, models.List.objects, privacy_levels=["public", "followers"], ) @@ -69,9 +99,5 @@ class Search(View): similarity__gt=0.1, ) .order_by("-similarity")[:10] - ) - - data["book_results"] = connector_manager.search( - query, min_confidence=min_confidence - ) - return TemplateResponse(request, "search_results.html", data) + ), + } From 5ca9d2a7b0bc233a67b7e210e7a4726a7cb08283 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 18:35:09 -0700 Subject: [PATCH 126/252] Adds search templates --- bookwyrm/templates/search/book.html | 9 ++ bookwyrm/templates/search/layout.html | 59 +++++++++++ bookwyrm/templates/search/list.html | 9 ++ bookwyrm/templates/search/user.html | 9 ++ bookwyrm/templates/search_results.html | 133 ------------------------- bookwyrm/urls.py | 3 +- bookwyrm/views/search.py | 31 +++--- 7 files changed, 107 insertions(+), 146 deletions(-) create mode 100644 bookwyrm/templates/search/book.html create mode 100644 bookwyrm/templates/search/layout.html create mode 100644 bookwyrm/templates/search/list.html create mode 100644 bookwyrm/templates/search/user.html delete mode 100644 bookwyrm/templates/search_results.html diff --git a/bookwyrm/templates/search/book.html b/bookwyrm/templates/search/book.html new file mode 100644 index 00000000..5d66ef90 --- /dev/null +++ b/bookwyrm/templates/search/book.html @@ -0,0 +1,9 @@ +{% extends 'search/layout.html' %} + +{% block panel %} + +{% for result in results %} +hi +{% endfor %} + +{% endblock %} diff --git a/bookwyrm/templates/search/layout.html b/bookwyrm/templates/search/layout.html new file mode 100644 index 00000000..005cda9d --- /dev/null +++ b/bookwyrm/templates/search/layout.html @@ -0,0 +1,59 @@ +{% extends 'layout.html' %} +{% load i18n %} + +{% block title %}{% trans "Search" %}{% endblock %} + +{% block content %} +
    +

    + {% blocktrans %}Search{% endblocktrans %} +

    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    + + + + +
    +
    + {% block panel %} + {% endblock %} +
    +
    +{% endblock %} diff --git a/bookwyrm/templates/search/list.html b/bookwyrm/templates/search/list.html new file mode 100644 index 00000000..5d66ef90 --- /dev/null +++ b/bookwyrm/templates/search/list.html @@ -0,0 +1,9 @@ +{% extends 'search/layout.html' %} + +{% block panel %} + +{% for result in results %} +hi +{% endfor %} + +{% endblock %} diff --git a/bookwyrm/templates/search/user.html b/bookwyrm/templates/search/user.html new file mode 100644 index 00000000..5d66ef90 --- /dev/null +++ b/bookwyrm/templates/search/user.html @@ -0,0 +1,9 @@ +{% extends 'search/layout.html' %} + +{% block panel %} + +{% for result in results %} +hi +{% endfor %} + +{% endblock %} diff --git a/bookwyrm/templates/search_results.html b/bookwyrm/templates/search_results.html deleted file mode 100644 index fdb77f72..00000000 --- a/bookwyrm/templates/search_results.html +++ /dev/null @@ -1,133 +0,0 @@ -{% extends 'layout.html' %} -{% load i18n %} - -{% block title %}{% trans "Search Results" %}{% endblock %} - -{% block content %} -{% with book_results|first as local_results %} -
    -

    {% blocktrans %}Search Results for "{{ query }}"{% endblocktrans %}

    -
    - -
    -
    -

    {% trans "Matching Books" %}

    -
    - {% if not local_results.results %} -

    {% blocktrans %}No books found for "{{ query }}"{% endblocktrans %}

    - {% if not user.is_authenticated %} -

    - {% trans "Log in to import or add books." %} -

    - {% endif %} - {% else %} -
      - {% for result in local_results.results %} -
    • - {% include 'snippets/search_result_text.html' with result=result %} -
    • - {% endfor %} -
    - {% endif %} -
    - - {% if request.user.is_authenticated %} - {% if book_results|slice:":1" and local_results.results %} -
    -

    - {% trans "Didn't find what you were looking for?" %} -

    - {% trans "Show results from other catalogues" as button_text %} - {% include 'snippets/toggle/open_button.html' with text=button_text small=True controls_text="more-results" %} - - {% if local_results.results %} - {% trans "Hide results from other catalogues" as button_text %} - {% include 'snippets/toggle/close_button.html' with text=button_text small=True controls_text="more-results" %} - {% endif %} -
    - {% endif %} - -
    - {% for result_set in book_results|slice:"1:" %} - {% if result_set.results %} -
    - {% if not result_set.connector.local %} -
    - -
    - {% trans "Show" as button_text %} - {% include 'snippets/toggle/open_button.html' with text=button_text small=True controls_text="more-results-panel" controls_uid=result_set.connector.identifier class="is-small" icon="arrow-down" pressed=forloop.first %} -
    -
    - {% endif %} - -
    -
    -
    - {% trans "Close" as button_text %} - {% include 'snippets/toggle/toggle_button.html' with label=button_text class="delete" nonbutton=True controls_text="more-results-panel" controls_uid=result_set.connector.identifier pressed=forloop.first %} -
    - -
      - {% for result in result_set.results %} -
    • - {% include 'snippets/search_result_text.html' with result=result remote_result=True %} -
    • - {% endfor %} -
    -
    -
    -
    - {% endif %} - {% endfor %} -
    - - - {% endif %} -
    -
    - {% if request.user.is_authenticated %} -
    -

    {% trans "Matching Users" %}

    - {% if not user_results %} -

    {% blocktrans %}No users found for "{{ query }}"{% endblocktrans %}

    - {% endif %} - -
    - {% endif %} -
    -

    {% trans "Lists" %}

    - {% if not list_results %} -

    {% blocktrans %}No lists found for "{{ query }}"{% endblocktrans %}

    - {% endif %} - {% for result in list_results %} -
    - -
    - {% endfor %} -
    -
    -
    -{% endwith %} -{% endblock %} diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 99e51ff3..a06e0bd4 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -163,7 +163,8 @@ urlpatterns = [ name="direct-messages-user", ), # search - re_path(r"^search/?$", views.Search.as_view()), + re_path(r"^search/?$", views.Search.as_view(), name="search"), + re_path(r"^search/(?Puser|list|book)/?$", views.Search.as_view(), name="search"), # imports re_path(r"^import/?$", views.Import.as_view()), re_path(r"^import/(\d+)/?$", views.ImportStatus.as_view()), diff --git a/bookwyrm/views/search.py b/bookwyrm/views/search.py index df80603c..aaca7377 100644 --- a/bookwyrm/views/search.py +++ b/bookwyrm/views/search.py @@ -30,15 +30,22 @@ class Search(View): ) return JsonResponse([r.json() for r in book_results], safe=False) - data = {"query": query, "type": search_type} - # make a guess about what type of query this is for - if search_type == "user" or (not search_type and "@" in query): - results = user_search(query, request.user) - elif search_type == "list": - results = list_search(query, request.user) - else: - results = book_search(query, min_confidence) - return TemplateResponse(request, "search_results.html", {**data, **results}) + data = {"query": query or "", "type": search_type} + results = {} + if query: + # make a guess about what type of query this is for + if search_type == "user" or (not search_type and "@" in query): + results = user_search(query, request.user) + elif search_type == "list": + results = list_search(query, request.user) + else: + results = book_search(query, min_confidence) + + return TemplateResponse( + request, + "search/{:s}.html".format(search_type or "book"), + {**data, **results} + ) def book_search(query, min_confidence): @@ -46,7 +53,7 @@ def book_search(query, min_confidence): return { "query": query or "", - "book_results": connector_manager.search(query, min_confidence=min_confidence), + "results": connector_manager.search(query, min_confidence=min_confidence), } @@ -63,7 +70,7 @@ def user_search(query, viewer): return { "query": query, - "user_results": ( + "results": ( models.User.viewer_aware_objects(viewer) .annotate( similarity=Greatest( @@ -83,7 +90,7 @@ def list_search(query, viewer): """any relevent lists?""" return { "query": query, - "list_results": ( + "results": ( privacy_filter( viewer, models.List.objects, From 21a5147c3c523f57c945bc64efc2311dfda4472a Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 18:59:02 -0700 Subject: [PATCH 127/252] Controls search type --- bookwyrm/templates/search/layout.html | 36 ++++++++++++------------ bookwyrm/templates/search/list.html | 4 +-- bookwyrm/urls.py | 1 - bookwyrm/views/search.py | 40 +++++++++++++-------------- 4 files changed, 39 insertions(+), 42 deletions(-) diff --git a/bookwyrm/templates/search/layout.html b/bookwyrm/templates/search/layout.html index 005cda9d..da0f651a 100644 --- a/bookwyrm/templates/search/layout.html +++ b/bookwyrm/templates/search/layout.html @@ -10,14 +10,14 @@
    -
    +
    - +
    - @@ -35,25 +35,25 @@ -
    -
    - {% block panel %} - {% endblock %} -
    -
    +
    + {% block panel %} + {% endblock %} + {% if not results %} +

    + {% blocktrans %}No results found for "{{ query }}"{% endblocktrans %} +

    + {% endif %} +
    {% endblock %} diff --git a/bookwyrm/templates/search/list.html b/bookwyrm/templates/search/list.html index 5d66ef90..d7e48f51 100644 --- a/bookwyrm/templates/search/list.html +++ b/bookwyrm/templates/search/list.html @@ -2,8 +2,6 @@ {% block panel %} -{% for result in results %} -hi -{% endfor %} +{% include 'lists/list_items.html' with lists=results %} {% endblock %} diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index a06e0bd4..5412378e 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -164,7 +164,6 @@ urlpatterns = [ ), # search re_path(r"^search/?$", views.Search.as_view(), name="search"), - re_path(r"^search/(?Puser|list|book)/?$", views.Search.as_view(), name="search"), # imports re_path(r"^import/?$", views.Import.as_view()), re_path(r"^import/(\d+)/?$", views.ImportStatus.as_view()), diff --git a/bookwyrm/views/search.py b/bookwyrm/views/search.py index aaca7377..cfbc1f0b 100644 --- a/bookwyrm/views/search.py +++ b/bookwyrm/views/search.py @@ -18,10 +18,11 @@ from .helpers import handle_remote_webfinger class Search(View): """search users or books""" - def get(self, request, search_type=None): + def get(self, request): """that search bar up top""" query = request.GET.get("q") min_confidence = request.GET.get("min_confidence", 0.1) + search_type = request.GET.get("type") if is_api_request(request): # only return local book results via json so we don't cascade @@ -30,38 +31,39 @@ class Search(View): ) return JsonResponse([r.json() for r in book_results], safe=False) + if not search_type: + search_type = "user" if "@" in query else "book" + + endpoints = { + "book": book_search, + "user": user_search, + "list": list_search, + } + if not search_type in endpoints: + search_type = "book" + endpoint = endpoints[search_type] + data = {"query": query or "", "type": search_type} - results = {} - if query: - # make a guess about what type of query this is for - if search_type == "user" or (not search_type and "@" in query): - results = user_search(query, request.user) - elif search_type == "list": - results = list_search(query, request.user) - else: - results = book_search(query, min_confidence) + results = endpoint(query, request.user, min_confidence) if query else {} return TemplateResponse( - request, - "search/{:s}.html".format(search_type or "book"), - {**data, **results} + request, "search/{:s}.html".format(search_type), {**data, **results} ) -def book_search(query, min_confidence): +def book_search(query, _, min_confidence): """that search bar up top""" return { - "query": query or "", "results": connector_manager.search(query, min_confidence=min_confidence), } -def user_search(query, viewer): +def user_search(query, viewer, _): """that search bar up top""" # logged out viewers can't search users if not viewer.is_authenticated: - return None + return {} # use webfinger for mastodon style account@domain.com username to load the user if # they don't exist locally (handle_remote_webfinger will check the db) @@ -69,7 +71,6 @@ def user_search(query, viewer): handle_remote_webfinger(query) return { - "query": query, "results": ( models.User.viewer_aware_objects(viewer) .annotate( @@ -86,10 +87,9 @@ def user_search(query, viewer): } -def list_search(query, viewer): +def list_search(query, viewer, _): """any relevent lists?""" return { - "query": query, "results": ( privacy_filter( viewer, From cb6c0035d7ee97ee531894e6227df22fffbb7700 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 19:19:10 -0700 Subject: [PATCH 128/252] List and user previews --- bookwyrm/templates/directory/directory.html | 56 +-------------- bookwyrm/templates/directory/user_card.html | 57 +++++++++++++++ bookwyrm/templates/search/layout.html | 3 + bookwyrm/templates/search/user.html | 9 ++- bookwyrm/views/search.py | 80 ++++++++++----------- 5 files changed, 105 insertions(+), 100 deletions(-) create mode 100644 bookwyrm/templates/directory/user_card.html diff --git a/bookwyrm/templates/directory/directory.html b/bookwyrm/templates/directory/directory.html index 2fa8a5ae..f97a8481 100644 --- a/bookwyrm/templates/directory/directory.html +++ b/bookwyrm/templates/directory/directory.html @@ -1,7 +1,5 @@ {% extends 'layout.html' %} {% load i18n %} -{% load bookwyrm_tags %} -{% load humanize %} {% block title %}{% trans "Directory" %}{% endblock %} @@ -41,59 +39,7 @@
    {% for user in users %}
    -
    -
    - - -
    - {% if user.summary %} - {{ user.summary | to_markdown | safe | truncatechars_html:40 }} - {% else %} {% endif %} -
    -
    -
    - {% if user != request.user %} - {% if user.mutuals %} - - {% elif user.shared_books %} - - {% endif %} - {% endif %} - - -
    -
    + {% include 'directory/user_card.html' %}
    {% endfor %}
    diff --git a/bookwyrm/templates/directory/user_card.html b/bookwyrm/templates/directory/user_card.html new file mode 100644 index 00000000..8e7538c8 --- /dev/null +++ b/bookwyrm/templates/directory/user_card.html @@ -0,0 +1,57 @@ +{% load i18n %} +{% load bookwyrm_tags %} +{% load humanize %} + +
    +
    + + +
    + {% if user.summary %} + {{ user.summary | to_markdown | safe | truncatechars_html:40 }} + {% else %} {% endif %} +
    +
    +
    + {% if user != request.user %} + {% if user.mutuals %} + + {% elif user.shared_books %} + + {% endif %} + {% endif %} + + +
    +
    diff --git a/bookwyrm/templates/search/layout.html b/bookwyrm/templates/search/layout.html index da0f651a..b122d7e2 100644 --- a/bookwyrm/templates/search/layout.html +++ b/bookwyrm/templates/search/layout.html @@ -33,6 +33,7 @@
    +{% if query %}
    +{% endif %} + {% endblock %} diff --git a/bookwyrm/templates/search/user.html b/bookwyrm/templates/search/user.html index 5d66ef90..c6adc613 100644 --- a/bookwyrm/templates/search/user.html +++ b/bookwyrm/templates/search/user.html @@ -1,9 +1,14 @@ {% extends 'search/layout.html' %} +{% load bookwyrm_tags %} {% block panel %} -{% for result in results %} -hi +
    +{% for user in results %} +
    + {% include 'directory/user_card.html' %} +
    {% endfor %} +
    {% endblock %} diff --git a/bookwyrm/views/search.py b/bookwyrm/views/search.py index cfbc1f0b..603ed211 100644 --- a/bookwyrm/views/search.py +++ b/bookwyrm/views/search.py @@ -43,24 +43,22 @@ class Search(View): search_type = "book" endpoint = endpoints[search_type] - data = {"query": query or "", "type": search_type} - results = endpoint(query, request.user, min_confidence) if query else {} + data = { + "query": query or "", + "type": search_type, + "results": endpoint(query, request.user, min_confidence) if query else {}, + } - return TemplateResponse( - request, "search/{:s}.html".format(search_type), {**data, **results} - ) + return TemplateResponse(request, "search/{:s}.html".format(search_type), data) def book_search(query, _, min_confidence): - """that search bar up top""" - - return { - "results": connector_manager.search(query, min_confidence=min_confidence), - } + """the real business is elsewhere""" + return connector_manager.search(query, min_confidence=min_confidence) def user_search(query, viewer, _): - """that search bar up top""" + """cool kids members only user search""" # logged out viewers can't search users if not viewer.is_authenticated: return {} @@ -70,41 +68,37 @@ def user_search(query, viewer, _): if re.match(regex.full_username, query): handle_remote_webfinger(query) - return { - "results": ( - models.User.viewer_aware_objects(viewer) - .annotate( - similarity=Greatest( - TrigramSimilarity("username", query), - TrigramSimilarity("localname", query), - ) + return ( + models.User.viewer_aware_objects(viewer) + .annotate( + similarity=Greatest( + TrigramSimilarity("username", query), + TrigramSimilarity("localname", query), ) - .filter( - similarity__gt=0.5, - ) - .order_by("-similarity")[:10] - ), - } + ) + .filter( + similarity__gt=0.5, + ) + .order_by("-similarity")[:10] + ) def list_search(query, viewer, _): """any relevent lists?""" - return { - "results": ( - privacy_filter( - viewer, - models.List.objects, - privacy_levels=["public", "followers"], + return ( + privacy_filter( + viewer, + models.List.objects, + privacy_levels=["public", "followers"], + ) + .annotate( + similarity=Greatest( + TrigramSimilarity("name", query), + TrigramSimilarity("description", query), ) - .annotate( - similarity=Greatest( - TrigramSimilarity("name", query), - TrigramSimilarity("description", query), - ) - ) - .filter( - similarity__gt=0.1, - ) - .order_by("-similarity")[:10] - ), - } + ) + .filter( + similarity__gt=0.1, + ) + .order_by("-similarity")[:10] + ) From 499c4e3267d06f738be989dd0d42fea9027f37c9 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 19:56:29 -0700 Subject: [PATCH 129/252] Don't search remote sources by default --- bookwyrm/templates/search/book.html | 69 ++++++++++++++++++++++++++- bookwyrm/templates/search/layout.html | 6 ++- bookwyrm/views/search.py | 21 +++++--- 3 files changed, 86 insertions(+), 10 deletions(-) diff --git a/bookwyrm/templates/search/book.html b/bookwyrm/templates/search/book.html index 5d66ef90..9d42dd7f 100644 --- a/bookwyrm/templates/search/book.html +++ b/bookwyrm/templates/search/book.html @@ -1,9 +1,74 @@ {% extends 'search/layout.html' %} +{% load i18n %} {% block panel %} -{% for result in results %} -hi +{% if results %} +{% with results|first as local_results %} +
      +{% for result in local_results.results %} +
    • + {% include 'snippets/search_result_text.html' with result=result %} +
    • {% endfor %} +
    +{% endwith %} + +
    +{% for result_set in results|slice:"1:" %} + {% if result_set.results %} +
    + {% if not result_set.connector.local %} +
    + +
    + {% trans "Show" as button_text %} + {% include 'snippets/toggle/open_button.html' with text=button_text small=True controls_text="more-results-panel" controls_uid=result_set.connector.identifier class="is-small" icon="arrow-down" pressed=forloop.first %} +
    +
    + {% endif %} + +
    +
    +
    + {% trans "Close" as button_text %} + {% include 'snippets/toggle/toggle_button.html' with label=button_text class="delete" nonbutton=True controls_text="more-results-panel" controls_uid=result_set.connector.identifier pressed=forloop.first %} +
    + +
      + {% for result in result_set.results %} +
    • + {% include 'snippets/search_result_text.html' with result=result remote_result=True %} +
    • + {% endfor %} +
    +
    +
    +
    + {% endif %} + {% endfor %} +
    + + +{% endif %} + +{% if not remote %} +

    + {% if request.user.is_authenticated %} + + {% trans "Load results from other catalogues" %} + + {% else %} + + {% trans "Log in to import or add books." %} + + {% endif %} +

    +{% endif %} {% endblock %} diff --git a/bookwyrm/templates/search/layout.html b/bookwyrm/templates/search/layout.html index b122d7e2..17e14f0f 100644 --- a/bookwyrm/templates/search/layout.html +++ b/bookwyrm/templates/search/layout.html @@ -39,9 +39,11 @@ {% trans "Books" %} + {% if request.user.is_authenticated %} {% trans "Users" %} + {% endif %} {% trans "Lists" %} @@ -49,13 +51,13 @@
    - {% block panel %} - {% endblock %} {% if not results %}

    {% blocktrans %}No results found for "{{ query }}"{% endblocktrans %}

    {% endif %} + {% block panel %} + {% endblock %}
    {% endif %} diff --git a/bookwyrm/views/search.py b/bookwyrm/views/search.py index 603ed211..9fa07e2e 100644 --- a/bookwyrm/views/search.py +++ b/bookwyrm/views/search.py @@ -23,6 +23,7 @@ class Search(View): query = request.GET.get("q") min_confidence = request.GET.get("min_confidence", 0.1) search_type = request.GET.get("type") + search_remote = request.GET.get("remote", False) if is_api_request(request): # only return local book results via json so we don't cascade @@ -41,23 +42,31 @@ class Search(View): } if not search_type in endpoints: search_type = "book" - endpoint = endpoints[search_type] data = { "query": query or "", "type": search_type, - "results": endpoint(query, request.user, min_confidence) if query else {}, + "remote": search_remote, } + if query: + data["results"] = endpoints[search_type]( + query, request.user, min_confidence, search_remote + ) return TemplateResponse(request, "search/{:s}.html".format(search_type), data) -def book_search(query, _, min_confidence): +def book_search(query, _, min_confidence, search_remote=False): """the real business is elsewhere""" - return connector_manager.search(query, min_confidence=min_confidence) + if search_remote: + return connector_manager.search(query, min_confidence=min_confidence) + results = connector_manager.local_search(query, min_confidence=min_confidence) + if not results: + return None + return [{"results": results}] -def user_search(query, viewer, _): +def user_search(query, viewer, *_): """cool kids members only user search""" # logged out viewers can't search users if not viewer.is_authenticated: @@ -83,7 +92,7 @@ def user_search(query, viewer, _): ) -def list_search(query, viewer, _): +def list_search(query, viewer, *_): """any relevent lists?""" return ( privacy_filter( From 9caad56ffcfc1d900163df1b3f50b4d5e0081bdc Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 20:08:05 -0700 Subject: [PATCH 130/252] Don't allow remote search results for logged out users --- bookwyrm/views/search.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bookwyrm/views/search.py b/bookwyrm/views/search.py index 9fa07e2e..c216170d 100644 --- a/bookwyrm/views/search.py +++ b/bookwyrm/views/search.py @@ -23,7 +23,9 @@ class Search(View): query = request.GET.get("q") min_confidence = request.GET.get("min_confidence", 0.1) search_type = request.GET.get("type") - search_remote = request.GET.get("remote", False) + search_remote = ( + request.GET.get("remote", False) and request.user.is_authenticated + ) if is_api_request(request): # only return local book results via json so we don't cascade From 5f7191a976331fea2bc8cd16db17126bd0c175db Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 20:09:43 -0700 Subject: [PATCH 131/252] Safer logged out search --- bookwyrm/templates/search/layout.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bookwyrm/templates/search/layout.html b/bookwyrm/templates/search/layout.html index 17e14f0f..8c81f5b7 100644 --- a/bookwyrm/templates/search/layout.html +++ b/bookwyrm/templates/search/layout.html @@ -19,7 +19,9 @@
    From f9c1ecfabed82ee1da0c116d3d8e31304e3174dc Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 30 Apr 2021 20:16:34 -0700 Subject: [PATCH 132/252] Fixes bad whitespace --- bookwyrm/templates/search/book.html | 60 ++++++++++++++--------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/bookwyrm/templates/search/book.html b/bookwyrm/templates/search/book.html index 9d42dd7f..53aadb63 100644 --- a/bookwyrm/templates/search/book.html +++ b/bookwyrm/templates/search/book.html @@ -8,7 +8,7 @@
      {% for result in local_results.results %}
    • - {% include 'snippets/search_result_text.html' with result=result %} + {% include 'snippets/search_result_text.html' with result=result %}
    • {% endfor %}
    @@ -18,37 +18,37 @@ {% for result_set in results|slice:"1:" %} {% if result_set.results %}
    - {% if not result_set.connector.local %} -
    - -
    - {% trans "Show" as button_text %} - {% include 'snippets/toggle/open_button.html' with text=button_text small=True controls_text="more-results-panel" controls_uid=result_set.connector.identifier class="is-small" icon="arrow-down" pressed=forloop.first %} -
    -
    - {% endif %} + {% if not result_set.connector.local %} +
    + +
    + {% trans "Show" as button_text %} + {% include 'snippets/toggle/open_button.html' with text=button_text small=True controls_text="more-results-panel" controls_uid=result_set.connector.identifier class="is-small" icon="arrow-down" pressed=forloop.first %} +
    +
    + {% endif %} -
    -
    -
    - {% trans "Close" as button_text %} - {% include 'snippets/toggle/toggle_button.html' with label=button_text class="delete" nonbutton=True controls_text="more-results-panel" controls_uid=result_set.connector.identifier pressed=forloop.first %} -
    +
    +
    +
    + {% trans "Close" as button_text %} + {% include 'snippets/toggle/toggle_button.html' with label=button_text class="delete" nonbutton=True controls_text="more-results-panel" controls_uid=result_set.connector.identifier pressed=forloop.first %} +
    -
      - {% for result in result_set.results %} -
    • - {% include 'snippets/search_result_text.html' with result=result remote_result=True %} -
    • - {% endfor %} -
    -
    -
    +
      + {% for result in result_set.results %} +
    • + {% include 'snippets/search_result_text.html' with result=result remote_result=True %} +
    • + {% endfor %} +
    +
    +
    {% endif %} {% endfor %} From ad8666ebeca4367620c812dc73236a51102d85f3 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 1 May 2021 07:20:54 -0700 Subject: [PATCH 133/252] Removes extra "content" field in status editor that broke dms --- bookwyrm/templates/feed/direct_messages.html | 2 +- .../snippets/create_status_form.html | 20 ++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/bookwyrm/templates/feed/direct_messages.html b/bookwyrm/templates/feed/direct_messages.html index f097fd9f..1e361e61 100644 --- a/bookwyrm/templates/feed/direct_messages.html +++ b/bookwyrm/templates/feed/direct_messages.html @@ -14,7 +14,7 @@
    - {% include 'snippets/create_status_form.html' with type="direct" uuid=1 mentions=partner %} + {% include 'snippets/create_status_form.html' with type="direct" uuid=1 mention=partner %}
    diff --git a/bookwyrm/templates/snippets/create_status_form.html b/bookwyrm/templates/snippets/create_status_form.html index a74230ad..f6021622 100644 --- a/bookwyrm/templates/snippets/create_status_form.html +++ b/bookwyrm/templates/snippets/create_status_form.html @@ -36,13 +36,23 @@
    {% if type == 'quotation' %} - - {% elif type == 'reply' %} - {% include 'snippets/content_warning_field.html' with parent_status=status %} - + {% else %} {% include 'snippets/content_warning_field.html' with parent_status=status %} - + {% endif %}
    From 64b54510d9270f78e2b267e87525937d7d269254 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 1 May 2021 10:39:05 -0700 Subject: [PATCH 134/252] Updates unit tests --- bookwyrm/tests/views/test_search.py | 47 +++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/bookwyrm/tests/views/test_search.py b/bookwyrm/tests/views/test_search.py index 77727522..7661d5a6 100644 --- a/bookwyrm/tests/views/test_search.py +++ b/bookwyrm/tests/views/test_search.py @@ -2,6 +2,7 @@ import json from unittest.mock import patch +from django.contrib.auth.models import AnonymousUser from django.http import JsonResponse from django.template.response import TemplateResponse from django.test import TestCase @@ -52,7 +53,7 @@ class ShelfViews(TestCase): self.assertEqual(data[0]["title"], "Test Book") self.assertEqual(data[0]["key"], "https://%s/book/%d" % (DOMAIN, self.book.id)) - def test_search_html_response(self): + def test_search_books(self): """searches remote connectors""" view = views.Search.as_view() @@ -92,7 +93,7 @@ class ShelfViews(TestCase): connector=connector, ) - request = self.factory.get("", {"q": "Test Book"}) + request = self.factory.get("", {"q": "Test Book", "remote": True}) request.user = self.local_user with patch("bookwyrm.views.search.is_api_request") as is_api: is_api.return_value = False @@ -101,19 +102,41 @@ class ShelfViews(TestCase): response = view(request) self.assertIsInstance(response, TemplateResponse) response.render() - self.assertEqual( - response.context_data["book_results"][0].title, "Gideon the Ninth" - ) + self.assertEqual(response.context_data["results"][0].title, "Gideon the Ninth") - def test_search_html_response_users(self): + def test_search_users(self): """searches remote connectors""" view = views.Search.as_view() - request = self.factory.get("", {"q": "mouse"}) + request = self.factory.get("", {"q": "mouse", "type": "user"}) request.user = self.local_user - with patch("bookwyrm.views.search.is_api_request") as is_api: - is_api.return_value = False - with patch("bookwyrm.connectors.connector_manager.search"): - response = view(request) + response = view(request) + self.assertIsInstance(response, TemplateResponse) response.render() - self.assertEqual(response.context_data["user_results"][0], self.local_user) + self.assertEqual(response.context_data["results"][0], self.local_user) + + def test_search_users_logged_out(self): + """searches remote connectors""" + view = views.Search.as_view() + request = self.factory.get("", {"q": "mouse", "type": "user"}) + + anonymous_user = AnonymousUser + anonymous_user.is_authenticated = False + request.user = anonymous_user + + response = view(request) + + response.render() + self.assertEqual(response.context_data["results"], {}) + + def test_search_lists(self): + """searches remote connectors""" + booklist = models.List.objects.create(user=self.local_user, name="test list") + view = views.Search.as_view() + request = self.factory.get("", {"q": "test", "type": "list"}) + request.user = self.local_user + response = view(request) + + self.assertIsInstance(response, TemplateResponse) + response.render() + self.assertEqual(response.context_data["results"][0], booklist) From c42be7a5892e4502355d707ec4c6b5b742cd331a Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 1 May 2021 10:47:01 -0700 Subject: [PATCH 135/252] Adds pagination --- bookwyrm/templates/search/layout.html | 4 ++++ bookwyrm/views/search.py | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/bookwyrm/templates/search/layout.html b/bookwyrm/templates/search/layout.html index 8c81f5b7..00b49b93 100644 --- a/bookwyrm/templates/search/layout.html +++ b/bookwyrm/templates/search/layout.html @@ -60,6 +60,10 @@ {% endif %} {% block panel %} {% endblock %} + +
    + {% include 'snippets/pagination.html' with page=results path=request.path %} +
    {% endif %} diff --git a/bookwyrm/views/search.py b/bookwyrm/views/search.py index c216170d..ebaa937c 100644 --- a/bookwyrm/views/search.py +++ b/bookwyrm/views/search.py @@ -2,6 +2,7 @@ import re from django.contrib.postgres.search import TrigramSimilarity +from django.core.paginator import Paginator from django.db.models.functions import Greatest from django.http import JsonResponse from django.template.response import TemplateResponse @@ -9,6 +10,7 @@ from django.views import View from bookwyrm import models from bookwyrm.connectors import connector_manager +from bookwyrm.settings import PAGE_LENGTH from bookwyrm.utils import regex from .helpers import is_api_request, privacy_filter from .helpers import handle_remote_webfinger @@ -51,9 +53,11 @@ class Search(View): "remote": search_remote, } if query: - data["results"] = endpoints[search_type]( + results = endpoints[search_type]( query, request.user, min_confidence, search_remote ) + paginated = Paginator(results, PAGE_LENGTH).get_page(request.GET.get("page")) + data["results"] = paginated return TemplateResponse(request, "search/{:s}.html".format(search_type), data) From bb50bd8121cd857f483b46134161da989eab1c57 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 1 May 2021 10:49:34 -0700 Subject: [PATCH 136/252] Python formatting --- bookwyrm/views/search.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bookwyrm/views/search.py b/bookwyrm/views/search.py index ebaa937c..b76f2392 100644 --- a/bookwyrm/views/search.py +++ b/bookwyrm/views/search.py @@ -56,7 +56,9 @@ class Search(View): results = endpoints[search_type]( query, request.user, min_confidence, search_remote ) - paginated = Paginator(results, PAGE_LENGTH).get_page(request.GET.get("page")) + paginated = Paginator(results, PAGE_LENGTH).get_page( + request.GET.get("page") + ) data["results"] = paginated return TemplateResponse(request, "search/{:s}.html".format(search_type), data) From 037362e49fa13d6f66755bad51a49d5f6184697d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 1 May 2021 10:55:10 -0700 Subject: [PATCH 137/252] Adds labels for form elements --- bookwyrm/templates/search/layout.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/search/layout.html b/bookwyrm/templates/search/layout.html index 00b49b93..239586ef 100644 --- a/bookwyrm/templates/search/layout.html +++ b/bookwyrm/templates/search/layout.html @@ -13,10 +13,10 @@
    - +
    -
    +
    +

    {% for error in form.first_published_date.errors %}

    {{ error | escape }}

    @@ -141,7 +141,7 @@

    - +

    {% for error in form.published_date.errors %}

    {{ error | escape }}

    @@ -245,3 +245,7 @@ {% endblock %} + +{% block scripts %} +{% include 'snippets/datepicker_js.html' %} +{% endblock %} diff --git a/bookwyrm/templates/book/editions.html b/bookwyrm/templates/book/editions.html index efbe1566..8af85ace 100644 --- a/bookwyrm/templates/book/editions.html +++ b/bookwyrm/templates/book/editions.html @@ -51,3 +51,7 @@ {% include 'snippets/pagination.html' with page=editions path=request.path %}
    {% endblock %} + +{% block scripts %} +{% include 'snippets/datepicker_js.html' %} +{% endblock %} diff --git a/bookwyrm/templates/edit_author.html b/bookwyrm/templates/edit_author.html index 542b57f9..ded8c494 100644 --- a/bookwyrm/templates/edit_author.html +++ b/bookwyrm/templates/edit_author.html @@ -81,3 +81,7 @@ {% endblock %} + +{% block scripts %} +{% include 'snippets/datepicker_js.html' %} +{% endblock %} diff --git a/bookwyrm/templates/feed/feed_layout.html b/bookwyrm/templates/feed/feed_layout.html index 75fc1951..431cf6dd 100644 --- a/bookwyrm/templates/feed/feed_layout.html +++ b/bookwyrm/templates/feed/feed_layout.html @@ -105,4 +105,5 @@ {% block scripts %} +{% include 'snippets/datepicker_js.html' %} {% endblock %} diff --git a/bookwyrm/templates/get_started/books.html b/bookwyrm/templates/get_started/books.html index 9613508b..e3fd87bb 100644 --- a/bookwyrm/templates/get_started/books.html +++ b/bookwyrm/templates/get_started/books.html @@ -64,3 +64,7 @@ {% endblock %} + +{% block scripts %} +{% include 'snippets/datepicker_js.html' %} +{% endblock %} diff --git a/bookwyrm/templates/user/layout.html b/bookwyrm/templates/user/layout.html index 661d8078..1aa76202 100644 --- a/bookwyrm/templates/user/layout.html +++ b/bookwyrm/templates/user/layout.html @@ -81,3 +81,8 @@ {% block panel %}{% endblock %} {% endblock %} + + +{% block scripts %} +{% include 'snippets/datepicker_js.html' %} +{% endblock %} From 869cfa6d341f25ee25d8576adcdc2e3b8d239b9c Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 4 May 2021 09:04:21 -0700 Subject: [PATCH 151/252] Replaces date elements with datepicker --- bookwyrm/templates/book/edit_book.html | 12 ++++++++++-- bookwyrm/templates/snippets/datepicker_js.html | 3 +++ bookwyrm/templates/snippets/readthrough_form.html | 12 ++++++++++-- .../snippets/shelve_button/finish_reading_modal.html | 12 ++++++++++-- .../snippets/shelve_button/start_reading_modal.html | 6 +++++- 5 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 bookwyrm/templates/snippets/datepicker_js.html diff --git a/bookwyrm/templates/book/edit_book.html b/bookwyrm/templates/book/edit_book.html index 095439d1..644e90c6 100644 --- a/bookwyrm/templates/book/edit_book.html +++ b/bookwyrm/templates/book/edit_book.html @@ -133,7 +133,11 @@

    - +

    {% for error in form.first_published_date.errors %}

    {{ error | escape }}

    @@ -141,7 +145,11 @@

    - +

    {% for error in form.published_date.errors %}

    {{ error | escape }}

    diff --git a/bookwyrm/templates/snippets/datepicker_js.html b/bookwyrm/templates/snippets/datepicker_js.html new file mode 100644 index 00000000..abfadaaf --- /dev/null +++ b/bookwyrm/templates/snippets/datepicker_js.html @@ -0,0 +1,3 @@ + + + diff --git a/bookwyrm/templates/snippets/readthrough_form.html b/bookwyrm/templates/snippets/readthrough_form.html index c5be295e..256fcea5 100644 --- a/bookwyrm/templates/snippets/readthrough_form.html +++ b/bookwyrm/templates/snippets/readthrough_form.html @@ -5,7 +5,11 @@
    {# Only show progress for editing existing readthroughs #} @@ -28,6 +32,10 @@
    diff --git a/bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html b/bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html index ca65bf06..6d4ea5ea 100644 --- a/bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html +++ b/bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html @@ -17,13 +17,21 @@
    diff --git a/bookwyrm/templates/snippets/shelve_button/start_reading_modal.html b/bookwyrm/templates/snippets/shelve_button/start_reading_modal.html index 21341683..47d620e0 100644 --- a/bookwyrm/templates/snippets/shelve_button/start_reading_modal.html +++ b/bookwyrm/templates/snippets/shelve_button/start_reading_modal.html @@ -15,7 +15,11 @@
    From 748810cd419915b34849d8255fd9b4dfb71bc5fc Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 4 May 2021 09:34:16 -0700 Subject: [PATCH 152/252] Use reverse lookups for urls --- bookwyrm/templates/book/edit_book.html | 2 +- bookwyrm/templates/book/editions.html | 4 ++-- bookwyrm/templates/discover/large-book.html | 2 +- bookwyrm/templates/discover/small-book.html | 2 +- bookwyrm/templates/edit_author.html | 2 +- bookwyrm/templates/feed/direct_messages.html | 2 +- bookwyrm/templates/import.html | 2 +- bookwyrm/templates/import_status.html | 2 +- bookwyrm/templates/layout.html | 12 ++++++------ bookwyrm/templates/login.html | 4 ++-- bookwyrm/templates/notifications.html | 2 +- .../preferences/preferences_layout.html | 9 ++++++--- bookwyrm/templates/snippets/authors.html | 2 +- bookwyrm/templates/snippets/book_tiles.html | 2 +- bookwyrm/templates/snippets/status/layout.html | 2 +- .../templates/snippets/status/status_header.html | 8 ++++---- bookwyrm/templates/snippets/user_options.html | 2 +- bookwyrm/urls.py | 16 ++++++++++------ 18 files changed, 42 insertions(+), 35 deletions(-) diff --git a/bookwyrm/templates/book/edit_book.html b/bookwyrm/templates/book/edit_book.html index 8ebbeaae..bcf11126 100644 --- a/bookwyrm/templates/book/edit_book.html +++ b/bookwyrm/templates/book/edit_book.html @@ -239,7 +239,7 @@ {% if not confirm_mode %} {% endif %} diff --git a/bookwyrm/templates/book/editions.html b/bookwyrm/templates/book/editions.html index efbe1566..775b05c8 100644 --- a/bookwyrm/templates/book/editions.html +++ b/bookwyrm/templates/book/editions.html @@ -15,14 +15,14 @@ {% for book in editions %}

    - + {{ book.title }}

    diff --git a/bookwyrm/templates/discover/large-book.html b/bookwyrm/templates/discover/large-book.html index 1808a0f9..7def6e13 100644 --- a/bookwyrm/templates/discover/large-book.html +++ b/bookwyrm/templates/discover/large-book.html @@ -17,7 +17,7 @@

    - {{ book.title }} + {{ book.title }}

    {% if book.authors %} diff --git a/bookwyrm/templates/discover/small-book.html b/bookwyrm/templates/discover/small-book.html index ad7e00fb..73133de4 100644 --- a/bookwyrm/templates/discover/small-book.html +++ b/bookwyrm/templates/discover/small-book.html @@ -11,7 +11,7 @@ {% include 'snippets/stars.html' with rating=book|rating:request.user %}

    - {{ book.title }} + {{ book.title }}

    {% if book.authors %} diff --git a/bookwyrm/templates/edit_author.html b/bookwyrm/templates/edit_author.html index 542b57f9..b575bbb2 100644 --- a/bookwyrm/templates/edit_author.html +++ b/bookwyrm/templates/edit_author.html @@ -76,7 +76,7 @@ diff --git a/bookwyrm/templates/feed/direct_messages.html b/bookwyrm/templates/feed/direct_messages.html index 1e361e61..0b7dcd79 100644 --- a/bookwyrm/templates/feed/direct_messages.html +++ b/bookwyrm/templates/feed/direct_messages.html @@ -10,7 +10,7 @@ {% trans "Direct Messages" %} {% endif %} - {% if partner %}

    {% trans "All messages" %}

    {% endif %} + {% if partner %}

    {% trans "All messages" %}

    {% endif %}
    diff --git a/bookwyrm/templates/import.html b/bookwyrm/templates/import.html index 239b6914..c4f0dfae 100644 --- a/bookwyrm/templates/import.html +++ b/bookwyrm/templates/import.html @@ -56,7 +56,7 @@ {% endif %}
    diff --git a/bookwyrm/templates/import_status.html b/bookwyrm/templates/import_status.html index 3ce929e6..e06392a8 100644 --- a/bookwyrm/templates/import_status.html +++ b/bookwyrm/templates/import_status.html @@ -124,7 +124,7 @@ {% if item.book %} - + {% include 'snippets/book_cover.html' with book=item.book cover_class='is-h-s' %} {% endif %} diff --git a/bookwyrm/templates/layout.html b/bookwyrm/templates/layout.html index c45f2380..bc654401 100644 --- a/bookwyrm/templates/layout.html +++ b/bookwyrm/templates/layout.html @@ -94,12 +94,12 @@
  • - + {% trans 'Import Books' %}
  • - + {% trans 'Settings' %}
  • @@ -122,14 +122,14 @@ {% endif %}
  • - + {% trans 'Log out' %}
  • diff --git a/bookwyrm/templates/notifications.html b/bookwyrm/templates/notifications.html index ba0a25cd..73ad23b8 100644 --- a/bookwyrm/templates/notifications.html +++ b/bookwyrm/templates/notifications.html @@ -107,7 +107,7 @@ {% endif %} {% endif %} {% elif notification.related_import %} - {% blocktrans with related_id=notification.related_import.id %}Your import completed.{% endblocktrans %} + {% blocktrans with related_id=notification.related_import.id %}Your import completed.{% endblocktrans %} {% elif notification.related_report %} {% url 'settings-report' notification.related_report.id as path %} {% blocktrans with related_id=path %}A new report needs moderation.{% endblocktrans %} diff --git a/bookwyrm/templates/preferences/preferences_layout.html b/bookwyrm/templates/preferences/preferences_layout.html index d463d9cb..baf87e47 100644 --- a/bookwyrm/templates/preferences/preferences_layout.html +++ b/bookwyrm/templates/preferences/preferences_layout.html @@ -11,16 +11,19 @@ diff --git a/bookwyrm/templates/snippets/authors.html b/bookwyrm/templates/snippets/authors.html index 9459b0fe..476956b6 100644 --- a/bookwyrm/templates/snippets/authors.html +++ b/bookwyrm/templates/snippets/authors.html @@ -5,7 +5,7 @@ {% endcomment %} {% for author in book.authors.all %}
    diff --git a/bookwyrm/templates/snippets/status/layout.html b/bookwyrm/templates/snippets/status/layout.html index 6014158f..ddbd6f20 100644 --- a/bookwyrm/templates/snippets/status/layout.html +++ b/bookwyrm/templates/snippets/status/layout.html @@ -44,7 +44,7 @@ {% else %}
    -
    +
    {% if author.bio %} -

    {{ author.bio | to_markdown | safe }} -

    {% endif %} + {% if author.wikipedia_link %}

    {% trans "Wikipedia" %}

    {% endif %} From 1cc63c6d456f867791867787d6ee6377abec3128 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 7 May 2021 13:55:41 -0700 Subject: [PATCH 161/252] Adds filtered view for notifications --- bookwyrm/urls.py | 5 +++++ bookwyrm/views/notifications.py | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 3e7dea58..3fdced38 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -139,6 +139,11 @@ urlpatterns = [ path("", views.Home.as_view(), name="landing"), re_path(r"^discover/?$", views.Discover.as_view()), re_path(r"^notifications/?$", views.Notifications.as_view(), name="notifications"), + re_path( + r"^notifications/(?Pmentions)/?$", + views.Notifications.as_view(), + name="notifications", + ), re_path(r"^directory/?", views.Directory.as_view(), name="directory"), # Get started re_path( diff --git a/bookwyrm/views/notifications.py b/bookwyrm/views/notifications.py index 3d08cade..b96bc925 100644 --- a/bookwyrm/views/notifications.py +++ b/bookwyrm/views/notifications.py @@ -11,10 +11,14 @@ from django.views import View class Notifications(View): """notifications view""" - def get(self, request): + def get(self, request, notification_type=None): """people are interacting with you, get hyped""" notifications = request.user.notification_set.all().order_by("-created_date") - unread = [n.id for n in notifications.filter(read=False)] + if notification_type == "mentions": + notifications = notifications.filter( + notification_type__in=["REPLY", "MENTION", "TAG"] + ) + unread = [n.id for n in notifications.filter(read=False)[:50]] data = { "notifications": notifications[:50], "unread": unread, From 852f8da62e4fa3b5a65c200109d7f0455feae881 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 7 May 2021 14:00:55 -0700 Subject: [PATCH 162/252] Adds tabs to notifications --- bookwyrm/templates/notifications.html | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/bookwyrm/templates/notifications.html b/bookwyrm/templates/notifications.html index 8f8fede2..ed623b12 100644 --- a/bookwyrm/templates/notifications.html +++ b/bookwyrm/templates/notifications.html @@ -6,13 +6,30 @@ {% block title %}{% trans "Notifications" %}{% endblock %} {% block content %} -
    -

    {% trans "Notifications" %}

    +
    +
    +

    {% trans "Notifications" %}

    +
    -
    + {% csrf_token %}
    +
    + +
    +
    From f2d985e58323b3d3e7595103b2c9edd4184fcf3c Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 May 2021 09:57:53 -0700 Subject: [PATCH 163/252] Uses one set of search logic for all results or just first --- bookwyrm/connectors/connector_manager.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/bookwyrm/connectors/connector_manager.py b/bookwyrm/connectors/connector_manager.py index 86cebe80..cac8eb7c 100644 --- a/bookwyrm/connectors/connector_manager.py +++ b/bookwyrm/connectors/connector_manager.py @@ -19,7 +19,7 @@ class ConnectorException(HTTPError): """when the connector can't do what was asked""" -def search(query, min_confidence=0.1): +def search(query, min_confidence=0.1, return_first=False): """find books based on arbitary keywords""" if not query: return [] @@ -51,6 +51,9 @@ def search(query, min_confidence=0.1): logger.exception(e) continue + if return_first and result_set: + return result_set[0] + results.append( { "connector": connector, @@ -58,6 +61,9 @@ def search(query, min_confidence=0.1): } ) + if return_first: + return None + return results @@ -77,12 +83,7 @@ def isbn_local_search(query, raw=False): def first_search_result(query, min_confidence=0.1): """search until you find a result that fits""" - for connector in get_connectors(): - result = connector.search(query, min_confidence=min_confidence) - if result: - return result[0] - return None - + return search(query, min_confidence=min_confidence, return_first=True) def get_connectors(): """load all connectors""" From 36439506b646c245f5b68135021c922f501d48ed Mon Sep 17 00:00:00 2001 From: Allie Signet Date: Mon, 10 May 2021 14:00:51 -0300 Subject: [PATCH 164/252] add storygraph import --- bookwyrm/importers/__init__.py | 1 + bookwyrm/importers/storygraph_import.py | 32 +++++++++++++++++++++++++ bookwyrm/templates/import.html | 3 +++ bookwyrm/views/import_data.py | 4 +++- 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 bookwyrm/importers/storygraph_import.py diff --git a/bookwyrm/importers/__init__.py b/bookwyrm/importers/__init__.py index f13672e0..d4890070 100644 --- a/bookwyrm/importers/__init__.py +++ b/bookwyrm/importers/__init__.py @@ -3,3 +3,4 @@ from .importer import Importer from .goodreads_import import GoodreadsImporter from .librarything_import import LibrarythingImporter +from .storygraph_import import StorygraphImporter diff --git a/bookwyrm/importers/storygraph_import.py b/bookwyrm/importers/storygraph_import.py new file mode 100644 index 00000000..020adf3e --- /dev/null +++ b/bookwyrm/importers/storygraph_import.py @@ -0,0 +1,32 @@ +""" handle reading a csv from librarything """ +import re +import math + +from . import Importer + + +class StorygraphImporter(Importer): + """csv downloads from librarything""" + + service = "Storygraph" + # mandatory_fields : fields matching the book title and author + mandatory_fields = ["Title", "Author"] + + def parse_fields(self, entry): + """custom parsing for storygraph""" + data = {} + data["import_source"] = self.service + data["Title"] = entry["Title"] + data["Author"] = entry["Author"] + data["ISBN13"] = entry["ISBN"] + data["My Review"] = entry["Review"] + if entry["Star Rating"]: + data["My Rating"] = math.ceil(float(entry["Star Rating"])) + else: + data["My Rating"] = "" + + data["Date Added"] = re.sub(r"[/]", "-", entry["Date Added"]) + data["Date Read"] = re.sub(r"[/]", "-", entry["Last Date Read"]) + + data["Exclusive Shelf"] = ({"read": "read", "currently-reading": "reading", "to-read": "to-read"}).get(entry["Read Status"],None) + return data diff --git a/bookwyrm/templates/import.html b/bookwyrm/templates/import.html index c4f0dfae..2b7d69e1 100644 --- a/bookwyrm/templates/import.html +++ b/bookwyrm/templates/import.html @@ -20,6 +20,9 @@ + diff --git a/bookwyrm/views/import_data.py b/bookwyrm/views/import_data.py index a2abbc69..ccf4ec6d 100644 --- a/bookwyrm/views/import_data.py +++ b/bookwyrm/views/import_data.py @@ -10,7 +10,7 @@ from django.utils.decorators import method_decorator from django.views import View from bookwyrm import forms, models -from bookwyrm.importers import Importer, LibrarythingImporter, GoodreadsImporter +from bookwyrm.importers import Importer, LibrarythingImporter, GoodreadsImporter, StorygraphImporter from bookwyrm.tasks import app # pylint: disable= no-self-use @@ -42,6 +42,8 @@ class Import(View): importer = None if source == "LibraryThing": importer = LibrarythingImporter() + elif source == "Storygraph": + importer = StorygraphImporter() else: # Default : GoodReads importer = GoodreadsImporter() From 5cd974b78d3b0475b87c6b40d228301f0eca3864 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 May 2021 10:03:05 -0700 Subject: [PATCH 165/252] Python formatting --- bookwyrm/connectors/connector_manager.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bookwyrm/connectors/connector_manager.py b/bookwyrm/connectors/connector_manager.py index cac8eb7c..6fe458ca 100644 --- a/bookwyrm/connectors/connector_manager.py +++ b/bookwyrm/connectors/connector_manager.py @@ -85,6 +85,7 @@ def first_search_result(query, min_confidence=0.1): """search until you find a result that fits""" return search(query, min_confidence=min_confidence, return_first=True) + def get_connectors(): """load all connectors""" for info in models.Connector.objects.order_by("priority").all(): From 623bb181e42a91a931339ebe8f7894e45dbf4769 Mon Sep 17 00:00:00 2001 From: Allie Signet Date: Mon, 10 May 2021 15:56:35 -0300 Subject: [PATCH 166/252] fix formatting --- bookwyrm/importers/storygraph_import.py | 4 +++- bookwyrm/views/import_data.py | 7 ++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/bookwyrm/importers/storygraph_import.py b/bookwyrm/importers/storygraph_import.py index 020adf3e..8e43cabc 100644 --- a/bookwyrm/importers/storygraph_import.py +++ b/bookwyrm/importers/storygraph_import.py @@ -28,5 +28,7 @@ class StorygraphImporter(Importer): data["Date Added"] = re.sub(r"[/]", "-", entry["Date Added"]) data["Date Read"] = re.sub(r"[/]", "-", entry["Last Date Read"]) - data["Exclusive Shelf"] = ({"read": "read", "currently-reading": "reading", "to-read": "to-read"}).get(entry["Read Status"],None) + data["Exclusive Shelf"] = ( + {"read": "read", "currently-reading": "reading", "to-read": "to-read"} + ).get(entry["Read Status"], None) return data diff --git a/bookwyrm/views/import_data.py b/bookwyrm/views/import_data.py index ccf4ec6d..2bbb5947 100644 --- a/bookwyrm/views/import_data.py +++ b/bookwyrm/views/import_data.py @@ -10,7 +10,12 @@ from django.utils.decorators import method_decorator from django.views import View from bookwyrm import forms, models -from bookwyrm.importers import Importer, LibrarythingImporter, GoodreadsImporter, StorygraphImporter +from bookwyrm.importers import ( + Importer, + LibrarythingImporter, + GoodreadsImporter, + StorygraphImporter, +) from bookwyrm.tasks import app # pylint: disable= no-self-use From 13dc5efe712cc11df4aab0f6125a19b10d645ad1 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 May 2021 12:53:36 -0700 Subject: [PATCH 167/252] More comprehensive tests for connector search --- bookwyrm/connectors/connector_manager.py | 20 ++++--- .../connectors/test_connector_manager.py | 53 +++++++++++++++++-- 2 files changed, 58 insertions(+), 15 deletions(-) diff --git a/bookwyrm/connectors/connector_manager.py b/bookwyrm/connectors/connector_manager.py index 6fe458ca..1c938b4b 100644 --- a/bookwyrm/connectors/connector_manager.py +++ b/bookwyrm/connectors/connector_manager.py @@ -31,18 +31,15 @@ def search(query, min_confidence=0.1, return_first=False): for connector in get_connectors(): result_set = None - if maybe_isbn: + if maybe_isbn and connector.isbn_search_url and connector.isbn_search_url == "": # Search on ISBN - if not connector.isbn_search_url or connector.isbn_search_url == "": - result_set = [] - else: - try: - result_set = connector.isbn_search(isbn) - except Exception as e: # pylint: disable=broad-except - logger.exception(e) - continue + try: + result_set = connector.isbn_search(isbn) + except Exception as e: # pylint: disable=broad-except + logger.exception(e) + # if this fails, we can still try regular search - # if no isbn search or results, we fallback to generic search + # if no isbn search results, we fallback to generic search if result_set in (None, []): try: result_set = connector.search(query, min_confidence=min_confidence) @@ -52,6 +49,7 @@ def search(query, min_confidence=0.1, return_first=False): continue if return_first and result_set: + # if we found anything, return it return result_set[0] results.append( @@ -83,7 +81,7 @@ def isbn_local_search(query, raw=False): def first_search_result(query, min_confidence=0.1): """search until you find a result that fits""" - return search(query, min_confidence=min_confidence, return_first=True) + return search(query, min_confidence=min_confidence, return_first=True) or None def get_connectors(): diff --git a/bookwyrm/tests/connectors/test_connector_manager.py b/bookwyrm/tests/connectors/test_connector_manager.py index 34abbeaf..67b108dd 100644 --- a/bookwyrm/tests/connectors/test_connector_manager.py +++ b/bookwyrm/tests/connectors/test_connector_manager.py @@ -1,5 +1,6 @@ """ interface between the app and various connectors """ from django.test import TestCase +import responses from bookwyrm import models from bookwyrm.connectors import connector_manager @@ -17,6 +18,9 @@ class ConnectorManager(TestCase): self.edition = models.Edition.objects.create( title="Example Edition", parent_work=self.work, isbn_10="0000000000" ) + self.edition = models.Edition.objects.create( + title="Another Edition", parent_work=self.work, isbn_10="1111111111" + ) self.connector = models.Connector.objects.create( identifier="test_connector", @@ -29,6 +33,18 @@ class ConnectorManager(TestCase): isbn_search_url="http://test.com/isbn/", ) + self.remote_connector = models.Connector.objects.create( + identifier="test_connector_remote", + priority=1, + local=False, + connector_file="bookwyrm_connector", + base_url="http://fake.ciom/", + books_url="http://fake.ciom/", + search_url="http://fake.ciom/search/", + covers_url="http://covers.fake.ciom/", + isbn_search_url="http://fake.ciom/isbn/", + ) + def test_get_or_create_connector(self): """loads a connector if the data source is known or creates one""" remote_id = "https://example.com/object/1" @@ -42,23 +58,38 @@ class ConnectorManager(TestCase): def test_get_connectors(self): """load all connectors""" - remote_id = "https://example.com/object/1" - connector_manager.get_or_create_connector(remote_id) connectors = list(connector_manager.get_connectors()) self.assertEqual(len(connectors), 2) self.assertIsInstance(connectors[0], SelfConnector) self.assertIsInstance(connectors[1], BookWyrmConnector) + @responses.activate def test_search(self): """search all connectors""" + responses.add( + responses.GET, + "http://fake.ciom/search/Example?min_confidence=0.1", + json={}, + ) results = connector_manager.search("Example") self.assertEqual(len(results), 1) self.assertIsInstance(results[0]["connector"], SelfConnector) self.assertEqual(len(results[0]["results"]), 1) self.assertEqual(results[0]["results"][0].title, "Example Edition") + def test_search_empty_query(self): + """don't panic on empty queries""" + results = connector_manager.search("") + self.assertEqual(results, []) + + @responses.activate def test_search_isbn(self): """special handling if a query resembles an isbn""" + responses.add( + responses.GET, + "http://fake.ciom/isbn/0000000000", + json={}, + ) results = connector_manager.search("0000000000") self.assertEqual(len(results), 1) self.assertIsInstance(results[0]["connector"], SelfConnector) @@ -75,8 +106,22 @@ class ConnectorManager(TestCase): """only get one search result""" result = connector_manager.first_search_result("Example") self.assertEqual(result.title, "Example Edition") - no_result = connector_manager.first_search_result("dkjfhg") - self.assertIsNone(no_result) + + def test_first_search_result_empty_query(self): + """only get one search result""" + result = connector_manager.first_search_result("") + self.assertIsNone(result) + + @responses.activate + def test_first_search_result_no_results(self): + """only get one search result""" + responses.add( + responses.GET, + "http://fake.ciom/search/dkjfhg?min_confidence=0.1", + json={}, + ) + result = connector_manager.first_search_result("dkjfhg") + self.assertIsNone(result) def test_load_connector(self): """load a connector object from the database entry""" From 1844dd6b205b75e50a16b55202c10eeb4147beb3 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 May 2021 13:01:11 -0700 Subject: [PATCH 168/252] Only include result blobs with results in search results --- bookwyrm/connectors/connector_manager.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/bookwyrm/connectors/connector_manager.py b/bookwyrm/connectors/connector_manager.py index 86cebe80..1fb375c9 100644 --- a/bookwyrm/connectors/connector_manager.py +++ b/bookwyrm/connectors/connector_manager.py @@ -43,7 +43,7 @@ def search(query, min_confidence=0.1): continue # if no isbn search or results, we fallback to generic search - if result_set in (None, []): + if not result_set: try: result_set = connector.search(query, min_confidence=min_confidence) except Exception as e: # pylint: disable=broad-except @@ -51,12 +51,13 @@ def search(query, min_confidence=0.1): logger.exception(e) continue - results.append( - { - "connector": connector, - "results": result_set, - } - ) + if result_set or connector.local: + results.append( + { + "connector": connector, + "results": result_set, + } + ) return results From b0055f398d2286096964ead303b6fd72bdf2291c Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 May 2021 13:24:00 -0700 Subject: [PATCH 169/252] Makes the show/hide buttons easier to find in book search --- bookwyrm/templates/search/book.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bookwyrm/templates/search/book.html b/bookwyrm/templates/search/book.html index 84c2fafe..9af8a394 100644 --- a/bookwyrm/templates/search/book.html +++ b/bookwyrm/templates/search/book.html @@ -27,8 +27,10 @@
    - {% trans "Show" as button_text %} - {% include 'snippets/toggle/open_button.html' with text=button_text small=True controls_text="more-results-panel" controls_uid=result_set.connector.identifier class="is-small" icon="arrow-down" pressed=forloop.first %} + {% trans "Open" as button_text %} + {% include 'snippets/toggle/open_button.html' with text=button_text small=True controls_text="more-results-panel" controls_uid=result_set.connector.identifier class="is-small" icon_with_text="arrow-down" pressed=forloop.first %} + {% trans "Close" as button_text %} + {% include 'snippets/toggle/close_button.html' with text=button_text small=True controls_text="more-results-panel" controls_uid=result_set.connector.identifier class="is-small" icon_with_text="arrow-up" pressed=forloop.first %}
    {% endif %} @@ -36,8 +38,6 @@
    - {% trans "Close" as button_text %} - {% include 'snippets/toggle/toggle_button.html' with label=button_text class="delete" nonbutton=True controls_text="more-results-panel" controls_uid=result_set.connector.identifier pressed=forloop.first %}
      From c869129323e9907aecc41bfc53cb9537232f1409 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 May 2021 13:26:10 -0700 Subject: [PATCH 170/252] Updates locales --- locale/de_DE/LC_MESSAGES/django.mo | Bin 25234 -> 24553 bytes locale/de_DE/LC_MESSAGES/django.po | 153 ++++++++++--------- locale/en_US/LC_MESSAGES/django.po | 211 ++++++++++++++------------- locale/es/LC_MESSAGES/django.mo | Bin 65330 -> 40709 bytes locale/es/LC_MESSAGES/django.po | 153 ++++++++++--------- locale/fr_FR/LC_MESSAGES/django.mo | Bin 41556 -> 40827 bytes locale/fr_FR/LC_MESSAGES/django.po | 153 ++++++++++--------- locale/zh_Hans/LC_MESSAGES/django.mo | Bin 37261 -> 36647 bytes locale/zh_Hans/LC_MESSAGES/django.po | 153 ++++++++++--------- 9 files changed, 436 insertions(+), 387 deletions(-) diff --git a/locale/de_DE/LC_MESSAGES/django.mo b/locale/de_DE/LC_MESSAGES/django.mo index 3f41eda575696af9585b5df60f4b09c991259496..90bc281759ba7efcf8aafd19283ddea45364b730 100644 GIT binary patch delta 7462 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 delta 8055 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 A*Z=?k diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index 65677cd9..7f274af9 100644 --- a/locale/de_DE/LC_MESSAGES/django.po +++ b/locale/de_DE/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-05-03 11:22-0700\n" +"POT-Creation-Date: 2021-05-10 13:23-0700\n" "PO-Revision-Date: 2021-03-02 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -145,11 +145,11 @@ msgstr "Etwas lief schief. Entschuldigung!" msgid "Edit Author" msgstr "Autor*in editieren" -#: bookwyrm/templates/author.html:32 +#: bookwyrm/templates/author.html:31 msgid "Wikipedia" msgstr "" -#: bookwyrm/templates/author.html:37 +#: bookwyrm/templates/author.html:36 #, python-format msgid "Books by %(name)s" msgstr "Bücher von %(name)s" @@ -203,32 +203,32 @@ msgid "Description:" msgstr "Beschreibung:" #: bookwyrm/templates/book/book.html:127 -#: bookwyrm/templates/book/edit_book.html:241 +#: bookwyrm/templates/book/edit_book.html:249 #: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 #: bookwyrm/templates/preferences/edit_user.html:70 #: bookwyrm/templates/settings/edit_server.html:68 #: bookwyrm/templates/settings/federated_server.html:93 #: bookwyrm/templates/settings/site.html:97 #: 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:50 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:34 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:38 #: bookwyrm/templates/user_admin/user_moderation_actions.html:38 msgid "Save" msgstr "Speichern" #: bookwyrm/templates/book/book.html:128 bookwyrm/templates/book/book.html:180 #: bookwyrm/templates/book/cover_modal.html:32 -#: bookwyrm/templates/book/edit_book.html:242 +#: bookwyrm/templates/book/edit_book.html:250 #: bookwyrm/templates/edit_author.html:79 #: bookwyrm/templates/moderation/report_modal.html:34 #: bookwyrm/templates/settings/federated_server.html:94 #: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 #: bookwyrm/templates/snippets/goal_form.html:32 #: bookwyrm/templates/snippets/readthrough.html:78 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:43 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:51 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:35 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:39 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28 msgid "Cancel" msgstr "Abbrechen" @@ -328,24 +328,24 @@ msgid "ISBN:" msgstr "" #: bookwyrm/templates/book/book_identifiers.html:15 -#: bookwyrm/templates/book/edit_book.html:227 +#: bookwyrm/templates/book/edit_book.html:235 msgid "OCLC Number:" msgstr "OCLC Nummer:" #: bookwyrm/templates/book/book_identifiers.html:22 -#: bookwyrm/templates/book/edit_book.html:231 +#: bookwyrm/templates/book/edit_book.html:239 msgid "ASIN:" msgstr "" #: bookwyrm/templates/book/cover_modal.html:17 -#: bookwyrm/templates/book/edit_book.html:179 +#: bookwyrm/templates/book/edit_book.html:187 #, fuzzy #| msgid "Add cover" msgid "Upload cover:" msgstr "Cover hinzufügen" #: bookwyrm/templates/book/cover_modal.html:23 -#: bookwyrm/templates/book/edit_book.html:185 +#: bookwyrm/templates/book/edit_book.html:193 msgid "Load cover from url:" msgstr "Cover von URL laden:" @@ -455,63 +455,63 @@ msgstr "Mehrere Herausgeber:innen durch Kommata trennen" msgid "First published date:" msgstr "Erstveröffentlichungsdatum:" -#: bookwyrm/templates/book/edit_book.html:143 +#: bookwyrm/templates/book/edit_book.html:147 msgid "Published date:" msgstr "Veröffentlichungsdatum:" -#: bookwyrm/templates/book/edit_book.html:152 +#: bookwyrm/templates/book/edit_book.html:160 #, fuzzy #| msgid "Author" msgid "Authors" msgstr "Autor*in" -#: bookwyrm/templates/book/edit_book.html:158 +#: bookwyrm/templates/book/edit_book.html:166 #, fuzzy, python-format #| msgid "Direct Messages with %(username)s" msgid "Remove %(name)s" msgstr "Direktnachrichten mit %(username)s" -#: bookwyrm/templates/book/edit_book.html:163 +#: bookwyrm/templates/book/edit_book.html:171 #, fuzzy #| msgid "Edit Author" msgid "Add Authors:" msgstr "Autor*in editieren" -#: bookwyrm/templates/book/edit_book.html:164 +#: bookwyrm/templates/book/edit_book.html:172 msgid "John Doe, Jane Smith" msgstr "" -#: bookwyrm/templates/book/edit_book.html:170 +#: bookwyrm/templates/book/edit_book.html:178 #: bookwyrm/templates/user/shelf/shelf.html:76 msgid "Cover" msgstr "" -#: bookwyrm/templates/book/edit_book.html:198 +#: bookwyrm/templates/book/edit_book.html:206 msgid "Physical Properties" msgstr "Physikalische Eigenschaften" -#: bookwyrm/templates/book/edit_book.html:199 +#: bookwyrm/templates/book/edit_book.html:207 #: bookwyrm/templates/book/format_filter.html:5 msgid "Format:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:207 +#: bookwyrm/templates/book/edit_book.html:215 msgid "Pages:" msgstr "Seiten:" -#: bookwyrm/templates/book/edit_book.html:214 +#: bookwyrm/templates/book/edit_book.html:222 msgid "Book Identifiers" msgstr "Buchidentifikatoren" -#: bookwyrm/templates/book/edit_book.html:215 +#: bookwyrm/templates/book/edit_book.html:223 msgid "ISBN 13:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:219 +#: bookwyrm/templates/book/edit_book.html:227 msgid "ISBN 10:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:223 +#: bookwyrm/templates/book/edit_book.html:231 #: bookwyrm/templates/edit_author.html:59 msgid "Openlibrary key:" msgstr "" @@ -577,7 +577,7 @@ msgstr "Veröffentlicht von %(publisher)s." #: bookwyrm/templates/feed/feed_layout.html:70 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 -#: bookwyrm/templates/search/book.html:39 +#: bookwyrm/templates/search/book.html:32 msgid "Close" msgstr "Schließen" @@ -1304,7 +1304,7 @@ msgstr "Abmelden" #: bookwyrm/templates/layout.html:134 bookwyrm/templates/layout.html:135 #: bookwyrm/templates/notifications.html:6 -#: bookwyrm/templates/notifications.html:10 +#: bookwyrm/templates/notifications.html:11 msgid "Notifications" msgstr "Benachrichtigungen" @@ -1422,6 +1422,7 @@ msgstr "Alle können Bücher vorschlagen, du kannst diese bestätigen" #: bookwyrm/templates/lists/form.html:31 #: bookwyrm/templates/moderation/reports.html:25 +#: bookwyrm/templates/search/book.html:30 msgid "Open" msgstr "Offen" @@ -1628,119 +1629,130 @@ msgstr "Ins Regal gestellt" msgid "No reports found." msgstr "Keine Bücher gefunden" -#: bookwyrm/templates/notifications.html:14 +#: bookwyrm/templates/notifications.html:16 msgid "Delete notifications" msgstr "Benachrichtigungen löschen" -#: bookwyrm/templates/notifications.html:53 +#: bookwyrm/templates/notifications.html:25 +msgid "All" +msgstr "" + +#: bookwyrm/templates/notifications.html:29 +#, fuzzy +#| msgid "More options" +msgid "Mentions" +msgstr "Mehr Optionen" + +#: bookwyrm/templates/notifications.html:70 #, python-format msgid "favorited your review of %(book_title)s" msgstr "hat deine Bewertung von %(book_title)s favorisiert" -#: bookwyrm/templates/notifications.html:55 +#: bookwyrm/templates/notifications.html:72 #, python-format msgid "favorited your comment on %(book_title)s" msgstr "hat deinen Kommentar zu %(book_title)s favorisiert" -#: bookwyrm/templates/notifications.html:57 +#: bookwyrm/templates/notifications.html:74 #, python-format msgid "favorited your quote from %(book_title)s" msgstr " hat dein Zitat aus %(book_title)s favorisiert" -#: bookwyrm/templates/notifications.html:59 +#: bookwyrm/templates/notifications.html:76 #, python-format msgid "favorited your status" msgstr "hat deinen Status favorisiert" -#: bookwyrm/templates/notifications.html:64 +#: bookwyrm/templates/notifications.html:81 #, python-format msgid "mentioned you in a review of %(book_title)s" msgstr "hat dich in einer Bewertung von %(book_title)s erwähnt" -#: bookwyrm/templates/notifications.html:66 +#: bookwyrm/templates/notifications.html:83 #, python-format msgid "mentioned you in a comment on %(book_title)s" msgstr "hat dich in einem Kommentar zu %(book_title)s erwähnt" -#: bookwyrm/templates/notifications.html:68 +#: bookwyrm/templates/notifications.html:85 #, python-format msgid "mentioned you in a quote from %(book_title)s" msgstr "hat dich in einem Zitat von %(book_title)s erwähnt" -#: bookwyrm/templates/notifications.html:70 +#: bookwyrm/templates/notifications.html:87 #, python-format msgid "mentioned you in a status" msgstr "hat dich in einem Status erwähnt" -#: bookwyrm/templates/notifications.html:75 +#: bookwyrm/templates/notifications.html:92 #, python-format msgid "replied to your review of %(book_title)s" msgstr "hat auf deine Bewertung von %(book_title)s geantwortet " -#: bookwyrm/templates/notifications.html:77 +#: bookwyrm/templates/notifications.html:94 #, python-format msgid "replied to your comment on %(book_title)s" msgstr "hat auf deinen Kommentar zu %(book_title)s geantwortet" -#: bookwyrm/templates/notifications.html:79 +#: bookwyrm/templates/notifications.html:96 #, python-format msgid "replied to your quote from %(book_title)s" msgstr "hat auf dein Zitat aus %(book_title)s geantwortet" -#: bookwyrm/templates/notifications.html:81 +#: bookwyrm/templates/notifications.html:98 #, python-format msgid "replied to your status" msgstr "hat auf deinen Status geantwortet" -#: bookwyrm/templates/notifications.html:85 +#: bookwyrm/templates/notifications.html:102 msgid "followed you" msgstr "folgt dir" -#: bookwyrm/templates/notifications.html:88 +#: bookwyrm/templates/notifications.html:105 msgid "sent you a follow request" msgstr "hat dir eine Folgeanfrage geschickt" -#: bookwyrm/templates/notifications.html:94 +#: bookwyrm/templates/notifications.html:111 #, python-format msgid "boosted your review of %(book_title)s" msgstr "hat deine Bewertung von %(book_title)s geteilt" -#: bookwyrm/templates/notifications.html:96 +#: bookwyrm/templates/notifications.html:113 #, python-format msgid "boosted your comment on%(book_title)s" msgstr "hat deinen Kommentar zu%(book_title)s geteilt" -#: bookwyrm/templates/notifications.html:98 +#: bookwyrm/templates/notifications.html:115 #, python-format msgid "boosted your quote from %(book_title)s" msgstr "hat dein Zitat aus %(book_title)s geteilt" -#: bookwyrm/templates/notifications.html:100 +#: bookwyrm/templates/notifications.html:117 #, python-format msgid "boosted your status" msgstr "hat deinen Status geteilt" -#: bookwyrm/templates/notifications.html:104 +#: bookwyrm/templates/notifications.html:121 #, python-format msgid " added %(book_title)s to your list \"%(list_name)s\"" msgstr "hat %(book_title)s zu deiner Liste \"%(list_name)s\" Hinzugefügt" -#: bookwyrm/templates/notifications.html:106 +#: bookwyrm/templates/notifications.html:123 #, python-format msgid " suggested adding %(book_title)s to your list \"%(list_name)s\"" msgstr "hat %(book_title)s für deine Liste \"%(list_name)s\" vorgeschlagen" -#: bookwyrm/templates/notifications.html:110 -#, python-format -msgid "Your import completed." +#: bookwyrm/templates/notifications.html:128 +#, fuzzy, python-format +#| msgid "Your import completed." +msgid "Your import completed." msgstr "Dein Import ist abgeschlossen." -#: bookwyrm/templates/notifications.html:113 +#: bookwyrm/templates/notifications.html:131 #, python-format msgid "A new report needs moderation." msgstr "Eine neue Meldung muss moderiert werden." -#: bookwyrm/templates/notifications.html:139 +#: bookwyrm/templates/notifications.html:157 msgid "You're all caught up!" msgstr "Du bist auf dem neusten Stand!" @@ -1759,7 +1771,7 @@ msgstr "Passwort zurücksetzen" #: bookwyrm/templates/preferences/blocks.html:4 #: bookwyrm/templates/preferences/blocks.html:7 -#: bookwyrm/templates/preferences/preferences_layout.html:23 +#: bookwyrm/templates/preferences/preferences_layout.html:26 msgid "Blocked Users" msgstr "Blockierte Nutzer*innen" @@ -1770,7 +1782,7 @@ msgstr "Momentan keine Nutzer*innen blockiert." #: bookwyrm/templates/preferences/change_password.html:4 #: bookwyrm/templates/preferences/change_password.html:7 #: bookwyrm/templates/preferences/change_password.html:21 -#: bookwyrm/templates/preferences/preferences_layout.html:17 +#: bookwyrm/templates/preferences/preferences_layout.html:19 msgid "Change Password" msgstr "Passwort ändern" @@ -1800,20 +1812,14 @@ msgstr "" msgid "Account" msgstr "" -#: bookwyrm/templates/preferences/preferences_layout.html:14 +#: bookwyrm/templates/preferences/preferences_layout.html:15 msgid "Profile" msgstr "Profil" -#: bookwyrm/templates/preferences/preferences_layout.html:20 +#: bookwyrm/templates/preferences/preferences_layout.html:22 msgid "Relationships" msgstr "Beziehungen" -#: bookwyrm/templates/search/book.html:30 -#, fuzzy -#| msgid "Show more" -msgid "Show" -msgstr "Mehr anzeigen" - #: bookwyrm/templates/search/book.html:64 #, fuzzy #| msgid "Show results from other catalogues" @@ -2353,13 +2359,13 @@ msgid "Progress:" msgstr "Fortschritt:" #: bookwyrm/templates/snippets/create_status_form.html:85 -#: bookwyrm/templates/snippets/readthrough_form.html:22 +#: bookwyrm/templates/snippets/readthrough_form.html:26 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30 msgid "pages" msgstr "Seiten" #: bookwyrm/templates/snippets/create_status_form.html:86 -#: bookwyrm/templates/snippets/readthrough_form.html:23 +#: bookwyrm/templates/snippets/readthrough_form.html:27 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31 msgid "percent" msgstr "Prozent" @@ -2499,8 +2505,8 @@ msgid "Goal privacy:" msgstr "Sichtbarkeit des Ziels" #: bookwyrm/templates/snippets/goal_form.html:26 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:37 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:29 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:45 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:33 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:20 msgid "Post to feed" msgstr "Posten" @@ -2613,12 +2619,12 @@ msgstr "Diese Lesedaten löschen" msgid "Started reading" msgstr "Zu lesen angefangen" -#: bookwyrm/templates/snippets/readthrough_form.html:14 +#: bookwyrm/templates/snippets/readthrough_form.html:18 msgid "Progress" msgstr "Fortschritt" -#: bookwyrm/templates/snippets/readthrough_form.html:30 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:25 +#: bookwyrm/templates/snippets/readthrough_form.html:34 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:29 msgid "Finished reading" msgstr "Lesen abgeschlossen" @@ -3014,6 +3020,11 @@ msgstr "Dieser Benutzename ist bereits vergeben." msgid "A password reset link sent to %s" msgstr "" +#, fuzzy +#~| msgid "Show more" +#~ msgid "Show" +#~ msgstr "Mehr anzeigen" + #, fuzzy #~| msgid "All messages" #~ msgid "Messages" diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index 07930197..dac6e253 100644 --- a/locale/en_US/LC_MESSAGES/django.po +++ b/locale/en_US/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-05-03 11:22-0700\n" +"POT-Creation-Date: 2021-05-10 13:23-0700\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -135,11 +135,11 @@ msgstr "" msgid "Edit Author" msgstr "" -#: bookwyrm/templates/author.html:32 +#: bookwyrm/templates/author.html:31 msgid "Wikipedia" msgstr "" -#: bookwyrm/templates/author.html:37 +#: bookwyrm/templates/author.html:36 #, python-format msgid "Books by %(name)s" msgstr "" @@ -189,32 +189,32 @@ msgid "Description:" msgstr "" #: bookwyrm/templates/book/book.html:127 -#: bookwyrm/templates/book/edit_book.html:241 +#: bookwyrm/templates/book/edit_book.html:249 #: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 #: bookwyrm/templates/preferences/edit_user.html:70 #: bookwyrm/templates/settings/edit_server.html:68 #: bookwyrm/templates/settings/federated_server.html:93 #: bookwyrm/templates/settings/site.html:97 #: 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:50 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:34 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:38 #: bookwyrm/templates/user_admin/user_moderation_actions.html:38 msgid "Save" msgstr "" #: bookwyrm/templates/book/book.html:128 bookwyrm/templates/book/book.html:180 #: bookwyrm/templates/book/cover_modal.html:32 -#: bookwyrm/templates/book/edit_book.html:242 +#: bookwyrm/templates/book/edit_book.html:250 #: bookwyrm/templates/edit_author.html:79 #: bookwyrm/templates/moderation/report_modal.html:34 #: bookwyrm/templates/settings/federated_server.html:94 #: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 #: bookwyrm/templates/snippets/goal_form.html:32 #: bookwyrm/templates/snippets/readthrough.html:78 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:43 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:51 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:35 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:39 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28 msgid "Cancel" msgstr "" @@ -301,22 +301,22 @@ msgid "ISBN:" msgstr "" #: bookwyrm/templates/book/book_identifiers.html:15 -#: bookwyrm/templates/book/edit_book.html:227 +#: bookwyrm/templates/book/edit_book.html:235 msgid "OCLC Number:" msgstr "" #: bookwyrm/templates/book/book_identifiers.html:22 -#: bookwyrm/templates/book/edit_book.html:231 +#: bookwyrm/templates/book/edit_book.html:239 msgid "ASIN:" msgstr "" #: bookwyrm/templates/book/cover_modal.html:17 -#: bookwyrm/templates/book/edit_book.html:179 +#: bookwyrm/templates/book/edit_book.html:187 msgid "Upload cover:" msgstr "" #: bookwyrm/templates/book/cover_modal.html:23 -#: bookwyrm/templates/book/edit_book.html:185 +#: bookwyrm/templates/book/edit_book.html:193 msgid "Load cover from url:" msgstr "" @@ -420,58 +420,58 @@ msgstr "" msgid "First published date:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:143 +#: bookwyrm/templates/book/edit_book.html:147 msgid "Published date:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:152 +#: bookwyrm/templates/book/edit_book.html:160 msgid "Authors" msgstr "" -#: bookwyrm/templates/book/edit_book.html:158 +#: bookwyrm/templates/book/edit_book.html:166 #, python-format msgid "Remove %(name)s" msgstr "" -#: bookwyrm/templates/book/edit_book.html:163 +#: bookwyrm/templates/book/edit_book.html:171 msgid "Add Authors:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:164 +#: bookwyrm/templates/book/edit_book.html:172 msgid "John Doe, Jane Smith" msgstr "" -#: bookwyrm/templates/book/edit_book.html:170 +#: bookwyrm/templates/book/edit_book.html:178 #: bookwyrm/templates/user/shelf/shelf.html:76 msgid "Cover" msgstr "" -#: bookwyrm/templates/book/edit_book.html:198 +#: bookwyrm/templates/book/edit_book.html:206 msgid "Physical Properties" msgstr "" -#: bookwyrm/templates/book/edit_book.html:199 +#: bookwyrm/templates/book/edit_book.html:207 #: bookwyrm/templates/book/format_filter.html:5 msgid "Format:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:207 +#: bookwyrm/templates/book/edit_book.html:215 msgid "Pages:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:214 +#: bookwyrm/templates/book/edit_book.html:222 msgid "Book Identifiers" msgstr "" -#: bookwyrm/templates/book/edit_book.html:215 +#: bookwyrm/templates/book/edit_book.html:223 msgid "ISBN 13:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:219 +#: bookwyrm/templates/book/edit_book.html:227 msgid "ISBN 10:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:223 +#: bookwyrm/templates/book/edit_book.html:231 #: bookwyrm/templates/edit_author.html:59 msgid "Openlibrary key:" msgstr "" @@ -535,7 +535,7 @@ msgstr "" #: bookwyrm/templates/feed/feed_layout.html:70 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 -#: bookwyrm/templates/search/book.html:39 +#: bookwyrm/templates/search/book.html:32 msgid "Close" msgstr "" @@ -1214,7 +1214,7 @@ msgstr "" #: bookwyrm/templates/layout.html:134 bookwyrm/templates/layout.html:135 #: bookwyrm/templates/notifications.html:6 -#: bookwyrm/templates/notifications.html:10 +#: bookwyrm/templates/notifications.html:11 msgid "Notifications" msgstr "" @@ -1328,6 +1328,7 @@ msgstr "" #: bookwyrm/templates/lists/form.html:31 #: bookwyrm/templates/moderation/reports.html:25 +#: bookwyrm/templates/search/book.html:30 msgid "Open" msgstr "" @@ -1507,119 +1508,127 @@ msgstr "" msgid "No reports found." msgstr "" -#: bookwyrm/templates/notifications.html:14 +#: bookwyrm/templates/notifications.html:16 msgid "Delete notifications" msgstr "" -#: bookwyrm/templates/notifications.html:53 -#, python-format -msgid "favorited your review of %(book_title)s" +#: bookwyrm/templates/notifications.html:25 +msgid "All" msgstr "" -#: bookwyrm/templates/notifications.html:55 -#, python-format -msgid "favorited your comment on %(book_title)s" -msgstr "" - -#: bookwyrm/templates/notifications.html:57 -#, python-format -msgid "favorited your quote from %(book_title)s" -msgstr "" - -#: bookwyrm/templates/notifications.html:59 -#, python-format -msgid "favorited your status" -msgstr "" - -#: bookwyrm/templates/notifications.html:64 -#, python-format -msgid "mentioned you in a review of %(book_title)s" -msgstr "" - -#: bookwyrm/templates/notifications.html:66 -#, python-format -msgid "mentioned you in a comment on %(book_title)s" -msgstr "" - -#: bookwyrm/templates/notifications.html:68 -#, python-format -msgid "mentioned you in a quote from %(book_title)s" +#: bookwyrm/templates/notifications.html:29 +msgid "Mentions" msgstr "" #: bookwyrm/templates/notifications.html:70 #, python-format -msgid "mentioned you in a status" +msgid "favorited your review of %(book_title)s" msgstr "" -#: bookwyrm/templates/notifications.html:75 +#: bookwyrm/templates/notifications.html:72 #, python-format -msgid "replied to your review of %(book_title)s" +msgid "favorited your comment on %(book_title)s" msgstr "" -#: bookwyrm/templates/notifications.html:77 +#: bookwyrm/templates/notifications.html:74 #, python-format -msgid "replied to your comment on %(book_title)s" +msgid "favorited your quote from %(book_title)s" msgstr "" -#: bookwyrm/templates/notifications.html:79 +#: bookwyrm/templates/notifications.html:76 #, python-format -msgid "replied to your quote from %(book_title)s" +msgid "favorited your status" msgstr "" #: bookwyrm/templates/notifications.html:81 #, python-format -msgid "replied to your status" +msgid "mentioned you in a review of %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications.html:83 +#, python-format +msgid "mentioned you in a comment on %(book_title)s" msgstr "" #: bookwyrm/templates/notifications.html:85 -msgid "followed you" +#, python-format +msgid "mentioned you in a quote from %(book_title)s" msgstr "" -#: bookwyrm/templates/notifications.html:88 -msgid "sent you a follow request" +#: bookwyrm/templates/notifications.html:87 +#, python-format +msgid "mentioned you in a status" +msgstr "" + +#: bookwyrm/templates/notifications.html:92 +#, python-format +msgid "replied to your review of %(book_title)s" msgstr "" #: bookwyrm/templates/notifications.html:94 #, python-format -msgid "boosted your review of %(book_title)s" +msgid "replied to your comment on %(book_title)s" msgstr "" #: bookwyrm/templates/notifications.html:96 #, python-format -msgid "boosted your comment on%(book_title)s" +msgid "replied to your quote from %(book_title)s" msgstr "" #: bookwyrm/templates/notifications.html:98 #, python-format -msgid "boosted your quote from %(book_title)s" +msgid "replied to your status" msgstr "" -#: bookwyrm/templates/notifications.html:100 -#, python-format -msgid "boosted your status" +#: bookwyrm/templates/notifications.html:102 +msgid "followed you" msgstr "" -#: bookwyrm/templates/notifications.html:104 -#, python-format -msgid " added %(book_title)s to your list \"%(list_name)s\"" +#: bookwyrm/templates/notifications.html:105 +msgid "sent you a follow request" msgstr "" -#: bookwyrm/templates/notifications.html:106 +#: bookwyrm/templates/notifications.html:111 #, python-format -msgid " suggested adding %(book_title)s to your list \"%(list_name)s\"" -msgstr "" - -#: bookwyrm/templates/notifications.html:110 -#, python-format -msgid "Your import completed." +msgid "boosted your review of %(book_title)s" msgstr "" #: bookwyrm/templates/notifications.html:113 #, python-format +msgid "boosted your comment on%(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications.html:115 +#, python-format +msgid "boosted your quote from %(book_title)s" +msgstr "" + +#: bookwyrm/templates/notifications.html:117 +#, python-format +msgid "boosted your status" +msgstr "" + +#: bookwyrm/templates/notifications.html:121 +#, python-format +msgid " added %(book_title)s to your list \"%(list_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications.html:123 +#, python-format +msgid " suggested adding %(book_title)s to your list \"%(list_name)s\"" +msgstr "" + +#: bookwyrm/templates/notifications.html:128 +#, python-format +msgid "Your import completed." +msgstr "" + +#: bookwyrm/templates/notifications.html:131 +#, python-format msgid "A new report needs moderation." msgstr "" -#: bookwyrm/templates/notifications.html:139 +#: bookwyrm/templates/notifications.html:157 msgid "You're all caught up!" msgstr "" @@ -1638,7 +1647,7 @@ msgstr "" #: bookwyrm/templates/preferences/blocks.html:4 #: bookwyrm/templates/preferences/blocks.html:7 -#: bookwyrm/templates/preferences/preferences_layout.html:23 +#: bookwyrm/templates/preferences/preferences_layout.html:26 msgid "Blocked Users" msgstr "" @@ -1649,7 +1658,7 @@ msgstr "" #: bookwyrm/templates/preferences/change_password.html:4 #: bookwyrm/templates/preferences/change_password.html:7 #: bookwyrm/templates/preferences/change_password.html:21 -#: bookwyrm/templates/preferences/preferences_layout.html:17 +#: bookwyrm/templates/preferences/preferences_layout.html:19 msgid "Change Password" msgstr "" @@ -1679,18 +1688,14 @@ msgstr "" msgid "Account" msgstr "" -#: bookwyrm/templates/preferences/preferences_layout.html:14 +#: bookwyrm/templates/preferences/preferences_layout.html:15 msgid "Profile" msgstr "" -#: bookwyrm/templates/preferences/preferences_layout.html:20 +#: bookwyrm/templates/preferences/preferences_layout.html:22 msgid "Relationships" msgstr "" -#: bookwyrm/templates/search/book.html:30 -msgid "Show" -msgstr "" - #: bookwyrm/templates/search/book.html:64 msgid "Load results from other catalogues" msgstr "" @@ -2159,13 +2164,13 @@ msgid "Progress:" msgstr "" #: bookwyrm/templates/snippets/create_status_form.html:85 -#: bookwyrm/templates/snippets/readthrough_form.html:22 +#: bookwyrm/templates/snippets/readthrough_form.html:26 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30 msgid "pages" msgstr "" #: bookwyrm/templates/snippets/create_status_form.html:86 -#: bookwyrm/templates/snippets/readthrough_form.html:23 +#: bookwyrm/templates/snippets/readthrough_form.html:27 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31 msgid "percent" msgstr "" @@ -2296,8 +2301,8 @@ msgid "Goal privacy:" msgstr "" #: bookwyrm/templates/snippets/goal_form.html:26 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:37 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:29 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:45 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:33 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:20 msgid "Post to feed" msgstr "" @@ -2408,12 +2413,12 @@ msgstr "" msgid "Started reading" msgstr "" -#: bookwyrm/templates/snippets/readthrough_form.html:14 +#: bookwyrm/templates/snippets/readthrough_form.html:18 msgid "Progress" msgstr "" -#: bookwyrm/templates/snippets/readthrough_form.html:30 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:25 +#: bookwyrm/templates/snippets/readthrough_form.html:34 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:29 msgid "Finished reading" msgstr "" diff --git a/locale/es/LC_MESSAGES/django.mo b/locale/es/LC_MESSAGES/django.mo index 1fb1ae530173b3a63652ee8d1e2face2a044ffc5..a814aa0f567a3f3018e2f7eda9ea4d8cc7b331f6 100644 GIT binary patch delta 13595 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 O_<{5vd27 diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po index 899ff19f..864c9dbb 100644 --- a/locale/es/LC_MESSAGES/django.po +++ b/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-05-03 11:22-0700\n" +"POT-Creation-Date: 2021-05-10 13:23-0700\n" "PO-Revision-Date: 2021-03-19 11:49+0800\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -135,11 +135,11 @@ msgstr "¡Algo salió mal! Disculpa." msgid "Edit Author" msgstr "Editar Autor/Autora" -#: bookwyrm/templates/author.html:32 +#: bookwyrm/templates/author.html:31 msgid "Wikipedia" msgstr "Wikipedia" -#: bookwyrm/templates/author.html:37 +#: bookwyrm/templates/author.html:36 #, python-format msgid "Books by %(name)s" msgstr "Libros de %(name)s" @@ -191,32 +191,32 @@ msgid "Description:" msgstr "Descripción:" #: bookwyrm/templates/book/book.html:127 -#: bookwyrm/templates/book/edit_book.html:241 +#: bookwyrm/templates/book/edit_book.html:249 #: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 #: bookwyrm/templates/preferences/edit_user.html:70 #: bookwyrm/templates/settings/edit_server.html:68 #: bookwyrm/templates/settings/federated_server.html:93 #: bookwyrm/templates/settings/site.html:97 #: 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:50 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:34 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:38 #: bookwyrm/templates/user_admin/user_moderation_actions.html:38 msgid "Save" msgstr "Guardar" #: bookwyrm/templates/book/book.html:128 bookwyrm/templates/book/book.html:180 #: bookwyrm/templates/book/cover_modal.html:32 -#: bookwyrm/templates/book/edit_book.html:242 +#: bookwyrm/templates/book/edit_book.html:250 #: bookwyrm/templates/edit_author.html:79 #: bookwyrm/templates/moderation/report_modal.html:34 #: bookwyrm/templates/settings/federated_server.html:94 #: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 #: bookwyrm/templates/snippets/goal_form.html:32 #: bookwyrm/templates/snippets/readthrough.html:78 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:43 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:51 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:35 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:39 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28 msgid "Cancel" msgstr "Cancelar" @@ -311,22 +311,22 @@ msgid "ISBN:" msgstr "ISBN:" #: bookwyrm/templates/book/book_identifiers.html:15 -#: bookwyrm/templates/book/edit_book.html:227 +#: bookwyrm/templates/book/edit_book.html:235 msgid "OCLC Number:" msgstr "Número OCLC:" #: bookwyrm/templates/book/book_identifiers.html:22 -#: bookwyrm/templates/book/edit_book.html:231 +#: bookwyrm/templates/book/edit_book.html:239 msgid "ASIN:" msgstr "ASIN:" #: bookwyrm/templates/book/cover_modal.html:17 -#: bookwyrm/templates/book/edit_book.html:179 +#: bookwyrm/templates/book/edit_book.html:187 msgid "Upload cover:" msgstr "Subir portada:" #: bookwyrm/templates/book/cover_modal.html:23 -#: bookwyrm/templates/book/edit_book.html:185 +#: bookwyrm/templates/book/edit_book.html:193 msgid "Load cover from url:" msgstr "Agregar portada de url:" @@ -430,58 +430,58 @@ msgstr "Separar varios editores con comas." msgid "First published date:" msgstr "Fecha de primera publicación:" -#: bookwyrm/templates/book/edit_book.html:143 +#: bookwyrm/templates/book/edit_book.html:147 msgid "Published date:" msgstr "Fecha de publicación:" -#: bookwyrm/templates/book/edit_book.html:152 +#: bookwyrm/templates/book/edit_book.html:160 msgid "Authors" msgstr "Autores" -#: bookwyrm/templates/book/edit_book.html:158 +#: bookwyrm/templates/book/edit_book.html:166 #, python-format msgid "Remove %(name)s" msgstr "Eliminar %(name)s" -#: bookwyrm/templates/book/edit_book.html:163 +#: bookwyrm/templates/book/edit_book.html:171 msgid "Add Authors:" msgstr "Agregar Autores:" -#: bookwyrm/templates/book/edit_book.html:164 +#: bookwyrm/templates/book/edit_book.html:172 msgid "John Doe, Jane Smith" msgstr "Juan Nadie, Natalia Natalia" -#: bookwyrm/templates/book/edit_book.html:170 +#: bookwyrm/templates/book/edit_book.html:178 #: bookwyrm/templates/user/shelf/shelf.html:76 msgid "Cover" msgstr "Portada:" -#: bookwyrm/templates/book/edit_book.html:198 +#: bookwyrm/templates/book/edit_book.html:206 msgid "Physical Properties" msgstr "Propiedades físicas:" -#: bookwyrm/templates/book/edit_book.html:199 +#: bookwyrm/templates/book/edit_book.html:207 #: bookwyrm/templates/book/format_filter.html:5 msgid "Format:" msgstr "Formato:" -#: bookwyrm/templates/book/edit_book.html:207 +#: bookwyrm/templates/book/edit_book.html:215 msgid "Pages:" msgstr "Páginas:" -#: bookwyrm/templates/book/edit_book.html:214 +#: bookwyrm/templates/book/edit_book.html:222 msgid "Book Identifiers" msgstr "Identificadores de libro" -#: bookwyrm/templates/book/edit_book.html:215 +#: bookwyrm/templates/book/edit_book.html:223 msgid "ISBN 13:" msgstr "ISBN 13:" -#: bookwyrm/templates/book/edit_book.html:219 +#: bookwyrm/templates/book/edit_book.html:227 msgid "ISBN 10:" msgstr "ISBN 10:" -#: bookwyrm/templates/book/edit_book.html:223 +#: bookwyrm/templates/book/edit_book.html:231 #: bookwyrm/templates/edit_author.html:59 msgid "Openlibrary key:" msgstr "Clave OpenLibrary:" @@ -545,7 +545,7 @@ msgstr "Publicado por %(publisher)s." #: bookwyrm/templates/feed/feed_layout.html:70 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 -#: bookwyrm/templates/search/book.html:39 +#: bookwyrm/templates/search/book.html:32 msgid "Close" msgstr "Cerrar" @@ -1224,7 +1224,7 @@ msgstr "Cerrar sesión" #: bookwyrm/templates/layout.html:134 bookwyrm/templates/layout.html:135 #: bookwyrm/templates/notifications.html:6 -#: bookwyrm/templates/notifications.html:10 +#: bookwyrm/templates/notifications.html:11 msgid "Notifications" msgstr "Notificaciones" @@ -1340,6 +1340,7 @@ msgstr "Cualquier usuario puede sugerir libros, en cuanto lo hayas aprobado" #: bookwyrm/templates/lists/form.html:31 #: bookwyrm/templates/moderation/reports.html:25 +#: bookwyrm/templates/search/book.html:30 msgid "Open" msgstr "Abierto" @@ -1521,119 +1522,130 @@ msgstr "Resuelto" msgid "No reports found." msgstr "No se encontró ningún informe." -#: bookwyrm/templates/notifications.html:14 +#: bookwyrm/templates/notifications.html:16 msgid "Delete notifications" msgstr "Borrar notificaciones" -#: bookwyrm/templates/notifications.html:53 +#: bookwyrm/templates/notifications.html:25 +msgid "All" +msgstr "" + +#: bookwyrm/templates/notifications.html:29 +#, fuzzy +#| msgid "More options" +msgid "Mentions" +msgstr "Más opciones" + +#: bookwyrm/templates/notifications.html:70 #, python-format msgid "favorited your review of %(book_title)s" msgstr "le gustó tu reseña de %(book_title)s" -#: bookwyrm/templates/notifications.html:55 +#: bookwyrm/templates/notifications.html:72 #, python-format msgid "favorited your comment on %(book_title)s" msgstr "le gustó tu comentario en %(book_title)s" -#: bookwyrm/templates/notifications.html:57 +#: bookwyrm/templates/notifications.html:74 #, python-format msgid "favorited your quote from %(book_title)s" msgstr "le gustó tu cita de %(book_title)s" -#: bookwyrm/templates/notifications.html:59 +#: bookwyrm/templates/notifications.html:76 #, python-format msgid "favorited your status" msgstr "le gustó tu status" -#: bookwyrm/templates/notifications.html:64 +#: bookwyrm/templates/notifications.html:81 #, python-format msgid "mentioned you in a review of %(book_title)s" msgstr "te mencionó en una reseña de %(book_title)s" -#: bookwyrm/templates/notifications.html:66 +#: bookwyrm/templates/notifications.html:83 #, python-format msgid "mentioned you in a comment on %(book_title)s" msgstr "te mencionó en un comentario de %(book_title)s" -#: bookwyrm/templates/notifications.html:68 +#: bookwyrm/templates/notifications.html:85 #, python-format msgid "mentioned you in a quote from %(book_title)s" msgstr "te mencionó en una cita de %(book_title)s" -#: bookwyrm/templates/notifications.html:70 +#: bookwyrm/templates/notifications.html:87 #, python-format msgid "mentioned you in a status" msgstr "te mencionó en un status" -#: bookwyrm/templates/notifications.html:75 +#: bookwyrm/templates/notifications.html:92 #, python-format msgid "replied to your review of %(book_title)s" msgstr "respondió a tu reseña de %(book_title)s" -#: bookwyrm/templates/notifications.html:77 +#: bookwyrm/templates/notifications.html:94 #, python-format msgid "replied to your comment on %(book_title)s" msgstr "respondió a tu comentario en %(book_title)s" -#: bookwyrm/templates/notifications.html:79 +#: bookwyrm/templates/notifications.html:96 #, python-format msgid "replied to your quote from %(book_title)s" msgstr "respondió a tu cita de %(book_title)s" -#: bookwyrm/templates/notifications.html:81 +#: bookwyrm/templates/notifications.html:98 #, python-format msgid "replied to your status" msgstr "respondió a tu status" -#: bookwyrm/templates/notifications.html:85 +#: bookwyrm/templates/notifications.html:102 msgid "followed you" msgstr "te siguió" -#: bookwyrm/templates/notifications.html:88 +#: bookwyrm/templates/notifications.html:105 msgid "sent you a follow request" msgstr "te quiere seguir" -#: bookwyrm/templates/notifications.html:94 +#: bookwyrm/templates/notifications.html:111 #, python-format msgid "boosted your review of %(book_title)s" msgstr "respaldó tu reseña de %(book_title)s" -#: bookwyrm/templates/notifications.html:96 +#: bookwyrm/templates/notifications.html:113 #, python-format msgid "boosted your comment on%(book_title)s" msgstr "respaldó tu comentario en%(book_title)s" -#: bookwyrm/templates/notifications.html:98 +#: bookwyrm/templates/notifications.html:115 #, python-format msgid "boosted your quote from %(book_title)s" msgstr "respaldó tucita de %(book_title)s" -#: bookwyrm/templates/notifications.html:100 +#: bookwyrm/templates/notifications.html:117 #, python-format msgid "boosted your status" msgstr "respaldó tu status" -#: bookwyrm/templates/notifications.html:104 +#: bookwyrm/templates/notifications.html:121 #, python-format msgid " added %(book_title)s to your list \"%(list_name)s\"" msgstr " agregó %(book_title)s a tu lista \"%(list_name)s\"" -#: bookwyrm/templates/notifications.html:106 +#: bookwyrm/templates/notifications.html:123 #, python-format msgid " suggested adding %(book_title)s to your list \"%(list_name)s\"" msgstr " sugirió agregar %(book_title)s a tu lista \"%(list_name)s\"" -#: bookwyrm/templates/notifications.html:110 -#, python-format -msgid "Your import completed." +#: bookwyrm/templates/notifications.html:128 +#, fuzzy, python-format +#| msgid "Your import completed." +msgid "Your import completed." msgstr "Tu importación ha terminado." -#: bookwyrm/templates/notifications.html:113 +#: bookwyrm/templates/notifications.html:131 #, python-format msgid "A new report needs moderation." msgstr "Un informe nuevo se requiere moderación." -#: bookwyrm/templates/notifications.html:139 +#: bookwyrm/templates/notifications.html:157 msgid "You're all caught up!" msgstr "¡Estás al día!" @@ -1652,7 +1664,7 @@ msgstr "Restablecer contraseña" #: bookwyrm/templates/preferences/blocks.html:4 #: bookwyrm/templates/preferences/blocks.html:7 -#: bookwyrm/templates/preferences/preferences_layout.html:23 +#: bookwyrm/templates/preferences/preferences_layout.html:26 msgid "Blocked Users" msgstr "Usuarios bloqueados" @@ -1663,7 +1675,7 @@ msgstr "No hay ningún usuario bloqueado actualmente." #: bookwyrm/templates/preferences/change_password.html:4 #: bookwyrm/templates/preferences/change_password.html:7 #: bookwyrm/templates/preferences/change_password.html:21 -#: bookwyrm/templates/preferences/preferences_layout.html:17 +#: bookwyrm/templates/preferences/preferences_layout.html:19 msgid "Change Password" msgstr "Cambiar contraseña" @@ -1693,20 +1705,14 @@ msgstr "Huso horario preferido" msgid "Account" msgstr "Cuenta" -#: bookwyrm/templates/preferences/preferences_layout.html:14 +#: bookwyrm/templates/preferences/preferences_layout.html:15 msgid "Profile" msgstr "Perfil" -#: bookwyrm/templates/preferences/preferences_layout.html:20 +#: bookwyrm/templates/preferences/preferences_layout.html:22 msgid "Relationships" msgstr "Relaciones" -#: bookwyrm/templates/search/book.html:30 -#, fuzzy -#| msgid "Show more" -msgid "Show" -msgstr "Mostrar más" - #: bookwyrm/templates/search/book.html:64 #, fuzzy #| msgid "Show results from other catalogues" @@ -2188,13 +2194,13 @@ msgid "Progress:" msgstr "Progreso:" #: bookwyrm/templates/snippets/create_status_form.html:85 -#: bookwyrm/templates/snippets/readthrough_form.html:22 +#: bookwyrm/templates/snippets/readthrough_form.html:26 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30 msgid "pages" msgstr "páginas" #: bookwyrm/templates/snippets/create_status_form.html:86 -#: bookwyrm/templates/snippets/readthrough_form.html:23 +#: bookwyrm/templates/snippets/readthrough_form.html:27 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31 msgid "percent" msgstr "por ciento" @@ -2327,8 +2333,8 @@ msgid "Goal privacy:" msgstr "Privacidad de meta:" #: bookwyrm/templates/snippets/goal_form.html:26 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:37 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:29 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:45 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:33 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:20 msgid "Post to feed" msgstr "Compartir con tu feed" @@ -2440,12 +2446,12 @@ msgstr "Eliminar estas fechas de lectura" msgid "Started reading" msgstr "Lectura se empezó" -#: bookwyrm/templates/snippets/readthrough_form.html:14 +#: bookwyrm/templates/snippets/readthrough_form.html:18 msgid "Progress" msgstr "Progreso" -#: bookwyrm/templates/snippets/readthrough_form.html:30 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:25 +#: bookwyrm/templates/snippets/readthrough_form.html:34 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:29 msgid "Finished reading" msgstr "Lectura se terminó" @@ -2808,6 +2814,11 @@ msgstr "No se pudo encontrar un usuario con esa dirección de correo electrónic msgid "A password reset link sent to %s" msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" +#, fuzzy +#~| msgid "Show more" +#~ msgid "Show" +#~ msgstr "Mostrar más" + #, python-format #~ msgid "ambiguous option: %(option)s could match %(matches)s" #~ msgstr "opción ambiguo: %(option)s pudiera coincidir con %(matches)s" diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index b88e6e3e553d7ff3d88570f27eff191e6a57ad71..a822eea4aef7397e08897d9ac41908c8d5b8d58d 100644 GIT binary patch delta 11811 zcmZA52Yk-g9>?*&h=|CLiG&QX5)vyxtXL6y6RSn-+N-r6v9}UxREHMTQY(~J(bg!} zs!`ffRYj@NQnMBA=lh(K`|`T~*Zp~)-}#^a`JeSXPj1g1@c4JHhwD<1=Te6&#=~)n zVaY(pIZwHK3Dr8ztOUmyiL-G!=Ab`LO>~@iT#TW(2Yv7iM&Kn3!+)?Y23ByKir5wd za4Hsd9G8Zp5MZvs;(rw4!zh75lIqCRTBraX1C*Vh(C1b?7x2J76@<#W>uE8t6I9hdCIG zd1)Moh0zP+&>JgaeoRq4?|16iipHuSZ;fi0fqAh9`eJWeKO75?kHY|*X7eT1chH~u z^;i&hB9nFYqxye<8t7AWsbi0-=79iI$C0Rx%cAaA$1qGo&8!>h1;bDSbfLClDr$+> zq91;bn(1}ai|=3%K0vkiuEzeWL3}mSurhj**T5o}iW*2K)QkJu`x8(z%S6p&KI(;8 zsDZ6U^|J*F;STJKhj0c)S2yiGtj_wYgHNf@UVVX@@d?z3FQ5i+1@(e^_Pp7TSs z3r4jIN4+o}HL;qgt!#i=+2*JLcC`2VxG3nwgRRPSs1~7?YBy?tCr~dsiyFuU)C$~0 z4fp}7ACDTQJ_J=Cjas<`^RG}Hokz{&8mgoFsQX^^O#5P}6)KN0n1p4pBkI#I2{q9y7X@{=9QERLs26U= zuDB1iLJ{@N$V;K_SHhN952Nr6)PT022DA?~(^IGy{bcW7L9O6j)KYMHLBlBsEOV-x}1j;bjqKj zItXfL{tzjH>Y$;u4QeG`Mh&1pYUPHYCr&`kJQLMl7V3rTFcNoQ0-i+;z#~oV+5dtR z)Nyfl1^Z-8L9IYD)W9+@9tWXjv<%g8HtPA)s1>@18rW6T1n$}T=cso18<_zFVj}N% z!YSm#Cg_Q+P~V8{QJ>$zs1Z*>FPw?$XaTy<4r=D>P>SpEIa_|3D4suJswZ z+Rzq6V}Az3>Cn7JQ5)aSv+6uAusThWcLc zZ_N5@=0zKu2cu9Omqv}a0xrfRRL9?7emsF1=s8roYp9w1j#`mNHqY0@v( zP-o&2YGU_L?|Fhcye{wNX2fMsOOj&qcIZRi2i3taEQr%k9lwEbxD?glK6Gyl`jVeR zwf_|db;xqi4-2(41Bpbv zC;`<^RV;&bu^jeCy>AJ+KmThfsKcG;kNZ%Ep4?;hE{zp+z!zmbm^H3|X3f199*crE>2IAY=3^W|W$m38; zT^H59ImTlLOu)&=v2iw8pI{<+!#1pcLkc4)@VA(=3w7GRMJ??$EQXJfp9v?lt-0R` zbv6d0J{4n7D=`T*v+1aT%tuY^P1G5B&(?3Z^?TZ~|7!RR6#@7yYUY=1!`rA1AEJ8; zP%rjvXY#_R_N7oSs*LKdmd(>p18jvFUV|4Jr5)?9!dxl>aS8h4I@Dh6z+gOz zy8knl#=EE&7in(>SPJ#&NkBc9jvDYwsDTYcO>i`_`p$Gr#&a$T%_;bH;Fk?MV`bch zI()Zq92V?oI-Y^*XccNE8&MseM(uHIh8ge>)BvZTR%{`Tz?G=KEBrc{de;C7p;U~* zc$|Y;vK^?U-;FJBKk@-^0y&Awd!Poo2|e%^)C;eo26We2zYEJxo`p&HD{94yFbdkc zoEQpasYpbf;tZ^dy^zIm)>xk)tM0VyX8!DcAA`s*pqBa$M&nb|1d6|8UKER(NO@F! z66!3}aOdoQJqj98Ix;w?waqu68g9p;xEp)mcc>1lvR`_x4mQif^O#AV)tx`*FtmsH zcy2;{+zw)4ypQff+>>8L-tQEqpe?9^1F;EK!X2o+{td(N5o$$(UNL*$58IN@M}4zh z#uDh;%e=S(s=g6w03$F0S7S-sgRbfnu29h4NAxxwH^M69gK!MKhoi7)AL9b#965RW z@^y_}QHS^{Y9f{TF$qjZ^|J`I#RpLXx`SG|@c!(-W)|DuEKMEMjgF|p)E&KWkaZ;H zCm)B}%PFXj*DPDV7-Pv-VjrosPBjS7>8c3n!{KTRo@1^u@~z8AZ&zhx+rMLe!>FyH|l{L zEQJ9B&5|W!FnLe(!O^IdnT(M*6E%=^sDbW9t<)t{|JQB)6tyy*gG{|El!9hh&Q?@H z4ziPuI>qZy52Ow@FKmq(NCs+Y2cljy2{nKj_WnDliEKj+^Z=^eQB;3tFhrmKs}u@S z@dUM``G%N06!n4_)XF4bX{>|Au@6?msaO(sqgLiJ>V>yZGrxy=q4!Yp<5d)uC%R?- zQ|*n`sG0S_S~wOf;HQ|5*HHsW9A-MGj+${3)M4t0{x}9T@R`UAot3tJGphf+Hb0F8 zc)#-t1?}}M)aNsBxal|n^*|bGk2|A2-(ygR_ALy+U8uu#7z^PkOu;Ltl`S^HEPYwj zz$&8JH9(g-Xip&qd!t@71GUs^F%XYgFIoS>AnH9vnwf{9^75#GrP}&#s0oe4dbkjE z)=r`NJwKBD*B;%ZLWkoyY7g`CZKI_O!eER+txz&*MqN=`(a+u=j^)XxqqbrjYCuP@ z2wp_3&;yLeXQ+PTMzj99QG2x6t464m=!$yLMARP7MvZtis^e^X{}Ad0r_m2@q1r#O z^?|RM3B{uZoQzt5RMdOYTog3(eyA4=MV;avPpAy#@3TpTxs^ec#zjlvM0}A8^Kr@WB)Ib-yo$<08~nY(%}_G`hDC)!!r3*7!^^0}VnApq$N<(4`JqP|$-TQ6Hn3 zSRJ>c&cJPZ|2gWA1vBahj6w~hChFtb5jF5WSOdqSPWh*pfZwB@_nK@Bn#}rZW|35A z2IWyBu5C?2J4I8Iks~ zCl#7eKUBw4Q8Sy1F}Mzk;$hStUqS8tpI8jNrp29$)_(=^msXpib}KC1mPn}3LL}S<;vuS?{|u8ySgT+a>YJek=t8}CHfrFDZGIHj zlApyC95++_vH#mCXpg=^oq^-14sN1ed=E8ZpIK(fYGNdL3)IJKkky4cBa2aoYa^=P z{ixG_61BBC=z~ROa~OHQ6H7r$or0sWF={3DqB=NU9%`$0VF5gh+M?6e>*&&h|4`7<=ACPnybvan*GA1~B z{0TL%0`trZBT*l>vgn0%&S$sMCBL zeenWz!y8xv)8?D+{Qjt|osa7GBh*0l&S(A0Q#e9JLwty7SaX5-zgC&3!*v#0p!Y(v zhaIst`Eb;WHlsdfr?D&EM{QZ_H;e-?ANds21ZSZpzSu=UBUy<7xE9sX4%C@Aj|K5M zs@*-*;mbj7NwG!dxfJvxZ-P2x8K~z+p!PfywFOIU{VG&@*9HoK6h1?Z=qT!iXD}Xr zMh(nou^D+d29lRVEoD{I(l)bsKh%pSU?rT3dVUXT=EqSJJdZr@a-L8KqQXDRG>Acs ztQ{y4`46`tTKNw#iE`cirw&(HSulpUsC3x+8;x$ z>}4#2chIF%8TO7@fnul^#@W0w>P)0s(@|%m6~2sJu?T*SdhQIy;YI9(UhkSM?T$J# z127Njx@`)joj*wqk<2A}Q{GOLr2HSEHlgc>te7&vt^<@}so?;)kJwI(=0~k07A8L6 z-XKE9Hh}ss@S@6urs>DM9Yj0gbK-UC9^f_1z4DURASsRB^ih~#ne^Y_%vV)!Zqy`n zeS|t0y6#ZkN!+#fX5&!mhZDiJj_Er)h&n{>^*8r^w#g4TlSm@8Q9Za{cGgF29I+1&owT0&B zPrV=Sy~F$6*AXg0iKk>PJVA`4{2z1MxkTQIh$3FRnvx%(qC2sf^56KxwwXxzM?zNz z>b@qPnbiH^R?)S^RvfSo&9{!Qp2vg4r?eYGT(tGc_PPH@Ur+h~@1xyudvh7(KZv5_ zd|utx2!qQxOkpo^fmmWY_q0y6KDG|S-_3(gC0qA1E+xhhMTw2vpMx(ElWkk^Ci#c> z4tBwhiNV_cQ1-!>BnbPUt|l~ki^wECCc0AB*nNlnr(N!q!o3qDRfyBXHX?#LUF8Tb z%Fk_ngZz8S4T(bZ5vKaw{U1!yid@$+q5=^~qYrQ`_eNn1?#Fh7u4Y7iB9Ul7e5MY$ zx?wgkfyhT(AqJUS?tj~m>sp1bSNZ1_QOH&n#F@m8HaAWA9wl!}^rNCHHXsHPf7u3m za3lFI#91PS!RMf^a|WlL&6WO6`LgC8O`#Og$=>wA@%Dj7$oI0-gXlv2XyP-<4+vfV zlGnps#4sX+m+qmi2%*c9ycG7a`C%MM#8USr(JPN#|8x>vb-2kh|GV;%+#;(>=iNDD2q5IPNt5fkSkxaaJ6(af9R?NZ< zL}%J8!q?C}cGRzeuHlqh6S-Fr2DOqr&emlVt?|_ZT=FLAsQ0lw$7XTz6?H!m`J%Ip=++e{qLvL9U}@TXtxEMY5%8FSVw$A z>?Qb}b*2(?h%on~{D)X;TTCJTq}^*6W9yHT7pELWl%?!#>%YWu+Qe95F?H$0 zau@$hCdL!*6Z&h;lc+}MnnK+YQ*>UZoO_+2ypTwA9^yM<8?l;bVIQnZ zxhLf}P?u{Lg)E|&$(?U0&!_wpYvE%ejO9uq*L4cNHbwWpmu&ec_4#Nw`-OWdzE8Z& zy%M;X_?{R*UK+b={~J+QNK_?`5(VibfCjqO8Js}n)MvtJ$|Z=qlot@&DYqa#A?VGqVFjX%y&)3F`x3gQ;cASqBmaZ)JnG65 z?TL?+6WPQf@?yk`R}jfcqAsz5d#5n3{SI^9Akh^_!J9%Z4_kRHd|9zhT delta 12399 zcma*td3?=R{>SkzvPU*ckdRynAt7R|olt85)t1&&8B9B`_dO@ShrfQ0`99{8=Q-zlzGwg5d(F(9y%oRwsG{d= z6`$n}SHp^qQyYgxIL-yqYvWW(c@xJe!bF^d>o64KQyeD=n`3o+6oaq`qj5S$;%ZFA zUDy<_V;IJhso^*trv-^L3i@Cjd=3ZTo0x#X%}jZ7tVTW^H8wZa#d)X!Y{go*4_o3X zqys0cx#QHs2FQP$H2xHz$E(M2u93*6V0a71>5re|6pW*lR9uIe$yscLH_(NR$RuJK zYM>L)7uR7`+=LPM7W&~K48UXPkKd@A{+;u-;IazH|Awk~6Dy%}pW{>pA5?h+24WOy zDeKvMOKT_87WKkl9E>c6lZ9%3IclJ5(W8bplF$P?Pz~=zHGB|t|0G7@kEog5Mb!^) zZ3Y;N+KPD85_iWCoP?U`TvW%4u?j9n)!*Ej{a1xgZN=m0L;e)j#P3i8xrORDppCg- z8#S}KsF@_AI&6U&SQk_~=@^a!@ev%2b8#Q4UeC6yzZw|S*6h_V)Qs~{Bc6&Hz${b; z%k2FPsOPq$>Xo7Dy^HGbQ`E%1MQzyy)XM&X>iAE4-`CU5bR1%hMIEYUsHGZ;>L?%8 zQ88*DQ&B50A2s0RsKd6=mhZOZ`%o))1o@A1o+P#x^C<%cnf{8y*}{f^qIq)ujqnxf7^XVgT}tq)sAV5r{z91>chiKxS} z2sN|is3lyFIt#l{d-)OSbe}}cNmM{QA+&ZfP(sDUJ*R-!$seg=9pqlZbT zqa0Lz3TglgPz^n6^P6mbJF21gP%}G@YVZ_l0_RZ!y<*G%Lan54s@a-wRJ$>$tbZL6 z$rPx=KByTDM197OM9p*#YEKuSI(W|d0&2;(VlUi@8pywq!^H=I$=9^TqS{YDwb!DH z#~g|-6lewdqE=uy*1`f*hx4t=?EN*U6?hfZ&^*mwXI1 zz*G+j?R^evrqfUj&O&v(1l7PQ9Ew{|E9HB?8F(1#el$LajW8Ccpa!%WHJ~l1)4vDR z&jEYi^BD;(;kT$gJC7RB4O<@6%`_B_Y9JQ1#EnpU-yHRPJ9|IX=F?E^^g}+qoov+7 zuSdP++mHczoP#Fee2tp%Me8-xslSD4D7d@%f#O0n)Y19?YDEU4FJ_`vFdKca1hoQF zQ0*;3t;~9i(fj`ziDU|npayWqdxM92mDA1DKMl~GS+k9Xopl03-^6r;p>Lkgtwfk?yF04)&1HjE1AOA_p7bOwFs)S>iw$e4tBJ{@)F9>x$Hi=le|CzDWz^H2>g#Rj+r8{vLb z$JbCR;iQ`et6(VEC=A0yjK#L74jw^uoNezHpjOyp%jaT%-v7n+#!A!xp4ScBj5-6m zPz@bGHGC9R?+mKrOQ;pOiF(c_!~EI}LDkPj4YUOHGk!K|tJa`L54=Jm33p;Lev2Gj zC$OJ!05&1N9=qY^sIS+m{mtobgjL9=Vr}e?d`~&!?fo*;SviP$Oa6&kiEsL|{+ii2 z3N(<*sG0qaRq>834;x_0YohAKp=RC)HS_kiycepy4D@aRs^e^%FGSU!f$Hb!0j$3o zTxkn7phmbAHNu^!!}J!a-Wlsfj39pvwX_umnym^)4LkvLza1uE8mi+W)BtCo-llmT z64gm;M2+}u)W|+T&F~nqtLGvwnjQkxv?C{yjehwFNs+_20&Z_%Z4w=?t@X3{#v{KP=i&8i)?cT2YL1!7LF`Tb zEUKY~xn_@tp$0Su18^5=X78d_=7cT(6?HcLL~T{2F~%U&(np{#*1|xH9pf=K5-EtM zpc#haK-3`_jp|^s%`Zi*(2H0b_n_XMlc?A87YxR@v8JOY7)!n->T_ZM>UGRQwOiyN zp%03Mn277pg$Hc;Wz>vs+xwOB9H$5QWYpdlqh_)I)y}i1t#}z5;b*7;-ohZPJkG30 z4U8f0i6NnpbVQAGAZn>fP#sLO`BK!%tg+?WP)qrt%^yTw0Ou^~5O>Ts^}j-G#U<20 zuA)}9Vu80Gk5iq522cl8p%rQ-y-^PiMGa^qY5-%f8cxMvT!LY^*5mu-+Fzq zC;4fpfqabNcoa3^a~Mhg&Mgw57*=RT9)s$z8LGSos)K`l~_*3L0ZNM&dNo2%p88_zLPZ+=oec z2=&|_wme{>*|G@KN+h6Gt{2w80jL4zq1v5}y1&#zLLIEb5PTDB;77LnG-^gSP$Smo zs#YKf)loQV=FL$Zv_qZpG*m}puq94IZQ1Lnf$v96*z+|BHQ+PZ%)BycWbxJ%)Xdvs z4t7J;-;UMs4b)q67*+2$s)KK_7G6UQEO3gMXtcE@vLzm;F9|(ZglhN+jKtZfyQR7PT^$F-q_M9TI9d@(DgXeGAr|W|p)EY9$7vmVO-i;6jYXC8!nJhU%vb8{%Q~rGMuS5;gHQ z>eN=9Zob9hP_I`CYUG_!d)OPbVneVFX5kQ=iJIAI)FHiw8dwyaXhoZ1EcQg5wQTgL zVhM>T+<8gO0IK-$^-{ix@Mp`M$CI%F%b4em#sg}c}U zLua!7s@QR+*~1Lfl0AwV&}7t#Jd2viCTxfAU|swJlQD9ZdA^%99W}#YsELe0ovo?X zCsBud;Vfp>mBdO4G?P=d!Ub$Z{%5R)HJ&tE(Aat(s^L_0VFqe|g{Y;ThrYNTHKCVK z1NZ*TiqO*>e|aX_K)w_CU=r3w4N=TAxGBU_I)LylUNJ?;l1D@Hocf z1yslWbIc)(!^-46?MP_mJ#9g{%|D91l#j**n1?=i6LlExqGsSX*ZVu(X^2|#MyNe* ziyBxT)QSv64X6;crB5Pf!s9F>p#~459ynq1KVl;JYp63)>nT$&88zV6s4YrGtyms5 z#W|<}yos9OK~%>l(1jOKhthwZR)YO+NkSFVyaoKz+4?xPpnN`RfbU}f9zaI!9JBer z`Rp(GD%cj^MzwbxwMBoU&Ok8BsOKA?J_nkjUP-4H35|F%#^6HK>$cVUKI)7dLoMYM zRKpb(nzIpt+S~RRgo99rF%z}a6R`y6VgtO3T9JB-SpQ%Wtw?AIyI?F1L7n<3=#S5! zM!pgo;|9#YBiIOIpSF9Af#ipxw#;pvjC%fQtc)vA?QD9Q^>0Pu7zN(9V6i#%F4O}Z zQ7h2{HS3|wY25QE`up7?D?)bTfL_ZSMmYTzs zjeW_lLG9^J*b#k}nU1=mUOP7q#ivkPcfooWeaTlZH4}LM`oCo4<|fAZ)q$o{vF2pN@Kd1Zsw3P|q*ID)@rE zzZ<>({@+WYH#a`R{usG}pG!CfC*x&ojU!i@*KIX^LjEAS@R{e#_xVoLR(*qcSYwsh z%Gs#HdmOdrKcUW0%4$|x?|%mpJmd7lnRre&aO4`Z#N)6z`FW_N-Gh2NKE%Oz7&Y+t zwZ@5fpUSZkR$OPc)(_p}t6(NhLXQ%sNa$2{c-}NT6SY(e@Bv(hRq-|f;!*CeCC(8Icy1PDx?)I=rR*AM{ovR`)F9>%V<_K5 zgc7>6mG2Re6FAa+<5t-zNp&NBY)0wW9DRU9u5W4g`S zf5&s!#omju&-_kVUt6}ULIGbWWU6v=3O9O?UV>i`x>k^{!acnWk9bSWpAT&V6LB#` zlWo4d%KbJ`*_Ll3f0%T9X=Ys2%$LbMO>7}95|4A|bz%VN@+*qO8Olm+K~FqMK8~nt zr=nXf;t*wfmEo#N`aSjH@uSuaN}i=eS9iQZ>>~XO;eSsny05Fe=nLw-PyQ3)5z-;{ z#s>1`*I}FZgZrI`JLKn}y>zn8e<>#K>JQhuM1XB3{j7}5ucR!SYYp!kWM6BAGcyGZ9R`?$rqt7p{o}8*R}q) zl~Kt(S2{Q2c<^c5PI-OOzQlRb4^kFPyhHjFQIYaL$?K|wt4z}S_a*Yr5&emol(fRB zMET_zO6DtaS+?XP7Ev|=Yom+CKOh}M_>$j993*tDAQqBtY4a+ZL_`vcZP{(>-;_N- z{AKfLcwPIiYcHAkL}St|ur{6Yx##R5U4GRpPv8v7|HKd+c29W~@{R7vwEg1|GJ{GPsv2%Lqr|h!4}Hy62B4C2we^E7;%yCGezFtj^C30 z&gLs{ua<3Nxh?ygGF{&j^+>0Ab9}p&kyt=M7wm`6;5>VC9Qk#meoVE3^BnE5$o0E8m!qup2w!wK5 z@1y($;@+zpnc0+eR-wIj z6QVVtYox*P*vePYP25L$Ct?@rwnPw7e$^w9Kz_R|yH5TG(xKQGza>(MLh{Ga(~Cd; zL~RN-5iE%JTFKuX#CYzNUt>wEAwQg0O8OSQMto{3&5l&iHH)|V{_5RPnN;V~8Y}sjBN7;Xn_Qyng zf+!?1$mino#Hy659Q0y9=n?K4mF(|A!M{fm`cxue{!LU&O~UU89YbYa0bS3z-(yU>-DS)7?ykX_;~Th)1xPjGQojvgCW z1 zhI`8QGj?vaDzKhN7if!+3RVd--VU8M&yV@ltjKdo`!f_z&0U;1$u pm94P2QJ@Lw&PJ}dwL diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index 23d81e95..cb6c74d1 100644 --- a/locale/fr_FR/LC_MESSAGES/django.po +++ b/locale/fr_FR/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-05-03 11:22-0700\n" +"POT-Creation-Date: 2021-05-10 13:23-0700\n" "PO-Revision-Date: 2021-04-05 12:44+0100\n" "Last-Translator: Fabien Basmaison \n" "Language-Team: Mouse Reeve \n" @@ -141,11 +141,11 @@ msgstr "Une erreur s’est produite ; désolé !" msgid "Edit Author" msgstr "Modifier l’auteur ou autrice" -#: bookwyrm/templates/author.html:32 +#: bookwyrm/templates/author.html:31 msgid "Wikipedia" msgstr "Wikipedia" -#: bookwyrm/templates/author.html:37 +#: bookwyrm/templates/author.html:36 #, python-format msgid "Books by %(name)s" msgstr "Livres par %(name)s" @@ -197,32 +197,32 @@ msgid "Description:" msgstr "Description :" #: bookwyrm/templates/book/book.html:127 -#: bookwyrm/templates/book/edit_book.html:241 +#: bookwyrm/templates/book/edit_book.html:249 #: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 #: bookwyrm/templates/preferences/edit_user.html:70 #: bookwyrm/templates/settings/edit_server.html:68 #: bookwyrm/templates/settings/federated_server.html:93 #: bookwyrm/templates/settings/site.html:97 #: 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:50 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:34 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:38 #: bookwyrm/templates/user_admin/user_moderation_actions.html:38 msgid "Save" msgstr "Enregistrer" #: bookwyrm/templates/book/book.html:128 bookwyrm/templates/book/book.html:180 #: bookwyrm/templates/book/cover_modal.html:32 -#: bookwyrm/templates/book/edit_book.html:242 +#: bookwyrm/templates/book/edit_book.html:250 #: bookwyrm/templates/edit_author.html:79 #: bookwyrm/templates/moderation/report_modal.html:34 #: bookwyrm/templates/settings/federated_server.html:94 #: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 #: bookwyrm/templates/snippets/goal_form.html:32 #: bookwyrm/templates/snippets/readthrough.html:78 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:43 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:51 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:35 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:39 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28 msgid "Cancel" msgstr "Annuler" @@ -317,22 +317,22 @@ msgid "ISBN:" msgstr "ISBN :" #: bookwyrm/templates/book/book_identifiers.html:15 -#: bookwyrm/templates/book/edit_book.html:227 +#: bookwyrm/templates/book/edit_book.html:235 msgid "OCLC Number:" msgstr "Numéro OCLC :" #: bookwyrm/templates/book/book_identifiers.html:22 -#: bookwyrm/templates/book/edit_book.html:231 +#: bookwyrm/templates/book/edit_book.html:239 msgid "ASIN:" msgstr "ASIN :" #: bookwyrm/templates/book/cover_modal.html:17 -#: bookwyrm/templates/book/edit_book.html:179 +#: bookwyrm/templates/book/edit_book.html:187 msgid "Upload cover:" msgstr "Charger une couverture :" #: bookwyrm/templates/book/cover_modal.html:23 -#: bookwyrm/templates/book/edit_book.html:185 +#: bookwyrm/templates/book/edit_book.html:193 msgid "Load cover from url:" msgstr "Charger la couverture depuis une URL :" @@ -436,58 +436,58 @@ msgstr "Séparez plusieurs éditeurs par une virgule." msgid "First published date:" msgstr "Première date de publication :" -#: bookwyrm/templates/book/edit_book.html:143 +#: bookwyrm/templates/book/edit_book.html:147 msgid "Published date:" msgstr "Date de publication :" -#: bookwyrm/templates/book/edit_book.html:152 +#: bookwyrm/templates/book/edit_book.html:160 msgid "Authors" msgstr "Auteurs ou autrices" -#: bookwyrm/templates/book/edit_book.html:158 +#: bookwyrm/templates/book/edit_book.html:166 #, python-format msgid "Remove %(name)s" msgstr "Supprimer %(name)s" -#: bookwyrm/templates/book/edit_book.html:163 +#: bookwyrm/templates/book/edit_book.html:171 msgid "Add Authors:" msgstr "Ajouter des auteurs ou autrices :" -#: bookwyrm/templates/book/edit_book.html:164 +#: bookwyrm/templates/book/edit_book.html:172 msgid "John Doe, Jane Smith" msgstr "Claude Dupont, Dominique Durand" -#: bookwyrm/templates/book/edit_book.html:170 +#: bookwyrm/templates/book/edit_book.html:178 #: bookwyrm/templates/user/shelf/shelf.html:76 msgid "Cover" msgstr "Couverture" -#: bookwyrm/templates/book/edit_book.html:198 +#: bookwyrm/templates/book/edit_book.html:206 msgid "Physical Properties" msgstr "Propriétés physiques" -#: bookwyrm/templates/book/edit_book.html:199 +#: bookwyrm/templates/book/edit_book.html:207 #: bookwyrm/templates/book/format_filter.html:5 msgid "Format:" msgstr "Format :" -#: bookwyrm/templates/book/edit_book.html:207 +#: bookwyrm/templates/book/edit_book.html:215 msgid "Pages:" msgstr "Pages :" -#: bookwyrm/templates/book/edit_book.html:214 +#: bookwyrm/templates/book/edit_book.html:222 msgid "Book Identifiers" msgstr "Identifiants du livre" -#: bookwyrm/templates/book/edit_book.html:215 +#: bookwyrm/templates/book/edit_book.html:223 msgid "ISBN 13:" msgstr "ISBN 13 :" -#: bookwyrm/templates/book/edit_book.html:219 +#: bookwyrm/templates/book/edit_book.html:227 msgid "ISBN 10:" msgstr "ISBN 10 :" -#: bookwyrm/templates/book/edit_book.html:223 +#: bookwyrm/templates/book/edit_book.html:231 #: bookwyrm/templates/edit_author.html:59 msgid "Openlibrary key:" msgstr "Clé Openlibrary :" @@ -551,7 +551,7 @@ msgstr "Publié par %(publisher)s." #: bookwyrm/templates/feed/feed_layout.html:70 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 -#: bookwyrm/templates/search/book.html:39 +#: bookwyrm/templates/search/book.html:32 msgid "Close" msgstr "Fermer" @@ -1230,7 +1230,7 @@ msgstr "Se déconnecter" #: bookwyrm/templates/layout.html:134 bookwyrm/templates/layout.html:135 #: bookwyrm/templates/notifications.html:6 -#: bookwyrm/templates/notifications.html:10 +#: bookwyrm/templates/notifications.html:11 msgid "Notifications" msgstr "Notifications" @@ -1346,6 +1346,7 @@ msgstr "N’importe qui peut suggérer des livres, soumis à votre approbation" #: bookwyrm/templates/lists/form.html:31 #: bookwyrm/templates/moderation/reports.html:25 +#: bookwyrm/templates/search/book.html:30 msgid "Open" msgstr "Ouverte" @@ -1537,119 +1538,130 @@ msgstr "Résolus" msgid "No reports found." msgstr "Aucun signalement trouvé." -#: bookwyrm/templates/notifications.html:14 +#: bookwyrm/templates/notifications.html:16 msgid "Delete notifications" msgstr "Supprimer les notifications" -#: bookwyrm/templates/notifications.html:53 +#: bookwyrm/templates/notifications.html:25 +msgid "All" +msgstr "" + +#: bookwyrm/templates/notifications.html:29 +#, fuzzy +#| msgid "More options" +msgid "Mentions" +msgstr "Plus d’options" + +#: bookwyrm/templates/notifications.html:70 #, python-format msgid "favorited your review of %(book_title)s" msgstr "a ajouté votre critique de %(book_title)s à ses favoris" -#: bookwyrm/templates/notifications.html:55 +#: bookwyrm/templates/notifications.html:72 #, python-format msgid "favorited your comment on %(book_title)s" msgstr "a ajouté votre commentaire sur %(book_title)s à ses favoris" -#: bookwyrm/templates/notifications.html:57 +#: bookwyrm/templates/notifications.html:74 #, python-format msgid "favorited your quote from %(book_title)s" msgstr "a ajouté votre citation de %(book_title)s à ses favoris" -#: bookwyrm/templates/notifications.html:59 +#: bookwyrm/templates/notifications.html:76 #, python-format msgid "favorited your status" msgstr "a ajouté votre statut à ses favoris" -#: bookwyrm/templates/notifications.html:64 +#: bookwyrm/templates/notifications.html:81 #, python-format msgid "mentioned you in a review of %(book_title)s" msgstr "vous a mentionné dans sa critique de %(book_title)s" -#: bookwyrm/templates/notifications.html:66 +#: bookwyrm/templates/notifications.html:83 #, python-format msgid "mentioned you in a comment on %(book_title)s" msgstr "vous a mentionné dans son commentaire sur %(book_title)s" -#: bookwyrm/templates/notifications.html:68 +#: bookwyrm/templates/notifications.html:85 #, python-format msgid "mentioned you in a quote from %(book_title)s" msgstr "vous a mentionné dans sa citation de %(book_title)s" -#: bookwyrm/templates/notifications.html:70 +#: bookwyrm/templates/notifications.html:87 #, python-format msgid "mentioned you in a status" msgstr "vous a mentionné dans son statut" -#: bookwyrm/templates/notifications.html:75 +#: bookwyrm/templates/notifications.html:92 #, python-format msgid "replied to your review of %(book_title)s" msgstr "a répondu à votre critique de %(book_title)s" -#: bookwyrm/templates/notifications.html:77 +#: bookwyrm/templates/notifications.html:94 #, python-format msgid "replied to your comment on %(book_title)s" msgstr "a répondu à votre commentaire sur %(book_title)s" -#: bookwyrm/templates/notifications.html:79 +#: bookwyrm/templates/notifications.html:96 #, python-format msgid "replied to your quote from %(book_title)s" msgstr "a répondu à votre citation de %(book_title)s" -#: bookwyrm/templates/notifications.html:81 +#: bookwyrm/templates/notifications.html:98 #, python-format msgid "replied to your status" msgstr "a répondu à votre statut" -#: bookwyrm/templates/notifications.html:85 +#: bookwyrm/templates/notifications.html:102 msgid "followed you" msgstr "s’est abonné(e)" -#: bookwyrm/templates/notifications.html:88 +#: bookwyrm/templates/notifications.html:105 msgid "sent you a follow request" msgstr "vous a envoyé une demande d’abonnement" -#: bookwyrm/templates/notifications.html:94 +#: bookwyrm/templates/notifications.html:111 #, python-format msgid "boosted your review of %(book_title)s" msgstr "a partagé votre critique de %(book_title)s" -#: bookwyrm/templates/notifications.html:96 +#: bookwyrm/templates/notifications.html:113 #, python-format msgid "boosted your comment on%(book_title)s" msgstr "a partagé votre commentaire sur %(book_title)s" -#: bookwyrm/templates/notifications.html:98 +#: bookwyrm/templates/notifications.html:115 #, python-format msgid "boosted your quote from %(book_title)s" msgstr "a partagé votre citation de %(book_title)s" -#: bookwyrm/templates/notifications.html:100 +#: bookwyrm/templates/notifications.html:117 #, python-format msgid "boosted your status" msgstr "a partagé votre statut" -#: bookwyrm/templates/notifications.html:104 +#: bookwyrm/templates/notifications.html:121 #, python-format msgid " added %(book_title)s to your list \"%(list_name)s\"" msgstr " a ajouté %(book_title)s à votre liste « %(list_name)s »" -#: bookwyrm/templates/notifications.html:106 +#: bookwyrm/templates/notifications.html:123 #, python-format msgid " suggested adding %(book_title)s to your list \"%(list_name)s\"" msgstr " a suggégré l’ajout de %(book_title)s à votre liste « %(list_name)s »" -#: bookwyrm/templates/notifications.html:110 -#, python-format -msgid "Your import completed." +#: bookwyrm/templates/notifications.html:128 +#, fuzzy, python-format +#| msgid "Your import completed." +msgid "Your import completed." msgstr "Votre importation est terminée." -#: bookwyrm/templates/notifications.html:113 +#: bookwyrm/templates/notifications.html:131 #, python-format msgid "A new report needs moderation." msgstr "Un nouveau signalement a besoin d’être traité." -#: bookwyrm/templates/notifications.html:139 +#: bookwyrm/templates/notifications.html:157 msgid "You're all caught up!" msgstr "Aucune nouvelle notification !" @@ -1668,7 +1680,7 @@ msgstr "Changer de mot de passe" #: bookwyrm/templates/preferences/blocks.html:4 #: bookwyrm/templates/preferences/blocks.html:7 -#: bookwyrm/templates/preferences/preferences_layout.html:23 +#: bookwyrm/templates/preferences/preferences_layout.html:26 msgid "Blocked Users" msgstr "Comptes bloqués" @@ -1679,7 +1691,7 @@ msgstr "Aucun compte bloqué actuellement" #: bookwyrm/templates/preferences/change_password.html:4 #: bookwyrm/templates/preferences/change_password.html:7 #: bookwyrm/templates/preferences/change_password.html:21 -#: bookwyrm/templates/preferences/preferences_layout.html:17 +#: bookwyrm/templates/preferences/preferences_layout.html:19 msgid "Change Password" msgstr "Changer le mot de passe" @@ -1709,20 +1721,14 @@ msgstr "Fuseau horaire préféré" msgid "Account" msgstr "Compte" -#: bookwyrm/templates/preferences/preferences_layout.html:14 +#: bookwyrm/templates/preferences/preferences_layout.html:15 msgid "Profile" msgstr "Profil" -#: bookwyrm/templates/preferences/preferences_layout.html:20 +#: bookwyrm/templates/preferences/preferences_layout.html:22 msgid "Relationships" msgstr "Relations" -#: bookwyrm/templates/search/book.html:30 -#, fuzzy -#| msgid "Show more" -msgid "Show" -msgstr "Déplier" - #: bookwyrm/templates/search/book.html:64 #, fuzzy #| msgid "Show results from other catalogues" @@ -2218,13 +2224,13 @@ msgid "Progress:" msgstr "Progression :" #: bookwyrm/templates/snippets/create_status_form.html:85 -#: bookwyrm/templates/snippets/readthrough_form.html:22 +#: bookwyrm/templates/snippets/readthrough_form.html:26 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30 msgid "pages" msgstr "pages" #: bookwyrm/templates/snippets/create_status_form.html:86 -#: bookwyrm/templates/snippets/readthrough_form.html:23 +#: bookwyrm/templates/snippets/readthrough_form.html:27 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31 msgid "percent" msgstr "pourcent" @@ -2357,8 +2363,8 @@ msgid "Goal privacy:" msgstr "Confidentialité du défi :" #: bookwyrm/templates/snippets/goal_form.html:26 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:37 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:29 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:45 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:33 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:20 msgid "Post to feed" msgstr "Publier sur le fil d’actualité" @@ -2469,12 +2475,12 @@ msgstr "Supprimer ces dates de lecture" msgid "Started reading" msgstr "Lecture commencée le" -#: bookwyrm/templates/snippets/readthrough_form.html:14 +#: bookwyrm/templates/snippets/readthrough_form.html:18 msgid "Progress" msgstr "Progression" -#: bookwyrm/templates/snippets/readthrough_form.html:30 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:25 +#: bookwyrm/templates/snippets/readthrough_form.html:34 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:29 msgid "Finished reading" msgstr "Lecture terminée le" @@ -2843,6 +2849,11 @@ msgstr "Aucun compte avec cette adresse email n’a été trouvé." msgid "A password reset link sent to %s" msgstr "Un lien de réinitialisation a été envoyé à %s." +#, fuzzy +#~| msgid "Show more" +#~ msgid "Show" +#~ msgstr "Déplier" + #, fuzzy #~| msgid "All messages" #~ msgid "Messages" diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo index 765ee77f337dbac59fdba575943504652b01f890..fa845263a2bff33a706da53f66617e5933d7f0bd 100644 GIT binary patch delta 11745 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 xoC!`JloB49zGU#;jOnREpU;&3vJT2$qU*oXQx5 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 Mot`r$dryh~0Nqg&C;$Ke diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index c3247438..a6fdfa75 100644 --- a/locale/zh_Hans/LC_MESSAGES/django.po +++ b/locale/zh_Hans/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-05-03 11:22-0700\n" +"POT-Creation-Date: 2021-05-10 13:23-0700\n" "PO-Revision-Date: 2021-03-20 00:56+0000\n" "Last-Translator: Kana \n" "Language-Team: Mouse Reeve \n" @@ -141,11 +141,11 @@ msgstr "某些东西出错了!对不起啦。" msgid "Edit Author" msgstr "编辑作者" -#: bookwyrm/templates/author.html:32 +#: bookwyrm/templates/author.html:31 msgid "Wikipedia" msgstr "维基百科" -#: bookwyrm/templates/author.html:37 +#: bookwyrm/templates/author.html:36 #, python-format msgid "Books by %(name)s" msgstr "%(name)s 所著的书" @@ -196,32 +196,32 @@ msgid "Description:" msgstr "描述:" #: bookwyrm/templates/book/book.html:127 -#: bookwyrm/templates/book/edit_book.html:241 +#: bookwyrm/templates/book/edit_book.html:249 #: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 #: bookwyrm/templates/preferences/edit_user.html:70 #: bookwyrm/templates/settings/edit_server.html:68 #: bookwyrm/templates/settings/federated_server.html:93 #: bookwyrm/templates/settings/site.html:97 #: 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:50 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:34 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:38 #: bookwyrm/templates/user_admin/user_moderation_actions.html:38 msgid "Save" msgstr "保存" #: bookwyrm/templates/book/book.html:128 bookwyrm/templates/book/book.html:180 #: bookwyrm/templates/book/cover_modal.html:32 -#: bookwyrm/templates/book/edit_book.html:242 +#: bookwyrm/templates/book/edit_book.html:250 #: bookwyrm/templates/edit_author.html:79 #: bookwyrm/templates/moderation/report_modal.html:34 #: bookwyrm/templates/settings/federated_server.html:94 #: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 #: bookwyrm/templates/snippets/goal_form.html:32 #: bookwyrm/templates/snippets/readthrough.html:78 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:43 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:51 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:35 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:39 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28 msgid "Cancel" msgstr "取消" @@ -316,22 +316,22 @@ msgid "ISBN:" msgstr "ISBN:" #: bookwyrm/templates/book/book_identifiers.html:15 -#: bookwyrm/templates/book/edit_book.html:227 +#: bookwyrm/templates/book/edit_book.html:235 msgid "OCLC Number:" msgstr "OCLC 号:" #: bookwyrm/templates/book/book_identifiers.html:22 -#: bookwyrm/templates/book/edit_book.html:231 +#: bookwyrm/templates/book/edit_book.html:239 msgid "ASIN:" msgstr "ASIN:" #: bookwyrm/templates/book/cover_modal.html:17 -#: bookwyrm/templates/book/edit_book.html:179 +#: bookwyrm/templates/book/edit_book.html:187 msgid "Upload cover:" msgstr "上传封面:" #: bookwyrm/templates/book/cover_modal.html:23 -#: bookwyrm/templates/book/edit_book.html:185 +#: bookwyrm/templates/book/edit_book.html:193 msgid "Load cover from url:" msgstr "从网址加载封面:" @@ -435,58 +435,58 @@ msgstr "请用英文逗号(,)分开多个出版社。" msgid "First published date:" msgstr "初版时间:" -#: bookwyrm/templates/book/edit_book.html:143 +#: bookwyrm/templates/book/edit_book.html:147 msgid "Published date:" msgstr "出版时间:" -#: bookwyrm/templates/book/edit_book.html:152 +#: bookwyrm/templates/book/edit_book.html:160 msgid "Authors" msgstr "作者" -#: bookwyrm/templates/book/edit_book.html:158 +#: bookwyrm/templates/book/edit_book.html:166 #, python-format msgid "Remove %(name)s" msgstr "移除 %(name)s" -#: bookwyrm/templates/book/edit_book.html:163 +#: bookwyrm/templates/book/edit_book.html:171 msgid "Add Authors:" msgstr "添加作者:" -#: bookwyrm/templates/book/edit_book.html:164 +#: bookwyrm/templates/book/edit_book.html:172 msgid "John Doe, Jane Smith" msgstr "张三, 李四" -#: bookwyrm/templates/book/edit_book.html:170 +#: bookwyrm/templates/book/edit_book.html:178 #: bookwyrm/templates/user/shelf/shelf.html:76 msgid "Cover" msgstr "封面" -#: bookwyrm/templates/book/edit_book.html:198 +#: bookwyrm/templates/book/edit_book.html:206 msgid "Physical Properties" msgstr "实体性质" -#: bookwyrm/templates/book/edit_book.html:199 +#: bookwyrm/templates/book/edit_book.html:207 #: bookwyrm/templates/book/format_filter.html:5 msgid "Format:" msgstr "格式:" -#: bookwyrm/templates/book/edit_book.html:207 +#: bookwyrm/templates/book/edit_book.html:215 msgid "Pages:" msgstr "页数:" -#: bookwyrm/templates/book/edit_book.html:214 +#: bookwyrm/templates/book/edit_book.html:222 msgid "Book Identifiers" msgstr "书目标识号" -#: bookwyrm/templates/book/edit_book.html:215 +#: bookwyrm/templates/book/edit_book.html:223 msgid "ISBN 13:" msgstr "ISBN 13:" -#: bookwyrm/templates/book/edit_book.html:219 +#: bookwyrm/templates/book/edit_book.html:227 msgid "ISBN 10:" msgstr "ISBN 10:" -#: bookwyrm/templates/book/edit_book.html:223 +#: bookwyrm/templates/book/edit_book.html:231 #: bookwyrm/templates/edit_author.html:59 msgid "Openlibrary key:" msgstr "Openlibrary key:" @@ -550,7 +550,7 @@ msgstr "由 %(publisher)s 出版。" #: bookwyrm/templates/feed/feed_layout.html:70 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 -#: bookwyrm/templates/search/book.html:39 +#: bookwyrm/templates/search/book.html:32 msgid "Close" msgstr "关闭" @@ -1227,7 +1227,7 @@ msgstr "登出" #: bookwyrm/templates/layout.html:134 bookwyrm/templates/layout.html:135 #: bookwyrm/templates/notifications.html:6 -#: bookwyrm/templates/notifications.html:10 +#: bookwyrm/templates/notifications.html:11 msgid "Notifications" msgstr "通知" @@ -1343,6 +1343,7 @@ msgstr "任何人都可以推荐书目、主题让你批准" #: bookwyrm/templates/lists/form.html:31 #: bookwyrm/templates/moderation/reports.html:25 +#: bookwyrm/templates/search/book.html:30 msgid "Open" msgstr "开放" @@ -1534,119 +1535,130 @@ msgstr "已解决" msgid "No reports found." msgstr "没有找到报告" -#: bookwyrm/templates/notifications.html:14 +#: bookwyrm/templates/notifications.html:16 msgid "Delete notifications" msgstr "删除通知" -#: bookwyrm/templates/notifications.html:53 +#: bookwyrm/templates/notifications.html:25 +msgid "All" +msgstr "" + +#: bookwyrm/templates/notifications.html:29 +#, fuzzy +#| msgid "More options" +msgid "Mentions" +msgstr "更多选项" + +#: bookwyrm/templates/notifications.html:70 #, python-format msgid "favorited your review of %(book_title)s" msgstr "喜欢了你 %(book_title)s 的书评" -#: bookwyrm/templates/notifications.html:55 +#: bookwyrm/templates/notifications.html:72 #, python-format msgid "favorited your comment on %(book_title)s" msgstr "喜欢了你 %(book_title)s 的评论" -#: bookwyrm/templates/notifications.html:57 +#: bookwyrm/templates/notifications.html:74 #, python-format msgid "favorited your quote from %(book_title)s" msgstr "喜欢了你 来自 %(book_title)s 的引用" -#: bookwyrm/templates/notifications.html:59 +#: bookwyrm/templates/notifications.html:76 #, python-format msgid "favorited your status" msgstr "喜欢了你的 状态" -#: bookwyrm/templates/notifications.html:64 +#: bookwyrm/templates/notifications.html:81 #, python-format msgid "mentioned you in a review of %(book_title)s" msgstr "在 %(book_title)s 的书评 里提到了你" -#: bookwyrm/templates/notifications.html:66 +#: bookwyrm/templates/notifications.html:83 #, python-format msgid "mentioned you in a comment on %(book_title)s" msgstr "在 %(book_title)s 的评论 里提到了你" -#: bookwyrm/templates/notifications.html:68 +#: bookwyrm/templates/notifications.html:85 #, python-format msgid "mentioned you in a quote from %(book_title)s" msgstr "在 %(book_title)s 的引用 中提到了你" -#: bookwyrm/templates/notifications.html:70 +#: bookwyrm/templates/notifications.html:87 #, python-format msgid "mentioned you in a status" msgstr "在 状态 中提到了你" -#: bookwyrm/templates/notifications.html:75 +#: bookwyrm/templates/notifications.html:92 #, python-format msgid "replied to your review of %(book_title)s" msgstr "回复 了你的 %(book_title)s 的书评" -#: bookwyrm/templates/notifications.html:77 +#: bookwyrm/templates/notifications.html:94 #, python-format msgid "replied to your comment on %(book_title)s" msgstr "回复 了你的 %(book_title)s 的评论" -#: bookwyrm/templates/notifications.html:79 +#: bookwyrm/templates/notifications.html:96 #, python-format msgid "replied to your quote from %(book_title)s" msgstr "回复 了你 %(book_title)s 中的引用" -#: bookwyrm/templates/notifications.html:81 +#: bookwyrm/templates/notifications.html:98 #, python-format msgid "replied to your status" msgstr "回复 了你的 状态" -#: bookwyrm/templates/notifications.html:85 +#: bookwyrm/templates/notifications.html:102 msgid "followed you" msgstr "关注了你" -#: bookwyrm/templates/notifications.html:88 +#: bookwyrm/templates/notifications.html:105 msgid "sent you a follow request" msgstr "向你发送了关注请求" -#: bookwyrm/templates/notifications.html:94 +#: bookwyrm/templates/notifications.html:111 #, python-format msgid "boosted your review of %(book_title)s" msgstr "转发了你的 %(book_title)s 的书评" -#: bookwyrm/templates/notifications.html:96 +#: bookwyrm/templates/notifications.html:113 #, python-format msgid "boosted your comment on%(book_title)s" msgstr "转发了你的 %(book_title)s 的评论" -#: bookwyrm/templates/notifications.html:98 +#: bookwyrm/templates/notifications.html:115 #, python-format msgid "boosted your quote from %(book_title)s" msgstr "转发了你的 %(book_title)s 的引用" -#: bookwyrm/templates/notifications.html:100 +#: bookwyrm/templates/notifications.html:117 #, python-format msgid "boosted your status" msgstr "转发了你的 状态" -#: bookwyrm/templates/notifications.html:104 +#: bookwyrm/templates/notifications.html:121 #, python-format msgid " added %(book_title)s to your list \"%(list_name)s\"" msgstr " 添加了 %(book_title)s 到你的列表 \"%(list_name)s\"" -#: bookwyrm/templates/notifications.html:106 +#: bookwyrm/templates/notifications.html:123 #, python-format msgid " suggested adding %(book_title)s to your list \"%(list_name)s\"" msgstr " 推荐添加 %(book_title)s 到你的列表 \"%(list_name)s\"" -#: bookwyrm/templates/notifications.html:110 -#, python-format -msgid "Your import completed." +#: bookwyrm/templates/notifications.html:128 +#, fuzzy, python-format +#| msgid "Your import completed." +msgid "Your import completed." msgstr "你的 导入 已完成。" -#: bookwyrm/templates/notifications.html:113 +#: bookwyrm/templates/notifications.html:131 #, python-format msgid "A new report needs moderation." msgstr "有新的 报告 需要仲裁。" -#: bookwyrm/templates/notifications.html:139 +#: bookwyrm/templates/notifications.html:157 msgid "You're all caught up!" msgstr "你什么也没错过!" @@ -1665,7 +1677,7 @@ msgstr "重设密码" #: bookwyrm/templates/preferences/blocks.html:4 #: bookwyrm/templates/preferences/blocks.html:7 -#: bookwyrm/templates/preferences/preferences_layout.html:23 +#: bookwyrm/templates/preferences/preferences_layout.html:26 msgid "Blocked Users" msgstr "屏蔽的用户" @@ -1676,7 +1688,7 @@ msgstr "当前没有被屏蔽的用户。" #: bookwyrm/templates/preferences/change_password.html:4 #: bookwyrm/templates/preferences/change_password.html:7 #: bookwyrm/templates/preferences/change_password.html:21 -#: bookwyrm/templates/preferences/preferences_layout.html:17 +#: bookwyrm/templates/preferences/preferences_layout.html:19 msgid "Change Password" msgstr "更改密码" @@ -1706,20 +1718,14 @@ msgstr "偏好的时区:" msgid "Account" msgstr "帐号" -#: bookwyrm/templates/preferences/preferences_layout.html:14 +#: bookwyrm/templates/preferences/preferences_layout.html:15 msgid "Profile" msgstr "个人资料" -#: bookwyrm/templates/preferences/preferences_layout.html:20 +#: bookwyrm/templates/preferences/preferences_layout.html:22 msgid "Relationships" msgstr "关系" -#: bookwyrm/templates/search/book.html:30 -#, fuzzy -#| msgid "Show more" -msgid "Show" -msgstr "显示更多" - #: bookwyrm/templates/search/book.html:64 #, fuzzy #| msgid "Show results from other catalogues" @@ -2219,13 +2225,13 @@ msgid "Progress:" msgstr "进度:" #: bookwyrm/templates/snippets/create_status_form.html:85 -#: bookwyrm/templates/snippets/readthrough_form.html:22 +#: bookwyrm/templates/snippets/readthrough_form.html:26 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30 msgid "pages" msgstr "页数" #: bookwyrm/templates/snippets/create_status_form.html:86 -#: bookwyrm/templates/snippets/readthrough_form.html:23 +#: bookwyrm/templates/snippets/readthrough_form.html:27 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31 msgid "percent" msgstr "百分比" @@ -2355,8 +2361,8 @@ msgid "Goal privacy:" msgstr "目标隐私:" #: bookwyrm/templates/snippets/goal_form.html:26 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:37 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:29 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:45 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:33 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:20 msgid "Post to feed" msgstr "发布到消息流中" @@ -2467,12 +2473,12 @@ msgstr "删除这些阅读日期" msgid "Started reading" msgstr "已开始阅读" -#: bookwyrm/templates/snippets/readthrough_form.html:14 +#: bookwyrm/templates/snippets/readthrough_form.html:18 msgid "Progress" msgstr "进度" -#: bookwyrm/templates/snippets/readthrough_form.html:30 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:25 +#: bookwyrm/templates/snippets/readthrough_form.html:34 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:29 msgid "Finished reading" msgstr "已完成阅读" @@ -2841,6 +2847,11 @@ msgstr "没有找到使用该邮箱的用户。" msgid "A password reset link sent to %s" msgstr "密码重置连接已发送给 %s" +#, fuzzy +#~| msgid "Show more" +#~ msgid "Show" +#~ msgstr "显示更多" + #, fuzzy #~| msgid "All messages" #~ msgid "Messages" From 85a8210f5e2d1b5cda5b2f42b97909faa75562c6 Mon Sep 17 00:00:00 2001 From: Allie Signet Date: Mon, 10 May 2021 18:11:28 -0300 Subject: [PATCH 171/252] fix rating property on ImportItem --- bookwyrm/models/import_job.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bookwyrm/models/import_job.py b/bookwyrm/models/import_job.py index 1b1152ab..c8130af2 100644 --- a/bookwyrm/models/import_job.py +++ b/bookwyrm/models/import_job.py @@ -128,7 +128,9 @@ class ImportItem(models.Model): @property def rating(self): """x/5 star rating for a book""" - return int(self.data["My Rating"]) + if self.data.get("My Rating", None): + return int(self.data["My Rating"]) + return None @property def date_added(self): From b4ae639dabffcee63b4810648383be38fe27ebbf Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 May 2021 14:19:50 -0700 Subject: [PATCH 172/252] Imports bookwyrm settings into celery settings It was redundant and super bug-prone! --- bookwyrm/settings.py | 10 +-- celerywyrm/settings.py | 148 +---------------------------------------- 2 files changed, 8 insertions(+), 150 deletions(-) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 1bc3c587..45d8cb9d 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -38,7 +38,7 @@ LOCALE_PATHS = [ DEFAULT_AUTO_FIELD = "django.db.models.AutoField" # Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/ +# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = env("SECRET_KEY") @@ -107,7 +107,7 @@ MAX_STREAM_LENGTH = int(env("MAX_STREAM_LENGTH", 200)) STREAMS = ["home", "local", "federated"] # Database -# https://docs.djangoproject.com/en/2.0/ref/settings/#databases +# https://docs.djangoproject.com/en/3.2/ref/settings/#databases BOOKWYRM_DATABASE_BACKEND = env("BOOKWYRM_DATABASE_BACKEND", "postgres") @@ -129,7 +129,7 @@ LOGIN_URL = "/login/" AUTH_USER_MODEL = "bookwyrm.User" # Password validation -# https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators +# https://docs.djangoproject.com/en/3.2/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ { @@ -148,7 +148,7 @@ AUTH_PASSWORD_VALIDATORS = [ # Internationalization -# https://docs.djangoproject.com/en/2.0/topics/i18n/ +# https://docs.djangoproject.com/en/3.2/topics/i18n/ LANGUAGE_CODE = "en-us" LANGUAGES = [ @@ -170,7 +170,7 @@ USE_TZ = True # Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/3.1/howto/static-files/ +# https://docs.djangoproject.com/en/3.2/howto/static-files/ PROJECT_DIR = os.path.dirname(os.path.abspath(__file__)) STATIC_URL = "/static/" diff --git a/celerywyrm/settings.py b/celerywyrm/settings.py index cd5b00ba..e4fa73ca 100644 --- a/celerywyrm/settings.py +++ b/celerywyrm/settings.py @@ -1,157 +1,15 @@ -""" -Django settings for celerywyrm project. +""" bookwyrm settings and configuration """ +from bookwyrm.settings import * -Generated by 'django-admin startproject' using Django 3.0.3. - -For more information on this file, see -https://docs.djangoproject.com/en/3.0/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/3.0/ref/settings/ -""" - -import os -from environs import Env - -env = Env() - -# emailing -EMAIL_HOST = env("EMAIL_HOST") -EMAIL_PORT = env("EMAIL_PORT") -EMAIL_HOST_USER = env("EMAIL_HOST_USER") -EMAIL_HOST_PASSWORD = env("EMAIL_HOST_PASSWORD") -EMAIL_USE_TLS = env.bool("EMAIL_USE_TLS") -EMAIL_USE_SSL = env.bool("EMAIL_USE_SSL", False) - - -# Build paths inside the project like this: os.path.join(BASE_DIR, ...) -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - -# celery/rebbitmq CELERY_BROKER_URL = env("CELERY_BROKER") CELERY_ACCEPT_CONTENT = ["json"] CELERY_TASK_SERIALIZER = "json" CELERY_RESULT_BACKEND = "redis" - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = "0a^0gpwjc1ap+lb$dinin=efc@e&_0%102$o3(>9e7lndiaw" - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = env.bool("DEBUG", True) - - -ALLOWED_HOSTS = [] - - -# Application definition - -INSTALLED_APPS = [ - "django.contrib.admin", - "django.contrib.auth", - "django.contrib.contenttypes", - "django.contrib.sessions", - "django.contrib.messages", - "django.contrib.staticfiles", +INSTALLED_APPS = INSTALLED_APPS + [ "celerywyrm", - "bookwyrm", - "celery", -] - -MIDDLEWARE = [ - "django.middleware.security.SecurityMiddleware", - "django.contrib.sessions.middleware.SessionMiddleware", - "django.middleware.common.CommonMiddleware", - "django.middleware.csrf.CsrfViewMiddleware", - "django.contrib.auth.middleware.AuthenticationMiddleware", - "django.contrib.messages.middleware.MessageMiddleware", - "django.middleware.clickjacking.XFrameOptionsMiddleware", ] ROOT_URLCONF = "celerywyrm.urls" -TEMPLATES = [ - { - "BACKEND": "django.template.backends.django.DjangoTemplates", - "DIRS": [], - "APP_DIRS": True, - "OPTIONS": { - "context_processors": [ - "django.template.context_processors.debug", - "django.template.context_processors.request", - "django.contrib.auth.context_processors.auth", - "django.contrib.messages.context_processors.messages", - ], - }, - }, -] - WSGI_APPLICATION = "celerywyrm.wsgi.application" - - -# Database -# https://docs.djangoproject.com/en/3.0/ref/settings/#databases - -BOOKWYRM_DATABASE_BACKEND = env("BOOKWYRM_DATABASE_BACKEND", "postgres") - -BOOKWYRM_DBS = { - "postgres": { - "ENGINE": "django.db.backends.postgresql_psycopg2", - "NAME": env("POSTGRES_DB", "fedireads"), - "USER": env("POSTGRES_USER", "fedireads"), - "PASSWORD": env("POSTGRES_PASSWORD", "fedireads"), - "HOST": env("POSTGRES_HOST", ""), - "PORT": 5432, - }, - "sqlite": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": os.path.join(BASE_DIR, "fedireads.db"), - }, -} - -DATABASES = {"default": BOOKWYRM_DBS[BOOKWYRM_DATABASE_BACKEND]} - - -# Password validation -# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators - -AUTH_PASSWORD_VALIDATORS = [ - { - "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", - }, - { - "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", - }, - { - "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", - }, - { - "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", - }, -] - - -# Internationalization -# https://docs.djangoproject.com/en/3.0/topics/i18n/ - -LANGUAGE_CODE = "en-us" - -TIME_ZONE = "UTC" - -USE_I18N = False - -USE_L10N = False - -USE_TZ = True - - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/3.1/howto/static-files/ - -STATIC_URL = "/static/" -STATIC_ROOT = os.path.join(BASE_DIR, env("STATIC_ROOT", "static")) -MEDIA_URL = "/images/" -MEDIA_ROOT = os.path.join(BASE_DIR, env("MEDIA_ROOT", "images")) From e34ae18e98ce3aea26b0e3c9a3ffd05d72a7dec6 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 May 2021 14:38:57 -0700 Subject: [PATCH 173/252] Don't show following years' books in a year's goal --- bookwyrm/models/user.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/bookwyrm/models/user.py b/bookwyrm/models/user.py index 7c943bec..5f0e64e3 100644 --- a/bookwyrm/models/user.py +++ b/bookwyrm/models/user.py @@ -372,7 +372,10 @@ class AnnualGoal(BookWyrmModel): def books(self): """the books you've read this year""" return ( - self.user.readthrough_set.filter(finish_date__year__gte=self.year) + self.user.readthrough_set.filter( + finish_date__year__gte=self.year, + finish_date__year__lt=self.year + 1, + ) .order_by("-finish_date") .all() ) @@ -396,7 +399,8 @@ class AnnualGoal(BookWyrmModel): def book_count(self): """how many books you've read this year""" return self.user.readthrough_set.filter( - finish_date__year__gte=self.year + finish_date__year__gte=self.year, + finish_date__year__lt=self.year + 1, ).count() From 485f4b7eba1e819b64fe01139de02fe5d7ca70c6 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 May 2021 14:56:33 -0700 Subject: [PATCH 174/252] Revert "Replaces date elements with datepicker" This reverts commit 869cfa6d341f25ee25d8576adcdc2e3b8d239b9c. --- bookwyrm/templates/book/edit_book.html | 12 ++---------- bookwyrm/templates/snippets/datepicker_js.html | 3 --- bookwyrm/templates/snippets/readthrough_form.html | 12 ++---------- .../snippets/shelve_button/finish_reading_modal.html | 12 ++---------- .../snippets/shelve_button/start_reading_modal.html | 6 +----- 5 files changed, 7 insertions(+), 38 deletions(-) delete mode 100644 bookwyrm/templates/snippets/datepicker_js.html diff --git a/bookwyrm/templates/book/edit_book.html b/bookwyrm/templates/book/edit_book.html index e75bd96e..5fe63595 100644 --- a/bookwyrm/templates/book/edit_book.html +++ b/bookwyrm/templates/book/edit_book.html @@ -133,11 +133,7 @@

      - +

      {% for error in form.first_published_date.errors %}

      {{ error | escape }}

      @@ -145,11 +141,7 @@

      - +

      {% for error in form.published_date.errors %}

      {{ error | escape }}

      diff --git a/bookwyrm/templates/snippets/datepicker_js.html b/bookwyrm/templates/snippets/datepicker_js.html deleted file mode 100644 index abfadaaf..00000000 --- a/bookwyrm/templates/snippets/datepicker_js.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/bookwyrm/templates/snippets/readthrough_form.html b/bookwyrm/templates/snippets/readthrough_form.html index 256fcea5..c5be295e 100644 --- a/bookwyrm/templates/snippets/readthrough_form.html +++ b/bookwyrm/templates/snippets/readthrough_form.html @@ -5,11 +5,7 @@
      {# Only show progress for editing existing readthroughs #} @@ -32,10 +28,6 @@
      diff --git a/bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html b/bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html index 6d4ea5ea..ca65bf06 100644 --- a/bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html +++ b/bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html @@ -17,21 +17,13 @@
      diff --git a/bookwyrm/templates/snippets/shelve_button/start_reading_modal.html b/bookwyrm/templates/snippets/shelve_button/start_reading_modal.html index 47d620e0..21341683 100644 --- a/bookwyrm/templates/snippets/shelve_button/start_reading_modal.html +++ b/bookwyrm/templates/snippets/shelve_button/start_reading_modal.html @@ -15,11 +15,7 @@
      From 3f4807a3451ff6b3271c9d9f4161f0928181e885 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 May 2021 14:56:43 -0700 Subject: [PATCH 175/252] Revert "Adds datepicker script dependencies to templates" This reverts commit 33ca7b4b763c118cf84ee85205e64ccd1355b220. --- bookwyrm/templates/author.html | 3 --- bookwyrm/templates/book/book.html | 1 - bookwyrm/templates/book/edit_book.html | 8 ++------ bookwyrm/templates/book/editions.html | 4 ---- bookwyrm/templates/edit_author.html | 4 ---- bookwyrm/templates/feed/feed_layout.html | 1 - bookwyrm/templates/get_started/books.html | 4 ---- bookwyrm/templates/user/layout.html | 5 ----- 8 files changed, 2 insertions(+), 28 deletions(-) diff --git a/bookwyrm/templates/author.html b/bookwyrm/templates/author.html index ec952d4c..a7ea9db5 100644 --- a/bookwyrm/templates/author.html +++ b/bookwyrm/templates/author.html @@ -38,6 +38,3 @@
    {% endblock %} -{% block scripts %} -{% include 'snippets/datepicker_js.html' %} -{% endblock %} diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 53be123d..40da6486 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -333,5 +333,4 @@ {% block scripts %} -{% include 'snippets/datepicker_js.html' %} {% endblock %} diff --git a/bookwyrm/templates/book/edit_book.html b/bookwyrm/templates/book/edit_book.html index 5fe63595..bcf11126 100644 --- a/bookwyrm/templates/book/edit_book.html +++ b/bookwyrm/templates/book/edit_book.html @@ -133,7 +133,7 @@

    - +

    {% for error in form.first_published_date.errors %}

    {{ error | escape }}

    @@ -141,7 +141,7 @@

    - +

    {% for error in form.published_date.errors %}

    {{ error | escape }}

    @@ -245,7 +245,3 @@ {% endblock %} - -{% block scripts %} -{% include 'snippets/datepicker_js.html' %} -{% endblock %} diff --git a/bookwyrm/templates/book/editions.html b/bookwyrm/templates/book/editions.html index 64dd2775..775b05c8 100644 --- a/bookwyrm/templates/book/editions.html +++ b/bookwyrm/templates/book/editions.html @@ -51,7 +51,3 @@ {% include 'snippets/pagination.html' with page=editions path=request.path %}
    {% endblock %} - -{% block scripts %} -{% include 'snippets/datepicker_js.html' %} -{% endblock %} diff --git a/bookwyrm/templates/edit_author.html b/bookwyrm/templates/edit_author.html index ecf32358..b575bbb2 100644 --- a/bookwyrm/templates/edit_author.html +++ b/bookwyrm/templates/edit_author.html @@ -81,7 +81,3 @@ {% endblock %} - -{% block scripts %} -{% include 'snippets/datepicker_js.html' %} -{% endblock %} diff --git a/bookwyrm/templates/feed/feed_layout.html b/bookwyrm/templates/feed/feed_layout.html index 431cf6dd..75fc1951 100644 --- a/bookwyrm/templates/feed/feed_layout.html +++ b/bookwyrm/templates/feed/feed_layout.html @@ -105,5 +105,4 @@ {% block scripts %} -{% include 'snippets/datepicker_js.html' %} {% endblock %} diff --git a/bookwyrm/templates/get_started/books.html b/bookwyrm/templates/get_started/books.html index e3fd87bb..9613508b 100644 --- a/bookwyrm/templates/get_started/books.html +++ b/bookwyrm/templates/get_started/books.html @@ -64,7 +64,3 @@ {% endblock %} - -{% block scripts %} -{% include 'snippets/datepicker_js.html' %} -{% endblock %} diff --git a/bookwyrm/templates/user/layout.html b/bookwyrm/templates/user/layout.html index 1aa76202..661d8078 100644 --- a/bookwyrm/templates/user/layout.html +++ b/bookwyrm/templates/user/layout.html @@ -81,8 +81,3 @@ {% block panel %}{% endblock %} {% endblock %} - - -{% block scripts %} -{% include 'snippets/datepicker_js.html' %} -{% endblock %} From 07c84a6e1a1e82f455f096ae55c80559da9f7473 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 May 2021 15:35:46 -0700 Subject: [PATCH 176/252] Adds confidence ratings to inventaire results Fixes bad matches in csv imports --- bookwyrm/connectors/inventaire.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index 0c573265..102c9d72 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -74,6 +74,14 @@ class Connector(AbstractConnector): **{k: data.get(k) for k in ["uri", "image", "labels", "sitelinks"]}, } + def search(self, query, min_confidence=None): + """overrides default search function with confidence ranking""" + results = super().search(query) + if min_confidence: + # filter the search results after the fact + return [r for r in results if r.confidence >= min_confidence] + return results + def parse_search_data(self, data): return data.get("results") @@ -84,6 +92,9 @@ class Connector(AbstractConnector): if images else None ) + # a deeply messy translation of inventaire's scores + confidence = float(search_result.get("_score", 0.1)) + confidence = 0.1 if confidence < 150 else 0.999 return SearchResult( title=search_result.get("label"), key=self.get_remote_id(search_result.get("uri")), @@ -92,6 +103,7 @@ class Connector(AbstractConnector): self.base_url, search_result.get("uri") ), cover=cover, + confidence=confidence, connector=self, ) From 8c2552f73909fd6a746a27f0cf550f5f6f21de12 Mon Sep 17 00:00:00 2001 From: Allie Signet Date: Mon, 10 May 2021 20:09:16 -0300 Subject: [PATCH 177/252] storygraph renamed the author field --- bookwyrm/importers/storygraph_import.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/importers/storygraph_import.py b/bookwyrm/importers/storygraph_import.py index 8e43cabc..c312e4ba 100644 --- a/bookwyrm/importers/storygraph_import.py +++ b/bookwyrm/importers/storygraph_import.py @@ -17,7 +17,7 @@ class StorygraphImporter(Importer): data = {} data["import_source"] = self.service data["Title"] = entry["Title"] - data["Author"] = entry["Author"] + data["Author"] = entry["Authors"] data["ISBN13"] = entry["ISBN"] data["My Review"] = entry["Review"] if entry["Star Rating"]: From d40ff5c75118e6ae593087ca0026fbdb52e7e7e1 Mon Sep 17 00:00:00 2001 From: Allie Signet Date: Mon, 10 May 2021 20:11:44 -0300 Subject: [PATCH 178/252] support both author field names --- bookwyrm/importers/storygraph_import.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bookwyrm/importers/storygraph_import.py b/bookwyrm/importers/storygraph_import.py index c312e4ba..25498432 100644 --- a/bookwyrm/importers/storygraph_import.py +++ b/bookwyrm/importers/storygraph_import.py @@ -10,14 +10,14 @@ class StorygraphImporter(Importer): service = "Storygraph" # mandatory_fields : fields matching the book title and author - mandatory_fields = ["Title", "Author"] + mandatory_fields = ["Title"] def parse_fields(self, entry): """custom parsing for storygraph""" data = {} data["import_source"] = self.service data["Title"] = entry["Title"] - data["Author"] = entry["Authors"] + data["Author"] = entry["Authors"] if "Authors" in entry else entry["Author"] data["ISBN13"] = entry["ISBN"] data["My Review"] = entry["Review"] if entry["Star Rating"]: From 867a33de5731bb79a43d0824c7c7967fbf192c47 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 May 2021 16:32:24 -0700 Subject: [PATCH 179/252] Creates author template dir --- bookwyrm/templates/{ => author}/author.html | 0 bookwyrm/templates/{ => author}/edit_author.html | 0 bookwyrm/views/author.py | 6 +++--- 3 files changed, 3 insertions(+), 3 deletions(-) rename bookwyrm/templates/{ => author}/author.html (100%) rename bookwyrm/templates/{ => author}/edit_author.html (100%) diff --git a/bookwyrm/templates/author.html b/bookwyrm/templates/author/author.html similarity index 100% rename from bookwyrm/templates/author.html rename to bookwyrm/templates/author/author.html diff --git a/bookwyrm/templates/edit_author.html b/bookwyrm/templates/author/edit_author.html similarity index 100% rename from bookwyrm/templates/edit_author.html rename to bookwyrm/templates/author/edit_author.html diff --git a/bookwyrm/views/author.py b/bookwyrm/views/author.py index 41298161..e51dc7d8 100644 --- a/bookwyrm/views/author.py +++ b/bookwyrm/views/author.py @@ -29,7 +29,7 @@ class Author(View): "author": author, "books": [b.default_edition for b in books], } - return TemplateResponse(request, "author.html", data) + return TemplateResponse(request, "author/author.html", data) @method_decorator(login_required, name="dispatch") @@ -43,7 +43,7 @@ class EditAuthor(View): """info about a book""" author = get_object_or_404(models.Author, id=author_id) data = {"author": author, "form": forms.AuthorForm(instance=author)} - return TemplateResponse(request, "edit_author.html", data) + return TemplateResponse(request, "author/edit_author.html", data) def post(self, request, author_id): """edit a author cool""" @@ -52,7 +52,7 @@ class EditAuthor(View): form = forms.AuthorForm(request.POST, request.FILES, instance=author) if not form.is_valid(): data = {"author": author, "form": form} - return TemplateResponse(request, "edit_author.html", data) + return TemplateResponse(request, "author/edit_author.html", data) author = form.save() return redirect("/author/%s" % author.id) From 9bfe4f4e91f3c34858eb887b1df78dd3afc4c036 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 May 2021 16:43:40 -0700 Subject: [PATCH 180/252] Uses a different snippet for previewing books on author page --- bookwyrm/templates/author/author.html | 9 +++++++-- bookwyrm/templates/snippets/book_tiles.html | 16 ---------------- 2 files changed, 7 insertions(+), 18 deletions(-) delete mode 100644 bookwyrm/templates/snippets/book_tiles.html diff --git a/bookwyrm/templates/author/author.html b/bookwyrm/templates/author/author.html index a7ea9db5..c7fdea0e 100644 --- a/bookwyrm/templates/author/author.html +++ b/bookwyrm/templates/author/author.html @@ -34,7 +34,12 @@

    {% blocktrans with name=author.name %}Books by {{ name }}{% endblocktrans %}

    - {% include 'snippets/book_tiles.html' with books=books %} +
    + {% for book in books %} +
    + {% include 'discover/small-book.html' with book=book %} +
    + {% endfor %} +
    {% endblock %} - diff --git a/bookwyrm/templates/snippets/book_tiles.html b/bookwyrm/templates/snippets/book_tiles.html deleted file mode 100644 index 25249c96..00000000 --- a/bookwyrm/templates/snippets/book_tiles.html +++ /dev/null @@ -1,16 +0,0 @@ -
    - {% for book in books %} -
    -
    - - - {% include 'snippets/shelve_button/shelve_button.html' with book=book switch_mode=True %} -
    -
    - {% endfor %} -
    - From 443109bac3d072cf0626f98fe3ca719c390d4271 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 May 2021 17:06:22 -0700 Subject: [PATCH 181/252] Adds aliases and inventaire id to edit author form Plus consolidates some wording --- bookwyrm/templates/author/edit_author.html | 36 +++++++++++++++++----- bookwyrm/templates/book/edit_book.html | 4 +-- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/bookwyrm/templates/author/edit_author.html b/bookwyrm/templates/author/edit_author.html index b575bbb2..010d36ef 100644 --- a/bookwyrm/templates/author/edit_author.html +++ b/bookwyrm/templates/author/edit_author.html @@ -29,44 +29,64 @@

    {% trans "Metadata" %}

    -

    {{ form.name }}

    +

    {{ form.name }}

    {% for error in form.name.errors %}

    {{ error | escape }}

    {% endfor %} -

    {{ form.bio }}

    +

    + + {{ form.aliases }} + {% trans "Separate multiple values with commas." %} +

    + {% for error in form.aliases.errors %} +

    {{ error | escape }}

    + {% endfor %} + +

    {{ form.bio }}

    {% for error in form.bio.errors %}

    {{ error | escape }}

    {% endfor %} -

    {{ form.wikipedia_link }}

    +

    {{ form.wikipedia_link }}

    {% for error in form.wikipedia_link.errors %}

    {{ error | escape }}

    {% endfor %} -

    {{ form.born }}

    +

    + + +

    {% for error in form.born.errors %}

    {{ error | escape }}

    {% endfor %} -

    {{ form.died }}

    +

    + + +

    {% for error in form.died.errors %}

    {{ error | escape }}

    {% endfor %}

    {% trans "Author Identifiers" %}

    -

    {{ form.openlibrary_key }}

    +

    {{ form.openlibrary_key }}

    {% for error in form.openlibrary_key.errors %}

    {{ error | escape }}

    {% endfor %} -

    {{ form.librarything_key }}

    +

    {{ form.inventaire_id }}

    + {% for error in form.inventaire_id.errors %} +

    {{ error | escape }}

    + {% endfor %} + +

    {{ form.librarything_key }}

    {% for error in form.librarything_key.errors %}

    {{ error | escape }}

    {% endfor %} -

    {{ form.goodreads_key }}

    +

    {{ form.goodreads_key }}

    {% for error in form.goodreads_key.errors %}

    {{ error | escape }}

    {% endfor %} diff --git a/bookwyrm/templates/book/edit_book.html b/bookwyrm/templates/book/edit_book.html index bcf11126..a230e290 100644 --- a/bookwyrm/templates/book/edit_book.html +++ b/bookwyrm/templates/book/edit_book.html @@ -125,7 +125,7 @@

    {{ form.publishers }} - {% trans "Separate multiple publishers with commas." %} + {% trans "Separate multiple values with commas." %}

    {% for error in form.publishers.errors %}

    {{ error | escape }}

    @@ -162,7 +162,7 @@ {% endif %} -

    Separate multiple author names with commas.

    + {% trans "Separate multiple values with commas." %}
    From 4c99fd7f12beb61e476786ce9f414038c678e8f6 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 May 2021 17:24:10 -0700 Subject: [PATCH 182/252] Adds metadata to author view --- bookwyrm/templates/author/author.html | 51 +++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 6 deletions(-) diff --git a/bookwyrm/templates/author/author.html b/bookwyrm/templates/author/author.html index c7fdea0e..d342da47 100644 --- a/bookwyrm/templates/author/author.html +++ b/bookwyrm/templates/author/author.html @@ -1,6 +1,7 @@ {% extends 'layout.html' %} {% load i18n %} {% load bookwyrm_tags %} +{% load humanize %} {% block title %}{{ author.name }}{% endblock %} @@ -22,14 +23,52 @@
    -
    - {% if author.bio %} - {{ author.bio | to_markdown | safe }} - {% endif %} +
    + {% if author.aliases or author.born or author.died or author.wikipedia_link %} +
    +
    +
    + {% if author.aliases %} +
    +
    {% trans "Aliases:" %}
    +
    {{ author.aliases|join:', ' }}
    +
    + {% endif %} + {% if author.born %} +
    +
    {% trans "Born:" %}
    +
    {{ author.born|naturalday }}
    +
    + {% endif %} + {% if author.aliases %} +
    +
    {% trans "Died:" %}
    +
    {{ author.died|naturalday }}
    +
    + {% endif %} +
    - {% if author.wikipedia_link %} -

    {% trans "Wikipedia" %}

    + {% if author.wikipedia_link %} +

    {% trans "Wikipedia" %}

    + {% endif %} + {% if author.openlibrary_key %} +

    + {% trans "View on OpenLibrary" %} +

    + {% endif %} + {% if author.inventaire_id %} +

    + {% trans "View on Inventaire" %} +

    + {% endif %} +
    +
    {% endif %} +
    + {% if author.bio %} + {{ author.bio | to_markdown | safe }} + {% endif %} +
    From 6dae4ebd6f9fc2289af21d19f614fd2f72d7b4c8 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 May 2021 17:44:19 -0700 Subject: [PATCH 183/252] Splits list tests into two files and adds user list page tests --- bookwyrm/tests/views/test_list.py | 532 ++++------------------ bookwyrm/tests/views/test_list_actions.py | 529 +++++++++++++++++++++ 2 files changed, 606 insertions(+), 455 deletions(-) create mode 100644 bookwyrm/tests/views/test_list_actions.py diff --git a/bookwyrm/tests/views/test_list.py b/bookwyrm/tests/views/test_list.py index 3de35b1e..d767e2b9 100644 --- a/bookwyrm/tests/views/test_list.py +++ b/bookwyrm/tests/views/test_list.py @@ -122,6 +122,14 @@ class ListViews(TestCase): view = views.List.as_view() request = self.factory.get("") request.user = self.local_user + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book, + approved=True, + order=1, + ) with patch("bookwyrm.views.list.is_api_request") as is_api: is_api.return_value = False @@ -130,6 +138,32 @@ class ListViews(TestCase): result.render() self.assertEqual(result.status_code, 200) + def test_list_page_empty(self): + """there are so many views, this just makes sure it LOADS""" + view = views.List.as_view() + request = self.factory.get("") + request.user = self.local_user + + with patch("bookwyrm.views.list.is_api_request") as is_api: + is_api.return_value = False + result = view(request, self.list.id) + self.assertIsInstance(result, TemplateResponse) + result.render() + self.assertEqual(result.status_code, 200) + + def test_list_page_logged_out(self): + """there are so many views, this just makes sure it LOADS""" + view = views.List.as_view() + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book, + approved=True, + order=1, + ) + + request = self.factory.get("") request.user = self.anonymous_user with patch("bookwyrm.views.list.is_api_request") as is_api: is_api.return_value = False @@ -138,12 +172,32 @@ class ListViews(TestCase): result.render() self.assertEqual(result.status_code, 200) + def test_list_page_json_view(self): + """there are so many views, this just makes sure it LOADS""" + view = views.List.as_view() + request = self.factory.get("") + request.user = self.local_user + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book, + approved=True, + order=1, + ) + with patch("bookwyrm.views.list.is_api_request") as is_api: is_api.return_value = True result = view(request, self.list.id) self.assertIsInstance(result, ActivitypubResponse) self.assertEqual(result.status_code, 200) + def test_list_page_json_view_page(self): + """there are so many views, this just makes sure it LOADS""" + view = views.List.as_view() + request = self.factory.get("") + request.user = self.local_user + request = self.factory.get("/?page=1") request.user = self.local_user with patch("bookwyrm.views.list.is_api_request") as is_api: @@ -204,466 +258,34 @@ class ListViews(TestCase): result = view(request, self.list.id) self.assertEqual(result.status_code, 302) - def test_curate_approve(self): - """approve a pending item""" - view = views.Curate.as_view() + def test_user_lists_page(self): + """there are so many views, this just makes sure it LOADS""" + view = views.UserLists.as_view() with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): - pending = models.ListItem.objects.create( - book_list=self.list, - user=self.local_user, - book=self.book, - approved=False, - order=1, + models.List.objects.create(name="Public list", user=self.local_user) + models.List.objects.create( + name="Private list", privacy="direct", user=self.local_user ) - - request = self.factory.post( - "", - { - "item": pending.id, - "approved": "true", - }, - ) + request = self.factory.get("") request.user = self.local_user - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay") as mock: - view(request, self.list.id) + result = view(request, self.local_user.localname) + self.assertIsInstance(result, TemplateResponse) + result.render() + self.assertEqual(result.status_code, 200) - self.assertEqual(mock.call_count, 2) - activity = json.loads(mock.call_args[0][1]) - self.assertEqual(activity["type"], "Add") - self.assertEqual(activity["actor"], self.local_user.remote_id) - self.assertEqual(activity["target"], self.list.remote_id) - - pending.refresh_from_db() - self.assertEqual(self.list.books.count(), 1) - self.assertEqual(self.list.listitem_set.first(), pending) - self.assertTrue(pending.approved) - - def test_curate_reject(self): - """approve a pending item""" - view = views.Curate.as_view() + def test_user_lists_page_logged_out(self): + """there are so many views, this just makes sure it LOADS""" + view = views.UserLists.as_view() with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): - pending = models.ListItem.objects.create( - book_list=self.list, - user=self.local_user, - book=self.book, - approved=False, - order=1, + models.List.objects.create(name="Public list", user=self.local_user) + models.List.objects.create( + name="Private list", privacy="direct", user=self.local_user ) + request = self.factory.get("") + request.user = self.anonymous_user - request = self.factory.post( - "", - { - "item": pending.id, - "approved": "false", - }, - ) - request.user = self.local_user - - view(request, self.list.id) - - self.assertFalse(self.list.books.exists()) - self.assertFalse(models.ListItem.objects.exists()) - - def test_add_book(self): - """put a book on a list""" - request = self.factory.post( - "", - { - "book": self.book.id, - "list": self.list.id, - }, - ) - request.user = self.local_user - - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay") as mock: - views.list.add_book(request) - self.assertEqual(mock.call_count, 1) - activity = json.loads(mock.call_args[0][1]) - self.assertEqual(activity["type"], "Add") - self.assertEqual(activity["actor"], self.local_user.remote_id) - self.assertEqual(activity["target"], self.list.remote_id) - - item = self.list.listitem_set.get() - self.assertEqual(item.book, self.book) - self.assertEqual(item.user, self.local_user) - self.assertTrue(item.approved) - - def test_add_two_books(self): - """ - Putting two books on the list. The first should have an order value of - 1 and the second should have an order value of 2. - """ - request_one = self.factory.post( - "", - { - "book": self.book.id, - "list": self.list.id, - }, - ) - request_one.user = self.local_user - - request_two = self.factory.post( - "", - { - "book": self.book_two.id, - "list": self.list.id, - }, - ) - request_two.user = self.local_user - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): - views.list.add_book(request_one) - views.list.add_book(request_two) - - items = self.list.listitem_set.order_by("order").all() - self.assertEqual(items[0].book, self.book) - self.assertEqual(items[1].book, self.book_two) - self.assertEqual(items[0].order, 1) - self.assertEqual(items[1].order, 2) - - def test_add_three_books_and_remove_second(self): - """ - Put three books on a list and then remove the one in the middle. The - ordering of the list should adjust to not have a gap. - """ - request_one = self.factory.post( - "", - { - "book": self.book.id, - "list": self.list.id, - }, - ) - request_one.user = self.local_user - - request_two = self.factory.post( - "", - { - "book": self.book_two.id, - "list": self.list.id, - }, - ) - request_two.user = self.local_user - - request_three = self.factory.post( - "", - { - "book": self.book_three.id, - "list": self.list.id, - }, - ) - request_three.user = self.local_user - - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): - views.list.add_book(request_one) - views.list.add_book(request_two) - views.list.add_book(request_three) - - items = self.list.listitem_set.order_by("order").all() - self.assertEqual(items[0].book, self.book) - self.assertEqual(items[1].book, self.book_two) - self.assertEqual(items[2].book, self.book_three) - self.assertEqual(items[0].order, 1) - self.assertEqual(items[1].order, 2) - self.assertEqual(items[2].order, 3) - - remove_request = self.factory.post("", {"item": items[1].id}) - remove_request.user = self.local_user - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): - views.list.remove_book(remove_request, self.list.id) - items = self.list.listitem_set.order_by("order").all() - self.assertEqual(items[0].book, self.book) - self.assertEqual(items[1].book, self.book_three) - self.assertEqual(items[0].order, 1) - self.assertEqual(items[1].order, 2) - - def test_adding_book_with_a_pending_book(self): - """ - When a list contains any pending books, the pending books should have - be at the end of the list by order. If a book is added while a book is - pending, its order should precede the pending books. - """ - request = self.factory.post( - "", - { - "book": self.book_three.id, - "list": self.list.id, - }, - ) - request.user = self.local_user - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): - models.ListItem.objects.create( - book_list=self.list, - user=self.local_user, - book=self.book, - approved=True, - order=1, - ) - models.ListItem.objects.create( - book_list=self.list, - user=self.rat, - book=self.book_two, - approved=False, - order=2, - ) - views.list.add_book(request) - - items = self.list.listitem_set.order_by("order").all() - self.assertEqual(items[0].book, self.book) - self.assertEqual(items[0].order, 1) - self.assertTrue(items[0].approved) - - self.assertEqual(items[1].book, self.book_three) - self.assertEqual(items[1].order, 2) - self.assertTrue(items[1].approved) - - self.assertEqual(items[2].book, self.book_two) - self.assertEqual(items[2].order, 3) - self.assertFalse(items[2].approved) - - def test_approving_one_pending_book_from_multiple(self): - """ - When a list contains any pending books, the pending books should have - be at the end of the list by order. If a pending book is approved, then - its order should be at the end of the approved books and before the - remaining pending books. - """ - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): - models.ListItem.objects.create( - book_list=self.list, - user=self.local_user, - book=self.book, - approved=True, - order=1, - ) - models.ListItem.objects.create( - book_list=self.list, - user=self.local_user, - book=self.book_two, - approved=True, - order=2, - ) - models.ListItem.objects.create( - book_list=self.list, - user=self.rat, - book=self.book_three, - approved=False, - order=3, - ) - to_be_approved = models.ListItem.objects.create( - book_list=self.list, - user=self.rat, - book=self.book_four, - approved=False, - order=4, - ) - - view = views.Curate.as_view() - request = self.factory.post( - "", - { - "item": to_be_approved.id, - "approved": "true", - }, - ) - request.user = self.local_user - - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): - view(request, self.list.id) - - items = self.list.listitem_set.order_by("order").all() - self.assertEqual(items[0].book, self.book) - self.assertEqual(items[0].order, 1) - self.assertTrue(items[0].approved) - - self.assertEqual(items[1].book, self.book_two) - self.assertEqual(items[1].order, 2) - self.assertTrue(items[1].approved) - - self.assertEqual(items[2].book, self.book_four) - self.assertEqual(items[2].order, 3) - self.assertTrue(items[2].approved) - - self.assertEqual(items[3].book, self.book_three) - self.assertEqual(items[3].order, 4) - self.assertFalse(items[3].approved) - - def test_add_three_books_and_move_last_to_first(self): - """ - Put three books on the list and move the last book to the first - position. - """ - request_one = self.factory.post( - "", - { - "book": self.book.id, - "list": self.list.id, - }, - ) - request_one.user = self.local_user - - request_two = self.factory.post( - "", - { - "book": self.book_two.id, - "list": self.list.id, - }, - ) - request_two.user = self.local_user - - request_three = self.factory.post( - "", - { - "book": self.book_three.id, - "list": self.list.id, - }, - ) - request_three.user = self.local_user - - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): - views.list.add_book(request_one) - views.list.add_book(request_two) - views.list.add_book(request_three) - - items = self.list.listitem_set.order_by("order").all() - self.assertEqual(items[0].book, self.book) - self.assertEqual(items[1].book, self.book_two) - self.assertEqual(items[2].book, self.book_three) - self.assertEqual(items[0].order, 1) - self.assertEqual(items[1].order, 2) - self.assertEqual(items[2].order, 3) - - set_position_request = self.factory.post("", {"position": 1}) - set_position_request.user = self.local_user - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): - views.list.set_book_position(set_position_request, items[2].id) - items = self.list.listitem_set.order_by("order").all() - self.assertEqual(items[0].book, self.book_three) - self.assertEqual(items[1].book, self.book) - self.assertEqual(items[2].book, self.book_two) - self.assertEqual(items[0].order, 1) - self.assertEqual(items[1].order, 2) - self.assertEqual(items[2].order, 3) - - def test_add_book_outsider(self): - """put a book on a list""" - self.list.curation = "open" - self.list.save(broadcast=False) - request = self.factory.post( - "", - { - "book": self.book.id, - "list": self.list.id, - }, - ) - request.user = self.rat - - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay") as mock: - views.list.add_book(request) - self.assertEqual(mock.call_count, 1) - activity = json.loads(mock.call_args[0][1]) - self.assertEqual(activity["type"], "Add") - self.assertEqual(activity["actor"], self.rat.remote_id) - self.assertEqual(activity["target"], self.list.remote_id) - - item = self.list.listitem_set.get() - self.assertEqual(item.book, self.book) - self.assertEqual(item.user, self.rat) - self.assertTrue(item.approved) - - def test_add_book_pending(self): - """put a book on a list awaiting approval""" - self.list.curation = "curated" - self.list.save(broadcast=False) - request = self.factory.post( - "", - { - "book": self.book.id, - "list": self.list.id, - }, - ) - request.user = self.rat - - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay") as mock: - views.list.add_book(request) - - self.assertEqual(mock.call_count, 1) - activity = json.loads(mock.call_args[0][1]) - - self.assertEqual(activity["type"], "Add") - self.assertEqual(activity["actor"], self.rat.remote_id) - self.assertEqual(activity["target"], self.list.remote_id) - - item = self.list.listitem_set.get() - self.assertEqual(activity["object"]["id"], item.remote_id) - - self.assertEqual(item.book, self.book) - self.assertEqual(item.user, self.rat) - self.assertFalse(item.approved) - - def test_add_book_self_curated(self): - """put a book on a list automatically approved""" - self.list.curation = "curated" - self.list.save(broadcast=False) - request = self.factory.post( - "", - { - "book": self.book.id, - "list": self.list.id, - }, - ) - request.user = self.local_user - - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay") as mock: - views.list.add_book(request) - self.assertEqual(mock.call_count, 1) - activity = json.loads(mock.call_args[0][1]) - self.assertEqual(activity["type"], "Add") - self.assertEqual(activity["actor"], self.local_user.remote_id) - self.assertEqual(activity["target"], self.list.remote_id) - - item = self.list.listitem_set.get() - self.assertEqual(item.book, self.book) - self.assertEqual(item.user, self.local_user) - self.assertTrue(item.approved) - - def test_remove_book(self): - """take an item off a list""" - - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): - item = models.ListItem.objects.create( - book_list=self.list, - user=self.local_user, - book=self.book, - order=1, - ) - self.assertTrue(self.list.listitem_set.exists()) - - request = self.factory.post( - "", - { - "item": item.id, - }, - ) - request.user = self.local_user - - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): - views.list.remove_book(request, self.list.id) - self.assertFalse(self.list.listitem_set.exists()) - - def test_remove_book_unauthorized(self): - """take an item off a list""" - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): - item = models.ListItem.objects.create( - book_list=self.list, user=self.local_user, book=self.book, order=1 - ) - self.assertTrue(self.list.listitem_set.exists()) - request = self.factory.post( - "", - { - "item": item.id, - }, - ) - request.user = self.rat - - views.list.remove_book(request, self.list.id) - self.assertTrue(self.list.listitem_set.exists()) + result = view(request, self.local_user.username) + self.assertIsInstance(result, TemplateResponse) + result.render() + self.assertEqual(result.status_code, 200) diff --git a/bookwyrm/tests/views/test_list_actions.py b/bookwyrm/tests/views/test_list_actions.py new file mode 100644 index 00000000..30c44a2c --- /dev/null +++ b/bookwyrm/tests/views/test_list_actions.py @@ -0,0 +1,529 @@ +""" test for app action functionality """ +import json +from unittest.mock import patch + +from django.contrib.auth.models import AnonymousUser +from django.test import TestCase +from django.test.client import RequestFactory + +from bookwyrm import models, views + +# pylint: disable=unused-argument +class ListActionViews(TestCase): + """tag views""" + + 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.com", + "mouseword", + local=True, + localname="mouse", + remote_id="https://example.com/users/mouse", + ) + self.rat = models.User.objects.create_user( + "rat@local.com", + "rat@rat.com", + "ratword", + local=True, + localname="rat", + remote_id="https://example.com/users/rat", + ) + work = models.Work.objects.create(title="Work") + self.book = models.Edition.objects.create( + title="Example Edition", + remote_id="https://example.com/book/1", + parent_work=work, + ) + work_two = models.Work.objects.create(title="Labori") + self.book_two = models.Edition.objects.create( + title="Example Edition 2", + remote_id="https://example.com/book/2", + parent_work=work_two, + ) + work_three = models.Work.objects.create(title="Trabajar") + self.book_three = models.Edition.objects.create( + title="Example Edition 3", + remote_id="https://example.com/book/3", + parent_work=work_three, + ) + work_four = models.Work.objects.create(title="Travailler") + self.book_four = models.Edition.objects.create( + title="Example Edition 4", + remote_id="https://example.com/book/4", + parent_work=work_four, + ) + + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + self.list = models.List.objects.create( + name="Test List", user=self.local_user + ) + self.anonymous_user = AnonymousUser + self.anonymous_user.is_authenticated = False + models.SiteSettings.objects.create() + + def test_curate_approve(self): + """approve a pending item""" + view = views.Curate.as_view() + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + pending = models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book, + approved=False, + order=1, + ) + + request = self.factory.post( + "", + { + "item": pending.id, + "approved": "true", + }, + ) + request.user = self.local_user + + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay") as mock: + view(request, self.list.id) + + self.assertEqual(mock.call_count, 2) + activity = json.loads(mock.call_args[0][1]) + self.assertEqual(activity["type"], "Add") + self.assertEqual(activity["actor"], self.local_user.remote_id) + self.assertEqual(activity["target"], self.list.remote_id) + + pending.refresh_from_db() + self.assertEqual(self.list.books.count(), 1) + self.assertEqual(self.list.listitem_set.first(), pending) + self.assertTrue(pending.approved) + + def test_curate_reject(self): + """approve a pending item""" + view = views.Curate.as_view() + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + pending = models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book, + approved=False, + order=1, + ) + + request = self.factory.post( + "", + { + "item": pending.id, + "approved": "false", + }, + ) + request.user = self.local_user + + view(request, self.list.id) + + self.assertFalse(self.list.books.exists()) + self.assertFalse(models.ListItem.objects.exists()) + + def test_add_book(self): + """put a book on a list""" + request = self.factory.post( + "", + { + "book": self.book.id, + "list": self.list.id, + }, + ) + request.user = self.local_user + + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay") as mock: + views.list.add_book(request) + self.assertEqual(mock.call_count, 1) + activity = json.loads(mock.call_args[0][1]) + self.assertEqual(activity["type"], "Add") + self.assertEqual(activity["actor"], self.local_user.remote_id) + self.assertEqual(activity["target"], self.list.remote_id) + + item = self.list.listitem_set.get() + self.assertEqual(item.book, self.book) + self.assertEqual(item.user, self.local_user) + self.assertTrue(item.approved) + + def test_add_two_books(self): + """ + Putting two books on the list. The first should have an order value of + 1 and the second should have an order value of 2. + """ + request_one = self.factory.post( + "", + { + "book": self.book.id, + "list": self.list.id, + }, + ) + request_one.user = self.local_user + + request_two = self.factory.post( + "", + { + "book": self.book_two.id, + "list": self.list.id, + }, + ) + request_two.user = self.local_user + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + views.list.add_book(request_one) + views.list.add_book(request_two) + + items = self.list.listitem_set.order_by("order").all() + self.assertEqual(items[0].book, self.book) + self.assertEqual(items[1].book, self.book_two) + self.assertEqual(items[0].order, 1) + self.assertEqual(items[1].order, 2) + + def test_add_three_books_and_remove_second(self): + """ + Put three books on a list and then remove the one in the middle. The + ordering of the list should adjust to not have a gap. + """ + request_one = self.factory.post( + "", + { + "book": self.book.id, + "list": self.list.id, + }, + ) + request_one.user = self.local_user + + request_two = self.factory.post( + "", + { + "book": self.book_two.id, + "list": self.list.id, + }, + ) + request_two.user = self.local_user + + request_three = self.factory.post( + "", + { + "book": self.book_three.id, + "list": self.list.id, + }, + ) + request_three.user = self.local_user + + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + views.list.add_book(request_one) + views.list.add_book(request_two) + views.list.add_book(request_three) + + items = self.list.listitem_set.order_by("order").all() + self.assertEqual(items[0].book, self.book) + self.assertEqual(items[1].book, self.book_two) + self.assertEqual(items[2].book, self.book_three) + self.assertEqual(items[0].order, 1) + self.assertEqual(items[1].order, 2) + self.assertEqual(items[2].order, 3) + + remove_request = self.factory.post("", {"item": items[1].id}) + remove_request.user = self.local_user + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + views.list.remove_book(remove_request, self.list.id) + items = self.list.listitem_set.order_by("order").all() + self.assertEqual(items[0].book, self.book) + self.assertEqual(items[1].book, self.book_three) + self.assertEqual(items[0].order, 1) + self.assertEqual(items[1].order, 2) + + def test_adding_book_with_a_pending_book(self): + """ + When a list contains any pending books, the pending books should have + be at the end of the list by order. If a book is added while a book is + pending, its order should precede the pending books. + """ + request = self.factory.post( + "", + { + "book": self.book_three.id, + "list": self.list.id, + }, + ) + request.user = self.local_user + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book, + approved=True, + order=1, + ) + models.ListItem.objects.create( + book_list=self.list, + user=self.rat, + book=self.book_two, + approved=False, + order=2, + ) + views.list.add_book(request) + + items = self.list.listitem_set.order_by("order").all() + self.assertEqual(items[0].book, self.book) + self.assertEqual(items[0].order, 1) + self.assertTrue(items[0].approved) + + self.assertEqual(items[1].book, self.book_three) + self.assertEqual(items[1].order, 2) + self.assertTrue(items[1].approved) + + self.assertEqual(items[2].book, self.book_two) + self.assertEqual(items[2].order, 3) + self.assertFalse(items[2].approved) + + def test_approving_one_pending_book_from_multiple(self): + """ + When a list contains any pending books, the pending books should have + be at the end of the list by order. If a pending book is approved, then + its order should be at the end of the approved books and before the + remaining pending books. + """ + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book, + approved=True, + order=1, + ) + models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book_two, + approved=True, + order=2, + ) + models.ListItem.objects.create( + book_list=self.list, + user=self.rat, + book=self.book_three, + approved=False, + order=3, + ) + to_be_approved = models.ListItem.objects.create( + book_list=self.list, + user=self.rat, + book=self.book_four, + approved=False, + order=4, + ) + + view = views.Curate.as_view() + request = self.factory.post( + "", + { + "item": to_be_approved.id, + "approved": "true", + }, + ) + request.user = self.local_user + + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + view(request, self.list.id) + + items = self.list.listitem_set.order_by("order").all() + self.assertEqual(items[0].book, self.book) + self.assertEqual(items[0].order, 1) + self.assertTrue(items[0].approved) + + self.assertEqual(items[1].book, self.book_two) + self.assertEqual(items[1].order, 2) + self.assertTrue(items[1].approved) + + self.assertEqual(items[2].book, self.book_four) + self.assertEqual(items[2].order, 3) + self.assertTrue(items[2].approved) + + self.assertEqual(items[3].book, self.book_three) + self.assertEqual(items[3].order, 4) + self.assertFalse(items[3].approved) + + def test_add_three_books_and_move_last_to_first(self): + """ + Put three books on the list and move the last book to the first + position. + """ + request_one = self.factory.post( + "", + { + "book": self.book.id, + "list": self.list.id, + }, + ) + request_one.user = self.local_user + + request_two = self.factory.post( + "", + { + "book": self.book_two.id, + "list": self.list.id, + }, + ) + request_two.user = self.local_user + + request_three = self.factory.post( + "", + { + "book": self.book_three.id, + "list": self.list.id, + }, + ) + request_three.user = self.local_user + + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + views.list.add_book(request_one) + views.list.add_book(request_two) + views.list.add_book(request_three) + + items = self.list.listitem_set.order_by("order").all() + self.assertEqual(items[0].book, self.book) + self.assertEqual(items[1].book, self.book_two) + self.assertEqual(items[2].book, self.book_three) + self.assertEqual(items[0].order, 1) + self.assertEqual(items[1].order, 2) + self.assertEqual(items[2].order, 3) + + set_position_request = self.factory.post("", {"position": 1}) + set_position_request.user = self.local_user + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + views.list.set_book_position(set_position_request, items[2].id) + items = self.list.listitem_set.order_by("order").all() + self.assertEqual(items[0].book, self.book_three) + self.assertEqual(items[1].book, self.book) + self.assertEqual(items[2].book, self.book_two) + self.assertEqual(items[0].order, 1) + self.assertEqual(items[1].order, 2) + self.assertEqual(items[2].order, 3) + + def test_add_book_outsider(self): + """put a book on a list""" + self.list.curation = "open" + self.list.save(broadcast=False) + request = self.factory.post( + "", + { + "book": self.book.id, + "list": self.list.id, + }, + ) + request.user = self.rat + + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay") as mock: + views.list.add_book(request) + self.assertEqual(mock.call_count, 1) + activity = json.loads(mock.call_args[0][1]) + self.assertEqual(activity["type"], "Add") + self.assertEqual(activity["actor"], self.rat.remote_id) + self.assertEqual(activity["target"], self.list.remote_id) + + item = self.list.listitem_set.get() + self.assertEqual(item.book, self.book) + self.assertEqual(item.user, self.rat) + self.assertTrue(item.approved) + + def test_add_book_pending(self): + """put a book on a list awaiting approval""" + self.list.curation = "curated" + self.list.save(broadcast=False) + request = self.factory.post( + "", + { + "book": self.book.id, + "list": self.list.id, + }, + ) + request.user = self.rat + + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay") as mock: + views.list.add_book(request) + + self.assertEqual(mock.call_count, 1) + activity = json.loads(mock.call_args[0][1]) + + self.assertEqual(activity["type"], "Add") + self.assertEqual(activity["actor"], self.rat.remote_id) + self.assertEqual(activity["target"], self.list.remote_id) + + item = self.list.listitem_set.get() + self.assertEqual(activity["object"]["id"], item.remote_id) + + self.assertEqual(item.book, self.book) + self.assertEqual(item.user, self.rat) + self.assertFalse(item.approved) + + def test_add_book_self_curated(self): + """put a book on a list automatically approved""" + self.list.curation = "curated" + self.list.save(broadcast=False) + request = self.factory.post( + "", + { + "book": self.book.id, + "list": self.list.id, + }, + ) + request.user = self.local_user + + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay") as mock: + views.list.add_book(request) + self.assertEqual(mock.call_count, 1) + activity = json.loads(mock.call_args[0][1]) + self.assertEqual(activity["type"], "Add") + self.assertEqual(activity["actor"], self.local_user.remote_id) + self.assertEqual(activity["target"], self.list.remote_id) + + item = self.list.listitem_set.get() + self.assertEqual(item.book, self.book) + self.assertEqual(item.user, self.local_user) + self.assertTrue(item.approved) + + def test_remove_book(self): + """take an item off a list""" + + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + item = models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=self.book, + order=1, + ) + self.assertTrue(self.list.listitem_set.exists()) + + request = self.factory.post( + "", + { + "item": item.id, + }, + ) + request.user = self.local_user + + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + views.list.remove_book(request, self.list.id) + self.assertFalse(self.list.listitem_set.exists()) + + def test_remove_book_unauthorized(self): + """take an item off a list""" + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + item = models.ListItem.objects.create( + book_list=self.list, user=self.local_user, book=self.book, order=1 + ) + self.assertTrue(self.list.listitem_set.exists()) + request = self.factory.post( + "", + { + "item": item.id, + }, + ) + request.user = self.rat + + views.list.remove_book(request, self.list.id) + self.assertTrue(self.list.listitem_set.exists()) From 92e2c70baf331e8e8bd214dccfaa9785a3fb20ba Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 May 2021 18:28:31 -0700 Subject: [PATCH 184/252] Fixes list sorting by rating --- bookwyrm/tests/views/test_list.py | 49 +++++++++++++++++++++++++++++++ bookwyrm/views/list.py | 28 +++++++----------- 2 files changed, 59 insertions(+), 18 deletions(-) diff --git a/bookwyrm/tests/views/test_list.py b/bookwyrm/tests/views/test_list.py index d767e2b9..d6ad0e86 100644 --- a/bookwyrm/tests/views/test_list.py +++ b/bookwyrm/tests/views/test_list.py @@ -138,6 +138,55 @@ class ListViews(TestCase): result.render() self.assertEqual(result.status_code, 200) + def test_list_page_sorted(self): + """there are so many views, this just makes sure it LOADS""" + view = views.List.as_view() + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): + for (i, book) in enumerate([self.book, self.book_two, self.book_three]): + models.ListItem.objects.create( + book_list=self.list, + user=self.local_user, + book=book, + approved=True, + order=i + 1, + ) + + request = self.factory.get("/?sort_by=order") + request.user = self.local_user + with patch("bookwyrm.views.list.is_api_request") as is_api: + is_api.return_value = False + result = view(request, self.list.id) + self.assertIsInstance(result, TemplateResponse) + result.render() + self.assertEqual(result.status_code, 200) + + request = self.factory.get("/?sort_by=title") + request.user = self.local_user + with patch("bookwyrm.views.list.is_api_request") as is_api: + is_api.return_value = False + result = view(request, self.list.id) + self.assertIsInstance(result, TemplateResponse) + result.render() + self.assertEqual(result.status_code, 200) + + request = self.factory.get("/?sort_by=rating") + request.user = self.local_user + with patch("bookwyrm.views.list.is_api_request") as is_api: + is_api.return_value = False + result = view(request, self.list.id) + self.assertIsInstance(result, TemplateResponse) + result.render() + self.assertEqual(result.status_code, 200) + + request = self.factory.get("/?sort_by=sdkfh") + request.user = self.local_user + with patch("bookwyrm.views.list.is_api_request") as is_api: + is_api.return_value = False + result = view(request, self.list.id) + self.assertIsInstance(result, TemplateResponse) + result.render() + self.assertEqual(result.status_code, 200) + def test_list_page_empty(self): """there are so many views, this just makes sure it LOADS""" view = views.List.as_view() diff --git a/bookwyrm/views/list.py b/bookwyrm/views/list.py index bfd61790..75bb5d48 100644 --- a/bookwyrm/views/list.py +++ b/bookwyrm/views/list.py @@ -5,7 +5,7 @@ from urllib.parse import urlencode from django.contrib.auth.decorators import login_required from django.core.paginator import Paginator from django.db import IntegrityError, transaction -from django.db.models import Avg, Count, Q, Max +from django.db.models import Avg, Count, DecimalField, Q, Max from django.db.models.functions import Coalesce from django.http import HttpResponseNotFound, HttpResponseBadRequest, HttpResponse from django.shortcuts import get_object_or_404, redirect @@ -108,31 +108,23 @@ class List(View): if direction not in ("ascending", "descending"): direction = "ascending" - internal_sort_by = { + directional_sort_by = { "order": "order", "title": "book__title", "rating": "average_rating", - } - directional_sort_by = internal_sort_by[sort_by] + }[sort_by] if direction == "descending": directional_sort_by = "-" + directional_sort_by - if sort_by == "order": - items = book_list.listitem_set.filter(approved=True).order_by( - directional_sort_by - ) - elif sort_by == "title": - items = book_list.listitem_set.filter(approved=True).order_by( - directional_sort_by - ) - elif sort_by == "rating": - items = ( - book_list.listitem_set.annotate( - average_rating=Avg(Coalesce("book__review__rating", 0)) + items = book_list.listitem_set + if sort_by == "rating": + items = items.annotate( + average_rating=Avg( + Coalesce("book__review__rating", 0.0), + output_field=DecimalField(), ) - .filter(approved=True) - .order_by(directional_sort_by) ) + items = items.filter(approved=True).order_by(directional_sort_by) paginated = Paginator(items, PAGE_LENGTH) From 680f300e7c100e3923c109f0bc0cc778a1ce4694 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 May 2021 08:15:02 -0700 Subject: [PATCH 185/252] Preserve width when cover images fail to load --- bookwyrm/templates/snippets/book_cover.html | 1 + 1 file changed, 1 insertion(+) diff --git a/bookwyrm/templates/snippets/book_cover.html b/bookwyrm/templates/snippets/book_cover.html index 5f12858f..3c6f212d 100644 --- a/bookwyrm/templates/snippets/book_cover.html +++ b/bookwyrm/templates/snippets/book_cover.html @@ -6,6 +6,7 @@
    = self.max_query_count: - return False - return True - def get_or_create_book(self, remote_id): """translate arbitrary json into an Activitypub dataclass""" # first, check if we have the origin_id saved diff --git a/bookwyrm/migrations/0074_auto_20210511_1651.py b/bookwyrm/migrations/0074_auto_20210511_1651.py new file mode 100644 index 00000000..51e9e09c --- /dev/null +++ b/bookwyrm/migrations/0074_auto_20210511_1651.py @@ -0,0 +1,34 @@ +# Generated by Django 3.2 on 2021-05-11 16:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0073_sitesettings_footer_item"), + ] + + operations = [ + migrations.RemoveField( + model_name="connector", + name="max_query_count", + ), + migrations.RemoveField( + model_name="connector", + name="politeness_delay", + ), + migrations.RemoveField( + model_name="connector", + name="query_count", + ), + migrations.RemoveField( + model_name="connector", + name="query_count_expiry", + ), + migrations.AddField( + model_name="connector", + name="active", + field=models.BooleanField(default=True), + ), + ] diff --git a/bookwyrm/models/connector.py b/bookwyrm/models/connector.py index 625cdbed..4debcc3d 100644 --- a/bookwyrm/models/connector.py +++ b/bookwyrm/models/connector.py @@ -17,6 +17,7 @@ class Connector(BookWyrmModel): local = models.BooleanField(default=False) connector_file = models.CharField(max_length=255, choices=ConnectorFiles.choices) api_key = models.CharField(max_length=255, null=True, blank=True) + active = models.BooleanField(default=True) base_url = models.CharField(max_length=255) books_url = models.CharField(max_length=255) @@ -24,13 +25,6 @@ class Connector(BookWyrmModel): search_url = models.CharField(max_length=255, null=True, blank=True) isbn_search_url = models.CharField(max_length=255, null=True, blank=True) - politeness_delay = models.IntegerField(null=True, blank=True) # seconds - max_query_count = models.IntegerField(null=True, blank=True) - # how many queries executed in a unit of time, like a day - query_count = models.IntegerField(default=0) - # when to reset the query count back to 0 (ie, after 1 day) - query_count_expiry = models.DateTimeField(auto_now_add=True, blank=True) - def __str__(self): return "{} ({})".format( self.identifier, diff --git a/bookwyrm/tests/connectors/test_abstract_connector.py b/bookwyrm/tests/connectors/test_abstract_connector.py index 4497b4e5..5c50e4b7 100644 --- a/bookwyrm/tests/connectors/test_abstract_connector.py +++ b/bookwyrm/tests/connectors/test_abstract_connector.py @@ -84,13 +84,6 @@ class AbstractConnector(TestCase): """barebones connector for search with defaults""" self.assertIsInstance(self.connector.book_mappings, list) - def test_is_available(self): - """this isn't used....""" - self.assertTrue(self.connector.is_available()) - self.connector.max_query_count = 1 - self.connector.connector.query_count = 2 - self.assertFalse(self.connector.is_available()) - def test_get_or_create_book_existing(self): """find an existing book by remote/origin id""" self.assertEqual(models.Book.objects.count(), 1) From 19f788b9aa36004e872aac3dd3adbb7b620241e5 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 May 2021 11:31:02 -0700 Subject: [PATCH 187/252] Deactivate connectors related to blocked federated servers --- ...10511_1651.py => 0074_auto_20210511_1829.py} | 16 +++++++++++++++- bookwyrm/models/base_model.py | 10 ++++++++++ bookwyrm/models/connector.py | 5 ++++- bookwyrm/models/federated_server.py | 17 +++++++++++++++++ bookwyrm/models/user.py | 12 +----------- 5 files changed, 47 insertions(+), 13 deletions(-) rename bookwyrm/migrations/{0074_auto_20210511_1651.py => 0074_auto_20210511_1829.py} (60%) diff --git a/bookwyrm/migrations/0074_auto_20210511_1651.py b/bookwyrm/migrations/0074_auto_20210511_1829.py similarity index 60% rename from bookwyrm/migrations/0074_auto_20210511_1651.py rename to bookwyrm/migrations/0074_auto_20210511_1829.py index 51e9e09c..287a51ad 100644 --- a/bookwyrm/migrations/0074_auto_20210511_1651.py +++ b/bookwyrm/migrations/0074_auto_20210511_1829.py @@ -1,4 +1,4 @@ -# Generated by Django 3.2 on 2021-05-11 16:51 +# Generated by Django 3.2 on 2021-05-11 18:29 from django.db import migrations, models @@ -31,4 +31,18 @@ class Migration(migrations.Migration): name="active", field=models.BooleanField(default=True), ), + migrations.AddField( + model_name="connector", + name="deactivation_reason", + field=models.CharField( + blank=True, + choices=[ + ("self_deletion", "Self Deletion"), + ("moderator_deletion", "Moderator Deletion"), + ("domain_block", "Domain Block"), + ], + max_length=255, + null=True, + ), + ), ] diff --git a/bookwyrm/models/base_model.py b/bookwyrm/models/base_model.py index e85ff733..2cb7c036 100644 --- a/bookwyrm/models/base_model.py +++ b/bookwyrm/models/base_model.py @@ -6,6 +6,16 @@ from bookwyrm.settings import DOMAIN from .fields import RemoteIdField +DeactivationReason = models.TextChoices( + "DeactivationReason", + [ + "self_deletion", + "moderator_deletion", + "domain_block", + ], +) + + class BookWyrmModel(models.Model): """shared fields""" diff --git a/bookwyrm/models/connector.py b/bookwyrm/models/connector.py index 4debcc3d..2d671790 100644 --- a/bookwyrm/models/connector.py +++ b/bookwyrm/models/connector.py @@ -2,7 +2,7 @@ from django.db import models from bookwyrm.connectors.settings import CONNECTORS -from .base_model import BookWyrmModel +from .base_model import BookWyrmModel, DeactivationReason ConnectorFiles = models.TextChoices("ConnectorFiles", CONNECTORS) @@ -18,6 +18,9 @@ class Connector(BookWyrmModel): connector_file = models.CharField(max_length=255, choices=ConnectorFiles.choices) api_key = models.CharField(max_length=255, null=True, blank=True) active = models.BooleanField(default=True) + deactivation_reason = models.CharField( + max_length=255, choices=DeactivationReason.choices, null=True, blank=True + ) base_url = models.CharField(max_length=255) books_url = models.CharField(max_length=255) diff --git a/bookwyrm/models/federated_server.py b/bookwyrm/models/federated_server.py index 7d446ca0..86635ab0 100644 --- a/bookwyrm/models/federated_server.py +++ b/bookwyrm/models/federated_server.py @@ -1,5 +1,6 @@ """ connections to external ActivityPub servers """ from urllib.parse import urlparse +from django.apps import apps from django.db import models from .base_model import BookWyrmModel @@ -34,6 +35,13 @@ class FederatedServer(BookWyrmModel): is_active=False, deactivation_reason="domain_block" ) + # check for related connectors + if self.application_type == "bookwyrm": + connector_model = apps.get_model("bookwyrm.Connector", require_read=True) + connector_model.objects.filter( + identifier=self.server_name, active=True + ).update(active=False, deactivation_reason="domain_block") + def unblock(self): """unblock a server""" self.status = "federated" @@ -43,6 +51,15 @@ class FederatedServer(BookWyrmModel): is_active=True, deactivation_reason=None ) + # check for related connectors + if self.application_type == "bookwyrm": + connector_model = apps.get_model("bookwyrm.Connector", require_read=True) + connector_model.objects.filter( + identifier=self.server_name, + active=False, + deactivation_reason="domain_block", + ).update(active=True, deactivation_reason=None) + @classmethod def is_blocked(cls, url): """look up if a domain is blocked""" diff --git a/bookwyrm/models/user.py b/bookwyrm/models/user.py index 5f0e64e3..7d821c5b 100644 --- a/bookwyrm/models/user.py +++ b/bookwyrm/models/user.py @@ -19,21 +19,11 @@ from bookwyrm.signatures import create_key_pair from bookwyrm.tasks import app from bookwyrm.utils import regex from .activitypub_mixin import OrderedCollectionPageMixin, ActivitypubMixin -from .base_model import BookWyrmModel +from .base_model import BookWyrmModel, DeactivationReason from .federated_server import FederatedServer from . import fields, Review -DeactivationReason = models.TextChoices( - "DeactivationReason", - [ - "self_deletion", - "moderator_deletion", - "domain_block", - ], -) - - class User(OrderedCollectionPageMixin, AbstractUser): """a user who wants to read books""" From 9b42bba236d6ce1db6b6598084eb3a15cf8dc71b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 May 2021 11:34:58 -0700 Subject: [PATCH 188/252] Filter out inactive connectors --- bookwyrm/connectors/connector_manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/connectors/connector_manager.py b/bookwyrm/connectors/connector_manager.py index 43489669..95c5959d 100644 --- a/bookwyrm/connectors/connector_manager.py +++ b/bookwyrm/connectors/connector_manager.py @@ -87,7 +87,7 @@ def first_search_result(query, min_confidence=0.1): def get_connectors(): """load all connectors""" - for info in models.Connector.objects.order_by("priority").all(): + for info in models.Connector.objects.filter(active=True).order_by("priority").all(): yield load_connector(info) From d7a8dd5e197f2570fd231af48eef6bd4c7b2aaf8 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 May 2021 13:20:17 -0700 Subject: [PATCH 189/252] Removes outdated field form abstract connector --- bookwyrm/connectors/abstract_connector.py | 1 - 1 file changed, 1 deletion(-) diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index f9496aa0..60667815 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -30,7 +30,6 @@ class AbstractMinimalConnector(ABC): "covers_url", "search_url", "isbn_search_url", - "max_query_count", "name", "identifier", "local", From 1fbd6537b7ed4ed01da0a9d3f4fd605f4eb30524 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 May 2021 13:28:52 -0700 Subject: [PATCH 190/252] Remove unnecessary tags from import page --- bookwyrm/templates/import_status.html | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/bookwyrm/templates/import_status.html b/bookwyrm/templates/import_status.html index e06392a8..b1145611 100644 --- a/bookwyrm/templates/import_status.html +++ b/bookwyrm/templates/import_status.html @@ -1,6 +1,5 @@ {% extends 'layout.html' %} {% load i18n %} -{% load bookwyrm_tags %} {% load humanize %} {% block title %}{% trans "Import Status" %}{% endblock %} @@ -54,8 +53,8 @@

    {{ item.fail_reason }}. @@ -90,8 +89,8 @@

  • Line {{ item.index }}: - {{ item.data|dict_key:'Title' }} by - {{ item.data|dict_key:'Author' }} + {{ item.data.Title }} by + {{ item.data.Author }}

    {{ item.fail_reason }}. @@ -130,10 +129,10 @@ {% endif %} - {{ item.data|dict_key:'Title' }} + {{ item.data.Title }} - {{ item.data|dict_key:'Author' }} + {{ item.data.Author }} {% if item.book %} From 63172ecf0015ee0f8c9aef395fd3793d1af6e9ed Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 May 2021 13:54:38 -0700 Subject: [PATCH 191/252] Fixes ratings on shelf pages --- bookwyrm/templates/user/shelf/shelf.html | 8 +++++--- bookwyrm/views/shelf.py | 20 ++++++++++++++++---- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/bookwyrm/templates/user/shelf/shelf.html b/bookwyrm/templates/user/shelf/shelf.html index 639ab502..86610629 100644 --- a/bookwyrm/templates/user/shelf/shelf.html +++ b/bookwyrm/templates/user/shelf/shelf.html @@ -79,7 +79,9 @@ {% trans "Shelved" %} {% trans "Started" %} {% trans "Finished" %} - {% if ratings %}{% trans "Rating" %}{% endif %} + {% if request.user.is_authenticated %} + {% trans "Rating" %} + {% endif %} {% if shelf.user == request.user %} {% endif %} @@ -108,9 +110,9 @@ {{ read_through.finish_date | naturalday |default_if_none:""}} - {% if ratings %} + {% if request.user.is_authenticated %} - {% include 'snippets/stars.html' with rating=ratings|dict_key:book.id %} + {% include 'snippets/stars.html' with rating=book.rating %} {% endif %} {% if shelf.user == request.user %} diff --git a/bookwyrm/views/shelf.py b/bookwyrm/views/shelf.py index 5312ac21..758e290e 100644 --- a/bookwyrm/views/shelf.py +++ b/bookwyrm/views/shelf.py @@ -2,6 +2,7 @@ from collections import namedtuple from django.db import IntegrityError +from django.db.models import Count, OuterRef, Subquery, F, Q from django.contrib.auth.decorators import login_required from django.core.paginator import Paginator from django.http import HttpResponseBadRequest, HttpResponseNotFound @@ -37,30 +38,41 @@ class Shelf(View): return HttpResponseNotFound() if not shelf.visible_to_user(request.user): return HttpResponseNotFound() + books = shelf.books # this is a constructed "all books" view, with a fake "shelf" obj else: FakeShelf = namedtuple( "Shelf", ("identifier", "name", "user", "books", "privacy") ) books = models.Edition.objects.filter( + # privacy is ensured because the shelves are already filtered above shelfbook__shelf__in=shelves.all() ).distinct() shelf = FakeShelf("all", _("All books"), user, books, "public") - is_self = request.user == user - if is_api_request(request): return ActivitypubResponse(shelf.to_activity(**request.GET)) + reviews = privacy_filter( + request.user, + models.Review.objects.filter( + user=user, + rating__isnull=False, + book__id=OuterRef("id"), + ), + ).order_by("-published_date") + + books = books.annotate(rating=Subquery(reviews.values("rating")[:1])) + paginated = Paginator( - shelf.books.order_by("-updated_date"), + books.order_by("-updated_date"), PAGE_LENGTH, ) page = paginated.get_page(request.GET.get("page")) data = { "user": user, - "is_self": is_self, + "is_self": request.user == user, "shelves": shelves.all(), "shelf": shelf, "books": page, From 04cc2fb3f31ae557328dfaf660fc41a722ad746d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 May 2021 13:55:46 -0700 Subject: [PATCH 192/252] Removes unused dict_key filter --- bookwyrm/templatetags/bookwyrm_tags.py | 6 ------ bookwyrm/tests/test_templatetags.py | 7 ------- 2 files changed, 13 deletions(-) diff --git a/bookwyrm/templatetags/bookwyrm_tags.py b/bookwyrm/templatetags/bookwyrm_tags.py index eda3d102..caab30a8 100644 --- a/bookwyrm/templatetags/bookwyrm_tags.py +++ b/bookwyrm/templatetags/bookwyrm_tags.py @@ -11,12 +11,6 @@ from bookwyrm.views.status import to_markdown register = template.Library() -@register.filter(name="dict_key") -def dict_key(d, k): - """Returns the given key from a dictionary.""" - return d.get(k) or 0 - - @register.filter(name="rating") def get_rating(book, user): """get the overall rating of a book""" diff --git a/bookwyrm/tests/test_templatetags.py b/bookwyrm/tests/test_templatetags.py index a92e887a..1c05e992 100644 --- a/bookwyrm/tests/test_templatetags.py +++ b/bookwyrm/tests/test_templatetags.py @@ -2,7 +2,6 @@ import re from unittest.mock import patch -from dateutil.relativedelta import relativedelta from django.test import TestCase from django.utils import timezone @@ -33,12 +32,6 @@ class TemplateTags(TestCase): ) self.book = models.Edition.objects.create(title="Test Book") - def test_dict_key(self, _): - """just getting a value out of a dict""" - test_dict = {"a": 1, "b": 3} - self.assertEqual(bookwyrm_tags.dict_key(test_dict, "a"), 1) - self.assertEqual(bookwyrm_tags.dict_key(test_dict, "c"), 0) - def test_get_user_rating(self, _): """get a user's most recent rating of a book""" with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): From 3de8ae00aed608c656e888875a570ef0b6cea4ab Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 May 2021 14:00:23 -0700 Subject: [PATCH 193/252] Removes unused templatetag --- bookwyrm/templatetags/bookwyrm_tags.py | 6 ------ bookwyrm/tests/test_templatetags.py | 13 ------------- 2 files changed, 19 deletions(-) diff --git a/bookwyrm/templatetags/bookwyrm_tags.py b/bookwyrm/templatetags/bookwyrm_tags.py index caab30a8..fa2998e6 100644 --- a/bookwyrm/templatetags/bookwyrm_tags.py +++ b/bookwyrm/templatetags/bookwyrm_tags.py @@ -43,12 +43,6 @@ def get_user_identifier(user): return user.localname if user.localname else user.username -@register.filter(name="notification_count") -def get_notification_count(user): - """how many UNREAD notifications are there""" - return user.notification_set.filter(read=False).count() - - @register.filter(name="replies") def get_replies(status): """get all direct replies to a status""" diff --git a/bookwyrm/tests/test_templatetags.py b/bookwyrm/tests/test_templatetags.py index 1c05e992..df4df671 100644 --- a/bookwyrm/tests/test_templatetags.py +++ b/bookwyrm/tests/test_templatetags.py @@ -53,19 +53,6 @@ class TemplateTags(TestCase): bookwyrm_tags.get_user_identifier(self.remote_user), "rat@example.com" ) - def test_get_notification_count(self, _): - """just countin'""" - self.assertEqual(bookwyrm_tags.get_notification_count(self.user), 0) - - models.Notification.objects.create(user=self.user, notification_type="FAVORITE") - models.Notification.objects.create(user=self.user, notification_type="MENTION") - - models.Notification.objects.create( - user=self.remote_user, notification_type="FOLLOW" - ) - - self.assertEqual(bookwyrm_tags.get_notification_count(self.user), 2) - def test_get_replies(self, _): """direct replies to a status""" with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): From f5eb5f982ab1d32c5388cf5651876a36d181f8d2 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 May 2021 14:04:45 -0700 Subject: [PATCH 194/252] Removes filter for checking for follow requests --- .../snippets/follow_request_buttons.html | 3 +-- bookwyrm/templatetags/bookwyrm_tags.py | 13 ------------- bookwyrm/tests/test_templatetags.py | 18 ------------------ 3 files changed, 1 insertion(+), 33 deletions(-) diff --git a/bookwyrm/templates/snippets/follow_request_buttons.html b/bookwyrm/templates/snippets/follow_request_buttons.html index 42e69153..d9101802 100644 --- a/bookwyrm/templates/snippets/follow_request_buttons.html +++ b/bookwyrm/templates/snippets/follow_request_buttons.html @@ -1,6 +1,5 @@ {% load i18n %} -{% load bookwyrm_tags %} -{% if request.user|follow_request_exists:user %} +{% if request.user in user.follow_requests.all %}

    {% csrf_token %} diff --git a/bookwyrm/templatetags/bookwyrm_tags.py b/bookwyrm/templatetags/bookwyrm_tags.py index fa2998e6..81019fe5 100644 --- a/bookwyrm/templatetags/bookwyrm_tags.py +++ b/bookwyrm/templatetags/bookwyrm_tags.py @@ -79,19 +79,6 @@ def get_user_boosted(user, status): return user.id in status.boosters.all().values_list("user", flat=True) -@register.filter(name="follow_request_exists") -def follow_request_exists(user, requester): - """see if there is a pending follow request for a user""" - try: - models.UserFollowRequest.objects.filter( - user_subject=requester, - user_object=user, - ).get() - return True - except models.UserFollowRequest.DoesNotExist: - return False - - @register.filter(name="boosted_status") def get_boosted(boost): """load a boosted status. have to do this or it wont get foregin keys""" diff --git a/bookwyrm/tests/test_templatetags.py b/bookwyrm/tests/test_templatetags.py index df4df671..3e2ecf37 100644 --- a/bookwyrm/tests/test_templatetags.py +++ b/bookwyrm/tests/test_templatetags.py @@ -113,24 +113,6 @@ class TemplateTags(TestCase): models.Boost.objects.create(user=self.user, boosted_status=status) self.assertTrue(bookwyrm_tags.get_user_boosted(self.user, status)) - def test_follow_request_exists(self, _): - """does a user want to follow""" - self.assertFalse( - bookwyrm_tags.follow_request_exists(self.user, self.remote_user) - ) - - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): - models.UserFollowRequest.objects.create( - user_subject=self.user, user_object=self.remote_user - ) - - self.assertFalse( - bookwyrm_tags.follow_request_exists(self.user, self.remote_user) - ) - self.assertTrue( - bookwyrm_tags.follow_request_exists(self.remote_user, self.user) - ) - def test_get_boosted(self, _): """load a boosted status""" with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): From acd26012bea564850bda7cf9c1b1a67b7be592f1 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 May 2021 14:12:28 -0700 Subject: [PATCH 195/252] Removes more unused filters --- bookwyrm/templatetags/bookwyrm_tags.py | 31 ++------------------------ bookwyrm/tests/test_templatetags.py | 25 --------------------- 2 files changed, 2 insertions(+), 54 deletions(-) diff --git a/bookwyrm/templatetags/bookwyrm_tags.py b/bookwyrm/templatetags/bookwyrm_tags.py index 81019fe5..c992b9e5 100644 --- a/bookwyrm/templatetags/bookwyrm_tags.py +++ b/bookwyrm/templatetags/bookwyrm_tags.py @@ -81,11 +81,9 @@ def get_user_boosted(user, status): @register.filter(name="boosted_status") def get_boosted(boost): - """load a boosted status. have to do this or it wont get foregin keys""" + """load a boosted status. have to do this or it won't get foreign keys""" return ( - models.Status.objects.select_subclasses() - .filter(id=boost.boosted_status.id) - .get() + models.Status.objects.select_subclasses().get(id=boost.boosted_status.id) ) @@ -118,19 +116,6 @@ def get_mentions(status, user): ) -@register.filter(name="status_preview_name") -def get_status_preview_name(obj): - """text snippet with book context for a status""" - name = obj.__class__.__name__.lower() - if name == "review": - return "%s of %s" % (name, obj.book.title) - if name == "comment": - return "%s on %s" % (name, obj.book.title) - if name == "quotation": - return "%s from %s" % (name, obj.book.title) - return name - - @register.filter(name="next_shelf") def get_next_shelf(current_shelf): """shelf you'd use to update reading progress""" @@ -187,18 +172,6 @@ def latest_read_through(book, user): ) -@register.simple_tag(takes_context=False) -def active_read_through(book, user): - """the most recent read activity""" - return ( - models.ReadThrough.objects.filter( - user=user, book=book, finish_date__isnull=True - ) - .order_by("-start_date") - .first() - ) - - @register.simple_tag(takes_context=False) def comparison_bool(str1, str2): """idk why I need to write a tag for this, it reutrns a bool""" diff --git a/bookwyrm/tests/test_templatetags.py b/bookwyrm/tests/test_templatetags.py index 3e2ecf37..3b782fd5 100644 --- a/bookwyrm/tests/test_templatetags.py +++ b/bookwyrm/tests/test_templatetags.py @@ -157,31 +157,6 @@ class TemplateTags(TestCase): result = bookwyrm_tags.get_mentions(status, self.user) self.assertEqual(result, "@rat@example.com ") - def test_get_status_preview_name(self, _): - """status context string""" - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): - status = models.Status.objects.create(content="hi", user=self.user) - result = bookwyrm_tags.get_status_preview_name(status) - self.assertEqual(result, "status") - - status = models.Review.objects.create( - content="hi", user=self.user, book=self.book - ) - result = bookwyrm_tags.get_status_preview_name(status) - self.assertEqual(result, "review of Test Book") - - status = models.Comment.objects.create( - content="hi", user=self.user, book=self.book - ) - result = bookwyrm_tags.get_status_preview_name(status) - self.assertEqual(result, "comment on Test Book") - - status = models.Quotation.objects.create( - content="hi", user=self.user, book=self.book - ) - result = bookwyrm_tags.get_status_preview_name(status) - self.assertEqual(result, "quotation from Test Book") - def test_related_status(self, _): """gets the subclass model for a notification status""" with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): From eba6159f6868b5a1e19e6eb72758d9d54b9ce420 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 May 2021 14:14:22 -0700 Subject: [PATCH 196/252] Moves status interaction filters into their own module --- bookwyrm/templatetags/bookwyrm_tags.py | 16 ---------------- bookwyrm/templatetags/interaction.py | 22 ++++++++++++++++++++++ 2 files changed, 22 insertions(+), 16 deletions(-) create mode 100644 bookwyrm/templatetags/interaction.py diff --git a/bookwyrm/templatetags/bookwyrm_tags.py b/bookwyrm/templatetags/bookwyrm_tags.py index c992b9e5..719dc9ad 100644 --- a/bookwyrm/templatetags/bookwyrm_tags.py +++ b/bookwyrm/templatetags/bookwyrm_tags.py @@ -63,22 +63,6 @@ def get_parent(status): ) -@register.filter(name="liked") -def get_user_liked(user, status): - """did the given user fav a status?""" - try: - models.Favorite.objects.get(user=user, status=status) - return True - except models.Favorite.DoesNotExist: - return False - - -@register.filter(name="boosted") -def get_user_boosted(user, status): - """did the given user fav a status?""" - return user.id in status.boosters.all().values_list("user", flat=True) - - @register.filter(name="boosted_status") def get_boosted(boost): """load a boosted status. have to do this or it won't get foreign keys""" diff --git a/bookwyrm/templatetags/interaction.py b/bookwyrm/templatetags/interaction.py new file mode 100644 index 00000000..6e8d0549 --- /dev/null +++ b/bookwyrm/templatetags/interaction.py @@ -0,0 +1,22 @@ +""" template filters for status interaction buttons """ +from django import template +from bookwyrm import models + + +register = template.Library() + + +@register.filter(name="liked") +def get_user_liked(user, status): + """did the given user fav a status?""" + try: + models.Favorite.objects.get(user=user, status=status) + return True + except models.Favorite.DoesNotExist: + return False + + +@register.filter(name="boosted") +def get_user_boosted(user, status): + """did the given user fav a status?""" + return user.id in status.boosters.all().values_list("user", flat=True) From 58da17d69411806249446bd4aff734920fb746ac Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 May 2021 14:41:28 -0700 Subject: [PATCH 197/252] Use smaller templatetag modules --- bookwyrm/templates/components/dropdown.html | 2 +- bookwyrm/templates/feed/suggested_users.html | 2 +- bookwyrm/templates/layout.html | 2 +- bookwyrm/templates/snippets/boost_button.html | 3 +- .../templates/snippets/create_status.html | 2 +- .../snippets/create_status_form.html | 2 + bookwyrm/templates/snippets/fav_button.html | 4 +- .../templates/snippets/privacy_select.html | 2 +- .../templates/snippets/report_button.html | 3 +- .../snippets/shelve_button/shelve_button.html | 1 + .../shelve_button/shelve_button_options.html | 2 + .../templates/snippets/status/layout.html | 3 +- .../snippets/status/status_options.html | 2 +- bookwyrm/templates/snippets/trimmed_text.html | 1 + bookwyrm/templatetags/bookwyrm_tags.py | 41 +------------------ bookwyrm/templatetags/layout.py | 12 ++++++ bookwyrm/templatetags/utilities.py | 35 ++++++++++++++++ 17 files changed, 69 insertions(+), 50 deletions(-) create mode 100644 bookwyrm/templatetags/layout.py create mode 100644 bookwyrm/templatetags/utilities.py diff --git a/bookwyrm/templates/components/dropdown.html b/bookwyrm/templates/components/dropdown.html index 96dce823..35caa55b 100644 --- a/bookwyrm/templates/components/dropdown.html +++ b/bookwyrm/templates/components/dropdown.html @@ -1,5 +1,5 @@ {% spaceless %} -{% load bookwyrm_tags %} +{% load utilities %} {% with 0|uuid as uuid %}
    {% for user in suggested_users %} diff --git a/bookwyrm/templates/layout.html b/bookwyrm/templates/layout.html index bc654401..becf7781 100644 --- a/bookwyrm/templates/layout.html +++ b/bookwyrm/templates/layout.html @@ -1,4 +1,4 @@ -{% load bookwyrm_tags %} +{% load layout %} {% load i18n %} diff --git a/bookwyrm/templates/snippets/boost_button.html b/bookwyrm/templates/snippets/boost_button.html index 3a01fc82..5b84ea44 100644 --- a/bookwyrm/templates/snippets/boost_button.html +++ b/bookwyrm/templates/snippets/boost_button.html @@ -1,4 +1,5 @@ -{% load bookwyrm_tags %} +{% load interaction %} +{% load utilities %} {% load i18n %} {% with status.id|uuid as uuid %} diff --git a/bookwyrm/templates/snippets/create_status.html b/bookwyrm/templates/snippets/create_status.html index 7dee4b70..b1a8e846 100644 --- a/bookwyrm/templates/snippets/create_status.html +++ b/bookwyrm/templates/snippets/create_status.html @@ -1,6 +1,6 @@ {% load humanize %} {% load i18n %} -{% load bookwyrm_tags %} +{% load utilities %} {% with status_type=request.GET.status_type %}
    diff --git a/bookwyrm/templates/snippets/create_status_form.html b/bookwyrm/templates/snippets/create_status_form.html index f6021622..ca9cb5b4 100644 --- a/bookwyrm/templates/snippets/create_status_form.html +++ b/bookwyrm/templates/snippets/create_status_form.html @@ -1,4 +1,6 @@ {% load bookwyrm_tags %} +{% load utilities %} + {% load i18n %} {% csrf_token %} diff --git a/bookwyrm/templates/snippets/fav_button.html b/bookwyrm/templates/snippets/fav_button.html index cd22822a..40fa2d25 100644 --- a/bookwyrm/templates/snippets/fav_button.html +++ b/bookwyrm/templates/snippets/fav_button.html @@ -1,5 +1,7 @@ -{% load bookwyrm_tags %} +{% load interaction %} +{% load utilities %} {% load i18n %} + {% with status.id|uuid as uuid %} {% csrf_token %} diff --git a/bookwyrm/templates/snippets/privacy_select.html b/bookwyrm/templates/snippets/privacy_select.html index e8008509..f6959de5 100644 --- a/bookwyrm/templates/snippets/privacy_select.html +++ b/bookwyrm/templates/snippets/privacy_select.html @@ -1,5 +1,5 @@ {% load i18n %} -{% load bookwyrm_tags %} +{% load utilities %}
    {% with 0|uuid as uuid %} {% if not no_label %} diff --git a/bookwyrm/templates/snippets/report_button.html b/bookwyrm/templates/snippets/report_button.html index 2fa0a3f3..19414c16 100644 --- a/bookwyrm/templates/snippets/report_button.html +++ b/bookwyrm/templates/snippets/report_button.html @@ -1,5 +1,6 @@ {% load i18n %} -{% load bookwyrm_tags %} +{% load utilities %} + {% with 0|uuid as report_uuid %} {% trans "Report" as button_text %} diff --git a/bookwyrm/templates/snippets/shelve_button/shelve_button.html b/bookwyrm/templates/snippets/shelve_button/shelve_button.html index dc07fb64..754907c2 100644 --- a/bookwyrm/templates/snippets/shelve_button/shelve_button.html +++ b/bookwyrm/templates/snippets/shelve_button/shelve_button.html @@ -1,4 +1,5 @@ {% load bookwyrm_tags %} +{% load utilities %} {% if request.user.is_authenticated %} {% with book.id|uuid as uuid %} diff --git a/bookwyrm/templates/snippets/shelve_button/shelve_button_options.html b/bookwyrm/templates/snippets/shelve_button/shelve_button_options.html index 1eaa2463..1ce10e7c 100644 --- a/bookwyrm/templates/snippets/shelve_button/shelve_button_options.html +++ b/bookwyrm/templates/snippets/shelve_button/shelve_button_options.html @@ -1,5 +1,7 @@ {% load bookwyrm_tags %} +{% load utilities %} {% load i18n %} + {% for shelf in shelves %} {% comparison_bool shelf.identifier active_shelf.shelf.identifier as is_current %} {% if dropdown %}
    diff --git a/bookwyrm/templates/book/editions.html b/bookwyrm/templates/book/editions.html index 775b05c8..17d5474c 100644 --- a/bookwyrm/templates/book/editions.html +++ b/bookwyrm/templates/book/editions.html @@ -1,6 +1,5 @@ {% extends 'layout.html' %} {% load i18n %} -{% load bookwyrm_tags %} {% block title %}{% blocktrans with book_title=work.title %}Editions of {{ book_title }}{% endblocktrans %}{% endblock %} diff --git a/bookwyrm/templates/compose.html b/bookwyrm/templates/compose.html index 0f609cf7..1b6aa735 100644 --- a/bookwyrm/templates/compose.html +++ b/bookwyrm/templates/compose.html @@ -1,6 +1,6 @@ {% extends 'layout.html' %} {% load i18n %} -{% load bookwyrm_tags %} +{% load utilities %} {% block title %}{% trans "Compose status" %}{% endblock %} {% block content %} diff --git a/bookwyrm/templates/directory/user_card.html b/bookwyrm/templates/directory/user_card.html index 8e7538c8..c52c1f7a 100644 --- a/bookwyrm/templates/directory/user_card.html +++ b/bookwyrm/templates/directory/user_card.html @@ -1,5 +1,6 @@ {% load i18n %} -{% load bookwyrm_tags %} +{% load utilities %} +{% load markdown %} {% load humanize %}
    @@ -19,7 +20,7 @@
    {% if user.summary %} - {{ user.summary | to_markdown | safe | truncatechars_html:40 }} + {{ user.summary|to_markdown|safe|truncatechars_html:40 }} {% else %} {% endif %}
    diff --git a/bookwyrm/templates/discover/landing_layout.html b/bookwyrm/templates/discover/landing_layout.html index 8e507531..946482cb 100644 --- a/bookwyrm/templates/discover/landing_layout.html +++ b/bookwyrm/templates/discover/landing_layout.html @@ -1,6 +1,6 @@ {% extends 'layout.html' %} {% load i18n %} -{% load bookwyrm_tags %} +{% load markdown %} {% block title %}{% trans "Welcome" %}{% endblock %} @@ -49,7 +49,7 @@ {% else %}

    {% trans "This instance is closed" %}

    -

    {{ site.registration_closed_text | safe}}

    +

    {{ site.registration_closed_text|safe}}

    {% if site.allow_invite_requests %} {% if request_received %} @@ -64,7 +64,7 @@ {% for error in request_form.email.errors %} -

    {{ error | escape }}

    +

    {{ error|escape }}

    {% endfor %}
    @@ -80,7 +80,7 @@ {% include 'user/user_preview.html' with user=request.user %} {% if request.user.summary %}
    - {{ request.user.summary | to_markdown | safe }} + {{ request.user.summary|to_markdown|safe }}
    {% endif %}
  • diff --git a/bookwyrm/templates/discover/large-book.html b/bookwyrm/templates/discover/large-book.html index 7def6e13..93026991 100644 --- a/bookwyrm/templates/discover/large-book.html +++ b/bookwyrm/templates/discover/large-book.html @@ -1,5 +1,5 @@ - {% load bookwyrm_tags %} +{% load markdown %} {% load i18n %} {% if book %} diff --git a/bookwyrm/templates/feed/feed.html b/bookwyrm/templates/feed/feed.html index f106b4ce..21e71ae1 100644 --- a/bookwyrm/templates/feed/feed.html +++ b/bookwyrm/templates/feed/feed.html @@ -1,7 +1,6 @@ {% extends 'feed/feed_layout.html' %} {% load i18n %} -{% load bookwyrm_tags %} -{% load humanize %} + {% block panel %}

    diff --git a/bookwyrm/templates/feed/feed_layout.html b/bookwyrm/templates/feed/feed_layout.html index 75fc1951..3c6b65a1 100644 --- a/bookwyrm/templates/feed/feed_layout.html +++ b/bookwyrm/templates/feed/feed_layout.html @@ -1,6 +1,5 @@ {% extends 'layout.html' %} {% load i18n %} -{% load bookwyrm_tags %} {% block title %}{% trans "Updates" %}{% endblock %} diff --git a/bookwyrm/templates/feed/thread.html b/bookwyrm/templates/feed/thread.html index 18ab6ea3..793cddfc 100644 --- a/bookwyrm/templates/feed/thread.html +++ b/bookwyrm/templates/feed/thread.html @@ -1,4 +1,4 @@ -{% load bookwyrm_tags %} +{% load status_display %}
    {% with depth=depth|add:1 %} diff --git a/bookwyrm/templates/lists/list.html b/bookwyrm/templates/lists/list.html index 2902f793..55dc68aa 100644 --- a/bookwyrm/templates/lists/list.html +++ b/bookwyrm/templates/lists/list.html @@ -1,12 +1,13 @@ {% extends 'lists/list_layout.html' %} {% load i18n %} {% load bookwyrm_tags %} +{% load markdown %} {% block panel %} {% if request.user == list.user and pending_count %} {% endif %} diff --git a/bookwyrm/templates/lists/list_items.html b/bookwyrm/templates/lists/list_items.html index b59e2a96..1fdaaca9 100644 --- a/bookwyrm/templates/lists/list_items.html +++ b/bookwyrm/templates/lists/list_items.html @@ -1,4 +1,4 @@ -{% load bookwyrm_tags %} +{% load markdown %}
    {% for list in lists %}
    diff --git a/bookwyrm/templates/lists/list_layout.html b/bookwyrm/templates/lists/list_layout.html index c0899c84..de7665e8 100644 --- a/bookwyrm/templates/lists/list_layout.html +++ b/bookwyrm/templates/lists/list_layout.html @@ -1,6 +1,5 @@ {% extends 'layout.html' %} {% load i18n %} -{% load bookwyrm_tags %} {% block title %}{{ list.name }}{% endblock %} diff --git a/bookwyrm/templates/lists/lists.html b/bookwyrm/templates/lists/lists.html index a7a54811..d4b0a7c2 100644 --- a/bookwyrm/templates/lists/lists.html +++ b/bookwyrm/templates/lists/lists.html @@ -1,5 +1,5 @@ {% extends 'layout.html' %} -{% load bookwyrm_tags %} +{% load utilities %} {% load i18n %} {% block title %}{% trans "Lists" %}{% endblock %} diff --git a/bookwyrm/templates/moderation/report.html b/bookwyrm/templates/moderation/report.html index 934799e3..db03850f 100644 --- a/bookwyrm/templates/moderation/report.html +++ b/bookwyrm/templates/moderation/report.html @@ -1,6 +1,5 @@ {% extends 'settings/admin_layout.html' %} {% load i18n %} -{% load bookwyrm_tags %} {% load humanize %} {% block title %}{% blocktrans with report_id=report.id username=report.user.username %}Report #{{ report_id }}: {{ username }}{% endblocktrans %}{% endblock %} @@ -29,7 +28,7 @@ {{ comment.user.display_name }}
    diff --git a/bookwyrm/templates/notifications.html b/bookwyrm/templates/notifications.html index ed623b12..a51b2fdb 100644 --- a/bookwyrm/templates/notifications.html +++ b/bookwyrm/templates/notifications.html @@ -1,7 +1,7 @@ {% extends 'layout.html' %} {% load i18n %} -{% load humanize %} {% load bookwyrm_tags %} +{% load humanize %} {% block title %}{% trans "Notifications" %}{% endblock %} diff --git a/bookwyrm/templates/search/user.html b/bookwyrm/templates/search/user.html index c6adc613..56bb1bfa 100644 --- a/bookwyrm/templates/search/user.html +++ b/bookwyrm/templates/search/user.html @@ -1,5 +1,4 @@ {% extends 'search/layout.html' %} -{% load bookwyrm_tags %} {% block panel %} diff --git a/bookwyrm/templates/settings/federated_server.html b/bookwyrm/templates/settings/federated_server.html index 386433f3..b300a92d 100644 --- a/bookwyrm/templates/settings/federated_server.html +++ b/bookwyrm/templates/settings/federated_server.html @@ -1,7 +1,8 @@ {% extends 'settings/admin_layout.html' %} -{% block title %}{{ server.server_name }}{% endblock %} {% load i18n %} -{% load bookwyrm_tags %} +{% load markdown %} + +{% block title %}{{ server.server_name }}{% endblock %} {% block header %} {{ server.server_name }} diff --git a/bookwyrm/templates/snippets/avatar.html b/bookwyrm/templates/snippets/avatar.html index d53acf2b..bb37c46d 100644 --- a/bookwyrm/templates/snippets/avatar.html +++ b/bookwyrm/templates/snippets/avatar.html @@ -1,3 +1,2 @@ -{% load bookwyrm_tags %} {{ user.alt_text }} diff --git a/bookwyrm/templates/snippets/book_cover.html b/bookwyrm/templates/snippets/book_cover.html index 3c6f212d..f64ec3e4 100644 --- a/bookwyrm/templates/snippets/book_cover.html +++ b/bookwyrm/templates/snippets/book_cover.html @@ -1,6 +1,5 @@ {% spaceless %} -{% load bookwyrm_tags %} {% load i18n %}
    {{ title }} by {% endblocktrans %}{% include 'snippets/authors.html' with book=book %} {% else %} diff --git a/bookwyrm/templates/snippets/create_status_form.html b/bookwyrm/templates/snippets/create_status_form.html index ca9cb5b4..5fd91898 100644 --- a/bookwyrm/templates/snippets/create_status_form.html +++ b/bookwyrm/templates/snippets/create_status_form.html @@ -1,5 +1,6 @@ {% load bookwyrm_tags %} {% load utilities %} +{% load status_display %} {% load i18n %} diff --git a/bookwyrm/templates/snippets/form_rate_stars.html b/bookwyrm/templates/snippets/form_rate_stars.html index 3abebac0..a53733df 100644 --- a/bookwyrm/templates/snippets/form_rate_stars.html +++ b/bookwyrm/templates/snippets/form_rate_stars.html @@ -1,6 +1,5 @@ {% spaceless %} {% load i18n %} -{% load bookwyrm_tags %}
    diff --git a/bookwyrm/templates/snippets/status/status_header.html b/bookwyrm/templates/snippets/status/status_header.html index 605b46cc..b06c6bfc 100644 --- a/bookwyrm/templates/snippets/status/status_header.html +++ b/bookwyrm/templates/snippets/status/status_header.html @@ -1,4 +1,5 @@ -{% load bookwyrm_tags %} +{% load utilities %} +{% load status_display %} {% load i18n %} {% load humanize %} @@ -29,7 +30,7 @@ {% if status.status_type == 'GeneratedNote' %} - {{ status.content | safe }} + {{ status.content|safe }} {% elif status.status_type == 'Rating' %} {% trans "rated" %} {% elif status.status_type == 'Review' %} diff --git a/bookwyrm/templates/snippets/trimmed_text.html b/bookwyrm/templates/snippets/trimmed_text.html index 6e222e97..cfffe055 100644 --- a/bookwyrm/templates/snippets/trimmed_text.html +++ b/bookwyrm/templates/snippets/trimmed_text.html @@ -1,4 +1,4 @@ -{% load bookwyrm_tags %} +{% load markdown %} {% load utilities %} {% load i18n %} diff --git a/bookwyrm/templates/snippets/user_options.html b/bookwyrm/templates/snippets/user_options.html index 32e83ed2..01cc09bf 100644 --- a/bookwyrm/templates/snippets/user_options.html +++ b/bookwyrm/templates/snippets/user_options.html @@ -1,6 +1,6 @@ {% extends 'components/dropdown.html' %} {% load i18n %} -{% load bookwyrm_tags %} +{% load utilities %} {% block dropdown-trigger %} diff --git a/bookwyrm/templates/user/layout.html b/bookwyrm/templates/user/layout.html index 661d8078..0830a406 100644 --- a/bookwyrm/templates/user/layout.html +++ b/bookwyrm/templates/user/layout.html @@ -1,7 +1,8 @@ {% extends 'layout.html' %} {% load i18n %} {% load humanize %} -{% load bookwyrm_tags %} +{% load utilities %} +{% load markdown %} {% block title %}{{ user.display_name }}{% endblock %} @@ -23,7 +24,7 @@ {% if user.summary %}
    - {{ user.summary | to_markdown | safe }} + {{ user.summary|to_markdown|safe }}
    {% endif %}
    diff --git a/bookwyrm/templates/user/relationships/layout.html b/bookwyrm/templates/user/relationships/layout.html index f36b304c..0348d82f 100644 --- a/bookwyrm/templates/user/relationships/layout.html +++ b/bookwyrm/templates/user/relationships/layout.html @@ -1,6 +1,6 @@ {% extends 'user/layout.html' %} {% load i18n %} -{% load bookwyrm_tags %} +{% load utilities %} {% block tabs %} {% with user|username as username %} diff --git a/bookwyrm/templates/user/shelf/shelf.html b/bookwyrm/templates/user/shelf/shelf.html index 86610629..0f386385 100644 --- a/bookwyrm/templates/user/shelf/shelf.html +++ b/bookwyrm/templates/user/shelf/shelf.html @@ -1,5 +1,5 @@ {% extends 'user/layout.html' %} -{% load bookwyrm_tags %} +{% load utilities %} {% load humanize %} {% load i18n %} @@ -101,14 +101,14 @@ {% include 'snippets/authors.html' %} - {{ book.created_date | naturalday }} + {{ book.created_date|naturalday }} {% latest_read_through book user as read_through %} - {{ read_through.start_date | naturalday |default_if_none:""}} + {{ read_through.start_date|naturalday|default_if_none:""}} - {{ read_through.finish_date | naturalday |default_if_none:""}} + {{ read_through.finish_date|naturalday|default_if_none:""}} {% if request.user.is_authenticated %} diff --git a/bookwyrm/templates/user/user.html b/bookwyrm/templates/user/user.html index 99698575..5afe168a 100644 --- a/bookwyrm/templates/user/user.html +++ b/bookwyrm/templates/user/user.html @@ -1,6 +1,6 @@ {% extends 'user/layout.html' %} {% load i18n %} -{% load bookwyrm_tags %} +{% load utilities %} {% block title %}{{ user.display_name }}{% endblock %} diff --git a/bookwyrm/templates/user/user_preview.html b/bookwyrm/templates/user/user_preview.html index c450365b..22d44c87 100644 --- a/bookwyrm/templates/user/user_preview.html +++ b/bookwyrm/templates/user/user_preview.html @@ -1,5 +1,6 @@ {% load i18n %} {% load humanize %} +{% load utilities %} {% load bookwyrm_tags %}
    diff --git a/bookwyrm/templates/user_admin/user.html b/bookwyrm/templates/user_admin/user.html index 46390650..c79c6971 100644 --- a/bookwyrm/templates/user_admin/user.html +++ b/bookwyrm/templates/user_admin/user.html @@ -1,7 +1,5 @@ {% extends 'settings/admin_layout.html' %} {% load i18n %} -{% load bookwyrm_tags %} -{% load humanize %} {% block title %}{{ user.username }}{% endblock %} {% block header %}{{ user.username }}{% endblock %} diff --git a/bookwyrm/templates/user_admin/user_info.html b/bookwyrm/templates/user_admin/user_info.html index e5f5d580..579b3af7 100644 --- a/bookwyrm/templates/user_admin/user_info.html +++ b/bookwyrm/templates/user_admin/user_info.html @@ -1,5 +1,5 @@ {% load i18n %} -{% load bookwyrm_tags %} +{% load markdown %}

    {% trans "User details" %}

    @@ -7,7 +7,7 @@ {% include 'user/user_preview.html' with user=user %} {% if user.summary %}
    - {{ user.summary | to_markdown | safe }} + {{ user.summary|to_markdown|safe }}
    {% endif %} diff --git a/bookwyrm/templatetags/bookwyrm_tags.py b/bookwyrm/templatetags/bookwyrm_tags.py index db9335e8..70228799 100644 --- a/bookwyrm/templatetags/bookwyrm_tags.py +++ b/bookwyrm/templatetags/bookwyrm_tags.py @@ -36,57 +36,12 @@ def get_user_rating(book, user): return 0 -@register.filter(name="replies") -def get_replies(status): - """get all direct replies to a status""" - # TODO: this limit could cause problems - return models.Status.objects.filter( - reply_parent=status, - deleted=False, - ).select_subclasses()[:10] - - -@register.filter(name="parent") -def get_parent(status): - """get the reply parent for a status""" - return ( - models.Status.objects.filter(id=status.reply_parent_id) - .select_subclasses() - .get() - ) - - -@register.filter(name="boosted_status") -def get_boosted(boost): - """load a boosted status. have to do this or it won't get foreign keys""" - return ( - models.Status.objects.select_subclasses().get(id=boost.boosted_status.id) - ) - - @register.filter(name="book_description") def get_book_description(book): """use the work's text if the book doesn't have it""" return book.description or book.parent_work.description -@register.filter(name="to_markdown") -def get_markdown(content): - """convert markdown to html""" - if content: - return to_markdown(content) - return None - - -@register.filter(name="mentions") -def get_mentions(status, user): - """people to @ in a reply: the parent and all mentions""" - mentions = set([status.user] + list(status.mention_users.all())) - return ( - " ".join("@" + get_user_identifier(m) for m in mentions if not m == user) + " " - ) - - @register.filter(name="next_shelf") def get_next_shelf(current_shelf): """shelf you'd use to update reading progress""" diff --git a/bookwyrm/templatetags/markdown.py b/bookwyrm/templatetags/markdown.py new file mode 100644 index 00000000..370d60a1 --- /dev/null +++ b/bookwyrm/templatetags/markdown.py @@ -0,0 +1,14 @@ +""" template filters """ +from django import template +from bookwyrm.views.status import to_markdown + + +register = template.Library() + + +@register.filter(name="to_markdown") +def get_markdown(content): + """convert markdown to html""" + if content: + return to_markdown(content) + return None diff --git a/bookwyrm/templatetags/status_display.py b/bookwyrm/templatetags/status_display.py new file mode 100644 index 00000000..589881bf --- /dev/null +++ b/bookwyrm/templatetags/status_display.py @@ -0,0 +1,46 @@ +""" template filters """ +from django import template + +from bookwyrm import models +from bookwyrm.templatetags.utilities import get_user_identifier + + +register = template.Library() + + +@register.filter(name="mentions") +def get_mentions(status, user): + """people to @ in a reply: the parent and all mentions""" + mentions = set([status.user] + list(status.mention_users.all())) + return ( + " ".join("@" + get_user_identifier(m) for m in mentions if not m == user) + " " + ) + + + +@register.filter(name="replies") +def get_replies(status): + """get all direct replies to a status""" + # TODO: this limit could cause problems + return models.Status.objects.filter( + reply_parent=status, + deleted=False, + ).select_subclasses()[:10] + + +@register.filter(name="parent") +def get_parent(status): + """get the reply parent for a status""" + return ( + models.Status.objects.filter(id=status.reply_parent_id) + .select_subclasses() + .get() + ) + + +@register.filter(name="boosted_status") +def get_boosted(boost): + """load a boosted status. have to do this or it won't get foreign keys""" + return ( + models.Status.objects.select_subclasses().get(id=boost.boosted_status.id) + ) From dbf795be5d785f1464b902850ab9bd2d0c6b4f0b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 May 2021 15:16:27 -0700 Subject: [PATCH 199/252] Python formatting --- bookwyrm/templatetags/status_display.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/bookwyrm/templatetags/status_display.py b/bookwyrm/templatetags/status_display.py index 589881bf..f39de9e3 100644 --- a/bookwyrm/templatetags/status_display.py +++ b/bookwyrm/templatetags/status_display.py @@ -17,7 +17,6 @@ def get_mentions(status, user): ) - @register.filter(name="replies") def get_replies(status): """get all direct replies to a status""" @@ -41,6 +40,4 @@ def get_parent(status): @register.filter(name="boosted_status") def get_boosted(boost): """load a boosted status. have to do this or it won't get foreign keys""" - return ( - models.Status.objects.select_subclasses().get(id=boost.boosted_status.id) - ) + return models.Status.objects.select_subclasses().get(id=boost.boosted_status.id) From 87bf863ac656c7326d8d90d145f04f7efbcaba67 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 May 2021 15:29:18 -0700 Subject: [PATCH 200/252] Revert "Preserve width when cover images fail to load" --- bookwyrm/templates/snippets/book_cover.html | 1 - 1 file changed, 1 deletion(-) diff --git a/bookwyrm/templates/snippets/book_cover.html b/bookwyrm/templates/snippets/book_cover.html index 3c6f212d..5f12858f 100644 --- a/bookwyrm/templates/snippets/book_cover.html +++ b/bookwyrm/templates/snippets/book_cover.html @@ -6,7 +6,6 @@
    hi

    ") - result = bookwyrm_tags.get_markdown("_hi_") + result = markdown.get_markdown("_hi_") self.assertEqual(result, "

    hi

    ") def test_get_mentions(self, _): """list of people mentioned""" status = models.Status.objects.create(content="hi", user=self.remote_user) - result = bookwyrm_tags.get_mentions(status, self.user) + result = status_display.get_mentions(status, self.user) self.assertEqual(result, "@rat@example.com ") def test_related_status(self, _): From 3b9fed1b31882374938a83097da2dacd35d2cd0f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 May 2021 18:59:31 -0700 Subject: [PATCH 202/252] Filter for concise status timestamps --- .../snippets/status/status_header.html | 2 +- bookwyrm/templatetags/status_display.py | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/snippets/status/status_header.html b/bookwyrm/templates/snippets/status/status_header.html index b06c6bfc..9ff7f9ff 100644 --- a/bookwyrm/templates/snippets/status/status_header.html +++ b/bookwyrm/templates/snippets/status/status_header.html @@ -92,7 +92,7 @@

    - {{ status.published_date|timesince }} + {{ status.published_date|published_date }} {% if status.progress %} {% if status.progress_mode == 'PG' %} diff --git a/bookwyrm/templatetags/status_display.py b/bookwyrm/templatetags/status_display.py index f39de9e3..4d9984c8 100644 --- a/bookwyrm/templatetags/status_display.py +++ b/bookwyrm/templatetags/status_display.py @@ -1,6 +1,8 @@ """ template filters """ +from dateutil.relativedelta import relativedelta from django import template - +from django.contrib.humanize.templatetags.humanize import naturaltime, naturalday +from django.utils import timezone from bookwyrm import models from bookwyrm.templatetags.utilities import get_user_identifier @@ -41,3 +43,17 @@ def get_parent(status): def get_boosted(boost): """load a boosted status. have to do this or it won't get foreign keys""" return models.Status.objects.select_subclasses().get(id=boost.boosted_status.id) + + +@register.filter(name="published_date") +def get_published_date(date): + """less verbose combo of humanize filters""" + if not date: + return "" + now = timezone.now() + delta = relativedelta(now, date) + if delta.years: + return naturalday(date) + if delta.days: + return naturalday(date, "M j") + return naturaltime(date) From 2b4ac71d7acf86f9fbcbe351cf84c6ae8ee55be4 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 14 May 2021 15:21:26 -0700 Subject: [PATCH 203/252] Updates footer language around github link --- bookwyrm/templates/layout.html | 2 +- locale/de_DE/LC_MESSAGES/django.po | 660 ++++++++++++++------------- locale/en_US/LC_MESSAGES/django.po | 644 +++++++++++++------------- locale/es/LC_MESSAGES/django.po | 656 +++++++++++++------------- locale/fr_FR/LC_MESSAGES/django.po | 656 +++++++++++++------------- locale/zh_Hans/LC_MESSAGES/django.po | 656 +++++++++++++------------- 6 files changed, 1717 insertions(+), 1557 deletions(-) diff --git a/bookwyrm/templates/layout.html b/bookwyrm/templates/layout.html index becf7781..3a4fd6c8 100644 --- a/bookwyrm/templates/layout.html +++ b/bookwyrm/templates/layout.html @@ -214,7 +214,7 @@

    {% endif %}

    - {% trans 'BookWyrm is open source software. You can contribute or report issues on GitHub.' %} + {% blocktrans %}BookWyrm's source code is freely available. You can contribute or report issues on GitHub.{% endblocktrans %}

    {% if site.footer_item %} diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index 7f274af9..7b9a929d 100644 --- a/locale/de_DE/LC_MESSAGES/django.po +++ b/locale/de_DE/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-05-10 13:23-0700\n" +"POT-Creation-Date: 2021-05-14 15:12-0700\n" "PO-Revision-Date: 2021-03-02 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -61,13 +61,13 @@ msgstr "" msgid "Book Title" msgstr "Titel" -#: bookwyrm/forms.py:295 bookwyrm/templates/snippets/create_status_form.html:31 -#: bookwyrm/templates/user/shelf/shelf.html:82 -#: bookwyrm/templates/user/shelf/shelf.html:112 +#: bookwyrm/forms.py:295 bookwyrm/templates/snippets/create_status_form.html:34 +#: bookwyrm/templates/user/shelf/shelf.html:84 +#: bookwyrm/templates/user/shelf/shelf.html:115 msgid "Rating" msgstr "" -#: bookwyrm/forms.py:297 bookwyrm/templates/lists/list.html:100 +#: bookwyrm/forms.py:297 bookwyrm/templates/lists/list.html:101 msgid "Sort By" msgstr "" @@ -141,19 +141,157 @@ msgstr "" msgid "Something went wrong! Sorry about that." msgstr "Etwas lief schief. Entschuldigung!" -#: bookwyrm/templates/author.html:16 bookwyrm/templates/author.html:17 +#: bookwyrm/templates/author/author.html:17 +#: bookwyrm/templates/author/author.html:18 msgid "Edit Author" msgstr "Autor*in editieren" -#: bookwyrm/templates/author.html:31 +#: bookwyrm/templates/author/author.html:33 +#: bookwyrm/templates/author/edit_author.html:38 +msgid "Aliases:" +msgstr "" + +#: bookwyrm/templates/author/author.html:39 +msgid "Born:" +msgstr "" + +#: bookwyrm/templates/author/author.html:45 +msgid "Died:" +msgstr "" + +#: bookwyrm/templates/author/author.html:52 msgid "Wikipedia" msgstr "" -#: bookwyrm/templates/author.html:36 +#: bookwyrm/templates/author/author.html:56 +#: bookwyrm/templates/book/book.html:81 +msgid "View on OpenLibrary" +msgstr "In OpenLibrary ansehen" + +#: bookwyrm/templates/author/author.html:61 +#: bookwyrm/templates/book/book.html:84 +#, fuzzy +#| msgid "View on OpenLibrary" +msgid "View on Inventaire" +msgstr "In OpenLibrary ansehen" + +#: bookwyrm/templates/author/author.html:75 #, python-format msgid "Books by %(name)s" msgstr "Bücher von %(name)s" +#: bookwyrm/templates/author/edit_author.html:5 +#, fuzzy +#| msgid "Edit Author" +msgid "Edit Author:" +msgstr "Autor*in editieren" + +#: bookwyrm/templates/author/edit_author.html:13 +#: bookwyrm/templates/book/edit_book.html:18 +msgid "Added:" +msgstr "Hinzugefügt:" + +#: bookwyrm/templates/author/edit_author.html:14 +#: bookwyrm/templates/book/edit_book.html:19 +msgid "Updated:" +msgstr "Aktualisiert:" + +#: bookwyrm/templates/author/edit_author.html:15 +#: bookwyrm/templates/book/edit_book.html:20 +msgid "Last edited by:" +msgstr "Zuletzt bearbeitet von:" + +#: bookwyrm/templates/author/edit_author.html:31 +#: bookwyrm/templates/book/edit_book.html:90 +msgid "Metadata" +msgstr "Metadaten" + +#: bookwyrm/templates/author/edit_author.html:32 +#: bookwyrm/templates/lists/form.html:8 +#: bookwyrm/templates/user/shelf/create_shelf_form.html:13 +#: bookwyrm/templates/user/shelf/edit_shelf_form.html:14 +msgid "Name:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:40 +#: bookwyrm/templates/book/edit_book.html:128 +#: bookwyrm/templates/book/edit_book.html:165 +#, fuzzy +#| msgid "Separate multiple publishers with commas." +msgid "Separate multiple values with commas." +msgstr "Mehrere Herausgeber:innen durch Kommata trennen" + +#: bookwyrm/templates/author/edit_author.html:46 +msgid "Bio:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:51 +msgid "Wikipedia link:" +msgstr "Wikipedialink:" + +#: bookwyrm/templates/author/edit_author.html:57 +msgid "Birth date:" +msgstr "Geburtsdatum:" + +#: bookwyrm/templates/author/edit_author.html:65 +msgid "Death date:" +msgstr "Todesdatum:" + +#: bookwyrm/templates/author/edit_author.html:73 +msgid "Author Identifiers" +msgstr "Autor*innenidentifikatoren" + +#: bookwyrm/templates/author/edit_author.html:74 +#: bookwyrm/templates/book/edit_book.html:223 +msgid "Openlibrary key:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:79 +#, fuzzy +#| msgid "View on OpenLibrary" +msgid "Inventaire ID:" +msgstr "In OpenLibrary ansehen" + +#: bookwyrm/templates/author/edit_author.html:84 +msgid "Librarything key:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:89 +msgid "Goodreads key:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:98 +#: bookwyrm/templates/book/book.html:127 +#: bookwyrm/templates/book/edit_book.html:241 +#: bookwyrm/templates/lists/form.html:42 +#: bookwyrm/templates/preferences/edit_user.html:70 +#: bookwyrm/templates/settings/edit_server.html:68 +#: bookwyrm/templates/settings/federated_server.html:94 +#: bookwyrm/templates/settings/site.html:97 +#: bookwyrm/templates/snippets/readthrough.html:77 +#: 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/start_reading_modal.html:34 +#: bookwyrm/templates/user_admin/user_moderation_actions.html:38 +msgid "Save" +msgstr "Speichern" + +#: bookwyrm/templates/author/edit_author.html:99 +#: bookwyrm/templates/book/book.html:128 bookwyrm/templates/book/book.html:180 +#: bookwyrm/templates/book/cover_modal.html:32 +#: bookwyrm/templates/book/edit_book.html:242 +#: bookwyrm/templates/moderation/report_modal.html:34 +#: bookwyrm/templates/settings/federated_server.html:95 +#: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 +#: bookwyrm/templates/snippets/goal_form.html:32 +#: bookwyrm/templates/snippets/readthrough.html:78 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:43 +#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:35 +#: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28 +msgid "Cancel" +msgstr "Abbrechen" + #: bookwyrm/templates/book/book.html:33 #: bookwyrm/templates/discover/large-book.html:25 #: bookwyrm/templates/discover/small-book.html:19 @@ -175,16 +313,6 @@ msgstr "Cover hinzufügen" msgid "Failed to load cover" msgstr "Laden fehlgeschlagen" -#: bookwyrm/templates/book/book.html:81 -msgid "View on OpenLibrary" -msgstr "In OpenLibrary ansehen" - -#: bookwyrm/templates/book/book.html:84 -#, fuzzy -#| msgid "View on OpenLibrary" -msgid "View on Inventaire" -msgstr "In OpenLibrary ansehen" - #: bookwyrm/templates/book/book.html:104 #, python-format msgid "(%(review_count)s review)" @@ -202,37 +330,6 @@ msgstr "Beschreibung hinzufügen" msgid "Description:" msgstr "Beschreibung:" -#: bookwyrm/templates/book/book.html:127 -#: bookwyrm/templates/book/edit_book.html:249 -#: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 -#: bookwyrm/templates/preferences/edit_user.html:70 -#: bookwyrm/templates/settings/edit_server.html:68 -#: bookwyrm/templates/settings/federated_server.html:93 -#: bookwyrm/templates/settings/site.html:97 -#: bookwyrm/templates/snippets/readthrough.html:77 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:50 -#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:38 -#: bookwyrm/templates/user_admin/user_moderation_actions.html:38 -msgid "Save" -msgstr "Speichern" - -#: bookwyrm/templates/book/book.html:128 bookwyrm/templates/book/book.html:180 -#: bookwyrm/templates/book/cover_modal.html:32 -#: bookwyrm/templates/book/edit_book.html:250 -#: bookwyrm/templates/edit_author.html:79 -#: bookwyrm/templates/moderation/report_modal.html:34 -#: bookwyrm/templates/settings/federated_server.html:94 -#: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 -#: bookwyrm/templates/snippets/goal_form.html:32 -#: bookwyrm/templates/snippets/readthrough.html:78 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:51 -#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:39 -#: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28 -msgid "Cancel" -msgstr "Abbrechen" - #: bookwyrm/templates/book/book.html:137 #, fuzzy, python-format #| msgid "%(title)s by " @@ -307,7 +404,7 @@ msgstr "Orte" #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 #: bookwyrm/templates/search/layout.html:50 -#: bookwyrm/templates/user/layout.html:67 +#: bookwyrm/templates/user/layout.html:68 msgid "Lists" msgstr "Listen" @@ -319,7 +416,7 @@ msgstr "Zur Liste" #: bookwyrm/templates/book/book.html:320 #: bookwyrm/templates/book/cover_modal.html:31 -#: bookwyrm/templates/lists/list.html:163 +#: bookwyrm/templates/lists/list.html:164 msgid "Add" msgstr "Hinzufügen" @@ -328,24 +425,24 @@ msgid "ISBN:" msgstr "" #: bookwyrm/templates/book/book_identifiers.html:15 -#: bookwyrm/templates/book/edit_book.html:235 +#: bookwyrm/templates/book/edit_book.html:227 msgid "OCLC Number:" msgstr "OCLC Nummer:" #: bookwyrm/templates/book/book_identifiers.html:22 -#: bookwyrm/templates/book/edit_book.html:239 +#: bookwyrm/templates/book/edit_book.html:231 msgid "ASIN:" msgstr "" #: bookwyrm/templates/book/cover_modal.html:17 -#: bookwyrm/templates/book/edit_book.html:187 +#: bookwyrm/templates/book/edit_book.html:179 #, fuzzy #| msgid "Add cover" msgid "Upload cover:" msgstr "Cover hinzufügen" #: bookwyrm/templates/book/cover_modal.html:23 -#: bookwyrm/templates/book/edit_book.html:193 +#: bookwyrm/templates/book/edit_book.html:185 msgid "Load cover from url:" msgstr "Cover von URL laden:" @@ -363,21 +460,6 @@ msgstr "Editionen von %(book_title)s" msgid "Add Book" msgstr "Bücher hinzufügen" -#: bookwyrm/templates/book/edit_book.html:18 -#: bookwyrm/templates/edit_author.html:13 -msgid "Added:" -msgstr "Hinzugefügt:" - -#: bookwyrm/templates/book/edit_book.html:19 -#: bookwyrm/templates/edit_author.html:14 -msgid "Updated:" -msgstr "Aktualisiert:" - -#: bookwyrm/templates/book/edit_book.html:20 -#: bookwyrm/templates/edit_author.html:15 -msgid "Last edited by:" -msgstr "Zuletzt bearbeitet von:" - #: bookwyrm/templates/book/edit_book.html:40 msgid "Confirm Book Info" msgstr "Buchinfo bestätigen" @@ -420,11 +502,6 @@ msgstr "Bestätigen" msgid "Back" msgstr "Zurück" -#: bookwyrm/templates/book/edit_book.html:90 -#: bookwyrm/templates/edit_author.html:31 -msgid "Metadata" -msgstr "Metadaten" - #: bookwyrm/templates/book/edit_book.html:92 msgid "Title:" msgstr "Titel:" @@ -447,81 +524,72 @@ msgstr "Seriennummer:" msgid "Publisher:" msgstr "Veröffentlicht" -#: bookwyrm/templates/book/edit_book.html:128 -msgid "Separate multiple publishers with commas." -msgstr "Mehrere Herausgeber:innen durch Kommata trennen" - #: bookwyrm/templates/book/edit_book.html:135 msgid "First published date:" msgstr "Erstveröffentlichungsdatum:" -#: bookwyrm/templates/book/edit_book.html:147 +#: bookwyrm/templates/book/edit_book.html:143 msgid "Published date:" msgstr "Veröffentlichungsdatum:" -#: bookwyrm/templates/book/edit_book.html:160 +#: bookwyrm/templates/book/edit_book.html:152 #, fuzzy #| msgid "Author" msgid "Authors" msgstr "Autor*in" -#: bookwyrm/templates/book/edit_book.html:166 +#: bookwyrm/templates/book/edit_book.html:158 #, fuzzy, python-format #| msgid "Direct Messages with %(username)s" msgid "Remove %(name)s" msgstr "Direktnachrichten mit %(username)s" -#: bookwyrm/templates/book/edit_book.html:171 +#: bookwyrm/templates/book/edit_book.html:163 #, fuzzy #| msgid "Edit Author" msgid "Add Authors:" msgstr "Autor*in editieren" -#: bookwyrm/templates/book/edit_book.html:172 +#: bookwyrm/templates/book/edit_book.html:164 msgid "John Doe, Jane Smith" msgstr "" -#: bookwyrm/templates/book/edit_book.html:178 -#: bookwyrm/templates/user/shelf/shelf.html:76 +#: bookwyrm/templates/book/edit_book.html:170 +#: bookwyrm/templates/user/shelf/shelf.html:77 msgid "Cover" msgstr "" -#: bookwyrm/templates/book/edit_book.html:206 +#: bookwyrm/templates/book/edit_book.html:198 msgid "Physical Properties" msgstr "Physikalische Eigenschaften" -#: bookwyrm/templates/book/edit_book.html:207 +#: bookwyrm/templates/book/edit_book.html:199 #: bookwyrm/templates/book/format_filter.html:5 msgid "Format:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:215 +#: bookwyrm/templates/book/edit_book.html:207 msgid "Pages:" msgstr "Seiten:" -#: bookwyrm/templates/book/edit_book.html:222 +#: bookwyrm/templates/book/edit_book.html:214 msgid "Book Identifiers" msgstr "Buchidentifikatoren" -#: bookwyrm/templates/book/edit_book.html:223 +#: bookwyrm/templates/book/edit_book.html:215 msgid "ISBN 13:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:227 +#: bookwyrm/templates/book/edit_book.html:219 msgid "ISBN 10:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:231 -#: bookwyrm/templates/edit_author.html:59 -msgid "Openlibrary key:" -msgstr "" - -#: bookwyrm/templates/book/editions.html:5 +#: bookwyrm/templates/book/editions.html:4 #, python-format msgid "Editions of %(book_title)s" msgstr "Editionen von %(book_title)s" -#: bookwyrm/templates/book/editions.html:9 +#: bookwyrm/templates/book/editions.html:8 #, python-format msgid "Editions of \"%(work_title)s\"" msgstr "Editionen von \"%(work_title)s\"" @@ -574,7 +642,7 @@ msgstr "Veröffentlicht von %(publisher)s." #: bookwyrm/templates/components/inline_form.html:8 #: bookwyrm/templates/components/modal.html:11 -#: bookwyrm/templates/feed/feed_layout.html:70 +#: bookwyrm/templates/feed/feed_layout.html:69 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 #: bookwyrm/templates/search/book.html:32 @@ -640,7 +708,7 @@ msgstr "Vorschlagen" msgid "Recently active" msgstr "" -#: bookwyrm/templates/directory/user_card.html:32 +#: bookwyrm/templates/directory/user_card.html:33 #, fuzzy #| msgid "followed you" msgid "follower you follow" @@ -648,7 +716,7 @@ msgid_plural "followers you follow" msgstr[0] "folgt dir" msgstr[1] "folgt dir" -#: bookwyrm/templates/directory/user_card.html:39 +#: bookwyrm/templates/directory/user_card.html:40 #, fuzzy #| msgid "Your shelves" msgid "book on your shelves" @@ -656,11 +724,11 @@ msgid_plural "books on your shelves" msgstr[0] "Deine Regale" msgstr[1] "Deine Regale" -#: bookwyrm/templates/directory/user_card.html:47 +#: bookwyrm/templates/directory/user_card.html:48 msgid "posts" msgstr "" -#: bookwyrm/templates/directory/user_card.html:53 +#: bookwyrm/templates/directory/user_card.html:54 msgid "last active" msgstr "" @@ -748,46 +816,6 @@ msgstr "Absenden" msgid "Your Account" msgstr "Dein Account" -#: bookwyrm/templates/edit_author.html:5 -#, fuzzy -#| msgid "Edit Author" -msgid "Edit Author:" -msgstr "Autor*in editieren" - -#: bookwyrm/templates/edit_author.html:32 bookwyrm/templates/lists/form.html:8 -#: bookwyrm/templates/user/shelf/create_shelf_form.html:13 -#: bookwyrm/templates/user/shelf/edit_shelf_form.html:14 -msgid "Name:" -msgstr "" - -#: bookwyrm/templates/edit_author.html:37 -msgid "Bio:" -msgstr "" - -#: bookwyrm/templates/edit_author.html:42 -msgid "Wikipedia link:" -msgstr "Wikipedialink:" - -#: bookwyrm/templates/edit_author.html:47 -msgid "Birth date:" -msgstr "Geburtsdatum:" - -#: bookwyrm/templates/edit_author.html:52 -msgid "Death date:" -msgstr "Todesdatum:" - -#: bookwyrm/templates/edit_author.html:58 -msgid "Author Identifiers" -msgstr "Autor*innenidentifikatoren" - -#: bookwyrm/templates/edit_author.html:64 -msgid "Librarything key:" -msgstr "" - -#: bookwyrm/templates/edit_author.html:69 -msgid "Goodreads key:" -msgstr "" - #: bookwyrm/templates/email/html_layout.html:15 #: bookwyrm/templates/email/text_layout.html:2 msgid "Hi there," @@ -872,82 +900,82 @@ msgstr "Alle Nachrichten" msgid "You have no messages right now." msgstr "Du hast momentan keine Nachrichten." -#: bookwyrm/templates/feed/feed.html:9 +#: bookwyrm/templates/feed/feed.html:8 msgid "Home Timeline" msgstr "" -#: bookwyrm/templates/feed/feed.html:11 +#: bookwyrm/templates/feed/feed.html:10 msgid "Local Timeline" msgstr "" -#: bookwyrm/templates/feed/feed.html:13 +#: bookwyrm/templates/feed/feed.html:12 #, fuzzy #| msgid "Federated Servers" msgid "Federated Timeline" msgstr "Föderierende Server" -#: bookwyrm/templates/feed/feed.html:19 +#: bookwyrm/templates/feed/feed.html:18 msgid "Home" msgstr "" -#: bookwyrm/templates/feed/feed.html:22 +#: bookwyrm/templates/feed/feed.html:21 msgid "Local" msgstr "Lokal" -#: bookwyrm/templates/feed/feed.html:25 +#: bookwyrm/templates/feed/feed.html:24 #: bookwyrm/templates/settings/edit_server.html:40 msgid "Federated" msgstr "Föderiert" -#: bookwyrm/templates/feed/feed.html:33 +#: bookwyrm/templates/feed/feed.html:32 #, python-format msgid "load 0 unread status(es)" msgstr "" -#: bookwyrm/templates/feed/feed.html:48 +#: bookwyrm/templates/feed/feed.html:47 msgid "There aren't any activities right now! Try following a user to get started" msgstr "Hier sind noch keine Aktivitäten! Folge anderen, um loszulegen" -#: bookwyrm/templates/feed/feed.html:56 +#: bookwyrm/templates/feed/feed.html:55 #: bookwyrm/templates/get_started/users.html:6 msgid "Who to follow" msgstr "" -#: bookwyrm/templates/feed/feed_layout.html:5 +#: bookwyrm/templates/feed/feed_layout.html:4 msgid "Updates" msgstr "" -#: bookwyrm/templates/feed/feed_layout.html:11 +#: bookwyrm/templates/feed/feed_layout.html:10 #: bookwyrm/templates/layout.html:59 #: bookwyrm/templates/user/shelf/books_header.html:3 msgid "Your books" msgstr "Deine Bücher" -#: bookwyrm/templates/feed/feed_layout.html:13 +#: bookwyrm/templates/feed/feed_layout.html:12 msgid "There are no books here right now! Try searching for a book to get started" msgstr "Hier sind noch keine Bücher! Versuche nach Büchern zu suchen um loszulegen" -#: bookwyrm/templates/feed/feed_layout.html:24 -#: bookwyrm/templates/user/shelf/shelf.html:28 +#: bookwyrm/templates/feed/feed_layout.html:23 +#: bookwyrm/templates/user/shelf/shelf.html:29 #, fuzzy #| msgid "Read" msgid "To Read" msgstr "Auf der Leseliste" -#: bookwyrm/templates/feed/feed_layout.html:25 -#: bookwyrm/templates/user/shelf/shelf.html:28 +#: bookwyrm/templates/feed/feed_layout.html:24 +#: bookwyrm/templates/user/shelf/shelf.html:29 #, fuzzy #| msgid "Start reading" msgid "Currently Reading" msgstr "Gerade lesend" -#: bookwyrm/templates/feed/feed_layout.html:26 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:11 -#: bookwyrm/templates/user/shelf/shelf.html:28 +#: bookwyrm/templates/feed/feed_layout.html:25 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:13 +#: bookwyrm/templates/user/shelf/shelf.html:29 msgid "Read" msgstr "Gelesen" -#: bookwyrm/templates/feed/feed_layout.html:88 bookwyrm/templates/goal.html:26 +#: bookwyrm/templates/feed/feed_layout.html:87 bookwyrm/templates/goal.html:26 #: bookwyrm/templates/snippets/goal_card.html:6 #, python-format msgid "%(year)s Reading Goal" @@ -980,7 +1008,7 @@ msgid "What are you reading?" msgstr "Zu lesen angefangen" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/lists/list.html:119 +#: bookwyrm/templates/lists/list.html:120 msgid "Search for a book" msgstr "Nach einem Buch suchen" @@ -1000,7 +1028,7 @@ msgstr "" #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/layout.html:38 bookwyrm/templates/layout.html:39 -#: bookwyrm/templates/lists/list.html:123 +#: bookwyrm/templates/lists/list.html:124 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -1019,7 +1047,7 @@ msgid "Popular on %(site_name)s" msgstr "Über %(site_name)s" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:136 +#: bookwyrm/templates/lists/list.html:137 msgid "No books found" msgstr "Keine Bücher gefunden" @@ -1152,95 +1180,95 @@ msgstr "Bücher importieren" msgid "Data source:" msgstr "Datenquelle" -#: bookwyrm/templates/import.html:29 +#: bookwyrm/templates/import.html:32 msgid "Data file:" msgstr "" -#: bookwyrm/templates/import.html:37 +#: bookwyrm/templates/import.html:40 msgid "Include reviews" msgstr "Bewertungen importieren" -#: bookwyrm/templates/import.html:42 +#: bookwyrm/templates/import.html:45 msgid "Privacy setting for imported reviews:" msgstr "Datenschutzeinstellung für importierte Bewertungen" -#: bookwyrm/templates/import.html:48 +#: bookwyrm/templates/import.html:51 #: bookwyrm/templates/settings/server_blocklist.html:64 msgid "Import" msgstr "Importieren" -#: bookwyrm/templates/import.html:53 +#: bookwyrm/templates/import.html:56 msgid "Recent Imports" msgstr "Aktuelle Importe" -#: bookwyrm/templates/import.html:55 +#: bookwyrm/templates/import.html:58 msgid "No recent imports" msgstr "Keine aktuellen Importe" -#: bookwyrm/templates/import_status.html:6 -#: bookwyrm/templates/import_status.html:10 +#: bookwyrm/templates/import_status.html:5 +#: bookwyrm/templates/import_status.html:9 msgid "Import Status" msgstr "Importstatus" -#: bookwyrm/templates/import_status.html:13 +#: bookwyrm/templates/import_status.html:12 msgid "Import started:" msgstr "Import gestartet:" -#: bookwyrm/templates/import_status.html:17 +#: bookwyrm/templates/import_status.html:16 msgid "Import completed:" msgstr "Import abgeschlossen:" -#: bookwyrm/templates/import_status.html:20 +#: bookwyrm/templates/import_status.html:19 msgid "TASK FAILED" msgstr "AUFGABE GESCHEITERT" -#: bookwyrm/templates/import_status.html:26 +#: bookwyrm/templates/import_status.html:25 msgid "Import still in progress." msgstr "Import läuft noch." -#: bookwyrm/templates/import_status.html:28 +#: bookwyrm/templates/import_status.html:27 msgid "(Hit reload to update!)" msgstr "(Aktualisiere für ein Update!)" -#: bookwyrm/templates/import_status.html:35 +#: bookwyrm/templates/import_status.html:34 msgid "Failed to load" msgstr "Laden fehlgeschlagen" -#: bookwyrm/templates/import_status.html:44 +#: bookwyrm/templates/import_status.html:43 #, python-format msgid "Jump to the bottom of the list to select the %(failed_count)s items which failed to import." msgstr "Zum Ende der Liste springen, um die %(failed_count)s Einträge, deren Import fehlschlug, auszuwählen." -#: bookwyrm/templates/import_status.html:79 +#: bookwyrm/templates/import_status.html:78 msgid "Select all" msgstr "Alle auswählen" -#: bookwyrm/templates/import_status.html:82 +#: bookwyrm/templates/import_status.html:81 msgid "Retry items" msgstr "Punkte erneut versuchen" -#: bookwyrm/templates/import_status.html:108 +#: bookwyrm/templates/import_status.html:107 msgid "Successfully imported" msgstr "Erfolgreich importiert" -#: bookwyrm/templates/import_status.html:112 +#: bookwyrm/templates/import_status.html:111 msgid "Book" msgstr "Buch" -#: bookwyrm/templates/import_status.html:115 -#: bookwyrm/templates/snippets/create_status_form.html:10 -#: bookwyrm/templates/user/shelf/shelf.html:77 -#: bookwyrm/templates/user/shelf/shelf.html:95 +#: bookwyrm/templates/import_status.html:114 +#: bookwyrm/templates/snippets/create_status_form.html:13 +#: bookwyrm/templates/user/shelf/shelf.html:78 +#: bookwyrm/templates/user/shelf/shelf.html:98 msgid "Title" msgstr "Titel" -#: bookwyrm/templates/import_status.html:118 -#: bookwyrm/templates/user/shelf/shelf.html:78 -#: bookwyrm/templates/user/shelf/shelf.html:98 +#: bookwyrm/templates/import_status.html:117 +#: bookwyrm/templates/user/shelf/shelf.html:79 +#: bookwyrm/templates/user/shelf/shelf.html:101 msgid "Author" msgstr "Autor*in" -#: bookwyrm/templates/import_status.html:141 +#: bookwyrm/templates/import_status.html:140 msgid "Imported" msgstr "Importiert" @@ -1351,7 +1379,8 @@ msgid "Support %(site_name)s on % msgstr "%(site_name)s auf %(support_title)s unterstützen" #: bookwyrm/templates/layout.html:217 -msgid "BookWyrm is open source software. You can contribute or report issues on GitHub." +#| msgid "BookWyrm is open source software. You can contribute or report issues on GitHub." +msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "BookWyrm ist open source Software. Du kannst dich auf GitHub beteiligen oder etwas melden." #: bookwyrm/templates/lists/create_form.html:5 @@ -1396,7 +1425,7 @@ msgid "Discard" msgstr "Ablehnen" #: bookwyrm/templates/lists/edit_form.html:5 -#: bookwyrm/templates/lists/list_layout.html:18 +#: bookwyrm/templates/lists/list_layout.html:17 msgid "Edit List" msgstr "Liste bearbeiten" @@ -1430,77 +1459,77 @@ msgstr "Offen" msgid "Anyone can add books to this list" msgstr "Alle können Bücher hinzufügen" -#: bookwyrm/templates/lists/list.html:19 +#: bookwyrm/templates/lists/list.html:20 msgid "You successfully suggested a book for this list!" msgstr "" -#: bookwyrm/templates/lists/list.html:21 +#: bookwyrm/templates/lists/list.html:22 #, fuzzy #| msgid "Anyone can add books to this list" msgid "You successfully added a book to this list!" msgstr "Alle können Bücher hinzufügen" -#: bookwyrm/templates/lists/list.html:27 +#: bookwyrm/templates/lists/list.html:28 msgid "This list is currently empty" msgstr "Diese Liste ist momentan leer" -#: bookwyrm/templates/lists/list.html:64 +#: bookwyrm/templates/lists/list.html:65 #, fuzzy, python-format #| msgid "Direct Messages with %(username)s" msgid "Added by %(username)s" msgstr "Direktnachrichten mit %(username)s" -#: bookwyrm/templates/lists/list.html:76 +#: bookwyrm/templates/lists/list.html:77 #, fuzzy #| msgid "Started" msgid "Set" msgstr "Gestartet" -#: bookwyrm/templates/lists/list.html:79 +#: bookwyrm/templates/lists/list.html:80 #, fuzzy #| msgid "List curation:" msgid "List position" msgstr "Listenkuratierung:" -#: bookwyrm/templates/lists/list.html:85 +#: bookwyrm/templates/lists/list.html:86 #: bookwyrm/templates/snippets/shelf_selector.html:26 msgid "Remove" msgstr "Entfernen" -#: bookwyrm/templates/lists/list.html:98 bookwyrm/templates/lists/list.html:110 +#: bookwyrm/templates/lists/list.html:99 bookwyrm/templates/lists/list.html:111 #, fuzzy #| msgid "Your Lists" msgid "Sort List" msgstr "Deine Listen" -#: bookwyrm/templates/lists/list.html:104 +#: bookwyrm/templates/lists/list.html:105 #, fuzzy #| msgid "List curation:" msgid "Direction" msgstr "Listenkuratierung:" -#: bookwyrm/templates/lists/list.html:115 +#: bookwyrm/templates/lists/list.html:116 msgid "Add Books" msgstr "Bücher hinzufügen" -#: bookwyrm/templates/lists/list.html:115 +#: bookwyrm/templates/lists/list.html:116 msgid "Suggest Books" msgstr "Bücher vorschlagen" -#: bookwyrm/templates/lists/list.html:124 +#: bookwyrm/templates/lists/list.html:125 msgid "search" msgstr "suchen" -#: bookwyrm/templates/lists/list.html:130 +#: bookwyrm/templates/lists/list.html:131 msgid "Clear search" msgstr "Suche leeren" -#: bookwyrm/templates/lists/list.html:135 +#: bookwyrm/templates/lists/list.html:136 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "Keine passenden Bücher zu \"%(query)s\" gefunden" -#: bookwyrm/templates/lists/list.html:163 +#: bookwyrm/templates/lists/list.html:164 msgid "Suggest" msgstr "Vorschlagen" @@ -1525,38 +1554,38 @@ msgstr "Kontaktiere für eine Einladung eine*n Admin" msgid "More about this site" msgstr "Mehr über diese Seite" +#: bookwyrm/templates/moderation/report.html:5 #: bookwyrm/templates/moderation/report.html:6 -#: bookwyrm/templates/moderation/report.html:7 #: bookwyrm/templates/moderation/report_preview.html:6 #, python-format msgid "Report #%(report_id)s: %(username)s" msgstr "Meldung #%(report_id)s: %(username)s" -#: bookwyrm/templates/moderation/report.html:11 +#: bookwyrm/templates/moderation/report.html:10 msgid "Back to reports" msgstr "Zurück zu den Meldungen" -#: bookwyrm/templates/moderation/report.html:23 +#: bookwyrm/templates/moderation/report.html:22 msgid "Moderator Comments" msgstr "Moderator:innenkommentare" -#: bookwyrm/templates/moderation/report.html:41 +#: bookwyrm/templates/moderation/report.html:40 #: bookwyrm/templates/snippets/create_status.html:28 -#: bookwyrm/templates/snippets/create_status_form.html:63 +#: bookwyrm/templates/snippets/create_status_form.html:66 msgid "Comment" msgstr "Kommentieren" -#: bookwyrm/templates/moderation/report.html:46 +#: bookwyrm/templates/moderation/report.html:45 #, fuzzy #| msgid "Delete status" msgid "Reported statuses" msgstr "Post löschen" -#: bookwyrm/templates/moderation/report.html:48 +#: bookwyrm/templates/moderation/report.html:47 msgid "No statuses reported" msgstr "Keine Beiträge gemeldet" -#: bookwyrm/templates/moderation/report.html:54 +#: bookwyrm/templates/moderation/report.html:53 #, fuzzy #| msgid "Statuses has been deleted" msgid "Status has been deleted" @@ -1848,7 +1877,7 @@ msgstr "Suche" #: bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 -#: bookwyrm/templates/user/layout.html:73 +#: bookwyrm/templates/user/layout.html:74 #, fuzzy #| msgid "Book" msgid "Books" @@ -1925,7 +1954,7 @@ msgid "Add server" msgstr "Cover hinzufügen" #: bookwyrm/templates/settings/edit_server.html:7 -#: bookwyrm/templates/settings/federated_server.html:12 +#: bookwyrm/templates/settings/federated_server.html:13 #: bookwyrm/templates/settings/server_blocklist.html:7 #, fuzzy #| msgid "Back to reports" @@ -1946,7 +1975,7 @@ msgid "Instance:" msgstr "Instanzname" #: bookwyrm/templates/settings/edit_server.html:37 -#: bookwyrm/templates/settings/federated_server.html:29 +#: bookwyrm/templates/settings/federated_server.html:30 #: bookwyrm/templates/user_admin/user_info.html:34 #, fuzzy #| msgid "Import Status" @@ -1954,20 +1983,20 @@ msgid "Status:" msgstr "Importstatus" #: bookwyrm/templates/settings/edit_server.html:41 -#: bookwyrm/templates/settings/federated_server.html:9 +#: bookwyrm/templates/settings/federated_server.html:10 #, fuzzy #| msgid "Blocked Users" msgid "Blocked" msgstr "Blockierte Nutzer*innen" #: bookwyrm/templates/settings/edit_server.html:48 -#: bookwyrm/templates/settings/federated_server.html:21 +#: bookwyrm/templates/settings/federated_server.html:22 #: bookwyrm/templates/user_admin/user_info.html:26 msgid "Software:" msgstr "" #: bookwyrm/templates/settings/edit_server.html:55 -#: bookwyrm/templates/settings/federated_server.html:25 +#: bookwyrm/templates/settings/federated_server.html:26 #: bookwyrm/templates/user_admin/user_info.html:30 #, fuzzy #| msgid "Description:" @@ -1978,81 +2007,81 @@ msgstr "Beschreibung:" msgid "Notes:" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:18 +#: bookwyrm/templates/settings/federated_server.html:19 msgid "Details" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:36 -#: bookwyrm/templates/user/layout.html:55 +#: bookwyrm/templates/settings/federated_server.html:37 +#: bookwyrm/templates/user/layout.html:56 msgid "Activity" msgstr "Aktivität" -#: bookwyrm/templates/settings/federated_server.html:39 +#: bookwyrm/templates/settings/federated_server.html:40 msgid "Users:" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:42 -#: bookwyrm/templates/settings/federated_server.html:49 +#: bookwyrm/templates/settings/federated_server.html:43 +#: bookwyrm/templates/settings/federated_server.html:50 msgid "View all" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:46 +#: bookwyrm/templates/settings/federated_server.html:47 #, fuzzy #| msgid "Recent Imports" msgid "Reports:" msgstr "Aktuelle Importe" -#: bookwyrm/templates/settings/federated_server.html:53 +#: bookwyrm/templates/settings/federated_server.html:54 #, fuzzy #| msgid "followed you" msgid "Followed by us:" msgstr "folgt dir" -#: bookwyrm/templates/settings/federated_server.html:59 +#: bookwyrm/templates/settings/federated_server.html:60 #, fuzzy #| msgid "followed you" msgid "Followed by them:" msgstr "folgt dir" -#: bookwyrm/templates/settings/federated_server.html:65 +#: bookwyrm/templates/settings/federated_server.html:66 #, fuzzy #| msgid "Blocked Users" msgid "Blocked by us:" msgstr "Blockierte Nutzer*innen" -#: bookwyrm/templates/settings/federated_server.html:77 +#: bookwyrm/templates/settings/federated_server.html:78 #: bookwyrm/templates/user_admin/user_info.html:39 msgid "Notes" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:80 +#: bookwyrm/templates/settings/federated_server.html:81 #, fuzzy #| msgid "Edit Book" msgid "Edit" msgstr "Buch editieren" -#: bookwyrm/templates/settings/federated_server.html:100 +#: bookwyrm/templates/settings/federated_server.html:101 #: bookwyrm/templates/user_admin/user_moderation_actions.html:3 #, fuzzy #| msgid "Notifications" msgid "Actions" msgstr "Benachrichtigungen" -#: bookwyrm/templates/settings/federated_server.html:104 +#: bookwyrm/templates/settings/federated_server.html:105 #: bookwyrm/templates/snippets/block_button.html:5 msgid "Block" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:105 +#: bookwyrm/templates/settings/federated_server.html:106 msgid "All users from this instance will be deactivated." msgstr "" -#: bookwyrm/templates/settings/federated_server.html:110 +#: bookwyrm/templates/settings/federated_server.html:111 #: bookwyrm/templates/snippets/block_button.html:10 msgid "Un-block" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:111 +#: bookwyrm/templates/settings/federated_server.html:112 msgid "All users from this instance will be re-activated." msgstr "" @@ -2281,7 +2310,7 @@ msgstr "Folgeanfragen" msgid "Registration closed text:" msgstr "Registrierungen geschlossen text" -#: bookwyrm/templates/snippets/book_cover.html:32 +#: bookwyrm/templates/snippets/book_cover.html:31 #, fuzzy #| msgid "Add cover" msgid "No cover" @@ -2292,15 +2321,15 @@ msgstr "Cover hinzufügen" msgid "%(title)s by " msgstr "%(title)s von " -#: bookwyrm/templates/snippets/boost_button.html:8 #: bookwyrm/templates/snippets/boost_button.html:9 +#: bookwyrm/templates/snippets/boost_button.html:10 #, fuzzy #| msgid "boosted" msgid "Boost" msgstr "teilt" -#: bookwyrm/templates/snippets/boost_button.html:15 #: bookwyrm/templates/snippets/boost_button.html:16 +#: bookwyrm/templates/snippets/boost_button.html:17 #, fuzzy #| msgid "Un-boost status" msgid "Un-boost" @@ -2322,72 +2351,72 @@ msgstr "Bewerten" msgid "Quote" msgstr "Zitieren" -#: bookwyrm/templates/snippets/create_status_form.html:20 +#: bookwyrm/templates/snippets/create_status_form.html:23 #, fuzzy #| msgid "Comment" msgid "Comment:" msgstr "Kommentieren" -#: bookwyrm/templates/snippets/create_status_form.html:22 +#: bookwyrm/templates/snippets/create_status_form.html:25 #, fuzzy #| msgid "Quote" msgid "Quote:" msgstr "Zitieren" -#: bookwyrm/templates/snippets/create_status_form.html:24 +#: bookwyrm/templates/snippets/create_status_form.html:27 #, fuzzy #| msgid "Review" msgid "Review:" msgstr "Bewerten" -#: bookwyrm/templates/snippets/create_status_form.html:53 -#: bookwyrm/templates/snippets/status/layout.html:30 +#: bookwyrm/templates/snippets/create_status_form.html:56 +#: bookwyrm/templates/snippets/status/layout.html:29 +#: bookwyrm/templates/snippets/status/layout.html:47 #: bookwyrm/templates/snippets/status/layout.html:48 -#: bookwyrm/templates/snippets/status/layout.html:49 msgid "Reply" msgstr "Antwort" -#: bookwyrm/templates/snippets/create_status_form.html:53 +#: bookwyrm/templates/snippets/create_status_form.html:56 #, fuzzy #| msgid "Footer Content" msgid "Content" msgstr "Inhalt des Footers" -#: bookwyrm/templates/snippets/create_status_form.html:77 +#: bookwyrm/templates/snippets/create_status_form.html:80 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:16 msgid "Progress:" msgstr "Fortschritt:" -#: bookwyrm/templates/snippets/create_status_form.html:85 -#: bookwyrm/templates/snippets/readthrough_form.html:26 +#: bookwyrm/templates/snippets/create_status_form.html:88 +#: bookwyrm/templates/snippets/readthrough_form.html:22 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30 msgid "pages" msgstr "Seiten" -#: bookwyrm/templates/snippets/create_status_form.html:86 -#: bookwyrm/templates/snippets/readthrough_form.html:27 +#: bookwyrm/templates/snippets/create_status_form.html:89 +#: bookwyrm/templates/snippets/readthrough_form.html:23 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31 msgid "percent" msgstr "Prozent" -#: bookwyrm/templates/snippets/create_status_form.html:92 +#: bookwyrm/templates/snippets/create_status_form.html:95 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:36 #, python-format msgid "of %(pages)s pages" msgstr "von %(pages)s Seiten" -#: bookwyrm/templates/snippets/create_status_form.html:107 +#: bookwyrm/templates/snippets/create_status_form.html:110 msgid "Include spoiler alert" msgstr "Spoileralarm aktivieren" -#: bookwyrm/templates/snippets/create_status_form.html:114 +#: bookwyrm/templates/snippets/create_status_form.html:117 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:19 msgid "Private" msgstr "Privat" -#: bookwyrm/templates/snippets/create_status_form.html:125 +#: bookwyrm/templates/snippets/create_status_form.html:128 msgid "Post" msgstr "Absenden" @@ -2401,17 +2430,17 @@ msgid "You are deleting this readthrough and its %(count)s associated progress u msgstr "Du löscht diesen Leseforschritt und %(count)s zugehörige Fortschrittsupdates." #: bookwyrm/templates/snippets/delete_readthrough_modal.html:15 -#: bookwyrm/templates/snippets/follow_request_buttons.html:13 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 msgid "Delete" msgstr "Löschen" -#: bookwyrm/templates/snippets/fav_button.html:7 #: bookwyrm/templates/snippets/fav_button.html:9 +#: bookwyrm/templates/snippets/fav_button.html:11 msgid "Like" msgstr "" -#: bookwyrm/templates/snippets/fav_button.html:15 -#: bookwyrm/templates/snippets/fav_button.html:16 +#: bookwyrm/templates/snippets/fav_button.html:17 +#: bookwyrm/templates/snippets/fav_button.html:18 #, fuzzy #| msgid "Un-like status" msgid "Un-like" @@ -2451,11 +2480,11 @@ msgstr "Folgeanfrage senden" msgid "Unfollow" msgstr "Entfolgen" -#: bookwyrm/templates/snippets/follow_request_buttons.html:8 +#: bookwyrm/templates/snippets/follow_request_buttons.html:7 msgid "Accept" msgstr "Annehmen" -#: bookwyrm/templates/snippets/form_rate_stars.html:20 +#: bookwyrm/templates/snippets/form_rate_stars.html:19 #: bookwyrm/templates/snippets/stars.html:13 msgid "No rating" msgstr "Kein Rating" @@ -2505,8 +2534,8 @@ msgid "Goal privacy:" msgstr "Sichtbarkeit des Ziels" #: bookwyrm/templates/snippets/goal_form.html:26 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:45 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:33 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:37 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:29 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:20 msgid "Post to feed" msgstr "Posten" @@ -2619,12 +2648,12 @@ msgstr "Diese Lesedaten löschen" msgid "Started reading" msgstr "Zu lesen angefangen" -#: bookwyrm/templates/snippets/readthrough_form.html:18 +#: bookwyrm/templates/snippets/readthrough_form.html:14 msgid "Progress" msgstr "Fortschritt" -#: bookwyrm/templates/snippets/readthrough_form.html:34 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:29 +#: bookwyrm/templates/snippets/readthrough_form.html:30 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:25 msgid "Finished reading" msgstr "Lesen abgeschlossen" @@ -2632,29 +2661,29 @@ msgstr "Lesen abgeschlossen" msgid "Sign Up" msgstr "Registrieren" -#: bookwyrm/templates/snippets/report_button.html:5 +#: bookwyrm/templates/snippets/report_button.html:6 #, fuzzy #| msgid "Import" msgid "Report" msgstr "Importieren" #: bookwyrm/templates/snippets/rss_title.html:5 -#: bookwyrm/templates/snippets/status/status_header.html:34 +#: 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:36 +#: 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:38 +#: 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:40 +#: bookwyrm/templates/snippets/status/status_header.html:41 msgid "quoted" msgstr "zitierte" @@ -2674,7 +2703,7 @@ msgid "Finish \"%(book_title)s\"" msgstr "\"%(book_title)s\" abschließen" #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:5 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:34 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:36 #, fuzzy #| msgid "Progress" msgid "Update progress" @@ -2684,20 +2713,20 @@ msgstr "Fortschritt" msgid "More shelves" msgstr "Mehr Regale" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:8 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:10 msgid "Start reading" msgstr "Zu lesen beginnen" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:13 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:15 msgid "Finish reading" msgstr "Lesen abschließen" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:16 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:18 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:26 msgid "Want to read" msgstr "Auf Leseliste setzen" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:45 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:47 #, fuzzy, python-format #| msgid "Lists: %(username)s" msgid "Remove from %(name)s" @@ -2713,40 +2742,40 @@ msgstr "\"%(book_title)s\" beginnen" msgid "Want to Read \"%(book_title)s\"" msgstr "\"%(book_title)s\" auf Leseliste setzen" -#: bookwyrm/templates/snippets/status/content_status.html:70 -#: bookwyrm/templates/snippets/trimmed_text.html:14 +#: bookwyrm/templates/snippets/status/content_status.html:71 +#: bookwyrm/templates/snippets/trimmed_text.html:15 msgid "Show more" msgstr "Mehr anzeigen" -#: bookwyrm/templates/snippets/status/content_status.html:85 -#: bookwyrm/templates/snippets/trimmed_text.html:29 +#: bookwyrm/templates/snippets/status/content_status.html:86 +#: bookwyrm/templates/snippets/trimmed_text.html:30 msgid "Show less" msgstr "Weniger anzeigen" -#: bookwyrm/templates/snippets/status/content_status.html:115 +#: bookwyrm/templates/snippets/status/content_status.html:116 msgid "Open image in new window" msgstr "Bild in neuem Fenster öffnen" -#: bookwyrm/templates/snippets/status/layout.html:22 +#: bookwyrm/templates/snippets/status/layout.html:21 #: bookwyrm/templates/snippets/status/status_options.html:17 msgid "Delete status" msgstr "Post löschen" +#: bookwyrm/templates/snippets/status/layout.html:51 #: bookwyrm/templates/snippets/status/layout.html:52 -#: bookwyrm/templates/snippets/status/layout.html:53 msgid "Boost status" msgstr "Status teilen" +#: bookwyrm/templates/snippets/status/layout.html:55 #: bookwyrm/templates/snippets/status/layout.html:56 -#: bookwyrm/templates/snippets/status/layout.html:57 msgid "Like status" msgstr "Status favorisieren" -#: bookwyrm/templates/snippets/status/status.html:9 +#: bookwyrm/templates/snippets/status/status.html:10 msgid "boosted" msgstr "teilt" -#: bookwyrm/templates/snippets/status/status_header.html:44 +#: bookwyrm/templates/snippets/status/status_header.html:45 #, fuzzy, python-format #| msgid "replied to your status" msgid "replied to %(username)s's status" @@ -2785,15 +2814,15 @@ msgstr "Zu lesen angefangen" msgid "Sorted descending" msgstr "Zu lesen angefangen" -#: bookwyrm/templates/user/layout.html:12 bookwyrm/templates/user/user.html:10 +#: bookwyrm/templates/user/layout.html:13 bookwyrm/templates/user/user.html:10 msgid "User Profile" msgstr "Benutzerprofil" -#: bookwyrm/templates/user/layout.html:36 +#: bookwyrm/templates/user/layout.html:37 msgid "Follow Requests" msgstr "Folgeanfragen" -#: bookwyrm/templates/user/layout.html:61 +#: bookwyrm/templates/user/layout.html:62 msgid "Reading Goal" msgstr "Leseziel" @@ -2840,40 +2869,40 @@ msgstr "Regal bearbeiten" msgid "Update shelf" msgstr "Regal aktualisieren" -#: bookwyrm/templates/user/shelf/shelf.html:24 bookwyrm/views/shelf.py:48 +#: bookwyrm/templates/user/shelf/shelf.html:25 bookwyrm/views/shelf.py:51 #, fuzzy #| msgid "books" msgid "All books" msgstr "Bücher" -#: bookwyrm/templates/user/shelf/shelf.html:37 +#: bookwyrm/templates/user/shelf/shelf.html:38 msgid "Create shelf" msgstr "Regal erstellen" -#: bookwyrm/templates/user/shelf/shelf.html:60 +#: bookwyrm/templates/user/shelf/shelf.html:61 msgid "Edit shelf" msgstr "Regal bearbeiten" -#: bookwyrm/templates/user/shelf/shelf.html:79 -#: bookwyrm/templates/user/shelf/shelf.html:101 +#: bookwyrm/templates/user/shelf/shelf.html:80 +#: bookwyrm/templates/user/shelf/shelf.html:104 msgid "Shelved" msgstr "Ins Regal gestellt" -#: bookwyrm/templates/user/shelf/shelf.html:80 -#: bookwyrm/templates/user/shelf/shelf.html:105 +#: bookwyrm/templates/user/shelf/shelf.html:81 +#: bookwyrm/templates/user/shelf/shelf.html:108 msgid "Started" msgstr "Gestartet" -#: bookwyrm/templates/user/shelf/shelf.html:81 -#: bookwyrm/templates/user/shelf/shelf.html:108 +#: bookwyrm/templates/user/shelf/shelf.html:82 +#: bookwyrm/templates/user/shelf/shelf.html:111 msgid "Finished" msgstr "Abgeschlossen" -#: bookwyrm/templates/user/shelf/shelf.html:134 +#: bookwyrm/templates/user/shelf/shelf.html:137 msgid "This shelf is empty." msgstr "Dieses Regal ist leer." -#: bookwyrm/templates/user/shelf/shelf.html:140 +#: bookwyrm/templates/user/shelf/shelf.html:143 msgid "Delete shelf" msgstr "Regal löschen" @@ -2903,24 +2932,24 @@ msgstr "" msgid "No activities yet!" msgstr "Noch keine Aktivitäten!" -#: bookwyrm/templates/user/user_preview.html:14 +#: bookwyrm/templates/user/user_preview.html:15 #, python-format msgid "Joined %(date)s" msgstr "Beigetreten %(date)s" -#: bookwyrm/templates/user/user_preview.html:18 +#: bookwyrm/templates/user/user_preview.html:19 #, python-format msgid "%(counter)s follower" msgid_plural "%(counter)s followers" msgstr[0] "%(counter)s Folgende*r" msgstr[1] "%(counter)s Folgende" -#: bookwyrm/templates/user/user_preview.html:19 +#: bookwyrm/templates/user/user_preview.html:20 #, python-format msgid "%(counter)s following" msgstr "Folgt %(counter)s" -#: bookwyrm/templates/user/user_preview.html:25 +#: bookwyrm/templates/user/user_preview.html:26 #, fuzzy, python-format #| msgid "followed you" msgid "%(mutuals_display)s follower you follow" @@ -2928,7 +2957,7 @@ msgid_plural "%(mutuals_display)s followers you follow" msgstr[0] "folgt dir" msgstr[1] "folgt dir" -#: bookwyrm/templates/user_admin/user.html:11 +#: bookwyrm/templates/user_admin/user.html:9 #, fuzzy #| msgid "Back to reports" msgid "Back to users" @@ -3009,17 +3038,22 @@ msgstr "" msgid "Access level:" msgstr "" -#: bookwyrm/views/password.py:32 +#: bookwyrm/views/password.py:30 bookwyrm/views/password.py:35 #, fuzzy #| msgid "A user with that username already exists." msgid "No user with that email address was found." msgstr "Dieser Benutzename ist bereits vergeben." -#: bookwyrm/views/password.py:41 +#: bookwyrm/views/password.py:44 #, python-format msgid "A password reset link sent to %s" msgstr "" +#, fuzzy +#~| msgid "Book" +#~ msgid "BookWyrm\\" +#~ msgstr "Buch" + #, fuzzy #~| msgid "Show more" #~ msgid "Show" diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index dac6e253..a27ae380 100644 --- a/locale/en_US/LC_MESSAGES/django.po +++ b/locale/en_US/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-05-10 13:23-0700\n" +"POT-Creation-Date: 2021-05-14 15:12-0700\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -55,13 +55,13 @@ msgstr "" msgid "Book Title" msgstr "" -#: bookwyrm/forms.py:295 bookwyrm/templates/snippets/create_status_form.html:31 -#: bookwyrm/templates/user/shelf/shelf.html:82 -#: bookwyrm/templates/user/shelf/shelf.html:112 +#: bookwyrm/forms.py:295 bookwyrm/templates/snippets/create_status_form.html:34 +#: bookwyrm/templates/user/shelf/shelf.html:84 +#: bookwyrm/templates/user/shelf/shelf.html:115 msgid "Rating" msgstr "" -#: bookwyrm/forms.py:297 bookwyrm/templates/lists/list.html:100 +#: bookwyrm/forms.py:297 bookwyrm/templates/lists/list.html:101 msgid "Sort By" msgstr "" @@ -131,19 +131,149 @@ msgstr "" msgid "Something went wrong! Sorry about that." msgstr "" -#: bookwyrm/templates/author.html:16 bookwyrm/templates/author.html:17 +#: bookwyrm/templates/author/author.html:17 +#: bookwyrm/templates/author/author.html:18 msgid "Edit Author" msgstr "" -#: bookwyrm/templates/author.html:31 +#: bookwyrm/templates/author/author.html:33 +#: bookwyrm/templates/author/edit_author.html:38 +msgid "Aliases:" +msgstr "" + +#: bookwyrm/templates/author/author.html:39 +msgid "Born:" +msgstr "" + +#: bookwyrm/templates/author/author.html:45 +msgid "Died:" +msgstr "" + +#: bookwyrm/templates/author/author.html:52 msgid "Wikipedia" msgstr "" -#: bookwyrm/templates/author.html:36 +#: bookwyrm/templates/author/author.html:56 +#: bookwyrm/templates/book/book.html:81 +msgid "View on OpenLibrary" +msgstr "" + +#: bookwyrm/templates/author/author.html:61 +#: bookwyrm/templates/book/book.html:84 +msgid "View on Inventaire" +msgstr "" + +#: bookwyrm/templates/author/author.html:75 #, python-format msgid "Books by %(name)s" msgstr "" +#: bookwyrm/templates/author/edit_author.html:5 +msgid "Edit Author:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:13 +#: bookwyrm/templates/book/edit_book.html:18 +msgid "Added:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:14 +#: bookwyrm/templates/book/edit_book.html:19 +msgid "Updated:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:15 +#: bookwyrm/templates/book/edit_book.html:20 +msgid "Last edited by:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:31 +#: bookwyrm/templates/book/edit_book.html:90 +msgid "Metadata" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:32 +#: bookwyrm/templates/lists/form.html:8 +#: bookwyrm/templates/user/shelf/create_shelf_form.html:13 +#: bookwyrm/templates/user/shelf/edit_shelf_form.html:14 +msgid "Name:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:40 +#: bookwyrm/templates/book/edit_book.html:128 +#: bookwyrm/templates/book/edit_book.html:165 +msgid "Separate multiple values with commas." +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:46 +msgid "Bio:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:51 +msgid "Wikipedia link:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:57 +msgid "Birth date:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:65 +msgid "Death date:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:73 +msgid "Author Identifiers" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:74 +#: bookwyrm/templates/book/edit_book.html:223 +msgid "Openlibrary key:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:79 +msgid "Inventaire ID:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:84 +msgid "Librarything key:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:89 +msgid "Goodreads key:" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:98 +#: bookwyrm/templates/book/book.html:127 +#: bookwyrm/templates/book/edit_book.html:241 +#: bookwyrm/templates/lists/form.html:42 +#: bookwyrm/templates/preferences/edit_user.html:70 +#: bookwyrm/templates/settings/edit_server.html:68 +#: bookwyrm/templates/settings/federated_server.html:94 +#: bookwyrm/templates/settings/site.html:97 +#: bookwyrm/templates/snippets/readthrough.html:77 +#: 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/start_reading_modal.html:34 +#: bookwyrm/templates/user_admin/user_moderation_actions.html:38 +msgid "Save" +msgstr "" + +#: bookwyrm/templates/author/edit_author.html:99 +#: bookwyrm/templates/book/book.html:128 bookwyrm/templates/book/book.html:180 +#: bookwyrm/templates/book/cover_modal.html:32 +#: bookwyrm/templates/book/edit_book.html:242 +#: bookwyrm/templates/moderation/report_modal.html:34 +#: bookwyrm/templates/settings/federated_server.html:95 +#: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 +#: bookwyrm/templates/snippets/goal_form.html:32 +#: bookwyrm/templates/snippets/readthrough.html:78 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:43 +#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:35 +#: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28 +msgid "Cancel" +msgstr "" + #: bookwyrm/templates/book/book.html:33 #: bookwyrm/templates/discover/large-book.html:25 #: bookwyrm/templates/discover/small-book.html:19 @@ -163,14 +293,6 @@ msgstr "" msgid "Failed to load cover" msgstr "" -#: bookwyrm/templates/book/book.html:81 -msgid "View on OpenLibrary" -msgstr "" - -#: bookwyrm/templates/book/book.html:84 -msgid "View on Inventaire" -msgstr "" - #: bookwyrm/templates/book/book.html:104 #, python-format msgid "(%(review_count)s review)" @@ -188,37 +310,6 @@ msgstr "" msgid "Description:" msgstr "" -#: bookwyrm/templates/book/book.html:127 -#: bookwyrm/templates/book/edit_book.html:249 -#: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 -#: bookwyrm/templates/preferences/edit_user.html:70 -#: bookwyrm/templates/settings/edit_server.html:68 -#: bookwyrm/templates/settings/federated_server.html:93 -#: bookwyrm/templates/settings/site.html:97 -#: bookwyrm/templates/snippets/readthrough.html:77 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:50 -#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:38 -#: bookwyrm/templates/user_admin/user_moderation_actions.html:38 -msgid "Save" -msgstr "" - -#: bookwyrm/templates/book/book.html:128 bookwyrm/templates/book/book.html:180 -#: bookwyrm/templates/book/cover_modal.html:32 -#: bookwyrm/templates/book/edit_book.html:250 -#: bookwyrm/templates/edit_author.html:79 -#: bookwyrm/templates/moderation/report_modal.html:34 -#: bookwyrm/templates/settings/federated_server.html:94 -#: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 -#: bookwyrm/templates/snippets/goal_form.html:32 -#: bookwyrm/templates/snippets/readthrough.html:78 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:51 -#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:39 -#: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28 -msgid "Cancel" -msgstr "" - #: bookwyrm/templates/book/book.html:137 #, python-format msgid "%(count)s editions" @@ -282,7 +373,7 @@ msgstr "" #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 #: bookwyrm/templates/search/layout.html:50 -#: bookwyrm/templates/user/layout.html:67 +#: bookwyrm/templates/user/layout.html:68 msgid "Lists" msgstr "" @@ -292,7 +383,7 @@ msgstr "" #: bookwyrm/templates/book/book.html:320 #: bookwyrm/templates/book/cover_modal.html:31 -#: bookwyrm/templates/lists/list.html:163 +#: bookwyrm/templates/lists/list.html:164 msgid "Add" msgstr "" @@ -301,22 +392,22 @@ msgid "ISBN:" msgstr "" #: bookwyrm/templates/book/book_identifiers.html:15 -#: bookwyrm/templates/book/edit_book.html:235 +#: bookwyrm/templates/book/edit_book.html:227 msgid "OCLC Number:" msgstr "" #: bookwyrm/templates/book/book_identifiers.html:22 -#: bookwyrm/templates/book/edit_book.html:239 +#: bookwyrm/templates/book/edit_book.html:231 msgid "ASIN:" msgstr "" #: bookwyrm/templates/book/cover_modal.html:17 -#: bookwyrm/templates/book/edit_book.html:187 +#: bookwyrm/templates/book/edit_book.html:179 msgid "Upload cover:" msgstr "" #: bookwyrm/templates/book/cover_modal.html:23 -#: bookwyrm/templates/book/edit_book.html:193 +#: bookwyrm/templates/book/edit_book.html:185 msgid "Load cover from url:" msgstr "" @@ -331,21 +422,6 @@ msgstr "" msgid "Add Book" msgstr "" -#: bookwyrm/templates/book/edit_book.html:18 -#: bookwyrm/templates/edit_author.html:13 -msgid "Added:" -msgstr "" - -#: bookwyrm/templates/book/edit_book.html:19 -#: bookwyrm/templates/edit_author.html:14 -msgid "Updated:" -msgstr "" - -#: bookwyrm/templates/book/edit_book.html:20 -#: bookwyrm/templates/edit_author.html:15 -msgid "Last edited by:" -msgstr "" - #: bookwyrm/templates/book/edit_book.html:40 msgid "Confirm Book Info" msgstr "" @@ -387,11 +463,6 @@ msgstr "" msgid "Back" msgstr "" -#: bookwyrm/templates/book/edit_book.html:90 -#: bookwyrm/templates/edit_author.html:31 -msgid "Metadata" -msgstr "" - #: bookwyrm/templates/book/edit_book.html:92 msgid "Title:" msgstr "" @@ -412,76 +483,67 @@ msgstr "" msgid "Publisher:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:128 -msgid "Separate multiple publishers with commas." -msgstr "" - #: bookwyrm/templates/book/edit_book.html:135 msgid "First published date:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:147 +#: bookwyrm/templates/book/edit_book.html:143 msgid "Published date:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:160 +#: bookwyrm/templates/book/edit_book.html:152 msgid "Authors" msgstr "" -#: bookwyrm/templates/book/edit_book.html:166 +#: bookwyrm/templates/book/edit_book.html:158 #, python-format msgid "Remove %(name)s" msgstr "" -#: bookwyrm/templates/book/edit_book.html:171 +#: bookwyrm/templates/book/edit_book.html:163 msgid "Add Authors:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:172 +#: bookwyrm/templates/book/edit_book.html:164 msgid "John Doe, Jane Smith" msgstr "" -#: bookwyrm/templates/book/edit_book.html:178 -#: bookwyrm/templates/user/shelf/shelf.html:76 +#: bookwyrm/templates/book/edit_book.html:170 +#: bookwyrm/templates/user/shelf/shelf.html:77 msgid "Cover" msgstr "" -#: bookwyrm/templates/book/edit_book.html:206 +#: bookwyrm/templates/book/edit_book.html:198 msgid "Physical Properties" msgstr "" -#: bookwyrm/templates/book/edit_book.html:207 +#: bookwyrm/templates/book/edit_book.html:199 #: bookwyrm/templates/book/format_filter.html:5 msgid "Format:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:215 +#: bookwyrm/templates/book/edit_book.html:207 msgid "Pages:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:222 +#: bookwyrm/templates/book/edit_book.html:214 msgid "Book Identifiers" msgstr "" -#: bookwyrm/templates/book/edit_book.html:223 +#: bookwyrm/templates/book/edit_book.html:215 msgid "ISBN 13:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:227 +#: bookwyrm/templates/book/edit_book.html:219 msgid "ISBN 10:" msgstr "" -#: bookwyrm/templates/book/edit_book.html:231 -#: bookwyrm/templates/edit_author.html:59 -msgid "Openlibrary key:" -msgstr "" - -#: bookwyrm/templates/book/editions.html:5 +#: bookwyrm/templates/book/editions.html:4 #, python-format msgid "Editions of %(book_title)s" msgstr "" -#: bookwyrm/templates/book/editions.html:9 +#: bookwyrm/templates/book/editions.html:8 #, python-format msgid "Editions of \"%(work_title)s\"" msgstr "" @@ -532,7 +594,7 @@ msgstr "" #: bookwyrm/templates/components/inline_form.html:8 #: bookwyrm/templates/components/modal.html:11 -#: bookwyrm/templates/feed/feed_layout.html:70 +#: bookwyrm/templates/feed/feed_layout.html:69 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 #: bookwyrm/templates/search/book.html:32 @@ -587,23 +649,23 @@ msgstr "" msgid "Recently active" msgstr "" -#: bookwyrm/templates/directory/user_card.html:32 +#: bookwyrm/templates/directory/user_card.html:33 msgid "follower you follow" msgid_plural "followers you follow" msgstr[0] "" msgstr[1] "" -#: bookwyrm/templates/directory/user_card.html:39 +#: bookwyrm/templates/directory/user_card.html:40 msgid "book on your shelves" msgid_plural "books on your shelves" msgstr[0] "" msgstr[1] "" -#: bookwyrm/templates/directory/user_card.html:47 +#: bookwyrm/templates/directory/user_card.html:48 msgid "posts" msgstr "" -#: bookwyrm/templates/directory/user_card.html:53 +#: bookwyrm/templates/directory/user_card.html:54 msgid "last active" msgstr "" @@ -689,44 +751,6 @@ msgstr "" msgid "Your Account" msgstr "" -#: bookwyrm/templates/edit_author.html:5 -msgid "Edit Author:" -msgstr "" - -#: bookwyrm/templates/edit_author.html:32 bookwyrm/templates/lists/form.html:8 -#: bookwyrm/templates/user/shelf/create_shelf_form.html:13 -#: bookwyrm/templates/user/shelf/edit_shelf_form.html:14 -msgid "Name:" -msgstr "" - -#: bookwyrm/templates/edit_author.html:37 -msgid "Bio:" -msgstr "" - -#: bookwyrm/templates/edit_author.html:42 -msgid "Wikipedia link:" -msgstr "" - -#: bookwyrm/templates/edit_author.html:47 -msgid "Birth date:" -msgstr "" - -#: bookwyrm/templates/edit_author.html:52 -msgid "Death date:" -msgstr "" - -#: bookwyrm/templates/edit_author.html:58 -msgid "Author Identifiers" -msgstr "" - -#: bookwyrm/templates/edit_author.html:64 -msgid "Librarything key:" -msgstr "" - -#: bookwyrm/templates/edit_author.html:69 -msgid "Goodreads key:" -msgstr "" - #: bookwyrm/templates/email/html_layout.html:15 #: bookwyrm/templates/email/text_layout.html:2 msgid "Hi there," @@ -807,76 +831,76 @@ msgstr "" msgid "You have no messages right now." msgstr "" -#: bookwyrm/templates/feed/feed.html:9 +#: bookwyrm/templates/feed/feed.html:8 msgid "Home Timeline" msgstr "" -#: bookwyrm/templates/feed/feed.html:11 +#: bookwyrm/templates/feed/feed.html:10 msgid "Local Timeline" msgstr "" -#: bookwyrm/templates/feed/feed.html:13 +#: bookwyrm/templates/feed/feed.html:12 msgid "Federated Timeline" msgstr "" -#: bookwyrm/templates/feed/feed.html:19 +#: bookwyrm/templates/feed/feed.html:18 msgid "Home" msgstr "" -#: bookwyrm/templates/feed/feed.html:22 +#: bookwyrm/templates/feed/feed.html:21 msgid "Local" msgstr "" -#: bookwyrm/templates/feed/feed.html:25 +#: bookwyrm/templates/feed/feed.html:24 #: bookwyrm/templates/settings/edit_server.html:40 msgid "Federated" msgstr "" -#: bookwyrm/templates/feed/feed.html:33 +#: bookwyrm/templates/feed/feed.html:32 #, python-format msgid "load 0 unread status(es)" msgstr "" -#: bookwyrm/templates/feed/feed.html:48 +#: bookwyrm/templates/feed/feed.html:47 msgid "There aren't any activities right now! Try following a user to get started" msgstr "" -#: bookwyrm/templates/feed/feed.html:56 +#: bookwyrm/templates/feed/feed.html:55 #: bookwyrm/templates/get_started/users.html:6 msgid "Who to follow" msgstr "" -#: bookwyrm/templates/feed/feed_layout.html:5 +#: bookwyrm/templates/feed/feed_layout.html:4 msgid "Updates" msgstr "" -#: bookwyrm/templates/feed/feed_layout.html:11 +#: bookwyrm/templates/feed/feed_layout.html:10 #: bookwyrm/templates/layout.html:59 #: bookwyrm/templates/user/shelf/books_header.html:3 msgid "Your books" msgstr "" -#: bookwyrm/templates/feed/feed_layout.html:13 +#: bookwyrm/templates/feed/feed_layout.html:12 msgid "There are no books here right now! Try searching for a book to get started" msgstr "" -#: bookwyrm/templates/feed/feed_layout.html:24 -#: bookwyrm/templates/user/shelf/shelf.html:28 +#: bookwyrm/templates/feed/feed_layout.html:23 +#: bookwyrm/templates/user/shelf/shelf.html:29 msgid "To Read" msgstr "" -#: bookwyrm/templates/feed/feed_layout.html:25 -#: bookwyrm/templates/user/shelf/shelf.html:28 +#: bookwyrm/templates/feed/feed_layout.html:24 +#: bookwyrm/templates/user/shelf/shelf.html:29 msgid "Currently Reading" msgstr "" -#: bookwyrm/templates/feed/feed_layout.html:26 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:11 -#: bookwyrm/templates/user/shelf/shelf.html:28 +#: bookwyrm/templates/feed/feed_layout.html:25 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:13 +#: bookwyrm/templates/user/shelf/shelf.html:29 msgid "Read" msgstr "" -#: bookwyrm/templates/feed/feed_layout.html:88 bookwyrm/templates/goal.html:26 +#: bookwyrm/templates/feed/feed_layout.html:87 bookwyrm/templates/goal.html:26 #: bookwyrm/templates/snippets/goal_card.html:6 #, python-format msgid "%(year)s Reading Goal" @@ -906,7 +930,7 @@ msgid "What are you reading?" msgstr "" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/lists/list.html:119 +#: bookwyrm/templates/lists/list.html:120 msgid "Search for a book" msgstr "" @@ -926,7 +950,7 @@ msgstr "" #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/layout.html:38 bookwyrm/templates/layout.html:39 -#: bookwyrm/templates/lists/list.html:123 +#: bookwyrm/templates/lists/list.html:124 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -942,7 +966,7 @@ msgid "Popular on %(site_name)s" msgstr "" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:136 +#: bookwyrm/templates/lists/list.html:137 msgid "No books found" msgstr "" @@ -1062,95 +1086,95 @@ msgstr "" msgid "Data source:" msgstr "" -#: bookwyrm/templates/import.html:29 +#: bookwyrm/templates/import.html:32 msgid "Data file:" msgstr "" -#: bookwyrm/templates/import.html:37 +#: bookwyrm/templates/import.html:40 msgid "Include reviews" msgstr "" -#: bookwyrm/templates/import.html:42 +#: bookwyrm/templates/import.html:45 msgid "Privacy setting for imported reviews:" msgstr "" -#: bookwyrm/templates/import.html:48 +#: bookwyrm/templates/import.html:51 #: bookwyrm/templates/settings/server_blocklist.html:64 msgid "Import" msgstr "" -#: bookwyrm/templates/import.html:53 +#: bookwyrm/templates/import.html:56 msgid "Recent Imports" msgstr "" -#: bookwyrm/templates/import.html:55 +#: bookwyrm/templates/import.html:58 msgid "No recent imports" msgstr "" -#: bookwyrm/templates/import_status.html:6 -#: bookwyrm/templates/import_status.html:10 +#: bookwyrm/templates/import_status.html:5 +#: bookwyrm/templates/import_status.html:9 msgid "Import Status" msgstr "" -#: bookwyrm/templates/import_status.html:13 +#: bookwyrm/templates/import_status.html:12 msgid "Import started:" msgstr "" -#: bookwyrm/templates/import_status.html:17 +#: bookwyrm/templates/import_status.html:16 msgid "Import completed:" msgstr "" -#: bookwyrm/templates/import_status.html:20 +#: bookwyrm/templates/import_status.html:19 msgid "TASK FAILED" msgstr "" -#: bookwyrm/templates/import_status.html:26 +#: bookwyrm/templates/import_status.html:25 msgid "Import still in progress." msgstr "" -#: bookwyrm/templates/import_status.html:28 +#: bookwyrm/templates/import_status.html:27 msgid "(Hit reload to update!)" msgstr "" -#: bookwyrm/templates/import_status.html:35 +#: bookwyrm/templates/import_status.html:34 msgid "Failed to load" msgstr "" -#: bookwyrm/templates/import_status.html:44 +#: bookwyrm/templates/import_status.html:43 #, python-format msgid "Jump to the bottom of the list to select the %(failed_count)s items which failed to import." msgstr "" -#: bookwyrm/templates/import_status.html:79 +#: bookwyrm/templates/import_status.html:78 msgid "Select all" msgstr "" -#: bookwyrm/templates/import_status.html:82 +#: bookwyrm/templates/import_status.html:81 msgid "Retry items" msgstr "" -#: bookwyrm/templates/import_status.html:108 +#: bookwyrm/templates/import_status.html:107 msgid "Successfully imported" msgstr "" -#: bookwyrm/templates/import_status.html:112 +#: bookwyrm/templates/import_status.html:111 msgid "Book" msgstr "" -#: bookwyrm/templates/import_status.html:115 -#: bookwyrm/templates/snippets/create_status_form.html:10 -#: bookwyrm/templates/user/shelf/shelf.html:77 -#: bookwyrm/templates/user/shelf/shelf.html:95 +#: bookwyrm/templates/import_status.html:114 +#: bookwyrm/templates/snippets/create_status_form.html:13 +#: bookwyrm/templates/user/shelf/shelf.html:78 +#: bookwyrm/templates/user/shelf/shelf.html:98 msgid "Title" msgstr "" -#: bookwyrm/templates/import_status.html:118 -#: bookwyrm/templates/user/shelf/shelf.html:78 -#: bookwyrm/templates/user/shelf/shelf.html:98 +#: bookwyrm/templates/import_status.html:117 +#: bookwyrm/templates/user/shelf/shelf.html:79 +#: bookwyrm/templates/user/shelf/shelf.html:101 msgid "Author" msgstr "" -#: bookwyrm/templates/import_status.html:141 +#: bookwyrm/templates/import_status.html:140 msgid "Imported" msgstr "" @@ -1259,7 +1283,7 @@ msgid "Support %(site_name)s on % msgstr "" #: bookwyrm/templates/layout.html:217 -msgid "BookWyrm is open source software. You can contribute or report issues on GitHub." +msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "" #: bookwyrm/templates/lists/create_form.html:5 @@ -1302,7 +1326,7 @@ msgid "Discard" msgstr "" #: bookwyrm/templates/lists/edit_form.html:5 -#: bookwyrm/templates/lists/list_layout.html:18 +#: bookwyrm/templates/lists/list_layout.html:17 msgid "Edit List" msgstr "" @@ -1336,66 +1360,66 @@ msgstr "" msgid "Anyone can add books to this list" msgstr "" -#: bookwyrm/templates/lists/list.html:19 +#: bookwyrm/templates/lists/list.html:20 msgid "You successfully suggested a book for this list!" msgstr "" -#: bookwyrm/templates/lists/list.html:21 +#: bookwyrm/templates/lists/list.html:22 msgid "You successfully added a book to this list!" msgstr "" -#: bookwyrm/templates/lists/list.html:27 +#: bookwyrm/templates/lists/list.html:28 msgid "This list is currently empty" msgstr "" -#: bookwyrm/templates/lists/list.html:64 +#: bookwyrm/templates/lists/list.html:65 #, python-format msgid "Added by %(username)s" msgstr "" -#: bookwyrm/templates/lists/list.html:76 +#: bookwyrm/templates/lists/list.html:77 msgid "Set" msgstr "" -#: bookwyrm/templates/lists/list.html:79 +#: bookwyrm/templates/lists/list.html:80 msgid "List position" msgstr "" -#: bookwyrm/templates/lists/list.html:85 +#: bookwyrm/templates/lists/list.html:86 #: bookwyrm/templates/snippets/shelf_selector.html:26 msgid "Remove" msgstr "" -#: bookwyrm/templates/lists/list.html:98 bookwyrm/templates/lists/list.html:110 +#: bookwyrm/templates/lists/list.html:99 bookwyrm/templates/lists/list.html:111 msgid "Sort List" msgstr "" -#: bookwyrm/templates/lists/list.html:104 +#: bookwyrm/templates/lists/list.html:105 msgid "Direction" msgstr "" -#: bookwyrm/templates/lists/list.html:115 +#: bookwyrm/templates/lists/list.html:116 msgid "Add Books" msgstr "" -#: bookwyrm/templates/lists/list.html:115 +#: bookwyrm/templates/lists/list.html:116 msgid "Suggest Books" msgstr "" -#: bookwyrm/templates/lists/list.html:124 +#: bookwyrm/templates/lists/list.html:125 msgid "search" msgstr "" -#: bookwyrm/templates/lists/list.html:130 +#: bookwyrm/templates/lists/list.html:131 msgid "Clear search" msgstr "" -#: bookwyrm/templates/lists/list.html:135 +#: bookwyrm/templates/lists/list.html:136 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "" -#: bookwyrm/templates/lists/list.html:163 +#: bookwyrm/templates/lists/list.html:164 msgid "Suggest" msgstr "" @@ -1420,36 +1444,36 @@ msgstr "" msgid "More about this site" msgstr "" +#: bookwyrm/templates/moderation/report.html:5 #: bookwyrm/templates/moderation/report.html:6 -#: bookwyrm/templates/moderation/report.html:7 #: bookwyrm/templates/moderation/report_preview.html:6 #, python-format msgid "Report #%(report_id)s: %(username)s" msgstr "" -#: bookwyrm/templates/moderation/report.html:11 +#: bookwyrm/templates/moderation/report.html:10 msgid "Back to reports" msgstr "" -#: bookwyrm/templates/moderation/report.html:23 +#: bookwyrm/templates/moderation/report.html:22 msgid "Moderator Comments" msgstr "" -#: bookwyrm/templates/moderation/report.html:41 +#: bookwyrm/templates/moderation/report.html:40 #: bookwyrm/templates/snippets/create_status.html:28 -#: bookwyrm/templates/snippets/create_status_form.html:63 +#: bookwyrm/templates/snippets/create_status_form.html:66 msgid "Comment" msgstr "" -#: bookwyrm/templates/moderation/report.html:46 +#: bookwyrm/templates/moderation/report.html:45 msgid "Reported statuses" msgstr "" -#: bookwyrm/templates/moderation/report.html:48 +#: bookwyrm/templates/moderation/report.html:47 msgid "No statuses reported" msgstr "" -#: bookwyrm/templates/moderation/report.html:54 +#: bookwyrm/templates/moderation/report.html:53 msgid "Status has been deleted" msgstr "" @@ -1718,7 +1742,7 @@ msgstr "" #: bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 -#: bookwyrm/templates/user/layout.html:73 +#: bookwyrm/templates/user/layout.html:74 msgid "Books" msgstr "" @@ -1790,7 +1814,7 @@ msgid "Add server" msgstr "" #: bookwyrm/templates/settings/edit_server.html:7 -#: bookwyrm/templates/settings/federated_server.html:12 +#: bookwyrm/templates/settings/federated_server.html:13 #: bookwyrm/templates/settings/server_blocklist.html:7 msgid "Back to server list" msgstr "" @@ -1805,24 +1829,24 @@ msgid "Instance:" msgstr "" #: bookwyrm/templates/settings/edit_server.html:37 -#: bookwyrm/templates/settings/federated_server.html:29 +#: bookwyrm/templates/settings/federated_server.html:30 #: bookwyrm/templates/user_admin/user_info.html:34 msgid "Status:" msgstr "" #: bookwyrm/templates/settings/edit_server.html:41 -#: bookwyrm/templates/settings/federated_server.html:9 +#: bookwyrm/templates/settings/federated_server.html:10 msgid "Blocked" msgstr "" #: bookwyrm/templates/settings/edit_server.html:48 -#: bookwyrm/templates/settings/federated_server.html:21 +#: bookwyrm/templates/settings/federated_server.html:22 #: bookwyrm/templates/user_admin/user_info.html:26 msgid "Software:" msgstr "" #: bookwyrm/templates/settings/edit_server.html:55 -#: bookwyrm/templates/settings/federated_server.html:25 +#: bookwyrm/templates/settings/federated_server.html:26 #: bookwyrm/templates/user_admin/user_info.html:30 msgid "Version:" msgstr "" @@ -1831,69 +1855,69 @@ msgstr "" msgid "Notes:" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:18 +#: bookwyrm/templates/settings/federated_server.html:19 msgid "Details" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:36 -#: bookwyrm/templates/user/layout.html:55 +#: bookwyrm/templates/settings/federated_server.html:37 +#: bookwyrm/templates/user/layout.html:56 msgid "Activity" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:39 +#: bookwyrm/templates/settings/federated_server.html:40 msgid "Users:" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:42 -#: bookwyrm/templates/settings/federated_server.html:49 +#: bookwyrm/templates/settings/federated_server.html:43 +#: bookwyrm/templates/settings/federated_server.html:50 msgid "View all" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:46 +#: bookwyrm/templates/settings/federated_server.html:47 msgid "Reports:" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:53 +#: bookwyrm/templates/settings/federated_server.html:54 msgid "Followed by us:" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:59 +#: bookwyrm/templates/settings/federated_server.html:60 msgid "Followed by them:" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:65 +#: bookwyrm/templates/settings/federated_server.html:66 msgid "Blocked by us:" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:77 +#: bookwyrm/templates/settings/federated_server.html:78 #: bookwyrm/templates/user_admin/user_info.html:39 msgid "Notes" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:80 +#: bookwyrm/templates/settings/federated_server.html:81 msgid "Edit" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:100 +#: bookwyrm/templates/settings/federated_server.html:101 #: bookwyrm/templates/user_admin/user_moderation_actions.html:3 msgid "Actions" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:104 +#: bookwyrm/templates/settings/federated_server.html:105 #: bookwyrm/templates/snippets/block_button.html:5 msgid "Block" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:105 +#: bookwyrm/templates/settings/federated_server.html:106 msgid "All users from this instance will be deactivated." msgstr "" -#: bookwyrm/templates/settings/federated_server.html:110 +#: bookwyrm/templates/settings/federated_server.html:111 #: bookwyrm/templates/snippets/block_button.html:10 msgid "Un-block" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:111 +#: bookwyrm/templates/settings/federated_server.html:112 msgid "All users from this instance will be re-activated." msgstr "" @@ -2100,7 +2124,7 @@ msgstr "" msgid "Registration closed text:" msgstr "" -#: bookwyrm/templates/snippets/book_cover.html:32 +#: bookwyrm/templates/snippets/book_cover.html:31 msgid "No cover" msgstr "" @@ -2109,13 +2133,13 @@ msgstr "" msgid "%(title)s by " msgstr "" -#: bookwyrm/templates/snippets/boost_button.html:8 #: bookwyrm/templates/snippets/boost_button.html:9 +#: bookwyrm/templates/snippets/boost_button.html:10 msgid "Boost" msgstr "" -#: bookwyrm/templates/snippets/boost_button.html:15 #: bookwyrm/templates/snippets/boost_button.html:16 +#: bookwyrm/templates/snippets/boost_button.html:17 msgid "Un-boost" msgstr "" @@ -2135,64 +2159,64 @@ msgstr "" msgid "Quote" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:20 +#: bookwyrm/templates/snippets/create_status_form.html:23 msgid "Comment:" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:22 +#: bookwyrm/templates/snippets/create_status_form.html:25 msgid "Quote:" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:24 +#: bookwyrm/templates/snippets/create_status_form.html:27 msgid "Review:" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:53 -#: bookwyrm/templates/snippets/status/layout.html:30 +#: bookwyrm/templates/snippets/create_status_form.html:56 +#: bookwyrm/templates/snippets/status/layout.html:29 +#: bookwyrm/templates/snippets/status/layout.html:47 #: bookwyrm/templates/snippets/status/layout.html:48 -#: bookwyrm/templates/snippets/status/layout.html:49 msgid "Reply" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:53 +#: bookwyrm/templates/snippets/create_status_form.html:56 msgid "Content" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:77 +#: bookwyrm/templates/snippets/create_status_form.html:80 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:16 msgid "Progress:" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:85 -#: bookwyrm/templates/snippets/readthrough_form.html:26 +#: bookwyrm/templates/snippets/create_status_form.html:88 +#: bookwyrm/templates/snippets/readthrough_form.html:22 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30 msgid "pages" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:86 -#: bookwyrm/templates/snippets/readthrough_form.html:27 +#: bookwyrm/templates/snippets/create_status_form.html:89 +#: bookwyrm/templates/snippets/readthrough_form.html:23 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31 msgid "percent" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:92 +#: bookwyrm/templates/snippets/create_status_form.html:95 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:36 #, python-format msgid "of %(pages)s pages" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:107 +#: bookwyrm/templates/snippets/create_status_form.html:110 msgid "Include spoiler alert" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:114 +#: bookwyrm/templates/snippets/create_status_form.html:117 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:19 msgid "Private" msgstr "" -#: bookwyrm/templates/snippets/create_status_form.html:125 +#: bookwyrm/templates/snippets/create_status_form.html:128 msgid "Post" msgstr "" @@ -2206,17 +2230,17 @@ msgid "You are deleting this readthrough and its %(count)s associated progress u msgstr "" #: bookwyrm/templates/snippets/delete_readthrough_modal.html:15 -#: bookwyrm/templates/snippets/follow_request_buttons.html:13 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 msgid "Delete" msgstr "" -#: bookwyrm/templates/snippets/fav_button.html:7 #: bookwyrm/templates/snippets/fav_button.html:9 +#: bookwyrm/templates/snippets/fav_button.html:11 msgid "Like" msgstr "" -#: bookwyrm/templates/snippets/fav_button.html:15 -#: bookwyrm/templates/snippets/fav_button.html:16 +#: bookwyrm/templates/snippets/fav_button.html:17 +#: bookwyrm/templates/snippets/fav_button.html:18 msgid "Un-like" msgstr "" @@ -2248,11 +2272,11 @@ msgstr "" msgid "Unfollow" msgstr "" -#: bookwyrm/templates/snippets/follow_request_buttons.html:8 +#: bookwyrm/templates/snippets/follow_request_buttons.html:7 msgid "Accept" msgstr "" -#: bookwyrm/templates/snippets/form_rate_stars.html:20 +#: bookwyrm/templates/snippets/form_rate_stars.html:19 #: bookwyrm/templates/snippets/stars.html:13 msgid "No rating" msgstr "" @@ -2301,8 +2325,8 @@ msgid "Goal privacy:" msgstr "" #: bookwyrm/templates/snippets/goal_form.html:26 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:45 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:33 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:37 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:29 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:20 msgid "Post to feed" msgstr "" @@ -2413,12 +2437,12 @@ msgstr "" msgid "Started reading" msgstr "" -#: bookwyrm/templates/snippets/readthrough_form.html:18 +#: bookwyrm/templates/snippets/readthrough_form.html:14 msgid "Progress" msgstr "" -#: bookwyrm/templates/snippets/readthrough_form.html:34 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:29 +#: bookwyrm/templates/snippets/readthrough_form.html:30 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:25 msgid "Finished reading" msgstr "" @@ -2426,27 +2450,27 @@ msgstr "" msgid "Sign Up" msgstr "" -#: bookwyrm/templates/snippets/report_button.html:5 +#: bookwyrm/templates/snippets/report_button.html:6 msgid "Report" msgstr "" #: bookwyrm/templates/snippets/rss_title.html:5 -#: bookwyrm/templates/snippets/status/status_header.html:34 +#: 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:36 +#: 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:38 +#: 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:40 +#: bookwyrm/templates/snippets/status/status_header.html:41 msgid "quoted" msgstr "" @@ -2464,7 +2488,7 @@ msgid "Finish \"%(book_title)s\"" msgstr "" #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:5 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:34 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:36 msgid "Update progress" msgstr "" @@ -2472,20 +2496,20 @@ msgstr "" msgid "More shelves" msgstr "" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:8 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:10 msgid "Start reading" msgstr "" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:13 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:15 msgid "Finish reading" msgstr "" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:16 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:18 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:26 msgid "Want to read" msgstr "" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:45 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:47 #, python-format msgid "Remove from %(name)s" msgstr "" @@ -2500,40 +2524,40 @@ msgstr "" msgid "Want to Read \"%(book_title)s\"" msgstr "" -#: bookwyrm/templates/snippets/status/content_status.html:70 -#: bookwyrm/templates/snippets/trimmed_text.html:14 +#: bookwyrm/templates/snippets/status/content_status.html:71 +#: bookwyrm/templates/snippets/trimmed_text.html:15 msgid "Show more" msgstr "" -#: bookwyrm/templates/snippets/status/content_status.html:85 -#: bookwyrm/templates/snippets/trimmed_text.html:29 +#: bookwyrm/templates/snippets/status/content_status.html:86 +#: bookwyrm/templates/snippets/trimmed_text.html:30 msgid "Show less" msgstr "" -#: bookwyrm/templates/snippets/status/content_status.html:115 +#: bookwyrm/templates/snippets/status/content_status.html:116 msgid "Open image in new window" msgstr "" -#: bookwyrm/templates/snippets/status/layout.html:22 +#: bookwyrm/templates/snippets/status/layout.html:21 #: bookwyrm/templates/snippets/status/status_options.html:17 msgid "Delete status" msgstr "" +#: bookwyrm/templates/snippets/status/layout.html:51 #: bookwyrm/templates/snippets/status/layout.html:52 -#: bookwyrm/templates/snippets/status/layout.html:53 msgid "Boost status" msgstr "" +#: bookwyrm/templates/snippets/status/layout.html:55 #: bookwyrm/templates/snippets/status/layout.html:56 -#: bookwyrm/templates/snippets/status/layout.html:57 msgid "Like status" msgstr "" -#: bookwyrm/templates/snippets/status/status.html:9 +#: bookwyrm/templates/snippets/status/status.html:10 msgid "boosted" msgstr "" -#: bookwyrm/templates/snippets/status/status_header.html:44 +#: bookwyrm/templates/snippets/status/status_header.html:45 #, python-format msgid "replied to %(username)s's status" msgstr "" @@ -2565,15 +2589,15 @@ msgstr "" msgid "Sorted descending" msgstr "" -#: bookwyrm/templates/user/layout.html:12 bookwyrm/templates/user/user.html:10 +#: bookwyrm/templates/user/layout.html:13 bookwyrm/templates/user/user.html:10 msgid "User Profile" msgstr "" -#: bookwyrm/templates/user/layout.html:36 +#: bookwyrm/templates/user/layout.html:37 msgid "Follow Requests" msgstr "" -#: bookwyrm/templates/user/layout.html:61 +#: bookwyrm/templates/user/layout.html:62 msgid "Reading Goal" msgstr "" @@ -2619,38 +2643,38 @@ msgstr "" msgid "Update shelf" msgstr "" -#: bookwyrm/templates/user/shelf/shelf.html:24 bookwyrm/views/shelf.py:48 +#: bookwyrm/templates/user/shelf/shelf.html:25 bookwyrm/views/shelf.py:51 msgid "All books" msgstr "" -#: bookwyrm/templates/user/shelf/shelf.html:37 +#: bookwyrm/templates/user/shelf/shelf.html:38 msgid "Create shelf" msgstr "" -#: bookwyrm/templates/user/shelf/shelf.html:60 +#: bookwyrm/templates/user/shelf/shelf.html:61 msgid "Edit shelf" msgstr "" -#: bookwyrm/templates/user/shelf/shelf.html:79 -#: bookwyrm/templates/user/shelf/shelf.html:101 -msgid "Shelved" -msgstr "" - #: bookwyrm/templates/user/shelf/shelf.html:80 -#: bookwyrm/templates/user/shelf/shelf.html:105 -msgid "Started" +#: bookwyrm/templates/user/shelf/shelf.html:104 +msgid "Shelved" msgstr "" #: bookwyrm/templates/user/shelf/shelf.html:81 #: bookwyrm/templates/user/shelf/shelf.html:108 +msgid "Started" +msgstr "" + +#: bookwyrm/templates/user/shelf/shelf.html:82 +#: bookwyrm/templates/user/shelf/shelf.html:111 msgid "Finished" msgstr "" -#: bookwyrm/templates/user/shelf/shelf.html:134 +#: bookwyrm/templates/user/shelf/shelf.html:137 msgid "This shelf is empty." msgstr "" -#: bookwyrm/templates/user/shelf/shelf.html:140 +#: bookwyrm/templates/user/shelf/shelf.html:143 msgid "Delete shelf" msgstr "" @@ -2679,31 +2703,31 @@ msgstr "" msgid "No activities yet!" msgstr "" -#: bookwyrm/templates/user/user_preview.html:14 +#: bookwyrm/templates/user/user_preview.html:15 #, python-format msgid "Joined %(date)s" msgstr "" -#: bookwyrm/templates/user/user_preview.html:18 +#: bookwyrm/templates/user/user_preview.html:19 #, python-format msgid "%(counter)s follower" msgid_plural "%(counter)s followers" msgstr[0] "" msgstr[1] "" -#: bookwyrm/templates/user/user_preview.html:19 +#: bookwyrm/templates/user/user_preview.html:20 #, python-format msgid "%(counter)s following" msgstr "" -#: bookwyrm/templates/user/user_preview.html:25 +#: bookwyrm/templates/user/user_preview.html:26 #, python-format msgid "%(mutuals_display)s follower you follow" msgid_plural "%(mutuals_display)s followers you follow" msgstr[0] "" msgstr[1] "" -#: bookwyrm/templates/user_admin/user.html:11 +#: bookwyrm/templates/user_admin/user.html:9 msgid "Back to users" msgstr "" @@ -2770,11 +2794,11 @@ msgstr "" msgid "Access level:" msgstr "" -#: bookwyrm/views/password.py:32 +#: bookwyrm/views/password.py:30 bookwyrm/views/password.py:35 msgid "No user with that email address was found." msgstr "" -#: bookwyrm/views/password.py:41 +#: bookwyrm/views/password.py:44 #, python-format msgid "A password reset link sent to %s" msgstr "" diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po index 864c9dbb..d426b029 100644 --- a/locale/es/LC_MESSAGES/django.po +++ b/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-05-10 13:23-0700\n" +"POT-Creation-Date: 2021-05-14 15:12-0700\n" "PO-Revision-Date: 2021-03-19 11:49+0800\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -55,13 +55,13 @@ msgstr "Orden de la lista" msgid "Book Title" msgstr "Título" -#: bookwyrm/forms.py:295 bookwyrm/templates/snippets/create_status_form.html:31 -#: bookwyrm/templates/user/shelf/shelf.html:82 -#: bookwyrm/templates/user/shelf/shelf.html:112 +#: bookwyrm/forms.py:295 bookwyrm/templates/snippets/create_status_form.html:34 +#: bookwyrm/templates/user/shelf/shelf.html:84 +#: bookwyrm/templates/user/shelf/shelf.html:115 msgid "Rating" msgstr "Calificación" -#: bookwyrm/forms.py:297 bookwyrm/templates/lists/list.html:100 +#: bookwyrm/forms.py:297 bookwyrm/templates/lists/list.html:101 msgid "Sort By" msgstr "Ordenar por" @@ -131,19 +131,155 @@ msgstr "Error de servidor" msgid "Something went wrong! Sorry about that." msgstr "¡Algo salió mal! Disculpa." -#: bookwyrm/templates/author.html:16 bookwyrm/templates/author.html:17 +#: bookwyrm/templates/author/author.html:17 +#: bookwyrm/templates/author/author.html:18 msgid "Edit Author" msgstr "Editar Autor/Autora" -#: bookwyrm/templates/author.html:31 +#: bookwyrm/templates/author/author.html:33 +#: bookwyrm/templates/author/edit_author.html:38 +msgid "Aliases:" +msgstr "" + +#: bookwyrm/templates/author/author.html:39 +msgid "Born:" +msgstr "" + +#: bookwyrm/templates/author/author.html:45 +msgid "Died:" +msgstr "" + +#: bookwyrm/templates/author/author.html:52 msgid "Wikipedia" msgstr "Wikipedia" -#: bookwyrm/templates/author.html:36 +#: bookwyrm/templates/author/author.html:56 +#: bookwyrm/templates/book/book.html:81 +msgid "View on OpenLibrary" +msgstr "Ver en OpenLibrary" + +#: bookwyrm/templates/author/author.html:61 +#: bookwyrm/templates/book/book.html:84 +#, fuzzy +#| msgid "View on OpenLibrary" +msgid "View on Inventaire" +msgstr "Ver en OpenLibrary" + +#: bookwyrm/templates/author/author.html:75 #, python-format msgid "Books by %(name)s" msgstr "Libros de %(name)s" +#: bookwyrm/templates/author/edit_author.html:5 +msgid "Edit Author:" +msgstr "Editar Autor/Autora/Autore:" + +#: bookwyrm/templates/author/edit_author.html:13 +#: bookwyrm/templates/book/edit_book.html:18 +msgid "Added:" +msgstr "Agregado:" + +#: bookwyrm/templates/author/edit_author.html:14 +#: bookwyrm/templates/book/edit_book.html:19 +msgid "Updated:" +msgstr "Actualizado:" + +#: bookwyrm/templates/author/edit_author.html:15 +#: bookwyrm/templates/book/edit_book.html:20 +msgid "Last edited by:" +msgstr "Editado más recientemente por:" + +#: bookwyrm/templates/author/edit_author.html:31 +#: bookwyrm/templates/book/edit_book.html:90 +msgid "Metadata" +msgstr "Metadatos" + +#: bookwyrm/templates/author/edit_author.html:32 +#: bookwyrm/templates/lists/form.html:8 +#: bookwyrm/templates/user/shelf/create_shelf_form.html:13 +#: bookwyrm/templates/user/shelf/edit_shelf_form.html:14 +msgid "Name:" +msgstr "Nombre:" + +#: bookwyrm/templates/author/edit_author.html:40 +#: bookwyrm/templates/book/edit_book.html:128 +#: bookwyrm/templates/book/edit_book.html:165 +#, fuzzy +#| msgid "Separate multiple publishers with commas." +msgid "Separate multiple values with commas." +msgstr "Separar varios editores con comas." + +#: bookwyrm/templates/author/edit_author.html:46 +msgid "Bio:" +msgstr "Bio:" + +#: bookwyrm/templates/author/edit_author.html:51 +msgid "Wikipedia link:" +msgstr "Enlace de Wikipedia:" + +#: bookwyrm/templates/author/edit_author.html:57 +msgid "Birth date:" +msgstr "Fecha de nacimiento:" + +#: bookwyrm/templates/author/edit_author.html:65 +msgid "Death date:" +msgstr "Fecha de muerte:" + +#: bookwyrm/templates/author/edit_author.html:73 +msgid "Author Identifiers" +msgstr "Identificadores de autor/autora" + +#: bookwyrm/templates/author/edit_author.html:74 +#: bookwyrm/templates/book/edit_book.html:223 +msgid "Openlibrary key:" +msgstr "Clave OpenLibrary:" + +#: bookwyrm/templates/author/edit_author.html:79 +#, fuzzy +#| msgid "View on OpenLibrary" +msgid "Inventaire ID:" +msgstr "Ver en OpenLibrary" + +#: bookwyrm/templates/author/edit_author.html:84 +msgid "Librarything key:" +msgstr "Clave Librarything:" + +#: bookwyrm/templates/author/edit_author.html:89 +msgid "Goodreads key:" +msgstr "Clave Goodreads:" + +#: bookwyrm/templates/author/edit_author.html:98 +#: bookwyrm/templates/book/book.html:127 +#: bookwyrm/templates/book/edit_book.html:241 +#: bookwyrm/templates/lists/form.html:42 +#: bookwyrm/templates/preferences/edit_user.html:70 +#: bookwyrm/templates/settings/edit_server.html:68 +#: bookwyrm/templates/settings/federated_server.html:94 +#: bookwyrm/templates/settings/site.html:97 +#: bookwyrm/templates/snippets/readthrough.html:77 +#: 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/start_reading_modal.html:34 +#: bookwyrm/templates/user_admin/user_moderation_actions.html:38 +msgid "Save" +msgstr "Guardar" + +#: bookwyrm/templates/author/edit_author.html:99 +#: bookwyrm/templates/book/book.html:128 bookwyrm/templates/book/book.html:180 +#: bookwyrm/templates/book/cover_modal.html:32 +#: bookwyrm/templates/book/edit_book.html:242 +#: bookwyrm/templates/moderation/report_modal.html:34 +#: bookwyrm/templates/settings/federated_server.html:95 +#: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 +#: bookwyrm/templates/snippets/goal_form.html:32 +#: bookwyrm/templates/snippets/readthrough.html:78 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:43 +#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:35 +#: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28 +msgid "Cancel" +msgstr "Cancelar" + #: bookwyrm/templates/book/book.html:33 #: bookwyrm/templates/discover/large-book.html:25 #: bookwyrm/templates/discover/small-book.html:19 @@ -163,16 +299,6 @@ msgstr "Agregar portada" msgid "Failed to load cover" msgstr "No se pudo cargar la portada" -#: bookwyrm/templates/book/book.html:81 -msgid "View on OpenLibrary" -msgstr "Ver en OpenLibrary" - -#: bookwyrm/templates/book/book.html:84 -#, fuzzy -#| msgid "View on OpenLibrary" -msgid "View on Inventaire" -msgstr "Ver en OpenLibrary" - #: bookwyrm/templates/book/book.html:104 #, python-format msgid "(%(review_count)s review)" @@ -190,37 +316,6 @@ msgstr "Agregar descripción" msgid "Description:" msgstr "Descripción:" -#: bookwyrm/templates/book/book.html:127 -#: bookwyrm/templates/book/edit_book.html:249 -#: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 -#: bookwyrm/templates/preferences/edit_user.html:70 -#: bookwyrm/templates/settings/edit_server.html:68 -#: bookwyrm/templates/settings/federated_server.html:93 -#: bookwyrm/templates/settings/site.html:97 -#: bookwyrm/templates/snippets/readthrough.html:77 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:50 -#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:38 -#: bookwyrm/templates/user_admin/user_moderation_actions.html:38 -msgid "Save" -msgstr "Guardar" - -#: bookwyrm/templates/book/book.html:128 bookwyrm/templates/book/book.html:180 -#: bookwyrm/templates/book/cover_modal.html:32 -#: bookwyrm/templates/book/edit_book.html:250 -#: bookwyrm/templates/edit_author.html:79 -#: bookwyrm/templates/moderation/report_modal.html:34 -#: bookwyrm/templates/settings/federated_server.html:94 -#: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 -#: bookwyrm/templates/snippets/goal_form.html:32 -#: bookwyrm/templates/snippets/readthrough.html:78 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:51 -#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:39 -#: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28 -msgid "Cancel" -msgstr "Cancelar" - #: bookwyrm/templates/book/book.html:137 #, python-format msgid "%(count)s editions" @@ -292,7 +387,7 @@ msgstr "Lugares" #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 #: bookwyrm/templates/search/layout.html:50 -#: bookwyrm/templates/user/layout.html:67 +#: bookwyrm/templates/user/layout.html:68 msgid "Lists" msgstr "Listas" @@ -302,7 +397,7 @@ msgstr "Agregar a lista" #: bookwyrm/templates/book/book.html:320 #: bookwyrm/templates/book/cover_modal.html:31 -#: bookwyrm/templates/lists/list.html:163 +#: bookwyrm/templates/lists/list.html:164 msgid "Add" msgstr "Agregar" @@ -311,22 +406,22 @@ msgid "ISBN:" msgstr "ISBN:" #: bookwyrm/templates/book/book_identifiers.html:15 -#: bookwyrm/templates/book/edit_book.html:235 +#: bookwyrm/templates/book/edit_book.html:227 msgid "OCLC Number:" msgstr "Número OCLC:" #: bookwyrm/templates/book/book_identifiers.html:22 -#: bookwyrm/templates/book/edit_book.html:239 +#: bookwyrm/templates/book/edit_book.html:231 msgid "ASIN:" msgstr "ASIN:" #: bookwyrm/templates/book/cover_modal.html:17 -#: bookwyrm/templates/book/edit_book.html:187 +#: bookwyrm/templates/book/edit_book.html:179 msgid "Upload cover:" msgstr "Subir portada:" #: bookwyrm/templates/book/cover_modal.html:23 -#: bookwyrm/templates/book/edit_book.html:193 +#: bookwyrm/templates/book/edit_book.html:185 msgid "Load cover from url:" msgstr "Agregar portada de url:" @@ -341,21 +436,6 @@ msgstr "Editar \"%(book_title)s\"" msgid "Add Book" msgstr "Agregar libro" -#: bookwyrm/templates/book/edit_book.html:18 -#: bookwyrm/templates/edit_author.html:13 -msgid "Added:" -msgstr "Agregado:" - -#: bookwyrm/templates/book/edit_book.html:19 -#: bookwyrm/templates/edit_author.html:14 -msgid "Updated:" -msgstr "Actualizado:" - -#: bookwyrm/templates/book/edit_book.html:20 -#: bookwyrm/templates/edit_author.html:15 -msgid "Last edited by:" -msgstr "Editado más recientemente por:" - #: bookwyrm/templates/book/edit_book.html:40 msgid "Confirm Book Info" msgstr "Confirmar información de libro" @@ -397,11 +477,6 @@ msgstr "Confirmar" msgid "Back" msgstr "Volver" -#: bookwyrm/templates/book/edit_book.html:90 -#: bookwyrm/templates/edit_author.html:31 -msgid "Metadata" -msgstr "Metadatos" - #: bookwyrm/templates/book/edit_book.html:92 msgid "Title:" msgstr "Título:" @@ -422,76 +497,67 @@ msgstr "Número de serie:" msgid "Publisher:" msgstr "Editorial:" -#: bookwyrm/templates/book/edit_book.html:128 -msgid "Separate multiple publishers with commas." -msgstr "Separar varios editores con comas." - #: bookwyrm/templates/book/edit_book.html:135 msgid "First published date:" msgstr "Fecha de primera publicación:" -#: bookwyrm/templates/book/edit_book.html:147 +#: bookwyrm/templates/book/edit_book.html:143 msgid "Published date:" msgstr "Fecha de publicación:" -#: bookwyrm/templates/book/edit_book.html:160 +#: bookwyrm/templates/book/edit_book.html:152 msgid "Authors" msgstr "Autores" -#: bookwyrm/templates/book/edit_book.html:166 +#: bookwyrm/templates/book/edit_book.html:158 #, python-format msgid "Remove %(name)s" msgstr "Eliminar %(name)s" -#: bookwyrm/templates/book/edit_book.html:171 +#: bookwyrm/templates/book/edit_book.html:163 msgid "Add Authors:" msgstr "Agregar Autores:" -#: bookwyrm/templates/book/edit_book.html:172 +#: bookwyrm/templates/book/edit_book.html:164 msgid "John Doe, Jane Smith" msgstr "Juan Nadie, Natalia Natalia" -#: bookwyrm/templates/book/edit_book.html:178 -#: bookwyrm/templates/user/shelf/shelf.html:76 +#: bookwyrm/templates/book/edit_book.html:170 +#: bookwyrm/templates/user/shelf/shelf.html:77 msgid "Cover" msgstr "Portada:" -#: bookwyrm/templates/book/edit_book.html:206 +#: bookwyrm/templates/book/edit_book.html:198 msgid "Physical Properties" msgstr "Propiedades físicas:" -#: bookwyrm/templates/book/edit_book.html:207 +#: bookwyrm/templates/book/edit_book.html:199 #: bookwyrm/templates/book/format_filter.html:5 msgid "Format:" msgstr "Formato:" -#: bookwyrm/templates/book/edit_book.html:215 +#: bookwyrm/templates/book/edit_book.html:207 msgid "Pages:" msgstr "Páginas:" -#: bookwyrm/templates/book/edit_book.html:222 +#: bookwyrm/templates/book/edit_book.html:214 msgid "Book Identifiers" msgstr "Identificadores de libro" -#: bookwyrm/templates/book/edit_book.html:223 +#: bookwyrm/templates/book/edit_book.html:215 msgid "ISBN 13:" msgstr "ISBN 13:" -#: bookwyrm/templates/book/edit_book.html:227 +#: bookwyrm/templates/book/edit_book.html:219 msgid "ISBN 10:" msgstr "ISBN 10:" -#: bookwyrm/templates/book/edit_book.html:231 -#: bookwyrm/templates/edit_author.html:59 -msgid "Openlibrary key:" -msgstr "Clave OpenLibrary:" - -#: bookwyrm/templates/book/editions.html:5 +#: bookwyrm/templates/book/editions.html:4 #, python-format msgid "Editions of %(book_title)s" msgstr "Ediciones de %(book_title)s" -#: bookwyrm/templates/book/editions.html:9 +#: bookwyrm/templates/book/editions.html:8 #, python-format msgid "Editions of \"%(work_title)s\"" msgstr "Ediciones de \"%(work_title)s\"" @@ -542,7 +608,7 @@ msgstr "Publicado por %(publisher)s." #: bookwyrm/templates/components/inline_form.html:8 #: bookwyrm/templates/components/modal.html:11 -#: bookwyrm/templates/feed/feed_layout.html:70 +#: bookwyrm/templates/feed/feed_layout.html:69 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 #: bookwyrm/templates/search/book.html:32 @@ -597,23 +663,23 @@ msgstr "Sugerido" msgid "Recently active" msgstr "Activ@ recientemente" -#: bookwyrm/templates/directory/user_card.html:32 +#: bookwyrm/templates/directory/user_card.html:33 msgid "follower you follow" msgid_plural "followers you follow" msgstr[0] "seguidor que tu sigues" msgstr[1] "seguidores que tu sigues" -#: bookwyrm/templates/directory/user_card.html:39 +#: bookwyrm/templates/directory/user_card.html:40 msgid "book on your shelves" msgid_plural "books on your shelves" msgstr[0] "libro en tus estantes" msgstr[1] "libro en tus estantes" -#: bookwyrm/templates/directory/user_card.html:47 +#: bookwyrm/templates/directory/user_card.html:48 msgid "posts" msgstr "publicaciones" -#: bookwyrm/templates/directory/user_card.html:53 +#: bookwyrm/templates/directory/user_card.html:54 msgid "last active" msgstr "actividad reciente" @@ -699,44 +765,6 @@ msgstr "Enviar" msgid "Your Account" msgstr "Tu cuenta" -#: bookwyrm/templates/edit_author.html:5 -msgid "Edit Author:" -msgstr "Editar Autor/Autora/Autore:" - -#: bookwyrm/templates/edit_author.html:32 bookwyrm/templates/lists/form.html:8 -#: bookwyrm/templates/user/shelf/create_shelf_form.html:13 -#: bookwyrm/templates/user/shelf/edit_shelf_form.html:14 -msgid "Name:" -msgstr "Nombre:" - -#: bookwyrm/templates/edit_author.html:37 -msgid "Bio:" -msgstr "Bio:" - -#: bookwyrm/templates/edit_author.html:42 -msgid "Wikipedia link:" -msgstr "Enlace de Wikipedia:" - -#: bookwyrm/templates/edit_author.html:47 -msgid "Birth date:" -msgstr "Fecha de nacimiento:" - -#: bookwyrm/templates/edit_author.html:52 -msgid "Death date:" -msgstr "Fecha de muerte:" - -#: bookwyrm/templates/edit_author.html:58 -msgid "Author Identifiers" -msgstr "Identificadores de autor/autora" - -#: bookwyrm/templates/edit_author.html:64 -msgid "Librarything key:" -msgstr "Clave Librarything:" - -#: bookwyrm/templates/edit_author.html:69 -msgid "Goodreads key:" -msgstr "Clave Goodreads:" - #: bookwyrm/templates/email/html_layout.html:15 #: bookwyrm/templates/email/text_layout.html:2 msgid "Hi there," @@ -817,76 +845,76 @@ msgstr "Todos los mensajes" msgid "You have no messages right now." msgstr "No tienes ningún mensaje en este momento." -#: bookwyrm/templates/feed/feed.html:9 +#: bookwyrm/templates/feed/feed.html:8 msgid "Home Timeline" msgstr "Línea temporal de hogar" -#: bookwyrm/templates/feed/feed.html:11 +#: bookwyrm/templates/feed/feed.html:10 msgid "Local Timeline" msgstr "Línea temporal local" -#: bookwyrm/templates/feed/feed.html:13 +#: bookwyrm/templates/feed/feed.html:12 msgid "Federated Timeline" msgstr "Línea temporal federalizado" -#: bookwyrm/templates/feed/feed.html:19 +#: bookwyrm/templates/feed/feed.html:18 msgid "Home" msgstr "Hogar" -#: bookwyrm/templates/feed/feed.html:22 +#: bookwyrm/templates/feed/feed.html:21 msgid "Local" msgstr "Local" -#: bookwyrm/templates/feed/feed.html:25 +#: bookwyrm/templates/feed/feed.html:24 #: bookwyrm/templates/settings/edit_server.html:40 msgid "Federated" msgstr "Federalizado" -#: bookwyrm/templates/feed/feed.html:33 +#: bookwyrm/templates/feed/feed.html:32 #, python-format msgid "load 0 unread status(es)" msgstr "cargar 0 status(es) no leídos" -#: bookwyrm/templates/feed/feed.html:48 +#: bookwyrm/templates/feed/feed.html:47 msgid "There aren't any activities right now! Try following a user to get started" msgstr "¡No hay actividad ahora mismo! Sigue a otro usuario para empezar" -#: bookwyrm/templates/feed/feed.html:56 +#: bookwyrm/templates/feed/feed.html:55 #: bookwyrm/templates/get_started/users.html:6 msgid "Who to follow" msgstr "A quién seguir" -#: bookwyrm/templates/feed/feed_layout.html:5 +#: bookwyrm/templates/feed/feed_layout.html:4 msgid "Updates" msgstr "Actualizaciones" -#: bookwyrm/templates/feed/feed_layout.html:11 +#: bookwyrm/templates/feed/feed_layout.html:10 #: bookwyrm/templates/layout.html:59 #: bookwyrm/templates/user/shelf/books_header.html:3 msgid "Your books" msgstr "Tus libros" -#: bookwyrm/templates/feed/feed_layout.html:13 +#: bookwyrm/templates/feed/feed_layout.html:12 msgid "There are no books here right now! Try searching for a book to get started" msgstr "¡No hay ningún libro aqui ahorita! Busca a un libro para empezar" -#: bookwyrm/templates/feed/feed_layout.html:24 -#: bookwyrm/templates/user/shelf/shelf.html:28 +#: bookwyrm/templates/feed/feed_layout.html:23 +#: bookwyrm/templates/user/shelf/shelf.html:29 msgid "To Read" msgstr "Para leer" -#: bookwyrm/templates/feed/feed_layout.html:25 -#: bookwyrm/templates/user/shelf/shelf.html:28 +#: bookwyrm/templates/feed/feed_layout.html:24 +#: bookwyrm/templates/user/shelf/shelf.html:29 msgid "Currently Reading" msgstr "Leyendo actualmente" -#: bookwyrm/templates/feed/feed_layout.html:26 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:11 -#: bookwyrm/templates/user/shelf/shelf.html:28 +#: bookwyrm/templates/feed/feed_layout.html:25 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:13 +#: bookwyrm/templates/user/shelf/shelf.html:29 msgid "Read" msgstr "Leido" -#: bookwyrm/templates/feed/feed_layout.html:88 bookwyrm/templates/goal.html:26 +#: bookwyrm/templates/feed/feed_layout.html:87 bookwyrm/templates/goal.html:26 #: bookwyrm/templates/snippets/goal_card.html:6 #, python-format msgid "%(year)s Reading Goal" @@ -916,7 +944,7 @@ msgid "What are you reading?" msgstr "¿Qué estás leyendo?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/lists/list.html:119 +#: bookwyrm/templates/lists/list.html:120 msgid "Search for a book" msgstr "Buscar libros" @@ -936,7 +964,7 @@ msgstr "Puedes agregar libros cuando comiences a usar %(site_name)s." #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/layout.html:38 bookwyrm/templates/layout.html:39 -#: bookwyrm/templates/lists/list.html:123 +#: bookwyrm/templates/lists/list.html:124 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -952,7 +980,7 @@ msgid "Popular on %(site_name)s" msgstr "Popular en %(site_name)s" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:136 +#: bookwyrm/templates/lists/list.html:137 msgid "No books found" msgstr "No se encontró ningún libro" @@ -1072,95 +1100,95 @@ msgstr "Importar libros" msgid "Data source:" msgstr "Fuente de datos:" -#: bookwyrm/templates/import.html:29 +#: bookwyrm/templates/import.html:32 msgid "Data file:" msgstr "Archivo de datos:" -#: bookwyrm/templates/import.html:37 +#: bookwyrm/templates/import.html:40 msgid "Include reviews" msgstr "Incluir reseñas" -#: bookwyrm/templates/import.html:42 +#: bookwyrm/templates/import.html:45 msgid "Privacy setting for imported reviews:" msgstr "Configuración de privacidad para las reseñas importadas:" -#: bookwyrm/templates/import.html:48 +#: bookwyrm/templates/import.html:51 #: bookwyrm/templates/settings/server_blocklist.html:64 msgid "Import" msgstr "Importar" -#: bookwyrm/templates/import.html:53 +#: bookwyrm/templates/import.html:56 msgid "Recent Imports" msgstr "Importaciones recientes" -#: bookwyrm/templates/import.html:55 +#: bookwyrm/templates/import.html:58 msgid "No recent imports" msgstr "No hay ninguna importación reciente" -#: bookwyrm/templates/import_status.html:6 -#: bookwyrm/templates/import_status.html:10 +#: bookwyrm/templates/import_status.html:5 +#: bookwyrm/templates/import_status.html:9 msgid "Import Status" msgstr "Status de importación" -#: bookwyrm/templates/import_status.html:13 +#: bookwyrm/templates/import_status.html:12 msgid "Import started:" msgstr "Importación ha empezado:" -#: bookwyrm/templates/import_status.html:17 +#: bookwyrm/templates/import_status.html:16 msgid "Import completed:" msgstr "Importación ha terminado:" -#: bookwyrm/templates/import_status.html:20 +#: bookwyrm/templates/import_status.html:19 msgid "TASK FAILED" msgstr "TAREA FALLÓ" -#: bookwyrm/templates/import_status.html:26 +#: bookwyrm/templates/import_status.html:25 msgid "Import still in progress." msgstr "Importación todavia en progreso" -#: bookwyrm/templates/import_status.html:28 +#: bookwyrm/templates/import_status.html:27 msgid "(Hit reload to update!)" msgstr "(¡Refresca para actualizar!)" -#: bookwyrm/templates/import_status.html:35 +#: bookwyrm/templates/import_status.html:34 msgid "Failed to load" msgstr "No se pudo cargar" -#: bookwyrm/templates/import_status.html:44 +#: bookwyrm/templates/import_status.html:43 #, python-format msgid "Jump to the bottom of the list to select the %(failed_count)s items which failed to import." msgstr "Saltar al final de la lista para seleccionar los %(failed_count)s artículos que no se pudieron importar." -#: bookwyrm/templates/import_status.html:79 +#: bookwyrm/templates/import_status.html:78 msgid "Select all" msgstr "Seleccionar todo" -#: bookwyrm/templates/import_status.html:82 +#: bookwyrm/templates/import_status.html:81 msgid "Retry items" msgstr "Reintentar ítems" -#: bookwyrm/templates/import_status.html:108 +#: bookwyrm/templates/import_status.html:107 msgid "Successfully imported" msgstr "Importado exitosamente" -#: bookwyrm/templates/import_status.html:112 +#: bookwyrm/templates/import_status.html:111 msgid "Book" msgstr "Libro" -#: bookwyrm/templates/import_status.html:115 -#: bookwyrm/templates/snippets/create_status_form.html:10 -#: bookwyrm/templates/user/shelf/shelf.html:77 -#: bookwyrm/templates/user/shelf/shelf.html:95 +#: bookwyrm/templates/import_status.html:114 +#: bookwyrm/templates/snippets/create_status_form.html:13 +#: bookwyrm/templates/user/shelf/shelf.html:78 +#: bookwyrm/templates/user/shelf/shelf.html:98 msgid "Title" msgstr "Título" -#: bookwyrm/templates/import_status.html:118 -#: bookwyrm/templates/user/shelf/shelf.html:78 -#: bookwyrm/templates/user/shelf/shelf.html:98 +#: bookwyrm/templates/import_status.html:117 +#: bookwyrm/templates/user/shelf/shelf.html:79 +#: bookwyrm/templates/user/shelf/shelf.html:101 msgid "Author" msgstr "Autor/Autora" -#: bookwyrm/templates/import_status.html:141 +#: bookwyrm/templates/import_status.html:140 msgid "Imported" msgstr "Importado" @@ -1271,7 +1299,8 @@ msgid "Support %(site_name)s on % msgstr "Apoyar %(site_name)s en %(support_title)s" #: bookwyrm/templates/layout.html:217 -msgid "BookWyrm is open source software. You can contribute or report issues on GitHub." +#| msgid "BookWyrm is open source software. You can contribute or report issues on GitHub." +msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "BookWyrm es software de código abierto. Puedes contribuir o reportar problemas en GitHub." #: bookwyrm/templates/lists/create_form.html:5 @@ -1314,7 +1343,7 @@ msgid "Discard" msgstr "Desechar" #: bookwyrm/templates/lists/edit_form.html:5 -#: bookwyrm/templates/lists/list_layout.html:18 +#: bookwyrm/templates/lists/list_layout.html:17 msgid "Edit List" msgstr "Editar lista" @@ -1348,68 +1377,68 @@ msgstr "Abierto" msgid "Anyone can add books to this list" msgstr "Cualquer usuario puede agregar libros a esta lista" -#: bookwyrm/templates/lists/list.html:19 +#: bookwyrm/templates/lists/list.html:20 msgid "You successfully suggested a book for this list!" msgstr "" -#: bookwyrm/templates/lists/list.html:21 +#: bookwyrm/templates/lists/list.html:22 #, fuzzy #| msgid "Anyone can add books to this list" msgid "You successfully added a book to this list!" msgstr "Cualquer usuario puede agregar libros a esta lista" -#: bookwyrm/templates/lists/list.html:27 +#: bookwyrm/templates/lists/list.html:28 msgid "This list is currently empty" msgstr "Esta lista está vacia" -#: bookwyrm/templates/lists/list.html:64 +#: bookwyrm/templates/lists/list.html:65 #, python-format msgid "Added by %(username)s" msgstr "Agregado por %(username)s" -#: bookwyrm/templates/lists/list.html:76 +#: bookwyrm/templates/lists/list.html:77 msgid "Set" msgstr "Establecido" -#: bookwyrm/templates/lists/list.html:79 +#: bookwyrm/templates/lists/list.html:80 msgid "List position" msgstr "Posición" -#: bookwyrm/templates/lists/list.html:85 +#: bookwyrm/templates/lists/list.html:86 #: bookwyrm/templates/snippets/shelf_selector.html:26 msgid "Remove" msgstr "Quitar" -#: bookwyrm/templates/lists/list.html:98 bookwyrm/templates/lists/list.html:110 +#: bookwyrm/templates/lists/list.html:99 bookwyrm/templates/lists/list.html:111 msgid "Sort List" msgstr "Ordena la lista" -#: bookwyrm/templates/lists/list.html:104 +#: bookwyrm/templates/lists/list.html:105 msgid "Direction" msgstr "Dirección" -#: bookwyrm/templates/lists/list.html:115 +#: bookwyrm/templates/lists/list.html:116 msgid "Add Books" msgstr "Agregar libros" -#: bookwyrm/templates/lists/list.html:115 +#: bookwyrm/templates/lists/list.html:116 msgid "Suggest Books" msgstr "Sugerir libros" -#: bookwyrm/templates/lists/list.html:124 +#: bookwyrm/templates/lists/list.html:125 msgid "search" msgstr "buscar" -#: bookwyrm/templates/lists/list.html:130 +#: bookwyrm/templates/lists/list.html:131 msgid "Clear search" msgstr "Borrar búsqueda" -#: bookwyrm/templates/lists/list.html:135 +#: bookwyrm/templates/lists/list.html:136 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "No se encontró ningún libro correspondiente a la búsqueda: \"%(query)s\"" -#: bookwyrm/templates/lists/list.html:163 +#: bookwyrm/templates/lists/list.html:164 msgid "Suggest" msgstr "Sugerir" @@ -1434,36 +1463,36 @@ msgstr "Contactar a unx administradorx para recibir una invitación" msgid "More about this site" msgstr "Más sobre este sitio" +#: bookwyrm/templates/moderation/report.html:5 #: bookwyrm/templates/moderation/report.html:6 -#: bookwyrm/templates/moderation/report.html:7 #: bookwyrm/templates/moderation/report_preview.html:6 #, python-format msgid "Report #%(report_id)s: %(username)s" msgstr "Reportar #%(report_id)s: %(username)s" -#: bookwyrm/templates/moderation/report.html:11 +#: bookwyrm/templates/moderation/report.html:10 msgid "Back to reports" msgstr "Volver a los informes" -#: bookwyrm/templates/moderation/report.html:23 +#: bookwyrm/templates/moderation/report.html:22 msgid "Moderator Comments" msgstr "Comentarios de moderador" -#: bookwyrm/templates/moderation/report.html:41 +#: bookwyrm/templates/moderation/report.html:40 #: bookwyrm/templates/snippets/create_status.html:28 -#: bookwyrm/templates/snippets/create_status_form.html:63 +#: bookwyrm/templates/snippets/create_status_form.html:66 msgid "Comment" msgstr "Comentario" -#: bookwyrm/templates/moderation/report.html:46 +#: bookwyrm/templates/moderation/report.html:45 msgid "Reported statuses" msgstr "Statuses reportados" -#: bookwyrm/templates/moderation/report.html:48 +#: bookwyrm/templates/moderation/report.html:47 msgid "No statuses reported" msgstr "Ningún estatus reportado" -#: bookwyrm/templates/moderation/report.html:54 +#: bookwyrm/templates/moderation/report.html:53 msgid "Status has been deleted" msgstr "Status ha sido eliminado" @@ -1741,7 +1770,7 @@ msgstr "Buscar" #: bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 -#: bookwyrm/templates/user/layout.html:73 +#: bookwyrm/templates/user/layout.html:74 msgid "Books" msgstr "Libros" @@ -1814,7 +1843,7 @@ msgid "Add server" msgstr "Agregar servidor" #: bookwyrm/templates/settings/edit_server.html:7 -#: bookwyrm/templates/settings/federated_server.html:12 +#: bookwyrm/templates/settings/federated_server.html:13 #: bookwyrm/templates/settings/server_blocklist.html:7 msgid "Back to server list" msgstr "Volver a la lista de servidores" @@ -1829,24 +1858,24 @@ msgid "Instance:" msgstr "Instancia:" #: bookwyrm/templates/settings/edit_server.html:37 -#: bookwyrm/templates/settings/federated_server.html:29 +#: bookwyrm/templates/settings/federated_server.html:30 #: bookwyrm/templates/user_admin/user_info.html:34 msgid "Status:" msgstr "Status:" #: bookwyrm/templates/settings/edit_server.html:41 -#: bookwyrm/templates/settings/federated_server.html:9 +#: bookwyrm/templates/settings/federated_server.html:10 msgid "Blocked" msgstr "Bloqueado" #: bookwyrm/templates/settings/edit_server.html:48 -#: bookwyrm/templates/settings/federated_server.html:21 +#: bookwyrm/templates/settings/federated_server.html:22 #: bookwyrm/templates/user_admin/user_info.html:26 msgid "Software:" msgstr "Software:" #: bookwyrm/templates/settings/edit_server.html:55 -#: bookwyrm/templates/settings/federated_server.html:25 +#: bookwyrm/templates/settings/federated_server.html:26 #: bookwyrm/templates/user_admin/user_info.html:30 msgid "Version:" msgstr "Versión:" @@ -1855,69 +1884,69 @@ msgstr "Versión:" msgid "Notes:" msgstr "Notas:" -#: bookwyrm/templates/settings/federated_server.html:18 +#: bookwyrm/templates/settings/federated_server.html:19 msgid "Details" msgstr "Detalles" -#: bookwyrm/templates/settings/federated_server.html:36 -#: bookwyrm/templates/user/layout.html:55 +#: bookwyrm/templates/settings/federated_server.html:37 +#: bookwyrm/templates/user/layout.html:56 msgid "Activity" msgstr "Actividad" -#: bookwyrm/templates/settings/federated_server.html:39 +#: bookwyrm/templates/settings/federated_server.html:40 msgid "Users:" msgstr "Usuarios:" -#: bookwyrm/templates/settings/federated_server.html:42 -#: bookwyrm/templates/settings/federated_server.html:49 +#: bookwyrm/templates/settings/federated_server.html:43 +#: bookwyrm/templates/settings/federated_server.html:50 msgid "View all" msgstr "Ver todos" -#: bookwyrm/templates/settings/federated_server.html:46 +#: bookwyrm/templates/settings/federated_server.html:47 msgid "Reports:" msgstr "Informes:" -#: bookwyrm/templates/settings/federated_server.html:53 +#: bookwyrm/templates/settings/federated_server.html:54 msgid "Followed by us:" msgstr "Seguido por nosotros:" -#: bookwyrm/templates/settings/federated_server.html:59 +#: bookwyrm/templates/settings/federated_server.html:60 msgid "Followed by them:" msgstr "Seguido por ellos:" -#: bookwyrm/templates/settings/federated_server.html:65 +#: bookwyrm/templates/settings/federated_server.html:66 msgid "Blocked by us:" msgstr "Bloqueado por nosotros:" -#: bookwyrm/templates/settings/federated_server.html:77 +#: bookwyrm/templates/settings/federated_server.html:78 #: bookwyrm/templates/user_admin/user_info.html:39 msgid "Notes" msgstr "Notas" -#: bookwyrm/templates/settings/federated_server.html:80 +#: bookwyrm/templates/settings/federated_server.html:81 msgid "Edit" msgstr "Editar" -#: bookwyrm/templates/settings/federated_server.html:100 +#: bookwyrm/templates/settings/federated_server.html:101 #: bookwyrm/templates/user_admin/user_moderation_actions.html:3 msgid "Actions" msgstr "Acciones" -#: bookwyrm/templates/settings/federated_server.html:104 +#: bookwyrm/templates/settings/federated_server.html:105 #: bookwyrm/templates/snippets/block_button.html:5 msgid "Block" msgstr "Bloquear" -#: bookwyrm/templates/settings/federated_server.html:105 +#: bookwyrm/templates/settings/federated_server.html:106 msgid "All users from this instance will be deactivated." msgstr "Todos los usuarios en esta instancia serán desactivados." -#: bookwyrm/templates/settings/federated_server.html:110 +#: bookwyrm/templates/settings/federated_server.html:111 #: bookwyrm/templates/snippets/block_button.html:10 msgid "Un-block" msgstr "Desbloquear" -#: bookwyrm/templates/settings/federated_server.html:111 +#: bookwyrm/templates/settings/federated_server.html:112 msgid "All users from this instance will be re-activated." msgstr "Todos los usuarios en esta instancia serán re-activados." @@ -2124,7 +2153,7 @@ msgstr "Permitir solicitudes de invitación:" msgid "Registration closed text:" msgstr "Texto de registración cerrada:" -#: bookwyrm/templates/snippets/book_cover.html:32 +#: bookwyrm/templates/snippets/book_cover.html:31 msgid "No cover" msgstr "Sin portada" @@ -2133,15 +2162,15 @@ msgstr "Sin portada" msgid "%(title)s by " msgstr "%(title)s por " -#: bookwyrm/templates/snippets/boost_button.html:8 #: bookwyrm/templates/snippets/boost_button.html:9 +#: bookwyrm/templates/snippets/boost_button.html:10 #, fuzzy #| msgid "boosted" msgid "Boost" msgstr "respaldó" -#: bookwyrm/templates/snippets/boost_button.html:15 #: bookwyrm/templates/snippets/boost_button.html:16 +#: bookwyrm/templates/snippets/boost_button.html:17 #, fuzzy #| msgid "Un-boost status" msgid "Un-boost" @@ -2163,66 +2192,66 @@ msgstr "Reseña" msgid "Quote" msgstr "Cita" -#: bookwyrm/templates/snippets/create_status_form.html:20 +#: bookwyrm/templates/snippets/create_status_form.html:23 msgid "Comment:" msgstr "Comentario:" -#: bookwyrm/templates/snippets/create_status_form.html:22 +#: bookwyrm/templates/snippets/create_status_form.html:25 msgid "Quote:" msgstr "Cita:" -#: bookwyrm/templates/snippets/create_status_form.html:24 +#: bookwyrm/templates/snippets/create_status_form.html:27 msgid "Review:" msgstr "Reseña:" -#: bookwyrm/templates/snippets/create_status_form.html:53 -#: bookwyrm/templates/snippets/status/layout.html:30 +#: bookwyrm/templates/snippets/create_status_form.html:56 +#: bookwyrm/templates/snippets/status/layout.html:29 +#: bookwyrm/templates/snippets/status/layout.html:47 #: bookwyrm/templates/snippets/status/layout.html:48 -#: bookwyrm/templates/snippets/status/layout.html:49 msgid "Reply" msgstr "Respuesta" -#: bookwyrm/templates/snippets/create_status_form.html:53 +#: bookwyrm/templates/snippets/create_status_form.html:56 #, fuzzy #| msgid "Footer Content" msgid "Content" msgstr "Contenido del pie de página" -#: bookwyrm/templates/snippets/create_status_form.html:77 +#: bookwyrm/templates/snippets/create_status_form.html:80 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:16 msgid "Progress:" msgstr "Progreso:" -#: bookwyrm/templates/snippets/create_status_form.html:85 -#: bookwyrm/templates/snippets/readthrough_form.html:26 +#: bookwyrm/templates/snippets/create_status_form.html:88 +#: bookwyrm/templates/snippets/readthrough_form.html:22 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30 msgid "pages" msgstr "páginas" -#: bookwyrm/templates/snippets/create_status_form.html:86 -#: bookwyrm/templates/snippets/readthrough_form.html:27 +#: bookwyrm/templates/snippets/create_status_form.html:89 +#: bookwyrm/templates/snippets/readthrough_form.html:23 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31 msgid "percent" msgstr "por ciento" -#: bookwyrm/templates/snippets/create_status_form.html:92 +#: bookwyrm/templates/snippets/create_status_form.html:95 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:36 #, python-format msgid "of %(pages)s pages" msgstr "de %(pages)s páginas" -#: bookwyrm/templates/snippets/create_status_form.html:107 +#: bookwyrm/templates/snippets/create_status_form.html:110 msgid "Include spoiler alert" msgstr "Incluir alerta de spoiler" -#: bookwyrm/templates/snippets/create_status_form.html:114 +#: bookwyrm/templates/snippets/create_status_form.html:117 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:19 msgid "Private" msgstr "Privada" -#: bookwyrm/templates/snippets/create_status_form.html:125 +#: bookwyrm/templates/snippets/create_status_form.html:128 msgid "Post" msgstr "Compartir" @@ -2236,17 +2265,17 @@ msgid "You are deleting this readthrough and its %(count)s associated progress u msgstr "Estás eliminando esta lectura y sus %(count)s actualizaciones de progreso asociados." #: bookwyrm/templates/snippets/delete_readthrough_modal.html:15 -#: bookwyrm/templates/snippets/follow_request_buttons.html:13 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 msgid "Delete" msgstr "Eliminar" -#: bookwyrm/templates/snippets/fav_button.html:7 #: bookwyrm/templates/snippets/fav_button.html:9 +#: bookwyrm/templates/snippets/fav_button.html:11 msgid "Like" msgstr "" -#: bookwyrm/templates/snippets/fav_button.html:15 -#: bookwyrm/templates/snippets/fav_button.html:16 +#: bookwyrm/templates/snippets/fav_button.html:17 +#: bookwyrm/templates/snippets/fav_button.html:18 #, fuzzy #| msgid "Un-like status" msgid "Un-like" @@ -2280,11 +2309,11 @@ msgstr "Des-enviar solicitud de seguidor" msgid "Unfollow" msgstr "Dejar de seguir" -#: bookwyrm/templates/snippets/follow_request_buttons.html:8 +#: bookwyrm/templates/snippets/follow_request_buttons.html:7 msgid "Accept" msgstr "Aceptar" -#: bookwyrm/templates/snippets/form_rate_stars.html:20 +#: bookwyrm/templates/snippets/form_rate_stars.html:19 #: bookwyrm/templates/snippets/stars.html:13 msgid "No rating" msgstr "No calificación" @@ -2333,8 +2362,8 @@ msgid "Goal privacy:" msgstr "Privacidad de meta:" #: bookwyrm/templates/snippets/goal_form.html:26 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:45 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:33 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:37 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:29 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:20 msgid "Post to feed" msgstr "Compartir con tu feed" @@ -2446,12 +2475,12 @@ msgstr "Eliminar estas fechas de lectura" msgid "Started reading" msgstr "Lectura se empezó" -#: bookwyrm/templates/snippets/readthrough_form.html:18 +#: bookwyrm/templates/snippets/readthrough_form.html:14 msgid "Progress" msgstr "Progreso" -#: bookwyrm/templates/snippets/readthrough_form.html:34 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:29 +#: bookwyrm/templates/snippets/readthrough_form.html:30 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:25 msgid "Finished reading" msgstr "Lectura se terminó" @@ -2459,27 +2488,27 @@ msgstr "Lectura se terminó" msgid "Sign Up" msgstr "Inscribirse" -#: bookwyrm/templates/snippets/report_button.html:5 +#: bookwyrm/templates/snippets/report_button.html:6 msgid "Report" msgstr "Reportar" #: bookwyrm/templates/snippets/rss_title.html:5 -#: bookwyrm/templates/snippets/status/status_header.html:34 +#: bookwyrm/templates/snippets/status/status_header.html:35 msgid "rated" msgstr "calificó" #: bookwyrm/templates/snippets/rss_title.html:7 -#: bookwyrm/templates/snippets/status/status_header.html:36 +#: bookwyrm/templates/snippets/status/status_header.html:37 msgid "reviewed" msgstr "reseñó" #: bookwyrm/templates/snippets/rss_title.html:9 -#: bookwyrm/templates/snippets/status/status_header.html:38 +#: bookwyrm/templates/snippets/status/status_header.html:39 msgid "commented on" msgstr "comentó en" #: bookwyrm/templates/snippets/rss_title.html:11 -#: bookwyrm/templates/snippets/status/status_header.html:40 +#: bookwyrm/templates/snippets/status/status_header.html:41 msgid "quoted" msgstr "citó" @@ -2497,7 +2526,7 @@ msgid "Finish \"%(book_title)s\"" msgstr "Terminar \"%(book_title)s\"" #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:5 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:34 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:36 msgid "Update progress" msgstr "Progreso de actualización" @@ -2505,20 +2534,20 @@ msgstr "Progreso de actualización" msgid "More shelves" msgstr "Más estantes" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:8 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:10 msgid "Start reading" msgstr "Empezar leer" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:13 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:15 msgid "Finish reading" msgstr "Terminar de leer" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:16 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:18 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:26 msgid "Want to read" msgstr "Quiero leer" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:45 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:47 #, python-format msgid "Remove from %(name)s" msgstr "Quitar de %(name)s" @@ -2533,40 +2562,40 @@ msgstr "Empezar \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Quiero leer \"%(book_title)s\"" -#: bookwyrm/templates/snippets/status/content_status.html:70 -#: bookwyrm/templates/snippets/trimmed_text.html:14 +#: bookwyrm/templates/snippets/status/content_status.html:71 +#: bookwyrm/templates/snippets/trimmed_text.html:15 msgid "Show more" msgstr "Mostrar más" -#: bookwyrm/templates/snippets/status/content_status.html:85 -#: bookwyrm/templates/snippets/trimmed_text.html:29 +#: bookwyrm/templates/snippets/status/content_status.html:86 +#: bookwyrm/templates/snippets/trimmed_text.html:30 msgid "Show less" msgstr "Mostrar menos" -#: bookwyrm/templates/snippets/status/content_status.html:115 +#: bookwyrm/templates/snippets/status/content_status.html:116 msgid "Open image in new window" msgstr "Abrir imagen en una nueva ventana" -#: bookwyrm/templates/snippets/status/layout.html:22 +#: bookwyrm/templates/snippets/status/layout.html:21 #: bookwyrm/templates/snippets/status/status_options.html:17 msgid "Delete status" msgstr "Eliminar status" +#: bookwyrm/templates/snippets/status/layout.html:51 #: bookwyrm/templates/snippets/status/layout.html:52 -#: bookwyrm/templates/snippets/status/layout.html:53 msgid "Boost status" msgstr "Status de respaldo" +#: bookwyrm/templates/snippets/status/layout.html:55 #: bookwyrm/templates/snippets/status/layout.html:56 -#: bookwyrm/templates/snippets/status/layout.html:57 msgid "Like status" msgstr "Me gusta status" -#: bookwyrm/templates/snippets/status/status.html:9 +#: bookwyrm/templates/snippets/status/status.html:10 msgid "boosted" msgstr "respaldó" -#: bookwyrm/templates/snippets/status/status_header.html:44 +#: bookwyrm/templates/snippets/status/status_header.html:45 #, python-format msgid "replied to %(username)s's status" msgstr "respondió al status de %(username)s " @@ -2598,15 +2627,15 @@ msgstr "En orden ascendente" msgid "Sorted descending" msgstr "En orden descendente" -#: bookwyrm/templates/user/layout.html:12 bookwyrm/templates/user/user.html:10 +#: bookwyrm/templates/user/layout.html:13 bookwyrm/templates/user/user.html:10 msgid "User Profile" msgstr "Perfil de usuario" -#: bookwyrm/templates/user/layout.html:36 +#: bookwyrm/templates/user/layout.html:37 msgid "Follow Requests" msgstr "Solicitudes de seguidor" -#: bookwyrm/templates/user/layout.html:61 +#: bookwyrm/templates/user/layout.html:62 msgid "Reading Goal" msgstr "Meta de lectura" @@ -2652,38 +2681,38 @@ msgstr "Editar estante" msgid "Update shelf" msgstr "Actualizar estante" -#: bookwyrm/templates/user/shelf/shelf.html:24 bookwyrm/views/shelf.py:48 +#: bookwyrm/templates/user/shelf/shelf.html:25 bookwyrm/views/shelf.py:51 msgid "All books" msgstr "Todos los libros" -#: bookwyrm/templates/user/shelf/shelf.html:37 +#: bookwyrm/templates/user/shelf/shelf.html:38 msgid "Create shelf" msgstr "Crear estante" -#: bookwyrm/templates/user/shelf/shelf.html:60 +#: bookwyrm/templates/user/shelf/shelf.html:61 msgid "Edit shelf" msgstr "Editar estante" -#: bookwyrm/templates/user/shelf/shelf.html:79 -#: bookwyrm/templates/user/shelf/shelf.html:101 +#: bookwyrm/templates/user/shelf/shelf.html:80 +#: bookwyrm/templates/user/shelf/shelf.html:104 msgid "Shelved" msgstr "Archivado" -#: bookwyrm/templates/user/shelf/shelf.html:80 -#: bookwyrm/templates/user/shelf/shelf.html:105 +#: bookwyrm/templates/user/shelf/shelf.html:81 +#: bookwyrm/templates/user/shelf/shelf.html:108 msgid "Started" msgstr "Empezado" -#: bookwyrm/templates/user/shelf/shelf.html:81 -#: bookwyrm/templates/user/shelf/shelf.html:108 +#: bookwyrm/templates/user/shelf/shelf.html:82 +#: bookwyrm/templates/user/shelf/shelf.html:111 msgid "Finished" msgstr "Terminado" -#: bookwyrm/templates/user/shelf/shelf.html:134 +#: bookwyrm/templates/user/shelf/shelf.html:137 msgid "This shelf is empty." msgstr "Este estante está vacio." -#: bookwyrm/templates/user/shelf/shelf.html:140 +#: bookwyrm/templates/user/shelf/shelf.html:143 msgid "Delete shelf" msgstr "Eliminar estante" @@ -2712,24 +2741,24 @@ msgstr "Feed RSS" msgid "No activities yet!" msgstr "¡Aún no actividades!" -#: bookwyrm/templates/user/user_preview.html:14 +#: bookwyrm/templates/user/user_preview.html:15 #, python-format msgid "Joined %(date)s" msgstr "Unido %(date)s" -#: bookwyrm/templates/user/user_preview.html:18 +#: bookwyrm/templates/user/user_preview.html:19 #, python-format msgid "%(counter)s follower" msgid_plural "%(counter)s followers" msgstr[0] "%(counter)s seguidor" msgstr[1] "%(counter)s seguidores" -#: bookwyrm/templates/user/user_preview.html:19 +#: bookwyrm/templates/user/user_preview.html:20 #, python-format msgid "%(counter)s following" msgstr "%(counter)s siguiendo" -#: bookwyrm/templates/user/user_preview.html:25 +#: bookwyrm/templates/user/user_preview.html:26 #, fuzzy, python-format #| msgid "%(mutuals)s follower you follow" #| msgid_plural "%(mutuals)s followers you follow" @@ -2738,7 +2767,7 @@ msgid_plural "%(mutuals_display)s followers you follow" msgstr[0] "%(mutuals)s seguidor que sigues" msgstr[1] "%(mutuals)s seguidores que sigues" -#: bookwyrm/templates/user_admin/user.html:11 +#: bookwyrm/templates/user_admin/user.html:9 msgid "Back to users" msgstr "Volver a usuarios" @@ -2805,15 +2834,20 @@ msgstr "Des-suspender usuario" msgid "Access level:" msgstr "Nivel de acceso:" -#: bookwyrm/views/password.py:32 +#: bookwyrm/views/password.py:30 bookwyrm/views/password.py:35 msgid "No user with that email address was found." msgstr "No se pudo encontrar un usuario con esa dirección de correo electrónico." -#: bookwyrm/views/password.py:41 +#: bookwyrm/views/password.py:44 #, python-format msgid "A password reset link sent to %s" msgstr "Un enlace para reestablecer tu contraseña se enviará a %s" +#, fuzzy +#~| msgid "BookWyrm users" +#~ msgid "BookWyrm\\" +#~ msgstr "Usuarios de BookWyrm" + #, fuzzy #~| msgid "Show more" #~ msgid "Show" diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index cb6c74d1..6362adcc 100644 --- a/locale/fr_FR/LC_MESSAGES/django.po +++ b/locale/fr_FR/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-05-10 13:23-0700\n" +"POT-Creation-Date: 2021-05-14 15:12-0700\n" "PO-Revision-Date: 2021-04-05 12:44+0100\n" "Last-Translator: Fabien Basmaison \n" "Language-Team: Mouse Reeve \n" @@ -57,13 +57,13 @@ msgstr "" msgid "Book Title" msgstr "Titre" -#: bookwyrm/forms.py:295 bookwyrm/templates/snippets/create_status_form.html:31 -#: bookwyrm/templates/user/shelf/shelf.html:82 -#: bookwyrm/templates/user/shelf/shelf.html:112 +#: bookwyrm/forms.py:295 bookwyrm/templates/snippets/create_status_form.html:34 +#: bookwyrm/templates/user/shelf/shelf.html:84 +#: bookwyrm/templates/user/shelf/shelf.html:115 msgid "Rating" msgstr "Note" -#: bookwyrm/forms.py:297 bookwyrm/templates/lists/list.html:100 +#: bookwyrm/forms.py:297 bookwyrm/templates/lists/list.html:101 msgid "Sort By" msgstr "" @@ -137,19 +137,155 @@ msgstr "Erreur côté serveur" msgid "Something went wrong! Sorry about that." msgstr "Une erreur s’est produite ; désolé !" -#: bookwyrm/templates/author.html:16 bookwyrm/templates/author.html:17 +#: bookwyrm/templates/author/author.html:17 +#: bookwyrm/templates/author/author.html:18 msgid "Edit Author" msgstr "Modifier l’auteur ou autrice" -#: bookwyrm/templates/author.html:31 +#: bookwyrm/templates/author/author.html:33 +#: bookwyrm/templates/author/edit_author.html:38 +msgid "Aliases:" +msgstr "" + +#: bookwyrm/templates/author/author.html:39 +msgid "Born:" +msgstr "" + +#: bookwyrm/templates/author/author.html:45 +msgid "Died:" +msgstr "" + +#: bookwyrm/templates/author/author.html:52 msgid "Wikipedia" msgstr "Wikipedia" -#: bookwyrm/templates/author.html:36 +#: bookwyrm/templates/author/author.html:56 +#: bookwyrm/templates/book/book.html:81 +msgid "View on OpenLibrary" +msgstr "Voir sur OpenLibrary" + +#: bookwyrm/templates/author/author.html:61 +#: bookwyrm/templates/book/book.html:84 +#, fuzzy +#| msgid "View on OpenLibrary" +msgid "View on Inventaire" +msgstr "Voir sur OpenLibrary" + +#: bookwyrm/templates/author/author.html:75 #, python-format msgid "Books by %(name)s" msgstr "Livres par %(name)s" +#: bookwyrm/templates/author/edit_author.html:5 +msgid "Edit Author:" +msgstr "Modifier l’auteur ou l’autrice :" + +#: bookwyrm/templates/author/edit_author.html:13 +#: bookwyrm/templates/book/edit_book.html:18 +msgid "Added:" +msgstr "AJouté :" + +#: bookwyrm/templates/author/edit_author.html:14 +#: bookwyrm/templates/book/edit_book.html:19 +msgid "Updated:" +msgstr "Mis à jour :" + +#: bookwyrm/templates/author/edit_author.html:15 +#: bookwyrm/templates/book/edit_book.html:20 +msgid "Last edited by:" +msgstr "Dernière modification par :" + +#: bookwyrm/templates/author/edit_author.html:31 +#: bookwyrm/templates/book/edit_book.html:90 +msgid "Metadata" +msgstr "Métadonnées" + +#: bookwyrm/templates/author/edit_author.html:32 +#: bookwyrm/templates/lists/form.html:8 +#: bookwyrm/templates/user/shelf/create_shelf_form.html:13 +#: bookwyrm/templates/user/shelf/edit_shelf_form.html:14 +msgid "Name:" +msgstr "Nom :" + +#: bookwyrm/templates/author/edit_author.html:40 +#: bookwyrm/templates/book/edit_book.html:128 +#: bookwyrm/templates/book/edit_book.html:165 +#, fuzzy +#| msgid "Separate multiple publishers with commas." +msgid "Separate multiple values with commas." +msgstr "Séparez plusieurs éditeurs par une virgule." + +#: bookwyrm/templates/author/edit_author.html:46 +msgid "Bio:" +msgstr "Bio :" + +#: bookwyrm/templates/author/edit_author.html:51 +msgid "Wikipedia link:" +msgstr "Wikipedia :" + +#: bookwyrm/templates/author/edit_author.html:57 +msgid "Birth date:" +msgstr "Date de naissance :" + +#: bookwyrm/templates/author/edit_author.html:65 +msgid "Death date:" +msgstr "Date de décès :" + +#: bookwyrm/templates/author/edit_author.html:73 +msgid "Author Identifiers" +msgstr "Identifiants de l’auteur ou autrice" + +#: bookwyrm/templates/author/edit_author.html:74 +#: bookwyrm/templates/book/edit_book.html:223 +msgid "Openlibrary key:" +msgstr "Clé Openlibrary :" + +#: bookwyrm/templates/author/edit_author.html:79 +#, fuzzy +#| msgid "View on OpenLibrary" +msgid "Inventaire ID:" +msgstr "Voir sur OpenLibrary" + +#: bookwyrm/templates/author/edit_author.html:84 +msgid "Librarything key:" +msgstr "Clé Librarything :" + +#: bookwyrm/templates/author/edit_author.html:89 +msgid "Goodreads key:" +msgstr "Clé Goodreads :" + +#: bookwyrm/templates/author/edit_author.html:98 +#: bookwyrm/templates/book/book.html:127 +#: bookwyrm/templates/book/edit_book.html:241 +#: bookwyrm/templates/lists/form.html:42 +#: bookwyrm/templates/preferences/edit_user.html:70 +#: bookwyrm/templates/settings/edit_server.html:68 +#: bookwyrm/templates/settings/federated_server.html:94 +#: bookwyrm/templates/settings/site.html:97 +#: bookwyrm/templates/snippets/readthrough.html:77 +#: 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/start_reading_modal.html:34 +#: bookwyrm/templates/user_admin/user_moderation_actions.html:38 +msgid "Save" +msgstr "Enregistrer" + +#: bookwyrm/templates/author/edit_author.html:99 +#: bookwyrm/templates/book/book.html:128 bookwyrm/templates/book/book.html:180 +#: bookwyrm/templates/book/cover_modal.html:32 +#: bookwyrm/templates/book/edit_book.html:242 +#: bookwyrm/templates/moderation/report_modal.html:34 +#: bookwyrm/templates/settings/federated_server.html:95 +#: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 +#: bookwyrm/templates/snippets/goal_form.html:32 +#: bookwyrm/templates/snippets/readthrough.html:78 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:43 +#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:35 +#: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28 +msgid "Cancel" +msgstr "Annuler" + #: bookwyrm/templates/book/book.html:33 #: bookwyrm/templates/discover/large-book.html:25 #: bookwyrm/templates/discover/small-book.html:19 @@ -169,16 +305,6 @@ msgstr "Ajouter une couverture" msgid "Failed to load cover" msgstr "La couverture n’a pu être chargée" -#: bookwyrm/templates/book/book.html:81 -msgid "View on OpenLibrary" -msgstr "Voir sur OpenLibrary" - -#: bookwyrm/templates/book/book.html:84 -#, fuzzy -#| msgid "View on OpenLibrary" -msgid "View on Inventaire" -msgstr "Voir sur OpenLibrary" - #: bookwyrm/templates/book/book.html:104 #, python-format msgid "(%(review_count)s review)" @@ -196,37 +322,6 @@ msgstr "Ajouter une description" msgid "Description:" msgstr "Description :" -#: bookwyrm/templates/book/book.html:127 -#: bookwyrm/templates/book/edit_book.html:249 -#: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 -#: bookwyrm/templates/preferences/edit_user.html:70 -#: bookwyrm/templates/settings/edit_server.html:68 -#: bookwyrm/templates/settings/federated_server.html:93 -#: bookwyrm/templates/settings/site.html:97 -#: bookwyrm/templates/snippets/readthrough.html:77 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:50 -#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:38 -#: bookwyrm/templates/user_admin/user_moderation_actions.html:38 -msgid "Save" -msgstr "Enregistrer" - -#: bookwyrm/templates/book/book.html:128 bookwyrm/templates/book/book.html:180 -#: bookwyrm/templates/book/cover_modal.html:32 -#: bookwyrm/templates/book/edit_book.html:250 -#: bookwyrm/templates/edit_author.html:79 -#: bookwyrm/templates/moderation/report_modal.html:34 -#: bookwyrm/templates/settings/federated_server.html:94 -#: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 -#: bookwyrm/templates/snippets/goal_form.html:32 -#: bookwyrm/templates/snippets/readthrough.html:78 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:51 -#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:39 -#: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28 -msgid "Cancel" -msgstr "Annuler" - #: bookwyrm/templates/book/book.html:137 #, python-format msgid "%(count)s editions" @@ -298,7 +393,7 @@ msgstr "Lieux" #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 #: bookwyrm/templates/search/layout.html:50 -#: bookwyrm/templates/user/layout.html:67 +#: bookwyrm/templates/user/layout.html:68 msgid "Lists" msgstr "Listes" @@ -308,7 +403,7 @@ msgstr "Ajouter à la liste" #: bookwyrm/templates/book/book.html:320 #: bookwyrm/templates/book/cover_modal.html:31 -#: bookwyrm/templates/lists/list.html:163 +#: bookwyrm/templates/lists/list.html:164 msgid "Add" msgstr "Ajouter" @@ -317,22 +412,22 @@ msgid "ISBN:" msgstr "ISBN :" #: bookwyrm/templates/book/book_identifiers.html:15 -#: bookwyrm/templates/book/edit_book.html:235 +#: bookwyrm/templates/book/edit_book.html:227 msgid "OCLC Number:" msgstr "Numéro OCLC :" #: bookwyrm/templates/book/book_identifiers.html:22 -#: bookwyrm/templates/book/edit_book.html:239 +#: bookwyrm/templates/book/edit_book.html:231 msgid "ASIN:" msgstr "ASIN :" #: bookwyrm/templates/book/cover_modal.html:17 -#: bookwyrm/templates/book/edit_book.html:187 +#: bookwyrm/templates/book/edit_book.html:179 msgid "Upload cover:" msgstr "Charger une couverture :" #: bookwyrm/templates/book/cover_modal.html:23 -#: bookwyrm/templates/book/edit_book.html:193 +#: bookwyrm/templates/book/edit_book.html:185 msgid "Load cover from url:" msgstr "Charger la couverture depuis une URL :" @@ -347,21 +442,6 @@ msgstr "Modifier « %(book_title)s »" msgid "Add Book" msgstr "Ajouter un livre" -#: bookwyrm/templates/book/edit_book.html:18 -#: bookwyrm/templates/edit_author.html:13 -msgid "Added:" -msgstr "AJouté :" - -#: bookwyrm/templates/book/edit_book.html:19 -#: bookwyrm/templates/edit_author.html:14 -msgid "Updated:" -msgstr "Mis à jour :" - -#: bookwyrm/templates/book/edit_book.html:20 -#: bookwyrm/templates/edit_author.html:15 -msgid "Last edited by:" -msgstr "Dernière modification par :" - #: bookwyrm/templates/book/edit_book.html:40 msgid "Confirm Book Info" msgstr "Confirmer les informations de ce livre" @@ -403,11 +483,6 @@ msgstr "Confirmer" msgid "Back" msgstr "Retour" -#: bookwyrm/templates/book/edit_book.html:90 -#: bookwyrm/templates/edit_author.html:31 -msgid "Metadata" -msgstr "Métadonnées" - #: bookwyrm/templates/book/edit_book.html:92 msgid "Title:" msgstr "Titre :" @@ -428,76 +503,67 @@ msgstr "Numéro dans la série :" msgid "Publisher:" msgstr "Éditeur :" -#: bookwyrm/templates/book/edit_book.html:128 -msgid "Separate multiple publishers with commas." -msgstr "Séparez plusieurs éditeurs par une virgule." - #: bookwyrm/templates/book/edit_book.html:135 msgid "First published date:" msgstr "Première date de publication :" -#: bookwyrm/templates/book/edit_book.html:147 +#: bookwyrm/templates/book/edit_book.html:143 msgid "Published date:" msgstr "Date de publication :" -#: bookwyrm/templates/book/edit_book.html:160 +#: bookwyrm/templates/book/edit_book.html:152 msgid "Authors" msgstr "Auteurs ou autrices" -#: bookwyrm/templates/book/edit_book.html:166 +#: bookwyrm/templates/book/edit_book.html:158 #, python-format msgid "Remove %(name)s" msgstr "Supprimer %(name)s" -#: bookwyrm/templates/book/edit_book.html:171 +#: bookwyrm/templates/book/edit_book.html:163 msgid "Add Authors:" msgstr "Ajouter des auteurs ou autrices :" -#: bookwyrm/templates/book/edit_book.html:172 +#: bookwyrm/templates/book/edit_book.html:164 msgid "John Doe, Jane Smith" msgstr "Claude Dupont, Dominique Durand" -#: bookwyrm/templates/book/edit_book.html:178 -#: bookwyrm/templates/user/shelf/shelf.html:76 +#: bookwyrm/templates/book/edit_book.html:170 +#: bookwyrm/templates/user/shelf/shelf.html:77 msgid "Cover" msgstr "Couverture" -#: bookwyrm/templates/book/edit_book.html:206 +#: bookwyrm/templates/book/edit_book.html:198 msgid "Physical Properties" msgstr "Propriétés physiques" -#: bookwyrm/templates/book/edit_book.html:207 +#: bookwyrm/templates/book/edit_book.html:199 #: bookwyrm/templates/book/format_filter.html:5 msgid "Format:" msgstr "Format :" -#: bookwyrm/templates/book/edit_book.html:215 +#: bookwyrm/templates/book/edit_book.html:207 msgid "Pages:" msgstr "Pages :" -#: bookwyrm/templates/book/edit_book.html:222 +#: bookwyrm/templates/book/edit_book.html:214 msgid "Book Identifiers" msgstr "Identifiants du livre" -#: bookwyrm/templates/book/edit_book.html:223 +#: bookwyrm/templates/book/edit_book.html:215 msgid "ISBN 13:" msgstr "ISBN 13 :" -#: bookwyrm/templates/book/edit_book.html:227 +#: bookwyrm/templates/book/edit_book.html:219 msgid "ISBN 10:" msgstr "ISBN 10 :" -#: bookwyrm/templates/book/edit_book.html:231 -#: bookwyrm/templates/edit_author.html:59 -msgid "Openlibrary key:" -msgstr "Clé Openlibrary :" - -#: bookwyrm/templates/book/editions.html:5 +#: bookwyrm/templates/book/editions.html:4 #, python-format msgid "Editions of %(book_title)s" msgstr "Éditions de %(book_title)s" -#: bookwyrm/templates/book/editions.html:9 +#: bookwyrm/templates/book/editions.html:8 #, python-format msgid "Editions of \"%(work_title)s\"" msgstr "Éditions de « %(work_title)s »" @@ -548,7 +614,7 @@ msgstr "Publié par %(publisher)s." #: bookwyrm/templates/components/inline_form.html:8 #: bookwyrm/templates/components/modal.html:11 -#: bookwyrm/templates/feed/feed_layout.html:70 +#: bookwyrm/templates/feed/feed_layout.html:69 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 #: bookwyrm/templates/search/book.html:32 @@ -603,23 +669,23 @@ msgstr "Suggéré" msgid "Recently active" msgstr "Actif récemment" -#: bookwyrm/templates/directory/user_card.html:32 +#: bookwyrm/templates/directory/user_card.html:33 msgid "follower you follow" msgid_plural "followers you follow" msgstr[0] "compte auquel vous êtes abonné(e)" msgstr[1] "comptes auxquels vous êtes abonné(e)" -#: bookwyrm/templates/directory/user_card.html:39 +#: bookwyrm/templates/directory/user_card.html:40 msgid "book on your shelves" msgid_plural "books on your shelves" msgstr[0] "livre sur vos étagères" msgstr[1] "livres sur vos étagères" -#: bookwyrm/templates/directory/user_card.html:47 +#: bookwyrm/templates/directory/user_card.html:48 msgid "posts" msgstr "publications" -#: bookwyrm/templates/directory/user_card.html:53 +#: bookwyrm/templates/directory/user_card.html:54 msgid "last active" msgstr "dernière activité" @@ -705,44 +771,6 @@ msgstr "Valider" msgid "Your Account" msgstr "Votre compte" -#: bookwyrm/templates/edit_author.html:5 -msgid "Edit Author:" -msgstr "Modifier l’auteur ou l’autrice :" - -#: bookwyrm/templates/edit_author.html:32 bookwyrm/templates/lists/form.html:8 -#: bookwyrm/templates/user/shelf/create_shelf_form.html:13 -#: bookwyrm/templates/user/shelf/edit_shelf_form.html:14 -msgid "Name:" -msgstr "Nom :" - -#: bookwyrm/templates/edit_author.html:37 -msgid "Bio:" -msgstr "Bio :" - -#: bookwyrm/templates/edit_author.html:42 -msgid "Wikipedia link:" -msgstr "Wikipedia :" - -#: bookwyrm/templates/edit_author.html:47 -msgid "Birth date:" -msgstr "Date de naissance :" - -#: bookwyrm/templates/edit_author.html:52 -msgid "Death date:" -msgstr "Date de décès :" - -#: bookwyrm/templates/edit_author.html:58 -msgid "Author Identifiers" -msgstr "Identifiants de l’auteur ou autrice" - -#: bookwyrm/templates/edit_author.html:64 -msgid "Librarything key:" -msgstr "Clé Librarything :" - -#: bookwyrm/templates/edit_author.html:69 -msgid "Goodreads key:" -msgstr "Clé Goodreads :" - #: bookwyrm/templates/email/html_layout.html:15 #: bookwyrm/templates/email/text_layout.html:2 msgid "Hi there," @@ -823,76 +851,76 @@ msgstr "Tous les messages" msgid "You have no messages right now." msgstr "Vous n’avez aucun message pour l’instant." -#: bookwyrm/templates/feed/feed.html:9 +#: bookwyrm/templates/feed/feed.html:8 msgid "Home Timeline" msgstr "Mon fil d’actualité" -#: bookwyrm/templates/feed/feed.html:11 +#: bookwyrm/templates/feed/feed.html:10 msgid "Local Timeline" msgstr "Fil d’actualité local" -#: bookwyrm/templates/feed/feed.html:13 +#: bookwyrm/templates/feed/feed.html:12 msgid "Federated Timeline" msgstr "Fil d’actualité des instances fédérées" -#: bookwyrm/templates/feed/feed.html:19 +#: bookwyrm/templates/feed/feed.html:18 msgid "Home" msgstr "Accueil" -#: bookwyrm/templates/feed/feed.html:22 +#: bookwyrm/templates/feed/feed.html:21 msgid "Local" msgstr "Local" -#: bookwyrm/templates/feed/feed.html:25 +#: bookwyrm/templates/feed/feed.html:24 #: bookwyrm/templates/settings/edit_server.html:40 msgid "Federated" msgstr "Fédéré" -#: bookwyrm/templates/feed/feed.html:33 +#: bookwyrm/templates/feed/feed.html:32 #, python-format msgid "load 0 unread status(es)" msgstr "charger le(s) 0 statut(s) non lu(s)" -#: bookwyrm/templates/feed/feed.html:48 +#: bookwyrm/templates/feed/feed.html:47 msgid "There aren't any activities right now! Try following a user to get started" msgstr "Aucune activité pour l’instant ! Abonnez‑vous à quelqu’un pour commencer" -#: bookwyrm/templates/feed/feed.html:56 +#: bookwyrm/templates/feed/feed.html:55 #: bookwyrm/templates/get_started/users.html:6 msgid "Who to follow" msgstr "À qui s’abonner" -#: bookwyrm/templates/feed/feed_layout.html:5 +#: bookwyrm/templates/feed/feed_layout.html:4 msgid "Updates" msgstr "Mises à jour" -#: bookwyrm/templates/feed/feed_layout.html:11 +#: bookwyrm/templates/feed/feed_layout.html:10 #: bookwyrm/templates/layout.html:59 #: bookwyrm/templates/user/shelf/books_header.html:3 msgid "Your books" msgstr "Vos livres" -#: bookwyrm/templates/feed/feed_layout.html:13 +#: bookwyrm/templates/feed/feed_layout.html:12 msgid "There are no books here right now! Try searching for a book to get started" msgstr "Aucun livre ici pour l’instant ! Cherchez un livre pour commencer" -#: bookwyrm/templates/feed/feed_layout.html:24 -#: bookwyrm/templates/user/shelf/shelf.html:28 +#: bookwyrm/templates/feed/feed_layout.html:23 +#: bookwyrm/templates/user/shelf/shelf.html:29 msgid "To Read" msgstr "À lire" -#: bookwyrm/templates/feed/feed_layout.html:25 -#: bookwyrm/templates/user/shelf/shelf.html:28 +#: bookwyrm/templates/feed/feed_layout.html:24 +#: bookwyrm/templates/user/shelf/shelf.html:29 msgid "Currently Reading" msgstr "En train de lire" -#: bookwyrm/templates/feed/feed_layout.html:26 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:11 -#: bookwyrm/templates/user/shelf/shelf.html:28 +#: bookwyrm/templates/feed/feed_layout.html:25 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:13 +#: bookwyrm/templates/user/shelf/shelf.html:29 msgid "Read" msgstr "Lu" -#: bookwyrm/templates/feed/feed_layout.html:88 bookwyrm/templates/goal.html:26 +#: bookwyrm/templates/feed/feed_layout.html:87 bookwyrm/templates/goal.html:26 #: bookwyrm/templates/snippets/goal_card.html:6 #, python-format msgid "%(year)s Reading Goal" @@ -922,7 +950,7 @@ msgid "What are you reading?" msgstr "Que lisez‑vous ?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/lists/list.html:119 +#: bookwyrm/templates/lists/list.html:120 msgid "Search for a book" msgstr "Chercher un livre" @@ -942,7 +970,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:19 #: bookwyrm/templates/layout.html:38 bookwyrm/templates/layout.html:39 -#: bookwyrm/templates/lists/list.html:123 +#: bookwyrm/templates/lists/list.html:124 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -958,7 +986,7 @@ msgid "Popular on %(site_name)s" msgstr "Populaire sur %(site_name)s" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:136 +#: bookwyrm/templates/lists/list.html:137 msgid "No books found" msgstr "Aucun livre trouvé" @@ -1078,95 +1106,95 @@ msgstr "Importer des livres" msgid "Data source:" msgstr "Source de données :" -#: bookwyrm/templates/import.html:29 +#: bookwyrm/templates/import.html:32 msgid "Data file:" msgstr "Fichier de données :" -#: bookwyrm/templates/import.html:37 +#: bookwyrm/templates/import.html:40 msgid "Include reviews" msgstr "Importer les critiques" -#: bookwyrm/templates/import.html:42 +#: bookwyrm/templates/import.html:45 msgid "Privacy setting for imported reviews:" msgstr "Confidentialité des critiques importées :" -#: bookwyrm/templates/import.html:48 +#: bookwyrm/templates/import.html:51 #: bookwyrm/templates/settings/server_blocklist.html:64 msgid "Import" msgstr "Importer" -#: bookwyrm/templates/import.html:53 +#: bookwyrm/templates/import.html:56 msgid "Recent Imports" msgstr "Importations récentes" -#: bookwyrm/templates/import.html:55 +#: bookwyrm/templates/import.html:58 msgid "No recent imports" msgstr "Aucune importation récente" -#: bookwyrm/templates/import_status.html:6 -#: bookwyrm/templates/import_status.html:10 +#: bookwyrm/templates/import_status.html:5 +#: bookwyrm/templates/import_status.html:9 msgid "Import Status" msgstr "Statut de l’importation" -#: bookwyrm/templates/import_status.html:13 +#: bookwyrm/templates/import_status.html:12 msgid "Import started:" msgstr "Importation en cours :" -#: bookwyrm/templates/import_status.html:17 +#: bookwyrm/templates/import_status.html:16 msgid "Import completed:" msgstr "Importation terminé :" -#: bookwyrm/templates/import_status.html:20 +#: bookwyrm/templates/import_status.html:19 msgid "TASK FAILED" msgstr "la tâche a échoué" -#: bookwyrm/templates/import_status.html:26 +#: bookwyrm/templates/import_status.html:25 msgid "Import still in progress." msgstr "L’importation est toujours en cours" -#: bookwyrm/templates/import_status.html:28 +#: bookwyrm/templates/import_status.html:27 msgid "(Hit reload to update!)" msgstr "(Rechargez la page pour mettre à jour !" -#: bookwyrm/templates/import_status.html:35 +#: bookwyrm/templates/import_status.html:34 msgid "Failed to load" msgstr "Items non importés" -#: bookwyrm/templates/import_status.html:44 +#: bookwyrm/templates/import_status.html:43 #, python-format 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 n’ayant pu être importés." -#: bookwyrm/templates/import_status.html:79 +#: bookwyrm/templates/import_status.html:78 msgid "Select all" msgstr "Tout sélectionner" -#: bookwyrm/templates/import_status.html:82 +#: bookwyrm/templates/import_status.html:81 msgid "Retry items" msgstr "Essayer d’importer les items sélectionnés de nouveau" -#: bookwyrm/templates/import_status.html:108 +#: bookwyrm/templates/import_status.html:107 msgid "Successfully imported" msgstr "Importation réussie" -#: bookwyrm/templates/import_status.html:112 +#: bookwyrm/templates/import_status.html:111 msgid "Book" msgstr "Livre" -#: bookwyrm/templates/import_status.html:115 -#: bookwyrm/templates/snippets/create_status_form.html:10 -#: bookwyrm/templates/user/shelf/shelf.html:77 -#: bookwyrm/templates/user/shelf/shelf.html:95 +#: bookwyrm/templates/import_status.html:114 +#: bookwyrm/templates/snippets/create_status_form.html:13 +#: bookwyrm/templates/user/shelf/shelf.html:78 +#: bookwyrm/templates/user/shelf/shelf.html:98 msgid "Title" msgstr "Titre" -#: bookwyrm/templates/import_status.html:118 -#: bookwyrm/templates/user/shelf/shelf.html:78 -#: bookwyrm/templates/user/shelf/shelf.html:98 +#: bookwyrm/templates/import_status.html:117 +#: bookwyrm/templates/user/shelf/shelf.html:79 +#: bookwyrm/templates/user/shelf/shelf.html:101 msgid "Author" msgstr "Auteur ou autrice" -#: bookwyrm/templates/import_status.html:141 +#: bookwyrm/templates/import_status.html:140 msgid "Imported" msgstr "Importé" @@ -1277,7 +1305,8 @@ msgid "Support %(site_name)s on % msgstr "Soutenez %(site_name)s avec %(support_title)s" #: bookwyrm/templates/layout.html:217 -msgid "BookWyrm is open source software. You can contribute or report issues on GitHub." +#| msgid "BookWyrm is open source software. You can contribute or report issues on GitHub." +msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "BookWyrm est un logiciel libre. Vous pouvez contribuer ou faire des rapports de bogues via GitHub." #: bookwyrm/templates/lists/create_form.html:5 @@ -1320,7 +1349,7 @@ msgid "Discard" msgstr "Rejeter" #: bookwyrm/templates/lists/edit_form.html:5 -#: bookwyrm/templates/lists/list_layout.html:18 +#: bookwyrm/templates/lists/list_layout.html:17 msgid "Edit List" msgstr "Modifier la liste" @@ -1354,76 +1383,76 @@ msgstr "Ouverte" msgid "Anyone can add books to this list" msgstr "N’importe qui peut suggérer des livres" -#: bookwyrm/templates/lists/list.html:19 +#: bookwyrm/templates/lists/list.html:20 msgid "You successfully suggested a book for this list!" msgstr "" -#: bookwyrm/templates/lists/list.html:21 +#: bookwyrm/templates/lists/list.html:22 #, fuzzy #| msgid "Anyone can add books to this list" msgid "You successfully added a book to this list!" msgstr "N’importe qui peut suggérer des livres" -#: bookwyrm/templates/lists/list.html:27 +#: bookwyrm/templates/lists/list.html:28 msgid "This list is currently empty" msgstr "Cette liste est vide actuellement" -#: bookwyrm/templates/lists/list.html:64 +#: bookwyrm/templates/lists/list.html:65 #, python-format msgid "Added by %(username)s" msgstr "Ajoutée par %(username)s" -#: bookwyrm/templates/lists/list.html:76 +#: bookwyrm/templates/lists/list.html:77 #, fuzzy #| msgid "Sent" msgid "Set" msgstr "Envoyé(e)s" -#: bookwyrm/templates/lists/list.html:79 +#: bookwyrm/templates/lists/list.html:80 #, fuzzy #| msgid "List curation:" msgid "List position" msgstr "Modération de la liste :" -#: bookwyrm/templates/lists/list.html:85 +#: bookwyrm/templates/lists/list.html:86 #: bookwyrm/templates/snippets/shelf_selector.html:26 msgid "Remove" msgstr "Supprimer" -#: bookwyrm/templates/lists/list.html:98 bookwyrm/templates/lists/list.html:110 +#: bookwyrm/templates/lists/list.html:99 bookwyrm/templates/lists/list.html:111 #, fuzzy #| msgid "Your Lists" msgid "Sort List" msgstr "Vos listes" -#: bookwyrm/templates/lists/list.html:104 +#: bookwyrm/templates/lists/list.html:105 #, fuzzy #| msgid "Directory" msgid "Direction" msgstr "Répertoire" -#: bookwyrm/templates/lists/list.html:115 +#: bookwyrm/templates/lists/list.html:116 msgid "Add Books" msgstr "Ajouter des livres" -#: bookwyrm/templates/lists/list.html:115 +#: bookwyrm/templates/lists/list.html:116 msgid "Suggest Books" msgstr "Suggérer des livres" -#: bookwyrm/templates/lists/list.html:124 +#: bookwyrm/templates/lists/list.html:125 msgid "search" msgstr "Chercher" -#: bookwyrm/templates/lists/list.html:130 +#: bookwyrm/templates/lists/list.html:131 msgid "Clear search" msgstr "Vider la requête" -#: bookwyrm/templates/lists/list.html:135 +#: bookwyrm/templates/lists/list.html:136 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "Aucun livre trouvé pour la requête « %(query)s »" -#: bookwyrm/templates/lists/list.html:163 +#: bookwyrm/templates/lists/list.html:164 msgid "Suggest" msgstr "Suggérer" @@ -1448,36 +1477,36 @@ msgstr "Contacter un administrateur pour obtenir une invitation" msgid "More about this site" msgstr "En savoir plus sur ce site" +#: bookwyrm/templates/moderation/report.html:5 #: bookwyrm/templates/moderation/report.html:6 -#: bookwyrm/templates/moderation/report.html:7 #: bookwyrm/templates/moderation/report_preview.html:6 #, python-format msgid "Report #%(report_id)s: %(username)s" msgstr "Signalement #%(report_id)s : %(username)s" -#: bookwyrm/templates/moderation/report.html:11 +#: bookwyrm/templates/moderation/report.html:10 msgid "Back to reports" msgstr "Retour aux signalements" -#: bookwyrm/templates/moderation/report.html:23 +#: bookwyrm/templates/moderation/report.html:22 msgid "Moderator Comments" msgstr "Commentaires de l’équipe de modération" -#: bookwyrm/templates/moderation/report.html:41 +#: bookwyrm/templates/moderation/report.html:40 #: bookwyrm/templates/snippets/create_status.html:28 -#: bookwyrm/templates/snippets/create_status_form.html:63 +#: bookwyrm/templates/snippets/create_status_form.html:66 msgid "Comment" msgstr "Commentaire" -#: bookwyrm/templates/moderation/report.html:46 +#: bookwyrm/templates/moderation/report.html:45 msgid "Reported statuses" msgstr "Statuts signalés" -#: bookwyrm/templates/moderation/report.html:48 +#: bookwyrm/templates/moderation/report.html:47 msgid "No statuses reported" msgstr "Aucun statut signalé" -#: bookwyrm/templates/moderation/report.html:54 +#: bookwyrm/templates/moderation/report.html:53 #, fuzzy #| msgid "Statuses has been deleted" msgid "Status has been deleted" @@ -1757,7 +1786,7 @@ msgstr "Chercher" #: bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 -#: bookwyrm/templates/user/layout.html:73 +#: bookwyrm/templates/user/layout.html:74 msgid "Books" msgstr "Livres" @@ -1832,7 +1861,7 @@ msgid "Add server" msgstr "Ajouter une couverture" #: bookwyrm/templates/settings/edit_server.html:7 -#: bookwyrm/templates/settings/federated_server.html:12 +#: bookwyrm/templates/settings/federated_server.html:13 #: bookwyrm/templates/settings/server_blocklist.html:7 msgid "Back to server list" msgstr "Retour à la liste des serveurs" @@ -1851,26 +1880,26 @@ msgid "Instance:" msgstr "Nom de l’instance :" #: bookwyrm/templates/settings/edit_server.html:37 -#: bookwyrm/templates/settings/federated_server.html:29 +#: bookwyrm/templates/settings/federated_server.html:30 #: bookwyrm/templates/user_admin/user_info.html:34 msgid "Status:" msgstr "Statut :" #: bookwyrm/templates/settings/edit_server.html:41 -#: bookwyrm/templates/settings/federated_server.html:9 +#: bookwyrm/templates/settings/federated_server.html:10 #, fuzzy #| msgid "Block" msgid "Blocked" msgstr "Bloquer" #: bookwyrm/templates/settings/edit_server.html:48 -#: bookwyrm/templates/settings/federated_server.html:21 +#: bookwyrm/templates/settings/federated_server.html:22 #: bookwyrm/templates/user_admin/user_info.html:26 msgid "Software:" msgstr "Logiciel :" #: bookwyrm/templates/settings/edit_server.html:55 -#: bookwyrm/templates/settings/federated_server.html:25 +#: bookwyrm/templates/settings/federated_server.html:26 #: bookwyrm/templates/user_admin/user_info.html:30 msgid "Version:" msgstr "Description :" @@ -1879,71 +1908,71 @@ msgstr "Description :" msgid "Notes:" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:18 +#: bookwyrm/templates/settings/federated_server.html:19 msgid "Details" msgstr "Détails" -#: bookwyrm/templates/settings/federated_server.html:36 -#: bookwyrm/templates/user/layout.html:55 +#: bookwyrm/templates/settings/federated_server.html:37 +#: bookwyrm/templates/user/layout.html:56 msgid "Activity" msgstr "Activité" -#: bookwyrm/templates/settings/federated_server.html:39 +#: bookwyrm/templates/settings/federated_server.html:40 msgid "Users:" msgstr "Comptes :" -#: bookwyrm/templates/settings/federated_server.html:42 -#: bookwyrm/templates/settings/federated_server.html:49 +#: bookwyrm/templates/settings/federated_server.html:43 +#: bookwyrm/templates/settings/federated_server.html:50 msgid "View all" msgstr "Voir tous" -#: bookwyrm/templates/settings/federated_server.html:46 +#: bookwyrm/templates/settings/federated_server.html:47 msgid "Reports:" msgstr "Signalements :" -#: bookwyrm/templates/settings/federated_server.html:53 +#: bookwyrm/templates/settings/federated_server.html:54 msgid "Followed by us:" msgstr "Suivi par nous :" -#: bookwyrm/templates/settings/federated_server.html:59 +#: bookwyrm/templates/settings/federated_server.html:60 msgid "Followed by them:" msgstr "Suivi par eux :" -#: bookwyrm/templates/settings/federated_server.html:65 +#: bookwyrm/templates/settings/federated_server.html:66 msgid "Blocked by us:" msgstr "Bloqués par nous :" -#: bookwyrm/templates/settings/federated_server.html:77 +#: bookwyrm/templates/settings/federated_server.html:78 #: bookwyrm/templates/user_admin/user_info.html:39 msgid "Notes" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:80 +#: bookwyrm/templates/settings/federated_server.html:81 #, fuzzy #| msgid "Edit Book" msgid "Edit" msgstr "Modifier le livre" -#: bookwyrm/templates/settings/federated_server.html:100 +#: bookwyrm/templates/settings/federated_server.html:101 #: bookwyrm/templates/user_admin/user_moderation_actions.html:3 msgid "Actions" msgstr "Actions" -#: bookwyrm/templates/settings/federated_server.html:104 +#: bookwyrm/templates/settings/federated_server.html:105 #: bookwyrm/templates/snippets/block_button.html:5 msgid "Block" msgstr "Bloquer" -#: bookwyrm/templates/settings/federated_server.html:105 +#: bookwyrm/templates/settings/federated_server.html:106 msgid "All users from this instance will be deactivated." msgstr "" -#: bookwyrm/templates/settings/federated_server.html:110 +#: bookwyrm/templates/settings/federated_server.html:111 #: bookwyrm/templates/snippets/block_button.html:10 msgid "Un-block" msgstr "Débloquer" -#: bookwyrm/templates/settings/federated_server.html:111 +#: bookwyrm/templates/settings/federated_server.html:112 msgid "All users from this instance will be re-activated." msgstr "" @@ -2154,7 +2183,7 @@ msgstr "Autoriser les demandes d’invitation :" msgid "Registration closed text:" msgstr "Texte affiché lorsque les enregistrements sont clos :" -#: bookwyrm/templates/snippets/book_cover.html:32 +#: bookwyrm/templates/snippets/book_cover.html:31 msgid "No cover" msgstr "Aucune couverture" @@ -2163,15 +2192,15 @@ msgstr "Aucune couverture" msgid "%(title)s by " msgstr "%(title)s par " -#: bookwyrm/templates/snippets/boost_button.html:8 #: bookwyrm/templates/snippets/boost_button.html:9 +#: bookwyrm/templates/snippets/boost_button.html:10 #, fuzzy #| msgid "boosted" msgid "Boost" msgstr "partagé" -#: bookwyrm/templates/snippets/boost_button.html:15 #: bookwyrm/templates/snippets/boost_button.html:16 +#: bookwyrm/templates/snippets/boost_button.html:17 #, fuzzy #| msgid "Un-boost status" msgid "Un-boost" @@ -2193,66 +2222,66 @@ msgstr "Critique" msgid "Quote" msgstr "Citation" -#: bookwyrm/templates/snippets/create_status_form.html:20 +#: bookwyrm/templates/snippets/create_status_form.html:23 msgid "Comment:" msgstr "Commentaire :" -#: bookwyrm/templates/snippets/create_status_form.html:22 +#: bookwyrm/templates/snippets/create_status_form.html:25 msgid "Quote:" msgstr "Citation :" -#: bookwyrm/templates/snippets/create_status_form.html:24 +#: bookwyrm/templates/snippets/create_status_form.html:27 msgid "Review:" msgstr "Critique :" -#: bookwyrm/templates/snippets/create_status_form.html:53 -#: bookwyrm/templates/snippets/status/layout.html:30 +#: bookwyrm/templates/snippets/create_status_form.html:56 +#: bookwyrm/templates/snippets/status/layout.html:29 +#: bookwyrm/templates/snippets/status/layout.html:47 #: bookwyrm/templates/snippets/status/layout.html:48 -#: bookwyrm/templates/snippets/status/layout.html:49 msgid "Reply" msgstr "Répondre" -#: bookwyrm/templates/snippets/create_status_form.html:53 +#: bookwyrm/templates/snippets/create_status_form.html:56 #, fuzzy #| msgid "Footer Content" msgid "Content" msgstr "Contenu du pied de page" -#: bookwyrm/templates/snippets/create_status_form.html:77 +#: bookwyrm/templates/snippets/create_status_form.html:80 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:16 msgid "Progress:" msgstr "Progression :" -#: bookwyrm/templates/snippets/create_status_form.html:85 -#: bookwyrm/templates/snippets/readthrough_form.html:26 +#: bookwyrm/templates/snippets/create_status_form.html:88 +#: bookwyrm/templates/snippets/readthrough_form.html:22 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30 msgid "pages" msgstr "pages" -#: bookwyrm/templates/snippets/create_status_form.html:86 -#: bookwyrm/templates/snippets/readthrough_form.html:27 +#: bookwyrm/templates/snippets/create_status_form.html:89 +#: bookwyrm/templates/snippets/readthrough_form.html:23 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31 msgid "percent" msgstr "pourcent" -#: bookwyrm/templates/snippets/create_status_form.html:92 +#: bookwyrm/templates/snippets/create_status_form.html:95 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:36 #, python-format msgid "of %(pages)s pages" msgstr "sur %(pages)s pages" -#: bookwyrm/templates/snippets/create_status_form.html:107 +#: bookwyrm/templates/snippets/create_status_form.html:110 msgid "Include spoiler alert" msgstr "Afficher une alerte spoiler" -#: bookwyrm/templates/snippets/create_status_form.html:114 +#: bookwyrm/templates/snippets/create_status_form.html:117 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:19 msgid "Private" msgstr "Privé" -#: bookwyrm/templates/snippets/create_status_form.html:125 +#: bookwyrm/templates/snippets/create_status_form.html:128 msgid "Post" msgstr "Publier" @@ -2266,17 +2295,17 @@ msgid "You are deleting this readthrough and its %(count)s associated progress u msgstr "Vous avez supprimé ce résumé et ses %(count)s progressions associées." #: bookwyrm/templates/snippets/delete_readthrough_modal.html:15 -#: bookwyrm/templates/snippets/follow_request_buttons.html:13 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 msgid "Delete" msgstr "Supprimer" -#: bookwyrm/templates/snippets/fav_button.html:7 #: bookwyrm/templates/snippets/fav_button.html:9 +#: bookwyrm/templates/snippets/fav_button.html:11 msgid "Like" msgstr "" -#: bookwyrm/templates/snippets/fav_button.html:15 -#: bookwyrm/templates/snippets/fav_button.html:16 +#: bookwyrm/templates/snippets/fav_button.html:17 +#: bookwyrm/templates/snippets/fav_button.html:18 #, fuzzy #| msgid "Un-like status" msgid "Un-like" @@ -2310,11 +2339,11 @@ msgstr "Annuler la demande d’abonnement" msgid "Unfollow" msgstr "Se désabonner" -#: bookwyrm/templates/snippets/follow_request_buttons.html:8 +#: bookwyrm/templates/snippets/follow_request_buttons.html:7 msgid "Accept" msgstr "Accepter" -#: bookwyrm/templates/snippets/form_rate_stars.html:20 +#: bookwyrm/templates/snippets/form_rate_stars.html:19 #: bookwyrm/templates/snippets/stars.html:13 msgid "No rating" msgstr "Aucune note" @@ -2363,8 +2392,8 @@ msgid "Goal privacy:" msgstr "Confidentialité du défi :" #: bookwyrm/templates/snippets/goal_form.html:26 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:45 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:33 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:37 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:29 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:20 msgid "Post to feed" msgstr "Publier sur le fil d’actualité" @@ -2475,12 +2504,12 @@ msgstr "Supprimer ces dates de lecture" msgid "Started reading" msgstr "Lecture commencée le" -#: bookwyrm/templates/snippets/readthrough_form.html:18 +#: bookwyrm/templates/snippets/readthrough_form.html:14 msgid "Progress" msgstr "Progression" -#: bookwyrm/templates/snippets/readthrough_form.html:34 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:29 +#: bookwyrm/templates/snippets/readthrough_form.html:30 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:25 msgid "Finished reading" msgstr "Lecture terminée le" @@ -2488,27 +2517,27 @@ msgstr "Lecture terminée le" msgid "Sign Up" msgstr "S’enregistrer" -#: bookwyrm/templates/snippets/report_button.html:5 +#: bookwyrm/templates/snippets/report_button.html:6 msgid "Report" msgstr "Signaler" #: bookwyrm/templates/snippets/rss_title.html:5 -#: bookwyrm/templates/snippets/status/status_header.html:34 +#: bookwyrm/templates/snippets/status/status_header.html:35 msgid "rated" msgstr "a noté" #: bookwyrm/templates/snippets/rss_title.html:7 -#: bookwyrm/templates/snippets/status/status_header.html:36 +#: bookwyrm/templates/snippets/status/status_header.html:37 msgid "reviewed" msgstr "a écrit une critique de" #: bookwyrm/templates/snippets/rss_title.html:9 -#: bookwyrm/templates/snippets/status/status_header.html:38 +#: bookwyrm/templates/snippets/status/status_header.html:39 msgid "commented on" msgstr "a commenté" #: bookwyrm/templates/snippets/rss_title.html:11 -#: bookwyrm/templates/snippets/status/status_header.html:40 +#: bookwyrm/templates/snippets/status/status_header.html:41 msgid "quoted" msgstr "a cité" @@ -2526,7 +2555,7 @@ msgid "Finish \"%(book_title)s\"" msgstr "Terminer « %(book_title)s »" #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:5 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:34 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:36 msgid "Update progress" msgstr "Progression de la mise à jour" @@ -2534,20 +2563,20 @@ msgstr "Progression de la mise à jour" msgid "More shelves" msgstr "Plus d’étagères" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:8 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:10 msgid "Start reading" msgstr "Commencer la lecture" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:13 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:15 msgid "Finish reading" msgstr "Terminer la lecture" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:16 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:18 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:26 msgid "Want to read" msgstr "Je veux le lire" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:45 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:47 #, python-format msgid "Remove from %(name)s" msgstr "Retirer de %(name)s" @@ -2562,40 +2591,40 @@ msgstr "Commencer « %(book_title)s »" msgid "Want to Read \"%(book_title)s\"" msgstr "A envie de lire « %(book_title)s »" -#: bookwyrm/templates/snippets/status/content_status.html:70 -#: bookwyrm/templates/snippets/trimmed_text.html:14 +#: bookwyrm/templates/snippets/status/content_status.html:71 +#: bookwyrm/templates/snippets/trimmed_text.html:15 msgid "Show more" msgstr "Déplier" -#: bookwyrm/templates/snippets/status/content_status.html:85 -#: bookwyrm/templates/snippets/trimmed_text.html:29 +#: bookwyrm/templates/snippets/status/content_status.html:86 +#: bookwyrm/templates/snippets/trimmed_text.html:30 msgid "Show less" msgstr "Replier" -#: bookwyrm/templates/snippets/status/content_status.html:115 +#: bookwyrm/templates/snippets/status/content_status.html:116 msgid "Open image in new window" msgstr "Ouvrir l’image dans une nouvelle fenêtre" -#: bookwyrm/templates/snippets/status/layout.html:22 +#: bookwyrm/templates/snippets/status/layout.html:21 #: bookwyrm/templates/snippets/status/status_options.html:17 msgid "Delete status" msgstr "Supprimer le statut" +#: bookwyrm/templates/snippets/status/layout.html:51 #: bookwyrm/templates/snippets/status/layout.html:52 -#: bookwyrm/templates/snippets/status/layout.html:53 msgid "Boost status" msgstr "Partager le statut" +#: bookwyrm/templates/snippets/status/layout.html:55 #: bookwyrm/templates/snippets/status/layout.html:56 -#: bookwyrm/templates/snippets/status/layout.html:57 msgid "Like status" msgstr "Ajouter le statut aux favoris" -#: bookwyrm/templates/snippets/status/status.html:9 +#: bookwyrm/templates/snippets/status/status.html:10 msgid "boosted" msgstr "partagé" -#: bookwyrm/templates/snippets/status/status_header.html:44 +#: bookwyrm/templates/snippets/status/status_header.html:45 #, python-format msgid "replied to %(username)s's status" msgstr "a répondu au statut de %(username)s" @@ -2627,15 +2656,15 @@ msgstr "Trié par ordre croissant" msgid "Sorted descending" msgstr "Trié par ordre décroissant" -#: bookwyrm/templates/user/layout.html:12 bookwyrm/templates/user/user.html:10 +#: bookwyrm/templates/user/layout.html:13 bookwyrm/templates/user/user.html:10 msgid "User Profile" msgstr "Profil" -#: bookwyrm/templates/user/layout.html:36 +#: bookwyrm/templates/user/layout.html:37 msgid "Follow Requests" msgstr "Demandes d’abonnement" -#: bookwyrm/templates/user/layout.html:61 +#: bookwyrm/templates/user/layout.html:62 msgid "Reading Goal" msgstr "Défi lecture" @@ -2681,38 +2710,38 @@ msgstr "Modifier l’étagère" msgid "Update shelf" msgstr "Mettre l’étagère à jour" -#: bookwyrm/templates/user/shelf/shelf.html:24 bookwyrm/views/shelf.py:48 +#: bookwyrm/templates/user/shelf/shelf.html:25 bookwyrm/views/shelf.py:51 msgid "All books" msgstr "Tous les livres" -#: bookwyrm/templates/user/shelf/shelf.html:37 +#: bookwyrm/templates/user/shelf/shelf.html:38 msgid "Create shelf" msgstr "Créer l’étagère" -#: bookwyrm/templates/user/shelf/shelf.html:60 +#: bookwyrm/templates/user/shelf/shelf.html:61 msgid "Edit shelf" msgstr "Modifier l’étagère" -#: bookwyrm/templates/user/shelf/shelf.html:79 -#: bookwyrm/templates/user/shelf/shelf.html:101 +#: bookwyrm/templates/user/shelf/shelf.html:80 +#: bookwyrm/templates/user/shelf/shelf.html:104 msgid "Shelved" msgstr "Ajouté à une étagère" -#: bookwyrm/templates/user/shelf/shelf.html:80 -#: bookwyrm/templates/user/shelf/shelf.html:105 +#: bookwyrm/templates/user/shelf/shelf.html:81 +#: bookwyrm/templates/user/shelf/shelf.html:108 msgid "Started" msgstr "Commencé" -#: bookwyrm/templates/user/shelf/shelf.html:81 -#: bookwyrm/templates/user/shelf/shelf.html:108 +#: bookwyrm/templates/user/shelf/shelf.html:82 +#: bookwyrm/templates/user/shelf/shelf.html:111 msgid "Finished" msgstr "Terminé" -#: bookwyrm/templates/user/shelf/shelf.html:134 +#: bookwyrm/templates/user/shelf/shelf.html:137 msgid "This shelf is empty." msgstr "Cette étagère est vide" -#: bookwyrm/templates/user/shelf/shelf.html:140 +#: bookwyrm/templates/user/shelf/shelf.html:143 msgid "Delete shelf" msgstr "Supprimer l’étagère" @@ -2741,24 +2770,24 @@ msgstr "Flux RSS" msgid "No activities yet!" msgstr "Aucune activité pour l’instant !" -#: bookwyrm/templates/user/user_preview.html:14 +#: bookwyrm/templates/user/user_preview.html:15 #, python-format msgid "Joined %(date)s" msgstr "Enregistré(e) %(date)s" -#: bookwyrm/templates/user/user_preview.html:18 +#: bookwyrm/templates/user/user_preview.html:19 #, python-format msgid "%(counter)s follower" msgid_plural "%(counter)s followers" msgstr[0] "%(counter)s abonnement" msgstr[1] "%(counter)s abonnements" -#: bookwyrm/templates/user/user_preview.html:19 +#: bookwyrm/templates/user/user_preview.html:20 #, python-format msgid "%(counter)s following" msgstr "%(counter)s abonnements" -#: bookwyrm/templates/user/user_preview.html:25 +#: bookwyrm/templates/user/user_preview.html:26 #, fuzzy, python-format #| msgid "%(mutuals)s follower you follow" #| msgid_plural "%(mutuals)s followers you follow" @@ -2767,7 +2796,7 @@ msgid_plural "%(mutuals_display)s followers you follow" msgstr[0] "%(mutuals)s abonnement auxquel vous êtes abonné(e)" msgstr[1] "%(mutuals)s abonnements auxquels vous êtes abonné(e)" -#: bookwyrm/templates/user_admin/user.html:11 +#: bookwyrm/templates/user_admin/user.html:9 #, fuzzy #| msgid "Back to reports" msgid "Back to users" @@ -2840,15 +2869,20 @@ msgstr "" msgid "Access level:" msgstr "" -#: bookwyrm/views/password.py:32 +#: bookwyrm/views/password.py:30 bookwyrm/views/password.py:35 msgid "No user with that email address was found." msgstr "Aucun compte avec cette adresse email n’a été trouvé." -#: bookwyrm/views/password.py:41 +#: bookwyrm/views/password.py:44 #, python-format msgid "A password reset link sent to %s" msgstr "Un lien de réinitialisation a été envoyé à %s." +#, fuzzy +#~| msgid "BookWyrm users" +#~ msgid "BookWyrm\\" +#~ msgstr "Comptes BookWyrm" + #, fuzzy #~| msgid "Show more" #~ msgid "Show" diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index a6fdfa75..0f399924 100644 --- a/locale/zh_Hans/LC_MESSAGES/django.po +++ b/locale/zh_Hans/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-05-10 13:23-0700\n" +"POT-Creation-Date: 2021-05-14 15:12-0700\n" "PO-Revision-Date: 2021-03-20 00:56+0000\n" "Last-Translator: Kana \n" "Language-Team: Mouse Reeve \n" @@ -57,13 +57,13 @@ msgstr "" msgid "Book Title" msgstr "标题" -#: bookwyrm/forms.py:295 bookwyrm/templates/snippets/create_status_form.html:31 -#: bookwyrm/templates/user/shelf/shelf.html:82 -#: bookwyrm/templates/user/shelf/shelf.html:112 +#: bookwyrm/forms.py:295 bookwyrm/templates/snippets/create_status_form.html:34 +#: bookwyrm/templates/user/shelf/shelf.html:84 +#: bookwyrm/templates/user/shelf/shelf.html:115 msgid "Rating" msgstr "评价" -#: bookwyrm/forms.py:297 bookwyrm/templates/lists/list.html:100 +#: bookwyrm/forms.py:297 bookwyrm/templates/lists/list.html:101 msgid "Sort By" msgstr "" @@ -137,19 +137,155 @@ msgstr "服务器错误" msgid "Something went wrong! Sorry about that." msgstr "某些东西出错了!对不起啦。" -#: bookwyrm/templates/author.html:16 bookwyrm/templates/author.html:17 +#: bookwyrm/templates/author/author.html:17 +#: bookwyrm/templates/author/author.html:18 msgid "Edit Author" msgstr "编辑作者" -#: bookwyrm/templates/author.html:31 +#: bookwyrm/templates/author/author.html:33 +#: bookwyrm/templates/author/edit_author.html:38 +msgid "Aliases:" +msgstr "" + +#: bookwyrm/templates/author/author.html:39 +msgid "Born:" +msgstr "" + +#: bookwyrm/templates/author/author.html:45 +msgid "Died:" +msgstr "" + +#: bookwyrm/templates/author/author.html:52 msgid "Wikipedia" msgstr "维基百科" -#: bookwyrm/templates/author.html:36 +#: bookwyrm/templates/author/author.html:56 +#: bookwyrm/templates/book/book.html:81 +msgid "View on OpenLibrary" +msgstr "在 OpenLibrary 查看" + +#: bookwyrm/templates/author/author.html:61 +#: bookwyrm/templates/book/book.html:84 +#, fuzzy +#| msgid "View on OpenLibrary" +msgid "View on Inventaire" +msgstr "在 OpenLibrary 查看" + +#: bookwyrm/templates/author/author.html:75 #, python-format msgid "Books by %(name)s" msgstr "%(name)s 所著的书" +#: bookwyrm/templates/author/edit_author.html:5 +msgid "Edit Author:" +msgstr "编辑作者:" + +#: bookwyrm/templates/author/edit_author.html:13 +#: bookwyrm/templates/book/edit_book.html:18 +msgid "Added:" +msgstr "添加了:" + +#: bookwyrm/templates/author/edit_author.html:14 +#: bookwyrm/templates/book/edit_book.html:19 +msgid "Updated:" +msgstr "更新了:" + +#: bookwyrm/templates/author/edit_author.html:15 +#: bookwyrm/templates/book/edit_book.html:20 +msgid "Last edited by:" +msgstr "最后编辑人:" + +#: bookwyrm/templates/author/edit_author.html:31 +#: bookwyrm/templates/book/edit_book.html:90 +msgid "Metadata" +msgstr "元数据" + +#: bookwyrm/templates/author/edit_author.html:32 +#: bookwyrm/templates/lists/form.html:8 +#: bookwyrm/templates/user/shelf/create_shelf_form.html:13 +#: bookwyrm/templates/user/shelf/edit_shelf_form.html:14 +msgid "Name:" +msgstr "名称:" + +#: bookwyrm/templates/author/edit_author.html:40 +#: bookwyrm/templates/book/edit_book.html:128 +#: bookwyrm/templates/book/edit_book.html:165 +#, fuzzy +#| msgid "Separate multiple publishers with commas." +msgid "Separate multiple values with commas." +msgstr "请用英文逗号(,)分开多个出版社。" + +#: bookwyrm/templates/author/edit_author.html:46 +msgid "Bio:" +msgstr "简介:" + +#: bookwyrm/templates/author/edit_author.html:51 +msgid "Wikipedia link:" +msgstr "维基百科链接:" + +#: bookwyrm/templates/author/edit_author.html:57 +msgid "Birth date:" +msgstr "出生日期:" + +#: bookwyrm/templates/author/edit_author.html:65 +msgid "Death date:" +msgstr "死亡日期:" + +#: bookwyrm/templates/author/edit_author.html:73 +msgid "Author Identifiers" +msgstr "作者标识号:" + +#: bookwyrm/templates/author/edit_author.html:74 +#: bookwyrm/templates/book/edit_book.html:223 +msgid "Openlibrary key:" +msgstr "Openlibrary key:" + +#: bookwyrm/templates/author/edit_author.html:79 +#, fuzzy +#| msgid "View on OpenLibrary" +msgid "Inventaire ID:" +msgstr "在 OpenLibrary 查看" + +#: bookwyrm/templates/author/edit_author.html:84 +msgid "Librarything key:" +msgstr "Librarything key:" + +#: bookwyrm/templates/author/edit_author.html:89 +msgid "Goodreads key:" +msgstr "Goodreads key:" + +#: bookwyrm/templates/author/edit_author.html:98 +#: bookwyrm/templates/book/book.html:127 +#: bookwyrm/templates/book/edit_book.html:241 +#: bookwyrm/templates/lists/form.html:42 +#: bookwyrm/templates/preferences/edit_user.html:70 +#: bookwyrm/templates/settings/edit_server.html:68 +#: bookwyrm/templates/settings/federated_server.html:94 +#: bookwyrm/templates/settings/site.html:97 +#: bookwyrm/templates/snippets/readthrough.html:77 +#: 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/start_reading_modal.html:34 +#: bookwyrm/templates/user_admin/user_moderation_actions.html:38 +msgid "Save" +msgstr "保存" + +#: bookwyrm/templates/author/edit_author.html:99 +#: bookwyrm/templates/book/book.html:128 bookwyrm/templates/book/book.html:180 +#: bookwyrm/templates/book/cover_modal.html:32 +#: bookwyrm/templates/book/edit_book.html:242 +#: bookwyrm/templates/moderation/report_modal.html:34 +#: bookwyrm/templates/settings/federated_server.html:95 +#: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 +#: bookwyrm/templates/snippets/goal_form.html:32 +#: bookwyrm/templates/snippets/readthrough.html:78 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:43 +#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:35 +#: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28 +msgid "Cancel" +msgstr "取消" + #: bookwyrm/templates/book/book.html:33 #: bookwyrm/templates/discover/large-book.html:25 #: bookwyrm/templates/discover/small-book.html:19 @@ -169,16 +305,6 @@ msgstr "添加封面" msgid "Failed to load cover" msgstr "加载封面失败" -#: bookwyrm/templates/book/book.html:81 -msgid "View on OpenLibrary" -msgstr "在 OpenLibrary 查看" - -#: bookwyrm/templates/book/book.html:84 -#, fuzzy -#| msgid "View on OpenLibrary" -msgid "View on Inventaire" -msgstr "在 OpenLibrary 查看" - #: bookwyrm/templates/book/book.html:104 #, python-format msgid "(%(review_count)s review)" @@ -195,37 +321,6 @@ msgstr "添加描述" msgid "Description:" msgstr "描述:" -#: bookwyrm/templates/book/book.html:127 -#: bookwyrm/templates/book/edit_book.html:249 -#: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42 -#: bookwyrm/templates/preferences/edit_user.html:70 -#: bookwyrm/templates/settings/edit_server.html:68 -#: bookwyrm/templates/settings/federated_server.html:93 -#: bookwyrm/templates/settings/site.html:97 -#: bookwyrm/templates/snippets/readthrough.html:77 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:50 -#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:38 -#: bookwyrm/templates/user_admin/user_moderation_actions.html:38 -msgid "Save" -msgstr "保存" - -#: bookwyrm/templates/book/book.html:128 bookwyrm/templates/book/book.html:180 -#: bookwyrm/templates/book/cover_modal.html:32 -#: bookwyrm/templates/book/edit_book.html:250 -#: bookwyrm/templates/edit_author.html:79 -#: bookwyrm/templates/moderation/report_modal.html:34 -#: bookwyrm/templates/settings/federated_server.html:94 -#: bookwyrm/templates/snippets/delete_readthrough_modal.html:17 -#: bookwyrm/templates/snippets/goal_form.html:32 -#: bookwyrm/templates/snippets/readthrough.html:78 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:51 -#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:39 -#: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28 -msgid "Cancel" -msgstr "取消" - #: bookwyrm/templates/book/book.html:137 #, python-format msgid "%(count)s editions" @@ -297,7 +392,7 @@ msgstr "地点" #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 #: bookwyrm/templates/search/layout.html:50 -#: bookwyrm/templates/user/layout.html:67 +#: bookwyrm/templates/user/layout.html:68 msgid "Lists" msgstr "列表" @@ -307,7 +402,7 @@ msgstr "添加到列表" #: bookwyrm/templates/book/book.html:320 #: bookwyrm/templates/book/cover_modal.html:31 -#: bookwyrm/templates/lists/list.html:163 +#: bookwyrm/templates/lists/list.html:164 msgid "Add" msgstr "添加" @@ -316,22 +411,22 @@ msgid "ISBN:" msgstr "ISBN:" #: bookwyrm/templates/book/book_identifiers.html:15 -#: bookwyrm/templates/book/edit_book.html:235 +#: bookwyrm/templates/book/edit_book.html:227 msgid "OCLC Number:" msgstr "OCLC 号:" #: bookwyrm/templates/book/book_identifiers.html:22 -#: bookwyrm/templates/book/edit_book.html:239 +#: bookwyrm/templates/book/edit_book.html:231 msgid "ASIN:" msgstr "ASIN:" #: bookwyrm/templates/book/cover_modal.html:17 -#: bookwyrm/templates/book/edit_book.html:187 +#: bookwyrm/templates/book/edit_book.html:179 msgid "Upload cover:" msgstr "上传封面:" #: bookwyrm/templates/book/cover_modal.html:23 -#: bookwyrm/templates/book/edit_book.html:193 +#: bookwyrm/templates/book/edit_book.html:185 msgid "Load cover from url:" msgstr "从网址加载封面:" @@ -346,21 +441,6 @@ msgstr "编辑 \"%(book_title)s\"" msgid "Add Book" msgstr "添加书目" -#: bookwyrm/templates/book/edit_book.html:18 -#: bookwyrm/templates/edit_author.html:13 -msgid "Added:" -msgstr "添加了:" - -#: bookwyrm/templates/book/edit_book.html:19 -#: bookwyrm/templates/edit_author.html:14 -msgid "Updated:" -msgstr "更新了:" - -#: bookwyrm/templates/book/edit_book.html:20 -#: bookwyrm/templates/edit_author.html:15 -msgid "Last edited by:" -msgstr "最后编辑人:" - #: bookwyrm/templates/book/edit_book.html:40 msgid "Confirm Book Info" msgstr "确认书目信息" @@ -402,11 +482,6 @@ msgstr "确认" msgid "Back" msgstr "返回" -#: bookwyrm/templates/book/edit_book.html:90 -#: bookwyrm/templates/edit_author.html:31 -msgid "Metadata" -msgstr "元数据" - #: bookwyrm/templates/book/edit_book.html:92 msgid "Title:" msgstr "标题:" @@ -427,76 +502,67 @@ msgstr "系列编号:" msgid "Publisher:" msgstr "出版社:" -#: bookwyrm/templates/book/edit_book.html:128 -msgid "Separate multiple publishers with commas." -msgstr "请用英文逗号(,)分开多个出版社。" - #: bookwyrm/templates/book/edit_book.html:135 msgid "First published date:" msgstr "初版时间:" -#: bookwyrm/templates/book/edit_book.html:147 +#: bookwyrm/templates/book/edit_book.html:143 msgid "Published date:" msgstr "出版时间:" -#: bookwyrm/templates/book/edit_book.html:160 +#: bookwyrm/templates/book/edit_book.html:152 msgid "Authors" msgstr "作者" -#: bookwyrm/templates/book/edit_book.html:166 +#: bookwyrm/templates/book/edit_book.html:158 #, python-format msgid "Remove %(name)s" msgstr "移除 %(name)s" -#: bookwyrm/templates/book/edit_book.html:171 +#: bookwyrm/templates/book/edit_book.html:163 msgid "Add Authors:" msgstr "添加作者:" -#: bookwyrm/templates/book/edit_book.html:172 +#: bookwyrm/templates/book/edit_book.html:164 msgid "John Doe, Jane Smith" msgstr "张三, 李四" -#: bookwyrm/templates/book/edit_book.html:178 -#: bookwyrm/templates/user/shelf/shelf.html:76 +#: bookwyrm/templates/book/edit_book.html:170 +#: bookwyrm/templates/user/shelf/shelf.html:77 msgid "Cover" msgstr "封面" -#: bookwyrm/templates/book/edit_book.html:206 +#: bookwyrm/templates/book/edit_book.html:198 msgid "Physical Properties" msgstr "实体性质" -#: bookwyrm/templates/book/edit_book.html:207 +#: bookwyrm/templates/book/edit_book.html:199 #: bookwyrm/templates/book/format_filter.html:5 msgid "Format:" msgstr "格式:" -#: bookwyrm/templates/book/edit_book.html:215 +#: bookwyrm/templates/book/edit_book.html:207 msgid "Pages:" msgstr "页数:" -#: bookwyrm/templates/book/edit_book.html:222 +#: bookwyrm/templates/book/edit_book.html:214 msgid "Book Identifiers" msgstr "书目标识号" -#: bookwyrm/templates/book/edit_book.html:223 +#: bookwyrm/templates/book/edit_book.html:215 msgid "ISBN 13:" msgstr "ISBN 13:" -#: bookwyrm/templates/book/edit_book.html:227 +#: bookwyrm/templates/book/edit_book.html:219 msgid "ISBN 10:" msgstr "ISBN 10:" -#: bookwyrm/templates/book/edit_book.html:231 -#: bookwyrm/templates/edit_author.html:59 -msgid "Openlibrary key:" -msgstr "Openlibrary key:" - -#: bookwyrm/templates/book/editions.html:5 +#: bookwyrm/templates/book/editions.html:4 #, python-format msgid "Editions of %(book_title)s" msgstr "%(book_title)s 的各版本" -#: bookwyrm/templates/book/editions.html:9 +#: bookwyrm/templates/book/editions.html:8 #, python-format msgid "Editions of \"%(work_title)s\"" msgstr "\"%(work_title)s\" 的各版本" @@ -547,7 +613,7 @@ msgstr "由 %(publisher)s 出版。" #: bookwyrm/templates/components/inline_form.html:8 #: bookwyrm/templates/components/modal.html:11 -#: bookwyrm/templates/feed/feed_layout.html:70 +#: bookwyrm/templates/feed/feed_layout.html:69 #: bookwyrm/templates/get_started/layout.html:19 #: bookwyrm/templates/get_started/layout.html:52 #: bookwyrm/templates/search/book.html:32 @@ -604,21 +670,21 @@ msgstr "受推荐" msgid "Recently active" msgstr "最近活跃" -#: bookwyrm/templates/directory/user_card.html:32 +#: bookwyrm/templates/directory/user_card.html:33 msgid "follower you follow" msgid_plural "followers you follow" msgstr[0] "你关注的关注者" -#: bookwyrm/templates/directory/user_card.html:39 +#: bookwyrm/templates/directory/user_card.html:40 msgid "book on your shelves" msgid_plural "books on your shelves" msgstr[0] "你书架上的书" -#: bookwyrm/templates/directory/user_card.html:47 +#: bookwyrm/templates/directory/user_card.html:48 msgid "posts" msgstr "发文" -#: bookwyrm/templates/directory/user_card.html:53 +#: bookwyrm/templates/directory/user_card.html:54 msgid "last active" msgstr "最后活跃" @@ -704,44 +770,6 @@ msgstr "提交" msgid "Your Account" msgstr "你的帐号" -#: bookwyrm/templates/edit_author.html:5 -msgid "Edit Author:" -msgstr "编辑作者:" - -#: bookwyrm/templates/edit_author.html:32 bookwyrm/templates/lists/form.html:8 -#: bookwyrm/templates/user/shelf/create_shelf_form.html:13 -#: bookwyrm/templates/user/shelf/edit_shelf_form.html:14 -msgid "Name:" -msgstr "名称:" - -#: bookwyrm/templates/edit_author.html:37 -msgid "Bio:" -msgstr "简介:" - -#: bookwyrm/templates/edit_author.html:42 -msgid "Wikipedia link:" -msgstr "维基百科链接:" - -#: bookwyrm/templates/edit_author.html:47 -msgid "Birth date:" -msgstr "出生日期:" - -#: bookwyrm/templates/edit_author.html:52 -msgid "Death date:" -msgstr "死亡日期:" - -#: bookwyrm/templates/edit_author.html:58 -msgid "Author Identifiers" -msgstr "作者标识号:" - -#: bookwyrm/templates/edit_author.html:64 -msgid "Librarything key:" -msgstr "Librarything key:" - -#: bookwyrm/templates/edit_author.html:69 -msgid "Goodreads key:" -msgstr "Goodreads key:" - #: bookwyrm/templates/email/html_layout.html:15 #: bookwyrm/templates/email/text_layout.html:2 msgid "Hi there," @@ -822,76 +850,76 @@ msgstr "所有消息" msgid "You have no messages right now." msgstr "你现在没有消息。" -#: bookwyrm/templates/feed/feed.html:9 +#: bookwyrm/templates/feed/feed.html:8 msgid "Home Timeline" msgstr "主页时间线" -#: bookwyrm/templates/feed/feed.html:11 +#: bookwyrm/templates/feed/feed.html:10 msgid "Local Timeline" msgstr "本地时间线" -#: bookwyrm/templates/feed/feed.html:13 +#: bookwyrm/templates/feed/feed.html:12 msgid "Federated Timeline" msgstr "跨站时间线" -#: bookwyrm/templates/feed/feed.html:19 +#: bookwyrm/templates/feed/feed.html:18 msgid "Home" msgstr "主页" -#: bookwyrm/templates/feed/feed.html:22 +#: bookwyrm/templates/feed/feed.html:21 msgid "Local" msgstr "本站" -#: bookwyrm/templates/feed/feed.html:25 +#: bookwyrm/templates/feed/feed.html:24 #: bookwyrm/templates/settings/edit_server.html:40 msgid "Federated" msgstr "跨站" -#: bookwyrm/templates/feed/feed.html:33 +#: bookwyrm/templates/feed/feed.html:32 #, python-format msgid "load 0 unread status(es)" msgstr "加载 0 条未读状态" -#: bookwyrm/templates/feed/feed.html:48 +#: bookwyrm/templates/feed/feed.html:47 msgid "There aren't any activities right now! Try following a user to get started" msgstr "现在还没有任何活动!尝试着从关注一个用户开始吧" -#: bookwyrm/templates/feed/feed.html:56 +#: bookwyrm/templates/feed/feed.html:55 #: bookwyrm/templates/get_started/users.html:6 msgid "Who to follow" msgstr "可以关注的人" -#: bookwyrm/templates/feed/feed_layout.html:5 +#: bookwyrm/templates/feed/feed_layout.html:4 msgid "Updates" msgstr "更新" -#: bookwyrm/templates/feed/feed_layout.html:11 +#: bookwyrm/templates/feed/feed_layout.html:10 #: bookwyrm/templates/layout.html:59 #: bookwyrm/templates/user/shelf/books_header.html:3 msgid "Your books" msgstr "你的书目" -#: bookwyrm/templates/feed/feed_layout.html:13 +#: bookwyrm/templates/feed/feed_layout.html:12 msgid "There are no books here right now! Try searching for a book to get started" msgstr "现在这里还没有任何书目!尝试着从搜索某本书开始吧" -#: bookwyrm/templates/feed/feed_layout.html:24 -#: bookwyrm/templates/user/shelf/shelf.html:28 +#: bookwyrm/templates/feed/feed_layout.html:23 +#: bookwyrm/templates/user/shelf/shelf.html:29 msgid "To Read" msgstr "想读" -#: bookwyrm/templates/feed/feed_layout.html:25 -#: bookwyrm/templates/user/shelf/shelf.html:28 +#: bookwyrm/templates/feed/feed_layout.html:24 +#: bookwyrm/templates/user/shelf/shelf.html:29 msgid "Currently Reading" msgstr "在读" -#: bookwyrm/templates/feed/feed_layout.html:26 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:11 -#: bookwyrm/templates/user/shelf/shelf.html:28 +#: bookwyrm/templates/feed/feed_layout.html:25 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:13 +#: bookwyrm/templates/user/shelf/shelf.html:29 msgid "Read" msgstr "读过" -#: bookwyrm/templates/feed/feed_layout.html:88 bookwyrm/templates/goal.html:26 +#: bookwyrm/templates/feed/feed_layout.html:87 bookwyrm/templates/goal.html:26 #: bookwyrm/templates/snippets/goal_card.html:6 #, python-format msgid "%(year)s Reading Goal" @@ -919,7 +947,7 @@ msgid "What are you reading?" msgstr "你在阅读什么?" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/lists/list.html:119 +#: bookwyrm/templates/lists/list.html:120 msgid "Search for a book" msgstr "搜索书目" @@ -939,7 +967,7 @@ msgstr "你可以在开始使用 %(site_name)s 后添加书目。" #: bookwyrm/templates/get_started/users.html:18 #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/layout.html:38 bookwyrm/templates/layout.html:39 -#: bookwyrm/templates/lists/list.html:123 +#: bookwyrm/templates/lists/list.html:124 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -955,7 +983,7 @@ msgid "Popular on %(site_name)s" msgstr "%(site_name)s 上的热门" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:136 +#: bookwyrm/templates/lists/list.html:137 msgid "No books found" msgstr "没有找到书目" @@ -1075,95 +1103,95 @@ msgstr "导入书目" msgid "Data source:" msgstr "数据来源:" -#: bookwyrm/templates/import.html:29 +#: bookwyrm/templates/import.html:32 msgid "Data file:" msgstr "数据文件:" -#: bookwyrm/templates/import.html:37 +#: bookwyrm/templates/import.html:40 msgid "Include reviews" msgstr "纳入书评" -#: bookwyrm/templates/import.html:42 +#: bookwyrm/templates/import.html:45 msgid "Privacy setting for imported reviews:" msgstr "导入书评的隐私设定" -#: bookwyrm/templates/import.html:48 +#: bookwyrm/templates/import.html:51 #: bookwyrm/templates/settings/server_blocklist.html:64 msgid "Import" msgstr "导入" -#: bookwyrm/templates/import.html:53 +#: bookwyrm/templates/import.html:56 msgid "Recent Imports" msgstr "最近的导入" -#: bookwyrm/templates/import.html:55 +#: bookwyrm/templates/import.html:58 msgid "No recent imports" msgstr "无最近的导入" -#: bookwyrm/templates/import_status.html:6 -#: bookwyrm/templates/import_status.html:10 +#: bookwyrm/templates/import_status.html:5 +#: bookwyrm/templates/import_status.html:9 msgid "Import Status" msgstr "导入状态" -#: bookwyrm/templates/import_status.html:13 +#: bookwyrm/templates/import_status.html:12 msgid "Import started:" msgstr "导入开始:" -#: bookwyrm/templates/import_status.html:17 +#: bookwyrm/templates/import_status.html:16 msgid "Import completed:" msgstr "导入完成:" -#: bookwyrm/templates/import_status.html:20 +#: bookwyrm/templates/import_status.html:19 msgid "TASK FAILED" msgstr "任务失败" -#: bookwyrm/templates/import_status.html:26 +#: bookwyrm/templates/import_status.html:25 msgid "Import still in progress." msgstr "还在导入中。" -#: bookwyrm/templates/import_status.html:28 +#: bookwyrm/templates/import_status.html:27 msgid "(Hit reload to update!)" msgstr "(按下重新加载来更新!)" -#: bookwyrm/templates/import_status.html:35 +#: bookwyrm/templates/import_status.html:34 msgid "Failed to load" msgstr "加载失败" -#: bookwyrm/templates/import_status.html:44 +#: bookwyrm/templates/import_status.html:43 #, python-format msgid "Jump to the bottom of the list to select the %(failed_count)s items which failed to import." msgstr "跳转至列表底部来选取 %(failed_count)s 个导入失败的项目。" -#: bookwyrm/templates/import_status.html:79 +#: bookwyrm/templates/import_status.html:78 msgid "Select all" msgstr "全选" -#: bookwyrm/templates/import_status.html:82 +#: bookwyrm/templates/import_status.html:81 msgid "Retry items" msgstr "重试项目" -#: bookwyrm/templates/import_status.html:108 +#: bookwyrm/templates/import_status.html:107 msgid "Successfully imported" msgstr "成功导入了" -#: bookwyrm/templates/import_status.html:112 +#: bookwyrm/templates/import_status.html:111 msgid "Book" msgstr "书目" -#: bookwyrm/templates/import_status.html:115 -#: bookwyrm/templates/snippets/create_status_form.html:10 -#: bookwyrm/templates/user/shelf/shelf.html:77 -#: bookwyrm/templates/user/shelf/shelf.html:95 +#: bookwyrm/templates/import_status.html:114 +#: bookwyrm/templates/snippets/create_status_form.html:13 +#: bookwyrm/templates/user/shelf/shelf.html:78 +#: bookwyrm/templates/user/shelf/shelf.html:98 msgid "Title" msgstr "标题" -#: bookwyrm/templates/import_status.html:118 -#: bookwyrm/templates/user/shelf/shelf.html:78 -#: bookwyrm/templates/user/shelf/shelf.html:98 +#: bookwyrm/templates/import_status.html:117 +#: bookwyrm/templates/user/shelf/shelf.html:79 +#: bookwyrm/templates/user/shelf/shelf.html:101 msgid "Author" msgstr "作者" -#: bookwyrm/templates/import_status.html:141 +#: bookwyrm/templates/import_status.html:140 msgid "Imported" msgstr "已导入" @@ -1274,7 +1302,8 @@ msgid "Support %(site_name)s on % msgstr "在 %(support_title)s 上支持 %(site_name)s" #: bookwyrm/templates/layout.html:217 -msgid "BookWyrm is open source software. You can contribute or report issues on GitHub." +#| msgid "BookWyrm is open source software. You can contribute or report issues on GitHub." +msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "BookWyrm 是开源软件。你可以在 GitHub 贡献或报告问题。" #: bookwyrm/templates/lists/create_form.html:5 @@ -1317,7 +1346,7 @@ msgid "Discard" msgstr "削除" #: bookwyrm/templates/lists/edit_form.html:5 -#: bookwyrm/templates/lists/list_layout.html:18 +#: bookwyrm/templates/lists/list_layout.html:17 msgid "Edit List" msgstr "编辑列表" @@ -1351,76 +1380,76 @@ msgstr "开放" msgid "Anyone can add books to this list" msgstr "任何人都可以向此列表中添加书目" -#: bookwyrm/templates/lists/list.html:19 +#: bookwyrm/templates/lists/list.html:20 msgid "You successfully suggested a book for this list!" msgstr "" -#: bookwyrm/templates/lists/list.html:21 +#: bookwyrm/templates/lists/list.html:22 #, fuzzy #| msgid "Anyone can add books to this list" msgid "You successfully added a book to this list!" msgstr "任何人都可以向此列表中添加书目" -#: bookwyrm/templates/lists/list.html:27 +#: bookwyrm/templates/lists/list.html:28 msgid "This list is currently empty" msgstr "此列表当前是空的" -#: bookwyrm/templates/lists/list.html:64 +#: bookwyrm/templates/lists/list.html:65 #, python-format msgid "Added by %(username)s" msgstr "由 %(username)s 添加" -#: bookwyrm/templates/lists/list.html:76 +#: bookwyrm/templates/lists/list.html:77 #, fuzzy #| msgid "Sent" msgid "Set" msgstr "已发送" -#: bookwyrm/templates/lists/list.html:79 +#: bookwyrm/templates/lists/list.html:80 #, fuzzy #| msgid "List curation:" msgid "List position" msgstr "列表策展:" -#: bookwyrm/templates/lists/list.html:85 +#: bookwyrm/templates/lists/list.html:86 #: bookwyrm/templates/snippets/shelf_selector.html:26 msgid "Remove" msgstr "移除" -#: bookwyrm/templates/lists/list.html:98 bookwyrm/templates/lists/list.html:110 +#: bookwyrm/templates/lists/list.html:99 bookwyrm/templates/lists/list.html:111 #, fuzzy #| msgid "Your Lists" msgid "Sort List" msgstr "你的列表" -#: bookwyrm/templates/lists/list.html:104 +#: bookwyrm/templates/lists/list.html:105 #, fuzzy #| msgid "Directory" msgid "Direction" msgstr "目录" -#: bookwyrm/templates/lists/list.html:115 +#: bookwyrm/templates/lists/list.html:116 msgid "Add Books" msgstr "添加书目" -#: bookwyrm/templates/lists/list.html:115 +#: bookwyrm/templates/lists/list.html:116 msgid "Suggest Books" msgstr "推荐书目" -#: bookwyrm/templates/lists/list.html:124 +#: bookwyrm/templates/lists/list.html:125 msgid "search" msgstr "搜索" -#: bookwyrm/templates/lists/list.html:130 +#: bookwyrm/templates/lists/list.html:131 msgid "Clear search" msgstr "清除搜索" -#: bookwyrm/templates/lists/list.html:135 +#: bookwyrm/templates/lists/list.html:136 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "没有符合 \"%(query)s\" 请求的书目" -#: bookwyrm/templates/lists/list.html:163 +#: bookwyrm/templates/lists/list.html:164 msgid "Suggest" msgstr "推荐" @@ -1445,36 +1474,36 @@ msgstr "联系管理员以取得邀请" msgid "More about this site" msgstr "关于本站点的更多" +#: bookwyrm/templates/moderation/report.html:5 #: bookwyrm/templates/moderation/report.html:6 -#: bookwyrm/templates/moderation/report.html:7 #: bookwyrm/templates/moderation/report_preview.html:6 #, python-format msgid "Report #%(report_id)s: %(username)s" msgstr "报告 #%(report_id)s: %(username)s" -#: bookwyrm/templates/moderation/report.html:11 +#: bookwyrm/templates/moderation/report.html:10 msgid "Back to reports" msgstr "回到报告" -#: bookwyrm/templates/moderation/report.html:23 +#: bookwyrm/templates/moderation/report.html:22 msgid "Moderator Comments" msgstr "监察员评论" -#: bookwyrm/templates/moderation/report.html:41 +#: bookwyrm/templates/moderation/report.html:40 #: bookwyrm/templates/snippets/create_status.html:28 -#: bookwyrm/templates/snippets/create_status_form.html:63 +#: bookwyrm/templates/snippets/create_status_form.html:66 msgid "Comment" msgstr "评论" -#: bookwyrm/templates/moderation/report.html:46 +#: bookwyrm/templates/moderation/report.html:45 msgid "Reported statuses" msgstr "被报告的状态" -#: bookwyrm/templates/moderation/report.html:48 +#: bookwyrm/templates/moderation/report.html:47 msgid "No statuses reported" msgstr "没有被报告的状态" -#: bookwyrm/templates/moderation/report.html:54 +#: bookwyrm/templates/moderation/report.html:53 #, fuzzy #| msgid "Statuses has been deleted" msgid "Status has been deleted" @@ -1754,7 +1783,7 @@ msgstr "搜索" #: bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 -#: bookwyrm/templates/user/layout.html:73 +#: bookwyrm/templates/user/layout.html:74 msgid "Books" msgstr "书目" @@ -1829,7 +1858,7 @@ msgid "Add server" msgstr "添加封面" #: bookwyrm/templates/settings/edit_server.html:7 -#: bookwyrm/templates/settings/federated_server.html:12 +#: bookwyrm/templates/settings/federated_server.html:13 #: bookwyrm/templates/settings/server_blocklist.html:7 msgid "Back to server list" msgstr "回到服务器列表" @@ -1848,26 +1877,26 @@ msgid "Instance:" msgstr "实例名称" #: bookwyrm/templates/settings/edit_server.html:37 -#: bookwyrm/templates/settings/federated_server.html:29 +#: bookwyrm/templates/settings/federated_server.html:30 #: bookwyrm/templates/user_admin/user_info.html:34 msgid "Status:" msgstr "状态:" #: bookwyrm/templates/settings/edit_server.html:41 -#: bookwyrm/templates/settings/federated_server.html:9 +#: bookwyrm/templates/settings/federated_server.html:10 #, fuzzy #| msgid "Block" msgid "Blocked" msgstr "屏蔽" #: bookwyrm/templates/settings/edit_server.html:48 -#: bookwyrm/templates/settings/federated_server.html:21 +#: bookwyrm/templates/settings/federated_server.html:22 #: bookwyrm/templates/user_admin/user_info.html:26 msgid "Software:" msgstr "软件:" #: bookwyrm/templates/settings/edit_server.html:55 -#: bookwyrm/templates/settings/federated_server.html:25 +#: bookwyrm/templates/settings/federated_server.html:26 #: bookwyrm/templates/user_admin/user_info.html:30 msgid "Version:" msgstr "版本:" @@ -1876,71 +1905,71 @@ msgstr "版本:" msgid "Notes:" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:18 +#: bookwyrm/templates/settings/federated_server.html:19 msgid "Details" msgstr "详细" -#: bookwyrm/templates/settings/federated_server.html:36 -#: bookwyrm/templates/user/layout.html:55 +#: bookwyrm/templates/settings/federated_server.html:37 +#: bookwyrm/templates/user/layout.html:56 msgid "Activity" msgstr "活动" -#: bookwyrm/templates/settings/federated_server.html:39 +#: bookwyrm/templates/settings/federated_server.html:40 msgid "Users:" msgstr "用户:" -#: bookwyrm/templates/settings/federated_server.html:42 -#: bookwyrm/templates/settings/federated_server.html:49 +#: bookwyrm/templates/settings/federated_server.html:43 +#: bookwyrm/templates/settings/federated_server.html:50 msgid "View all" msgstr "查看全部" -#: bookwyrm/templates/settings/federated_server.html:46 +#: bookwyrm/templates/settings/federated_server.html:47 msgid "Reports:" msgstr "报告:" -#: bookwyrm/templates/settings/federated_server.html:53 +#: bookwyrm/templates/settings/federated_server.html:54 msgid "Followed by us:" msgstr "我们关注了的:" -#: bookwyrm/templates/settings/federated_server.html:59 +#: bookwyrm/templates/settings/federated_server.html:60 msgid "Followed by them:" msgstr "TA 们关注了的:" -#: bookwyrm/templates/settings/federated_server.html:65 +#: bookwyrm/templates/settings/federated_server.html:66 msgid "Blocked by us:" msgstr "我们所屏蔽的:" -#: bookwyrm/templates/settings/federated_server.html:77 +#: bookwyrm/templates/settings/federated_server.html:78 #: bookwyrm/templates/user_admin/user_info.html:39 msgid "Notes" msgstr "" -#: bookwyrm/templates/settings/federated_server.html:80 +#: bookwyrm/templates/settings/federated_server.html:81 #, fuzzy #| msgid "Edit Book" msgid "Edit" msgstr "编辑书目" -#: bookwyrm/templates/settings/federated_server.html:100 +#: bookwyrm/templates/settings/federated_server.html:101 #: bookwyrm/templates/user_admin/user_moderation_actions.html:3 msgid "Actions" msgstr "动作" -#: bookwyrm/templates/settings/federated_server.html:104 +#: bookwyrm/templates/settings/federated_server.html:105 #: bookwyrm/templates/snippets/block_button.html:5 msgid "Block" msgstr "屏蔽" -#: bookwyrm/templates/settings/federated_server.html:105 +#: bookwyrm/templates/settings/federated_server.html:106 msgid "All users from this instance will be deactivated." msgstr "" -#: bookwyrm/templates/settings/federated_server.html:110 +#: bookwyrm/templates/settings/federated_server.html:111 #: bookwyrm/templates/snippets/block_button.html:10 msgid "Un-block" msgstr "取消屏蔽" -#: bookwyrm/templates/settings/federated_server.html:111 +#: bookwyrm/templates/settings/federated_server.html:112 msgid "All users from this instance will be re-activated." msgstr "" @@ -2155,7 +2184,7 @@ msgstr "允许请求邀请:" msgid "Registration closed text:" msgstr "注册关闭文字:" -#: bookwyrm/templates/snippets/book_cover.html:32 +#: bookwyrm/templates/snippets/book_cover.html:31 msgid "No cover" msgstr "没有封面" @@ -2164,15 +2193,15 @@ msgstr "没有封面" msgid "%(title)s by " msgstr "%(title)s 来自" -#: bookwyrm/templates/snippets/boost_button.html:8 #: bookwyrm/templates/snippets/boost_button.html:9 +#: bookwyrm/templates/snippets/boost_button.html:10 #, fuzzy #| msgid "boosted" msgid "Boost" msgstr "转发了" -#: bookwyrm/templates/snippets/boost_button.html:15 #: bookwyrm/templates/snippets/boost_button.html:16 +#: bookwyrm/templates/snippets/boost_button.html:17 #, fuzzy #| msgid "Un-boost status" msgid "Un-boost" @@ -2194,66 +2223,66 @@ msgstr "书评" msgid "Quote" msgstr "引用" -#: bookwyrm/templates/snippets/create_status_form.html:20 +#: bookwyrm/templates/snippets/create_status_form.html:23 msgid "Comment:" msgstr "评论:" -#: bookwyrm/templates/snippets/create_status_form.html:22 +#: bookwyrm/templates/snippets/create_status_form.html:25 msgid "Quote:" msgstr "引用:" -#: bookwyrm/templates/snippets/create_status_form.html:24 +#: bookwyrm/templates/snippets/create_status_form.html:27 msgid "Review:" msgstr "书评:" -#: bookwyrm/templates/snippets/create_status_form.html:53 -#: bookwyrm/templates/snippets/status/layout.html:30 +#: bookwyrm/templates/snippets/create_status_form.html:56 +#: bookwyrm/templates/snippets/status/layout.html:29 +#: bookwyrm/templates/snippets/status/layout.html:47 #: bookwyrm/templates/snippets/status/layout.html:48 -#: bookwyrm/templates/snippets/status/layout.html:49 msgid "Reply" msgstr "回复" -#: bookwyrm/templates/snippets/create_status_form.html:53 +#: bookwyrm/templates/snippets/create_status_form.html:56 #, fuzzy #| msgid "Footer Content" msgid "Content" msgstr "页脚内容" -#: bookwyrm/templates/snippets/create_status_form.html:77 +#: bookwyrm/templates/snippets/create_status_form.html:80 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:16 msgid "Progress:" msgstr "进度:" -#: bookwyrm/templates/snippets/create_status_form.html:85 -#: bookwyrm/templates/snippets/readthrough_form.html:26 +#: bookwyrm/templates/snippets/create_status_form.html:88 +#: bookwyrm/templates/snippets/readthrough_form.html:22 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30 msgid "pages" msgstr "页数" -#: bookwyrm/templates/snippets/create_status_form.html:86 -#: bookwyrm/templates/snippets/readthrough_form.html:27 +#: bookwyrm/templates/snippets/create_status_form.html:89 +#: bookwyrm/templates/snippets/readthrough_form.html:23 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31 msgid "percent" msgstr "百分比" -#: bookwyrm/templates/snippets/create_status_form.html:92 +#: bookwyrm/templates/snippets/create_status_form.html:95 #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:36 #, python-format msgid "of %(pages)s pages" msgstr "全书 %(pages)s 页" -#: bookwyrm/templates/snippets/create_status_form.html:107 +#: bookwyrm/templates/snippets/create_status_form.html:110 msgid "Include spoiler alert" msgstr "加入剧透警告" -#: bookwyrm/templates/snippets/create_status_form.html:114 +#: bookwyrm/templates/snippets/create_status_form.html:117 #: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy_select.html:19 msgid "Private" msgstr "私密" -#: bookwyrm/templates/snippets/create_status_form.html:125 +#: bookwyrm/templates/snippets/create_status_form.html:128 msgid "Post" msgstr "发布" @@ -2267,17 +2296,17 @@ msgid "You are deleting this readthrough and its %(count)s associated progress u msgstr "你正要删除这篇阅读经过以及与之相关的 %(count)s 次进度更新。" #: bookwyrm/templates/snippets/delete_readthrough_modal.html:15 -#: bookwyrm/templates/snippets/follow_request_buttons.html:13 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 msgid "Delete" msgstr "删除" -#: bookwyrm/templates/snippets/fav_button.html:7 #: bookwyrm/templates/snippets/fav_button.html:9 +#: bookwyrm/templates/snippets/fav_button.html:11 msgid "Like" msgstr "" -#: bookwyrm/templates/snippets/fav_button.html:15 -#: bookwyrm/templates/snippets/fav_button.html:16 +#: bookwyrm/templates/snippets/fav_button.html:17 +#: bookwyrm/templates/snippets/fav_button.html:18 #, fuzzy #| msgid "Un-like status" msgid "Un-like" @@ -2311,11 +2340,11 @@ msgstr "撤回关注请求" msgid "Unfollow" msgstr "取消关注" -#: bookwyrm/templates/snippets/follow_request_buttons.html:8 +#: bookwyrm/templates/snippets/follow_request_buttons.html:7 msgid "Accept" msgstr "接受" -#: bookwyrm/templates/snippets/form_rate_stars.html:20 +#: bookwyrm/templates/snippets/form_rate_stars.html:19 #: bookwyrm/templates/snippets/stars.html:13 msgid "No rating" msgstr "没有评价" @@ -2361,8 +2390,8 @@ msgid "Goal privacy:" msgstr "目标隐私:" #: bookwyrm/templates/snippets/goal_form.html:26 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:45 -#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:33 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:37 +#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:29 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:20 msgid "Post to feed" msgstr "发布到消息流中" @@ -2473,12 +2502,12 @@ msgstr "删除这些阅读日期" msgid "Started reading" msgstr "已开始阅读" -#: bookwyrm/templates/snippets/readthrough_form.html:18 +#: bookwyrm/templates/snippets/readthrough_form.html:14 msgid "Progress" msgstr "进度" -#: bookwyrm/templates/snippets/readthrough_form.html:34 -#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:29 +#: bookwyrm/templates/snippets/readthrough_form.html:30 +#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:25 msgid "Finished reading" msgstr "已完成阅读" @@ -2486,27 +2515,27 @@ msgstr "已完成阅读" msgid "Sign Up" msgstr "注册" -#: bookwyrm/templates/snippets/report_button.html:5 +#: bookwyrm/templates/snippets/report_button.html:6 msgid "Report" msgstr "报告" #: bookwyrm/templates/snippets/rss_title.html:5 -#: bookwyrm/templates/snippets/status/status_header.html:34 +#: 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:36 +#: 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:38 +#: 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:40 +#: bookwyrm/templates/snippets/status/status_header.html:41 msgid "quoted" msgstr "引用了" @@ -2524,7 +2553,7 @@ msgid "Finish \"%(book_title)s\"" msgstr "完成 \"%(book_title)s\"" #: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:5 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:34 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:36 msgid "Update progress" msgstr "更新进度" @@ -2532,20 +2561,20 @@ msgstr "更新进度" msgid "More shelves" msgstr "更多书架" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:8 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:10 msgid "Start reading" msgstr "开始阅读" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:13 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:15 msgid "Finish reading" msgstr "完成阅读" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:16 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:18 #: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:26 msgid "Want to read" msgstr "想要阅读" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:45 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:47 #, python-format msgid "Remove from %(name)s" msgstr "从 %(name)s 移除" @@ -2560,40 +2589,40 @@ msgstr "开始 \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "想要阅读 \"%(book_title)s\"" -#: bookwyrm/templates/snippets/status/content_status.html:70 -#: bookwyrm/templates/snippets/trimmed_text.html:14 +#: bookwyrm/templates/snippets/status/content_status.html:71 +#: bookwyrm/templates/snippets/trimmed_text.html:15 msgid "Show more" msgstr "显示更多" -#: bookwyrm/templates/snippets/status/content_status.html:85 -#: bookwyrm/templates/snippets/trimmed_text.html:29 +#: bookwyrm/templates/snippets/status/content_status.html:86 +#: bookwyrm/templates/snippets/trimmed_text.html:30 msgid "Show less" msgstr "显示更少" -#: bookwyrm/templates/snippets/status/content_status.html:115 +#: bookwyrm/templates/snippets/status/content_status.html:116 msgid "Open image in new window" msgstr "在新窗口中打开图像" -#: bookwyrm/templates/snippets/status/layout.html:22 +#: bookwyrm/templates/snippets/status/layout.html:21 #: bookwyrm/templates/snippets/status/status_options.html:17 msgid "Delete status" msgstr "删除发文" +#: bookwyrm/templates/snippets/status/layout.html:51 #: bookwyrm/templates/snippets/status/layout.html:52 -#: bookwyrm/templates/snippets/status/layout.html:53 msgid "Boost status" msgstr "转发状态" +#: bookwyrm/templates/snippets/status/layout.html:55 #: bookwyrm/templates/snippets/status/layout.html:56 -#: bookwyrm/templates/snippets/status/layout.html:57 msgid "Like status" msgstr "喜欢状态" -#: bookwyrm/templates/snippets/status/status.html:9 +#: bookwyrm/templates/snippets/status/status.html:10 msgid "boosted" msgstr "转发了" -#: bookwyrm/templates/snippets/status/status_header.html:44 +#: bookwyrm/templates/snippets/status/status_header.html:45 #, python-format msgid "replied to %(username)s's status" msgstr "回复了 %(username)s状态" @@ -2627,15 +2656,15 @@ msgstr "升序排序" msgid "Sorted descending" msgstr "降序排序" -#: bookwyrm/templates/user/layout.html:12 bookwyrm/templates/user/user.html:10 +#: bookwyrm/templates/user/layout.html:13 bookwyrm/templates/user/user.html:10 msgid "User Profile" msgstr "用户个人资料" -#: bookwyrm/templates/user/layout.html:36 +#: bookwyrm/templates/user/layout.html:37 msgid "Follow Requests" msgstr "关注请求" -#: bookwyrm/templates/user/layout.html:61 +#: bookwyrm/templates/user/layout.html:62 msgid "Reading Goal" msgstr "阅读目标" @@ -2681,38 +2710,38 @@ msgstr "编辑书架" msgid "Update shelf" msgstr "更新书架" -#: bookwyrm/templates/user/shelf/shelf.html:24 bookwyrm/views/shelf.py:48 +#: bookwyrm/templates/user/shelf/shelf.html:25 bookwyrm/views/shelf.py:51 msgid "All books" msgstr "所有书目" -#: bookwyrm/templates/user/shelf/shelf.html:37 +#: bookwyrm/templates/user/shelf/shelf.html:38 msgid "Create shelf" msgstr "创建书架" -#: bookwyrm/templates/user/shelf/shelf.html:60 +#: bookwyrm/templates/user/shelf/shelf.html:61 msgid "Edit shelf" msgstr "编辑书架" -#: bookwyrm/templates/user/shelf/shelf.html:79 -#: bookwyrm/templates/user/shelf/shelf.html:101 +#: bookwyrm/templates/user/shelf/shelf.html:80 +#: bookwyrm/templates/user/shelf/shelf.html:104 msgid "Shelved" msgstr "上架时间" -#: bookwyrm/templates/user/shelf/shelf.html:80 -#: bookwyrm/templates/user/shelf/shelf.html:105 +#: bookwyrm/templates/user/shelf/shelf.html:81 +#: bookwyrm/templates/user/shelf/shelf.html:108 msgid "Started" msgstr "开始时间" -#: bookwyrm/templates/user/shelf/shelf.html:81 -#: bookwyrm/templates/user/shelf/shelf.html:108 +#: bookwyrm/templates/user/shelf/shelf.html:82 +#: bookwyrm/templates/user/shelf/shelf.html:111 msgid "Finished" msgstr "完成时间" -#: bookwyrm/templates/user/shelf/shelf.html:134 +#: bookwyrm/templates/user/shelf/shelf.html:137 msgid "This shelf is empty." msgstr "此书架是空的。" -#: bookwyrm/templates/user/shelf/shelf.html:140 +#: bookwyrm/templates/user/shelf/shelf.html:143 msgid "Delete shelf" msgstr "删除书架" @@ -2741,23 +2770,23 @@ msgstr "RSS 流" msgid "No activities yet!" msgstr "还没有活动!" -#: bookwyrm/templates/user/user_preview.html:14 +#: bookwyrm/templates/user/user_preview.html:15 #, python-format msgid "Joined %(date)s" msgstr "在 %(date)s 加入" -#: bookwyrm/templates/user/user_preview.html:18 +#: bookwyrm/templates/user/user_preview.html:19 #, python-format msgid "%(counter)s follower" msgid_plural "%(counter)s followers" msgstr[0] "%(counter)s 个关注者" -#: bookwyrm/templates/user/user_preview.html:19 +#: bookwyrm/templates/user/user_preview.html:20 #, python-format msgid "%(counter)s following" msgstr "关注着 %(counter)s 人" -#: bookwyrm/templates/user/user_preview.html:25 +#: bookwyrm/templates/user/user_preview.html:26 #, fuzzy, python-format #| msgid "%(mutuals)s follower you follow" #| msgid_plural "%(mutuals)s followers you follow" @@ -2765,7 +2794,7 @@ msgid "%(mutuals_display)s follower you follow" msgid_plural "%(mutuals_display)s followers you follow" msgstr[0] "%(mutuals)s 个你也关注的关注者" -#: bookwyrm/templates/user_admin/user.html:11 +#: bookwyrm/templates/user_admin/user.html:9 #, fuzzy #| msgid "Back to reports" msgid "Back to users" @@ -2838,15 +2867,20 @@ msgstr "" msgid "Access level:" msgstr "" -#: bookwyrm/views/password.py:32 +#: bookwyrm/views/password.py:30 bookwyrm/views/password.py:35 msgid "No user with that email address was found." msgstr "没有找到使用该邮箱的用户。" -#: bookwyrm/views/password.py:41 +#: bookwyrm/views/password.py:44 #, python-format msgid "A password reset link sent to %s" msgstr "密码重置连接已发送给 %s" +#, fuzzy +#~| msgid "BookWyrm users" +#~ msgid "BookWyrm\\" +#~ msgstr "BookWyrm 用户" + #, fuzzy #~| msgid "Show more" #~ msgid "Show" From 3c7882b055e71448add7eadcdb4b4727d7f7956d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 14 May 2021 16:13:32 -0700 Subject: [PATCH 204/252] Fixes abstract minimal connector test --- bookwyrm/tests/connectors/test_abstract_minimal_connector.py | 1 - 1 file changed, 1 deletion(-) diff --git a/bookwyrm/tests/connectors/test_abstract_minimal_connector.py b/bookwyrm/tests/connectors/test_abstract_minimal_connector.py index bc5625c9..84629139 100644 --- a/bookwyrm/tests/connectors/test_abstract_minimal_connector.py +++ b/bookwyrm/tests/connectors/test_abstract_minimal_connector.py @@ -53,7 +53,6 @@ class AbstractConnector(TestCase): self.assertEqual(connector.isbn_search_url, "https://example.com/isbn?q=") self.assertIsNone(connector.name) self.assertEqual(connector.identifier, "example.com") - self.assertIsNone(connector.max_query_count) self.assertFalse(connector.local) @responses.activate From 7dccce6b1fb3186d785e4ce15b489b92a13266e6 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 18 May 2021 09:59:40 -0700 Subject: [PATCH 205/252] Adds keyboard focus to add readthrough form --- bookwyrm/templates/book/book.html | 8 ++++---- bookwyrm/templates/snippets/readthrough_form.html | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 8f167528..0aa64836 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -163,12 +163,9 @@
    {% trans "Add read dates" as button_text %} - {% include 'snippets/toggle/open_button.html' with text=button_text icon="plus" class="is-small" controls_text="add-readthrough" %} + {% include 'snippets/toggle/open_button.html' with text=button_text icon="plus" class="is-small" controls_text="add-readthrough" focus="add-readthrough-focus" %}
    - {% if not readthroughs.exists %} -

    {% trans "You don't have any reading activity for this book." %}

    - {% endif %}
    + {% if not readthroughs.exists %} +

    {% trans "You don't have any reading activity for this book." %}

    + {% endif %} {% for readthrough in readthroughs %} {% include 'snippets/readthrough.html' with readthrough=readthrough %} {% endfor %} diff --git a/bookwyrm/templates/snippets/readthrough_form.html b/bookwyrm/templates/snippets/readthrough_form.html index c5be295e..891e9071 100644 --- a/bookwyrm/templates/snippets/readthrough_form.html +++ b/bookwyrm/templates/snippets/readthrough_form.html @@ -3,7 +3,7 @@
    -
    {% trans "Add read dates" as button_text %} - {% include 'snippets/toggle/open_button.html' with text=button_text icon="plus" class="is-small" controls_text="add-readthrough" focus="add-readthrough-focus" %} + {% include 'snippets/toggle/open_button.html' with text=button_text icon_with_text="plus" class="is-small" controls_text="add-readthrough" focus="add-readthrough-focus" %}
    diff --git a/bookwyrm/templates/lists/list_layout.html b/bookwyrm/templates/lists/list_layout.html index de7665e8..993587ca 100644 --- a/bookwyrm/templates/lists/list_layout.html +++ b/bookwyrm/templates/lists/list_layout.html @@ -15,7 +15,7 @@ {% if request.user == list.user %}
    {% trans "Edit List" as button_text %} - {% include 'snippets/toggle/open_button.html' with text=button_text icon="pencil" controls_text="edit-list" focus="edit-list-header" %} + {% include 'snippets/toggle/open_button.html' with text=button_text icon_with_text="pencil" controls_text="edit-list" focus="edit-list-header" %}
    {% endif %} diff --git a/bookwyrm/templates/lists/lists.html b/bookwyrm/templates/lists/lists.html index d4b0a7c2..e39d5fde 100644 --- a/bookwyrm/templates/lists/lists.html +++ b/bookwyrm/templates/lists/lists.html @@ -18,7 +18,7 @@ {% if request.user.is_authenticated %}
    {% trans "Create List" as button_text %} - {% include 'snippets/toggle/open_button.html' with controls_text="create-list" icon="plus" text=button_text focus="create-list-header" %} + {% include 'snippets/toggle/open_button.html' with controls_text="create-list" icon_with_text="plus" text=button_text focus="create-list-header" %}
    {% endif %} diff --git a/bookwyrm/templates/settings/federated_server.html b/bookwyrm/templates/settings/federated_server.html index b300a92d..9e00f92b 100644 --- a/bookwyrm/templates/settings/federated_server.html +++ b/bookwyrm/templates/settings/federated_server.html @@ -15,60 +15,64 @@ {% block panel %}
    -
    +

    {% trans "Details" %}

    -
    -
    -
    {% trans "Software:" %}
    -
    {{ server.application_type }}
    -
    -
    -
    {% trans "Version:" %}
    -
    {{ server.application_version }}
    -
    -
    -
    {% trans "Status:" %}
    -
    {{ server.status }}
    -
    -
    +
    +
    +
    +
    {% trans "Software:" %}
    +
    {{ server.application_type }}
    +
    +
    +
    {% trans "Version:" %}
    +
    {{ server.application_version }}
    +
    +
    +
    {% trans "Status:" %}
    +
    {{ server.status }}
    +
    +
    +
    -
    +

    {% trans "Activity" %}

    -
    -
    -
    {% trans "Users:" %}
    -
    - {{ users.count }} - {% if server.user_set.count %}({% trans "View all" %}){% endif %} -
    -
    -
    -
    {% trans "Reports:" %}
    -
    - {{ reports.count }} - {% if reports.count %}({% trans "View all" %}){% endif %} -
    -
    -
    -
    {% trans "Followed by us:" %}
    -
    - {{ followed_by_us.count }} -
    -
    -
    -
    {% trans "Followed by them:" %}
    -
    - {{ followed_by_them.count }} -
    -
    -
    -
    {% trans "Blocked by us:" %}
    -
    - {{ blocked_by_us.count }} -
    -
    -
    +
    +
    +
    +
    {% trans "Users:" %}
    +
    + {{ users.count }} + {% if server.user_set.count %}({% trans "View all" %}){% endif %} +
    +
    +
    +
    {% trans "Reports:" %}
    +
    + {{ reports.count }} + {% if reports.count %}({% trans "View all" %}){% endif %} +
    +
    +
    +
    {% trans "Followed by us:" %}
    +
    + {{ followed_by_us.count }} +
    +
    +
    +
    {% trans "Followed by them:" %}
    +
    + {{ followed_by_them.count }} +
    +
    +
    +
    {% trans "Blocked by us:" %}
    +
    + {{ blocked_by_us.count }} +
    +
    +
    +
    @@ -79,11 +83,11 @@
    {% trans "Edit" as button_text %} - {% include 'snippets/toggle/open_button.html' with text=button_text icon="pencil" controls_text="edit-notes" %} + {% include 'snippets/toggle/open_button.html' with text=button_text icon_with_text="pencil" controls_text="edit-notes" %}
    {% if server.notes %} -

    {{ server.notes|to_markdown|safe }}

    +
    {{ server.notes|to_markdown|safe }}
    {% endif %}