-{% endblock %}
+{% endblock %}
\ No newline at end of file
diff --git a/bookwyrm/templates/layout.html b/bookwyrm/templates/layout.html
index 6283e61c4..ced4e8006 100644
--- a/bookwyrm/templates/layout.html
+++ b/bookwyrm/templates/layout.html
@@ -36,7 +36,7 @@
{% if request.user.is_authenticated %}
- {% trans "Search for a book, user, or list" as search_placeholder %}
+ {% trans "Search for a book, author, user, or list" as search_placeholder %}
{% else %}
{% trans "Search for a book" as search_placeholder %}
{% endif %}
diff --git a/bookwyrm/templates/preferences/export-user.html b/bookwyrm/templates/preferences/export-user.html
index cd3119e3e..955cff656 100644
--- a/bookwyrm/templates/preferences/export-user.html
+++ b/bookwyrm/templates/preferences/export-user.html
@@ -14,31 +14,29 @@
{% trans "You can create an export file here. This will allow you to migrate your data to another BookWyrm account." %}
- {% blocktrans trimmed %}
-
Your file will include:
+
{% trans "Your file will include:" %}
- User profile
- Most user settings
- Reading goals
- Shelves
- Reading history
- Book reviews
- Statuses
- Your own lists and saved lists
- Which users you follow and block
+ {% trans "User profile" %}
+ {% trans "Most user settings" %}
+ {% trans "Reading goals" %}
+ {% trans "Shelves" %}
+ {% trans "Reading history" %}
+ {% trans "Book reviews" %}
+ {% trans "Statuses" %}
+ {% trans "Your own lists and saved lists" %}
+ {% trans "Which users you follow and block" %}
-
Your file will not include:
+
{% trans "Your file will not include:" %}
- Direct messages
- Replies to your statuses
- Groups
- Favorites
+ {% trans "Direct messages" %}
+ {% trans "Replies to your statuses" %}
+ {% trans "Groups" %}
+ {% trans "Favorites" %}
- {% endblocktrans %}
{% trans "In your new BookWyrm account can choose what to import: you will not have to import everything that is exported." %}
@@ -49,6 +47,13 @@
{% if not site.user_exports_enabled %}
{% trans "New user exports are currently disabled." %}
+ {% if perms.bookwyrm.edit_instance_settings %}
+
+ {% url 'settings-imports' as url %}
+ {% blocktrans trimmed %}
+ User exports settings can be changed from the Imports page in the Admin dashboard.
+ {% endblocktrans %}
+ {% endif%}
{% elif next_available %}
diff --git a/bookwyrm/templates/search/author.html b/bookwyrm/templates/search/author.html
new file mode 100644
index 000000000..d42c3b54f
--- /dev/null
+++ b/bookwyrm/templates/search/author.html
@@ -0,0 +1,17 @@
+{% extends 'search/layout.html' %}
+
+{% block panel %}
+
+{% if results %}
+
+{% endif %}
+
+{% endblock %}
diff --git a/bookwyrm/templates/search/book.html b/bookwyrm/templates/search/book.html
index 262dcf2f9..b93c96754 100644
--- a/bookwyrm/templates/search/book.html
+++ b/bookwyrm/templates/search/book.html
@@ -109,7 +109,7 @@
{% if request.user.is_authenticated %}
{% if not remote %}
-
+
{% trans "Load results from other catalogues" %}
{% else %}
diff --git a/bookwyrm/templates/search/layout.html b/bookwyrm/templates/search/layout.html
index 8cf47b371..59ea0304e 100644
--- a/bookwyrm/templates/search/layout.html
+++ b/bookwyrm/templates/search/layout.html
@@ -20,6 +20,7 @@
{% trans "Books" %}
+ {% trans "Authors" %}
{% if request.user.is_authenticated %}
{% trans "Users" %}
{% endif %}
@@ -40,15 +41,18 @@
diff --git a/bookwyrm/templates/settings/dashboard/dashboard.html b/bookwyrm/templates/settings/dashboard/dashboard.html
index 4c109c7e1..d43b3bade 100644
--- a/bookwyrm/templates/settings/dashboard/dashboard.html
+++ b/bookwyrm/templates/settings/dashboard/dashboard.html
@@ -45,6 +45,10 @@
{% include 'settings/dashboard/warnings/update_version.html' with warning_level="warning" fullwidth=True %}
{% endif %}
+ {% if schedule_form %}
+ {% include 'settings/dashboard/warnings/check_for_updates.html' with warning_level="success" fullwidth=True %}
+ {% endif %}
+
{% if missing_privacy or missing_conduct %}
{% if missing_privacy %}
diff --git a/bookwyrm/templates/settings/dashboard/warnings/check_for_updates.html b/bookwyrm/templates/settings/dashboard/warnings/check_for_updates.html
new file mode 100644
index 000000000..00f320824
--- /dev/null
+++ b/bookwyrm/templates/settings/dashboard/warnings/check_for_updates.html
@@ -0,0 +1,24 @@
+{% extends 'settings/dashboard/warnings/layout.html' %}
+{% load i18n %}
+
+{% block warning_link %}#{% endblock %}
+
+{% block warning_text %}
+
+
+
+{% endblock %}
+
diff --git a/bookwyrm/templates/settings/layout.html b/bookwyrm/templates/settings/layout.html
index dcaaaeb38..70c7ef0f4 100644
--- a/bookwyrm/templates/settings/layout.html
+++ b/bookwyrm/templates/settings/layout.html
@@ -85,6 +85,10 @@
{% url 'settings-celery' as url %}
{% trans "Celery status" %}
+
+ {% url 'settings-schedules' as url %}
+ {% trans "Scheduled tasks" %}
+
{% url 'settings-email-config' as url %}
{% trans "Email Configuration" %}
diff --git a/bookwyrm/templates/settings/schedules.html b/bookwyrm/templates/settings/schedules.html
new file mode 100644
index 000000000..20ced4b30
--- /dev/null
+++ b/bookwyrm/templates/settings/schedules.html
@@ -0,0 +1,127 @@
+{% extends 'settings/layout.html' %}
+{% load i18n %}
+{% load humanize %}
+{% load utilities %}
+
+{% block title %}
+{% trans "Scheduled tasks" %}
+{% endblock %}
+
+{% block header %}
+{% trans "Scheduled tasks" %}
+{% endblock %}
+
+{% block panel %}
+
+
+
{% trans "Tasks" %}
+
+
+
+
+ {% trans "Name" %}
+
+
+ {% trans "Celery task" %}
+
+
+ {% trans "Date changed" %}
+
+
+ {% trans "Last run at" %}
+
+
+ {% trans "Schedule" %}
+
+
+ {% trans "Schedule ID" %}
+
+
+ {% trans "Enabled" %}
+
+
+ {% for task in tasks %}
+
+
+ {{ task.name }}
+
+
+ {{ task.task }}
+
+
+ {{ task.date_changed }}
+
+
+ {{ task.last_run_at }}
+
+
+ {% firstof task.interval task.crontab "None" %}
+
+
+ {{ task.interval.id }}
+
+
+
+ {% if task.enabled %}
+
+ {% endif %}
+ {{ task.enabled|yesno }}
+
+ {% if task.name != "celery.backend_cleanup" %}
+
+ {% endif %}
+
+
+ {% empty %}
+
+
+ {% trans "No scheduled tasks" %}
+
+
+ {% endfor %}
+
+
+
+
+
+
{% trans "Schedules" %}
+
+
+
+
+ {% trans "ID" %}
+
+
+ {% trans "Schedule" %}
+
+
+ {% trans "Tasks" %}
+
+
+ {% for schedule in schedules %}
+
+
+ {{ schedule.id }}
+
+
+ {{ schedule }}
+
+
+ {{ schedule.periodictask_set.count }}
+
+
+ {% empty %}
+
+
+ {% trans "No schedules found" %}
+
+
+ {% endfor %}
+
+
+
+
+{% endblock %}
diff --git a/bookwyrm/templates/shelf/shelves_filter_field.html b/bookwyrm/templates/shelf/shelves_filter_field.html
index 707f033ea..53c551d13 100644
--- a/bookwyrm/templates/shelf/shelves_filter_field.html
+++ b/bookwyrm/templates/shelf/shelves_filter_field.html
@@ -3,7 +3,7 @@
{% block filter %}
- {% trans 'Filter by keyword' %}
-
+ {% trans 'Filter by keyword' %}
+
{% endblock %}
diff --git a/bookwyrm/templates/snippets/book_series.html b/bookwyrm/templates/snippets/book_series.html
new file mode 100644
index 000000000..fd1343604
--- /dev/null
+++ b/bookwyrm/templates/snippets/book_series.html
@@ -0,0 +1,3 @@
+{% if book.series %}
+({{book.series}}{%if book.series_number %}, #{{book.series_number}}{% endif %})
+{% endif %}
diff --git a/bookwyrm/templates/snippets/book_titleby.html b/bookwyrm/templates/snippets/book_titleby.html
index dc42bf273..518d96389 100644
--- a/bookwyrm/templates/snippets/book_titleby.html
+++ b/bookwyrm/templates/snippets/book_titleby.html
@@ -9,12 +9,15 @@
{% if book.authors.exists %}
{% blocktrans trimmed with path=book.local_path title=book|book_title %}
-{{ title }} by
+{{ title }}
+by
{% endblocktrans %} {% include 'snippets/authors.html' with book=book limit=3 %}
{% else %}
{{ book|book_title }}
{% endif %}
+{% include 'snippets/book_series.html' with book=book %}
+
{% endcache %}
{% endspaceless %}
diff --git a/bookwyrm/templates/snippets/create_status/quotation.html b/bookwyrm/templates/snippets/create_status/quotation.html
index bd1d817ad..dc17585a9 100644
--- a/bookwyrm/templates/snippets/create_status/quotation.html
+++ b/bookwyrm/templates/snippets/create_status/quotation.html
@@ -56,8 +56,7 @@ uuid: a unique identifier used to make html "id" attributes unique and clarify j
- {% if image %}
-
-
- {% else %}
-
-
- {% endif %}
+
+
+{% elif site.logo %}
+
+
+
+
{% else %}
-
-
+
+
+
{% endif %}
-
-
-
-
+{% firstof description site.instance_tagline as description %}
+
+
diff --git a/bookwyrm/templates/snippets/status/headers/comment.html b/bookwyrm/templates/snippets/status/headers/comment.html
index e3e2ec40b..72bf5b255 100644
--- a/bookwyrm/templates/snippets/status/headers/comment.html
+++ b/bookwyrm/templates/snippets/status/headers/comment.html
@@ -17,4 +17,7 @@ commented on {{ book }}
{% endblocktrans %}
{% endif %}
+
+{% include 'snippets/book_series.html' with book=book %}
+
{% endwith %}
diff --git a/bookwyrm/templates/snippets/status/headers/quotation.html b/bookwyrm/templates/snippets/status/headers/quotation.html
index 2cdd5a991..ce0ea5923 100644
--- a/bookwyrm/templates/snippets/status/headers/quotation.html
+++ b/bookwyrm/templates/snippets/status/headers/quotation.html
@@ -17,4 +17,7 @@ quoted {{ book }}
{% endblocktrans %}
{% endif %}
+
+{% include 'snippets/book_series.html' with book=book %}
+
{% endwith %}
diff --git a/bookwyrm/templates/snippets/status/headers/read.html b/bookwyrm/templates/snippets/status/headers/read.html
index a59a3544e..5a237a836 100644
--- a/bookwyrm/templates/snippets/status/headers/read.html
+++ b/bookwyrm/templates/snippets/status/headers/read.html
@@ -19,4 +19,7 @@ finished reading {{ book }}
{% endblocktrans %}
{% endif %}
+
+{% include 'snippets/book_series.html' with book=book %}
+
{% endspaceless %}
diff --git a/bookwyrm/templates/snippets/status/headers/reading.html b/bookwyrm/templates/snippets/status/headers/reading.html
index 886158f29..44c604620 100644
--- a/bookwyrm/templates/snippets/status/headers/reading.html
+++ b/bookwyrm/templates/snippets/status/headers/reading.html
@@ -19,4 +19,7 @@ started reading {{ book }}
{% endblocktrans %}
{% endif %}
+
+{% include 'snippets/book_series.html' with book=book %}
+
{% endspaceless %}
diff --git a/bookwyrm/templates/snippets/status/headers/review.html b/bookwyrm/templates/snippets/status/headers/review.html
index a2168b948..95a6fc403 100644
--- a/bookwyrm/templates/snippets/status/headers/review.html
+++ b/bookwyrm/templates/snippets/status/headers/review.html
@@ -17,4 +17,7 @@ reviewed {{ book }}
{% endblocktrans %}
{% endif %}
+
+{% include 'snippets/book_series.html' with book=book %}
+
{% endwith %}
diff --git a/bookwyrm/templates/snippets/status/headers/stopped_reading.html b/bookwyrm/templates/snippets/status/headers/stopped_reading.html
index 3b6a314e1..09f2e4264 100644
--- a/bookwyrm/templates/snippets/status/headers/stopped_reading.html
+++ b/bookwyrm/templates/snippets/status/headers/stopped_reading.html
@@ -19,5 +19,8 @@ stopped reading {{ book }}
{% endblocktrans %}
{% endif %}
+
+{% include 'snippets/book_series.html' with book=book %}
+
{% endspaceless %}
diff --git a/bookwyrm/templates/snippets/status/headers/to_read.html b/bookwyrm/templates/snippets/status/headers/to_read.html
index 2abdde17b..c775c33a7 100644
--- a/bookwyrm/templates/snippets/status/headers/to_read.html
+++ b/bookwyrm/templates/snippets/status/headers/to_read.html
@@ -19,4 +19,7 @@ wants to read {{ book }}
{% endblocktrans %}
{% endif %}
+
+{% include 'snippets/book_series.html' with book=book %}
+
{% endspaceless %}
diff --git a/bookwyrm/templatetags/utilities.py b/bookwyrm/templatetags/utilities.py
index 230db366e..d1d849cb8 100644
--- a/bookwyrm/templatetags/utilities.py
+++ b/bookwyrm/templatetags/utilities.py
@@ -126,7 +126,7 @@ def id_to_username(user_id):
value = f"{name}@{domain}"
return value
- return "a new user account"
+ return _("a new user account")
@register.filter(name="get_file_size")
diff --git a/bookwyrm/tests/data/user_import.json b/bookwyrm/tests/data/user_import.json
index 0318ddfeb..ffe2e7d9e 100644
--- a/bookwyrm/tests/data/user_import.json
+++ b/bookwyrm/tests/data/user_import.json
@@ -136,6 +136,7 @@
],
"bio": "American political scientist and anthropologist
",
"wikipediaLink": "https://en.wikipedia.org/wiki/James_C._Scott",
+ "wikidata": "Q3025403",
"website": "",
"@context": "https://www.w3.org/ns/activitystreams"
}
@@ -320,6 +321,7 @@
"aliases": [],
"bio": "",
"wikipediaLink": "",
+ "wikidata": "",
"website": "",
"@context": "https://www.w3.org/ns/activitystreams"
}
@@ -396,4 +398,4 @@
"https://your.domain.here/user/rat"
],
"blocks": ["https://your.domain.here/user/badger"]
-}
\ No newline at end of file
+}
diff --git a/bookwyrm/tests/models/test_activitypub_mixin.py b/bookwyrm/tests/models/test_activitypub_mixin.py
index cad970412..2f6fad76d 100644
--- a/bookwyrm/tests/models/test_activitypub_mixin.py
+++ b/bookwyrm/tests/models/test_activitypub_mixin.py
@@ -227,14 +227,18 @@ class ActivitypubMixins(TestCase):
shared_inbox="http://example.com/inbox",
outbox="https://example.com/users/nutria/outbox",
)
- MockSelf = namedtuple("Self", ("privacy", "user"))
- mock_self = MockSelf("public", self.local_user)
+ MockSelf = namedtuple("Self", ("privacy", "user", "recipients"))
self.local_user.followers.add(self.remote_user)
self.local_user.followers.add(another_remote_user)
+ mock_self = MockSelf("public", self.local_user, [])
recipients = ActivitypubMixin.get_recipients(mock_self)
- self.assertEqual(len(recipients), 1)
- self.assertEqual(recipients[0], "http://example.com/inbox")
+ self.assertCountEqual(recipients, ["http://example.com/inbox"])
+
+ # should also work with recipient that is a follower
+ mock_self.recipients.append(another_remote_user)
+ recipients = ActivitypubMixin.get_recipients(mock_self)
+ self.assertCountEqual(recipients, ["http://example.com/inbox"])
def test_get_recipients_software(self, *_):
"""should differentiate between bookwyrm and other remote users"""
diff --git a/bookwyrm/tests/models/test_fields.py b/bookwyrm/tests/models/test_fields.py
index d04178d4a..cc8c54113 100644
--- a/bookwyrm/tests/models/test_fields.py
+++ b/bookwyrm/tests/models/test_fields.py
@@ -438,7 +438,7 @@ class ModelFields(TestCase):
)
)
self.assertEqual(output.name, "")
- self.assertEqual(output.type, "Document")
+ self.assertEqual(output.type, "Image")
@responses.activate
def test_image_field_from_activity(self, *_):
diff --git a/bookwyrm/tests/test_author_search.py b/bookwyrm/tests/test_author_search.py
new file mode 100644
index 000000000..e6b20a2c6
--- /dev/null
+++ b/bookwyrm/tests/test_author_search.py
@@ -0,0 +1,87 @@
+""" test searching for authors """
+from django.test import TestCase
+
+from django.contrib.postgres.search import SearchRank, SearchQuery
+from django.db.models import F
+
+from bookwyrm import models
+
+
+class AuthorSearch(TestCase):
+ """look for some authors"""
+
+ @classmethod
+ def setUpTestData(cls):
+ """we need basic test data and mocks"""
+ cls.bob = models.Author.objects.create(
+ name="Bob", aliases=["Robertus", "Alice"]
+ )
+ cls.alice = models.Author.objects.create(name="Alice")
+
+ def test_search(self):
+ """search for an author in the db"""
+ results = self._search("Bob")
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0], self.bob)
+
+ def test_alias_priority(self):
+ """aliases should be included, with lower priority than name"""
+ results = self._search("Alice")
+ self.assertEqual(len(results), 2)
+ self.assertEqual(results[0], self.alice)
+
+ def _search_first(self, query):
+ """wrapper around search_title_author"""
+ return self._search(query, return_first=True)
+
+ @staticmethod
+ def _search(query, *, return_first=False):
+ """author search"""
+ search_query = SearchQuery(query, config="simple")
+ min_confidence = 0
+
+ results = (
+ models.Author.objects.filter(search_vector=search_query)
+ .annotate(rank=SearchRank(F("search_vector"), search_query))
+ .filter(rank__gt=min_confidence)
+ .order_by("-rank")
+ )
+ if return_first:
+ return results.first()
+ return results
+
+
+class SearchVectorTest(TestCase):
+ """check search_vector is computed correctly"""
+
+ def test_search_vector_simple(self):
+ """simplest search vector"""
+ author = self._create_author("Mary")
+ self.assertEqual(author.search_vector, "'mary':1A")
+
+ def test_search_vector_aliases(self):
+ """author aliases should be included with lower priority"""
+ author = self._create_author("Mary", aliases=["Maria", "Example"])
+ self.assertEqual(author.search_vector, "'example':3B 'maria':2B 'mary':1A")
+
+ def test_search_vector_parse_author(self):
+ """author name and alias is not stem'd or affected by stop words"""
+ author = self._create_author("Writes", aliases=["Reads"])
+ self.assertEqual(author.search_vector, "'reads':2B 'writes':1A")
+
+ def test_search_vector_on_update(self):
+ """make sure that search_vector is being set correctly on edit"""
+ author = self._create_author("Mary")
+ self.assertEqual(author.search_vector, "'mary':1A")
+
+ author.name = "Example"
+ author.save(broadcast=False)
+ author.refresh_from_db()
+ self.assertEqual(author.search_vector, "'example':1A")
+
+ @staticmethod
+ def _create_author(name, /, *, aliases=None):
+ """quickly create an author"""
+ author = models.Author.objects.create(name=name, aliases=aliases or [])
+ author.refresh_from_db()
+ return author
diff --git a/bookwyrm/tests/test_book_search.py b/bookwyrm/tests/test_book_search.py
index d2056bfeb..b8c1ee1d3 100644
--- a/bookwyrm/tests/test_book_search.py
+++ b/bookwyrm/tests/test_book_search.py
@@ -1,5 +1,6 @@
""" test searching for books """
import datetime
+from django.db import connection
from django.test import TestCase
from django.utils import timezone
@@ -13,6 +14,13 @@ class BookSearch(TestCase):
@classmethod
def setUpTestData(self): # pylint: disable=bad-classmethod-argument
"""we need basic test data and mocks"""
+ self.first_author = models.Author.objects.create(
+ name="Author One", aliases=["The First"]
+ )
+ self.second_author = models.Author.objects.create(
+ name="Author Two", aliases=["The Second"]
+ )
+
self.work = models.Work.objects.create(title="Example Work")
self.first_edition = models.Edition.objects.create(
@@ -22,6 +30,8 @@ class BookSearch(TestCase):
physical_format="Paperback",
published_date=datetime.datetime(2019, 4, 9, 0, 0, tzinfo=timezone.utc),
)
+ self.first_edition.authors.add(self.first_author)
+
self.second_edition = models.Edition.objects.create(
title="Another Edition",
parent_work=self.work,
@@ -29,19 +39,34 @@ class BookSearch(TestCase):
openlibrary_key="hello",
pages=150,
)
+ self.second_edition.authors.add(self.first_author)
+ self.second_edition.authors.add(self.second_author)
+
self.third_edition = models.Edition.objects.create(
title="Another Edition with annoying ISBN",
parent_work=self.work,
isbn_10="022222222X",
)
+ self.third_edition.authors.add(self.first_author)
+ self.third_edition.authors.add(self.second_author)
def test_search(self):
"""search for a book in the db"""
- # title/author
+ # title
results = book_search.search("Example")
self.assertEqual(len(results), 1)
self.assertEqual(results[0], self.first_edition)
+ # author
+ results = book_search.search("One")
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0], self.first_edition)
+
+ # author alias
+ results = book_search.search("First")
+ self.assertEqual(len(results), 1)
+ self.assertEqual(results[0], self.first_edition)
+
# isbn
results = book_search.search("0000000000")
self.assertEqual(len(results), 1)
@@ -140,3 +165,265 @@ class BookSearch(TestCase):
# there's really not much to test here, it's just a dataclass
self.assertEqual(result.confidence, 1)
self.assertEqual(result.title, "Title")
+
+
+class SearchVectorTest(TestCase):
+ """check search_vector is computed correctly"""
+
+ def test_search_vector_simple(self):
+ """simplest search vector"""
+ book = self._create_book("Book", "Mary")
+ self.assertEqual(book.search_vector, "'book':1A 'mary':2C") # A > C (priority)
+
+ def test_search_vector_all_parts(self):
+ """search vector with subtitle and series"""
+ # for a book like this we call `to_tsvector("Book Long Mary Bunch")`, hence the
+ # indexes in the search vector. (priority "D" is the default, and never shown.)
+ book = self._create_book(
+ "Book",
+ "Mary",
+ subtitle="Long",
+ series="Bunch",
+ author_alias=["Maria", "Mary Ann"],
+ )
+ self.assertEqual(
+ book.search_vector,
+ "'ann':6C 'book':1A 'bunch':7 'long':2B 'maria':4C 'mary':3C,5C",
+ )
+
+ def test_search_vector_parse_book(self):
+ """book parts are parsed in english"""
+ # FIXME: at some point this should stop being the default.
+ book = self._create_book(
+ "Edition", "Editor", series="Castle", subtitle="Writing"
+ )
+ self.assertEqual(
+ book.search_vector, "'castl':4 'edit':1A 'editor':3C 'write':2B"
+ )
+
+ def test_search_vector_parse_author(self):
+ """author name is not stem'd or affected by stop words"""
+ book = self._create_book("Writing", "Writes", author_alias=["Reads"])
+ self.assertEqual(book.search_vector, "'reads':3C 'write':1A 'writes':2C")
+
+ book = self._create_book("She Is Writing", "She Writes")
+ self.assertEqual(book.search_vector, "'she':4C 'write':3A 'writes':5C")
+
+ def test_search_vector_parse_title_empty(self):
+ """empty parse in English retried as simple title"""
+ book = self._create_book("Here We", "John")
+ self.assertEqual(book.search_vector, "'here':1A 'john':3C 'we':2A")
+
+ book = self._create_book("Hear We Come", "John")
+ self.assertEqual(book.search_vector, "'come':3A 'hear':1A 'john':4C")
+
+ book = self._create_book("there there", "the")
+ self.assertEqual(book.search_vector, "'the':3C 'there':1A,2A")
+
+ def test_search_vector_no_author(self):
+ """book with no authors gets processed normally"""
+ book = self._create_book("Book", None, series="Bunch")
+ self.assertEqual(book.search_vector, "'book':1A 'bunch':2")
+
+ book = self._create_book("there there", None)
+ self.assertEqual(book.search_vector, "'there':1A,2A")
+
+ # n.b.: the following originally from test_posgres.py
+
+ def test_search_vector_on_update(self):
+ """make sure that search_vector is being set correctly on edit"""
+ book = self._create_book("The Long Goodbye", None)
+ self.assertEqual(book.search_vector, "'goodby':3A 'long':2A")
+
+ book.title = "The Even Longer Goodbye"
+ book.save(broadcast=False)
+ book.refresh_from_db()
+ self.assertEqual(book.search_vector, "'even':2A 'goodby':4A 'longer':3A")
+
+ def test_search_vector_on_author_update(self):
+ """update search when an author name changes"""
+ book = self._create_book("The Long Goodbye", "The Rays")
+ self.assertEqual(book.search_vector, "'goodby':3A 'long':2A 'rays':5C 'the':4C")
+
+ author = models.Author.objects.get(name="The Rays")
+ author.name = "Jeremy"
+ author.save(broadcast=False)
+ book.refresh_from_db()
+ self.assertEqual(book.search_vector, "'goodby':3A 'jeremy':4C 'long':2A")
+
+ author.aliases = ["Example"]
+ author.save(broadcast=False)
+ book.refresh_from_db()
+ self.assertEqual(
+ book.search_vector, "'example':5C 'goodby':3A 'jeremy':4C 'long':2A"
+ )
+
+ def test_search_vector_on_author_delete(self):
+ """update search when an author is deleted"""
+ book = self._create_book("The Long Goodbye", "The Rays")
+ self.assertEqual(book.search_vector, "'goodby':3A 'long':2A 'rays':5C 'the':4C")
+
+ author = models.Author.objects.get(name="The Rays")
+ book.authors.remove(author)
+ book.refresh_from_db()
+ self.assertEqual(book.search_vector, "'goodby':3A 'long':2A")
+
+ def test_search_vector_fields(self):
+ """language field irrelevant for search_vector"""
+ author = models.Author.objects.create(name="The Rays")
+ book = models.Edition.objects.create(
+ title="The Long Goodbye",
+ subtitle="wow cool",
+ series="series name",
+ languages=["irrelevant"],
+ )
+ book.authors.add(author)
+ book.refresh_from_db()
+ self.assertEqual(
+ book.search_vector,
+ # pylint: disable-next=line-too-long
+ "'cool':5B 'goodby':3A 'long':2A 'name':9 'rays':7C 'seri':8 'the':6C 'wow':4B",
+ )
+
+ @staticmethod
+ def _create_book(
+ title, author_name, /, *, subtitle="", series="", author_alias=None
+ ):
+ """quickly create a book"""
+ work = models.Work.objects.create(title="work")
+ edition = models.Edition.objects.create(
+ title=title,
+ series=series or None,
+ subtitle=subtitle or None,
+ isbn_10="0000000000",
+ parent_work=work,
+ )
+ if author_name is not None:
+ author = models.Author.objects.create(
+ name=author_name, aliases=author_alias or []
+ )
+ edition.authors.add(author)
+ edition.save(broadcast=False)
+ edition.refresh_from_db()
+ return edition
+
+
+class SearchVectorUpdates(TestCase):
+ """look for books as they change""" # functional tests of the above
+
+ def setUp(self):
+ """we need basic test data and mocks"""
+ self.work = models.Work.objects.create(title="This Work")
+ self.author = models.Author.objects.create(name="Name", aliases=["Alias"])
+ self.edition = models.Edition.objects.create(
+ title="First Edition of Work",
+ subtitle="Some Extra Words Are Good",
+ series="A Fabulous Sequence of Items",
+ parent_work=self.work,
+ isbn_10="0000000000",
+ )
+ self.edition.authors.add(self.author)
+ self.edition.save(broadcast=False)
+
+ @classmethod
+ def setUpTestData(cls):
+ """create conditions that trigger known old bugs"""
+ with connection.cursor() as cursor:
+ cursor.execute(
+ """
+ ALTER SEQUENCE bookwyrm_author_id_seq RESTART WITH 20;
+ ALTER SEQUENCE bookwyrm_book_authors_id_seq RESTART WITH 300;
+ """
+ )
+
+ def test_search_after_changed_metadata(self):
+ """book found after updating metadata"""
+ self.assertEqual(self.edition, self._search_first("First")) # title
+ self.assertEqual(self.edition, self._search_first("Good")) # subtitle
+ self.assertEqual(self.edition, self._search_first("Sequence")) # series
+
+ self.edition.title = "Second Title of Work"
+ self.edition.subtitle = "Fewer Words Is Better"
+ self.edition.series = "A Wondrous Bunch"
+ self.edition.save(broadcast=False)
+
+ self.assertEqual(self.edition, self._search_first("Second")) # title new
+ self.assertEqual(self.edition, self._search_first("Fewer")) # subtitle new
+ self.assertEqual(self.edition, self._search_first("Wondrous")) # series new
+
+ self.assertFalse(self._search_first("First")) # title old
+ self.assertFalse(self._search_first("Good")) # subtitle old
+ self.assertFalse(self._search_first("Sequence")) # series old
+
+ def test_search_after_author_remove(self):
+ """book not found via removed author"""
+ self.assertEqual(self.edition, self._search_first("Name"))
+
+ self.edition.authors.set([])
+ self.edition.save(broadcast=False)
+
+ self.assertFalse(self._search("Name"))
+ self.assertEqual(self.edition, self._search_first("Edition"))
+
+ def test_search_after_author_add(self):
+ """book found by newly-added author"""
+ new_author = models.Author.objects.create(name="Mozilla")
+
+ self.assertFalse(self._search("Mozilla"))
+
+ self.edition.authors.add(new_author)
+ self.edition.save(broadcast=False)
+
+ self.assertEqual(self.edition, self._search_first("Mozilla"))
+ self.assertEqual(self.edition, self._search_first("Name"))
+
+ def test_search_after_author_add_remove_sql(self):
+ """add/remove author through SQL to ensure execution of book_authors trigger"""
+ # Tests calling edition.save(), above, pass even if the trigger in
+ # bookwyrm_book_authors is removed (probably because they trigger the one
+ # in bookwyrm_book directly). Here we make sure to exercise the former.
+ new_author = models.Author.objects.create(name="Mozilla")
+
+ with connection.cursor() as cursor:
+ cursor.execute(
+ "DELETE FROM bookwyrm_book_authors WHERE book_id = %s",
+ [self.edition.id],
+ )
+ self.assertFalse(self._search("Name"))
+ self.assertFalse(self._search("Mozilla"))
+
+ with connection.cursor() as cursor:
+ cursor.execute(
+ "INSERT INTO bookwyrm_book_authors (book_id,author_id) VALUES (%s,%s)",
+ [self.edition.id, new_author.id],
+ )
+ self.assertFalse(self._search("Name"))
+ self.assertEqual(self.edition, self._search_first("Mozilla"))
+
+ def test_search_after_updated_author_name(self):
+ """book found under new author name"""
+ self.assertEqual(self.edition, self._search_first("Name"))
+ self.assertEqual(self.edition, self._search_first("Alias"))
+ self.assertFalse(self._search("Identifier"))
+ self.assertFalse(self._search("Another"))
+
+ self.author.name = "Identifier"
+ self.author.aliases = ["Another"]
+ self.author.save(broadcast=False)
+
+ self.assertFalse(self._search("Name"))
+ self.assertFalse(self._search("Aliases"))
+ self.assertEqual(self.edition, self._search_first("Identifier"))
+ self.assertEqual(self.edition, self._search_first("Another"))
+ self.assertEqual(self.edition, self._search_first("Work"))
+
+ def _search_first(self, query):
+ """wrapper around search_title_author"""
+ return self._search(query, return_first=True)
+
+ @staticmethod
+ def _search(query, *, return_first=False):
+ """wrapper around search_title_author"""
+ return book_search.search_title_author(
+ query, min_confidence=0, return_first=return_first
+ )
diff --git a/bookwyrm/tests/test_postgres.py b/bookwyrm/tests/test_postgres.py
deleted file mode 100644
index 8fc3c9d59..000000000
--- a/bookwyrm/tests/test_postgres.py
+++ /dev/null
@@ -1,77 +0,0 @@
-""" django configuration of postgres """
-from unittest.mock import patch
-from django.test import TestCase
-
-from bookwyrm import models
-
-
-@patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async")
-class PostgresTriggers(TestCase):
- """special migrations, fancy stuff ya know"""
-
- def test_search_vector_on_create(self, _):
- """make sure that search_vector is being set correctly on create"""
- book = models.Edition.objects.create(title="The Long Goodbye")
- book.refresh_from_db()
- self.assertEqual(book.search_vector, "'goodby':3A 'long':2A")
-
- def test_search_vector_on_update(self, _):
- """make sure that search_vector is being set correctly on edit"""
- book = models.Edition.objects.create(title="The Long Goodbye")
- book.title = "The Even Longer Goodbye"
- book.save(broadcast=False)
- book.refresh_from_db()
- self.assertEqual(book.search_vector, "'even':2A 'goodby':4A 'longer':3A")
-
- def test_search_vector_fields(self, _):
- """use multiple fields to create search vector"""
- author = models.Author.objects.create(name="The Rays")
- book = models.Edition.objects.create(
- title="The Long Goodbye",
- subtitle="wow cool",
- series="series name",
- languages=["irrelevant"],
- )
- book.authors.add(author)
- book.refresh_from_db()
- # pylint: disable=line-too-long
- self.assertEqual(
- book.search_vector,
- "'cool':5B 'goodby':3A 'long':2A 'name':9 'rays':7C 'seri':8 'the':6C 'wow':4B",
- )
-
- def test_search_vector_on_author_update(self, _):
- """update search when an author name changes"""
- author = models.Author.objects.create(name="The Rays")
- book = models.Edition.objects.create(
- title="The Long Goodbye",
- )
- book.authors.add(author)
- author.name = "Jeremy"
- author.save(broadcast=False)
- book.refresh_from_db()
-
- self.assertEqual(book.search_vector, "'goodby':3A 'jeremy':4C 'long':2A")
-
- def test_search_vector_on_author_delete(self, _):
- """update search when an author name changes"""
- author = models.Author.objects.create(name="Jeremy")
- book = models.Edition.objects.create(
- title="The Long Goodbye",
- )
-
- book.authors.add(author)
- book.refresh_from_db()
- self.assertEqual(book.search_vector, "'goodby':3A 'jeremy':4C 'long':2A")
-
- book.authors.remove(author)
- book.refresh_from_db()
- self.assertEqual(book.search_vector, "'goodby':3A 'long':2A")
-
- def test_search_vector_stop_word_fallback(self, _):
- """use a fallback when removing stop words leads to an empty vector"""
- book = models.Edition.objects.create(
- title="there there",
- )
- book.refresh_from_db()
- self.assertEqual(book.search_vector, "'there':1A,2A")
diff --git a/bookwyrm/tests/validate_html.py b/bookwyrm/tests/validate_html.py
index 85e5c6277..748b94d5f 100644
--- a/bookwyrm/tests/validate_html.py
+++ b/bookwyrm/tests/validate_html.py
@@ -13,16 +13,26 @@ def validate_html(html):
"warn-proprietary-attributes": False,
},
)
- # idk how else to filter out these unescape amp errs
+ # Tidy's parser is strict when validating unescaped/encoded ampersands found within
+ # the html document that are notpart of a character or entity reference
+ # (eg: `&` or `&`). Despite the fact the HTML5 spec no longer recommends
+ # escaping ampersands in URLs, Tidy will still complain if they are used as query
+ # param keys. Unfortunately, there is no way currently to configure tidy to ignore
+ # this so we must explictly redlist related strings that will appear in Tidy's
+ # errors output.
+ #
+ # See further discussion: https://github.com/htacg/tidy-html5/issues/1017
+ excluded = [
+ "&book",
+ "&type",
+ "&resolved",
+ "id and name attribute",
+ "illegal characters found in URI",
+ "escaping malformed URI reference",
+ "&filter",
+ ]
errors = "\n".join(
- e
- for e in errors.split("\n")
- if "&book" not in e
- and "&type" not in e
- and "&resolved" not in e
- and "id and name attribute" not in e
- and "illegal characters found in URI" not in e
- and "escaping malformed URI reference" not in e
+ e for e in errors.split("\n") if not any(exclude in e for exclude in excluded)
)
if errors:
raise Exception(errors)
diff --git a/bookwyrm/tests/views/books/test_book.py b/bookwyrm/tests/views/books/test_book.py
index d1d118ec0..4d41eaa5d 100644
--- a/bookwyrm/tests/views/books/test_book.py
+++ b/bookwyrm/tests/views/books/test_book.py
@@ -272,8 +272,8 @@ class BookViews(TestCase):
book=self.book,
content="hi",
quote="wow",
- position=12,
- endposition=13,
+ position="12",
+ endposition="13",
)
request = self.factory.get("")
@@ -286,7 +286,9 @@ class BookViews(TestCase):
validate_html(result.render())
print(result.render())
self.assertEqual(result.status_code, 200)
- self.assertEqual(result.context_data["statuses"].object_list[0].endposition, 13)
+ self.assertEqual(
+ result.context_data["statuses"].object_list[0].endposition, "13"
+ )
def _setup_cover_url():
diff --git a/bookwyrm/tests/views/books/test_editions.py b/bookwyrm/tests/views/books/test_editions.py
index 64de34067..e89fd521b 100644
--- a/bookwyrm/tests/views/books/test_editions.py
+++ b/bookwyrm/tests/views/books/test_editions.py
@@ -133,3 +133,73 @@ class BookViews(TestCase):
self.assertEqual(models.ShelfBook.objects.get().book, edition2)
self.assertEqual(models.ReadThrough.objects.get().book, edition2)
+
+ @patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
+ @patch("bookwyrm.activitystreams.populate_stream_task.delay")
+ @patch("bookwyrm.activitystreams.add_book_statuses_task.delay")
+ @patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async")
+ def test_move_ratings_on_switch_edition(self, *_):
+ """updates user's rating on a book to new edition"""
+ work = models.Work.objects.create(title="test work")
+ edition1 = models.Edition.objects.create(title="first ed", parent_work=work)
+ edition2 = models.Edition.objects.create(title="second ed", parent_work=work)
+
+ models.ReviewRating.objects.create(
+ book=edition1,
+ user=self.local_user,
+ rating=3,
+ )
+
+ self.assertIsInstance(
+ models.ReviewRating.objects.get(user=self.local_user, book=edition1),
+ models.ReviewRating,
+ )
+ with self.assertRaises(models.ReviewRating.DoesNotExist):
+ models.ReviewRating.objects.get(user=self.local_user, book=edition2)
+
+ request = self.factory.post("", {"edition": edition2.id})
+ request.user = self.local_user
+ views.switch_edition(request)
+
+ self.assertIsInstance(
+ models.ReviewRating.objects.get(user=self.local_user, book=edition2),
+ models.ReviewRating,
+ )
+ with self.assertRaises(models.ReviewRating.DoesNotExist):
+ models.ReviewRating.objects.get(user=self.local_user, book=edition1)
+
+ @patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
+ @patch("bookwyrm.activitystreams.populate_stream_task.delay")
+ @patch("bookwyrm.activitystreams.add_book_statuses_task.delay")
+ @patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async")
+ def test_move_reviews_on_switch_edition(self, *_):
+ """updates user's review on a book to new edition"""
+ work = models.Work.objects.create(title="test work")
+ edition1 = models.Edition.objects.create(title="first ed", parent_work=work)
+ edition2 = models.Edition.objects.create(title="second ed", parent_work=work)
+
+ models.Review.objects.create(
+ book=edition1,
+ user=self.local_user,
+ name="blah",
+ rating=3,
+ content="not bad",
+ )
+
+ self.assertIsInstance(
+ models.Review.objects.get(user=self.local_user, book=edition1),
+ models.Review,
+ )
+ with self.assertRaises(models.Review.DoesNotExist):
+ models.Review.objects.get(user=self.local_user, book=edition2)
+
+ request = self.factory.post("", {"edition": edition2.id})
+ request.user = self.local_user
+ views.switch_edition(request)
+
+ self.assertIsInstance(
+ models.Review.objects.get(user=self.local_user, book=edition2),
+ models.Review,
+ )
+ with self.assertRaises(models.Review.DoesNotExist):
+ models.Review.objects.get(user=self.local_user, book=edition1)
diff --git a/bookwyrm/tests/views/shelf/test_shelf.py b/bookwyrm/tests/views/shelf/test_shelf.py
index 492f214e3..b96d0a9ed 100644
--- a/bookwyrm/tests/views/shelf/test_shelf.py
+++ b/bookwyrm/tests/views/shelf/test_shelf.py
@@ -219,3 +219,48 @@ class ShelfViews(TestCase):
view(request, request.user.username, shelf.identifier)
self.assertEqual(shelf.name, "To Read")
+
+ def test_filter_shelf_found(self, *_):
+ """display books that match a filter keyword"""
+ models.ShelfBook.objects.create(
+ book=self.book,
+ shelf=self.shelf,
+ user=self.local_user,
+ )
+ shelf_book = models.ShelfBook.objects.create(
+ book=self.book,
+ shelf=self.local_user.shelf_set.first(),
+ user=self.local_user,
+ )
+ view = views.Shelf.as_view()
+ request = self.factory.get("", {"filter": shelf_book.book.title})
+ request.user = self.local_user
+ with patch("bookwyrm.views.shelf.shelf.is_api_request") as is_api:
+ is_api.return_value = False
+ result = view(request, self.local_user.username)
+ self.assertIsInstance(result, TemplateResponse)
+ validate_html(result.render())
+ self.assertEqual(result.status_code, 200)
+ self.assertEqual(len(result.context_data["books"].object_list), 1)
+ self.assertEqual(
+ result.context_data["books"].object_list[0].title,
+ shelf_book.book.title,
+ )
+
+ def test_filter_shelf_none(self, *_):
+ """display a message when no books match a filter keyword"""
+ models.ShelfBook.objects.create(
+ book=self.book,
+ shelf=self.shelf,
+ user=self.local_user,
+ )
+ view = views.Shelf.as_view()
+ request = self.factory.get("", {"filter": "NOPE"})
+ request.user = self.local_user
+ with patch("bookwyrm.views.shelf.shelf.is_api_request") as is_api:
+ is_api.return_value = False
+ result = view(request, self.local_user.username)
+ self.assertIsInstance(result, TemplateResponse)
+ validate_html(result.render())
+ self.assertEqual(result.status_code, 200)
+ self.assertEqual(len(result.context_data["books"].object_list), 0)
diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py
index 1a577c84b..bfa1aacce 100644
--- a/bookwyrm/urls.py
+++ b/bookwyrm/urls.py
@@ -369,6 +369,11 @@ urlpatterns = [
re_path(
r"^settings/celery/ping/?$", views.celery_ping, name="settings-celery-ping"
),
+ re_path(
+ r"^settings/schedules/(?P\d+)?$",
+ views.ScheduledTasks.as_view(),
+ name="settings-schedules",
+ ),
re_path(
r"^settings/email-config/?$",
views.EmailConfig.as_view(),
diff --git a/bookwyrm/utils/db.py b/bookwyrm/utils/db.py
new file mode 100644
index 000000000..2bb3b9ff6
--- /dev/null
+++ b/bookwyrm/utils/db.py
@@ -0,0 +1,23 @@
+""" Database utilities """
+
+from typing import cast
+import sqlparse # type: ignore
+
+
+def format_trigger(sql: str) -> str:
+ """format SQL trigger before storing
+
+ we remove whitespace and use consistent casing so as to avoid migrations
+ due to formatting changes.
+ """
+ return cast(
+ str,
+ sqlparse.format(
+ sql,
+ strip_comments=True,
+ strip_whitespace=True,
+ use_space_around_operators=True,
+ keyword_case="upper",
+ identifier_case="lower",
+ ),
+ )
diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py
index f11c11dd6..ebc851847 100644
--- a/bookwyrm/views/__init__.py
+++ b/bookwyrm/views/__init__.py
@@ -5,6 +5,7 @@ from .admin.announcements import EditAnnouncement, delete_announcement
from .admin.automod import AutoMod, automod_delete, run_automod
from .admin.automod import schedule_automod_task, unschedule_automod_task
from .admin.celery_status import CeleryStatus, celery_ping
+from .admin.schedule import ScheduledTasks
from .admin.dashboard import Dashboard
from .admin.federation import Federation, FederatedServer
from .admin.federation import AddFederatedServer, ImportServerBlocklist
diff --git a/bookwyrm/views/admin/automod.py b/bookwyrm/views/admin/automod.py
index 9a32dd9ee..58818ad9b 100644
--- a/bookwyrm/views/admin/automod.py
+++ b/bookwyrm/views/admin/automod.py
@@ -6,7 +6,7 @@ from django.template.response import TemplateResponse
from django.utils.decorators import method_decorator
from django.views import View
from django.views.decorators.http import require_POST
-from django_celery_beat.models import PeriodicTask
+from django_celery_beat.models import PeriodicTask, IntervalSchedule
from bookwyrm import forms, models
@@ -54,7 +54,7 @@ def schedule_automod_task(request):
return TemplateResponse(request, "settings/automod/rules.html", data)
with transaction.atomic():
- schedule = form.save(request)
+ schedule, _ = IntervalSchedule.objects.get_or_create(**form.cleaned_data)
PeriodicTask.objects.get_or_create(
interval=schedule,
name="automod-task",
diff --git a/bookwyrm/views/admin/dashboard.py b/bookwyrm/views/admin/dashboard.py
index 9d256fc6c..21b19bf16 100644
--- a/bookwyrm/views/admin/dashboard.py
+++ b/bookwyrm/views/admin/dashboard.py
@@ -6,16 +6,18 @@ from dateutil.parser import parse
from packaging import version
from django.contrib.auth.decorators import login_required, permission_required
+from django.db import transaction
from django.db.models import Q
+from django.shortcuts import redirect
from django.template.response import TemplateResponse
from django.utils import timezone
from django.utils.decorators import method_decorator
from django.views import View
+from django_celery_beat.models import PeriodicTask, IntervalSchedule
from csp.decorators import csp_update
-from bookwyrm import models, settings
-from bookwyrm.connectors.abstract_connector import get_data
+from bookwyrm import forms, models, settings
from bookwyrm.utils import regex
@@ -59,21 +61,36 @@ class Dashboard(View):
== site._meta.get_field("privacy_policy").get_default()
)
- # check version
+ if site.available_version and version.parse(
+ site.available_version
+ ) > version.parse(settings.VERSION):
+ data["current_version"] = settings.VERSION
+ data["available_version"] = site.available_version
- try:
- release = get_data(settings.RELEASE_API, timeout=3)
- available_version = release.get("tag_name", None)
- if available_version and version.parse(available_version) > version.parse(
- settings.VERSION
- ):
- data["current_version"] = settings.VERSION
- data["available_version"] = available_version
- except: # pylint: disable= bare-except
- pass
+ if not PeriodicTask.objects.filter(name="check-for-updates").exists():
+ data["schedule_form"] = forms.IntervalScheduleForm(
+ {"every": 1, "period": "days"}
+ )
return TemplateResponse(request, "settings/dashboard/dashboard.html", data)
+ def post(self, request):
+ """Create a schedule task to check for updates"""
+ schedule_form = forms.IntervalScheduleForm(request.POST)
+ if not schedule_form.is_valid():
+ raise schedule_form.ValidationError(schedule_form.errors)
+
+ with transaction.atomic():
+ schedule, _ = IntervalSchedule.objects.get_or_create(
+ **schedule_form.cleaned_data
+ )
+ PeriodicTask.objects.get_or_create(
+ interval=schedule,
+ name="check-for-updates",
+ task="bookwyrm.models.site.check_for_updates_task",
+ )
+ return redirect("settings-dashboard")
+
def get_charts_and_stats(request):
"""Defines the dashboard charts"""
diff --git a/bookwyrm/views/admin/schedule.py b/bookwyrm/views/admin/schedule.py
new file mode 100644
index 000000000..c654dca9a
--- /dev/null
+++ b/bookwyrm/views/admin/schedule.py
@@ -0,0 +1,31 @@
+""" Scheduled celery tasks """
+from django.contrib.auth.decorators import login_required, permission_required
+from django.shortcuts import redirect
+from django.template.response import TemplateResponse
+from django.utils.decorators import method_decorator
+from django.views import View
+from django_celery_beat.models import PeriodicTask, IntervalSchedule
+
+
+@method_decorator(login_required, name="dispatch")
+@method_decorator(
+ permission_required("bookwyrm.edit_instance_settings", raise_exception=True),
+ name="dispatch",
+)
+# pylint: disable=no-self-use
+class ScheduledTasks(View):
+ """Manage automated flagging"""
+
+ def get(self, request):
+ """view schedules"""
+ data = {}
+ data["tasks"] = PeriodicTask.objects.all()
+ data["schedules"] = IntervalSchedule.objects.all()
+ return TemplateResponse(request, "settings/schedules.html", data)
+
+ # pylint: disable=unused-argument
+ def post(self, request, task_id):
+ """un-schedule a task"""
+ task = PeriodicTask.objects.get(id=task_id)
+ task.delete()
+ return redirect("settings-schedules")
diff --git a/bookwyrm/views/books/editions.py b/bookwyrm/views/books/editions.py
index 54d1bd84c..a3167fac4 100644
--- a/bookwyrm/views/books/editions.py
+++ b/bookwyrm/views/books/editions.py
@@ -3,6 +3,7 @@ from functools import reduce
import operator
from django.contrib.auth.decorators import login_required
+from django.core.cache import cache as django_cache
from django.core.paginator import Paginator
from django.db import transaction
from django.db.models import Q
@@ -93,6 +94,7 @@ def switch_edition(request):
user=shelfbook.user,
shelf=shelfbook.shelf,
book=new_edition,
+ shelved_date=shelfbook.shelved_date,
)
shelfbook.delete()
@@ -103,4 +105,20 @@ def switch_edition(request):
readthrough.book = new_edition
readthrough.save()
+ django_cache.delete_many(
+ [
+ f"active_shelf-{request.user.id}-{book_id}"
+ for book_id in new_edition.parent_work.editions.values_list("id", flat=True)
+ ]
+ )
+
+ reviews = models.Review.objects.filter(
+ book__parent_work=new_edition.parent_work, user=request.user
+ )
+ for review in reviews.all():
+ # because ratings are a subclass of reviews,
+ # this will pick up both ratings and reviews
+ review.book = new_edition
+ review.save()
+
return redirect(f"/book/{new_edition.id}")
diff --git a/bookwyrm/views/feed.py b/bookwyrm/views/feed.py
index 17218b93e..051afb4cc 100644
--- a/bookwyrm/views/feed.py
+++ b/bookwyrm/views/feed.py
@@ -1,4 +1,5 @@
""" non-interactive pages """
+from datetime import date
from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator
from django.db.models import Q
@@ -52,6 +53,19 @@ class Feed(View):
suggestions = suggested_users.get_suggestions(request.user)
+ cutoff = (
+ date(get_annual_summary_year(), 12, 31)
+ if get_annual_summary_year()
+ else None
+ )
+ readthroughs = (
+ models.ReadThrough.objects.filter(
+ user=request.user, finish_date__lte=cutoff
+ )
+ if get_annual_summary_year()
+ else []
+ )
+
data = {
**feed_page_data(request.user),
**{
@@ -66,6 +80,7 @@ class Feed(View):
"path": f"/{tab['key']}",
"annual_summary_year": get_annual_summary_year(),
"has_tour": True,
+ "has_summary_read_throughs": len(readthroughs),
},
}
return TemplateResponse(request, "feed/feed.html", data)
@@ -185,19 +200,15 @@ class Status(View):
params=[status.id, visible_thread, visible_thread],
)
- preview = None
- if hasattr(status, "book"):
- preview = status.book.preview_image
- elif status.mention_books.exists():
- preview = status.mention_books.first().preview_image
-
data = {
**feed_page_data(request.user),
**{
"status": status,
"children": children,
"ancestors": ancestors,
- "preview": preview,
+ "title": status.page_title,
+ "description": status.page_description,
+ "page_image": status.page_image,
},
}
return TemplateResponse(request, "feed/status.html", data)
diff --git a/bookwyrm/views/search.py b/bookwyrm/views/search.py
index f8eddd1a6..13695a7d4 100644
--- a/bookwyrm/views/search.py
+++ b/bookwyrm/views/search.py
@@ -1,8 +1,10 @@
""" search views"""
+
import re
-from django.contrib.postgres.search import TrigramSimilarity
+from django.contrib.postgres.search import TrigramSimilarity, SearchRank, SearchQuery
from django.core.paginator import Paginator
+from django.db.models import F
from django.db.models.functions import Greatest
from django.http import JsonResponse
from django.template.response import TemplateResponse
@@ -39,6 +41,7 @@ class Search(View):
endpoints = {
"book": book_search,
+ "author": author_search,
"user": user_search,
"list": list_search,
}
@@ -90,6 +93,33 @@ def book_search(request):
return TemplateResponse(request, "search/book.html", data)
+def author_search(request):
+ """search for an author"""
+ query = request.GET.get("q").strip()
+ search_query = SearchQuery(query, config="simple")
+ min_confidence = 0
+
+ results = (
+ models.Author.objects.filter(search_vector=search_query)
+ .annotate(rank=SearchRank(F("search_vector"), search_query))
+ .filter(rank__gt=min_confidence)
+ .order_by("-rank")
+ )
+
+ paginated = Paginator(results, PAGE_LENGTH)
+ page = paginated.get_page(request.GET.get("page"))
+
+ data = {
+ "type": "author",
+ "query": query,
+ "results": page,
+ "page_range": paginated.get_elided_page_range(
+ page.number, on_each_side=2, on_ends=1
+ ),
+ }
+ return TemplateResponse(request, "search/author.html", data)
+
+
def user_search(request):
"""user search: search for a user"""
viewer = request.user
diff --git a/bw-dev b/bw-dev
index 5a36f78e0..e888cc6fb 100755
--- a/bw-dev
+++ b/bw-dev
@@ -156,6 +156,7 @@ case "$CMD" in
git checkout l10n_main locale/fi_FI
git checkout l10n_main locale/fr_FR
git checkout l10n_main locale/gl_ES
+ git checkout l10n_main locale/ko_KR
git checkout l10n_main locale/it_IT
git checkout l10n_main locale/lt_LT
git checkout l10n_main locale/nl_NL
diff --git a/dev-tools/Dockerfile b/dev-tools/Dockerfile
index 3b7740a78..563467f09 100644
--- a/dev-tools/Dockerfile
+++ b/dev-tools/Dockerfile
@@ -1,4 +1,4 @@
-FROM python:3.9
+FROM python:3.11-bookworm
WORKDIR /app/dev-tools
ENV PATH="/app/dev-tools/node_modules/.bin:$PATH"
diff --git a/dev-tools/requirements.txt b/dev-tools/requirements.txt
index a69d319ab..3bb771f5a 100644
--- a/dev-tools/requirements.txt
+++ b/dev-tools/requirements.txt
@@ -1 +1 @@
-black==22.12.0
+black==22.*
diff --git a/docker-compose.yml b/docker-compose.yml
index 31d214a71..89c968cef 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -89,7 +89,6 @@ services:
networks:
- main
command: celery -A celerywyrm worker -l info -Q high_priority,medium_priority,low_priority,streams,images,suggested_users,email,connectors,lists,inbox,imports,import_triggered,broadcast,misc
-
logging: *default-logging
volumes:
- .:/app
@@ -120,6 +119,7 @@ services:
env_file: .env
volumes:
- .:/app
+ - static_volume:/app/static
networks:
- main
depends_on:
@@ -132,6 +132,8 @@ services:
volumes:
- /app/dev-tools/
- .:/app
+ profiles:
+ - tools
volumes:
pgdata:
backups:
diff --git a/images/.gitkeep b/images/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/locale/ko_KR/LC_MESSAGES/django.mo b/locale/ko_KR/LC_MESSAGES/django.mo
new file mode 100644
index 000000000..463d8e4c8
Binary files /dev/null and b/locale/ko_KR/LC_MESSAGES/django.mo differ
diff --git a/locale/ko_KR/LC_MESSAGES/django.po b/locale/ko_KR/LC_MESSAGES/django.po
new file mode 100644
index 000000000..9c01bea99
--- /dev/null
+++ b/locale/ko_KR/LC_MESSAGES/django.po
@@ -0,0 +1,7177 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: bookwyrm\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-01-02 03:27+0000\n"
+"PO-Revision-Date: 2024-02-06 16:05\n"
+"Last-Translator: Mouse Reeve \n"
+"Language-Team: Korean\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Crowdin-Project: bookwyrm\n"
+"X-Crowdin-Project-ID: 479239\n"
+"X-Crowdin-Language: ko\n"
+"X-Crowdin-File: /[bookwyrm-social.bookwyrm] main/locale/en_US/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 1553\n"
+
+#: bookwyrm/forms/admin.py:42
+msgid "One Day"
+msgstr "하루"
+
+#: bookwyrm/forms/admin.py:43
+msgid "One Week"
+msgstr "한 주"
+
+#: bookwyrm/forms/admin.py:44
+msgid "One Month"
+msgstr "한 달"
+
+#: bookwyrm/forms/admin.py:45
+msgid "Does Not Expire"
+msgstr "만료기간 없음"
+
+#: bookwyrm/forms/admin.py:49
+#, python-brace-format
+msgid "{i} uses"
+msgstr ""
+
+#: bookwyrm/forms/admin.py:50
+msgid "Unlimited"
+msgstr "무제한"
+
+#: bookwyrm/forms/edit_user.py:104
+msgid "Incorrect password"
+msgstr "잘못된 암호"
+
+#: bookwyrm/forms/edit_user.py:111 bookwyrm/forms/landing.py:90
+msgid "Password does not match"
+msgstr "암호가 일치하지 않음"
+
+#: bookwyrm/forms/edit_user.py:134
+msgid "Incorrect Password"
+msgstr "잘못된 암호"
+
+#: bookwyrm/forms/forms.py:58
+msgid "Reading finish date cannot be before start date."
+msgstr ""
+
+#: bookwyrm/forms/forms.py:63
+msgid "Reading stopped date cannot be before start date."
+msgstr ""
+
+#: bookwyrm/forms/forms.py:71
+msgid "Reading stopped date cannot be in the future."
+msgstr ""
+
+#: bookwyrm/forms/forms.py:78
+msgid "Reading finished date cannot be in the future."
+msgstr ""
+
+#: bookwyrm/forms/landing.py:38
+msgid "Username or password are incorrect"
+msgstr "이용자명 또는 암호 맞지 않음"
+
+#: bookwyrm/forms/landing.py:57
+msgid "User with this username already exists"
+msgstr ""
+
+#: bookwyrm/forms/landing.py:66
+msgid "A user with this email already exists."
+msgstr "이 이메일을 가진 이용자가 이미 있습니다."
+
+#: bookwyrm/forms/landing.py:124 bookwyrm/forms/landing.py:132
+msgid "Incorrect code"
+msgstr "잘못된 코드"
+
+#: bookwyrm/forms/links.py:36
+msgid "This domain is blocked. Please contact your administrator if you think this is an error."
+msgstr "이 도메인은 차단되었습니다. 오류라고 생각되면 관리자에게 문의하세요."
+
+#: bookwyrm/forms/links.py:49
+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/lists.py:26
+msgid "List Order"
+msgstr "나열 순서"
+
+#: bookwyrm/forms/lists.py:27
+msgid "Book Title"
+msgstr "책제목"
+
+#: bookwyrm/forms/lists.py:28 bookwyrm/templates/shelf/shelf.html:158
+#: bookwyrm/templates/shelf/shelf.html:190
+#: bookwyrm/templates/snippets/create_status/review.html:32
+msgid "Rating"
+msgstr "별점"
+
+#: bookwyrm/forms/lists.py:30 bookwyrm/templates/lists/list.html:185
+msgid "Sort By"
+msgstr "정렬 기준"
+
+#: bookwyrm/forms/lists.py:34
+msgid "Ascending"
+msgstr "오름차순"
+
+#: bookwyrm/forms/lists.py:35
+msgid "Descending"
+msgstr "내림차순"
+
+#: bookwyrm/models/announcement.py:11
+msgid "Primary"
+msgstr ""
+
+#: bookwyrm/models/announcement.py:12
+msgid "Success"
+msgstr ""
+
+#: bookwyrm/models/announcement.py:13
+#: bookwyrm/templates/settings/invites/manage_invites.html:47
+msgid "Link"
+msgstr "링크"
+
+#: bookwyrm/models/announcement.py:14
+msgid "Warning"
+msgstr "경고"
+
+#: bookwyrm/models/announcement.py:15
+msgid "Danger"
+msgstr "위험"
+
+#: bookwyrm/models/antispam.py:113 bookwyrm/models/antispam.py:147
+msgid "Automatically generated report"
+msgstr "자동 생성된 보고서"
+
+#: bookwyrm/models/base_model.py:18 bookwyrm/models/import_job.py:48
+#: bookwyrm/models/job.py:18 bookwyrm/models/link.py:72
+#: bookwyrm/templates/import/import_status.html:214
+#: bookwyrm/templates/settings/link_domains/link_domains.html:19
+msgid "Pending"
+msgstr "계류"
+
+#: bookwyrm/models/base_model.py:19
+msgid "Self deletion"
+msgstr "스스로 삭제"
+
+#: bookwyrm/models/base_model.py:20
+msgid "Self deactivation"
+msgstr "스스로 비활성"
+
+#: bookwyrm/models/base_model.py:21
+msgid "Moderator suspension"
+msgstr "중재재가 정지"
+
+#: bookwyrm/models/base_model.py:22
+msgid "Moderator deletion"
+msgstr "중재자가 삭제"
+
+#: bookwyrm/models/base_model.py:23
+msgid "Domain block"
+msgstr "도메인 차단"
+
+#: bookwyrm/models/book.py:282
+msgid "Audiobook"
+msgstr "오디오북"
+
+#: bookwyrm/models/book.py:283
+msgid "eBook"
+msgstr "전자책"
+
+#: bookwyrm/models/book.py:284
+msgid "Graphic novel"
+msgstr "그래픽 노블"
+
+#: bookwyrm/models/book.py:285
+msgid "Hardcover"
+msgstr "양장제본"
+
+#: bookwyrm/models/book.py:286
+msgid "Paperback"
+msgstr "무선제본"
+
+#: bookwyrm/models/federated_server.py:11
+#: bookwyrm/templates/settings/federation/edit_instance.html:55
+#: bookwyrm/templates/settings/federation/instance_list.html:22
+msgid "Federated"
+msgstr "연합"
+
+#: bookwyrm/models/federated_server.py:12 bookwyrm/models/link.py:71
+#: bookwyrm/templates/settings/federation/edit_instance.html:56
+#: bookwyrm/templates/settings/federation/instance.html:10
+#: bookwyrm/templates/settings/federation/instance_list.html:26
+#: bookwyrm/templates/settings/link_domains/link_domains.html:27
+msgid "Blocked"
+msgstr "차단"
+
+#: bookwyrm/models/fields.py:35
+#, python-format
+msgid "%(value)s is not a valid remote_id"
+msgstr ""
+
+#: bookwyrm/models/fields.py:44 bookwyrm/models/fields.py:53
+#, python-format
+msgid "%(value)s is not a valid username"
+msgstr ""
+
+#: bookwyrm/models/fields.py:198 bookwyrm/templates/layout.html:129
+#: bookwyrm/templates/ostatus/error.html:29
+msgid "username"
+msgstr "이용자명"
+
+#: bookwyrm/models/fields.py:203
+msgid "A user with that username already exists."
+msgstr ""
+
+#: bookwyrm/models/fields.py:222
+#: bookwyrm/templates/snippets/privacy-icons.html:3
+#: bookwyrm/templates/snippets/privacy-icons.html:4
+#: bookwyrm/templates/snippets/privacy_select.html:11
+#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11
+msgid "Public"
+msgstr "공개"
+
+#: bookwyrm/models/fields.py:223
+#: bookwyrm/templates/snippets/privacy-icons.html:7
+#: bookwyrm/templates/snippets/privacy-icons.html:8
+#: bookwyrm/templates/snippets/privacy_select.html:14
+#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14
+msgid "Unlisted"
+msgstr "미등재"
+
+#: bookwyrm/models/fields.py:224
+#: bookwyrm/templates/snippets/privacy_select.html:17
+#: bookwyrm/templates/user/relationships/followers.html:6
+#: bookwyrm/templates/user/relationships/followers.html:11
+#: bookwyrm/templates/user/relationships/followers.html:21
+#: bookwyrm/templates/user/relationships/layout.html:11
+msgid "Followers"
+msgstr "팔로워"
+
+#: bookwyrm/models/fields.py:225
+#: bookwyrm/templates/snippets/create_status/post_options_block.html:6
+#: bookwyrm/templates/snippets/privacy-icons.html:15
+#: bookwyrm/templates/snippets/privacy-icons.html:16
+#: bookwyrm/templates/snippets/privacy_select.html:20
+#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17
+msgid "Private"
+msgstr "비공개"
+
+#: bookwyrm/models/import_job.py:49 bookwyrm/models/job.py:19
+#: bookwyrm/templates/import/import.html:173
+#: bookwyrm/templates/import/import_user.html:211
+#: bookwyrm/templates/preferences/export-user.html:112
+#: bookwyrm/templates/settings/imports/imports.html:131
+#: bookwyrm/templates/settings/imports/imports.html:221
+#: bookwyrm/templates/snippets/user_active_tag.html:8
+msgid "Active"
+msgstr "활성화"
+
+#: bookwyrm/models/import_job.py:50 bookwyrm/models/job.py:20
+#: bookwyrm/templates/import/import.html:171
+#: bookwyrm/templates/import/import_user.html:209
+#: bookwyrm/templates/preferences/export-user.html:110
+msgid "Complete"
+msgstr "완료"
+
+#: bookwyrm/models/import_job.py:51 bookwyrm/models/job.py:21
+msgid "Stopped"
+msgstr "멈춤"
+
+#: bookwyrm/models/import_job.py:84 bookwyrm/models/import_job.py:92
+msgid "Import stopped"
+msgstr "가져오기 멈춤"
+
+#: bookwyrm/models/import_job.py:356 bookwyrm/models/import_job.py:381
+msgid "Error loading book"
+msgstr "책 불러오는 중 오류"
+
+#: bookwyrm/models/import_job.py:365
+msgid "Could not find a match for book"
+msgstr ""
+
+#: bookwyrm/models/job.py:22
+msgid "Failed"
+msgstr ""
+
+#: bookwyrm/models/link.py:51
+msgid "Free"
+msgstr "비매품"
+
+#: bookwyrm/models/link.py:52
+msgid "Purchasable"
+msgstr "구매 가능"
+
+#: bookwyrm/models/link.py:53
+msgid "Available for loan"
+msgstr "대여할 수 있음"
+
+#: bookwyrm/models/link.py:70
+#: bookwyrm/templates/settings/link_domains/link_domains.html:23
+msgid "Approved"
+msgstr "승인"
+
+#: bookwyrm/models/report.py:84
+#: bookwyrm/templates/settings/reports/report.html:115
+#: bookwyrm/templates/snippets/create_status.html:26
+msgid "Comment"
+msgstr "코멘트"
+
+#: bookwyrm/models/report.py:85
+msgid "Resolved report"
+msgstr "해결된 제보"
+
+#: bookwyrm/models/report.py:86
+msgid "Re-opened report"
+msgstr "재심사 중인 제보"
+
+#: bookwyrm/models/report.py:87
+msgid "Messaged reporter"
+msgstr ""
+
+#: bookwyrm/models/report.py:88
+msgid "Messaged reported user"
+msgstr ""
+
+#: bookwyrm/models/report.py:89
+msgid "Suspended user"
+msgstr "정지된 이용자"
+
+#: bookwyrm/models/report.py:90
+msgid "Un-suspended user"
+msgstr "정지 헤제된 이용자"
+
+#: bookwyrm/models/report.py:91
+msgid "Changed user permission level"
+msgstr ""
+
+#: bookwyrm/models/report.py:92
+msgid "Deleted user account"
+msgstr "삭제한 이용자 계정"
+
+#: bookwyrm/models/report.py:93
+msgid "Blocked domain"
+msgstr "차단한 도메인"
+
+#: bookwyrm/models/report.py:94
+msgid "Approved domain"
+msgstr "허용한 도메인"
+
+#: bookwyrm/models/report.py:95
+msgid "Deleted item"
+msgstr "삭제한 항목"
+
+#: bookwyrm/models/user.py:33 bookwyrm/templates/book/book.html:307
+msgid "Reviews"
+msgstr "서평"
+
+#: bookwyrm/models/user.py:34
+msgid "Comments"
+msgstr "코멘트"
+
+#: bookwyrm/models/user.py:35 bookwyrm/templates/import/import_user.html:139
+msgid "Quotations"
+msgstr "인용구"
+
+#: bookwyrm/models/user.py:36
+msgid "Everything else"
+msgstr "그 밖의 것들"
+
+#: bookwyrm/settings.py:232
+msgid "Home Timeline"
+msgstr "홈 타임라인"
+
+#: bookwyrm/settings.py:232
+msgid "Home"
+msgstr "홈"
+
+#: bookwyrm/settings.py:233
+msgid "Books Timeline"
+msgstr "도서 타임라임"
+
+#: bookwyrm/settings.py:233
+#: bookwyrm/templates/guided_tour/user_profile.html:101
+#: bookwyrm/templates/search/layout.html:22
+#: bookwyrm/templates/search/layout.html:43
+#: bookwyrm/templates/user/layout.html:107
+msgid "Books"
+msgstr "도서"
+
+#: bookwyrm/settings.py:313
+msgid "English"
+msgstr "English"
+
+#: bookwyrm/settings.py:314
+msgid "Català (Catalan)"
+msgstr "Català (Catalan)"
+
+#: bookwyrm/settings.py:315
+msgid "Deutsch (German)"
+msgstr "Deutsch (German)"
+
+#: bookwyrm/settings.py:316
+msgid "Esperanto (Esperanto)"
+msgstr "Esperanto (Esperanto)"
+
+#: bookwyrm/settings.py:317
+msgid "Español (Spanish)"
+msgstr "Español (Spanish)"
+
+#: bookwyrm/settings.py:318
+msgid "Euskara (Basque)"
+msgstr "Euskara (Basque)"
+
+#: bookwyrm/settings.py:319
+msgid "Galego (Galician)"
+msgstr "Galego (Galician)"
+
+#: bookwyrm/settings.py:320
+msgid "Italiano (Italian)"
+msgstr "Italiano (Italian)"
+
+#: bookwyrm/settings.py:321
+msgid "Suomi (Finnish)"
+msgstr "Suomi (Finnish)"
+
+#: bookwyrm/settings.py:322
+msgid "Français (French)"
+msgstr "Français (French)"
+
+#: bookwyrm/settings.py:323
+msgid "Lietuvių (Lithuanian)"
+msgstr "Lietuvių (Lithuanian)"
+
+#: bookwyrm/settings.py:324
+msgid "Nederlands (Dutch)"
+msgstr "네덜란드 (Dutch)"
+
+#: bookwyrm/settings.py:325
+msgid "Norsk (Norwegian)"
+msgstr "Norsk (Norwegian)"
+
+#: bookwyrm/settings.py:326
+msgid "Polski (Polish)"
+msgstr "Polski (Polish)"
+
+#: bookwyrm/settings.py:327
+msgid "Português do Brasil (Brazilian Portuguese)"
+msgstr "Português do Brasil (Brazilian Portuguese)"
+
+#: bookwyrm/settings.py:328
+msgid "Português Europeu (European Portuguese)"
+msgstr "Português Europeu (European Portuguese)"
+
+#: bookwyrm/settings.py:329
+msgid "Română (Romanian)"
+msgstr "Română (Romanian)"
+
+#: bookwyrm/settings.py:330
+msgid "Svenska (Swedish)"
+msgstr "Svenska (Swedish)"
+
+#: bookwyrm/settings.py:331
+msgid "Українська (Ukrainian)"
+msgstr "Українська (우크라이나)"
+
+#: bookwyrm/settings.py:332
+msgid "简体中文 (Simplified Chinese)"
+msgstr "简体中文 (Simplified Chinese)"
+
+#: bookwyrm/settings.py:333
+msgid "繁體中文 (Traditional Chinese)"
+msgstr "繁體中文 (Traditional Chinese)"
+
+#: bookwyrm/templates/403.html:5
+msgid "Oh no!"
+msgstr "으악, 안돼!"
+
+#: bookwyrm/templates/403.html:9 bookwyrm/templates/landing/invite.html:21
+msgid "Permission Denied"
+msgstr "권한 없음"
+
+#: bookwyrm/templates/403.html:11
+#, python-format
+msgid "You do not have permission to view this page or perform this action. Your user permission level is %(level)s
."
+msgstr ""
+
+#: bookwyrm/templates/403.html:15
+msgid "If you think you should have access, please speak to your BookWyrm server administrator."
+msgstr ""
+
+#: bookwyrm/templates/404.html:4 bookwyrm/templates/404.html:8
+msgid "Not Found"
+msgstr "찾을 수 없음"
+
+#: bookwyrm/templates/404.html:9
+msgid "The page you requested doesn't seem to exist!"
+msgstr ""
+
+#: bookwyrm/templates/413.html:4 bookwyrm/templates/413.html:8
+msgid "File too large"
+msgstr "너무 큰 파일"
+
+#: bookwyrm/templates/413.html:9
+msgid "The file you are uploading is too large."
+msgstr ""
+
+#: bookwyrm/templates/413.html:11
+msgid "\n"
+" You you can try using a smaller file, or ask your BookWyrm server administrator to increase the DATA_UPLOAD_MAX_MEMORY_SIZE
setting.\n"
+" "
+msgstr ""
+
+#: bookwyrm/templates/500.html:4
+msgid "Oops!"
+msgstr "이런!"
+
+#: bookwyrm/templates/500.html:8
+msgid "Server Error"
+msgstr "서버 오류"
+
+#: bookwyrm/templates/500.html:9
+msgid "Something went wrong! Sorry about that."
+msgstr ""
+
+#: bookwyrm/templates/about/about.html:9
+#: bookwyrm/templates/about/layout.html:35
+msgid "About"
+msgstr "정보"
+
+#: bookwyrm/templates/about/about.html:21
+#: bookwyrm/templates/get_started/layout.html:22
+#, python-format
+msgid "Welcome to %(site_name)s!"
+msgstr "%(site_name)s에 어서오세요!"
+
+#: bookwyrm/templates/about/about.html:25
+#, python-format
+msgid "%(site_name)s is part of BookWyrm , a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network , this community is unique."
+msgstr ""
+
+#: bookwyrm/templates/about/about.html:45
+#, python-format
+msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5."
+msgstr ""
+
+#: bookwyrm/templates/about/about.html:64
+#, python-format
+msgid "More %(site_name)s users want to read %(title)s than any other book."
+msgstr ""
+
+#: bookwyrm/templates/about/about.html:83
+#, python-format
+msgid "%(title)s has the most divisive ratings of any book on %(site_name)s."
+msgstr ""
+
+#: bookwyrm/templates/about/about.html:94
+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, reach out and make yourself heard."
+msgstr ""
+
+#: bookwyrm/templates/about/about.html:105
+msgid "Meet your admins"
+msgstr "여기 관리자 만나기"
+
+#: bookwyrm/templates/about/about.html:108
+#, python-format
+msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct , and respond when users report spam and bad behavior."
+msgstr ""
+
+#: bookwyrm/templates/about/about.html:122
+msgid "Moderator"
+msgstr "중재자"
+
+#: bookwyrm/templates/about/about.html:124 bookwyrm/templates/user_menu.html:62
+msgid "Admin"
+msgstr "관리"
+
+#: bookwyrm/templates/about/about.html:140
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:28
+#: bookwyrm/templates/snippets/status/status_options.html:35
+#: bookwyrm/templates/snippets/user_options.html:14
+msgid "Send direct message"
+msgstr "디렉트 메시지 보내기"
+
+#: bookwyrm/templates/about/conduct.html:4
+#: bookwyrm/templates/about/conduct.html:9
+#: bookwyrm/templates/about/layout.html:41
+#: bookwyrm/templates/snippets/footer.html:27
+msgid "Code of Conduct"
+msgstr "행동 지침"
+
+#: bookwyrm/templates/about/impressum.html:4
+#: bookwyrm/templates/about/impressum.html:9
+#: bookwyrm/templates/about/layout.html:54
+#: bookwyrm/templates/snippets/footer.html:34
+msgid "Impressum"
+msgstr "법률 고지"
+
+#: bookwyrm/templates/about/layout.html:11
+msgid "Active users:"
+msgstr "활성 이용자"
+
+#: bookwyrm/templates/about/layout.html:15
+msgid "Statuses posted:"
+msgstr "게시한 기록:"
+
+#: bookwyrm/templates/about/layout.html:19
+#: bookwyrm/templates/setup/config.html:74
+msgid "Software version:"
+msgstr "소프트웨어 버전:"
+
+#: bookwyrm/templates/about/layout.html:30
+#: bookwyrm/templates/embed-layout.html:34
+#: bookwyrm/templates/snippets/footer.html:8
+#, python-format
+msgid "About %(site_name)s"
+msgstr "%(site_name)s에 관하여"
+
+#: bookwyrm/templates/about/layout.html:47
+#: bookwyrm/templates/about/privacy.html:4
+#: bookwyrm/templates/about/privacy.html:9
+#: bookwyrm/templates/snippets/footer.html:30
+msgid "Privacy Policy"
+msgstr "개인정보처리방침"
+
+#: bookwyrm/templates/annual_summary/layout.html:7
+#: bookwyrm/templates/feed/summary_card.html:8
+#, python-format
+msgid "%(year)s in the books"
+msgstr "%(year)s년의 책들"
+
+#: bookwyrm/templates/annual_summary/layout.html:43
+#, python-format
+msgid "%(year)s in the books "
+msgstr "%(year)s년의 책들 "
+
+#: bookwyrm/templates/annual_summary/layout.html:47
+#, python-format
+msgid "%(display_name)s’s year of reading"
+msgstr "%(display_name)s 의 올 해 독서"
+
+#: bookwyrm/templates/annual_summary/layout.html:53
+msgid "Share this page"
+msgstr "이 페이지 공유"
+
+#: bookwyrm/templates/annual_summary/layout.html:67
+msgid "Copy address"
+msgstr "주소 복사"
+
+#: bookwyrm/templates/annual_summary/layout.html:68
+#: bookwyrm/templates/lists/list.html:277
+msgid "Copied!"
+msgstr "복사함!"
+
+#: bookwyrm/templates/annual_summary/layout.html:77
+msgid "Sharing status: public with key "
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:78
+msgid "The page can be seen by anyone with the complete address."
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:83
+msgid "Make page private"
+msgstr "페이지 비공개하기"
+
+#: bookwyrm/templates/annual_summary/layout.html:89
+msgid "Sharing status: private "
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:90
+msgid "The page is private, only you can see it."
+msgstr "이 페이지는 비공개이므로 자신만 볼 수 있어요."
+
+#: bookwyrm/templates/annual_summary/layout.html:95
+msgid "Make page public"
+msgstr "페이지 공개하기"
+
+#: bookwyrm/templates/annual_summary/layout.html:99
+msgid "When you make your page private, the old key won’t give access to the page anymore. A new key will be created if the page is once again made public."
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:112
+#, python-format
+msgid "Sadly %(display_name)s didn’t finish any books in %(year)s"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:118
+#, python-format
+msgid "In %(year)s, %(display_name)s read %(books_total)s book for a total of %(pages_total)s pages!"
+msgid_plural "In %(year)s, %(display_name)s read %(books_total)s books for a total of %(pages_total)s pages!"
+msgstr[0] "%(year)s년 한 해 동안, %(display_name)s 님은 %(books_total)s권을 읽었고 이는 총 %(pages_total)s쪽에 달합니다!"
+
+#: bookwyrm/templates/annual_summary/layout.html:124
+msgid "That’s great!"
+msgstr "대단하네요!"
+
+#: bookwyrm/templates/annual_summary/layout.html:128
+#, python-format
+msgid "That makes an average of %(pages)s pages per book."
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:134
+#, python-format
+msgid "(No page data was available for %(no_page_number)s book)"
+msgid_plural "(No page data was available for %(no_page_number)s books)"
+msgstr[0] "(%(no_page_number)s권의 책은 쪽 자료가 없음)"
+
+#: bookwyrm/templates/annual_summary/layout.html:150
+msgid "Their shortest read this year…"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:157
+#: bookwyrm/templates/annual_summary/layout.html:178
+#: bookwyrm/templates/annual_summary/layout.html:247
+#: bookwyrm/templates/book/book.html:65
+#: bookwyrm/templates/discover/large-book.html:22
+#: bookwyrm/templates/landing/large-book.html:26
+#: bookwyrm/templates/landing/small-book.html:18
+msgid "by"
+msgstr "기준"
+
+#: bookwyrm/templates/annual_summary/layout.html:163
+#: bookwyrm/templates/annual_summary/layout.html:184
+#, python-format
+msgid "%(pages)s pages"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:171
+msgid "…and the longest"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:202
+#, python-format
+msgid "%(display_name)s set a goal of reading %(goal)s book in %(year)s, and achieved %(goal_percent)s%% of that goal"
+msgid_plural "%(display_name)s set a goal of reading %(goal)s books in %(year)s, and achieved %(goal_percent)s%% of that goal"
+msgstr[0] ""
+
+#: bookwyrm/templates/annual_summary/layout.html:211
+msgid "Way to go!"
+msgstr "잘하고 있습니다!"
+
+#: bookwyrm/templates/annual_summary/layout.html:226
+#, python-format
+msgid "%(display_name)s left %(ratings_total)s rating, their average rating is %(rating_average)s"
+msgid_plural "%(display_name)s left %(ratings_total)s ratings, their average rating is %(rating_average)s"
+msgstr[0] "%(display_name)s 님은 %(ratings_total)s권에 별점을 매겼고, 평균 별점은 %(rating_average)s점 입니다."
+
+#: bookwyrm/templates/annual_summary/layout.html:240
+msgid "Their best rated review"
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:253
+#, python-format
+msgid "Their rating: %(rating)s "
+msgstr ""
+
+#: bookwyrm/templates/annual_summary/layout.html:270
+#, python-format
+msgid "All the books %(display_name)s read in %(year)s"
+msgstr "%(year)s년 한 해 동안 %(display_name)s 님이 읽은 책들"
+
+#: bookwyrm/templates/author/author.html:19
+#: bookwyrm/templates/author/author.html:20
+msgid "Edit Author"
+msgstr "저자 수정"
+
+#: bookwyrm/templates/author/author.html:36
+msgid "Author details"
+msgstr "저자 상세"
+
+#: bookwyrm/templates/author/author.html:40
+#: bookwyrm/templates/author/edit_author.html:42
+msgid "Aliases:"
+msgstr "별칭:"
+
+#: bookwyrm/templates/author/author.html:49
+msgid "Born:"
+msgstr "출생:"
+
+#: bookwyrm/templates/author/author.html:56
+msgid "Died:"
+msgstr "사망:"
+
+#: bookwyrm/templates/author/author.html:66
+msgid "External links"
+msgstr "외부 링크"
+
+#: bookwyrm/templates/author/author.html:71
+msgid "Wikipedia"
+msgstr "위키백과"
+
+#: bookwyrm/templates/author/author.html:79
+msgid "Website"
+msgstr "웹사이트"
+
+#: bookwyrm/templates/author/author.html:87
+msgid "View ISNI record"
+msgstr "ISNI 레코드 보기"
+
+#: bookwyrm/templates/author/author.html:95
+#: bookwyrm/templates/book/book.html:175
+msgid "View on ISFDB"
+msgstr "ISFDB에서 보기"
+
+#: bookwyrm/templates/author/author.html:100
+#: bookwyrm/templates/author/sync_modal.html:5
+#: bookwyrm/templates/book/book.html:142
+#: bookwyrm/templates/book/sync_modal.html:5
+msgid "Load data"
+msgstr "데이터 불러오기"
+
+#: bookwyrm/templates/author/author.html:104
+#: bookwyrm/templates/book/book.html:146
+msgid "View on OpenLibrary"
+msgstr "OpenLibrary 자료 보기"
+
+#: bookwyrm/templates/author/author.html:119
+#: bookwyrm/templates/book/book.html:160
+msgid "View on Inventaire"
+msgstr "Inventaire 자료 보기"
+
+#: bookwyrm/templates/author/author.html:135
+msgid "View on LibraryThing"
+msgstr "LibraryThing 자료 보기"
+
+#: bookwyrm/templates/author/author.html:143
+msgid "View on Goodreads"
+msgstr "Goodreads 자료 보기"
+
+#: bookwyrm/templates/author/author.html:158
+#, python-format
+msgid "Books by %(name)s"
+msgstr ""
+
+#: bookwyrm/templates/author/edit_author.html:5
+msgid "Edit Author:"
+msgstr "저자 수정:"
+
+#: bookwyrm/templates/author/edit_author.html:13
+#: bookwyrm/templates/book/edit/edit_book.html:25
+msgid "Added:"
+msgstr "추가일:"
+
+#: bookwyrm/templates/author/edit_author.html:14
+#: bookwyrm/templates/book/edit/edit_book.html:28
+msgid "Updated:"
+msgstr "갱신일:"
+
+#: bookwyrm/templates/author/edit_author.html:16
+#: bookwyrm/templates/book/edit/edit_book.html:32
+msgid "Last edited by:"
+msgstr "최근 편집자:"
+
+#: bookwyrm/templates/author/edit_author.html:33
+#: bookwyrm/templates/book/edit/edit_book_form.html:21
+msgid "Metadata"
+msgstr "메타데이터"
+
+#: bookwyrm/templates/author/edit_author.html:35
+#: bookwyrm/templates/lists/form.html:9
+#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:14
+#: bookwyrm/templates/shelf/form.html:9
+msgid "Name:"
+msgstr "이름:"
+
+#: bookwyrm/templates/author/edit_author.html:44
+#: bookwyrm/templates/book/edit/edit_book_form.html:89
+#: bookwyrm/templates/book/edit/edit_book_form.html:159
+msgid "Separate multiple values with commas."
+msgstr "쉼표로 값을 구분합니다."
+
+#: bookwyrm/templates/author/edit_author.html:50
+msgid "Bio:"
+msgstr "저자소개:"
+
+#: bookwyrm/templates/author/edit_author.html:56
+msgid "Wikipedia link:"
+msgstr "위키피디아 링크:"
+
+#: bookwyrm/templates/author/edit_author.html:60
+msgid "Website:"
+msgstr "웹사이트:"
+
+#: bookwyrm/templates/author/edit_author.html:65
+msgid "Birth date:"
+msgstr "생일:"
+
+#: bookwyrm/templates/author/edit_author.html:72
+msgid "Death date:"
+msgstr "작고일:"
+
+#: bookwyrm/templates/author/edit_author.html:79
+msgid "Author Identifiers"
+msgstr "저자 식별자"
+
+#: bookwyrm/templates/author/edit_author.html:81
+msgid "Openlibrary key:"
+msgstr "Openlibrary key:"
+
+#: bookwyrm/templates/author/edit_author.html:88
+#: bookwyrm/templates/book/edit/edit_book_form.html:334
+msgid "Inventaire ID:"
+msgstr "Inventaire ID:"
+
+#: bookwyrm/templates/author/edit_author.html:95
+msgid "Librarything key:"
+msgstr "Librarything key:"
+
+#: bookwyrm/templates/author/edit_author.html:102
+#: bookwyrm/templates/book/edit/edit_book_form.html:343
+msgid "Goodreads key:"
+msgstr "Goodreads key:"
+
+#: bookwyrm/templates/author/edit_author.html:109
+msgid "ISFDB:"
+msgstr "ISFDB:"
+
+#: bookwyrm/templates/author/edit_author.html:116
+msgid "ISNI:"
+msgstr "ISNI:"
+
+#: bookwyrm/templates/author/edit_author.html:126
+#: bookwyrm/templates/book/book.html:220
+#: bookwyrm/templates/book/edit/edit_book.html:150
+#: bookwyrm/templates/book/file_links/add_link_modal.html:60
+#: bookwyrm/templates/book/file_links/edit_links.html:86
+#: bookwyrm/templates/groups/form.html:32
+#: bookwyrm/templates/lists/bookmark_button.html:15
+#: bookwyrm/templates/lists/edit_item_form.html:15
+#: bookwyrm/templates/lists/form.html:130
+#: bookwyrm/templates/preferences/edit_user.html:140
+#: bookwyrm/templates/readthrough/readthrough_modal.html:81
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:120
+#: bookwyrm/templates/settings/federation/edit_instance.html:98
+#: bookwyrm/templates/settings/federation/instance.html:105
+#: bookwyrm/templates/settings/registration.html:96
+#: bookwyrm/templates/settings/registration_limited.html:76
+#: bookwyrm/templates/settings/site.html:144
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:89
+#: bookwyrm/templates/shelf/form.html:25
+#: bookwyrm/templates/snippets/reading_modals/layout.html:18
+msgid "Save"
+msgstr "저장"
+
+#: bookwyrm/templates/author/edit_author.html:127
+#: bookwyrm/templates/author/sync_modal.html:23
+#: bookwyrm/templates/book/book.html:221
+#: bookwyrm/templates/book/cover_add_modal.html:33
+#: bookwyrm/templates/book/edit/edit_book.html:152
+#: bookwyrm/templates/book/edit/edit_book.html:155
+#: bookwyrm/templates/book/file_links/add_link_modal.html:59
+#: bookwyrm/templates/book/file_links/verification_modal.html:25
+#: bookwyrm/templates/book/sync_modal.html:23
+#: bookwyrm/templates/groups/delete_group_modal.html:15
+#: bookwyrm/templates/lists/add_item_modal.html:36
+#: bookwyrm/templates/lists/delete_list_modal.html:16
+#: bookwyrm/templates/preferences/disable-2fa.html:19
+#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:27
+#: bookwyrm/templates/readthrough/readthrough_modal.html:80
+#: bookwyrm/templates/search/barcode_modal.html:43
+#: bookwyrm/templates/settings/federation/instance.html:106
+#: bookwyrm/templates/settings/imports/complete_import_modal.html:16
+#: bookwyrm/templates/settings/imports/complete_user_import_modal.html:16
+#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22
+#: bookwyrm/templates/snippets/report_modal.html:52
+msgid "Cancel"
+msgstr "취소"
+
+#: bookwyrm/templates/author/sync_modal.html:15
+#, python-format
+msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten."
+msgstr ""
+
+#: bookwyrm/templates/author/sync_modal.html:24
+#: bookwyrm/templates/book/edit/edit_book.html:137
+#: bookwyrm/templates/book/sync_modal.html:24
+#: bookwyrm/templates/groups/members.html:29
+#: bookwyrm/templates/landing/password_reset.html:52
+#: bookwyrm/templates/preferences/2fa.html:77
+#: bookwyrm/templates/settings/imports/complete_import_modal.html:19
+#: bookwyrm/templates/settings/imports/complete_user_import_modal.html:19
+#: bookwyrm/templates/snippets/remove_from_group_button.html:17
+msgid "Confirm"
+msgstr "확정"
+
+#: bookwyrm/templates/book/book.html:20
+msgid "Unable to connect to remote source."
+msgstr ""
+
+#: bookwyrm/templates/book/book.html:73 bookwyrm/templates/book/book.html:74
+msgid "Edit Book"
+msgstr "책 수정"
+
+#: bookwyrm/templates/book/book.html:99 bookwyrm/templates/book/book.html:102
+msgid "Click to add cover"
+msgstr "클리하여 표지 추가"
+
+#: bookwyrm/templates/book/book.html:108
+msgid "Failed to load cover"
+msgstr "표지 불러오기 실패"
+
+#: bookwyrm/templates/book/book.html:119
+msgid "Click to enlarge"
+msgstr "확대하려면 클릭"
+
+#: bookwyrm/templates/book/book.html:196
+#, python-format
+msgid "(%(review_count)s review)"
+msgid_plural "(%(review_count)s reviews)"
+msgstr[0] ""
+
+#: bookwyrm/templates/book/book.html:209
+msgid "Add Description"
+msgstr "설명 추가"
+
+#: bookwyrm/templates/book/book.html:216
+#: bookwyrm/templates/book/edit/edit_book_form.html:53
+#: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17
+msgid "Description:"
+msgstr "설명:"
+
+#: bookwyrm/templates/book/book.html:232
+#, python-format
+msgid "%(count)s edition"
+msgid_plural "%(count)s editions"
+msgstr[0] "%(count)s개의 판"
+
+#: bookwyrm/templates/book/book.html:246
+msgid "You have shelved this edition in:"
+msgstr ""
+
+#: bookwyrm/templates/book/book.html:261
+#, python-format
+msgid "A different edition of this book is on your %(shelf_name)s shelf."
+msgstr ""
+
+#: bookwyrm/templates/book/book.html:272
+msgid "Your reading activity"
+msgstr "내 읽기 활동"
+
+#: bookwyrm/templates/book/book.html:278
+#: bookwyrm/templates/guided_tour/book.html:56
+msgid "Add read dates"
+msgstr "읽은 날짜 추가"
+
+#: bookwyrm/templates/book/book.html:286
+msgid "You don't have any reading activity for this book."
+msgstr ""
+
+#: bookwyrm/templates/book/book.html:312
+msgid "Your reviews"
+msgstr "내 서평"
+
+#: bookwyrm/templates/book/book.html:318
+msgid "Your comments"
+msgstr "내 코멘트"
+
+#: bookwyrm/templates/book/book.html:324
+msgid "Your quotes"
+msgstr "내 인용"
+
+#: bookwyrm/templates/book/book.html:360
+msgid "Subjects"
+msgstr "화제"
+
+#: bookwyrm/templates/book/book.html:372
+msgid "Places"
+msgstr "장소"
+
+#: bookwyrm/templates/book/book.html:383
+#: bookwyrm/templates/groups/group.html:19
+#: bookwyrm/templates/guided_tour/lists.html:14
+#: bookwyrm/templates/guided_tour/user_books.html:102
+#: bookwyrm/templates/guided_tour/user_profile.html:78
+#: bookwyrm/templates/layout.html:88 bookwyrm/templates/lists/curate.html:8
+#: bookwyrm/templates/lists/list.html:12 bookwyrm/templates/lists/lists.html:5
+#: bookwyrm/templates/lists/lists.html:12
+#: bookwyrm/templates/search/layout.html:26
+#: bookwyrm/templates/search/layout.html:51
+#: bookwyrm/templates/settings/celery.html:77
+#: bookwyrm/templates/user/layout.html:101 bookwyrm/templates/user/lists.html:6
+msgid "Lists"
+msgstr "목록"
+
+#: bookwyrm/templates/book/book.html:395
+msgid "Add to list"
+msgstr "목록에 추가"
+
+#: bookwyrm/templates/book/book.html:405
+#: bookwyrm/templates/book/cover_add_modal.html:32
+#: bookwyrm/templates/lists/add_item_modal.html:39
+#: bookwyrm/templates/lists/list.html:255
+#: bookwyrm/templates/settings/email_blocklist/domain_form.html:24
+#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:32
+msgid "Add"
+msgstr "추가"
+
+#: bookwyrm/templates/book/book_identifiers.html:8
+msgid "ISBN:"
+msgstr "ISBN:"
+
+#: bookwyrm/templates/book/book_identifiers.html:12
+#: bookwyrm/templates/book/book_identifiers.html:13
+msgid "Copy ISBN"
+msgstr "ISBN 복사"
+
+#: bookwyrm/templates/book/book_identifiers.html:16
+msgid "Copied ISBN!"
+msgstr "ISBN 복사!"
+
+#: bookwyrm/templates/book/book_identifiers.html:23
+#: bookwyrm/templates/book/edit/edit_book_form.html:352
+msgid "OCLC Number:"
+msgstr "OCLC Number:"
+
+#: bookwyrm/templates/book/book_identifiers.html:30
+#: bookwyrm/templates/book/edit/edit_book_form.html:361
+msgid "ASIN:"
+msgstr "ASIN:"
+
+#: bookwyrm/templates/book/book_identifiers.html:37
+#: bookwyrm/templates/book/edit/edit_book_form.html:370
+msgid "Audible ASIN:"
+msgstr "Audible ASIN:"
+
+#: bookwyrm/templates/book/book_identifiers.html:44
+#: bookwyrm/templates/book/edit/edit_book_form.html:379
+msgid "ISFDB ID:"
+msgstr "ISFDB ID:"
+
+#: bookwyrm/templates/book/book_identifiers.html:51
+msgid "Goodreads:"
+msgstr "Goodreads:"
+
+#: bookwyrm/templates/book/cover_add_modal.html:5
+msgid "Add cover"
+msgstr "표지 추가"
+
+#: bookwyrm/templates/book/cover_add_modal.html:17
+#: bookwyrm/templates/book/edit/edit_book_form.html:244
+msgid "Upload cover:"
+msgstr "표지 올려두기"
+
+#: bookwyrm/templates/book/cover_add_modal.html:23
+#: bookwyrm/templates/book/edit/edit_book_form.html:250
+msgid "Load cover from URL:"
+msgstr "URL에서 책표지 불러오기"
+
+#: bookwyrm/templates/book/cover_show_modal.html:6
+msgid "Book cover preview"
+msgstr "책 표지 미리보기"
+
+#: bookwyrm/templates/book/cover_show_modal.html:11
+#: bookwyrm/templates/components/inline_form.html:8
+#: bookwyrm/templates/components/modal.html:13
+#: bookwyrm/templates/components/modal.html:30
+#: bookwyrm/templates/feed/suggested_books.html:67
+#: bookwyrm/templates/get_started/layout.html:27
+#: bookwyrm/templates/get_started/layout.html:60
+msgid "Close"
+msgstr "닫기"
+
+#: bookwyrm/templates/book/edit/edit_book.html:8
+#: bookwyrm/templates/book/edit/edit_book.html:18
+#, python-format
+msgid "Edit \"%(book_title)s\""
+msgstr "\"%(book_title)s\" 정보 수정"
+
+#: bookwyrm/templates/book/edit/edit_book.html:10
+#: bookwyrm/templates/book/edit/edit_book.html:20
+msgid "Add Book"
+msgstr "책 추가"
+
+#: bookwyrm/templates/book/edit/edit_book.html:43
+msgid "Failed to save book, see errors below for more information."
+msgstr "저장에 실패했습니다. 더 많은 정보는 아래 오류를 참조하세요."
+
+#: bookwyrm/templates/book/edit/edit_book.html:70
+msgid "Confirm Book Info"
+msgstr "책 정보 확인"
+
+#: bookwyrm/templates/book/edit/edit_book.html:78
+#, python-format
+msgid "Is \"%(name)s\" one of these authors?"
+msgstr ""
+
+#: bookwyrm/templates/book/edit/edit_book.html:89
+#, python-format
+msgid "Author of %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/book/edit/edit_book.html:93
+#, python-format
+msgid "Author of %(alt_title)s "
+msgstr ""
+
+#: bookwyrm/templates/book/edit/edit_book.html:95
+msgid "Find more information at isni.org"
+msgstr "더 많은 정보룰 isni.org에서 찾기"
+
+#: bookwyrm/templates/book/edit/edit_book.html:105
+msgid "This is a new author"
+msgstr "새로운 저자"
+
+#: bookwyrm/templates/book/edit/edit_book.html:115
+#, python-format
+msgid "Creating a new author: %(name)s"
+msgstr ""
+
+#: bookwyrm/templates/book/edit/edit_book.html:122
+msgid "Is this an edition of an existing work?"
+msgstr "이미 등록된 작품의 다른 판일까요?"
+
+#: bookwyrm/templates/book/edit/edit_book.html:130
+msgid "This is a new work"
+msgstr "새 작품"
+
+#: bookwyrm/templates/book/edit/edit_book.html:139
+#: bookwyrm/templates/feed/status.html:19
+#: bookwyrm/templates/guided_tour/book.html:44
+#: bookwyrm/templates/guided_tour/book.html:68
+#: bookwyrm/templates/guided_tour/book.html:91
+#: bookwyrm/templates/guided_tour/book.html:116
+#: bookwyrm/templates/guided_tour/book.html:140
+#: bookwyrm/templates/guided_tour/book.html:164
+#: bookwyrm/templates/guided_tour/book.html:188
+#: bookwyrm/templates/guided_tour/book.html:213
+#: bookwyrm/templates/guided_tour/book.html:237
+#: bookwyrm/templates/guided_tour/book.html:262
+#: bookwyrm/templates/guided_tour/book.html:290
+#: bookwyrm/templates/guided_tour/group.html:43
+#: bookwyrm/templates/guided_tour/group.html:66
+#: bookwyrm/templates/guided_tour/group.html:89
+#: bookwyrm/templates/guided_tour/group.html:108
+#: bookwyrm/templates/guided_tour/home.html:91
+#: bookwyrm/templates/guided_tour/home.html:115
+#: bookwyrm/templates/guided_tour/home.html:140
+#: bookwyrm/templates/guided_tour/home.html:165
+#: bookwyrm/templates/guided_tour/home.html:189
+#: bookwyrm/templates/guided_tour/home.html:212
+#: bookwyrm/templates/guided_tour/lists.html:47
+#: bookwyrm/templates/guided_tour/lists.html:70
+#: bookwyrm/templates/guided_tour/lists.html:94
+#: bookwyrm/templates/guided_tour/lists.html:117
+#: bookwyrm/templates/guided_tour/lists.html:136
+#: bookwyrm/templates/guided_tour/search.html:83
+#: bookwyrm/templates/guided_tour/search.html:110
+#: bookwyrm/templates/guided_tour/search.html:134
+#: bookwyrm/templates/guided_tour/search.html:155
+#: bookwyrm/templates/guided_tour/user_books.html:44
+#: bookwyrm/templates/guided_tour/user_books.html:67
+#: bookwyrm/templates/guided_tour/user_books.html:90
+#: bookwyrm/templates/guided_tour/user_books.html:118
+#: bookwyrm/templates/guided_tour/user_groups.html:44
+#: bookwyrm/templates/guided_tour/user_groups.html:67
+#: bookwyrm/templates/guided_tour/user_groups.html:91
+#: bookwyrm/templates/guided_tour/user_groups.html:110
+#: bookwyrm/templates/guided_tour/user_profile.html:43
+#: bookwyrm/templates/guided_tour/user_profile.html:66
+#: bookwyrm/templates/guided_tour/user_profile.html:89
+#: bookwyrm/templates/guided_tour/user_profile.html:112
+#: bookwyrm/templates/guided_tour/user_profile.html:135
+#: bookwyrm/templates/user/user.html:93 bookwyrm/templates/user_menu.html:18
+msgid "Back"
+msgstr "뒤로"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:26
+#: bookwyrm/templates/snippets/create_status/review.html:15
+msgid "Title:"
+msgstr "제목"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:35
+msgid "Sort Title:"
+msgstr "책제목 정렬:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:44
+msgid "Subtitle:"
+msgstr "부제목"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:64
+msgid "Series:"
+msgstr "총서"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:74
+msgid "Series number:"
+msgstr "총서편차:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:85
+msgid "Languages:"
+msgstr "언어:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:97
+msgid "Subjects:"
+msgstr "화제:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:101
+msgid "Add subject"
+msgstr "화제 추가"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:119
+msgid "Remove subject"
+msgstr "화제 제거"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:142
+msgid "Add Another Subject"
+msgstr "그 밖의 화제 추가"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:150
+msgid "Publication"
+msgstr "출판물"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:155
+msgid "Publisher:"
+msgstr "발행처:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:167
+msgid "First published date:"
+msgstr "최초 발행일:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:175
+msgid "Published date:"
+msgstr "발행일:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:186
+msgid "Authors"
+msgstr "저자"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:197
+#, python-format
+msgid "Remove %(name)s"
+msgstr "%(name)s 제거"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:200
+#, python-format
+msgid "Author page for %(name)s"
+msgstr ""
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:208
+msgid "Add Authors:"
+msgstr "저자 추가:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:211
+#: bookwyrm/templates/book/edit/edit_book_form.html:214
+msgid "Add Author"
+msgstr "저자 추가"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:212
+#: bookwyrm/templates/book/edit/edit_book_form.html:215
+msgid "Jane Doe"
+msgstr "신원 미상"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:221
+msgid "Add Another Author"
+msgstr "그 밖의 저자 추가"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:231
+#: bookwyrm/templates/shelf/shelf.html:149
+msgid "Cover"
+msgstr "표지"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:263
+msgid "Physical Properties"
+msgstr "제본 정보"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:270
+#: bookwyrm/templates/book/editions/format_filter.html:6
+msgid "Format:"
+msgstr "포맷:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:280
+msgid "Format details:"
+msgstr "포맷 상세:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:291
+msgid "Pages:"
+msgstr "쪽 수:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:302
+msgid "Book Identifiers"
+msgstr "책 식별자"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:307
+msgid "ISBN 13:"
+msgstr "ISBN 13:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:316
+msgid "ISBN 10:"
+msgstr "ISBN 10:"
+
+#: bookwyrm/templates/book/edit/edit_book_form.html:325
+msgid "Openlibrary ID:"
+msgstr "OpenLibrary ID:"
+
+#: bookwyrm/templates/book/editions/editions.html:4
+#, python-format
+msgid "Editions of %(book_title)s"
+msgstr "%(book_title)s의 판"
+
+#: bookwyrm/templates/book/editions/editions.html:8
+#, python-format
+msgid "Editions of %(work_title)s "
+msgstr ""
+
+#: bookwyrm/templates/book/editions/editions.html:55
+msgid "Can't find the edition you're looking for?"
+msgstr "찾는 판이 없나요?"
+
+#: bookwyrm/templates/book/editions/editions.html:76
+msgid "Add another edition"
+msgstr "다른 판 추가"
+
+#: 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:6
+#: bookwyrm/templates/preferences/edit_user.html:95
+msgid "Language:"
+msgstr "언어:"
+
+#: bookwyrm/templates/book/editions/search_filter.html:6
+msgid "Search editions"
+msgstr "판 검색"
+
+#: bookwyrm/templates/book/file_links/add_link_modal.html:6
+msgid "Add file link"
+msgstr "파일 링크 붙히기"
+
+#: 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 ""
+
+#: bookwyrm/templates/book/file_links/add_link_modal.html:24
+msgid "URL:"
+msgstr "URL:"
+
+#: bookwyrm/templates/book/file_links/add_link_modal.html:29
+msgid "File type:"
+msgstr "파일 유형:"
+
+#: bookwyrm/templates/book/file_links/add_link_modal.html:48
+msgid "Availability:"
+msgstr "가용성:"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:5
+#: bookwyrm/templates/book/file_links/edit_links.html:21
+#: bookwyrm/templates/book/file_links/links.html:53
+msgid "Edit links"
+msgstr "링크 편집"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:11
+#, python-format
+msgid "Links for \"%(title)s \""
+msgstr ""
+
+#: bookwyrm/templates/book/file_links/edit_links.html:32
+#: bookwyrm/templates/settings/link_domains/link_table.html:6
+msgid "URL"
+msgstr "URL"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:33
+#: bookwyrm/templates/settings/link_domains/link_table.html:7
+msgid "Added by"
+msgstr "추가한 사람"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:34
+#: bookwyrm/templates/settings/link_domains/link_table.html:8
+msgid "Filetype"
+msgstr "파일 유형"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:35
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25
+#: bookwyrm/templates/settings/reports/report_links_table.html:5
+msgid "Domain"
+msgstr "도메인"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:36
+#: bookwyrm/templates/import/import.html:138
+#: bookwyrm/templates/import/import_status.html:134
+#: bookwyrm/templates/import/import_user.html:177
+#: bookwyrm/templates/preferences/export-user.html:78
+#: bookwyrm/templates/settings/announcements/announcements.html:37
+#: bookwyrm/templates/settings/imports/imports.html:255
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:48
+#: bookwyrm/templates/settings/invites/status_filter.html:5
+#: bookwyrm/templates/settings/themes.html:111
+#: bookwyrm/templates/settings/users/user_admin.html:56
+#: bookwyrm/templates/settings/users/user_info.html:35
+msgid "Status"
+msgstr "상태"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:37
+#: bookwyrm/templates/settings/announcements/announcements.html:41
+#: bookwyrm/templates/settings/federation/instance.html:112
+#: bookwyrm/templates/settings/imports/imports.html:174
+#: bookwyrm/templates/settings/imports/imports.html:253
+#: bookwyrm/templates/settings/reports/report_links_table.html:6
+#: bookwyrm/templates/settings/themes.html:108
+msgid "Actions"
+msgstr "동작"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:48
+#: bookwyrm/templates/settings/link_domains/link_table.html:21
+msgid "Unknown user"
+msgstr "알려지지 않은 이용자"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:57
+#: bookwyrm/templates/book/file_links/verification_modal.html:22
+msgid "Report spam"
+msgstr "스팸 제보"
+
+#: bookwyrm/templates/book/file_links/edit_links.html:102
+msgid "No links available for this book."
+msgstr ""
+
+#: bookwyrm/templates/book/file_links/edit_links.html:113
+#: bookwyrm/templates/book/file_links/links.html:18
+msgid "Add link to file"
+msgstr "파일 링크 추가"
+
+#: bookwyrm/templates/book/file_links/file_link_page.html:6
+msgid "File Links"
+msgstr "파일 링크"
+
+#: bookwyrm/templates/book/file_links/links.html:9
+msgid "Get a copy"
+msgstr "사본 구하기"
+
+#: bookwyrm/templates/book/file_links/links.html:47
+msgid "No links available"
+msgstr "링크 없음"
+
+#: bookwyrm/templates/book/file_links/verification_modal.html:5
+msgid "Leaving BookWyrm"
+msgstr "BookWyrm 떠나기"
+
+#: bookwyrm/templates/book/file_links/verification_modal.html:11
+#, python-format
+msgid "This link is taking you to: %(link_url)s
. Is that where you'd like to go?"
+msgstr ""
+
+#: bookwyrm/templates/book/file_links/verification_modal.html:26
+#: bookwyrm/templates/setup/config.html:139
+msgid "Continue"
+msgstr "계속"
+
+#: bookwyrm/templates/book/publisher_info.html:23
+#, python-format
+msgid "%(format)s, %(pages)s pages"
+msgstr ""
+
+#: bookwyrm/templates/book/publisher_info.html:25
+#, python-format
+msgid "%(pages)s pages"
+msgstr "%(pages)s쪽"
+
+#: bookwyrm/templates/book/publisher_info.html:38
+#, python-format
+msgid "%(languages)s language"
+msgstr "언어: %(languages)s "
+
+#: bookwyrm/templates/book/publisher_info.html:63
+#, python-format
+msgid "Published %(date)s by %(publisher)s."
+msgstr ""
+
+#: bookwyrm/templates/book/publisher_info.html:65
+#, python-format
+msgid "Published by %(publisher)s."
+msgstr "%(publisher)s에서 발행함."
+
+#: bookwyrm/templates/book/publisher_info.html:67
+#, python-format
+msgid "Published %(date)s"
+msgstr " 발행일: %(date)s"
+
+#: bookwyrm/templates/book/rating.html:19
+msgid "rated it"
+msgstr "별점"
+
+#: bookwyrm/templates/book/series.html:11
+msgid "Series by"
+msgstr "시리즈"
+
+#: bookwyrm/templates/book/series.html:28
+#, python-format
+msgid "Book %(series_number)s"
+msgstr "%(series_number)s번째 도서"
+
+#: bookwyrm/templates/book/series.html:28
+msgid "Unsorted Book"
+msgstr "정리안된 책"
+
+#: bookwyrm/templates/book/sync_modal.html:15
+#, python-format
+msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten."
+msgstr ""
+
+#: bookwyrm/templates/compose.html:5 bookwyrm/templates/compose.html:8
+msgid "Edit status"
+msgstr "상태 수정"
+
+#: bookwyrm/templates/confirm_email/confirm_email.html:4
+msgid "Confirm email"
+msgstr "이메일 확인"
+
+#: bookwyrm/templates/confirm_email/confirm_email.html:7
+msgid "Confirm your email address"
+msgstr "내 이메일 주소 확인하기"
+
+#: bookwyrm/templates/confirm_email/confirm_email.html:13
+msgid "A confirmation code has been sent to the email address you used to register your account."
+msgstr ""
+
+#: bookwyrm/templates/confirm_email/confirm_email.html:15
+msgid "Sorry! We couldn't find that code."
+msgstr ""
+
+#: bookwyrm/templates/confirm_email/confirm_email.html:19
+#: bookwyrm/templates/settings/users/user_info.html:92
+msgid "Confirmation code:"
+msgstr "확인 코드"
+
+#: bookwyrm/templates/confirm_email/confirm_email.html:25
+#: bookwyrm/templates/landing/layout.html:81
+#: bookwyrm/templates/settings/dashboard/dashboard.html:102
+#: bookwyrm/templates/snippets/report_modal.html:53
+msgid "Submit"
+msgstr "제출"
+
+#: bookwyrm/templates/confirm_email/confirm_email.html:38
+msgid "Can't find your code?"
+msgstr "코드를 못찾았나요?"
+
+#: bookwyrm/templates/confirm_email/resend.html:5
+#: bookwyrm/templates/confirm_email/resend_modal.html:5
+msgid "Resend confirmation link"
+msgstr "확인 링크 다시 보내기"
+
+#: bookwyrm/templates/confirm_email/resend_modal.html:15
+#: bookwyrm/templates/landing/layout.html:68
+#: bookwyrm/templates/landing/password_reset_request.html:24
+#: bookwyrm/templates/preferences/edit_user.html:53
+#: bookwyrm/templates/snippets/register_form.html:27
+msgid "Email address:"
+msgstr "이메일 주소:"
+
+#: bookwyrm/templates/confirm_email/resend_modal.html:30
+msgid "Resend link"
+msgstr "링크 다시 보내기"
+
+#: bookwyrm/templates/directory/community_filter.html:5
+msgid "Community"
+msgstr "커뮤니티"
+
+#: bookwyrm/templates/directory/community_filter.html:8
+#: bookwyrm/templates/settings/users/user_admin.html:25
+msgid "Local users"
+msgstr "로컬 이용자"
+
+#: bookwyrm/templates/directory/community_filter.html:12
+#: bookwyrm/templates/settings/users/user_admin.html:33
+msgid "Federated community"
+msgstr "연합 커뮤니티"
+
+#: bookwyrm/templates/directory/directory.html:4
+#: bookwyrm/templates/directory/directory.html:9
+#: bookwyrm/templates/user_menu.html:34
+msgid "Directory"
+msgstr "디렉터리"
+
+#: bookwyrm/templates/directory/directory.html:17
+msgid "Make your profile discoverable to other BookWyrm users."
+msgstr ""
+
+#: bookwyrm/templates/directory/directory.html:21
+msgid "Join Directory"
+msgstr "디렉터리 참여하기"
+
+#: bookwyrm/templates/directory/directory.html:24
+#, python-format
+msgid "You can opt-out at any time in your profile settings. "
+msgstr ""
+
+#: bookwyrm/templates/directory/directory.html:29
+#: bookwyrm/templates/directory/directory.html:31
+#: bookwyrm/templates/feed/goal_card.html:17
+#: bookwyrm/templates/feed/summary_card.html:12
+#: bookwyrm/templates/feed/summary_card.html:14
+#: bookwyrm/templates/snippets/announcement.html:31
+msgid "Dismiss message"
+msgstr "메시지 해제"
+
+#: bookwyrm/templates/directory/sort_filter.html:5
+msgid "Order by"
+msgstr ""
+
+#: bookwyrm/templates/directory/sort_filter.html:9
+msgid "Recently active"
+msgstr ""
+
+#: bookwyrm/templates/directory/sort_filter.html:10
+msgid "Suggested"
+msgstr "제안"
+
+#: bookwyrm/templates/directory/user_card.html:17
+#: bookwyrm/templates/directory/user_card.html:18
+#: bookwyrm/templates/ostatus/remote_follow.html:21
+#: bookwyrm/templates/ostatus/remote_follow.html:22
+#: bookwyrm/templates/ostatus/subscribe.html:41
+#: bookwyrm/templates/ostatus/subscribe.html:42
+#: bookwyrm/templates/ostatus/success.html:17
+#: bookwyrm/templates/ostatus/success.html:18
+#: bookwyrm/templates/user/moved.html:19 bookwyrm/templates/user/moved.html:20
+#: bookwyrm/templates/user/user_preview.html:16
+#: bookwyrm/templates/user/user_preview.html:17
+msgid "Locked account"
+msgstr "잠긴 계정"
+
+#: bookwyrm/templates/directory/user_card.html:40
+msgid "follower you follow"
+msgid_plural "followers you follow"
+msgstr[0] ""
+
+#: bookwyrm/templates/directory/user_card.html:47
+msgid "book on your shelves"
+msgid_plural "books on your shelves"
+msgstr[0] "책꽂이에 두기"
+
+#: bookwyrm/templates/directory/user_card.html:55
+msgid "posts"
+msgstr "게시물 수"
+
+#: bookwyrm/templates/directory/user_card.html:61
+msgid "last active"
+msgstr "최근 활동"
+
+#: bookwyrm/templates/directory/user_type_filter.html:5
+msgid "User type"
+msgstr "이용자 유형"
+
+#: bookwyrm/templates/directory/user_type_filter.html:8
+msgid "BookWyrm users"
+msgstr "BookWyrm 이용자"
+
+#: bookwyrm/templates/directory/user_type_filter.html:12
+msgid "All known users"
+msgstr "알려진 모든 이용자"
+
+#: bookwyrm/templates/discover/card-header.html:8
+#, python-format
+msgid "%(username)s wants to read %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/discover/card-header.html:13
+#, python-format
+msgid "%(username)s finished reading %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/discover/card-header.html:18
+#, python-format
+msgid "%(username)s started reading %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/discover/card-header.html:23
+#, python-format
+msgid "%(username)s rated %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/discover/card-header.html:27
+#, python-format
+msgid "%(username)s reviewed %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/discover/card-header.html:31
+#, python-format
+msgid "%(username)s commented on %(book_title)s "
+msgstr "%(username)s 님의 %(book_title)s 코멘트"
+
+#: bookwyrm/templates/discover/card-header.html:35
+#, python-format
+msgid "%(username)s quoted %(book_title)s "
+msgstr "%(username)s 님의 %(book_title)s 인용"
+
+#: bookwyrm/templates/discover/discover.html:4
+#: bookwyrm/templates/discover/discover.html:10
+#: bookwyrm/templates/layout.html:91
+msgid "Discover"
+msgstr "둘러보기"
+
+#: bookwyrm/templates/discover/discover.html:12
+#, python-format
+msgid "See what's new in the local %(site_name)s community"
+msgstr "무엇이 %(site_name)s 커뮤니티에서 새로운 지 살피기"
+
+#: bookwyrm/templates/discover/large-book.html:52
+#: bookwyrm/templates/discover/small-book.html:36
+msgid "View status"
+msgstr "게시물 보기"
+
+#: bookwyrm/templates/email/confirm/html_content.html:6
+#: bookwyrm/templates/email/confirm/text_content.html:4
+#, python-format
+msgid "One last step before you join %(site_name)s! Please confirm your email address by clicking the link below:"
+msgstr ""
+
+#: bookwyrm/templates/email/confirm/html_content.html:11
+msgid "Confirm Email"
+msgstr "이메일 확인"
+
+#: bookwyrm/templates/email/confirm/html_content.html:15
+#, python-format
+msgid "Or enter the code \"%(confirmation_code)s
\" at login."
+msgstr ""
+
+#: bookwyrm/templates/email/confirm/subject.html:2
+msgid "Please confirm your email"
+msgstr "이메일 주소 확인하기"
+
+#: bookwyrm/templates/email/confirm/text_content.html:10
+#, python-format
+msgid "Or enter the code \"%(confirmation_code)s\" at login."
+msgstr ""
+
+#: bookwyrm/templates/email/html_layout.html:15
+#: bookwyrm/templates/email/text_layout.html:2
+msgid "Hi there,"
+msgstr ""
+
+#: bookwyrm/templates/email/html_layout.html:21
+#, python-format
+msgid "BookWyrm hosted on %(site_name)s "
+msgstr "%(site_name)s 에서 호스트하는 BookWyrm"
+
+#: bookwyrm/templates/email/html_layout.html:23
+msgid "Email preference"
+msgstr "이메일 설정"
+
+#: bookwyrm/templates/email/invite/html_content.html:6
+#: bookwyrm/templates/email/invite/subject.html:2
+#, python-format
+msgid "You're invited to join %(site_name)s!"
+msgstr ""
+
+#: bookwyrm/templates/email/invite/html_content.html:9
+msgid "Join Now"
+msgstr "바로 참여하기"
+
+#: bookwyrm/templates/email/invite/html_content.html:15
+#, python-format
+msgid "Learn more about %(site_name)s ."
+msgstr ""
+
+#: bookwyrm/templates/email/invite/text_content.html:4
+#, python-format
+msgid "You're invited to join %(site_name)s! Click the link below to create an account."
+msgstr ""
+
+#: bookwyrm/templates/email/invite/text_content.html:8
+#, python-format
+msgid "Learn more about %(site_name)s:"
+msgstr ""
+
+#: bookwyrm/templates/email/moderation_report/html_content.html:8
+#: bookwyrm/templates/email/moderation_report/text_content.html:6
+#, python-format
+msgid "@%(reporter)s has flagged a link domain for moderation."
+msgstr ""
+
+#: bookwyrm/templates/email/moderation_report/html_content.html:14
+#: bookwyrm/templates/email/moderation_report/text_content.html:10
+#, python-format
+msgid "@%(reporter)s has flagged behavior by @%(reportee)s for moderation."
+msgstr ""
+
+#: bookwyrm/templates/email/moderation_report/html_content.html:21
+#: bookwyrm/templates/email/moderation_report/text_content.html:15
+msgid "View report"
+msgstr "제보 보기"
+
+#: bookwyrm/templates/email/moderation_report/subject.html:2
+#, python-format
+msgid "New report for %(site_name)s"
+msgstr ""
+
+#: bookwyrm/templates/email/password_reset/html_content.html:6
+#: bookwyrm/templates/email/password_reset/text_content.html:4
+#, python-format
+msgid "You requested to reset your %(site_name)s password. Click the link below to set a new password and log in to your account."
+msgstr ""
+
+#: bookwyrm/templates/email/password_reset/html_content.html:9
+#: bookwyrm/templates/landing/password_reset.html:4
+#: bookwyrm/templates/landing/password_reset.html:10
+#: bookwyrm/templates/landing/password_reset_request.html:4
+#: bookwyrm/templates/landing/password_reset_request.html:10
+msgid "Reset Password"
+msgstr "암호 재설정"
+
+#: bookwyrm/templates/email/password_reset/html_content.html:13
+#: bookwyrm/templates/email/password_reset/text_content.html:8
+msgid "If you didn't request to reset your password, you can ignore this email."
+msgstr ""
+
+#: bookwyrm/templates/email/password_reset/subject.html:2
+#, python-format
+msgid "Reset your %(site_name)s password"
+msgstr ""
+
+#: bookwyrm/templates/email/test/html_content.html:6
+#: bookwyrm/templates/email/test/text_content.html:4
+msgid "This is a test email."
+msgstr "시험 이메일입니다."
+
+#: bookwyrm/templates/email/test/subject.html:2
+msgid "Test email"
+msgstr "시험 이메일"
+
+#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:33
+#: bookwyrm/templates/layout.html:163 bookwyrm/templates/setup/layout.html:15
+#: bookwyrm/templates/two_factor_auth/two_factor_login.html:18
+#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:18
+#, python-format
+msgid "%(site_name)s home page"
+msgstr ""
+
+#: bookwyrm/templates/embed-layout.html:40
+#: bookwyrm/templates/snippets/footer.html:12
+msgid "Contact site admin"
+msgstr "사이트 관리자 연락하기"
+
+#: bookwyrm/templates/embed-layout.html:46
+msgid "Join BookWyrm"
+msgstr "BookWyrm 참여하기"
+
+#: bookwyrm/templates/feed/direct_messages.html:8
+#, python-format
+msgid "Direct Messages with %(username)s "
+msgstr ""
+
+#: bookwyrm/templates/feed/direct_messages.html:10
+#: bookwyrm/templates/user_menu.html:39
+msgid "Direct Messages"
+msgstr "디렉트 메시지"
+
+#: bookwyrm/templates/feed/direct_messages.html:13
+msgid "All messages"
+msgstr "모든 메시지"
+
+#: bookwyrm/templates/feed/direct_messages.html:22
+msgid "You have no messages right now."
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:55
+msgid "There aren't any activities right now! Try following a user to get started"
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:56
+msgid "Alternatively, you can try enabling more status types"
+msgstr ""
+
+#: bookwyrm/templates/feed/goal_card.html:6
+#: bookwyrm/templates/feed/layout.html:14
+#: bookwyrm/templates/user/goal_form.html:6
+#, python-format
+msgid "%(year)s Reading Goal"
+msgstr "%(year)s 읽기 목표"
+
+#: bookwyrm/templates/feed/goal_card.html:18
+#, python-format
+msgid "You can set or change your reading goal any time from your profile page "
+msgstr ""
+
+#: bookwyrm/templates/feed/layout.html:4
+msgid "Updates"
+msgstr "업데이트"
+
+#: bookwyrm/templates/feed/suggested_books.html:6
+#: bookwyrm/templates/guided_tour/home.html:127
+#: bookwyrm/templates/layout.html:94
+msgid "Your Books"
+msgstr "내 도서"
+
+#: bookwyrm/templates/feed/suggested_books.html:10
+msgid "There are no books here right now! Try searching for a book to get started"
+msgstr ""
+
+#: bookwyrm/templates/feed/suggested_books.html:13
+msgid "Do you have book data from another service like GoodReads?"
+msgstr ""
+
+#: bookwyrm/templates/feed/suggested_books.html:16
+msgid "Import your reading history"
+msgstr "내가 읽은 내역 가져오기"
+
+#: bookwyrm/templates/feed/suggested_users.html:5
+#: bookwyrm/templates/get_started/users.html:6
+msgid "Who to follow"
+msgstr "팔로우할 만한 이"
+
+#: bookwyrm/templates/feed/suggested_users.html:9
+msgid "Don't show suggested users"
+msgstr "추천 이용자 보지 않음"
+
+#: bookwyrm/templates/feed/suggested_users.html:14
+msgid "View directory"
+msgstr "디렉터리 보기"
+
+#: bookwyrm/templates/feed/summary_card.html:21
+msgid "The end of the year is the best moment to take stock of all the books read during the last 12 months. How many pages have you read? Which book is your best-rated of the year? We compiled these stats, and more!"
+msgstr "연말은 지난 12개월 동안 읽은 모든 책을 점검하기에 가장 좋은 시기입니다. 몇 쪽이나 읽었나요? 올해 가장 높은 평점을 준 책은 무엇인가요? 이러한 통계 등을 정리해 보았습니다!"
+
+#: bookwyrm/templates/feed/summary_card.html:26
+#, python-format
+msgid "Discover your stats for %(year)s!"
+msgstr ""
+
+#: bookwyrm/templates/get_started/book_preview.html:6
+#, python-format
+msgid "Have you read %(book_title)s?"
+msgstr "%(book_title)s 읽어보았나요?"
+
+#: bookwyrm/templates/get_started/book_preview.html:7
+msgid "Add to your books"
+msgstr "내 도서 추가"
+
+#: bookwyrm/templates/get_started/book_preview.html:10
+#: bookwyrm/templates/shelf/shelf.html:88 bookwyrm/templates/user/user.html:37
+#: bookwyrm/templatetags/shelf_tags.py:14
+msgid "To Read"
+msgstr "읽을 것"
+
+#: bookwyrm/templates/get_started/book_preview.html:11
+#: bookwyrm/templates/shelf/shelf.html:89 bookwyrm/templates/user/user.html:38
+#: bookwyrm/templatetags/shelf_tags.py:15
+msgid "Currently Reading"
+msgstr "읽는 중"
+
+#: bookwyrm/templates/get_started/book_preview.html:12
+#: bookwyrm/templates/shelf/shelf.html:90
+#: bookwyrm/templates/snippets/shelf_selector.html:46
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12
+#: bookwyrm/templates/user/user.html:39 bookwyrm/templatetags/shelf_tags.py:16
+msgid "Read"
+msgstr "읽음"
+
+#: bookwyrm/templates/get_started/book_preview.html:13
+#: bookwyrm/templates/shelf/shelf.html:91 bookwyrm/templates/user/user.html:40
+#: bookwyrm/templatetags/shelf_tags.py:17
+msgid "Stopped Reading"
+msgstr "읽다 멈춘 것"
+
+#: bookwyrm/templates/get_started/books.html:6
+msgid "What are you reading?"
+msgstr "무엇을 읽고 있나요?"
+
+#: bookwyrm/templates/get_started/books.html:9
+#: bookwyrm/templates/layout.html:41 bookwyrm/templates/lists/list.html:213
+msgid "Search for a book"
+msgstr "도서 검색"
+
+#: bookwyrm/templates/get_started/books.html:11
+#, python-format
+msgid "No books found for \"%(query)s\""
+msgstr ""
+
+#: bookwyrm/templates/get_started/books.html:11
+#, python-format
+msgid "You can add books when you start using %(site_name)s."
+msgstr ""
+
+#: bookwyrm/templates/get_started/books.html:16
+#: bookwyrm/templates/get_started/books.html:17
+#: bookwyrm/templates/get_started/users.html:18
+#: bookwyrm/templates/get_started/users.html:19
+#: bookwyrm/templates/groups/members.html:15
+#: bookwyrm/templates/groups/members.html:16 bookwyrm/templates/layout.html:47
+#: bookwyrm/templates/layout.html:48 bookwyrm/templates/lists/list.html:217
+#: bookwyrm/templates/search/layout.html:5
+#: bookwyrm/templates/search/layout.html:10
+#: bookwyrm/templates/search/layout.html:32
+msgid "Search"
+msgstr "검색"
+
+#: bookwyrm/templates/get_started/books.html:27
+msgid "Suggested Books"
+msgstr "추천 도서"
+
+#: bookwyrm/templates/get_started/books.html:33
+msgid "Search results"
+msgstr "검색 결과"
+
+#: bookwyrm/templates/get_started/books.html:46
+#, python-format
+msgid "Popular on %(site_name)s"
+msgstr ""
+
+#: bookwyrm/templates/get_started/books.html:58
+#: bookwyrm/templates/lists/list.html:230
+msgid "No books found"
+msgstr "도서를 찾을 수 없음"
+
+#: bookwyrm/templates/get_started/books.html:63
+#: bookwyrm/templates/get_started/profile.html:64
+msgid "Save & continue"
+msgstr "저장 & 계속하기"
+
+#: bookwyrm/templates/get_started/layout.html:5
+#: bookwyrm/templates/landing/layout.html:5
+msgid "Welcome"
+msgstr "환영"
+
+#: bookwyrm/templates/get_started/layout.html:24
+msgid "These are some first steps to get you started."
+msgstr ""
+
+#: bookwyrm/templates/get_started/layout.html:38
+#: bookwyrm/templates/get_started/profile.html:6
+msgid "Create your profile"
+msgstr "내 프로필 만들기"
+
+#: bookwyrm/templates/get_started/layout.html:42
+msgid "Add books"
+msgstr "도서 추가"
+
+#: bookwyrm/templates/get_started/layout.html:46
+msgid "Find friends"
+msgstr "친구 찾기"
+
+#: bookwyrm/templates/get_started/layout.html:52
+msgid "Skip this step"
+msgstr "이 과정을 생략"
+
+#: bookwyrm/templates/get_started/layout.html:56
+#: bookwyrm/templates/guided_tour/group.html:101
+msgid "Finish"
+msgstr "끝내기"
+
+#: bookwyrm/templates/get_started/profile.html:15
+#: bookwyrm/templates/preferences/edit_user.html:41
+msgid "Display name:"
+msgstr "나타낼 이름:"
+
+#: bookwyrm/templates/get_started/profile.html:29
+#: bookwyrm/templates/preferences/edit_user.html:47
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:49
+msgid "Summary:"
+msgstr "요약:"
+
+#: bookwyrm/templates/get_started/profile.html:34
+msgid "A little bit about you"
+msgstr ""
+
+#: bookwyrm/templates/get_started/profile.html:43
+#: bookwyrm/templates/preferences/edit_user.html:27
+msgid "Avatar:"
+msgstr "아바타:"
+
+#: bookwyrm/templates/get_started/profile.html:52
+msgid "Manually approve followers:"
+msgstr "수동으로 팔로워 승인:"
+
+#: bookwyrm/templates/get_started/profile.html:58
+msgid "Show this account in suggested users:"
+msgstr "이 계정을 추천 이용자에 보이기:"
+
+#: bookwyrm/templates/get_started/profile.html:62
+msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users."
+msgstr ""
+
+#: bookwyrm/templates/get_started/users.html:8
+msgid "You can follow users on other BookWyrm instances and federated services like Mastodon."
+msgstr ""
+
+#: bookwyrm/templates/get_started/users.html:11
+msgid "Search for a user"
+msgstr "이용자 검색"
+
+#: bookwyrm/templates/get_started/users.html:13
+#, python-format
+msgid "No users found for \"%(query)s\""
+msgstr ""
+
+#: bookwyrm/templates/groups/create_form.html:5
+#: bookwyrm/templates/guided_tour/user_groups.html:32
+#: bookwyrm/templates/user/groups.html:22
+msgid "Create group"
+msgstr "그룹 만들기"
+
+#: bookwyrm/templates/groups/created_text.html:4
+#, python-format
+msgid "Managed by %(username)s "
+msgstr ""
+
+#: bookwyrm/templates/groups/delete_group_modal.html:4
+msgid "Delete this group?"
+msgstr "이 그룹을 없앨까요?"
+
+#: bookwyrm/templates/groups/delete_group_modal.html:7
+#: bookwyrm/templates/lists/delete_list_modal.html:7
+#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:12
+#: bookwyrm/templates/settings/imports/complete_import_modal.html:7
+msgid "This action cannot be un-done"
+msgstr "이 행동은 되돌릴 수 없어요."
+
+#: bookwyrm/templates/groups/delete_group_modal.html:17
+#: bookwyrm/templates/lists/delete_list_modal.html:19
+#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:29
+#: bookwyrm/templates/settings/announcements/announcement.html:23
+#: bookwyrm/templates/settings/announcements/announcements.html:56
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49
+#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36
+#: bookwyrm/templates/snippets/follow_request_buttons.html:12
+#: bookwyrm/templates/snippets/join_invitation_buttons.html:14
+msgid "Delete"
+msgstr "지우기"
+
+#: bookwyrm/templates/groups/edit_form.html:5
+msgid "Edit Group"
+msgstr "그룹 편집"
+
+#: bookwyrm/templates/groups/form.html:8
+msgid "Group Name:"
+msgstr "그룹 이름:"
+
+#: bookwyrm/templates/groups/form.html:12
+msgid "Group Description:"
+msgstr "그룹 설명:"
+
+#: bookwyrm/templates/groups/form.html:21
+msgid "Delete group"
+msgstr "그룹 지우기"
+
+#: bookwyrm/templates/groups/group.html:21
+msgid "Members of this group can create group-curated lists."
+msgstr "이 그룹의 구성원은 그룹선정목록을 만들 수 있습니다."
+
+#: bookwyrm/templates/groups/group.html:26
+#: bookwyrm/templates/lists/create_form.html:5
+#: bookwyrm/templates/lists/lists.html:20
+msgid "Create List"
+msgstr "목록 만들기"
+
+#: bookwyrm/templates/groups/group.html:39
+msgid "This group has no lists"
+msgstr "이 그룹에는 목록이 없습니다."
+
+#: bookwyrm/templates/groups/layout.html:17
+msgid "Edit group"
+msgstr "그룹 편집"
+
+#: bookwyrm/templates/groups/members.html:11
+msgid "Search to add a user"
+msgstr "검색하여 이용자 추가하기"
+
+#: bookwyrm/templates/groups/members.html:32
+msgid "Leave group"
+msgstr "그룹 떠나기"
+
+#: bookwyrm/templates/groups/members.html:54
+#: bookwyrm/templates/groups/suggested_users.html:35
+#: bookwyrm/templates/snippets/suggested_users.html:31
+#: bookwyrm/templates/user/user_preview.html:39
+#: bookwyrm/templates/user/user_preview.html:47
+msgid "Follows you"
+msgstr "나를 팔로우"
+
+#: bookwyrm/templates/groups/suggested_users.html:7
+msgid "Add new members!"
+msgstr "새 구성원 추가하기!"
+
+#: bookwyrm/templates/groups/suggested_users.html:20
+#: bookwyrm/templates/snippets/suggested_users.html:16
+#, python-format
+msgid "%(mutuals)s follower you follow"
+msgid_plural "%(mutuals)s followers you follow"
+msgstr[0] ""
+
+#: bookwyrm/templates/groups/suggested_users.html:27
+#: bookwyrm/templates/snippets/suggested_users.html:23
+#, python-format
+msgid "%(shared_books)s book on your shelves"
+msgid_plural "%(shared_books)s books on your shelves"
+msgstr[0] ""
+
+#: bookwyrm/templates/groups/suggested_users.html:43
+#, python-format
+msgid "No potential members found for \"%(user_query)s\""
+msgstr ""
+
+#: bookwyrm/templates/groups/user_groups.html:15
+msgid "Manager"
+msgstr "매니저"
+
+#: bookwyrm/templates/groups/user_groups.html:35
+msgid "No groups found."
+msgstr "그룹이 없습니다."
+
+#: bookwyrm/templates/guided_tour/book.html:10
+msgid "This is home page of a book. Let's see what you can do while you're here!"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/book.html:11
+msgid "Book page"
+msgstr "책 페이지"
+
+#: bookwyrm/templates/guided_tour/book.html:19
+#: bookwyrm/templates/guided_tour/group.html:19
+#: bookwyrm/templates/guided_tour/lists.html:22
+#: bookwyrm/templates/guided_tour/search.html:29
+#: bookwyrm/templates/guided_tour/search.html:56
+#: bookwyrm/templates/guided_tour/user_books.html:19
+#: bookwyrm/templates/guided_tour/user_groups.html:19
+#: bookwyrm/templates/guided_tour/user_profile.html:19
+msgid "End Tour"
+msgstr "투어 끝내기"
+
+#: bookwyrm/templates/guided_tour/book.html:26
+#: bookwyrm/templates/guided_tour/book.html:50
+#: bookwyrm/templates/guided_tour/book.html:74
+#: bookwyrm/templates/guided_tour/book.html:97
+#: bookwyrm/templates/guided_tour/book.html:122
+#: bookwyrm/templates/guided_tour/book.html:146
+#: bookwyrm/templates/guided_tour/book.html:170
+#: bookwyrm/templates/guided_tour/book.html:194
+#: bookwyrm/templates/guided_tour/book.html:219
+#: bookwyrm/templates/guided_tour/book.html:243
+#: bookwyrm/templates/guided_tour/book.html:268
+#: bookwyrm/templates/guided_tour/book.html:274
+#: bookwyrm/templates/guided_tour/group.html:26
+#: bookwyrm/templates/guided_tour/group.html:49
+#: bookwyrm/templates/guided_tour/group.html:72
+#: bookwyrm/templates/guided_tour/group.html:95
+#: bookwyrm/templates/guided_tour/home.html:74
+#: bookwyrm/templates/guided_tour/home.html:97
+#: bookwyrm/templates/guided_tour/home.html:121
+#: bookwyrm/templates/guided_tour/home.html:146
+#: bookwyrm/templates/guided_tour/home.html:171
+#: bookwyrm/templates/guided_tour/home.html:195
+#: bookwyrm/templates/guided_tour/lists.html:29
+#: bookwyrm/templates/guided_tour/lists.html:53
+#: bookwyrm/templates/guided_tour/lists.html:76
+#: bookwyrm/templates/guided_tour/lists.html:100
+#: bookwyrm/templates/guided_tour/lists.html:123
+#: bookwyrm/templates/guided_tour/search.html:36
+#: bookwyrm/templates/guided_tour/search.html:63
+#: bookwyrm/templates/guided_tour/search.html:89
+#: bookwyrm/templates/guided_tour/search.html:116
+#: bookwyrm/templates/guided_tour/search.html:140
+#: bookwyrm/templates/guided_tour/user_books.html:26
+#: bookwyrm/templates/guided_tour/user_books.html:50
+#: bookwyrm/templates/guided_tour/user_books.html:73
+#: bookwyrm/templates/guided_tour/user_books.html:96
+#: bookwyrm/templates/guided_tour/user_groups.html:26
+#: bookwyrm/templates/guided_tour/user_groups.html:50
+#: bookwyrm/templates/guided_tour/user_groups.html:73
+#: bookwyrm/templates/guided_tour/user_groups.html:97
+#: bookwyrm/templates/guided_tour/user_profile.html:26
+#: bookwyrm/templates/guided_tour/user_profile.html:49
+#: bookwyrm/templates/guided_tour/user_profile.html:72
+#: bookwyrm/templates/guided_tour/user_profile.html:95
+#: bookwyrm/templates/guided_tour/user_profile.html:118
+#: bookwyrm/templates/snippets/pagination.html:30
+msgid "Next"
+msgstr "다음"
+
+#: bookwyrm/templates/guided_tour/book.html:31
+msgid "This is where you can set a reading status for this book. You can press the button to move to the next stage, or use the drop down button to select the reading status you want to set."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/book.html:32
+msgid "Reading status"
+msgstr "읽은 기록"
+
+#: bookwyrm/templates/guided_tour/book.html:55
+msgid "You can also manually add reading dates here. Unlike changing the reading status using the previous method, adding dates manually will not automatically add them to your Read or Reading shelves."
+msgstr "여기에서 읽은 날짜를 직접 추가할 수도 있습니다. 앞서 설명한 방법으로 읽기 상태를 변경하는 것과 달리 수동으로 날짜를 추가해도 읽음 또는 읽는 중 책꽂이에 자동으로 추가되지 않습니다."
+
+#: bookwyrm/templates/guided_tour/book.html:55
+msgid "Got a favourite you re-read every year? We've got you covered - you can add multiple read dates for the same book 😀"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/book.html:79
+msgid "There can be multiple editions of a book, in various formats or languages. You can choose which edition you want to use."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/book.html:80
+msgid "Other editions"
+msgstr "그 밖의 판"
+
+#: bookwyrm/templates/guided_tour/book.html:102
+msgid "You can post a review, comment, or quote here."
+msgstr "이곳에서 서평, 해설, 인용을 게시할 수 있어요."
+
+#: bookwyrm/templates/guided_tour/book.html:103
+msgid "Share your thoughts"
+msgstr "함께 사유하기"
+
+#: bookwyrm/templates/guided_tour/book.html:127
+msgid "If you have read this book you can post a review including an optional star rating"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/book.html:128
+msgid "Post a review"
+msgstr "서펑 게시하기"
+
+#: bookwyrm/templates/guided_tour/book.html:151
+msgid "You can share your thoughts on this book generally with a simple comment"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/book.html:152
+msgid "Post a comment"
+msgstr "코멘트 발행하기"
+
+#: bookwyrm/templates/guided_tour/book.html:175
+msgid "Just read some perfect prose? Let the world know by sharing a quote!"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/book.html:176
+msgid "Share a quote"
+msgstr "인용 공유하기"
+
+#: bookwyrm/templates/guided_tour/book.html:199
+msgid "If your review or comment might ruin the book for someone who hasn't read it yet, you can hide your post behind a spoiler alert "
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/book.html:200
+msgid "Spoiler alerts"
+msgstr "스포일러 경고"
+
+#: bookwyrm/templates/guided_tour/book.html:224
+msgid "Choose who can see your post here. Post privacy can be Public (everyone can see), Unlisted (everyone can see, but it doesn't appear in public feeds or discovery pages), Followers (only your followers can see), or Private (only you can see)"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/book.html:225
+#: bookwyrm/templates/snippets/privacy_select.html:6
+#: bookwyrm/templates/snippets/privacy_select_no_followers.html:6
+msgid "Post privacy"
+msgstr "게시물 개인정보처리"
+
+#: bookwyrm/templates/guided_tour/book.html:248
+msgid "Some ebooks can be downloaded for free from external sources. They will be shown here."
+msgstr "어떤 전자책은 외부 출처에서 무료로 내려받을 수 있어요. 여기에 나타납니다."
+
+#: bookwyrm/templates/guided_tour/book.html:249
+msgid "Download links"
+msgstr "내려받기 링크"
+
+#: bookwyrm/templates/guided_tour/book.html:273
+msgid "Continue the tour by selecting Your books from the drop down menu."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/book.html:296
+#: bookwyrm/templates/guided_tour/home.html:50
+#: bookwyrm/templates/guided_tour/home.html:218
+#: bookwyrm/templates/guided_tour/search.html:161
+#: bookwyrm/templates/guided_tour/user_books.html:124
+#: bookwyrm/templates/guided_tour/user_groups.html:116
+#: bookwyrm/templates/guided_tour/user_profile.html:141
+msgid "Ok"
+msgstr "알겠어요"
+
+#: bookwyrm/templates/guided_tour/group.html:10
+msgid "Welcome to the page for your group! This is where you can add and remove users, create user-curated lists, and edit the group details."
+msgstr "그룹 페이지에 방문하셨습니다! 이 곳에서는 이용자를 더하거나 뺄 수 있고, 이용자 선정 목록을 만들고, 그룹 세부사항도 변경할 수 있습니다."
+
+#: bookwyrm/templates/guided_tour/group.html:11
+msgid "Your group"
+msgstr "내 그룹"
+
+#: bookwyrm/templates/guided_tour/group.html:31
+msgid "Use this search box to find users to join your group. Currently users must be members of the same Bookwyrm instance and be invited by the group owner."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/group.html:32
+msgid "Find users"
+msgstr "이용자 찾기"
+
+#: bookwyrm/templates/guided_tour/group.html:54
+msgid "Your group members will appear here. The group owner is marked with a star symbol."
+msgstr "그룹 구성원이 여기에 표시됩니다. 그룹 소유자에게는 별 기호가 표시됩니다."
+
+#: bookwyrm/templates/guided_tour/group.html:55
+msgid "Group members"
+msgstr "그룹 구성원"
+
+#: bookwyrm/templates/guided_tour/group.html:77
+msgid "As well as creating lists from the Lists page, you can create a group-curated list here on the group's homepage. Any member of the group can create a list curated by group members."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/group.html:78
+msgid "Group lists"
+msgstr "그룹 목록"
+
+#: bookwyrm/templates/guided_tour/group.html:100
+msgid "Congratulations, you've finished the tour! Now you know the basics, but there is lots more to explore on your own. Happy reading!"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/group.html:115
+msgid "End tour"
+msgstr "투어 끝내기"
+
+#: bookwyrm/templates/guided_tour/home.html:16
+msgid "Welcome to Bookwyrm! Would you like to take the guided tour to help you get started?"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/home.html:17
+#: bookwyrm/templates/guided_tour/home.html:39
+#: bookwyrm/templates/snippets/footer.html:20
+msgid "Guided Tour"
+msgstr "가이드 투어"
+
+#: bookwyrm/templates/guided_tour/home.html:25
+#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:36
+msgid "No thanks"
+msgstr "사양합니다."
+
+#: bookwyrm/templates/guided_tour/home.html:33
+msgid "Yes please!"
+msgstr "네 물론이죠!"
+
+#: bookwyrm/templates/guided_tour/home.html:38
+msgid "If you ever change your mind, just click on the Guided Tour link to start your tour"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/home.html:62
+msgid "Search for books, users, or lists using this search box."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/home.html:63
+msgid "Search box"
+msgstr "검색 상자"
+
+#: bookwyrm/templates/guided_tour/home.html:79
+msgid "Search book records by scanning an ISBN barcode using your device's camera - great when you're in the bookstore or library!"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/home.html:80
+msgid "Barcode reader"
+msgstr "바코드 리더"
+
+#: bookwyrm/templates/guided_tour/home.html:102
+msgid "Use the Lists , Discover , and Your Books links to discover reading suggestions and the latest happenings on this server, or to see your catalogued books!"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/home.html:103
+msgid "Navigation Bar"
+msgstr "내비게이션 바"
+
+#: bookwyrm/templates/guided_tour/home.html:126
+msgid "Books on your reading status shelves will be shown here."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/home.html:151
+msgid "Updates from people you are following will appear in your Home timeline. The Books tab shows activity from anyone, related to your books."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/home.html:152
+msgid "Timelines"
+msgstr "타임라인"
+
+#: bookwyrm/templates/guided_tour/home.html:176
+msgid "The bell will light up when you have a new notification. When it does, click on it to find out what exciting thing has happened!"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/home.html:177
+#: bookwyrm/templates/layout.html:77 bookwyrm/templates/layout.html:107
+#: bookwyrm/templates/layout.html:108
+#: bookwyrm/templates/notifications/notifications_page.html:5
+#: bookwyrm/templates/notifications/notifications_page.html:10
+msgid "Notifications"
+msgstr "알림"
+
+#: bookwyrm/templates/guided_tour/home.html:200
+msgid "Your profile, user directory, direct messages, and settings can be accessed by clicking on your name in the menu here."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/home.html:200
+msgid "Try selecting Profile from the drop down menu to continue the tour."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/home.html:201
+msgid "Profile and settings menu"
+msgstr "프로필 및 설정 메뉴"
+
+#: bookwyrm/templates/guided_tour/lists.html:13
+msgid "This is the lists page where you can discover book lists created by any user. A List is a collection of books, similar to a shelf."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/lists.html:13
+msgid "Shelves are for organising books for yourself, whereas Lists are generally for sharing with others."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/lists.html:34
+msgid "Let's see how to create a new list."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/lists.html:34
+msgid "Click the Create List button, then Next to continue the tour"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/lists.html:35
+#: bookwyrm/templates/guided_tour/lists.html:59
+msgid "Creating a new list"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/lists.html:58
+msgid "You must give your list a name and can optionally give it a description to help other people understand what your list is about."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/lists.html:81
+msgid "Choose who can see your list here. List privacy options work just like we saw when posting book reviews. This is a common pattern throughout Bookwyrm."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/lists.html:82
+msgid "List privacy"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/lists.html:105
+msgid "You can also decide how your list is to be curated - only by you, by anyone, or by a group."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/lists.html:106
+msgid "List curation"
+msgstr "목록 큐레이션"
+
+#: bookwyrm/templates/guided_tour/lists.html:128
+msgid "Next in our tour we will explore Groups!"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/lists.html:129
+msgid "Next: Groups"
+msgstr "다음: 그룹"
+
+#: bookwyrm/templates/guided_tour/lists.html:143
+msgid "Take me there"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/search.html:16
+msgid "If the book you are looking for is available on a remote catalogue such as Open Library, click on Import book ."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/search.html:17
+#: bookwyrm/templates/guided_tour/search.html:44
+msgid "Searching"
+msgstr "검색 중"
+
+#: bookwyrm/templates/guided_tour/search.html:43
+msgid "If the book you are looking for is already on this Bookwyrm instance, you can click on the title to go to the book's page."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/search.html:71
+msgid "If the book you are looking for is not listed, try loading more records from other sources like Open Library or Inventaire."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/search.html:72
+msgid "Load more records"
+msgstr "더 많은 레코드 불러오기"
+
+#: bookwyrm/templates/guided_tour/search.html:98
+msgid "If your book is not in the results, try adjusting your search terms."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/search.html:99
+msgid "Search again"
+msgstr "재검색"
+
+#: bookwyrm/templates/guided_tour/search.html:121
+msgid "If you still can't find your book, you can add a record manually."
+msgstr "아직 책을 찾지 못했다면 수동으로 기록을 추가할 수 있습니다."
+
+#: bookwyrm/templates/guided_tour/search.html:122
+msgid "Add a record manually"
+msgstr "직접 기록 추가하기"
+
+#: bookwyrm/templates/guided_tour/search.html:147
+msgid "Import, manually add, or view an existing book to continue the tour."
+msgstr "책 가져오기나 직접 추가, 이미 있는 책을 볼 때 투어가 계속됩니다."
+
+#: bookwyrm/templates/guided_tour/search.html:148
+msgid "Continue the tour"
+msgstr "투어 계속하기"
+
+#: bookwyrm/templates/guided_tour/user_books.html:10
+msgid "This is the page where your books are listed, organised into shelves."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_books.html:11
+#: bookwyrm/templates/user/books_header.html:4
+msgid "Your books"
+msgstr "내 도서"
+
+#: bookwyrm/templates/guided_tour/user_books.html:31
+msgid "To Read , Currently Reading , Read , and Stopped Reading are default shelves. When you change the reading status of a book it will automatically be moved to the matching shelf. A book can only be on one default shelf at a time."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_books.html:32
+msgid "Reading status shelves"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_books.html:55
+msgid "You can create additional custom shelves to organise your books. A book on a custom shelf can be on any number of other shelves simultaneously, including one of the default reading status shelves"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_books.html:56
+msgid "Adding custom shelves."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_books.html:78
+msgid "If you have an export file from another service like Goodreads or LibraryThing, you can import it here."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_books.html:79
+msgid "Import from another service"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_books.html:101
+msgid "Now that we've explored book shelves, let's take a look at a related concept: book lists!"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_books.html:101
+msgid "Click on the Lists link here to continue the tour."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_groups.html:10
+msgid "You can create or join a group with other users. Groups can share group-curated book lists, and in future will be able to do other things."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_groups.html:11
+#: bookwyrm/templates/guided_tour/user_profile.html:55
+#: bookwyrm/templates/user/groups.html:6 bookwyrm/templates/user/layout.html:95
+msgid "Groups"
+msgstr "그룹"
+
+#: bookwyrm/templates/guided_tour/user_groups.html:31
+msgid "Let's create a new group!"
+msgstr "새 그룹을 만들어보세요!"
+
+#: bookwyrm/templates/guided_tour/user_groups.html:31
+msgid "Click the Create group button, then Next to continue the tour"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_groups.html:55
+msgid "Give your group a name and describe what it is about. You can make user groups for any purpose - a reading group, a bunch of friends, whatever!"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_groups.html:56
+msgid "Creating a group"
+msgstr "그룹 만들기"
+
+#: bookwyrm/templates/guided_tour/user_groups.html:78
+msgid "Groups have privacy settings just like posts and lists, except that group privacy cannot be Followers ."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_groups.html:79
+msgid "Group visibility"
+msgstr "그룹 공개 범위"
+
+#: bookwyrm/templates/guided_tour/user_groups.html:102
+msgid "Once you're happy with how everything is set up, click the Save button to create your new group."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_groups.html:102
+msgid "Create and save a group to continue the tour."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_groups.html:103
+msgid "Save your group"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_profile.html:10
+msgid "This is your user profile. All your latest activities will be listed here. Other Bookwyrm users can see parts of this page too - what they can see depends on your privacy settings."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_profile.html:11
+#: bookwyrm/templates/user/layout.html:20 bookwyrm/templates/user/user.html:14
+msgid "User Profile"
+msgstr "이용자 프로필"
+
+#: bookwyrm/templates/guided_tour/user_profile.html:31
+msgid "This tab shows everything you have read towards your annual reading goal, or allows you to set one. You don't have to set a reading goal if that's not your thing!"
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_profile.html:32
+#: bookwyrm/templates/user/goal.html:6 bookwyrm/templates/user/layout.html:89
+msgid "Reading Goal"
+msgstr "읽기 목표"
+
+#: bookwyrm/templates/guided_tour/user_profile.html:54
+msgid "Here you can see your groups, or create a new one. A group brings together Bookwyrm users and allows them to curate lists together."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_profile.html:77
+msgid "You can see your lists, or create a new one, here. A list is a collection of books that have something in common."
+msgstr "여기에서 목록을 보거나 새 목록을 만들 수 있습니다. 목록은 공통점을 가진 책의 모음입니다."
+
+#: bookwyrm/templates/guided_tour/user_profile.html:100
+msgid "The Books tab shows your book shelves. We'll explore this later in the tour."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_profile.html:123
+msgid "Now you understand the basics of your profile page, let's add a book to your shelves."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_profile.html:123
+msgid "Search for a title or author to continue the tour."
+msgstr ""
+
+#: bookwyrm/templates/guided_tour/user_profile.html:124
+msgid "Find a book"
+msgstr "책 찾기"
+
+#: bookwyrm/templates/hashtag.html:12
+#, python-format
+msgid "See tagged statuses in the local %(site_name)s community"
+msgstr ""
+
+#: bookwyrm/templates/hashtag.html:25
+msgid "No activities for this hashtag yet!"
+msgstr ""
+
+#: bookwyrm/templates/import/import.html:5
+#: bookwyrm/templates/import/import.html:6
+#: bookwyrm/templates/preferences/layout.html:43
+msgid "Import Book List"
+msgstr "도서 목록 가져오기"
+
+#: bookwyrm/templates/import/import.html:12
+msgid "Not a valid CSV file"
+msgstr "유효하지 않은 CSV 파일"
+
+#: bookwyrm/templates/import/import.html:20
+#, python-format
+msgid "Currently, you are allowed to import %(display_size)s books every %(import_limit_reset)s day."
+msgid_plural "Currently, you are allowed to import %(display_size)s books every %(import_limit_reset)s days."
+msgstr[0] ""
+
+#: bookwyrm/templates/import/import.html:26
+#, python-format
+msgid "You have %(display_left)s left."
+msgstr ""
+
+#: bookwyrm/templates/import/import.html:33
+#, python-format
+msgid "On average, recent imports have taken %(hours)s hours."
+msgstr "최근 가져오기에 걸린 시간은 평균 %(hours)s시간입니다."
+
+#: bookwyrm/templates/import/import.html:37
+#, python-format
+msgid "On average, recent imports have taken %(minutes)s minutes."
+msgstr "최근 가져오기에 걸린 시간은 평균 %(minutes)s분입니다."
+
+#: bookwyrm/templates/import/import.html:52
+msgid "Data source:"
+msgstr "데이터 출처:"
+
+#: bookwyrm/templates/import/import.html:58
+msgid "Goodreads (CSV)"
+msgstr "Goodreads (CSV)"
+
+#: bookwyrm/templates/import/import.html:61
+msgid "Storygraph (CSV)"
+msgstr "Storygraph (CSV)"
+
+#: bookwyrm/templates/import/import.html:64
+msgid "LibraryThing (TSV)"
+msgstr "LibraryThing (TSV)"
+
+#: bookwyrm/templates/import/import.html:67
+msgid "OpenLibrary (CSV)"
+msgstr "OpenLibrary (CSV)"
+
+#: bookwyrm/templates/import/import.html:70
+msgid "Calibre (CSV)"
+msgstr "Calibre (CSV)"
+
+#: bookwyrm/templates/import/import.html:76
+msgid "You can download your Goodreads data from the Import/Export page of your Goodreads account."
+msgstr "Goodreads 데이터는 계정의 가져오기/내보내기t 페이지에서 내려받을 수 있습니다."
+
+#: bookwyrm/templates/import/import.html:85
+#: bookwyrm/templates/import/import_user.html:49
+msgid "Data file:"
+msgstr "데이터 파일:"
+
+#: bookwyrm/templates/import/import.html:93
+msgid "Include reviews"
+msgstr "서평 포함"
+
+#: bookwyrm/templates/import/import.html:98
+msgid "Privacy setting for imported reviews:"
+msgstr "가져온 서평의 개인정보처리 설정"
+
+#: bookwyrm/templates/import/import.html:105
+#: bookwyrm/templates/import/import.html:107
+#: bookwyrm/templates/import/import_user.html:155
+#: bookwyrm/templates/import/import_user.html:157
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:78
+msgid "Import"
+msgstr "가져오기"
+
+#: bookwyrm/templates/import/import.html:108
+#: bookwyrm/templates/import/import_user.html:158
+msgid "You've reached the import limit."
+msgstr ""
+
+#: bookwyrm/templates/import/import.html:117
+#: bookwyrm/templates/import/import_user.html:27
+msgid "Imports are temporarily disabled; thank you for your patience."
+msgstr ""
+
+#: bookwyrm/templates/import/import.html:124
+#: bookwyrm/templates/import/import_user.html:166
+msgid "Recent Imports"
+msgstr ""
+
+#: bookwyrm/templates/import/import.html:129
+#: bookwyrm/templates/import/import_user.html:171
+#: bookwyrm/templates/settings/imports/imports.html:153
+#: bookwyrm/templates/settings/imports/imports.html:243
+msgid "Date Created"
+msgstr ""
+
+#: bookwyrm/templates/import/import.html:132
+#: bookwyrm/templates/import/import_user.html:174
+msgid "Last Updated"
+msgstr "최근 갱신일"
+
+#: bookwyrm/templates/import/import.html:135
+#: bookwyrm/templates/settings/imports/imports.html:162
+msgid "Items"
+msgstr "항목"
+
+#: bookwyrm/templates/import/import.html:144
+#: bookwyrm/templates/import/import_user.html:183
+#: bookwyrm/templates/preferences/export-user.html:87
+msgid "No recent imports"
+msgstr "최근 가져온 내역 없음."
+
+#: bookwyrm/templates/import/import_status.html:6
+#: bookwyrm/templates/import/import_status.html:15
+#: bookwyrm/templates/import/import_status.html:29
+msgid "Import Status"
+msgstr "기록 가져오기"
+
+#: bookwyrm/templates/import/import_status.html:13
+#: bookwyrm/templates/import/import_status.html:27
+msgid "Retry Status"
+msgstr "기록 재시도"
+
+#: bookwyrm/templates/import/import_status.html:22
+#: bookwyrm/templates/settings/celery.html:45
+#: bookwyrm/templates/settings/imports/imports.html:6
+#: bookwyrm/templates/settings/imports/imports.html:9
+#: bookwyrm/templates/settings/layout.html:82
+msgid "Imports"
+msgstr "가져오기"
+
+#: bookwyrm/templates/import/import_status.html:39
+msgid "Import started:"
+msgstr "가져오기 시작됨:"
+
+#: bookwyrm/templates/import/import_status.html:48
+msgid "In progress"
+msgstr "진행 중"
+
+#: bookwyrm/templates/import/import_status.html:50
+msgid "Refresh"
+msgstr "새로고침"
+
+#: bookwyrm/templates/import/import_status.html:72
+#: bookwyrm/templates/settings/imports/imports.html:194
+#: bookwyrm/templates/settings/imports/imports.html:271
+msgid "Stop import"
+msgstr "가져오기 중단"
+
+#: bookwyrm/templates/import/import_status.html:78
+#, python-format
+msgid "%(display_counter)s item needs manual approval."
+msgid_plural "%(display_counter)s items need manual approval."
+msgstr[0] ""
+
+#: bookwyrm/templates/import/import_status.html:83
+#: bookwyrm/templates/import/manual_review.html:8
+msgid "Review items"
+msgstr "항목 검토"
+
+#: bookwyrm/templates/import/import_status.html:89
+#, python-format
+msgid "%(display_counter)s item failed to import."
+msgid_plural "%(display_counter)s items failed to import."
+msgstr[0] "%(display_counter)s개 항목을 가져오지 못했습니다."
+
+#: bookwyrm/templates/import/import_status.html:95
+msgid "View and troubleshoot failed items"
+msgstr "실패한 항목을 살피고 문제해결하기"
+
+#: bookwyrm/templates/import/import_status.html:107
+msgid "Row"
+msgstr "열"
+
+#: bookwyrm/templates/import/import_status.html:110
+#: bookwyrm/templates/shelf/shelf.html:150
+#: bookwyrm/templates/shelf/shelf.html:172
+msgid "Title"
+msgstr "책제목"
+
+#: bookwyrm/templates/import/import_status.html:113
+msgid "ISBN"
+msgstr "ISBN"
+
+#: bookwyrm/templates/import/import_status.html:117
+msgid "Openlibrary key"
+msgstr "OpenLibray 키"
+
+#: bookwyrm/templates/import/import_status.html:121
+#: bookwyrm/templates/shelf/shelf.html:151
+#: bookwyrm/templates/shelf/shelf.html:175
+msgid "Author"
+msgstr "저자"
+
+#: bookwyrm/templates/import/import_status.html:124
+msgid "Shelf"
+msgstr "책꽂이"
+
+#: bookwyrm/templates/import/import_status.html:127
+#: bookwyrm/templates/import/manual_review.html:13
+#: bookwyrm/templates/snippets/create_status.html:16
+msgid "Review"
+msgstr "서평"
+
+#: bookwyrm/templates/import/import_status.html:131
+#: bookwyrm/templates/settings/link_domains/link_table.html:9
+msgid "Book"
+msgstr "책"
+
+#: bookwyrm/templates/import/import_status.html:142
+msgid "Import preview unavailable."
+msgstr ""
+
+#: bookwyrm/templates/import/import_status.html:150
+msgid "No items currently need review"
+msgstr "검토해야 할 항목이 없습니다."
+
+#: bookwyrm/templates/import/import_status.html:186
+msgid "View imported review"
+msgstr ""
+
+#: bookwyrm/templates/import/import_status.html:200
+msgid "Imported"
+msgstr "가져오기 마침"
+
+#: bookwyrm/templates/import/import_status.html:206
+msgid "Needs manual review"
+msgstr "직접 검토해야 할 것들"
+
+#: bookwyrm/templates/import/import_status.html:219
+msgid "Retry"
+msgstr "재시도"
+
+#: bookwyrm/templates/import/import_status.html:237
+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 ""
+
+#: bookwyrm/templates/import/import_status.html:239
+msgid "Update import"
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:5
+#: bookwyrm/templates/import/import_user.html:6
+#: bookwyrm/templates/preferences/layout.html:51
+msgid "Import BookWyrm Account"
+msgstr "BookWyrm 계정 가져오기"
+
+#: bookwyrm/templates/import/import_user.html:13
+msgid "Not a valid import file"
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:18
+msgid "If you wish to migrate any statuses (comments, reviews, or quotes) you must either set this account as an alias of the one you are migrating from, or move that account to this one, before you import your user data."
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:32
+#, python-format
+msgid "Currently you are allowed to import one user every %(user_import_hours)s hours."
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:33
+#, python-format
+msgid "You will next be able to import a user file at %(next_available)s"
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:41
+msgid "Step 1:"
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:43
+msgid "Select an export file generated from another BookWyrm account. The file format should be .tar.gz
."
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:58
+msgid "Step 2:"
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:60
+msgid "Deselect any checkboxes for data you do not wish to include in your import."
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:71
+#: bookwyrm/templates/shelf/shelf.html:26
+#: bookwyrm/templates/user/relationships/followers.html:18
+#: bookwyrm/templates/user/relationships/following.html:18
+msgid "User profile"
+msgstr "이용자 프로필"
+
+#: bookwyrm/templates/import/import_user.html:74
+msgid "Overwrites display name, summary, and avatar"
+msgstr "나타낼 이름과 요약, 아바타를 덮어쓰기"
+
+#: bookwyrm/templates/import/import_user.html:80
+msgid "User settings"
+msgstr "이용자 설정"
+
+#: bookwyrm/templates/import/import_user.html:83
+msgid "Overwrites:"
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:86
+msgid "Whether manual approval is required for other users to follow your account"
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:89
+msgid "Whether following/followers are shown on your profile"
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:92
+msgid "Whether your reading goal is shown on your profile"
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:95
+msgid "Whether you see user follow suggestions"
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:98
+msgid "Whether your account is suggested to others"
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:101
+msgid "Your timezone"
+msgstr "내 시간대"
+
+#: bookwyrm/templates/import/import_user.html:104
+msgid "Your default post privacy setting"
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:112
+msgid "Followers and following"
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:116
+msgid "User blocks"
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:123
+msgid "Reading goals"
+msgstr "읽기 목표"
+
+#: bookwyrm/templates/import/import_user.html:126
+msgid "Overwrites reading goals for all years listed in the import file"
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:130
+msgid "Shelves"
+msgstr "책꽂이"
+
+#: bookwyrm/templates/import/import_user.html:133
+msgid "Reading history"
+msgstr "읽은 내역"
+
+#: bookwyrm/templates/import/import_user.html:136
+msgid "Book reviews"
+msgstr "책 평가"
+
+#: bookwyrm/templates/import/import_user.html:142
+msgid "Comments about books"
+msgstr ""
+
+#: bookwyrm/templates/import/import_user.html:145
+msgid "Book lists"
+msgstr "책 목록"
+
+#: bookwyrm/templates/import/import_user.html:148
+msgid "Saved lists"
+msgstr ""
+
+#: bookwyrm/templates/import/manual_review.html:5
+#: bookwyrm/templates/import/troubleshoot.html:4
+msgid "Import Troubleshooting"
+msgstr "가져오기 문제해결"
+
+#: bookwyrm/templates/import/manual_review.html:21
+msgid "Approving a suggestion will permanently add the suggested book to your shelves and associate your reading dates, reviews, and ratings with that book."
+msgstr ""
+
+#: bookwyrm/templates/import/manual_review.html:58
+#: bookwyrm/templates/lists/curate.html:71
+#: bookwyrm/templates/settings/link_domains/link_domains.html:76
+msgid "Approve"
+msgstr "승인하기"
+
+#: bookwyrm/templates/import/manual_review.html:66
+msgid "Reject"
+msgstr "거절"
+
+#: bookwyrm/templates/import/troubleshoot.html:7
+#: bookwyrm/templates/settings/imports/imports.html:171
+msgid "Failed items"
+msgstr "실패한 항목"
+
+#: bookwyrm/templates/import/troubleshoot.html:12
+msgid "Troubleshooting"
+msgstr "문제해결"
+
+#: bookwyrm/templates/import/troubleshoot.html:20
+msgid "Re-trying an import can fix missing items in cases such as:"
+msgstr "가져오기를 다시 시도하면 다음의 경우에 누락된 항목이 수정될 수 있습니다."
+
+#: bookwyrm/templates/import/troubleshoot.html:23
+msgid "The book has been added to the instance since this import"
+msgstr "이 가져오기 이후 책이 서버에 추가된 경우."
+
+#: bookwyrm/templates/import/troubleshoot.html:24
+msgid "A transient error or timeout caused the external data source to be unavailable."
+msgstr "일시적인 오류 또는 시간 초과로 인해 외부 데이터 소스를 사용할 수 없었던 경우."
+
+#: bookwyrm/templates/import/troubleshoot.html:25
+msgid "BookWyrm has been updated since this import with a bug fix"
+msgstr "이 가져오기 이후 BookWyrm이 버그 수정과 함께 업데이트된 경우."
+
+#: bookwyrm/templates/import/troubleshoot.html:28
+msgid "Contact your admin or open an issue if you are seeing unexpected failed items."
+msgstr "예상치 못한 실패 항목이 표시되는 경우에는 관리자에게 문의하거나 이슈를 열어주세요. "
+
+#: bookwyrm/templates/landing/invite.html:4
+#: bookwyrm/templates/landing/invite.html:8
+#: bookwyrm/templates/landing/login.html:48
+#: bookwyrm/templates/landing/reactivate.html:41
+msgid "Create an Account"
+msgstr "계정 만들기"
+
+#: bookwyrm/templates/landing/invite.html:22
+msgid "Sorry! This invite code is no longer valid."
+msgstr ""
+
+#: bookwyrm/templates/landing/landing.html:9
+msgid "Recent Books"
+msgstr "최근 도서"
+
+#: bookwyrm/templates/landing/layout.html:17
+msgid "Decentralized"
+msgstr "탈중앙화"
+
+#: bookwyrm/templates/landing/layout.html:23
+msgid "Friendly"
+msgstr "친근함"
+
+#: bookwyrm/templates/landing/layout.html:29
+msgid "Anti-Corporate"
+msgstr "반기업"
+
+#: bookwyrm/templates/landing/layout.html:46
+#, python-format
+msgid "Join %(name)s"
+msgstr "%(name)s 서버에서 참여하기"
+
+#: bookwyrm/templates/landing/layout.html:48
+msgid "Request an Invitation"
+msgstr "초대장 요청하기"
+
+#: bookwyrm/templates/landing/layout.html:50
+#, python-format
+msgid "%(name)s registration is closed"
+msgstr ""
+
+#: bookwyrm/templates/landing/layout.html:61
+msgid "Thank you! Your request has been received."
+msgstr ""
+
+#: bookwyrm/templates/landing/layout.html:90
+msgid "Your Account"
+msgstr "내 계정"
+
+#: bookwyrm/templates/landing/login.html:4
+msgid "Login"
+msgstr "로그인"
+
+#: bookwyrm/templates/landing/login.html:7
+#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:142
+#: bookwyrm/templates/ostatus/error.html:37
+msgid "Log in"
+msgstr "로그인"
+
+#: bookwyrm/templates/landing/login.html:15
+msgid "Success! Email address confirmed."
+msgstr "성공! 이메일 주소 확인을 마쳤습니다."
+
+#: bookwyrm/templates/landing/login.html:21
+#: bookwyrm/templates/landing/reactivate.html:17
+#: bookwyrm/templates/layout.html:128 bookwyrm/templates/ostatus/error.html:28
+#: bookwyrm/templates/snippets/register_form.html:4
+msgid "Username:"
+msgstr "이용자명:"
+
+#: bookwyrm/templates/landing/login.html:27
+#: bookwyrm/templates/landing/password_reset.html:26
+#: bookwyrm/templates/landing/reactivate.html:23
+#: bookwyrm/templates/layout.html:132 bookwyrm/templates/ostatus/error.html:32
+#: bookwyrm/templates/preferences/2fa.html:91
+#: bookwyrm/templates/snippets/register_form.html:45
+msgid "Password:"
+msgstr "암호:"
+
+#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:139
+#: bookwyrm/templates/ostatus/error.html:34
+msgid "Forgot your password?"
+msgstr "암호를 잊었나요?"
+
+#: bookwyrm/templates/landing/login.html:61
+#: bookwyrm/templates/landing/reactivate.html:54
+msgid "More about this site"
+msgstr "이 사이트 더 알아보기"
+
+#: bookwyrm/templates/landing/password_reset.html:43
+#: bookwyrm/templates/preferences/change_password.html:33
+#: bookwyrm/templates/preferences/delete_user.html:35
+msgid "Confirm password:"
+msgstr "암호 확인:"
+
+#: bookwyrm/templates/landing/password_reset_request.html:14
+#, python-format
+msgid "A password reset link will be sent to %(email)s if there is an account using that email address."
+msgstr ""
+
+#: bookwyrm/templates/landing/password_reset_request.html:20
+msgid "A link to reset your password will be sent to your email address"
+msgstr ""
+
+#: bookwyrm/templates/landing/password_reset_request.html:34
+msgid "Reset password"
+msgstr "암호 재설정"
+
+#: bookwyrm/templates/landing/reactivate.html:4
+#: bookwyrm/templates/landing/reactivate.html:7
+msgid "Reactivate Account"
+msgstr "계정 휴면 해제하기"
+
+#: bookwyrm/templates/landing/reactivate.html:32
+msgid "Reactivate account"
+msgstr "계정 휴면 해제하기"
+
+#: bookwyrm/templates/layout.html:13
+#, python-format
+msgid "%(site_name)s search"
+msgstr ""
+
+#: bookwyrm/templates/layout.html:39
+msgid "Search for a book, user, or list"
+msgstr ""
+
+#: bookwyrm/templates/layout.html:54 bookwyrm/templates/layout.html:55
+msgid "Scan Barcode"
+msgstr "바코드 스캔하기"
+
+#: bookwyrm/templates/layout.html:69
+msgid "Main navigation menu"
+msgstr ""
+
+#: bookwyrm/templates/layout.html:134 bookwyrm/templates/ostatus/error.html:33
+msgid "password"
+msgstr "암호"
+
+#: bookwyrm/templates/layout.html:136
+msgid "Show/Hide password"
+msgstr "암호 보이기/숨기기"
+
+#: bookwyrm/templates/layout.html:150
+msgid "Join"
+msgstr "참여하기"
+
+#: bookwyrm/templates/layout.html:196
+msgid "Successfully posted status"
+msgstr ""
+
+#: bookwyrm/templates/layout.html:197
+msgid "Error posting status"
+msgstr "기록을 게시하는 중 오류가 발생했습니다."
+
+#: bookwyrm/templates/lists/add_item_modal.html:8
+#, python-format
+msgid "Add \"%(title)s \" to this list"
+msgstr ""
+
+#: bookwyrm/templates/lists/add_item_modal.html:12
+#, python-format
+msgid "Suggest \"%(title)s \" for this list"
+msgstr ""
+
+#: bookwyrm/templates/lists/add_item_modal.html:41
+#: bookwyrm/templates/lists/list.html:257
+msgid "Suggest"
+msgstr "제안사항"
+
+#: bookwyrm/templates/lists/bookmark_button.html:30
+msgid "Un-save"
+msgstr ""
+
+#: bookwyrm/templates/lists/created_text.html:5
+#, python-format
+msgid "Created by %(username)s and managed by %(groupname)s "
+msgstr ""
+
+#: bookwyrm/templates/lists/created_text.html:7
+#, python-format
+msgid "Created and curated by %(username)s "
+msgstr ""
+
+#: bookwyrm/templates/lists/created_text.html:9
+#, python-format
+msgid "Created by %(username)s "
+msgstr ""
+
+#: bookwyrm/templates/lists/curate.html:12
+msgid "Curate"
+msgstr ""
+
+#: bookwyrm/templates/lists/curate.html:21
+msgid "Pending Books"
+msgstr ""
+
+#: bookwyrm/templates/lists/curate.html:24
+msgid "You're all set!"
+msgstr ""
+
+#: bookwyrm/templates/lists/curate.html:45
+#: bookwyrm/templates/lists/list.html:93
+#, python-format
+msgid "%(username)s says:"
+msgstr ""
+
+#: bookwyrm/templates/lists/curate.html:55
+msgid "Suggested by"
+msgstr ""
+
+#: bookwyrm/templates/lists/curate.html:77
+msgid "Discard"
+msgstr "버리기"
+
+#: bookwyrm/templates/lists/delete_list_modal.html:4
+msgid "Delete this list?"
+msgstr "이 목록을 지울까요?"
+
+#: bookwyrm/templates/lists/edit_form.html:5
+#: bookwyrm/templates/lists/layout.html:23
+msgid "Edit List"
+msgstr "목록 편집"
+
+#: bookwyrm/templates/lists/embed-list.html:8
+#, python-format
+msgid "%(list_name)s, a list by %(owner)s"
+msgstr ""
+
+#: bookwyrm/templates/lists/embed-list.html:20
+#, python-format
+msgid "on %(site_name)s "
+msgstr ""
+
+#: bookwyrm/templates/lists/embed-list.html:29
+msgid "This list is currently empty"
+msgstr ""
+
+#: bookwyrm/templates/lists/form.html:19
+msgid "List curation:"
+msgstr "목록 큐레이션:"
+
+#: bookwyrm/templates/lists/form.html:31
+msgid "Closed"
+msgstr "닫힘"
+
+#: bookwyrm/templates/lists/form.html:34
+msgid "Only you can add and remove books to this list"
+msgstr "작성자만 이 목록에 책을 추가하고 제거할 수 있습니다."
+
+#: bookwyrm/templates/lists/form.html:48
+msgid "Curated"
+msgstr "선정"
+
+#: bookwyrm/templates/lists/form.html:51
+msgid "Anyone can suggest books, subject to your approval"
+msgstr "누구나 책을 제안할 수 있으며, 승인을 받아야 합니다."
+
+#: bookwyrm/templates/lists/form.html:65
+msgctxt "curation type"
+msgid "Open"
+msgstr "열기"
+
+#: bookwyrm/templates/lists/form.html:68
+msgid "Anyone can add books to this list"
+msgstr "누구나 이 목록에 책을 추가할 수 있습니다."
+
+#: bookwyrm/templates/lists/form.html:82
+msgid "Group"
+msgstr "그룹"
+
+#: bookwyrm/templates/lists/form.html:85
+msgid "Group members can add to and remove from this list"
+msgstr "그룹 구성원이 이 목록에 더하거나 뺄 수 있습니다."
+
+#: bookwyrm/templates/lists/form.html:90
+msgid "Select Group"
+msgstr "그룹 선택하기"
+
+#: bookwyrm/templates/lists/form.html:94
+msgid "Select a group"
+msgstr ""
+
+#: bookwyrm/templates/lists/form.html:105
+msgid "You don't have any Groups yet!"
+msgstr ""
+
+#: bookwyrm/templates/lists/form.html:107
+msgid "Create a Group"
+msgstr ""
+
+#: bookwyrm/templates/lists/form.html:121
+msgid "Delete list"
+msgstr ""
+
+#: bookwyrm/templates/lists/item_notes_field.html:7
+#: bookwyrm/templates/settings/federation/edit_instance.html:86
+msgid "Notes:"
+msgstr ""
+
+#: bookwyrm/templates/lists/item_notes_field.html:19
+msgid "An optional note that will be displayed with the book."
+msgstr ""
+
+#: bookwyrm/templates/lists/list.html:37
+msgid "That book is already on this list."
+msgstr ""
+
+#: bookwyrm/templates/lists/list.html:45
+msgid "You successfully suggested a book for this list!"
+msgstr ""
+
+#: bookwyrm/templates/lists/list.html:47
+msgid "You successfully added a book to this list!"
+msgstr ""
+
+#: bookwyrm/templates/lists/list.html:54
+msgid "This list is currently empty."
+msgstr ""
+
+#: bookwyrm/templates/lists/list.html:104
+msgid "Edit notes"
+msgstr "노트 편집"
+
+#: bookwyrm/templates/lists/list.html:119
+msgid "Add notes"
+msgstr ""
+
+#: bookwyrm/templates/lists/list.html:131
+#, python-format
+msgid "Added by %(username)s "
+msgstr ""
+
+#: bookwyrm/templates/lists/list.html:146
+msgid "List position"
+msgstr "목록 위치"
+
+#: bookwyrm/templates/lists/list.html:152
+#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:23
+msgid "Set"
+msgstr "설정"
+
+#: bookwyrm/templates/lists/list.html:167
+#: bookwyrm/templates/snippets/remove_follower_button.html:4
+#: bookwyrm/templates/snippets/remove_from_group_button.html:20
+msgid "Remove"
+msgstr "제거"
+
+#: bookwyrm/templates/lists/list.html:181
+#: bookwyrm/templates/lists/list.html:198
+msgid "Sort List"
+msgstr "목록 정렬"
+
+#: bookwyrm/templates/lists/list.html:191
+msgid "Direction"
+msgstr "방향"
+
+#: bookwyrm/templates/lists/list.html:205
+msgid "Add Books"
+msgstr "책 추가하기"
+
+#: bookwyrm/templates/lists/list.html:207
+msgid "Suggest Books"
+msgstr "읽을 책 제안"
+
+#: bookwyrm/templates/lists/list.html:218
+msgid "search"
+msgstr "검색"
+
+#: bookwyrm/templates/lists/list.html:224
+msgid "Clear search"
+msgstr "검색 초기화"
+
+#: bookwyrm/templates/lists/list.html:229
+#, python-format
+msgid "No books found matching the query \"%(query)s\""
+msgstr ""
+
+#: bookwyrm/templates/lists/list.html:268
+msgid "Embed this list on a website"
+msgstr ""
+
+#: bookwyrm/templates/lists/list.html:276
+msgid "Copy embed code"
+msgstr ""
+
+#: bookwyrm/templates/lists/list.html:278
+#, python-format
+msgid "%(list_name)s, a list by %(owner)s on %(site_name)s"
+msgstr ""
+
+#: bookwyrm/templates/lists/list_items.html:15
+msgid "Saved"
+msgstr "저장함"
+
+#: bookwyrm/templates/lists/list_items.html:50
+msgid "No lists found."
+msgstr "목록이 없습니다."
+
+#: bookwyrm/templates/lists/lists.html:14 bookwyrm/templates/user/lists.html:14
+msgid "Your Lists"
+msgstr "내 목록"
+
+#: bookwyrm/templates/lists/lists.html:36
+msgid "All Lists"
+msgstr "모든 목록"
+
+#: bookwyrm/templates/lists/lists.html:40
+msgid "Saved Lists"
+msgstr "저장한 목록"
+
+#: bookwyrm/templates/moved.html:27
+#, python-format
+msgid "You have moved your account to %(username)s "
+msgstr ""
+
+#: bookwyrm/templates/moved.html:32
+msgid "You can undo the move to restore full functionality, but some followers may have already unfollowed this account."
+msgstr ""
+
+#: bookwyrm/templates/moved.html:42
+msgid "Undo move"
+msgstr ""
+
+#: bookwyrm/templates/moved.html:46 bookwyrm/templates/user_menu.html:77
+msgid "Log out"
+msgstr "로그아웃"
+
+#: bookwyrm/templates/notifications/items/accept.html:18
+#, python-format
+msgid "%(related_user)s accepted your invitation to join group \"%(group_name)s \""
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/accept.html:26
+#, python-format
+msgid "%(related_user)s and %(second_user)s accepted your invitation to join group \"%(group_name)s \""
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/accept.html:36
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others accepted your invitation to join group \"%(group_name)s \""
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/add.html:33
+#, python-format
+msgid "%(related_user)s added %(book_title)s to your list \"%(list_name)s \""
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/add.html:39
+#, python-format
+msgid "%(related_user)s suggested adding %(book_title)s to your list \"%(list_name)s \""
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/add.html:47
+#, python-format
+msgid "%(related_user)s added %(book_title)s and %(second_book_title)s to your list \"%(list_name)s \""
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/add.html:54
+#, python-format
+msgid "%(related_user)s suggested adding %(book_title)s and %(second_book_title)s to your list \"%(list_name)s \""
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/add.html:66
+#, python-format
+msgid "%(related_user)s added a book to one of your lists"
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/add.html:72
+#, python-format
+msgid "%(related_user)s added %(book_title)s , %(second_book_title)s , and %(display_count)s other book to your list \"%(list_name)s \""
+msgid_plural "%(related_user)s added %(book_title)s , %(second_book_title)s , and %(display_count)s other books to your list \"%(list_name)s \""
+msgstr[0] ""
+
+#: bookwyrm/templates/notifications/items/add.html:88
+#, python-format
+msgid "%(related_user)s suggested adding %(book_title)s , %(second_book_title)s , and %(display_count)s other book to your list \"%(list_name)s \""
+msgid_plural "%(related_user)s suggested adding %(book_title)s , %(second_book_title)s , and %(display_count)s other books to your list \"%(list_name)s \""
+msgstr[0] ""
+
+#: bookwyrm/templates/notifications/items/boost.html:21
+#, python-format
+msgid "%(related_user)s boosted your review of %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/boost.html:27
+#, python-format
+msgid "%(related_user)s and %(second_user)s boosted your review of %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/boost.html:36
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others boosted your review of %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/boost.html:44
+#, python-format
+msgid "%(related_user)s boosted your comment on %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/boost.html:50
+#, python-format
+msgid "%(related_user)s and %(second_user)s boosted your comment on %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/boost.html:59
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others boosted your comment on %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/boost.html:67
+#, python-format
+msgid "%(related_user)s boosted your quote from %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/boost.html:73
+#, python-format
+msgid "%(related_user)s and %(second_user)s boosted your quote from %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/boost.html:82
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others boosted your quote from %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/boost.html:90
+#, python-format
+msgid "%(related_user)s boosted your status "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/boost.html:96
+#, python-format
+msgid "%(related_user)s and %(second_user)s boosted your status "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/boost.html:105
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others boosted your status "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/fav.html:21
+#, python-format
+msgid "%(related_user)s liked your review of %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/fav.html:27
+#, python-format
+msgid "%(related_user)s and %(second_user)s liked your review of %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/fav.html:36
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others liked your review of %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/fav.html:44
+#, python-format
+msgid "%(related_user)s liked your comment on %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/fav.html:50
+#, python-format
+msgid "%(related_user)s and %(second_user)s liked your comment on %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/fav.html:59
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others liked your comment on %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/fav.html:67
+#, python-format
+msgid "%(related_user)s liked your quote from %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/fav.html:73
+#, python-format
+msgid "%(related_user)s and %(second_user)s liked your quote from %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/fav.html:82
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others liked your quote from %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/fav.html:90
+#, python-format
+msgid "%(related_user)s liked your status "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/fav.html:96
+#, python-format
+msgid "%(related_user)s and %(second_user)s liked your status "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/fav.html:105
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others liked your status "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/follow.html:16
+#, python-format
+msgid "%(related_user)s followed you"
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/follow.html:20
+#, python-format
+msgid "%(related_user)s and %(second_user)s followed you"
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/follow.html:25
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others followed you"
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/follow_request.html:15
+#, python-format
+msgid "%(related_user)s sent you a follow request"
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/import.html:14
+#, python-format
+msgid "Your import completed."
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/invite.html:16
+#, python-format
+msgid "%(related_user)s invited you to join the group \"%(group_name)s \""
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/invite_request.html:15
+#, python-format
+msgid "New invite request awaiting response"
+msgid_plural "%(display_count)s new invite requests awaiting response"
+msgstr[0] ""
+
+#: bookwyrm/templates/notifications/items/join.html:16
+#, python-format
+msgid "has joined your group \"%(group_name)s \""
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/leave.html:18
+#, python-format
+msgid "%(related_user)s has left your group \"%(group_name)s \""
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/leave.html:26
+#, python-format
+msgid "%(related_user)s and %(second_user)s have left your group \"%(group_name)s \""
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/leave.html:36
+#, python-format
+msgid "%(related_user)s and %(other_user_display_count)s others have left your group \"%(group_name)s \""
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/link_domain.html:15
+#, python-format
+msgid "A new link domain needs review"
+msgid_plural "%(display_count)s new link domains need moderation"
+msgstr[0] "검토해야 할 새로운 link domain 이 있습니다."
+
+#: bookwyrm/templates/notifications/items/mention.html:20
+#, python-format
+msgid "%(related_user)s mentioned you in a review of %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/mention.html:26
+#, python-format
+msgid "%(related_user)s mentioned you in a comment on %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/mention.html:32
+#, python-format
+msgid "%(related_user)s mentioned you in a quote from %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/mention.html:38
+#, python-format
+msgid "%(related_user)s mentioned you in a status "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/move_user.html:18
+#, python-format
+msgid "%(related_user)s has moved to %(username)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/move_user.html:25
+#, python-format
+msgid "%(related_user)s has undone their move"
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/remove.html:17
+#, python-format
+msgid "has been removed from your group \"%(group_name)s \""
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/remove.html:23
+#, python-format
+msgid "You have been removed from the \"%(group_name)s \" group"
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/reply.html:21
+#, python-format
+msgid "%(related_user)s replied to your review of %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/reply.html:27
+#, python-format
+msgid "%(related_user)s replied to your comment on %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/reply.html:33
+#, python-format
+msgid "%(related_user)s replied to your quote from %(book_title)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/reply.html:39
+#, python-format
+msgid "%(related_user)s replied to your status "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/report.html:15
+#, python-format
+msgid "A new report needs moderation"
+msgid_plural "%(display_count)s new reports need moderation"
+msgstr[0] ""
+
+#: bookwyrm/templates/notifications/items/status_preview.html:4
+#: bookwyrm/templates/snippets/status/content_status.html:62
+msgid "Content warning"
+msgstr "내용 경고"
+
+#: bookwyrm/templates/notifications/items/update.html:16
+#, python-format
+msgid "has changed the privacy level for %(group_name)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/update.html:20
+#, python-format
+msgid "has changed the name of %(group_name)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/update.html:24
+#, python-format
+msgid "has changed the description of %(group_name)s "
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/user_export.html:14
+#, python-format
+msgid "Your user export is ready."
+msgstr ""
+
+#: bookwyrm/templates/notifications/items/user_import.html:14
+#, python-format
+msgid "Your user import is complete."
+msgstr ""
+
+#: bookwyrm/templates/notifications/notifications_page.html:19
+msgid "Delete notifications"
+msgstr ""
+
+#: bookwyrm/templates/notifications/notifications_page.html:31
+msgid "All"
+msgstr "모두"
+
+#: bookwyrm/templates/notifications/notifications_page.html:35
+msgid "Mentions"
+msgstr "멘션"
+
+#: bookwyrm/templates/notifications/notifications_page.html:47
+msgid "You're all caught up!"
+msgstr "모두 따라잡았습니다!"
+
+#: bookwyrm/templates/ostatus/error.html:7
+#, python-format
+msgid "%(account)s is not a valid username"
+msgstr ""
+
+#: bookwyrm/templates/ostatus/error.html:8
+#: bookwyrm/templates/ostatus/error.html:13
+msgid "Check you have the correct username before trying again"
+msgstr ""
+
+#: bookwyrm/templates/ostatus/error.html:12
+#, python-format
+msgid "%(account)s could not be found or %(remote_domain)s
does not support identity discovery"
+msgstr ""
+
+#: bookwyrm/templates/ostatus/error.html:17
+#, python-format
+msgid "%(account)s was found but %(remote_domain)s
does not support 'remote follow'"
+msgstr ""
+
+#: bookwyrm/templates/ostatus/error.html:18
+#, python-format
+msgid "Try searching for %(user)s on %(remote_domain)s
instead"
+msgstr ""
+
+#: bookwyrm/templates/ostatus/error.html:46
+#, python-format
+msgid "Something went wrong trying to follow %(account)s "
+msgstr ""
+
+#: bookwyrm/templates/ostatus/error.html:47
+msgid "Check you have the correct username before trying again."
+msgstr ""
+
+#: bookwyrm/templates/ostatus/error.html:51
+#, python-format
+msgid "You have blocked %(account)s "
+msgstr ""
+
+#: bookwyrm/templates/ostatus/error.html:55
+#, python-format
+msgid "%(account)s has blocked you"
+msgstr ""
+
+#: bookwyrm/templates/ostatus/error.html:59
+#, python-format
+msgid "You are already following %(account)s "
+msgstr ""
+
+#: bookwyrm/templates/ostatus/error.html:63
+#, python-format
+msgid "You have already requested to follow %(account)s "
+msgstr ""
+
+#: bookwyrm/templates/ostatus/remote_follow.html:6
+#, python-format
+msgid "Follow %(username)s on the fediverse"
+msgstr ""
+
+#: bookwyrm/templates/ostatus/remote_follow.html:33
+#, python-format
+msgid "Follow %(username)s from another Fediverse account like BookWyrm, Mastodon, or Pleroma."
+msgstr ""
+
+#: bookwyrm/templates/ostatus/remote_follow.html:40
+msgid "User handle to follow from:"
+msgstr "팔로우하려는 이용자의 핸들:"
+
+#: bookwyrm/templates/ostatus/remote_follow.html:42
+msgid "Follow!"
+msgstr "팔로우!"
+
+#: bookwyrm/templates/ostatus/remote_follow_button.html:15
+msgid "Follow on Fediverse"
+msgstr "페디버스에서 팔로우하기"
+
+#: bookwyrm/templates/ostatus/remote_follow_button.html:19
+msgid "This link opens in a pop-up window"
+msgstr ""
+
+#: bookwyrm/templates/ostatus/subscribe.html:8
+#, python-format
+msgid "Log in to %(sitename)s"
+msgstr ""
+
+#: bookwyrm/templates/ostatus/subscribe.html:10
+#, python-format
+msgid "Error following from %(sitename)s"
+msgstr ""
+
+#: bookwyrm/templates/ostatus/subscribe.html:12
+#: bookwyrm/templates/ostatus/subscribe.html:22
+#, python-format
+msgid "Follow from %(sitename)s"
+msgstr ""
+
+#: bookwyrm/templates/ostatus/subscribe.html:18
+msgid "Uh oh..."
+msgstr "어랏…"
+
+#: bookwyrm/templates/ostatus/subscribe.html:20
+msgid "Let's log in first..."
+msgstr ""
+
+#: bookwyrm/templates/ostatus/subscribe.html:51
+#, python-format
+msgid "Follow %(username)s"
+msgstr "%(username)s 팔로우"
+
+#: bookwyrm/templates/ostatus/success.html:28
+#, python-format
+msgid "You are now following %(display_name)s!"
+msgstr ""
+
+#: bookwyrm/templates/preferences/2fa.html:4
+#: bookwyrm/templates/preferences/2fa.html:7
+#: bookwyrm/templates/preferences/layout.html:24
+msgid "Two Factor Authentication"
+msgstr "2단계 인증"
+
+#: bookwyrm/templates/preferences/2fa.html:16
+msgid "Successfully updated 2FA settings"
+msgstr "2FA 설정 업데이트를 잘 마쳤습니다."
+
+#: bookwyrm/templates/preferences/2fa.html:24
+msgid "Write down or copy and paste these codes somewhere safe."
+msgstr "이 코드를 적어 두거나 안전한 곳에 복사하여 붙여넣습니다."
+
+#: bookwyrm/templates/preferences/2fa.html:25
+msgid "You must use them in order, and they will not be displayed again."
+msgstr "순서대로 써야 하고, 다시 표시되지 않습니다."
+
+#: bookwyrm/templates/preferences/2fa.html:35
+msgid "Two Factor Authentication is active on your account."
+msgstr "계정에 2단계 인증이 활성 상태입니다."
+
+#: bookwyrm/templates/preferences/2fa.html:36
+#: bookwyrm/templates/preferences/disable-2fa.html:4
+#: bookwyrm/templates/preferences/disable-2fa.html:7
+msgid "Disable 2FA"
+msgstr "2FA 비활성화하기"
+
+#: bookwyrm/templates/preferences/2fa.html:39
+msgid "You can generate backup codes to use in case you do not have access to your authentication app. If you generate new codes, any backup codes previously generated will no longer work."
+msgstr "인증 앱에 액세스할 수 없는 경우에 대비하여 백업 코드를 생성하여 이용할 수 있습니다. 새 코드를 생성하면 이전에 생성한 백업 코드는 더 이상 기능하지 않습니다."
+
+#: bookwyrm/templates/preferences/2fa.html:40
+msgid "Generate backup codes"
+msgstr "백업 코드 생성하기"
+
+#: bookwyrm/templates/preferences/2fa.html:45
+msgid "Scan the QR code with your authentication app and then enter the code from your app below to confirm your app is set up."
+msgstr "인증 앱으로 QR 코드를 스캔한 다음 아래에 앱의 코드를 입력하여 앱이 설정되었는지 확인합니다."
+
+#: bookwyrm/templates/preferences/2fa.html:52
+msgid "Use setup key"
+msgstr "셋업 키 사용하기"
+
+#: bookwyrm/templates/preferences/2fa.html:58
+msgid "Account name:"
+msgstr "계정 이름:"
+
+#: bookwyrm/templates/preferences/2fa.html:65
+msgid "Code:"
+msgstr "코드:"
+
+#: bookwyrm/templates/preferences/2fa.html:73
+msgid "Enter the code from your app:"
+msgstr "2FA앱의 코드 기입:"
+
+#: bookwyrm/templates/preferences/2fa.html:83
+msgid "You can make your account more secure by using Two Factor Authentication (2FA). This will require you to enter a one-time code using a phone app like Authy , Google Authenticator or Microsoft Authenticator each time you log in."
+msgstr "2단계 인증 (2FA)를 이용해 계정을 더욱 안전하게 보호할 수 있습니다. 로그인할 때마다 Authy 나Google 인증기 , Microsoft 인증기 와 같은 휴대전화 앱을 이용해 일회용 코드를 입력해야 합니다."
+
+#: bookwyrm/templates/preferences/2fa.html:85
+msgid "Confirm your password to begin setting up 2FA."
+msgstr "2단계 인증 설정을 시작하려면 암호를 확인해 주시기 바랍니다."
+
+#: bookwyrm/templates/preferences/2fa.html:95
+#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:37
+msgid "Set up 2FA"
+msgstr "2FA 설정하기"
+
+#: bookwyrm/templates/preferences/alias_user.html:4
+#: bookwyrm/templates/preferences/move_user.html:4
+#: bookwyrm/templates/preferences/move_user.html:7
+#: bookwyrm/templates/preferences/move_user.html:39
+msgid "Move Account"
+msgstr "계정 옮기기"
+
+#: bookwyrm/templates/preferences/alias_user.html:7
+#: bookwyrm/templates/preferences/alias_user.html:34
+msgid "Create Alias"
+msgstr "별칭 만들기"
+
+#: bookwyrm/templates/preferences/alias_user.html:12
+msgid "Add another account as an alias"
+msgstr "다른 계정을 별칭으로 추가하기"
+
+#: bookwyrm/templates/preferences/alias_user.html:16
+msgid "Marking another account as an alias is required if you want to move that account to this one."
+msgstr ""
+
+#: bookwyrm/templates/preferences/alias_user.html:19
+msgid "This is a reversable action and will not change the functionality of this account."
+msgstr ""
+
+#: bookwyrm/templates/preferences/alias_user.html:25
+msgid "Enter the username for the account you want to add as an alias e.g. user@example.com :"
+msgstr ""
+
+#: bookwyrm/templates/preferences/alias_user.html:30
+#: bookwyrm/templates/preferences/move_user.html:35
+msgid "Confirm your password:"
+msgstr "암호 확인:"
+
+#: bookwyrm/templates/preferences/alias_user.html:39
+#: bookwyrm/templates/preferences/layout.html:28
+msgid "Aliases"
+msgstr "별칭"
+
+#: bookwyrm/templates/preferences/alias_user.html:49
+msgid "Remove alias"
+msgstr "별칭 제거하기"
+
+#: bookwyrm/templates/preferences/blocks.html:4
+#: bookwyrm/templates/preferences/blocks.html:7
+#: bookwyrm/templates/preferences/layout.html:62
+msgid "Blocked Users"
+msgstr "차단한 이용자"
+
+#: bookwyrm/templates/preferences/blocks.html:12
+msgid "No users currently blocked."
+msgstr "차단한 이용자가 없습니다."
+
+#: bookwyrm/templates/preferences/change_password.html:4
+#: bookwyrm/templates/preferences/change_password.html:7
+#: bookwyrm/templates/preferences/change_password.html:37
+#: bookwyrm/templates/preferences/layout.html:20
+msgid "Change Password"
+msgstr "암호 변경"
+
+#: bookwyrm/templates/preferences/change_password.html:15
+msgid "Successfully changed password"
+msgstr "암호 변경 성공"
+
+#: bookwyrm/templates/preferences/change_password.html:22
+msgid "Current password:"
+msgstr "현재 암호:"
+
+#: bookwyrm/templates/preferences/change_password.html:28
+msgid "New password:"
+msgstr "새 암호:"
+
+#: bookwyrm/templates/preferences/delete_user.html:4
+#: bookwyrm/templates/preferences/delete_user.html:7
+#: bookwyrm/templates/preferences/delete_user.html:40
+#: bookwyrm/templates/preferences/layout.html:36
+#: bookwyrm/templates/settings/users/delete_user_form.html:22
+msgid "Delete Account"
+msgstr "계정 삭제하기"
+
+#: bookwyrm/templates/preferences/delete_user.html:12
+msgid "Deactivate account"
+msgstr "계정 휴면하기"
+
+#: bookwyrm/templates/preferences/delete_user.html:15
+msgid "Your account will be hidden. You can log back in at any time to re-activate your account."
+msgstr "계정을 숨겨둬요. 언제든 다시 돌아와 계정을 휴면 해제할 수 있어요."
+
+#: bookwyrm/templates/preferences/delete_user.html:20
+msgid "Deactivate Account"
+msgstr "계정 휴면"
+
+#: bookwyrm/templates/preferences/delete_user.html:26
+msgid "Permanently delete account"
+msgstr "계정 영구히 지우기"
+
+#: bookwyrm/templates/preferences/delete_user.html:29
+msgid "Deleting your account cannot be undone. The username will not be available to register in the future."
+msgstr "계정을 지우면 되돌릴 수 없어요. 이 이용자 이름은 앞으로 가입 시에 쓸 수 없어요."
+
+#: bookwyrm/templates/preferences/disable-2fa.html:12
+msgid "Disable Two Factor Authentication"
+msgstr "2단계 인증 비활성하기"
+
+#: bookwyrm/templates/preferences/disable-2fa.html:14
+msgid "Disabling 2FA will allow anyone with your username and password to log in to your account."
+msgstr "2FA를 비활성화하면 내 이용자명과 암호만으로 누구나 내 계정에 로그인할 수 있습니다."
+
+#: bookwyrm/templates/preferences/disable-2fa.html:20
+msgid "Turn off 2FA"
+msgstr "2FA 끄기"
+
+#: bookwyrm/templates/preferences/edit_user.html:4
+#: bookwyrm/templates/preferences/edit_user.html:7
+#: bookwyrm/templates/preferences/layout.html:15
+msgid "Edit Profile"
+msgstr "프로필 편집"
+
+#: bookwyrm/templates/preferences/edit_user.html:12
+#: bookwyrm/templates/preferences/edit_user.html:25
+#: bookwyrm/templates/settings/users/user_info.html:8
+#: bookwyrm/templates/user_menu.html:29
+msgid "Profile"
+msgstr "프로필"
+
+#: bookwyrm/templates/preferences/edit_user.html:13
+#: bookwyrm/templates/preferences/edit_user.html:64
+#: bookwyrm/templates/settings/site.html:11
+#: bookwyrm/templates/settings/site.html:89
+#: bookwyrm/templates/setup/config.html:91
+msgid "Display"
+msgstr "표시"
+
+#: bookwyrm/templates/preferences/edit_user.html:14
+#: bookwyrm/templates/preferences/edit_user.html:112
+msgid "Privacy"
+msgstr "개인정보"
+
+#: bookwyrm/templates/preferences/edit_user.html:69
+msgid "Show reading goal prompt in feed"
+msgstr ""
+
+#: bookwyrm/templates/preferences/edit_user.html:75
+msgid "Show suggested users"
+msgstr "추천 이용자 보기"
+
+#: bookwyrm/templates/preferences/edit_user.html:81
+msgid "Show this account in suggested users"
+msgstr "이 계정을 추천 이용자에 보이기"
+
+#: bookwyrm/templates/preferences/edit_user.html:85
+#, python-format
+msgid "Your account will show up in the directory , and may be recommended to other BookWyrm users."
+msgstr ""
+
+#: bookwyrm/templates/preferences/edit_user.html:89
+msgid "Preferred Timezone: "
+msgstr "선호하는 시간대: "
+
+#: bookwyrm/templates/preferences/edit_user.html:101
+msgid "Theme:"
+msgstr "테마:"
+
+#: bookwyrm/templates/preferences/edit_user.html:117
+msgid "Manually approve followers"
+msgstr "수동으로 팔로워 승인"
+
+#: bookwyrm/templates/preferences/edit_user.html:123
+msgid "Hide followers and following on profile"
+msgstr "프로필에서 팔로워 및 팔로잉 숨기기"
+
+#: bookwyrm/templates/preferences/edit_user.html:128
+msgid "Default post privacy:"
+msgstr ""
+
+#: bookwyrm/templates/preferences/edit_user.html:136
+#, python-format
+msgid "Looking for shelf privacy? You can set a separate visibility level for each of your shelves. Go to Your Books , pick a shelf from the tab bar, and click \"Edit shelf.\""
+msgstr "개인정보 보호되는 책꽂이를 찾나요? 각 책꽂이 별로 가시성 수준을 설정할 수 있어요. 내 도서 로 이동 후, 탭 바에서 책꽂이를 골라 \"책꽂이 편집\"을 클릭하세요."
+
+#: bookwyrm/templates/preferences/export-user.html:5
+#: bookwyrm/templates/preferences/export-user.html:8
+#: bookwyrm/templates/preferences/layout.html:55
+msgid "Export BookWyrm Account"
+msgstr "BookWyrm 계정 내보내기"
+
+#: bookwyrm/templates/preferences/export-user.html:14
+msgid "You can create an export file here. This will allow you to migrate your data to another BookWyrm account."
+msgstr "이곳에서는 내보낼 파일을 만들 수 있습니다. 그러면 데이터를 다른 BookWyrm 계정으로 이전할 수 있습니다."
+
+#: bookwyrm/templates/preferences/export-user.html:17
+msgid " Your file will include: User profile Most user settings Reading goals Shelves Reading history Book reviews Statuses Your own lists and saved lists Which users you follow and block Your file will not include: Direct messages Replies to your statuses Groups Favorites "
+msgstr " 파일에 포함: 이용자 프로필 대부분의 이용자 설정 읽기 목표 책꽂이 읽은 내역 책 평가 기록 소유한 목록과 저장한 목록 팔로우 및 차단 이용자 "
+
+#: bookwyrm/templates/preferences/export-user.html:43
+msgid "In your new BookWyrm account can choose what to import: you will not have to import everything that is exported."
+msgstr ""
+
+#: bookwyrm/templates/preferences/export-user.html:46
+msgid "If you wish to migrate any statuses (comments, reviews, or quotes) you must either set the account you are moving to as an alias of this one, or move this account to the new account, before you import your user data."
+msgstr ""
+
+#: bookwyrm/templates/preferences/export-user.html:51
+#, python-format
+msgid "You will be able to create a new export file at %(next_available)s"
+msgstr ""
+
+#: bookwyrm/templates/preferences/export-user.html:60
+msgid "Create user export file"
+msgstr ""
+
+#: bookwyrm/templates/preferences/export-user.html:67
+msgid "Recent Exports"
+msgstr ""
+
+#: bookwyrm/templates/preferences/export-user.html:69
+msgid "User export files will show 'complete' once ready. This may take a little while. Click the link to download your file."
+msgstr ""
+
+#: bookwyrm/templates/preferences/export-user.html:75
+msgid "Date"
+msgstr "날짜"
+
+#: bookwyrm/templates/preferences/export-user.html:81
+msgid "Size"
+msgstr "크기"
+
+#: bookwyrm/templates/preferences/export-user.html:125
+msgid "Download your export"
+msgstr ""
+
+#: bookwyrm/templates/preferences/export.html:4
+#: bookwyrm/templates/preferences/export.html:7
+#: bookwyrm/templates/preferences/layout.html:47
+msgid "Export Book List"
+msgstr "도서 목록 내보내기"
+
+#: bookwyrm/templates/preferences/export.html:13
+msgid "Your CSV export file will include all the books on your shelves, books you have reviewed, and books with reading activity. Use this to import into a service like Goodreads."
+msgstr ""
+
+#: bookwyrm/templates/preferences/export.html:20
+msgid "Download file"
+msgstr "파일 다운로드"
+
+#: bookwyrm/templates/preferences/layout.html:11
+msgid "Account"
+msgstr "계정"
+
+#: bookwyrm/templates/preferences/layout.html:32
+msgid "Move Account"
+msgstr "계정 옮기기"
+
+#: bookwyrm/templates/preferences/layout.html:39
+msgid "Data"
+msgstr "데이터"
+
+#: bookwyrm/templates/preferences/layout.html:58
+msgid "Relationships"
+msgstr "관계"
+
+#: bookwyrm/templates/preferences/move_user.html:12
+msgid "Migrate account to another server"
+msgstr "계정을 다른 서버로 이전하기"
+
+#: bookwyrm/templates/preferences/move_user.html:16
+msgid "Moving your account will notify all your followers and direct them to follow the new account."
+msgstr ""
+
+#: bookwyrm/templates/preferences/move_user.html:19
+#, python-format
+msgid "\n"
+" %(user)s will be marked as moved and will not be discoverable or usable unless you undo the move.\n"
+" "
+msgstr ""
+
+#: bookwyrm/templates/preferences/move_user.html:25
+msgid "Remember to add this user as an alias of the target account before you try to move."
+msgstr ""
+
+#: bookwyrm/templates/preferences/move_user.html:30
+msgid "Enter the username for the account you want to move to e.g. user@example.com :"
+msgstr ""
+
+#: bookwyrm/templates/reading_progress/finish.html:5
+#, python-format
+msgid "Finish \"%(book_title)s\""
+msgstr ""
+
+#: bookwyrm/templates/reading_progress/start.html:5
+#, python-format
+msgid "Start \"%(book_title)s\""
+msgstr ""
+
+#: bookwyrm/templates/reading_progress/stop.html:5
+#, python-format
+msgid "Stop Reading \"%(book_title)s\""
+msgstr ""
+
+#: bookwyrm/templates/reading_progress/want.html:5
+#, python-format
+msgid "Want to Read \"%(book_title)s\""
+msgstr ""
+
+#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:4
+msgid "Delete these read dates?"
+msgstr "이 읽은 날짜를 지울까요?"
+
+#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:8
+#, python-format
+msgid "You are deleting this readthrough and its %(count)s associated progress updates."
+msgstr ""
+
+#: bookwyrm/templates/readthrough/readthrough.html:6
+#: bookwyrm/templates/readthrough/readthrough_modal.html:8
+#, python-format
+msgid "Update read dates for \"%(title)s \""
+msgstr ""
+
+#: bookwyrm/templates/readthrough/readthrough_form.html:10
+#: bookwyrm/templates/readthrough/readthrough_modal.html:38
+#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24
+#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21
+#: bookwyrm/templates/snippets/reading_modals/stop_reading_modal.html:24
+msgid "Started reading"
+msgstr "읽기 시작함"
+
+#: bookwyrm/templates/readthrough/readthrough_form.html:18
+#: bookwyrm/templates/readthrough/readthrough_modal.html:56
+msgid "Progress"
+msgstr "진행 상황"
+
+#: bookwyrm/templates/readthrough/readthrough_form.html:25
+#: bookwyrm/templates/readthrough/readthrough_modal.html:63
+#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32
+msgid "Finished reading"
+msgstr "읽기 마침"
+
+#: bookwyrm/templates/readthrough/readthrough_list.html:9
+msgid "Progress Updates:"
+msgstr "진행 상황 업데이트:"
+
+#: bookwyrm/templates/readthrough/readthrough_list.html:14
+msgid "finished"
+msgstr "끝냄"
+
+#: bookwyrm/templates/readthrough/readthrough_list.html:16
+msgid "stopped"
+msgstr "멈춤"
+
+#: bookwyrm/templates/readthrough/readthrough_list.html:27
+msgid "Show all updates"
+msgstr "모든 업데이트 보이기"
+
+#: bookwyrm/templates/readthrough/readthrough_list.html:43
+msgid "Delete this progress update"
+msgstr ""
+
+#: bookwyrm/templates/readthrough/readthrough_list.html:55
+msgid "started"
+msgstr "시작한 날"
+
+#: bookwyrm/templates/readthrough/readthrough_list.html:62
+msgid "Edit read dates"
+msgstr "읽은 날짜 편집"
+
+#: bookwyrm/templates/readthrough/readthrough_list.html:70
+msgid "Delete these read dates"
+msgstr "이 읽은 날짜 지우기"
+
+#: bookwyrm/templates/readthrough/readthrough_modal.html:12
+#, python-format
+msgid "Add read dates for \"%(title)s \""
+msgstr ""
+
+#: bookwyrm/templates/report.html:5
+#: bookwyrm/templates/snippets/report_button.html:13
+msgid "Report"
+msgstr "제보"
+
+#: bookwyrm/templates/search/barcode_modal.html:5
+msgid "\n"
+" Scan Barcode\n"
+" "
+msgstr "\n"
+" 바코드 스캔\n"
+" "
+
+#: bookwyrm/templates/search/barcode_modal.html:21
+msgid "Requesting camera..."
+msgstr "카메로 요청하는 중…"
+
+#: bookwyrm/templates/search/barcode_modal.html:22
+msgid "Grant access to the camera to scan a book's barcode."
+msgstr ""
+
+#: bookwyrm/templates/search/barcode_modal.html:27
+msgid "Could not access camera"
+msgstr "카메라에 접근할 수 없음"
+
+#: bookwyrm/templates/search/barcode_modal.html:31
+msgctxt "barcode scanner"
+msgid "Scanning..."
+msgstr "스캔 중"
+
+#: bookwyrm/templates/search/barcode_modal.html:32
+msgid "Align your book's barcode with the camera."
+msgstr ""
+
+#: bookwyrm/templates/search/barcode_modal.html:36
+msgctxt "barcode scanner"
+msgid "ISBN scanned"
+msgstr "ISBN 스캠 마침"
+
+#: bookwyrm/templates/search/barcode_modal.html:37
+msgctxt "followed by ISBN"
+msgid "Searching for book:"
+msgstr ""
+
+#: bookwyrm/templates/search/book.html:25
+#, python-format
+msgid "%(formatted_review_count)s review"
+msgid_plural "%(formatted_review_count)s reviews"
+msgstr[0] ""
+
+#: bookwyrm/templates/search/book.html:34
+#, python-format
+msgid "(published %(pub_year)s)"
+msgstr ""
+
+#: bookwyrm/templates/search/book.html:50
+msgid "Results from"
+msgstr ""
+
+#: bookwyrm/templates/search/book.html:89
+msgid "Import book"
+msgstr "책 정보 가져오기"
+
+#: bookwyrm/templates/search/book.html:113
+msgid "Load results from other catalogues"
+msgstr ""
+
+#: bookwyrm/templates/search/book.html:117
+msgid "Manually add book"
+msgstr "직접 책 추가하기"
+
+#: bookwyrm/templates/search/book.html:122
+msgid "Log in to import or add books."
+msgstr ""
+
+#: bookwyrm/templates/search/layout.html:17
+msgid "Search query"
+msgstr "검색 쿼리"
+
+#: bookwyrm/templates/search/layout.html:20
+msgid "Search type"
+msgstr "유형 검색"
+
+#: bookwyrm/templates/search/layout.html:24
+#: bookwyrm/templates/search/layout.html:47
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:27
+#: bookwyrm/templates/settings/federation/instance_list.html:52
+#: bookwyrm/templates/settings/layout.html:36
+#: bookwyrm/templates/settings/users/user.html:13
+#: bookwyrm/templates/settings/users/user_admin.html:5
+#: bookwyrm/templates/settings/users/user_admin.html:12
+msgid "Users"
+msgstr "이용자"
+
+#: bookwyrm/templates/search/layout.html:59
+#, python-format
+msgid "No results found for \"%(query)s\""
+msgstr ""
+
+#: bookwyrm/templates/search/layout.html:61
+#, python-format
+msgid "%(result_count)s result found"
+msgid_plural "%(result_count)s results found"
+msgstr[0] ""
+
+#: bookwyrm/templates/settings/announcements/announcement.html:5
+#: bookwyrm/templates/settings/announcements/announcement.html:8
+msgid "Announcement"
+msgstr ""
+
+#: bookwyrm/templates/settings/announcements/announcement.html:16
+#: bookwyrm/templates/settings/federation/instance.html:93
+#: bookwyrm/templates/snippets/status/status_options.html:25
+msgid "Edit"
+msgstr "편집"
+
+#: bookwyrm/templates/settings/announcements/announcement.html:32
+#: bookwyrm/templates/settings/announcements/announcements.html:3
+#: bookwyrm/templates/settings/announcements/announcements.html:5
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:15
+#: bookwyrm/templates/settings/layout.html:99
+msgid "Announcements"
+msgstr "공지사항"
+
+#: bookwyrm/templates/settings/announcements/announcement.html:45
+msgid "Visible:"
+msgstr ""
+
+#: bookwyrm/templates/settings/announcements/announcement.html:49
+msgid "True"
+msgstr "참"
+
+#: bookwyrm/templates/settings/announcements/announcement.html:51
+msgid "False"
+msgstr "거짓"
+
+#: bookwyrm/templates/settings/announcements/announcement.html:57
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:79
+#: bookwyrm/templates/settings/dashboard/dashboard.html:80
+msgid "Start date:"
+msgstr "시작일:"
+
+#: bookwyrm/templates/settings/announcements/announcement.html:62
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:89
+#: bookwyrm/templates/settings/dashboard/dashboard.html:86
+msgid "End date:"
+msgstr "종료일:"
+
+#: bookwyrm/templates/settings/announcements/announcement.html:66
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:109
+msgid "Active:"
+msgstr "활성 상황:"
+
+#: bookwyrm/templates/settings/announcements/announcements.html:9
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:8
+msgid "Create Announcement"
+msgstr ""
+
+#: bookwyrm/templates/settings/announcements/announcements.html:21
+#: bookwyrm/templates/settings/federation/instance_list.html:40
+msgid "Date added"
+msgstr ""
+
+#: bookwyrm/templates/settings/announcements/announcements.html:25
+msgid "Preview"
+msgstr "미리보기"
+
+#: bookwyrm/templates/settings/announcements/announcements.html:29
+msgid "Start date"
+msgstr "시작 날짜"
+
+#: bookwyrm/templates/settings/announcements/announcements.html:33
+msgid "End date"
+msgstr ""
+
+#: bookwyrm/templates/settings/announcements/announcements.html:50
+msgid "active"
+msgstr ""
+
+#: bookwyrm/templates/settings/announcements/announcements.html:50
+msgid "inactive"
+msgstr ""
+
+#: bookwyrm/templates/settings/announcements/announcements.html:63
+msgid "No announcements found"
+msgstr ""
+
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:6
+msgid "Edit Announcement"
+msgstr ""
+
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:45
+msgid "Announcement content"
+msgstr ""
+
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:57
+msgid "Details:"
+msgstr ""
+
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:65
+msgid "Event date:"
+msgstr ""
+
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:73
+msgid "Display settings"
+msgstr ""
+
+#: bookwyrm/templates/settings/announcements/edit_announcement.html:98
+msgid "Color:"
+msgstr "색깔:"
+
+#: bookwyrm/templates/settings/automod/rules.html:7
+#: bookwyrm/templates/settings/automod/rules.html:11
+#: bookwyrm/templates/settings/layout.html:61
+msgid "Auto-moderation rules"
+msgstr "자동 중재 규칙"
+
+#: bookwyrm/templates/settings/automod/rules.html:18
+msgid "Auto-moderation rules will create reports for any local user or status with fields matching the provided string."
+msgstr "자동 중재 규칙은 제공된 문자열과 일치하는 필드가 있는 모든 로컬 이용자 또는 기록에 대한 제보를 생성합니다. 이미 제보된 이용자나 기록은 (제보가 해결되었는지 여부와 관계없이) 플래그 하지 않습니다."
+
+#: bookwyrm/templates/settings/automod/rules.html:19
+msgid "Users or statuses that have already been reported (regardless of whether the report was resolved) will not be flagged."
+msgstr ""
+
+#: bookwyrm/templates/settings/automod/rules.html:26
+msgid "Schedule:"
+msgstr "예정:"
+
+#: bookwyrm/templates/settings/automod/rules.html:33
+msgid "Last run:"
+msgstr ""
+
+#: bookwyrm/templates/settings/automod/rules.html:40
+msgid "Total run count:"
+msgstr ""
+
+#: bookwyrm/templates/settings/automod/rules.html:47
+msgid "Enabled:"
+msgstr ""
+
+#: bookwyrm/templates/settings/automod/rules.html:59
+msgid "Delete schedule"
+msgstr ""
+
+#: bookwyrm/templates/settings/automod/rules.html:63
+msgid "Run now"
+msgstr ""
+
+#: bookwyrm/templates/settings/automod/rules.html:64
+msgid "Last run date will not be updated"
+msgstr ""
+
+#: bookwyrm/templates/settings/automod/rules.html:69
+#: bookwyrm/templates/settings/automod/rules.html:92
+msgid "Schedule scan"
+msgstr "예약된 검사"
+
+#: bookwyrm/templates/settings/automod/rules.html:101
+msgid "Successfully added rule"
+msgstr ""
+
+#: bookwyrm/templates/settings/automod/rules.html:107
+msgid "Add Rule"
+msgstr "규칙 추가하기"
+
+#: bookwyrm/templates/settings/automod/rules.html:116
+#: bookwyrm/templates/settings/automod/rules.html:160
+msgid "String match"
+msgstr "일치하는 문자열"
+
+#: bookwyrm/templates/settings/automod/rules.html:126
+#: bookwyrm/templates/settings/automod/rules.html:163
+msgid "Flag users"
+msgstr "이용자 플래그"
+
+#: bookwyrm/templates/settings/automod/rules.html:133
+#: bookwyrm/templates/settings/automod/rules.html:166
+msgid "Flag statuses"
+msgstr "기록 플래그"
+
+#: bookwyrm/templates/settings/automod/rules.html:140
+msgid "Add rule"
+msgstr "규칙 추가하기"
+
+#: bookwyrm/templates/settings/automod/rules.html:147
+msgid "Current Rules"
+msgstr "현재 규칙"
+
+#: bookwyrm/templates/settings/automod/rules.html:151
+msgid "Show rules"
+msgstr "규칙 보기"
+
+#: bookwyrm/templates/settings/automod/rules.html:188
+msgid "Remove rule"
+msgstr "규칙 제거"
+
+#: bookwyrm/templates/settings/celery.html:6
+#: bookwyrm/templates/settings/celery.html:8
+msgid "Celery Status"
+msgstr "Celery 상태"
+
+#: bookwyrm/templates/settings/celery.html:14
+msgid "You can set up monitoring to check if Celery is running by querying:"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:22
+msgid "Queues"
+msgstr "큐"
+
+#: bookwyrm/templates/settings/celery.html:26
+msgid "Streams"
+msgstr "스트림"
+
+#: bookwyrm/templates/settings/celery.html:32
+msgid "Broadcast"
+msgstr "브로드캐스트"
+
+#: bookwyrm/templates/settings/celery.html:38
+msgid "Inbox"
+msgstr "사서함"
+
+#: bookwyrm/templates/settings/celery.html:51
+msgid "Import triggered"
+msgstr "가져오기 트리거함"
+
+#: bookwyrm/templates/settings/celery.html:57
+msgid "Connectors"
+msgstr "커넥터"
+
+#: bookwyrm/templates/settings/celery.html:64
+#: bookwyrm/templates/settings/site.html:91
+msgid "Images"
+msgstr "이미지"
+
+#: bookwyrm/templates/settings/celery.html:70
+msgid "Suggested Users"
+msgstr "이용자 추천"
+
+#: bookwyrm/templates/settings/celery.html:83
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:43
+#: bookwyrm/templates/settings/users/email_filter.html:5
+msgid "Email"
+msgstr "이메일"
+
+#: bookwyrm/templates/settings/celery.html:89
+msgid "Misc"
+msgstr "기타"
+
+#: bookwyrm/templates/settings/celery.html:96
+msgid "Low priority"
+msgstr "낮은 우선도"
+
+#: bookwyrm/templates/settings/celery.html:102
+msgid "Medium priority"
+msgstr "보통 우선도"
+
+#: bookwyrm/templates/settings/celery.html:108
+msgid "High priority"
+msgstr "높은 우선도"
+
+#: bookwyrm/templates/settings/celery.html:118
+msgid "Could not connect to Redis broker"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:126
+msgid "Active Tasks"
+msgstr "활성 작업"
+
+#: bookwyrm/templates/settings/celery.html:131
+#: bookwyrm/templates/settings/imports/imports.html:146
+#: bookwyrm/templates/settings/imports/imports.html:236
+msgid "ID"
+msgstr "ID"
+
+#: bookwyrm/templates/settings/celery.html:132
+msgid "Task name"
+msgstr "작업 이름"
+
+#: bookwyrm/templates/settings/celery.html:133
+msgid "Run time"
+msgstr "실행 시간"
+
+#: bookwyrm/templates/settings/celery.html:134
+msgid "Priority"
+msgstr "우선도"
+
+#: bookwyrm/templates/settings/celery.html:139
+msgid "No active tasks"
+msgstr "활성 작업 없음"
+
+#: bookwyrm/templates/settings/celery.html:157
+msgid "Workers"
+msgstr "워커"
+
+#: bookwyrm/templates/settings/celery.html:162
+msgid "Uptime:"
+msgstr "가동 시간:"
+
+#: bookwyrm/templates/settings/celery.html:172
+msgid "Could not connect to Celery"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:178
+#: bookwyrm/templates/settings/celery.html:201
+msgid "Clear Queues"
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:182
+msgid "Clearing queues can cause serious problems including data loss! Only play with this if you really know what you're doing. You must shut down the Celery worker before you do this."
+msgstr ""
+
+#: bookwyrm/templates/settings/celery.html:208
+msgid "Errors"
+msgstr ""
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:6
+#: bookwyrm/templates/settings/dashboard/dashboard.html:8
+#: bookwyrm/templates/settings/layout.html:28
+msgid "Dashboard"
+msgstr "대시보드"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:15
+#: bookwyrm/templates/settings/dashboard/dashboard.html:109
+msgid "Total users"
+msgstr "전체 이용자"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:21
+#: bookwyrm/templates/settings/dashboard/user_chart.html:16
+msgid "Active this month"
+msgstr "이번 달 활동 수"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:27
+msgid "Statuses"
+msgstr "기록 수"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:33
+#: bookwyrm/templates/settings/dashboard/works_chart.html:11
+msgid "Works"
+msgstr "작품 수"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:74
+msgid "Instance Activity"
+msgstr ""
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:92
+msgid "Interval:"
+msgstr "간격:"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:96
+msgid "Days"
+msgstr ""
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:97
+msgid "Weeks"
+msgstr ""
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:115
+msgid "User signup activity"
+msgstr "이용자 가입 활동"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:121
+msgid "Status activity"
+msgstr "기록 활동"
+
+#: bookwyrm/templates/settings/dashboard/dashboard.html:127
+msgid "Works created"
+msgstr "등록된 작품"
+
+#: bookwyrm/templates/settings/dashboard/registration_chart.html:10
+msgid "Registrations"
+msgstr "등록"
+
+#: bookwyrm/templates/settings/dashboard/status_chart.html:11
+msgid "Statuses posted"
+msgstr "게시한 기록"
+
+#: bookwyrm/templates/settings/dashboard/user_chart.html:11
+msgid "Total"
+msgstr "전체"
+
+#: bookwyrm/templates/settings/dashboard/warnings/domain_review.html:9
+#, python-format
+msgid "%(display_count)s domain needs review"
+msgid_plural "%(display_count)s domains need review"
+msgstr[0] "검토해야 할 도메인이 %(display_count)s개 있습니다."
+
+#: bookwyrm/templates/settings/dashboard/warnings/email_config.html:8
+#, python-format
+msgid "Your outgoing email address, %(email_sender)s
, may be misconfigured."
+msgstr ""
+
+#: bookwyrm/templates/settings/dashboard/warnings/email_config.html:11
+msgid "Check the EMAIL_SENDER_NAME
and EMAIL_SENDER_DOMAIN
in your .env
file."
+msgstr ""
+
+#: bookwyrm/templates/settings/dashboard/warnings/invites.html:9
+#, python-format
+msgid "%(display_count)s invite request"
+msgid_plural "%(display_count)s invite requests"
+msgstr[0] ""
+
+#: bookwyrm/templates/settings/dashboard/warnings/missing_conduct.html:8
+msgid "Your instance is missing a code of conduct."
+msgstr "귀하의 인스턴스는 행동 지침이 누락됐습니다."
+
+#: bookwyrm/templates/settings/dashboard/warnings/missing_privacy.html:8
+msgid "Your instance is missing a privacy policy."
+msgstr ""
+
+#: bookwyrm/templates/settings/dashboard/warnings/reports.html:9
+#, python-format
+msgid "%(display_count)s open report"
+msgid_plural "%(display_count)s open reports"
+msgstr[0] ""
+
+#: bookwyrm/templates/settings/dashboard/warnings/update_version.html:8
+#, python-format
+msgid "An update is available! You're running v%(current)s and the latest release is %(available)s."
+msgstr ""
+
+#: bookwyrm/templates/settings/email_blocklist/domain_form.html:5
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:10
+msgid "Add domain"
+msgstr "도메인 추가"
+
+#: bookwyrm/templates/settings/email_blocklist/domain_form.html:11
+msgid "Domain:"
+msgstr "도메인:"
+
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:5
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:7
+#: bookwyrm/templates/settings/layout.html:65
+msgid "Email Blocklist"
+msgstr "이메일 차단록"
+
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:18
+msgid "When someone tries to register with an email from this domain, no account will be created. The registration process will appear to have worked."
+msgstr ""
+
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:29
+#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:27
+msgid "Options"
+msgstr "선택 사항"
+
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:38
+#, python-format
+msgid "%(display_count)s user"
+msgid_plural "%(display_count)s users"
+msgstr[0] ""
+
+#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:59
+msgid "No email domains currently blocked"
+msgstr ""
+
+#: bookwyrm/templates/settings/email_config.html:6
+#: bookwyrm/templates/settings/email_config.html:8
+#: bookwyrm/templates/settings/layout.html:90
+msgid "Email Configuration"
+msgstr "이메일 구성"
+
+#: bookwyrm/templates/settings/email_config.html:16
+msgid "Error sending test email:"
+msgstr ""
+
+#: bookwyrm/templates/settings/email_config.html:24
+msgid "Successfully sent test email."
+msgstr ""
+
+#: bookwyrm/templates/settings/email_config.html:32
+#: bookwyrm/templates/setup/config.html:102
+msgid "Email sender:"
+msgstr ""
+
+#: bookwyrm/templates/settings/email_config.html:39
+msgid "Email backend:"
+msgstr ""
+
+#: bookwyrm/templates/settings/email_config.html:46
+msgid "Host:"
+msgstr "호스트:"
+
+#: bookwyrm/templates/settings/email_config.html:53
+msgid "Host user:"
+msgstr "호스트 이용자:"
+
+#: bookwyrm/templates/settings/email_config.html:60
+msgid "Port:"
+msgstr "포트:"
+
+#: bookwyrm/templates/settings/email_config.html:67
+msgid "Use TLS:"
+msgstr "TLS 사용:"
+
+#: bookwyrm/templates/settings/email_config.html:74
+msgid "Use SSL:"
+msgstr "SSL 사용:"
+
+#: bookwyrm/templates/settings/email_config.html:83
+#, python-format
+msgid "Send test email to %(email)s"
+msgstr ""
+
+#: bookwyrm/templates/settings/email_config.html:90
+msgid "Send test email"
+msgstr "시험용 이메일 보내기"
+
+#: bookwyrm/templates/settings/federation/edit_instance.html:3
+#: bookwyrm/templates/settings/federation/edit_instance.html:6
+#: bookwyrm/templates/settings/federation/edit_instance.html:15
+#: bookwyrm/templates/settings/federation/edit_instance.html:32
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:3
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:32
+#: bookwyrm/templates/settings/federation/instance_list.html:9
+#: bookwyrm/templates/settings/federation/instance_list.html:10
+msgid "Add instance"
+msgstr ""
+
+#: bookwyrm/templates/settings/federation/edit_instance.html:12
+#: bookwyrm/templates/settings/federation/instance.html:24
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:12
+#: bookwyrm/templates/settings/federation/instance_list.html:3
+#: bookwyrm/templates/settings/federation/instance_list.html:5
+#: bookwyrm/templates/settings/layout.html:47
+msgid "Federated Instances"
+msgstr "연합한 인스턴스"
+
+#: bookwyrm/templates/settings/federation/edit_instance.html:28
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:28
+msgid "Import block list"
+msgstr ""
+
+#: bookwyrm/templates/settings/federation/edit_instance.html:43
+msgid "Instance:"
+msgstr ""
+
+#: bookwyrm/templates/settings/federation/edit_instance.html:52
+#: bookwyrm/templates/settings/federation/instance.html:46
+#: bookwyrm/templates/settings/users/user_info.html:113
+msgid "Status:"
+msgstr "상태:"
+
+#: bookwyrm/templates/settings/federation/edit_instance.html:66
+#: bookwyrm/templates/settings/federation/instance.html:40
+#: bookwyrm/templates/settings/users/user_info.html:107
+msgid "Software:"
+msgstr "소프트웨어:"
+
+#: bookwyrm/templates/settings/federation/edit_instance.html:76
+#: bookwyrm/templates/settings/federation/instance.html:43
+#: bookwyrm/templates/settings/users/user_info.html:110
+msgid "Version:"
+msgstr "버전:"
+
+#: bookwyrm/templates/settings/federation/instance.html:17
+msgid "Refresh data"
+msgstr "데이터 새로고침"
+
+#: bookwyrm/templates/settings/federation/instance.html:37
+msgid "Details"
+msgstr "세부 사항"
+
+#: bookwyrm/templates/settings/federation/instance.html:53
+#: bookwyrm/templates/user/layout.html:79
+msgid "Activity"
+msgstr ""
+
+#: bookwyrm/templates/settings/federation/instance.html:56
+msgid "Users:"
+msgstr "이용자:"
+
+#: bookwyrm/templates/settings/federation/instance.html:59
+#: bookwyrm/templates/settings/federation/instance.html:65
+msgid "View all"
+msgstr "모두 보기"
+
+#: bookwyrm/templates/settings/federation/instance.html:62
+#: bookwyrm/templates/settings/users/user_info.html:60
+msgid "Reports:"
+msgstr "제보:"
+
+#: bookwyrm/templates/settings/federation/instance.html:68
+msgid "Followed by us:"
+msgstr ""
+
+#: bookwyrm/templates/settings/federation/instance.html:73
+msgid "Followed by them:"
+msgstr ""
+
+#: bookwyrm/templates/settings/federation/instance.html:78
+msgid "Blocked by us:"
+msgstr ""
+
+#: bookwyrm/templates/settings/federation/instance.html:90
+#: bookwyrm/templates/settings/users/user_info.html:117
+msgid "Notes"
+msgstr "노트"
+
+#: bookwyrm/templates/settings/federation/instance.html:97
+msgid "No notes "
+msgstr ""
+
+#: bookwyrm/templates/settings/federation/instance.html:116
+#: bookwyrm/templates/settings/link_domains/link_domains.html:87
+#: bookwyrm/templates/snippets/block_button.html:5
+msgid "Block"
+msgstr "차단하기"
+
+#: bookwyrm/templates/settings/federation/instance.html:117
+msgid "All users from this instance will be deactivated."
+msgstr ""
+
+#: bookwyrm/templates/settings/federation/instance.html:122
+#: bookwyrm/templates/snippets/block_button.html:10
+msgid "Un-block"
+msgstr "차단 해제하기"
+
+#: bookwyrm/templates/settings/federation/instance.html:123
+msgid "All users from this instance will be re-activated."
+msgstr ""
+
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:6
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:15
+msgid "Import Blocklist"
+msgstr "차단목록 가져오기"
+
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:38
+msgid "Success!"
+msgstr "성공!"
+
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:42
+msgid "Successfully blocked:"
+msgstr ""
+
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:44
+msgid "Failed:"
+msgstr "실패:"
+
+#: bookwyrm/templates/settings/federation/instance_blocklist.html:62
+msgid "Expects a json file in the format provided by FediBlock, with a list of entries that have instance
and url
fields. For example:"
+msgstr ""
+
+#: bookwyrm/templates/settings/federation/instance_list.html:36
+#: bookwyrm/templates/settings/users/server_filter.html:5
+msgid "Instance name"
+msgstr "인스턴스 이름"
+
+#: bookwyrm/templates/settings/federation/instance_list.html:44
+msgid "Last updated"
+msgstr ""
+
+#: bookwyrm/templates/settings/federation/instance_list.html:48
+#: bookwyrm/templates/settings/federation/software_filter.html:5
+msgid "Software"
+msgstr "소프트웨어"
+
+#: bookwyrm/templates/settings/federation/instance_list.html:70
+msgid "No instances found"
+msgstr "인스턴스를 찾을 수 없음"
+
+#: bookwyrm/templates/settings/imports/complete_import_modal.html:4
+#: bookwyrm/templates/settings/imports/complete_user_import_modal.html:4
+msgid "Stop import?"
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/complete_user_import_modal.html:7
+msgid "This action will stop the user import before it is complete and cannot be un-done"
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:19
+msgid "Disable starting new imports"
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:30
+msgid "This is only intended to be used when things have gone very wrong with imports and you need to pause the feature while addressing issues."
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:31
+msgid "While imports are disabled, users will not be allowed to start new imports, but existing imports will not be affected."
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:32
+msgid "This setting prevents both book imports and user imports."
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:37
+msgid "Disable imports"
+msgstr "가져오기 비활성화"
+
+#: bookwyrm/templates/settings/imports/imports.html:51
+msgid "Users are currently unable to start new imports"
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:56
+msgid "Enable imports"
+msgstr "가져오기 활성화"
+
+#: bookwyrm/templates/settings/imports/imports.html:64
+msgid "Limit the amount of imports"
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:75
+msgid "Some users might try to import a large number of books, which you want to limit."
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:76
+#: bookwyrm/templates/settings/imports/imports.html:108
+msgid "Set the value to 0 to not enforce any limit."
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:79
+msgid "Set import limit to"
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:81
+msgid "books every"
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:83
+msgid "days."
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:87
+msgid "Set limit"
+msgstr "제한 설정"
+
+#: bookwyrm/templates/settings/imports/imports.html:96
+msgid "Limit how often users can import and export"
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:107
+msgid "Some users might try to run user imports or exports very frequently, which you want to limit."
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:111
+msgid "Restrict user imports and exports to once every "
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:113
+msgid "hours"
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:117
+msgid "Change limit"
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:125
+msgid "Book Imports"
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:135
+#: bookwyrm/templates/settings/imports/imports.html:225
+msgid "Completed"
+msgstr "완료됨"
+
+#: bookwyrm/templates/settings/imports/imports.html:149
+#: bookwyrm/templates/settings/imports/imports.html:239
+msgid "User"
+msgstr "이용자"
+
+#: bookwyrm/templates/settings/imports/imports.html:158
+#: bookwyrm/templates/settings/imports/imports.html:248
+msgid "Date Updated"
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:165
+msgid "Pending items"
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:168
+msgid "Successful items"
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:203
+#: bookwyrm/templates/settings/imports/imports.html:295
+msgid "No matching imports found."
+msgstr ""
+
+#: bookwyrm/templates/settings/imports/imports.html:215
+msgid "User Imports"
+msgstr ""
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:4
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:11
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:25
+#: bookwyrm/templates/settings/invites/manage_invites.html:11
+msgid "Invite Requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:15
+#: bookwyrm/templates/settings/invites/manage_invites.html:3
+#: bookwyrm/templates/settings/invites/manage_invites.html:15
+#: bookwyrm/templates/settings/layout.html:42
+#: bookwyrm/templates/user_menu.html:55
+msgid "Invites"
+msgstr "초대"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:23
+msgid "Ignored Invite Requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:36
+msgid "Date requested"
+msgstr ""
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:40
+msgid "Date accepted"
+msgstr ""
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:45
+msgid "Answer"
+msgstr "답변"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:51
+msgid "Action"
+msgstr "수행"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:54
+msgid "No requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:66
+#: bookwyrm/templates/settings/invites/status_filter.html:16
+msgid "Accepted"
+msgstr ""
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:68
+#: bookwyrm/templates/settings/invites/status_filter.html:12
+msgid "Sent"
+msgstr "보냄"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:70
+#: bookwyrm/templates/settings/invites/status_filter.html:8
+msgid "Requested"
+msgstr ""
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:80
+msgid "Send invite"
+msgstr "초대 보내기"
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:82
+msgid "Re-send invite"
+msgstr ""
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:102
+msgid "Ignore"
+msgstr ""
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:104
+msgid "Un-ignore"
+msgstr ""
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:116
+msgid "Back to pending requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/invites/manage_invite_requests.html:118
+msgid "View ignored requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/invites/manage_invites.html:21
+msgid "Generate New Invite"
+msgstr "새 초대장 생성하기"
+
+#: bookwyrm/templates/settings/invites/manage_invites.html:27
+msgid "Expiry:"
+msgstr "만료일:"
+
+#: bookwyrm/templates/settings/invites/manage_invites.html:33
+msgid "Use limit:"
+msgstr ""
+
+#: bookwyrm/templates/settings/invites/manage_invites.html:40
+msgid "Create Invite"
+msgstr "초대장 만들기"
+
+#: bookwyrm/templates/settings/invites/manage_invites.html:48
+msgid "Expires"
+msgstr "만료"
+
+#: bookwyrm/templates/settings/invites/manage_invites.html:49
+msgid "Max uses"
+msgstr "최대 이용"
+
+#: bookwyrm/templates/settings/invites/manage_invites.html:50
+msgid "Times used"
+msgstr ""
+
+#: bookwyrm/templates/settings/invites/manage_invites.html:53
+msgid "No active invites"
+msgstr ""
+
+#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:5
+#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:10
+msgid "Add IP address"
+msgstr ""
+
+#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:11
+msgid "Use IP address blocks with caution, and consider using blocks only temporarily, as IP addresses are often shared or change hands. If you block your own IP, you will not be able to access this page."
+msgstr ""
+
+#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:18
+msgid "IP Address:"
+msgstr "IP 주소:"
+
+#: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:24
+msgid "You can block IP ranges using CIDR syntax."
+msgstr ""
+
+#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:5
+#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:7
+#: bookwyrm/templates/settings/layout.html:69
+msgid "IP Address Blocklist"
+msgstr "IP 주소 차단목록"
+
+#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:18
+msgid "Any traffic from this IP address will get a 404 response when trying to access any part of the application."
+msgstr ""
+
+#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:24
+msgid "Address"
+msgstr "주소"
+
+#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:46
+msgid "No IP addresses currently blocked"
+msgstr "차단한 IP 주소 없음"
+
+#: bookwyrm/templates/settings/layout.html:4
+msgid "Administration"
+msgstr "관리"
+
+#: bookwyrm/templates/settings/layout.html:31
+msgid "Manage Users"
+msgstr "이용자 관리"
+
+#: bookwyrm/templates/settings/layout.html:53
+msgid "Moderation"
+msgstr "중재"
+
+#: bookwyrm/templates/settings/layout.html:57
+#: bookwyrm/templates/settings/reports/reports.html:8
+#: bookwyrm/templates/settings/reports/reports.html:17
+msgid "Reports"
+msgstr "제보"
+
+#: bookwyrm/templates/settings/layout.html:73
+#: bookwyrm/templates/settings/link_domains/link_domains.html:5
+#: bookwyrm/templates/settings/link_domains/link_domains.html:7
+msgid "Link Domains"
+msgstr "링크 도메인"
+
+#: bookwyrm/templates/settings/layout.html:78
+msgid "System"
+msgstr "시스템"
+
+#: bookwyrm/templates/settings/layout.html:86
+msgid "Celery status"
+msgstr ""
+
+#: bookwyrm/templates/settings/layout.html:95
+msgid "Instance Settings"
+msgstr "인스턴스 설정"
+
+#: bookwyrm/templates/settings/layout.html:103
+#: bookwyrm/templates/settings/site.html:4
+#: bookwyrm/templates/settings/site.html:6
+msgid "Site Settings"
+msgstr "사이트 설정"
+
+#: bookwyrm/templates/settings/layout.html:109
+#: bookwyrm/templates/settings/layout.html:112
+#: bookwyrm/templates/settings/registration.html:4
+#: bookwyrm/templates/settings/registration.html:6
+#: bookwyrm/templates/settings/registration_limited.html:4
+#: bookwyrm/templates/settings/registration_limited.html:6
+msgid "Registration"
+msgstr "등록"
+
+#: bookwyrm/templates/settings/layout.html:118
+#: bookwyrm/templates/settings/site.html:107
+#: bookwyrm/templates/settings/themes.html:4
+#: bookwyrm/templates/settings/themes.html:6
+msgid "Themes"
+msgstr "테마"
+
+#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5
+#, python-format
+msgid "Set display name for %(url)s"
+msgstr ""
+
+#: 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 ""
+
+#: bookwyrm/templates/settings/link_domains/link_domains.html:45
+msgid "Set display name"
+msgstr "나타낼 이름 설정"
+
+#: bookwyrm/templates/settings/link_domains/link_domains.html:53
+msgid "View links"
+msgstr "링크 보기"
+
+#: bookwyrm/templates/settings/link_domains/link_domains.html:96
+msgid "No domains currently approved"
+msgstr "승인한 도메인이 없습니다."
+
+#: bookwyrm/templates/settings/link_domains/link_domains.html:98
+msgid "No domains currently pending"
+msgstr "계류 중인 도메인은 없습니다."
+
+#: bookwyrm/templates/settings/link_domains/link_domains.html:100
+msgid "No domains currently blocked"
+msgstr "현재 차단한 도메인 없음"
+
+#: bookwyrm/templates/settings/link_domains/link_table.html:43
+msgid "No links available for this domain."
+msgstr ""
+
+#: bookwyrm/templates/settings/registration.html:13
+#: bookwyrm/templates/settings/registration_limited.html:13
+#: bookwyrm/templates/settings/site.html:21
+msgid "Settings saved"
+msgstr "설정 저장함"
+
+#: bookwyrm/templates/settings/registration.html:22
+#: bookwyrm/templates/settings/registration_limited.html:22
+#: bookwyrm/templates/settings/site.html:30
+msgid "Unable to save settings"
+msgstr "설정을 저장할 수 없음"
+
+#: bookwyrm/templates/settings/registration.html:38
+msgid "Allow registration"
+msgstr "이용자 등록 허용"
+
+#: bookwyrm/templates/settings/registration.html:43
+msgid "Default access level:"
+msgstr "기본 접근 레벨:"
+
+#: bookwyrm/templates/settings/registration.html:61
+msgid "Require users to confirm email address"
+msgstr ""
+
+#: bookwyrm/templates/settings/registration.html:63
+msgid "(Recommended if registration is open)"
+msgstr ""
+
+#: bookwyrm/templates/settings/registration.html:68
+msgid "Allow invite requests"
+msgstr "초대 요청 허용"
+
+#: bookwyrm/templates/settings/registration.html:72
+#: bookwyrm/templates/settings/registration_limited.html:42
+msgid "Invite request text:"
+msgstr ""
+
+#: bookwyrm/templates/settings/registration.html:80
+#: bookwyrm/templates/settings/registration_limited.html:50
+msgid "Set a question for invite requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/registration.html:85
+#: bookwyrm/templates/settings/registration_limited.html:55
+msgid "Question:"
+msgstr "물음:"
+
+#: bookwyrm/templates/settings/registration.html:90
+#: bookwyrm/templates/settings/registration_limited.html:67
+msgid "Registration closed text:"
+msgstr "이용자 등록 중단 안내:"
+
+#: bookwyrm/templates/settings/registration_limited.html:29
+msgid "Registration is enabled on this instance"
+msgstr ""
+
+#: bookwyrm/templates/settings/reports/report.html:13
+msgid "Back to reports"
+msgstr "제보로 돌아가기"
+
+#: bookwyrm/templates/settings/reports/report.html:25
+msgid "Message reporter"
+msgstr ""
+
+#: bookwyrm/templates/settings/reports/report.html:29
+msgid "Update on your report:"
+msgstr ""
+
+#: bookwyrm/templates/settings/reports/report.html:37
+msgid "Reported status"
+msgstr "제보된 기록"
+
+#: bookwyrm/templates/settings/reports/report.html:39
+msgid "Status has been deleted"
+msgstr ""
+
+#: bookwyrm/templates/settings/reports/report.html:48
+msgid "Reported links"
+msgstr "제보된 링크"
+
+#: bookwyrm/templates/settings/reports/report.html:66
+msgid "Moderation Activity"
+msgstr "중재 활동"
+
+#: bookwyrm/templates/settings/reports/report.html:73
+#, python-format
+msgid "%(user)s opened this report"
+msgstr ""
+
+#: bookwyrm/templates/settings/reports/report.html:86
+#, python-format
+msgid "%(user)s commented on this report:"
+msgstr ""
+
+#: bookwyrm/templates/settings/reports/report.html:90
+#, python-format
+msgid "%(user)s took an action on this report:"
+msgstr ""
+
+#: bookwyrm/templates/settings/reports/report_header.html:6
+#, python-format
+msgid "Report #%(report_id)s: Status posted by @%(username)s"
+msgstr ""
+
+#: bookwyrm/templates/settings/reports/report_header.html:13
+#, python-format
+msgid "Report #%(report_id)s: Link added by @%(username)s"
+msgstr ""
+
+#: bookwyrm/templates/settings/reports/report_header.html:17
+#, python-format
+msgid "Report #%(report_id)s: Link domain"
+msgstr ""
+
+#: bookwyrm/templates/settings/reports/report_header.html:24
+#, python-format
+msgid "Report #%(report_id)s: User @%(username)s"
+msgstr ""
+
+#: bookwyrm/templates/settings/reports/report_links_table.html:19
+msgid "Approve domain"
+msgstr "허용한 도메인"
+
+#: bookwyrm/templates/settings/reports/report_links_table.html:26
+msgid "Block domain"
+msgstr "차단한 도메인"
+
+#: bookwyrm/templates/settings/reports/report_preview.html:17
+msgid "No notes provided"
+msgstr ""
+
+#: bookwyrm/templates/settings/reports/report_preview.html:24
+#, python-format
+msgid "Reported by @%(username)s "
+msgstr ""
+
+#: bookwyrm/templates/settings/reports/report_preview.html:34
+msgid "Re-open"
+msgstr "다시 열기"
+
+#: bookwyrm/templates/settings/reports/report_preview.html:36
+msgid "Resolve"
+msgstr "해결"
+
+#: bookwyrm/templates/settings/reports/reports.html:6
+#, python-format
+msgid "Reports: %(instance_name)s"
+msgstr ""
+
+#: bookwyrm/templates/settings/reports/reports.html:14
+#, python-format
+msgid "Reports: %(instance_name)s "
+msgstr ""
+
+#: bookwyrm/templates/settings/reports/reports.html:25
+msgid "Open"
+msgstr "열림"
+
+#: bookwyrm/templates/settings/reports/reports.html:28
+msgid "Resolved"
+msgstr "해결"
+
+#: bookwyrm/templates/settings/reports/reports.html:37
+msgid "No reports found."
+msgstr "제보가 없습니다."
+
+#: bookwyrm/templates/settings/site.html:10
+#: bookwyrm/templates/settings/site.html:43
+msgid "Instance Info"
+msgstr "인스턴스 정보"
+
+#: bookwyrm/templates/settings/site.html:12
+#: bookwyrm/templates/settings/site.html:122
+msgid "Footer Content"
+msgstr "푸터 컨텐트"
+
+#: bookwyrm/templates/settings/site.html:46
+msgid "Instance Name:"
+msgstr "인스턴스 이름:"
+
+#: bookwyrm/templates/settings/site.html:50
+msgid "Tagline:"
+msgstr "태그라인:"
+
+#: bookwyrm/templates/settings/site.html:54
+msgid "Instance description:"
+msgstr "인스턴스 설명:"
+
+#: bookwyrm/templates/settings/site.html:58
+msgid "Short description:"
+msgstr "짧은 설명:"
+
+#: bookwyrm/templates/settings/site.html:59
+msgid "Used when the instance is previewed on joinbookwyrm.com. Does not support HTML or Markdown."
+msgstr "서버를 joinbookwyrm.com에서 미리 볼 때 사용됩니다. HTML 또는 마크다운은 지원하지 않습니다."
+
+#: bookwyrm/templates/settings/site.html:63
+msgid "Code of conduct:"
+msgstr "행동 지침:"
+
+#: bookwyrm/templates/settings/site.html:67
+msgid "Privacy Policy:"
+msgstr "개인정보처리방침:"
+
+#: bookwyrm/templates/settings/site.html:72
+msgid "Impressum:"
+msgstr "법률 고지:"
+
+#: bookwyrm/templates/settings/site.html:77
+msgid "Include impressum:"
+msgstr "법률 고지 포함시키기:"
+
+#: bookwyrm/templates/settings/site.html:94
+msgid "Logo:"
+msgstr "로고:"
+
+#: bookwyrm/templates/settings/site.html:98
+msgid "Logo small:"
+msgstr "작은 로고:"
+
+#: bookwyrm/templates/settings/site.html:102
+msgid "Favicon:"
+msgstr "파비콘:"
+
+#: bookwyrm/templates/settings/site.html:110
+msgid "Default theme:"
+msgstr "기본 테마"
+
+#: bookwyrm/templates/settings/site.html:125
+msgid "Support link:"
+msgstr "후원 링크:"
+
+#: bookwyrm/templates/settings/site.html:129
+msgid "Support title:"
+msgstr "후원 제목:"
+
+#: bookwyrm/templates/settings/site.html:133
+msgid "Admin email:"
+msgstr "관리자 이메일:"
+
+#: bookwyrm/templates/settings/site.html:137
+msgid "Additional info:"
+msgstr "부가정보:"
+
+#: bookwyrm/templates/settings/themes.html:10
+msgid "Set instance default theme"
+msgstr "인스턴스 기본 테마 설정"
+
+#: bookwyrm/templates/settings/themes.html:19
+msgid "One of your themes appears to be broken. Selecting this theme will make the application unusable."
+msgstr ""
+
+#: bookwyrm/templates/settings/themes.html:28
+msgid "Successfully added theme"
+msgstr "테마 추가에 성공함"
+
+#: bookwyrm/templates/settings/themes.html:35
+msgid "How to add a theme"
+msgstr ""
+
+#: bookwyrm/templates/settings/themes.html:38
+msgid "Copy the theme file into the bookwyrm/static/css/themes
directory on your server from the command line."
+msgstr ""
+
+#: bookwyrm/templates/settings/themes.html:41
+msgid "Run ./bw-dev compile_themes
and ./bw-dev collectstatic
."
+msgstr ""
+
+#: bookwyrm/templates/settings/themes.html:44
+msgid "Add the file name using the form below to make it available in the application interface."
+msgstr ""
+
+#: bookwyrm/templates/settings/themes.html:51
+#: bookwyrm/templates/settings/themes.html:91
+msgid "Add theme"
+msgstr "테마 더하기"
+
+#: bookwyrm/templates/settings/themes.html:57
+msgid "Unable to save theme"
+msgstr ""
+
+#: bookwyrm/templates/settings/themes.html:72
+#: bookwyrm/templates/settings/themes.html:102
+msgid "Theme name"
+msgstr "테마 이름"
+
+#: bookwyrm/templates/settings/themes.html:82
+msgid "Theme filename"
+msgstr "테마 파일 이름"
+
+#: bookwyrm/templates/settings/themes.html:97
+msgid "Available Themes"
+msgstr ""
+
+#: bookwyrm/templates/settings/themes.html:105
+msgid "File"
+msgstr "파일"
+
+#: bookwyrm/templates/settings/themes.html:123
+msgid "Remove theme"
+msgstr "테마 제거"
+
+#: bookwyrm/templates/settings/themes.html:134
+msgid "Test theme"
+msgstr ""
+
+#: bookwyrm/templates/settings/themes.html:143
+msgid "Broken theme"
+msgstr ""
+
+#: bookwyrm/templates/settings/themes.html:152
+msgid "Loaded successfully"
+msgstr ""
+
+#: bookwyrm/templates/settings/users/delete_user_form.html:5
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:52
+msgid "Permanently delete user"
+msgstr "이용자 영구 삭제"
+
+#: bookwyrm/templates/settings/users/delete_user_form.html:12
+#, python-format
+msgid "Are you sure you want to delete %(username)s 's account? This action cannot be undone. To proceed, please enter your password to confirm deletion."
+msgstr "%(username)s 계정을 지울까요? 이 동작은 돌이킬 수 없습니다. 계속 진행하려면 암호를 입력하여 지우기를 확인해 주세요."
+
+#: bookwyrm/templates/settings/users/delete_user_form.html:17
+msgid "Your password:"
+msgstr "내 암호:"
+
+#: bookwyrm/templates/settings/users/user_admin.html:9
+#, python-format
+msgid "Users: %(instance_name)s "
+msgstr ""
+
+#: bookwyrm/templates/settings/users/user_admin.html:29
+msgid "Deleted users"
+msgstr "지운 이용자"
+
+#: bookwyrm/templates/settings/users/user_admin.html:44
+#: bookwyrm/templates/settings/users/username_filter.html:5
+msgid "Username"
+msgstr "이용자명"
+
+#: bookwyrm/templates/settings/users/user_admin.html:48
+msgid "Date Added"
+msgstr ""
+
+#: bookwyrm/templates/settings/users/user_admin.html:52
+msgid "Last Active"
+msgstr "최근 활동"
+
+#: bookwyrm/templates/settings/users/user_admin.html:61
+msgid "Remote instance"
+msgstr "리모트 인스턴스"
+
+#: bookwyrm/templates/settings/users/user_admin.html:84
+#: bookwyrm/templates/settings/users/user_info.html:127
+msgid "Not set"
+msgstr "설정 안함"
+
+#: bookwyrm/templates/settings/users/user_info.html:20
+msgid "This account is the instance actor for signing HTTP requests."
+msgstr ""
+
+#: bookwyrm/templates/settings/users/user_info.html:24
+msgid "View user profile"
+msgstr "이용자 프로필 보기"
+
+#: bookwyrm/templates/settings/users/user_info.html:30
+msgid "Go to user admin"
+msgstr "이용자 관리로 이동"
+
+#: bookwyrm/templates/settings/users/user_info.html:40
+msgid "Local"
+msgstr "로컬"
+
+#: bookwyrm/templates/settings/users/user_info.html:42
+msgid "Remote"
+msgstr "리모트"
+
+#: bookwyrm/templates/settings/users/user_info.html:51
+msgid "User details"
+msgstr "이용자 상세"
+
+#: bookwyrm/templates/settings/users/user_info.html:55
+msgid "Email:"
+msgstr "이메일:"
+
+#: bookwyrm/templates/settings/users/user_info.html:65
+msgid "(View reports)"
+msgstr "(제보 보기)"
+
+#: bookwyrm/templates/settings/users/user_info.html:71
+msgid "Blocked by count:"
+msgstr ""
+
+#: bookwyrm/templates/settings/users/user_info.html:74
+msgid "Date added:"
+msgstr ""
+
+#: bookwyrm/templates/settings/users/user_info.html:77
+msgid "Last active date:"
+msgstr "최근 활동일:"
+
+#: bookwyrm/templates/settings/users/user_info.html:80
+msgid "Manually approved followers:"
+msgstr "수동으로 팔로워 승인:"
+
+#: bookwyrm/templates/settings/users/user_info.html:83
+msgid "Discoverable:"
+msgstr ""
+
+#: bookwyrm/templates/settings/users/user_info.html:87
+msgid "Deactivation reason:"
+msgstr ""
+
+#: bookwyrm/templates/settings/users/user_info.html:102
+msgid "Instance details"
+msgstr "인스턴스 상세:"
+
+#: bookwyrm/templates/settings/users/user_info.html:124
+msgid "View instance"
+msgstr "인스턴스 보기"
+
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:6
+msgid "Permanently deleted"
+msgstr "영구 삭제"
+
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:9
+msgid "User Actions"
+msgstr ""
+
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:15
+msgid "This is the instance admin actor"
+msgstr ""
+
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:18
+msgid "You must not delete or disable this account as it is critical to the functioning of your server. This actor signs outgoing GET requests to smooth interaction with secure ActivityPub servers."
+msgstr ""
+
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:19
+msgid "This account is not discoverable by ordinary users and does not have a profile page."
+msgstr ""
+
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:35
+msgid "Activate user"
+msgstr "활성 이용자"
+
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:41
+msgid "Suspend user"
+msgstr "정지 이용자"
+
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:46
+msgid "Un-suspend user"
+msgstr ""
+
+#: bookwyrm/templates/settings/users/user_moderation_actions.html:68
+msgid "Access level:"
+msgstr "접근 레벨:"
+
+#: bookwyrm/templates/setup/admin.html:5
+msgid "Set up BookWyrm"
+msgstr ""
+
+#: bookwyrm/templates/setup/admin.html:7
+msgid "Your account as a user and an admin"
+msgstr ""
+
+#: bookwyrm/templates/setup/admin.html:13
+msgid "Create your account"
+msgstr "내 계정 만들기"
+
+#: bookwyrm/templates/setup/admin.html:20
+msgid "Admin key:"
+msgstr "관리 키:"
+
+#: bookwyrm/templates/setup/admin.html:32
+msgid "An admin key was created when you installed BookWyrm. You can get your admin key by running ./bw-dev admin_code
from the command line on your server."
+msgstr ""
+
+#: bookwyrm/templates/setup/admin.html:45
+msgid "As an admin, you'll be able to configure the instance name and information, and moderate your instance. This means you will have access to private information about your users, and are responsible for responding to reports of bad behavior or spam."
+msgstr ""
+
+#: bookwyrm/templates/setup/admin.html:51
+msgid "Once the instance is set up, you can promote other users to moderator or admin roles from the admin panel."
+msgstr ""
+
+#: bookwyrm/templates/setup/admin.html:55
+msgid "Learn more about moderation"
+msgstr ""
+
+#: bookwyrm/templates/setup/config.html:5
+msgid "Instance Configuration"
+msgstr "인스턴스 구성"
+
+#: bookwyrm/templates/setup/config.html:7
+msgid "Make sure everything looks right before proceeding"
+msgstr ""
+
+#: bookwyrm/templates/setup/config.html:18
+msgid "You are running BookWyrm in debug mode. This should never be used in a production environment."
+msgstr ""
+
+#: bookwyrm/templates/setup/config.html:30
+msgid "Your domain appears to be misconfigured. It should not include protocol or slashes."
+msgstr ""
+
+#: bookwyrm/templates/setup/config.html:42
+msgid "You are running BookWyrm in production mode without https. USE_HTTPS should be enabled in production."
+msgstr ""
+
+#: bookwyrm/templates/setup/config.html:52 bookwyrm/templates/user_menu.html:44
+msgid "Settings"
+msgstr "설정"
+
+#: bookwyrm/templates/setup/config.html:56
+msgid "Instance domain:"
+msgstr "인스턴스 도메인:"
+
+#: bookwyrm/templates/setup/config.html:63
+msgid "Protocol:"
+msgstr "프로토콜:"
+
+#: bookwyrm/templates/setup/config.html:81
+msgid "Using S3:"
+msgstr "S3 사용:"
+
+#: bookwyrm/templates/setup/config.html:95
+msgid "Default interface language:"
+msgstr "기본 인터페이스 언어:"
+
+#: bookwyrm/templates/setup/config.html:109
+msgid "Enable preview images:"
+msgstr "미리보기 이미지 활성화:"
+
+#: bookwyrm/templates/setup/config.html:116
+msgid "Enable image thumbnails:"
+msgstr "이미지 섬네일 활성화:"
+
+#: bookwyrm/templates/setup/config.html:128
+msgid "Does everything look right?"
+msgstr ""
+
+#: bookwyrm/templates/setup/config.html:130
+msgid "This is your last chance to set your domain and protocol."
+msgstr ""
+
+#: bookwyrm/templates/setup/config.html:144
+msgid "You can change your instance settings in the .env
file on your server."
+msgstr ""
+
+#: bookwyrm/templates/setup/config.html:148
+msgid "View installation instructions"
+msgstr "설치 과정 설명 보기"
+
+#: bookwyrm/templates/setup/layout.html:5
+msgid "Instance Setup"
+msgstr "인스턴스 설정"
+
+#: bookwyrm/templates/setup/layout.html:21
+msgid "Installing BookWyrm"
+msgstr "BookWyrm 설치 중"
+
+#: bookwyrm/templates/setup/layout.html:24
+msgid "Need help?"
+msgstr ""
+
+#: bookwyrm/templates/shelf/create_shelf_form.html:5
+#: bookwyrm/templates/shelf/shelf.html:74
+msgid "Create shelf"
+msgstr "책꽃이 만들기"
+
+#: bookwyrm/templates/shelf/edit_shelf_form.html:5
+msgid "Edit Shelf"
+msgstr "책꽂이 편집"
+
+#: bookwyrm/templates/shelf/shelf.html:41
+#: bookwyrm/templatetags/shelf_tags.py:13 bookwyrm/views/shelf/shelf.py:53
+msgid "All books"
+msgstr "모든 도서"
+
+#: bookwyrm/templates/shelf/shelf.html:66
+msgid "Import Books"
+msgstr "도서 가져오기"
+
+#: bookwyrm/templates/shelf/shelf.html:99
+#, python-format
+msgid "%(formatted_count)s book"
+msgid_plural "%(formatted_count)s books"
+msgstr[0] ""
+
+#: bookwyrm/templates/shelf/shelf.html:106
+#, python-format
+msgid "(showing %(start)s-%(end)s)"
+msgstr "(%(start)s-%(end)s 보임)"
+
+#: bookwyrm/templates/shelf/shelf.html:118
+msgid "Edit shelf"
+msgstr "책꽂이 편집"
+
+#: bookwyrm/templates/shelf/shelf.html:126
+msgid "Delete shelf"
+msgstr "책꽂이 지우기"
+
+#: bookwyrm/templates/shelf/shelf.html:154
+#: bookwyrm/templates/shelf/shelf.html:180
+msgid "Shelved"
+msgstr "책 가져온 날"
+
+#: bookwyrm/templates/shelf/shelf.html:155
+#: bookwyrm/templates/shelf/shelf.html:183
+msgid "Started"
+msgstr "시작한 날"
+
+#: bookwyrm/templates/shelf/shelf.html:156
+#: bookwyrm/templates/shelf/shelf.html:186
+msgid "Finished"
+msgstr "마침"
+
+#: bookwyrm/templates/shelf/shelf.html:156
+#: bookwyrm/templates/shelf/shelf.html:186
+msgid "Until"
+msgstr "끝낸 날"
+
+#: bookwyrm/templates/shelf/shelf.html:212
+msgid "This shelf is empty."
+msgstr "이 책꽂이는 비었어요."
+
+#: bookwyrm/templates/snippets/add_to_group_button.html:16
+msgid "Invite"
+msgstr ""
+
+#: bookwyrm/templates/snippets/add_to_group_button.html:25
+msgid "Uninvite"
+msgstr ""
+
+#: bookwyrm/templates/snippets/add_to_group_button.html:29
+#, python-format
+msgid "Remove @%(username)s"
+msgstr "@%(username)s 제거"
+
+#: bookwyrm/templates/snippets/announcement.html:28
+#, python-format
+msgid "Posted by %(username)s "
+msgstr ""
+
+#: bookwyrm/templates/snippets/authors.html:22
+#: bookwyrm/templates/snippets/trimmed_list.html:14
+#, 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:63
+msgid "No cover"
+msgstr "표지 없음"
+
+#: bookwyrm/templates/snippets/book_titleby.html:11
+#, python-format
+msgid "%(title)s by"
+msgstr ""
+
+#: bookwyrm/templates/snippets/boost_button.html:20
+#: bookwyrm/templates/snippets/boost_button.html:21
+msgid "Boost"
+msgstr "부스트"
+
+#: bookwyrm/templates/snippets/boost_button.html:33
+#: bookwyrm/templates/snippets/boost_button.html:34
+msgid "Un-boost"
+msgstr ""
+
+#: bookwyrm/templates/snippets/create_status.html:36
+msgid "Quote"
+msgstr "인용"
+
+#: bookwyrm/templates/snippets/create_status/comment.html:15
+msgid "Some thoughts on the book"
+msgstr "책에 대한 몇몇 생각"
+
+#: bookwyrm/templates/snippets/create_status/comment.html:27
+#: bookwyrm/templates/snippets/reading_modals/progress_update_modal.html:18
+msgid "Progress:"
+msgstr "진도:"
+
+#: bookwyrm/templates/snippets/create_status/comment.html:53
+#: bookwyrm/templates/snippets/progress_field.html:18
+msgid "pages"
+msgstr "쪽"
+
+#: bookwyrm/templates/snippets/create_status/comment.html:59
+#: bookwyrm/templates/snippets/progress_field.html:23
+msgid "percent"
+msgstr "퍼센트"
+
+#: bookwyrm/templates/snippets/create_status/comment.html:66
+#, python-format
+msgid "of %(pages)s pages"
+msgstr ""
+
+#: 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:18
+msgid "Content"
+msgstr "컨텐트"
+
+#: bookwyrm/templates/snippets/create_status/content_warning_field.html:9
+msgid "Include spoiler alert"
+msgstr "스포일러 경고 포함"
+
+#: bookwyrm/templates/snippets/create_status/content_warning_field.html:18
+msgid "Spoilers/content warnings:"
+msgstr "스포일러/내용경고:"
+
+#: bookwyrm/templates/snippets/create_status/content_warning_field.html:27
+msgid "Spoilers ahead!"
+msgstr "스포일러 있음!"
+
+#: bookwyrm/templates/snippets/create_status/layout.html:45
+#: bookwyrm/templates/snippets/reading_modals/form.html:7
+msgid "Comment:"
+msgstr "코멘트:"
+
+#: bookwyrm/templates/snippets/create_status/post_options_block.html:19
+msgid "Update"
+msgstr "업데이트"
+
+#: bookwyrm/templates/snippets/create_status/post_options_block.html:21
+msgid "Post"
+msgstr "게시"
+
+#: bookwyrm/templates/snippets/create_status/quotation.html:16
+msgid "Quote:"
+msgstr "인용:"
+
+#: bookwyrm/templates/snippets/create_status/quotation.html:24
+#, python-format
+msgid "An excerpt from '%(book_title)s'"
+msgstr ""
+
+#: bookwyrm/templates/snippets/create_status/quotation.html:31
+msgid "Position:"
+msgstr ""
+
+#: bookwyrm/templates/snippets/create_status/quotation.html:44
+msgid "On page:"
+msgstr ""
+
+#: bookwyrm/templates/snippets/create_status/quotation.html:50
+msgid "At percent:"
+msgstr "퍼센트:"
+
+#: bookwyrm/templates/snippets/create_status/quotation.html:69
+msgid "to"
+msgstr ""
+
+#: bookwyrm/templates/snippets/create_status/review.html:24
+#, python-format
+msgid "Your review of '%(book_title)s'"
+msgstr ""
+
+#: bookwyrm/templates/snippets/create_status/review.html:39
+msgid "Review:"
+msgstr "서평:"
+
+#: bookwyrm/templates/snippets/fav_button.html:16
+#: bookwyrm/templates/snippets/fav_button.html:17
+msgid "Like"
+msgstr "좋아요"
+
+#: bookwyrm/templates/snippets/fav_button.html:30
+#: bookwyrm/templates/snippets/fav_button.html:31
+msgid "Un-like"
+msgstr "좋아요 해제"
+
+#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:5
+msgid "Filters"
+msgstr "필터"
+
+#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:10
+#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:17
+msgid "Filters are applied"
+msgstr "필터 적용함"
+
+#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:20
+msgid "Clear filters"
+msgstr "필터 해제하기"
+
+#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43
+msgid "Apply filters"
+msgstr "필터 적용"
+
+#: bookwyrm/templates/snippets/follow_button.html:20
+#, python-format
+msgid "Follow @%(username)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/follow_button.html:22
+msgid "Follow"
+msgstr "팔로우"
+
+#: bookwyrm/templates/snippets/follow_button.html:31
+msgid "Undo follow request"
+msgstr "팔로우 요청을 취소"
+
+#: bookwyrm/templates/snippets/follow_button.html:36
+#, python-format
+msgid "Unfollow @%(username)s"
+msgstr "@%(username)s 언팔로우"
+
+#: bookwyrm/templates/snippets/follow_button.html:38
+msgid "Unfollow"
+msgstr "언팔로우"
+
+#: bookwyrm/templates/snippets/follow_request_buttons.html:7
+#: bookwyrm/templates/snippets/join_invitation_buttons.html:9
+msgid "Accept"
+msgstr "수락"
+
+#: bookwyrm/templates/snippets/footer.html:16
+msgid "Documentation"
+msgstr "문서"
+
+#: bookwyrm/templates/snippets/footer.html:42
+#, python-format
+msgid "Support %(site_name)s on %(support_title)s "
+msgstr ""
+
+#: bookwyrm/templates/snippets/footer.html:49
+msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub ."
+msgstr "BookWyrm의 소스 코드는 자유롭게 사용할 수 있습니다. GitHub 에서 기여하거나 이슈를 제보할 수 있습니다."
+
+#: bookwyrm/templates/snippets/form_rate_stars.html:20
+#: bookwyrm/templates/snippets/stars.html:23
+msgid "No rating"
+msgstr "별점 없음"
+
+#: bookwyrm/templates/snippets/form_rate_stars.html:28
+#, python-format
+msgid "%(half_rating)s star"
+msgid_plural "%(half_rating)s stars"
+msgstr[0] ""
+
+#: bookwyrm/templates/snippets/form_rate_stars.html:64
+#: bookwyrm/templates/snippets/stars.html:7
+#, python-format
+msgid "%(rating)s star"
+msgid_plural "%(rating)s stars"
+msgstr[0] ""
+
+#: bookwyrm/templates/snippets/generated_status/goal.html:2
+#, python-format
+msgid "set a goal to read %(counter)s book in %(year)s"
+msgid_plural "set a goal to read %(counter)s books in %(year)s"
+msgstr[0] ""
+
+#: bookwyrm/templates/snippets/generated_status/rating.html:3
+#, python-format
+msgid "rated %(title)s : %(display_rating)s star"
+msgid_plural "rated %(title)s : %(display_rating)s stars"
+msgstr[0] ""
+
+#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4
+#, python-format
+msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s"
+msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s"
+msgstr[0] ""
+
+#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12
+#, python-format
+msgid "Review of \"%(book_title)s\": %(review_title)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/goal_form.html:4
+#, python-format
+msgid "Set a goal for how many books you'll finish reading in %(year)s, and track your progress throughout the year."
+msgstr "%(year)s년에 몇 권의 책을 끝까지 읽을 것인지 목표를 설정하고 한 해 동안의 성과를 추적합시다."
+
+#: bookwyrm/templates/snippets/goal_form.html:16
+msgid "Reading goal:"
+msgstr "읽기 목표:"
+
+#: bookwyrm/templates/snippets/goal_form.html:21
+msgid "books"
+msgstr "책"
+
+#: bookwyrm/templates/snippets/goal_form.html:26
+msgid "Goal privacy:"
+msgstr "목표의 프라이버시:"
+
+#: bookwyrm/templates/snippets/goal_form.html:33
+#: bookwyrm/templates/snippets/reading_modals/layout.html:13
+msgid "Post to feed"
+msgstr "피드에 게시"
+
+#: bookwyrm/templates/snippets/goal_form.html:37
+msgid "Set goal"
+msgstr "목표 설정"
+
+#: bookwyrm/templates/snippets/goal_progress.html:7
+msgctxt "Goal successfully completed"
+msgid "Success!"
+msgstr "성공!"
+
+#: bookwyrm/templates/snippets/goal_progress.html:9
+#, python-format
+msgid "%(percent)s%% complete!"
+msgstr ""
+
+#: bookwyrm/templates/snippets/goal_progress.html:12
+#, python-format
+msgid "You've read %(read_count)s of %(goal_count)s books ."
+msgstr ""
+
+#: bookwyrm/templates/snippets/goal_progress.html:14
+#, python-format
+msgid "%(username)s has read %(read_count)s of %(goal_count)s books ."
+msgstr ""
+
+#: bookwyrm/templates/snippets/move_user_buttons.html:10
+msgid "Follow at new account"
+msgstr "새 계정에서 팔로우하기"
+
+#: bookwyrm/templates/snippets/moved_user_notice.html:7
+#, python-format
+msgid "%(user)s has moved to %(moved_to_name)s "
+msgstr ""
+
+#: bookwyrm/templates/snippets/page_text.html:8
+#, python-format
+msgid "page %(page)s of %(total_pages)s"
+msgstr "%(total_pages)s쪽 중 %(page)s쪽"
+
+#: bookwyrm/templates/snippets/page_text.html:14
+#, python-format
+msgid "page %(page)s"
+msgstr "%(page)s쪽"
+
+#: bookwyrm/templates/snippets/pagination.html:13
+msgid "Newer"
+msgstr ""
+
+#: bookwyrm/templates/snippets/pagination.html:15
+msgid "Previous"
+msgstr ""
+
+#: bookwyrm/templates/snippets/pagination.html:28
+msgid "Older"
+msgstr ""
+
+#: bookwyrm/templates/snippets/privacy-icons.html:12
+msgid "Followers-only"
+msgstr "팔로워만"
+
+#: bookwyrm/templates/snippets/rate_action.html:5
+msgid "Leave a rating"
+msgstr "별점 남기기"
+
+#: bookwyrm/templates/snippets/rate_action.html:20
+msgid "Rate"
+msgstr "별점"
+
+#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:6
+#, python-format
+msgid "Finish \"%(book_title)s \""
+msgstr ""
+
+#: bookwyrm/templates/snippets/reading_modals/form.html:9
+msgid "(Optional)"
+msgstr ""
+
+#: bookwyrm/templates/snippets/reading_modals/progress_update_modal.html:6
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:61
+msgid "Update progress"
+msgstr ""
+
+#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:6
+#, python-format
+msgid "Start \"%(book_title)s \""
+msgstr ""
+
+#: bookwyrm/templates/snippets/reading_modals/stop_reading_modal.html:6
+#, python-format
+msgid "Stop Reading \"%(book_title)s \""
+msgstr ""
+
+#: bookwyrm/templates/snippets/reading_modals/stop_reading_modal.html:32
+#: bookwyrm/templates/snippets/shelf_selector.html:53
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:21
+msgid "Stopped reading"
+msgstr "읽다 멈춘 것"
+
+#: bookwyrm/templates/snippets/reading_modals/want_to_read_modal.html:6
+#, python-format
+msgid "Want to Read \"%(book_title)s \""
+msgstr ""
+
+#: bookwyrm/templates/snippets/register_form.html:18
+msgid "Choose wisely! Your username cannot be changed."
+msgstr "신중히 고르세요! 이용자명은 바꿀 수 없어요."
+
+#: bookwyrm/templates/snippets/register_form.html:66
+msgid "Sign Up"
+msgstr "가입하기"
+
+#: bookwyrm/templates/snippets/report_modal.html:8
+#, python-format
+msgid "Report @%(username)s's status"
+msgstr "@%(username)s의 게시물을 제보"
+
+#: bookwyrm/templates/snippets/report_modal.html:10
+#, python-format
+msgid "Report %(domain)s link"
+msgstr ""
+
+#: bookwyrm/templates/snippets/report_modal.html:12
+#, python-format
+msgid "Report @%(username)s"
+msgstr "@%(username)s를 제보"
+
+#: bookwyrm/templates/snippets/report_modal.html:34
+#, python-format
+msgid "This report will be sent to %(site_name)s's moderators for review."
+msgstr ""
+
+#: bookwyrm/templates/snippets/report_modal.html:36
+msgid "Links from this domain will be removed until your report has been reviewed."
+msgstr ""
+
+#: bookwyrm/templates/snippets/report_modal.html:41
+msgid "More info about this report:"
+msgstr ""
+
+#: bookwyrm/templates/snippets/shelf_selector.html:7
+msgid "Move book"
+msgstr "책 정리"
+
+#: bookwyrm/templates/snippets/shelf_selector.html:38
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:17
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:33
+msgid "Start reading"
+msgstr "읽기 시작"
+
+#: bookwyrm/templates/snippets/shelf_selector.html:60
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:38
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:55
+msgid "Want to read"
+msgstr ""
+
+#: bookwyrm/templates/snippets/shelf_selector.html:81
+#: bookwyrm/templates/snippets/shelf_selector.html:95
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:73
+#, python-format
+msgid "Remove from %(name)s"
+msgstr "%(name)s에서 제거"
+
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown.html:5
+msgid "More shelves"
+msgstr "더 많은 책꽂이"
+
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:31
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:48
+msgid "Stop reading"
+msgstr "읽기 멈춤"
+
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:40
+msgid "Finish reading"
+msgstr "읽기 마치기"
+
+#: bookwyrm/templates/snippets/status/content_status.html:69
+msgid "Show status"
+msgstr "기록 보기"
+
+#: bookwyrm/templates/snippets/status/content_status.html:91
+#, python-format
+msgid "(Page %(page)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:91
+#, python-format
+msgid "%(endpage)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:93
+#, python-format
+msgid "(%(percent)s%%"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:93
+#, python-format
+msgid " - %(endpercent)s%%"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:116
+msgid "Open image in new window"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/content_status.html:137
+msgid "Hide status"
+msgstr "숨기기"
+
+#: bookwyrm/templates/snippets/status/header.html:45
+#, python-format
+msgid "edited %(date)s"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/headers/comment.html:8
+#, python-format
+msgid "commented on %(book)s by %(author_name)s "
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/headers/comment.html:15
+#, python-format
+msgid "commented on %(book)s "
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/headers/note.html:8
+#, python-format
+msgid "replied to %(username)s 's status "
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/headers/quotation.html:8
+#, python-format
+msgid "quoted %(book)s by %(author_name)s "
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/headers/quotation.html:15
+#, python-format
+msgid "quoted %(book)s "
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/headers/rating.html:3
+#, python-format
+msgid "rated %(book)s :"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/headers/read.html:10
+#, python-format
+msgid "finished reading %(book)s by %(author_name)s "
+msgstr "님이 %(author_name)s 의 %(book)s 읽기 마침"
+
+#: bookwyrm/templates/snippets/status/headers/read.html:17
+#, python-format
+msgid "finished reading %(book)s "
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/headers/reading.html:10
+#, python-format
+msgid "started reading %(book)s by %(author_name)s "
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/headers/reading.html:17
+#, python-format
+msgid "started reading %(book)s "
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/headers/review.html:8
+#, python-format
+msgid "reviewed %(book)s by %(author_name)s "
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/headers/review.html:15
+#, python-format
+msgid "reviewed %(book)s "
+msgstr "님이 서평한 %(book)s "
+
+#: bookwyrm/templates/snippets/status/headers/stopped_reading.html:10
+#, python-format
+msgid "stopped reading %(book)s by %(author_name)s "
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/headers/stopped_reading.html:17
+#, python-format
+msgid "stopped reading %(book)s "
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/headers/to_read.html:10
+#, python-format
+msgid "wants to read %(book)s by %(author_name)s "
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/headers/to_read.html:17
+#, python-format
+msgid "wants to read %(book)s "
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/layout.html:24
+#: bookwyrm/templates/snippets/status/status_options.html:17
+msgid "Delete status"
+msgstr "기록 지우기"
+
+#: bookwyrm/templates/snippets/status/layout.html:57
+#: bookwyrm/templates/snippets/status/layout.html:58
+msgid "Boost status"
+msgstr "기록 부스트"
+
+#: bookwyrm/templates/snippets/status/layout.html:61
+#: bookwyrm/templates/snippets/status/layout.html:62
+msgid "Like status"
+msgstr ""
+
+#: bookwyrm/templates/snippets/status/status.html:10
+msgid "boosted"
+msgstr "부스트함"
+
+#: bookwyrm/templates/snippets/status/status_options.html:7
+#: bookwyrm/templates/snippets/user_options.html:7
+msgid "More options"
+msgstr ""
+
+#: bookwyrm/templates/snippets/switch_edition_button.html:5
+msgid "Switch to this edition"
+msgstr "이 판으로 바꾸기"
+
+#: bookwyrm/templates/snippets/table-sort-header.html:6
+msgid "Sorted ascending"
+msgstr ""
+
+#: bookwyrm/templates/snippets/table-sort-header.html:10
+msgid "Sorted descending"
+msgstr ""
+
+#: bookwyrm/templates/snippets/trimmed_text.html:17
+msgid "Show more"
+msgstr "더 보기"
+
+#: bookwyrm/templates/snippets/trimmed_text.html:35
+msgid "Show less"
+msgstr "덜 보기"
+
+#: bookwyrm/templates/snippets/user_active_tag.html:5
+msgid "Moved"
+msgstr ""
+
+#: bookwyrm/templates/snippets/user_active_tag.html:12
+msgid "Deleted"
+msgstr "지움"
+
+#: bookwyrm/templates/snippets/user_active_tag.html:15
+msgid "Inactive"
+msgstr "비활성화"
+
+#: bookwyrm/templates/two_factor_auth/two_factor_login.html:29
+msgid "2FA check"
+msgstr "2FA 체크"
+
+#: bookwyrm/templates/two_factor_auth/two_factor_login.html:37
+msgid "Enter the code from your authenticator app:"
+msgstr ""
+
+#: bookwyrm/templates/two_factor_auth/two_factor_login.html:41
+msgid "Confirm and Log In"
+msgstr ""
+
+#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:29
+msgid "2FA is available"
+msgstr "2FA 쓸 수 있음"
+
+#: bookwyrm/templates/two_factor_auth/two_factor_prompt.html:34
+msgid "You can secure your account by setting up two factor authentication in your user preferences. This will require a one-time code from your phone in addition to your password each time you log in."
+msgstr ""
+
+#: bookwyrm/templates/user/books_header.html:9
+#, python-format
+msgid "%(username)s's books"
+msgstr ""
+
+#: bookwyrm/templates/user/goal.html:12
+#, python-format
+msgid "%(year)s Reading Progress"
+msgstr ""
+
+#: bookwyrm/templates/user/goal.html:16
+msgid "Edit Goal"
+msgstr "목표 수정"
+
+#: bookwyrm/templates/user/goal.html:32
+#, python-format
+msgid "%(name)s hasn't set a reading goal for %(year)s."
+msgstr ""
+
+#: bookwyrm/templates/user/goal.html:44
+#, python-format
+msgid "Your %(year)s Books"
+msgstr ""
+
+#: bookwyrm/templates/user/goal.html:46
+#, python-format
+msgid "%(username)s's %(year)s Books"
+msgstr ""
+
+#: bookwyrm/templates/user/groups.html:14
+msgid "Your Groups"
+msgstr "내 그룹"
+
+#: bookwyrm/templates/user/groups.html:16
+#, python-format
+msgid "Groups: %(username)s"
+msgstr ""
+
+#: bookwyrm/templates/user/layout.html:59
+msgid "Follow Requests"
+msgstr ""
+
+#: bookwyrm/templates/user/layout.html:83
+#: bookwyrm/templates/user/reviews_comments.html:6
+#: bookwyrm/templates/user/reviews_comments.html:12
+msgid "Reviews and Comments"
+msgstr "서평과 코멘트"
+
+#: bookwyrm/templates/user/lists.html:16
+#, python-format
+msgid "Lists: %(username)s"
+msgstr ""
+
+#: bookwyrm/templates/user/lists.html:22 bookwyrm/templates/user/lists.html:34
+msgid "Create list"
+msgstr "목록 만들기"
+
+#: bookwyrm/templates/user/moved.html:25
+#: bookwyrm/templates/user/user_preview.html:22
+#, python-format
+msgid "Joined %(date)s"
+msgstr "참여: %(date)s"
+
+#: bookwyrm/templates/user/relationships/followers.html:36
+#, python-format
+msgid "%(username)s has no followers"
+msgstr ""
+
+#: bookwyrm/templates/user/relationships/following.html:6
+#: bookwyrm/templates/user/relationships/following.html:11
+#: bookwyrm/templates/user/relationships/following.html:21
+#: bookwyrm/templates/user/relationships/layout.html:15
+msgid "Following"
+msgstr "팔로잉"
+
+#: bookwyrm/templates/user/relationships/following.html:30
+#, python-format
+msgid "%(username)s isn't following any users"
+msgstr ""
+
+#: bookwyrm/templates/user/reviews_comments.html:26
+msgid "No reviews or comments yet!"
+msgstr "아직 서평 혹은 코멘트가 없어요!"
+
+#: bookwyrm/templates/user/user.html:20
+msgid "Edit profile"
+msgstr "프로필 수정"
+
+#: bookwyrm/templates/user/user.html:42
+#, python-format
+msgid "View all %(size)s"
+msgstr "%(size)s권 모두 보기"
+
+#: bookwyrm/templates/user/user.html:61
+msgid "View all books"
+msgstr "모든 도서 보기"
+
+#: bookwyrm/templates/user/user.html:69
+#, python-format
+msgid "%(current_year)s Reading Goal"
+msgstr ""
+
+#: bookwyrm/templates/user/user.html:76
+msgid "User Activity"
+msgstr "이용자 활동"
+
+#: bookwyrm/templates/user/user.html:82
+msgid "Show RSS Options"
+msgstr "RSS 옵션 보여주기"
+
+#: bookwyrm/templates/user/user.html:88
+msgid "RSS feed"
+msgstr "RSS 피드"
+
+#: bookwyrm/templates/user/user.html:104
+msgid "Complete feed"
+msgstr ""
+
+#: bookwyrm/templates/user/user.html:109
+msgid "Reviews only"
+msgstr "서평만"
+
+#: bookwyrm/templates/user/user.html:114
+msgid "Quotes only"
+msgstr "인용만"
+
+#: bookwyrm/templates/user/user.html:119
+msgid "Comments only"
+msgstr "코멘트만"
+
+#: bookwyrm/templates/user/user.html:135
+msgid "No activities yet!"
+msgstr ""
+
+#: bookwyrm/templates/user/user_preview.html:26
+#, python-format
+msgid "%(display_count)s follower"
+msgid_plural "%(display_count)s followers"
+msgstr[0] ""
+
+#: bookwyrm/templates/user/user_preview.html:31
+#, python-format
+msgid "%(counter)s following"
+msgstr ""
+
+#: bookwyrm/templates/user/user_preview.html:45
+#, python-format
+msgid "%(mutuals_display)s follower you follow"
+msgid_plural "%(mutuals_display)s followers you follow"
+msgstr[0] ""
+
+#: bookwyrm/templates/user/user_preview.html:49
+msgid "No followers you follow"
+msgstr "팔로워 없음"
+
+#: bookwyrm/templates/user_menu.html:7
+msgid "View profile and more"
+msgstr ""
+
+#: bookwyrm/templates/widgets/clearable_file_input_with_warning.html:28
+msgid "File exceeds maximum size: 10MB"
+msgstr ""
+
+#: bookwyrm/templatetags/list_page_tags.py:14
+#, python-format
+msgid "Book List: %(name)s"
+msgstr ""
+
+#: bookwyrm/templatetags/list_page_tags.py:22
+#, python-format
+msgid "%(num)d book - by %(user)s"
+msgid_plural "%(num)d books - by %(user)s"
+msgstr[0] ""
+
+#: bookwyrm/templatetags/utilities.py:49
+#, python-format
+msgid "%(title)s: %(subtitle)s"
+msgstr ""
+
+#: bookwyrm/views/rss_feed.py:35
+#, python-brace-format
+msgid "Status updates from {obj.display_name}"
+msgstr ""
+
+#: bookwyrm/views/rss_feed.py:80
+#, python-brace-format
+msgid "Reviews from {obj.display_name}"
+msgstr ""
+
+#: bookwyrm/views/rss_feed.py:122
+#, python-brace-format
+msgid "Quotes from {obj.display_name}"
+msgstr ""
+
+#: bookwyrm/views/rss_feed.py:164
+#, python-brace-format
+msgid "Comments from {obj.display_name}"
+msgstr ""
+
+#: bookwyrm/views/updates.py:45
+#, python-format
+msgid "Load %(count)d unread status"
+msgid_plural "Load %(count)d unread statuses"
+msgstr[0] ""
+
diff --git a/nginx/development b/nginx/development
index 64cd1b911..2c3a1d02f 100644
--- a/nginx/development
+++ b/nginx/development
@@ -61,17 +61,25 @@ server {
proxy_pass http://web;
}
- # directly serve images and static files from the
+ # directly serve static files from the
# bookwyrm filesystem using sendfile.
# make the logs quieter by not reporting these requests
- location ~ \.(bmp|ico|jpg|jpeg|png|tif|tiff|webp|css|js)$ {
+ location ~ ^/static/ {
root /app;
try_files $uri =404;
add_header X-Cache-Status STATIC;
access_log off;
}
- # block access to any non-image files from images or static
+ # same with image files not in static folder
+ location ~ \.(bmp|ico|jpg|jpeg|png|svg|tif|tiff|webp)$ {
+ root /app;
+ try_files $uri =404;
+ add_header X-Cache-Status STATIC;
+ access_log off;
+ }
+
+ # block access to any non-image files from images
location ~ ^/images/ {
return 403;
}
diff --git a/nginx/production b/nginx/production
index 76ed19449..841ed8afa 100644
--- a/nginx/production
+++ b/nginx/production
@@ -93,19 +93,27 @@ server {
# proxy_pass http://web;
# }
#
-# # directly serve images and static files from the
+# # directly serve static files from the
# # bookwyrm filesystem using sendfile.
# # make the logs quieter by not reporting these requests
-# location ~ \.(bmp|ico|jpg|jpeg|png|tif|tiff|webp|css|js)$ {
+# location ~ ^/static/ {
# root /app;
# try_files $uri =404;
# add_header X-Cache-Status STATIC;
# access_log off;
# }
-# # block access to any non-image files from images or static
+# # same with image files not in static folder
+# location ~ \.(bmp|ico|jpg|jpeg|png|svg|tif|tiff|webp)$ {
+# root /app;
+# try_files $uri =404;
+# add_header X-Cache-Status STATIC;
+# access_log off;
+# }
+
+# # block access to any non-image files from images
# location ~ ^/images/ {
-# return 403;
+# return 403;
# }
#
# # monitor the celery queues with flower, no caching enabled
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 000000000..292ca8c41
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,2 @@
+[tool.black]
+required-version = "22"
diff --git a/pytest.ini b/pytest.ini
index b50efd602..18c955032 100644
--- a/pytest.ini
+++ b/pytest.ini
@@ -11,6 +11,7 @@ env =
DEBUG = false
USE_HTTPS = true
DOMAIN = your.domain.here
+ ALLOWED_HOSTS = your.domain.here
BOOKWYRM_DATABASE_BACKEND = postgres
MEDIA_ROOT = images/
CELERY_BROKER = ""
diff --git a/redis.conf b/redis.conf
index 2a417579f..79d6804f5 100644
--- a/redis.conf
+++ b/redis.conf
@@ -2,6 +2,9 @@ bind 127.0.0.1 ::1
protected-mode yes
port 6379
+auto-aof-rewrite-percentage 50
+auto-aof-rewrite-min-size 128mb
+
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command DEBUG ""
diff --git a/requirements.txt b/requirements.txt
index e9d75715f..9ff6e42fa 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,39 +1,43 @@
-aiohttp==3.9.0
+aiohttp==3.9.2
bleach==5.0.1
-celery==5.2.7
-colorthief==0.2.1
-Django==3.2.23
-django-celery-beat==2.4.0
+boto3==1.26.57
bw-file-resubmit==0.6.0rc2
-django-compressor==4.3.1
+celery==5.3.1
+colorthief==0.2.1
+Django==3.2.25
+django-celery-beat==2.5.0
+django-compressor==4.4
+django-csp==3.7
django-imagekit==4.1.0
django-model-utils==4.3.1
+django-pgtrigger==4.11.0
+django-redis==5.2.0
django-sass-processor==1.2.2
-django-csp==3.7
+django-storages==1.13.2
+django-storages[azure]
environs==9.5.0
-flower==1.2.0
+flower==2.0.0
+grpcio==1.57.0 # Not a direct dependency, pinned to get a security fix
gunicorn==20.0.4
libsass==0.22.0
Markdown==3.4.1
-packaging==21.3
-Pillow==10.0.1
-psycopg2==2.9.5
-pycryptodome==3.19.1
-python-dateutil==2.8.2
-redis==4.5.4
-requests==2.31.0
-responses==0.22.0
-pytz>=2022.7
-boto3==1.26.57
-django-storages==1.13.2
-django-storages[azure]
-django-redis==5.2.0
opentelemetry-api==1.16.0
opentelemetry-exporter-otlp-proto-grpc==1.16.0
opentelemetry-instrumentation-celery==0.37b0
opentelemetry-instrumentation-django==0.37b0
opentelemetry-instrumentation-psycopg2==0.37b0
opentelemetry-sdk==1.16.0
+packaging==21.3
+Pillow==10.2.0
protobuf==3.20.*
+psycopg2==2.9.5
+pycryptodome==3.19.1
pyotp==2.8.0
+python-dateutil==2.8.2
+pytz>=2022.7
qrcode==7.3.1
+redis==4.5.4
+requests==2.31.0
+responses==0.22.0
+setuptools>=65.5.1 # Not a direct dependency, pinned to get a security fix
+tornado==6.3.3 # Not a direct dependency, pinned to get a security fix
diff --git a/static/.gitkeep b/static/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/update.sh b/update.sh
deleted file mode 100755
index 727ce1b24..000000000
--- a/update.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-# determine inital and target versions
-initial_version="`./bw-dev runweb python manage.py instance_version --current`"
-target_version="`./bw-dev runweb python manage.py instance_version --target`"
-
-initial_version="`echo $initial_version | tail -n 1 | xargs`"
-target_version="`echo $target_version | tail -n 1 | xargs`"
-if [[ "$initial_version" = "$target_version" ]]; then
- echo "Already up to date; version $initial_version"
- exit
-fi
-
-echo "---------------------------------------"
-echo "Updating from version: $initial_version"
-echo ".......... to version: $target_version"
-echo "---------------------------------------"
-
-function version_gt() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"; }
-
-# execute scripts between initial and target
-for version in `ls -A updates/ | sort -V `; do
- if version_gt $initial_version $version; then
- # too early
- continue
- fi
- if version_gt $version $target_version; then
- # too late
- continue
- fi
- echo "Running tasks for version $version"
- ./updates/$version
-done
-
-./bw-dev runweb python manage.py instance_version --update
-echo "✨ ----------- Done! --------------- ✨"