mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-11-23 10:01:04 +00:00
Merge pull request #1253 from bookwyrm-social/new-feeds
Use Home and Books feeds instead of Home/Local/Federated feeds
This commit is contained in:
commit
ac52142146
20 changed files with 494 additions and 322 deletions
|
@ -4,11 +4,12 @@ from django.db.models import signals, Q
|
||||||
|
|
||||||
from bookwyrm import models
|
from bookwyrm import models
|
||||||
from bookwyrm.redis_store import RedisStore, r
|
from bookwyrm.redis_store import RedisStore, r
|
||||||
|
from bookwyrm.settings import STREAMS
|
||||||
from bookwyrm.views.helpers import privacy_filter
|
from bookwyrm.views.helpers import privacy_filter
|
||||||
|
|
||||||
|
|
||||||
class ActivityStream(RedisStore):
|
class ActivityStream(RedisStore):
|
||||||
"""a category of activity stream (like home, local, federated)"""
|
"""a category of activity stream (like home, local, books)"""
|
||||||
|
|
||||||
def stream_id(self, user):
|
def stream_id(self, user):
|
||||||
"""the redis key for this user's instance of this stream"""
|
"""the redis key for this user's instance of this stream"""
|
||||||
|
@ -155,29 +156,60 @@ class LocalStream(ActivityStream):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class FederatedStream(ActivityStream):
|
class BooksStream(ActivityStream):
|
||||||
"""users you follow"""
|
"""books on your shelves"""
|
||||||
|
|
||||||
key = "federated"
|
key = "books"
|
||||||
|
|
||||||
def get_audience(self, status):
|
def get_audience(self, status):
|
||||||
# this stream wants no part in non-public statuses
|
"""anyone with the mentioned book on their shelves"""
|
||||||
if status.privacy != "public":
|
# only show public statuses on the books feed,
|
||||||
|
# and only statuses that mention books
|
||||||
|
if status.privacy != "public" or not (
|
||||||
|
status.mention_books.exists() or hasattr(status, "book")
|
||||||
|
):
|
||||||
return []
|
return []
|
||||||
return super().get_audience(status)
|
|
||||||
|
work = (
|
||||||
|
status.book.parent_work
|
||||||
|
if hasattr(status, "book")
|
||||||
|
else status.mention_books.first().parent_work
|
||||||
|
)
|
||||||
|
|
||||||
|
audience = super().get_audience(status)
|
||||||
|
if not audience:
|
||||||
|
return []
|
||||||
|
return audience.filter(shelfbook__book__parent_work=work).distinct()
|
||||||
|
|
||||||
def get_statuses_for_user(self, user):
|
def get_statuses_for_user(self, user):
|
||||||
|
"""any public status that mentions the user's books"""
|
||||||
|
books = user.shelfbook_set.values_list(
|
||||||
|
"book__parent_work__id", flat=True
|
||||||
|
).distinct()
|
||||||
return privacy_filter(
|
return privacy_filter(
|
||||||
user,
|
user,
|
||||||
models.Status.objects.select_subclasses(),
|
models.Status.objects.select_subclasses()
|
||||||
|
.filter(
|
||||||
|
Q(comment__book__parent_work__id__in=books)
|
||||||
|
| Q(quotation__book__parent_work__id__in=books)
|
||||||
|
| Q(review__book__parent_work__id__in=books)
|
||||||
|
| Q(mention_books__parent_work__id__in=books)
|
||||||
|
)
|
||||||
|
.distinct(),
|
||||||
privacy_levels=["public"],
|
privacy_levels=["public"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# determine which streams are enabled in settings.py
|
||||||
|
available_streams = [s["key"] for s in STREAMS]
|
||||||
streams = {
|
streams = {
|
||||||
"home": HomeStream(),
|
k: v
|
||||||
"local": LocalStream(),
|
for (k, v) in {
|
||||||
"federated": FederatedStream(),
|
"home": HomeStream(),
|
||||||
|
"local": LocalStream(),
|
||||||
|
"books": BooksStream(),
|
||||||
|
}.items()
|
||||||
|
if k in available_streams
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -197,7 +229,6 @@ def add_status_on_create(sender, instance, created, *args, **kwargs):
|
||||||
if not created:
|
if not created:
|
||||||
return
|
return
|
||||||
|
|
||||||
# iterates through Home, Local, Federated
|
|
||||||
for stream in streams.values():
|
for stream in streams.values():
|
||||||
stream.add_status(instance)
|
stream.add_status(instance)
|
||||||
|
|
||||||
|
@ -264,7 +295,7 @@ def remove_statuses_on_block(sender, instance, *args, **kwargs):
|
||||||
# pylint: disable=unused-argument
|
# pylint: disable=unused-argument
|
||||||
def add_statuses_on_unblock(sender, instance, *args, **kwargs):
|
def add_statuses_on_unblock(sender, instance, *args, **kwargs):
|
||||||
"""remove statuses from all feeds on block"""
|
"""remove statuses from all feeds on block"""
|
||||||
public_streams = [LocalStream(), FederatedStream()]
|
public_streams = [v for (k, v) in streams.items() if k != "home"]
|
||||||
# add statuses back to streams with statuses from anyone
|
# add statuses back to streams with statuses from anyone
|
||||||
if instance.user_subject.local:
|
if instance.user_subject.local:
|
||||||
for stream in public_streams:
|
for stream in public_streams:
|
||||||
|
|
17
bookwyrm/migrations/0080_alter_shelfbook_options.py
Normal file
17
bookwyrm/migrations/0080_alter_shelfbook_options.py
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# Generated by Django 3.2.4 on 2021-08-05 00:00
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("bookwyrm", "0079_merge_20210804_1746"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name="shelfbook",
|
||||||
|
options={"ordering": ("-shelved_date", "-created_date", "-updated_date")},
|
||||||
|
),
|
||||||
|
]
|
|
@ -118,7 +118,11 @@ REDIS_ACTIVITY_PORT = env("REDIS_ACTIVITY_PORT", 6379)
|
||||||
REDIS_ACTIVITY_PASSWORD = env("REDIS_ACTIVITY_PASSWORD", None)
|
REDIS_ACTIVITY_PASSWORD = env("REDIS_ACTIVITY_PASSWORD", None)
|
||||||
|
|
||||||
MAX_STREAM_LENGTH = int(env("MAX_STREAM_LENGTH", 200))
|
MAX_STREAM_LENGTH = int(env("MAX_STREAM_LENGTH", 200))
|
||||||
STREAMS = ["home", "local", "federated"]
|
|
||||||
|
STREAMS = [
|
||||||
|
{"key": "home", "name": _("Home Timeline"), "shortname": _("Home")},
|
||||||
|
{"key": "books", "name": _("Books Timeline"), "shortname": _("Books")},
|
||||||
|
]
|
||||||
|
|
||||||
# Database
|
# Database
|
||||||
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases
|
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases
|
||||||
|
|
|
@ -4,35 +4,25 @@
|
||||||
{% block panel %}
|
{% block panel %}
|
||||||
|
|
||||||
<h1 class="title">
|
<h1 class="title">
|
||||||
{% if tab == 'home' %}
|
{{ tab.name }}
|
||||||
{% trans "Home Timeline" %}
|
|
||||||
{% elif tab == 'local' %}
|
|
||||||
{% trans "Local Timeline" %}
|
|
||||||
{% else %}
|
|
||||||
{% trans "Federated Timeline" %}
|
|
||||||
{% endif %}
|
|
||||||
</h1>
|
</h1>
|
||||||
<div class="tabs">
|
<div class="tabs">
|
||||||
<ul>
|
<ul>
|
||||||
<li class="{% if tab == 'home' %}is-active{% endif %}"{% if tab == 'home' %} aria-current="page"{% endif %}>
|
{% for stream in streams %}
|
||||||
<a href="/#feed">{% trans "Home" %}</a>
|
<li class="{% if tab.key == stream.key %}is-active{% endif %}"{% if tab.key == stream.key %} aria-current="page"{% endif %}>
|
||||||
</li>
|
<a href="/{{ stream.key }}#feed">{{ stream.shortname }}</a>
|
||||||
<li class="{% if tab == 'local' %}is-active{% endif %}"{% if tab == 'local' %} aria-current="page"{% endif %}>
|
|
||||||
<a href="/local#feed">{% trans "Local" %}</a>
|
|
||||||
</li>
|
|
||||||
<li class="{% if tab == 'federated' %}is-active{% endif %}"{% if tab == 'federated' %} aria-current="page"{% endif %}>
|
|
||||||
<a href="/federated#feed">{% trans "Federated" %}</a>
|
|
||||||
</li>
|
</li>
|
||||||
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{# announcements and system messages #}
|
{# announcements and system messages #}
|
||||||
{% if not activities.number > 1 %}
|
{% if not activities.number > 1 %}
|
||||||
<a href="{{ request.path }}" class="transition-y is-hidden notification is-primary is-block" data-poll-wrapper>
|
<a href="{{ request.path }}" class="transition-y is-hidden notification is-primary is-block" data-poll-wrapper>
|
||||||
{% blocktrans %}load <span data-poll="stream/{{ tab }}">0</span> unread status(es){% endblocktrans %}
|
{% blocktrans %}load <span data-poll="stream/{{ tab.key }}">0</span> unread status(es){% endblocktrans %}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
{% if request.user.show_goal and not goal and tab == 'home' %}
|
{% if request.user.show_goal and not goal and tab.key == streams.first.key %}
|
||||||
{% now 'Y' as year %}
|
{% now 'Y' as year %}
|
||||||
<section class="block">
|
<section class="block">
|
||||||
{% include 'snippets/goal_card.html' with year=year %}
|
{% include 'snippets/goal_card.html' with year=year %}
|
||||||
|
|
|
@ -46,4 +46,4 @@ class Activitystreams(TestCase):
|
||||||
"bookwyrm.activitystreams.ActivityStream.populate_store"
|
"bookwyrm.activitystreams.ActivityStream.populate_store"
|
||||||
) as redis_mock:
|
) as redis_mock:
|
||||||
populate_streams()
|
populate_streams()
|
||||||
self.assertEqual(redis_mock.call_count, 6) # 2 users x 3 streams
|
self.assertEqual(redis_mock.call_count, 4) # 2 users x 2 streams
|
||||||
|
|
|
@ -6,6 +6,7 @@ from bookwyrm import activitystreams, models
|
||||||
|
|
||||||
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay")
|
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay")
|
||||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||||
|
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
|
||||||
class Activitystreams(TestCase):
|
class Activitystreams(TestCase):
|
||||||
"""using redis to build activity streams"""
|
"""using redis to build activity streams"""
|
||||||
|
|
||||||
|
@ -32,7 +33,8 @@ class Activitystreams(TestCase):
|
||||||
inbox="https://example.com/users/rat/inbox",
|
inbox="https://example.com/users/rat/inbox",
|
||||||
outbox="https://example.com/users/rat/outbox",
|
outbox="https://example.com/users/rat/outbox",
|
||||||
)
|
)
|
||||||
self.book = models.Edition.objects.create(title="test book")
|
work = models.Work.objects.create(title="test work")
|
||||||
|
self.book = models.Edition.objects.create(title="test book", parent_work=work)
|
||||||
|
|
||||||
class TestStream(activitystreams.ActivityStream):
|
class TestStream(activitystreams.ActivityStream):
|
||||||
"""test stream, don't have to do anything here"""
|
"""test stream, don't have to do anything here"""
|
||||||
|
@ -191,19 +193,95 @@ class Activitystreams(TestCase):
|
||||||
users = activitystreams.LocalStream().get_audience(status)
|
users = activitystreams.LocalStream().get_audience(status)
|
||||||
self.assertEqual(users, [])
|
self.assertEqual(users, [])
|
||||||
|
|
||||||
def test_federatedstream_get_audience(self, *_):
|
def test_localstream_get_audience_books_no_book(self, *_):
|
||||||
"""get a list of users that should see a status"""
|
"""get a list of users that should see a status"""
|
||||||
status = models.Status.objects.create(
|
status = models.Status.objects.create(
|
||||||
user=self.remote_user, content="hi", privacy="public"
|
user=self.local_user, content="hi", privacy="public"
|
||||||
)
|
)
|
||||||
users = activitystreams.FederatedStream().get_audience(status)
|
audience = activitystreams.BooksStream().get_audience(status)
|
||||||
self.assertTrue(self.local_user in users)
|
# no books, no audience
|
||||||
self.assertTrue(self.another_user in users)
|
self.assertEqual(audience, [])
|
||||||
|
|
||||||
def test_federatedstream_get_audience_unlisted(self, *_):
|
def test_localstream_get_audience_books_mention_books(self, *_):
|
||||||
"""get a list of users that should see a status"""
|
"""get a list of users that should see a status"""
|
||||||
status = models.Status.objects.create(
|
status = models.Status.objects.create(
|
||||||
user=self.remote_user, content="hi", privacy="unlisted"
|
user=self.local_user, content="hi", privacy="public"
|
||||||
)
|
)
|
||||||
users = activitystreams.FederatedStream().get_audience(status)
|
status.mention_books.add(self.book)
|
||||||
self.assertEqual(users, [])
|
status.save(broadcast=False)
|
||||||
|
models.ShelfBook.objects.create(
|
||||||
|
user=self.local_user,
|
||||||
|
shelf=self.local_user.shelf_set.first(),
|
||||||
|
book=self.book,
|
||||||
|
)
|
||||||
|
# yes book, yes audience
|
||||||
|
audience = activitystreams.BooksStream().get_audience(status)
|
||||||
|
self.assertTrue(self.local_user in audience)
|
||||||
|
|
||||||
|
def test_localstream_get_audience_books_book_field(self, *_):
|
||||||
|
"""get a list of users that should see a status"""
|
||||||
|
status = models.Comment.objects.create(
|
||||||
|
user=self.local_user, content="hi", privacy="public", book=self.book
|
||||||
|
)
|
||||||
|
models.ShelfBook.objects.create(
|
||||||
|
user=self.local_user,
|
||||||
|
shelf=self.local_user.shelf_set.first(),
|
||||||
|
book=self.book,
|
||||||
|
)
|
||||||
|
# yes book, yes audience
|
||||||
|
audience = activitystreams.BooksStream().get_audience(status)
|
||||||
|
self.assertTrue(self.local_user in audience)
|
||||||
|
|
||||||
|
def test_localstream_get_audience_books_alternate_edition(self, *_):
|
||||||
|
"""get a list of users that should see a status"""
|
||||||
|
alt_book = models.Edition.objects.create(
|
||||||
|
title="hi", parent_work=self.book.parent_work
|
||||||
|
)
|
||||||
|
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,
|
||||||
|
)
|
||||||
|
# yes book, yes audience
|
||||||
|
audience = activitystreams.BooksStream().get_audience(status)
|
||||||
|
self.assertTrue(self.local_user in audience)
|
||||||
|
|
||||||
|
def test_localstream_get_audience_books_non_public(self, *_):
|
||||||
|
"""get a list of users that should see a status"""
|
||||||
|
alt_book = models.Edition.objects.create(
|
||||||
|
title="hi", parent_work=self.book.parent_work
|
||||||
|
)
|
||||||
|
status = models.Comment.objects.create(
|
||||||
|
user=self.remote_user, content="hi", privacy="unlisted", book=alt_book
|
||||||
|
)
|
||||||
|
models.ShelfBook.objects.create(
|
||||||
|
user=self.local_user,
|
||||||
|
shelf=self.local_user.shelf_set.first(),
|
||||||
|
book=self.book,
|
||||||
|
)
|
||||||
|
# yes book, yes audience
|
||||||
|
audience = activitystreams.BooksStream().get_audience(status)
|
||||||
|
self.assertEqual(audience, [])
|
||||||
|
|
||||||
|
def test_get_statuses_for_user_books(self, *_):
|
||||||
|
"""create a stream for a user"""
|
||||||
|
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,
|
||||||
|
)
|
||||||
|
# yes book, yes audience
|
||||||
|
result = activitystreams.BooksStream().get_statuses_for_user(self.local_user)
|
||||||
|
self.assertEqual(list(result), [status])
|
||||||
|
|
|
@ -45,7 +45,7 @@ class FeedViews(TestCase):
|
||||||
view = views.Feed.as_view()
|
view = views.Feed.as_view()
|
||||||
request = self.factory.get("")
|
request = self.factory.get("")
|
||||||
request.user = self.local_user
|
request.user = self.local_user
|
||||||
result = view(request, "local")
|
result = view(request, "home")
|
||||||
self.assertIsInstance(result, TemplateResponse)
|
self.assertIsInstance(result, TemplateResponse)
|
||||||
result.render()
|
result.render()
|
||||||
self.assertEqual(result.status_code, 200)
|
self.assertEqual(result.status_code, 200)
|
||||||
|
|
|
@ -23,6 +23,8 @@ STATUS_PATH = r"%s/(%s)/(?P<status_id>\d+)" % (USER_PATH, "|".join(status_types)
|
||||||
|
|
||||||
BOOK_PATH = r"^book/(?P<book_id>\d+)"
|
BOOK_PATH = r"^book/(?P<book_id>\d+)"
|
||||||
|
|
||||||
|
STREAMS = "|".join(s["key"] for s in settings.STREAMS)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("admin/", admin.site.urls),
|
path("admin/", admin.site.urls),
|
||||||
path(
|
path(
|
||||||
|
@ -177,7 +179,7 @@ urlpatterns = [
|
||||||
name="get-started-users",
|
name="get-started-users",
|
||||||
),
|
),
|
||||||
# feeds
|
# feeds
|
||||||
re_path(r"^(?P<tab>home|local|federated)/?$", views.Feed.as_view()),
|
re_path(r"^(?P<tab>{:s})/?$".format(STREAMS), views.Feed.as_view()),
|
||||||
re_path(
|
re_path(
|
||||||
r"^direct-messages/?$", views.DirectMessage.as_view(), name="direct-messages"
|
r"^direct-messages/?$", views.DirectMessage.as_view(), name="direct-messages"
|
||||||
),
|
),
|
||||||
|
|
|
@ -23,10 +23,12 @@ class Feed(View):
|
||||||
|
|
||||||
def get(self, request, tab):
|
def get(self, request, tab):
|
||||||
"""user's homepage with activity feed"""
|
"""user's homepage with activity feed"""
|
||||||
if not tab in STREAMS:
|
tab = [s for s in STREAMS if s["key"] == tab]
|
||||||
tab = "home"
|
tab = tab[0] if tab else STREAMS[0]
|
||||||
|
|
||||||
activities = activitystreams.streams[tab].get_activity_stream(request.user)
|
activities = activitystreams.streams[tab["key"]].get_activity_stream(
|
||||||
|
request.user
|
||||||
|
)
|
||||||
paginated = Paginator(activities, PAGE_LENGTH)
|
paginated = Paginator(activities, PAGE_LENGTH)
|
||||||
|
|
||||||
suggestions = suggested_users.get_suggestions(request.user)
|
suggestions = suggested_users.get_suggestions(request.user)
|
||||||
|
@ -38,8 +40,9 @@ class Feed(View):
|
||||||
"activities": paginated.get_page(request.GET.get("page")),
|
"activities": paginated.get_page(request.GET.get("page")),
|
||||||
"suggested_users": suggestions,
|
"suggested_users": suggestions,
|
||||||
"tab": tab,
|
"tab": tab,
|
||||||
|
"streams": STREAMS,
|
||||||
"goal_form": forms.GoalForm(),
|
"goal_form": forms.GoalForm(),
|
||||||
"path": "/%s" % tab,
|
"path": "/%s" % tab["key"],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
return TemplateResponse(request, "feed/feed.html", data)
|
return TemplateResponse(request, "feed/feed.html", data)
|
||||||
|
|
Binary file not shown.
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: 0.0.1\n"
|
"Project-Id-Version: 0.0.1\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-08-04 20:40+0000\n"
|
"POT-Creation-Date: 2021-08-05 01:33+0000\n"
|
||||||
"PO-Revision-Date: 2021-03-02 17:19-0800\n"
|
"PO-Revision-Date: 2021-03-02 17:19-0800\n"
|
||||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||||
"Language-Team: English <LL@li.org>\n"
|
"Language-Team: English <LL@li.org>\n"
|
||||||
|
@ -101,27 +101,49 @@ msgstr "Username"
|
||||||
msgid "A user with that username already exists."
|
msgid "A user with that username already exists."
|
||||||
msgstr "Dieser Benutzename ist bereits vergeben."
|
msgstr "Dieser Benutzename ist bereits vergeben."
|
||||||
|
|
||||||
#: bookwyrm/settings.py:166
|
#: bookwyrm/settings.py:123
|
||||||
|
msgid "Home Timeline"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:123
|
||||||
|
msgid "Home"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:124
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Title"
|
||||||
|
msgid "Books Timeline"
|
||||||
|
msgstr "Titel"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:124 bookwyrm/templates/search/layout.html:21
|
||||||
|
#: bookwyrm/templates/search/layout.html:42
|
||||||
|
#: bookwyrm/templates/user/layout.html:81
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Book"
|
||||||
|
msgid "Books"
|
||||||
|
msgstr "Buch"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:170
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr "Englisch"
|
msgstr "Englisch"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:167
|
#: bookwyrm/settings.py:171
|
||||||
msgid "German"
|
msgid "German"
|
||||||
msgstr "Deutsch"
|
msgstr "Deutsch"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:168
|
#: bookwyrm/settings.py:172
|
||||||
msgid "Spanish"
|
msgid "Spanish"
|
||||||
msgstr "Spanisch"
|
msgstr "Spanisch"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:169
|
#: bookwyrm/settings.py:173
|
||||||
msgid "French"
|
msgid "French"
|
||||||
msgstr "Französisch"
|
msgstr "Französisch"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:170
|
#: bookwyrm/settings.py:174
|
||||||
msgid "Simplified Chinese"
|
msgid "Simplified Chinese"
|
||||||
msgstr "Vereinfachtes Chinesisch"
|
msgstr "Vereinfachtes Chinesisch"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:171
|
#: bookwyrm/settings.py:175
|
||||||
msgid "Traditional Chinese"
|
msgid "Traditional Chinese"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -972,39 +994,12 @@ msgstr "Alle Nachrichten"
|
||||||
msgid "You have no messages right now."
|
msgid "You have no messages right now."
|
||||||
msgstr "Du hast momentan keine Nachrichten."
|
msgstr "Du hast momentan keine Nachrichten."
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:8
|
#: bookwyrm/templates/feed/feed.html:22
|
||||||
msgid "Home Timeline"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:10
|
|
||||||
msgid "Local Timeline"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:12
|
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Federated Servers"
|
|
||||||
msgid "Federated Timeline"
|
|
||||||
msgstr "Föderierende Server"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:18
|
|
||||||
msgid "Home"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:21
|
|
||||||
msgid "Local"
|
|
||||||
msgstr "Lokal"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:24
|
|
||||||
#: bookwyrm/templates/settings/edit_server.html:40
|
|
||||||
msgid "Federated"
|
|
||||||
msgstr "Föderiert"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:32
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "load <span data-poll=\"stream/%(tab)s\">0</span> unread status(es)"
|
msgid "load <span data-poll=\"stream/%(tab.key)s\">0</span> unread status(es)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:48
|
#: bookwyrm/templates/feed/feed.html:38
|
||||||
msgid "There aren't any activities right now! Try following a user to get started"
|
msgid "There aren't any activities right now! Try following a user to get started"
|
||||||
msgstr "Hier sind noch keine Aktivitäten! Folge anderen, um loszulegen"
|
msgstr "Hier sind noch keine Aktivitäten! Folge anderen, um loszulegen"
|
||||||
|
|
||||||
|
@ -2020,14 +2015,6 @@ msgstr "Suche nach Buch oder Benutzer*in"
|
||||||
msgid "Search type"
|
msgid "Search type"
|
||||||
msgstr "Suche"
|
msgstr "Suche"
|
||||||
|
|
||||||
#: bookwyrm/templates/search/layout.html:21
|
|
||||||
#: bookwyrm/templates/search/layout.html:42
|
|
||||||
#: bookwyrm/templates/user/layout.html:81
|
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Book"
|
|
||||||
msgid "Books"
|
|
||||||
msgstr "Buch"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/search/layout.html:23
|
#: bookwyrm/templates/search/layout.html:23
|
||||||
#: bookwyrm/templates/search/layout.html:46
|
#: bookwyrm/templates/search/layout.html:46
|
||||||
#: bookwyrm/templates/settings/admin_layout.html:26
|
#: bookwyrm/templates/settings/admin_layout.html:26
|
||||||
|
@ -2242,6 +2229,10 @@ msgstr "Instanzname"
|
||||||
msgid "Status:"
|
msgid "Status:"
|
||||||
msgstr "Importstatus"
|
msgstr "Importstatus"
|
||||||
|
|
||||||
|
#: bookwyrm/templates/settings/edit_server.html:40
|
||||||
|
msgid "Federated"
|
||||||
|
msgstr "Föderiert"
|
||||||
|
|
||||||
#: bookwyrm/templates/settings/edit_server.html:41
|
#: bookwyrm/templates/settings/edit_server.html:41
|
||||||
#: bookwyrm/templates/settings/federated_server.html:10
|
#: bookwyrm/templates/settings/federated_server.html:10
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
|
@ -2573,15 +2564,23 @@ msgstr "Registrierungen geschlossen text"
|
||||||
msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
|
msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||||
msgstr "Direktnachrichten mit <a href=\"%(path)s\">%(username)s</a>"
|
msgstr "Direktnachrichten mit <a href=\"%(path)s\">%(username)s</a>"
|
||||||
|
|
||||||
|
#: bookwyrm/templates/snippets/authors.html:22
|
||||||
|
#, python-format
|
||||||
|
msgid "and %(remainder_count_display)s other"
|
||||||
|
msgid_plural "and %(remainder_count_display)s others"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/book_cover.html:32
|
#: bookwyrm/templates/snippets/book_cover.html:32
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Add cover"
|
#| msgid "Add cover"
|
||||||
msgid "No cover"
|
msgid "No cover"
|
||||||
msgstr "Cover hinzufügen"
|
msgstr "Cover hinzufügen"
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/book_titleby.html:4
|
#: bookwyrm/templates/snippets/book_titleby.html:6
|
||||||
#, python-format
|
#, fuzzy, python-format
|
||||||
msgid "<a href=\"%(path)s\">%(title)s</a> by "
|
#| msgid "<a href=\"%(path)s\">%(title)s</a> by "
|
||||||
|
msgid "<a href=\"%(path)s\">%(title)s</a> by"
|
||||||
msgstr "<a href=\"%(path)s\">%(title)s</a> von "
|
msgstr "<a href=\"%(path)s\">%(title)s</a> von "
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/boost_button.html:20
|
#: bookwyrm/templates/snippets/boost_button.html:20
|
||||||
|
@ -3313,6 +3312,14 @@ msgstr "Dieser Benutzename ist bereits vergeben."
|
||||||
msgid "A password reset link sent to %s"
|
msgid "A password reset link sent to %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~| msgid "Federated Servers"
|
||||||
|
#~ msgid "Federated Timeline"
|
||||||
|
#~ msgstr "Föderierende Server"
|
||||||
|
|
||||||
|
#~ msgid "Local"
|
||||||
|
#~ msgstr "Lokal"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#~| msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
|
#~| msgid "Direct Messages with <a href=\"%(path)s\">%(username)s</a>"
|
||||||
#~ msgid "Remove <a href=\"%(path)s\">%(name)s</a>"
|
#~ msgid "Remove <a href=\"%(path)s\">%(name)s</a>"
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: 0.0.1\n"
|
"Project-Id-Version: 0.0.1\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-08-04 20:40+0000\n"
|
"POT-Creation-Date: 2021-08-05 01:33+0000\n"
|
||||||
"PO-Revision-Date: 2021-02-28 17:19-0800\n"
|
"PO-Revision-Date: 2021-02-28 17:19-0800\n"
|
||||||
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
"Last-Translator: Mouse Reeve <mousereeve@riseup.net>\n"
|
||||||
"Language-Team: English <LL@li.org>\n"
|
"Language-Team: English <LL@li.org>\n"
|
||||||
|
@ -91,27 +91,45 @@ msgstr ""
|
||||||
msgid "A user with that username already exists."
|
msgid "A user with that username already exists."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bookwyrm/settings.py:166
|
#: bookwyrm/settings.py:123
|
||||||
msgid "English"
|
msgid "Home Timeline"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bookwyrm/settings.py:167
|
#: bookwyrm/settings.py:123
|
||||||
msgid "German"
|
msgid "Home"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bookwyrm/settings.py:168
|
#: bookwyrm/settings.py:124
|
||||||
msgid "Spanish"
|
msgid "Books Timeline"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bookwyrm/settings.py:169
|
#: bookwyrm/settings.py:124 bookwyrm/templates/search/layout.html:21
|
||||||
msgid "French"
|
#: bookwyrm/templates/search/layout.html:42
|
||||||
|
#: bookwyrm/templates/user/layout.html:81
|
||||||
|
msgid "Books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bookwyrm/settings.py:170
|
#: bookwyrm/settings.py:170
|
||||||
msgid "Simplified Chinese"
|
msgid "English"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bookwyrm/settings.py:171
|
#: bookwyrm/settings.py:171
|
||||||
|
msgid "German"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:172
|
||||||
|
msgid "Spanish"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:173
|
||||||
|
msgid "French"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:174
|
||||||
|
msgid "Simplified Chinese"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:175
|
||||||
msgid "Traditional Chinese"
|
msgid "Traditional Chinese"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -896,37 +914,12 @@ msgstr ""
|
||||||
msgid "You have no messages right now."
|
msgid "You have no messages right now."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:8
|
#: bookwyrm/templates/feed/feed.html:22
|
||||||
msgid "Home Timeline"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:10
|
|
||||||
msgid "Local Timeline"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:12
|
|
||||||
msgid "Federated Timeline"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:18
|
|
||||||
msgid "Home"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:21
|
|
||||||
msgid "Local"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:24
|
|
||||||
#: bookwyrm/templates/settings/edit_server.html:40
|
|
||||||
msgid "Federated"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:32
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "load <span data-poll=\"stream/%(tab)s\">0</span> unread status(es)"
|
msgid "load <span data-poll=\"stream/%(tab.key)s\">0</span> unread status(es)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:48
|
#: bookwyrm/templates/feed/feed.html:38
|
||||||
msgid "There aren't any activities right now! Try following a user to get started"
|
msgid "There aren't any activities right now! Try following a user to get started"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1864,12 +1857,6 @@ msgstr ""
|
||||||
msgid "Search type"
|
msgid "Search type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bookwyrm/templates/search/layout.html:21
|
|
||||||
#: bookwyrm/templates/search/layout.html:42
|
|
||||||
#: bookwyrm/templates/user/layout.html:81
|
|
||||||
msgid "Books"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: bookwyrm/templates/search/layout.html:23
|
#: bookwyrm/templates/search/layout.html:23
|
||||||
#: bookwyrm/templates/search/layout.html:46
|
#: bookwyrm/templates/search/layout.html:46
|
||||||
#: bookwyrm/templates/settings/admin_layout.html:26
|
#: bookwyrm/templates/settings/admin_layout.html:26
|
||||||
|
@ -2045,6 +2032,10 @@ msgstr ""
|
||||||
msgid "Status:"
|
msgid "Status:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: bookwyrm/templates/settings/edit_server.html:40
|
||||||
|
msgid "Federated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: bookwyrm/templates/settings/edit_server.html:41
|
#: bookwyrm/templates/settings/edit_server.html:41
|
||||||
#: bookwyrm/templates/settings/federated_server.html:10
|
#: bookwyrm/templates/settings/federated_server.html:10
|
||||||
msgid "Blocked"
|
msgid "Blocked"
|
||||||
|
@ -2333,13 +2324,20 @@ msgstr ""
|
||||||
msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
|
msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: bookwyrm/templates/snippets/authors.html:22
|
||||||
|
#, python-format
|
||||||
|
msgid "and %(remainder_count_display)s other"
|
||||||
|
msgid_plural "and %(remainder_count_display)s others"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/book_cover.html:32
|
#: bookwyrm/templates/snippets/book_cover.html:32
|
||||||
msgid "No cover"
|
msgid "No cover"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/book_titleby.html:4
|
#: bookwyrm/templates/snippets/book_titleby.html:6
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<a href=\"%(path)s\">%(title)s</a> by "
|
msgid "<a href=\"%(path)s\">%(title)s</a> by"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/boost_button.html:20
|
#: bookwyrm/templates/snippets/boost_button.html:20
|
||||||
|
|
Binary file not shown.
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: 0.0.1\n"
|
"Project-Id-Version: 0.0.1\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-08-04 20:40+0000\n"
|
"POT-Creation-Date: 2021-08-05 01:33+0000\n"
|
||||||
"PO-Revision-Date: 2021-03-19 11:49+0800\n"
|
"PO-Revision-Date: 2021-03-19 11:49+0800\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -91,27 +91,47 @@ msgstr "nombre de usuario"
|
||||||
msgid "A user with that username already exists."
|
msgid "A user with that username already exists."
|
||||||
msgstr "Ya existe un usuario con ese nombre."
|
msgstr "Ya existe un usuario con ese nombre."
|
||||||
|
|
||||||
#: bookwyrm/settings.py:166
|
#: bookwyrm/settings.py:123
|
||||||
|
msgid "Home Timeline"
|
||||||
|
msgstr "Línea temporal de hogar"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:123
|
||||||
|
msgid "Home"
|
||||||
|
msgstr "Hogar"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:124
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Book Title"
|
||||||
|
msgid "Books Timeline"
|
||||||
|
msgstr "Título"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:124 bookwyrm/templates/search/layout.html:21
|
||||||
|
#: bookwyrm/templates/search/layout.html:42
|
||||||
|
#: bookwyrm/templates/user/layout.html:81
|
||||||
|
msgid "Books"
|
||||||
|
msgstr "Libros"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:170
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr "Inglés"
|
msgstr "Inglés"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:167
|
#: bookwyrm/settings.py:171
|
||||||
msgid "German"
|
msgid "German"
|
||||||
msgstr "Aléman"
|
msgstr "Aléman"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:168
|
#: bookwyrm/settings.py:172
|
||||||
msgid "Spanish"
|
msgid "Spanish"
|
||||||
msgstr "Español"
|
msgstr "Español"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:169
|
#: bookwyrm/settings.py:173
|
||||||
msgid "French"
|
msgid "French"
|
||||||
msgstr "Francés"
|
msgstr "Francés"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:170
|
#: bookwyrm/settings.py:174
|
||||||
msgid "Simplified Chinese"
|
msgid "Simplified Chinese"
|
||||||
msgstr "Chino simplificado"
|
msgstr "Chino simplificado"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:171
|
#: bookwyrm/settings.py:175
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Additional info:"
|
#| msgid "Additional info:"
|
||||||
msgid "Traditional Chinese"
|
msgid "Traditional Chinese"
|
||||||
|
@ -904,37 +924,13 @@ msgstr "Todos los mensajes"
|
||||||
msgid "You have no messages right now."
|
msgid "You have no messages right now."
|
||||||
msgstr "No tienes ningún mensaje en este momento."
|
msgstr "No tienes ningún mensaje en este momento."
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:8
|
#: bookwyrm/templates/feed/feed.html:22
|
||||||
msgid "Home Timeline"
|
#, fuzzy, python-format
|
||||||
msgstr "Línea temporal de hogar"
|
#| msgid "load <span data-poll=\"stream/%(tab)s\">0</span> unread status(es)"
|
||||||
|
msgid "load <span data-poll=\"stream/%(tab.key)s\">0</span> unread status(es)"
|
||||||
#: bookwyrm/templates/feed/feed.html:10
|
|
||||||
msgid "Local Timeline"
|
|
||||||
msgstr "Línea temporal local"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:12
|
|
||||||
msgid "Federated Timeline"
|
|
||||||
msgstr "Línea temporal federalizado"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:18
|
|
||||||
msgid "Home"
|
|
||||||
msgstr "Hogar"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:21
|
|
||||||
msgid "Local"
|
|
||||||
msgstr "Local"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:24
|
|
||||||
#: bookwyrm/templates/settings/edit_server.html:40
|
|
||||||
msgid "Federated"
|
|
||||||
msgstr "Federalizado"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:32
|
|
||||||
#, python-format
|
|
||||||
msgid "load <span data-poll=\"stream/%(tab)s\">0</span> unread status(es)"
|
|
||||||
msgstr "cargar <span data-poll=\"stream/%(tab)s\">0</span> status(es) no leídos"
|
msgstr "cargar <span data-poll=\"stream/%(tab)s\">0</span> status(es) no leídos"
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:48
|
#: bookwyrm/templates/feed/feed.html:38
|
||||||
msgid "There aren't any activities right now! Try following a user to get started"
|
msgid "There aren't any activities right now! Try following a user to get started"
|
||||||
msgstr "¡No hay actividad ahora mismo! Sigue a otro usuario para empezar"
|
msgstr "¡No hay actividad ahora mismo! Sigue a otro usuario para empezar"
|
||||||
|
|
||||||
|
@ -1885,12 +1881,6 @@ msgstr "Búsqueda"
|
||||||
msgid "Search type"
|
msgid "Search type"
|
||||||
msgstr "Tipo de búsqueda"
|
msgstr "Tipo de búsqueda"
|
||||||
|
|
||||||
#: bookwyrm/templates/search/layout.html:21
|
|
||||||
#: bookwyrm/templates/search/layout.html:42
|
|
||||||
#: bookwyrm/templates/user/layout.html:81
|
|
||||||
msgid "Books"
|
|
||||||
msgstr "Libros"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/search/layout.html:23
|
#: bookwyrm/templates/search/layout.html:23
|
||||||
#: bookwyrm/templates/search/layout.html:46
|
#: bookwyrm/templates/search/layout.html:46
|
||||||
#: bookwyrm/templates/settings/admin_layout.html:26
|
#: bookwyrm/templates/settings/admin_layout.html:26
|
||||||
|
@ -2072,6 +2062,10 @@ msgstr "Instancia:"
|
||||||
msgid "Status:"
|
msgid "Status:"
|
||||||
msgstr "Status:"
|
msgstr "Status:"
|
||||||
|
|
||||||
|
#: bookwyrm/templates/settings/edit_server.html:40
|
||||||
|
msgid "Federated"
|
||||||
|
msgstr "Federalizado"
|
||||||
|
|
||||||
#: bookwyrm/templates/settings/edit_server.html:41
|
#: bookwyrm/templates/settings/edit_server.html:41
|
||||||
#: bookwyrm/templates/settings/federated_server.html:10
|
#: bookwyrm/templates/settings/federated_server.html:10
|
||||||
msgid "Blocked"
|
msgid "Blocked"
|
||||||
|
@ -2366,13 +2360,21 @@ msgstr "Texto de registración cerrada:"
|
||||||
msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
|
msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||||
msgstr "Publicado por <a href=\"%(user_path)s\">%(username)s</a>"
|
msgstr "Publicado por <a href=\"%(user_path)s\">%(username)s</a>"
|
||||||
|
|
||||||
|
#: bookwyrm/templates/snippets/authors.html:22
|
||||||
|
#, python-format
|
||||||
|
msgid "and %(remainder_count_display)s other"
|
||||||
|
msgid_plural "and %(remainder_count_display)s others"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/book_cover.html:32
|
#: bookwyrm/templates/snippets/book_cover.html:32
|
||||||
msgid "No cover"
|
msgid "No cover"
|
||||||
msgstr "Sin portada"
|
msgstr "Sin portada"
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/book_titleby.html:4
|
#: bookwyrm/templates/snippets/book_titleby.html:6
|
||||||
#, python-format
|
#, fuzzy, python-format
|
||||||
msgid "<a href=\"%(path)s\">%(title)s</a> by "
|
#| msgid "<a href=\"%(path)s\">%(title)s</a> by "
|
||||||
|
msgid "<a href=\"%(path)s\">%(title)s</a> by"
|
||||||
msgstr "<a href=\"%(path)s\">%(title)s</a> por "
|
msgstr "<a href=\"%(path)s\">%(title)s</a> por "
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/boost_button.html:20
|
#: bookwyrm/templates/snippets/boost_button.html:20
|
||||||
|
@ -3047,6 +3049,15 @@ msgstr "No se pudo encontrar un usuario con esa dirección de correo electrónic
|
||||||
msgid "A password reset link sent to %s"
|
msgid "A password reset link sent to %s"
|
||||||
msgstr "Un enlace para reestablecer tu contraseña se enviará a %s"
|
msgstr "Un enlace para reestablecer tu contraseña se enviará a %s"
|
||||||
|
|
||||||
|
#~ msgid "Local Timeline"
|
||||||
|
#~ msgstr "Línea temporal local"
|
||||||
|
|
||||||
|
#~ msgid "Federated Timeline"
|
||||||
|
#~ msgstr "Línea temporal federalizado"
|
||||||
|
|
||||||
|
#~ msgid "Local"
|
||||||
|
#~ msgstr "Local"
|
||||||
|
|
||||||
#~ msgid "Remove <a href=\"%(path)s\">%(name)s</a>"
|
#~ msgid "Remove <a href=\"%(path)s\">%(name)s</a>"
|
||||||
#~ msgstr "Eliminar <a href=\"%(path)s\">%(name)s</a>"
|
#~ msgstr "Eliminar <a href=\"%(path)s\">%(name)s</a>"
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: 0.1.1\n"
|
"Project-Id-Version: 0.1.1\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-08-04 20:40+0000\n"
|
"POT-Creation-Date: 2021-08-05 01:33+0000\n"
|
||||||
"PO-Revision-Date: 2021-04-05 12:44+0100\n"
|
"PO-Revision-Date: 2021-04-05 12:44+0100\n"
|
||||||
"Last-Translator: Fabien Basmaison <contact@arkhi.org>\n"
|
"Last-Translator: Fabien Basmaison <contact@arkhi.org>\n"
|
||||||
"Language-Team: Mouse Reeve <LL@li.org>\n"
|
"Language-Team: Mouse Reeve <LL@li.org>\n"
|
||||||
|
@ -91,27 +91,47 @@ msgstr "nom du compte :"
|
||||||
msgid "A user with that username already exists."
|
msgid "A user with that username already exists."
|
||||||
msgstr "Ce nom est déjà associé à un compte."
|
msgstr "Ce nom est déjà associé à un compte."
|
||||||
|
|
||||||
#: bookwyrm/settings.py:166
|
#: bookwyrm/settings.py:123
|
||||||
|
msgid "Home Timeline"
|
||||||
|
msgstr "Mon fil d’actualité"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:123
|
||||||
|
msgid "Home"
|
||||||
|
msgstr "Accueil"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:124
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Book Title"
|
||||||
|
msgid "Books Timeline"
|
||||||
|
msgstr "Titre du livre"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:124 bookwyrm/templates/search/layout.html:21
|
||||||
|
#: bookwyrm/templates/search/layout.html:42
|
||||||
|
#: bookwyrm/templates/user/layout.html:81
|
||||||
|
msgid "Books"
|
||||||
|
msgstr "Livres"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:170
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr "English"
|
msgstr "English"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:167
|
#: bookwyrm/settings.py:171
|
||||||
msgid "German"
|
msgid "German"
|
||||||
msgstr "Deutsch"
|
msgstr "Deutsch"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:168
|
#: bookwyrm/settings.py:172
|
||||||
msgid "Spanish"
|
msgid "Spanish"
|
||||||
msgstr "Español"
|
msgstr "Español"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:169
|
#: bookwyrm/settings.py:173
|
||||||
msgid "French"
|
msgid "French"
|
||||||
msgstr "Français"
|
msgstr "Français"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:170
|
#: bookwyrm/settings.py:174
|
||||||
msgid "Simplified Chinese"
|
msgid "Simplified Chinese"
|
||||||
msgstr "简化字"
|
msgstr "简化字"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:171
|
#: bookwyrm/settings.py:175
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Additional info:"
|
#| msgid "Additional info:"
|
||||||
msgid "Traditional Chinese"
|
msgid "Traditional Chinese"
|
||||||
|
@ -900,37 +920,13 @@ msgstr "Tous les messages"
|
||||||
msgid "You have no messages right now."
|
msgid "You have no messages right now."
|
||||||
msgstr "Vous n’avez aucun message pour l’instant."
|
msgstr "Vous n’avez aucun message pour l’instant."
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:8
|
#: bookwyrm/templates/feed/feed.html:22
|
||||||
msgid "Home Timeline"
|
#, fuzzy, python-format
|
||||||
msgstr "Mon fil d’actualité"
|
#| msgid "load <span data-poll=\"stream/%(tab)s\">0</span> unread status(es)"
|
||||||
|
msgid "load <span data-poll=\"stream/%(tab.key)s\">0</span> unread status(es)"
|
||||||
#: bookwyrm/templates/feed/feed.html:10
|
|
||||||
msgid "Local Timeline"
|
|
||||||
msgstr "Fil d’actualité local"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:12
|
|
||||||
msgid "Federated Timeline"
|
|
||||||
msgstr "Fil d’actualité des instances fédérées"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:18
|
|
||||||
msgid "Home"
|
|
||||||
msgstr "Accueil"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:21
|
|
||||||
msgid "Local"
|
|
||||||
msgstr "Local"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:24
|
|
||||||
#: bookwyrm/templates/settings/edit_server.html:40
|
|
||||||
msgid "Federated"
|
|
||||||
msgstr "Fédéré"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:32
|
|
||||||
#, python-format
|
|
||||||
msgid "load <span data-poll=\"stream/%(tab)s\">0</span> unread status(es)"
|
|
||||||
msgstr "charger le(s) <span data-poll=\"stream/%(tab)s\">0</span> statut(s) non lu(s)"
|
msgstr "charger le(s) <span data-poll=\"stream/%(tab)s\">0</span> statut(s) non lu(s)"
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:48
|
#: bookwyrm/templates/feed/feed.html:38
|
||||||
msgid "There aren't any activities right now! Try following a user to get started"
|
msgid "There aren't any activities right now! Try following a user to get started"
|
||||||
msgstr "Aucune activité pour l’instant ! Abonnez‑vous à quelqu’un pour commencer"
|
msgstr "Aucune activité pour l’instant ! Abonnez‑vous à quelqu’un pour commencer"
|
||||||
|
|
||||||
|
@ -1879,12 +1875,6 @@ msgstr "Requête"
|
||||||
msgid "Search type"
|
msgid "Search type"
|
||||||
msgstr "Type de recherche"
|
msgstr "Type de recherche"
|
||||||
|
|
||||||
#: bookwyrm/templates/search/layout.html:21
|
|
||||||
#: bookwyrm/templates/search/layout.html:42
|
|
||||||
#: bookwyrm/templates/user/layout.html:81
|
|
||||||
msgid "Books"
|
|
||||||
msgstr "Livres"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/search/layout.html:23
|
#: bookwyrm/templates/search/layout.html:23
|
||||||
#: bookwyrm/templates/search/layout.html:46
|
#: bookwyrm/templates/search/layout.html:46
|
||||||
#: bookwyrm/templates/settings/admin_layout.html:26
|
#: bookwyrm/templates/settings/admin_layout.html:26
|
||||||
|
@ -2060,6 +2050,10 @@ msgstr "Instance :"
|
||||||
msgid "Status:"
|
msgid "Status:"
|
||||||
msgstr "Statut :"
|
msgstr "Statut :"
|
||||||
|
|
||||||
|
#: bookwyrm/templates/settings/edit_server.html:40
|
||||||
|
msgid "Federated"
|
||||||
|
msgstr "Fédéré"
|
||||||
|
|
||||||
#: bookwyrm/templates/settings/edit_server.html:41
|
#: bookwyrm/templates/settings/edit_server.html:41
|
||||||
#: bookwyrm/templates/settings/federated_server.html:10
|
#: bookwyrm/templates/settings/federated_server.html:10
|
||||||
msgid "Blocked"
|
msgid "Blocked"
|
||||||
|
@ -2348,13 +2342,21 @@ msgstr "Texte affiché lorsque les inscriptions sont closes :"
|
||||||
msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
|
msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||||
msgstr "Publiée par <a href=\"%(user_path)s\">%(username)s</a>"
|
msgstr "Publiée par <a href=\"%(user_path)s\">%(username)s</a>"
|
||||||
|
|
||||||
|
#: bookwyrm/templates/snippets/authors.html:22
|
||||||
|
#, python-format
|
||||||
|
msgid "and %(remainder_count_display)s other"
|
||||||
|
msgid_plural "and %(remainder_count_display)s others"
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/book_cover.html:32
|
#: bookwyrm/templates/snippets/book_cover.html:32
|
||||||
msgid "No cover"
|
msgid "No cover"
|
||||||
msgstr "Pas de couverture"
|
msgstr "Pas de couverture"
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/book_titleby.html:4
|
#: bookwyrm/templates/snippets/book_titleby.html:6
|
||||||
#, python-format
|
#, fuzzy, python-format
|
||||||
msgid "<a href=\"%(path)s\">%(title)s</a> by "
|
#| msgid "<a href=\"%(path)s\">%(title)s</a> by "
|
||||||
|
msgid "<a href=\"%(path)s\">%(title)s</a> by"
|
||||||
msgstr "<a href=\"%(path)s\">%(title)s</a> par "
|
msgstr "<a href=\"%(path)s\">%(title)s</a> par "
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/boost_button.html:20
|
#: bookwyrm/templates/snippets/boost_button.html:20
|
||||||
|
@ -3026,6 +3028,15 @@ msgstr "Aucun compte avec cette adresse email n’a été trouvé."
|
||||||
msgid "A password reset link sent to %s"
|
msgid "A password reset link sent to %s"
|
||||||
msgstr "Un lien de réinitialisation a été envoyé à %s."
|
msgstr "Un lien de réinitialisation a été envoyé à %s."
|
||||||
|
|
||||||
|
#~ msgid "Local Timeline"
|
||||||
|
#~ msgstr "Fil d’actualité local"
|
||||||
|
|
||||||
|
#~ msgid "Federated Timeline"
|
||||||
|
#~ msgstr "Fil d’actualité des instances fédérées"
|
||||||
|
|
||||||
|
#~ msgid "Local"
|
||||||
|
#~ msgstr "Local"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#~| msgid "BookWyrm users"
|
#~| msgid "BookWyrm users"
|
||||||
#~ msgid "BookWyrm\\"
|
#~ msgid "BookWyrm\\"
|
||||||
|
|
Binary file not shown.
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: 0.1.1\n"
|
"Project-Id-Version: 0.1.1\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-08-04 20:40+0000\n"
|
"POT-Creation-Date: 2021-08-05 01:33+0000\n"
|
||||||
"PO-Revision-Date: 2021-03-20 00:56+0000\n"
|
"PO-Revision-Date: 2021-03-20 00:56+0000\n"
|
||||||
"Last-Translator: Kana <gudzpoz@live.com>\n"
|
"Last-Translator: Kana <gudzpoz@live.com>\n"
|
||||||
"Language-Team: Mouse Reeve <LL@li.org>\n"
|
"Language-Team: Mouse Reeve <LL@li.org>\n"
|
||||||
|
@ -91,27 +91,47 @@ msgstr "用户名"
|
||||||
msgid "A user with that username already exists."
|
msgid "A user with that username already exists."
|
||||||
msgstr "已经存在使用该用户名的用户。"
|
msgstr "已经存在使用该用户名的用户。"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:166
|
#: bookwyrm/settings.py:123
|
||||||
|
msgid "Home Timeline"
|
||||||
|
msgstr "主页时间线"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:123
|
||||||
|
msgid "Home"
|
||||||
|
msgstr "主页"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:124
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Book Title"
|
||||||
|
msgid "Books Timeline"
|
||||||
|
msgstr "书名"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:124 bookwyrm/templates/search/layout.html:21
|
||||||
|
#: bookwyrm/templates/search/layout.html:42
|
||||||
|
#: bookwyrm/templates/user/layout.html:81
|
||||||
|
msgid "Books"
|
||||||
|
msgstr "书目"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:170
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr "English(英语)"
|
msgstr "English(英语)"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:167
|
#: bookwyrm/settings.py:171
|
||||||
msgid "German"
|
msgid "German"
|
||||||
msgstr "Deutsch(德语)"
|
msgstr "Deutsch(德语)"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:168
|
#: bookwyrm/settings.py:172
|
||||||
msgid "Spanish"
|
msgid "Spanish"
|
||||||
msgstr "Español(西班牙语)"
|
msgstr "Español(西班牙语)"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:169
|
#: bookwyrm/settings.py:173
|
||||||
msgid "French"
|
msgid "French"
|
||||||
msgstr "Français(法语)"
|
msgstr "Français(法语)"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:170
|
#: bookwyrm/settings.py:174
|
||||||
msgid "Simplified Chinese"
|
msgid "Simplified Chinese"
|
||||||
msgstr "简体中文"
|
msgstr "简体中文"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:171
|
#: bookwyrm/settings.py:175
|
||||||
msgid "Traditional Chinese"
|
msgid "Traditional Chinese"
|
||||||
msgstr "繁體中文(繁体中文)"
|
msgstr "繁體中文(繁体中文)"
|
||||||
|
|
||||||
|
@ -895,37 +915,13 @@ msgstr "所有消息"
|
||||||
msgid "You have no messages right now."
|
msgid "You have no messages right now."
|
||||||
msgstr "你现在没有消息。"
|
msgstr "你现在没有消息。"
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:8
|
#: bookwyrm/templates/feed/feed.html:22
|
||||||
msgid "Home Timeline"
|
#, fuzzy, python-format
|
||||||
msgstr "主页时间线"
|
#| msgid "load <span data-poll=\"stream/%(tab)s\">0</span> unread status(es)"
|
||||||
|
msgid "load <span data-poll=\"stream/%(tab.key)s\">0</span> unread status(es)"
|
||||||
#: bookwyrm/templates/feed/feed.html:10
|
|
||||||
msgid "Local Timeline"
|
|
||||||
msgstr "本地时间线"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:12
|
|
||||||
msgid "Federated Timeline"
|
|
||||||
msgstr "跨站时间线"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:18
|
|
||||||
msgid "Home"
|
|
||||||
msgstr "主页"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:21
|
|
||||||
msgid "Local"
|
|
||||||
msgstr "本站"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:24
|
|
||||||
#: bookwyrm/templates/settings/edit_server.html:40
|
|
||||||
msgid "Federated"
|
|
||||||
msgstr "跨站"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:32
|
|
||||||
#, python-format
|
|
||||||
msgid "load <span data-poll=\"stream/%(tab)s\">0</span> unread status(es)"
|
|
||||||
msgstr "加载 <span data-poll=\"stream/%(tab)s\">0</span> 条未读状态"
|
msgstr "加载 <span data-poll=\"stream/%(tab)s\">0</span> 条未读状态"
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:48
|
#: bookwyrm/templates/feed/feed.html:38
|
||||||
msgid "There aren't any activities right now! Try following a user to get started"
|
msgid "There aren't any activities right now! Try following a user to get started"
|
||||||
msgstr "现在还没有任何活动!尝试从关注一个用户开始吧"
|
msgstr "现在还没有任何活动!尝试从关注一个用户开始吧"
|
||||||
|
|
||||||
|
@ -1865,12 +1861,6 @@ msgstr "搜索请求"
|
||||||
msgid "Search type"
|
msgid "Search type"
|
||||||
msgstr "搜索类型"
|
msgstr "搜索类型"
|
||||||
|
|
||||||
#: bookwyrm/templates/search/layout.html:21
|
|
||||||
#: bookwyrm/templates/search/layout.html:42
|
|
||||||
#: bookwyrm/templates/user/layout.html:81
|
|
||||||
msgid "Books"
|
|
||||||
msgstr "书目"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/search/layout.html:23
|
#: bookwyrm/templates/search/layout.html:23
|
||||||
#: bookwyrm/templates/search/layout.html:46
|
#: bookwyrm/templates/search/layout.html:46
|
||||||
#: bookwyrm/templates/settings/admin_layout.html:26
|
#: bookwyrm/templates/settings/admin_layout.html:26
|
||||||
|
@ -2046,6 +2036,10 @@ msgstr "实例:"
|
||||||
msgid "Status:"
|
msgid "Status:"
|
||||||
msgstr "状态:"
|
msgstr "状态:"
|
||||||
|
|
||||||
|
#: bookwyrm/templates/settings/edit_server.html:40
|
||||||
|
msgid "Federated"
|
||||||
|
msgstr "跨站"
|
||||||
|
|
||||||
#: bookwyrm/templates/settings/edit_server.html:41
|
#: bookwyrm/templates/settings/edit_server.html:41
|
||||||
#: bookwyrm/templates/settings/federated_server.html:10
|
#: bookwyrm/templates/settings/federated_server.html:10
|
||||||
msgid "Blocked"
|
msgid "Blocked"
|
||||||
|
@ -2334,13 +2328,20 @@ msgstr "注册关闭文字:"
|
||||||
msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
|
msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||||
msgstr "由 <a href=\"%(user_path)s\">%(username)s</a> 发布"
|
msgstr "由 <a href=\"%(user_path)s\">%(username)s</a> 发布"
|
||||||
|
|
||||||
|
#: bookwyrm/templates/snippets/authors.html:22
|
||||||
|
#, python-format
|
||||||
|
msgid "and %(remainder_count_display)s other"
|
||||||
|
msgid_plural "and %(remainder_count_display)s others"
|
||||||
|
msgstr[0] ""
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/book_cover.html:32
|
#: bookwyrm/templates/snippets/book_cover.html:32
|
||||||
msgid "No cover"
|
msgid "No cover"
|
||||||
msgstr "没有封面"
|
msgstr "没有封面"
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/book_titleby.html:4
|
#: bookwyrm/templates/snippets/book_titleby.html:6
|
||||||
#, python-format
|
#, fuzzy, python-format
|
||||||
msgid "<a href=\"%(path)s\">%(title)s</a> by "
|
#| msgid "<a href=\"%(path)s\">%(title)s</a> by "
|
||||||
|
msgid "<a href=\"%(path)s\">%(title)s</a> by"
|
||||||
msgstr "<a href=\"%(path)s\">%(title)s</a> 来自"
|
msgstr "<a href=\"%(path)s\">%(title)s</a> 来自"
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/boost_button.html:20
|
#: bookwyrm/templates/snippets/boost_button.html:20
|
||||||
|
@ -3003,3 +3004,12 @@ msgstr "没有找到使用该邮箱的用户。"
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A password reset link sent to %s"
|
msgid "A password reset link sent to %s"
|
||||||
msgstr "密码重置连接已发送给 %s"
|
msgstr "密码重置连接已发送给 %s"
|
||||||
|
|
||||||
|
#~ msgid "Local Timeline"
|
||||||
|
#~ msgstr "本地时间线"
|
||||||
|
|
||||||
|
#~ msgid "Federated Timeline"
|
||||||
|
#~ msgstr "跨站时间线"
|
||||||
|
|
||||||
|
#~ msgid "Local"
|
||||||
|
#~ msgstr "本站"
|
||||||
|
|
Binary file not shown.
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: 0.0.1\n"
|
"Project-Id-Version: 0.0.1\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-08-04 20:40+0000\n"
|
"POT-Creation-Date: 2021-08-05 01:33+0000\n"
|
||||||
"PO-Revision-Date: 2021-06-30 10:36+0000\n"
|
"PO-Revision-Date: 2021-06-30 10:36+0000\n"
|
||||||
"Last-Translator: Grace Cheng <chengracecwy@gmail.com>\n"
|
"Last-Translator: Grace Cheng <chengracecwy@gmail.com>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -91,27 +91,47 @@ msgstr "使用者名稱"
|
||||||
msgid "A user with that username already exists."
|
msgid "A user with that username already exists."
|
||||||
msgstr "已經存在使用該名稱的使用者。"
|
msgstr "已經存在使用該名稱的使用者。"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:166
|
#: bookwyrm/settings.py:123
|
||||||
|
msgid "Home Timeline"
|
||||||
|
msgstr "主頁時間線"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:123
|
||||||
|
msgid "Home"
|
||||||
|
msgstr "主頁"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:124
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Book Title"
|
||||||
|
msgid "Books Timeline"
|
||||||
|
msgstr "書名"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:124 bookwyrm/templates/search/layout.html:21
|
||||||
|
#: bookwyrm/templates/search/layout.html:42
|
||||||
|
#: bookwyrm/templates/user/layout.html:81
|
||||||
|
msgid "Books"
|
||||||
|
msgstr "書目"
|
||||||
|
|
||||||
|
#: bookwyrm/settings.py:170
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr "English(英語)"
|
msgstr "English(英語)"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:167
|
#: bookwyrm/settings.py:171
|
||||||
msgid "German"
|
msgid "German"
|
||||||
msgstr "Deutsch(德語)"
|
msgstr "Deutsch(德語)"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:168
|
#: bookwyrm/settings.py:172
|
||||||
msgid "Spanish"
|
msgid "Spanish"
|
||||||
msgstr "Español(西班牙語)"
|
msgstr "Español(西班牙語)"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:169
|
#: bookwyrm/settings.py:173
|
||||||
msgid "French"
|
msgid "French"
|
||||||
msgstr "Français(法語)"
|
msgstr "Français(法語)"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:170
|
#: bookwyrm/settings.py:174
|
||||||
msgid "Simplified Chinese"
|
msgid "Simplified Chinese"
|
||||||
msgstr "簡體中文"
|
msgstr "簡體中文"
|
||||||
|
|
||||||
#: bookwyrm/settings.py:171
|
#: bookwyrm/settings.py:175
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Tranditional Chinese"
|
#| msgid "Tranditional Chinese"
|
||||||
msgid "Traditional Chinese"
|
msgid "Traditional Chinese"
|
||||||
|
@ -901,37 +921,13 @@ msgstr "所有訊息"
|
||||||
msgid "You have no messages right now."
|
msgid "You have no messages right now."
|
||||||
msgstr "你現在沒有訊息。"
|
msgstr "你現在沒有訊息。"
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:8
|
#: bookwyrm/templates/feed/feed.html:22
|
||||||
msgid "Home Timeline"
|
#, fuzzy, python-format
|
||||||
msgstr "主頁時間線"
|
#| msgid "load <span data-poll=\"stream/%(tab)s\">0</span> unread status(es)"
|
||||||
|
msgid "load <span data-poll=\"stream/%(tab.key)s\">0</span> unread status(es)"
|
||||||
#: bookwyrm/templates/feed/feed.html:10
|
|
||||||
msgid "Local Timeline"
|
|
||||||
msgstr "本地時間線"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:12
|
|
||||||
msgid "Federated Timeline"
|
|
||||||
msgstr "跨站時間線"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:18
|
|
||||||
msgid "Home"
|
|
||||||
msgstr "主頁"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:21
|
|
||||||
msgid "Local"
|
|
||||||
msgstr "本站"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:24
|
|
||||||
#: bookwyrm/templates/settings/edit_server.html:40
|
|
||||||
msgid "Federated"
|
|
||||||
msgstr "跨站"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:32
|
|
||||||
#, python-format
|
|
||||||
msgid "load <span data-poll=\"stream/%(tab)s\">0</span> unread status(es)"
|
|
||||||
msgstr "載入 <span data-poll=\"stream/%(tab)s\">0</span> 條未讀狀態"
|
msgstr "載入 <span data-poll=\"stream/%(tab)s\">0</span> 條未讀狀態"
|
||||||
|
|
||||||
#: bookwyrm/templates/feed/feed.html:48
|
#: bookwyrm/templates/feed/feed.html:38
|
||||||
msgid "There aren't any activities right now! Try following a user to get started"
|
msgid "There aren't any activities right now! Try following a user to get started"
|
||||||
msgstr "現在還沒有任何活動!嘗試著從關注一個使用者開始吧"
|
msgstr "現在還沒有任何活動!嘗試著從關注一個使用者開始吧"
|
||||||
|
|
||||||
|
@ -1880,12 +1876,6 @@ msgstr "搜尋請求"
|
||||||
msgid "Search type"
|
msgid "Search type"
|
||||||
msgstr "搜尋類別"
|
msgstr "搜尋類別"
|
||||||
|
|
||||||
#: bookwyrm/templates/search/layout.html:21
|
|
||||||
#: bookwyrm/templates/search/layout.html:42
|
|
||||||
#: bookwyrm/templates/user/layout.html:81
|
|
||||||
msgid "Books"
|
|
||||||
msgstr "書目"
|
|
||||||
|
|
||||||
#: bookwyrm/templates/search/layout.html:23
|
#: bookwyrm/templates/search/layout.html:23
|
||||||
#: bookwyrm/templates/search/layout.html:46
|
#: bookwyrm/templates/search/layout.html:46
|
||||||
#: bookwyrm/templates/settings/admin_layout.html:26
|
#: bookwyrm/templates/settings/admin_layout.html:26
|
||||||
|
@ -2061,6 +2051,10 @@ msgstr "實例:"
|
||||||
msgid "Status:"
|
msgid "Status:"
|
||||||
msgstr "狀態:"
|
msgstr "狀態:"
|
||||||
|
|
||||||
|
#: bookwyrm/templates/settings/edit_server.html:40
|
||||||
|
msgid "Federated"
|
||||||
|
msgstr "跨站"
|
||||||
|
|
||||||
#: bookwyrm/templates/settings/edit_server.html:41
|
#: bookwyrm/templates/settings/edit_server.html:41
|
||||||
#: bookwyrm/templates/settings/federated_server.html:10
|
#: bookwyrm/templates/settings/federated_server.html:10
|
||||||
msgid "Blocked"
|
msgid "Blocked"
|
||||||
|
@ -2353,13 +2347,20 @@ msgstr "註冊關閉文字:"
|
||||||
msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
|
msgid "Posted by <a href=\"%(user_path)s\">%(username)s</a>"
|
||||||
msgstr "由 <a href=\"%(user_path)s\">%(username)s</a> 釋出"
|
msgstr "由 <a href=\"%(user_path)s\">%(username)s</a> 釋出"
|
||||||
|
|
||||||
|
#: bookwyrm/templates/snippets/authors.html:22
|
||||||
|
#, python-format
|
||||||
|
msgid "and %(remainder_count_display)s other"
|
||||||
|
msgid_plural "and %(remainder_count_display)s others"
|
||||||
|
msgstr[0] ""
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/book_cover.html:32
|
#: bookwyrm/templates/snippets/book_cover.html:32
|
||||||
msgid "No cover"
|
msgid "No cover"
|
||||||
msgstr "沒有封面"
|
msgstr "沒有封面"
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/book_titleby.html:4
|
#: bookwyrm/templates/snippets/book_titleby.html:6
|
||||||
#, python-format
|
#, fuzzy, python-format
|
||||||
msgid "<a href=\"%(path)s\">%(title)s</a> by "
|
#| msgid "<a href=\"%(path)s\">%(title)s</a> by "
|
||||||
|
msgid "<a href=\"%(path)s\">%(title)s</a> by"
|
||||||
msgstr "<a href=\"%(path)s\">%(title)s</a> 來自"
|
msgstr "<a href=\"%(path)s\">%(title)s</a> 來自"
|
||||||
|
|
||||||
#: bookwyrm/templates/snippets/boost_button.html:20
|
#: bookwyrm/templates/snippets/boost_button.html:20
|
||||||
|
@ -3023,5 +3024,14 @@ msgstr "沒有找到使用該郵箱的使用者。"
|
||||||
msgid "A password reset link sent to %s"
|
msgid "A password reset link sent to %s"
|
||||||
msgstr "密碼重置連結已傳送給 %s"
|
msgstr "密碼重置連結已傳送給 %s"
|
||||||
|
|
||||||
|
#~ msgid "Local Timeline"
|
||||||
|
#~ msgstr "本地時間線"
|
||||||
|
|
||||||
|
#~ msgid "Federated Timeline"
|
||||||
|
#~ msgstr "跨站時間線"
|
||||||
|
|
||||||
|
#~ msgid "Local"
|
||||||
|
#~ msgstr "本站"
|
||||||
|
|
||||||
#~ msgid "Remove <a href=\"%(path)s\">%(name)s</a>"
|
#~ msgid "Remove <a href=\"%(path)s\">%(name)s</a>"
|
||||||
#~ msgstr "移除 <a href=\"%(path)s\">%(name)s</a>"
|
#~ msgstr "移除 <a href=\"%(path)s\">%(name)s</a>"
|
||||||
|
|
Loading…
Reference in a new issue