diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml index 08661e9c..a3117f7c 100644 --- a/.github/workflows/pylint.yml +++ b/.github/workflows/pylint.yml @@ -21,8 +21,7 @@ jobs: run: | python -m pip install --upgrade pip pip install -r requirements.txt - pip install pylint - name: Analysing the code with pylint run: | - pylint bookwyrm/ --ignore=migrations --disable=E1101,E1135,E1136,R0903,R0901,R0902,W0707,W0511,W0406,R0401,R0801 + pylint bookwyrm/ diff --git a/.pylintrc b/.pylintrc new file mode 100644 index 00000000..7f92d016 --- /dev/null +++ b/.pylintrc @@ -0,0 +1,6 @@ +[MAIN] +ignore=migrations +load-plugins=pylint.extensions.no_self_use + +[MESSAGES CONTROL] +disable=E1101,E1135,E1136,R0903,R0901,R0902,W0707,W0511,W0406,R0401,R0801,C3001 diff --git a/Dockerfile b/Dockerfile index 349dd82b..b3cd26e8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,6 +6,7 @@ RUN mkdir /app /app/static /app/images WORKDIR /app +RUN apt-get update && apt-get install -y gettext libgettextpo-dev tidy && apt-get clean + COPY requirements.txt /app/ RUN pip install -r requirements.txt --no-cache-dir -RUN apt-get update && apt-get install -y gettext libgettextpo-dev tidy && apt-get clean diff --git a/bookwyrm/book_search.py b/bookwyrm/book_search.py index e42a6d8c..4b0a6eab 100644 --- a/bookwyrm/book_search.py +++ b/bookwyrm/book_search.py @@ -148,8 +148,8 @@ class SearchResult: def __repr__(self): # pylint: disable=consider-using-f-string - return "".format( - self.key, self.title, self.author + return "".format( + self.key, self.title, self.author, self.confidence ) def json(self): diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index 56e27388..dc4be4b3 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -1,9 +1,8 @@ """ functionality outline for a book data connector """ from abc import ABC, abstractmethod import imghdr -import ipaddress import logging -from urllib.parse import urlparse +import re from django.core.files.base import ContentFile from django.db import transaction @@ -11,7 +10,7 @@ import requests from requests.exceptions import RequestException from bookwyrm import activitypub, models, settings -from .connector_manager import load_more_data, ConnectorException +from .connector_manager import load_more_data, ConnectorException, raise_not_valid_url from .format_mappings import format_mappings @@ -39,62 +38,34 @@ class AbstractMinimalConnector(ABC): for field in self_fields: setattr(self, field, getattr(info, field)) - def search(self, query, min_confidence=None, timeout=settings.QUERY_TIMEOUT): - """free text search""" - params = {} - if min_confidence: - params["min_confidence"] = min_confidence + def get_search_url(self, query): + """format the query url""" + # Check if the query resembles an ISBN + if maybe_isbn(query) and self.isbn_search_url and self.isbn_search_url != "": + return f"{self.isbn_search_url}{query}" - data = self.get_search_data( - f"{self.search_url}{query}", - params=params, - timeout=timeout, - ) - results = [] + # NOTE: previously, we tried searching isbn and if that produces no results, + # searched as free text. This, instead, only searches isbn if it's isbn-y + return f"{self.search_url}{query}" - for doc in self.parse_search_data(data)[:10]: - results.append(self.format_search_result(doc)) - return results - - def isbn_search(self, query, timeout=settings.QUERY_TIMEOUT): - """isbn search""" - params = {} - data = self.get_search_data( - f"{self.isbn_search_url}{query}", - params=params, - timeout=timeout, - ) - results = [] - - # this shouldn't be returning mutliple results, but just in case - for doc in self.parse_isbn_search_data(data)[:10]: - 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) + def process_search_response(self, query, data, min_confidence): + """Format the search results based on the formt of the query""" + if maybe_isbn(query): + return list(self.parse_isbn_search_data(data))[:10] + return list(self.parse_search_data(data, min_confidence))[:10] @abstractmethod def get_or_create_book(self, remote_id): """pull up a book record by whatever means possible""" @abstractmethod - def parse_search_data(self, data): + def parse_search_data(self, data, min_confidence): """turn the result json from a search into a list""" - @abstractmethod - def format_search_result(self, search_result): - """create a SearchResult obj from json""" - @abstractmethod def parse_isbn_search_data(self, data): """turn the result json from a search into a list""" - @abstractmethod - def format_isbn_search_result(self, search_result): - """create a SearchResult obj from json""" - class AbstractConnector(AbstractMinimalConnector): """generic book data connector""" @@ -254,9 +225,6 @@ def get_data(url, params=None, timeout=10): # check if the url is blocked raise_not_valid_url(url) - if models.FederatedServer.is_blocked(url): - raise ConnectorException(f"Attempting to load data from blocked url: {url}") - try: resp = requests.get( url, @@ -311,20 +279,6 @@ def get_image(url, timeout=10): return image_content, extension -def raise_not_valid_url(url): - """do some basic reality checks on the url""" - parsed = urlparse(url) - if not parsed.scheme in ["http", "https"]: - raise ConnectorException("Invalid scheme: ", url) - - try: - ipaddress.ip_address(parsed.netloc) - raise ConnectorException("Provided url is an IP address: ", url) - except ValueError: - # it's not an IP address, which is good - pass - - class Mapping: """associate a local database field with a field in an external dataset""" @@ -366,3 +320,9 @@ def unique_physical_format(format_text): # try a direct match, so saving this would be redundant return None return format_text + + +def maybe_isbn(query): + """check if a query looks like an isbn""" + isbn = re.sub(r"[\W_]", "", query) # removes filler characters + return len(isbn) in [10, 13] # ISBN10 or ISBN13 diff --git a/bookwyrm/connectors/bookwyrm_connector.py b/bookwyrm/connectors/bookwyrm_connector.py index 6dcba7c3..e07a0b28 100644 --- a/bookwyrm/connectors/bookwyrm_connector.py +++ b/bookwyrm/connectors/bookwyrm_connector.py @@ -10,15 +10,12 @@ class Connector(AbstractMinimalConnector): def get_or_create_book(self, remote_id): return activitypub.resolve_remote_id(remote_id, model=models.Edition) - def parse_search_data(self, data): - return data - - def format_search_result(self, search_result): - search_result["connector"] = self - return SearchResult(**search_result) + def parse_search_data(self, data, min_confidence): + for search_result in data: + search_result["connector"] = self + yield SearchResult(**search_result) def parse_isbn_search_data(self, data): - return data - - def format_isbn_search_result(self, search_result): - return self.format_search_result(search_result) + for search_result in data: + search_result["connector"] = self + yield SearchResult(**search_result) diff --git a/bookwyrm/connectors/connector_manager.py b/bookwyrm/connectors/connector_manager.py index 14bb702c..86774af5 100644 --- a/bookwyrm/connectors/connector_manager.py +++ b/bookwyrm/connectors/connector_manager.py @@ -1,17 +1,18 @@ """ interface with whatever connectors the app has """ -from datetime import datetime +import asyncio import importlib +import ipaddress import logging -import re from urllib.parse import urlparse +import aiohttp from django.dispatch import receiver from django.db.models import signals from requests import HTTPError from bookwyrm import book_search, models -from bookwyrm.settings import SEARCH_TIMEOUT +from bookwyrm.settings import SEARCH_TIMEOUT, USER_AGENT from bookwyrm.tasks import app logger = logging.getLogger(__name__) @@ -21,53 +22,85 @@ class ConnectorException(HTTPError): """when the connector can't do what was asked""" +async def get_results(session, url, min_confidence, query, connector): + """try this specific connector""" + # pylint: disable=line-too-long + headers = { + "Accept": ( + 'application/json, application/activity+json, application/ld+json; profile="https://www.w3.org/ns/activitystreams"; charset=utf-8' + ), + "User-Agent": USER_AGENT, + } + params = {"min_confidence": min_confidence} + try: + async with session.get(url, headers=headers, params=params) as response: + if not response.ok: + logger.info("Unable to connect to %s: %s", url, response.reason) + return + + try: + raw_data = await response.json() + except aiohttp.client_exceptions.ContentTypeError as err: + logger.exception(err) + return + + return { + "connector": connector, + "results": connector.process_search_response( + query, raw_data, min_confidence + ), + } + except asyncio.TimeoutError: + logger.info("Connection timed out for url: %s", url) + except aiohttp.ClientError as err: + logger.exception(err) + + +async def async_connector_search(query, items, min_confidence): + """Try a number of requests simultaneously""" + timeout = aiohttp.ClientTimeout(total=SEARCH_TIMEOUT) + async with aiohttp.ClientSession(timeout=timeout) as session: + tasks = [] + for url, connector in items: + tasks.append( + asyncio.ensure_future( + get_results(session, url, min_confidence, query, connector) + ) + ) + + results = await asyncio.gather(*tasks) + return results + + def search(query, min_confidence=0.1, return_first=False): """find books based on arbitary keywords""" if not query: return [] results = [] - # Have we got a ISBN ? - isbn = re.sub(r"[\W_]", "", query) - maybe_isbn = len(isbn) in [10, 13] # ISBN10 or ISBN13 - - start_time = datetime.now() + items = [] for connector in get_connectors(): - result_set = None - if maybe_isbn and connector.isbn_search_url and connector.isbn_search_url != "": - # Search on ISBN - try: - result_set = connector.isbn_search(isbn) - except Exception as err: # pylint: disable=broad-except - logger.info(err) - # if this fails, we can still try regular search + # get the search url from the connector before sending + url = connector.get_search_url(query) + try: + raise_not_valid_url(url) + except ConnectorException: + # if this URL is invalid we should skip it and move on + logger.info("Request denied to blocked domain: %s", url) + continue + items.append((url, connector)) - # if no isbn search results, we fallback to generic search - if not result_set: - try: - result_set = connector.search(query, min_confidence=min_confidence) - except Exception as err: # pylint: disable=broad-except - # we don't want *any* error to crash the whole search page - logger.info(err) - continue - - if return_first and result_set: - # if we found anything, return it - return result_set[0] - - if result_set: - results.append( - { - "connector": connector, - "results": result_set, - } - ) - if (datetime.now() - start_time).seconds >= SEARCH_TIMEOUT: - break + # load as many results as we can + results = asyncio.run(async_connector_search(query, items, min_confidence)) + results = [r for r in results if r] if return_first: - return None + # find the best result from all the responses and return that + all_results = [r for con in results for r in con["results"]] + all_results = sorted(all_results, key=lambda r: r.confidence, reverse=True) + return all_results[0] if all_results else None + # failed requests will return None, so filter those out return results @@ -133,3 +166,20 @@ def create_connector(sender, instance, created, *args, **kwargs): """create a connector to an external bookwyrm server""" if instance.application_type == "bookwyrm": get_or_create_connector(f"https://{instance.server_name}") + + +def raise_not_valid_url(url): + """do some basic reality checks on the url""" + parsed = urlparse(url) + if not parsed.scheme in ["http", "https"]: + raise ConnectorException("Invalid scheme: ", url) + + try: + ipaddress.ip_address(parsed.netloc) + raise ConnectorException("Provided url is an IP address: ", url) + except ValueError: + # it's not an IP address, which is good + pass + + if models.FederatedServer.is_blocked(url): + raise ConnectorException(f"Attempting to load data from blocked url: {url}") diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index a9aeb94f..c13f4e3e 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -77,53 +77,42 @@ class Connector(AbstractConnector): **{k: data.get(k) for k in ["uri", "image", "labels", "sitelinks", "type"]}, } - def search(self, query, min_confidence=None): # pylint: disable=arguments-differ - """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") - - def format_search_result(self, search_result): - images = search_result.get("image") - cover = f"{self.covers_url}/img/entities/{images[0]}" 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")), - author=search_result.get("description"), - view_link=f"{self.base_url}/entity/{search_result.get('uri')}", - cover=cover, - confidence=confidence, - connector=self, - ) + def parse_search_data(self, data, min_confidence): + for search_result in data.get("results", []): + images = search_result.get("image") + cover = f"{self.covers_url}/img/entities/{images[0]}" 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 + if confidence < min_confidence: + continue + yield SearchResult( + title=search_result.get("label"), + key=self.get_remote_id(search_result.get("uri")), + author=search_result.get("description"), + view_link=f"{self.base_url}/entity/{search_result.get('uri')}", + cover=cover, + confidence=confidence, + connector=self, + ) def parse_isbn_search_data(self, data): """got some daaaata""" results = data.get("entities") if not results: - return [] - return list(results.values()) - - def format_isbn_search_result(self, search_result): - """totally different format than a regular search result""" - title = search_result.get("claims", {}).get("wdt:P1476", []) - if not title: - return None - return SearchResult( - title=title[0], - key=self.get_remote_id(search_result.get("uri")), - author=search_result.get("description"), - view_link=f"{self.base_url}/entity/{search_result.get('uri')}", - cover=self.get_cover_url(search_result.get("image")), - connector=self, - ) + return + for search_result in list(results.values()): + title = search_result.get("claims", {}).get("wdt:P1476", []) + if not title: + continue + yield SearchResult( + title=title[0], + key=self.get_remote_id(search_result.get("uri")), + author=search_result.get("description"), + view_link=f"{self.base_url}/entity/{search_result.get('uri')}", + cover=self.get_cover_url(search_result.get("image")), + connector=self, + ) def is_work_data(self, data): return data.get("type") == "work" diff --git a/bookwyrm/connectors/openlibrary.py b/bookwyrm/connectors/openlibrary.py index 118222a1..c1527527 100644 --- a/bookwyrm/connectors/openlibrary.py +++ b/bookwyrm/connectors/openlibrary.py @@ -152,39 +152,41 @@ class Connector(AbstractConnector): image_name = f"{cover_id}-{size}.jpg" return f"{self.covers_url}/b/id/{image_name}" - def parse_search_data(self, data): - return data.get("docs") + def parse_search_data(self, data, min_confidence): + for idx, search_result in enumerate(data.get("docs")): + # build the remote id from the openlibrary key + key = self.books_url + search_result["key"] + author = search_result.get("author_name") or ["Unknown"] + cover_blob = search_result.get("cover_i") + cover = self.get_cover_url([cover_blob], size="M") if cover_blob else None - def format_search_result(self, search_result): - # build the remote id from the openlibrary key - key = self.books_url + search_result["key"] - author = search_result.get("author_name") or ["Unknown"] - cover_blob = search_result.get("cover_i") - cover = self.get_cover_url([cover_blob], size="M") if cover_blob else None - return SearchResult( - title=search_result.get("title"), - key=key, - author=", ".join(author), - connector=self, - year=search_result.get("first_publish_year"), - cover=cover, - ) + # OL doesn't provide confidence, but it does sort by an internal ranking, so + # this confidence value is relative to the list position + confidence = 1 / (idx + 1) + + yield SearchResult( + title=search_result.get("title"), + key=key, + author=", ".join(author), + connector=self, + year=search_result.get("first_publish_year"), + cover=cover, + confidence=confidence, + ) def parse_isbn_search_data(self, data): - return list(data.values()) - - def format_isbn_search_result(self, search_result): - # build the remote id from the openlibrary key - key = self.books_url + search_result["key"] - authors = search_result.get("authors") or [{"name": "Unknown"}] - author_names = [author.get("name") for author in authors] - return SearchResult( - title=search_result.get("title"), - key=key, - author=", ".join(author_names), - connector=self, - year=search_result.get("publish_date"), - ) + for search_result in list(data.values()): + # build the remote id from the openlibrary key + key = self.books_url + search_result["key"] + authors = search_result.get("authors") or [{"name": "Unknown"}] + author_names = [author.get("name") for author in authors] + yield SearchResult( + title=search_result.get("title"), + key=key, + author=", ".join(author_names), + connector=self, + year=search_result.get("publish_date"), + ) def load_edition_data(self, olkey): """query openlibrary for editions of a work""" diff --git a/bookwyrm/management/commands/initdb.py b/bookwyrm/management/commands/initdb.py index 160502ca..23020a0a 100644 --- a/bookwyrm/management/commands/initdb.py +++ b/bookwyrm/management/commands/initdb.py @@ -89,7 +89,7 @@ def init_connectors(): 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, + priority=1, ) models.Connector.objects.create( @@ -101,7 +101,7 @@ def init_connectors(): covers_url="https://covers.openlibrary.org", search_url="https://openlibrary.org/search?q=", isbn_search_url="https://openlibrary.org/api/books?jscmd=data&format=json&bibkeys=ISBN:", - priority=3, + priority=1, ) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index e16c576e..dc0d71f3 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -212,7 +212,7 @@ STREAMS = [ # Search configuration # total time in seconds that the instance will spend searching connectors -SEARCH_TIMEOUT = int(env("SEARCH_TIMEOUT", 15)) +SEARCH_TIMEOUT = int(env("SEARCH_TIMEOUT", 8)) # timeout for a query to an individual connector QUERY_TIMEOUT = int(env("QUERY_TIMEOUT", 5)) diff --git a/bookwyrm/templates/about/layout.html b/bookwyrm/templates/about/layout.html index 458e4b1d..e921fcd2 100644 --- a/bookwyrm/templates/about/layout.html +++ b/bookwyrm/templates/about/layout.html @@ -50,7 +50,7 @@ -
+
{% block about_content %}{% endblock %}
diff --git a/bookwyrm/templates/search/book.html b/bookwyrm/templates/search/book.html index 7096a55d..d2828eab 100644 --- a/bookwyrm/templates/search/book.html +++ b/bookwyrm/templates/search/book.html @@ -36,7 +36,7 @@ {% if result_set.results %}
{% if not result_set.connector.local %} -
+
{% endif %} {% if not result_set.connector.local %} diff --git a/bookwyrm/tests/connectors/test_abstract_connector.py b/bookwyrm/tests/connectors/test_abstract_connector.py index 26742c05..02ac5c66 100644 --- a/bookwyrm/tests/connectors/test_abstract_connector.py +++ b/bookwyrm/tests/connectors/test_abstract_connector.py @@ -42,15 +42,9 @@ class AbstractConnector(TestCase): generated_remote_link_field = "openlibrary_link" - def format_search_result(self, search_result): - return search_result - - def parse_search_data(self, data): + def parse_search_data(self, data, min_confidence): return data - def format_isbn_search_result(self, search_result): - return search_result - def parse_isbn_search_data(self, data): return data diff --git a/bookwyrm/tests/connectors/test_abstract_minimal_connector.py b/bookwyrm/tests/connectors/test_abstract_minimal_connector.py index a90ce0c7..119ca358 100644 --- a/bookwyrm/tests/connectors/test_abstract_minimal_connector.py +++ b/bookwyrm/tests/connectors/test_abstract_minimal_connector.py @@ -1,6 +1,5 @@ """ testing book data connectors """ from django.test import TestCase -import responses from bookwyrm import models from bookwyrm.connectors import abstract_connector @@ -25,18 +24,12 @@ class AbstractConnector(TestCase): class TestConnector(abstract_connector.AbstractMinimalConnector): """nothing added here""" - def format_search_result(self, search_result): - return search_result - def get_or_create_book(self, remote_id): pass - def parse_search_data(self, data): + def parse_search_data(self, data, min_confidence): return data - def format_isbn_search_result(self, search_result): - return search_result - def parse_isbn_search_data(self, data): return data @@ -54,45 +47,6 @@ class AbstractConnector(TestCase): self.assertIsNone(connector.name) self.assertEqual(connector.identifier, "example.com") - @responses.activate - def test_search(self): - """makes an http request to the outside service""" - responses.add( - responses.GET, - "https://example.com/search?q=a%20book%20title", - json=["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l"], - status=200, - ) - results = self.test_connector.search("a book title") - self.assertEqual(len(results), 10) - self.assertEqual(results[0], "a") - self.assertEqual(results[1], "b") - self.assertEqual(results[2], "c") - - @responses.activate - def test_search_min_confidence(self): - """makes an http request to the outside service""" - responses.add( - responses.GET, - "https://example.com/search?q=a%20book%20title&min_confidence=1", - json=["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l"], - status=200, - ) - results = self.test_connector.search("a book title", min_confidence=1) - self.assertEqual(len(results), 10) - - @responses.activate - def test_isbn_search(self): - """makes an http request to the outside service""" - responses.add( - responses.GET, - "https://example.com/isbn?q=123456", - json=["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l"], - status=200, - ) - results = self.test_connector.isbn_search("123456") - self.assertEqual(len(results), 10) - def test_create_mapping(self): """maps remote fields for book data to bookwyrm activitypub fields""" mapping = Mapping("isbn") diff --git a/bookwyrm/tests/connectors/test_bookwyrm_connector.py b/bookwyrm/tests/connectors/test_bookwyrm_connector.py index 585080e6..1e369ca0 100644 --- a/bookwyrm/tests/connectors/test_bookwyrm_connector.py +++ b/bookwyrm/tests/connectors/test_bookwyrm_connector.py @@ -30,14 +30,11 @@ class BookWyrmConnector(TestCase): result = self.connector.get_or_create_book(book.remote_id) self.assertEqual(book, result) - def test_format_search_result(self): + def test_parse_search_data(self): """create a SearchResult object from search response json""" datafile = pathlib.Path(__file__).parent.joinpath("../data/bw_search.json") search_data = json.loads(datafile.read_bytes()) - results = self.connector.parse_search_data(search_data) - self.assertIsInstance(results, list) - - result = self.connector.format_search_result(results[0]) + result = list(self.connector.parse_search_data(search_data, 0))[0] self.assertIsInstance(result, SearchResult) self.assertEqual(result.title, "Jonathan Strange and Mr Norrell") self.assertEqual(result.key, "https://example.com/book/122") @@ -45,10 +42,9 @@ class BookWyrmConnector(TestCase): self.assertEqual(result.year, 2017) self.assertEqual(result.connector, self.connector) - def test_format_isbn_search_result(self): + def test_parse_isbn_search_data(self): """just gotta attach the connector""" datafile = pathlib.Path(__file__).parent.joinpath("../data/bw_search.json") search_data = json.loads(datafile.read_bytes()) - results = self.connector.parse_isbn_search_data(search_data) - result = self.connector.format_isbn_search_result(results[0]) + result = list(self.connector.parse_isbn_search_data(search_data))[0] self.assertEqual(result.connector, self.connector) diff --git a/bookwyrm/tests/connectors/test_connector_manager.py b/bookwyrm/tests/connectors/test_connector_manager.py index c88a8036..c0c09147 100644 --- a/bookwyrm/tests/connectors/test_connector_manager.py +++ b/bookwyrm/tests/connectors/test_connector_manager.py @@ -49,39 +49,11 @@ class ConnectorManager(TestCase): self.assertEqual(len(connectors), 1) self.assertIsInstance(connectors[0], BookWyrmConnector) - @responses.activate - def test_search_plaintext(self): - """search all connectors""" - responses.add( - responses.GET, - "http://fake.ciom/search/Example?min_confidence=0.1", - json=[{"title": "Hello", "key": "https://www.example.com/search/1"}], - ) - results = connector_manager.search("Example") - self.assertEqual(len(results), 1) - self.assertEqual(len(results[0]["results"]), 1) - self.assertEqual(results[0]["connector"].identifier, "test_connector_remote") - self.assertEqual(results[0]["results"][0].title, "Hello") - 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=[{"title": "Hello", "key": "https://www.example.com/search/1"}], - ) - results = connector_manager.search("0000000000") - self.assertEqual(len(results), 1) - self.assertEqual(len(results[0]["results"]), 1) - self.assertEqual(results[0]["connector"].identifier, "test_connector_remote") - self.assertEqual(results[0]["results"][0].title, "Hello") - def test_first_search_result(self): """only get one search result""" result = connector_manager.first_search_result("Example") diff --git a/bookwyrm/tests/connectors/test_inventaire_connector.py b/bookwyrm/tests/connectors/test_inventaire_connector.py index 55727a60..3bba9ece 100644 --- a/bookwyrm/tests/connectors/test_inventaire_connector.py +++ b/bookwyrm/tests/connectors/test_inventaire_connector.py @@ -66,38 +66,14 @@ class Inventaire(TestCase): with self.assertRaises(ConnectorException): self.connector.get_book_data("https://test.url/ok") - @responses.activate - def test_search(self): - """min confidence filtering""" - responses.add( - responses.GET, - "https://inventaire.io/search?q=hi", - json={ - "results": [ - { - "_score": 200, - "label": "hello", - }, - { - "_score": 100, - "label": "hi", - }, - ], - }, - ) - results = self.connector.search("hi", min_confidence=0.5) - self.assertEqual(len(results), 1) - self.assertEqual(results[0].title, "hello") - - def test_format_search_result(self): + def test_parse_search_data(self): """json to search result objs""" search_file = pathlib.Path(__file__).parent.joinpath( "../data/inventaire_search.json" ) search_results = json.loads(search_file.read_bytes()) - results = self.connector.parse_search_data(search_results) - formatted = self.connector.format_search_result(results[0]) + formatted = list(self.connector.parse_search_data(search_results, 0))[0] self.assertEqual(formatted.title, "The Stories of Vladimir Nabokov") self.assertEqual( @@ -178,15 +154,14 @@ class Inventaire(TestCase): result = self.connector.resolve_keys(keys) self.assertEqual(result, ["epistolary novel", "crime novel"]) - def test_isbn_search(self): + def test_pase_isbn_search_data(self): """another search type""" search_file = pathlib.Path(__file__).parent.joinpath( "../data/inventaire_isbn_search.json" ) search_results = json.loads(search_file.read_bytes()) - results = self.connector.parse_isbn_search_data(search_results) - formatted = self.connector.format_isbn_search_result(results[0]) + formatted = list(self.connector.parse_isbn_search_data(search_results))[0] self.assertEqual(formatted.title, "L'homme aux cercles bleus") self.assertEqual( @@ -198,25 +173,12 @@ class Inventaire(TestCase): "https://covers.inventaire.io/img/entities/12345", ) - def test_isbn_search_empty(self): + def test_parse_isbn_search_data_empty(self): """another search type""" search_results = {} - results = self.connector.parse_isbn_search_data(search_results) + results = list(self.connector.parse_isbn_search_data(search_results)) self.assertEqual(results, []) - def test_isbn_search_no_title(self): - """another search type""" - search_file = pathlib.Path(__file__).parent.joinpath( - "../data/inventaire_isbn_search.json" - ) - search_results = json.loads(search_file.read_bytes()) - search_results["entities"]["isbn:9782290349229"]["claims"]["wdt:P1476"] = None - - result = self.connector.format_isbn_search_result( - search_results.get("entities") - ) - self.assertIsNone(result) - def test_is_work_data(self): """is it a work""" work_file = pathlib.Path(__file__).parent.joinpath( diff --git a/bookwyrm/tests/connectors/test_openlibrary_connector.py b/bookwyrm/tests/connectors/test_openlibrary_connector.py index c05eb1a9..05ba39ab 100644 --- a/bookwyrm/tests/connectors/test_openlibrary_connector.py +++ b/bookwyrm/tests/connectors/test_openlibrary_connector.py @@ -122,21 +122,11 @@ class Openlibrary(TestCase): self.assertEqual(result, "https://covers.openlibrary.org/b/id/image-L.jpg") def test_parse_search_result(self): - """extract the results from the search json response""" - datafile = pathlib.Path(__file__).parent.joinpath("../data/ol_search.json") - search_data = json.loads(datafile.read_bytes()) - result = self.connector.parse_search_data(search_data) - self.assertIsInstance(result, list) - self.assertEqual(len(result), 2) - - def test_format_search_result(self): """translate json from openlibrary into SearchResult""" datafile = pathlib.Path(__file__).parent.joinpath("../data/ol_search.json") search_data = json.loads(datafile.read_bytes()) - results = self.connector.parse_search_data(search_data) - self.assertIsInstance(results, list) + result = list(self.connector.parse_search_data(search_data, 0))[0] - result = self.connector.format_search_result(results[0]) self.assertIsInstance(result, SearchResult) self.assertEqual(result.title, "This Is How You Lose the Time War") self.assertEqual(result.key, "https://openlibrary.org/works/OL20639540W") @@ -148,18 +138,10 @@ class Openlibrary(TestCase): """extract the results from the search json response""" datafile = pathlib.Path(__file__).parent.joinpath("../data/ol_isbn_search.json") search_data = json.loads(datafile.read_bytes()) - result = self.connector.parse_isbn_search_data(search_data) - self.assertIsInstance(result, list) + result = list(self.connector.parse_isbn_search_data(search_data)) self.assertEqual(len(result), 1) - def test_format_isbn_search_result(self): - """translate json from openlibrary into SearchResult""" - datafile = pathlib.Path(__file__).parent.joinpath("../data/ol_isbn_search.json") - search_data = json.loads(datafile.read_bytes()) - results = self.connector.parse_isbn_search_data(search_data) - self.assertIsInstance(results, list) - - result = self.connector.format_isbn_search_result(results[0]) + result = result[0] self.assertIsInstance(result, SearchResult) self.assertEqual(result.title, "Les ombres errantes") self.assertEqual(result.key, "https://openlibrary.org/books/OL16262504M") @@ -229,7 +211,7 @@ class Openlibrary(TestCase): status=200, ) with patch( - "bookwyrm.connectors.openlibrary.Connector." "get_authors_from_data" + "bookwyrm.connectors.openlibrary.Connector.get_authors_from_data" ) as mock: mock.return_value = [] result = self.connector.create_edition_from_data(work, self.edition_data) diff --git a/bookwyrm/tests/models/test_import_model.py b/bookwyrm/tests/models/test_import_model.py index 7cecfe41..d1ff209f 100644 --- a/bookwyrm/tests/models/test_import_model.py +++ b/bookwyrm/tests/models/test_import_model.py @@ -195,7 +195,7 @@ class ImportJob(TestCase): ) as search: search.return_value = result with patch( - "bookwyrm.connectors.openlibrary.Connector." "get_authors_from_data" + "bookwyrm.connectors.openlibrary.Connector.get_authors_from_data" ): book = item.get_book_from_identifier() diff --git a/bookwyrm/tests/test_book_search.py b/bookwyrm/tests/test_book_search.py index 16435fff..7274cb49 100644 --- a/bookwyrm/tests/test_book_search.py +++ b/bookwyrm/tests/test_book_search.py @@ -102,18 +102,12 @@ class BookSearch(TestCase): class TestConnector(AbstractMinimalConnector): """nothing added here""" - def format_search_result(self, search_result): - return search_result - def get_or_create_book(self, remote_id): pass - def parse_search_data(self, data): + def parse_search_data(self, data, min_confidence): return data - def format_isbn_search_result(self, search_result): - return search_result - def parse_isbn_search_data(self, data): return data diff --git a/bookwyrm/tests/views/test_search.py b/bookwyrm/tests/views/test_search.py index 2df04f58..51166f2f 100644 --- a/bookwyrm/tests/views/test_search.py +++ b/bookwyrm/tests/views/test_search.py @@ -1,6 +1,5 @@ """ test for app action functionality """ import json -import pathlib from unittest.mock import patch from django.contrib.auth.models import AnonymousUser @@ -8,9 +7,9 @@ from django.http import JsonResponse from django.template.response import TemplateResponse from django.test import TestCase from django.test.client import RequestFactory -import responses from bookwyrm import models, views +from bookwyrm.book_search import SearchResult from bookwyrm.settings import DOMAIN from bookwyrm.tests.validate_html import validate_html @@ -65,12 +64,11 @@ class Views(TestCase): self.assertIsInstance(response, TemplateResponse) validate_html(response.render()) - @responses.activate def test_search_books(self): """searches remote connectors""" view = views.Search.as_view() - models.Connector.objects.create( + connector = models.Connector.objects.create( identifier="example.com", connector_file="openlibrary", base_url="https://example.com", @@ -78,26 +76,24 @@ class Views(TestCase): covers_url="https://example.com/covers", search_url="https://example.com/search?q=", ) - datafile = pathlib.Path(__file__).parent.joinpath("../data/ol_search.json") - search_data = json.loads(datafile.read_bytes()) - responses.add( - responses.GET, "https://example.com/search?q=Test%20Book", json=search_data - ) + mock_result = SearchResult(title="Mock Book", connector=connector, key="hello") 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 - response = view(request) + with patch("bookwyrm.connectors.connector_manager.search") as remote_search: + remote_search.return_value = [ + {"results": [mock_result], "connector": connector} + ] + response = view(request) + self.assertIsInstance(response, TemplateResponse) validate_html(response.render()) connector_results = response.context_data["results"] self.assertEqual(len(connector_results), 2) self.assertEqual(connector_results[0]["results"][0].title, "Test Book") - self.assertEqual( - connector_results[1]["results"][0].title, - "This Is How You Lose the Time War", - ) + self.assertEqual(connector_results[1]["results"][0].title, "Mock Book") # don't search remote request = self.factory.get("", {"q": "Test Book", "remote": True}) @@ -106,7 +102,11 @@ class Views(TestCase): request.user = anonymous_user with patch("bookwyrm.views.search.is_api_request") as is_api: is_api.return_value = False - response = view(request) + with patch("bookwyrm.connectors.connector_manager.search") as remote_search: + remote_search.return_value = [ + {"results": [mock_result], "connector": connector} + ] + response = view(request) self.assertIsInstance(response, TemplateResponse) validate_html(response.render()) connector_results = response.context_data["results"] diff --git a/bookwyrm/tests/views/test_status.py b/bookwyrm/tests/views/test_status.py index 35507157..0026c52b 100644 --- a/bookwyrm/tests/views/test_status.py +++ b/bookwyrm/tests/views/test_status.py @@ -281,7 +281,7 @@ http://www.fish.com/""" result = views.status.to_markdown(text) self.assertEqual( result, - '

hi and fish.com ' "is rad

", + '

hi and fish.com is rad

', ) def test_to_markdown_detect_url(self, *_): @@ -297,7 +297,7 @@ http://www.fish.com/""" """this is mostly handled in other places, but nonetheless""" text = "[hi](http://fish.com) is rad" result = views.status.to_markdown(text) - self.assertEqual(result, '

hi ' "is rad

") + self.assertEqual(result, '

hi is rad

') def test_delete_status(self, mock, *_): """marks a status as deleted""" diff --git a/bw-dev b/bw-dev index 058f2639..4dd543c0 100755 --- a/bw-dev +++ b/bw-dev @@ -140,6 +140,10 @@ case "$CMD" in black) docker-compose run --rm dev-tools black celerywyrm bookwyrm ;; + pylint) + # pylint depends on having the app dependencies in place, so we run it in the web container + runweb pylint bookwyrm/ + ;; prettier) docker-compose run --rm dev-tools npx prettier --write bookwyrm/static/js/*.js ;; @@ -149,6 +153,7 @@ case "$CMD" in --config dev-tools/.stylelintrc.js ;; formatters) + runweb pylint bookwyrm/ docker-compose run --rm dev-tools black celerywyrm bookwyrm docker-compose run --rm dev-tools npx prettier --write bookwyrm/static/js/*.js docker-compose run --rm dev-tools npx stylelint \ diff --git a/locale/de_DE/LC_MESSAGES/django.mo b/locale/de_DE/LC_MESSAGES/django.mo index 4ce83f72..ccd061ca 100644 Binary files a/locale/de_DE/LC_MESSAGES/django.mo and b/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index 6f80c594..0775ccaf 100644 --- a/locale/de_DE/LC_MESSAGES/django.po +++ b/locale/de_DE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-08 21:00+0000\n" -"PO-Revision-Date: 2022-04-30 13:02\n" +"POT-Creation-Date: 2022-05-23 21:04+0000\n" +"PO-Revision-Date: 2022-05-24 01:06\n" "Last-Translator: Mouse Reeve \n" "Language-Team: German\n" "Language: de\n" @@ -121,25 +121,25 @@ msgstr "Gefahr" msgid "Automatically generated report" msgstr "Automatisch generierter Report" -#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 +#: bookwyrm/models/base_model.py:18 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 #: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "Ausstehend" -#: bookwyrm/models/base_model.py:18 +#: bookwyrm/models/base_model.py:19 msgid "Self deletion" msgstr "Selbstlöschung" -#: bookwyrm/models/base_model.py:19 +#: bookwyrm/models/base_model.py:20 msgid "Moderator suspension" msgstr "Moderator*in suspendieren" -#: bookwyrm/models/base_model.py:20 +#: bookwyrm/models/base_model.py:21 msgid "Moderator deletion" msgstr "Moderator*in löschen" -#: bookwyrm/models/base_model.py:21 +#: bookwyrm/models/base_model.py:22 msgid "Domain block" msgstr "Domainsperrung" @@ -734,7 +734,7 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:202 -#: bookwyrm/templates/book/edit/edit_book.html:127 +#: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 #: bookwyrm/templates/groups/form.html:32 @@ -757,8 +757,8 @@ msgstr "Speichern" #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:203 #: bookwyrm/templates/book/cover_add_modal.html:33 -#: bookwyrm/templates/book/edit/edit_book.html:129 -#: bookwyrm/templates/book/edit/edit_book.html:132 +#: bookwyrm/templates/book/edit/edit_book.html:137 +#: bookwyrm/templates/book/edit/edit_book.html:140 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 #: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 @@ -780,7 +780,7 @@ msgid "Loading data will connect to %(source_name)s and check f msgstr "Das Laden von Daten wird eine Verbindung zu %(source_name)s aufbauen und überprüfen, ob Autor*in-Informationen vorliegen, die hier noch nicht bekannt sind. Bestehende Informationen werden nicht überschrieben." #: bookwyrm/templates/author/sync_modal.html:24 -#: bookwyrm/templates/book/edit/edit_book.html:114 +#: bookwyrm/templates/book/edit/edit_book.html:122 #: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 @@ -949,42 +949,42 @@ msgstr "„%(book_title)s“ bearbeiten" msgid "Add Book" msgstr "Buch hinzufügen" -#: bookwyrm/templates/book/edit/edit_book.html:54 +#: bookwyrm/templates/book/edit/edit_book.html:62 msgid "Confirm Book Info" msgstr "Buchinfo bestätigen" -#: bookwyrm/templates/book/edit/edit_book.html:62 +#: bookwyrm/templates/book/edit/edit_book.html:70 #, python-format msgid "Is \"%(name)s\" one of these authors?" msgstr "Ist „%(name)s“ einer dieser Autor*innen?" -#: bookwyrm/templates/book/edit/edit_book.html:73 -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:81 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Author of " msgstr "Autor*in von " -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Find more information at isni.org" msgstr "Weitere Informationen auf isni.org finden" -#: bookwyrm/templates/book/edit/edit_book.html:85 +#: bookwyrm/templates/book/edit/edit_book.html:93 msgid "This is a new author" msgstr "Neue*r Autor*in" -#: bookwyrm/templates/book/edit/edit_book.html:92 +#: bookwyrm/templates/book/edit/edit_book.html:100 #, python-format msgid "Creating a new author: %(name)s" msgstr "Als neue*r Autor*in erstellen: %(name)s" -#: bookwyrm/templates/book/edit/edit_book.html:99 +#: bookwyrm/templates/book/edit/edit_book.html:107 msgid "Is this an edition of an existing work?" msgstr "Ist das eine Ausgabe eines vorhandenen Werkes?" -#: bookwyrm/templates/book/edit/edit_book.html:107 +#: bookwyrm/templates/book/edit/edit_book.html:115 msgid "This is a new work" msgstr "Dies ist ein neues Werk." -#: bookwyrm/templates/book/edit/edit_book.html:116 +#: bookwyrm/templates/book/edit/edit_book.html:124 #: bookwyrm/templates/feed/status.html:21 msgid "Back" msgstr "Zurück" @@ -1970,33 +1970,33 @@ msgstr "Bücher importieren" msgid "Data source:" msgstr "Datenquelle:" -#: bookwyrm/templates/import/import.html:39 +#: bookwyrm/templates/import/import.html:42 msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." msgstr "Du kannst deine Goodreads-Daten von der Import / Export-Seite deines Goodreads-Kontos downloaden." -#: bookwyrm/templates/import/import.html:44 +#: bookwyrm/templates/import/import.html:47 msgid "Data file:" msgstr "Datei:" -#: bookwyrm/templates/import/import.html:52 +#: bookwyrm/templates/import/import.html:55 msgid "Include reviews" msgstr "Besprechungen einschließen" -#: bookwyrm/templates/import/import.html:57 +#: bookwyrm/templates/import/import.html:60 msgid "Privacy setting for imported reviews:" msgstr "Datenschutzeinstellung für importierte Besprechungen:" -#: bookwyrm/templates/import/import.html:63 +#: bookwyrm/templates/import/import.html:66 #: bookwyrm/templates/preferences/layout.html:31 #: bookwyrm/templates/settings/federation/instance_blocklist.html:76 msgid "Import" msgstr "Importieren" -#: bookwyrm/templates/import/import.html:68 +#: bookwyrm/templates/import/import.html:71 msgid "Recent Imports" msgstr "Zuletzt importiert" -#: bookwyrm/templates/import/import.html:70 +#: bookwyrm/templates/import/import.html:73 msgid "No recent imports" msgstr "Keine aktuellen Importe" @@ -5114,7 +5114,7 @@ msgstr "Datei überschreitet die maximale Größe von 10MB" msgid "%(title)s: %(subtitle)s" msgstr "%(title)s: %(subtitle)s" -#: bookwyrm/views/imports/import_data.py:67 +#: bookwyrm/views/imports/import_data.py:70 msgid "Not a valid csv file" msgstr "Keine gültige CSV-Datei" diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index e776c826..4b96725b 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: 2022-05-23 21:04+0000\n" +"POT-Creation-Date: 2022-05-31 23:50+0000\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -47,6 +47,10 @@ msgstr "" msgid "Reading finish date cannot be before start date." msgstr "" +#: bookwyrm/forms/forms.py:59 +msgid "Reading stopped date cannot be before start date." +msgstr "" + #: bookwyrm/forms/landing.py:32 msgid "User with this username already exists" msgstr "" @@ -71,8 +75,8 @@ msgstr "" msgid "Book Title" msgstr "" -#: bookwyrm/forms/lists.py:28 bookwyrm/templates/shelf/shelf.html:155 -#: bookwyrm/templates/shelf/shelf.html:187 +#: bookwyrm/forms/lists.py:28 bookwyrm/templates/shelf/shelf.html:156 +#: bookwyrm/templates/shelf/shelf.html:188 #: bookwyrm/templates/snippets/create_status/review.html:32 msgid "Rating" msgstr "" @@ -1076,7 +1080,7 @@ msgid "Add Another Author" msgstr "" #: bookwyrm/templates/book/edit/edit_book_form.html:220 -#: bookwyrm/templates/shelf/shelf.html:146 +#: bookwyrm/templates/shelf/shelf.html:147 msgid "Cover" msgstr "" @@ -1710,13 +1714,13 @@ msgstr "" #: bookwyrm/templates/get_started/book_preview.html:10 #: bookwyrm/templates/shelf/shelf.html:86 bookwyrm/templates/user/user.html:33 -#: bookwyrm/templatetags/shelf_tags.py:46 +#: bookwyrm/templatetags/shelf_tags.py:48 msgid "To Read" msgstr "" #: bookwyrm/templates/get_started/book_preview.html:11 #: bookwyrm/templates/shelf/shelf.html:87 bookwyrm/templates/user/user.html:34 -#: bookwyrm/templatetags/shelf_tags.py:48 +#: bookwyrm/templatetags/shelf_tags.py:50 msgid "Currently Reading" msgstr "" @@ -1725,10 +1729,15 @@ msgstr "" #: bookwyrm/templates/snippets/shelf_selector.html:47 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 -#: bookwyrm/templates/user/user.html:35 bookwyrm/templatetags/shelf_tags.py:50 +#: bookwyrm/templates/user/user.html:35 bookwyrm/templatetags/shelf_tags.py:52 msgid "Read" msgstr "" +#: bookwyrm/templates/get_started/book_preview.html:13 +#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:36 +msgid "Stopped Reading" +msgstr "" + #: bookwyrm/templates/get_started/books.html:6 msgid "What are you reading?" msgstr "" @@ -2056,8 +2065,8 @@ msgid "Row" msgstr "" #: bookwyrm/templates/import/import_status.html:103 -#: bookwyrm/templates/shelf/shelf.html:147 -#: bookwyrm/templates/shelf/shelf.html:169 +#: bookwyrm/templates/shelf/shelf.html:148 +#: bookwyrm/templates/shelf/shelf.html:170 msgid "Title" msgstr "" @@ -2070,8 +2079,8 @@ msgid "Openlibrary key" msgstr "" #: bookwyrm/templates/import/import_status.html:114 -#: bookwyrm/templates/shelf/shelf.html:148 -#: bookwyrm/templates/shelf/shelf.html:172 +#: bookwyrm/templates/shelf/shelf.html:149 +#: bookwyrm/templates/shelf/shelf.html:173 msgid "Author" msgstr "" @@ -2989,6 +2998,11 @@ msgstr "" msgid "Start \"%(book_title)s\"" msgstr "" +#: bookwyrm/templates/reading_progress/stop.html:5 +#, python-format +msgid "Stop Reading \"%(book_title)s\"" +msgstr "" + #: bookwyrm/templates/reading_progress/want.html:5 #, python-format msgid "Want to Read \"%(book_title)s\"" @@ -3013,6 +3027,7 @@ msgstr "" #: bookwyrm/templates/readthrough/readthrough_modal.html:38 #: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 #: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 +#: bookwyrm/templates/snippets/reading_modals/stop_reading_modal.html:24 msgid "Started reading" msgstr "" @@ -3021,7 +3036,7 @@ msgstr "" msgid "Progress" msgstr "" -#: bookwyrm/templates/readthrough/readthrough_form.html:24 +#: bookwyrm/templates/readthrough/readthrough_form.html:25 #: bookwyrm/templates/readthrough/readthrough_modal.html:63 #: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 msgid "Finished reading" @@ -3035,23 +3050,27 @@ msgstr "" msgid "finished" msgstr "" -#: bookwyrm/templates/readthrough/readthrough_list.html:25 +#: bookwyrm/templates/readthrough/readthrough_list.html:16 +msgid "stopped" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_list.html:27 msgid "Show all updates" msgstr "" -#: bookwyrm/templates/readthrough/readthrough_list.html:41 +#: bookwyrm/templates/readthrough/readthrough_list.html:43 msgid "Delete this progress update" msgstr "" -#: bookwyrm/templates/readthrough/readthrough_list.html:53 +#: bookwyrm/templates/readthrough/readthrough_list.html:55 msgid "started" msgstr "" -#: bookwyrm/templates/readthrough/readthrough_list.html:60 +#: bookwyrm/templates/readthrough/readthrough_list.html:62 msgid "Edit read dates" msgstr "" -#: bookwyrm/templates/readthrough/readthrough_list.html:68 +#: bookwyrm/templates/readthrough/readthrough_list.html:70 msgid "Delete these read dates" msgstr "" @@ -4359,46 +4378,51 @@ msgid "User profile" msgstr "" #: bookwyrm/templates/shelf/shelf.html:39 -#: bookwyrm/templatetags/shelf_tags.py:44 bookwyrm/views/shelf/shelf.py:53 +#: bookwyrm/templatetags/shelf_tags.py:46 bookwyrm/views/shelf/shelf.py:53 msgid "All books" msgstr "" -#: bookwyrm/templates/shelf/shelf.html:96 +#: bookwyrm/templates/shelf/shelf.html:97 #, python-format msgid "%(formatted_count)s book" msgid_plural "%(formatted_count)s books" msgstr[0] "" msgstr[1] "" -#: bookwyrm/templates/shelf/shelf.html:103 +#: bookwyrm/templates/shelf/shelf.html:104 #, python-format msgid "(showing %(start)s-%(end)s)" msgstr "" -#: bookwyrm/templates/shelf/shelf.html:115 +#: bookwyrm/templates/shelf/shelf.html:116 msgid "Edit shelf" msgstr "" -#: bookwyrm/templates/shelf/shelf.html:123 +#: bookwyrm/templates/shelf/shelf.html:124 msgid "Delete shelf" msgstr "" -#: bookwyrm/templates/shelf/shelf.html:151 -#: bookwyrm/templates/shelf/shelf.html:177 +#: bookwyrm/templates/shelf/shelf.html:152 +#: bookwyrm/templates/shelf/shelf.html:178 msgid "Shelved" msgstr "" -#: bookwyrm/templates/shelf/shelf.html:152 -#: bookwyrm/templates/shelf/shelf.html:180 +#: bookwyrm/templates/shelf/shelf.html:153 +#: bookwyrm/templates/shelf/shelf.html:181 msgid "Started" msgstr "" -#: bookwyrm/templates/shelf/shelf.html:153 -#: bookwyrm/templates/shelf/shelf.html:183 +#: bookwyrm/templates/shelf/shelf.html:154 +#: bookwyrm/templates/shelf/shelf.html:184 msgid "Finished" msgstr "" -#: bookwyrm/templates/shelf/shelf.html:209 +#: bookwyrm/templates/shelf/shelf.html:154 +#: bookwyrm/templates/shelf/shelf.html:184 +msgid "Until" +msgstr "" + +#: bookwyrm/templates/shelf/shelf.html:210 msgid "This shelf is empty." msgstr "" @@ -4728,7 +4752,7 @@ msgid "(Optional)" msgstr "" #: bookwyrm/templates/snippets/reading_modals/progress_update_modal.html:6 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:54 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:61 msgid "Update progress" msgstr "" @@ -4737,6 +4761,17 @@ msgstr "" msgid "Start \"%(book_title)s\"" msgstr "" +#: bookwyrm/templates/snippets/reading_modals/stop_reading_modal.html:6 +#, python-format +msgid "Stop Reading \"%(book_title)s\"" +msgstr "" + +#: bookwyrm/templates/snippets/reading_modals/stop_reading_modal.html:32 +#: bookwyrm/templates/snippets/shelf_selector.html:54 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:21 +msgid "Stopped reading" +msgstr "" + #: bookwyrm/templates/snippets/reading_modals/want_to_read_modal.html:6 #, python-format msgid "Want to Read \"%(book_title)s\"" @@ -4784,23 +4819,23 @@ msgstr "" #: bookwyrm/templates/snippets/shelf_selector.html:39 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:17 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:24 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:33 msgid "Start reading" msgstr "" -#: bookwyrm/templates/snippets/shelf_selector.html:54 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:31 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:38 +#: bookwyrm/templates/snippets/shelf_selector.html:61 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:38 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:55 msgid "Want to read" msgstr "" -#: bookwyrm/templates/snippets/shelf_selector.html:75 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:66 +#: bookwyrm/templates/snippets/shelf_selector.html:82 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:73 #, python-format msgid "Remove from %(name)s" msgstr "" -#: bookwyrm/templates/snippets/shelf_selector.html:88 +#: bookwyrm/templates/snippets/shelf_selector.html:95 msgid "Remove from" msgstr "" @@ -4808,7 +4843,12 @@ msgstr "" msgid "More shelves" msgstr "" -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:31 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:31 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:48 +msgid "Stop reading" +msgstr "" + +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:40 msgid "Finish reading" msgstr "" @@ -4903,6 +4943,16 @@ msgstr "" msgid "reviewed %(book)s" msgstr "" +#: bookwyrm/templates/snippets/status/headers/stopped_reading.html:10 +#, python-format +msgid "stopped reading %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/stopped_reading.html:17 +#, python-format +msgid "stopped reading %(book)s" +msgstr "" + #: bookwyrm/templates/snippets/status/headers/to_read.html:10 #, python-format msgid "wants to read %(book)s by %(author_name)s" @@ -5043,29 +5093,29 @@ msgstr "" msgid "Edit profile" msgstr "" -#: bookwyrm/templates/user/user.html:37 +#: bookwyrm/templates/user/user.html:38 #, python-format msgid "View all %(size)s" msgstr "" -#: bookwyrm/templates/user/user.html:51 +#: bookwyrm/templates/user/user.html:52 msgid "View all books" msgstr "" -#: bookwyrm/templates/user/user.html:58 +#: bookwyrm/templates/user/user.html:59 #, python-format msgid "%(current_year)s Reading Goal" msgstr "" -#: bookwyrm/templates/user/user.html:65 +#: bookwyrm/templates/user/user.html:66 msgid "User Activity" msgstr "" -#: bookwyrm/templates/user/user.html:69 +#: bookwyrm/templates/user/user.html:70 msgid "RSS feed" msgstr "" -#: bookwyrm/templates/user/user.html:80 +#: bookwyrm/templates/user/user.html:81 msgid "No activities yet!" msgstr "" diff --git a/locale/es_ES/LC_MESSAGES/django.mo b/locale/es_ES/LC_MESSAGES/django.mo index d108960b..ac3c879c 100644 Binary files a/locale/es_ES/LC_MESSAGES/django.mo and b/locale/es_ES/LC_MESSAGES/django.mo differ diff --git a/locale/es_ES/LC_MESSAGES/django.po b/locale/es_ES/LC_MESSAGES/django.po index 9d31c52d..92dc1365 100644 --- a/locale/es_ES/LC_MESSAGES/django.po +++ b/locale/es_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-08 21:00+0000\n" -"PO-Revision-Date: 2022-04-30 10:04\n" +"POT-Creation-Date: 2022-05-23 21:04+0000\n" +"PO-Revision-Date: 2022-05-24 01:06\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Spanish\n" "Language: es\n" @@ -121,25 +121,25 @@ msgstr "Cuidado" msgid "Automatically generated report" msgstr "Informe generado automáticamente" -#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 +#: bookwyrm/models/base_model.py:18 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 #: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "Pendiente" -#: bookwyrm/models/base_model.py:18 +#: bookwyrm/models/base_model.py:19 msgid "Self deletion" msgstr "Auto-eliminación" -#: bookwyrm/models/base_model.py:19 +#: bookwyrm/models/base_model.py:20 msgid "Moderator suspension" msgstr "Suspensión de moderador" -#: bookwyrm/models/base_model.py:20 +#: bookwyrm/models/base_model.py:21 msgid "Moderator deletion" msgstr "Eliminación de moderador" -#: bookwyrm/models/base_model.py:21 +#: bookwyrm/models/base_model.py:22 msgid "Domain block" msgstr "Bloqueo de dominio" @@ -734,7 +734,7 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:202 -#: bookwyrm/templates/book/edit/edit_book.html:127 +#: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 #: bookwyrm/templates/groups/form.html:32 @@ -757,8 +757,8 @@ msgstr "Guardar" #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:203 #: bookwyrm/templates/book/cover_add_modal.html:33 -#: bookwyrm/templates/book/edit/edit_book.html:129 -#: bookwyrm/templates/book/edit/edit_book.html:132 +#: bookwyrm/templates/book/edit/edit_book.html:137 +#: bookwyrm/templates/book/edit/edit_book.html:140 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 #: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 @@ -780,7 +780,7 @@ msgid "Loading data will connect to %(source_name)s and check f msgstr "La carga de datos se conectará a %(source_name)s y comprobará si hay metadatos sobre este autor que no están presentes aquí. Los metadatos existentes no serán sobrescritos." #: bookwyrm/templates/author/sync_modal.html:24 -#: bookwyrm/templates/book/edit/edit_book.html:114 +#: bookwyrm/templates/book/edit/edit_book.html:122 #: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 @@ -949,42 +949,42 @@ msgstr "Editar \"%(book_title)s\"" msgid "Add Book" msgstr "Agregar libro" -#: bookwyrm/templates/book/edit/edit_book.html:54 +#: bookwyrm/templates/book/edit/edit_book.html:62 msgid "Confirm Book Info" msgstr "Confirmar información de libro" -#: bookwyrm/templates/book/edit/edit_book.html:62 +#: bookwyrm/templates/book/edit/edit_book.html:70 #, python-format msgid "Is \"%(name)s\" one of these authors?" msgstr "¿Es \"%(name)s\" uno de estos autores?" -#: bookwyrm/templates/book/edit/edit_book.html:73 -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:81 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Author of " msgstr "Autor/a de " -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Find more information at isni.org" msgstr "Más información en isni.org" -#: bookwyrm/templates/book/edit/edit_book.html:85 +#: bookwyrm/templates/book/edit/edit_book.html:93 msgid "This is a new author" msgstr "Este es un autor nuevo" -#: bookwyrm/templates/book/edit/edit_book.html:92 +#: bookwyrm/templates/book/edit/edit_book.html:100 #, python-format msgid "Creating a new author: %(name)s" msgstr "Creando un autor nuevo: %(name)s" -#: bookwyrm/templates/book/edit/edit_book.html:99 +#: bookwyrm/templates/book/edit/edit_book.html:107 msgid "Is this an edition of an existing work?" msgstr "¿Es esta una edición de una obra ya existente?" -#: bookwyrm/templates/book/edit/edit_book.html:107 +#: bookwyrm/templates/book/edit/edit_book.html:115 msgid "This is a new work" msgstr "Esta es una obra nueva" -#: bookwyrm/templates/book/edit/edit_book.html:116 +#: bookwyrm/templates/book/edit/edit_book.html:124 #: bookwyrm/templates/feed/status.html:21 msgid "Back" msgstr "Volver" @@ -1970,33 +1970,33 @@ msgstr "Importar libros" msgid "Data source:" msgstr "Fuente de datos:" -#: bookwyrm/templates/import/import.html:39 +#: bookwyrm/templates/import/import.html:42 msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." msgstr "Puedes descargar tus datos de Goodreads desde la página de importación/exportación de tu cuenta de Goodreads." -#: bookwyrm/templates/import/import.html:44 +#: bookwyrm/templates/import/import.html:47 msgid "Data file:" msgstr "Archivo de datos:" -#: bookwyrm/templates/import/import.html:52 +#: bookwyrm/templates/import/import.html:55 msgid "Include reviews" msgstr "Incluir reseñas" -#: bookwyrm/templates/import/import.html:57 +#: bookwyrm/templates/import/import.html:60 msgid "Privacy setting for imported reviews:" msgstr "Configuración de privacidad para las reseñas importadas:" -#: bookwyrm/templates/import/import.html:63 +#: bookwyrm/templates/import/import.html:66 #: bookwyrm/templates/preferences/layout.html:31 #: bookwyrm/templates/settings/federation/instance_blocklist.html:76 msgid "Import" msgstr "Importar" -#: bookwyrm/templates/import/import.html:68 +#: bookwyrm/templates/import/import.html:71 msgid "Recent Imports" msgstr "Importaciones recientes" -#: bookwyrm/templates/import/import.html:70 +#: bookwyrm/templates/import/import.html:73 msgid "No recent imports" msgstr "No hay ninguna importación reciente" @@ -5114,7 +5114,7 @@ msgstr "Archivo excede el tamaño máximo: 10MB" msgid "%(title)s: %(subtitle)s" msgstr "%(title)s: %(subtitle)s" -#: bookwyrm/views/imports/import_data.py:67 +#: bookwyrm/views/imports/import_data.py:70 msgid "Not a valid csv file" msgstr "No un archivo csv válido" diff --git a/locale/fi_FI/LC_MESSAGES/django.mo b/locale/fi_FI/LC_MESSAGES/django.mo index 91cf658f..a36c6c93 100644 Binary files a/locale/fi_FI/LC_MESSAGES/django.mo and b/locale/fi_FI/LC_MESSAGES/django.mo differ diff --git a/locale/fi_FI/LC_MESSAGES/django.po b/locale/fi_FI/LC_MESSAGES/django.po index e2ceaad3..0241e1e4 100644 --- a/locale/fi_FI/LC_MESSAGES/django.po +++ b/locale/fi_FI/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-08 21:00+0000\n" -"PO-Revision-Date: 2022-05-07 14:54\n" +"POT-Creation-Date: 2022-05-23 21:04+0000\n" +"PO-Revision-Date: 2022-05-24 01:06\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Finnish\n" "Language: fi\n" @@ -121,25 +121,25 @@ msgstr "Vaara" msgid "Automatically generated report" msgstr "Automaattisesti luotu raportti" -#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 +#: bookwyrm/models/base_model.py:18 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 #: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "Odottaa" -#: bookwyrm/models/base_model.py:18 +#: bookwyrm/models/base_model.py:19 msgid "Self deletion" msgstr "Itse poistettu" -#: bookwyrm/models/base_model.py:19 +#: bookwyrm/models/base_model.py:20 msgid "Moderator suspension" msgstr "Moderaattorin estämä" -#: bookwyrm/models/base_model.py:20 +#: bookwyrm/models/base_model.py:21 msgid "Moderator deletion" msgstr "Moderaattorin poistama" -#: bookwyrm/models/base_model.py:21 +#: bookwyrm/models/base_model.py:22 msgid "Domain block" msgstr "Verkkotunnuksen esto" @@ -734,7 +734,7 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:202 -#: bookwyrm/templates/book/edit/edit_book.html:127 +#: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 #: bookwyrm/templates/groups/form.html:32 @@ -757,8 +757,8 @@ msgstr "Tallenna" #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:203 #: bookwyrm/templates/book/cover_add_modal.html:33 -#: bookwyrm/templates/book/edit/edit_book.html:129 -#: bookwyrm/templates/book/edit/edit_book.html:132 +#: bookwyrm/templates/book/edit/edit_book.html:137 +#: bookwyrm/templates/book/edit/edit_book.html:140 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 #: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 @@ -780,7 +780,7 @@ msgid "Loading data will connect to %(source_name)s and check f msgstr "Tietoja ladattaessa muodostetaan yhteys lähteeseen %(source_name)s ja sieltä haetaan metatietoja, joita ei vielä ole täällä. Olemassa olevia metatietoja ei korvata uusilla." #: bookwyrm/templates/author/sync_modal.html:24 -#: bookwyrm/templates/book/edit/edit_book.html:114 +#: bookwyrm/templates/book/edit/edit_book.html:122 #: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 @@ -949,42 +949,42 @@ msgstr "Muokkaa teosta ”%(book_title)s”" msgid "Add Book" msgstr "Lisää kirja" -#: bookwyrm/templates/book/edit/edit_book.html:54 +#: bookwyrm/templates/book/edit/edit_book.html:62 msgid "Confirm Book Info" msgstr "Vahvista kirjan tiedot" -#: bookwyrm/templates/book/edit/edit_book.html:62 +#: bookwyrm/templates/book/edit/edit_book.html:70 #, python-format msgid "Is \"%(name)s\" one of these authors?" msgstr "Onko ”%(name)s” joku seuraavista tekijöistä?" -#: bookwyrm/templates/book/edit/edit_book.html:73 -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:81 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Author of " msgstr "Tekijänä teoksessa " -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Find more information at isni.org" msgstr "Lisätietoja osoitteessa isni.org" -#: bookwyrm/templates/book/edit/edit_book.html:85 +#: bookwyrm/templates/book/edit/edit_book.html:93 msgid "This is a new author" msgstr "Uusi tekijä" -#: bookwyrm/templates/book/edit/edit_book.html:92 +#: bookwyrm/templates/book/edit/edit_book.html:100 #, python-format msgid "Creating a new author: %(name)s" msgstr "Luodaan uusi tekijä: %(name)s" -#: bookwyrm/templates/book/edit/edit_book.html:99 +#: bookwyrm/templates/book/edit/edit_book.html:107 msgid "Is this an edition of an existing work?" msgstr "Onko tämä aiemmin lisätyn teoksen laitos?" -#: bookwyrm/templates/book/edit/edit_book.html:107 +#: bookwyrm/templates/book/edit/edit_book.html:115 msgid "This is a new work" msgstr "Uusi teos" -#: bookwyrm/templates/book/edit/edit_book.html:116 +#: bookwyrm/templates/book/edit/edit_book.html:124 #: bookwyrm/templates/feed/status.html:21 msgid "Back" msgstr "Takaisin" @@ -1970,33 +1970,33 @@ msgstr "Tuo kirjoja" msgid "Data source:" msgstr "Tietolähde:" -#: bookwyrm/templates/import/import.html:39 +#: bookwyrm/templates/import/import.html:42 msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." msgstr "Goodreads-tiedot voi ladata Goodreads-käyttäjätilin Import/Export-sivun kautta." -#: bookwyrm/templates/import/import.html:44 +#: bookwyrm/templates/import/import.html:47 msgid "Data file:" msgstr "Datatiedosto:" -#: bookwyrm/templates/import/import.html:52 +#: bookwyrm/templates/import/import.html:55 msgid "Include reviews" msgstr "Myös arviot" -#: bookwyrm/templates/import/import.html:57 +#: bookwyrm/templates/import/import.html:60 msgid "Privacy setting for imported reviews:" msgstr "Tuotavien arvioiden yksityisyysvalinta:" -#: bookwyrm/templates/import/import.html:63 +#: bookwyrm/templates/import/import.html:66 #: bookwyrm/templates/preferences/layout.html:31 #: bookwyrm/templates/settings/federation/instance_blocklist.html:76 msgid "Import" msgstr "Tuo" -#: bookwyrm/templates/import/import.html:68 +#: bookwyrm/templates/import/import.html:71 msgid "Recent Imports" msgstr "Viimeksi tuotu" -#: bookwyrm/templates/import/import.html:70 +#: bookwyrm/templates/import/import.html:73 msgid "No recent imports" msgstr "Ei viimeaikaisia tuonteja" @@ -5114,7 +5114,7 @@ msgstr "Tiedosto on enimmäiskokoa 10 Mt suurempi" msgid "%(title)s: %(subtitle)s" msgstr "%(title)s: %(subtitle)s" -#: bookwyrm/views/imports/import_data.py:67 +#: bookwyrm/views/imports/import_data.py:70 msgid "Not a valid csv file" msgstr "Epäkelpo csv-tiedosto" diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index 4cdcbf8e..1414a055 100644 Binary files a/locale/fr_FR/LC_MESSAGES/django.mo and b/locale/fr_FR/LC_MESSAGES/django.mo differ diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index 1b472de9..7ec53703 100644 --- a/locale/fr_FR/LC_MESSAGES/django.po +++ b/locale/fr_FR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-08 21:00+0000\n" -"PO-Revision-Date: 2022-04-09 08:36\n" +"POT-Creation-Date: 2022-05-23 21:04+0000\n" +"PO-Revision-Date: 2022-05-24 01:06\n" "Last-Translator: Mouse Reeve \n" "Language-Team: French\n" "Language: fr\n" @@ -121,25 +121,25 @@ msgstr "Danger" msgid "Automatically generated report" msgstr "Rapport généré automatiquement" -#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 +#: bookwyrm/models/base_model.py:18 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 #: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "En attente" -#: bookwyrm/models/base_model.py:18 +#: bookwyrm/models/base_model.py:19 msgid "Self deletion" msgstr "Auto-suppression" -#: bookwyrm/models/base_model.py:19 +#: bookwyrm/models/base_model.py:20 msgid "Moderator suspension" msgstr "Suspension du modérateur" -#: bookwyrm/models/base_model.py:20 +#: bookwyrm/models/base_model.py:21 msgid "Moderator deletion" msgstr "Suppression du modérateur" -#: bookwyrm/models/base_model.py:21 +#: bookwyrm/models/base_model.py:22 msgid "Domain block" msgstr "Blocage de domaine" @@ -734,7 +734,7 @@ msgstr "ISNI :" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:202 -#: bookwyrm/templates/book/edit/edit_book.html:127 +#: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 #: bookwyrm/templates/groups/form.html:32 @@ -757,8 +757,8 @@ msgstr "Enregistrer" #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:203 #: bookwyrm/templates/book/cover_add_modal.html:33 -#: bookwyrm/templates/book/edit/edit_book.html:129 -#: bookwyrm/templates/book/edit/edit_book.html:132 +#: bookwyrm/templates/book/edit/edit_book.html:137 +#: bookwyrm/templates/book/edit/edit_book.html:140 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 #: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 @@ -780,7 +780,7 @@ msgid "Loading data will connect to %(source_name)s and check f msgstr "Le chargement des données se connectera à %(source_name)s et vérifiera les métadonnées de cet auteur ou autrice qui ne sont pas présentes ici. Les métadonnées existantes ne seront pas écrasées." #: bookwyrm/templates/author/sync_modal.html:24 -#: bookwyrm/templates/book/edit/edit_book.html:114 +#: bookwyrm/templates/book/edit/edit_book.html:122 #: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 @@ -949,42 +949,42 @@ msgstr "Modifier « %(book_title)s »" msgid "Add Book" msgstr "Ajouter un livre" -#: bookwyrm/templates/book/edit/edit_book.html:54 +#: bookwyrm/templates/book/edit/edit_book.html:62 msgid "Confirm Book Info" msgstr "Confirmer les informations de ce livre" -#: bookwyrm/templates/book/edit/edit_book.html:62 +#: bookwyrm/templates/book/edit/edit_book.html:70 #, python-format msgid "Is \"%(name)s\" one of these authors?" msgstr "Est-ce que \"%(name)s\" fait partie de ces auteurs ou autrices ?" -#: bookwyrm/templates/book/edit/edit_book.html:73 -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:81 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Author of " msgstr "Auteur ou autrice de " -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Find more information at isni.org" msgstr "Trouver plus d’informations sur isni.org" -#: bookwyrm/templates/book/edit/edit_book.html:85 +#: bookwyrm/templates/book/edit/edit_book.html:93 msgid "This is a new author" msgstr "Il s’agit d’un nouvel auteur ou d’une nouvelle autrice." -#: bookwyrm/templates/book/edit/edit_book.html:92 +#: bookwyrm/templates/book/edit/edit_book.html:100 #, python-format msgid "Creating a new author: %(name)s" msgstr "Création d’un nouvel auteur/autrice : %(name)s" -#: bookwyrm/templates/book/edit/edit_book.html:99 +#: bookwyrm/templates/book/edit/edit_book.html:107 msgid "Is this an edition of an existing work?" msgstr "Est‑ce l’édition d’un ouvrage existant ?" -#: bookwyrm/templates/book/edit/edit_book.html:107 +#: bookwyrm/templates/book/edit/edit_book.html:115 msgid "This is a new work" msgstr "Il s’agit d’un nouvel ouvrage." -#: bookwyrm/templates/book/edit/edit_book.html:116 +#: bookwyrm/templates/book/edit/edit_book.html:124 #: bookwyrm/templates/feed/status.html:21 msgid "Back" msgstr "Retour" @@ -1970,33 +1970,33 @@ msgstr "Importer des livres" msgid "Data source:" msgstr "Source de données :" -#: bookwyrm/templates/import/import.html:39 +#: bookwyrm/templates/import/import.html:42 msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." msgstr "Vous pouvez télécharger vos données Goodreads depuis la page Import/Export de votre compte Goodreads." -#: bookwyrm/templates/import/import.html:44 +#: bookwyrm/templates/import/import.html:47 msgid "Data file:" msgstr "Fichier de données :" -#: bookwyrm/templates/import/import.html:52 +#: bookwyrm/templates/import/import.html:55 msgid "Include reviews" msgstr "Importer les critiques" -#: bookwyrm/templates/import/import.html:57 +#: bookwyrm/templates/import/import.html:60 msgid "Privacy setting for imported reviews:" msgstr "Confidentialité des critiques importées :" -#: bookwyrm/templates/import/import.html:63 +#: bookwyrm/templates/import/import.html:66 #: bookwyrm/templates/preferences/layout.html:31 #: bookwyrm/templates/settings/federation/instance_blocklist.html:76 msgid "Import" msgstr "Importer" -#: bookwyrm/templates/import/import.html:68 +#: bookwyrm/templates/import/import.html:71 msgid "Recent Imports" msgstr "Importations récentes" -#: bookwyrm/templates/import/import.html:70 +#: bookwyrm/templates/import/import.html:73 msgid "No recent imports" msgstr "Aucune importation récente" @@ -5114,7 +5114,7 @@ msgstr "Ce fichier dépasse la taille limite : 10 Mo" msgid "%(title)s: %(subtitle)s" msgstr "%(title)s (%(subtitle)s)" -#: bookwyrm/views/imports/import_data.py:67 +#: bookwyrm/views/imports/import_data.py:70 msgid "Not a valid csv file" msgstr "Fichier CSV non valide" diff --git a/locale/gl_ES/LC_MESSAGES/django.mo b/locale/gl_ES/LC_MESSAGES/django.mo index 94b9ad76..7f76d9ee 100644 Binary files a/locale/gl_ES/LC_MESSAGES/django.mo and b/locale/gl_ES/LC_MESSAGES/django.mo differ diff --git a/locale/gl_ES/LC_MESSAGES/django.po b/locale/gl_ES/LC_MESSAGES/django.po index 8d05e8d9..13ae2525 100644 --- a/locale/gl_ES/LC_MESSAGES/django.po +++ b/locale/gl_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-08 21:00+0000\n" -"PO-Revision-Date: 2022-04-09 14:02\n" +"POT-Creation-Date: 2022-05-23 21:04+0000\n" +"PO-Revision-Date: 2022-05-24 01:06\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Galician\n" "Language: gl\n" @@ -121,25 +121,25 @@ msgstr "Perigo" msgid "Automatically generated report" msgstr "Denuncia creada automáticamente" -#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 +#: bookwyrm/models/base_model.py:18 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 #: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "Pendente" -#: bookwyrm/models/base_model.py:18 +#: bookwyrm/models/base_model.py:19 msgid "Self deletion" msgstr "Auto eliminación" -#: bookwyrm/models/base_model.py:19 +#: bookwyrm/models/base_model.py:20 msgid "Moderator suspension" msgstr "Suspendido pola moderación" -#: bookwyrm/models/base_model.py:20 +#: bookwyrm/models/base_model.py:21 msgid "Moderator deletion" msgstr "Eliminado pola moderación" -#: bookwyrm/models/base_model.py:21 +#: bookwyrm/models/base_model.py:22 msgid "Domain block" msgstr "Bloqueo de dominio" @@ -734,7 +734,7 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:202 -#: bookwyrm/templates/book/edit/edit_book.html:127 +#: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 #: bookwyrm/templates/groups/form.html:32 @@ -757,8 +757,8 @@ msgstr "Gardar" #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:203 #: bookwyrm/templates/book/cover_add_modal.html:33 -#: bookwyrm/templates/book/edit/edit_book.html:129 -#: bookwyrm/templates/book/edit/edit_book.html:132 +#: bookwyrm/templates/book/edit/edit_book.html:137 +#: bookwyrm/templates/book/edit/edit_book.html:140 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 #: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 @@ -780,7 +780,7 @@ msgid "Loading data will connect to %(source_name)s and check f msgstr "Ao cargar os datos vas conectar con %(source_name)s e comprobar se existen metadatos desta persoa autora que non están aquí presentes. Non se sobrescribirán os datos existentes." #: bookwyrm/templates/author/sync_modal.html:24 -#: bookwyrm/templates/book/edit/edit_book.html:114 +#: bookwyrm/templates/book/edit/edit_book.html:122 #: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 @@ -949,42 +949,42 @@ msgstr "Editar \"%(book_title)s\"" msgid "Add Book" msgstr "Engadir libro" -#: bookwyrm/templates/book/edit/edit_book.html:54 +#: bookwyrm/templates/book/edit/edit_book.html:62 msgid "Confirm Book Info" msgstr "Confirma info do libro" -#: bookwyrm/templates/book/edit/edit_book.html:62 +#: bookwyrm/templates/book/edit/edit_book.html:70 #, python-format msgid "Is \"%(name)s\" one of these authors?" msgstr "É \"%(name)s\" un destas autoras?" -#: bookwyrm/templates/book/edit/edit_book.html:73 -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:81 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Author of " msgstr "Autora de " -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Find more information at isni.org" msgstr "Atopa máis información en isni.org" -#: bookwyrm/templates/book/edit/edit_book.html:85 +#: bookwyrm/templates/book/edit/edit_book.html:93 msgid "This is a new author" msgstr "Esta é unha nova autora" -#: bookwyrm/templates/book/edit/edit_book.html:92 +#: bookwyrm/templates/book/edit/edit_book.html:100 #, python-format msgid "Creating a new author: %(name)s" msgstr "Creando nova autora: %(name)s" -#: bookwyrm/templates/book/edit/edit_book.html:99 +#: bookwyrm/templates/book/edit/edit_book.html:107 msgid "Is this an edition of an existing work?" msgstr "É esta a edición dun traballo existente?" -#: bookwyrm/templates/book/edit/edit_book.html:107 +#: bookwyrm/templates/book/edit/edit_book.html:115 msgid "This is a new work" msgstr "Este é un novo traballo" -#: bookwyrm/templates/book/edit/edit_book.html:116 +#: bookwyrm/templates/book/edit/edit_book.html:124 #: bookwyrm/templates/feed/status.html:21 msgid "Back" msgstr "Atrás" @@ -1970,33 +1970,33 @@ msgstr "Importar libros" msgid "Data source:" msgstr "Fonte de datos:" -#: bookwyrm/templates/import/import.html:39 +#: bookwyrm/templates/import/import.html:42 msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." msgstr "Podes descargar os teus datos de Goodreads desde a páxina de Exportación/Importación da túa conta Goodreads." -#: bookwyrm/templates/import/import.html:44 +#: bookwyrm/templates/import/import.html:47 msgid "Data file:" msgstr "Ficheiro de datos:" -#: bookwyrm/templates/import/import.html:52 +#: bookwyrm/templates/import/import.html:55 msgid "Include reviews" msgstr "Incluír recensións" -#: bookwyrm/templates/import/import.html:57 +#: bookwyrm/templates/import/import.html:60 msgid "Privacy setting for imported reviews:" msgstr "Axuste de privacidade para recensións importadas:" -#: bookwyrm/templates/import/import.html:63 +#: bookwyrm/templates/import/import.html:66 #: bookwyrm/templates/preferences/layout.html:31 #: bookwyrm/templates/settings/federation/instance_blocklist.html:76 msgid "Import" msgstr "Importar" -#: bookwyrm/templates/import/import.html:68 +#: bookwyrm/templates/import/import.html:71 msgid "Recent Imports" msgstr "Importacións recentes" -#: bookwyrm/templates/import/import.html:70 +#: bookwyrm/templates/import/import.html:73 msgid "No recent imports" msgstr "Sen importacións recentes" @@ -5114,7 +5114,7 @@ msgstr "O ficheiro supera o tamaño máximo: 10MB" msgid "%(title)s: %(subtitle)s" msgstr "%(title)s: %(subtitle)s" -#: bookwyrm/views/imports/import_data.py:67 +#: bookwyrm/views/imports/import_data.py:70 msgid "Not a valid csv file" msgstr "Non é un ficheiro csv válido" diff --git a/locale/it_IT/LC_MESSAGES/django.mo b/locale/it_IT/LC_MESSAGES/django.mo index df949ed1..25657558 100644 Binary files a/locale/it_IT/LC_MESSAGES/django.mo and b/locale/it_IT/LC_MESSAGES/django.mo differ diff --git a/locale/it_IT/LC_MESSAGES/django.po b/locale/it_IT/LC_MESSAGES/django.po index 80b09cbe..5e53007b 100644 --- a/locale/it_IT/LC_MESSAGES/django.po +++ b/locale/it_IT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-08 21:00+0000\n" -"PO-Revision-Date: 2022-04-20 22:49\n" +"POT-Creation-Date: 2022-05-23 21:04+0000\n" +"PO-Revision-Date: 2022-05-24 01:06\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Italian\n" "Language: it\n" @@ -121,25 +121,25 @@ msgstr "Attenzione" msgid "Automatically generated report" msgstr "Rapporto generato automaticamente" -#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 +#: bookwyrm/models/base_model.py:18 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 #: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "In attesa" -#: bookwyrm/models/base_model.py:18 +#: bookwyrm/models/base_model.py:19 msgid "Self deletion" msgstr "Eliminazione automatica" -#: bookwyrm/models/base_model.py:19 +#: bookwyrm/models/base_model.py:20 msgid "Moderator suspension" msgstr "Sospensione del moderatore" -#: bookwyrm/models/base_model.py:20 +#: bookwyrm/models/base_model.py:21 msgid "Moderator deletion" msgstr "Cancellazione del moderatore" -#: bookwyrm/models/base_model.py:21 +#: bookwyrm/models/base_model.py:22 msgid "Domain block" msgstr "Blocco del dominio" @@ -734,7 +734,7 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:202 -#: bookwyrm/templates/book/edit/edit_book.html:127 +#: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 #: bookwyrm/templates/groups/form.html:32 @@ -757,8 +757,8 @@ msgstr "Salva" #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:203 #: bookwyrm/templates/book/cover_add_modal.html:33 -#: bookwyrm/templates/book/edit/edit_book.html:129 -#: bookwyrm/templates/book/edit/edit_book.html:132 +#: bookwyrm/templates/book/edit/edit_book.html:137 +#: bookwyrm/templates/book/edit/edit_book.html:140 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 #: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 @@ -780,7 +780,7 @@ msgid "Loading data will connect to %(source_name)s and check f msgstr "Il caricamento dei dati si collegherà a %(source_name)s e verificherà eventuali metadati relativi a questo autore che non sono presenti qui. I metadati esistenti non vengono sovrascritti." #: bookwyrm/templates/author/sync_modal.html:24 -#: bookwyrm/templates/book/edit/edit_book.html:114 +#: bookwyrm/templates/book/edit/edit_book.html:122 #: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 @@ -949,42 +949,42 @@ msgstr "Modifica \"%(book_title)s\"" msgid "Add Book" msgstr "Aggiungi libro" -#: bookwyrm/templates/book/edit/edit_book.html:54 +#: bookwyrm/templates/book/edit/edit_book.html:62 msgid "Confirm Book Info" msgstr "Conferma informazioni sul libro" -#: bookwyrm/templates/book/edit/edit_book.html:62 +#: bookwyrm/templates/book/edit/edit_book.html:70 #, python-format msgid "Is \"%(name)s\" one of these authors?" msgstr "È \"%(name)s\" uno di questi autori?" -#: bookwyrm/templates/book/edit/edit_book.html:73 -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:81 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Author of " msgstr "Autore di " -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Find more information at isni.org" msgstr "Trova maggiori informazioni su isni.org" -#: bookwyrm/templates/book/edit/edit_book.html:85 +#: bookwyrm/templates/book/edit/edit_book.html:93 msgid "This is a new author" msgstr "Questo è un nuovo autore" -#: bookwyrm/templates/book/edit/edit_book.html:92 +#: bookwyrm/templates/book/edit/edit_book.html:100 #, python-format msgid "Creating a new author: %(name)s" msgstr "Creazione di un nuovo autore: %(name)s" -#: bookwyrm/templates/book/edit/edit_book.html:99 +#: bookwyrm/templates/book/edit/edit_book.html:107 msgid "Is this an edition of an existing work?" msgstr "È un'edizione di un'opera esistente?" -#: bookwyrm/templates/book/edit/edit_book.html:107 +#: bookwyrm/templates/book/edit/edit_book.html:115 msgid "This is a new work" msgstr "Si tratta di un nuovo lavoro" -#: bookwyrm/templates/book/edit/edit_book.html:116 +#: bookwyrm/templates/book/edit/edit_book.html:124 #: bookwyrm/templates/feed/status.html:21 msgid "Back" msgstr "Indietro" @@ -1970,33 +1970,33 @@ msgstr "Importa libri" msgid "Data source:" msgstr "Sorgenti dati:" -#: bookwyrm/templates/import/import.html:39 +#: bookwyrm/templates/import/import.html:42 msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." msgstr "Puoi scaricare i tuoi dati Goodreads dalla pagina \"Importa/Esporta\" del tuo account Goodreads." -#: bookwyrm/templates/import/import.html:44 +#: bookwyrm/templates/import/import.html:47 msgid "Data file:" msgstr "Dati file:" -#: bookwyrm/templates/import/import.html:52 +#: bookwyrm/templates/import/import.html:55 msgid "Include reviews" msgstr "Includi recensioni" -#: bookwyrm/templates/import/import.html:57 +#: bookwyrm/templates/import/import.html:60 msgid "Privacy setting for imported reviews:" msgstr "Impostazione della privacy per le recensioni importate:" -#: bookwyrm/templates/import/import.html:63 +#: bookwyrm/templates/import/import.html:66 #: bookwyrm/templates/preferences/layout.html:31 #: bookwyrm/templates/settings/federation/instance_blocklist.html:76 msgid "Import" msgstr "Importa" -#: bookwyrm/templates/import/import.html:68 +#: bookwyrm/templates/import/import.html:71 msgid "Recent Imports" msgstr "Importazioni recenti" -#: bookwyrm/templates/import/import.html:70 +#: bookwyrm/templates/import/import.html:73 msgid "No recent imports" msgstr "Nessuna importazione recente" @@ -5114,7 +5114,7 @@ msgstr "Il file supera la dimensione massima: 10MB" msgid "%(title)s: %(subtitle)s" msgstr "%(title)s: %(subtitle)s" -#: bookwyrm/views/imports/import_data.py:67 +#: bookwyrm/views/imports/import_data.py:70 msgid "Not a valid csv file" msgstr "Non è un file di csv valido" diff --git a/locale/lt_LT/LC_MESSAGES/django.mo b/locale/lt_LT/LC_MESSAGES/django.mo index 034db685..cccee2cf 100644 Binary files a/locale/lt_LT/LC_MESSAGES/django.mo and b/locale/lt_LT/LC_MESSAGES/django.mo differ diff --git a/locale/lt_LT/LC_MESSAGES/django.po b/locale/lt_LT/LC_MESSAGES/django.po index a5bb31df..a2a83ca8 100644 --- a/locale/lt_LT/LC_MESSAGES/django.po +++ b/locale/lt_LT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-08 21:00+0000\n" -"PO-Revision-Date: 2022-04-10 07:54\n" +"POT-Creation-Date: 2022-05-23 21:04+0000\n" +"PO-Revision-Date: 2022-05-24 01:06\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Lithuanian\n" "Language: lt\n" @@ -121,25 +121,25 @@ msgstr "Pavojus" msgid "Automatically generated report" msgstr "Automatiškai sugeneruota ataskaita" -#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 +#: bookwyrm/models/base_model.py:18 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 #: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "Laukiama" -#: bookwyrm/models/base_model.py:18 +#: bookwyrm/models/base_model.py:19 msgid "Self deletion" msgstr "Išsitrina savaime" -#: bookwyrm/models/base_model.py:19 +#: bookwyrm/models/base_model.py:20 msgid "Moderator suspension" msgstr "Moderatorius nutraukė" -#: bookwyrm/models/base_model.py:20 +#: bookwyrm/models/base_model.py:21 msgid "Moderator deletion" msgstr "Moderatorius ištrynė" -#: bookwyrm/models/base_model.py:21 +#: bookwyrm/models/base_model.py:22 msgid "Domain block" msgstr "Blokuoti pagal domeną" @@ -742,7 +742,7 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:202 -#: bookwyrm/templates/book/edit/edit_book.html:127 +#: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 #: bookwyrm/templates/groups/form.html:32 @@ -765,8 +765,8 @@ msgstr "Išsaugoti" #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:203 #: bookwyrm/templates/book/cover_add_modal.html:33 -#: bookwyrm/templates/book/edit/edit_book.html:129 -#: bookwyrm/templates/book/edit/edit_book.html:132 +#: bookwyrm/templates/book/edit/edit_book.html:137 +#: bookwyrm/templates/book/edit/edit_book.html:140 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 #: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 @@ -788,7 +788,7 @@ msgid "Loading data will connect to %(source_name)s and check f msgstr "Duomenų įkėlimas prisijungs prie %(source_name)s ir patikrins ar nėra naujos informacijos. Esantys metaduomenys nebus perrašomi." #: bookwyrm/templates/author/sync_modal.html:24 -#: bookwyrm/templates/book/edit/edit_book.html:114 +#: bookwyrm/templates/book/edit/edit_book.html:122 #: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 @@ -961,42 +961,42 @@ msgstr "Redaguoti „%(book_title)s“" msgid "Add Book" msgstr "Pridėti knygą" -#: bookwyrm/templates/book/edit/edit_book.html:54 +#: bookwyrm/templates/book/edit/edit_book.html:62 msgid "Confirm Book Info" msgstr "Patvirtinti knygos informaciją" -#: bookwyrm/templates/book/edit/edit_book.html:62 +#: bookwyrm/templates/book/edit/edit_book.html:70 #, python-format msgid "Is \"%(name)s\" one of these authors?" msgstr "Ar \"%(name)s\" yra vienas iš šių autorių?" -#: bookwyrm/templates/book/edit/edit_book.html:73 -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:81 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Author of " msgstr "Autorius " -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Find more information at isni.org" msgstr "Daugiau informacijos isni.org" -#: bookwyrm/templates/book/edit/edit_book.html:85 +#: bookwyrm/templates/book/edit/edit_book.html:93 msgid "This is a new author" msgstr "Tai naujas autorius" -#: bookwyrm/templates/book/edit/edit_book.html:92 +#: bookwyrm/templates/book/edit/edit_book.html:100 #, python-format msgid "Creating a new author: %(name)s" msgstr "Kuriamas naujas autorius: %(name)s" -#: bookwyrm/templates/book/edit/edit_book.html:99 +#: bookwyrm/templates/book/edit/edit_book.html:107 msgid "Is this an edition of an existing work?" msgstr "Ar tai egzistuojančio darbo leidimas?" -#: bookwyrm/templates/book/edit/edit_book.html:107 +#: bookwyrm/templates/book/edit/edit_book.html:115 msgid "This is a new work" msgstr "Tai naujas darbas" -#: bookwyrm/templates/book/edit/edit_book.html:116 +#: bookwyrm/templates/book/edit/edit_book.html:124 #: bookwyrm/templates/feed/status.html:21 msgid "Back" msgstr "Atgal" @@ -1990,33 +1990,33 @@ msgstr "Importuoti knygas" msgid "Data source:" msgstr "Duomenų šaltinis:" -#: bookwyrm/templates/import/import.html:39 +#: bookwyrm/templates/import/import.html:42 msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." msgstr "Galite atsisiųsti savo „Goodreads“ duomenis iš Importavimo ir eksportavimo puslapio, esančio jūsų „Goodreads“ paskyroje." -#: bookwyrm/templates/import/import.html:44 +#: bookwyrm/templates/import/import.html:47 msgid "Data file:" msgstr "Duomenų failas:" -#: bookwyrm/templates/import/import.html:52 +#: bookwyrm/templates/import/import.html:55 msgid "Include reviews" msgstr "Įtraukti atsiliepimus" -#: bookwyrm/templates/import/import.html:57 +#: bookwyrm/templates/import/import.html:60 msgid "Privacy setting for imported reviews:" msgstr "Privatumo nustatymai svarbiems atsiliepimams:" -#: bookwyrm/templates/import/import.html:63 +#: bookwyrm/templates/import/import.html:66 #: bookwyrm/templates/preferences/layout.html:31 #: bookwyrm/templates/settings/federation/instance_blocklist.html:76 msgid "Import" msgstr "Importuoti" -#: bookwyrm/templates/import/import.html:68 +#: bookwyrm/templates/import/import.html:71 msgid "Recent Imports" msgstr "Pastaruoju metu importuota" -#: bookwyrm/templates/import/import.html:70 +#: bookwyrm/templates/import/import.html:73 msgid "No recent imports" msgstr "Pastaruoju metu neimportuota" @@ -5164,7 +5164,7 @@ msgstr "Failas viršijo maksimalų dydį: 10 MB" msgid "%(title)s: %(subtitle)s" msgstr "%(title)s: %(subtitle)s" -#: bookwyrm/views/imports/import_data.py:67 +#: bookwyrm/views/imports/import_data.py:70 msgid "Not a valid csv file" msgstr "Netinkamas csv failas" diff --git a/locale/no_NO/LC_MESSAGES/django.mo b/locale/no_NO/LC_MESSAGES/django.mo index 8df82422..5ed2511c 100644 Binary files a/locale/no_NO/LC_MESSAGES/django.mo and b/locale/no_NO/LC_MESSAGES/django.mo differ diff --git a/locale/no_NO/LC_MESSAGES/django.po b/locale/no_NO/LC_MESSAGES/django.po index 21cd784c..3d94300a 100644 --- a/locale/no_NO/LC_MESSAGES/django.po +++ b/locale/no_NO/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-08 21:00+0000\n" -"PO-Revision-Date: 2022-04-08 21:50\n" +"POT-Creation-Date: 2022-05-23 21:04+0000\n" +"PO-Revision-Date: 2022-05-24 01:06\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Norwegian\n" "Language: no\n" @@ -121,25 +121,25 @@ msgstr "" msgid "Automatically generated report" msgstr "" -#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 +#: bookwyrm/models/base_model.py:18 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 #: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "Avventer" -#: bookwyrm/models/base_model.py:18 +#: bookwyrm/models/base_model.py:19 msgid "Self deletion" msgstr "Selvsletting" -#: bookwyrm/models/base_model.py:19 +#: bookwyrm/models/base_model.py:20 msgid "Moderator suspension" msgstr "Moderatør suspensjon" -#: bookwyrm/models/base_model.py:20 +#: bookwyrm/models/base_model.py:21 msgid "Moderator deletion" msgstr "Moderatør sletting" -#: bookwyrm/models/base_model.py:21 +#: bookwyrm/models/base_model.py:22 msgid "Domain block" msgstr "Domeneblokkering" @@ -734,7 +734,7 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:202 -#: bookwyrm/templates/book/edit/edit_book.html:127 +#: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 #: bookwyrm/templates/groups/form.html:32 @@ -757,8 +757,8 @@ msgstr "Lagre" #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:203 #: bookwyrm/templates/book/cover_add_modal.html:33 -#: bookwyrm/templates/book/edit/edit_book.html:129 -#: bookwyrm/templates/book/edit/edit_book.html:132 +#: bookwyrm/templates/book/edit/edit_book.html:137 +#: bookwyrm/templates/book/edit/edit_book.html:140 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 #: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 @@ -780,7 +780,7 @@ msgid "Loading data will connect to %(source_name)s and check f msgstr "Laster inn data kobler til %(source_name)s og finner metadata om denne forfatteren som enda ikke finnes her. Eksisterende metadata vil ikke bli overskrevet." #: bookwyrm/templates/author/sync_modal.html:24 -#: bookwyrm/templates/book/edit/edit_book.html:114 +#: bookwyrm/templates/book/edit/edit_book.html:122 #: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 @@ -949,42 +949,42 @@ msgstr "Rediger \"%(book_title)s" msgid "Add Book" msgstr "Legg til bok" -#: bookwyrm/templates/book/edit/edit_book.html:54 +#: bookwyrm/templates/book/edit/edit_book.html:62 msgid "Confirm Book Info" msgstr "Bekreft bokinformasjon" -#: bookwyrm/templates/book/edit/edit_book.html:62 +#: bookwyrm/templates/book/edit/edit_book.html:70 #, python-format msgid "Is \"%(name)s\" one of these authors?" msgstr "Er \"%(name)s\" en av disse forfatterne?" -#: bookwyrm/templates/book/edit/edit_book.html:73 -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:81 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Author of " msgstr "Forfatter av " -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Find more information at isni.org" msgstr "Finn mer informasjon på isni.org" -#: bookwyrm/templates/book/edit/edit_book.html:85 +#: bookwyrm/templates/book/edit/edit_book.html:93 msgid "This is a new author" msgstr "Dette er en ny forfatter" -#: bookwyrm/templates/book/edit/edit_book.html:92 +#: bookwyrm/templates/book/edit/edit_book.html:100 #, python-format msgid "Creating a new author: %(name)s" msgstr "Oppretter en ny forfatter: %(name)s" -#: bookwyrm/templates/book/edit/edit_book.html:99 +#: bookwyrm/templates/book/edit/edit_book.html:107 msgid "Is this an edition of an existing work?" msgstr "Er dette en utgave av et eksisterende verk?" -#: bookwyrm/templates/book/edit/edit_book.html:107 +#: bookwyrm/templates/book/edit/edit_book.html:115 msgid "This is a new work" msgstr "Dette er et nytt verk" -#: bookwyrm/templates/book/edit/edit_book.html:116 +#: bookwyrm/templates/book/edit/edit_book.html:124 #: bookwyrm/templates/feed/status.html:21 msgid "Back" msgstr "Tilbake" @@ -1970,33 +1970,33 @@ msgstr "Importer bøker" msgid "Data source:" msgstr "Datakilde:" -#: bookwyrm/templates/import/import.html:39 +#: bookwyrm/templates/import/import.html:42 msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." msgstr "Du kan laste ned Goodread-dataene dine fra Import/Export sida på Goodread-kontoen din." -#: bookwyrm/templates/import/import.html:44 +#: bookwyrm/templates/import/import.html:47 msgid "Data file:" msgstr "Datafil:" -#: bookwyrm/templates/import/import.html:52 +#: bookwyrm/templates/import/import.html:55 msgid "Include reviews" msgstr "Inkluder anmeldelser" -#: bookwyrm/templates/import/import.html:57 +#: bookwyrm/templates/import/import.html:60 msgid "Privacy setting for imported reviews:" msgstr "Personverninnstilling for importerte anmeldelser:" -#: bookwyrm/templates/import/import.html:63 +#: bookwyrm/templates/import/import.html:66 #: bookwyrm/templates/preferences/layout.html:31 #: bookwyrm/templates/settings/federation/instance_blocklist.html:76 msgid "Import" msgstr "Importér" -#: bookwyrm/templates/import/import.html:68 +#: bookwyrm/templates/import/import.html:71 msgid "Recent Imports" msgstr "Nylig importer" -#: bookwyrm/templates/import/import.html:70 +#: bookwyrm/templates/import/import.html:73 msgid "No recent imports" msgstr "Ingen nylige importer" @@ -5112,7 +5112,7 @@ msgstr "Filen overskrider maksimal størrelse: 10MB" msgid "%(title)s: %(subtitle)s" msgstr "%(title)s: %(subtitle)s" -#: bookwyrm/views/imports/import_data.py:67 +#: bookwyrm/views/imports/import_data.py:70 msgid "Not a valid csv file" msgstr "Ikke en gyldig csv-fil" diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index 88416d0e..a67f0375 100644 Binary files a/locale/pt_BR/LC_MESSAGES/django.mo and b/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/locale/pt_BR/LC_MESSAGES/django.po b/locale/pt_BR/LC_MESSAGES/django.po index 617f1581..371e46ec 100644 --- a/locale/pt_BR/LC_MESSAGES/django.po +++ b/locale/pt_BR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-08 21:00+0000\n" -"PO-Revision-Date: 2022-04-08 23:12\n" +"POT-Creation-Date: 2022-05-23 21:04+0000\n" +"PO-Revision-Date: 2022-05-24 01:06\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt\n" @@ -121,25 +121,25 @@ msgstr "Perigo" msgid "Automatically generated report" msgstr "Relatório gerado automaticamente" -#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 +#: bookwyrm/models/base_model.py:18 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 #: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "Pendente" -#: bookwyrm/models/base_model.py:18 +#: bookwyrm/models/base_model.py:19 msgid "Self deletion" msgstr "Autoexclusão" -#: bookwyrm/models/base_model.py:19 +#: bookwyrm/models/base_model.py:20 msgid "Moderator suspension" msgstr "Suspensão de moderador" -#: bookwyrm/models/base_model.py:20 +#: bookwyrm/models/base_model.py:21 msgid "Moderator deletion" msgstr "Exclusão de moderador" -#: bookwyrm/models/base_model.py:21 +#: bookwyrm/models/base_model.py:22 msgid "Domain block" msgstr "Bloqueio de domínio" @@ -734,7 +734,7 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:202 -#: bookwyrm/templates/book/edit/edit_book.html:127 +#: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 #: bookwyrm/templates/groups/form.html:32 @@ -757,8 +757,8 @@ msgstr "Salvar" #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:203 #: bookwyrm/templates/book/cover_add_modal.html:33 -#: bookwyrm/templates/book/edit/edit_book.html:129 -#: bookwyrm/templates/book/edit/edit_book.html:132 +#: bookwyrm/templates/book/edit/edit_book.html:137 +#: bookwyrm/templates/book/edit/edit_book.html:140 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 #: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 @@ -780,7 +780,7 @@ msgid "Loading data will connect to %(source_name)s and check f msgstr "Para carregar informações nos conectaremos a %(source_name)s e buscaremos metadados que ainda não temos sobre este/a autor/a. Metadados já existentes não serão substituídos." #: bookwyrm/templates/author/sync_modal.html:24 -#: bookwyrm/templates/book/edit/edit_book.html:114 +#: bookwyrm/templates/book/edit/edit_book.html:122 #: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 @@ -949,42 +949,42 @@ msgstr "Editar \"%(book_title)s\"" msgid "Add Book" msgstr "Adicionar livro" -#: bookwyrm/templates/book/edit/edit_book.html:54 +#: bookwyrm/templates/book/edit/edit_book.html:62 msgid "Confirm Book Info" msgstr "Confirmar informações do livro" -#: bookwyrm/templates/book/edit/edit_book.html:62 +#: bookwyrm/templates/book/edit/edit_book.html:70 #, python-format msgid "Is \"%(name)s\" one of these authors?" msgstr "\"%(name)s\" é uma das pessoas citadas abaixo?" -#: bookwyrm/templates/book/edit/edit_book.html:73 -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:81 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Author of " msgstr "Autor/a de " -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Find more information at isni.org" msgstr "Conheça mais em isni.org" -#: bookwyrm/templates/book/edit/edit_book.html:85 +#: bookwyrm/templates/book/edit/edit_book.html:93 msgid "This is a new author" msgstr "É um/a novo/a autor/a" -#: bookwyrm/templates/book/edit/edit_book.html:92 +#: bookwyrm/templates/book/edit/edit_book.html:100 #, python-format msgid "Creating a new author: %(name)s" msgstr "Criando um/a novo/a autor/a: %(name)s" -#: bookwyrm/templates/book/edit/edit_book.html:99 +#: bookwyrm/templates/book/edit/edit_book.html:107 msgid "Is this an edition of an existing work?" msgstr "É uma edição de uma obra já registrada?" -#: bookwyrm/templates/book/edit/edit_book.html:107 +#: bookwyrm/templates/book/edit/edit_book.html:115 msgid "This is a new work" msgstr "É uma nova obra" -#: bookwyrm/templates/book/edit/edit_book.html:116 +#: bookwyrm/templates/book/edit/edit_book.html:124 #: bookwyrm/templates/feed/status.html:21 msgid "Back" msgstr "Voltar" @@ -1970,33 +1970,33 @@ msgstr "Importar livros" msgid "Data source:" msgstr "Fonte dos dados:" -#: bookwyrm/templates/import/import.html:39 +#: bookwyrm/templates/import/import.html:42 msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." msgstr "Você pode baixar seus dados do Goodreads na página de Importar/Exportar da sua conta." -#: bookwyrm/templates/import/import.html:44 +#: bookwyrm/templates/import/import.html:47 msgid "Data file:" msgstr "Arquivo de dados:" -#: bookwyrm/templates/import/import.html:52 +#: bookwyrm/templates/import/import.html:55 msgid "Include reviews" msgstr "Incluir resenhas" -#: bookwyrm/templates/import/import.html:57 +#: bookwyrm/templates/import/import.html:60 msgid "Privacy setting for imported reviews:" msgstr "Configurações de privacidade para resenhas importadas:" -#: bookwyrm/templates/import/import.html:63 +#: bookwyrm/templates/import/import.html:66 #: bookwyrm/templates/preferences/layout.html:31 #: bookwyrm/templates/settings/federation/instance_blocklist.html:76 msgid "Import" msgstr "Importar" -#: bookwyrm/templates/import/import.html:68 +#: bookwyrm/templates/import/import.html:71 msgid "Recent Imports" msgstr "Importações recentes" -#: bookwyrm/templates/import/import.html:70 +#: bookwyrm/templates/import/import.html:73 msgid "No recent imports" msgstr "Nenhuma importação recente" @@ -5114,7 +5114,7 @@ msgstr "Arquivo excede o tamanho máximo: 10MB" msgid "%(title)s: %(subtitle)s" msgstr "%(title)s: %(subtitle)s" -#: bookwyrm/views/imports/import_data.py:67 +#: bookwyrm/views/imports/import_data.py:70 msgid "Not a valid csv file" msgstr "Não é um arquivo csv válido" diff --git a/locale/pt_PT/LC_MESSAGES/django.mo b/locale/pt_PT/LC_MESSAGES/django.mo index ad1072d5..640fa533 100644 Binary files a/locale/pt_PT/LC_MESSAGES/django.mo and b/locale/pt_PT/LC_MESSAGES/django.mo differ diff --git a/locale/pt_PT/LC_MESSAGES/django.po b/locale/pt_PT/LC_MESSAGES/django.po index 84460506..fa7c865a 100644 --- a/locale/pt_PT/LC_MESSAGES/django.po +++ b/locale/pt_PT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-08 21:00+0000\n" -"PO-Revision-Date: 2022-05-06 23:27\n" +"POT-Creation-Date: 2022-05-23 21:04+0000\n" +"PO-Revision-Date: 2022-05-24 01:06\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Portuguese\n" "Language: pt\n" @@ -121,25 +121,25 @@ msgstr "Perigo" msgid "Automatically generated report" msgstr "Relatório gerado automaticamente" -#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 +#: bookwyrm/models/base_model.py:18 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 #: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "Pendente" -#: bookwyrm/models/base_model.py:18 +#: bookwyrm/models/base_model.py:19 msgid "Self deletion" msgstr "Auto-exclusão" -#: bookwyrm/models/base_model.py:19 +#: bookwyrm/models/base_model.py:20 msgid "Moderator suspension" msgstr "Suspensão do moderador" -#: bookwyrm/models/base_model.py:20 +#: bookwyrm/models/base_model.py:21 msgid "Moderator deletion" msgstr "Exclusão do moderador" -#: bookwyrm/models/base_model.py:21 +#: bookwyrm/models/base_model.py:22 msgid "Domain block" msgstr "Bloqueio de domínio" @@ -734,7 +734,7 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:202 -#: bookwyrm/templates/book/edit/edit_book.html:127 +#: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 #: bookwyrm/templates/groups/form.html:32 @@ -757,8 +757,8 @@ msgstr "Salvar" #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:203 #: bookwyrm/templates/book/cover_add_modal.html:33 -#: bookwyrm/templates/book/edit/edit_book.html:129 -#: bookwyrm/templates/book/edit/edit_book.html:132 +#: bookwyrm/templates/book/edit/edit_book.html:137 +#: bookwyrm/templates/book/edit/edit_book.html:140 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 #: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 @@ -780,7 +780,7 @@ msgid "Loading data will connect to %(source_name)s and check f msgstr "Carregar os dados irá conectar a %(source_name)s e verificar se há metadados sobre este autor que não estão aqui presentes. Os metadados existentes não serão substituídos." #: bookwyrm/templates/author/sync_modal.html:24 -#: bookwyrm/templates/book/edit/edit_book.html:114 +#: bookwyrm/templates/book/edit/edit_book.html:122 #: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 @@ -949,42 +949,42 @@ msgstr "Editar \"%(book_title)s\"" msgid "Add Book" msgstr "Adicionar um Livro" -#: bookwyrm/templates/book/edit/edit_book.html:54 +#: bookwyrm/templates/book/edit/edit_book.html:62 msgid "Confirm Book Info" msgstr "Confirmar informações do livro" -#: bookwyrm/templates/book/edit/edit_book.html:62 +#: bookwyrm/templates/book/edit/edit_book.html:70 #, python-format msgid "Is \"%(name)s\" one of these authors?" msgstr "\"%(name)s\" é um destes autores?" -#: bookwyrm/templates/book/edit/edit_book.html:73 -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:81 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Author of " msgstr "Autor de " -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Find more information at isni.org" msgstr "Podes encontrar mais informações em isni.org" -#: bookwyrm/templates/book/edit/edit_book.html:85 +#: bookwyrm/templates/book/edit/edit_book.html:93 msgid "This is a new author" msgstr "Este é um novo autor" -#: bookwyrm/templates/book/edit/edit_book.html:92 +#: bookwyrm/templates/book/edit/edit_book.html:100 #, python-format msgid "Creating a new author: %(name)s" msgstr "Criar um novo autor: %(name)s" -#: bookwyrm/templates/book/edit/edit_book.html:99 +#: bookwyrm/templates/book/edit/edit_book.html:107 msgid "Is this an edition of an existing work?" msgstr "Esta é uma edição de um trabalho existente?" -#: bookwyrm/templates/book/edit/edit_book.html:107 +#: bookwyrm/templates/book/edit/edit_book.html:115 msgid "This is a new work" msgstr "Este é um novo trabalho" -#: bookwyrm/templates/book/edit/edit_book.html:116 +#: bookwyrm/templates/book/edit/edit_book.html:124 #: bookwyrm/templates/feed/status.html:21 msgid "Back" msgstr "Voltar" @@ -1970,33 +1970,33 @@ msgstr "Importar livros" msgid "Data source:" msgstr "Origem dos dados:" -#: bookwyrm/templates/import/import.html:39 +#: bookwyrm/templates/import/import.html:42 msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." msgstr "Podes fazer download dos teus dados do Goodreads na Importar/Exportar página da tua conta do Goodreads." -#: bookwyrm/templates/import/import.html:44 +#: bookwyrm/templates/import/import.html:47 msgid "Data file:" msgstr "Ficheiro de dados:" -#: bookwyrm/templates/import/import.html:52 +#: bookwyrm/templates/import/import.html:55 msgid "Include reviews" msgstr "Incluir criticas" -#: bookwyrm/templates/import/import.html:57 +#: bookwyrm/templates/import/import.html:60 msgid "Privacy setting for imported reviews:" msgstr "Configuração de privacidade para criticas importadas:" -#: bookwyrm/templates/import/import.html:63 +#: bookwyrm/templates/import/import.html:66 #: bookwyrm/templates/preferences/layout.html:31 #: bookwyrm/templates/settings/federation/instance_blocklist.html:76 msgid "Import" msgstr "Importar" -#: bookwyrm/templates/import/import.html:68 +#: bookwyrm/templates/import/import.html:71 msgid "Recent Imports" msgstr "Importações recentes" -#: bookwyrm/templates/import/import.html:70 +#: bookwyrm/templates/import/import.html:73 msgid "No recent imports" msgstr "Nenhuma importação recente" @@ -5114,7 +5114,7 @@ msgstr "Ficheiro excede o tamanho máximo: 10MB" msgid "%(title)s: %(subtitle)s" msgstr "%(title)s: %(subtitle)s" -#: bookwyrm/views/imports/import_data.py:67 +#: bookwyrm/views/imports/import_data.py:70 msgid "Not a valid csv file" msgstr "Não é um ficheiro csv válido" diff --git a/locale/ro_RO/LC_MESSAGES/django.mo b/locale/ro_RO/LC_MESSAGES/django.mo index f64e15d5..e9b278ec 100644 Binary files a/locale/ro_RO/LC_MESSAGES/django.mo and b/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/locale/ro_RO/LC_MESSAGES/django.po b/locale/ro_RO/LC_MESSAGES/django.po index 48fd4916..8d20397d 100644 --- a/locale/ro_RO/LC_MESSAGES/django.po +++ b/locale/ro_RO/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-08 21:00+0000\n" -"PO-Revision-Date: 2022-05-16 21:13\n" +"POT-Creation-Date: 2022-05-23 21:04+0000\n" +"PO-Revision-Date: 2022-05-24 01:06\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Romanian\n" "Language: ro\n" @@ -121,25 +121,25 @@ msgstr "Pericol" msgid "Automatically generated report" msgstr "Raport generat automat" -#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 +#: bookwyrm/models/base_model.py:18 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 #: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "În așteptare" -#: bookwyrm/models/base_model.py:18 +#: bookwyrm/models/base_model.py:19 msgid "Self deletion" msgstr "Ștergere automată" -#: bookwyrm/models/base_model.py:19 +#: bookwyrm/models/base_model.py:20 msgid "Moderator suspension" msgstr "Suspendat de moderator" -#: bookwyrm/models/base_model.py:20 +#: bookwyrm/models/base_model.py:21 msgid "Moderator deletion" msgstr "Șters de moderator" -#: bookwyrm/models/base_model.py:21 +#: bookwyrm/models/base_model.py:22 msgid "Domain block" msgstr "Blocat de domeniu" @@ -738,7 +738,7 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:202 -#: bookwyrm/templates/book/edit/edit_book.html:127 +#: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 #: bookwyrm/templates/groups/form.html:32 @@ -761,8 +761,8 @@ msgstr "Salvați" #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:203 #: bookwyrm/templates/book/cover_add_modal.html:33 -#: bookwyrm/templates/book/edit/edit_book.html:129 -#: bookwyrm/templates/book/edit/edit_book.html:132 +#: bookwyrm/templates/book/edit/edit_book.html:137 +#: bookwyrm/templates/book/edit/edit_book.html:140 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 #: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 @@ -784,7 +784,7 @@ msgid "Loading data will connect to %(source_name)s and check f msgstr "Încărcatul de date se va conecta la %(source_name)s și verifica orice metadate despre autor care nu sunt prezente aici. Metadatele existente nu vor fi suprascrise." #: bookwyrm/templates/author/sync_modal.html:24 -#: bookwyrm/templates/book/edit/edit_book.html:114 +#: bookwyrm/templates/book/edit/edit_book.html:122 #: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 @@ -955,42 +955,42 @@ msgstr "Editați „%(book_title)s”" msgid "Add Book" msgstr "Adăugați carte" -#: bookwyrm/templates/book/edit/edit_book.html:54 +#: bookwyrm/templates/book/edit/edit_book.html:62 msgid "Confirm Book Info" msgstr "Confirmați informațiile cărții" -#: bookwyrm/templates/book/edit/edit_book.html:62 +#: bookwyrm/templates/book/edit/edit_book.html:70 #, python-format msgid "Is \"%(name)s\" one of these authors?" msgstr "Este „%(name)s” unul dintre acești autori?" -#: bookwyrm/templates/book/edit/edit_book.html:73 -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:81 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Author of " msgstr "Autor al " -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Find more information at isni.org" msgstr "Aflați mai multe la isni.org" -#: bookwyrm/templates/book/edit/edit_book.html:85 +#: bookwyrm/templates/book/edit/edit_book.html:93 msgid "This is a new author" msgstr "Acesta este un autor nou" -#: bookwyrm/templates/book/edit/edit_book.html:92 +#: bookwyrm/templates/book/edit/edit_book.html:100 #, python-format msgid "Creating a new author: %(name)s" msgstr "Creați un autor nou: %(name)s" -#: bookwyrm/templates/book/edit/edit_book.html:99 +#: bookwyrm/templates/book/edit/edit_book.html:107 msgid "Is this an edition of an existing work?" msgstr "Este această o ediție a unei opere existente?" -#: bookwyrm/templates/book/edit/edit_book.html:107 +#: bookwyrm/templates/book/edit/edit_book.html:115 msgid "This is a new work" msgstr "Aceasta este o operă nouă" -#: bookwyrm/templates/book/edit/edit_book.html:116 +#: bookwyrm/templates/book/edit/edit_book.html:124 #: bookwyrm/templates/feed/status.html:21 msgid "Back" msgstr "Înapoi" @@ -1980,33 +1980,33 @@ msgstr "Importați cărți" msgid "Data source:" msgstr "Sursa de date:" -#: bookwyrm/templates/import/import.html:39 +#: bookwyrm/templates/import/import.html:42 msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." msgstr "Puteți descărca datele dvs. GoodReads de pe pagina Import/Export a contului dvs. GoodReads." -#: bookwyrm/templates/import/import.html:44 +#: bookwyrm/templates/import/import.html:47 msgid "Data file:" msgstr "Fișierul de date:" -#: bookwyrm/templates/import/import.html:52 +#: bookwyrm/templates/import/import.html:55 msgid "Include reviews" msgstr "Includeți recenzii" -#: bookwyrm/templates/import/import.html:57 +#: bookwyrm/templates/import/import.html:60 msgid "Privacy setting for imported reviews:" msgstr "Setare de confidențialitate pentru recenziile importate:" -#: bookwyrm/templates/import/import.html:63 +#: bookwyrm/templates/import/import.html:66 #: bookwyrm/templates/preferences/layout.html:31 #: bookwyrm/templates/settings/federation/instance_blocklist.html:76 msgid "Import" msgstr "Importați" -#: bookwyrm/templates/import/import.html:68 +#: bookwyrm/templates/import/import.html:71 msgid "Recent Imports" msgstr "Importuri recente" -#: bookwyrm/templates/import/import.html:70 +#: bookwyrm/templates/import/import.html:73 msgid "No recent imports" msgstr "Niciun import recent" @@ -5139,7 +5139,7 @@ msgstr "Fișierul depășește dimensiuneaz maximă: 10Mo" msgid "%(title)s: %(subtitle)s" msgstr "%(title)s: %(subtitle)s" -#: bookwyrm/views/imports/import_data.py:67 +#: bookwyrm/views/imports/import_data.py:70 msgid "Not a valid csv file" msgstr "Nu este un fișier csv valid" diff --git a/locale/sv_SE/LC_MESSAGES/django.mo b/locale/sv_SE/LC_MESSAGES/django.mo index 70fc627e..0779ff8e 100644 Binary files a/locale/sv_SE/LC_MESSAGES/django.mo and b/locale/sv_SE/LC_MESSAGES/django.mo differ diff --git a/locale/sv_SE/LC_MESSAGES/django.po b/locale/sv_SE/LC_MESSAGES/django.po index 0ff60929..88091987 100644 --- a/locale/sv_SE/LC_MESSAGES/django.po +++ b/locale/sv_SE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-08 21:00+0000\n" -"PO-Revision-Date: 2022-04-08 21:50\n" +"POT-Creation-Date: 2022-05-23 21:04+0000\n" +"PO-Revision-Date: 2022-05-24 01:06\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Swedish\n" "Language: sv\n" @@ -121,25 +121,25 @@ msgstr "Observera" msgid "Automatically generated report" msgstr "Automatiskt genererad rapport" -#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 +#: bookwyrm/models/base_model.py:18 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 #: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "Pågående" -#: bookwyrm/models/base_model.py:18 +#: bookwyrm/models/base_model.py:19 msgid "Self deletion" msgstr "Självborttagning" -#: bookwyrm/models/base_model.py:19 +#: bookwyrm/models/base_model.py:20 msgid "Moderator suspension" msgstr "Moderator-avstängning" -#: bookwyrm/models/base_model.py:20 +#: bookwyrm/models/base_model.py:21 msgid "Moderator deletion" msgstr "Borttagning av moderator" -#: bookwyrm/models/base_model.py:21 +#: bookwyrm/models/base_model.py:22 msgid "Domain block" msgstr "Domänblockering" @@ -734,7 +734,7 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:202 -#: bookwyrm/templates/book/edit/edit_book.html:127 +#: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 #: bookwyrm/templates/groups/form.html:32 @@ -757,8 +757,8 @@ msgstr "Spara" #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:203 #: bookwyrm/templates/book/cover_add_modal.html:33 -#: bookwyrm/templates/book/edit/edit_book.html:129 -#: bookwyrm/templates/book/edit/edit_book.html:132 +#: bookwyrm/templates/book/edit/edit_book.html:137 +#: bookwyrm/templates/book/edit/edit_book.html:140 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 #: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 @@ -780,7 +780,7 @@ msgid "Loading data will connect to %(source_name)s and check f msgstr "Att ladda in data kommer att ansluta till %(source_name)s och kontrollera eventuella metadata om den här författaren som inte finns här. Befintliga metadata kommer inte att skrivas över." #: bookwyrm/templates/author/sync_modal.html:24 -#: bookwyrm/templates/book/edit/edit_book.html:114 +#: bookwyrm/templates/book/edit/edit_book.html:122 #: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 @@ -949,42 +949,42 @@ msgstr "Redigera \"%(book_title)s\"" msgid "Add Book" msgstr "Lägg till bok" -#: bookwyrm/templates/book/edit/edit_book.html:54 +#: bookwyrm/templates/book/edit/edit_book.html:62 msgid "Confirm Book Info" msgstr "Bekräfta bokens info" -#: bookwyrm/templates/book/edit/edit_book.html:62 +#: bookwyrm/templates/book/edit/edit_book.html:70 #, python-format msgid "Is \"%(name)s\" one of these authors?" msgstr "Är \"%(name)s\" en utav dessa författare?" -#: bookwyrm/templates/book/edit/edit_book.html:73 -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:81 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Author of " msgstr "Författare av " -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Find more information at isni.org" msgstr "Hitta mer information på isni.org" -#: bookwyrm/templates/book/edit/edit_book.html:85 +#: bookwyrm/templates/book/edit/edit_book.html:93 msgid "This is a new author" msgstr "Det här är en ny författare" -#: bookwyrm/templates/book/edit/edit_book.html:92 +#: bookwyrm/templates/book/edit/edit_book.html:100 #, python-format msgid "Creating a new author: %(name)s" msgstr "Skapar en ny författare: %(name)s" -#: bookwyrm/templates/book/edit/edit_book.html:99 +#: bookwyrm/templates/book/edit/edit_book.html:107 msgid "Is this an edition of an existing work?" msgstr "Är det här en version av ett redan befintligt verk?" -#: bookwyrm/templates/book/edit/edit_book.html:107 +#: bookwyrm/templates/book/edit/edit_book.html:115 msgid "This is a new work" msgstr "Det här är ett nytt verk" -#: bookwyrm/templates/book/edit/edit_book.html:116 +#: bookwyrm/templates/book/edit/edit_book.html:124 #: bookwyrm/templates/feed/status.html:21 msgid "Back" msgstr "Bakåt" @@ -1970,33 +1970,33 @@ msgstr "Importera böcker" msgid "Data source:" msgstr "Datakälla:" -#: bookwyrm/templates/import/import.html:39 +#: bookwyrm/templates/import/import.html:42 msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." msgstr "Du kan ladda ner Goodreads-data från Import/Export-sidan på ditt Goodreads-konto." -#: bookwyrm/templates/import/import.html:44 +#: bookwyrm/templates/import/import.html:47 msgid "Data file:" msgstr "Datafil:" -#: bookwyrm/templates/import/import.html:52 +#: bookwyrm/templates/import/import.html:55 msgid "Include reviews" msgstr "Inkludera recensioner" -#: bookwyrm/templates/import/import.html:57 +#: bookwyrm/templates/import/import.html:60 msgid "Privacy setting for imported reviews:" msgstr "Integritetsinställning för importerade recensioner:" -#: bookwyrm/templates/import/import.html:63 +#: bookwyrm/templates/import/import.html:66 #: bookwyrm/templates/preferences/layout.html:31 #: bookwyrm/templates/settings/federation/instance_blocklist.html:76 msgid "Import" msgstr "Importera" -#: bookwyrm/templates/import/import.html:68 +#: bookwyrm/templates/import/import.html:71 msgid "Recent Imports" msgstr "Senaste importer" -#: bookwyrm/templates/import/import.html:70 +#: bookwyrm/templates/import/import.html:73 msgid "No recent imports" msgstr "Ingen importering nyligen" @@ -5114,7 +5114,7 @@ msgstr "Filen överskrider maximal storlek: 10 MB" msgid "%(title)s: %(subtitle)s" msgstr "%(title)s: %(subtitle)s" -#: bookwyrm/views/imports/import_data.py:67 +#: bookwyrm/views/imports/import_data.py:70 msgid "Not a valid csv file" msgstr "Inte en giltig csv-fil" diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo index 1d1227f8..4c2a6c1f 100644 Binary files a/locale/zh_Hans/LC_MESSAGES/django.mo and b/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index b1b37dc3..8bd28cea 100644 --- a/locale/zh_Hans/LC_MESSAGES/django.po +++ b/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-08 21:00+0000\n" -"PO-Revision-Date: 2022-04-29 14:20\n" +"POT-Creation-Date: 2022-05-23 21:04+0000\n" +"PO-Revision-Date: 2022-05-24 01:06\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Simplified\n" "Language: zh\n" @@ -121,25 +121,25 @@ msgstr "危险" msgid "Automatically generated report" msgstr "自动生成的举报" -#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 +#: bookwyrm/models/base_model.py:18 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 #: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "待处理" -#: bookwyrm/models/base_model.py:18 +#: bookwyrm/models/base_model.py:19 msgid "Self deletion" msgstr "自我删除" -#: bookwyrm/models/base_model.py:19 +#: bookwyrm/models/base_model.py:20 msgid "Moderator suspension" msgstr "仲裁员停用" -#: bookwyrm/models/base_model.py:20 +#: bookwyrm/models/base_model.py:21 msgid "Moderator deletion" msgstr "仲裁员删除" -#: bookwyrm/models/base_model.py:21 +#: bookwyrm/models/base_model.py:22 msgid "Domain block" msgstr "域名屏蔽" @@ -730,7 +730,7 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:202 -#: bookwyrm/templates/book/edit/edit_book.html:127 +#: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 #: bookwyrm/templates/groups/form.html:32 @@ -753,8 +753,8 @@ msgstr "保存" #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:203 #: bookwyrm/templates/book/cover_add_modal.html:33 -#: bookwyrm/templates/book/edit/edit_book.html:129 -#: bookwyrm/templates/book/edit/edit_book.html:132 +#: bookwyrm/templates/book/edit/edit_book.html:137 +#: bookwyrm/templates/book/edit/edit_book.html:140 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 #: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 @@ -776,7 +776,7 @@ msgid "Loading data will connect to %(source_name)s and check f msgstr "加载数据会连接到 %(source_name)s 并检查这里还没有记录的与作者相关的元数据。现存的元数据不会被覆盖。" #: bookwyrm/templates/author/sync_modal.html:24 -#: bookwyrm/templates/book/edit/edit_book.html:114 +#: bookwyrm/templates/book/edit/edit_book.html:122 #: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 @@ -943,42 +943,42 @@ msgstr "编辑《%(book_title)s》" msgid "Add Book" msgstr "添加书目" -#: bookwyrm/templates/book/edit/edit_book.html:54 +#: bookwyrm/templates/book/edit/edit_book.html:62 msgid "Confirm Book Info" msgstr "确认书目信息" -#: bookwyrm/templates/book/edit/edit_book.html:62 +#: bookwyrm/templates/book/edit/edit_book.html:70 #, python-format msgid "Is \"%(name)s\" one of these authors?" msgstr "“%(name)s” 是这些作者之一吗?" -#: bookwyrm/templates/book/edit/edit_book.html:73 -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:81 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Author of " msgstr "所著书有 " -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Find more information at isni.org" msgstr "在 isni.org 查找更多信息" -#: bookwyrm/templates/book/edit/edit_book.html:85 +#: bookwyrm/templates/book/edit/edit_book.html:93 msgid "This is a new author" msgstr "这是一位新的作者" -#: bookwyrm/templates/book/edit/edit_book.html:92 +#: bookwyrm/templates/book/edit/edit_book.html:100 #, python-format msgid "Creating a new author: %(name)s" msgstr "正在创建新的作者: %(name)s" -#: bookwyrm/templates/book/edit/edit_book.html:99 +#: bookwyrm/templates/book/edit/edit_book.html:107 msgid "Is this an edition of an existing work?" msgstr "这是已存在的作品的一个版本吗?" -#: bookwyrm/templates/book/edit/edit_book.html:107 +#: bookwyrm/templates/book/edit/edit_book.html:115 msgid "This is a new work" msgstr "这是一个新的作品。" -#: bookwyrm/templates/book/edit/edit_book.html:116 +#: bookwyrm/templates/book/edit/edit_book.html:124 #: bookwyrm/templates/feed/status.html:21 msgid "Back" msgstr "返回" @@ -1960,33 +1960,33 @@ msgstr "导入书目" msgid "Data source:" msgstr "数据来源:" -#: bookwyrm/templates/import/import.html:39 +#: bookwyrm/templates/import/import.html:42 msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." msgstr "您可以从 Import/Export page 下载或导出您的 Goodread 数据。" -#: bookwyrm/templates/import/import.html:44 +#: bookwyrm/templates/import/import.html:47 msgid "Data file:" msgstr "数据文件:" -#: bookwyrm/templates/import/import.html:52 +#: bookwyrm/templates/import/import.html:55 msgid "Include reviews" msgstr "纳入书评" -#: bookwyrm/templates/import/import.html:57 +#: bookwyrm/templates/import/import.html:60 msgid "Privacy setting for imported reviews:" msgstr "导入书评的隐私设定" -#: bookwyrm/templates/import/import.html:63 +#: bookwyrm/templates/import/import.html:66 #: bookwyrm/templates/preferences/layout.html:31 #: bookwyrm/templates/settings/federation/instance_blocklist.html:76 msgid "Import" msgstr "导入" -#: bookwyrm/templates/import/import.html:68 +#: bookwyrm/templates/import/import.html:71 msgid "Recent Imports" msgstr "最近的导入" -#: bookwyrm/templates/import/import.html:70 +#: bookwyrm/templates/import/import.html:73 msgid "No recent imports" msgstr "无最近的导入" @@ -5089,7 +5089,7 @@ msgstr "文件超过了最大大小: 10MB" msgid "%(title)s: %(subtitle)s" msgstr "%(title)s:%(subtitle)s" -#: bookwyrm/views/imports/import_data.py:67 +#: bookwyrm/views/imports/import_data.py:70 msgid "Not a valid csv file" msgstr "不是有效的 csv 文件" diff --git a/locale/zh_Hant/LC_MESSAGES/django.mo b/locale/zh_Hant/LC_MESSAGES/django.mo index f9ca27be..20be041a 100644 Binary files a/locale/zh_Hant/LC_MESSAGES/django.mo and b/locale/zh_Hant/LC_MESSAGES/django.mo differ diff --git a/locale/zh_Hant/LC_MESSAGES/django.po b/locale/zh_Hant/LC_MESSAGES/django.po index 4d4f155d..14ad19a2 100644 --- a/locale/zh_Hant/LC_MESSAGES/django.po +++ b/locale/zh_Hant/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-08 21:00+0000\n" -"PO-Revision-Date: 2022-04-08 21:50\n" +"POT-Creation-Date: 2022-05-23 21:04+0000\n" +"PO-Revision-Date: 2022-05-24 01:06\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Traditional\n" "Language: zh\n" @@ -121,25 +121,25 @@ msgstr "" msgid "Automatically generated report" msgstr "" -#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:72 +#: bookwyrm/models/base_model.py:18 bookwyrm/models/link.py:72 #: bookwyrm/templates/import/import_status.html:200 #: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "" -#: bookwyrm/models/base_model.py:18 +#: bookwyrm/models/base_model.py:19 msgid "Self deletion" msgstr "" -#: bookwyrm/models/base_model.py:19 +#: bookwyrm/models/base_model.py:20 msgid "Moderator suspension" msgstr "" -#: bookwyrm/models/base_model.py:20 +#: bookwyrm/models/base_model.py:21 msgid "Moderator deletion" msgstr "" -#: bookwyrm/models/base_model.py:21 +#: bookwyrm/models/base_model.py:22 msgid "Domain block" msgstr "" @@ -730,7 +730,7 @@ msgstr "" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:202 -#: bookwyrm/templates/book/edit/edit_book.html:127 +#: bookwyrm/templates/book/edit/edit_book.html:135 #: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/edit_links.html:82 #: bookwyrm/templates/groups/form.html:32 @@ -753,8 +753,8 @@ msgstr "儲存" #: bookwyrm/templates/author/sync_modal.html:23 #: bookwyrm/templates/book/book.html:203 #: bookwyrm/templates/book/cover_add_modal.html:33 -#: bookwyrm/templates/book/edit/edit_book.html:129 -#: bookwyrm/templates/book/edit/edit_book.html:132 +#: bookwyrm/templates/book/edit/edit_book.html:137 +#: bookwyrm/templates/book/edit/edit_book.html:140 #: bookwyrm/templates/book/file_links/add_link_modal.html:59 #: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/sync_modal.html:23 @@ -776,7 +776,7 @@ msgid "Loading data will connect to %(source_name)s and check f msgstr "" #: bookwyrm/templates/author/sync_modal.html:24 -#: bookwyrm/templates/book/edit/edit_book.html:114 +#: bookwyrm/templates/book/edit/edit_book.html:122 #: bookwyrm/templates/book/sync_modal.html:24 #: bookwyrm/templates/groups/members.html:29 #: bookwyrm/templates/landing/password_reset.html:42 @@ -943,42 +943,42 @@ msgstr "編輯 \"%(book_title)s\"" msgid "Add Book" msgstr "新增書目" -#: bookwyrm/templates/book/edit/edit_book.html:54 +#: bookwyrm/templates/book/edit/edit_book.html:62 msgid "Confirm Book Info" msgstr "確認書目資料" -#: bookwyrm/templates/book/edit/edit_book.html:62 +#: bookwyrm/templates/book/edit/edit_book.html:70 #, python-format msgid "Is \"%(name)s\" one of these authors?" msgstr "" -#: bookwyrm/templates/book/edit/edit_book.html:73 -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:81 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Author of " msgstr "" -#: bookwyrm/templates/book/edit/edit_book.html:75 +#: bookwyrm/templates/book/edit/edit_book.html:83 msgid "Find more information at isni.org" msgstr "" -#: bookwyrm/templates/book/edit/edit_book.html:85 +#: bookwyrm/templates/book/edit/edit_book.html:93 msgid "This is a new author" msgstr "這是一位新的作者" -#: bookwyrm/templates/book/edit/edit_book.html:92 +#: bookwyrm/templates/book/edit/edit_book.html:100 #, python-format msgid "Creating a new author: %(name)s" msgstr "正在建立新的作者: %(name)s" -#: bookwyrm/templates/book/edit/edit_book.html:99 +#: bookwyrm/templates/book/edit/edit_book.html:107 msgid "Is this an edition of an existing work?" msgstr "這是已存在的作品的另一個版本嗎?" -#: bookwyrm/templates/book/edit/edit_book.html:107 +#: bookwyrm/templates/book/edit/edit_book.html:115 msgid "This is a new work" msgstr "這是一個新的作品。" -#: bookwyrm/templates/book/edit/edit_book.html:116 +#: bookwyrm/templates/book/edit/edit_book.html:124 #: bookwyrm/templates/feed/status.html:21 msgid "Back" msgstr "返回" @@ -1960,33 +1960,33 @@ msgstr "匯入書目" msgid "Data source:" msgstr "資料來源:" -#: bookwyrm/templates/import/import.html:39 +#: bookwyrm/templates/import/import.html:42 msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account." msgstr "" -#: bookwyrm/templates/import/import.html:44 +#: bookwyrm/templates/import/import.html:47 msgid "Data file:" msgstr "資料檔案:" -#: bookwyrm/templates/import/import.html:52 +#: bookwyrm/templates/import/import.html:55 msgid "Include reviews" msgstr "納入書評" -#: bookwyrm/templates/import/import.html:57 +#: bookwyrm/templates/import/import.html:60 msgid "Privacy setting for imported reviews:" msgstr "匯入書評的隱私設定" -#: bookwyrm/templates/import/import.html:63 +#: bookwyrm/templates/import/import.html:66 #: bookwyrm/templates/preferences/layout.html:31 #: bookwyrm/templates/settings/federation/instance_blocklist.html:76 msgid "Import" msgstr "匯入" -#: bookwyrm/templates/import/import.html:68 +#: bookwyrm/templates/import/import.html:71 msgid "Recent Imports" msgstr "最近的匯入" -#: bookwyrm/templates/import/import.html:70 +#: bookwyrm/templates/import/import.html:73 msgid "No recent imports" msgstr "無最近的匯入" @@ -5087,7 +5087,7 @@ msgstr "檔案超過了最大大小: 10MB" msgid "%(title)s: %(subtitle)s" msgstr "" -#: bookwyrm/views/imports/import_data.py:67 +#: bookwyrm/views/imports/import_data.py:70 msgid "Not a valid csv file" msgstr "不是有效的 csv 檔案" diff --git a/requirements.txt b/requirements.txt index 7614dc42..0155782c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ +aiohttp==3.8.1 celery==5.2.2 colorthief==0.2.1 Django==3.2.13 @@ -34,3 +35,4 @@ pytest-cov==2.10.1 pytest-env==0.6.2 pytest-xdist==2.3.0 pytidylib==0.3.2 +pylint==2.14.0