forked from mirrors/bookwyrm
Merge branch 'main' into openlibrary-author-fields
This commit is contained in:
commit
39691bed3a
90 changed files with 1841 additions and 2557 deletions
16
.env.example
16
.env.example
|
@ -89,3 +89,19 @@ PREVIEW_TEXT_COLOR=#363636
|
|||
PREVIEW_IMG_WIDTH=1200
|
||||
PREVIEW_IMG_HEIGHT=630
|
||||
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
|
||||
|
|
13
.github/workflows/lint-frontend.yaml
vendored
13
.github/workflows/lint-frontend.yaml
vendored
|
@ -1,5 +1,5 @@
|
|||
# @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:
|
||||
push:
|
||||
|
@ -8,7 +8,7 @@ on:
|
|||
- '.github/workflows/**'
|
||||
- 'static/**'
|
||||
- '.eslintrc'
|
||||
- '.stylelintrc'
|
||||
- '.stylelintrc.js'
|
||||
pull_request:
|
||||
branches: [ main, ci, frontend ]
|
||||
|
||||
|
@ -22,17 +22,16 @@ jobs:
|
|||
- uses: actions/checkout@v2
|
||||
|
||||
- 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.
|
||||
- name: Run stylelint
|
||||
run: >
|
||||
yarn stylelint bookwyrm/static/**/*.css \
|
||||
--report-needless-disables \
|
||||
--report-invalid-scope-disables
|
||||
npx stylelint bookwyrm/static/css/*.css \
|
||||
--config dev-tools/.stylelintrc.js
|
||||
|
||||
# See .eslintignore for files that are not linted.
|
||||
- name: Run ESLint
|
||||
run: >
|
||||
yarn eslint bookwyrm/static \
|
||||
npx eslint bookwyrm/static \
|
||||
--ext .js,.jsx,.ts,.tsx
|
||||
|
|
3
.github/workflows/prettier.yaml
vendored
3
.github/workflows/prettier.yaml
vendored
|
@ -17,8 +17,7 @@ jobs:
|
|||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Install modules
|
||||
run: npm install .
|
||||
run: npm install prettier
|
||||
|
||||
# See .stylelintignore for files that are not linted.
|
||||
- name: Run Prettier
|
||||
run: npx prettier --check bookwyrm/static/js/*.js
|
||||
|
|
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -24,7 +24,9 @@
|
|||
.idea
|
||||
|
||||
#Node tools
|
||||
/node_modules/
|
||||
node_modules/
|
||||
package-lock.json
|
||||
yarn.lock
|
||||
|
||||
#nginx
|
||||
nginx/default.conf
|
||||
|
|
|
@ -227,7 +227,7 @@ def set_related_field(
|
|||
model_field = getattr(model, related_field_name)
|
||||
if hasattr(model_field, "activitypub_field"):
|
||||
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
|
||||
# we have to set it post-creation
|
||||
|
@ -298,6 +298,7 @@ class Link(ActivityObject):
|
|||
mediaType: str = None
|
||||
id: str = None
|
||||
attributedTo: str = None
|
||||
availability: str = None
|
||||
type: str = "Link"
|
||||
|
||||
def serialize(self, **kwargs):
|
||||
|
|
54
bookwyrm/apps.py
Normal file
54
bookwyrm/apps.py
Normal 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)
|
|
@ -1,7 +1,11 @@
|
|||
""" functionality outline for a book data connector """
|
||||
from abc import ABC, abstractmethod
|
||||
import imghdr
|
||||
import ipaddress
|
||||
import logging
|
||||
from urllib.parse import urlparse
|
||||
|
||||
from django.core.files.base import ContentFile
|
||||
from django.db import transaction
|
||||
import requests
|
||||
from requests.exceptions import RequestException
|
||||
|
@ -248,6 +252,8 @@ def dict_from_mappings(data, mappings):
|
|||
def get_data(url, params=None, timeout=10):
|
||||
"""wrapper for request.get"""
|
||||
# check if the url is blocked
|
||||
raise_not_valid_url(url)
|
||||
|
||||
if models.FederatedServer.is_blocked(url):
|
||||
raise ConnectorException(f"Attempting to load data from blocked url: {url}")
|
||||
|
||||
|
@ -280,6 +286,7 @@ def get_data(url, params=None, timeout=10):
|
|||
|
||||
def get_image(url, timeout=10):
|
||||
"""wrapper for requesting an image"""
|
||||
raise_not_valid_url(url)
|
||||
try:
|
||||
resp = requests.get(
|
||||
url,
|
||||
|
@ -290,10 +297,32 @@ def get_image(url, timeout=10):
|
|||
)
|
||||
except RequestException as err:
|
||||
logger.exception(err)
|
||||
return None
|
||||
return None, None
|
||||
|
||||
if not resp.ok:
|
||||
return None
|
||||
return resp
|
||||
return None, None
|
||||
|
||||
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:
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
""" using django model forms """
|
||||
import datetime
|
||||
from collections import defaultdict
|
||||
from urllib.parse import urlparse
|
||||
|
||||
from django import forms
|
||||
from django.forms import ModelForm, PasswordInput, widgets, ChoiceField
|
||||
|
@ -227,6 +228,34 @@ class FileLinkForm(CustomForm):
|
|||
model = models.FileLink
|
||||
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 Meta:
|
||||
|
|
|
@ -7,6 +7,7 @@ from bookwyrm import settings
|
|||
r = redis.Redis(
|
||||
host=settings.REDIS_ACTIVITY_HOST,
|
||||
port=settings.REDIS_ACTIVITY_PORT,
|
||||
password=settings.REDIS_ACTIVITY_PASSWORD,
|
||||
db=settings.REDIS_ACTIVITY_DB_INDEX,
|
||||
)
|
||||
|
||||
|
|
37
bookwyrm/migrations/0132_alter_user_preferred_language.py
Normal file
37
bookwyrm/migrations/0132_alter_user_preferred_language.py
Normal 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,
|
||||
),
|
||||
),
|
||||
]
|
21
bookwyrm/migrations/0133_alter_listitem_notes.py
Normal file
21
bookwyrm/migrations/0133_alter_listitem_notes.py
Normal 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
|
||||
),
|
||||
),
|
||||
]
|
29
bookwyrm/migrations/0134_announcement_display_type.py
Normal file
29
bookwyrm/migrations/0134_announcement_display_type.py
Normal 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,
|
||||
),
|
||||
),
|
||||
]
|
|
@ -2,10 +2,21 @@
|
|||
from django.db import models
|
||||
from django.db.models import Q
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
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):
|
||||
"""The admin has something to say"""
|
||||
|
||||
|
@ -16,6 +27,13 @@ class Announcement(BookWyrmModel):
|
|||
start_date = models.DateTimeField(blank=True, null=True)
|
||||
end_date = models.DateTimeField(blank=True, null=True)
|
||||
active = models.BooleanField(default=True)
|
||||
display_type = models.CharField(
|
||||
max_length=20,
|
||||
blank=False,
|
||||
null=False,
|
||||
choices=DisplayTypes,
|
||||
default="white-ter",
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def active_announcements(cls):
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
""" activitypub-aware django model fields """
|
||||
from dataclasses import MISSING
|
||||
import imghdr
|
||||
import re
|
||||
from uuid import uuid4
|
||||
from urllib.parse import urljoin
|
||||
|
@ -9,7 +8,6 @@ import dateutil.parser
|
|||
from dateutil.parser import ParserError
|
||||
from django.contrib.postgres.fields import ArrayField as DjangoArrayField
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.core.files.base import ContentFile
|
||||
from django.db import models
|
||||
from django.forms import ClearableFileInput, ImageField as DjangoImageField
|
||||
from django.utils import timezone
|
||||
|
@ -443,12 +441,10 @@ class ImageField(ActivitypubFieldMixin, models.ImageField):
|
|||
except ValidationError:
|
||||
return None
|
||||
|
||||
response = get_image(url)
|
||||
if not response:
|
||||
image_content, extension = get_image(url)
|
||||
if not image_content:
|
||||
return None
|
||||
|
||||
image_content = ContentFile(response.content)
|
||||
extension = imghdr.what(None, image_content.read()) or ""
|
||||
image_name = f"{uuid4()}.{extension}"
|
||||
return [image_name, image_content]
|
||||
|
||||
|
|
|
@ -142,7 +142,7 @@ class ListItem(CollectionItemMixin, BookWyrmModel):
|
|||
user = fields.ForeignKey(
|
||||
"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)
|
||||
order = fields.IntegerField()
|
||||
endorsement = models.ManyToManyField("User", related_name="endorsers")
|
||||
|
|
|
@ -4,6 +4,7 @@ import os
|
|||
import textwrap
|
||||
from io import BytesIO
|
||||
from uuid import uuid4
|
||||
import logging
|
||||
|
||||
import colorsys
|
||||
from colorthief import ColorThief
|
||||
|
@ -17,34 +18,49 @@ from django.db.models import Avg
|
|||
from bookwyrm import models, settings
|
||||
from bookwyrm.tasks import app
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
IMG_WIDTH = settings.PREVIEW_IMG_WIDTH
|
||||
IMG_HEIGHT = settings.PREVIEW_IMG_HEIGHT
|
||||
BG_COLOR = settings.PREVIEW_BG_COLOR
|
||||
TEXT_COLOR = settings.PREVIEW_TEXT_COLOR
|
||||
DEFAULT_COVER_COLOR = settings.PREVIEW_DEFAULT_COVER_COLOR
|
||||
DEFAULT_FONT = settings.PREVIEW_DEFAULT_FONT
|
||||
TRANSPARENT_COLOR = (0, 0, 0, 0)
|
||||
|
||||
margin = math.floor(IMG_HEIGHT / 10)
|
||||
gutter = math.floor(margin / 2)
|
||||
inner_img_height = math.floor(IMG_HEIGHT * 0.8)
|
||||
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):
|
||||
"""Loads custom font"""
|
||||
if font_name == "light":
|
||||
font_path = os.path.join(font_dir, "PublicSans-Light.ttf")
|
||||
if font_name == "regular":
|
||||
font_path = os.path.join(font_dir, "PublicSans-Regular.ttf")
|
||||
elif font_name == "bold":
|
||||
font_path = os.path.join(font_dir, "PublicSans-Bold.ttf")
|
||||
def get_imagefont(name, size):
|
||||
"""Loads an ImageFont based on config"""
|
||||
try:
|
||||
config = settings.FONTS[name]
|
||||
path = os.path.join(settings.FONT_DIR, config["directory"], config["filename"])
|
||||
return ImageFont.truetype(path, size)
|
||||
except KeyError:
|
||||
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:
|
||||
font = ImageFont.truetype(font_path, size)
|
||||
except OSError:
|
||||
font = ImageFont.load_default()
|
||||
if weight == "light":
|
||||
font.set_variation_by_name("Light")
|
||||
if weight == "bold":
|
||||
font.set_variation_by_name("Bold")
|
||||
if weight == "regular":
|
||||
font.set_variation_by_name("Regular")
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
return font
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ class InputHtmlParser(HTMLParser): # pylint: disable=abstract-method
|
|||
"ol",
|
||||
"li",
|
||||
]
|
||||
self.allowed_attrs = ["href", "rel", "src", "alt"]
|
||||
self.tag_stack = []
|
||||
self.output = []
|
||||
# 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):
|
||||
"""check if the tag is valid"""
|
||||
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)
|
||||
else:
|
||||
self.output.append(("data", ""))
|
||||
|
|
|
@ -9,7 +9,7 @@ from django.utils.translation import gettext_lazy as _
|
|||
env = Env()
|
||||
env.read_env()
|
||||
DOMAIN = env("DOMAIN")
|
||||
VERSION = "0.2.0"
|
||||
VERSION = "0.3.0"
|
||||
|
||||
PAGE_LENGTH = env("PAGE_LENGTH", 15)
|
||||
DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English")
|
||||
|
@ -35,6 +35,9 @@ LOCALE_PATHS = [
|
|||
]
|
||||
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"
|
||||
|
||||
# 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_HEIGHT = env.int("PREVIEW_IMG_HEIGHT", 630)
|
||||
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
|
||||
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
|
||||
|
@ -150,6 +164,9 @@ LOGGING = {
|
|||
"handlers": ["console", "mail_admins"],
|
||||
"level": LOG_LEVEL,
|
||||
},
|
||||
"django.utils.autoreload": {
|
||||
"level": "INFO",
|
||||
},
|
||||
# Add a bookwyrm-specific logger
|
||||
"bookwyrm": {
|
||||
"handlers": ["console"],
|
||||
|
@ -255,7 +272,7 @@ LANGUAGES = [
|
|||
("no-no", _("Norsk (Norwegian)")),
|
||||
("pt-br", _("Português do Brasil (Brazilian Portuguese)")),
|
||||
("pt-pt", _("Português Europeu (European Portuguese)")),
|
||||
("sv-se", _("Swedish (Svenska)")),
|
||||
("sv-se", _("Svenska (Swedish)")),
|
||||
("zh-hans", _("简体中文 (Simplified Chinese)")),
|
||||
("zh-hant", _("繁體中文 (Traditional Chinese)")),
|
||||
]
|
||||
|
@ -311,13 +328,12 @@ if USE_S3:
|
|||
MEDIA_FULL_URL = MEDIA_URL
|
||||
STATIC_FULL_URL = STATIC_URL
|
||||
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:
|
||||
STATIC_URL = "/static/"
|
||||
STATIC_ROOT = os.path.join(BASE_DIR, env("STATIC_ROOT", "static"))
|
||||
MEDIA_URL = "/images/"
|
||||
MEDIA_FULL_URL = f"{PROTOCOL}://{DOMAIN}{MEDIA_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)
|
||||
|
|
|
@ -319,7 +319,7 @@ details.details-panel summary {
|
|||
position: relative;
|
||||
}
|
||||
|
||||
details.details-panel summary .details-close {
|
||||
details summary .details-close {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
|
@ -327,7 +327,7 @@ details.details-panel summary .details-close {
|
|||
transition: transform 0.2s ease;
|
||||
}
|
||||
|
||||
details[open].details-panel summary .details-close {
|
||||
details[open] summary .details-close {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
|
@ -496,7 +496,7 @@ details[open].details-panel summary .details-close {
|
|||
max-height: 100%;
|
||||
|
||||
/* Useful when stretching under-sized images. */
|
||||
image-rendering: optimizeQuality;
|
||||
image-rendering: optimizequality;
|
||||
image-rendering: smooth;
|
||||
}
|
||||
|
||||
|
|
96
bookwyrm/static/fonts/source_han_sans/LICENSE.txt
Normal file
96
bookwyrm/static/fonts/source_han_sans/LICENSE.txt
Normal 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.
|
9
bookwyrm/static/fonts/source_han_sans/README.txt
Normal file
9
bookwyrm/static/fonts/source_han_sans/README.txt
Normal 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
|
22
bookwyrm/telemetry/open_telemetry.py
Normal file
22
bookwyrm/telemetry/open_telemetry.py
Normal 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()
|
|
@ -28,7 +28,7 @@
|
|||
|
||||
<div class="columns">
|
||||
{% 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="media notification">
|
||||
<div class="media-left">
|
||||
|
|
|
@ -356,10 +356,11 @@
|
|||
<form name="list-add" method="post" action="{% url 'list-add-book' %}">
|
||||
{% csrf_token %}
|
||||
<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>
|
||||
<div class="field has-addons">
|
||||
<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 %}
|
||||
<option value="{{ list.id }}">{{ list.name }}</option>
|
||||
{% endfor %}
|
||||
|
|
|
@ -56,9 +56,7 @@
|
|||
|
||||
{% block modal-footer %}
|
||||
<button class="button is-primary" type="submit">{% trans "Save" %}</button>
|
||||
{% if not static %}
|
||||
<button type="button" class="button" data-modal-close>{% trans "Cancel" %}</button>
|
||||
{% endif %}
|
||||
<button type="button" class="button" data-modal-close>{% trans "Cancel" %}</button>
|
||||
|
||||
{% endblock %}
|
||||
{% block modal-form-close %}</form>{% endblock %}
|
||||
|
|
|
@ -6,24 +6,24 @@
|
|||
|
||||
{% block content %}
|
||||
|
||||
<header class="block content">
|
||||
<header class="block">
|
||||
<h1 class="title">
|
||||
{% blocktrans with title=book|book_title %}
|
||||
Links for "<em>{{ title }}</em>"
|
||||
{% endblocktrans %}
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
<nav class="breadcrumb subtitle" aria-label="breadcrumbs">
|
||||
<ul>
|
||||
<li><a href="{% url 'book' book.id %}">{{ book|book_title }}</a></li>
|
||||
<li class="is-active">
|
||||
<a href="#" aria-current="page">
|
||||
{% trans "Edit links" %}
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<nav class="breadcrumb subtitle" aria-label="breadcrumbs">
|
||||
<ul>
|
||||
<li><a href="{% url 'book' book.id %}">{{ book|book_title }}</a></li>
|
||||
<li class="is-active">
|
||||
<a href="#" aria-current="page">
|
||||
{% trans "Edit links" %}
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<section class="block content">
|
||||
<div class="table-container">
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
<span class="icon icon-spinner is-pulled-left" aria-hidden="true"></span>
|
||||
<span>{% trans "In progress" %}</span>
|
||||
<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>
|
||||
</div>
|
||||
<div class="is-flex">
|
||||
|
@ -230,7 +230,7 @@
|
|||
|
||||
{% if not legacy %}
|
||||
<div>
|
||||
{% include 'snippets/pagination.html' with page=items %}
|
||||
{% include 'snippets/pagination.html' with page=items path=page_path %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endspaceless %}{% endblock %}
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
<div class="columns is-mobile">
|
||||
<div class="column is-narrow is-cover">
|
||||
<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>
|
||||
</div>
|
||||
|
||||
|
@ -79,14 +79,12 @@
|
|||
<div class="media-content">
|
||||
<div class="content">
|
||||
<header>
|
||||
{% url 'user-feed' user|username as user_path %}
|
||||
{% blocktrans trimmed with username=user.display_name %}
|
||||
{% url 'user-feed' item.user|username as user_path %}
|
||||
{% blocktrans trimmed with username=item.user.display_name %}
|
||||
<a href="{{ user_path }}">{{ username }}</a> says:
|
||||
{% endblocktrans %}
|
||||
</header>
|
||||
<p>
|
||||
{{ item.notes|to_markdown|safe }}
|
||||
</p>
|
||||
{{ item.notes|to_markdown|safe }}
|
||||
</div>
|
||||
{% if item.user == request.user %}
|
||||
<div>
|
||||
|
@ -97,7 +95,7 @@
|
|||
<span class="details-close icon icon-pencil" aria-hidden></span>
|
||||
</span>
|
||||
</summary>
|
||||
{% include "lists/edit_item_form.html" %}
|
||||
{% include "lists/edit_item_form.html" with book=item.book %}
|
||||
</details>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
@ -112,7 +110,7 @@
|
|||
<span class="details-close icon icon-plus" aria-hidden></span>
|
||||
</span>
|
||||
</summary>
|
||||
{% include "lists/edit_item_form.html" %}
|
||||
{% include "lists/edit_item_form.html" with book=item.book %}
|
||||
</details>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
|
|
@ -70,9 +70,7 @@
|
|||
|
||||
{% block modal-footer %}
|
||||
<button class="button is-primary" type="submit">{% trans "Save" %}</button>
|
||||
{% if not static %}
|
||||
<button type="button" class="button" data-modal-close>{% trans "Cancel" %}</button>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block modal-form-close %}
|
||||
|
|
|
@ -1,17 +1,20 @@
|
|||
{% extends 'settings/layout.html' %}
|
||||
{% load i18n %}{% load humanize %}
|
||||
{% load i18n %}
|
||||
{% load humanize %}
|
||||
|
||||
{% block title %}{% trans "Announcement" %} - {{ announcement.preview }}{% endblock %}
|
||||
|
||||
{% block header %}
|
||||
{% trans "Announcement" %}
|
||||
<a href="{% url 'settings-announcements' %}" class="has-text-weight-normal help">{% trans "Back to list" %}</a>
|
||||
{% endblock %}
|
||||
|
||||
{% block edit-button %}
|
||||
{% trans "Edit Announcement" as button_text %}
|
||||
<div class="field has-addons">
|
||||
<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>
|
||||
<form class="control" action="{% url 'settings-announcements-delete' announcement.id %}" method="post">
|
||||
{% csrf_token %}
|
||||
|
@ -23,12 +26,20 @@
|
|||
</div>
|
||||
{% 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 %}
|
||||
|
||||
<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">
|
||||
<dl>
|
||||
<dt class="is-pulled-left mr-5 has-text-weight-bold">{% trans "Visible:" %}</dt>
|
||||
|
|
|
@ -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 %}
|
|
@ -5,16 +5,15 @@
|
|||
{% block header %}{% trans "Announcements" %}{% endblock %}
|
||||
|
||||
{% block edit-button %}
|
||||
{% trans "Create Announcement" as button_text %}
|
||||
{% include 'snippets/toggle/open_button.html' with controls_text="create_announcement" icon_with_text="plus" text=button_text focus="create_announcement_header" %}
|
||||
<a href="{% url 'settings-announcements-edit' %}">
|
||||
{% 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 %}
|
||||
|
||||
{% block panel %}
|
||||
<form name="create-announcement" method="post" action="{% url 'settings-announcements' %}" class="block">
|
||||
{% include 'settings/announcements/announcement_form.html' with controls_text="create_announcement" %}
|
||||
</form>
|
||||
|
||||
<div class="block">
|
||||
<div class="block table-container">
|
||||
<table class="table is-striped">
|
||||
<tr>
|
||||
<th>
|
||||
|
@ -38,6 +37,9 @@
|
|||
{% trans "Status" as text %}
|
||||
{% include 'snippets/table-sort-header.html' with field="active" sort=sort text=text %}
|
||||
</th>
|
||||
<th>
|
||||
{% trans "Actions" %}
|
||||
</th>
|
||||
</tr>
|
||||
{% for announcement in announcements %}
|
||||
<tr>
|
||||
|
@ -46,6 +48,15 @@
|
|||
<td>{{ announcement.start_date|naturaltime|default:'' }}</td>
|
||||
<td>{{ announcement.end_date|naturaltime|default:'' }}</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>
|
||||
{% endfor %}
|
||||
{% if not announcements %}
|
||||
|
|
125
bookwyrm/templates/settings/announcements/edit_announcement.html
Normal file
125
bookwyrm/templates/settings/announcements/edit_announcement.html
Normal 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 %}
|
|
@ -9,6 +9,7 @@
|
|||
<div class="columns is-mobile">
|
||||
<div class="column">
|
||||
<h1 class="title">{% block header %}{% endblock %}</h1>
|
||||
{% block breadcrumbs %}{% endblock %}
|
||||
</div>
|
||||
<div class="column is-narrow">
|
||||
{% block edit-button %}{% endblock %}
|
||||
|
@ -16,6 +17,7 @@
|
|||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="block columns">
|
||||
<nav class="menu column is-one-quarter">
|
||||
<h2 class="menu-label">
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
href="{{ shelf_tab.local_path }}"
|
||||
{% 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>
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
|
|
@ -1,32 +1,29 @@
|
|||
{% load humanize %}{% load i18n %}{% load utilities %}
|
||||
{% with announcement.id|uuid as uuid %}
|
||||
<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 %}
|
||||
>
|
||||
<div class="columns mb-0 is-mobile">
|
||||
<div class="column pb-0">
|
||||
<details>
|
||||
<summary>
|
||||
{% if announcement.event_date %}
|
||||
<strong>{{ announcement.event_date|naturalday|title }}:</strong>
|
||||
{% endif %}
|
||||
{{ announcement.preview }}
|
||||
</div>
|
||||
|
||||
{{ announcement.preview|safe }}
|
||||
|
||||
{% if announcement.content %}
|
||||
<span class="details-close mt-4 mr-4 icon icon-x is-small" aria-hidden></span>
|
||||
{% endif %}
|
||||
</summary>
|
||||
{% if announcement.content %}
|
||||
<div class="column is-narrow pb-0">
|
||||
{% 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 class="mb-2 mt-2" id="announcement_{{ uuid }}">
|
||||
<div class="box is-shadowless mb-0">
|
||||
{{ announcement.content|safe }}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if announcement.content %}
|
||||
<div class="mb-2 mt-2 {% if not pressed %}is-hidden{% endif %}" id="announcement_{{ uuid }}">
|
||||
<div class="box is-shadowless mb-0">
|
||||
{{ announcement.content|safe }}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</details>
|
||||
<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>
|
||||
{% if not admin_mode %}
|
||||
|
|
|
@ -50,9 +50,7 @@
|
|||
{% block modal-footer %}
|
||||
|
||||
<button class="button is-success" type="submit">{% trans "Submit" %}</button>
|
||||
{% if not static %}
|
||||
<button type="button" class="button" data-modal-close>{% trans "Cancel" %}</button>
|
||||
{% endif %}
|
||||
<button type="button" class="button" data-modal-close>{% trans "Cancel" %}</button>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
""" testing activitystreams """
|
||||
from datetime import datetime
|
||||
from unittest.mock import patch
|
||||
from django.test import TestCase
|
||||
from django.utils import timezone
|
||||
|
||||
from bookwyrm import activitystreams, models
|
||||
|
||||
|
||||
|
@ -51,13 +54,63 @@ class Activitystreams(TestCase):
|
|||
"""the abstract base class for stream objects"""
|
||||
self.assertEqual(
|
||||
self.test_stream.stream_id(self.local_user),
|
||||
"{}-test".format(self.local_user.id),
|
||||
f"{self.local_user.id}-test",
|
||||
)
|
||||
self.assertEqual(
|
||||
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, *_):
|
||||
"""get a list of users that should see a status"""
|
||||
status = models.Status.objects.create(
|
||||
|
|
|
@ -52,3 +52,29 @@ class Activitystreams(TestCase):
|
|||
# yes book, yes audience
|
||||
result = activitystreams.BooksStream().get_statuses_for_user(self.local_user)
|
||||
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")
|
||||
|
|
|
@ -4,8 +4,8 @@ from django.test import TestCase
|
|||
import responses
|
||||
|
||||
from bookwyrm import models
|
||||
from bookwyrm.connectors import abstract_connector
|
||||
from bookwyrm.connectors.abstract_connector import Mapping
|
||||
from bookwyrm.connectors import abstract_connector, ConnectorException
|
||||
from bookwyrm.connectors.abstract_connector import Mapping, get_data
|
||||
from bookwyrm.settings import DOMAIN
|
||||
|
||||
|
||||
|
@ -163,3 +163,11 @@ class AbstractConnector(TestCase):
|
|||
author.refresh_from_db()
|
||||
self.assertEqual(author.name, "Test")
|
||||
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")
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
""" testing models """
|
||||
from dateutil.parser import parse
|
||||
|
||||
from imagekit.models import ImageSpecField
|
||||
from django.test import TestCase
|
||||
from django.utils import timezone
|
||||
|
||||
|
|
|
@ -443,18 +443,17 @@ class ModelFields(TestCase):
|
|||
image_file = pathlib.Path(__file__).parent.joinpath(
|
||||
"../../static/images/default_avi.jpg"
|
||||
)
|
||||
image = Image.open(image_file)
|
||||
output = BytesIO()
|
||||
image.save(output, format=image.format)
|
||||
|
||||
instance = fields.ImageField()
|
||||
|
||||
responses.add(
|
||||
responses.GET,
|
||||
"http://www.example.com/image.jpg",
|
||||
body=image.tobytes(),
|
||||
status=200,
|
||||
)
|
||||
with open(image_file, "rb") as image_data:
|
||||
responses.add(
|
||||
responses.GET,
|
||||
"http://www.example.com/image.jpg",
|
||||
body=image_data.read(),
|
||||
status=200,
|
||||
content_type="image/jpeg",
|
||||
stream=True,
|
||||
)
|
||||
loaded_image = instance.field_from_activity("http://www.example.com/image.jpg")
|
||||
self.assertIsInstance(loaded_image, list)
|
||||
self.assertIsInstance(loaded_image[1], ContentFile)
|
||||
|
@ -465,18 +464,18 @@ class ModelFields(TestCase):
|
|||
image_file = pathlib.Path(__file__).parent.joinpath(
|
||||
"../../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")
|
||||
|
||||
responses.add(
|
||||
responses.GET,
|
||||
"http://www.example.com/image.jpg",
|
||||
body=image.tobytes(),
|
||||
status=200,
|
||||
)
|
||||
with open(image_file, "rb") as image_data:
|
||||
responses.add(
|
||||
responses.GET,
|
||||
"http://www.example.com/image.jpg",
|
||||
body=image_data.read(),
|
||||
content_type="image/jpeg",
|
||||
status=200,
|
||||
stream=True,
|
||||
)
|
||||
book = Edition.objects.create(title="hello")
|
||||
|
||||
MockActivity = namedtuple("MockActivity", ("cover"))
|
||||
|
@ -491,18 +490,18 @@ class ModelFields(TestCase):
|
|||
image_file = pathlib.Path(__file__).parent.joinpath(
|
||||
"../../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")
|
||||
|
||||
responses.add(
|
||||
responses.GET,
|
||||
"http://www.example.com/image.jpg",
|
||||
body=image.tobytes(),
|
||||
status=200,
|
||||
)
|
||||
with open(image_file, "rb") as image_data:
|
||||
responses.add(
|
||||
responses.GET,
|
||||
"http://www.example.com/image.jpg",
|
||||
body=image_data.read(),
|
||||
status=200,
|
||||
content_type="image/jpeg",
|
||||
stream=True,
|
||||
)
|
||||
book = Edition.objects.create(title="hello")
|
||||
|
||||
MockActivity = namedtuple("MockActivity", ("cover"))
|
||||
|
@ -565,18 +564,18 @@ class ModelFields(TestCase):
|
|||
another_image_file = pathlib.Path(__file__).parent.joinpath(
|
||||
"../../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")
|
||||
|
||||
responses.add(
|
||||
responses.GET,
|
||||
"http://www.example.com/image.jpg",
|
||||
body=another_image.tobytes(),
|
||||
status=200,
|
||||
)
|
||||
with open(another_image_file, "rb") as another_image:
|
||||
responses.add(
|
||||
responses.GET,
|
||||
"http://www.example.com/image.jpg",
|
||||
body=another_image.read(),
|
||||
status=200,
|
||||
content_type="image/jpeg",
|
||||
stream=True,
|
||||
)
|
||||
|
||||
MockActivity = namedtuple("MockActivity", ("cover"))
|
||||
mock_activity = MockActivity("http://www.example.com/image.jpg")
|
||||
|
|
|
@ -24,13 +24,21 @@ class Sanitizer(TestCase):
|
|||
self.assertEqual(input_text, output)
|
||||
|
||||
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>'
|
||||
parser = InputHtmlParser()
|
||||
parser.feed(input_text)
|
||||
output = parser.get_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):
|
||||
"""remove all html when the html is malformed"""
|
||||
input_text = "<b>yes <i>html</i>"
|
||||
|
|
|
@ -74,11 +74,12 @@ class AnnouncementViews(TestCase):
|
|||
|
||||
def test_create_announcement(self):
|
||||
"""create a new announcement"""
|
||||
view = views.Announcements.as_view()
|
||||
view = views.EditAnnouncement.as_view()
|
||||
form = forms.AnnouncementForm()
|
||||
form.data["preview"] = "hi hi"
|
||||
form.data["start_date"] = "2021-05-20"
|
||||
form.data["user"] = self.local_user.id
|
||||
form.data["display_type"] = "warning-light"
|
||||
|
||||
request = self.factory.post("", form.data)
|
||||
request.user = self.local_user
|
||||
|
@ -97,11 +98,12 @@ class AnnouncementViews(TestCase):
|
|||
announcement = models.Announcement.objects.create(
|
||||
preview="hi", user=self.local_user
|
||||
)
|
||||
view = views.Announcement.as_view()
|
||||
view = views.EditAnnouncement.as_view()
|
||||
form = forms.AnnouncementForm(instance=announcement)
|
||||
form.data["preview"] = "hi hi"
|
||||
form.data["start_date"] = "2021-05-20"
|
||||
form.data["user"] = self.local_user.id
|
||||
form.data["display_type"] = "warning-light"
|
||||
|
||||
request = self.factory.post("", form.data)
|
||||
request.user = self.local_user
|
||||
|
|
|
@ -80,6 +80,15 @@ class LinkViews(TestCase):
|
|||
activity = json.loads(mock.call_args[1]["args"][1])
|
||||
self.assertEqual(activity["type"], "Update")
|
||||
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()
|
||||
self.assertEqual(link.name, "www.example.com")
|
||||
|
|
|
@ -6,7 +6,6 @@ from unittest.mock import patch
|
|||
from django.test import TestCase
|
||||
|
||||
from bookwyrm import models, views
|
||||
from bookwyrm.activitypub.base_activity import set_related_field
|
||||
|
||||
|
||||
# pylint: disable=too-many-public-methods
|
||||
|
|
|
@ -85,6 +85,7 @@ class ListViews(TestCase):
|
|||
user=self.local_user,
|
||||
book=self.book,
|
||||
approved=True,
|
||||
notes="hello",
|
||||
order=1,
|
||||
)
|
||||
|
||||
|
@ -178,6 +179,7 @@ class ListViews(TestCase):
|
|||
book_list=self.list,
|
||||
user=self.local_user,
|
||||
book=self.book,
|
||||
notes="hi hello",
|
||||
approved=True,
|
||||
order=1,
|
||||
)
|
||||
|
|
|
@ -67,4 +67,4 @@ class ListItemViews(TestCase):
|
|||
self.assertEqual(mock.call_count, 1)
|
||||
|
||||
item.refresh_from_db()
|
||||
self.assertEqual(item.notes, "beep boop")
|
||||
self.assertEqual(item.notes, "<p>beep boop</p>")
|
||||
|
|
|
@ -50,6 +50,43 @@ class AuthorViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
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"""
|
||||
view = views.Author.as_view()
|
||||
author = models.Author.objects.create(name="Jessica")
|
||||
|
|
|
@ -93,6 +93,16 @@ urlpatterns = [
|
|||
views.Announcement.as_view(),
|
||||
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(
|
||||
r"^settings/announcements/(?P<announcement_id>\d+)/delete/?$",
|
||||
views.delete_announcement,
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
""" make sure all our nice views are available """
|
||||
# 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.federation import Federation, FederatedServer
|
||||
from .admin.federation import AddFederatedServer, ImportServerBlocklist
|
||||
|
|
|
@ -45,23 +45,6 @@ class Announcements(View):
|
|||
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(
|
||||
|
@ -76,27 +59,52 @@ class Announcement(View):
|
|||
announcement = get_object_or_404(models.Announcement, id=announcement_id)
|
||||
data = {
|
||||
"announcement": announcement,
|
||||
"form": forms.AnnouncementForm(instance=announcement),
|
||||
}
|
||||
return TemplateResponse(
|
||||
request, "settings/announcements/announcement.html", data
|
||||
)
|
||||
|
||||
def post(self, request, announcement_id):
|
||||
"""edit announcement"""
|
||||
announcement = get_object_or_404(models.Announcement, id=announcement_id)
|
||||
form = forms.AnnouncementForm(request.POST, instance=announcement)
|
||||
if form.is_valid():
|
||||
announcement = form.save()
|
||||
form = forms.AnnouncementForm(instance=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)
|
||||
|
||||
data = {
|
||||
"announcement": announcement,
|
||||
"form": form,
|
||||
"form": forms.AnnouncementForm(instance=announcement),
|
||||
}
|
||||
return TemplateResponse(
|
||||
request, "settings/announcements/announcement.html", data
|
||||
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)
|
||||
if not form.is_valid():
|
||||
data = {
|
||||
"announcement": announcement,
|
||||
"form": form,
|
||||
}
|
||||
return TemplateResponse(
|
||||
request, "settings/announcements/edit_announcement.html", data
|
||||
)
|
||||
announcement = form.save()
|
||||
return redirect("settings-announcements", announcement.id)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required("bookwyrm.edit_instance_settings", raise_exception=True)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
""" the good people stuff! the authors! """
|
||||
from django.contrib.auth.decorators import login_required, permission_required
|
||||
from django.core.paginator import Paginator
|
||||
from django.db.models import Q
|
||||
from django.shortcuts import get_object_or_404, redirect
|
||||
from django.template.response import TemplateResponse
|
||||
from django.utils.decorators import method_decorator
|
||||
|
@ -25,9 +26,11 @@ class Author(View):
|
|||
if is_api_request(request):
|
||||
return ActivitypubResponse(author.to_activity())
|
||||
|
||||
books = models.Work.objects.filter(
|
||||
authors=author, editions__authors=author
|
||||
).distinct()
|
||||
books = (
|
||||
models.Work.objects.filter(Q(authors=author) | Q(editions__authors=author))
|
||||
.order_by("-published_date")
|
||||
.distinct()
|
||||
)
|
||||
|
||||
paginated = Paginator(books, PAGE_LENGTH)
|
||||
page = paginated.get_page(request.GET.get("page"))
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
from uuid import uuid4
|
||||
|
||||
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.db.models import Avg, Q
|
||||
from django.http import Http404
|
||||
|
@ -144,13 +143,12 @@ def upload_cover(request, book_id):
|
|||
def set_cover_from_url(url):
|
||||
"""load it from a url"""
|
||||
try:
|
||||
image_file = get_image(url)
|
||||
image_content, extension = get_image(url)
|
||||
except: # pylint: disable=bare-except
|
||||
return None
|
||||
if not image_file:
|
||||
if not image_content:
|
||||
return None
|
||||
image_name = str(uuid4()) + "." + url.split(".")[-1]
|
||||
image_content = ContentFile(image_file.content)
|
||||
image_name = str(uuid4()) + "." + extension
|
||||
return [image_name, image_content]
|
||||
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ from django.core.paginator import Paginator
|
|||
from django.shortcuts import get_object_or_404, redirect
|
||||
from django.template.response import TemplateResponse
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.urls import reverse
|
||||
from django.views import View
|
||||
|
||||
from bookwyrm import models
|
||||
|
@ -35,6 +36,7 @@ class ImportTroubleshoot(View):
|
|||
page.number, on_each_side=2, on_ends=1
|
||||
),
|
||||
"complete": True,
|
||||
"page_path": reverse("import-troubleshoot", args=[job.id]),
|
||||
}
|
||||
|
||||
return TemplateResponse(request, "import/troubleshoot.html", data)
|
||||
|
|
|
@ -5,6 +5,7 @@ from django.utils.decorators import method_decorator
|
|||
from django.views import View
|
||||
|
||||
from bookwyrm import forms, models
|
||||
from bookwyrm.views.status import to_markdown
|
||||
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
|
@ -18,5 +19,9 @@ class ListItem(View):
|
|||
list_item.raise_not_editable(request.user)
|
||||
form = forms.ListItemForm(request.POST, instance=list_item)
|
||||
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)
|
||||
|
|
|
@ -31,12 +31,17 @@ class User(View):
|
|||
shelf_preview = []
|
||||
|
||||
# only show shelves that should be visible
|
||||
shelves = user.shelf_set
|
||||
is_self = request.user.id == user.id
|
||||
if not is_self:
|
||||
shelves = models.Shelf.privacy_filter(
|
||||
request.user, privacy_levels=["public", "followers"]
|
||||
).filter(user=user, books__isnull=False)
|
||||
shelves = (
|
||||
models.Shelf.privacy_filter(
|
||||
request.user, privacy_levels=["public", "followers"]
|
||||
)
|
||||
.filter(user=user, books__isnull=False)
|
||||
.distinct()
|
||||
)
|
||||
else:
|
||||
shelves = user.shelf_set.filter(books__isnull=False).distinct()
|
||||
|
||||
for user_shelf in shelves.all()[:3]:
|
||||
shelf_preview.append(
|
||||
|
|
25
bw-dev
25
bw-dev
|
@ -30,12 +30,12 @@ function execweb {
|
|||
}
|
||||
|
||||
function initdb {
|
||||
execweb python manage.py migrate
|
||||
execweb python manage.py initdb "$@"
|
||||
runweb python manage.py migrate
|
||||
runweb python manage.py initdb "$@"
|
||||
}
|
||||
|
||||
function makeitblack {
|
||||
docker-compose run --rm web black celerywyrm bookwyrm
|
||||
docker-compose run --rm dev-tools black celerywyrm bookwyrm
|
||||
}
|
||||
|
||||
function awscommand {
|
||||
|
@ -97,7 +97,7 @@ case "$CMD" in
|
|||
docker-compose restart celery_worker
|
||||
;;
|
||||
pytest)
|
||||
execweb pytest --no-cov-on-fail "$@"
|
||||
runweb pytest --no-cov-on-fail "$@"
|
||||
;;
|
||||
collectstatic)
|
||||
runweb python manage.py collectstatic --no-input
|
||||
|
@ -135,7 +135,17 @@ case "$CMD" in
|
|||
makeitblack
|
||||
;;
|
||||
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)
|
||||
git pull
|
||||
|
@ -143,6 +153,8 @@ case "$CMD" in
|
|||
runweb python manage.py migrate
|
||||
runweb python manage.py collectstatic --no-input
|
||||
docker-compose up -d
|
||||
docker-compose restart web
|
||||
docker-compose restart celery_worker
|
||||
;;
|
||||
populate_streams)
|
||||
runweb python manage.py populate_streams "$@"
|
||||
|
@ -209,6 +221,9 @@ case "$CMD" in
|
|||
echo " build"
|
||||
echo " clean"
|
||||
echo " black"
|
||||
echo " prettier"
|
||||
echo " stylelint"
|
||||
echo " formatters"
|
||||
echo " populate_streams [--stream=<stream name>]"
|
||||
echo " populate_suggestions"
|
||||
echo " generate_thumbnails"
|
||||
|
|
13
celerywyrm/apps.py
Normal file
13
celerywyrm/apps.py
Normal 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()
|
19
certbot.sh
19
certbot.sh
|
@ -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
|
|
@ -21,6 +21,8 @@ build
|
|||
clean
|
||||
black
|
||||
prettier
|
||||
stylelint
|
||||
formatters
|
||||
populate_streams
|
||||
populate_lists_streams
|
||||
populate_suggestions
|
||||
|
|
14
dev-tools/Dockerfile
Normal file
14
dev-tools/Dockerfile
Normal 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 .
|
|
@ -3,15 +3,16 @@
|
|||
"watch:static": "yarn watch \"./bw-dev collectstatic\" bookwyrm/static/**"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^7.23.0",
|
||||
"eslint": "^8.9.0",
|
||||
"prettier": "2.5.1",
|
||||
"stylelint": "^14.2.0",
|
||||
"stylelint-config-standard": "^24.0.0",
|
||||
"stylelint-order": "^5.0.0",
|
||||
"stylelint": "^14.5.0",
|
||||
"watch": "^0.13.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"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"
|
||||
}
|
||||
}
|
1
dev-tools/requirements.txt
Normal file
1
dev-tools/requirements.txt
Normal file
|
@ -0,0 +1 @@
|
|||
black==21.4b2
|
|
@ -35,29 +35,27 @@ services:
|
|||
networks:
|
||||
- main
|
||||
ports:
|
||||
- 8000:8000
|
||||
- 8000
|
||||
redis_activity:
|
||||
image: redis
|
||||
command: redis-server --requirepass ${REDIS_ACTIVITY_PASSWORD} --appendonly yes --port ${REDIS_ACTIVITY_PORT}
|
||||
env_file: .env
|
||||
networks:
|
||||
- main
|
||||
restart: on-failure
|
||||
volumes:
|
||||
- ./redis.conf:/etc/redis/redis.conf
|
||||
- redis_activity_data:/data
|
||||
redis_broker:
|
||||
image: redis
|
||||
command: redis-server --requirepass ${REDIS_BROKER_PASSWORD} --appendonly yes --port ${REDIS_BROKER_PORT}
|
||||
env_file: .env
|
||||
ports:
|
||||
- 6379:6379
|
||||
networks:
|
||||
- main
|
||||
restart: on-failure
|
||||
redis_broker:
|
||||
image: redis
|
||||
command: redis-server --requirepass ${REDIS_BROKER_PASSWORD} --appendonly yes --port ${REDIS_BROKER_PORT}
|
||||
volumes:
|
||||
- ./redis.conf:/etc/redis/redis.conf
|
||||
- redis_broker_data:/data
|
||||
env_file: .env
|
||||
networks:
|
||||
- main
|
||||
restart: on-failure
|
||||
celery_worker:
|
||||
env_file: .env
|
||||
build: .
|
||||
|
@ -74,10 +72,10 @@ services:
|
|||
restart: on-failure
|
||||
flower:
|
||||
build: .
|
||||
command: celery -A celerywyrm flower
|
||||
command: celery -A celerywyrm flower --basic_auth=${FLOWER_USER}:${FLOWER_PASSWORD}
|
||||
env_file: .env
|
||||
ports:
|
||||
- ${FLOWER_PORT}:${FLOWER_PORT}
|
||||
- ${FLOWER_PORT}
|
||||
volumes:
|
||||
- .:/app
|
||||
networks:
|
||||
|
@ -86,6 +84,11 @@ services:
|
|||
- db
|
||||
- redis_broker
|
||||
restart: on-failure
|
||||
dev-tools:
|
||||
build: dev-tools
|
||||
env_file: .env
|
||||
volumes:
|
||||
- .:/app
|
||||
volumes:
|
||||
pgdata:
|
||||
static_volume:
|
||||
|
|
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-28 02:50+0000\n"
|
||||
"PO-Revision-Date: 2022-01-29 14:28\n"
|
||||
"POT-Creation-Date: 2022-02-02 20:09+0000\n"
|
||||
"PO-Revision-Date: 2022-02-04 21:01\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: German\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-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."
|
||||
msgstr "Es existiert bereits ein Benutzer*inkonto mit dieser E-Mail-Adresse."
|
||||
|
||||
#: bookwyrm/forms.py:379
|
||||
#: bookwyrm/forms.py:392
|
||||
msgid "One Day"
|
||||
msgstr "Ein Tag"
|
||||
|
||||
#: bookwyrm/forms.py:380
|
||||
#: bookwyrm/forms.py:393
|
||||
msgid "One Week"
|
||||
msgstr "Eine Woche"
|
||||
|
||||
#: bookwyrm/forms.py:381
|
||||
#: bookwyrm/forms.py:394
|
||||
msgid "One Month"
|
||||
msgstr "Ein Monat"
|
||||
|
||||
#: bookwyrm/forms.py:382
|
||||
#: bookwyrm/forms.py:395
|
||||
msgid "Does Not Expire"
|
||||
msgstr "Läuft nicht ab"
|
||||
|
||||
#: bookwyrm/forms.py:386
|
||||
#: bookwyrm/forms.py:399
|
||||
#, python-brace-format
|
||||
msgid "{i} uses"
|
||||
msgstr "{i}-mal verwendbar"
|
||||
|
||||
#: bookwyrm/forms.py:387
|
||||
#: bookwyrm/forms.py:400
|
||||
msgid "Unlimited"
|
||||
msgstr "Unbegrenzt"
|
||||
|
||||
#: bookwyrm/forms.py:489
|
||||
#: bookwyrm/forms.py:502
|
||||
msgid "List Order"
|
||||
msgstr "Reihenfolge der Liste"
|
||||
|
||||
#: bookwyrm/forms.py:490
|
||||
#: bookwyrm/forms.py:503
|
||||
msgid "Book Title"
|
||||
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/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
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"
|
||||
msgstr "Sortieren nach"
|
||||
|
||||
#: bookwyrm/forms.py:497
|
||||
#: bookwyrm/forms.py:510
|
||||
msgid "Ascending"
|
||||
msgstr "Aufsteigend"
|
||||
|
||||
#: bookwyrm/forms.py:498
|
||||
#: bookwyrm/forms.py:511
|
||||
msgid "Descending"
|
||||
msgstr "Absteigend"
|
||||
|
||||
#: bookwyrm/forms.py:511
|
||||
#: bookwyrm/forms.py:524
|
||||
msgid "Reading finish date cannot be before start date."
|
||||
msgstr "Enddatum darf nicht vor dem Startdatum liegen."
|
||||
|
||||
|
@ -140,26 +148,26 @@ msgstr "Föderiert"
|
|||
msgid "Blocked"
|
||||
msgstr "Blockiert"
|
||||
|
||||
#: bookwyrm/models/fields.py:29
|
||||
#: bookwyrm/models/fields.py:27
|
||||
#, python-format
|
||||
msgid "%(value)s is not a valid 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
|
||||
msgid "%(value)s is not a valid username"
|
||||
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
|
||||
msgid "username"
|
||||
msgstr "Benutzer*inname"
|
||||
|
||||
#: bookwyrm/models/fields.py:188
|
||||
#: bookwyrm/models/fields.py:186
|
||||
msgid "A user with that username already exists."
|
||||
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:4
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:11
|
||||
|
@ -167,7 +175,7 @@ msgstr "Dieser Benutzer*inname ist bereits vergeben."
|
|||
msgid "Public"
|
||||
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:8
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:14
|
||||
|
@ -175,14 +183,14 @@ msgstr "Öffentlich"
|
|||
msgid "Unlisted"
|
||||
msgstr "Ungelistet"
|
||||
|
||||
#: bookwyrm/models/fields.py:209
|
||||
#: bookwyrm/models/fields.py:207
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:17
|
||||
#: bookwyrm/templates/user/relationships/followers.html:6
|
||||
#: bookwyrm/templates/user/relationships/layout.html:11
|
||||
msgid "Followers"
|
||||
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/privacy-icons.html:15
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:16
|
||||
|
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
|
|||
msgstr "Português Europeu (Portugiesisch)"
|
||||
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "Swedish (Svenska)"
|
||||
msgstr ""
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Schwedisch)"
|
||||
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
|
@ -369,7 +377,7 @@ msgstr "Administration"
|
|||
#: bookwyrm/templates/about/about.html:131
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: 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"
|
||||
msgstr "Direktnachricht senden"
|
||||
|
||||
|
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
|
|||
msgstr "Physikalische Eigenschaften"
|
||||
|
||||
#: 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:"
|
||||
msgstr "Format:"
|
||||
|
||||
|
@ -1055,17 +1063,17 @@ msgstr "Ausgaben von %(book_title)s"
|
|||
msgid "Editions of <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/language_filter.html:8
|
||||
#: bookwyrm/templates/book/editions/format_filter.html:9
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:9
|
||||
msgid "Any"
|
||||
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
|
||||
msgid "Language:"
|
||||
msgstr "Sprache:"
|
||||
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:5
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:6
|
||||
msgid "Search editions"
|
||||
msgstr "Ausgaben suchen"
|
||||
|
||||
|
@ -3574,23 +3582,31 @@ msgstr "Keine Links für diese Domain vorhanden."
|
|||
msgid "Back to reports"
|
||||
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"
|
||||
msgstr "Gemeldete Statusmeldungen"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:27
|
||||
#: bookwyrm/templates/settings/reports/report.html:40
|
||||
msgid "Status has been deleted"
|
||||
msgstr "Statusmeldung gelöscht"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:39
|
||||
#: bookwyrm/templates/settings/reports/report.html:52
|
||||
msgid "Reported links"
|
||||
msgstr "Gemeldete Links"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:55
|
||||
#: bookwyrm/templates/settings/reports/report.html:68
|
||||
msgid "Moderator Comments"
|
||||
msgstr "Moderator*innenkommentare"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:73
|
||||
#: bookwyrm/templates/settings/reports/report.html:89
|
||||
#: bookwyrm/templates/snippets/create_status.html:28
|
||||
msgid "Comment"
|
||||
msgstr "Kommentieren"
|
||||
|
@ -4015,14 +4031,14 @@ msgstr "Prozent"
|
|||
msgid "of %(pages)s pages"
|
||||
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:53
|
||||
#: bookwyrm/templates/snippets/status/layout.html:54
|
||||
msgid "Reply"
|
||||
msgstr "Antworten"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:18
|
||||
msgid "Content"
|
||||
msgstr "Inhalt"
|
||||
|
||||
|
@ -4100,7 +4116,7 @@ msgstr "Filter werden angewendet"
|
|||
msgid "Clear filters"
|
||||
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"
|
||||
msgstr "Filter anwenden"
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 0.0.1\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"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: English <LL@li.org>\n"
|
||||
|
@ -18,62 +18,70 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\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."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms.py:379
|
||||
#: bookwyrm/forms.py:408
|
||||
msgid "One Day"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms.py:380
|
||||
#: bookwyrm/forms.py:409
|
||||
msgid "One Week"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms.py:381
|
||||
#: bookwyrm/forms.py:410
|
||||
msgid "One Month"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms.py:382
|
||||
#: bookwyrm/forms.py:411
|
||||
msgid "Does Not Expire"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms.py:386
|
||||
#: bookwyrm/forms.py:415
|
||||
#, python-brace-format
|
||||
msgid "{i} uses"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms.py:387
|
||||
#: bookwyrm/forms.py:416
|
||||
msgid "Unlimited"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms.py:489
|
||||
#: bookwyrm/forms.py:518
|
||||
msgid "List Order"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms.py:490
|
||||
#: bookwyrm/forms.py:519
|
||||
msgid "Book Title"
|
||||
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/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177
|
||||
#: bookwyrm/forms.py:522 bookwyrm/templates/lists/list.html:175
|
||||
msgid "Sort By"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms.py:497
|
||||
#: bookwyrm/forms.py:526
|
||||
msgid "Ascending"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms.py:498
|
||||
#: bookwyrm/forms.py:527
|
||||
msgid "Descending"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms.py:511
|
||||
#: bookwyrm/forms.py:540
|
||||
msgid "Reading finish date cannot be before start date."
|
||||
msgstr ""
|
||||
|
||||
|
@ -141,26 +149,26 @@ msgstr ""
|
|||
msgid "Blocked"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/models/fields.py:29
|
||||
#: bookwyrm/models/fields.py:27
|
||||
#, python-format
|
||||
msgid "%(value)s is not a valid remote_id"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
|
||||
#: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45
|
||||
#, python-format
|
||||
msgid "%(value)s is not a valid username"
|
||||
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
|
||||
msgid "username"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/models/fields.py:188
|
||||
#: bookwyrm/models/fields.py:186
|
||||
msgid "A user with that username already exists."
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/models/fields.py:207
|
||||
#: bookwyrm/models/fields.py:205
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:3
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:4
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:11
|
||||
|
@ -168,7 +176,7 @@ msgstr ""
|
|||
msgid "Public"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/models/fields.py:208
|
||||
#: bookwyrm/models/fields.py:206
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:7
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:8
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:14
|
||||
|
@ -176,14 +184,14 @@ msgstr ""
|
|||
msgid "Unlisted"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/models/fields.py:209
|
||||
#: bookwyrm/models/fields.py:207
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:17
|
||||
#: bookwyrm/templates/user/relationships/followers.html:6
|
||||
#: bookwyrm/templates/user/relationships/layout.html:11
|
||||
msgid "Followers"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/models/fields.py:210
|
||||
#: bookwyrm/models/fields.py:208
|
||||
#: bookwyrm/templates/snippets/create_status/post_options_block.html:8
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:15
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:16
|
||||
|
@ -225,73 +233,73 @@ msgstr ""
|
|||
msgid "Everything else"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:173
|
||||
#: bookwyrm/settings.py:190
|
||||
msgid "Home Timeline"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:173
|
||||
#: bookwyrm/settings.py:190
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:174
|
||||
#: bookwyrm/settings.py:191
|
||||
msgid "Books Timeline"
|
||||
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/user/layout.html:91
|
||||
msgid "Books"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:248
|
||||
#: bookwyrm/settings.py:265
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:249
|
||||
#: bookwyrm/settings.py:266
|
||||
msgid "Deutsch (German)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:250
|
||||
#: bookwyrm/settings.py:267
|
||||
msgid "Español (Spanish)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:251
|
||||
#: bookwyrm/settings.py:268
|
||||
msgid "Galego (Galician)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:252
|
||||
#: bookwyrm/settings.py:269
|
||||
msgid "Italiano (Italian)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:253
|
||||
#: bookwyrm/settings.py:270
|
||||
msgid "Français (French)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:254
|
||||
#: bookwyrm/settings.py:271
|
||||
msgid "Lietuvių (Lithuanian)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:255
|
||||
#: bookwyrm/settings.py:272
|
||||
msgid "Norsk (Norwegian)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:256
|
||||
#: bookwyrm/settings.py:273
|
||||
msgid "Português do Brasil (Brazilian Portuguese)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:257
|
||||
#: bookwyrm/settings.py:274
|
||||
msgid "Português Europeu (European Portuguese)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "Swedish (Svenska)"
|
||||
#: bookwyrm/settings.py:275
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:259
|
||||
#: bookwyrm/settings.py:276
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:260
|
||||
#: bookwyrm/settings.py:277
|
||||
msgid "繁體中文 (Traditional Chinese)"
|
||||
msgstr ""
|
||||
|
||||
|
@ -370,7 +378,7 @@ msgstr ""
|
|||
#: bookwyrm/templates/about/about.html:131
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
|
@ -429,7 +437,7 @@ msgid "Copy address"
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/annual_summary/layout.html:68
|
||||
#: bookwyrm/templates/lists/list.html:269
|
||||
#: bookwyrm/templates/lists/list.html:267
|
||||
msgid "Copied!"
|
||||
msgstr ""
|
||||
|
||||
|
@ -714,17 +722,17 @@ msgstr ""
|
|||
#: bookwyrm/templates/book/cover_add_modal.html:32
|
||||
#: bookwyrm/templates/book/edit/edit_book.html:123
|
||||
#: 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/sync_modal.html:23
|
||||
#: bookwyrm/templates/groups/delete_group_modal.html:17
|
||||
#: bookwyrm/templates/lists/add_item_modal.html:42
|
||||
#: bookwyrm/templates/lists/delete_list_modal.html:18
|
||||
#: 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/link_domains/edit_domain_modal.html:22
|
||||
#: bookwyrm/templates/snippets/report_modal.html:54
|
||||
#: bookwyrm/templates/snippets/report_modal.html:53
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
|
@ -831,14 +839,14 @@ msgstr ""
|
|||
msgid "Lists"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:359
|
||||
#: bookwyrm/templates/book/book.html:360
|
||||
msgid "Add to list"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/book.html:369
|
||||
#: bookwyrm/templates/book/book.html:370
|
||||
#: bookwyrm/templates/book/cover_add_modal.html:31
|
||||
#: 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/ip_blocklist/ip_address_form.html:31
|
||||
msgid "Add"
|
||||
|
@ -1018,7 +1026,7 @@ msgid "Physical Properties"
|
|||
msgstr ""
|
||||
|
||||
#: 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:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1056,17 +1064,17 @@ msgstr ""
|
|||
msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/editions/format_filter.html:8
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:8
|
||||
#: bookwyrm/templates/book/editions/format_filter.html:9
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:9
|
||||
msgid "Any"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:5
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:6
|
||||
#: bookwyrm/templates/preferences/edit_user.html:95
|
||||
msgid "Language:"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:5
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:6
|
||||
msgid "Search editions"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1651,7 +1659,7 @@ msgid "What are you reading?"
|
|||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1671,7 +1679,7 @@ msgstr ""
|
|||
#: bookwyrm/templates/get_started/users.html:19
|
||||
#: bookwyrm/templates/groups/members.html:15
|
||||
#: 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:9
|
||||
msgid "Search"
|
||||
|
@ -1687,7 +1695,7 @@ msgid "Popular on %(site_name)s"
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/get_started/books.html:58
|
||||
#: bookwyrm/templates/lists/list.html:222
|
||||
#: bookwyrm/templates/lists/list.html:220
|
||||
msgid "No books found"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2258,7 +2266,7 @@ msgid "Suggest \"<em>%(title)s</em>\" for this list"
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/add_item_modal.html:39
|
||||
#: bookwyrm/templates/lists/list.html:249
|
||||
#: bookwyrm/templates/lists/list.html:247
|
||||
msgid "Suggest"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2405,72 +2413,72 @@ msgstr ""
|
|||
msgid "You successfully added a book to this list!"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:96
|
||||
#: bookwyrm/templates/lists/list.html:94
|
||||
msgid "Edit notes"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:111
|
||||
#: bookwyrm/templates/lists/list.html:109
|
||||
msgid "Add notes"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:123
|
||||
#: bookwyrm/templates/lists/list.html:121
|
||||
#, python-format
|
||||
msgid "Added by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:138
|
||||
#: bookwyrm/templates/lists/list.html:136
|
||||
msgid "List position"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:144
|
||||
#: bookwyrm/templates/lists/list.html:142
|
||||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21
|
||||
msgid "Set"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:159
|
||||
#: bookwyrm/templates/lists/list.html:157
|
||||
#: bookwyrm/templates/snippets/remove_from_group_button.html:20
|
||||
msgid "Remove"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:173
|
||||
#: bookwyrm/templates/lists/list.html:190
|
||||
#: bookwyrm/templates/lists/list.html:171
|
||||
#: bookwyrm/templates/lists/list.html:188
|
||||
msgid "Sort List"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:183
|
||||
#: bookwyrm/templates/lists/list.html:181
|
||||
msgid "Direction"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:197
|
||||
#: bookwyrm/templates/lists/list.html:195
|
||||
msgid "Add Books"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:199
|
||||
#: bookwyrm/templates/lists/list.html:197
|
||||
msgid "Suggest Books"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:210
|
||||
#: bookwyrm/templates/lists/list.html:208
|
||||
msgid "search"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:216
|
||||
#: bookwyrm/templates/lists/list.html:214
|
||||
msgid "Clear search"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:221
|
||||
#: bookwyrm/templates/lists/list.html:219
|
||||
#, python-format
|
||||
msgid "No books found matching the query \"%(query)s\""
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:260
|
||||
#: bookwyrm/templates/lists/list.html:258
|
||||
msgid "Embed this list on a website"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:268
|
||||
#: bookwyrm/templates/lists/list.html:266
|
||||
msgid "Copy embed code"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:270
|
||||
#: bookwyrm/templates/lists/list.html:268
|
||||
#, python-format
|
||||
msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
|
||||
msgstr ""
|
||||
|
@ -4108,7 +4116,7 @@ msgstr ""
|
|||
msgid "Clear filters"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
|
||||
msgid "Apply filters"
|
||||
msgstr ""
|
||||
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-28 02:50+0000\n"
|
||||
"PO-Revision-Date: 2022-01-28 08:06\n"
|
||||
"POT-Creation-Date: 2022-02-02 20:09+0000\n"
|
||||
"PO-Revision-Date: 2022-02-04 22:13\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Spanish\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-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."
|
||||
msgstr "Ya existe un usuario con ese correo electrónico."
|
||||
|
||||
#: bookwyrm/forms.py:379
|
||||
#: bookwyrm/forms.py:392
|
||||
msgid "One Day"
|
||||
msgstr "Un día"
|
||||
|
||||
#: bookwyrm/forms.py:380
|
||||
#: bookwyrm/forms.py:393
|
||||
msgid "One Week"
|
||||
msgstr "Una semana"
|
||||
|
||||
#: bookwyrm/forms.py:381
|
||||
#: bookwyrm/forms.py:394
|
||||
msgid "One Month"
|
||||
msgstr "Un mes"
|
||||
|
||||
#: bookwyrm/forms.py:382
|
||||
#: bookwyrm/forms.py:395
|
||||
msgid "Does Not Expire"
|
||||
msgstr "No expira"
|
||||
|
||||
#: bookwyrm/forms.py:386
|
||||
#: bookwyrm/forms.py:399
|
||||
#, python-brace-format
|
||||
msgid "{i} uses"
|
||||
msgstr "{i} usos"
|
||||
|
||||
#: bookwyrm/forms.py:387
|
||||
#: bookwyrm/forms.py:400
|
||||
msgid "Unlimited"
|
||||
msgstr "Sin límite"
|
||||
|
||||
#: bookwyrm/forms.py:489
|
||||
#: bookwyrm/forms.py:502
|
||||
msgid "List Order"
|
||||
msgstr "Orden de la lista"
|
||||
|
||||
#: bookwyrm/forms.py:490
|
||||
#: bookwyrm/forms.py:503
|
||||
msgid "Book Title"
|
||||
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/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
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"
|
||||
msgstr "Ordenar por"
|
||||
|
||||
#: bookwyrm/forms.py:497
|
||||
#: bookwyrm/forms.py:510
|
||||
msgid "Ascending"
|
||||
msgstr "Ascendente"
|
||||
|
||||
#: bookwyrm/forms.py:498
|
||||
#: bookwyrm/forms.py:511
|
||||
msgid "Descending"
|
||||
msgstr "Descendente"
|
||||
|
||||
#: bookwyrm/forms.py:511
|
||||
#: bookwyrm/forms.py:524
|
||||
msgid "Reading finish date cannot be before start date."
|
||||
msgstr "La fecha final de lectura no puede ser anterior a la fecha de inicio."
|
||||
|
||||
|
@ -140,26 +148,26 @@ msgstr "Federalizado"
|
|||
msgid "Blocked"
|
||||
msgstr "Bloqueado"
|
||||
|
||||
#: bookwyrm/models/fields.py:29
|
||||
#: bookwyrm/models/fields.py:27
|
||||
#, python-format
|
||||
msgid "%(value)s is not a valid remote_id"
|
||||
msgstr "%(value)s no es un remote_id válido"
|
||||
|
||||
#: bookwyrm/models/fields.py:38 bookwyrm/models/fields.py:47
|
||||
#: bookwyrm/models/fields.py:36 bookwyrm/models/fields.py:45
|
||||
#, python-format
|
||||
msgid "%(value)s is not a valid username"
|
||||
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
|
||||
msgid "username"
|
||||
msgstr "nombre de usuario"
|
||||
|
||||
#: bookwyrm/models/fields.py:188
|
||||
#: bookwyrm/models/fields.py:186
|
||||
msgid "A user with that username already exists."
|
||||
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:4
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:11
|
||||
|
@ -167,7 +175,7 @@ msgstr "Ya existe un usuario con ese nombre."
|
|||
msgid "Public"
|
||||
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:8
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:14
|
||||
|
@ -175,14 +183,14 @@ msgstr "Público"
|
|||
msgid "Unlisted"
|
||||
msgstr "No listado"
|
||||
|
||||
#: bookwyrm/models/fields.py:209
|
||||
#: bookwyrm/models/fields.py:207
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:17
|
||||
#: bookwyrm/templates/user/relationships/followers.html:6
|
||||
#: bookwyrm/templates/user/relationships/layout.html:11
|
||||
msgid "Followers"
|
||||
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/privacy-icons.html:15
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:16
|
||||
|
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
|
|||
msgstr "Português Europeu (Portugués europeo)"
|
||||
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "Swedish (Svenska)"
|
||||
msgstr "Sueco (Svenska)"
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Sueco)"
|
||||
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
|
@ -369,7 +377,7 @@ msgstr "Administrador"
|
|||
#: bookwyrm/templates/about/about.html:131
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: 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"
|
||||
msgstr "Enviar mensaje directo"
|
||||
|
||||
|
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
|
|||
msgstr "Propiedades físicas"
|
||||
|
||||
#: 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:"
|
||||
msgstr "Formato:"
|
||||
|
||||
|
@ -1055,17 +1063,17 @@ msgstr "Ediciones de %(book_title)s"
|
|||
msgid "Editions of <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/language_filter.html:8
|
||||
#: bookwyrm/templates/book/editions/format_filter.html:9
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:9
|
||||
msgid "Any"
|
||||
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
|
||||
msgid "Language:"
|
||||
msgstr "Idioma:"
|
||||
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:5
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:6
|
||||
msgid "Search editions"
|
||||
msgstr "Buscar ediciones"
|
||||
|
||||
|
@ -3574,23 +3582,31 @@ msgstr "Ningún enlace disponible para este dominio."
|
|||
msgid "Back to reports"
|
||||
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"
|
||||
msgstr "Estados reportados"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:27
|
||||
#: bookwyrm/templates/settings/reports/report.html:40
|
||||
msgid "Status has been deleted"
|
||||
msgstr "El estado ha sido eliminado"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:39
|
||||
#: bookwyrm/templates/settings/reports/report.html:52
|
||||
msgid "Reported links"
|
||||
msgstr "Enlaces denunciados"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:55
|
||||
#: bookwyrm/templates/settings/reports/report.html:68
|
||||
msgid "Moderator Comments"
|
||||
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
|
||||
msgid "Comment"
|
||||
msgstr "Comentario"
|
||||
|
@ -4015,14 +4031,14 @@ msgstr "por ciento"
|
|||
msgid "of %(pages)s pages"
|
||||
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:53
|
||||
#: bookwyrm/templates/snippets/status/layout.html:54
|
||||
msgid "Reply"
|
||||
msgstr "Responder"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:18
|
||||
msgid "Content"
|
||||
msgstr "Contenido"
|
||||
|
||||
|
@ -4100,7 +4116,7 @@ msgstr "Filtros aplicados"
|
|||
msgid "Clear filters"
|
||||
msgstr "Borrar filtros"
|
||||
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
|
||||
msgid "Apply filters"
|
||||
msgstr "Aplicar filtros"
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-28 02:50+0000\n"
|
||||
"PO-Revision-Date: 2022-01-28 11:29\n"
|
||||
"POT-Creation-Date: 2022-02-02 20:09+0000\n"
|
||||
"PO-Revision-Date: 2022-02-04 21:01\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: French\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-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."
|
||||
msgstr "Cet email est déjà associé à un compte."
|
||||
|
||||
#: bookwyrm/forms.py:379
|
||||
#: bookwyrm/forms.py:392
|
||||
msgid "One Day"
|
||||
msgstr "Un jour"
|
||||
|
||||
#: bookwyrm/forms.py:380
|
||||
#: bookwyrm/forms.py:393
|
||||
msgid "One Week"
|
||||
msgstr "Une semaine"
|
||||
|
||||
#: bookwyrm/forms.py:381
|
||||
#: bookwyrm/forms.py:394
|
||||
msgid "One Month"
|
||||
msgstr "Un mois"
|
||||
|
||||
#: bookwyrm/forms.py:382
|
||||
#: bookwyrm/forms.py:395
|
||||
msgid "Does Not Expire"
|
||||
msgstr "Sans expiration"
|
||||
|
||||
#: bookwyrm/forms.py:386
|
||||
#: bookwyrm/forms.py:399
|
||||
#, python-brace-format
|
||||
msgid "{i} uses"
|
||||
msgstr "{i} utilisations"
|
||||
|
||||
#: bookwyrm/forms.py:387
|
||||
#: bookwyrm/forms.py:400
|
||||
msgid "Unlimited"
|
||||
msgstr "Sans limite"
|
||||
|
||||
#: bookwyrm/forms.py:489
|
||||
#: bookwyrm/forms.py:502
|
||||
msgid "List Order"
|
||||
msgstr "Ordre de la liste"
|
||||
|
||||
#: bookwyrm/forms.py:490
|
||||
#: bookwyrm/forms.py:503
|
||||
msgid "Book Title"
|
||||
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/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
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"
|
||||
msgstr "Trier par"
|
||||
|
||||
#: bookwyrm/forms.py:497
|
||||
#: bookwyrm/forms.py:510
|
||||
msgid "Ascending"
|
||||
msgstr "Ordre croissant"
|
||||
|
||||
#: bookwyrm/forms.py:498
|
||||
#: bookwyrm/forms.py:511
|
||||
msgid "Descending"
|
||||
msgstr "Ordre décroissant"
|
||||
|
||||
#: bookwyrm/forms.py:511
|
||||
#: bookwyrm/forms.py:524
|
||||
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."
|
||||
|
||||
|
@ -140,26 +148,26 @@ msgstr "Fédéré"
|
|||
msgid "Blocked"
|
||||
msgstr "Bloqué"
|
||||
|
||||
#: bookwyrm/models/fields.py:29
|
||||
#: bookwyrm/models/fields.py:27
|
||||
#, python-format
|
||||
msgid "%(value)s is not a valid remote_id"
|
||||
msgstr "%(value)s n’est 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
|
||||
msgid "%(value)s is not a valid username"
|
||||
msgstr "%(value)s n’est 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
|
||||
msgid "username"
|
||||
msgstr "nom du compte :"
|
||||
|
||||
#: bookwyrm/models/fields.py:188
|
||||
#: bookwyrm/models/fields.py:186
|
||||
msgid "A user with that username already exists."
|
||||
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:4
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:11
|
||||
|
@ -167,7 +175,7 @@ msgstr "Ce nom est déjà associé à un compte."
|
|||
msgid "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:8
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:14
|
||||
|
@ -175,14 +183,14 @@ msgstr "Public"
|
|||
msgid "Unlisted"
|
||||
msgstr "Non listé"
|
||||
|
||||
#: bookwyrm/models/fields.py:209
|
||||
#: bookwyrm/models/fields.py:207
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:17
|
||||
#: bookwyrm/templates/user/relationships/followers.html:6
|
||||
#: bookwyrm/templates/user/relationships/layout.html:11
|
||||
msgid "Followers"
|
||||
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/privacy-icons.html:15
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:16
|
||||
|
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
|
|||
msgstr "Português Europeu (Portugais européen)"
|
||||
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "Swedish (Svenska)"
|
||||
msgstr "Suédois (Svenska)"
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Suédois)"
|
||||
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
|
@ -369,7 +377,7 @@ msgstr "Admin"
|
|||
#: bookwyrm/templates/about/about.html:131
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: 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"
|
||||
msgstr "Envoyer un message direct"
|
||||
|
||||
|
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
|
|||
msgstr "Propriétés physiques"
|
||||
|
||||
#: 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:"
|
||||
msgstr "Format :"
|
||||
|
||||
|
@ -1055,17 +1063,17 @@ msgstr "Éditions de %(book_title)s"
|
|||
msgid "Editions of <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/language_filter.html:8
|
||||
#: bookwyrm/templates/book/editions/format_filter.html:9
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:9
|
||||
msgid "Any"
|
||||
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
|
||||
msgid "Language:"
|
||||
msgstr "Langue :"
|
||||
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:5
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:6
|
||||
msgid "Search editions"
|
||||
msgstr "Rechercher des éditions"
|
||||
|
||||
|
@ -3574,23 +3582,31 @@ msgstr "Aucun lien n’est disponible pour ce domaine."
|
|||
msgid "Back to reports"
|
||||
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"
|
||||
msgstr "Statuts signalés"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:27
|
||||
#: bookwyrm/templates/settings/reports/report.html:40
|
||||
msgid "Status has been deleted"
|
||||
msgstr "Le statut a été supprimé"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:39
|
||||
#: bookwyrm/templates/settings/reports/report.html:52
|
||||
msgid "Reported links"
|
||||
msgstr "Liens signalés"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:55
|
||||
#: bookwyrm/templates/settings/reports/report.html:68
|
||||
msgid "Moderator Comments"
|
||||
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
|
||||
msgid "Comment"
|
||||
msgstr "Commentaire"
|
||||
|
@ -4015,14 +4031,14 @@ msgstr "pourcent"
|
|||
msgid "of %(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:53
|
||||
#: bookwyrm/templates/snippets/status/layout.html:54
|
||||
msgid "Reply"
|
||||
msgstr "Répondre"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:18
|
||||
msgid "Content"
|
||||
msgstr "Contenu"
|
||||
|
||||
|
@ -4100,7 +4116,7 @@ msgstr "Des filtres sont appliqués"
|
|||
msgid "Clear filters"
|
||||
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"
|
||||
msgstr "Appliquer les filtres"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-28 02:50+0000\n"
|
||||
"PO-Revision-Date: 2022-01-28 05:04\n"
|
||||
"POT-Creation-Date: 2022-02-02 20:09+0000\n"
|
||||
"PO-Revision-Date: 2022-02-04 21:01\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Galician\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-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."
|
||||
msgstr "Xa existe unha usuaria con este email."
|
||||
|
||||
#: bookwyrm/forms.py:379
|
||||
#: bookwyrm/forms.py:392
|
||||
msgid "One Day"
|
||||
msgstr "Un día"
|
||||
|
||||
#: bookwyrm/forms.py:380
|
||||
#: bookwyrm/forms.py:393
|
||||
msgid "One Week"
|
||||
msgstr "Unha semana"
|
||||
|
||||
#: bookwyrm/forms.py:381
|
||||
#: bookwyrm/forms.py:394
|
||||
msgid "One Month"
|
||||
msgstr "Un mes"
|
||||
|
||||
#: bookwyrm/forms.py:382
|
||||
#: bookwyrm/forms.py:395
|
||||
msgid "Does Not Expire"
|
||||
msgstr "Non caduca"
|
||||
|
||||
#: bookwyrm/forms.py:386
|
||||
#: bookwyrm/forms.py:399
|
||||
#, python-brace-format
|
||||
msgid "{i} uses"
|
||||
msgstr "{i} usos"
|
||||
|
||||
#: bookwyrm/forms.py:387
|
||||
#: bookwyrm/forms.py:400
|
||||
msgid "Unlimited"
|
||||
msgstr "Sen límite"
|
||||
|
||||
#: bookwyrm/forms.py:489
|
||||
#: bookwyrm/forms.py:502
|
||||
msgid "List Order"
|
||||
msgstr "Orde da listaxe"
|
||||
|
||||
#: bookwyrm/forms.py:490
|
||||
#: bookwyrm/forms.py:503
|
||||
msgid "Book Title"
|
||||
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/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
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"
|
||||
msgstr "Ordenar por"
|
||||
|
||||
#: bookwyrm/forms.py:497
|
||||
#: bookwyrm/forms.py:510
|
||||
msgid "Ascending"
|
||||
msgstr "Ascendente"
|
||||
|
||||
#: bookwyrm/forms.py:498
|
||||
#: bookwyrm/forms.py:511
|
||||
msgid "Descending"
|
||||
msgstr "Descendente"
|
||||
|
||||
#: bookwyrm/forms.py:511
|
||||
#: bookwyrm/forms.py:524
|
||||
msgid "Reading finish date cannot be before start date."
|
||||
msgstr "A data final da lectura non pode ser anterior á de inicio."
|
||||
|
||||
|
@ -140,26 +148,26 @@ msgstr "Federado"
|
|||
msgid "Blocked"
|
||||
msgstr "Bloqueado"
|
||||
|
||||
#: bookwyrm/models/fields.py:29
|
||||
#: bookwyrm/models/fields.py:27
|
||||
#, python-format
|
||||
msgid "%(value)s is not a valid remote_id"
|
||||
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
|
||||
msgid "%(value)s is not a valid username"
|
||||
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
|
||||
msgid "username"
|
||||
msgstr "nome de usuaria"
|
||||
|
||||
#: bookwyrm/models/fields.py:188
|
||||
#: bookwyrm/models/fields.py:186
|
||||
msgid "A user with that username already exists."
|
||||
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:4
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:11
|
||||
|
@ -167,7 +175,7 @@ msgstr "Xa existe unha usuaria con ese nome."
|
|||
msgid "Public"
|
||||
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:8
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:14
|
||||
|
@ -175,14 +183,14 @@ msgstr "Público"
|
|||
msgid "Unlisted"
|
||||
msgstr "Non listado"
|
||||
|
||||
#: bookwyrm/models/fields.py:209
|
||||
#: bookwyrm/models/fields.py:207
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:17
|
||||
#: bookwyrm/templates/user/relationships/followers.html:6
|
||||
#: bookwyrm/templates/user/relationships/layout.html:11
|
||||
msgid "Followers"
|
||||
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/privacy-icons.html:15
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:16
|
||||
|
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
|
|||
msgstr "Português Europeu (Portugués europeo)"
|
||||
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "Swedish (Svenska)"
|
||||
msgstr "Sueco (Svenska)"
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Sueco (Swedish)"
|
||||
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
|
@ -369,7 +377,7 @@ msgstr "Admin"
|
|||
#: bookwyrm/templates/about/about.html:131
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: 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"
|
||||
msgstr "Enviar mensaxe directa"
|
||||
|
||||
|
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
|
|||
msgstr "Propiedades físicas"
|
||||
|
||||
#: 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:"
|
||||
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>"
|
||||
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/language_filter.html:8
|
||||
#: bookwyrm/templates/book/editions/format_filter.html:9
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:9
|
||||
msgid "Any"
|
||||
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
|
||||
msgid "Language:"
|
||||
msgstr "Idioma:"
|
||||
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:5
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:6
|
||||
msgid "Search editions"
|
||||
msgstr "Buscar edicións"
|
||||
|
||||
|
@ -3574,23 +3582,31 @@ msgstr "Non hai ligazóns dispoñibles para este dominio."
|
|||
msgid "Back to reports"
|
||||
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"
|
||||
msgstr "Estados dununciados"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:27
|
||||
#: bookwyrm/templates/settings/reports/report.html:40
|
||||
msgid "Status has been deleted"
|
||||
msgstr "O estado foi eliminado"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:39
|
||||
#: bookwyrm/templates/settings/reports/report.html:52
|
||||
msgid "Reported links"
|
||||
msgstr "Ligazóns denunciadas"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:55
|
||||
#: bookwyrm/templates/settings/reports/report.html:68
|
||||
msgid "Moderator Comments"
|
||||
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
|
||||
msgid "Comment"
|
||||
msgstr "Comentario"
|
||||
|
@ -4015,14 +4031,14 @@ msgstr "porcentaxe"
|
|||
msgid "of %(pages)s pages"
|
||||
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:53
|
||||
#: bookwyrm/templates/snippets/status/layout.html:54
|
||||
msgid "Reply"
|
||||
msgstr "Responder"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:18
|
||||
msgid "Content"
|
||||
msgstr "Contido"
|
||||
|
||||
|
@ -4100,7 +4116,7 @@ msgstr "Filtros aplicados"
|
|||
msgid "Clear filters"
|
||||
msgstr "Limpar filtros"
|
||||
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
|
||||
msgid "Apply filters"
|
||||
msgstr "Aplicar filtros"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-28 02:50+0000\n"
|
||||
"PO-Revision-Date: 2022-01-28 19:04\n"
|
||||
"POT-Creation-Date: 2022-02-02 20:09+0000\n"
|
||||
"PO-Revision-Date: 2022-02-04 21:01\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Italian\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-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."
|
||||
msgstr "Esiste già un'utenza con questo indirizzo email."
|
||||
|
||||
#: bookwyrm/forms.py:379
|
||||
#: bookwyrm/forms.py:392
|
||||
msgid "One Day"
|
||||
msgstr "Un giorno"
|
||||
|
||||
#: bookwyrm/forms.py:380
|
||||
#: bookwyrm/forms.py:393
|
||||
msgid "One Week"
|
||||
msgstr "Una settimana"
|
||||
|
||||
#: bookwyrm/forms.py:381
|
||||
#: bookwyrm/forms.py:394
|
||||
msgid "One Month"
|
||||
msgstr "Un mese"
|
||||
|
||||
#: bookwyrm/forms.py:382
|
||||
#: bookwyrm/forms.py:395
|
||||
msgid "Does Not Expire"
|
||||
msgstr "Non scade"
|
||||
|
||||
#: bookwyrm/forms.py:386
|
||||
#: bookwyrm/forms.py:399
|
||||
#, python-brace-format
|
||||
msgid "{i} uses"
|
||||
msgstr "{i} usi"
|
||||
|
||||
#: bookwyrm/forms.py:387
|
||||
#: bookwyrm/forms.py:400
|
||||
msgid "Unlimited"
|
||||
msgstr "Illimitato"
|
||||
|
||||
#: bookwyrm/forms.py:489
|
||||
#: bookwyrm/forms.py:502
|
||||
msgid "List Order"
|
||||
msgstr "Ordina Lista"
|
||||
|
||||
#: bookwyrm/forms.py:490
|
||||
#: bookwyrm/forms.py:503
|
||||
msgid "Book Title"
|
||||
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/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
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"
|
||||
msgstr "Ordina per"
|
||||
|
||||
#: bookwyrm/forms.py:497
|
||||
#: bookwyrm/forms.py:510
|
||||
msgid "Ascending"
|
||||
msgstr "Crescente"
|
||||
|
||||
#: bookwyrm/forms.py:498
|
||||
#: bookwyrm/forms.py:511
|
||||
msgid "Descending"
|
||||
msgstr "Decrescente"
|
||||
|
||||
#: bookwyrm/forms.py:511
|
||||
#: bookwyrm/forms.py:524
|
||||
msgid "Reading finish date cannot be before start date."
|
||||
msgstr "La data di fine lettura non può essere precedente alla data di inizio."
|
||||
|
||||
|
@ -140,26 +148,26 @@ msgstr "Federato"
|
|||
msgid "Blocked"
|
||||
msgstr "Bloccato"
|
||||
|
||||
#: bookwyrm/models/fields.py:29
|
||||
#: bookwyrm/models/fields.py:27
|
||||
#, python-format
|
||||
msgid "%(value)s is not a valid remote_id"
|
||||
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
|
||||
msgid "%(value)s is not a valid username"
|
||||
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
|
||||
msgid "username"
|
||||
msgstr "nome utente"
|
||||
|
||||
#: bookwyrm/models/fields.py:188
|
||||
#: bookwyrm/models/fields.py:186
|
||||
msgid "A user with that username already exists."
|
||||
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:4
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:11
|
||||
|
@ -167,7 +175,7 @@ msgstr "Un utente con questo nome utente esiste già."
|
|||
msgid "Public"
|
||||
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:8
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:14
|
||||
|
@ -175,14 +183,14 @@ msgstr "Pubblico"
|
|||
msgid "Unlisted"
|
||||
msgstr "Non in lista"
|
||||
|
||||
#: bookwyrm/models/fields.py:209
|
||||
#: bookwyrm/models/fields.py:207
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:17
|
||||
#: bookwyrm/templates/user/relationships/followers.html:6
|
||||
#: bookwyrm/templates/user/relationships/layout.html:11
|
||||
msgid "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/privacy-icons.html:15
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:16
|
||||
|
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
|
|||
msgstr "Português Europeu (Portoghese europeo)"
|
||||
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "Swedish (Svenska)"
|
||||
msgstr "Swedish (Svedese)"
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Svedese)"
|
||||
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
|
@ -369,7 +377,7 @@ msgstr "Admin"
|
|||
#: bookwyrm/templates/about/about.html:131
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: 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"
|
||||
msgstr "Invia messaggio diretto"
|
||||
|
||||
|
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
|
|||
msgstr "Caratteristiche"
|
||||
|
||||
#: 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:"
|
||||
msgstr "Formato:"
|
||||
|
||||
|
@ -1055,17 +1063,17 @@ msgstr "Edizioni di %(book_title)s"
|
|||
msgid "Editions of <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/language_filter.html:8
|
||||
#: bookwyrm/templates/book/editions/format_filter.html:9
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:9
|
||||
msgid "Any"
|
||||
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
|
||||
msgid "Language:"
|
||||
msgstr "Lingua:"
|
||||
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:5
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:6
|
||||
msgid "Search editions"
|
||||
msgstr "Ricerca edizioni"
|
||||
|
||||
|
@ -3574,23 +3582,31 @@ msgstr "Nessun collegamento disponibile per questo libro."
|
|||
msgid "Back to reports"
|
||||
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"
|
||||
msgstr "Stati segnalati"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:27
|
||||
#: bookwyrm/templates/settings/reports/report.html:40
|
||||
msgid "Status has been deleted"
|
||||
msgstr "Lo stato è stato eliminato"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:39
|
||||
#: bookwyrm/templates/settings/reports/report.html:52
|
||||
msgid "Reported links"
|
||||
msgstr "Collegamenti segnalati"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:55
|
||||
#: bookwyrm/templates/settings/reports/report.html:68
|
||||
msgid "Moderator Comments"
|
||||
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
|
||||
msgid "Comment"
|
||||
msgstr "Commenta"
|
||||
|
@ -4015,14 +4031,14 @@ msgstr "percentuale"
|
|||
msgid "of %(pages)s pages"
|
||||
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:53
|
||||
#: bookwyrm/templates/snippets/status/layout.html:54
|
||||
msgid "Reply"
|
||||
msgstr "Rispondi"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:18
|
||||
msgid "Content"
|
||||
msgstr "Contenuto"
|
||||
|
||||
|
@ -4100,7 +4116,7 @@ msgstr "Filtri applicati"
|
|||
msgid "Clear filters"
|
||||
msgstr "Rimuovi filtri"
|
||||
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
|
||||
msgid "Apply filters"
|
||||
msgstr "Applica filtri"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-28 02:50+0000\n"
|
||||
"PO-Revision-Date: 2022-01-30 17:27\n"
|
||||
"POT-Creation-Date: 2022-02-02 20:09+0000\n"
|
||||
"PO-Revision-Date: 2022-02-04 21:00\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Lithuanian\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-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."
|
||||
msgstr "Vartotojas su šiuo el. pašto adresu jau yra."
|
||||
|
||||
#: bookwyrm/forms.py:379
|
||||
#: bookwyrm/forms.py:392
|
||||
msgid "One Day"
|
||||
msgstr "Diena"
|
||||
|
||||
#: bookwyrm/forms.py:380
|
||||
#: bookwyrm/forms.py:393
|
||||
msgid "One Week"
|
||||
msgstr "Savaitė"
|
||||
|
||||
#: bookwyrm/forms.py:381
|
||||
#: bookwyrm/forms.py:394
|
||||
msgid "One Month"
|
||||
msgstr "Mėnuo"
|
||||
|
||||
#: bookwyrm/forms.py:382
|
||||
#: bookwyrm/forms.py:395
|
||||
msgid "Does Not Expire"
|
||||
msgstr "Galiojimas nesibaigia"
|
||||
|
||||
#: bookwyrm/forms.py:386
|
||||
#: bookwyrm/forms.py:399
|
||||
#, python-brace-format
|
||||
msgid "{i} uses"
|
||||
msgstr "{i} naudoja"
|
||||
|
||||
#: bookwyrm/forms.py:387
|
||||
#: bookwyrm/forms.py:400
|
||||
msgid "Unlimited"
|
||||
msgstr "Neribota"
|
||||
|
||||
#: bookwyrm/forms.py:489
|
||||
#: bookwyrm/forms.py:502
|
||||
msgid "List Order"
|
||||
msgstr "Kaip pridėta į sąrašą"
|
||||
|
||||
#: bookwyrm/forms.py:490
|
||||
#: bookwyrm/forms.py:503
|
||||
msgid "Book Title"
|
||||
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/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
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"
|
||||
msgstr "Rūšiuoti pagal"
|
||||
|
||||
#: bookwyrm/forms.py:497
|
||||
#: bookwyrm/forms.py:510
|
||||
msgid "Ascending"
|
||||
msgstr "Didėjančia tvarka"
|
||||
|
||||
#: bookwyrm/forms.py:498
|
||||
#: bookwyrm/forms.py:511
|
||||
msgid "Descending"
|
||||
msgstr "Mažėjančia tvarka"
|
||||
|
||||
#: bookwyrm/forms.py:511
|
||||
#: bookwyrm/forms.py:524
|
||||
msgid "Reading finish date cannot be before start date."
|
||||
msgstr "Skaitymo pabaigos data negali būti prieš skaitymo pradžios datą."
|
||||
|
||||
|
@ -140,26 +148,26 @@ msgstr "Susijungę"
|
|||
msgid "Blocked"
|
||||
msgstr "Užblokuoti"
|
||||
|
||||
#: bookwyrm/models/fields.py:29
|
||||
#: bookwyrm/models/fields.py:27
|
||||
#, python-format
|
||||
msgid "%(value)s is not a valid 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
|
||||
msgid "%(value)s is not a valid username"
|
||||
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
|
||||
msgid "username"
|
||||
msgstr "naudotojo vardas"
|
||||
|
||||
#: bookwyrm/models/fields.py:188
|
||||
#: bookwyrm/models/fields.py:186
|
||||
msgid "A user with that username already exists."
|
||||
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:4
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:11
|
||||
|
@ -167,7 +175,7 @@ msgstr "Toks naudotojo vardas jau egzistuoja."
|
|||
msgid "Public"
|
||||
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:8
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:14
|
||||
|
@ -175,14 +183,14 @@ msgstr "Viešas"
|
|||
msgid "Unlisted"
|
||||
msgstr "Slaptas"
|
||||
|
||||
#: bookwyrm/models/fields.py:209
|
||||
#: bookwyrm/models/fields.py:207
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:17
|
||||
#: bookwyrm/templates/user/relationships/followers.html:6
|
||||
#: bookwyrm/templates/user/relationships/layout.html:11
|
||||
msgid "Followers"
|
||||
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/privacy-icons.html:15
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:16
|
||||
|
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
|
|||
msgstr "Português Europeu (Europos portugalų)"
|
||||
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "Swedish (Svenska)"
|
||||
msgstr "Švedų (Swedish)"
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Švedų)"
|
||||
|
||||
#: bookwyrm/settings.py:259
|
||||
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
|
||||
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
|
||||
msgid "Meet your admins"
|
||||
|
@ -356,7 +364,7 @@ msgstr "Šio serverio administratoriai"
|
|||
#: bookwyrm/templates/about/about.html:99
|
||||
#, 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."
|
||||
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
|
||||
msgid "Moderator"
|
||||
|
@ -369,7 +377,7 @@ msgstr "Administravimas"
|
|||
#: bookwyrm/templates/about/about.html:131
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: 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"
|
||||
msgstr "Siųsti asmeninę žinutę"
|
||||
|
||||
|
@ -1027,7 +1035,7 @@ msgid "Physical Properties"
|
|||
msgstr "Fizinės savybės"
|
||||
|
||||
#: 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:"
|
||||
msgstr "Formatas:"
|
||||
|
||||
|
@ -1065,17 +1073,17 @@ msgstr "Knygos %(book_title)s leidimai"
|
|||
msgid "Editions of <a href=\"%(work_path)s\">\"%(work_title)s\"</a>"
|
||||
msgstr "<a href=\"%(work_path)s\">\"%(work_title)s\"</a> leidimai"
|
||||
|
||||
#: bookwyrm/templates/book/editions/format_filter.html:8
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:8
|
||||
#: bookwyrm/templates/book/editions/format_filter.html:9
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:9
|
||||
msgid "Any"
|
||||
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
|
||||
msgid "Language:"
|
||||
msgstr "Kalba:"
|
||||
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:5
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:6
|
||||
msgid "Search editions"
|
||||
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
|
||||
#, python-format
|
||||
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_modal.html:31
|
||||
|
@ -2970,7 +2978,7 @@ msgstr "Ištrinti šias skaitymo datas"
|
|||
#: bookwyrm/templates/readthrough/readthrough_modal.html:12
|
||||
#, python-format
|
||||
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/snippets/report_button.html:13
|
||||
|
@ -3154,10 +3162,10 @@ msgstr[3] "%(display_count)s atvirų ataskaitų"
|
|||
#, python-format
|
||||
msgid "%(display_count)s domain needs review"
|
||||
msgid_plural "%(display_count)s domains need review"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
msgstr[3] ""
|
||||
msgstr[0] "%(display_count)s domeną reikia peržiūrėti"
|
||||
msgstr[1] "%(display_count)s domenus reikia peržiūrėti"
|
||||
msgstr[2] "%(display_count)s domenus reikia peržiūrėti"
|
||||
msgstr[3] "%(display_count)s domenus reikia peržiūrėti"
|
||||
|
||||
#: bookwyrm/templates/settings/dashboard/dashboard.html:65
|
||||
#, python-format
|
||||
|
@ -3569,11 +3577,11 @@ msgstr "Puslapio nustatymai"
|
|||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5
|
||||
#, python-format
|
||||
msgid "Set display name for %(url)s"
|
||||
msgstr ""
|
||||
msgstr "Nurodykite pavadinimą puslapiui %(url)s"
|
||||
|
||||
#: 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."
|
||||
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
|
||||
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
|
||||
msgid "No links available for this domain."
|
||||
msgstr ""
|
||||
msgstr "Šiam domenui nuorodų nėra."
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:11
|
||||
msgid "Back to reports"
|
||||
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"
|
||||
msgstr "Praneštos būsenos"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:27
|
||||
#: bookwyrm/templates/settings/reports/report.html:40
|
||||
msgid "Status has been deleted"
|
||||
msgstr "Būsena ištrinta"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:39
|
||||
#: bookwyrm/templates/settings/reports/report.html:52
|
||||
msgid "Reported links"
|
||||
msgstr "Raportuotos nuorodos"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:55
|
||||
#: bookwyrm/templates/settings/reports/report.html:68
|
||||
msgid "Moderator Comments"
|
||||
msgstr "Moderatoriaus komentarai"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:73
|
||||
#: bookwyrm/templates/settings/reports/report.html:89
|
||||
#: bookwyrm/templates/snippets/create_status.html:28
|
||||
msgid "Comment"
|
||||
msgstr "Komentuoti"
|
||||
|
@ -3627,17 +3643,17 @@ msgstr "Komentuoti"
|
|||
#: bookwyrm/templates/settings/reports/report_header.html:6
|
||||
#, python-format
|
||||
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
|
||||
#, python-format
|
||||
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
|
||||
#, python-format
|
||||
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
|
||||
msgid "Block domain"
|
||||
|
@ -3650,7 +3666,7 @@ msgstr "Užrašų nepateikta"
|
|||
#: bookwyrm/templates/settings/reports/report_preview.html:24
|
||||
#, python-format
|
||||
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
|
||||
msgid "Re-open"
|
||||
|
@ -4048,14 +4064,14 @@ msgstr "procentai"
|
|||
msgid "of %(pages)s pages"
|
||||
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:53
|
||||
#: bookwyrm/templates/snippets/status/layout.html:54
|
||||
msgid "Reply"
|
||||
msgstr "Atsakyti"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:18
|
||||
msgid "Content"
|
||||
msgstr "Turinys"
|
||||
|
||||
|
@ -4133,7 +4149,7 @@ msgstr "Taikyti filtrai"
|
|||
msgid "Clear filters"
|
||||
msgstr "Valyti filtrus"
|
||||
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
|
||||
msgid "Apply filters"
|
||||
msgstr "Taikyti filtrus"
|
||||
|
||||
|
@ -4210,15 +4226,15 @@ msgstr[3] "įvertinta <em><a href=\"%(path)s\">%(title)s</a></em>: %(display_rat
|
|||
#, python-format
|
||||
msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
msgstr[3] ""
|
||||
msgstr[0] "Knygos „%(book_title)s“ apžvalga (%(display_rating)s žvaigždutė): %(review_title)s"
|
||||
msgstr[1] "Knygos „%(book_title)s“ apžvalga (%(display_rating)s žvaigždutės): %(review_title)s"
|
||||
msgstr[2] "Knygos „%(book_title)s“ apžvalga (%(display_rating)s žvaigždučių): %(review_title)s"
|
||||
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
|
||||
#, python-format
|
||||
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
|
||||
#, python-format
|
||||
|
@ -4327,12 +4343,12 @@ msgstr "Registruotis"
|
|||
#: bookwyrm/templates/snippets/report_modal.html:8
|
||||
#, python-format
|
||||
msgid "Report @%(username)s's status"
|
||||
msgstr ""
|
||||
msgstr "Pranešti apie @%(username)s būseną"
|
||||
|
||||
#: bookwyrm/templates/snippets/report_modal.html:10
|
||||
#, python-format
|
||||
msgid "Report %(domain)s link"
|
||||
msgstr ""
|
||||
msgstr "Pranešti apie %(domain)s nuorodą"
|
||||
|
||||
#: bookwyrm/templates/snippets/report_modal.html:12
|
||||
#, 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
|
||||
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
|
||||
msgid "More info about this report:"
|
||||
|
@ -4420,7 +4436,7 @@ msgstr "redaguota %(date)s"
|
|||
#: bookwyrm/templates/snippets/status/headers/comment.html:8
|
||||
#, python-format
|
||||
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
|
||||
#, 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
|
||||
#, python-format
|
||||
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
|
||||
#, python-format
|
||||
|
@ -4450,7 +4466,7 @@ msgstr "įvertino <a href=\"%(book_path)s\">%(book)s</a>:"
|
|||
#: bookwyrm/templates/snippets/status/headers/read.html:10
|
||||
#, python-format
|
||||
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
|
||||
#, 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
|
||||
#, python-format
|
||||
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
|
||||
#, 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
|
||||
#, python-format
|
||||
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
|
||||
#, python-format
|
||||
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/status_options.html:17
|
||||
|
@ -4714,8 +4730,8 @@ msgstr "Būsenos atnaujinimai iš {obj.display_name}"
|
|||
#, python-format
|
||||
msgid "Load %(count)d unread status"
|
||||
msgid_plural "Load %(count)d unread statuses"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
msgstr[3] ""
|
||||
msgstr[0] "Įkelti %(count)d neperskaitytą statusą"
|
||||
msgstr[1] "Įkelti %(count)d neperskaitytus statusus"
|
||||
msgstr[2] "Įkelti %(count)d neperskaitytą statusą"
|
||||
msgstr[3] "Įkelti %(count)d neperskaitytą statusą"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-28 02:50+0000\n"
|
||||
"PO-Revision-Date: 2022-01-28 04:03\n"
|
||||
"POT-Creation-Date: 2022-02-02 20:09+0000\n"
|
||||
"PO-Revision-Date: 2022-02-04 21:00\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Norwegian\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-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."
|
||||
msgstr "Den e-postadressen er allerede registrert."
|
||||
|
||||
#: bookwyrm/forms.py:379
|
||||
#: bookwyrm/forms.py:392
|
||||
msgid "One Day"
|
||||
msgstr "Én dag"
|
||||
|
||||
#: bookwyrm/forms.py:380
|
||||
#: bookwyrm/forms.py:393
|
||||
msgid "One Week"
|
||||
msgstr "Én uke"
|
||||
|
||||
#: bookwyrm/forms.py:381
|
||||
#: bookwyrm/forms.py:394
|
||||
msgid "One Month"
|
||||
msgstr "Én måned"
|
||||
|
||||
#: bookwyrm/forms.py:382
|
||||
#: bookwyrm/forms.py:395
|
||||
msgid "Does Not Expire"
|
||||
msgstr "Uendelig"
|
||||
|
||||
#: bookwyrm/forms.py:386
|
||||
#: bookwyrm/forms.py:399
|
||||
#, python-brace-format
|
||||
msgid "{i} uses"
|
||||
msgstr "{i} ganger"
|
||||
|
||||
#: bookwyrm/forms.py:387
|
||||
#: bookwyrm/forms.py:400
|
||||
msgid "Unlimited"
|
||||
msgstr "Ubegrenset"
|
||||
|
||||
#: bookwyrm/forms.py:489
|
||||
#: bookwyrm/forms.py:502
|
||||
msgid "List Order"
|
||||
msgstr "Liste rekkefølge"
|
||||
|
||||
#: bookwyrm/forms.py:490
|
||||
#: bookwyrm/forms.py:503
|
||||
msgid "Book Title"
|
||||
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/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
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"
|
||||
msgstr "Sorter etter"
|
||||
|
||||
#: bookwyrm/forms.py:497
|
||||
#: bookwyrm/forms.py:510
|
||||
msgid "Ascending"
|
||||
msgstr "Stigende"
|
||||
|
||||
#: bookwyrm/forms.py:498
|
||||
#: bookwyrm/forms.py:511
|
||||
msgid "Descending"
|
||||
msgstr "Synkende"
|
||||
|
||||
#: bookwyrm/forms.py:511
|
||||
#: bookwyrm/forms.py:524
|
||||
msgid "Reading finish date cannot be before start date."
|
||||
msgstr "Sluttdato kan ikke være før startdato."
|
||||
|
||||
|
@ -140,26 +148,26 @@ msgstr "Føderert"
|
|||
msgid "Blocked"
|
||||
msgstr "Blokkert"
|
||||
|
||||
#: bookwyrm/models/fields.py:29
|
||||
#: bookwyrm/models/fields.py:27
|
||||
#, python-format
|
||||
msgid "%(value)s is not a valid 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
|
||||
msgid "%(value)s is not a valid username"
|
||||
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
|
||||
msgid "username"
|
||||
msgstr "brukernavn"
|
||||
|
||||
#: bookwyrm/models/fields.py:188
|
||||
#: bookwyrm/models/fields.py:186
|
||||
msgid "A user with that username already exists."
|
||||
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:4
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:11
|
||||
|
@ -167,7 +175,7 @@ msgstr "En bruker med det brukernavnet eksisterer allerede."
|
|||
msgid "Public"
|
||||
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:8
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:14
|
||||
|
@ -175,14 +183,14 @@ msgstr "Offentlig"
|
|||
msgid "Unlisted"
|
||||
msgstr "Uoppført"
|
||||
|
||||
#: bookwyrm/models/fields.py:209
|
||||
#: bookwyrm/models/fields.py:207
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:17
|
||||
#: bookwyrm/templates/user/relationships/followers.html:6
|
||||
#: bookwyrm/templates/user/relationships/layout.html:11
|
||||
msgid "Followers"
|
||||
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/privacy-icons.html:15
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:16
|
||||
|
@ -193,20 +201,20 @@ msgstr "Privat"
|
|||
|
||||
#: bookwyrm/models/link.py:51
|
||||
msgid "Free"
|
||||
msgstr ""
|
||||
msgstr "Gratis"
|
||||
|
||||
#: bookwyrm/models/link.py:52
|
||||
msgid "Purchasable"
|
||||
msgstr ""
|
||||
msgstr "Tilgjengelig for kjøp"
|
||||
|
||||
#: bookwyrm/models/link.py:53
|
||||
msgid "Available for loan"
|
||||
msgstr ""
|
||||
msgstr "Tilgjengelig for utlån"
|
||||
|
||||
#: bookwyrm/models/link.py:70
|
||||
#: bookwyrm/templates/settings/link_domains/link_domains.html:23
|
||||
msgid "Approved"
|
||||
msgstr ""
|
||||
msgstr "Godkjent"
|
||||
|
||||
#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272
|
||||
msgid "Reviews"
|
||||
|
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
|
|||
msgstr "Português Europeu (Europeisk Portugisisk)"
|
||||
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "Swedish (Svenska)"
|
||||
msgstr ""
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Svensk)"
|
||||
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
|
@ -328,7 +336,7 @@ msgstr "Velkommen til %(site_name)s!"
|
|||
#: bookwyrm/templates/about/about.html:23
|
||||
#, 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."
|
||||
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
|
||||
#, python-format
|
||||
|
@ -356,7 +364,7 @@ msgstr "Møt administratorene"
|
|||
#: bookwyrm/templates/about/about.html:99
|
||||
#, 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."
|
||||
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
|
||||
msgid "Moderator"
|
||||
|
@ -369,7 +377,7 @@ msgstr "Admin"
|
|||
#: bookwyrm/templates/about/about.html:131
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: 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"
|
||||
msgstr "Send direktemelding"
|
||||
|
||||
|
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
|
|||
msgstr "Fysiske egenskaper"
|
||||
|
||||
#: 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:"
|
||||
msgstr "Format:"
|
||||
|
||||
|
@ -1055,67 +1063,69 @@ msgstr "Utgaver av %(book_title)s"
|
|||
msgid "Editions of <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/language_filter.html:8
|
||||
#: bookwyrm/templates/book/editions/format_filter.html:9
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:9
|
||||
msgid "Any"
|
||||
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
|
||||
msgid "Language:"
|
||||
msgstr "Språk:"
|
||||
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:5
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:6
|
||||
msgid "Search editions"
|
||||
msgstr "Søk etter utgaver"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/add_link_modal.html:6
|
||||
msgid "Add file link"
|
||||
msgstr ""
|
||||
msgstr "Legg til fillenke"
|
||||
|
||||
#: 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."
|
||||
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
|
||||
msgid "URL:"
|
||||
msgstr ""
|
||||
msgstr "URL:"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/add_link_modal.html:29
|
||||
msgid "File type:"
|
||||
msgstr ""
|
||||
msgstr "Filtype:"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/add_link_modal.html:48
|
||||
msgid "Availability:"
|
||||
msgstr ""
|
||||
msgstr "Tilgjengelighet:"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:5
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:22
|
||||
#: bookwyrm/templates/book/file_links/links.html:53
|
||||
msgid "Edit links"
|
||||
msgstr ""
|
||||
msgstr "Rediger lenker"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:11
|
||||
#, python-format
|
||||
msgid "\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/settings/link_domains/link_table.html:6
|
||||
msgid "URL"
|
||||
msgstr ""
|
||||
msgstr "URL"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:33
|
||||
#: bookwyrm/templates/settings/link_domains/link_table.html:7
|
||||
msgid "Added by"
|
||||
msgstr ""
|
||||
msgstr "Lagt til av"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:34
|
||||
#: bookwyrm/templates/settings/link_domains/link_table.html:8
|
||||
msgid "Filetype"
|
||||
msgstr ""
|
||||
msgstr "Filtype"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:35
|
||||
#: 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/verification_modal.html:25
|
||||
msgid "Report spam"
|
||||
msgstr ""
|
||||
msgstr "Rapporter spam"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/edit_links.html:97
|
||||
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/links.html:18
|
||||
msgid "Add link to file"
|
||||
msgstr ""
|
||||
msgstr "Legg til lenke til fil"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/file_link_page.html:6
|
||||
msgid "File Links"
|
||||
msgstr ""
|
||||
msgstr "Fillenker"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/links.html:9
|
||||
msgid "Get a copy"
|
||||
msgstr ""
|
||||
msgstr "Få en kopi"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/links.html:47
|
||||
msgid "No links available"
|
||||
msgstr ""
|
||||
msgstr "Ingen tilgjengelige lenker"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/verification_modal.html:5
|
||||
msgid "Leaving BookWyrm"
|
||||
msgstr ""
|
||||
msgstr "Forlater BookWyrm"
|
||||
|
||||
#: bookwyrm/templates/book/file_links/verification_modal.html:11
|
||||
#, python-format
|
||||
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
|
||||
msgid "Continue"
|
||||
msgstr ""
|
||||
msgstr "Fortsett"
|
||||
|
||||
#: bookwyrm/templates/book/publisher_info.html:23
|
||||
#, python-format
|
||||
|
@ -2045,7 +2055,7 @@ msgstr "Avslå"
|
|||
|
||||
#: 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."
|
||||
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
|
||||
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
|
||||
#, python-format
|
||||
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
|
||||
#, python-format
|
||||
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/list.html:249
|
||||
|
@ -2295,7 +2305,7 @@ msgstr "Nå er du klar!"
|
|||
#: bookwyrm/templates/lists/list.html:83
|
||||
#, python-format
|
||||
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
|
||||
msgid "Suggested by"
|
||||
|
@ -2393,7 +2403,7 @@ msgstr "Notater:"
|
|||
|
||||
#: bookwyrm/templates/lists/item_notes_field.html:19
|
||||
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
|
||||
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
|
||||
msgid "Edit notes"
|
||||
msgstr ""
|
||||
msgstr "Rediger merknader"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:111
|
||||
msgid "Add notes"
|
||||
msgstr ""
|
||||
msgstr "Legg til merknader"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:123
|
||||
#, python-format
|
||||
|
@ -3129,8 +3139,8 @@ msgstr[1] "%(display_count)s åpne rapporter"
|
|||
#, python-format
|
||||
msgid "%(display_count)s domain needs review"
|
||||
msgid_plural "%(display_count)s domains need review"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "%(display_count)s domene må godkjennes"
|
||||
msgstr[1] "%(display_count)s domener må godkjennes"
|
||||
|
||||
#: bookwyrm/templates/settings/dashboard/dashboard.html:65
|
||||
#, 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:7
|
||||
msgid "Link Domains"
|
||||
msgstr ""
|
||||
msgstr "Lenkedomener"
|
||||
|
||||
#: bookwyrm/templates/settings/layout.html:72
|
||||
msgid "Instance Settings"
|
||||
|
@ -3538,57 +3548,65 @@ msgstr "Sideinnstillinger"
|
|||
#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5
|
||||
#, python-format
|
||||
msgid "Set display name for %(url)s"
|
||||
msgstr ""
|
||||
msgstr "Angi visningsnavn for %(url)s"
|
||||
|
||||
#: 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."
|
||||
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
|
||||
msgid "Set display name"
|
||||
msgstr ""
|
||||
msgstr "Angi visningsnavn"
|
||||
|
||||
#: bookwyrm/templates/settings/link_domains/link_domains.html:53
|
||||
msgid "View links"
|
||||
msgstr ""
|
||||
msgstr "Vis lenker"
|
||||
|
||||
#: bookwyrm/templates/settings/link_domains/link_domains.html:96
|
||||
msgid "No domains currently approved"
|
||||
msgstr ""
|
||||
msgstr "Ingen domener er hittil godkjent"
|
||||
|
||||
#: bookwyrm/templates/settings/link_domains/link_domains.html:98
|
||||
msgid "No domains currently pending"
|
||||
msgstr ""
|
||||
msgstr "Ingen domener venter for tiden på godkjenning"
|
||||
|
||||
#: bookwyrm/templates/settings/link_domains/link_domains.html:100
|
||||
msgid "No domains currently blocked"
|
||||
msgstr ""
|
||||
msgstr "Ingen domener er for øyeblikket blokkert"
|
||||
|
||||
#: bookwyrm/templates/settings/link_domains/link_table.html:39
|
||||
msgid "No links available for this domain."
|
||||
msgstr ""
|
||||
msgstr "Ingen lenker tilgjengelig til dette domenet."
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:11
|
||||
msgid "Back to reports"
|
||||
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"
|
||||
msgstr "Rapporterte statuser"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:27
|
||||
#: bookwyrm/templates/settings/reports/report.html:40
|
||||
msgid "Status has been deleted"
|
||||
msgstr "Status er slettet"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:39
|
||||
#: bookwyrm/templates/settings/reports/report.html:52
|
||||
msgid "Reported links"
|
||||
msgstr ""
|
||||
msgstr "Rapporterte lenker"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:55
|
||||
#: bookwyrm/templates/settings/reports/report.html:68
|
||||
msgid "Moderator Comments"
|
||||
msgstr "Moderatorkommentarer"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:73
|
||||
#: bookwyrm/templates/settings/reports/report.html:89
|
||||
#: bookwyrm/templates/snippets/create_status.html:28
|
||||
msgid "Comment"
|
||||
msgstr "Kommentar"
|
||||
|
@ -3596,21 +3614,21 @@ msgstr "Kommentar"
|
|||
#: bookwyrm/templates/settings/reports/report_header.html:6
|
||||
#, python-format
|
||||
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
|
||||
#, python-format
|
||||
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
|
||||
#, python-format
|
||||
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
|
||||
msgid "Block domain"
|
||||
msgstr ""
|
||||
msgstr "Blokkér domene"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report_preview.html:17
|
||||
msgid "No notes provided"
|
||||
|
@ -3619,7 +3637,7 @@ msgstr "Ingen merknader finnes"
|
|||
#: bookwyrm/templates/settings/reports/report_preview.html:24
|
||||
#, python-format
|
||||
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
|
||||
msgid "Re-open"
|
||||
|
@ -3865,7 +3883,7 @@ msgstr "Slettet for godt"
|
|||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:8
|
||||
msgid "User Actions"
|
||||
msgstr ""
|
||||
msgstr "Brukerhandlinger"
|
||||
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:21
|
||||
msgid "Suspend user"
|
||||
|
@ -4013,14 +4031,14 @@ msgstr "prosent"
|
|||
msgid "of %(pages)s pages"
|
||||
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:53
|
||||
#: bookwyrm/templates/snippets/status/layout.html:54
|
||||
msgid "Reply"
|
||||
msgstr "Svar"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:18
|
||||
msgid "Content"
|
||||
msgstr "Innhold"
|
||||
|
||||
|
@ -4098,7 +4116,7 @@ msgstr "Filtrert visning"
|
|||
msgid "Clear filters"
|
||||
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"
|
||||
msgstr "Bruk filtre"
|
||||
|
||||
|
@ -4167,13 +4185,13 @@ msgstr[1] "vurderte <em><a href=\"%(path)s\">%(title)s</a></em> til: %(display_r
|
|||
#, python-format
|
||||
msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s"
|
||||
msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Anmeldelse av \"%(book_title)s\" (%(display_rating)s stjerne): %(review_title)s"
|
||||
msgstr[1] "Anmeldelse av \"%(book_title)s\" (%(display_rating)s stjerner): %(review_title)s"
|
||||
|
||||
#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12
|
||||
#, python-format
|
||||
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
|
||||
#, python-format
|
||||
|
@ -4282,12 +4300,12 @@ msgstr "Registrer deg"
|
|||
#: bookwyrm/templates/snippets/report_modal.html:8
|
||||
#, python-format
|
||||
msgid "Report @%(username)s's status"
|
||||
msgstr ""
|
||||
msgstr "Rapportér @%(username)s sin status"
|
||||
|
||||
#: bookwyrm/templates/snippets/report_modal.html:10
|
||||
#, python-format
|
||||
msgid "Report %(domain)s link"
|
||||
msgstr ""
|
||||
msgstr "Rapportér %(domain)s lenke"
|
||||
|
||||
#: bookwyrm/templates/snippets/report_modal.html:12
|
||||
#, 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
|
||||
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
|
||||
msgid "More info about this report:"
|
||||
|
@ -4665,6 +4683,6 @@ msgstr "Statusoppdateringer fra {obj.display_name}"
|
|||
#, python-format
|
||||
msgid "Load %(count)d unread status"
|
||||
msgid_plural "Load %(count)d unread statuses"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Last inn %(count)d ulest status"
|
||||
msgstr[1] "Last inn %(count)d uleste statuser"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-28 02:50+0000\n"
|
||||
"PO-Revision-Date: 2022-01-29 14:28\n"
|
||||
"POT-Creation-Date: 2022-02-02 20:09+0000\n"
|
||||
"PO-Revision-Date: 2022-02-04 22:13\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Portuguese, Brazilian\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-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."
|
||||
msgstr "Já existe um usuário com este endereço de e-mail."
|
||||
|
||||
#: bookwyrm/forms.py:379
|
||||
#: bookwyrm/forms.py:392
|
||||
msgid "One Day"
|
||||
msgstr "Um dia"
|
||||
|
||||
#: bookwyrm/forms.py:380
|
||||
#: bookwyrm/forms.py:393
|
||||
msgid "One Week"
|
||||
msgstr "Uma semana"
|
||||
|
||||
#: bookwyrm/forms.py:381
|
||||
#: bookwyrm/forms.py:394
|
||||
msgid "One Month"
|
||||
msgstr "Um mês"
|
||||
|
||||
#: bookwyrm/forms.py:382
|
||||
#: bookwyrm/forms.py:395
|
||||
msgid "Does Not Expire"
|
||||
msgstr "Não expira"
|
||||
|
||||
#: bookwyrm/forms.py:386
|
||||
#: bookwyrm/forms.py:399
|
||||
#, python-brace-format
|
||||
msgid "{i} uses"
|
||||
msgstr "{i} usos"
|
||||
|
||||
#: bookwyrm/forms.py:387
|
||||
#: bookwyrm/forms.py:400
|
||||
msgid "Unlimited"
|
||||
msgstr "Ilimitado"
|
||||
|
||||
#: bookwyrm/forms.py:489
|
||||
#: bookwyrm/forms.py:502
|
||||
msgid "List Order"
|
||||
msgstr "Ordem de inserção"
|
||||
|
||||
#: bookwyrm/forms.py:490
|
||||
#: bookwyrm/forms.py:503
|
||||
msgid "Book Title"
|
||||
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/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
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"
|
||||
msgstr "Organizar por"
|
||||
|
||||
#: bookwyrm/forms.py:497
|
||||
#: bookwyrm/forms.py:510
|
||||
msgid "Ascending"
|
||||
msgstr "Crescente"
|
||||
|
||||
#: bookwyrm/forms.py:498
|
||||
#: bookwyrm/forms.py:511
|
||||
msgid "Descending"
|
||||
msgstr "Decrescente"
|
||||
|
||||
#: bookwyrm/forms.py:511
|
||||
#: bookwyrm/forms.py:524
|
||||
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."
|
||||
|
||||
|
@ -140,26 +148,26 @@ msgstr "Federado"
|
|||
msgid "Blocked"
|
||||
msgstr "Bloqueado"
|
||||
|
||||
#: bookwyrm/models/fields.py:29
|
||||
#: bookwyrm/models/fields.py:27
|
||||
#, python-format
|
||||
msgid "%(value)s is not a valid remote_id"
|
||||
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
|
||||
msgid "%(value)s is not a valid username"
|
||||
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
|
||||
msgid "username"
|
||||
msgstr "nome de usuário"
|
||||
|
||||
#: bookwyrm/models/fields.py:188
|
||||
#: bookwyrm/models/fields.py:186
|
||||
msgid "A user with that username already exists."
|
||||
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:4
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:11
|
||||
|
@ -167,7 +175,7 @@ msgstr "Já existe um usuário com este nome."
|
|||
msgid "Public"
|
||||
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:8
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:14
|
||||
|
@ -175,14 +183,14 @@ msgstr "Público"
|
|||
msgid "Unlisted"
|
||||
msgstr "Não listado"
|
||||
|
||||
#: bookwyrm/models/fields.py:209
|
||||
#: bookwyrm/models/fields.py:207
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:17
|
||||
#: bookwyrm/templates/user/relationships/followers.html:6
|
||||
#: bookwyrm/templates/user/relationships/layout.html:11
|
||||
msgid "Followers"
|
||||
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/privacy-icons.html:15
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:16
|
||||
|
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
|
|||
msgstr "Português Europeu (Português Europeu)"
|
||||
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "Swedish (Svenska)"
|
||||
msgstr "Sueco (Svenska)"
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Sueco)"
|
||||
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
|
@ -369,7 +377,7 @@ msgstr "Admin"
|
|||
#: bookwyrm/templates/about/about.html:131
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: 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"
|
||||
msgstr "Enviar mensagem direta"
|
||||
|
||||
|
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
|
|||
msgstr "Propriedades físicas"
|
||||
|
||||
#: 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:"
|
||||
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>"
|
||||
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/language_filter.html:8
|
||||
#: bookwyrm/templates/book/editions/format_filter.html:9
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:9
|
||||
msgid "Any"
|
||||
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
|
||||
msgid "Language:"
|
||||
msgstr "Idioma:"
|
||||
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:5
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:6
|
||||
msgid "Search editions"
|
||||
msgstr "Procurar edições"
|
||||
|
||||
|
@ -3574,23 +3582,31 @@ msgstr "Nenhum link disponível para este domínio."
|
|||
msgid "Back to reports"
|
||||
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"
|
||||
msgstr "Publicações denunciadas"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:27
|
||||
#: bookwyrm/templates/settings/reports/report.html:40
|
||||
msgid "Status has been deleted"
|
||||
msgstr "A publicação foi excluída"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:39
|
||||
#: bookwyrm/templates/settings/reports/report.html:52
|
||||
msgid "Reported links"
|
||||
msgstr "Links denunciados"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:55
|
||||
#: bookwyrm/templates/settings/reports/report.html:68
|
||||
msgid "Moderator Comments"
|
||||
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
|
||||
msgid "Comment"
|
||||
msgstr "Comentar"
|
||||
|
@ -4015,14 +4031,14 @@ msgstr "porcentagem"
|
|||
msgid "of %(pages)s pages"
|
||||
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:53
|
||||
#: bookwyrm/templates/snippets/status/layout.html:54
|
||||
msgid "Reply"
|
||||
msgstr "Responder"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:18
|
||||
msgid "Content"
|
||||
msgstr "Conteúdo"
|
||||
|
||||
|
@ -4100,7 +4116,7 @@ msgstr "Filtros aplicados"
|
|||
msgid "Clear filters"
|
||||
msgstr "Limpar filtros"
|
||||
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
|
||||
msgid "Apply filters"
|
||||
msgstr "Aplicar filtros"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-28 02:50+0000\n"
|
||||
"PO-Revision-Date: 2022-01-28 04:03\n"
|
||||
"POT-Creation-Date: 2022-02-02 20:09+0000\n"
|
||||
"PO-Revision-Date: 2022-02-04 21:00\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Portuguese\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-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."
|
||||
msgstr "Já existe um utilizador com este E-Mail."
|
||||
|
||||
#: bookwyrm/forms.py:379
|
||||
#: bookwyrm/forms.py:392
|
||||
msgid "One Day"
|
||||
msgstr "Um Dia"
|
||||
|
||||
#: bookwyrm/forms.py:380
|
||||
#: bookwyrm/forms.py:393
|
||||
msgid "One Week"
|
||||
msgstr "Uma Semana"
|
||||
|
||||
#: bookwyrm/forms.py:381
|
||||
#: bookwyrm/forms.py:394
|
||||
msgid "One Month"
|
||||
msgstr "Um Mês"
|
||||
|
||||
#: bookwyrm/forms.py:382
|
||||
#: bookwyrm/forms.py:395
|
||||
msgid "Does Not Expire"
|
||||
msgstr "Não Expira"
|
||||
|
||||
#: bookwyrm/forms.py:386
|
||||
#: bookwyrm/forms.py:399
|
||||
#, python-brace-format
|
||||
msgid "{i} uses"
|
||||
msgstr "{i} utilizações"
|
||||
|
||||
#: bookwyrm/forms.py:387
|
||||
#: bookwyrm/forms.py:400
|
||||
msgid "Unlimited"
|
||||
msgstr "Ilimitado"
|
||||
|
||||
#: bookwyrm/forms.py:489
|
||||
#: bookwyrm/forms.py:502
|
||||
msgid "List Order"
|
||||
msgstr "Ordem da Lista"
|
||||
|
||||
#: bookwyrm/forms.py:490
|
||||
#: bookwyrm/forms.py:503
|
||||
msgid "Book Title"
|
||||
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/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
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"
|
||||
msgstr "Ordenar Por"
|
||||
|
||||
#: bookwyrm/forms.py:497
|
||||
#: bookwyrm/forms.py:510
|
||||
msgid "Ascending"
|
||||
msgstr "Ascendente"
|
||||
|
||||
#: bookwyrm/forms.py:498
|
||||
#: bookwyrm/forms.py:511
|
||||
msgid "Descending"
|
||||
msgstr "Descendente"
|
||||
|
||||
#: bookwyrm/forms.py:511
|
||||
#: bookwyrm/forms.py:524
|
||||
msgid "Reading finish date cannot be before start date."
|
||||
msgstr ""
|
||||
|
||||
|
@ -140,26 +148,26 @@ msgstr "Federado"
|
|||
msgid "Blocked"
|
||||
msgstr "Bloqueado"
|
||||
|
||||
#: bookwyrm/models/fields.py:29
|
||||
#: bookwyrm/models/fields.py:27
|
||||
#, python-format
|
||||
msgid "%(value)s is not a valid remote_id"
|
||||
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
|
||||
msgid "%(value)s is not a valid username"
|
||||
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
|
||||
msgid "username"
|
||||
msgstr "nome de utilizador"
|
||||
|
||||
#: bookwyrm/models/fields.py:188
|
||||
#: bookwyrm/models/fields.py:186
|
||||
msgid "A user with that username already exists."
|
||||
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:4
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:11
|
||||
|
@ -167,7 +175,7 @@ msgstr "Um utilizador com o mesmo nome de utilizador já existe."
|
|||
msgid "Public"
|
||||
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:8
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:14
|
||||
|
@ -175,14 +183,14 @@ msgstr "Público"
|
|||
msgid "Unlisted"
|
||||
msgstr "Não listado"
|
||||
|
||||
#: bookwyrm/models/fields.py:209
|
||||
#: bookwyrm/models/fields.py:207
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:17
|
||||
#: bookwyrm/templates/user/relationships/followers.html:6
|
||||
#: bookwyrm/templates/user/relationships/layout.html:11
|
||||
msgid "Followers"
|
||||
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/privacy-icons.html:15
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:16
|
||||
|
@ -283,7 +291,7 @@ msgid "Português Europeu (European Portuguese)"
|
|||
msgstr "Português (Português Europeu)"
|
||||
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "Swedish (Svenska)"
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:259
|
||||
|
@ -369,7 +377,7 @@ msgstr "Admin"
|
|||
#: bookwyrm/templates/about/about.html:131
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: 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"
|
||||
msgstr "Enviar mensagem direta"
|
||||
|
||||
|
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
|
|||
msgstr "Propriedades físicas"
|
||||
|
||||
#: 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:"
|
||||
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>"
|
||||
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/language_filter.html:8
|
||||
#: bookwyrm/templates/book/editions/format_filter.html:9
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:9
|
||||
msgid "Any"
|
||||
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
|
||||
msgid "Language:"
|
||||
msgstr "Idioma:"
|
||||
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:5
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:6
|
||||
msgid "Search editions"
|
||||
msgstr "Pesquisar edições"
|
||||
|
||||
|
@ -3572,23 +3580,31 @@ msgstr ""
|
|||
msgid "Back to reports"
|
||||
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"
|
||||
msgstr "Estados denunciados"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:27
|
||||
#: bookwyrm/templates/settings/reports/report.html:40
|
||||
msgid "Status has been deleted"
|
||||
msgstr "O estado foi eliminado"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:39
|
||||
#: bookwyrm/templates/settings/reports/report.html:52
|
||||
msgid "Reported links"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:55
|
||||
#: bookwyrm/templates/settings/reports/report.html:68
|
||||
msgid "Moderator Comments"
|
||||
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
|
||||
msgid "Comment"
|
||||
msgstr "Comentar"
|
||||
|
@ -4013,14 +4029,14 @@ msgstr "porcento"
|
|||
msgid "of %(pages)s pages"
|
||||
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:53
|
||||
#: bookwyrm/templates/snippets/status/layout.html:54
|
||||
msgid "Reply"
|
||||
msgstr "Responder"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:18
|
||||
msgid "Content"
|
||||
msgstr "Conteúdo"
|
||||
|
||||
|
@ -4098,7 +4114,7 @@ msgstr "Filtros aplicados"
|
|||
msgid "Clear filters"
|
||||
msgstr "Limpar filtros"
|
||||
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
|
||||
msgid "Apply filters"
|
||||
msgstr "Aplicar filtros"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-28 02:50+0000\n"
|
||||
"PO-Revision-Date: 2022-01-28 04:03\n"
|
||||
"POT-Creation-Date: 2022-02-02 20:09+0000\n"
|
||||
"PO-Revision-Date: 2022-02-04 21:00\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Swedish\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-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."
|
||||
msgstr "En användare med den här e-postadressen existerar redan."
|
||||
|
||||
#: bookwyrm/forms.py:379
|
||||
#: bookwyrm/forms.py:392
|
||||
msgid "One Day"
|
||||
msgstr "En dag"
|
||||
|
||||
#: bookwyrm/forms.py:380
|
||||
#: bookwyrm/forms.py:393
|
||||
msgid "One Week"
|
||||
msgstr "En vecka"
|
||||
|
||||
#: bookwyrm/forms.py:381
|
||||
#: bookwyrm/forms.py:394
|
||||
msgid "One Month"
|
||||
msgstr "En månad"
|
||||
|
||||
#: bookwyrm/forms.py:382
|
||||
#: bookwyrm/forms.py:395
|
||||
msgid "Does Not Expire"
|
||||
msgstr "Slutar inte gälla"
|
||||
|
||||
#: bookwyrm/forms.py:386
|
||||
#: bookwyrm/forms.py:399
|
||||
#, python-brace-format
|
||||
msgid "{i} uses"
|
||||
msgstr "{i} använder"
|
||||
|
||||
#: bookwyrm/forms.py:387
|
||||
#: bookwyrm/forms.py:400
|
||||
msgid "Unlimited"
|
||||
msgstr "Obegränsad"
|
||||
|
||||
#: bookwyrm/forms.py:489
|
||||
#: bookwyrm/forms.py:502
|
||||
msgid "List Order"
|
||||
msgstr "Listordning"
|
||||
|
||||
#: bookwyrm/forms.py:490
|
||||
#: bookwyrm/forms.py:503
|
||||
msgid "Book Title"
|
||||
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/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
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"
|
||||
msgstr "Sortera efter"
|
||||
|
||||
#: bookwyrm/forms.py:497
|
||||
#: bookwyrm/forms.py:510
|
||||
msgid "Ascending"
|
||||
msgstr "Stigande"
|
||||
|
||||
#: bookwyrm/forms.py:498
|
||||
#: bookwyrm/forms.py:511
|
||||
msgid "Descending"
|
||||
msgstr "Fallande"
|
||||
|
||||
#: bookwyrm/forms.py:511
|
||||
#: bookwyrm/forms.py:524
|
||||
msgid "Reading finish date cannot be before start date."
|
||||
msgstr "Slutdatum för läsning kan inte vara före startdatum."
|
||||
|
||||
|
@ -140,26 +148,26 @@ msgstr "Federerad"
|
|||
msgid "Blocked"
|
||||
msgstr "Blockerad"
|
||||
|
||||
#: bookwyrm/models/fields.py:29
|
||||
#: bookwyrm/models/fields.py:27
|
||||
#, python-format
|
||||
msgid "%(value)s is not a valid 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
|
||||
msgid "%(value)s is not a valid username"
|
||||
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
|
||||
msgid "username"
|
||||
msgstr "användarnamn"
|
||||
|
||||
#: bookwyrm/models/fields.py:188
|
||||
#: bookwyrm/models/fields.py:186
|
||||
msgid "A user with that username already exists."
|
||||
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:4
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:11
|
||||
|
@ -167,7 +175,7 @@ msgstr "En användare med det användarnamnet existerar redan."
|
|||
msgid "Public"
|
||||
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:8
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:14
|
||||
|
@ -175,14 +183,14 @@ msgstr "Publik"
|
|||
msgid "Unlisted"
|
||||
msgstr "Ej listad"
|
||||
|
||||
#: bookwyrm/models/fields.py:209
|
||||
#: bookwyrm/models/fields.py:207
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:17
|
||||
#: bookwyrm/templates/user/relationships/followers.html:6
|
||||
#: bookwyrm/templates/user/relationships/layout.html:11
|
||||
msgid "Followers"
|
||||
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/privacy-icons.html:15
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:16
|
||||
|
@ -283,8 +291,8 @@ msgid "Português Europeu (European Portuguese)"
|
|||
msgstr "Português Europeu (Europeisk Portugisiska)"
|
||||
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "Swedish (Svenska)"
|
||||
msgstr ""
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr "Svenska (Svenska)"
|
||||
|
||||
#: bookwyrm/settings.py:259
|
||||
msgid "简体中文 (Simplified Chinese)"
|
||||
|
@ -369,7 +377,7 @@ msgstr "Administratör"
|
|||
#: bookwyrm/templates/about/about.html:131
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: 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"
|
||||
msgstr "Skicka direktmeddelande"
|
||||
|
||||
|
@ -1017,7 +1025,7 @@ msgid "Physical Properties"
|
|||
msgstr "Fysiska egenskaper"
|
||||
|
||||
#: 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:"
|
||||
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>"
|
||||
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/language_filter.html:8
|
||||
#: bookwyrm/templates/book/editions/format_filter.html:9
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:9
|
||||
msgid "Any"
|
||||
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
|
||||
msgid "Language:"
|
||||
msgstr "Språk:"
|
||||
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:5
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:6
|
||||
msgid "Search editions"
|
||||
msgstr "Sök efter utgåvor"
|
||||
|
||||
|
@ -2020,7 +2028,7 @@ msgstr "Försök igen"
|
|||
|
||||
#: 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."
|
||||
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
|
||||
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
|
||||
#, python-format
|
||||
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
|
||||
#, python-format
|
||||
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/list.html:249
|
||||
|
@ -2297,7 +2305,7 @@ msgstr "Nu är du klar!"
|
|||
#: bookwyrm/templates/lists/list.html:83
|
||||
#, python-format
|
||||
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
|
||||
msgid "Suggested by"
|
||||
|
@ -2395,7 +2403,7 @@ msgstr "Anteckningar:"
|
|||
|
||||
#: bookwyrm/templates/lists/item_notes_field.html:19
|
||||
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
|
||||
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
|
||||
msgid "Edit notes"
|
||||
msgstr ""
|
||||
msgstr "Redigera anteckningar"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:111
|
||||
msgid "Add notes"
|
||||
msgstr ""
|
||||
msgstr "Lägg till anteckningar"
|
||||
|
||||
#: bookwyrm/templates/lists/list.html:123
|
||||
#, python-format
|
||||
|
@ -3574,23 +3582,31 @@ msgstr "Inga länkar tillgängliga för den här domänen."
|
|||
msgid "Back to reports"
|
||||
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"
|
||||
msgstr "Rapporterade statusar"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:27
|
||||
#: bookwyrm/templates/settings/reports/report.html:40
|
||||
msgid "Status has been deleted"
|
||||
msgstr "Statusen har tagits bort"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:39
|
||||
#: bookwyrm/templates/settings/reports/report.html:52
|
||||
msgid "Reported links"
|
||||
msgstr "Rapporterade länkar"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:55
|
||||
#: bookwyrm/templates/settings/reports/report.html:68
|
||||
msgid "Moderator Comments"
|
||||
msgstr "Moderatorns kommentarer"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:73
|
||||
#: bookwyrm/templates/settings/reports/report.html:89
|
||||
#: bookwyrm/templates/snippets/create_status.html:28
|
||||
msgid "Comment"
|
||||
msgstr "Kommentar"
|
||||
|
@ -4015,14 +4031,14 @@ msgstr "procent"
|
|||
msgid "of %(pages)s pages"
|
||||
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:53
|
||||
#: bookwyrm/templates/snippets/status/layout.html:54
|
||||
msgid "Reply"
|
||||
msgstr "Svara"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:18
|
||||
msgid "Content"
|
||||
msgstr "Innehåll"
|
||||
|
||||
|
@ -4100,7 +4116,7 @@ msgstr "Filtren är verkställda"
|
|||
msgid "Clear filters"
|
||||
msgstr "Rensa filtren"
|
||||
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
|
||||
msgid "Apply filters"
|
||||
msgstr "Verkställ filtren"
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-28 02:50+0000\n"
|
||||
"PO-Revision-Date: 2022-01-28 04:03\n"
|
||||
"POT-Creation-Date: 2022-02-02 20:09+0000\n"
|
||||
"PO-Revision-Date: 2022-02-04 21:01\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Chinese Simplified\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-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."
|
||||
msgstr "已经存在使用该邮箱的用户。"
|
||||
|
||||
#: bookwyrm/forms.py:379
|
||||
#: bookwyrm/forms.py:392
|
||||
msgid "One Day"
|
||||
msgstr "一天"
|
||||
|
||||
#: bookwyrm/forms.py:380
|
||||
#: bookwyrm/forms.py:393
|
||||
msgid "One Week"
|
||||
msgstr "一周"
|
||||
|
||||
#: bookwyrm/forms.py:381
|
||||
#: bookwyrm/forms.py:394
|
||||
msgid "One Month"
|
||||
msgstr "一个月"
|
||||
|
||||
#: bookwyrm/forms.py:382
|
||||
#: bookwyrm/forms.py:395
|
||||
msgid "Does Not Expire"
|
||||
msgstr "永不失效"
|
||||
|
||||
#: bookwyrm/forms.py:386
|
||||
#: bookwyrm/forms.py:399
|
||||
#, python-brace-format
|
||||
msgid "{i} uses"
|
||||
msgstr "{i} 次使用"
|
||||
|
||||
#: bookwyrm/forms.py:387
|
||||
#: bookwyrm/forms.py:400
|
||||
msgid "Unlimited"
|
||||
msgstr "不受限"
|
||||
|
||||
#: bookwyrm/forms.py:489
|
||||
#: bookwyrm/forms.py:502
|
||||
msgid "List Order"
|
||||
msgstr "列表顺序"
|
||||
|
||||
#: bookwyrm/forms.py:490
|
||||
#: bookwyrm/forms.py:503
|
||||
msgid "Book Title"
|
||||
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/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
msgstr "评价"
|
||||
|
||||
#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177
|
||||
#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177
|
||||
msgid "Sort By"
|
||||
msgstr "排序方式"
|
||||
|
||||
#: bookwyrm/forms.py:497
|
||||
#: bookwyrm/forms.py:510
|
||||
msgid "Ascending"
|
||||
msgstr "升序"
|
||||
|
||||
#: bookwyrm/forms.py:498
|
||||
#: bookwyrm/forms.py:511
|
||||
msgid "Descending"
|
||||
msgstr "降序"
|
||||
|
||||
#: bookwyrm/forms.py:511
|
||||
#: bookwyrm/forms.py:524
|
||||
msgid "Reading finish date cannot be before start date."
|
||||
msgstr ""
|
||||
|
||||
|
@ -140,26 +148,26 @@ msgstr "跨站"
|
|||
msgid "Blocked"
|
||||
msgstr "已屏蔽"
|
||||
|
||||
#: bookwyrm/models/fields.py:29
|
||||
#: bookwyrm/models/fields.py:27
|
||||
#, python-format
|
||||
msgid "%(value)s is not a valid 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
|
||||
msgid "%(value)s is not a valid username"
|
||||
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
|
||||
msgid "username"
|
||||
msgstr "用户名"
|
||||
|
||||
#: bookwyrm/models/fields.py:188
|
||||
#: bookwyrm/models/fields.py:186
|
||||
msgid "A user with that username already exists."
|
||||
msgstr "已经存在使用该用户名的用户。"
|
||||
|
||||
#: bookwyrm/models/fields.py:207
|
||||
#: bookwyrm/models/fields.py:205
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:3
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:4
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:11
|
||||
|
@ -167,7 +175,7 @@ msgstr "已经存在使用该用户名的用户。"
|
|||
msgid "Public"
|
||||
msgstr "公开"
|
||||
|
||||
#: bookwyrm/models/fields.py:208
|
||||
#: bookwyrm/models/fields.py:206
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:7
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:8
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:14
|
||||
|
@ -175,14 +183,14 @@ msgstr "公开"
|
|||
msgid "Unlisted"
|
||||
msgstr "不公开"
|
||||
|
||||
#: bookwyrm/models/fields.py:209
|
||||
#: bookwyrm/models/fields.py:207
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:17
|
||||
#: bookwyrm/templates/user/relationships/followers.html:6
|
||||
#: bookwyrm/templates/user/relationships/layout.html:11
|
||||
msgid "Followers"
|
||||
msgstr "关注者"
|
||||
|
||||
#: bookwyrm/models/fields.py:210
|
||||
#: bookwyrm/models/fields.py:208
|
||||
#: bookwyrm/templates/snippets/create_status/post_options_block.html:8
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:15
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:16
|
||||
|
@ -283,7 +291,7 @@ msgid "Português Europeu (European Portuguese)"
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "Swedish (Svenska)"
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:259
|
||||
|
@ -369,7 +377,7 @@ msgstr "管理员"
|
|||
#: bookwyrm/templates/about/about.html:131
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: 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"
|
||||
msgstr "发送私信"
|
||||
|
||||
|
@ -1012,7 +1020,7 @@ msgid "Physical Properties"
|
|||
msgstr "实体性质"
|
||||
|
||||
#: 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:"
|
||||
msgstr "格式:"
|
||||
|
||||
|
@ -1050,17 +1058,17 @@ msgstr "%(book_title)s 的各版本"
|
|||
msgid "Editions of <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/language_filter.html:8
|
||||
#: bookwyrm/templates/book/editions/format_filter.html:9
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:9
|
||||
msgid "Any"
|
||||
msgstr "所有"
|
||||
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:5
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:6
|
||||
#: bookwyrm/templates/preferences/edit_user.html:95
|
||||
msgid "Language:"
|
||||
msgstr "语言:"
|
||||
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:5
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:6
|
||||
msgid "Search editions"
|
||||
msgstr "搜索版本"
|
||||
|
||||
|
@ -3557,23 +3565,31 @@ msgstr ""
|
|||
msgid "Back to reports"
|
||||
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"
|
||||
msgstr "被报告的状态"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:27
|
||||
#: bookwyrm/templates/settings/reports/report.html:40
|
||||
msgid "Status has been deleted"
|
||||
msgstr "状态已被删除"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:39
|
||||
#: bookwyrm/templates/settings/reports/report.html:52
|
||||
msgid "Reported links"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:55
|
||||
#: bookwyrm/templates/settings/reports/report.html:68
|
||||
msgid "Moderator Comments"
|
||||
msgstr "监察员评论"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:73
|
||||
#: bookwyrm/templates/settings/reports/report.html:89
|
||||
#: bookwyrm/templates/snippets/create_status.html:28
|
||||
msgid "Comment"
|
||||
msgstr "评论"
|
||||
|
@ -3996,14 +4012,14 @@ msgstr "百分比"
|
|||
msgid "of %(pages)s pages"
|
||||
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:53
|
||||
#: bookwyrm/templates/snippets/status/layout.html:54
|
||||
msgid "Reply"
|
||||
msgstr "回复"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:18
|
||||
msgid "Content"
|
||||
msgstr "内容"
|
||||
|
||||
|
@ -4081,7 +4097,7 @@ msgstr ""
|
|||
msgid "Clear filters"
|
||||
msgstr "清除过滤器"
|
||||
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
|
||||
msgid "Apply filters"
|
||||
msgstr "应用过滤器"
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: bookwyrm\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-01-28 02:50+0000\n"
|
||||
"PO-Revision-Date: 2022-01-28 04:03\n"
|
||||
"POT-Creation-Date: 2022-02-02 20:09+0000\n"
|
||||
"PO-Revision-Date: 2022-02-04 21:01\n"
|
||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||
"Language-Team: Chinese Traditional\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-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."
|
||||
msgstr "已經存在使用該郵箱的使用者。"
|
||||
|
||||
#: bookwyrm/forms.py:379
|
||||
#: bookwyrm/forms.py:392
|
||||
msgid "One Day"
|
||||
msgstr "一天"
|
||||
|
||||
#: bookwyrm/forms.py:380
|
||||
#: bookwyrm/forms.py:393
|
||||
msgid "One Week"
|
||||
msgstr "一週"
|
||||
|
||||
#: bookwyrm/forms.py:381
|
||||
#: bookwyrm/forms.py:394
|
||||
msgid "One Month"
|
||||
msgstr "一個月"
|
||||
|
||||
#: bookwyrm/forms.py:382
|
||||
#: bookwyrm/forms.py:395
|
||||
msgid "Does Not Expire"
|
||||
msgstr "永不失效"
|
||||
|
||||
#: bookwyrm/forms.py:386
|
||||
#: bookwyrm/forms.py:399
|
||||
#, python-brace-format
|
||||
msgid "{i} uses"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/forms.py:387
|
||||
#: bookwyrm/forms.py:400
|
||||
msgid "Unlimited"
|
||||
msgstr "不受限"
|
||||
|
||||
#: bookwyrm/forms.py:489
|
||||
#: bookwyrm/forms.py:502
|
||||
msgid "List Order"
|
||||
msgstr "列表順序"
|
||||
|
||||
#: bookwyrm/forms.py:490
|
||||
#: bookwyrm/forms.py:503
|
||||
msgid "Book Title"
|
||||
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/snippets/create_status/review.html:32
|
||||
msgid "Rating"
|
||||
msgstr "評價"
|
||||
|
||||
#: bookwyrm/forms.py:493 bookwyrm/templates/lists/list.html:177
|
||||
#: bookwyrm/forms.py:506 bookwyrm/templates/lists/list.html:177
|
||||
msgid "Sort By"
|
||||
msgstr "排序方式"
|
||||
|
||||
#: bookwyrm/forms.py:497
|
||||
#: bookwyrm/forms.py:510
|
||||
msgid "Ascending"
|
||||
msgstr "升序"
|
||||
|
||||
#: bookwyrm/forms.py:498
|
||||
#: bookwyrm/forms.py:511
|
||||
msgid "Descending"
|
||||
msgstr "降序"
|
||||
|
||||
#: bookwyrm/forms.py:511
|
||||
#: bookwyrm/forms.py:524
|
||||
msgid "Reading finish date cannot be before start date."
|
||||
msgstr ""
|
||||
|
||||
|
@ -140,26 +148,26 @@ msgstr "跨站"
|
|||
msgid "Blocked"
|
||||
msgstr "已封鎖"
|
||||
|
||||
#: bookwyrm/models/fields.py:29
|
||||
#: bookwyrm/models/fields.py:27
|
||||
#, python-format
|
||||
msgid "%(value)s is not a valid 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
|
||||
msgid "%(value)s is not a valid username"
|
||||
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
|
||||
msgid "username"
|
||||
msgstr "使用者名稱"
|
||||
|
||||
#: bookwyrm/models/fields.py:188
|
||||
#: bookwyrm/models/fields.py:186
|
||||
msgid "A user with that username already exists."
|
||||
msgstr "已經存在使用該名稱的使用者。"
|
||||
|
||||
#: bookwyrm/models/fields.py:207
|
||||
#: bookwyrm/models/fields.py:205
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:3
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:4
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:11
|
||||
|
@ -167,7 +175,7 @@ msgstr "已經存在使用該名稱的使用者。"
|
|||
msgid "Public"
|
||||
msgstr "公開"
|
||||
|
||||
#: bookwyrm/models/fields.py:208
|
||||
#: bookwyrm/models/fields.py:206
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:7
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:8
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:14
|
||||
|
@ -175,14 +183,14 @@ msgstr "公開"
|
|||
msgid "Unlisted"
|
||||
msgstr "不公開"
|
||||
|
||||
#: bookwyrm/models/fields.py:209
|
||||
#: bookwyrm/models/fields.py:207
|
||||
#: bookwyrm/templates/snippets/privacy_select.html:17
|
||||
#: bookwyrm/templates/user/relationships/followers.html:6
|
||||
#: bookwyrm/templates/user/relationships/layout.html:11
|
||||
msgid "Followers"
|
||||
msgstr "關注者"
|
||||
|
||||
#: bookwyrm/models/fields.py:210
|
||||
#: bookwyrm/models/fields.py:208
|
||||
#: bookwyrm/templates/snippets/create_status/post_options_block.html:8
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:15
|
||||
#: bookwyrm/templates/snippets/privacy-icons.html:16
|
||||
|
@ -283,7 +291,7 @@ msgid "Português Europeu (European Portuguese)"
|
|||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:258
|
||||
msgid "Swedish (Svenska)"
|
||||
msgid "Svenska (Swedish)"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/settings.py:259
|
||||
|
@ -369,7 +377,7 @@ msgstr "管理員"
|
|||
#: bookwyrm/templates/about/about.html:131
|
||||
#: bookwyrm/templates/settings/users/user_moderation_actions.html:14
|
||||
#: 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"
|
||||
msgstr "發送私信"
|
||||
|
||||
|
@ -1012,7 +1020,7 @@ msgid "Physical Properties"
|
|||
msgstr "實體性質"
|
||||
|
||||
#: 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:"
|
||||
msgstr "格式:"
|
||||
|
||||
|
@ -1050,17 +1058,17 @@ msgstr "%(book_title)s 的各版本"
|
|||
msgid "Editions of <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/language_filter.html:8
|
||||
#: bookwyrm/templates/book/editions/format_filter.html:9
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:9
|
||||
msgid "Any"
|
||||
msgstr "所有"
|
||||
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:5
|
||||
#: bookwyrm/templates/book/editions/language_filter.html:6
|
||||
#: bookwyrm/templates/preferences/edit_user.html:95
|
||||
msgid "Language:"
|
||||
msgstr "語言:"
|
||||
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:5
|
||||
#: bookwyrm/templates/book/editions/search_filter.html:6
|
||||
msgid "Search editions"
|
||||
msgstr ""
|
||||
|
||||
|
@ -3557,23 +3565,31 @@ msgstr ""
|
|||
msgid "Back to reports"
|
||||
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"
|
||||
msgstr "被舉報的狀態"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:27
|
||||
#: bookwyrm/templates/settings/reports/report.html:40
|
||||
msgid "Status has been deleted"
|
||||
msgstr "狀態已被刪除"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:39
|
||||
#: bookwyrm/templates/settings/reports/report.html:52
|
||||
msgid "Reported links"
|
||||
msgstr ""
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:55
|
||||
#: bookwyrm/templates/settings/reports/report.html:68
|
||||
msgid "Moderator Comments"
|
||||
msgstr "監察員評論"
|
||||
|
||||
#: bookwyrm/templates/settings/reports/report.html:73
|
||||
#: bookwyrm/templates/settings/reports/report.html:89
|
||||
#: bookwyrm/templates/snippets/create_status.html:28
|
||||
msgid "Comment"
|
||||
msgstr "評論"
|
||||
|
@ -3996,14 +4012,14 @@ msgstr "百分比"
|
|||
msgid "of %(pages)s pages"
|
||||
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:53
|
||||
#: bookwyrm/templates/snippets/status/layout.html:54
|
||||
msgid "Reply"
|
||||
msgstr "回覆"
|
||||
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:17
|
||||
#: bookwyrm/templates/snippets/create_status/content_field.html:18
|
||||
msgid "Content"
|
||||
msgstr "內容"
|
||||
|
||||
|
@ -4081,7 +4097,7 @@ msgstr ""
|
|||
msgid "Clear filters"
|
||||
msgstr "清除過濾器"
|
||||
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42
|
||||
#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
|
||||
msgid "Apply filters"
|
||||
msgstr "使用過濾器"
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
celery==5.2.2
|
||||
colorthief==0.2.1
|
||||
Django==3.2.11
|
||||
Django==3.2.12
|
||||
django-imagekit==4.1.0
|
||||
django-model-utils==4.0.0
|
||||
environs==9.3.4
|
||||
flower==1.0.0
|
||||
Markdown==3.3.3
|
||||
Pillow>=8.2.0
|
||||
Pillow>=9.0.0
|
||||
psycopg2==2.8.4
|
||||
pycryptodome==3.9.4
|
||||
python-dateutil==2.8.1
|
||||
|
@ -18,9 +18,13 @@ pytz>=2021.1
|
|||
boto3==1.17.88
|
||||
django-storages==1.11.1
|
||||
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
|
||||
black==21.4b2
|
||||
pytest-django==4.1.0
|
||||
pytest==6.1.2
|
||||
pytest-cov==2.10.1
|
||||
|
|
Loading…
Reference in a new issue