Merge branch 'main' into openlibrary-author-fields

This commit is contained in:
Mouse Reeve 2022-02-16 18:06:04 -08:00
commit 39691bed3a
90 changed files with 1841 additions and 2557 deletions

View File

@ -89,3 +89,19 @@ PREVIEW_TEXT_COLOR=#363636
PREVIEW_IMG_WIDTH=1200 PREVIEW_IMG_WIDTH=1200
PREVIEW_IMG_HEIGHT=630 PREVIEW_IMG_HEIGHT=630
PREVIEW_DEFAULT_COVER_COLOR=#002549 PREVIEW_DEFAULT_COVER_COLOR=#002549
# Below are example keys if you want to enable automatically
# sending telemetry to an OTLP-compatible service. Many of
# the main monitoring apps have OLTP collectors, including
# NewRelic, DataDog, and Honeycomb.io - consult their
# documentation for setup instructions, and what exactly to
# put below!
#
# Service name is an arbitrary tag that is attached to any
# data sent, used to distinguish different sources. Useful
# for sending prod and dev metrics to the same place and
# keeping them separate, for instance!
OTEL_EXPORTER_OTLP_ENDPOINT= # API endpoint for your provider
OTEL_EXPORTER_OTLP_HEADERS= # Any headers required, usually authentication info
OTEL_SERVICE_NAME= # Service name to identify your app

View File

@ -1,5 +1,5 @@
# @url https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions # @url https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
name: Lint Frontend name: Lint Frontend (run `./bw-dev stylelint` to fix css errors)
on: on:
push: push:
@ -8,7 +8,7 @@ on:
- '.github/workflows/**' - '.github/workflows/**'
- 'static/**' - 'static/**'
- '.eslintrc' - '.eslintrc'
- '.stylelintrc' - '.stylelintrc.js'
pull_request: pull_request:
branches: [ main, ci, frontend ] branches: [ main, ci, frontend ]
@ -22,17 +22,16 @@ jobs:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Install modules - name: Install modules
run: yarn run: npm install stylelint stylelint-config-recommended stylelint-config-standard stylelint-order eslint
# See .stylelintignore for files that are not linted. # See .stylelintignore for files that are not linted.
- name: Run stylelint - name: Run stylelint
run: > run: >
yarn stylelint bookwyrm/static/**/*.css \ npx stylelint bookwyrm/static/css/*.css \
--report-needless-disables \ --config dev-tools/.stylelintrc.js
--report-invalid-scope-disables
# See .eslintignore for files that are not linted. # See .eslintignore for files that are not linted.
- name: Run ESLint - name: Run ESLint
run: > run: >
yarn eslint bookwyrm/static \ npx eslint bookwyrm/static \
--ext .js,.jsx,.ts,.tsx --ext .js,.jsx,.ts,.tsx

View File

@ -17,8 +17,7 @@ jobs:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Install modules - name: Install modules
run: npm install . run: npm install prettier
# See .stylelintignore for files that are not linted.
- name: Run Prettier - name: Run Prettier
run: npx prettier --check bookwyrm/static/js/*.js run: npx prettier --check bookwyrm/static/js/*.js

4
.gitignore vendored
View File

@ -24,7 +24,9 @@
.idea .idea
#Node tools #Node tools
/node_modules/ node_modules/
package-lock.json
yarn.lock
#nginx #nginx
nginx/default.conf nginx/default.conf

View File

@ -227,7 +227,7 @@ def set_related_field(
model_field = getattr(model, related_field_name) model_field = getattr(model, related_field_name)
if hasattr(model_field, "activitypub_field"): if hasattr(model_field, "activitypub_field"):
setattr(activity, getattr(model_field, "activitypub_field"), instance.remote_id) setattr(activity, getattr(model_field, "activitypub_field"), instance.remote_id)
item = activity.to_model() item = activity.to_model(model=model)
# if the related field isn't serialized (attachments on Status), then # if the related field isn't serialized (attachments on Status), then
# we have to set it post-creation # we have to set it post-creation
@ -298,6 +298,7 @@ class Link(ActivityObject):
mediaType: str = None mediaType: str = None
id: str = None id: str = None
attributedTo: str = None attributedTo: str = None
availability: str = None
type: str = "Link" type: str = "Link"
def serialize(self, **kwargs): def serialize(self, **kwargs):

54
bookwyrm/apps.py Normal file
View File

@ -0,0 +1,54 @@
"""Do further startup configuration and initialization"""
import os
import urllib
import logging
from django.apps import AppConfig
from bookwyrm import settings
logger = logging.getLogger(__name__)
def download_file(url, destination):
"""Downloads a file to the given path"""
try:
# Ensure our destination directory exists
os.makedirs(os.path.dirname(destination))
with urllib.request.urlopen(url) as stream:
with open(destination, "b+w") as outfile:
outfile.write(stream.read())
except (urllib.error.HTTPError, urllib.error.URLError):
logger.error("Failed to download file %s", url)
except OSError:
logger.error("Couldn't open font file %s for writing", destination)
except: # pylint: disable=bare-except
logger.exception("Unknown error in file download")
class BookwyrmConfig(AppConfig):
"""Handles additional configuration"""
name = "bookwyrm"
verbose_name = "BookWyrm"
# pylint: disable=no-self-use
def ready(self):
"""set up OTLP and preview image files, if desired"""
if settings.OTEL_EXPORTER_OTLP_ENDPOINT:
# pylint: disable=import-outside-toplevel
from bookwyrm.telemetry import open_telemetry
open_telemetry.instrumentDjango()
if settings.ENABLE_PREVIEW_IMAGES and settings.FONTS:
# Download any fonts that we don't have yet
logger.debug("Downloading fonts..")
for name, config in settings.FONTS.items():
font_path = os.path.join(
settings.FONT_DIR, config["directory"], config["filename"]
)
if "url" in config and not os.path.exists(font_path):
logger.info("Just a sec, downloading %s", name)
download_file(config["url"], font_path)

View File

@ -1,7 +1,11 @@
""" functionality outline for a book data connector """ """ functionality outline for a book data connector """
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
import imghdr
import ipaddress
import logging import logging
from urllib.parse import urlparse
from django.core.files.base import ContentFile
from django.db import transaction from django.db import transaction
import requests import requests
from requests.exceptions import RequestException from requests.exceptions import RequestException
@ -248,6 +252,8 @@ def dict_from_mappings(data, mappings):
def get_data(url, params=None, timeout=10): def get_data(url, params=None, timeout=10):
"""wrapper for request.get""" """wrapper for request.get"""
# check if the url is blocked # check if the url is blocked
raise_not_valid_url(url)
if models.FederatedServer.is_blocked(url): if models.FederatedServer.is_blocked(url):
raise ConnectorException(f"Attempting to load data from blocked url: {url}") raise ConnectorException(f"Attempting to load data from blocked url: {url}")
@ -280,6 +286,7 @@ def get_data(url, params=None, timeout=10):
def get_image(url, timeout=10): def get_image(url, timeout=10):
"""wrapper for requesting an image""" """wrapper for requesting an image"""
raise_not_valid_url(url)
try: try:
resp = requests.get( resp = requests.get(
url, url,
@ -290,10 +297,32 @@ def get_image(url, timeout=10):
) )
except RequestException as err: except RequestException as err:
logger.exception(err) logger.exception(err)
return None return None, None
if not resp.ok: if not resp.ok:
return None return None, None
return resp
image_content = ContentFile(resp.content)
extension = imghdr.what(None, image_content.read())
if not extension:
logger.exception("File requested was not an image: %s", url)
return None, None
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: class Mapping:

View File

@ -1,6 +1,7 @@
""" using django model forms """ """ using django model forms """
import datetime import datetime
from collections import defaultdict from collections import defaultdict
from urllib.parse import urlparse
from django import forms from django import forms
from django.forms import ModelForm, PasswordInput, widgets, ChoiceField from django.forms import ModelForm, PasswordInput, widgets, ChoiceField
@ -227,6 +228,34 @@ class FileLinkForm(CustomForm):
model = models.FileLink model = models.FileLink
fields = ["url", "filetype", "availability", "book", "added_by"] fields = ["url", "filetype", "availability", "book", "added_by"]
def clean(self):
"""make sure the domain isn't blocked or pending"""
cleaned_data = super().clean()
url = cleaned_data.get("url")
filetype = cleaned_data.get("filetype")
book = cleaned_data.get("book")
domain = urlparse(url).netloc
if models.LinkDomain.objects.filter(domain=domain).exists():
status = models.LinkDomain.objects.get(domain=domain).status
if status == "blocked":
# pylint: disable=line-too-long
self.add_error(
"url",
_(
"This domain is blocked. Please contact your administrator if you think this is an error."
),
)
elif models.FileLink.objects.filter(
url=url, book=book, filetype=filetype
).exists():
# pylint: disable=line-too-long
self.add_error(
"url",
_(
"This link with file type has already been added for this book. If it is not visible, the domain is still pending."
),
)
class EditionForm(CustomForm): class EditionForm(CustomForm):
class Meta: class Meta:

View File

@ -7,6 +7,7 @@ from bookwyrm import settings
r = redis.Redis( r = redis.Redis(
host=settings.REDIS_ACTIVITY_HOST, host=settings.REDIS_ACTIVITY_HOST,
port=settings.REDIS_ACTIVITY_PORT, port=settings.REDIS_ACTIVITY_PORT,
password=settings.REDIS_ACTIVITY_PASSWORD,
db=settings.REDIS_ACTIVITY_DB_INDEX, db=settings.REDIS_ACTIVITY_DB_INDEX,
) )

View File

@ -0,0 +1,37 @@
# Generated by Django 3.2.10 on 2022-02-02 20:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("bookwyrm", "0131_merge_20220125_1644"),
]
operations = [
migrations.AlterField(
model_name="user",
name="preferred_language",
field=models.CharField(
blank=True,
choices=[
("en-us", "English"),
("de-de", "Deutsch (German)"),
("es-es", "Español (Spanish)"),
("gl-es", "Galego (Galician)"),
("it-it", "Italiano (Italian)"),
("fr-fr", "Français (French)"),
("lt-lt", "Lietuvių (Lithuanian)"),
("no-no", "Norsk (Norwegian)"),
("pt-br", "Português do Brasil (Brazilian Portuguese)"),
("pt-pt", "Português Europeu (European Portuguese)"),
("sv-se", "Svenska (Swedish)"),
("zh-hans", "简体中文 (Simplified Chinese)"),
("zh-hant", "繁體中文 (Traditional Chinese)"),
],
max_length=255,
null=True,
),
),
]

View File

@ -0,0 +1,21 @@
# Generated by Django 3.2.11 on 2022-02-04 20:06
import bookwyrm.models.fields
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("bookwyrm", "0132_alter_user_preferred_language"),
]
operations = [
migrations.AlterField(
model_name="listitem",
name="notes",
field=bookwyrm.models.fields.HtmlField(
blank=True, max_length=300, null=True
),
),
]

View File

@ -0,0 +1,29 @@
# Generated by Django 3.2.11 on 2022-02-11 18:59
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("bookwyrm", "0133_alter_listitem_notes"),
]
operations = [
migrations.AddField(
model_name="announcement",
name="display_type",
field=models.CharField(
choices=[
("white-ter", "None"),
("primary-light", "Primary"),
("success-light", "Success"),
("link-light", "Link"),
("warning-light", "Warning"),
("danger-light", "Danger"),
],
default="white-ter",
max_length=20,
),
),
]

View File

@ -2,10 +2,21 @@
from django.db import models from django.db import models
from django.db.models import Q from django.db.models import Q
from django.utils import timezone from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from .base_model import BookWyrmModel from .base_model import BookWyrmModel
DisplayTypes = [
("white-ter", _("None")),
("primary-light", _("Primary")),
("success-light", _("Success")),
("link-light", _("Link")),
("warning-light", _("Warning")),
("danger-light", _("Danger")),
]
class Announcement(BookWyrmModel): class Announcement(BookWyrmModel):
"""The admin has something to say""" """The admin has something to say"""
@ -16,6 +27,13 @@ class Announcement(BookWyrmModel):
start_date = models.DateTimeField(blank=True, null=True) start_date = models.DateTimeField(blank=True, null=True)
end_date = models.DateTimeField(blank=True, null=True) end_date = models.DateTimeField(blank=True, null=True)
active = models.BooleanField(default=True) active = models.BooleanField(default=True)
display_type = models.CharField(
max_length=20,
blank=False,
null=False,
choices=DisplayTypes,
default="white-ter",
)
@classmethod @classmethod
def active_announcements(cls): def active_announcements(cls):

View File

@ -1,6 +1,5 @@
""" activitypub-aware django model fields """ """ activitypub-aware django model fields """
from dataclasses import MISSING from dataclasses import MISSING
import imghdr
import re import re
from uuid import uuid4 from uuid import uuid4
from urllib.parse import urljoin from urllib.parse import urljoin
@ -9,7 +8,6 @@ import dateutil.parser
from dateutil.parser import ParserError from dateutil.parser import ParserError
from django.contrib.postgres.fields import ArrayField as DjangoArrayField from django.contrib.postgres.fields import ArrayField as DjangoArrayField
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.core.files.base import ContentFile
from django.db import models from django.db import models
from django.forms import ClearableFileInput, ImageField as DjangoImageField from django.forms import ClearableFileInput, ImageField as DjangoImageField
from django.utils import timezone from django.utils import timezone
@ -443,12 +441,10 @@ class ImageField(ActivitypubFieldMixin, models.ImageField):
except ValidationError: except ValidationError:
return None return None
response = get_image(url) image_content, extension = get_image(url)
if not response: if not image_content:
return None return None
image_content = ContentFile(response.content)
extension = imghdr.what(None, image_content.read()) or ""
image_name = f"{uuid4()}.{extension}" image_name = f"{uuid4()}.{extension}"
return [image_name, image_content] return [image_name, image_content]

View File

@ -142,7 +142,7 @@ class ListItem(CollectionItemMixin, BookWyrmModel):
user = fields.ForeignKey( user = fields.ForeignKey(
"User", on_delete=models.PROTECT, activitypub_field="actor" "User", on_delete=models.PROTECT, activitypub_field="actor"
) )
notes = fields.TextField(blank=True, null=True, max_length=300) notes = fields.HtmlField(blank=True, null=True, max_length=300)
approved = models.BooleanField(default=True) approved = models.BooleanField(default=True)
order = fields.IntegerField() order = fields.IntegerField()
endorsement = models.ManyToManyField("User", related_name="endorsers") endorsement = models.ManyToManyField("User", related_name="endorsers")

View File

@ -4,6 +4,7 @@ import os
import textwrap import textwrap
from io import BytesIO from io import BytesIO
from uuid import uuid4 from uuid import uuid4
import logging
import colorsys import colorsys
from colorthief import ColorThief from colorthief import ColorThief
@ -17,34 +18,49 @@ from django.db.models import Avg
from bookwyrm import models, settings from bookwyrm import models, settings
from bookwyrm.tasks import app from bookwyrm.tasks import app
logger = logging.getLogger(__name__)
IMG_WIDTH = settings.PREVIEW_IMG_WIDTH IMG_WIDTH = settings.PREVIEW_IMG_WIDTH
IMG_HEIGHT = settings.PREVIEW_IMG_HEIGHT IMG_HEIGHT = settings.PREVIEW_IMG_HEIGHT
BG_COLOR = settings.PREVIEW_BG_COLOR BG_COLOR = settings.PREVIEW_BG_COLOR
TEXT_COLOR = settings.PREVIEW_TEXT_COLOR TEXT_COLOR = settings.PREVIEW_TEXT_COLOR
DEFAULT_COVER_COLOR = settings.PREVIEW_DEFAULT_COVER_COLOR DEFAULT_COVER_COLOR = settings.PREVIEW_DEFAULT_COVER_COLOR
DEFAULT_FONT = settings.PREVIEW_DEFAULT_FONT
TRANSPARENT_COLOR = (0, 0, 0, 0) TRANSPARENT_COLOR = (0, 0, 0, 0)
margin = math.floor(IMG_HEIGHT / 10) margin = math.floor(IMG_HEIGHT / 10)
gutter = math.floor(margin / 2) gutter = math.floor(margin / 2)
inner_img_height = math.floor(IMG_HEIGHT * 0.8) inner_img_height = math.floor(IMG_HEIGHT * 0.8)
inner_img_width = math.floor(inner_img_height * 0.7) inner_img_width = math.floor(inner_img_height * 0.7)
font_dir = os.path.join(settings.STATIC_ROOT, "fonts/public_sans")
def get_font(font_name, size=28): def get_imagefont(name, size):
"""Loads custom font""" """Loads an ImageFont based on config"""
if font_name == "light": try:
font_path = os.path.join(font_dir, "PublicSans-Light.ttf") config = settings.FONTS[name]
if font_name == "regular": path = os.path.join(settings.FONT_DIR, config["directory"], config["filename"])
font_path = os.path.join(font_dir, "PublicSans-Regular.ttf") return ImageFont.truetype(path, size)
elif font_name == "bold": except KeyError:
font_path = os.path.join(font_dir, "PublicSans-Bold.ttf") logger.error("Font %s not found in config", name)
except OSError:
logger.error("Could not load font %s from file", name)
return ImageFont.load_default()
def get_font(weight, size=28):
"""Gets a custom font with the given weight and size"""
font = get_imagefont(DEFAULT_FONT, size)
try: try:
font = ImageFont.truetype(font_path, size) if weight == "light":
except OSError: font.set_variation_by_name("Light")
font = ImageFont.load_default() if weight == "bold":
font.set_variation_by_name("Bold")
if weight == "regular":
font.set_variation_by_name("Regular")
except AttributeError:
pass
return font return font

View File

@ -22,6 +22,7 @@ class InputHtmlParser(HTMLParser): # pylint: disable=abstract-method
"ol", "ol",
"li", "li",
] ]
self.allowed_attrs = ["href", "rel", "src", "alt"]
self.tag_stack = [] self.tag_stack = []
self.output = [] self.output = []
# if the html appears invalid, we just won't allow any at all # if the html appears invalid, we just won't allow any at all
@ -30,7 +31,14 @@ class InputHtmlParser(HTMLParser): # pylint: disable=abstract-method
def handle_starttag(self, tag, attrs): def handle_starttag(self, tag, attrs):
"""check if the tag is valid""" """check if the tag is valid"""
if self.allow_html and tag in self.allowed_tags: if self.allow_html and tag in self.allowed_tags:
self.output.append(("tag", self.get_starttag_text())) allowed_attrs = " ".join(
f'{a}="{v}"' for a, v in attrs if a in self.allowed_attrs
)
reconstructed = f"<{tag}"
if allowed_attrs:
reconstructed += " " + allowed_attrs
reconstructed += ">"
self.output.append(("tag", reconstructed))
self.tag_stack.append(tag) self.tag_stack.append(tag)
else: else:
self.output.append(("data", "")) self.output.append(("data", ""))

View File

@ -9,7 +9,7 @@ from django.utils.translation import gettext_lazy as _
env = Env() env = Env()
env.read_env() env.read_env()
DOMAIN = env("DOMAIN") DOMAIN = env("DOMAIN")
VERSION = "0.2.0" VERSION = "0.3.0"
PAGE_LENGTH = env("PAGE_LENGTH", 15) PAGE_LENGTH = env("PAGE_LENGTH", 15)
DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English") DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English")
@ -35,6 +35,9 @@ LOCALE_PATHS = [
] ]
LANGUAGE_COOKIE_NAME = env.str("LANGUAGE_COOKIE_NAME", "django_language") LANGUAGE_COOKIE_NAME = env.str("LANGUAGE_COOKIE_NAME", "django_language")
STATIC_ROOT = os.path.join(BASE_DIR, env("STATIC_ROOT", "static"))
MEDIA_ROOT = os.path.join(BASE_DIR, env("MEDIA_ROOT", "images"))
DEFAULT_AUTO_FIELD = "django.db.models.AutoField" DEFAULT_AUTO_FIELD = "django.db.models.AutoField"
# Preview image # Preview image
@ -44,6 +47,17 @@ PREVIEW_TEXT_COLOR = env.str("PREVIEW_TEXT_COLOR", "#363636")
PREVIEW_IMG_WIDTH = env.int("PREVIEW_IMG_WIDTH", 1200) PREVIEW_IMG_WIDTH = env.int("PREVIEW_IMG_WIDTH", 1200)
PREVIEW_IMG_HEIGHT = env.int("PREVIEW_IMG_HEIGHT", 630) PREVIEW_IMG_HEIGHT = env.int("PREVIEW_IMG_HEIGHT", 630)
PREVIEW_DEFAULT_COVER_COLOR = env.str("PREVIEW_DEFAULT_COVER_COLOR", "#002549") PREVIEW_DEFAULT_COVER_COLOR = env.str("PREVIEW_DEFAULT_COVER_COLOR", "#002549")
PREVIEW_DEFAULT_FONT = env.str("PREVIEW_DEFAULT_FONT", "Source Han Sans")
FONTS = {
# pylint: disable=line-too-long
"Source Han Sans": {
"directory": "source_han_sans",
"filename": "SourceHanSans-VF.ttf.ttc",
"url": "https://github.com/adobe-fonts/source-han-sans/raw/release/Variable/OTC/SourceHanSans-VF.ttf.ttc",
}
}
FONT_DIR = os.path.join(STATIC_ROOT, "fonts")
# Quick-start development settings - unsuitable for production # Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/ # See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
@ -150,6 +164,9 @@ LOGGING = {
"handlers": ["console", "mail_admins"], "handlers": ["console", "mail_admins"],
"level": LOG_LEVEL, "level": LOG_LEVEL,
}, },
"django.utils.autoreload": {
"level": "INFO",
},
# Add a bookwyrm-specific logger # Add a bookwyrm-specific logger
"bookwyrm": { "bookwyrm": {
"handlers": ["console"], "handlers": ["console"],
@ -255,7 +272,7 @@ LANGUAGES = [
("no-no", _("Norsk (Norwegian)")), ("no-no", _("Norsk (Norwegian)")),
("pt-br", _("Português do Brasil (Brazilian Portuguese)")), ("pt-br", _("Português do Brasil (Brazilian Portuguese)")),
("pt-pt", _("Português Europeu (European Portuguese)")), ("pt-pt", _("Português Europeu (European Portuguese)")),
("sv-se", _("Swedish (Svenska)")), ("sv-se", _("Svenska (Swedish)")),
("zh-hans", _("简体中文 (Simplified Chinese)")), ("zh-hans", _("简体中文 (Simplified Chinese)")),
("zh-hant", _("繁體中文 (Traditional Chinese)")), ("zh-hant", _("繁體中文 (Traditional Chinese)")),
] ]
@ -311,13 +328,12 @@ if USE_S3:
MEDIA_FULL_URL = MEDIA_URL MEDIA_FULL_URL = MEDIA_URL
STATIC_FULL_URL = STATIC_URL STATIC_FULL_URL = STATIC_URL
DEFAULT_FILE_STORAGE = "bookwyrm.storage_backends.ImagesStorage" DEFAULT_FILE_STORAGE = "bookwyrm.storage_backends.ImagesStorage"
# I don't know if it's used, but the site crashes without it
STATIC_ROOT = os.path.join(BASE_DIR, env("STATIC_ROOT", "static"))
MEDIA_ROOT = os.path.join(BASE_DIR, env("MEDIA_ROOT", "images"))
else: else:
STATIC_URL = "/static/" STATIC_URL = "/static/"
STATIC_ROOT = os.path.join(BASE_DIR, env("STATIC_ROOT", "static"))
MEDIA_URL = "/images/" MEDIA_URL = "/images/"
MEDIA_FULL_URL = f"{PROTOCOL}://{DOMAIN}{MEDIA_URL}" MEDIA_FULL_URL = f"{PROTOCOL}://{DOMAIN}{MEDIA_URL}"
STATIC_FULL_URL = f"{PROTOCOL}://{DOMAIN}{STATIC_URL}" STATIC_FULL_URL = f"{PROTOCOL}://{DOMAIN}{STATIC_URL}"
MEDIA_ROOT = os.path.join(BASE_DIR, env("MEDIA_ROOT", "images"))
OTEL_EXPORTER_OTLP_ENDPOINT = env("OTEL_EXPORTER_OTLP_ENDPOINT", None)
OTEL_EXPORTER_OTLP_HEADERS = env("OTEL_EXPORTER_OTLP_HEADERS", None)
OTEL_SERVICE_NAME = env("OTEL_SERVICE_NAME", None)

View File

@ -319,7 +319,7 @@ details.details-panel summary {
position: relative; position: relative;
} }
details.details-panel summary .details-close { details summary .details-close {
position: absolute; position: absolute;
right: 0; right: 0;
top: 0; top: 0;
@ -327,7 +327,7 @@ details.details-panel summary .details-close {
transition: transform 0.2s ease; transition: transform 0.2s ease;
} }
details[open].details-panel summary .details-close { details[open] summary .details-close {
transform: rotate(0deg); transform: rotate(0deg);
} }
@ -496,7 +496,7 @@ details[open].details-panel summary .details-close {
max-height: 100%; max-height: 100%;
/* Useful when stretching under-sized images. */ /* Useful when stretching under-sized images. */
image-rendering: optimizeQuality; image-rendering: optimizequality;
image-rendering: smooth; image-rendering: smooth;
} }

View File

@ -0,0 +1,96 @@
Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font
Name 'Source'. Source is a trademark of Adobe in the United States
and/or other countries.
This Font Software is licensed under the SIL Open Font License,
Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font
creation efforts of academic and linguistic communities, and to
provide a free and open framework in which fonts may be shared and
improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply to
any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software
components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to,
deleting, or substituting -- in part or in whole -- any of the
components of the Original Version, by changing formats or by porting
the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed,
modify, redistribute, and sell modified and unmodified copies of the
Font Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components, in
Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the
corresponding Copyright Holder. This restriction only applies to the
primary font name as presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created using
the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@ -0,0 +1,9 @@
The font file itself is not included in the Git repository to avoid putting
large files in the repo history. The Docker image should download the correct
font into this folder automatically.
In case something goes wrong, the font used is the Variable OTC TTF, available
as of this writing from the Adobe Fonts GitHub repository:
https://github.com/adobe-fonts/source-han-sans/tree/release#user-content-variable-otcs
BookWyrm expects the file to be in this folder, named SourceHanSans-VF.ttf.ttc

View File

@ -0,0 +1,22 @@
from opentelemetry import trace
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
trace.set_tracer_provider(TracerProvider())
trace.get_tracer_provider().add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))
def instrumentDjango():
from opentelemetry.instrumentation.django import DjangoInstrumentor
DjangoInstrumentor().instrument()
def instrumentCelery():
from opentelemetry.instrumentation.celery import CeleryInstrumentor
from celery.signals import worker_process_init
@worker_process_init.connect(weak=False)
def init_celery_tracing(*args, **kwargs):
CeleryInstrumentor().instrument()

View File

@ -28,7 +28,7 @@
<div class="columns"> <div class="columns">
{% if superlatives.top_rated %} {% if superlatives.top_rated %}
{% with book=superlatives.top_rated.default_edition rating=top_rated.rating %} {% with book=superlatives.top_rated.default_edition rating=superlatives.top_rated.rating %}
<div class="column is-one-third is-flex"> <div class="column is-one-third is-flex">
<div class="media notification"> <div class="media notification">
<div class="media-left"> <div class="media-left">

View File

@ -356,10 +356,11 @@
<form name="list-add" method="post" action="{% url 'list-add-book' %}"> <form name="list-add" method="post" action="{% url 'list-add-book' %}">
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="book" value="{{ book.id }}"> <input type="hidden" name="book" value="{{ book.id }}">
<input type="hidden" name="user" value="{{ request.user.id }}">
<label class="label" for="id_list">{% trans "Add to list" %}</label> <label class="label" for="id_list">{% trans "Add to list" %}</label>
<div class="field has-addons"> <div class="field has-addons">
<div class="select control is-clipped"> <div class="select control is-clipped">
<select name="list" id="id_list"> <select name="book_list" id="id_list">
{% for list in user.list_set.all %} {% for list in user.list_set.all %}
<option value="{{ list.id }}">{{ list.name }}</option> <option value="{{ list.id }}">{{ list.name }}</option>
{% endfor %} {% endfor %}

View File

@ -56,9 +56,7 @@
{% block modal-footer %} {% block modal-footer %}
<button class="button is-primary" type="submit">{% trans "Save" %}</button> <button class="button is-primary" type="submit">{% trans "Save" %}</button>
{% if not static %} <button type="button" class="button" data-modal-close>{% trans "Cancel" %}</button>
<button type="button" class="button" data-modal-close>{% trans "Cancel" %}</button>
{% endif %}
{% endblock %} {% endblock %}
{% block modal-form-close %}</form>{% endblock %} {% block modal-form-close %}</form>{% endblock %}

View File

@ -6,15 +6,14 @@
{% block content %} {% block content %}
<header class="block content"> <header class="block">
<h1 class="title"> <h1 class="title">
{% blocktrans with title=book|book_title %} {% blocktrans with title=book|book_title %}
Links for "<em>{{ title }}</em>" Links for "<em>{{ title }}</em>"
{% endblocktrans %} {% endblocktrans %}
</h1> </h1>
</header>
<nav class="breadcrumb subtitle" aria-label="breadcrumbs"> <nav class="breadcrumb subtitle" aria-label="breadcrumbs">
<ul> <ul>
<li><a href="{% url 'book' book.id %}">{{ book|book_title }}</a></li> <li><a href="{% url 'book' book.id %}">{{ book|book_title }}</a></li>
<li class="is-active"> <li class="is-active">
@ -23,7 +22,8 @@
</a> </a>
</li> </li>
</ul> </ul>
</nav> </nav>
</header>
<section class="block content"> <section class="block content">
<div class="table-container"> <div class="table-container">

View File

@ -47,7 +47,7 @@
<span class="icon icon-spinner is-pulled-left" aria-hidden="true"></span> <span class="icon icon-spinner is-pulled-left" aria-hidden="true"></span>
<span>{% trans "In progress" %}</span> <span>{% trans "In progress" %}</span>
<span class="is-pulled-right"> <span class="is-pulled-right">
<a href="#" class="button is-small">{% trans "Refresh" %}</a> <a href="{% url 'import-status' job.id %}" class="button is-small">{% trans "Refresh" %}</a>
</span> </span>
</div> </div>
<div class="is-flex"> <div class="is-flex">
@ -230,7 +230,7 @@
{% if not legacy %} {% if not legacy %}
<div> <div>
{% include 'snippets/pagination.html' with page=items %} {% include 'snippets/pagination.html' with page=items path=page_path %}
</div> </div>
{% endif %} {% endif %}
{% endspaceless %}{% endblock %} {% endspaceless %}{% endblock %}

View File

@ -52,7 +52,7 @@
<div class="columns is-mobile"> <div class="columns is-mobile">
<div class="column is-narrow is-cover"> <div class="column is-narrow is-cover">
<a href="{{ item.book.local_path }}" aria-hidden="true"> <a href="{{ item.book.local_path }}" aria-hidden="true">
{% include 'snippets/book_cover.html' with cover_class='is-w-auto is-h-m-tablet is-align-items-flex-start' size='medium' %} {% include 'snippets/book_cover.html' with cover_class='is-w-auto is-h-m-mobile is-h-m-tablet is-align-items-flex-start' size='medium' %}
</a> </a>
</div> </div>
@ -79,14 +79,12 @@
<div class="media-content"> <div class="media-content">
<div class="content"> <div class="content">
<header> <header>
{% url 'user-feed' user|username as user_path %} {% url 'user-feed' item.user|username as user_path %}
{% blocktrans trimmed with username=user.display_name %} {% blocktrans trimmed with username=item.user.display_name %}
<a href="{{ user_path }}">{{ username }}</a> says: <a href="{{ user_path }}">{{ username }}</a> says:
{% endblocktrans %} {% endblocktrans %}
</header> </header>
<p>
{{ item.notes|to_markdown|safe }} {{ item.notes|to_markdown|safe }}
</p>
</div> </div>
{% if item.user == request.user %} {% if item.user == request.user %}
<div> <div>
@ -97,7 +95,7 @@
<span class="details-close icon icon-pencil" aria-hidden></span> <span class="details-close icon icon-pencil" aria-hidden></span>
</span> </span>
</summary> </summary>
{% include "lists/edit_item_form.html" %} {% include "lists/edit_item_form.html" with book=item.book %}
</details> </details>
</div> </div>
{% endif %} {% endif %}
@ -112,7 +110,7 @@
<span class="details-close icon icon-plus" aria-hidden></span> <span class="details-close icon icon-plus" aria-hidden></span>
</span> </span>
</summary> </summary>
{% include "lists/edit_item_form.html" %} {% include "lists/edit_item_form.html" with book=item.book %}
</details> </details>
</div> </div>
{% endif %} {% endif %}

View File

@ -70,9 +70,7 @@
{% block modal-footer %} {% block modal-footer %}
<button class="button is-primary" type="submit">{% trans "Save" %}</button> <button class="button is-primary" type="submit">{% trans "Save" %}</button>
{% if not static %}
<button type="button" class="button" data-modal-close>{% trans "Cancel" %}</button> <button type="button" class="button" data-modal-close>{% trans "Cancel" %}</button>
{% endif %}
{% endblock %} {% endblock %}
{% block modal-form-close %} {% block modal-form-close %}

View File

@ -1,17 +1,20 @@
{% extends 'settings/layout.html' %} {% extends 'settings/layout.html' %}
{% load i18n %}{% load humanize %} {% load i18n %}
{% load humanize %}
{% block title %}{% trans "Announcement" %} - {{ announcement.preview }}{% endblock %} {% block title %}{% trans "Announcement" %} - {{ announcement.preview }}{% endblock %}
{% block header %} {% block header %}
{% trans "Announcement" %} {% trans "Announcement" %}
<a href="{% url 'settings-announcements' %}" class="has-text-weight-normal help">{% trans "Back to list" %}</a>
{% endblock %} {% endblock %}
{% block edit-button %} {% block edit-button %}
{% trans "Edit Announcement" as button_text %}
<div class="field has-addons"> <div class="field has-addons">
<div class="control"> <div class="control">
{% include 'snippets/toggle/open_button.html' with controls_text="edit_announcement" icon_with_text="pencil" text=button_text focus="edit_announcement_header" %} <a class="button" href="{% url 'settings-announcements-edit' announcement.id %}">
<span class="icon icon-pencil m-0-mobile" aria-hidden="true"></span>
<span class="is-sr-only-mobile">{% trans "Edit" %}</span>
</a>
</div> </div>
<form class="control" action="{% url 'settings-announcements-delete' announcement.id %}" method="post"> <form class="control" action="{% url 'settings-announcements-delete' announcement.id %}" method="post">
{% csrf_token %} {% csrf_token %}
@ -23,12 +26,20 @@
</div> </div>
{% endblock %} {% endblock %}
{% block breadcrumbs %}
<nav class="breadcrumb subtitle" aria-label="breadcrumbs">
<ul>
<li><a href="{% url 'settings-announcements' %}">{% trans "Announcements" %}</a></li>
<li class="is-active">
<a href="#" aria-current="page">
{{ announcement.preview|truncatechars:30 }}
</a>
</li>
</ul>
</nav>
{% endblock %}
{% block panel %} {% block panel %}
<form name="edit-announcement" method="post" action="{% url 'settings-announcements' announcement.id %}" class="block">
{% include 'settings/announcements/announcement_form.html' with controls_text="edit_announcement" %}
</form>
<div class="block content"> <div class="block content">
<dl> <dl>
<dt class="is-pulled-left mr-5 has-text-weight-bold">{% trans "Visible:" %}</dt> <dt class="is-pulled-left mr-5 has-text-weight-bold">{% trans "Visible:" %}</dt>

View File

@ -1,80 +0,0 @@
{% extends 'components/inline_form.html' %}
{% load i18n %}
{% block header %}
{% if announcement %}
{% trans "Edit Announcement" %}
{% else %}
{% trans "Create Announcement" %}
{% endif %}
{% endblock %}
{% block form %}
{% csrf_token %}
<input type="hidden" name="user" value="{{ request.user.id }}">
<p>
<label class="label" for="id_preview">
{% trans "Preview:" %}
</label>
{{ form.preview }}
{% include 'snippets/form_errors.html' with errors_list=form.preview.errors id="desc_preview" %}
</p>
<p>
<label class="label" for="id_content">
{% trans "Content:" %}
</label>
{{ form.content }}
{% include 'snippets/form_errors.html' with errors_list=form.content.errors id="desc_content" %}
</p>
<p>
<label class="label" for="id_event_date">
{% trans "Event date:" %}
</label>
<input type="date" name="event_date" value="{{ form.event_date.value|date:'Y-m-d' }}" class="input" id="id_event_date">
{% include 'snippets/form_errors.html' with errors_list=form.event_date.errors id="desc_event_date" %}
</p>
<hr aria-hidden="true">
<div class="columns">
<div class="column">
<p>
<label class="label" for="id_start_date">
{% trans "Start date:" %}
</label>
<input type="date" name="start_date" class="input" value="{{ form.start_date.value|date:'Y-m-d' }}" id="id_start_date">
{% include 'snippets/form_errors.html' with errors_list=form.start_date.errors id="desc_start_date" %}
</p>
</div>
<div class="column">
<p>
<label class="label" for="id_end_date">
{% trans "End date:" %}
</label>
<input type="date" name="end_date" class="input" id="id_end_date" value="{{ form.end_date.value|date:'Y-m-d' }}">
{% include 'snippets/form_errors.html' with errors_list=form.end_date.errors id="desc_end_date" %}
</p>
</div>
<div class="column is-narrow">
<p>
<label class="label" for="id_active">
{% trans "Active:" %}
</label>
{{ form.active }}
{% include 'snippets/form_errors.html' with errors_list=form.active.errors id="desc_active" %}
</p>
</div>
</div>
<div class="field has-addons">
<div class="control">
<button type="submit" class="button is-primary">
{% trans "Save" %}
</button>
</div>
</div>
{% endblock %}

View File

@ -5,16 +5,15 @@
{% block header %}{% trans "Announcements" %}{% endblock %} {% block header %}{% trans "Announcements" %}{% endblock %}
{% block edit-button %} {% block edit-button %}
{% trans "Create Announcement" as button_text %} <a href="{% url 'settings-announcements-edit' %}">
{% include 'snippets/toggle/open_button.html' with controls_text="create_announcement" icon_with_text="plus" text=button_text focus="create_announcement_header" %} {% trans "Create Announcement" as text %}
<span class="icon icon-plus" title="{{ text }}" aria-hidden="true"></span>
<span class="is-sr-only-mobile">{{ text }}</span>
</a>
{% endblock %} {% endblock %}
{% block panel %} {% block panel %}
<form name="create-announcement" method="post" action="{% url 'settings-announcements' %}" class="block"> <div class="block table-container">
{% include 'settings/announcements/announcement_form.html' with controls_text="create_announcement" %}
</form>
<div class="block">
<table class="table is-striped"> <table class="table is-striped">
<tr> <tr>
<th> <th>
@ -38,6 +37,9 @@
{% trans "Status" as text %} {% trans "Status" as text %}
{% include 'snippets/table-sort-header.html' with field="active" sort=sort text=text %} {% include 'snippets/table-sort-header.html' with field="active" sort=sort text=text %}
</th> </th>
<th>
{% trans "Actions" %}
</th>
</tr> </tr>
{% for announcement in announcements %} {% for announcement in announcements %}
<tr> <tr>
@ -46,6 +48,15 @@
<td>{{ announcement.start_date|naturaltime|default:'' }}</td> <td>{{ announcement.start_date|naturaltime|default:'' }}</td>
<td>{{ announcement.end_date|naturaltime|default:'' }}</td> <td>{{ announcement.end_date|naturaltime|default:'' }}</td>
<td>{% if announcement.active %}{% trans "active" %}{% else %}{% trans "inactive" %}{% endif %}</td> <td>{% if announcement.active %}{% trans "active" %}{% else %}{% trans "inactive" %}{% endif %}</td>
<td>
<form class="control" action="{% url 'settings-announcements-delete' announcement.id %}" method="post">
{% csrf_token %}
<button type="submit" class="button is-danger is-light is-small">
<span class="icon icon-x m-0-mobile" aria-hidden="true"></span>
<span class="is-sr-only-mobile">{% trans "Delete" %}</span>
</button>
</form>
</td>
</tr> </tr>
{% endfor %} {% endfor %}
{% if not announcements %} {% if not announcements %}

View File

@ -0,0 +1,125 @@
{% extends 'settings/layout.html' %}
{% load i18n %}
{% block header %}
{% if announcement %}
{% trans "Edit Announcement" %}
{% else %}
{% trans "Create Announcement" %}
{% endif %}
{% endblock %}
{% block breadcrumbs %}
<nav class="breadcrumb subtitle" aria-label="breadcrumbs">
<ul>
<li><a href="{% url 'settings-announcements' %}">{% trans "Announcements" %}</a></li>
{% if announcement %}
<li>
<a href="{% url 'settings-announcements' announcement.id %}">
{{ announcement.preview|truncatechars:30 }}
</a>
</li>
{% endif %}
<li class="is-active">
<a href="#" aria-current="page">
Edit
</a>
</li>
</ul>
</nav>
{% endblock %}
{% block panel %}
<form
name="edit-announcement"
method="POST"
{% if announcement.id %}
action="{% url 'settings-announcements-edit' announcement.id %}"
{% else %}
action="{% url 'settings-announcements-edit' %}"
{% endif %}
class="block"
>
{% csrf_token %}
<input type="hidden" name="user" value="{{ request.user.id }}">
<h2 class="title is-4">{% trans "Announcement content" %}</h2>
<div class="box">
<p class="field">
<label class="label" for="id_preview">
{% trans "Summary:" %}
</label>
{{ form.preview }}
{% include 'snippets/form_errors.html' with errors_list=form.preview.errors id="desc_preview" %}
</p>
<p class="field">
<label class="label" for="id_content">
{% trans "Details:" %}
</label>
{{ form.content }}
{% include 'snippets/form_errors.html' with errors_list=form.content.errors id="desc_content" %}
</p>
<p class="field">
<label class="label" for="id_event_date">
{% trans "Event date:" %}
</label>
<input type="date" name="event_date" value="{{ form.event_date.value|date:'Y-m-d' }}" class="input" id="id_event_date">
{% include 'snippets/form_errors.html' with errors_list=form.event_date.errors id="desc_event_date" %}
</p>
</div>
<h2 class="title is-4">{% trans "Display settings" %}</h2>
<div class="box">
<div class="columns">
<div class="column">
<p>
<label class="label" for="id_start_date">
{% trans "Start date:" %}
</label>
<input type="date" name="start_date" class="input" value="{{ form.start_date.value|date:'Y-m-d' }}" id="id_start_date">
{% include 'snippets/form_errors.html' with errors_list=form.start_date.errors id="desc_start_date" %}
</p>
</div>
<div class="column">
<p>
<label class="label" for="id_end_date">
{% trans "End date:" %}
</label>
<input type="date" name="end_date" class="input" id="id_end_date" value="{{ form.end_date.value|date:'Y-m-d' }}">
{% include 'snippets/form_errors.html' with errors_list=form.end_date.errors id="desc_end_date" %}
</p>
</div>
<div class="column is-narrow">
<label class="label" for="id_active">
{% trans "Color:" %}
</label>
<div class="select">
{{ form.display_type }}
</div>
{% include 'snippets/form_errors.html' with errors_list=form.active.errors id="desc_display_type" %}
</div>
</div>
<p class="field">
<label class="label" for="id_active">
{% trans "Active:" %}
{{ form.active }}
</label>
{% include 'snippets/form_errors.html' with errors_list=form.active.errors id="desc_active" %}
</p>
</div>
<div class="field has-addons">
<div class="control">
<button type="submit" class="button is-primary">
{% trans "Save" %}
</button>
</div>
</div>
</form>
{% endblock %}

View File

@ -9,6 +9,7 @@
<div class="columns is-mobile"> <div class="columns is-mobile">
<div class="column"> <div class="column">
<h1 class="title">{% block header %}{% endblock %}</h1> <h1 class="title">{% block header %}{% endblock %}</h1>
{% block breadcrumbs %}{% endblock %}
</div> </div>
<div class="column is-narrow"> <div class="column is-narrow">
{% block edit-button %}{% endblock %} {% block edit-button %}{% endblock %}
@ -16,6 +17,7 @@
</div> </div>
</header> </header>
<div class="block columns"> <div class="block columns">
<nav class="menu column is-one-quarter"> <nav class="menu column is-one-quarter">
<h2 class="menu-label"> <h2 class="menu-label">

View File

@ -45,7 +45,7 @@
href="{{ shelf_tab.local_path }}" href="{{ shelf_tab.local_path }}"
{% if shelf_tab.identifier == shelf.identifier %} aria-current="page"{% endif %} {% if shelf_tab.identifier == shelf.identifier %} aria-current="page"{% endif %}
> >
{% include 'user/books_header.html' with shelf=shelf_tab %} {% include "snippets/translated_shelf_name.html" with shelf=shelf_tab %}
</a> </a>
</li> </li>
{% endfor %} {% endfor %}

View File

@ -1,32 +1,29 @@
{% load humanize %}{% load i18n %}{% load utilities %} {% load humanize %}{% load i18n %}{% load utilities %}
{% with announcement.id|uuid as uuid %} {% with announcement.id|uuid as uuid %}
<aside <aside
class="notification mb-1 p-3{% if not admin_mode %} is-hidden{% endif %} transition-y" class="notification mb-1 p-3{% if not admin_mode %} is-hidden{% endif %} transition-y has-background-{{ announcement.display_type }}"
{% if not admin_mode %}data-hide="hide_announcement_{{ announcement.id }}"{% endif %} {% if not admin_mode %}data-hide="hide_announcement_{{ announcement.id }}"{% endif %}
> >
<div class="columns mb-0 is-mobile"> <details>
<div class="column pb-0"> <summary>
{% if announcement.event_date %} {% if announcement.event_date %}
<strong>{{ announcement.event_date|naturalday|title }}:</strong> <strong>{{ announcement.event_date|naturalday|title }}:</strong>
{% endif %} {% endif %}
{{ announcement.preview }}
</div> {{ announcement.preview|safe }}
{% if announcement.content %} {% if announcement.content %}
<div class="column is-narrow pb-0"> <span class="details-close mt-4 mr-4 icon icon-x is-small" aria-hidden></span>
{% trans "Open" as button_text %}
{% include 'snippets/toggle/open_button.html' with text=button_text controls_text="announcement" class="is-small" controls_uid=uuid icon_with_text="arrow-down" %}
{% trans "Close" as button_text %}
{% include 'snippets/toggle/close_button.html' with text=button_text controls_text="announcement" class="is-small" controls_uid=uuid icon_with_text="arrow-up" %}
</div>
{% endif %} {% endif %}
</div> </summary>
{% if announcement.content %} {% if announcement.content %}
<div class="mb-2 mt-2 {% if not pressed %}is-hidden{% endif %}" id="announcement_{{ uuid }}"> <div class="mb-2 mt-2" id="announcement_{{ uuid }}">
<div class="box is-shadowless mb-0"> <div class="box is-shadowless mb-0">
{{ announcement.content|safe }} {{ announcement.content|safe }}
</div> </div>
</div> </div>
{% endif %} {% endif %}
</details>
<div class="is-flex mt-0 help"> <div class="is-flex mt-0 help">
<p>{% blocktrans with user_path=announcement.user.local_path username=announcement.user.display_name %}Posted by <a href="{{ user_path }}">{{ username }}</a>{% endblocktrans %}</p> <p>{% blocktrans with user_path=announcement.user.local_path username=announcement.user.display_name %}Posted by <a href="{{ user_path }}">{{ username }}</a>{% endblocktrans %}</p>
{% if not admin_mode %} {% if not admin_mode %}

View File

@ -50,9 +50,7 @@
{% block modal-footer %} {% block modal-footer %}
<button class="button is-success" type="submit">{% trans "Submit" %}</button> <button class="button is-success" type="submit">{% trans "Submit" %}</button>
{% if not static %} <button type="button" class="button" data-modal-close>{% trans "Cancel" %}</button>
<button type="button" class="button" data-modal-close>{% trans "Cancel" %}</button>
{% endif %}
{% endblock %} {% endblock %}

View File

@ -1,6 +1,9 @@
""" testing activitystreams """ """ testing activitystreams """
from datetime import datetime
from unittest.mock import patch from unittest.mock import patch
from django.test import TestCase from django.test import TestCase
from django.utils import timezone
from bookwyrm import activitystreams, models from bookwyrm import activitystreams, models
@ -51,13 +54,63 @@ class Activitystreams(TestCase):
"""the abstract base class for stream objects""" """the abstract base class for stream objects"""
self.assertEqual( self.assertEqual(
self.test_stream.stream_id(self.local_user), self.test_stream.stream_id(self.local_user),
"{}-test".format(self.local_user.id), f"{self.local_user.id}-test",
) )
self.assertEqual( self.assertEqual(
self.test_stream.unread_id(self.local_user), self.test_stream.unread_id(self.local_user),
"{}-test-unread".format(self.local_user.id), f"{self.local_user.id}-test-unread",
) )
def test_unread_by_status_type_id(self, *_):
"""stream for status type"""
self.assertEqual(
self.test_stream.unread_by_status_type_id(self.local_user),
f"{self.local_user.id}-test-unread-by-type",
)
def test_get_rank(self, *_):
"""sort order"""
date = datetime(2022, 1, 28, 0, 0, tzinfo=timezone.utc)
status = models.Status.objects.create(
user=self.remote_user,
content="hi",
privacy="direct",
published_date=date,
)
self.assertEqual(
str(self.test_stream.get_rank(status)),
"1643328000.0",
)
def test_get_activity_stream(self, *_):
"""load statuses"""
status = models.Status.objects.create(
user=self.remote_user,
content="hi",
privacy="direct",
)
status2 = models.Comment.objects.create(
user=self.remote_user,
content="hi",
privacy="direct",
book=self.book,
)
models.Comment.objects.create(
user=self.remote_user,
content="hi",
privacy="direct",
book=self.book,
)
with patch("bookwyrm.activitystreams.r.set"), patch(
"bookwyrm.activitystreams.r.delete"
), patch("bookwyrm.activitystreams.ActivityStream.get_store") as redis_mock:
redis_mock.return_value = [status.id, status2.id]
result = self.test_stream.get_activity_stream(self.local_user)
self.assertEqual(result.count(), 2)
self.assertEqual(result.first(), status2)
self.assertEqual(result.last(), status)
self.assertIsInstance(result.first(), models.Comment)
def test_abstractstream_get_audience(self, *_): def test_abstractstream_get_audience(self, *_):
"""get a list of users that should see a status""" """get a list of users that should see a status"""
status = models.Status.objects.create( status = models.Status.objects.create(

View File

@ -52,3 +52,29 @@ class Activitystreams(TestCase):
# yes book, yes audience # yes book, yes audience
result = activitystreams.BooksStream().get_statuses_for_user(self.local_user) result = activitystreams.BooksStream().get_statuses_for_user(self.local_user)
self.assertEqual(list(result), [status]) self.assertEqual(list(result), [status])
def test_book_statuses(self, *_):
"""statuses about a book"""
alt_book = models.Edition.objects.create(
title="hi", parent_work=self.book.parent_work
)
status = models.Status.objects.create(
user=self.local_user, content="hi", privacy="public"
)
status = models.Comment.objects.create(
user=self.remote_user, content="hi", privacy="public", book=alt_book
)
models.ShelfBook.objects.create(
user=self.local_user,
shelf=self.local_user.shelf_set.first(),
book=self.book,
)
with patch(
"bookwyrm.activitystreams.BooksStream.bulk_add_objects_to_store"
) as redis_mock:
activitystreams.BooksStream().add_book_statuses(self.local_user, self.book)
args = redis_mock.call_args[0]
queryset = args[0]
self.assertEqual(queryset.count(), 1)
self.assertTrue(status in queryset)
self.assertEqual(args[1], f"{self.local_user.id}-books")

View File

@ -4,8 +4,8 @@ from django.test import TestCase
import responses import responses
from bookwyrm import models from bookwyrm import models
from bookwyrm.connectors import abstract_connector from bookwyrm.connectors import abstract_connector, ConnectorException
from bookwyrm.connectors.abstract_connector import Mapping from bookwyrm.connectors.abstract_connector import Mapping, get_data
from bookwyrm.settings import DOMAIN from bookwyrm.settings import DOMAIN
@ -163,3 +163,11 @@ class AbstractConnector(TestCase):
author.refresh_from_db() author.refresh_from_db()
self.assertEqual(author.name, "Test") self.assertEqual(author.name, "Test")
self.assertEqual(author.isni, "hi") self.assertEqual(author.isni, "hi")
def test_get_data_invalid_url(self):
"""load json data from an arbitrary url"""
with self.assertRaises(ConnectorException):
get_data("file://hello.com/image/jpg")
with self.assertRaises(ConnectorException):
get_data("http://127.0.0.1/image/jpg")

View File

@ -1,7 +1,6 @@
""" testing models """ """ testing models """
from dateutil.parser import parse from dateutil.parser import parse
from imagekit.models import ImageSpecField
from django.test import TestCase from django.test import TestCase
from django.utils import timezone from django.utils import timezone

View File

@ -443,17 +443,16 @@ class ModelFields(TestCase):
image_file = pathlib.Path(__file__).parent.joinpath( image_file = pathlib.Path(__file__).parent.joinpath(
"../../static/images/default_avi.jpg" "../../static/images/default_avi.jpg"
) )
image = Image.open(image_file)
output = BytesIO()
image.save(output, format=image.format)
instance = fields.ImageField() instance = fields.ImageField()
with open(image_file, "rb") as image_data:
responses.add( responses.add(
responses.GET, responses.GET,
"http://www.example.com/image.jpg", "http://www.example.com/image.jpg",
body=image.tobytes(), body=image_data.read(),
status=200, status=200,
content_type="image/jpeg",
stream=True,
) )
loaded_image = instance.field_from_activity("http://www.example.com/image.jpg") loaded_image = instance.field_from_activity("http://www.example.com/image.jpg")
self.assertIsInstance(loaded_image, list) self.assertIsInstance(loaded_image, list)
@ -465,17 +464,17 @@ class ModelFields(TestCase):
image_file = pathlib.Path(__file__).parent.joinpath( image_file = pathlib.Path(__file__).parent.joinpath(
"../../static/images/default_avi.jpg" "../../static/images/default_avi.jpg"
) )
image = Image.open(image_file)
output = BytesIO()
image.save(output, format=image.format)
instance = fields.ImageField(activitypub_field="cover", name="cover") instance = fields.ImageField(activitypub_field="cover", name="cover")
with open(image_file, "rb") as image_data:
responses.add( responses.add(
responses.GET, responses.GET,
"http://www.example.com/image.jpg", "http://www.example.com/image.jpg",
body=image.tobytes(), body=image_data.read(),
content_type="image/jpeg",
status=200, status=200,
stream=True,
) )
book = Edition.objects.create(title="hello") book = Edition.objects.create(title="hello")
@ -491,17 +490,17 @@ class ModelFields(TestCase):
image_file = pathlib.Path(__file__).parent.joinpath( image_file = pathlib.Path(__file__).parent.joinpath(
"../../static/images/default_avi.jpg" "../../static/images/default_avi.jpg"
) )
image = Image.open(image_file)
output = BytesIO()
image.save(output, format=image.format)
instance = fields.ImageField(activitypub_field="cover", name="cover") instance = fields.ImageField(activitypub_field="cover", name="cover")
with open(image_file, "rb") as image_data:
responses.add( responses.add(
responses.GET, responses.GET,
"http://www.example.com/image.jpg", "http://www.example.com/image.jpg",
body=image.tobytes(), body=image_data.read(),
status=200, status=200,
content_type="image/jpeg",
stream=True,
) )
book = Edition.objects.create(title="hello") book = Edition.objects.create(title="hello")
@ -565,17 +564,17 @@ class ModelFields(TestCase):
another_image_file = pathlib.Path(__file__).parent.joinpath( another_image_file = pathlib.Path(__file__).parent.joinpath(
"../../static/images/logo.png" "../../static/images/logo.png"
) )
another_image = Image.open(another_image_file)
another_output = BytesIO()
another_image.save(another_output, format=another_image.format)
instance = fields.ImageField(activitypub_field="cover", name="cover") instance = fields.ImageField(activitypub_field="cover", name="cover")
with open(another_image_file, "rb") as another_image:
responses.add( responses.add(
responses.GET, responses.GET,
"http://www.example.com/image.jpg", "http://www.example.com/image.jpg",
body=another_image.tobytes(), body=another_image.read(),
status=200, status=200,
content_type="image/jpeg",
stream=True,
) )
MockActivity = namedtuple("MockActivity", ("cover")) MockActivity = namedtuple("MockActivity", ("cover"))

View File

@ -24,13 +24,21 @@ class Sanitizer(TestCase):
self.assertEqual(input_text, output) self.assertEqual(input_text, output)
def test_valid_html_attrs(self): def test_valid_html_attrs(self):
"""and don't remove attributes""" """and don't remove useful attributes"""
input_text = '<a href="fish.com">yes </a> <i>html</i>' input_text = '<a href="fish.com">yes </a> <i>html</i>'
parser = InputHtmlParser() parser = InputHtmlParser()
parser.feed(input_text) parser.feed(input_text)
output = parser.get_output() output = parser.get_output()
self.assertEqual(input_text, output) self.assertEqual(input_text, output)
def test_valid_html_invalid_attrs(self):
"""do remove un-approved attributes"""
input_text = '<a href="fish.com" fish="hello">yes </a> <i>html</i>'
parser = InputHtmlParser()
parser.feed(input_text)
output = parser.get_output()
self.assertEqual(output, '<a href="fish.com">yes </a> <i>html</i>')
def test_invalid_html(self): def test_invalid_html(self):
"""remove all html when the html is malformed""" """remove all html when the html is malformed"""
input_text = "<b>yes <i>html</i>" input_text = "<b>yes <i>html</i>"

View File

@ -74,11 +74,12 @@ class AnnouncementViews(TestCase):
def test_create_announcement(self): def test_create_announcement(self):
"""create a new announcement""" """create a new announcement"""
view = views.Announcements.as_view() view = views.EditAnnouncement.as_view()
form = forms.AnnouncementForm() form = forms.AnnouncementForm()
form.data["preview"] = "hi hi" form.data["preview"] = "hi hi"
form.data["start_date"] = "2021-05-20" form.data["start_date"] = "2021-05-20"
form.data["user"] = self.local_user.id form.data["user"] = self.local_user.id
form.data["display_type"] = "warning-light"
request = self.factory.post("", form.data) request = self.factory.post("", form.data)
request.user = self.local_user request.user = self.local_user
@ -97,11 +98,12 @@ class AnnouncementViews(TestCase):
announcement = models.Announcement.objects.create( announcement = models.Announcement.objects.create(
preview="hi", user=self.local_user preview="hi", user=self.local_user
) )
view = views.Announcement.as_view() view = views.EditAnnouncement.as_view()
form = forms.AnnouncementForm(instance=announcement) form = forms.AnnouncementForm(instance=announcement)
form.data["preview"] = "hi hi" form.data["preview"] = "hi hi"
form.data["start_date"] = "2021-05-20" form.data["start_date"] = "2021-05-20"
form.data["user"] = self.local_user.id form.data["user"] = self.local_user.id
form.data["display_type"] = "warning-light"
request = self.factory.post("", form.data) request = self.factory.post("", form.data)
request.user = self.local_user request.user = self.local_user

View File

@ -80,6 +80,15 @@ class LinkViews(TestCase):
activity = json.loads(mock.call_args[1]["args"][1]) activity = json.loads(mock.call_args[1]["args"][1])
self.assertEqual(activity["type"], "Update") self.assertEqual(activity["type"], "Update")
self.assertEqual(activity["object"]["type"], "Edition") self.assertEqual(activity["object"]["type"], "Edition")
self.assertIsInstance(activity["object"]["fileLinks"], list)
self.assertEqual(
activity["object"]["fileLinks"][0]["href"], "https://www.example.com"
)
self.assertEqual(activity["object"]["fileLinks"][0]["mediaType"], "HTML")
self.assertEqual(
activity["object"]["fileLinks"][0]["attributedTo"],
self.local_user.remote_id,
)
link = models.FileLink.objects.get() link = models.FileLink.objects.get()
self.assertEqual(link.name, "www.example.com") self.assertEqual(link.name, "www.example.com")

View File

@ -6,7 +6,6 @@ from unittest.mock import patch
from django.test import TestCase from django.test import TestCase
from bookwyrm import models, views from bookwyrm import models, views
from bookwyrm.activitypub.base_activity import set_related_field
# pylint: disable=too-many-public-methods # pylint: disable=too-many-public-methods

View File

@ -85,6 +85,7 @@ class ListViews(TestCase):
user=self.local_user, user=self.local_user,
book=self.book, book=self.book,
approved=True, approved=True,
notes="hello",
order=1, order=1,
) )
@ -178,6 +179,7 @@ class ListViews(TestCase):
book_list=self.list, book_list=self.list,
user=self.local_user, user=self.local_user,
book=self.book, book=self.book,
notes="hi hello",
approved=True, approved=True,
order=1, order=1,
) )

View File

@ -67,4 +67,4 @@ class ListItemViews(TestCase):
self.assertEqual(mock.call_count, 1) self.assertEqual(mock.call_count, 1)
item.refresh_from_db() item.refresh_from_db()
self.assertEqual(item.notes, "beep boop") self.assertEqual(item.notes, "<p>beep boop</p>")

View File

@ -50,6 +50,43 @@ class AuthorViews(TestCase):
models.SiteSettings.objects.create() models.SiteSettings.objects.create()
def test_author_page(self): def test_author_page(self):
"""there are so many views, this just makes sure it LOADS"""
view = views.Author.as_view()
author = models.Author.objects.create(name="Jessica")
self.book.authors.add(author)
request = self.factory.get("")
request.user = self.local_user
with patch("bookwyrm.views.author.is_api_request") as is_api:
is_api.return_value = False
result = view(request, author.id)
self.assertIsInstance(result, TemplateResponse)
validate_html(result.render())
self.assertEqual(result.status_code, 200)
def test_author_page_edition_author(self):
"""there are so many views, this just makes sure it LOADS"""
view = views.Author.as_view()
another_book = models.Edition.objects.create(
title="Example Edition",
remote_id="https://example.com/book/1",
parent_work=self.work,
isbn_13="9780300112511",
)
author = models.Author.objects.create(name="Jessica")
self.book.authors.add(author)
request = self.factory.get("")
request.user = self.local_user
with patch("bookwyrm.views.author.is_api_request") as is_api:
is_api.return_value = False
result = view(request, author.id)
books = result.context_data["books"]
self.assertEqual(books.object_list.count(), 1)
self.assertIsInstance(result, TemplateResponse)
validate_html(result.render())
self.assertEqual(result.status_code, 200)
def test_author_page_empty(self):
"""there are so many views, this just makes sure it LOADS""" """there are so many views, this just makes sure it LOADS"""
view = views.Author.as_view() view = views.Author.as_view()
author = models.Author.objects.create(name="Jessica") author = models.Author.objects.create(name="Jessica")

View File

@ -93,6 +93,16 @@ urlpatterns = [
views.Announcement.as_view(), views.Announcement.as_view(),
name="settings-announcements", name="settings-announcements",
), ),
re_path(
r"^settings/announcements/create/?$",
views.EditAnnouncement.as_view(),
name="settings-announcements-edit",
),
re_path(
r"^settings/announcements/(?P<announcement_id>\d+)/edit/?$",
views.EditAnnouncement.as_view(),
name="settings-announcements-edit",
),
re_path( re_path(
r"^settings/announcements/(?P<announcement_id>\d+)/delete/?$", r"^settings/announcements/(?P<announcement_id>\d+)/delete/?$",
views.delete_announcement, views.delete_announcement,

View File

@ -1,6 +1,7 @@
""" make sure all our nice views are available """ """ make sure all our nice views are available """
# site admin # site admin
from .admin.announcements import Announcements, Announcement, delete_announcement from .admin.announcements import Announcements, Announcement
from .admin.announcements import EditAnnouncement, delete_announcement
from .admin.dashboard import Dashboard from .admin.dashboard import Dashboard
from .admin.federation import Federation, FederatedServer from .admin.federation import Federation, FederatedServer
from .admin.federation import AddFederatedServer, ImportServerBlocklist from .admin.federation import AddFederatedServer, ImportServerBlocklist

View File

@ -45,23 +45,6 @@ class Announcements(View):
request, "settings/announcements/announcements.html", data request, "settings/announcements/announcements.html", data
) )
def post(self, request):
"""edit the site settings"""
form = forms.AnnouncementForm(request.POST)
if form.is_valid():
form.save()
# reset the create form
form = forms.AnnouncementForm()
data = {
"announcements": Paginator(
models.Announcement.objects.order_by("-created_date"), PAGE_LENGTH
).get_page(request.GET.get("page")),
"form": form,
}
return TemplateResponse(
request, "settings/announcements/announcements.html", data
)
@method_decorator(login_required, name="dispatch") @method_decorator(login_required, name="dispatch")
@method_decorator( @method_decorator(
@ -76,26 +59,51 @@ class Announcement(View):
announcement = get_object_or_404(models.Announcement, id=announcement_id) announcement = get_object_or_404(models.Announcement, id=announcement_id)
data = { data = {
"announcement": announcement, "announcement": announcement,
"form": forms.AnnouncementForm(instance=announcement),
} }
return TemplateResponse( return TemplateResponse(
request, "settings/announcements/announcement.html", data request, "settings/announcements/announcement.html", data
) )
def post(self, request, announcement_id):
"""edit announcement""" @method_decorator(login_required, name="dispatch")
@method_decorator(
permission_required("bookwyrm.edit_instance_settings", raise_exception=True),
name="dispatch",
)
class EditAnnouncement(View):
"""Create of edit an announcement"""
def get(self, request, announcement_id=None):
"""announcement forms"""
announcement = None
if announcement_id:
announcement = get_object_or_404(models.Announcement, id=announcement_id) announcement = get_object_or_404(models.Announcement, id=announcement_id)
data = {
"announcement": announcement,
"form": forms.AnnouncementForm(instance=announcement),
}
return TemplateResponse(
request, "settings/announcements/edit_announcement.html", data
)
def post(self, request, announcement_id=None):
"""edit announcement"""
announcement = None
if announcement_id:
announcement = get_object_or_404(models.Announcement, id=announcement_id)
form = forms.AnnouncementForm(request.POST, instance=announcement) form = forms.AnnouncementForm(request.POST, instance=announcement)
if form.is_valid(): if not form.is_valid():
announcement = form.save()
form = forms.AnnouncementForm(instance=announcement)
data = { data = {
"announcement": announcement, "announcement": announcement,
"form": form, "form": form,
} }
return TemplateResponse( return TemplateResponse(
request, "settings/announcements/announcement.html", data request, "settings/announcements/edit_announcement.html", data
) )
announcement = form.save()
return redirect("settings-announcements", announcement.id)
@login_required @login_required

View File

@ -1,6 +1,7 @@
""" the good people stuff! the authors! """ """ the good people stuff! the authors! """
from django.contrib.auth.decorators import login_required, permission_required from django.contrib.auth.decorators import login_required, permission_required
from django.core.paginator import Paginator from django.core.paginator import Paginator
from django.db.models import Q
from django.shortcuts import get_object_or_404, redirect from django.shortcuts import get_object_or_404, redirect
from django.template.response import TemplateResponse from django.template.response import TemplateResponse
from django.utils.decorators import method_decorator from django.utils.decorators import method_decorator
@ -25,9 +26,11 @@ class Author(View):
if is_api_request(request): if is_api_request(request):
return ActivitypubResponse(author.to_activity()) return ActivitypubResponse(author.to_activity())
books = models.Work.objects.filter( books = (
authors=author, editions__authors=author models.Work.objects.filter(Q(authors=author) | Q(editions__authors=author))
).distinct() .order_by("-published_date")
.distinct()
)
paginated = Paginator(books, PAGE_LENGTH) paginated = Paginator(books, PAGE_LENGTH)
page = paginated.get_page(request.GET.get("page")) page = paginated.get_page(request.GET.get("page"))

View File

@ -2,7 +2,6 @@
from uuid import uuid4 from uuid import uuid4
from django.contrib.auth.decorators import login_required, permission_required from django.contrib.auth.decorators import login_required, permission_required
from django.core.files.base import ContentFile
from django.core.paginator import Paginator from django.core.paginator import Paginator
from django.db.models import Avg, Q from django.db.models import Avg, Q
from django.http import Http404 from django.http import Http404
@ -144,13 +143,12 @@ def upload_cover(request, book_id):
def set_cover_from_url(url): def set_cover_from_url(url):
"""load it from a url""" """load it from a url"""
try: try:
image_file = get_image(url) image_content, extension = get_image(url)
except: # pylint: disable=bare-except except: # pylint: disable=bare-except
return None return None
if not image_file: if not image_content:
return None return None
image_name = str(uuid4()) + "." + url.split(".")[-1] image_name = str(uuid4()) + "." + extension
image_content = ContentFile(image_file.content)
return [image_name, image_content] return [image_name, image_content]

View File

@ -5,6 +5,7 @@ from django.core.paginator import Paginator
from django.shortcuts import get_object_or_404, redirect from django.shortcuts import get_object_or_404, redirect
from django.template.response import TemplateResponse from django.template.response import TemplateResponse
from django.utils.decorators import method_decorator from django.utils.decorators import method_decorator
from django.urls import reverse
from django.views import View from django.views import View
from bookwyrm import models from bookwyrm import models
@ -35,6 +36,7 @@ class ImportTroubleshoot(View):
page.number, on_each_side=2, on_ends=1 page.number, on_each_side=2, on_ends=1
), ),
"complete": True, "complete": True,
"page_path": reverse("import-troubleshoot", args=[job.id]),
} }
return TemplateResponse(request, "import/troubleshoot.html", data) return TemplateResponse(request, "import/troubleshoot.html", data)

View File

@ -5,6 +5,7 @@ from django.utils.decorators import method_decorator
from django.views import View from django.views import View
from bookwyrm import forms, models from bookwyrm import forms, models
from bookwyrm.views.status import to_markdown
# pylint: disable=no-self-use # pylint: disable=no-self-use
@ -18,5 +19,9 @@ class ListItem(View):
list_item.raise_not_editable(request.user) list_item.raise_not_editable(request.user)
form = forms.ListItemForm(request.POST, instance=list_item) form = forms.ListItemForm(request.POST, instance=list_item)
if form.is_valid(): if form.is_valid():
form.save() item = form.save(commit=False)
item.notes = to_markdown(item.notes)
item.save()
else:
raise Exception(form.errors)
return redirect("list", list_item.book_list.id) return redirect("list", list_item.book_list.id)

View File

@ -31,12 +31,17 @@ class User(View):
shelf_preview = [] shelf_preview = []
# only show shelves that should be visible # only show shelves that should be visible
shelves = user.shelf_set
is_self = request.user.id == user.id is_self = request.user.id == user.id
if not is_self: if not is_self:
shelves = models.Shelf.privacy_filter( shelves = (
models.Shelf.privacy_filter(
request.user, privacy_levels=["public", "followers"] request.user, privacy_levels=["public", "followers"]
).filter(user=user, books__isnull=False) )
.filter(user=user, books__isnull=False)
.distinct()
)
else:
shelves = user.shelf_set.filter(books__isnull=False).distinct()
for user_shelf in shelves.all()[:3]: for user_shelf in shelves.all()[:3]:
shelf_preview.append( shelf_preview.append(

25
bw-dev
View File

@ -30,12 +30,12 @@ function execweb {
} }
function initdb { function initdb {
execweb python manage.py migrate runweb python manage.py migrate
execweb python manage.py initdb "$@" runweb python manage.py initdb "$@"
} }
function makeitblack { function makeitblack {
docker-compose run --rm web black celerywyrm bookwyrm docker-compose run --rm dev-tools black celerywyrm bookwyrm
} }
function awscommand { function awscommand {
@ -97,7 +97,7 @@ case "$CMD" in
docker-compose restart celery_worker docker-compose restart celery_worker
;; ;;
pytest) pytest)
execweb pytest --no-cov-on-fail "$@" runweb pytest --no-cov-on-fail "$@"
;; ;;
collectstatic) collectstatic)
runweb python manage.py collectstatic --no-input runweb python manage.py collectstatic --no-input
@ -135,7 +135,17 @@ case "$CMD" in
makeitblack makeitblack
;; ;;
prettier) prettier)
npx prettier --write bookwyrm/static/js/*.js docker-compose run --rm dev-tools npx prettier --write bookwyrm/static/js/*.js
;;
stylelint)
docker-compose run --rm dev-tools npx stylelint \
bookwyrm/static/css/*.css --fix \
--config dev-tools/.stylelintrc.js
;;
formatters)
docker-compose run --rm dev-tools black celerywyrm bookwyrm && \
npx prettier --write bookwyrm/static/js/*.js && \
npx stylelint bookwyrm/static/css/*.css --fix --config dev-tools/.stylelintrc.js
;; ;;
update) update)
git pull git pull
@ -143,6 +153,8 @@ case "$CMD" in
runweb python manage.py migrate runweb python manage.py migrate
runweb python manage.py collectstatic --no-input runweb python manage.py collectstatic --no-input
docker-compose up -d docker-compose up -d
docker-compose restart web
docker-compose restart celery_worker
;; ;;
populate_streams) populate_streams)
runweb python manage.py populate_streams "$@" runweb python manage.py populate_streams "$@"
@ -209,6 +221,9 @@ case "$CMD" in
echo " build" echo " build"
echo " clean" echo " clean"
echo " black" echo " black"
echo " prettier"
echo " stylelint"
echo " formatters"
echo " populate_streams [--stream=<stream name>]" echo " populate_streams [--stream=<stream name>]"
echo " populate_suggestions" echo " populate_suggestions"
echo " generate_thumbnails" echo " generate_thumbnails"

13
celerywyrm/apps.py Normal file
View File

@ -0,0 +1,13 @@
from django.apps import AppConfig
from celerywyrm import settings
class CelerywyrmConfig(AppConfig):
name = "celerywyrm"
verbose_name = "BookWyrm Celery"
def ready(self):
if settings.OTEL_EXPORTER_OTLP_ENDPOINT:
from bookwyrm.telemetry import open_telemetry
open_telemetry.instrumentCelery()

View File

@ -1,19 +0,0 @@
#!/usr/bin/env bash
source .env;
if [ "$CERTBOT_INIT" = "true" ]
then
certonly \
--webroot \
--webroot-path=/var/www/certbot \
--email ${EMAIL} \
--agree-tos \
--no-eff-email \
-d ${DOMAIN} \
-d www.${DOMAIN}
else
renew \
--webroot \
--webroot-path \
/var/www/certbot
fi

View File

@ -21,6 +21,8 @@ build
clean clean
black black
prettier prettier
stylelint
formatters
populate_streams populate_streams
populate_lists_streams populate_lists_streams
populate_suggestions populate_suggestions

14
dev-tools/Dockerfile Normal file
View File

@ -0,0 +1,14 @@
FROM python:3.9
ENV PYTHONUNBUFFERED 1
RUN mkdir /app
WORKDIR /app
COPY package.json requirements.txt .stylelintrc.js .stylelintignore /app/
RUN pip install -r requirements.txt
RUN apt-get update && apt-get install -y curl
RUN curl -sL https://deb.nodesource.com/setup_16.x | bash -
RUN apt-get install -y nodejs
RUN npm install .

View File

@ -3,15 +3,16 @@
"watch:static": "yarn watch \"./bw-dev collectstatic\" bookwyrm/static/**" "watch:static": "yarn watch \"./bw-dev collectstatic\" bookwyrm/static/**"
}, },
"devDependencies": { "devDependencies": {
"eslint": "^7.23.0", "eslint": "^8.9.0",
"prettier": "2.5.1", "prettier": "2.5.1",
"stylelint": "^14.2.0", "stylelint": "^14.5.0",
"stylelint-config-standard": "^24.0.0",
"stylelint-order": "^5.0.0",
"watch": "^0.13.0" "watch": "^0.13.0"
}, },
"dependencies": { "dependencies": {
"merge": "2.1.1", "merge": "2.1.1",
"postcss": "8.2.13" "postcss": "^8.4.6",
"stylelint-config-recommended": "^7.0.0",
"stylelint-config-standard": "^25.0.0",
"stylelint-order": "^5.0.0"
} }
} }

View File

@ -0,0 +1 @@
black==21.4b2

View File

@ -35,29 +35,27 @@ services:
networks: networks:
- main - main
ports: ports:
- 8000:8000 - 8000
redis_activity: redis_activity:
image: redis image: redis
command: redis-server --requirepass ${REDIS_ACTIVITY_PASSWORD} --appendonly yes --port ${REDIS_ACTIVITY_PORT} command: redis-server --requirepass ${REDIS_ACTIVITY_PASSWORD} --appendonly yes --port ${REDIS_ACTIVITY_PORT}
env_file: .env
networks:
- main
restart: on-failure
volumes: volumes:
- ./redis.conf:/etc/redis/redis.conf - ./redis.conf:/etc/redis/redis.conf
- redis_activity_data:/data - redis_activity_data:/data
redis_broker:
image: redis
command: redis-server --requirepass ${REDIS_BROKER_PASSWORD} --appendonly yes --port ${REDIS_BROKER_PORT}
env_file: .env env_file: .env
ports:
- 6379:6379
networks: networks:
- main - main
restart: on-failure restart: on-failure
redis_broker:
image: redis
command: redis-server --requirepass ${REDIS_BROKER_PASSWORD} --appendonly yes --port ${REDIS_BROKER_PORT}
volumes: volumes:
- ./redis.conf:/etc/redis/redis.conf - ./redis.conf:/etc/redis/redis.conf
- redis_broker_data:/data - redis_broker_data:/data
env_file: .env
networks:
- main
restart: on-failure
celery_worker: celery_worker:
env_file: .env env_file: .env
build: . build: .
@ -74,10 +72,10 @@ services:
restart: on-failure restart: on-failure
flower: flower:
build: . build: .
command: celery -A celerywyrm flower command: celery -A celerywyrm flower --basic_auth=${FLOWER_USER}:${FLOWER_PASSWORD}
env_file: .env env_file: .env
ports: ports:
- ${FLOWER_PORT}:${FLOWER_PORT} - ${FLOWER_PORT}
volumes: volumes:
- .:/app - .:/app
networks: networks:
@ -86,6 +84,11 @@ services:
- db - db
- redis_broker - redis_broker
restart: on-failure restart: on-failure
dev-tools:
build: dev-tools
env_file: .env
volumes:
- .:/app
volumes: volumes:
pgdata: pgdata:
static_volume: static_volume:

View File

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-28 02:50+0000\n" "POT-Creation-Date: 2022-02-02 20:09+0000\n"
"PO-Revision-Date: 2022-01-29 14:28\n" "PO-Revision-Date: 2022-02-04 21:01\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: German\n" "Language-Team: German\n"
"Language: de\n" "Language: de\n"
@ -17,62 +17,70 @@ msgstr ""
"X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 1553\n" "X-Crowdin-File-ID: 1553\n"
#: bookwyrm/forms.py:365 #: bookwyrm/forms.py:239
msgid "Domain is blocked. Don't try this url again."
msgstr ""
#: bookwyrm/forms.py:241
msgid "Domain already pending. Please try later."
msgstr ""
#: bookwyrm/forms.py:378
msgid "A user with this email already exists." msgid "A user with this email already exists."
msgstr "Es existiert bereits ein Benutzer*inkonto mit dieser E-Mail-Adresse." msgstr "Es existiert bereits ein Benutzer*inkonto mit dieser E-Mail-Adresse."
#: bookwyrm/forms.py:379 #: bookwyrm/forms.py:392
msgid "One Day" msgid "One Day"
msgstr "Ein Tag" msgstr "Ein Tag"
#: bookwyrm/forms.py:380 #: bookwyrm/forms.py:393
msgid "One Week" msgid "One Week"
msgstr "Eine Woche" msgstr "Eine Woche"
#: bookwyrm/forms.py:381 #: bookwyrm/forms.py:394
msgid "One Month" msgid "One Month"
msgstr "Ein Monat" msgstr "Ein Monat"
#: bookwyrm/forms.py:382 #: bookwyrm/forms.py:395
msgid "Does Not Expire" msgid "Does Not Expire"
msgstr "Läuft nicht ab" msgstr "Läuft nicht ab"
#: bookwyrm/forms.py:386 #: bookwyrm/forms.py:399
#, python-brace-format #, python-brace-format
msgid "{i} uses" msgid "{i} uses"
msgstr "{i}-mal verwendbar" msgstr "{i}-mal verwendbar"
#: bookwyrm/forms.py:387 #: bookwyrm/forms.py:400
msgid "Unlimited" msgid "Unlimited"
msgstr "Unbegrenzt" msgstr "Unbegrenzt"
#: bookwyrm/forms.py:489 #: bookwyrm/forms.py:502
msgid "List Order" msgid "List Order"
msgstr "Reihenfolge der Liste" msgstr "Reihenfolge der Liste"
#: bookwyrm/forms.py:490 #: bookwyrm/forms.py:503
msgid "Book Title" msgid "Book Title"
msgstr "Buchtitel" msgstr "Buchtitel"
#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155
#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/shelf/shelf.html:187
#: bookwyrm/templates/snippets/create_status/review.html:32 #: bookwyrm/templates/snippets/create_status/review.html:32
msgid "Rating" msgid "Rating"
msgstr "Bewertung" msgstr "Bewertung"
#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 #: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177
msgid "Sort By" msgid "Sort By"
msgstr "Sortieren nach" msgstr "Sortieren nach"
#: bookwyrm/forms.py:497 #: bookwyrm/forms.py:510
msgid "Ascending" msgid "Ascending"
msgstr "Aufsteigend" msgstr "Aufsteigend"
#: bookwyrm/forms.py:498 #: bookwyrm/forms.py:511
msgid "Descending" msgid "Descending"
msgstr "Absteigend" msgstr "Absteigend"
#: bookwyrm/forms.py:511 #: bookwyrm/forms.py:524
msgid "Reading finish date cannot be before start date." msgid "Reading finish date cannot be before start date."
msgstr "Enddatum darf nicht vor dem Startdatum liegen." msgstr "Enddatum darf nicht vor dem Startdatum liegen."
@ -140,26 +148,26 @@ msgstr "Föderiert"
msgid "Blocked" msgid "Blocked"
msgstr "Blockiert" msgstr "Blockiert"
#: bookwyrm/models/fields.py:29 #: bookwyrm/models/fields.py:27
#, python-format #, python-format
msgid "%(value)s is not a valid remote_id" msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s ist keine gültige remote_id" msgstr "%(value)s ist keine gültige remote_id"
#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 #: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45
#, python-format #, python-format
msgid "%(value)s is not a valid username" msgid "%(value)s is not a valid username"
msgstr "%(value)s ist kein gültiger Benutzer*inname" msgstr "%(value)s ist kein gültiger Benutzer*inname"
#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 #: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170
#: bookwyrm/templates/ostatus/error.html:29 #: bookwyrm/templates/ostatus/error.html:29
msgid "username" msgid "username"
msgstr "Benutzer*inname" msgstr "Benutzer*inname"
#: bookwyrm/models/fields.py:188 #: bookwyrm/models/fields.py:186
msgid "A user with that username already exists." msgid "A user with that username already exists."
msgstr "Dieser Benutzer*inname ist bereits vergeben." msgstr "Dieser Benutzer*inname ist bereits vergeben."
#: bookwyrm/models/fields.py:207 #: bookwyrm/models/fields.py:205
#: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11 #: bookwyrm/templates/snippets/privacy_select.html:11
@ -167,7 +175,7 @@ msgstr "Dieser Benutzer*inname ist bereits vergeben."
msgid "Public" msgid "Public"
msgstr "Öffentlich" msgstr "Öffentlich"
#: bookwyrm/models/fields.py:208 #: bookwyrm/models/fields.py:206
#: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14 #: bookwyrm/templates/snippets/privacy_select.html:14
@ -175,14 +183,14 @@ msgstr "Öffentlich"
msgid "Unlisted" msgid "Unlisted"
msgstr "Ungelistet" msgstr "Ungelistet"
#: bookwyrm/models/fields.py:209 #: bookwyrm/models/fields.py:207
#: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11 #: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers" msgid "Followers"
msgstr "Follower*innen" msgstr "Follower*innen"
#: bookwyrm/models/fields.py:210 #: bookwyrm/models/fields.py:208
#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8
#: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy-icons.html:16
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Portugiesisch)" msgstr "Português Europeu (Portugiesisch)"
#: bookwyrm/settings.py:258 #: bookwyrm/settings.py:258
msgid "Swedish (Svenska)" msgid "Svenska (Swedish)"
msgstr "" msgstr "Svenska (Schwedisch)"
#: bookwyrm/settings.py:259 #: bookwyrm/settings.py:259
msgid "简体中文 (Simplified Chinese)" msgid "简体中文 (Simplified Chinese)"
@ -369,7 +377,7 @@ msgstr "Administration"
#: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/about/about.html:131
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14
#: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/status/status_options.html:35
#: bookwyrm/templates/snippets/user_options.html:13 #: bookwyrm/templates/snippets/user_options.html:14
msgid "Send direct message" msgid "Send direct message"
msgstr "Direktnachricht senden" msgstr "Direktnachricht senden"
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
msgstr "Physikalische Eigenschaften" msgstr "Physikalische Eigenschaften"
#: bookwyrm/templates/book/edit/edit_book_form.html:199 #: bookwyrm/templates/book/edit/edit_book_form.html:199
#: bookwyrm/templates/book/editions/format_filter.html:5 #: bookwyrm/templates/book/editions/format_filter.html:6
msgid "Format:" msgid "Format:"
msgstr "Format:" msgstr "Format:"
@ -1055,17 +1063,17 @@ msgstr "Ausgaben von %(book_title)s"
msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
msgstr "Ausgaben von <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgstr "Ausgaben von <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
#: bookwyrm/templates/book/editions/format_filter.html:8 #: bookwyrm/templates/book/editions/format_filter.html:9
#: bookwyrm/templates/book/editions/language_filter.html:8 #: bookwyrm/templates/book/editions/language_filter.html:9
msgid "Any" msgid "Any"
msgstr "Beliebig(e)" msgstr "Beliebig(e)"
#: bookwyrm/templates/book/editions/language_filter.html:5 #: bookwyrm/templates/book/editions/language_filter.html:6
#: bookwyrm/templates/preferences/edit_user.html:95 #: bookwyrm/templates/preferences/edit_user.html:95
msgid "Language:" msgid "Language:"
msgstr "Sprache:" msgstr "Sprache:"
#: bookwyrm/templates/book/editions/search_filter.html:5 #: bookwyrm/templates/book/editions/search_filter.html:6
msgid "Search editions" msgid "Search editions"
msgstr "Ausgaben suchen" msgstr "Ausgaben suchen"
@ -3574,23 +3582,31 @@ msgstr "Keine Links für diese Domain vorhanden."
msgid "Back to reports" msgid "Back to reports"
msgstr "Zurück zu den Meldungen" msgstr "Zurück zu den Meldungen"
#: bookwyrm/templates/settings/reports/report.html:22 #: bookwyrm/templates/settings/reports/report.html:23
msgid "Message reporter"
msgstr ""
#: bookwyrm/templates/settings/reports/report.html:27
msgid "Update on your report:"
msgstr ""
#: bookwyrm/templates/settings/reports/report.html:35
msgid "Reported statuses" msgid "Reported statuses"
msgstr "Gemeldete Statusmeldungen" msgstr "Gemeldete Statusmeldungen"
#: bookwyrm/templates/settings/reports/report.html:27 #: bookwyrm/templates/settings/reports/report.html:40
msgid "Status has been deleted" msgid "Status has been deleted"
msgstr "Statusmeldung gelöscht" msgstr "Statusmeldung gelöscht"
#: bookwyrm/templates/settings/reports/report.html:39 #: bookwyrm/templates/settings/reports/report.html:52
msgid "Reported links" msgid "Reported links"
msgstr "Gemeldete Links" msgstr "Gemeldete Links"
#: bookwyrm/templates/settings/reports/report.html:55 #: bookwyrm/templates/settings/reports/report.html:68
msgid "Moderator Comments" msgid "Moderator Comments"
msgstr "Moderator*innenkommentare" msgstr "Moderator*innenkommentare"
#: bookwyrm/templates/settings/reports/report.html:73 #: bookwyrm/templates/settings/reports/report.html:89
#: bookwyrm/templates/snippets/create_status.html:28 #: bookwyrm/templates/snippets/create_status.html:28
msgid "Comment" msgid "Comment"
msgstr "Kommentieren" msgstr "Kommentieren"
@ -4015,14 +4031,14 @@ msgstr "Prozent"
msgid "of %(pages)s pages" msgid "of %(pages)s pages"
msgstr "von %(pages)s Seiten" msgstr "von %(pages)s Seiten"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
#: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:34
#: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:53
#: bookwyrm/templates/snippets/status/layout.html:54 #: bookwyrm/templates/snippets/status/layout.html:54
msgid "Reply" msgid "Reply"
msgstr "Antworten" msgstr "Antworten"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
msgid "Content" msgid "Content"
msgstr "Inhalt" msgstr "Inhalt"
@ -4100,7 +4116,7 @@ msgstr "Filter werden angewendet"
msgid "Clear filters" msgid "Clear filters"
msgstr "Filter zurücksetzen" msgstr "Filter zurücksetzen"
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
msgid "Apply filters" msgid "Apply filters"
msgstr "Filter anwenden" msgstr "Filter anwenden"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 0.0.1\n" "Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-30 18:17+0000\n" "POT-Creation-Date: 2022-02-05 02:20+0000\n"
"PO-Revision-Date: 2021-02-28 17:19-0800\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: English <LL@li.org>\n" "Language-Team: English <LL@li.org>\n"
@ -18,62 +18,70 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: bookwyrm/forms.py:365 #: bookwyrm/forms.py:245
msgid "This domain is blocked. Please contact your administrator if you think this is an error."
msgstr ""
#: bookwyrm/forms.py:255
msgid "This link with file type has already been added for this book. If it is not visible, the domain is still pending."
msgstr ""
#: bookwyrm/forms.py:394
msgid "A user with this email already exists." msgid "A user with this email already exists."
msgstr "" msgstr ""
#: bookwyrm/forms.py:379 #: bookwyrm/forms.py:408
msgid "One Day" msgid "One Day"
msgstr "" msgstr ""
#: bookwyrm/forms.py:380 #: bookwyrm/forms.py:409
msgid "One Week" msgid "One Week"
msgstr "" msgstr ""
#: bookwyrm/forms.py:381 #: bookwyrm/forms.py:410
msgid "One Month" msgid "One Month"
msgstr "" msgstr ""
#: bookwyrm/forms.py:382 #: bookwyrm/forms.py:411
msgid "Does Not Expire" msgid "Does Not Expire"
msgstr "" msgstr ""
#: bookwyrm/forms.py:386 #: bookwyrm/forms.py:415
#, python-brace-format #, python-brace-format
msgid "{i} uses" msgid "{i} uses"
msgstr "" msgstr ""
#: bookwyrm/forms.py:387 #: bookwyrm/forms.py:416
msgid "Unlimited" msgid "Unlimited"
msgstr "" msgstr ""
#: bookwyrm/forms.py:489 #: bookwyrm/forms.py:518
msgid "List Order" msgid "List Order"
msgstr "" msgstr ""
#: bookwyrm/forms.py:490 #: bookwyrm/forms.py:519
msgid "Book Title" msgid "Book Title"
msgstr "" msgstr ""
#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/forms.py:520 bookwyrm/templates/shelf/shelf.html:155
#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/shelf/shelf.html:187
#: bookwyrm/templates/snippets/create_status/review.html:32 #: bookwyrm/templates/snippets/create_status/review.html:32
msgid "Rating" msgid "Rating"
msgstr "" msgstr ""
#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 #: bookwyrm/forms.py:522 bookwyrm/templates/lists/list.html:175
msgid "Sort By" msgid "Sort By"
msgstr "" msgstr ""
#: bookwyrm/forms.py:497 #: bookwyrm/forms.py:526
msgid "Ascending" msgid "Ascending"
msgstr "" msgstr ""
#: bookwyrm/forms.py:498 #: bookwyrm/forms.py:527
msgid "Descending" msgid "Descending"
msgstr "" msgstr ""
#: bookwyrm/forms.py:511 #: bookwyrm/forms.py:540
msgid "Reading finish date cannot be before start date." msgid "Reading finish date cannot be before start date."
msgstr "" msgstr ""
@ -141,26 +149,26 @@ msgstr ""
msgid "Blocked" msgid "Blocked"
msgstr "" msgstr ""
#: bookwyrm/models/fields.py:29 #: bookwyrm/models/fields.py:27
#, python-format #, python-format
msgid "%(value)s is not a valid remote_id" msgid "%(value)s is not a valid remote_id"
msgstr "" msgstr ""
#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 #: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45
#, python-format #, python-format
msgid "%(value)s is not a valid username" msgid "%(value)s is not a valid username"
msgstr "" msgstr ""
#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 #: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170
#: bookwyrm/templates/ostatus/error.html:29 #: bookwyrm/templates/ostatus/error.html:29
msgid "username" msgid "username"
msgstr "" msgstr ""
#: bookwyrm/models/fields.py:188 #: bookwyrm/models/fields.py:186
msgid "A user with that username already exists." msgid "A user with that username already exists."
msgstr "" msgstr ""
#: bookwyrm/models/fields.py:207 #: bookwyrm/models/fields.py:205
#: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11 #: bookwyrm/templates/snippets/privacy_select.html:11
@ -168,7 +176,7 @@ msgstr ""
msgid "Public" msgid "Public"
msgstr "" msgstr ""
#: bookwyrm/models/fields.py:208 #: bookwyrm/models/fields.py:206
#: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14 #: bookwyrm/templates/snippets/privacy_select.html:14
@ -176,14 +184,14 @@ msgstr ""
msgid "Unlisted" msgid "Unlisted"
msgstr "" msgstr ""
#: bookwyrm/models/fields.py:209 #: bookwyrm/models/fields.py:207
#: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11 #: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers" msgid "Followers"
msgstr "" msgstr ""
#: bookwyrm/models/fields.py:210 #: bookwyrm/models/fields.py:208
#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8
#: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy-icons.html:16
@ -225,73 +233,73 @@ msgstr ""
msgid "Everything else" msgid "Everything else"
msgstr "" msgstr ""
#: bookwyrm/settings.py:173 #: bookwyrm/settings.py:190
msgid "Home Timeline" msgid "Home Timeline"
msgstr "" msgstr ""
#: bookwyrm/settings.py:173 #: bookwyrm/settings.py:190
msgid "Home" msgid "Home"
msgstr "" msgstr ""
#: bookwyrm/settings.py:174 #: bookwyrm/settings.py:191
msgid "Books Timeline" msgid "Books Timeline"
msgstr "" msgstr ""
#: bookwyrm/settings.py:174 bookwyrm/templates/search/layout.html:21 #: bookwyrm/settings.py:191 bookwyrm/templates/search/layout.html:21
#: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/search/layout.html:42
#: bookwyrm/templates/user/layout.html:91 #: bookwyrm/templates/user/layout.html:91
msgid "Books" msgid "Books"
msgstr "" msgstr ""
#: bookwyrm/settings.py:248 #: bookwyrm/settings.py:265
msgid "English" msgid "English"
msgstr "" msgstr ""
#: bookwyrm/settings.py:249 #: bookwyrm/settings.py:266
msgid "Deutsch (German)" msgid "Deutsch (German)"
msgstr "" msgstr ""
#: bookwyrm/settings.py:250 #: bookwyrm/settings.py:267
msgid "Español (Spanish)" msgid "Español (Spanish)"
msgstr "" msgstr ""
#: bookwyrm/settings.py:251 #: bookwyrm/settings.py:268
msgid "Galego (Galician)" msgid "Galego (Galician)"
msgstr "" msgstr ""
#: bookwyrm/settings.py:252 #: bookwyrm/settings.py:269
msgid "Italiano (Italian)" msgid "Italiano (Italian)"
msgstr "" msgstr ""
#: bookwyrm/settings.py:253 #: bookwyrm/settings.py:270
msgid "Français (French)" msgid "Français (French)"
msgstr "" msgstr ""
#: bookwyrm/settings.py:254 #: bookwyrm/settings.py:271
msgid "Lietuvių (Lithuanian)" msgid "Lietuvių (Lithuanian)"
msgstr "" msgstr ""
#: bookwyrm/settings.py:255 #: bookwyrm/settings.py:272
msgid "Norsk (Norwegian)" msgid "Norsk (Norwegian)"
msgstr "" msgstr ""
#: bookwyrm/settings.py:256 #: bookwyrm/settings.py:273
msgid "Português do Brasil (Brazilian Portuguese)" msgid "Português do Brasil (Brazilian Portuguese)"
msgstr "" msgstr ""
#: bookwyrm/settings.py:257 #: bookwyrm/settings.py:274
msgid "Português Europeu (European Portuguese)" msgid "Português Europeu (European Portuguese)"
msgstr "" msgstr ""
#: bookwyrm/settings.py:258 #: bookwyrm/settings.py:275
msgid "Swedish (Svenska)" msgid "Svenska (Swedish)"
msgstr "" msgstr ""
#: bookwyrm/settings.py:259 #: bookwyrm/settings.py:276
msgid "简体中文 (Simplified Chinese)" msgid "简体中文 (Simplified Chinese)"
msgstr "" msgstr ""
#: bookwyrm/settings.py:260 #: bookwyrm/settings.py:277
msgid "繁體中文 (Traditional Chinese)" msgid "繁體中文 (Traditional Chinese)"
msgstr "" msgstr ""
@ -370,7 +378,7 @@ msgstr ""
#: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/about/about.html:131
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14
#: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/status/status_options.html:35
#: bookwyrm/templates/snippets/user_options.html:13 #: bookwyrm/templates/snippets/user_options.html:14
msgid "Send direct message" msgid "Send direct message"
msgstr "" msgstr ""
@ -429,7 +437,7 @@ msgid "Copy address"
msgstr "" msgstr ""
#: bookwyrm/templates/annual_summary/layout.html:68 #: bookwyrm/templates/annual_summary/layout.html:68
#: bookwyrm/templates/lists/list.html:269 #: bookwyrm/templates/lists/list.html:267
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
@ -714,17 +722,17 @@ msgstr ""
#: bookwyrm/templates/book/cover_add_modal.html:32 #: bookwyrm/templates/book/cover_add_modal.html:32
#: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:123
#: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/edit/edit_book.html:126
#: bookwyrm/templates/book/file_links/add_link_modal.html:60 #: bookwyrm/templates/book/file_links/add_link_modal.html:59
#: bookwyrm/templates/book/file_links/verification_modal.html:21 #: bookwyrm/templates/book/file_links/verification_modal.html:21
#: bookwyrm/templates/book/sync_modal.html:23 #: bookwyrm/templates/book/sync_modal.html:23
#: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/groups/delete_group_modal.html:17
#: bookwyrm/templates/lists/add_item_modal.html:42 #: bookwyrm/templates/lists/add_item_modal.html:42
#: bookwyrm/templates/lists/delete_list_modal.html:18 #: bookwyrm/templates/lists/delete_list_modal.html:18
#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 #: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23
#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/readthrough/readthrough_modal.html:73
#: bookwyrm/templates/settings/federation/instance.html:88 #: bookwyrm/templates/settings/federation/instance.html:88
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22
#: bookwyrm/templates/snippets/report_modal.html:54 #: bookwyrm/templates/snippets/report_modal.html:53
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
@ -831,14 +839,14 @@ msgstr ""
msgid "Lists" msgid "Lists"
msgstr "" msgstr ""
#: bookwyrm/templates/book/book.html:359 #: bookwyrm/templates/book/book.html:360
msgid "Add to list" msgid "Add to list"
msgstr "" msgstr ""
#: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/book.html:370
#: bookwyrm/templates/book/cover_add_modal.html:31 #: bookwyrm/templates/book/cover_add_modal.html:31
#: bookwyrm/templates/lists/add_item_modal.html:37 #: bookwyrm/templates/lists/add_item_modal.html:37
#: bookwyrm/templates/lists/list.html:247 #: bookwyrm/templates/lists/list.html:245
#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31
msgid "Add" msgid "Add"
@ -1018,7 +1026,7 @@ msgid "Physical Properties"
msgstr "" msgstr ""
#: bookwyrm/templates/book/edit/edit_book_form.html:199 #: bookwyrm/templates/book/edit/edit_book_form.html:199
#: bookwyrm/templates/book/editions/format_filter.html:5 #: bookwyrm/templates/book/editions/format_filter.html:6
msgid "Format:" msgid "Format:"
msgstr "" msgstr ""
@ -1056,17 +1064,17 @@ msgstr ""
msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
msgstr "" msgstr ""
#: bookwyrm/templates/book/editions/format_filter.html:8 #: bookwyrm/templates/book/editions/format_filter.html:9
#: bookwyrm/templates/book/editions/language_filter.html:8 #: bookwyrm/templates/book/editions/language_filter.html:9
msgid "Any" msgid "Any"
msgstr "" msgstr ""
#: bookwyrm/templates/book/editions/language_filter.html:5 #: bookwyrm/templates/book/editions/language_filter.html:6
#: bookwyrm/templates/preferences/edit_user.html:95 #: bookwyrm/templates/preferences/edit_user.html:95
msgid "Language:" msgid "Language:"
msgstr "" msgstr ""
#: bookwyrm/templates/book/editions/search_filter.html:5 #: bookwyrm/templates/book/editions/search_filter.html:6
msgid "Search editions" msgid "Search editions"
msgstr "" msgstr ""
@ -1651,7 +1659,7 @@ msgid "What are you reading?"
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/books.html:9 #: bookwyrm/templates/get_started/books.html:9
#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:205 #: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:203
msgid "Search for a book" msgid "Search for a book"
msgstr "" msgstr ""
@ -1671,7 +1679,7 @@ msgstr ""
#: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/get_started/users.html:19
#: bookwyrm/templates/groups/members.html:15 #: bookwyrm/templates/groups/members.html:15
#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53 #: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:53
#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:209 #: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:207
#: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:4
#: bookwyrm/templates/search/layout.html:9 #: bookwyrm/templates/search/layout.html:9
msgid "Search" msgid "Search"
@ -1687,7 +1695,7 @@ msgid "Popular on %(site_name)s"
msgstr "" msgstr ""
#: bookwyrm/templates/get_started/books.html:58 #: bookwyrm/templates/get_started/books.html:58
#: bookwyrm/templates/lists/list.html:222 #: bookwyrm/templates/lists/list.html:220
msgid "No books found" msgid "No books found"
msgstr "" msgstr ""
@ -2258,7 +2266,7 @@ msgid "Suggest \"<em>%(title)s</em>\" for this list"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:249 #: bookwyrm/templates/lists/list.html:247
msgid "Suggest" msgid "Suggest"
msgstr "" msgstr ""
@ -2405,72 +2413,72 @@ msgstr ""
msgid "You successfully added a book to this list!" msgid "You successfully added a book to this list!"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:96 #: bookwyrm/templates/lists/list.html:94
msgid "Edit notes" msgid "Edit notes"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:111 #: bookwyrm/templates/lists/list.html:109
msgid "Add notes" msgid "Add notes"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:123 #: bookwyrm/templates/lists/list.html:121
#, python-format #, python-format
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>" msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:138 #: bookwyrm/templates/lists/list.html:136
msgid "List position" msgid "List position"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:144 #: bookwyrm/templates/lists/list.html:142
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21
msgid "Set" msgid "Set"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:159 #: bookwyrm/templates/lists/list.html:157
#: bookwyrm/templates/snippets/remove_from_group_button.html:20 #: bookwyrm/templates/snippets/remove_from_group_button.html:20
msgid "Remove" msgid "Remove"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:173 #: bookwyrm/templates/lists/list.html:171
#: bookwyrm/templates/lists/list.html:190 #: bookwyrm/templates/lists/list.html:188
msgid "Sort List" msgid "Sort List"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:183 #: bookwyrm/templates/lists/list.html:181
msgid "Direction" msgid "Direction"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:197 #: bookwyrm/templates/lists/list.html:195
msgid "Add Books" msgid "Add Books"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:199 #: bookwyrm/templates/lists/list.html:197
msgid "Suggest Books" msgid "Suggest Books"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:210 #: bookwyrm/templates/lists/list.html:208
msgid "search" msgid "search"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:216 #: bookwyrm/templates/lists/list.html:214
msgid "Clear search" msgid "Clear search"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:221 #: bookwyrm/templates/lists/list.html:219
#, python-format #, python-format
msgid "No books found matching the query \"%(query)s\"" msgid "No books found matching the query \"%(query)s\""
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:260 #: bookwyrm/templates/lists/list.html:258
msgid "Embed this list on a website" msgid "Embed this list on a website"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:268 #: bookwyrm/templates/lists/list.html:266
msgid "Copy embed code" msgid "Copy embed code"
msgstr "" msgstr ""
#: bookwyrm/templates/lists/list.html:270 #: bookwyrm/templates/lists/list.html:268
#, python-format #, python-format
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s" msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
msgstr "" msgstr ""
@ -4108,7 +4116,7 @@ msgstr ""
msgid "Clear filters" msgid "Clear filters"
msgstr "" msgstr ""
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
msgid "Apply filters" msgid "Apply filters"
msgstr "" msgstr ""

Binary file not shown.

View File

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-28 02:50+0000\n" "POT-Creation-Date: 2022-02-02 20:09+0000\n"
"PO-Revision-Date: 2022-01-28 08:06\n" "PO-Revision-Date: 2022-02-04 22:13\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Spanish\n" "Language-Team: Spanish\n"
"Language: es\n" "Language: es\n"
@ -17,62 +17,70 @@ msgstr ""
"X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 1553\n" "X-Crowdin-File-ID: 1553\n"
#: bookwyrm/forms.py:365 #: bookwyrm/forms.py:239
msgid "Domain is blocked. Don't try this url again."
msgstr "El dominio está bloqueado. No vuelva a intentar esta url."
#: bookwyrm/forms.py:241
msgid "Domain already pending. Please try later."
msgstr "El dominio ya está pendiente. Inténtalo más tarde."
#: bookwyrm/forms.py:378
msgid "A user with this email already exists." msgid "A user with this email already exists."
msgstr "Ya existe un usuario con ese correo electrónico." msgstr "Ya existe un usuario con ese correo electrónico."
#: bookwyrm/forms.py:379 #: bookwyrm/forms.py:392
msgid "One Day" msgid "One Day"
msgstr "Un día" msgstr "Un día"
#: bookwyrm/forms.py:380 #: bookwyrm/forms.py:393
msgid "One Week" msgid "One Week"
msgstr "Una semana" msgstr "Una semana"
#: bookwyrm/forms.py:381 #: bookwyrm/forms.py:394
msgid "One Month" msgid "One Month"
msgstr "Un mes" msgstr "Un mes"
#: bookwyrm/forms.py:382 #: bookwyrm/forms.py:395
msgid "Does Not Expire" msgid "Does Not Expire"
msgstr "No expira" msgstr "No expira"
#: bookwyrm/forms.py:386 #: bookwyrm/forms.py:399
#, python-brace-format #, python-brace-format
msgid "{i} uses" msgid "{i} uses"
msgstr "{i} usos" msgstr "{i} usos"
#: bookwyrm/forms.py:387 #: bookwyrm/forms.py:400
msgid "Unlimited" msgid "Unlimited"
msgstr "Sin límite" msgstr "Sin límite"
#: bookwyrm/forms.py:489 #: bookwyrm/forms.py:502
msgid "List Order" msgid "List Order"
msgstr "Orden de la lista" msgstr "Orden de la lista"
#: bookwyrm/forms.py:490 #: bookwyrm/forms.py:503
msgid "Book Title" msgid "Book Title"
msgstr "Título" msgstr "Título"
#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155
#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/shelf/shelf.html:187
#: bookwyrm/templates/snippets/create_status/review.html:32 #: bookwyrm/templates/snippets/create_status/review.html:32
msgid "Rating" msgid "Rating"
msgstr "Valoración" msgstr "Valoración"
#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 #: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177
msgid "Sort By" msgid "Sort By"
msgstr "Ordenar por" msgstr "Ordenar por"
#: bookwyrm/forms.py:497 #: bookwyrm/forms.py:510
msgid "Ascending" msgid "Ascending"
msgstr "Ascendente" msgstr "Ascendente"
#: bookwyrm/forms.py:498 #: bookwyrm/forms.py:511
msgid "Descending" msgid "Descending"
msgstr "Descendente" msgstr "Descendente"
#: bookwyrm/forms.py:511 #: bookwyrm/forms.py:524
msgid "Reading finish date cannot be before start date." msgid "Reading finish date cannot be before start date."
msgstr "La fecha final de lectura no puede ser anterior a la fecha de inicio." msgstr "La fecha final de lectura no puede ser anterior a la fecha de inicio."
@ -140,26 +148,26 @@ msgstr "Federalizado"
msgid "Blocked" msgid "Blocked"
msgstr "Bloqueado" msgstr "Bloqueado"
#: bookwyrm/models/fields.py:29 #: bookwyrm/models/fields.py:27
#, python-format #, python-format
msgid "%(value)s is not a valid remote_id" msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s no es un remote_id válido" msgstr "%(value)s no es un remote_id válido"
#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 #: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45
#, python-format #, python-format
msgid "%(value)s is not a valid username" msgid "%(value)s is not a valid username"
msgstr "%(value)s no es un usuario válido" msgstr "%(value)s no es un usuario válido"
#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 #: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170
#: bookwyrm/templates/ostatus/error.html:29 #: bookwyrm/templates/ostatus/error.html:29
msgid "username" msgid "username"
msgstr "nombre de usuario" msgstr "nombre de usuario"
#: bookwyrm/models/fields.py:188 #: bookwyrm/models/fields.py:186
msgid "A user with that username already exists." msgid "A user with that username already exists."
msgstr "Ya existe un usuario con ese nombre." msgstr "Ya existe un usuario con ese nombre."
#: bookwyrm/models/fields.py:207 #: bookwyrm/models/fields.py:205
#: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11 #: bookwyrm/templates/snippets/privacy_select.html:11
@ -167,7 +175,7 @@ msgstr "Ya existe un usuario con ese nombre."
msgid "Public" msgid "Public"
msgstr "Público" msgstr "Público"
#: bookwyrm/models/fields.py:208 #: bookwyrm/models/fields.py:206
#: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14 #: bookwyrm/templates/snippets/privacy_select.html:14
@ -175,14 +183,14 @@ msgstr "Público"
msgid "Unlisted" msgid "Unlisted"
msgstr "No listado" msgstr "No listado"
#: bookwyrm/models/fields.py:209 #: bookwyrm/models/fields.py:207
#: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11 #: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers" msgid "Followers"
msgstr "Seguidores" msgstr "Seguidores"
#: bookwyrm/models/fields.py:210 #: bookwyrm/models/fields.py:208
#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8
#: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy-icons.html:16
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Portugués europeo)" msgstr "Português Europeu (Portugués europeo)"
#: bookwyrm/settings.py:258 #: bookwyrm/settings.py:258
msgid "Swedish (Svenska)" msgid "Svenska (Swedish)"
msgstr "Sueco (Svenska)" msgstr "Svenska (Sueco)"
#: bookwyrm/settings.py:259 #: bookwyrm/settings.py:259
msgid "简体中文 (Simplified Chinese)" msgid "简体中文 (Simplified Chinese)"
@ -369,7 +377,7 @@ msgstr "Administrador"
#: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/about/about.html:131
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14
#: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/status/status_options.html:35
#: bookwyrm/templates/snippets/user_options.html:13 #: bookwyrm/templates/snippets/user_options.html:14
msgid "Send direct message" msgid "Send direct message"
msgstr "Enviar mensaje directo" msgstr "Enviar mensaje directo"
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
msgstr "Propiedades físicas" msgstr "Propiedades físicas"
#: bookwyrm/templates/book/edit/edit_book_form.html:199 #: bookwyrm/templates/book/edit/edit_book_form.html:199
#: bookwyrm/templates/book/editions/format_filter.html:5 #: bookwyrm/templates/book/editions/format_filter.html:6
msgid "Format:" msgid "Format:"
msgstr "Formato:" msgstr "Formato:"
@ -1055,17 +1063,17 @@ msgstr "Ediciones de %(book_title)s"
msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
msgstr "Ediciones de <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgstr "Ediciones de <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
#: bookwyrm/templates/book/editions/format_filter.html:8 #: bookwyrm/templates/book/editions/format_filter.html:9
#: bookwyrm/templates/book/editions/language_filter.html:8 #: bookwyrm/templates/book/editions/language_filter.html:9
msgid "Any" msgid "Any"
msgstr "Cualquier" msgstr "Cualquier"
#: bookwyrm/templates/book/editions/language_filter.html:5 #: bookwyrm/templates/book/editions/language_filter.html:6
#: bookwyrm/templates/preferences/edit_user.html:95 #: bookwyrm/templates/preferences/edit_user.html:95
msgid "Language:" msgid "Language:"
msgstr "Idioma:" msgstr "Idioma:"
#: bookwyrm/templates/book/editions/search_filter.html:5 #: bookwyrm/templates/book/editions/search_filter.html:6
msgid "Search editions" msgid "Search editions"
msgstr "Buscar ediciones" msgstr "Buscar ediciones"
@ -3574,23 +3582,31 @@ msgstr "Ningún enlace disponible para este dominio."
msgid "Back to reports" msgid "Back to reports"
msgstr "Volver a los informes" msgstr "Volver a los informes"
#: bookwyrm/templates/settings/reports/report.html:22 #: bookwyrm/templates/settings/reports/report.html:23
msgid "Message reporter"
msgstr ""
#: bookwyrm/templates/settings/reports/report.html:27
msgid "Update on your report:"
msgstr ""
#: bookwyrm/templates/settings/reports/report.html:35
msgid "Reported statuses" msgid "Reported statuses"
msgstr "Estados reportados" msgstr "Estados reportados"
#: bookwyrm/templates/settings/reports/report.html:27 #: bookwyrm/templates/settings/reports/report.html:40
msgid "Status has been deleted" msgid "Status has been deleted"
msgstr "El estado ha sido eliminado" msgstr "El estado ha sido eliminado"
#: bookwyrm/templates/settings/reports/report.html:39 #: bookwyrm/templates/settings/reports/report.html:52
msgid "Reported links" msgid "Reported links"
msgstr "Enlaces denunciados" msgstr "Enlaces denunciados"
#: bookwyrm/templates/settings/reports/report.html:55 #: bookwyrm/templates/settings/reports/report.html:68
msgid "Moderator Comments" msgid "Moderator Comments"
msgstr "Comentarios de moderador" msgstr "Comentarios de moderador"
#: bookwyrm/templates/settings/reports/report.html:73 #: bookwyrm/templates/settings/reports/report.html:89
#: bookwyrm/templates/snippets/create_status.html:28 #: bookwyrm/templates/snippets/create_status.html:28
msgid "Comment" msgid "Comment"
msgstr "Comentario" msgstr "Comentario"
@ -4015,14 +4031,14 @@ msgstr "por ciento"
msgid "of %(pages)s pages" msgid "of %(pages)s pages"
msgstr "de %(pages)s páginas" msgstr "de %(pages)s páginas"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
#: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:34
#: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:53
#: bookwyrm/templates/snippets/status/layout.html:54 #: bookwyrm/templates/snippets/status/layout.html:54
msgid "Reply" msgid "Reply"
msgstr "Responder" msgstr "Responder"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
msgid "Content" msgid "Content"
msgstr "Contenido" msgstr "Contenido"
@ -4100,7 +4116,7 @@ msgstr "Filtros aplicados"
msgid "Clear filters" msgid "Clear filters"
msgstr "Borrar filtros" msgstr "Borrar filtros"
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
msgid "Apply filters" msgid "Apply filters"
msgstr "Aplicar filtros" msgstr "Aplicar filtros"

View File

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-28 02:50+0000\n" "POT-Creation-Date: 2022-02-02 20:09+0000\n"
"PO-Revision-Date: 2022-01-28 11:29\n" "PO-Revision-Date: 2022-02-04 21:01\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: French\n" "Language-Team: French\n"
"Language: fr\n" "Language: fr\n"
@ -17,62 +17,70 @@ msgstr ""
"X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 1553\n" "X-Crowdin-File-ID: 1553\n"
#: bookwyrm/forms.py:365 #: bookwyrm/forms.py:239
msgid "Domain is blocked. Don't try this url again."
msgstr ""
#: bookwyrm/forms.py:241
msgid "Domain already pending. Please try later."
msgstr ""
#: bookwyrm/forms.py:378
msgid "A user with this email already exists." msgid "A user with this email already exists."
msgstr "Cet email est déjà associé à un compte." msgstr "Cet email est déjà associé à un compte."
#: bookwyrm/forms.py:379 #: bookwyrm/forms.py:392
msgid "One Day" msgid "One Day"
msgstr "Un jour" msgstr "Un jour"
#: bookwyrm/forms.py:380 #: bookwyrm/forms.py:393
msgid "One Week" msgid "One Week"
msgstr "Une semaine" msgstr "Une semaine"
#: bookwyrm/forms.py:381 #: bookwyrm/forms.py:394
msgid "One Month" msgid "One Month"
msgstr "Un mois" msgstr "Un mois"
#: bookwyrm/forms.py:382 #: bookwyrm/forms.py:395
msgid "Does Not Expire" msgid "Does Not Expire"
msgstr "Sans expiration" msgstr "Sans expiration"
#: bookwyrm/forms.py:386 #: bookwyrm/forms.py:399
#, python-brace-format #, python-brace-format
msgid "{i} uses" msgid "{i} uses"
msgstr "{i} utilisations" msgstr "{i} utilisations"
#: bookwyrm/forms.py:387 #: bookwyrm/forms.py:400
msgid "Unlimited" msgid "Unlimited"
msgstr "Sans limite" msgstr "Sans limite"
#: bookwyrm/forms.py:489 #: bookwyrm/forms.py:502
msgid "List Order" msgid "List Order"
msgstr "Ordre de la liste" msgstr "Ordre de la liste"
#: bookwyrm/forms.py:490 #: bookwyrm/forms.py:503
msgid "Book Title" msgid "Book Title"
msgstr "Titre du livre" msgstr "Titre du livre"
#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155
#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/shelf/shelf.html:187
#: bookwyrm/templates/snippets/create_status/review.html:32 #: bookwyrm/templates/snippets/create_status/review.html:32
msgid "Rating" msgid "Rating"
msgstr "Note" msgstr "Note"
#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 #: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177
msgid "Sort By" msgid "Sort By"
msgstr "Trier par" msgstr "Trier par"
#: bookwyrm/forms.py:497 #: bookwyrm/forms.py:510
msgid "Ascending" msgid "Ascending"
msgstr "Ordre croissant" msgstr "Ordre croissant"
#: bookwyrm/forms.py:498 #: bookwyrm/forms.py:511
msgid "Descending" msgid "Descending"
msgstr "Ordre décroissant" msgstr "Ordre décroissant"
#: bookwyrm/forms.py:511 #: bookwyrm/forms.py:524
msgid "Reading finish date cannot be before start date." msgid "Reading finish date cannot be before start date."
msgstr "La date de fin de lecture ne peut pas être antérieure à la date de début." msgstr "La date de fin de lecture ne peut pas être antérieure à la date de début."
@ -140,26 +148,26 @@ msgstr "Fédéré"
msgid "Blocked" msgid "Blocked"
msgstr "Bloqué" msgstr "Bloqué"
#: bookwyrm/models/fields.py:29 #: bookwyrm/models/fields.py:27
#, python-format #, python-format
msgid "%(value)s is not a valid remote_id" msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s nest pas une remote_id valide." msgstr "%(value)s nest pas une remote_id valide."
#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 #: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45
#, python-format #, python-format
msgid "%(value)s is not a valid username" msgid "%(value)s is not a valid username"
msgstr "%(value)s nest pas un nom de compte valide." msgstr "%(value)s nest pas un nom de compte valide."
#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 #: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170
#: bookwyrm/templates/ostatus/error.html:29 #: bookwyrm/templates/ostatus/error.html:29
msgid "username" msgid "username"
msgstr "nom du compte:" msgstr "nom du compte:"
#: bookwyrm/models/fields.py:188 #: bookwyrm/models/fields.py:186
msgid "A user with that username already exists." msgid "A user with that username already exists."
msgstr "Ce nom est déjà associé à un compte." msgstr "Ce nom est déjà associé à un compte."
#: bookwyrm/models/fields.py:207 #: bookwyrm/models/fields.py:205
#: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11 #: bookwyrm/templates/snippets/privacy_select.html:11
@ -167,7 +175,7 @@ msgstr "Ce nom est déjà associé à un compte."
msgid "Public" msgid "Public"
msgstr "Public" msgstr "Public"
#: bookwyrm/models/fields.py:208 #: bookwyrm/models/fields.py:206
#: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14 #: bookwyrm/templates/snippets/privacy_select.html:14
@ -175,14 +183,14 @@ msgstr "Public"
msgid "Unlisted" msgid "Unlisted"
msgstr "Non listé" msgstr "Non listé"
#: bookwyrm/models/fields.py:209 #: bookwyrm/models/fields.py:207
#: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11 #: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers" msgid "Followers"
msgstr "Abonné(e)s" msgstr "Abonné(e)s"
#: bookwyrm/models/fields.py:210 #: bookwyrm/models/fields.py:208
#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8
#: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy-icons.html:16
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Portugais européen)" msgstr "Português Europeu (Portugais européen)"
#: bookwyrm/settings.py:258 #: bookwyrm/settings.py:258
msgid "Swedish (Svenska)" msgid "Svenska (Swedish)"
msgstr "Suédois (Svenska)" msgstr "Svenska (Suédois)"
#: bookwyrm/settings.py:259 #: bookwyrm/settings.py:259
msgid "简体中文 (Simplified Chinese)" msgid "简体中文 (Simplified Chinese)"
@ -369,7 +377,7 @@ msgstr "Admin"
#: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/about/about.html:131
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14
#: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/status/status_options.html:35
#: bookwyrm/templates/snippets/user_options.html:13 #: bookwyrm/templates/snippets/user_options.html:14
msgid "Send direct message" msgid "Send direct message"
msgstr "Envoyer un message direct" msgstr "Envoyer un message direct"
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
msgstr "Propriétés physiques" msgstr "Propriétés physiques"
#: bookwyrm/templates/book/edit/edit_book_form.html:199 #: bookwyrm/templates/book/edit/edit_book_form.html:199
#: bookwyrm/templates/book/editions/format_filter.html:5 #: bookwyrm/templates/book/editions/format_filter.html:6
msgid "Format:" msgid "Format:"
msgstr "Format:" msgstr "Format:"
@ -1055,17 +1063,17 @@ msgstr "Éditions de %(book_title)s"
msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
msgstr "Éditions de <a href=\"%(work_path)s\">« %(work_title)s»</a>" msgstr "Éditions de <a href=\"%(work_path)s\">« %(work_title)s»</a>"
#: bookwyrm/templates/book/editions/format_filter.html:8 #: bookwyrm/templates/book/editions/format_filter.html:9
#: bookwyrm/templates/book/editions/language_filter.html:8 #: bookwyrm/templates/book/editions/language_filter.html:9
msgid "Any" msgid "Any"
msgstr "Tou(te)s" msgstr "Tou(te)s"
#: bookwyrm/templates/book/editions/language_filter.html:5 #: bookwyrm/templates/book/editions/language_filter.html:6
#: bookwyrm/templates/preferences/edit_user.html:95 #: bookwyrm/templates/preferences/edit_user.html:95
msgid "Language:" msgid "Language:"
msgstr "Langue:" msgstr "Langue:"
#: bookwyrm/templates/book/editions/search_filter.html:5 #: bookwyrm/templates/book/editions/search_filter.html:6
msgid "Search editions" msgid "Search editions"
msgstr "Rechercher des éditions" msgstr "Rechercher des éditions"
@ -3574,23 +3582,31 @@ msgstr "Aucun lien nest disponible pour ce domaine."
msgid "Back to reports" msgid "Back to reports"
msgstr "Retour aux signalements" msgstr "Retour aux signalements"
#: bookwyrm/templates/settings/reports/report.html:22 #: bookwyrm/templates/settings/reports/report.html:23
msgid "Message reporter"
msgstr "Rapporteur du message"
#: bookwyrm/templates/settings/reports/report.html:27
msgid "Update on your report:"
msgstr "Mise à jour de votre rapport :"
#: bookwyrm/templates/settings/reports/report.html:35
msgid "Reported statuses" msgid "Reported statuses"
msgstr "Statuts signalés" msgstr "Statuts signalés"
#: bookwyrm/templates/settings/reports/report.html:27 #: bookwyrm/templates/settings/reports/report.html:40
msgid "Status has been deleted" msgid "Status has been deleted"
msgstr "Le statut a été supprimé" msgstr "Le statut a été supprimé"
#: bookwyrm/templates/settings/reports/report.html:39 #: bookwyrm/templates/settings/reports/report.html:52
msgid "Reported links" msgid "Reported links"
msgstr "Liens signalés" msgstr "Liens signalés"
#: bookwyrm/templates/settings/reports/report.html:55 #: bookwyrm/templates/settings/reports/report.html:68
msgid "Moderator Comments" msgid "Moderator Comments"
msgstr "Commentaires de léquipe de modération" msgstr "Commentaires de léquipe de modération"
#: bookwyrm/templates/settings/reports/report.html:73 #: bookwyrm/templates/settings/reports/report.html:89
#: bookwyrm/templates/snippets/create_status.html:28 #: bookwyrm/templates/snippets/create_status.html:28
msgid "Comment" msgid "Comment"
msgstr "Commentaire" msgstr "Commentaire"
@ -4015,14 +4031,14 @@ msgstr "pourcent"
msgid "of %(pages)s pages" msgid "of %(pages)s pages"
msgstr "sur %(pages)s pages" msgstr "sur %(pages)s pages"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
#: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:34
#: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:53
#: bookwyrm/templates/snippets/status/layout.html:54 #: bookwyrm/templates/snippets/status/layout.html:54
msgid "Reply" msgid "Reply"
msgstr "Répondre" msgstr "Répondre"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
msgid "Content" msgid "Content"
msgstr "Contenu" msgstr "Contenu"
@ -4100,7 +4116,7 @@ msgstr "Des filtres sont appliqués"
msgid "Clear filters" msgid "Clear filters"
msgstr "Annuler les filtres" msgstr "Annuler les filtres"
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
msgid "Apply filters" msgid "Apply filters"
msgstr "Appliquer les filtres" msgstr "Appliquer les filtres"

Binary file not shown.

View File

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-28 02:50+0000\n" "POT-Creation-Date: 2022-02-02 20:09+0000\n"
"PO-Revision-Date: 2022-01-28 05:04\n" "PO-Revision-Date: 2022-02-04 21:01\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Galician\n" "Language-Team: Galician\n"
"Language: gl\n" "Language: gl\n"
@ -17,62 +17,70 @@ msgstr ""
"X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 1553\n" "X-Crowdin-File-ID: 1553\n"
#: bookwyrm/forms.py:365 #: bookwyrm/forms.py:239
msgid "Domain is blocked. Don't try this url again."
msgstr ""
#: bookwyrm/forms.py:241
msgid "Domain already pending. Please try later."
msgstr ""
#: bookwyrm/forms.py:378
msgid "A user with this email already exists." msgid "A user with this email already exists."
msgstr "Xa existe unha usuaria con este email." msgstr "Xa existe unha usuaria con este email."
#: bookwyrm/forms.py:379 #: bookwyrm/forms.py:392
msgid "One Day" msgid "One Day"
msgstr "Un día" msgstr "Un día"
#: bookwyrm/forms.py:380 #: bookwyrm/forms.py:393
msgid "One Week" msgid "One Week"
msgstr "Unha semana" msgstr "Unha semana"
#: bookwyrm/forms.py:381 #: bookwyrm/forms.py:394
msgid "One Month" msgid "One Month"
msgstr "Un mes" msgstr "Un mes"
#: bookwyrm/forms.py:382 #: bookwyrm/forms.py:395
msgid "Does Not Expire" msgid "Does Not Expire"
msgstr "Non caduca" msgstr "Non caduca"
#: bookwyrm/forms.py:386 #: bookwyrm/forms.py:399
#, python-brace-format #, python-brace-format
msgid "{i} uses" msgid "{i} uses"
msgstr "{i} usos" msgstr "{i} usos"
#: bookwyrm/forms.py:387 #: bookwyrm/forms.py:400
msgid "Unlimited" msgid "Unlimited"
msgstr "Sen límite" msgstr "Sen límite"
#: bookwyrm/forms.py:489 #: bookwyrm/forms.py:502
msgid "List Order" msgid "List Order"
msgstr "Orde da listaxe" msgstr "Orde da listaxe"
#: bookwyrm/forms.py:490 #: bookwyrm/forms.py:503
msgid "Book Title" msgid "Book Title"
msgstr "Título do libro" msgstr "Título do libro"
#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155
#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/shelf/shelf.html:187
#: bookwyrm/templates/snippets/create_status/review.html:32 #: bookwyrm/templates/snippets/create_status/review.html:32
msgid "Rating" msgid "Rating"
msgstr "Puntuación" msgstr "Puntuación"
#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 #: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177
msgid "Sort By" msgid "Sort By"
msgstr "Ordenar por" msgstr "Ordenar por"
#: bookwyrm/forms.py:497 #: bookwyrm/forms.py:510
msgid "Ascending" msgid "Ascending"
msgstr "Ascendente" msgstr "Ascendente"
#: bookwyrm/forms.py:498 #: bookwyrm/forms.py:511
msgid "Descending" msgid "Descending"
msgstr "Descendente" msgstr "Descendente"
#: bookwyrm/forms.py:511 #: bookwyrm/forms.py:524
msgid "Reading finish date cannot be before start date." msgid "Reading finish date cannot be before start date."
msgstr "A data final da lectura non pode ser anterior á de inicio." msgstr "A data final da lectura non pode ser anterior á de inicio."
@ -140,26 +148,26 @@ msgstr "Federado"
msgid "Blocked" msgid "Blocked"
msgstr "Bloqueado" msgstr "Bloqueado"
#: bookwyrm/models/fields.py:29 #: bookwyrm/models/fields.py:27
#, python-format #, python-format
msgid "%(value)s is not a valid remote_id" msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s non é un remote_id válido" msgstr "%(value)s non é un remote_id válido"
#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 #: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45
#, python-format #, python-format
msgid "%(value)s is not a valid username" msgid "%(value)s is not a valid username"
msgstr "%(value)s non é un nome de usuaria válido" msgstr "%(value)s non é un nome de usuaria válido"
#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 #: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170
#: bookwyrm/templates/ostatus/error.html:29 #: bookwyrm/templates/ostatus/error.html:29
msgid "username" msgid "username"
msgstr "nome de usuaria" msgstr "nome de usuaria"
#: bookwyrm/models/fields.py:188 #: bookwyrm/models/fields.py:186
msgid "A user with that username already exists." msgid "A user with that username already exists."
msgstr "Xa existe unha usuaria con ese nome." msgstr "Xa existe unha usuaria con ese nome."
#: bookwyrm/models/fields.py:207 #: bookwyrm/models/fields.py:205
#: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11 #: bookwyrm/templates/snippets/privacy_select.html:11
@ -167,7 +175,7 @@ msgstr "Xa existe unha usuaria con ese nome."
msgid "Public" msgid "Public"
msgstr "Público" msgstr "Público"
#: bookwyrm/models/fields.py:208 #: bookwyrm/models/fields.py:206
#: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14 #: bookwyrm/templates/snippets/privacy_select.html:14
@ -175,14 +183,14 @@ msgstr "Público"
msgid "Unlisted" msgid "Unlisted"
msgstr "Non listado" msgstr "Non listado"
#: bookwyrm/models/fields.py:209 #: bookwyrm/models/fields.py:207
#: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11 #: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers" msgid "Followers"
msgstr "Seguidoras" msgstr "Seguidoras"
#: bookwyrm/models/fields.py:210 #: bookwyrm/models/fields.py:208
#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8
#: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy-icons.html:16
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Portugués europeo)" msgstr "Português Europeu (Portugués europeo)"
#: bookwyrm/settings.py:258 #: bookwyrm/settings.py:258
msgid "Swedish (Svenska)" msgid "Svenska (Swedish)"
msgstr "Sueco (Svenska)" msgstr "Sueco (Swedish)"
#: bookwyrm/settings.py:259 #: bookwyrm/settings.py:259
msgid "简体中文 (Simplified Chinese)" msgid "简体中文 (Simplified Chinese)"
@ -369,7 +377,7 @@ msgstr "Admin"
#: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/about/about.html:131
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14
#: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/status/status_options.html:35
#: bookwyrm/templates/snippets/user_options.html:13 #: bookwyrm/templates/snippets/user_options.html:14
msgid "Send direct message" msgid "Send direct message"
msgstr "Enviar mensaxe directa" msgstr "Enviar mensaxe directa"
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
msgstr "Propiedades físicas" msgstr "Propiedades físicas"
#: bookwyrm/templates/book/edit/edit_book_form.html:199 #: bookwyrm/templates/book/edit/edit_book_form.html:199
#: bookwyrm/templates/book/editions/format_filter.html:5 #: bookwyrm/templates/book/editions/format_filter.html:6
msgid "Format:" msgid "Format:"
msgstr "Formato:" msgstr "Formato:"
@ -1055,17 +1063,17 @@ msgstr "Edicións de %(book_title)s"
msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
msgstr "Edicións de <a href=\"%(work_path)s\">%(work_title)s</a>" msgstr "Edicións de <a href=\"%(work_path)s\">%(work_title)s</a>"
#: bookwyrm/templates/book/editions/format_filter.html:8 #: bookwyrm/templates/book/editions/format_filter.html:9
#: bookwyrm/templates/book/editions/language_filter.html:8 #: bookwyrm/templates/book/editions/language_filter.html:9
msgid "Any" msgid "Any"
msgstr "Calquera" msgstr "Calquera"
#: bookwyrm/templates/book/editions/language_filter.html:5 #: bookwyrm/templates/book/editions/language_filter.html:6
#: bookwyrm/templates/preferences/edit_user.html:95 #: bookwyrm/templates/preferences/edit_user.html:95
msgid "Language:" msgid "Language:"
msgstr "Idioma:" msgstr "Idioma:"
#: bookwyrm/templates/book/editions/search_filter.html:5 #: bookwyrm/templates/book/editions/search_filter.html:6
msgid "Search editions" msgid "Search editions"
msgstr "Buscar edicións" msgstr "Buscar edicións"
@ -3574,23 +3582,31 @@ msgstr "Non hai ligazóns dispoñibles para este dominio."
msgid "Back to reports" msgid "Back to reports"
msgstr "Volver a denuncias" msgstr "Volver a denuncias"
#: bookwyrm/templates/settings/reports/report.html:22 #: bookwyrm/templates/settings/reports/report.html:23
msgid "Message reporter"
msgstr "Denunciante"
#: bookwyrm/templates/settings/reports/report.html:27
msgid "Update on your report:"
msgstr "Actualiza a denuncia:"
#: bookwyrm/templates/settings/reports/report.html:35
msgid "Reported statuses" msgid "Reported statuses"
msgstr "Estados dununciados" msgstr "Estados dununciados"
#: bookwyrm/templates/settings/reports/report.html:27 #: bookwyrm/templates/settings/reports/report.html:40
msgid "Status has been deleted" msgid "Status has been deleted"
msgstr "O estado foi eliminado" msgstr "O estado foi eliminado"
#: bookwyrm/templates/settings/reports/report.html:39 #: bookwyrm/templates/settings/reports/report.html:52
msgid "Reported links" msgid "Reported links"
msgstr "Ligazóns denunciadas" msgstr "Ligazóns denunciadas"
#: bookwyrm/templates/settings/reports/report.html:55 #: bookwyrm/templates/settings/reports/report.html:68
msgid "Moderator Comments" msgid "Moderator Comments"
msgstr "Comentarios da moderación" msgstr "Comentarios da moderación"
#: bookwyrm/templates/settings/reports/report.html:73 #: bookwyrm/templates/settings/reports/report.html:89
#: bookwyrm/templates/snippets/create_status.html:28 #: bookwyrm/templates/snippets/create_status.html:28
msgid "Comment" msgid "Comment"
msgstr "Comentario" msgstr "Comentario"
@ -4015,14 +4031,14 @@ msgstr "porcentaxe"
msgid "of %(pages)s pages" msgid "of %(pages)s pages"
msgstr "de %(pages)s páxinas" msgstr "de %(pages)s páxinas"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
#: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:34
#: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:53
#: bookwyrm/templates/snippets/status/layout.html:54 #: bookwyrm/templates/snippets/status/layout.html:54
msgid "Reply" msgid "Reply"
msgstr "Responder" msgstr "Responder"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
msgid "Content" msgid "Content"
msgstr "Contido" msgstr "Contido"
@ -4100,7 +4116,7 @@ msgstr "Filtros aplicados"
msgid "Clear filters" msgid "Clear filters"
msgstr "Limpar filtros" msgstr "Limpar filtros"
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
msgid "Apply filters" msgid "Apply filters"
msgstr "Aplicar filtros" msgstr "Aplicar filtros"

Binary file not shown.

View File

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-28 02:50+0000\n" "POT-Creation-Date: 2022-02-02 20:09+0000\n"
"PO-Revision-Date: 2022-01-28 19:04\n" "PO-Revision-Date: 2022-02-04 21:01\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Italian\n" "Language-Team: Italian\n"
"Language: it\n" "Language: it\n"
@ -17,62 +17,70 @@ msgstr ""
"X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 1553\n" "X-Crowdin-File-ID: 1553\n"
#: bookwyrm/forms.py:365 #: bookwyrm/forms.py:239
msgid "Domain is blocked. Don't try this url again."
msgstr ""
#: bookwyrm/forms.py:241
msgid "Domain already pending. Please try later."
msgstr ""
#: bookwyrm/forms.py:378
msgid "A user with this email already exists." msgid "A user with this email already exists."
msgstr "Esiste già un'utenza con questo indirizzo email." msgstr "Esiste già un'utenza con questo indirizzo email."
#: bookwyrm/forms.py:379 #: bookwyrm/forms.py:392
msgid "One Day" msgid "One Day"
msgstr "Un giorno" msgstr "Un giorno"
#: bookwyrm/forms.py:380 #: bookwyrm/forms.py:393
msgid "One Week" msgid "One Week"
msgstr "Una settimana" msgstr "Una settimana"
#: bookwyrm/forms.py:381 #: bookwyrm/forms.py:394
msgid "One Month" msgid "One Month"
msgstr "Un mese" msgstr "Un mese"
#: bookwyrm/forms.py:382 #: bookwyrm/forms.py:395
msgid "Does Not Expire" msgid "Does Not Expire"
msgstr "Non scade" msgstr "Non scade"
#: bookwyrm/forms.py:386 #: bookwyrm/forms.py:399
#, python-brace-format #, python-brace-format
msgid "{i} uses" msgid "{i} uses"
msgstr "{i} usi" msgstr "{i} usi"
#: bookwyrm/forms.py:387 #: bookwyrm/forms.py:400
msgid "Unlimited" msgid "Unlimited"
msgstr "Illimitato" msgstr "Illimitato"
#: bookwyrm/forms.py:489 #: bookwyrm/forms.py:502
msgid "List Order" msgid "List Order"
msgstr "Ordina Lista" msgstr "Ordina Lista"
#: bookwyrm/forms.py:490 #: bookwyrm/forms.py:503
msgid "Book Title" msgid "Book Title"
msgstr "Titolo del libro" msgstr "Titolo del libro"
#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155
#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/shelf/shelf.html:187
#: bookwyrm/templates/snippets/create_status/review.html:32 #: bookwyrm/templates/snippets/create_status/review.html:32
msgid "Rating" msgid "Rating"
msgstr "Valutazione" msgstr "Valutazione"
#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 #: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177
msgid "Sort By" msgid "Sort By"
msgstr "Ordina per" msgstr "Ordina per"
#: bookwyrm/forms.py:497 #: bookwyrm/forms.py:510
msgid "Ascending" msgid "Ascending"
msgstr "Crescente" msgstr "Crescente"
#: bookwyrm/forms.py:498 #: bookwyrm/forms.py:511
msgid "Descending" msgid "Descending"
msgstr "Decrescente" msgstr "Decrescente"
#: bookwyrm/forms.py:511 #: bookwyrm/forms.py:524
msgid "Reading finish date cannot be before start date." msgid "Reading finish date cannot be before start date."
msgstr "La data di fine lettura non può essere precedente alla data di inizio." msgstr "La data di fine lettura non può essere precedente alla data di inizio."
@ -140,26 +148,26 @@ msgstr "Federato"
msgid "Blocked" msgid "Blocked"
msgstr "Bloccato" msgstr "Bloccato"
#: bookwyrm/models/fields.py:29 #: bookwyrm/models/fields.py:27
#, python-format #, python-format
msgid "%(value)s is not a valid remote_id" msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s non è un Id remoto valido" msgstr "%(value)s non è un Id remoto valido"
#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 #: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45
#, python-format #, python-format
msgid "%(value)s is not a valid username" msgid "%(value)s is not a valid username"
msgstr "%(value)s non è un nome utente valido" msgstr "%(value)s non è un nome utente valido"
#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 #: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170
#: bookwyrm/templates/ostatus/error.html:29 #: bookwyrm/templates/ostatus/error.html:29
msgid "username" msgid "username"
msgstr "nome utente" msgstr "nome utente"
#: bookwyrm/models/fields.py:188 #: bookwyrm/models/fields.py:186
msgid "A user with that username already exists." msgid "A user with that username already exists."
msgstr "Un utente con questo nome utente esiste già." msgstr "Un utente con questo nome utente esiste già."
#: bookwyrm/models/fields.py:207 #: bookwyrm/models/fields.py:205
#: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11 #: bookwyrm/templates/snippets/privacy_select.html:11
@ -167,7 +175,7 @@ msgstr "Un utente con questo nome utente esiste già."
msgid "Public" msgid "Public"
msgstr "Pubblico" msgstr "Pubblico"
#: bookwyrm/models/fields.py:208 #: bookwyrm/models/fields.py:206
#: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14 #: bookwyrm/templates/snippets/privacy_select.html:14
@ -175,14 +183,14 @@ msgstr "Pubblico"
msgid "Unlisted" msgid "Unlisted"
msgstr "Non in lista" msgstr "Non in lista"
#: bookwyrm/models/fields.py:209 #: bookwyrm/models/fields.py:207
#: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11 #: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers" msgid "Followers"
msgstr "Followers" msgstr "Followers"
#: bookwyrm/models/fields.py:210 #: bookwyrm/models/fields.py:208
#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8
#: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy-icons.html:16
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Portoghese europeo)" msgstr "Português Europeu (Portoghese europeo)"
#: bookwyrm/settings.py:258 #: bookwyrm/settings.py:258
msgid "Swedish (Svenska)" msgid "Svenska (Swedish)"
msgstr "Swedish (Svedese)" msgstr "Svenska (Svedese)"
#: bookwyrm/settings.py:259 #: bookwyrm/settings.py:259
msgid "简体中文 (Simplified Chinese)" msgid "简体中文 (Simplified Chinese)"
@ -369,7 +377,7 @@ msgstr "Admin"
#: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/about/about.html:131
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14
#: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/status/status_options.html:35
#: bookwyrm/templates/snippets/user_options.html:13 #: bookwyrm/templates/snippets/user_options.html:14
msgid "Send direct message" msgid "Send direct message"
msgstr "Invia messaggio diretto" msgstr "Invia messaggio diretto"
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
msgstr "Caratteristiche" msgstr "Caratteristiche"
#: bookwyrm/templates/book/edit/edit_book_form.html:199 #: bookwyrm/templates/book/edit/edit_book_form.html:199
#: bookwyrm/templates/book/editions/format_filter.html:5 #: bookwyrm/templates/book/editions/format_filter.html:6
msgid "Format:" msgid "Format:"
msgstr "Formato:" msgstr "Formato:"
@ -1055,17 +1063,17 @@ msgstr "Edizioni di %(book_title)s"
msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
msgstr "Edizioni di <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgstr "Edizioni di <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
#: bookwyrm/templates/book/editions/format_filter.html:8 #: bookwyrm/templates/book/editions/format_filter.html:9
#: bookwyrm/templates/book/editions/language_filter.html:8 #: bookwyrm/templates/book/editions/language_filter.html:9
msgid "Any" msgid "Any"
msgstr "Qualsiasi" msgstr "Qualsiasi"
#: bookwyrm/templates/book/editions/language_filter.html:5 #: bookwyrm/templates/book/editions/language_filter.html:6
#: bookwyrm/templates/preferences/edit_user.html:95 #: bookwyrm/templates/preferences/edit_user.html:95
msgid "Language:" msgid "Language:"
msgstr "Lingua:" msgstr "Lingua:"
#: bookwyrm/templates/book/editions/search_filter.html:5 #: bookwyrm/templates/book/editions/search_filter.html:6
msgid "Search editions" msgid "Search editions"
msgstr "Ricerca edizioni" msgstr "Ricerca edizioni"
@ -3574,23 +3582,31 @@ msgstr "Nessun collegamento disponibile per questo libro."
msgid "Back to reports" msgid "Back to reports"
msgstr "Tornare all'elenco dei report" msgstr "Tornare all'elenco dei report"
#: bookwyrm/templates/settings/reports/report.html:22 #: bookwyrm/templates/settings/reports/report.html:23
msgid "Message reporter"
msgstr "Messaggio segnalato"
#: bookwyrm/templates/settings/reports/report.html:27
msgid "Update on your report:"
msgstr "Aggiornamento sul tuo rapporto:"
#: bookwyrm/templates/settings/reports/report.html:35
msgid "Reported statuses" msgid "Reported statuses"
msgstr "Stati segnalati" msgstr "Stati segnalati"
#: bookwyrm/templates/settings/reports/report.html:27 #: bookwyrm/templates/settings/reports/report.html:40
msgid "Status has been deleted" msgid "Status has been deleted"
msgstr "Lo stato è stato eliminato" msgstr "Lo stato è stato eliminato"
#: bookwyrm/templates/settings/reports/report.html:39 #: bookwyrm/templates/settings/reports/report.html:52
msgid "Reported links" msgid "Reported links"
msgstr "Collegamenti segnalati" msgstr "Collegamenti segnalati"
#: bookwyrm/templates/settings/reports/report.html:55 #: bookwyrm/templates/settings/reports/report.html:68
msgid "Moderator Comments" msgid "Moderator Comments"
msgstr "Commenti del moderatore" msgstr "Commenti del moderatore"
#: bookwyrm/templates/settings/reports/report.html:73 #: bookwyrm/templates/settings/reports/report.html:89
#: bookwyrm/templates/snippets/create_status.html:28 #: bookwyrm/templates/snippets/create_status.html:28
msgid "Comment" msgid "Comment"
msgstr "Commenta" msgstr "Commenta"
@ -4015,14 +4031,14 @@ msgstr "percentuale"
msgid "of %(pages)s pages" msgid "of %(pages)s pages"
msgstr "di %(pages)s pagine" msgstr "di %(pages)s pagine"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
#: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:34
#: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:53
#: bookwyrm/templates/snippets/status/layout.html:54 #: bookwyrm/templates/snippets/status/layout.html:54
msgid "Reply" msgid "Reply"
msgstr "Rispondi" msgstr "Rispondi"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
msgid "Content" msgid "Content"
msgstr "Contenuto" msgstr "Contenuto"
@ -4100,7 +4116,7 @@ msgstr "Filtri applicati"
msgid "Clear filters" msgid "Clear filters"
msgstr "Rimuovi filtri" msgstr "Rimuovi filtri"
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
msgid "Apply filters" msgid "Apply filters"
msgstr "Applica filtri" msgstr "Applica filtri"

Binary file not shown.

View File

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-28 02:50+0000\n" "POT-Creation-Date: 2022-02-02 20:09+0000\n"
"PO-Revision-Date: 2022-01-30 17:27\n" "PO-Revision-Date: 2022-02-04 21:00\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Lithuanian\n" "Language-Team: Lithuanian\n"
"Language: lt\n" "Language: lt\n"
@ -17,62 +17,70 @@ msgstr ""
"X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 1553\n" "X-Crowdin-File-ID: 1553\n"
#: bookwyrm/forms.py:365 #: bookwyrm/forms.py:239
msgid "Domain is blocked. Don't try this url again."
msgstr ""
#: bookwyrm/forms.py:241
msgid "Domain already pending. Please try later."
msgstr ""
#: bookwyrm/forms.py:378
msgid "A user with this email already exists." msgid "A user with this email already exists."
msgstr "Vartotojas su šiuo el. pašto adresu jau yra." msgstr "Vartotojas su šiuo el. pašto adresu jau yra."
#: bookwyrm/forms.py:379 #: bookwyrm/forms.py:392
msgid "One Day" msgid "One Day"
msgstr "Diena" msgstr "Diena"
#: bookwyrm/forms.py:380 #: bookwyrm/forms.py:393
msgid "One Week" msgid "One Week"
msgstr "Savaitė" msgstr "Savaitė"
#: bookwyrm/forms.py:381 #: bookwyrm/forms.py:394
msgid "One Month" msgid "One Month"
msgstr "Mėnuo" msgstr "Mėnuo"
#: bookwyrm/forms.py:382 #: bookwyrm/forms.py:395
msgid "Does Not Expire" msgid "Does Not Expire"
msgstr "Galiojimas nesibaigia" msgstr "Galiojimas nesibaigia"
#: bookwyrm/forms.py:386 #: bookwyrm/forms.py:399
#, python-brace-format #, python-brace-format
msgid "{i} uses" msgid "{i} uses"
msgstr "{i} naudoja" msgstr "{i} naudoja"
#: bookwyrm/forms.py:387 #: bookwyrm/forms.py:400
msgid "Unlimited" msgid "Unlimited"
msgstr "Neribota" msgstr "Neribota"
#: bookwyrm/forms.py:489 #: bookwyrm/forms.py:502
msgid "List Order" msgid "List Order"
msgstr "Kaip pridėta į sąrašą" msgstr "Kaip pridėta į sąrašą"
#: bookwyrm/forms.py:490 #: bookwyrm/forms.py:503
msgid "Book Title" msgid "Book Title"
msgstr "Knygos antraštė" msgstr "Knygos antraštė"
#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155
#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/shelf/shelf.html:187
#: bookwyrm/templates/snippets/create_status/review.html:32 #: bookwyrm/templates/snippets/create_status/review.html:32
msgid "Rating" msgid "Rating"
msgstr "Įvertinimas" msgstr "Įvertinimas"
#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 #: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177
msgid "Sort By" msgid "Sort By"
msgstr "Rūšiuoti pagal" msgstr "Rūšiuoti pagal"
#: bookwyrm/forms.py:497 #: bookwyrm/forms.py:510
msgid "Ascending" msgid "Ascending"
msgstr "Didėjančia tvarka" msgstr "Didėjančia tvarka"
#: bookwyrm/forms.py:498 #: bookwyrm/forms.py:511
msgid "Descending" msgid "Descending"
msgstr "Mažėjančia tvarka" msgstr "Mažėjančia tvarka"
#: bookwyrm/forms.py:511 #: bookwyrm/forms.py:524
msgid "Reading finish date cannot be before start date." msgid "Reading finish date cannot be before start date."
msgstr "Skaitymo pabaigos data negali būti prieš skaitymo pradžios datą." msgstr "Skaitymo pabaigos data negali būti prieš skaitymo pradžios datą."
@ -140,26 +148,26 @@ msgstr "Susijungę"
msgid "Blocked" msgid "Blocked"
msgstr "Užblokuoti" msgstr "Užblokuoti"
#: bookwyrm/models/fields.py:29 #: bookwyrm/models/fields.py:27
#, python-format #, python-format
msgid "%(value)s is not a valid remote_id" msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s yra negaliojantis remote_id" msgstr "%(value)s yra negaliojantis remote_id"
#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 #: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45
#, python-format #, python-format
msgid "%(value)s is not a valid username" msgid "%(value)s is not a valid username"
msgstr "%(value)s yra negaliojantis naudotojo vardas" msgstr "%(value)s yra negaliojantis naudotojo vardas"
#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 #: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170
#: bookwyrm/templates/ostatus/error.html:29 #: bookwyrm/templates/ostatus/error.html:29
msgid "username" msgid "username"
msgstr "naudotojo vardas" msgstr "naudotojo vardas"
#: bookwyrm/models/fields.py:188 #: bookwyrm/models/fields.py:186
msgid "A user with that username already exists." msgid "A user with that username already exists."
msgstr "Toks naudotojo vardas jau egzistuoja." msgstr "Toks naudotojo vardas jau egzistuoja."
#: bookwyrm/models/fields.py:207 #: bookwyrm/models/fields.py:205
#: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11 #: bookwyrm/templates/snippets/privacy_select.html:11
@ -167,7 +175,7 @@ msgstr "Toks naudotojo vardas jau egzistuoja."
msgid "Public" msgid "Public"
msgstr "Viešas" msgstr "Viešas"
#: bookwyrm/models/fields.py:208 #: bookwyrm/models/fields.py:206
#: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14 #: bookwyrm/templates/snippets/privacy_select.html:14
@ -175,14 +183,14 @@ msgstr "Viešas"
msgid "Unlisted" msgid "Unlisted"
msgstr "Slaptas" msgstr "Slaptas"
#: bookwyrm/models/fields.py:209 #: bookwyrm/models/fields.py:207
#: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11 #: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers" msgid "Followers"
msgstr "Sekėjai" msgstr "Sekėjai"
#: bookwyrm/models/fields.py:210 #: bookwyrm/models/fields.py:208
#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8
#: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy-icons.html:16
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Europos portugalų)" msgstr "Português Europeu (Europos portugalų)"
#: bookwyrm/settings.py:258 #: bookwyrm/settings.py:258
msgid "Swedish (Svenska)" msgid "Svenska (Swedish)"
msgstr "Švedų (Swedish)" msgstr "Svenska (Švedų)"
#: bookwyrm/settings.py:259 #: bookwyrm/settings.py:259
msgid "简体中文 (Simplified Chinese)" msgid "简体中文 (Simplified Chinese)"
@ -347,7 +355,7 @@ msgstr "<a href=\"%(book_path)s\"><em>%(title)s</em></a> labiausiai kontroversi
#: bookwyrm/templates/about/about.html:89 #: bookwyrm/templates/about/about.html:89
msgid "Track your reading, talk about books, write reviews, and discover what to read next. Always ad-free, anti-corporate, and community-oriented, BookWyrm is human-scale software, designed to stay small and personal. If you have feature requests, bug reports, or grand dreams, <a href='https://joinbookwyrm.com/get-involved' target='_blank'>reach out</a> and make yourself heard." msgid "Track your reading, talk about books, write reviews, and discover what to read next. Always ad-free, anti-corporate, and community-oriented, BookWyrm is human-scale software, designed to stay small and personal. If you have feature requests, bug reports, or grand dreams, <a href='https://joinbookwyrm.com/get-involved' target='_blank'>reach out</a> and make yourself heard."
msgstr "" msgstr "Sekite savo skaitymus, kalbėkite apie knygas, rašykite atsiliepimus ir atraskite, ką dar perskaityti. „BookWyrm“ tai programinė įranga, kurioje nėra reklamų, biurokratijos. Tai bendruomenei orientuota, nedidelė ir asmeninė įranga, kurią lengva plėsti. Jei norite papildomų funkcijų, įgyvendinti savo svajones ar tiesiog pranešti apie klaidą, <a href='https://joinbookwyrm.com/get-involved' target='_blank'>susisiekite</a> ir jus išgirsime."
#: bookwyrm/templates/about/about.html:96 #: bookwyrm/templates/about/about.html:96
msgid "Meet your admins" msgid "Meet your admins"
@ -356,7 +364,7 @@ msgstr "Šio serverio administratoriai"
#: bookwyrm/templates/about/about.html:99 #: bookwyrm/templates/about/about.html:99
#, python-format #, python-format
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior." msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior."
msgstr "" msgstr "Svetainės %(site_name)s moderatoriai ir administratoriai nuolat atnaujina puslapį, laikosi <a href=\"coc_path\">elgsenos susitarimo</a> ir atsako, kai naudotojai praneša apie brukalą ir blogą elgesį."
#: bookwyrm/templates/about/about.html:113 #: bookwyrm/templates/about/about.html:113
msgid "Moderator" msgid "Moderator"
@ -369,7 +377,7 @@ msgstr "Administravimas"
#: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/about/about.html:131
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14
#: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/status/status_options.html:35
#: bookwyrm/templates/snippets/user_options.html:13 #: bookwyrm/templates/snippets/user_options.html:14
msgid "Send direct message" msgid "Send direct message"
msgstr "Siųsti asmeninę žinutę" msgstr "Siųsti asmeninę žinutę"
@ -1027,7 +1035,7 @@ msgid "Physical Properties"
msgstr "Fizinės savybės" msgstr "Fizinės savybės"
#: bookwyrm/templates/book/edit/edit_book_form.html:199 #: bookwyrm/templates/book/edit/edit_book_form.html:199
#: bookwyrm/templates/book/editions/format_filter.html:5 #: bookwyrm/templates/book/editions/format_filter.html:6
msgid "Format:" msgid "Format:"
msgstr "Formatas:" msgstr "Formatas:"
@ -1065,17 +1073,17 @@ msgstr "Knygos %(book_title)s leidimai"
msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
msgstr "<a href=\"%(work_path)s\">\"%(work_title)s\"</a> leidimai" msgstr "<a href=\"%(work_path)s\">\"%(work_title)s\"</a> leidimai"
#: bookwyrm/templates/book/editions/format_filter.html:8 #: bookwyrm/templates/book/editions/format_filter.html:9
#: bookwyrm/templates/book/editions/language_filter.html:8 #: bookwyrm/templates/book/editions/language_filter.html:9
msgid "Any" msgid "Any"
msgstr "Bet kas" msgstr "Bet kas"
#: bookwyrm/templates/book/editions/language_filter.html:5 #: bookwyrm/templates/book/editions/language_filter.html:6
#: bookwyrm/templates/preferences/edit_user.html:95 #: bookwyrm/templates/preferences/edit_user.html:95
msgid "Language:" msgid "Language:"
msgstr "Kalba:" msgstr "Kalba:"
#: bookwyrm/templates/book/editions/search_filter.html:5 #: bookwyrm/templates/book/editions/search_filter.html:6
msgid "Search editions" msgid "Search editions"
msgstr "Paieškos leidimai" msgstr "Paieškos leidimai"
@ -2919,7 +2927,7 @@ msgstr "Trinate tai, kas perskaityta ir %(count)s susietų progreso naujinių."
#: bookwyrm/templates/readthrough/readthrough_modal.html:8 #: bookwyrm/templates/readthrough/readthrough_modal.html:8
#, python-format #, python-format
msgid "Update read dates for \"<em>%(title)s</em>\"" msgid "Update read dates for \"<em>%(title)s</em>\""
msgstr "" msgstr "Atnaujinkite knygos „<em>%(title)s</em>“ skaitymo datas"
#: bookwyrm/templates/readthrough/readthrough_form.html:10 #: bookwyrm/templates/readthrough/readthrough_form.html:10
#: bookwyrm/templates/readthrough/readthrough_modal.html:31 #: bookwyrm/templates/readthrough/readthrough_modal.html:31
@ -2970,7 +2978,7 @@ msgstr "Ištrinti šias skaitymo datas"
#: bookwyrm/templates/readthrough/readthrough_modal.html:12 #: bookwyrm/templates/readthrough/readthrough_modal.html:12
#, python-format #, python-format
msgid "Add read dates for \"<em>%(title)s</em>\"" msgid "Add read dates for \"<em>%(title)s</em>\""
msgstr "" msgstr "Pridėkite knygos „<em>%(title)s</em>“ skaitymo datas"
#: bookwyrm/templates/report.html:5 #: bookwyrm/templates/report.html:5
#: bookwyrm/templates/snippets/report_button.html:13 #: bookwyrm/templates/snippets/report_button.html:13
@ -3154,10 +3162,10 @@ msgstr[3] "%(display_count)s atvirų ataskaitų"
#, python-format #, python-format
msgid "%(display_count)s domain needs review" msgid "%(display_count)s domain needs review"
msgid_plural "%(display_count)s domains need review" msgid_plural "%(display_count)s domains need review"
msgstr[0] "" msgstr[0] "%(display_count)s domeną reikia peržiūrėti"
msgstr[1] "" msgstr[1] "%(display_count)s domenus reikia peržiūrėti"
msgstr[2] "" msgstr[2] "%(display_count)s domenus reikia peržiūrėti"
msgstr[3] "" msgstr[3] "%(display_count)s domenus reikia peržiūrėti"
#: bookwyrm/templates/settings/dashboard/dashboard.html:65 #: bookwyrm/templates/settings/dashboard/dashboard.html:65
#, python-format #, python-format
@ -3569,11 +3577,11 @@ msgstr "Puslapio nustatymai"
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5
#, python-format #, python-format
msgid "Set display name for %(url)s" msgid "Set display name for %(url)s"
msgstr "" msgstr "Nurodykite pavadinimą puslapiui %(url)s"
#: bookwyrm/templates/settings/link_domains/link_domains.html:11 #: bookwyrm/templates/settings/link_domains/link_domains.html:11
msgid "Link domains must be approved before they are shown on book pages. Please make sure that the domains are not hosting spam, malicious code, or deceptive links before approving." msgid "Link domains must be approved before they are shown on book pages. Please make sure that the domains are not hosting spam, malicious code, or deceptive links before approving."
msgstr "" msgstr "Prieš parodant susietus domenus knygų puslapiuose, juos reikia patvirtinti. Užtikrinkite, kad domenai nenukreipia į brukalo ar kenkėjiškas svetaines ir tai nėra apgaulingos nuorodos."
#: bookwyrm/templates/settings/link_domains/link_domains.html:45 #: bookwyrm/templates/settings/link_domains/link_domains.html:45
msgid "Set display name" msgid "Set display name"
@ -3597,29 +3605,37 @@ msgstr "Šiuo metu užblokuotų domenų nėra"
#: bookwyrm/templates/settings/link_domains/link_table.html:39 #: bookwyrm/templates/settings/link_domains/link_table.html:39
msgid "No links available for this domain." msgid "No links available for this domain."
msgstr "" msgstr "Šiam domenui nuorodų nėra."
#: bookwyrm/templates/settings/reports/report.html:11 #: bookwyrm/templates/settings/reports/report.html:11
msgid "Back to reports" msgid "Back to reports"
msgstr "Atgal į pranešimus" msgstr "Atgal į pranešimus"
#: bookwyrm/templates/settings/reports/report.html:22 #: bookwyrm/templates/settings/reports/report.html:23
msgid "Message reporter"
msgstr "Žinučių pranešėjas"
#: bookwyrm/templates/settings/reports/report.html:27
msgid "Update on your report:"
msgstr "Naujausia informacija apie jūsų pranešimą:"
#: bookwyrm/templates/settings/reports/report.html:35
msgid "Reported statuses" msgid "Reported statuses"
msgstr "Praneštos būsenos" msgstr "Praneštos būsenos"
#: bookwyrm/templates/settings/reports/report.html:27 #: bookwyrm/templates/settings/reports/report.html:40
msgid "Status has been deleted" msgid "Status has been deleted"
msgstr "Būsena ištrinta" msgstr "Būsena ištrinta"
#: bookwyrm/templates/settings/reports/report.html:39 #: bookwyrm/templates/settings/reports/report.html:52
msgid "Reported links" msgid "Reported links"
msgstr "Raportuotos nuorodos" msgstr "Raportuotos nuorodos"
#: bookwyrm/templates/settings/reports/report.html:55 #: bookwyrm/templates/settings/reports/report.html:68
msgid "Moderator Comments" msgid "Moderator Comments"
msgstr "Moderatoriaus komentarai" msgstr "Moderatoriaus komentarai"
#: bookwyrm/templates/settings/reports/report.html:73 #: bookwyrm/templates/settings/reports/report.html:89
#: bookwyrm/templates/snippets/create_status.html:28 #: bookwyrm/templates/snippets/create_status.html:28
msgid "Comment" msgid "Comment"
msgstr "Komentuoti" msgstr "Komentuoti"
@ -3627,17 +3643,17 @@ msgstr "Komentuoti"
#: bookwyrm/templates/settings/reports/report_header.html:6 #: bookwyrm/templates/settings/reports/report_header.html:6
#, python-format #, python-format
msgid "Report #%(report_id)s: Status posted by @%(username)s" msgid "Report #%(report_id)s: Status posted by @%(username)s"
msgstr "" msgstr "Pranešimas #%(report_id)s: publikavo @%(username)s"
#: bookwyrm/templates/settings/reports/report_header.html:12 #: bookwyrm/templates/settings/reports/report_header.html:12
#, python-format #, python-format
msgid "Report #%(report_id)s: Link added by @%(username)s" msgid "Report #%(report_id)s: Link added by @%(username)s"
msgstr "" msgstr "Pranešimas #%(report_id)s: nuorodą pridėjo @%(username)s"
#: bookwyrm/templates/settings/reports/report_header.html:18 #: bookwyrm/templates/settings/reports/report_header.html:18
#, python-format #, python-format
msgid "Report #%(report_id)s: User @%(username)s" msgid "Report #%(report_id)s: User @%(username)s"
msgstr "" msgstr "Pranešimas #%(report_id)s: naudotojas @%(username)s"
#: bookwyrm/templates/settings/reports/report_links_table.html:17 #: bookwyrm/templates/settings/reports/report_links_table.html:17
msgid "Block domain" msgid "Block domain"
@ -3650,7 +3666,7 @@ msgstr "Užrašų nepateikta"
#: bookwyrm/templates/settings/reports/report_preview.html:24 #: bookwyrm/templates/settings/reports/report_preview.html:24
#, python-format #, python-format
msgid "Reported by <a href=\"%(path)s\">@%(username)s</a>" msgid "Reported by <a href=\"%(path)s\">@%(username)s</a>"
msgstr "" msgstr "Pranešė <a href=\"%(path)s\">@%(username)s</a>"
#: bookwyrm/templates/settings/reports/report_preview.html:34 #: bookwyrm/templates/settings/reports/report_preview.html:34
msgid "Re-open" msgid "Re-open"
@ -4048,14 +4064,14 @@ msgstr "procentai"
msgid "of %(pages)s pages" msgid "of %(pages)s pages"
msgstr "iš %(pages)s psl." msgstr "iš %(pages)s psl."
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
#: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:34
#: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:53
#: bookwyrm/templates/snippets/status/layout.html:54 #: bookwyrm/templates/snippets/status/layout.html:54
msgid "Reply" msgid "Reply"
msgstr "Atsakyti" msgstr "Atsakyti"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
msgid "Content" msgid "Content"
msgstr "Turinys" msgstr "Turinys"
@ -4133,7 +4149,7 @@ msgstr "Taikyti filtrai"
msgid "Clear filters" msgid "Clear filters"
msgstr "Valyti filtrus" msgstr "Valyti filtrus"
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
msgid "Apply filters" msgid "Apply filters"
msgstr "Taikyti filtrus" msgstr "Taikyti filtrus"
@ -4210,15 +4226,15 @@ msgstr[3] "įvertinta <em><a href=\"%(path)s\">%(title)s</a></em>: %(display_rat
#, python-format #, python-format
msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s"
msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s"
msgstr[0] "" msgstr[0] "Knygos „%(book_title)s“ apžvalga (%(display_rating)s žvaigždutė): %(review_title)s"
msgstr[1] "" msgstr[1] "Knygos „%(book_title)s“ apžvalga (%(display_rating)s žvaigždutės): %(review_title)s"
msgstr[2] "" msgstr[2] "Knygos „%(book_title)s“ apžvalga (%(display_rating)s žvaigždučių): %(review_title)s"
msgstr[3] "" msgstr[3] "Knygos „%(book_title)s“ apžvalga (%(display_rating)s žvaigždutės): %(review_title)s"
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12
#, python-format #, python-format
msgid "Review of \"%(book_title)s\": %(review_title)s" msgid "Review of \"%(book_title)s\": %(review_title)s"
msgstr "" msgstr "Knygos „%(book_title)s“ apžvalga: %(review_title)s"
#: bookwyrm/templates/snippets/goal_form.html:4 #: bookwyrm/templates/snippets/goal_form.html:4
#, python-format #, python-format
@ -4327,12 +4343,12 @@ msgstr "Registruotis"
#: bookwyrm/templates/snippets/report_modal.html:8 #: bookwyrm/templates/snippets/report_modal.html:8
#, python-format #, python-format
msgid "Report @%(username)s's status" msgid "Report @%(username)s's status"
msgstr "" msgstr "Pranešti apie @%(username)s būseną"
#: bookwyrm/templates/snippets/report_modal.html:10 #: bookwyrm/templates/snippets/report_modal.html:10
#, python-format #, python-format
msgid "Report %(domain)s link" msgid "Report %(domain)s link"
msgstr "" msgstr "Pranešti apie %(domain)s nuorodą"
#: bookwyrm/templates/snippets/report_modal.html:12 #: bookwyrm/templates/snippets/report_modal.html:12
#, python-format #, python-format
@ -4346,7 +4362,7 @@ msgstr "Šis pranešimas bus nusiųstas peržiūrėti %(site_name)s puslapio mod
#: bookwyrm/templates/snippets/report_modal.html:36 #: bookwyrm/templates/snippets/report_modal.html:36
msgid "Links from this domain will be removed until your report has been reviewed." msgid "Links from this domain will be removed until your report has been reviewed."
msgstr "" msgstr "Kol neperžiūrėsime jūsų pranešimo, nuoroda iš šio domeno bus pašalinta."
#: bookwyrm/templates/snippets/report_modal.html:41 #: bookwyrm/templates/snippets/report_modal.html:41
msgid "More info about this report:" msgid "More info about this report:"
@ -4420,7 +4436,7 @@ msgstr "redaguota %(date)s"
#: bookwyrm/templates/snippets/status/headers/comment.html:8 #: bookwyrm/templates/snippets/status/headers/comment.html:8
#, python-format #, python-format
msgid "commented on <a href=\"%(book_path)s\">%(book)s</a> by <a href=\"%(author_path)s\">%(author_name)s</a>" msgid "commented on <a href=\"%(book_path)s\">%(book)s</a> by <a href=\"%(author_path)s\">%(author_name)s</a>"
msgstr "" msgstr "pakomentavo autoriaus <a href=\"%(author_path)s\">%(author_name)s</a> knygą <a href=\"%(book_path)s\">%(book)s</a>"
#: bookwyrm/templates/snippets/status/headers/comment.html:15 #: bookwyrm/templates/snippets/status/headers/comment.html:15
#, python-format #, python-format
@ -4435,7 +4451,7 @@ msgstr "atsakė į <a href=\"%(user_path)s\">%(username)s</a> <a href=\"%(status
#: bookwyrm/templates/snippets/status/headers/quotation.html:8 #: bookwyrm/templates/snippets/status/headers/quotation.html:8
#, python-format #, python-format
msgid "quoted <a href=\"%(book_path)s\">%(book)s</a> by <a href=\"%(author_path)s\">%(author_name)s</a>" msgid "quoted <a href=\"%(book_path)s\">%(book)s</a> by <a href=\"%(author_path)s\">%(author_name)s</a>"
msgstr "" msgstr "pacitavo <a href=\"%(author_path)s\">%(author_name)s</a> knygą <a href=\"%(book_path)s\">%(book)s</a>"
#: bookwyrm/templates/snippets/status/headers/quotation.html:15 #: bookwyrm/templates/snippets/status/headers/quotation.html:15
#, python-format #, python-format
@ -4450,7 +4466,7 @@ msgstr "įvertino <a href=\"%(book_path)s\">%(book)s</a>:"
#: bookwyrm/templates/snippets/status/headers/read.html:10 #: bookwyrm/templates/snippets/status/headers/read.html:10
#, python-format #, python-format
msgid "finished reading <a href=\"%(book_path)s\">%(book)s</a> by <a href=\"%(author_path)s\">%(author_name)s</a>" msgid "finished reading <a href=\"%(book_path)s\">%(book)s</a> by <a href=\"%(author_path)s\">%(author_name)s</a>"
msgstr "pabaigė skaityti <a href=\"%(author_path)s\">%(author_name)s</a> autoriaus knygą <a href=\"%(book_path)s\">%(book)s</a>" msgstr "pabaigė skaityti <a href=\"%(author_path)s\">%(author_name)s</a> knygą <a href=\"%(book_path)s\">%(book)s</a>"
#: bookwyrm/templates/snippets/status/headers/read.html:17 #: bookwyrm/templates/snippets/status/headers/read.html:17
#, python-format #, python-format
@ -4460,7 +4476,7 @@ msgstr "baigė skaityti <a href=\"%(book_path)s\">%(book)s</a>"
#: bookwyrm/templates/snippets/status/headers/reading.html:10 #: bookwyrm/templates/snippets/status/headers/reading.html:10
#, python-format #, python-format
msgid "started reading <a href=\"%(book_path)s\">%(book)s</a> by <a href=\"%(author_path)s\">%(author_name)s</a>" msgid "started reading <a href=\"%(book_path)s\">%(book)s</a> by <a href=\"%(author_path)s\">%(author_name)s</a>"
msgstr "pradėjo skaityti <a href=\"%(author_path)s\">%(author_name)s</a> autoriaus knygą <a href=\"%(book_path)s\">%(book)s</a>" msgstr "pradėjo skaityti <a href=\"%(author_path)s\">%(author_name)s</a> knygą <a href=\"%(book_path)s\">%(book)s</a>"
#: bookwyrm/templates/snippets/status/headers/reading.html:17 #: bookwyrm/templates/snippets/status/headers/reading.html:17
#, python-format #, python-format
@ -4480,12 +4496,12 @@ msgstr "apžvelgė <a href=\"%(book_path)s\">%(book)s</a>"
#: bookwyrm/templates/snippets/status/headers/to_read.html:10 #: bookwyrm/templates/snippets/status/headers/to_read.html:10
#, python-format #, python-format
msgid "wants to read <a href=\"%(book_path)s\">%(book)s</a> by <a href=\"%(author_path)s\">%(author_name)s</a>" msgid "wants to read <a href=\"%(book_path)s\">%(book)s</a> by <a href=\"%(author_path)s\">%(author_name)s</a>"
msgstr "" msgstr "nori perskaityti <a href=\"%(author_path)s\">%(author_name)s</a> knygą <a href=\"%(book_path)s\">%(book)s</a>"
#: bookwyrm/templates/snippets/status/headers/to_read.html:17 #: bookwyrm/templates/snippets/status/headers/to_read.html:17
#, python-format #, python-format
msgid "wants to read <a href=\"%(book_path)s\">%(book)s</a>" msgid "wants to read <a href=\"%(book_path)s\">%(book)s</a>"
msgstr "" msgstr "nori perskaityti <a href=\"%(book_path)s\">%(book)s</a>"
#: bookwyrm/templates/snippets/status/layout.html:24 #: bookwyrm/templates/snippets/status/layout.html:24
#: bookwyrm/templates/snippets/status/status_options.html:17 #: bookwyrm/templates/snippets/status/status_options.html:17
@ -4714,8 +4730,8 @@ msgstr "Būsenos atnaujinimai iš {obj.display_name}"
#, python-format #, python-format
msgid "Load %(count)d unread status" msgid "Load %(count)d unread status"
msgid_plural "Load %(count)d unread statuses" msgid_plural "Load %(count)d unread statuses"
msgstr[0] "" msgstr[0] "Įkelti %(count)d neperskaitytą statusą"
msgstr[1] "" msgstr[1] "Įkelti %(count)d neperskaitytus statusus"
msgstr[2] "" msgstr[2] "Įkelti %(count)d neperskaitytą statusą"
msgstr[3] "" msgstr[3] "Įkelti %(count)d neperskaitytą statusą"

Binary file not shown.

View File

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-28 02:50+0000\n" "POT-Creation-Date: 2022-02-02 20:09+0000\n"
"PO-Revision-Date: 2022-01-28 04:03\n" "PO-Revision-Date: 2022-02-04 21:00\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Norwegian\n" "Language-Team: Norwegian\n"
"Language: no\n" "Language: no\n"
@ -17,62 +17,70 @@ msgstr ""
"X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 1553\n" "X-Crowdin-File-ID: 1553\n"
#: bookwyrm/forms.py:365 #: bookwyrm/forms.py:239
msgid "Domain is blocked. Don't try this url again."
msgstr ""
#: bookwyrm/forms.py:241
msgid "Domain already pending. Please try later."
msgstr ""
#: bookwyrm/forms.py:378
msgid "A user with this email already exists." msgid "A user with this email already exists."
msgstr "Den e-postadressen er allerede registrert." msgstr "Den e-postadressen er allerede registrert."
#: bookwyrm/forms.py:379 #: bookwyrm/forms.py:392
msgid "One Day" msgid "One Day"
msgstr "Én dag" msgstr "Én dag"
#: bookwyrm/forms.py:380 #: bookwyrm/forms.py:393
msgid "One Week" msgid "One Week"
msgstr "Én uke" msgstr "Én uke"
#: bookwyrm/forms.py:381 #: bookwyrm/forms.py:394
msgid "One Month" msgid "One Month"
msgstr "Én måned" msgstr "Én måned"
#: bookwyrm/forms.py:382 #: bookwyrm/forms.py:395
msgid "Does Not Expire" msgid "Does Not Expire"
msgstr "Uendelig" msgstr "Uendelig"
#: bookwyrm/forms.py:386 #: bookwyrm/forms.py:399
#, python-brace-format #, python-brace-format
msgid "{i} uses" msgid "{i} uses"
msgstr "{i} ganger" msgstr "{i} ganger"
#: bookwyrm/forms.py:387 #: bookwyrm/forms.py:400
msgid "Unlimited" msgid "Unlimited"
msgstr "Ubegrenset" msgstr "Ubegrenset"
#: bookwyrm/forms.py:489 #: bookwyrm/forms.py:502
msgid "List Order" msgid "List Order"
msgstr "Liste rekkefølge" msgstr "Liste rekkefølge"
#: bookwyrm/forms.py:490 #: bookwyrm/forms.py:503
msgid "Book Title" msgid "Book Title"
msgstr "Boktittel" msgstr "Boktittel"
#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155
#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/shelf/shelf.html:187
#: bookwyrm/templates/snippets/create_status/review.html:32 #: bookwyrm/templates/snippets/create_status/review.html:32
msgid "Rating" msgid "Rating"
msgstr "Vurdering" msgstr "Vurdering"
#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 #: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177
msgid "Sort By" msgid "Sort By"
msgstr "Sorter etter" msgstr "Sorter etter"
#: bookwyrm/forms.py:497 #: bookwyrm/forms.py:510
msgid "Ascending" msgid "Ascending"
msgstr "Stigende" msgstr "Stigende"
#: bookwyrm/forms.py:498 #: bookwyrm/forms.py:511
msgid "Descending" msgid "Descending"
msgstr "Synkende" msgstr "Synkende"
#: bookwyrm/forms.py:511 #: bookwyrm/forms.py:524
msgid "Reading finish date cannot be before start date." msgid "Reading finish date cannot be before start date."
msgstr "Sluttdato kan ikke være før startdato." msgstr "Sluttdato kan ikke være før startdato."
@ -140,26 +148,26 @@ msgstr "Føderert"
msgid "Blocked" msgid "Blocked"
msgstr "Blokkert" msgstr "Blokkert"
#: bookwyrm/models/fields.py:29 #: bookwyrm/models/fields.py:27
#, python-format #, python-format
msgid "%(value)s is not a valid remote_id" msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s er en ugyldig remote_id" msgstr "%(value)s er en ugyldig remote_id"
#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 #: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45
#, python-format #, python-format
msgid "%(value)s is not a valid username" msgid "%(value)s is not a valid username"
msgstr "%(value)s er et ugyldig brukernavn" msgstr "%(value)s er et ugyldig brukernavn"
#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 #: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170
#: bookwyrm/templates/ostatus/error.html:29 #: bookwyrm/templates/ostatus/error.html:29
msgid "username" msgid "username"
msgstr "brukernavn" msgstr "brukernavn"
#: bookwyrm/models/fields.py:188 #: bookwyrm/models/fields.py:186
msgid "A user with that username already exists." msgid "A user with that username already exists."
msgstr "En bruker med det brukernavnet eksisterer allerede." msgstr "En bruker med det brukernavnet eksisterer allerede."
#: bookwyrm/models/fields.py:207 #: bookwyrm/models/fields.py:205
#: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11 #: bookwyrm/templates/snippets/privacy_select.html:11
@ -167,7 +175,7 @@ msgstr "En bruker med det brukernavnet eksisterer allerede."
msgid "Public" msgid "Public"
msgstr "Offentlig" msgstr "Offentlig"
#: bookwyrm/models/fields.py:208 #: bookwyrm/models/fields.py:206
#: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14 #: bookwyrm/templates/snippets/privacy_select.html:14
@ -175,14 +183,14 @@ msgstr "Offentlig"
msgid "Unlisted" msgid "Unlisted"
msgstr "Uoppført" msgstr "Uoppført"
#: bookwyrm/models/fields.py:209 #: bookwyrm/models/fields.py:207
#: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11 #: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers" msgid "Followers"
msgstr "Følgere" msgstr "Følgere"
#: bookwyrm/models/fields.py:210 #: bookwyrm/models/fields.py:208
#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8
#: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy-icons.html:16
@ -193,20 +201,20 @@ msgstr "Privat"
#: bookwyrm/models/link.py:51 #: bookwyrm/models/link.py:51
msgid "Free" msgid "Free"
msgstr "" msgstr "Gratis"
#: bookwyrm/models/link.py:52 #: bookwyrm/models/link.py:52
msgid "Purchasable" msgid "Purchasable"
msgstr "" msgstr "Tilgjengelig for kjøp"
#: bookwyrm/models/link.py:53 #: bookwyrm/models/link.py:53
msgid "Available for loan" msgid "Available for loan"
msgstr "" msgstr "Tilgjengelig for utlån"
#: bookwyrm/models/link.py:70 #: bookwyrm/models/link.py:70
#: bookwyrm/templates/settings/link_domains/link_domains.html:23 #: bookwyrm/templates/settings/link_domains/link_domains.html:23
msgid "Approved" msgid "Approved"
msgstr "" msgstr "Godkjent"
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272
msgid "Reviews" msgid "Reviews"
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Europeisk Portugisisk)" msgstr "Português Europeu (Europeisk Portugisisk)"
#: bookwyrm/settings.py:258 #: bookwyrm/settings.py:258
msgid "Swedish (Svenska)" msgid "Svenska (Swedish)"
msgstr "" msgstr "Svenska (Svensk)"
#: bookwyrm/settings.py:259 #: bookwyrm/settings.py:259
msgid "简体中文 (Simplified Chinese)" msgid "简体中文 (Simplified Chinese)"
@ -328,7 +336,7 @@ msgstr "Velkommen til %(site_name)s!"
#: bookwyrm/templates/about/about.html:23 #: bookwyrm/templates/about/about.html:23
#, python-format #, python-format
msgid "%(site_name)s is part of <em>BookWyrm</em>, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the <a href=\"https://joinbookwyrm.com/instances/\" target=\"_blank\">BookWyrm network</a>, this community is unique." msgid "%(site_name)s is part of <em>BookWyrm</em>, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the <a href=\"https://joinbookwyrm.com/instances/\" target=\"_blank\">BookWyrm network</a>, this community is unique."
msgstr "" msgstr "%(site_name)s er en del av <em>BookWyrm</em>, et nettverk av selvstendige, selvstyrte samfunn for lesere. Du kan kommunisere sømløst med brukere hvor som helst i <a href=\"https://joinbookwyrm.com/instances/\" target=\"_blank\">BookWyrm nettverket</a>, men hvert samfunn er unikt."
#: bookwyrm/templates/about/about.html:40 #: bookwyrm/templates/about/about.html:40
#, python-format #, python-format
@ -356,7 +364,7 @@ msgstr "Møt administratorene"
#: bookwyrm/templates/about/about.html:99 #: bookwyrm/templates/about/about.html:99
#, python-format #, python-format
msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior." msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the <a href=\"coc_path\">code of conduct</a>, and respond when users report spam and bad behavior."
msgstr "" msgstr "%(site_name)s sine moderatorer og administratorer holder nettsida oppe og tilgjengelig, håndhever <a href=\"coc_path\">adferdskoden</a>, og svarer på brukernes rapporterer om spam og dårlig atferd."
#: bookwyrm/templates/about/about.html:113 #: bookwyrm/templates/about/about.html:113
msgid "Moderator" msgid "Moderator"
@ -369,7 +377,7 @@ msgstr "Admin"
#: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/about/about.html:131
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14
#: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/status/status_options.html:35
#: bookwyrm/templates/snippets/user_options.html:13 #: bookwyrm/templates/snippets/user_options.html:14
msgid "Send direct message" msgid "Send direct message"
msgstr "Send direktemelding" msgstr "Send direktemelding"
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
msgstr "Fysiske egenskaper" msgstr "Fysiske egenskaper"
#: bookwyrm/templates/book/edit/edit_book_form.html:199 #: bookwyrm/templates/book/edit/edit_book_form.html:199
#: bookwyrm/templates/book/editions/format_filter.html:5 #: bookwyrm/templates/book/editions/format_filter.html:6
msgid "Format:" msgid "Format:"
msgstr "Format:" msgstr "Format:"
@ -1055,67 +1063,69 @@ msgstr "Utgaver av %(book_title)s"
msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
msgstr "Utgaver av <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgstr "Utgaver av <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
#: bookwyrm/templates/book/editions/format_filter.html:8 #: bookwyrm/templates/book/editions/format_filter.html:9
#: bookwyrm/templates/book/editions/language_filter.html:8 #: bookwyrm/templates/book/editions/language_filter.html:9
msgid "Any" msgid "Any"
msgstr "Alle" msgstr "Alle"
#: bookwyrm/templates/book/editions/language_filter.html:5 #: bookwyrm/templates/book/editions/language_filter.html:6
#: bookwyrm/templates/preferences/edit_user.html:95 #: bookwyrm/templates/preferences/edit_user.html:95
msgid "Language:" msgid "Language:"
msgstr "Språk:" msgstr "Språk:"
#: bookwyrm/templates/book/editions/search_filter.html:5 #: bookwyrm/templates/book/editions/search_filter.html:6
msgid "Search editions" msgid "Search editions"
msgstr "Søk etter utgaver" msgstr "Søk etter utgaver"
#: bookwyrm/templates/book/file_links/add_link_modal.html:6 #: bookwyrm/templates/book/file_links/add_link_modal.html:6
msgid "Add file link" msgid "Add file link"
msgstr "" msgstr "Legg til fillenke"
#: bookwyrm/templates/book/file_links/add_link_modal.html:19 #: bookwyrm/templates/book/file_links/add_link_modal.html:19
msgid "Links from unknown domains will need to be approved by a moderator before they are added." msgid "Links from unknown domains will need to be approved by a moderator before they are added."
msgstr "" msgstr "Lenker fra ukjente domener må være godkjent av en moderator før de kan legges til."
#: bookwyrm/templates/book/file_links/add_link_modal.html:24 #: bookwyrm/templates/book/file_links/add_link_modal.html:24
msgid "URL:" msgid "URL:"
msgstr "" msgstr "URL:"
#: bookwyrm/templates/book/file_links/add_link_modal.html:29 #: bookwyrm/templates/book/file_links/add_link_modal.html:29
msgid "File type:" msgid "File type:"
msgstr "" msgstr "Filtype:"
#: bookwyrm/templates/book/file_links/add_link_modal.html:48 #: bookwyrm/templates/book/file_links/add_link_modal.html:48
msgid "Availability:" msgid "Availability:"
msgstr "" msgstr "Tilgjengelighet:"
#: bookwyrm/templates/book/file_links/edit_links.html:5 #: bookwyrm/templates/book/file_links/edit_links.html:5
#: bookwyrm/templates/book/file_links/edit_links.html:22 #: bookwyrm/templates/book/file_links/edit_links.html:22
#: bookwyrm/templates/book/file_links/links.html:53 #: bookwyrm/templates/book/file_links/links.html:53
msgid "Edit links" msgid "Edit links"
msgstr "" msgstr "Rediger lenker"
#: bookwyrm/templates/book/file_links/edit_links.html:11 #: bookwyrm/templates/book/file_links/edit_links.html:11
#, python-format #, python-format
msgid "\n" msgid "\n"
" Links for \"<em>%(title)s</em>\"\n" " Links for \"<em>%(title)s</em>\"\n"
" " " "
msgstr "" msgstr "\n"
" Lenker for \"<em>%(title)s</em>\"\n"
" "
#: bookwyrm/templates/book/file_links/edit_links.html:32 #: bookwyrm/templates/book/file_links/edit_links.html:32
#: bookwyrm/templates/settings/link_domains/link_table.html:6 #: bookwyrm/templates/settings/link_domains/link_table.html:6
msgid "URL" msgid "URL"
msgstr "" msgstr "URL"
#: bookwyrm/templates/book/file_links/edit_links.html:33 #: bookwyrm/templates/book/file_links/edit_links.html:33
#: bookwyrm/templates/settings/link_domains/link_table.html:7 #: bookwyrm/templates/settings/link_domains/link_table.html:7
msgid "Added by" msgid "Added by"
msgstr "" msgstr "Lagt til av"
#: bookwyrm/templates/book/file_links/edit_links.html:34 #: bookwyrm/templates/book/file_links/edit_links.html:34
#: bookwyrm/templates/settings/link_domains/link_table.html:8 #: bookwyrm/templates/settings/link_domains/link_table.html:8
msgid "Filetype" msgid "Filetype"
msgstr "" msgstr "Filtype"
#: bookwyrm/templates/book/file_links/edit_links.html:35 #: bookwyrm/templates/book/file_links/edit_links.html:35
#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25
@ -1143,41 +1153,41 @@ msgstr "Handlinger"
#: bookwyrm/templates/book/file_links/edit_links.html:53 #: bookwyrm/templates/book/file_links/edit_links.html:53
#: bookwyrm/templates/book/file_links/verification_modal.html:25 #: bookwyrm/templates/book/file_links/verification_modal.html:25
msgid "Report spam" msgid "Report spam"
msgstr "" msgstr "Rapporter spam"
#: bookwyrm/templates/book/file_links/edit_links.html:97 #: bookwyrm/templates/book/file_links/edit_links.html:97
msgid "No links available for this book." msgid "No links available for this book."
msgstr "" msgstr "Ingen lenker er tilgjengelig for denne boka."
#: bookwyrm/templates/book/file_links/edit_links.html:108 #: bookwyrm/templates/book/file_links/edit_links.html:108
#: bookwyrm/templates/book/file_links/links.html:18 #: bookwyrm/templates/book/file_links/links.html:18
msgid "Add link to file" msgid "Add link to file"
msgstr "" msgstr "Legg til lenke til fil"
#: bookwyrm/templates/book/file_links/file_link_page.html:6 #: bookwyrm/templates/book/file_links/file_link_page.html:6
msgid "File Links" msgid "File Links"
msgstr "" msgstr "Fillenker"
#: bookwyrm/templates/book/file_links/links.html:9 #: bookwyrm/templates/book/file_links/links.html:9
msgid "Get a copy" msgid "Get a copy"
msgstr "" msgstr "Få en kopi"
#: bookwyrm/templates/book/file_links/links.html:47 #: bookwyrm/templates/book/file_links/links.html:47
msgid "No links available" msgid "No links available"
msgstr "" msgstr "Ingen tilgjengelige lenker"
#: bookwyrm/templates/book/file_links/verification_modal.html:5 #: bookwyrm/templates/book/file_links/verification_modal.html:5
msgid "Leaving BookWyrm" msgid "Leaving BookWyrm"
msgstr "" msgstr "Forlater BookWyrm"
#: bookwyrm/templates/book/file_links/verification_modal.html:11 #: bookwyrm/templates/book/file_links/verification_modal.html:11
#, python-format #, python-format
msgid "This link is taking you to: <code>%(link_url)s</code>.<br> Is that where you'd like to go?" msgid "This link is taking you to: <code>%(link_url)s</code>.<br> Is that where you'd like to go?"
msgstr "" msgstr "Denne lenka sender deg til: <code>%(link_url)s</code>.<br> Er det dit du vil dra?"
#: bookwyrm/templates/book/file_links/verification_modal.html:20 #: bookwyrm/templates/book/file_links/verification_modal.html:20
msgid "Continue" msgid "Continue"
msgstr "" msgstr "Fortsett"
#: bookwyrm/templates/book/publisher_info.html:23 #: bookwyrm/templates/book/publisher_info.html:23
#, python-format #, python-format
@ -2045,7 +2055,7 @@ msgstr "Avslå"
#: bookwyrm/templates/import/tooltip.html:6 #: bookwyrm/templates/import/tooltip.html:6
msgid "You can download your Goodreads data from the <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"noopener noreferrer\">Import/Export page</a> of your Goodreads account." msgid "You can download your Goodreads data from the <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"noopener noreferrer\">Import/Export page</a> of your Goodreads account."
msgstr "" msgstr "Du kan laste ned Goodread-dataene dine fra <a href=\"https://www.goodreads.com/review/import\" target=\"_blank\" rel=\"noopener noreferrer\">Import/Export sida</a> på Goodread-kontoen din."
#: bookwyrm/templates/import/troubleshoot.html:7 #: bookwyrm/templates/import/troubleshoot.html:7
msgid "Failed items" msgid "Failed items"
@ -2248,12 +2258,12 @@ msgstr "BookWyrms kildekode er fritt tilgjengelig. Du kan bidra eller rapportere
#: bookwyrm/templates/lists/add_item_modal.html:8 #: bookwyrm/templates/lists/add_item_modal.html:8
#, python-format #, python-format
msgid "Add \"<em>%(title)s</em>\" to this list" msgid "Add \"<em>%(title)s</em>\" to this list"
msgstr "" msgstr "Legg til \"<em>%(title)s</em>\" på denne lista"
#: bookwyrm/templates/lists/add_item_modal.html:12 #: bookwyrm/templates/lists/add_item_modal.html:12
#, python-format #, python-format
msgid "Suggest \"<em>%(title)s</em>\" for this list" msgid "Suggest \"<em>%(title)s</em>\" for this list"
msgstr "" msgstr "Foreslå \"<em>%(title)s</em>\" for denne lista"
#: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:249 #: bookwyrm/templates/lists/list.html:249
@ -2295,7 +2305,7 @@ msgstr "Nå er du klar!"
#: bookwyrm/templates/lists/list.html:83 #: bookwyrm/templates/lists/list.html:83
#, python-format #, python-format
msgid "<a href=\"%(user_path)s\">%(username)s</a> says:" msgid "<a href=\"%(user_path)s\">%(username)s</a> says:"
msgstr "" msgstr "<a href=\"%(user_path)s\">%(username)s</a> sier:"
#: bookwyrm/templates/lists/curate.html:55 #: bookwyrm/templates/lists/curate.html:55
msgid "Suggested by" msgid "Suggested by"
@ -2393,7 +2403,7 @@ msgstr "Notater:"
#: bookwyrm/templates/lists/item_notes_field.html:19 #: bookwyrm/templates/lists/item_notes_field.html:19
msgid "An optional note that will be displayed with the book." msgid "An optional note that will be displayed with the book."
msgstr "" msgstr "En valgfri merknad som vil vises sammen med boken."
#: bookwyrm/templates/lists/list.html:36 #: bookwyrm/templates/lists/list.html:36
msgid "You successfully suggested a book for this list!" msgid "You successfully suggested a book for this list!"
@ -2405,11 +2415,11 @@ msgstr "Du har nå lagt til ei bok i denne lista!"
#: bookwyrm/templates/lists/list.html:96 #: bookwyrm/templates/lists/list.html:96
msgid "Edit notes" msgid "Edit notes"
msgstr "" msgstr "Rediger merknader"
#: bookwyrm/templates/lists/list.html:111 #: bookwyrm/templates/lists/list.html:111
msgid "Add notes" msgid "Add notes"
msgstr "" msgstr "Legg til merknader"
#: bookwyrm/templates/lists/list.html:123 #: bookwyrm/templates/lists/list.html:123
#, python-format #, python-format
@ -3129,8 +3139,8 @@ msgstr[1] "%(display_count)s åpne rapporter"
#, python-format #, python-format
msgid "%(display_count)s domain needs review" msgid "%(display_count)s domain needs review"
msgid_plural "%(display_count)s domains need review" msgid_plural "%(display_count)s domains need review"
msgstr[0] "" msgstr[0] "%(display_count)s domene må godkjennes"
msgstr[1] "" msgstr[1] "%(display_count)s domener må godkjennes"
#: bookwyrm/templates/settings/dashboard/dashboard.html:65 #: bookwyrm/templates/settings/dashboard/dashboard.html:65
#, python-format #, python-format
@ -3523,7 +3533,7 @@ msgstr "Rapporter"
#: bookwyrm/templates/settings/link_domains/link_domains.html:5 #: bookwyrm/templates/settings/link_domains/link_domains.html:5
#: bookwyrm/templates/settings/link_domains/link_domains.html:7 #: bookwyrm/templates/settings/link_domains/link_domains.html:7
msgid "Link Domains" msgid "Link Domains"
msgstr "" msgstr "Lenkedomener"
#: bookwyrm/templates/settings/layout.html:72 #: bookwyrm/templates/settings/layout.html:72
msgid "Instance Settings" msgid "Instance Settings"
@ -3538,57 +3548,65 @@ msgstr "Sideinnstillinger"
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5 #: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5
#, python-format #, python-format
msgid "Set display name for %(url)s" msgid "Set display name for %(url)s"
msgstr "" msgstr "Angi visningsnavn for %(url)s"
#: bookwyrm/templates/settings/link_domains/link_domains.html:11 #: bookwyrm/templates/settings/link_domains/link_domains.html:11
msgid "Link domains must be approved before they are shown on book pages. Please make sure that the domains are not hosting spam, malicious code, or deceptive links before approving." msgid "Link domains must be approved before they are shown on book pages. Please make sure that the domains are not hosting spam, malicious code, or deceptive links before approving."
msgstr "" msgstr "Nettstedsdomener må godkjennes før de kan vises på boksidene. Vennligst sjekk at domenene ikke fører spam, ondsinnet kode eller lurelenker før du godkjenner."
#: bookwyrm/templates/settings/link_domains/link_domains.html:45 #: bookwyrm/templates/settings/link_domains/link_domains.html:45
msgid "Set display name" msgid "Set display name"
msgstr "" msgstr "Angi visningsnavn"
#: bookwyrm/templates/settings/link_domains/link_domains.html:53 #: bookwyrm/templates/settings/link_domains/link_domains.html:53
msgid "View links" msgid "View links"
msgstr "" msgstr "Vis lenker"
#: bookwyrm/templates/settings/link_domains/link_domains.html:96 #: bookwyrm/templates/settings/link_domains/link_domains.html:96
msgid "No domains currently approved" msgid "No domains currently approved"
msgstr "" msgstr "Ingen domener er hittil godkjent"
#: bookwyrm/templates/settings/link_domains/link_domains.html:98 #: bookwyrm/templates/settings/link_domains/link_domains.html:98
msgid "No domains currently pending" msgid "No domains currently pending"
msgstr "" msgstr "Ingen domener venter for tiden på godkjenning"
#: bookwyrm/templates/settings/link_domains/link_domains.html:100 #: bookwyrm/templates/settings/link_domains/link_domains.html:100
msgid "No domains currently blocked" msgid "No domains currently blocked"
msgstr "" msgstr "Ingen domener er for øyeblikket blokkert"
#: bookwyrm/templates/settings/link_domains/link_table.html:39 #: bookwyrm/templates/settings/link_domains/link_table.html:39
msgid "No links available for this domain." msgid "No links available for this domain."
msgstr "" msgstr "Ingen lenker tilgjengelig til dette domenet."
#: bookwyrm/templates/settings/reports/report.html:11 #: bookwyrm/templates/settings/reports/report.html:11
msgid "Back to reports" msgid "Back to reports"
msgstr "Tilbake til rapporter" msgstr "Tilbake til rapporter"
#: bookwyrm/templates/settings/reports/report.html:22 #: bookwyrm/templates/settings/reports/report.html:23
msgid "Message reporter"
msgstr "Send melding til rapportør"
#: bookwyrm/templates/settings/reports/report.html:27
msgid "Update on your report:"
msgstr "Oppdatering på din rapport:"
#: bookwyrm/templates/settings/reports/report.html:35
msgid "Reported statuses" msgid "Reported statuses"
msgstr "Rapporterte statuser" msgstr "Rapporterte statuser"
#: bookwyrm/templates/settings/reports/report.html:27 #: bookwyrm/templates/settings/reports/report.html:40
msgid "Status has been deleted" msgid "Status has been deleted"
msgstr "Status er slettet" msgstr "Status er slettet"
#: bookwyrm/templates/settings/reports/report.html:39 #: bookwyrm/templates/settings/reports/report.html:52
msgid "Reported links" msgid "Reported links"
msgstr "" msgstr "Rapporterte lenker"
#: bookwyrm/templates/settings/reports/report.html:55 #: bookwyrm/templates/settings/reports/report.html:68
msgid "Moderator Comments" msgid "Moderator Comments"
msgstr "Moderatorkommentarer" msgstr "Moderatorkommentarer"
#: bookwyrm/templates/settings/reports/report.html:73 #: bookwyrm/templates/settings/reports/report.html:89
#: bookwyrm/templates/snippets/create_status.html:28 #: bookwyrm/templates/snippets/create_status.html:28
msgid "Comment" msgid "Comment"
msgstr "Kommentar" msgstr "Kommentar"
@ -3596,21 +3614,21 @@ msgstr "Kommentar"
#: bookwyrm/templates/settings/reports/report_header.html:6 #: bookwyrm/templates/settings/reports/report_header.html:6
#, python-format #, python-format
msgid "Report #%(report_id)s: Status posted by @%(username)s" msgid "Report #%(report_id)s: Status posted by @%(username)s"
msgstr "" msgstr "Rapportér #%(report_id)s: Status postet av @%(username)s"
#: bookwyrm/templates/settings/reports/report_header.html:12 #: bookwyrm/templates/settings/reports/report_header.html:12
#, python-format #, python-format
msgid "Report #%(report_id)s: Link added by @%(username)s" msgid "Report #%(report_id)s: Link added by @%(username)s"
msgstr "" msgstr "Rapportér #%(report_id)s: Lenke lagt til av @%(username)s"
#: bookwyrm/templates/settings/reports/report_header.html:18 #: bookwyrm/templates/settings/reports/report_header.html:18
#, python-format #, python-format
msgid "Report #%(report_id)s: User @%(username)s" msgid "Report #%(report_id)s: User @%(username)s"
msgstr "" msgstr "Rapportér #%(report_id)s: bruker @%(username)s"
#: bookwyrm/templates/settings/reports/report_links_table.html:17 #: bookwyrm/templates/settings/reports/report_links_table.html:17
msgid "Block domain" msgid "Block domain"
msgstr "" msgstr "Blokkér domene"
#: bookwyrm/templates/settings/reports/report_preview.html:17 #: bookwyrm/templates/settings/reports/report_preview.html:17
msgid "No notes provided" msgid "No notes provided"
@ -3619,7 +3637,7 @@ msgstr "Ingen merknader finnes"
#: bookwyrm/templates/settings/reports/report_preview.html:24 #: bookwyrm/templates/settings/reports/report_preview.html:24
#, python-format #, python-format
msgid "Reported by <a href=\"%(path)s\">@%(username)s</a>" msgid "Reported by <a href=\"%(path)s\">@%(username)s</a>"
msgstr "" msgstr "Rapportert av <a href=\"%(path)s\">%(username)s</a>"
#: bookwyrm/templates/settings/reports/report_preview.html:34 #: bookwyrm/templates/settings/reports/report_preview.html:34
msgid "Re-open" msgid "Re-open"
@ -3865,7 +3883,7 @@ msgstr "Slettet for godt"
#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 #: bookwyrm/templates/settings/users/user_moderation_actions.html:8
msgid "User Actions" msgid "User Actions"
msgstr "" msgstr "Brukerhandlinger"
#: bookwyrm/templates/settings/users/user_moderation_actions.html:21 #: bookwyrm/templates/settings/users/user_moderation_actions.html:21
msgid "Suspend user" msgid "Suspend user"
@ -4013,14 +4031,14 @@ msgstr "prosent"
msgid "of %(pages)s pages" msgid "of %(pages)s pages"
msgstr "av %(pages)s sider" msgstr "av %(pages)s sider"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
#: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:34
#: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:53
#: bookwyrm/templates/snippets/status/layout.html:54 #: bookwyrm/templates/snippets/status/layout.html:54
msgid "Reply" msgid "Reply"
msgstr "Svar" msgstr "Svar"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
msgid "Content" msgid "Content"
msgstr "Innhold" msgstr "Innhold"
@ -4098,7 +4116,7 @@ msgstr "Filtrert visning"
msgid "Clear filters" msgid "Clear filters"
msgstr "Tøm filtre" msgstr "Tøm filtre"
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
msgid "Apply filters" msgid "Apply filters"
msgstr "Bruk filtre" msgstr "Bruk filtre"
@ -4167,13 +4185,13 @@ msgstr[1] "vurderte <em><a href=\"%(path)s\">%(title)s</a></em> til: %(display_r
#, python-format #, python-format
msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s"
msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s"
msgstr[0] "" msgstr[0] "Anmeldelse av \"%(book_title)s\" (%(display_rating)s stjerne): %(review_title)s"
msgstr[1] "" msgstr[1] "Anmeldelse av \"%(book_title)s\" (%(display_rating)s stjerner): %(review_title)s"
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12
#, python-format #, python-format
msgid "Review of \"%(book_title)s\": %(review_title)s" msgid "Review of \"%(book_title)s\": %(review_title)s"
msgstr "" msgstr "Anmeldelse av \"%(book_title)s\": %(review_title)s"
#: bookwyrm/templates/snippets/goal_form.html:4 #: bookwyrm/templates/snippets/goal_form.html:4
#, python-format #, python-format
@ -4282,12 +4300,12 @@ msgstr "Registrer deg"
#: bookwyrm/templates/snippets/report_modal.html:8 #: bookwyrm/templates/snippets/report_modal.html:8
#, python-format #, python-format
msgid "Report @%(username)s's status" msgid "Report @%(username)s's status"
msgstr "" msgstr "Rapportér @%(username)s sin status"
#: bookwyrm/templates/snippets/report_modal.html:10 #: bookwyrm/templates/snippets/report_modal.html:10
#, python-format #, python-format
msgid "Report %(domain)s link" msgid "Report %(domain)s link"
msgstr "" msgstr "Rapportér %(domain)s lenke"
#: bookwyrm/templates/snippets/report_modal.html:12 #: bookwyrm/templates/snippets/report_modal.html:12
#, python-format #, python-format
@ -4301,7 +4319,7 @@ msgstr "Denne rapporten vil bli sendt til %(site_name)s sine moderatorer for gje
#: bookwyrm/templates/snippets/report_modal.html:36 #: bookwyrm/templates/snippets/report_modal.html:36
msgid "Links from this domain will be removed until your report has been reviewed." msgid "Links from this domain will be removed until your report has been reviewed."
msgstr "" msgstr "Lenker fra dette domenet vil fjernes fram til rapporten din er ferbigbehandlet."
#: bookwyrm/templates/snippets/report_modal.html:41 #: bookwyrm/templates/snippets/report_modal.html:41
msgid "More info about this report:" msgid "More info about this report:"
@ -4665,6 +4683,6 @@ msgstr "Statusoppdateringer fra {obj.display_name}"
#, python-format #, python-format
msgid "Load %(count)d unread status" msgid "Load %(count)d unread status"
msgid_plural "Load %(count)d unread statuses" msgid_plural "Load %(count)d unread statuses"
msgstr[0] "" msgstr[0] "Last inn %(count)d ulest status"
msgstr[1] "" msgstr[1] "Last inn %(count)d uleste statuser"

Binary file not shown.

View File

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-28 02:50+0000\n" "POT-Creation-Date: 2022-02-02 20:09+0000\n"
"PO-Revision-Date: 2022-01-29 14:28\n" "PO-Revision-Date: 2022-02-04 22:13\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Portuguese, Brazilian\n" "Language-Team: Portuguese, Brazilian\n"
"Language: pt\n" "Language: pt\n"
@ -17,62 +17,70 @@ msgstr ""
"X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 1553\n" "X-Crowdin-File-ID: 1553\n"
#: bookwyrm/forms.py:365 #: bookwyrm/forms.py:239
msgid "Domain is blocked. Don't try this url again."
msgstr "Domínio bloqueado. Não tente adicionar este endereço novamente."
#: bookwyrm/forms.py:241
msgid "Domain already pending. Please try later."
msgstr "Domínio já pendente. Por favor, tente novamente mais tarde."
#: bookwyrm/forms.py:378
msgid "A user with this email already exists." msgid "A user with this email already exists."
msgstr "Já existe um usuário com este endereço de e-mail." msgstr "Já existe um usuário com este endereço de e-mail."
#: bookwyrm/forms.py:379 #: bookwyrm/forms.py:392
msgid "One Day" msgid "One Day"
msgstr "Um dia" msgstr "Um dia"
#: bookwyrm/forms.py:380 #: bookwyrm/forms.py:393
msgid "One Week" msgid "One Week"
msgstr "Uma semana" msgstr "Uma semana"
#: bookwyrm/forms.py:381 #: bookwyrm/forms.py:394
msgid "One Month" msgid "One Month"
msgstr "Um mês" msgstr "Um mês"
#: bookwyrm/forms.py:382 #: bookwyrm/forms.py:395
msgid "Does Not Expire" msgid "Does Not Expire"
msgstr "Não expira" msgstr "Não expira"
#: bookwyrm/forms.py:386 #: bookwyrm/forms.py:399
#, python-brace-format #, python-brace-format
msgid "{i} uses" msgid "{i} uses"
msgstr "{i} usos" msgstr "{i} usos"
#: bookwyrm/forms.py:387 #: bookwyrm/forms.py:400
msgid "Unlimited" msgid "Unlimited"
msgstr "Ilimitado" msgstr "Ilimitado"
#: bookwyrm/forms.py:489 #: bookwyrm/forms.py:502
msgid "List Order" msgid "List Order"
msgstr "Ordem de inserção" msgstr "Ordem de inserção"
#: bookwyrm/forms.py:490 #: bookwyrm/forms.py:503
msgid "Book Title" msgid "Book Title"
msgstr "Título do livro" msgstr "Título do livro"
#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155
#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/shelf/shelf.html:187
#: bookwyrm/templates/snippets/create_status/review.html:32 #: bookwyrm/templates/snippets/create_status/review.html:32
msgid "Rating" msgid "Rating"
msgstr "Avaliação" msgstr "Avaliação"
#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 #: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177
msgid "Sort By" msgid "Sort By"
msgstr "Organizar por" msgstr "Organizar por"
#: bookwyrm/forms.py:497 #: bookwyrm/forms.py:510
msgid "Ascending" msgid "Ascending"
msgstr "Crescente" msgstr "Crescente"
#: bookwyrm/forms.py:498 #: bookwyrm/forms.py:511
msgid "Descending" msgid "Descending"
msgstr "Decrescente" msgstr "Decrescente"
#: bookwyrm/forms.py:511 #: bookwyrm/forms.py:524
msgid "Reading finish date cannot be before start date." msgid "Reading finish date cannot be before start date."
msgstr "A data de término da leitura não pode ser anterior a de início." msgstr "A data de término da leitura não pode ser anterior a de início."
@ -140,26 +148,26 @@ msgstr "Federado"
msgid "Blocked" msgid "Blocked"
msgstr "Bloqueado" msgstr "Bloqueado"
#: bookwyrm/models/fields.py:29 #: bookwyrm/models/fields.py:27
#, python-format #, python-format
msgid "%(value)s is not a valid remote_id" msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s não é um remote_id válido" msgstr "%(value)s não é um remote_id válido"
#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 #: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45
#, python-format #, python-format
msgid "%(value)s is not a valid username" msgid "%(value)s is not a valid username"
msgstr "%(value)s não é um nome de usuário válido" msgstr "%(value)s não é um nome de usuário válido"
#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 #: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170
#: bookwyrm/templates/ostatus/error.html:29 #: bookwyrm/templates/ostatus/error.html:29
msgid "username" msgid "username"
msgstr "nome de usuário" msgstr "nome de usuário"
#: bookwyrm/models/fields.py:188 #: bookwyrm/models/fields.py:186
msgid "A user with that username already exists." msgid "A user with that username already exists."
msgstr "Já existe um usuário com este nome." msgstr "Já existe um usuário com este nome."
#: bookwyrm/models/fields.py:207 #: bookwyrm/models/fields.py:205
#: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11 #: bookwyrm/templates/snippets/privacy_select.html:11
@ -167,7 +175,7 @@ msgstr "Já existe um usuário com este nome."
msgid "Public" msgid "Public"
msgstr "Público" msgstr "Público"
#: bookwyrm/models/fields.py:208 #: bookwyrm/models/fields.py:206
#: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14 #: bookwyrm/templates/snippets/privacy_select.html:14
@ -175,14 +183,14 @@ msgstr "Público"
msgid "Unlisted" msgid "Unlisted"
msgstr "Não listado" msgstr "Não listado"
#: bookwyrm/models/fields.py:209 #: bookwyrm/models/fields.py:207
#: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11 #: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers" msgid "Followers"
msgstr "Seguidores" msgstr "Seguidores"
#: bookwyrm/models/fields.py:210 #: bookwyrm/models/fields.py:208
#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8
#: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy-icons.html:16
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Português Europeu)" msgstr "Português Europeu (Português Europeu)"
#: bookwyrm/settings.py:258 #: bookwyrm/settings.py:258
msgid "Swedish (Svenska)" msgid "Svenska (Swedish)"
msgstr "Sueco (Svenska)" msgstr "Svenska (Sueco)"
#: bookwyrm/settings.py:259 #: bookwyrm/settings.py:259
msgid "简体中文 (Simplified Chinese)" msgid "简体中文 (Simplified Chinese)"
@ -369,7 +377,7 @@ msgstr "Admin"
#: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/about/about.html:131
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14
#: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/status/status_options.html:35
#: bookwyrm/templates/snippets/user_options.html:13 #: bookwyrm/templates/snippets/user_options.html:14
msgid "Send direct message" msgid "Send direct message"
msgstr "Enviar mensagem direta" msgstr "Enviar mensagem direta"
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
msgstr "Propriedades físicas" msgstr "Propriedades físicas"
#: bookwyrm/templates/book/edit/edit_book_form.html:199 #: bookwyrm/templates/book/edit/edit_book_form.html:199
#: bookwyrm/templates/book/editions/format_filter.html:5 #: bookwyrm/templates/book/editions/format_filter.html:6
msgid "Format:" msgid "Format:"
msgstr "Formato:" msgstr "Formato:"
@ -1055,17 +1063,17 @@ msgstr "Edições de %(book_title)s"
msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
msgstr "Edições de <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgstr "Edições de <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
#: bookwyrm/templates/book/editions/format_filter.html:8 #: bookwyrm/templates/book/editions/format_filter.html:9
#: bookwyrm/templates/book/editions/language_filter.html:8 #: bookwyrm/templates/book/editions/language_filter.html:9
msgid "Any" msgid "Any"
msgstr "Qualquer um" msgstr "Qualquer um"
#: bookwyrm/templates/book/editions/language_filter.html:5 #: bookwyrm/templates/book/editions/language_filter.html:6
#: bookwyrm/templates/preferences/edit_user.html:95 #: bookwyrm/templates/preferences/edit_user.html:95
msgid "Language:" msgid "Language:"
msgstr "Idioma:" msgstr "Idioma:"
#: bookwyrm/templates/book/editions/search_filter.html:5 #: bookwyrm/templates/book/editions/search_filter.html:6
msgid "Search editions" msgid "Search editions"
msgstr "Procurar edições" msgstr "Procurar edições"
@ -3574,23 +3582,31 @@ msgstr "Nenhum link disponível para este domínio."
msgid "Back to reports" msgid "Back to reports"
msgstr "Voltar às denúncias" msgstr "Voltar às denúncias"
#: bookwyrm/templates/settings/reports/report.html:22 #: bookwyrm/templates/settings/reports/report.html:23
msgid "Message reporter"
msgstr "Enviar mensagem a quem denunciou"
#: bookwyrm/templates/settings/reports/report.html:27
msgid "Update on your report:"
msgstr "Atualização sobre sua denúncia:"
#: bookwyrm/templates/settings/reports/report.html:35
msgid "Reported statuses" msgid "Reported statuses"
msgstr "Publicações denunciadas" msgstr "Publicações denunciadas"
#: bookwyrm/templates/settings/reports/report.html:27 #: bookwyrm/templates/settings/reports/report.html:40
msgid "Status has been deleted" msgid "Status has been deleted"
msgstr "A publicação foi excluída" msgstr "A publicação foi excluída"
#: bookwyrm/templates/settings/reports/report.html:39 #: bookwyrm/templates/settings/reports/report.html:52
msgid "Reported links" msgid "Reported links"
msgstr "Links denunciados" msgstr "Links denunciados"
#: bookwyrm/templates/settings/reports/report.html:55 #: bookwyrm/templates/settings/reports/report.html:68
msgid "Moderator Comments" msgid "Moderator Comments"
msgstr "Comentários da moderação" msgstr "Comentários da moderação"
#: bookwyrm/templates/settings/reports/report.html:73 #: bookwyrm/templates/settings/reports/report.html:89
#: bookwyrm/templates/snippets/create_status.html:28 #: bookwyrm/templates/snippets/create_status.html:28
msgid "Comment" msgid "Comment"
msgstr "Comentar" msgstr "Comentar"
@ -4015,14 +4031,14 @@ msgstr "porcentagem"
msgid "of %(pages)s pages" msgid "of %(pages)s pages"
msgstr "de %(pages)s páginas" msgstr "de %(pages)s páginas"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
#: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:34
#: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:53
#: bookwyrm/templates/snippets/status/layout.html:54 #: bookwyrm/templates/snippets/status/layout.html:54
msgid "Reply" msgid "Reply"
msgstr "Responder" msgstr "Responder"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
msgid "Content" msgid "Content"
msgstr "Conteúdo" msgstr "Conteúdo"
@ -4100,7 +4116,7 @@ msgstr "Filtros aplicados"
msgid "Clear filters" msgid "Clear filters"
msgstr "Limpar filtros" msgstr "Limpar filtros"
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
msgid "Apply filters" msgid "Apply filters"
msgstr "Aplicar filtros" msgstr "Aplicar filtros"

Binary file not shown.

View File

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-28 02:50+0000\n" "POT-Creation-Date: 2022-02-02 20:09+0000\n"
"PO-Revision-Date: 2022-01-28 04:03\n" "PO-Revision-Date: 2022-02-04 21:00\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Portuguese\n" "Language-Team: Portuguese\n"
"Language: pt\n" "Language: pt\n"
@ -17,62 +17,70 @@ msgstr ""
"X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 1553\n" "X-Crowdin-File-ID: 1553\n"
#: bookwyrm/forms.py:365 #: bookwyrm/forms.py:239
msgid "Domain is blocked. Don't try this url again."
msgstr ""
#: bookwyrm/forms.py:241
msgid "Domain already pending. Please try later."
msgstr ""
#: bookwyrm/forms.py:378
msgid "A user with this email already exists." msgid "A user with this email already exists."
msgstr "Já existe um utilizador com este E-Mail." msgstr "Já existe um utilizador com este E-Mail."
#: bookwyrm/forms.py:379 #: bookwyrm/forms.py:392
msgid "One Day" msgid "One Day"
msgstr "Um Dia" msgstr "Um Dia"
#: bookwyrm/forms.py:380 #: bookwyrm/forms.py:393
msgid "One Week" msgid "One Week"
msgstr "Uma Semana" msgstr "Uma Semana"
#: bookwyrm/forms.py:381 #: bookwyrm/forms.py:394
msgid "One Month" msgid "One Month"
msgstr "Um Mês" msgstr "Um Mês"
#: bookwyrm/forms.py:382 #: bookwyrm/forms.py:395
msgid "Does Not Expire" msgid "Does Not Expire"
msgstr "Não Expira" msgstr "Não Expira"
#: bookwyrm/forms.py:386 #: bookwyrm/forms.py:399
#, python-brace-format #, python-brace-format
msgid "{i} uses" msgid "{i} uses"
msgstr "{i} utilizações" msgstr "{i} utilizações"
#: bookwyrm/forms.py:387 #: bookwyrm/forms.py:400
msgid "Unlimited" msgid "Unlimited"
msgstr "Ilimitado" msgstr "Ilimitado"
#: bookwyrm/forms.py:489 #: bookwyrm/forms.py:502
msgid "List Order" msgid "List Order"
msgstr "Ordem da Lista" msgstr "Ordem da Lista"
#: bookwyrm/forms.py:490 #: bookwyrm/forms.py:503
msgid "Book Title" msgid "Book Title"
msgstr "Título do livro" msgstr "Título do livro"
#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155
#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/shelf/shelf.html:187
#: bookwyrm/templates/snippets/create_status/review.html:32 #: bookwyrm/templates/snippets/create_status/review.html:32
msgid "Rating" msgid "Rating"
msgstr "Classificação" msgstr "Classificação"
#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 #: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177
msgid "Sort By" msgid "Sort By"
msgstr "Ordenar Por" msgstr "Ordenar Por"
#: bookwyrm/forms.py:497 #: bookwyrm/forms.py:510
msgid "Ascending" msgid "Ascending"
msgstr "Ascendente" msgstr "Ascendente"
#: bookwyrm/forms.py:498 #: bookwyrm/forms.py:511
msgid "Descending" msgid "Descending"
msgstr "Descendente" msgstr "Descendente"
#: bookwyrm/forms.py:511 #: bookwyrm/forms.py:524
msgid "Reading finish date cannot be before start date." msgid "Reading finish date cannot be before start date."
msgstr "" msgstr ""
@ -140,26 +148,26 @@ msgstr "Federado"
msgid "Blocked" msgid "Blocked"
msgstr "Bloqueado" msgstr "Bloqueado"
#: bookwyrm/models/fields.py:29 #: bookwyrm/models/fields.py:27
#, python-format #, python-format
msgid "%(value)s is not a valid remote_id" msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s não é um remote_id válido" msgstr "%(value)s não é um remote_id válido"
#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 #: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45
#, python-format #, python-format
msgid "%(value)s is not a valid username" msgid "%(value)s is not a valid username"
msgstr "%(value)s não é um nome de utilizador válido" msgstr "%(value)s não é um nome de utilizador válido"
#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 #: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170
#: bookwyrm/templates/ostatus/error.html:29 #: bookwyrm/templates/ostatus/error.html:29
msgid "username" msgid "username"
msgstr "nome de utilizador" msgstr "nome de utilizador"
#: bookwyrm/models/fields.py:188 #: bookwyrm/models/fields.py:186
msgid "A user with that username already exists." msgid "A user with that username already exists."
msgstr "Um utilizador com o mesmo nome de utilizador já existe." msgstr "Um utilizador com o mesmo nome de utilizador já existe."
#: bookwyrm/models/fields.py:207 #: bookwyrm/models/fields.py:205
#: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11 #: bookwyrm/templates/snippets/privacy_select.html:11
@ -167,7 +175,7 @@ msgstr "Um utilizador com o mesmo nome de utilizador já existe."
msgid "Public" msgid "Public"
msgstr "Público" msgstr "Público"
#: bookwyrm/models/fields.py:208 #: bookwyrm/models/fields.py:206
#: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14 #: bookwyrm/templates/snippets/privacy_select.html:14
@ -175,14 +183,14 @@ msgstr "Público"
msgid "Unlisted" msgid "Unlisted"
msgstr "Não listado" msgstr "Não listado"
#: bookwyrm/models/fields.py:209 #: bookwyrm/models/fields.py:207
#: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11 #: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers" msgid "Followers"
msgstr "Seguidores" msgstr "Seguidores"
#: bookwyrm/models/fields.py:210 #: bookwyrm/models/fields.py:208
#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8
#: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy-icons.html:16
@ -283,7 +291,7 @@ msgid "Português Europeu (European Portuguese)"
msgstr "Português (Português Europeu)" msgstr "Português (Português Europeu)"
#: bookwyrm/settings.py:258 #: bookwyrm/settings.py:258
msgid "Swedish (Svenska)" msgid "Svenska (Swedish)"
msgstr "" msgstr ""
#: bookwyrm/settings.py:259 #: bookwyrm/settings.py:259
@ -369,7 +377,7 @@ msgstr "Admin"
#: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/about/about.html:131
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14
#: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/status/status_options.html:35
#: bookwyrm/templates/snippets/user_options.html:13 #: bookwyrm/templates/snippets/user_options.html:14
msgid "Send direct message" msgid "Send direct message"
msgstr "Enviar mensagem direta" msgstr "Enviar mensagem direta"
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
msgstr "Propriedades físicas" msgstr "Propriedades físicas"
#: bookwyrm/templates/book/edit/edit_book_form.html:199 #: bookwyrm/templates/book/edit/edit_book_form.html:199
#: bookwyrm/templates/book/editions/format_filter.html:5 #: bookwyrm/templates/book/editions/format_filter.html:6
msgid "Format:" msgid "Format:"
msgstr "Formato:" msgstr "Formato:"
@ -1055,17 +1063,17 @@ msgstr "Edições de %(book_title)s"
msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
msgstr "Edições de <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgstr "Edições de <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
#: bookwyrm/templates/book/editions/format_filter.html:8 #: bookwyrm/templates/book/editions/format_filter.html:9
#: bookwyrm/templates/book/editions/language_filter.html:8 #: bookwyrm/templates/book/editions/language_filter.html:9
msgid "Any" msgid "Any"
msgstr "Qualquer" msgstr "Qualquer"
#: bookwyrm/templates/book/editions/language_filter.html:5 #: bookwyrm/templates/book/editions/language_filter.html:6
#: bookwyrm/templates/preferences/edit_user.html:95 #: bookwyrm/templates/preferences/edit_user.html:95
msgid "Language:" msgid "Language:"
msgstr "Idioma:" msgstr "Idioma:"
#: bookwyrm/templates/book/editions/search_filter.html:5 #: bookwyrm/templates/book/editions/search_filter.html:6
msgid "Search editions" msgid "Search editions"
msgstr "Pesquisar edições" msgstr "Pesquisar edições"
@ -3572,23 +3580,31 @@ msgstr ""
msgid "Back to reports" msgid "Back to reports"
msgstr "Voltar para denúncias" msgstr "Voltar para denúncias"
#: bookwyrm/templates/settings/reports/report.html:22 #: bookwyrm/templates/settings/reports/report.html:23
msgid "Message reporter"
msgstr ""
#: bookwyrm/templates/settings/reports/report.html:27
msgid "Update on your report:"
msgstr ""
#: bookwyrm/templates/settings/reports/report.html:35
msgid "Reported statuses" msgid "Reported statuses"
msgstr "Estados denunciados" msgstr "Estados denunciados"
#: bookwyrm/templates/settings/reports/report.html:27 #: bookwyrm/templates/settings/reports/report.html:40
msgid "Status has been deleted" msgid "Status has been deleted"
msgstr "O estado foi eliminado" msgstr "O estado foi eliminado"
#: bookwyrm/templates/settings/reports/report.html:39 #: bookwyrm/templates/settings/reports/report.html:52
msgid "Reported links" msgid "Reported links"
msgstr "" msgstr ""
#: bookwyrm/templates/settings/reports/report.html:55 #: bookwyrm/templates/settings/reports/report.html:68
msgid "Moderator Comments" msgid "Moderator Comments"
msgstr "Comentários do Moderador" msgstr "Comentários do Moderador"
#: bookwyrm/templates/settings/reports/report.html:73 #: bookwyrm/templates/settings/reports/report.html:89
#: bookwyrm/templates/snippets/create_status.html:28 #: bookwyrm/templates/snippets/create_status.html:28
msgid "Comment" msgid "Comment"
msgstr "Comentar" msgstr "Comentar"
@ -4013,14 +4029,14 @@ msgstr "porcento"
msgid "of %(pages)s pages" msgid "of %(pages)s pages"
msgstr "%(pages)s páginas" msgstr "%(pages)s páginas"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
#: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:34
#: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:53
#: bookwyrm/templates/snippets/status/layout.html:54 #: bookwyrm/templates/snippets/status/layout.html:54
msgid "Reply" msgid "Reply"
msgstr "Responder" msgstr "Responder"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
msgid "Content" msgid "Content"
msgstr "Conteúdo" msgstr "Conteúdo"
@ -4098,7 +4114,7 @@ msgstr "Filtros aplicados"
msgid "Clear filters" msgid "Clear filters"
msgstr "Limpar filtros" msgstr "Limpar filtros"
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
msgid "Apply filters" msgid "Apply filters"
msgstr "Aplicar filtros" msgstr "Aplicar filtros"

Binary file not shown.

View File

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-28 02:50+0000\n" "POT-Creation-Date: 2022-02-02 20:09+0000\n"
"PO-Revision-Date: 2022-01-28 04:03\n" "PO-Revision-Date: 2022-02-04 21:00\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Swedish\n" "Language-Team: Swedish\n"
"Language: sv\n" "Language: sv\n"
@ -17,62 +17,70 @@ msgstr ""
"X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 1553\n" "X-Crowdin-File-ID: 1553\n"
#: bookwyrm/forms.py:365 #: bookwyrm/forms.py:239
msgid "Domain is blocked. Don't try this url again."
msgstr ""
#: bookwyrm/forms.py:241
msgid "Domain already pending. Please try later."
msgstr ""
#: bookwyrm/forms.py:378
msgid "A user with this email already exists." msgid "A user with this email already exists."
msgstr "En användare med den här e-postadressen existerar redan." msgstr "En användare med den här e-postadressen existerar redan."
#: bookwyrm/forms.py:379 #: bookwyrm/forms.py:392
msgid "One Day" msgid "One Day"
msgstr "En dag" msgstr "En dag"
#: bookwyrm/forms.py:380 #: bookwyrm/forms.py:393
msgid "One Week" msgid "One Week"
msgstr "En vecka" msgstr "En vecka"
#: bookwyrm/forms.py:381 #: bookwyrm/forms.py:394
msgid "One Month" msgid "One Month"
msgstr "En månad" msgstr "En månad"
#: bookwyrm/forms.py:382 #: bookwyrm/forms.py:395
msgid "Does Not Expire" msgid "Does Not Expire"
msgstr "Slutar inte gälla" msgstr "Slutar inte gälla"
#: bookwyrm/forms.py:386 #: bookwyrm/forms.py:399
#, python-brace-format #, python-brace-format
msgid "{i} uses" msgid "{i} uses"
msgstr "{i} använder" msgstr "{i} använder"
#: bookwyrm/forms.py:387 #: bookwyrm/forms.py:400
msgid "Unlimited" msgid "Unlimited"
msgstr "Obegränsad" msgstr "Obegränsad"
#: bookwyrm/forms.py:489 #: bookwyrm/forms.py:502
msgid "List Order" msgid "List Order"
msgstr "Listordning" msgstr "Listordning"
#: bookwyrm/forms.py:490 #: bookwyrm/forms.py:503
msgid "Book Title" msgid "Book Title"
msgstr "Bokens titel" msgstr "Bokens titel"
#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155
#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/shelf/shelf.html:187
#: bookwyrm/templates/snippets/create_status/review.html:32 #: bookwyrm/templates/snippets/create_status/review.html:32
msgid "Rating" msgid "Rating"
msgstr "Betyg" msgstr "Betyg"
#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 #: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177
msgid "Sort By" msgid "Sort By"
msgstr "Sortera efter" msgstr "Sortera efter"
#: bookwyrm/forms.py:497 #: bookwyrm/forms.py:510
msgid "Ascending" msgid "Ascending"
msgstr "Stigande" msgstr "Stigande"
#: bookwyrm/forms.py:498 #: bookwyrm/forms.py:511
msgid "Descending" msgid "Descending"
msgstr "Fallande" msgstr "Fallande"
#: bookwyrm/forms.py:511 #: bookwyrm/forms.py:524
msgid "Reading finish date cannot be before start date." msgid "Reading finish date cannot be before start date."
msgstr "Slutdatum för läsning kan inte vara före startdatum." msgstr "Slutdatum för läsning kan inte vara före startdatum."
@ -140,26 +148,26 @@ msgstr "Federerad"
msgid "Blocked" msgid "Blocked"
msgstr "Blockerad" msgstr "Blockerad"
#: bookwyrm/models/fields.py:29 #: bookwyrm/models/fields.py:27
#, python-format #, python-format
msgid "%(value)s is not a valid remote_id" msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s är inte ett giltigt remote_id" msgstr "%(value)s är inte ett giltigt remote_id"
#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 #: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45
#, python-format #, python-format
msgid "%(value)s is not a valid username" msgid "%(value)s is not a valid username"
msgstr "%(value)s är inte ett giltigt användarnamn" msgstr "%(value)s är inte ett giltigt användarnamn"
#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 #: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170
#: bookwyrm/templates/ostatus/error.html:29 #: bookwyrm/templates/ostatus/error.html:29
msgid "username" msgid "username"
msgstr "användarnamn" msgstr "användarnamn"
#: bookwyrm/models/fields.py:188 #: bookwyrm/models/fields.py:186
msgid "A user with that username already exists." msgid "A user with that username already exists."
msgstr "En användare med det användarnamnet existerar redan." msgstr "En användare med det användarnamnet existerar redan."
#: bookwyrm/models/fields.py:207 #: bookwyrm/models/fields.py:205
#: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11 #: bookwyrm/templates/snippets/privacy_select.html:11
@ -167,7 +175,7 @@ msgstr "En användare med det användarnamnet existerar redan."
msgid "Public" msgid "Public"
msgstr "Publik" msgstr "Publik"
#: bookwyrm/models/fields.py:208 #: bookwyrm/models/fields.py:206
#: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14 #: bookwyrm/templates/snippets/privacy_select.html:14
@ -175,14 +183,14 @@ msgstr "Publik"
msgid "Unlisted" msgid "Unlisted"
msgstr "Ej listad" msgstr "Ej listad"
#: bookwyrm/models/fields.py:209 #: bookwyrm/models/fields.py:207
#: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11 #: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers" msgid "Followers"
msgstr "Följare" msgstr "Följare"
#: bookwyrm/models/fields.py:210 #: bookwyrm/models/fields.py:208
#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8
#: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy-icons.html:16
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
msgstr "Português Europeu (Europeisk Portugisiska)" msgstr "Português Europeu (Europeisk Portugisiska)"
#: bookwyrm/settings.py:258 #: bookwyrm/settings.py:258
msgid "Swedish (Svenska)" msgid "Svenska (Swedish)"
msgstr "" msgstr "Svenska (Svenska)"
#: bookwyrm/settings.py:259 #: bookwyrm/settings.py:259
msgid "简体中文 (Simplified Chinese)" msgid "简体中文 (Simplified Chinese)"
@ -369,7 +377,7 @@ msgstr "Administratör"
#: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/about/about.html:131
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14
#: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/status/status_options.html:35
#: bookwyrm/templates/snippets/user_options.html:13 #: bookwyrm/templates/snippets/user_options.html:14
msgid "Send direct message" msgid "Send direct message"
msgstr "Skicka direktmeddelande" msgstr "Skicka direktmeddelande"
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
msgstr "Fysiska egenskaper" msgstr "Fysiska egenskaper"
#: bookwyrm/templates/book/edit/edit_book_form.html:199 #: bookwyrm/templates/book/edit/edit_book_form.html:199
#: bookwyrm/templates/book/editions/format_filter.html:5 #: bookwyrm/templates/book/editions/format_filter.html:6
msgid "Format:" msgid "Format:"
msgstr "Format:" msgstr "Format:"
@ -1055,17 +1063,17 @@ msgstr "Utgåvor av %(book_title)s"
msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
msgstr "Utgåvor av <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgstr "Utgåvor av <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
#: bookwyrm/templates/book/editions/format_filter.html:8 #: bookwyrm/templates/book/editions/format_filter.html:9
#: bookwyrm/templates/book/editions/language_filter.html:8 #: bookwyrm/templates/book/editions/language_filter.html:9
msgid "Any" msgid "Any"
msgstr "Alla" msgstr "Alla"
#: bookwyrm/templates/book/editions/language_filter.html:5 #: bookwyrm/templates/book/editions/language_filter.html:6
#: bookwyrm/templates/preferences/edit_user.html:95 #: bookwyrm/templates/preferences/edit_user.html:95
msgid "Language:" msgid "Language:"
msgstr "Språk:" msgstr "Språk:"
#: bookwyrm/templates/book/editions/search_filter.html:5 #: bookwyrm/templates/book/editions/search_filter.html:6
msgid "Search editions" msgid "Search editions"
msgstr "Sök efter utgåvor" msgstr "Sök efter utgåvor"
@ -2020,7 +2028,7 @@ msgstr "Försök igen"
#: bookwyrm/templates/import/import_status.html:223 #: bookwyrm/templates/import/import_status.html:223
msgid "This import is in an old format that is no longer supported. If you would like to troubleshoot missing items from this import, click the button below to update the import format." msgid "This import is in an old format that is no longer supported. If you would like to troubleshoot missing items from this import, click the button below to update the import format."
msgstr "" msgstr "Den här importen är i ett gammalt format som inte längre stöds. Om du vill felsöka saknade objekt från denna import, klicka på knappen nedan för att uppdatera importformat."
#: bookwyrm/templates/import/import_status.html:225 #: bookwyrm/templates/import/import_status.html:225
msgid "Update import" msgid "Update import"
@ -2250,12 +2258,12 @@ msgstr "BookWyrm's källkod är fritt tillgängligt. Du kan bidra eller rapporte
#: bookwyrm/templates/lists/add_item_modal.html:8 #: bookwyrm/templates/lists/add_item_modal.html:8
#, python-format #, python-format
msgid "Add \"<em>%(title)s</em>\" to this list" msgid "Add \"<em>%(title)s</em>\" to this list"
msgstr "" msgstr "Lägg till \"<em>%(title)s</em>\" i den här listan"
#: bookwyrm/templates/lists/add_item_modal.html:12 #: bookwyrm/templates/lists/add_item_modal.html:12
#, python-format #, python-format
msgid "Suggest \"<em>%(title)s</em>\" for this list" msgid "Suggest \"<em>%(title)s</em>\" for this list"
msgstr "" msgstr "Föreslå \"<em>%(title)s</em>\" för den här listan"
#: bookwyrm/templates/lists/add_item_modal.html:39 #: bookwyrm/templates/lists/add_item_modal.html:39
#: bookwyrm/templates/lists/list.html:249 #: bookwyrm/templates/lists/list.html:249
@ -2297,7 +2305,7 @@ msgstr "Nu är du klar!"
#: bookwyrm/templates/lists/list.html:83 #: bookwyrm/templates/lists/list.html:83
#, python-format #, python-format
msgid "<a href=\"%(user_path)s\">%(username)s</a> says:" msgid "<a href=\"%(user_path)s\">%(username)s</a> says:"
msgstr "" msgstr "<a href=\"%(user_path)s\">%(username)s</a> säger:"
#: bookwyrm/templates/lists/curate.html:55 #: bookwyrm/templates/lists/curate.html:55
msgid "Suggested by" msgid "Suggested by"
@ -2395,7 +2403,7 @@ msgstr "Anteckningar:"
#: bookwyrm/templates/lists/item_notes_field.html:19 #: bookwyrm/templates/lists/item_notes_field.html:19
msgid "An optional note that will be displayed with the book." msgid "An optional note that will be displayed with the book."
msgstr "" msgstr "En valfri anteckning som kommer att visas med boken."
#: bookwyrm/templates/lists/list.html:36 #: bookwyrm/templates/lists/list.html:36
msgid "You successfully suggested a book for this list!" msgid "You successfully suggested a book for this list!"
@ -2407,11 +2415,11 @@ msgstr "Du lade framgångsrikt till en bok i här listan!"
#: bookwyrm/templates/lists/list.html:96 #: bookwyrm/templates/lists/list.html:96
msgid "Edit notes" msgid "Edit notes"
msgstr "" msgstr "Redigera anteckningar"
#: bookwyrm/templates/lists/list.html:111 #: bookwyrm/templates/lists/list.html:111
msgid "Add notes" msgid "Add notes"
msgstr "" msgstr "Lägg till anteckningar"
#: bookwyrm/templates/lists/list.html:123 #: bookwyrm/templates/lists/list.html:123
#, python-format #, python-format
@ -3574,23 +3582,31 @@ msgstr "Inga länkar tillgängliga för den här domänen."
msgid "Back to reports" msgid "Back to reports"
msgstr "Tillbaka till rapporter" msgstr "Tillbaka till rapporter"
#: bookwyrm/templates/settings/reports/report.html:22 #: bookwyrm/templates/settings/reports/report.html:23
msgid "Message reporter"
msgstr "Meddela rapportören"
#: bookwyrm/templates/settings/reports/report.html:27
msgid "Update on your report:"
msgstr "Uppdatering av din rapport:"
#: bookwyrm/templates/settings/reports/report.html:35
msgid "Reported statuses" msgid "Reported statuses"
msgstr "Rapporterade statusar" msgstr "Rapporterade statusar"
#: bookwyrm/templates/settings/reports/report.html:27 #: bookwyrm/templates/settings/reports/report.html:40
msgid "Status has been deleted" msgid "Status has been deleted"
msgstr "Statusen har tagits bort" msgstr "Statusen har tagits bort"
#: bookwyrm/templates/settings/reports/report.html:39 #: bookwyrm/templates/settings/reports/report.html:52
msgid "Reported links" msgid "Reported links"
msgstr "Rapporterade länkar" msgstr "Rapporterade länkar"
#: bookwyrm/templates/settings/reports/report.html:55 #: bookwyrm/templates/settings/reports/report.html:68
msgid "Moderator Comments" msgid "Moderator Comments"
msgstr "Moderatorns kommentarer" msgstr "Moderatorns kommentarer"
#: bookwyrm/templates/settings/reports/report.html:73 #: bookwyrm/templates/settings/reports/report.html:89
#: bookwyrm/templates/snippets/create_status.html:28 #: bookwyrm/templates/snippets/create_status.html:28
msgid "Comment" msgid "Comment"
msgstr "Kommentar" msgstr "Kommentar"
@ -4015,14 +4031,14 @@ msgstr "procent"
msgid "of %(pages)s pages" msgid "of %(pages)s pages"
msgstr "av %(pages)s sidor" msgstr "av %(pages)s sidor"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
#: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:34
#: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:53
#: bookwyrm/templates/snippets/status/layout.html:54 #: bookwyrm/templates/snippets/status/layout.html:54
msgid "Reply" msgid "Reply"
msgstr "Svara" msgstr "Svara"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
msgid "Content" msgid "Content"
msgstr "Innehåll" msgstr "Innehåll"
@ -4100,7 +4116,7 @@ msgstr "Filtren är verkställda"
msgid "Clear filters" msgid "Clear filters"
msgstr "Rensa filtren" msgstr "Rensa filtren"
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
msgid "Apply filters" msgid "Apply filters"
msgstr "Verkställ filtren" msgstr "Verkställ filtren"

View File

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-28 02:50+0000\n" "POT-Creation-Date: 2022-02-02 20:09+0000\n"
"PO-Revision-Date: 2022-01-28 04:03\n" "PO-Revision-Date: 2022-02-04 21:01\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Chinese Simplified\n" "Language-Team: Chinese Simplified\n"
"Language: zh\n" "Language: zh\n"
@ -17,62 +17,70 @@ msgstr ""
"X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 1553\n" "X-Crowdin-File-ID: 1553\n"
#: bookwyrm/forms.py:365 #: bookwyrm/forms.py:239
msgid "Domain is blocked. Don't try this url again."
msgstr ""
#: bookwyrm/forms.py:241
msgid "Domain already pending. Please try later."
msgstr ""
#: bookwyrm/forms.py:378
msgid "A user with this email already exists." msgid "A user with this email already exists."
msgstr "已经存在使用该邮箱的用户。" msgstr "已经存在使用该邮箱的用户。"
#: bookwyrm/forms.py:379 #: bookwyrm/forms.py:392
msgid "One Day" msgid "One Day"
msgstr "一天" msgstr "一天"
#: bookwyrm/forms.py:380 #: bookwyrm/forms.py:393
msgid "One Week" msgid "One Week"
msgstr "一周" msgstr "一周"
#: bookwyrm/forms.py:381 #: bookwyrm/forms.py:394
msgid "One Month" msgid "One Month"
msgstr "一个月" msgstr "一个月"
#: bookwyrm/forms.py:382 #: bookwyrm/forms.py:395
msgid "Does Not Expire" msgid "Does Not Expire"
msgstr "永不失效" msgstr "永不失效"
#: bookwyrm/forms.py:386 #: bookwyrm/forms.py:399
#, python-brace-format #, python-brace-format
msgid "{i} uses" msgid "{i} uses"
msgstr "{i} 次使用" msgstr "{i} 次使用"
#: bookwyrm/forms.py:387 #: bookwyrm/forms.py:400
msgid "Unlimited" msgid "Unlimited"
msgstr "不受限" msgstr "不受限"
#: bookwyrm/forms.py:489 #: bookwyrm/forms.py:502
msgid "List Order" msgid "List Order"
msgstr "列表顺序" msgstr "列表顺序"
#: bookwyrm/forms.py:490 #: bookwyrm/forms.py:503
msgid "Book Title" msgid "Book Title"
msgstr "书名" msgstr "书名"
#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155
#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/shelf/shelf.html:187
#: bookwyrm/templates/snippets/create_status/review.html:32 #: bookwyrm/templates/snippets/create_status/review.html:32
msgid "Rating" msgid "Rating"
msgstr "评价" msgstr "评价"
#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 #: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177
msgid "Sort By" msgid "Sort By"
msgstr "排序方式" msgstr "排序方式"
#: bookwyrm/forms.py:497 #: bookwyrm/forms.py:510
msgid "Ascending" msgid "Ascending"
msgstr "升序" msgstr "升序"
#: bookwyrm/forms.py:498 #: bookwyrm/forms.py:511
msgid "Descending" msgid "Descending"
msgstr "降序" msgstr "降序"
#: bookwyrm/forms.py:511 #: bookwyrm/forms.py:524
msgid "Reading finish date cannot be before start date." msgid "Reading finish date cannot be before start date."
msgstr "" msgstr ""
@ -140,26 +148,26 @@ msgstr "跨站"
msgid "Blocked" msgid "Blocked"
msgstr "已屏蔽" msgstr "已屏蔽"
#: bookwyrm/models/fields.py:29 #: bookwyrm/models/fields.py:27
#, python-format #, python-format
msgid "%(value)s is not a valid remote_id" msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s 不是有效的 remote_id" msgstr "%(value)s 不是有效的 remote_id"
#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 #: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45
#, python-format #, python-format
msgid "%(value)s is not a valid username" msgid "%(value)s is not a valid username"
msgstr "%(value)s 不是有效的用户名" msgstr "%(value)s 不是有效的用户名"
#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 #: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170
#: bookwyrm/templates/ostatus/error.html:29 #: bookwyrm/templates/ostatus/error.html:29
msgid "username" msgid "username"
msgstr "用户名" msgstr "用户名"
#: bookwyrm/models/fields.py:188 #: bookwyrm/models/fields.py:186
msgid "A user with that username already exists." msgid "A user with that username already exists."
msgstr "已经存在使用该用户名的用户。" msgstr "已经存在使用该用户名的用户。"
#: bookwyrm/models/fields.py:207 #: bookwyrm/models/fields.py:205
#: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11 #: bookwyrm/templates/snippets/privacy_select.html:11
@ -167,7 +175,7 @@ msgstr "已经存在使用该用户名的用户。"
msgid "Public" msgid "Public"
msgstr "公开" msgstr "公开"
#: bookwyrm/models/fields.py:208 #: bookwyrm/models/fields.py:206
#: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14 #: bookwyrm/templates/snippets/privacy_select.html:14
@ -175,14 +183,14 @@ msgstr "公开"
msgid "Unlisted" msgid "Unlisted"
msgstr "不公开" msgstr "不公开"
#: bookwyrm/models/fields.py:209 #: bookwyrm/models/fields.py:207
#: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11 #: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers" msgid "Followers"
msgstr "关注者" msgstr "关注者"
#: bookwyrm/models/fields.py:210 #: bookwyrm/models/fields.py:208
#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8
#: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy-icons.html:16
@ -283,7 +291,7 @@ msgid "Português Europeu (European Portuguese)"
msgstr "" msgstr ""
#: bookwyrm/settings.py:258 #: bookwyrm/settings.py:258
msgid "Swedish (Svenska)" msgid "Svenska (Swedish)"
msgstr "" msgstr ""
#: bookwyrm/settings.py:259 #: bookwyrm/settings.py:259
@ -369,7 +377,7 @@ msgstr "管理员"
#: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/about/about.html:131
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14
#: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/status/status_options.html:35
#: bookwyrm/templates/snippets/user_options.html:13 #: bookwyrm/templates/snippets/user_options.html:14
msgid "Send direct message" msgid "Send direct message"
msgstr "发送私信" msgstr "发送私信"
@ -1012,7 +1020,7 @@ msgid "Physical Properties"
msgstr "实体性质" msgstr "实体性质"
#: bookwyrm/templates/book/edit/edit_book_form.html:199 #: bookwyrm/templates/book/edit/edit_book_form.html:199
#: bookwyrm/templates/book/editions/format_filter.html:5 #: bookwyrm/templates/book/editions/format_filter.html:6
msgid "Format:" msgid "Format:"
msgstr "格式:" msgstr "格式:"
@ -1050,17 +1058,17 @@ msgstr "%(book_title)s 的各版本"
msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
msgstr "<a href=\"%(work_path)s\">《%(work_title)s》</a> 的各版本" msgstr "<a href=\"%(work_path)s\">《%(work_title)s》</a> 的各版本"
#: bookwyrm/templates/book/editions/format_filter.html:8 #: bookwyrm/templates/book/editions/format_filter.html:9
#: bookwyrm/templates/book/editions/language_filter.html:8 #: bookwyrm/templates/book/editions/language_filter.html:9
msgid "Any" msgid "Any"
msgstr "所有" msgstr "所有"
#: bookwyrm/templates/book/editions/language_filter.html:5 #: bookwyrm/templates/book/editions/language_filter.html:6
#: bookwyrm/templates/preferences/edit_user.html:95 #: bookwyrm/templates/preferences/edit_user.html:95
msgid "Language:" msgid "Language:"
msgstr "语言:" msgstr "语言:"
#: bookwyrm/templates/book/editions/search_filter.html:5 #: bookwyrm/templates/book/editions/search_filter.html:6
msgid "Search editions" msgid "Search editions"
msgstr "搜索版本" msgstr "搜索版本"
@ -3557,23 +3565,31 @@ msgstr ""
msgid "Back to reports" msgid "Back to reports"
msgstr "回到报告" msgstr "回到报告"
#: bookwyrm/templates/settings/reports/report.html:22 #: bookwyrm/templates/settings/reports/report.html:23
msgid "Message reporter"
msgstr ""
#: bookwyrm/templates/settings/reports/report.html:27
msgid "Update on your report:"
msgstr ""
#: bookwyrm/templates/settings/reports/report.html:35
msgid "Reported statuses" msgid "Reported statuses"
msgstr "被报告的状态" msgstr "被报告的状态"
#: bookwyrm/templates/settings/reports/report.html:27 #: bookwyrm/templates/settings/reports/report.html:40
msgid "Status has been deleted" msgid "Status has been deleted"
msgstr "状态已被删除" msgstr "状态已被删除"
#: bookwyrm/templates/settings/reports/report.html:39 #: bookwyrm/templates/settings/reports/report.html:52
msgid "Reported links" msgid "Reported links"
msgstr "" msgstr ""
#: bookwyrm/templates/settings/reports/report.html:55 #: bookwyrm/templates/settings/reports/report.html:68
msgid "Moderator Comments" msgid "Moderator Comments"
msgstr "监察员评论" msgstr "监察员评论"
#: bookwyrm/templates/settings/reports/report.html:73 #: bookwyrm/templates/settings/reports/report.html:89
#: bookwyrm/templates/snippets/create_status.html:28 #: bookwyrm/templates/snippets/create_status.html:28
msgid "Comment" msgid "Comment"
msgstr "评论" msgstr "评论"
@ -3996,14 +4012,14 @@ msgstr "百分比"
msgid "of %(pages)s pages" msgid "of %(pages)s pages"
msgstr "全书 %(pages)s 页" msgstr "全书 %(pages)s 页"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
#: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:34
#: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:53
#: bookwyrm/templates/snippets/status/layout.html:54 #: bookwyrm/templates/snippets/status/layout.html:54
msgid "Reply" msgid "Reply"
msgstr "回复" msgstr "回复"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
msgid "Content" msgid "Content"
msgstr "内容" msgstr "内容"
@ -4081,7 +4097,7 @@ msgstr ""
msgid "Clear filters" msgid "Clear filters"
msgstr "清除过滤器" msgstr "清除过滤器"
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
msgid "Apply filters" msgid "Apply filters"
msgstr "应用过滤器" msgstr "应用过滤器"

View File

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bookwyrm\n" "Project-Id-Version: bookwyrm\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-28 02:50+0000\n" "POT-Creation-Date: 2022-02-02 20:09+0000\n"
"PO-Revision-Date: 2022-01-28 04:03\n" "PO-Revision-Date: 2022-02-04 21:01\n"
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n" "Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
"Language-Team: Chinese Traditional\n" "Language-Team: Chinese Traditional\n"
"Language: zh\n" "Language: zh\n"
@ -17,62 +17,70 @@ msgstr ""
"X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n" "X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 1553\n" "X-Crowdin-File-ID: 1553\n"
#: bookwyrm/forms.py:365 #: bookwyrm/forms.py:239
msgid "Domain is blocked. Don't try this url again."
msgstr ""
#: bookwyrm/forms.py:241
msgid "Domain already pending. Please try later."
msgstr ""
#: bookwyrm/forms.py:378
msgid "A user with this email already exists." msgid "A user with this email already exists."
msgstr "已經存在使用該郵箱的使用者。" msgstr "已經存在使用該郵箱的使用者。"
#: bookwyrm/forms.py:379 #: bookwyrm/forms.py:392
msgid "One Day" msgid "One Day"
msgstr "一天" msgstr "一天"
#: bookwyrm/forms.py:380 #: bookwyrm/forms.py:393
msgid "One Week" msgid "One Week"
msgstr "一週" msgstr "一週"
#: bookwyrm/forms.py:381 #: bookwyrm/forms.py:394
msgid "One Month" msgid "One Month"
msgstr "一個月" msgstr "一個月"
#: bookwyrm/forms.py:382 #: bookwyrm/forms.py:395
msgid "Does Not Expire" msgid "Does Not Expire"
msgstr "永不失效" msgstr "永不失效"
#: bookwyrm/forms.py:386 #: bookwyrm/forms.py:399
#, python-brace-format #, python-brace-format
msgid "{i} uses" msgid "{i} uses"
msgstr "" msgstr ""
#: bookwyrm/forms.py:387 #: bookwyrm/forms.py:400
msgid "Unlimited" msgid "Unlimited"
msgstr "不受限" msgstr "不受限"
#: bookwyrm/forms.py:489 #: bookwyrm/forms.py:502
msgid "List Order" msgid "List Order"
msgstr "列表順序" msgstr "列表順序"
#: bookwyrm/forms.py:490 #: bookwyrm/forms.py:503
msgid "Book Title" msgid "Book Title"
msgstr "書名" msgstr "書名"
#: bookwyrm/forms.py:491 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/forms.py:504 bookwyrm/templates/shelf/shelf.html:155
#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/shelf/shelf.html:187
#: bookwyrm/templates/snippets/create_status/review.html:32 #: bookwyrm/templates/snippets/create_status/review.html:32
msgid "Rating" msgid "Rating"
msgstr "評價" msgstr "評價"
#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177 #: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177
msgid "Sort By" msgid "Sort By"
msgstr "排序方式" msgstr "排序方式"
#: bookwyrm/forms.py:497 #: bookwyrm/forms.py:510
msgid "Ascending" msgid "Ascending"
msgstr "升序" msgstr "升序"
#: bookwyrm/forms.py:498 #: bookwyrm/forms.py:511
msgid "Descending" msgid "Descending"
msgstr "降序" msgstr "降序"
#: bookwyrm/forms.py:511 #: bookwyrm/forms.py:524
msgid "Reading finish date cannot be before start date." msgid "Reading finish date cannot be before start date."
msgstr "" msgstr ""
@ -140,26 +148,26 @@ msgstr "跨站"
msgid "Blocked" msgid "Blocked"
msgstr "已封鎖" msgstr "已封鎖"
#: bookwyrm/models/fields.py:29 #: bookwyrm/models/fields.py:27
#, python-format #, python-format
msgid "%(value)s is not a valid remote_id" msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s 不是有效的 remote_id" msgstr "%(value)s 不是有效的 remote_id"
#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47 #: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45
#, python-format #, python-format
msgid "%(value)s is not a valid username" msgid "%(value)s is not a valid username"
msgstr "%(value)s 不是有效的使用者名稱" msgstr "%(value)s 不是有效的使用者名稱"
#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 #: bookwyrm/models/fields.py:181 bookwyrm/templates/layout.html:170
#: bookwyrm/templates/ostatus/error.html:29 #: bookwyrm/templates/ostatus/error.html:29
msgid "username" msgid "username"
msgstr "使用者名稱" msgstr "使用者名稱"
#: bookwyrm/models/fields.py:188 #: bookwyrm/models/fields.py:186
msgid "A user with that username already exists." msgid "A user with that username already exists."
msgstr "已經存在使用該名稱的使用者。" msgstr "已經存在使用該名稱的使用者。"
#: bookwyrm/models/fields.py:207 #: bookwyrm/models/fields.py:205
#: bookwyrm/templates/snippets/privacy-icons.html:3 #: bookwyrm/templates/snippets/privacy-icons.html:3
#: bookwyrm/templates/snippets/privacy-icons.html:4 #: bookwyrm/templates/snippets/privacy-icons.html:4
#: bookwyrm/templates/snippets/privacy_select.html:11 #: bookwyrm/templates/snippets/privacy_select.html:11
@ -167,7 +175,7 @@ msgstr "已經存在使用該名稱的使用者。"
msgid "Public" msgid "Public"
msgstr "公開" msgstr "公開"
#: bookwyrm/models/fields.py:208 #: bookwyrm/models/fields.py:206
#: bookwyrm/templates/snippets/privacy-icons.html:7 #: bookwyrm/templates/snippets/privacy-icons.html:7
#: bookwyrm/templates/snippets/privacy-icons.html:8 #: bookwyrm/templates/snippets/privacy-icons.html:8
#: bookwyrm/templates/snippets/privacy_select.html:14 #: bookwyrm/templates/snippets/privacy_select.html:14
@ -175,14 +183,14 @@ msgstr "公開"
msgid "Unlisted" msgid "Unlisted"
msgstr "不公開" msgstr "不公開"
#: bookwyrm/models/fields.py:209 #: bookwyrm/models/fields.py:207
#: bookwyrm/templates/snippets/privacy_select.html:17 #: bookwyrm/templates/snippets/privacy_select.html:17
#: bookwyrm/templates/user/relationships/followers.html:6 #: bookwyrm/templates/user/relationships/followers.html:6
#: bookwyrm/templates/user/relationships/layout.html:11 #: bookwyrm/templates/user/relationships/layout.html:11
msgid "Followers" msgid "Followers"
msgstr "關注者" msgstr "關注者"
#: bookwyrm/models/fields.py:210 #: bookwyrm/models/fields.py:208
#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 #: bookwyrm/templates/snippets/create_status/post_options_block.html:8
#: bookwyrm/templates/snippets/privacy-icons.html:15 #: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16 #: bookwyrm/templates/snippets/privacy-icons.html:16
@ -283,7 +291,7 @@ msgid "Português Europeu (European Portuguese)"
msgstr "" msgstr ""
#: bookwyrm/settings.py:258 #: bookwyrm/settings.py:258
msgid "Swedish (Svenska)" msgid "Svenska (Swedish)"
msgstr "" msgstr ""
#: bookwyrm/settings.py:259 #: bookwyrm/settings.py:259
@ -369,7 +377,7 @@ msgstr "管理員"
#: bookwyrm/templates/about/about.html:131 #: bookwyrm/templates/about/about.html:131
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14
#: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/status/status_options.html:35
#: bookwyrm/templates/snippets/user_options.html:13 #: bookwyrm/templates/snippets/user_options.html:14
msgid "Send direct message" msgid "Send direct message"
msgstr "發送私信" msgstr "發送私信"
@ -1012,7 +1020,7 @@ msgid "Physical Properties"
msgstr "實體性質" msgstr "實體性質"
#: bookwyrm/templates/book/edit/edit_book_form.html:199 #: bookwyrm/templates/book/edit/edit_book_form.html:199
#: bookwyrm/templates/book/editions/format_filter.html:5 #: bookwyrm/templates/book/editions/format_filter.html:6
msgid "Format:" msgid "Format:"
msgstr "格式:" msgstr "格式:"
@ -1050,17 +1058,17 @@ msgstr "%(book_title)s 的各版本"
msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>" msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
msgstr "<a href=\"%(work_path)s\">\"%(work_title)s\"</a> 的各版本" msgstr "<a href=\"%(work_path)s\">\"%(work_title)s\"</a> 的各版本"
#: bookwyrm/templates/book/editions/format_filter.html:8 #: bookwyrm/templates/book/editions/format_filter.html:9
#: bookwyrm/templates/book/editions/language_filter.html:8 #: bookwyrm/templates/book/editions/language_filter.html:9
msgid "Any" msgid "Any"
msgstr "所有" msgstr "所有"
#: bookwyrm/templates/book/editions/language_filter.html:5 #: bookwyrm/templates/book/editions/language_filter.html:6
#: bookwyrm/templates/preferences/edit_user.html:95 #: bookwyrm/templates/preferences/edit_user.html:95
msgid "Language:" msgid "Language:"
msgstr "語言:" msgstr "語言:"
#: bookwyrm/templates/book/editions/search_filter.html:5 #: bookwyrm/templates/book/editions/search_filter.html:6
msgid "Search editions" msgid "Search editions"
msgstr "" msgstr ""
@ -3557,23 +3565,31 @@ msgstr ""
msgid "Back to reports" msgid "Back to reports"
msgstr "回到舉報" msgstr "回到舉報"
#: bookwyrm/templates/settings/reports/report.html:22 #: bookwyrm/templates/settings/reports/report.html:23
msgid "Message reporter"
msgstr ""
#: bookwyrm/templates/settings/reports/report.html:27
msgid "Update on your report:"
msgstr ""
#: bookwyrm/templates/settings/reports/report.html:35
msgid "Reported statuses" msgid "Reported statuses"
msgstr "被舉報的狀態" msgstr "被舉報的狀態"
#: bookwyrm/templates/settings/reports/report.html:27 #: bookwyrm/templates/settings/reports/report.html:40
msgid "Status has been deleted" msgid "Status has been deleted"
msgstr "狀態已被刪除" msgstr "狀態已被刪除"
#: bookwyrm/templates/settings/reports/report.html:39 #: bookwyrm/templates/settings/reports/report.html:52
msgid "Reported links" msgid "Reported links"
msgstr "" msgstr ""
#: bookwyrm/templates/settings/reports/report.html:55 #: bookwyrm/templates/settings/reports/report.html:68
msgid "Moderator Comments" msgid "Moderator Comments"
msgstr "監察員評論" msgstr "監察員評論"
#: bookwyrm/templates/settings/reports/report.html:73 #: bookwyrm/templates/settings/reports/report.html:89
#: bookwyrm/templates/snippets/create_status.html:28 #: bookwyrm/templates/snippets/create_status.html:28
msgid "Comment" msgid "Comment"
msgstr "評論" msgstr "評論"
@ -3996,14 +4012,14 @@ msgstr "百分比"
msgid "of %(pages)s pages" msgid "of %(pages)s pages"
msgstr "全書 %(pages)s 頁" msgstr "全書 %(pages)s 頁"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
#: bookwyrm/templates/snippets/status/layout.html:34 #: bookwyrm/templates/snippets/status/layout.html:34
#: bookwyrm/templates/snippets/status/layout.html:53 #: bookwyrm/templates/snippets/status/layout.html:53
#: bookwyrm/templates/snippets/status/layout.html:54 #: bookwyrm/templates/snippets/status/layout.html:54
msgid "Reply" msgid "Reply"
msgstr "回覆" msgstr "回覆"
#: bookwyrm/templates/snippets/create_status/content_field.html:17 #: bookwyrm/templates/snippets/create_status/content_field.html:18
msgid "Content" msgid "Content"
msgstr "內容" msgstr "內容"
@ -4081,7 +4097,7 @@ msgstr ""
msgid "Clear filters" msgid "Clear filters"
msgstr "清除過濾器" msgstr "清除過濾器"
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
msgid "Apply filters" msgid "Apply filters"
msgstr "使用過濾器" msgstr "使用過濾器"

View File

@ -1,12 +1,12 @@
celery==5.2.2 celery==5.2.2
colorthief==0.2.1 colorthief==0.2.1
Django==3.2.11 Django==3.2.12
django-imagekit==4.1.0 django-imagekit==4.1.0
django-model-utils==4.0.0 django-model-utils==4.0.0
environs==9.3.4 environs==9.3.4
flower==1.0.0 flower==1.0.0
Markdown==3.3.3 Markdown==3.3.3
Pillow>=8.2.0 Pillow>=9.0.0
psycopg2==2.8.4 psycopg2==2.8.4
pycryptodome==3.9.4 pycryptodome==3.9.4
python-dateutil==2.8.1 python-dateutil==2.8.1
@ -18,9 +18,13 @@ pytz>=2021.1
boto3==1.17.88 boto3==1.17.88
django-storages==1.11.1 django-storages==1.11.1
django-redis==5.2.0 django-redis==5.2.0
opentelemetry-api==1.8.0
opentelemetry-sdk==1.8.0
opentelemetry-exporter-otlp-proto-grpc==1.8.0
opentelemetry-instrumentation-django==0.27b0
opentelemetry-instrumentation-celery==0.27b0
# Dev # Dev
black==21.4b2
pytest-django==4.1.0 pytest-django==4.1.0
pytest==6.1.2 pytest==6.1.2
pytest-cov==2.10.1 pytest-cov==2.10.1

1583
yarn.lock

File diff suppressed because it is too large Load Diff