diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py
index 4e92b32ed..c0f4a9233 100644
--- a/bookwyrm/forms.py
+++ b/bookwyrm/forms.py
@@ -132,6 +132,7 @@ class EditUserForm(CustomForm):
"show_goal",
"manually_approves_followers",
"discoverable",
+ "preferred_timezone",
]
help_texts = {f: None for f in fields}
diff --git a/bookwyrm/migrations/0059_user_preferred_timezone.py b/bookwyrm/migrations/0059_user_preferred_timezone.py
new file mode 100644
index 000000000..122ec1216
--- /dev/null
+++ b/bookwyrm/migrations/0059_user_preferred_timezone.py
@@ -0,0 +1,628 @@
+# Generated by Django 3.1.6 on 2021-03-28 21:02
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("bookwyrm", "0058_auto_20210324_1536"),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name="user",
+ name="preferred_timezone",
+ field=models.CharField(
+ choices=[
+ ("Africa/Abidjan", "Africa/Abidjan"),
+ ("Africa/Accra", "Africa/Accra"),
+ ("Africa/Addis_Ababa", "Africa/Addis_Ababa"),
+ ("Africa/Algiers", "Africa/Algiers"),
+ ("Africa/Asmara", "Africa/Asmara"),
+ ("Africa/Asmera", "Africa/Asmera"),
+ ("Africa/Bamako", "Africa/Bamako"),
+ ("Africa/Bangui", "Africa/Bangui"),
+ ("Africa/Banjul", "Africa/Banjul"),
+ ("Africa/Bissau", "Africa/Bissau"),
+ ("Africa/Blantyre", "Africa/Blantyre"),
+ ("Africa/Brazzaville", "Africa/Brazzaville"),
+ ("Africa/Bujumbura", "Africa/Bujumbura"),
+ ("Africa/Cairo", "Africa/Cairo"),
+ ("Africa/Casablanca", "Africa/Casablanca"),
+ ("Africa/Ceuta", "Africa/Ceuta"),
+ ("Africa/Conakry", "Africa/Conakry"),
+ ("Africa/Dakar", "Africa/Dakar"),
+ ("Africa/Dar_es_Salaam", "Africa/Dar_es_Salaam"),
+ ("Africa/Djibouti", "Africa/Djibouti"),
+ ("Africa/Douala", "Africa/Douala"),
+ ("Africa/El_Aaiun", "Africa/El_Aaiun"),
+ ("Africa/Freetown", "Africa/Freetown"),
+ ("Africa/Gaborone", "Africa/Gaborone"),
+ ("Africa/Harare", "Africa/Harare"),
+ ("Africa/Johannesburg", "Africa/Johannesburg"),
+ ("Africa/Juba", "Africa/Juba"),
+ ("Africa/Kampala", "Africa/Kampala"),
+ ("Africa/Khartoum", "Africa/Khartoum"),
+ ("Africa/Kigali", "Africa/Kigali"),
+ ("Africa/Kinshasa", "Africa/Kinshasa"),
+ ("Africa/Lagos", "Africa/Lagos"),
+ ("Africa/Libreville", "Africa/Libreville"),
+ ("Africa/Lome", "Africa/Lome"),
+ ("Africa/Luanda", "Africa/Luanda"),
+ ("Africa/Lubumbashi", "Africa/Lubumbashi"),
+ ("Africa/Lusaka", "Africa/Lusaka"),
+ ("Africa/Malabo", "Africa/Malabo"),
+ ("Africa/Maputo", "Africa/Maputo"),
+ ("Africa/Maseru", "Africa/Maseru"),
+ ("Africa/Mbabane", "Africa/Mbabane"),
+ ("Africa/Mogadishu", "Africa/Mogadishu"),
+ ("Africa/Monrovia", "Africa/Monrovia"),
+ ("Africa/Nairobi", "Africa/Nairobi"),
+ ("Africa/Ndjamena", "Africa/Ndjamena"),
+ ("Africa/Niamey", "Africa/Niamey"),
+ ("Africa/Nouakchott", "Africa/Nouakchott"),
+ ("Africa/Ouagadougou", "Africa/Ouagadougou"),
+ ("Africa/Porto-Novo", "Africa/Porto-Novo"),
+ ("Africa/Sao_Tome", "Africa/Sao_Tome"),
+ ("Africa/Timbuktu", "Africa/Timbuktu"),
+ ("Africa/Tripoli", "Africa/Tripoli"),
+ ("Africa/Tunis", "Africa/Tunis"),
+ ("Africa/Windhoek", "Africa/Windhoek"),
+ ("America/Adak", "America/Adak"),
+ ("America/Anchorage", "America/Anchorage"),
+ ("America/Anguilla", "America/Anguilla"),
+ ("America/Antigua", "America/Antigua"),
+ ("America/Araguaina", "America/Araguaina"),
+ (
+ "America/Argentina/Buenos_Aires",
+ "America/Argentina/Buenos_Aires",
+ ),
+ ("America/Argentina/Catamarca", "America/Argentina/Catamarca"),
+ (
+ "America/Argentina/ComodRivadavia",
+ "America/Argentina/ComodRivadavia",
+ ),
+ ("America/Argentina/Cordoba", "America/Argentina/Cordoba"),
+ ("America/Argentina/Jujuy", "America/Argentina/Jujuy"),
+ ("America/Argentina/La_Rioja", "America/Argentina/La_Rioja"),
+ ("America/Argentina/Mendoza", "America/Argentina/Mendoza"),
+ (
+ "America/Argentina/Rio_Gallegos",
+ "America/Argentina/Rio_Gallegos",
+ ),
+ ("America/Argentina/Salta", "America/Argentina/Salta"),
+ ("America/Argentina/San_Juan", "America/Argentina/San_Juan"),
+ ("America/Argentina/San_Luis", "America/Argentina/San_Luis"),
+ ("America/Argentina/Tucuman", "America/Argentina/Tucuman"),
+ ("America/Argentina/Ushuaia", "America/Argentina/Ushuaia"),
+ ("America/Aruba", "America/Aruba"),
+ ("America/Asuncion", "America/Asuncion"),
+ ("America/Atikokan", "America/Atikokan"),
+ ("America/Atka", "America/Atka"),
+ ("America/Bahia", "America/Bahia"),
+ ("America/Bahia_Banderas", "America/Bahia_Banderas"),
+ ("America/Barbados", "America/Barbados"),
+ ("America/Belem", "America/Belem"),
+ ("America/Belize", "America/Belize"),
+ ("America/Blanc-Sablon", "America/Blanc-Sablon"),
+ ("America/Boa_Vista", "America/Boa_Vista"),
+ ("America/Bogota", "America/Bogota"),
+ ("America/Boise", "America/Boise"),
+ ("America/Buenos_Aires", "America/Buenos_Aires"),
+ ("America/Cambridge_Bay", "America/Cambridge_Bay"),
+ ("America/Campo_Grande", "America/Campo_Grande"),
+ ("America/Cancun", "America/Cancun"),
+ ("America/Caracas", "America/Caracas"),
+ ("America/Catamarca", "America/Catamarca"),
+ ("America/Cayenne", "America/Cayenne"),
+ ("America/Cayman", "America/Cayman"),
+ ("America/Chicago", "America/Chicago"),
+ ("America/Chihuahua", "America/Chihuahua"),
+ ("America/Coral_Harbour", "America/Coral_Harbour"),
+ ("America/Cordoba", "America/Cordoba"),
+ ("America/Costa_Rica", "America/Costa_Rica"),
+ ("America/Creston", "America/Creston"),
+ ("America/Cuiaba", "America/Cuiaba"),
+ ("America/Curacao", "America/Curacao"),
+ ("America/Danmarkshavn", "America/Danmarkshavn"),
+ ("America/Dawson", "America/Dawson"),
+ ("America/Dawson_Creek", "America/Dawson_Creek"),
+ ("America/Denver", "America/Denver"),
+ ("America/Detroit", "America/Detroit"),
+ ("America/Dominica", "America/Dominica"),
+ ("America/Edmonton", "America/Edmonton"),
+ ("America/Eirunepe", "America/Eirunepe"),
+ ("America/El_Salvador", "America/El_Salvador"),
+ ("America/Ensenada", "America/Ensenada"),
+ ("America/Fort_Nelson", "America/Fort_Nelson"),
+ ("America/Fort_Wayne", "America/Fort_Wayne"),
+ ("America/Fortaleza", "America/Fortaleza"),
+ ("America/Glace_Bay", "America/Glace_Bay"),
+ ("America/Godthab", "America/Godthab"),
+ ("America/Goose_Bay", "America/Goose_Bay"),
+ ("America/Grand_Turk", "America/Grand_Turk"),
+ ("America/Grenada", "America/Grenada"),
+ ("America/Guadeloupe", "America/Guadeloupe"),
+ ("America/Guatemala", "America/Guatemala"),
+ ("America/Guayaquil", "America/Guayaquil"),
+ ("America/Guyana", "America/Guyana"),
+ ("America/Halifax", "America/Halifax"),
+ ("America/Havana", "America/Havana"),
+ ("America/Hermosillo", "America/Hermosillo"),
+ ("America/Indiana/Indianapolis", "America/Indiana/Indianapolis"),
+ ("America/Indiana/Knox", "America/Indiana/Knox"),
+ ("America/Indiana/Marengo", "America/Indiana/Marengo"),
+ ("America/Indiana/Petersburg", "America/Indiana/Petersburg"),
+ ("America/Indiana/Tell_City", "America/Indiana/Tell_City"),
+ ("America/Indiana/Vevay", "America/Indiana/Vevay"),
+ ("America/Indiana/Vincennes", "America/Indiana/Vincennes"),
+ ("America/Indiana/Winamac", "America/Indiana/Winamac"),
+ ("America/Indianapolis", "America/Indianapolis"),
+ ("America/Inuvik", "America/Inuvik"),
+ ("America/Iqaluit", "America/Iqaluit"),
+ ("America/Jamaica", "America/Jamaica"),
+ ("America/Jujuy", "America/Jujuy"),
+ ("America/Juneau", "America/Juneau"),
+ ("America/Kentucky/Louisville", "America/Kentucky/Louisville"),
+ ("America/Kentucky/Monticello", "America/Kentucky/Monticello"),
+ ("America/Knox_IN", "America/Knox_IN"),
+ ("America/Kralendijk", "America/Kralendijk"),
+ ("America/La_Paz", "America/La_Paz"),
+ ("America/Lima", "America/Lima"),
+ ("America/Los_Angeles", "America/Los_Angeles"),
+ ("America/Louisville", "America/Louisville"),
+ ("America/Lower_Princes", "America/Lower_Princes"),
+ ("America/Maceio", "America/Maceio"),
+ ("America/Managua", "America/Managua"),
+ ("America/Manaus", "America/Manaus"),
+ ("America/Marigot", "America/Marigot"),
+ ("America/Martinique", "America/Martinique"),
+ ("America/Matamoros", "America/Matamoros"),
+ ("America/Mazatlan", "America/Mazatlan"),
+ ("America/Mendoza", "America/Mendoza"),
+ ("America/Menominee", "America/Menominee"),
+ ("America/Merida", "America/Merida"),
+ ("America/Metlakatla", "America/Metlakatla"),
+ ("America/Mexico_City", "America/Mexico_City"),
+ ("America/Miquelon", "America/Miquelon"),
+ ("America/Moncton", "America/Moncton"),
+ ("America/Monterrey", "America/Monterrey"),
+ ("America/Montevideo", "America/Montevideo"),
+ ("America/Montreal", "America/Montreal"),
+ ("America/Montserrat", "America/Montserrat"),
+ ("America/Nassau", "America/Nassau"),
+ ("America/New_York", "America/New_York"),
+ ("America/Nipigon", "America/Nipigon"),
+ ("America/Nome", "America/Nome"),
+ ("America/Noronha", "America/Noronha"),
+ ("America/North_Dakota/Beulah", "America/North_Dakota/Beulah"),
+ ("America/North_Dakota/Center", "America/North_Dakota/Center"),
+ (
+ "America/North_Dakota/New_Salem",
+ "America/North_Dakota/New_Salem",
+ ),
+ ("America/Nuuk", "America/Nuuk"),
+ ("America/Ojinaga", "America/Ojinaga"),
+ ("America/Panama", "America/Panama"),
+ ("America/Pangnirtung", "America/Pangnirtung"),
+ ("America/Paramaribo", "America/Paramaribo"),
+ ("America/Phoenix", "America/Phoenix"),
+ ("America/Port-au-Prince", "America/Port-au-Prince"),
+ ("America/Port_of_Spain", "America/Port_of_Spain"),
+ ("America/Porto_Acre", "America/Porto_Acre"),
+ ("America/Porto_Velho", "America/Porto_Velho"),
+ ("America/Puerto_Rico", "America/Puerto_Rico"),
+ ("America/Punta_Arenas", "America/Punta_Arenas"),
+ ("America/Rainy_River", "America/Rainy_River"),
+ ("America/Rankin_Inlet", "America/Rankin_Inlet"),
+ ("America/Recife", "America/Recife"),
+ ("America/Regina", "America/Regina"),
+ ("America/Resolute", "America/Resolute"),
+ ("America/Rio_Branco", "America/Rio_Branco"),
+ ("America/Rosario", "America/Rosario"),
+ ("America/Santa_Isabel", "America/Santa_Isabel"),
+ ("America/Santarem", "America/Santarem"),
+ ("America/Santiago", "America/Santiago"),
+ ("America/Santo_Domingo", "America/Santo_Domingo"),
+ ("America/Sao_Paulo", "America/Sao_Paulo"),
+ ("America/Scoresbysund", "America/Scoresbysund"),
+ ("America/Shiprock", "America/Shiprock"),
+ ("America/Sitka", "America/Sitka"),
+ ("America/St_Barthelemy", "America/St_Barthelemy"),
+ ("America/St_Johns", "America/St_Johns"),
+ ("America/St_Kitts", "America/St_Kitts"),
+ ("America/St_Lucia", "America/St_Lucia"),
+ ("America/St_Thomas", "America/St_Thomas"),
+ ("America/St_Vincent", "America/St_Vincent"),
+ ("America/Swift_Current", "America/Swift_Current"),
+ ("America/Tegucigalpa", "America/Tegucigalpa"),
+ ("America/Thule", "America/Thule"),
+ ("America/Thunder_Bay", "America/Thunder_Bay"),
+ ("America/Tijuana", "America/Tijuana"),
+ ("America/Toronto", "America/Toronto"),
+ ("America/Tortola", "America/Tortola"),
+ ("America/Vancouver", "America/Vancouver"),
+ ("America/Virgin", "America/Virgin"),
+ ("America/Whitehorse", "America/Whitehorse"),
+ ("America/Winnipeg", "America/Winnipeg"),
+ ("America/Yakutat", "America/Yakutat"),
+ ("America/Yellowknife", "America/Yellowknife"),
+ ("Antarctica/Casey", "Antarctica/Casey"),
+ ("Antarctica/Davis", "Antarctica/Davis"),
+ ("Antarctica/DumontDUrville", "Antarctica/DumontDUrville"),
+ ("Antarctica/Macquarie", "Antarctica/Macquarie"),
+ ("Antarctica/Mawson", "Antarctica/Mawson"),
+ ("Antarctica/McMurdo", "Antarctica/McMurdo"),
+ ("Antarctica/Palmer", "Antarctica/Palmer"),
+ ("Antarctica/Rothera", "Antarctica/Rothera"),
+ ("Antarctica/South_Pole", "Antarctica/South_Pole"),
+ ("Antarctica/Syowa", "Antarctica/Syowa"),
+ ("Antarctica/Troll", "Antarctica/Troll"),
+ ("Antarctica/Vostok", "Antarctica/Vostok"),
+ ("Arctic/Longyearbyen", "Arctic/Longyearbyen"),
+ ("Asia/Aden", "Asia/Aden"),
+ ("Asia/Almaty", "Asia/Almaty"),
+ ("Asia/Amman", "Asia/Amman"),
+ ("Asia/Anadyr", "Asia/Anadyr"),
+ ("Asia/Aqtau", "Asia/Aqtau"),
+ ("Asia/Aqtobe", "Asia/Aqtobe"),
+ ("Asia/Ashgabat", "Asia/Ashgabat"),
+ ("Asia/Ashkhabad", "Asia/Ashkhabad"),
+ ("Asia/Atyrau", "Asia/Atyrau"),
+ ("Asia/Baghdad", "Asia/Baghdad"),
+ ("Asia/Bahrain", "Asia/Bahrain"),
+ ("Asia/Baku", "Asia/Baku"),
+ ("Asia/Bangkok", "Asia/Bangkok"),
+ ("Asia/Barnaul", "Asia/Barnaul"),
+ ("Asia/Beirut", "Asia/Beirut"),
+ ("Asia/Bishkek", "Asia/Bishkek"),
+ ("Asia/Brunei", "Asia/Brunei"),
+ ("Asia/Calcutta", "Asia/Calcutta"),
+ ("Asia/Chita", "Asia/Chita"),
+ ("Asia/Choibalsan", "Asia/Choibalsan"),
+ ("Asia/Chongqing", "Asia/Chongqing"),
+ ("Asia/Chungking", "Asia/Chungking"),
+ ("Asia/Colombo", "Asia/Colombo"),
+ ("Asia/Dacca", "Asia/Dacca"),
+ ("Asia/Damascus", "Asia/Damascus"),
+ ("Asia/Dhaka", "Asia/Dhaka"),
+ ("Asia/Dili", "Asia/Dili"),
+ ("Asia/Dubai", "Asia/Dubai"),
+ ("Asia/Dushanbe", "Asia/Dushanbe"),
+ ("Asia/Famagusta", "Asia/Famagusta"),
+ ("Asia/Gaza", "Asia/Gaza"),
+ ("Asia/Harbin", "Asia/Harbin"),
+ ("Asia/Hebron", "Asia/Hebron"),
+ ("Asia/Ho_Chi_Minh", "Asia/Ho_Chi_Minh"),
+ ("Asia/Hong_Kong", "Asia/Hong_Kong"),
+ ("Asia/Hovd", "Asia/Hovd"),
+ ("Asia/Irkutsk", "Asia/Irkutsk"),
+ ("Asia/Istanbul", "Asia/Istanbul"),
+ ("Asia/Jakarta", "Asia/Jakarta"),
+ ("Asia/Jayapura", "Asia/Jayapura"),
+ ("Asia/Jerusalem", "Asia/Jerusalem"),
+ ("Asia/Kabul", "Asia/Kabul"),
+ ("Asia/Kamchatka", "Asia/Kamchatka"),
+ ("Asia/Karachi", "Asia/Karachi"),
+ ("Asia/Kashgar", "Asia/Kashgar"),
+ ("Asia/Kathmandu", "Asia/Kathmandu"),
+ ("Asia/Katmandu", "Asia/Katmandu"),
+ ("Asia/Khandyga", "Asia/Khandyga"),
+ ("Asia/Kolkata", "Asia/Kolkata"),
+ ("Asia/Krasnoyarsk", "Asia/Krasnoyarsk"),
+ ("Asia/Kuala_Lumpur", "Asia/Kuala_Lumpur"),
+ ("Asia/Kuching", "Asia/Kuching"),
+ ("Asia/Kuwait", "Asia/Kuwait"),
+ ("Asia/Macao", "Asia/Macao"),
+ ("Asia/Macau", "Asia/Macau"),
+ ("Asia/Magadan", "Asia/Magadan"),
+ ("Asia/Makassar", "Asia/Makassar"),
+ ("Asia/Manila", "Asia/Manila"),
+ ("Asia/Muscat", "Asia/Muscat"),
+ ("Asia/Nicosia", "Asia/Nicosia"),
+ ("Asia/Novokuznetsk", "Asia/Novokuznetsk"),
+ ("Asia/Novosibirsk", "Asia/Novosibirsk"),
+ ("Asia/Omsk", "Asia/Omsk"),
+ ("Asia/Oral", "Asia/Oral"),
+ ("Asia/Phnom_Penh", "Asia/Phnom_Penh"),
+ ("Asia/Pontianak", "Asia/Pontianak"),
+ ("Asia/Pyongyang", "Asia/Pyongyang"),
+ ("Asia/Qatar", "Asia/Qatar"),
+ ("Asia/Qostanay", "Asia/Qostanay"),
+ ("Asia/Qyzylorda", "Asia/Qyzylorda"),
+ ("Asia/Rangoon", "Asia/Rangoon"),
+ ("Asia/Riyadh", "Asia/Riyadh"),
+ ("Asia/Saigon", "Asia/Saigon"),
+ ("Asia/Sakhalin", "Asia/Sakhalin"),
+ ("Asia/Samarkand", "Asia/Samarkand"),
+ ("Asia/Seoul", "Asia/Seoul"),
+ ("Asia/Shanghai", "Asia/Shanghai"),
+ ("Asia/Singapore", "Asia/Singapore"),
+ ("Asia/Srednekolymsk", "Asia/Srednekolymsk"),
+ ("Asia/Taipei", "Asia/Taipei"),
+ ("Asia/Tashkent", "Asia/Tashkent"),
+ ("Asia/Tbilisi", "Asia/Tbilisi"),
+ ("Asia/Tehran", "Asia/Tehran"),
+ ("Asia/Tel_Aviv", "Asia/Tel_Aviv"),
+ ("Asia/Thimbu", "Asia/Thimbu"),
+ ("Asia/Thimphu", "Asia/Thimphu"),
+ ("Asia/Tokyo", "Asia/Tokyo"),
+ ("Asia/Tomsk", "Asia/Tomsk"),
+ ("Asia/Ujung_Pandang", "Asia/Ujung_Pandang"),
+ ("Asia/Ulaanbaatar", "Asia/Ulaanbaatar"),
+ ("Asia/Ulan_Bator", "Asia/Ulan_Bator"),
+ ("Asia/Urumqi", "Asia/Urumqi"),
+ ("Asia/Ust-Nera", "Asia/Ust-Nera"),
+ ("Asia/Vientiane", "Asia/Vientiane"),
+ ("Asia/Vladivostok", "Asia/Vladivostok"),
+ ("Asia/Yakutsk", "Asia/Yakutsk"),
+ ("Asia/Yangon", "Asia/Yangon"),
+ ("Asia/Yekaterinburg", "Asia/Yekaterinburg"),
+ ("Asia/Yerevan", "Asia/Yerevan"),
+ ("Atlantic/Azores", "Atlantic/Azores"),
+ ("Atlantic/Bermuda", "Atlantic/Bermuda"),
+ ("Atlantic/Canary", "Atlantic/Canary"),
+ ("Atlantic/Cape_Verde", "Atlantic/Cape_Verde"),
+ ("Atlantic/Faeroe", "Atlantic/Faeroe"),
+ ("Atlantic/Faroe", "Atlantic/Faroe"),
+ ("Atlantic/Jan_Mayen", "Atlantic/Jan_Mayen"),
+ ("Atlantic/Madeira", "Atlantic/Madeira"),
+ ("Atlantic/Reykjavik", "Atlantic/Reykjavik"),
+ ("Atlantic/South_Georgia", "Atlantic/South_Georgia"),
+ ("Atlantic/St_Helena", "Atlantic/St_Helena"),
+ ("Atlantic/Stanley", "Atlantic/Stanley"),
+ ("Australia/ACT", "Australia/ACT"),
+ ("Australia/Adelaide", "Australia/Adelaide"),
+ ("Australia/Brisbane", "Australia/Brisbane"),
+ ("Australia/Broken_Hill", "Australia/Broken_Hill"),
+ ("Australia/Canberra", "Australia/Canberra"),
+ ("Australia/Currie", "Australia/Currie"),
+ ("Australia/Darwin", "Australia/Darwin"),
+ ("Australia/Eucla", "Australia/Eucla"),
+ ("Australia/Hobart", "Australia/Hobart"),
+ ("Australia/LHI", "Australia/LHI"),
+ ("Australia/Lindeman", "Australia/Lindeman"),
+ ("Australia/Lord_Howe", "Australia/Lord_Howe"),
+ ("Australia/Melbourne", "Australia/Melbourne"),
+ ("Australia/NSW", "Australia/NSW"),
+ ("Australia/North", "Australia/North"),
+ ("Australia/Perth", "Australia/Perth"),
+ ("Australia/Queensland", "Australia/Queensland"),
+ ("Australia/South", "Australia/South"),
+ ("Australia/Sydney", "Australia/Sydney"),
+ ("Australia/Tasmania", "Australia/Tasmania"),
+ ("Australia/Victoria", "Australia/Victoria"),
+ ("Australia/West", "Australia/West"),
+ ("Australia/Yancowinna", "Australia/Yancowinna"),
+ ("Brazil/Acre", "Brazil/Acre"),
+ ("Brazil/DeNoronha", "Brazil/DeNoronha"),
+ ("Brazil/East", "Brazil/East"),
+ ("Brazil/West", "Brazil/West"),
+ ("CET", "CET"),
+ ("CST6CDT", "CST6CDT"),
+ ("Canada/Atlantic", "Canada/Atlantic"),
+ ("Canada/Central", "Canada/Central"),
+ ("Canada/Eastern", "Canada/Eastern"),
+ ("Canada/Mountain", "Canada/Mountain"),
+ ("Canada/Newfoundland", "Canada/Newfoundland"),
+ ("Canada/Pacific", "Canada/Pacific"),
+ ("Canada/Saskatchewan", "Canada/Saskatchewan"),
+ ("Canada/Yukon", "Canada/Yukon"),
+ ("Chile/Continental", "Chile/Continental"),
+ ("Chile/EasterIsland", "Chile/EasterIsland"),
+ ("Cuba", "Cuba"),
+ ("EET", "EET"),
+ ("EST", "EST"),
+ ("EST5EDT", "EST5EDT"),
+ ("Egypt", "Egypt"),
+ ("Eire", "Eire"),
+ ("Etc/GMT", "Etc/GMT"),
+ ("Etc/GMT+0", "Etc/GMT+0"),
+ ("Etc/GMT+1", "Etc/GMT+1"),
+ ("Etc/GMT+10", "Etc/GMT+10"),
+ ("Etc/GMT+11", "Etc/GMT+11"),
+ ("Etc/GMT+12", "Etc/GMT+12"),
+ ("Etc/GMT+2", "Etc/GMT+2"),
+ ("Etc/GMT+3", "Etc/GMT+3"),
+ ("Etc/GMT+4", "Etc/GMT+4"),
+ ("Etc/GMT+5", "Etc/GMT+5"),
+ ("Etc/GMT+6", "Etc/GMT+6"),
+ ("Etc/GMT+7", "Etc/GMT+7"),
+ ("Etc/GMT+8", "Etc/GMT+8"),
+ ("Etc/GMT+9", "Etc/GMT+9"),
+ ("Etc/GMT-0", "Etc/GMT-0"),
+ ("Etc/GMT-1", "Etc/GMT-1"),
+ ("Etc/GMT-10", "Etc/GMT-10"),
+ ("Etc/GMT-11", "Etc/GMT-11"),
+ ("Etc/GMT-12", "Etc/GMT-12"),
+ ("Etc/GMT-13", "Etc/GMT-13"),
+ ("Etc/GMT-14", "Etc/GMT-14"),
+ ("Etc/GMT-2", "Etc/GMT-2"),
+ ("Etc/GMT-3", "Etc/GMT-3"),
+ ("Etc/GMT-4", "Etc/GMT-4"),
+ ("Etc/GMT-5", "Etc/GMT-5"),
+ ("Etc/GMT-6", "Etc/GMT-6"),
+ ("Etc/GMT-7", "Etc/GMT-7"),
+ ("Etc/GMT-8", "Etc/GMT-8"),
+ ("Etc/GMT-9", "Etc/GMT-9"),
+ ("Etc/GMT0", "Etc/GMT0"),
+ ("Etc/Greenwich", "Etc/Greenwich"),
+ ("Etc/UCT", "Etc/UCT"),
+ ("Etc/UTC", "Etc/UTC"),
+ ("Etc/Universal", "Etc/Universal"),
+ ("Etc/Zulu", "Etc/Zulu"),
+ ("Europe/Amsterdam", "Europe/Amsterdam"),
+ ("Europe/Andorra", "Europe/Andorra"),
+ ("Europe/Astrakhan", "Europe/Astrakhan"),
+ ("Europe/Athens", "Europe/Athens"),
+ ("Europe/Belfast", "Europe/Belfast"),
+ ("Europe/Belgrade", "Europe/Belgrade"),
+ ("Europe/Berlin", "Europe/Berlin"),
+ ("Europe/Bratislava", "Europe/Bratislava"),
+ ("Europe/Brussels", "Europe/Brussels"),
+ ("Europe/Bucharest", "Europe/Bucharest"),
+ ("Europe/Budapest", "Europe/Budapest"),
+ ("Europe/Busingen", "Europe/Busingen"),
+ ("Europe/Chisinau", "Europe/Chisinau"),
+ ("Europe/Copenhagen", "Europe/Copenhagen"),
+ ("Europe/Dublin", "Europe/Dublin"),
+ ("Europe/Gibraltar", "Europe/Gibraltar"),
+ ("Europe/Guernsey", "Europe/Guernsey"),
+ ("Europe/Helsinki", "Europe/Helsinki"),
+ ("Europe/Isle_of_Man", "Europe/Isle_of_Man"),
+ ("Europe/Istanbul", "Europe/Istanbul"),
+ ("Europe/Jersey", "Europe/Jersey"),
+ ("Europe/Kaliningrad", "Europe/Kaliningrad"),
+ ("Europe/Kiev", "Europe/Kiev"),
+ ("Europe/Kirov", "Europe/Kirov"),
+ ("Europe/Lisbon", "Europe/Lisbon"),
+ ("Europe/Ljubljana", "Europe/Ljubljana"),
+ ("Europe/London", "Europe/London"),
+ ("Europe/Luxembourg", "Europe/Luxembourg"),
+ ("Europe/Madrid", "Europe/Madrid"),
+ ("Europe/Malta", "Europe/Malta"),
+ ("Europe/Mariehamn", "Europe/Mariehamn"),
+ ("Europe/Minsk", "Europe/Minsk"),
+ ("Europe/Monaco", "Europe/Monaco"),
+ ("Europe/Moscow", "Europe/Moscow"),
+ ("Europe/Nicosia", "Europe/Nicosia"),
+ ("Europe/Oslo", "Europe/Oslo"),
+ ("Europe/Paris", "Europe/Paris"),
+ ("Europe/Podgorica", "Europe/Podgorica"),
+ ("Europe/Prague", "Europe/Prague"),
+ ("Europe/Riga", "Europe/Riga"),
+ ("Europe/Rome", "Europe/Rome"),
+ ("Europe/Samara", "Europe/Samara"),
+ ("Europe/San_Marino", "Europe/San_Marino"),
+ ("Europe/Sarajevo", "Europe/Sarajevo"),
+ ("Europe/Saratov", "Europe/Saratov"),
+ ("Europe/Simferopol", "Europe/Simferopol"),
+ ("Europe/Skopje", "Europe/Skopje"),
+ ("Europe/Sofia", "Europe/Sofia"),
+ ("Europe/Stockholm", "Europe/Stockholm"),
+ ("Europe/Tallinn", "Europe/Tallinn"),
+ ("Europe/Tirane", "Europe/Tirane"),
+ ("Europe/Tiraspol", "Europe/Tiraspol"),
+ ("Europe/Ulyanovsk", "Europe/Ulyanovsk"),
+ ("Europe/Uzhgorod", "Europe/Uzhgorod"),
+ ("Europe/Vaduz", "Europe/Vaduz"),
+ ("Europe/Vatican", "Europe/Vatican"),
+ ("Europe/Vienna", "Europe/Vienna"),
+ ("Europe/Vilnius", "Europe/Vilnius"),
+ ("Europe/Volgograd", "Europe/Volgograd"),
+ ("Europe/Warsaw", "Europe/Warsaw"),
+ ("Europe/Zagreb", "Europe/Zagreb"),
+ ("Europe/Zaporozhye", "Europe/Zaporozhye"),
+ ("Europe/Zurich", "Europe/Zurich"),
+ ("GB", "GB"),
+ ("GB-Eire", "GB-Eire"),
+ ("GMT", "GMT"),
+ ("GMT+0", "GMT+0"),
+ ("GMT-0", "GMT-0"),
+ ("GMT0", "GMT0"),
+ ("Greenwich", "Greenwich"),
+ ("HST", "HST"),
+ ("Hongkong", "Hongkong"),
+ ("Iceland", "Iceland"),
+ ("Indian/Antananarivo", "Indian/Antananarivo"),
+ ("Indian/Chagos", "Indian/Chagos"),
+ ("Indian/Christmas", "Indian/Christmas"),
+ ("Indian/Cocos", "Indian/Cocos"),
+ ("Indian/Comoro", "Indian/Comoro"),
+ ("Indian/Kerguelen", "Indian/Kerguelen"),
+ ("Indian/Mahe", "Indian/Mahe"),
+ ("Indian/Maldives", "Indian/Maldives"),
+ ("Indian/Mauritius", "Indian/Mauritius"),
+ ("Indian/Mayotte", "Indian/Mayotte"),
+ ("Indian/Reunion", "Indian/Reunion"),
+ ("Iran", "Iran"),
+ ("Israel", "Israel"),
+ ("Jamaica", "Jamaica"),
+ ("Japan", "Japan"),
+ ("Kwajalein", "Kwajalein"),
+ ("Libya", "Libya"),
+ ("MET", "MET"),
+ ("MST", "MST"),
+ ("MST7MDT", "MST7MDT"),
+ ("Mexico/BajaNorte", "Mexico/BajaNorte"),
+ ("Mexico/BajaSur", "Mexico/BajaSur"),
+ ("Mexico/General", "Mexico/General"),
+ ("NZ", "NZ"),
+ ("NZ-CHAT", "NZ-CHAT"),
+ ("Navajo", "Navajo"),
+ ("PRC", "PRC"),
+ ("PST8PDT", "PST8PDT"),
+ ("Pacific/Apia", "Pacific/Apia"),
+ ("Pacific/Auckland", "Pacific/Auckland"),
+ ("Pacific/Bougainville", "Pacific/Bougainville"),
+ ("Pacific/Chatham", "Pacific/Chatham"),
+ ("Pacific/Chuuk", "Pacific/Chuuk"),
+ ("Pacific/Easter", "Pacific/Easter"),
+ ("Pacific/Efate", "Pacific/Efate"),
+ ("Pacific/Enderbury", "Pacific/Enderbury"),
+ ("Pacific/Fakaofo", "Pacific/Fakaofo"),
+ ("Pacific/Fiji", "Pacific/Fiji"),
+ ("Pacific/Funafuti", "Pacific/Funafuti"),
+ ("Pacific/Galapagos", "Pacific/Galapagos"),
+ ("Pacific/Gambier", "Pacific/Gambier"),
+ ("Pacific/Guadalcanal", "Pacific/Guadalcanal"),
+ ("Pacific/Guam", "Pacific/Guam"),
+ ("Pacific/Honolulu", "Pacific/Honolulu"),
+ ("Pacific/Johnston", "Pacific/Johnston"),
+ ("Pacific/Kiritimati", "Pacific/Kiritimati"),
+ ("Pacific/Kosrae", "Pacific/Kosrae"),
+ ("Pacific/Kwajalein", "Pacific/Kwajalein"),
+ ("Pacific/Majuro", "Pacific/Majuro"),
+ ("Pacific/Marquesas", "Pacific/Marquesas"),
+ ("Pacific/Midway", "Pacific/Midway"),
+ ("Pacific/Nauru", "Pacific/Nauru"),
+ ("Pacific/Niue", "Pacific/Niue"),
+ ("Pacific/Norfolk", "Pacific/Norfolk"),
+ ("Pacific/Noumea", "Pacific/Noumea"),
+ ("Pacific/Pago_Pago", "Pacific/Pago_Pago"),
+ ("Pacific/Palau", "Pacific/Palau"),
+ ("Pacific/Pitcairn", "Pacific/Pitcairn"),
+ ("Pacific/Pohnpei", "Pacific/Pohnpei"),
+ ("Pacific/Ponape", "Pacific/Ponape"),
+ ("Pacific/Port_Moresby", "Pacific/Port_Moresby"),
+ ("Pacific/Rarotonga", "Pacific/Rarotonga"),
+ ("Pacific/Saipan", "Pacific/Saipan"),
+ ("Pacific/Samoa", "Pacific/Samoa"),
+ ("Pacific/Tahiti", "Pacific/Tahiti"),
+ ("Pacific/Tarawa", "Pacific/Tarawa"),
+ ("Pacific/Tongatapu", "Pacific/Tongatapu"),
+ ("Pacific/Truk", "Pacific/Truk"),
+ ("Pacific/Wake", "Pacific/Wake"),
+ ("Pacific/Wallis", "Pacific/Wallis"),
+ ("Pacific/Yap", "Pacific/Yap"),
+ ("Poland", "Poland"),
+ ("Portugal", "Portugal"),
+ ("ROC", "ROC"),
+ ("ROK", "ROK"),
+ ("Singapore", "Singapore"),
+ ("Turkey", "Turkey"),
+ ("UCT", "UCT"),
+ ("US/Alaska", "US/Alaska"),
+ ("US/Aleutian", "US/Aleutian"),
+ ("US/Arizona", "US/Arizona"),
+ ("US/Central", "US/Central"),
+ ("US/East-Indiana", "US/East-Indiana"),
+ ("US/Eastern", "US/Eastern"),
+ ("US/Hawaii", "US/Hawaii"),
+ ("US/Indiana-Starke", "US/Indiana-Starke"),
+ ("US/Michigan", "US/Michigan"),
+ ("US/Mountain", "US/Mountain"),
+ ("US/Pacific", "US/Pacific"),
+ ("US/Samoa", "US/Samoa"),
+ ("UTC", "UTC"),
+ ("Universal", "Universal"),
+ ("W-SU", "W-SU"),
+ ("WET", "WET"),
+ ("Zulu", "Zulu"),
+ ],
+ default="UTC",
+ max_length=255,
+ ),
+ ),
+ ]
diff --git a/bookwyrm/models/user.py b/bookwyrm/models/user.py
index c2a74c637..5ef0934c9 100644
--- a/bookwyrm/models/user.py
+++ b/bookwyrm/models/user.py
@@ -7,6 +7,7 @@ from django.contrib.auth.models import AbstractUser, Group
from django.core.validators import MinValueValidator
from django.db import models
from django.utils import timezone
+import pytz
from bookwyrm import activitypub
from bookwyrm.connectors import get_data, ConnectorException
@@ -104,6 +105,11 @@ class User(OrderedCollectionPageMixin, AbstractUser):
manually_approves_followers = fields.BooleanField(default=False)
show_goal = models.BooleanField(default=True)
discoverable = fields.BooleanField(default=False)
+ preferred_timezone = models.CharField(
+ choices=[(str(tz), str(tz)) for tz in pytz.all_timezones],
+ default=str(pytz.utc),
+ max_length=255,
+ )
name_field = "username"
diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py
index 0049b80e2..6329fbc9f 100644
--- a/bookwyrm/settings.py
+++ b/bookwyrm/settings.py
@@ -67,6 +67,7 @@ MIDDLEWARE = [
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
+ "bookwyrm.timezone_middleware.TimezoneMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
]
diff --git a/bookwyrm/templates/feed/direct_messages.html b/bookwyrm/templates/feed/direct_messages.html
index 2c28a79b7..f097fd9f4 100644
--- a/bookwyrm/templates/feed/direct_messages.html
+++ b/bookwyrm/templates/feed/direct_messages.html
@@ -27,7 +27,6 @@
{% endfor %}
- {% include 'snippets/pagination.html' with page=activities path="direct-messages" %}
{% endblock %}
diff --git a/bookwyrm/templates/host_meta.xml b/bookwyrm/templates/host_meta.xml
new file mode 100644
index 000000000..d510ba713
--- /dev/null
+++ b/bookwyrm/templates/host_meta.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/bookwyrm/templates/preferences/edit_user.html b/bookwyrm/templates/preferences/edit_user.html
index 327d745b0..597a8ef0d 100644
--- a/bookwyrm/templates/preferences/edit_user.html
+++ b/bookwyrm/templates/preferences/edit_user.html
@@ -61,6 +61,12 @@
{% url 'directory' as path %}
{% blocktrans %}Your account will show up in the directory, and may be recommended to other BookWyrm users.{% endblocktrans %}
-
+
+
+
+ {{ form.preferred_timezone }}
+
+
+
{% endblock %}
diff --git a/bookwyrm/templates/robots.txt b/bookwyrm/templates/robots.txt
new file mode 100644
index 000000000..dc7b6bcbb
--- /dev/null
+++ b/bookwyrm/templates/robots.txt
@@ -0,0 +1,5 @@
+# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
+
+User-agent: *
+Disallow: /static/js/
+Disallow: /static/css/
diff --git a/bookwyrm/templates/snippets/readthrough.html b/bookwyrm/templates/snippets/readthrough.html
index 82f6a088c..3e694f616 100644
--- a/bookwyrm/templates/snippets/readthrough.html
+++ b/bookwyrm/templates/snippets/readthrough.html
@@ -1,5 +1,6 @@
{% load i18n %}
{% load humanize %}
+{% load tz %}
@@ -8,7 +9,7 @@
{% if readthrough.finish_date or readthrough.progress %}
- - {% if readthrough.finish_date %} {{ readthrough.finish_date | naturalday }}: {% trans "finished" %} {% else %}{% if readthrough.progress_mode == 'PG' %}on page {{ readthrough.progress }}{% if book.pages %} of {{ book.pages }}{% endif %}
+
- {% if readthrough.finish_date %} {{ readthrough.finish_date | localtime | naturalday }}: {% trans "finished" %} {% else %}{% if readthrough.progress_mode == 'PG' %}on page {{ readthrough.progress }}{% if book.pages %} of {{ book.pages }}{% endif %}
{% else %}{{ readthrough.progress }}%{% endif %}{% endif %}
{% if readthrough.progress %}
{% trans "Show all updates" as button_text %}
@@ -37,7 +38,7 @@
{% endif %}
{% endif %}
- - {{ readthrough.start_date | naturalday }}: {% trans "started" %}
+ - {{ readthrough.start_date | localtime | naturalday }}: {% trans "started" %}
diff --git a/bookwyrm/templatetags/bookwyrm_tags.py b/bookwyrm/templatetags/bookwyrm_tags.py
index 77be0ca39..775c61903 100644
--- a/bookwyrm/templatetags/bookwyrm_tags.py
+++ b/bookwyrm/templatetags/bookwyrm_tags.py
@@ -139,7 +139,6 @@ def time_since(date):
if not isinstance(date, datetime):
return ""
now = timezone.now()
- delta = now - date
if date < (now - relativedelta(weeks=1)):
formatter = "%b %-d"
diff --git a/bookwyrm/tests/views/test_helpers.py b/bookwyrm/tests/views/test_helpers.py
index 2d100f7bf..a9dadcadc 100644
--- a/bookwyrm/tests/views/test_helpers.py
+++ b/bookwyrm/tests/views/test_helpers.py
@@ -84,6 +84,11 @@ class ViewsHelpers(TestCase):
request.headers = {"Accept": "Praise"}
self.assertFalse(views.helpers.is_api_request(request))
+ def test_is_api_request_no_headers(self, _):
+ """ should it return html or json """
+ request = self.factory.get("/path")
+ self.assertFalse(views.helpers.is_api_request(request))
+
def test_is_bookwyrm_request(self, _):
""" checks if a request came from a bookwyrm instance """
request = self.factory.get("", {"q": "Test Book"})
diff --git a/bookwyrm/tests/views/test_user.py b/bookwyrm/tests/views/test_user.py
index 1708ec530..055edae25 100644
--- a/bookwyrm/tests/views/test_user.py
+++ b/bookwyrm/tests/views/test_user.py
@@ -145,6 +145,7 @@ class UserViews(TestCase):
form = forms.EditUserForm(instance=self.local_user)
form.data["name"] = "New Name"
form.data["email"] = "wow@email.com"
+ form.data["preferred_timezone"] = "UTC"
request = self.factory.post("", form.data)
request.user = self.local_user
@@ -164,6 +165,7 @@ class UserViews(TestCase):
form = forms.EditUserForm(instance=self.local_user)
form.data["name"] = "New Name"
form.data["email"] = "wow@email.com"
+ form.data["preferred_timezone"] = "UTC"
image_file = pathlib.Path(__file__).parent.joinpath(
"../../static/images/no_cover.jpg"
)
diff --git a/bookwyrm/timezone_middleware.py b/bookwyrm/timezone_middleware.py
new file mode 100644
index 000000000..633d6835d
--- /dev/null
+++ b/bookwyrm/timezone_middleware.py
@@ -0,0 +1,17 @@
+import pytz
+
+from django.utils import timezone
+
+
+class TimezoneMiddleware:
+ def __init__(self, get_response):
+ self.get_response = get_response
+
+ def __call__(self, request):
+ if request.user.is_authenticated:
+ timezone.activate(pytz.timezone(request.user.preferred_timezone))
+ else:
+ timezone.activate(pytz.utc)
+ response = self.get_response(request)
+ timezone.deactivate()
+ return response
diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py
index a2250c486..5d8bc5e91 100644
--- a/bookwyrm/urls.py
+++ b/bookwyrm/urls.py
@@ -2,7 +2,7 @@
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path, re_path
-
+from django.views.generic.base import TemplateView
from bookwyrm import settings, views
from bookwyrm.utils import regex
@@ -27,12 +27,17 @@ handler404 = "bookwyrm.views.not_found_page"
handler500 = "bookwyrm.views.server_error_page"
urlpatterns = [
path("admin/", admin.site.urls),
+ path(
+ "robots.txt",
+ TemplateView.as_view(template_name="robots.txt", content_type="text/plain"),
+ ),
# federation endpoints
re_path(r"^inbox/?$", views.Inbox.as_view()),
re_path(r"%s/inbox/?$" % local_user_path, views.Inbox.as_view()),
re_path(r"%s/outbox/?$" % local_user_path, views.Outbox.as_view()),
- re_path(r"^.well-known/webfinger/?$", views.webfinger),
- re_path(r"^.well-known/nodeinfo/?$", views.nodeinfo_pointer),
+ re_path(r"^\.well-known/webfinger/?$", views.webfinger),
+ re_path(r"^\.well-known/nodeinfo/?$", views.nodeinfo_pointer),
+ re_path(r"^\.well-known/host-meta/?$", views.host_meta),
re_path(r"^nodeinfo/2\.0/?$", views.nodeinfo),
re_path(r"^api/v1/instance/?$", views.instance_info),
re_path(r"^api/v1/instance/peers/?$", views.peers),
diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py
index 6ec79c1c7..dc71d3591 100644
--- a/bookwyrm/views/__init__.py
+++ b/bookwyrm/views/__init__.py
@@ -36,4 +36,4 @@ from .tag import Tag, AddTag, RemoveTag
from .updates import get_notification_count, get_unread_status_count
from .user import User, EditUser, Followers, Following
from .user_admin import UserAdmin
-from .wellknown import webfinger, nodeinfo_pointer, nodeinfo, instance_info, peers
+from .wellknown import *
diff --git a/bookwyrm/views/feed.py b/bookwyrm/views/feed.py
index d068834ac..eb4e370e9 100644
--- a/bookwyrm/views/feed.py
+++ b/bookwyrm/views/feed.py
@@ -87,7 +87,9 @@ class DirectMessage(View):
if user:
queryset = queryset.filter(Q(user=user) | Q(mention_users=user))
- activities = privacy_filter(request.user, queryset, privacy_levels=["direct"])
+ activities = privacy_filter(
+ request.user, queryset, privacy_levels=["direct"]
+ ).order_by("-published_date")
paginated = Paginator(activities, PAGE_LENGTH)
activity_page = paginated.page(page)
diff --git a/bookwyrm/views/helpers.py b/bookwyrm/views/helpers.py
index 52b5818f3..006c6494e 100644
--- a/bookwyrm/views/helpers.py
+++ b/bookwyrm/views/helpers.py
@@ -21,7 +21,7 @@ def get_user_from_username(viewer, username):
def is_api_request(request):
""" check whether a request is asking for html or data """
- return "json" in request.headers.get("Accept") or request.path[-5:] == ".json"
+ return "json" in request.headers.get("Accept", "") or request.path[-5:] == ".json"
def is_bookwyrm_request(request):
diff --git a/bookwyrm/views/reading.py b/bookwyrm/views/reading.py
index 1cf9b4dc4..b780dd2fd 100644
--- a/bookwyrm/views/reading.py
+++ b/bookwyrm/views/reading.py
@@ -1,11 +1,12 @@
""" the good stuff! the books! """
+from datetime import datetime
import dateutil.parser
+import dateutil.tz
from dateutil.parser import ParserError
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseBadRequest, HttpResponseNotFound
from django.shortcuts import get_object_or_404, redirect
-from django.utils import timezone
from django.views.decorators.http import require_POST
from bookwyrm import models
@@ -143,6 +144,12 @@ def create_readthrough(request):
return redirect(request.headers.get("Referer", "/"))
+def load_date_in_user_tz_as_utc(date_str: str, user: models.User) -> datetime:
+ user_tz = dateutil.tz.gettz(user.preferred_timezone)
+ start_date = dateutil.parser.parse(date_str, ignoretz=True)
+ return start_date.replace(tzinfo=user_tz).astimezone(dateutil.tz.UTC)
+
+
def update_readthrough(request, book=None, create=True):
""" updates but does not save dates on a readthrough """
try:
@@ -161,16 +168,18 @@ def update_readthrough(request, book=None, create=True):
start_date = request.POST.get("start_date")
if start_date:
try:
- start_date = timezone.make_aware(dateutil.parser.parse(start_date))
- readthrough.start_date = start_date
+ readthrough.start_date = load_date_in_user_tz_as_utc(
+ start_date, request.user
+ )
except ParserError:
pass
finish_date = request.POST.get("finish_date")
if finish_date:
try:
- finish_date = timezone.make_aware(dateutil.parser.parse(finish_date))
- readthrough.finish_date = finish_date
+ readthrough.finish_date = load_date_in_user_tz_as_utc(
+ finish_date, request.user
+ )
except ParserError:
pass
diff --git a/bookwyrm/views/wellknown.py b/bookwyrm/views/wellknown.py
index 127c7491a..178d558e6 100644
--- a/bookwyrm/views/wellknown.py
+++ b/bookwyrm/views/wellknown.py
@@ -3,6 +3,7 @@
from dateutil.relativedelta import relativedelta
from django.http import HttpResponseNotFound
from django.http import JsonResponse
+from django.template.response import TemplateResponse
from django.utils import timezone
from django.views.decorators.http import require_GET
@@ -118,3 +119,9 @@ def peers(_):
""" list of federated servers this instance connects with """
names = models.FederatedServer.objects.values_list("server_name", flat=True)
return JsonResponse(list(names), safe=False)
+
+
+@require_GET
+def host_meta(request):
+ """ meta of the host """
+ return TemplateResponse(request, "host_meta.xml", {"DOMAIN": DOMAIN})
diff --git a/locale/de_DE/LC_MESSAGES/django.mo b/locale/de_DE/LC_MESSAGES/django.mo
index 61a659d88..cee809a37 100644
Binary files a/locale/de_DE/LC_MESSAGES/django.mo and b/locale/de_DE/LC_MESSAGES/django.mo differ
diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po
index d02973f8f..6d98fa0b2 100644
--- a/locale/de_DE/LC_MESSAGES/django.po
+++ b/locale/de_DE/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-03-19 11:41-0700\n"
+"POT-Creation-Date: 2021-03-28 22:42+0000\n"
"PO-Revision-Date: 2021-03-02 17:19-0800\n"
"Last-Translator: Mouse Reeve
\n"
"Language-Team: English \n"
@@ -18,73 +18,78 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: bookwyrm/forms.py:203
+#: bookwyrm/forms.py:213
+#, fuzzy
+#| msgid "A user with that username already exists."
+msgid "A user with this email already exists."
+msgstr "Dieser Benutzename ist bereits vergeben."
+
+#: bookwyrm/forms.py:227
msgid "One Day"
msgstr "Ein Tag"
-#: bookwyrm/forms.py:204
+#: bookwyrm/forms.py:228
msgid "One Week"
msgstr "Eine Woche"
-#: bookwyrm/forms.py:205
+#: bookwyrm/forms.py:229
msgid "One Month"
msgstr "Ein Monat"
-#: bookwyrm/forms.py:206
+#: bookwyrm/forms.py:230
msgid "Does Not Expire"
msgstr "Läuft nicht aus"
-#: bookwyrm/forms.py:211
+#: bookwyrm/forms.py:235
#, python-format
msgid "%(count)d uses"
msgstr "%(count)d Benutzungen"
-#: bookwyrm/forms.py:214
+#: bookwyrm/forms.py:238
#, fuzzy
#| msgid "Unlisted"
msgid "Unlimited"
msgstr "Ungelistet"
-#: bookwyrm/models/fields.py:24
+#: bookwyrm/models/fields.py:25
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s ist keine gültige remote_id"
-#: bookwyrm/models/fields.py:33 bookwyrm/models/fields.py:42
+#: bookwyrm/models/fields.py:34 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s ist kein gültiger Username"
-#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:152
+#: bookwyrm/models/fields.py:170 bookwyrm/templates/layout.html:157
msgid "username"
msgstr "Username"
-#: bookwyrm/models/fields.py:170
+#: bookwyrm/models/fields.py:175
msgid "A user with that username already exists."
msgstr "Dieser Benutzename ist bereits vergeben."
-#: bookwyrm/settings.py:142
+#: bookwyrm/settings.py:148
msgid "English"
msgstr "Englisch"
-#: bookwyrm/settings.py:143
+#: bookwyrm/settings.py:149
msgid "German"
msgstr "Deutsch"
-#: bookwyrm/settings.py:144
+#: bookwyrm/settings.py:150
msgid "Spanish"
msgstr "Spanisch"
-#: bookwyrm/settings.py:145
+#: bookwyrm/settings.py:151
msgid "French"
msgstr "Französisch"
-#: bookwyrm/settings.py:146
+#: bookwyrm/settings.py:152
msgid "Simplified Chinese"
msgstr "Vereinfachtes Chinesisch"
#: bookwyrm/templates/author.html:16 bookwyrm/templates/author.html:17
-#: bookwyrm/templates/edit_author.html:5
msgid "Edit Author"
msgstr "Autor*in editieren"
@@ -176,11 +181,11 @@ msgstr "Beschreibung:"
#: bookwyrm/templates/book/book.html:121
#: bookwyrm/templates/book/edit_book.html:225
#: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42
-#: bookwyrm/templates/preferences/edit_user.html:56
-#: bookwyrm/templates/settings/site.html:89
-#: bookwyrm/templates/snippets/progress_update.html:21
+#: bookwyrm/templates/preferences/edit_user.html:68
+#: bookwyrm/templates/settings/site.html:93
#: bookwyrm/templates/snippets/readthrough.html:64
#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:42
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42
#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:34
msgid "Save"
msgstr "Speichern"
@@ -194,6 +199,7 @@ msgstr "Speichern"
#: bookwyrm/templates/snippets/goal_form.html:32
#: bookwyrm/templates/snippets/readthrough.html:65
#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:43
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43
#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:35
#: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28
msgid "Cancel"
@@ -452,10 +458,120 @@ msgid "Openlibrary key:"
msgstr ""
#: bookwyrm/templates/components/inline_form.html:8
-#: bookwyrm/templates/feed/feed_layout.html:54
+#: bookwyrm/templates/feed/feed_layout.html:57
msgid "Close"
msgstr "Schließen"
+#: bookwyrm/templates/directory.html:6 bookwyrm/templates/directory.html:11
+#: bookwyrm/templates/layout.html:97
+msgid "Directory"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:19
+msgid "Make your profile discoverable to other BookWyrm users."
+msgstr ""
+
+#: bookwyrm/templates/directory.html:26
+#, fuzzy, python-format
+#| msgid "You can set or change your reading goal any time from your profile page"
+msgid "You can opt-out at any time in your profile settings."
+msgstr "Du kannst dein Leseziel jederzeit auf deiner Profilseite setzen oder ändern."
+
+#: bookwyrm/templates/directory.html:31
+#: bookwyrm/templates/snippets/goal_card.html:22
+msgid "Dismiss message"
+msgstr "Nachricht verwerfen"
+
+#: bookwyrm/templates/directory.html:44
+#, fuzzy
+#| msgid "Show less"
+msgid "Show filters"
+msgstr "Weniger anzeigen"
+
+#: bookwyrm/templates/directory.html:46
+msgid "Hide filters"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:55
+#, fuzzy
+#| msgid "User Activity"
+msgid "User type"
+msgstr "Nutzer*innenaktivität"
+
+#: bookwyrm/templates/directory.html:58
+msgid "BookWyrm users"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:62
+msgid "All known users"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:68
+#, fuzzy
+#| msgid "Comment"
+msgid "Community"
+msgstr "Kommentieren"
+
+#: bookwyrm/templates/directory.html:71
+#, fuzzy
+#| msgid "Max uses"
+msgid "Local users"
+msgstr "Maximale Benutzungen"
+
+#: bookwyrm/templates/directory.html:75
+#, fuzzy
+#| msgid "Federated"
+msgid "Federated community"
+msgstr "Föderiert"
+
+#: bookwyrm/templates/directory.html:81
+msgid "Order by"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:84
+#, fuzzy
+#| msgid "Suggest"
+msgid "Suggested"
+msgstr "Vorschlagen"
+
+#: bookwyrm/templates/directory.html:85
+msgid "Recently active"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:91
+msgid "Apply filters"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:94
+#, fuzzy
+#| msgid "Clear search"
+msgid "Clear filters"
+msgstr "Suche leeren"
+
+#: bookwyrm/templates/directory.html:128
+#, fuzzy
+#| msgid "followed you"
+msgid "follower you follow"
+msgid_plural "followers you follow"
+msgstr[0] "folgt dir"
+msgstr[1] "folgt dir"
+
+#: bookwyrm/templates/directory.html:135
+#, fuzzy
+#| msgid "Your shelves"
+msgid "book on your shelves"
+msgid_plural "books on your shelves"
+msgstr[0] "Deine Regale"
+msgstr[1] "Deine Regale"
+
+#: bookwyrm/templates/directory.html:143
+msgid "posts"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:149
+msgid "last active"
+msgstr ""
+
#: bookwyrm/templates/discover/about.html:7
#, python-format
msgid "About %(site_name)s"
@@ -496,15 +612,41 @@ msgstr ""
msgid "Join %(name)s"
msgstr "Tritt %(name)s bei"
-#: bookwyrm/templates/discover/landing_layout.html:49
+#: bookwyrm/templates/discover/landing_layout.html:51
#: bookwyrm/templates/login.html:48
msgid "This instance is closed"
msgstr "Diese Instanz ist geschlossen"
-#: bookwyrm/templates/discover/landing_layout.html:55
+#: bookwyrm/templates/discover/landing_layout.html:57
+msgid "Thank you! Your request has been received."
+msgstr ""
+
+#: bookwyrm/templates/discover/landing_layout.html:60
+msgid "Request an Invitation"
+msgstr ""
+
+#: bookwyrm/templates/discover/landing_layout.html:64
+#: bookwyrm/templates/password_reset_request.html:18
+#: bookwyrm/templates/preferences/edit_user.html:38
+#: bookwyrm/templates/snippets/register_form.html:13
+msgid "Email address:"
+msgstr "E-Mail Adresse"
+
+#: bookwyrm/templates/discover/landing_layout.html:70
+#: bookwyrm/templates/moderation/report_modal.html:31
+msgid "Submit"
+msgstr "Absenden"
+
+#: bookwyrm/templates/discover/landing_layout.html:79
msgid "Your Account"
msgstr "Dein Account"
+#: bookwyrm/templates/edit_author.html:5
+#, fuzzy
+#| msgid "Edit Author"
+msgid "Edit Author:"
+msgstr "Autor*in editieren"
+
#: bookwyrm/templates/edit_author.html:32 bookwyrm/templates/lists/form.html:8
#: bookwyrm/templates/user/create_shelf_form.html:13
#: bookwyrm/templates/user/edit_shelf_form.html:14
@@ -549,6 +691,72 @@ msgstr "Editionen von %(book_title)s"
msgid "Editions of \"%(work_title)s\""
msgstr "Editionen von \"%(work_title)s\""
+#: 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 ""
+
+#: 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
+#, fuzzy, python-format
+#| msgid "About %(site_name)s"
+msgid "You're invited to join %(site_name)s!"
+msgstr "Über %(site_name)s"
+
+#: 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 this instance."
+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
+#, fuzzy
+#| msgid "More about this site"
+msgid "Learn more about this instance:"
+msgstr "Mehr über diese Seite"
+
+#: 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/password_reset.html:4
+#: bookwyrm/templates/password_reset.html:10
+#: bookwyrm/templates/password_reset_request.html:4
+#: bookwyrm/templates/password_reset_request.html:10
+msgid "Reset Password"
+msgstr "Passwort zurücksetzen!"
+
+#: 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
+#, fuzzy, python-format
+#| msgid "About %(site_name)s"
+msgid "Reset your %(site_name)s password"
+msgstr "Über %(site_name)s"
+
#: bookwyrm/templates/error.html:4
msgid "Oops!"
msgstr "Ups!"
@@ -579,27 +787,59 @@ msgstr "Alle Nachrichten"
msgid "You have no messages right now."
msgstr "Du hast momentan keine Nachrichten."
-#: bookwyrm/templates/feed/feed.html:6
-#, python-format
-msgid "%(tab_title)s Timeline"
+#: bookwyrm/templates/feed/feed.html:9
+msgid "Home Timeline"
msgstr ""
-#: bookwyrm/templates/feed/feed.html:10 bookwyrm/views/feed.py:33
+#: bookwyrm/templates/feed/feed.html:11
+msgid "Local Timeline"
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:13
+#, fuzzy
+#| msgid "Federated Servers"
+msgid "Federated Timeline"
+msgstr "Föderierende Server"
+
+#: bookwyrm/templates/feed/feed.html:19
msgid "Home"
msgstr ""
-#: bookwyrm/templates/feed/feed.html:13 bookwyrm/views/feed.py:38
+#: bookwyrm/templates/feed/feed.html:22
msgid "Local"
msgstr "Lokal"
-#: bookwyrm/templates/feed/feed.html:16 bookwyrm/views/feed.py:43
+#: bookwyrm/templates/feed/feed.html:25
msgid "Federated"
msgstr "Föderiert"
-#: bookwyrm/templates/feed/feed.html:32
+#: bookwyrm/templates/feed/feed.html:33
+#, python-format
+msgid "load 0 unread status(es)"
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:48
msgid "There aren't any activities right now! Try following a user to get started"
msgstr "Hier sind noch keine Aktivitäten! Folge anderen, um loszulegen"
+#: bookwyrm/templates/feed/feed.html:56
+msgid "Who to follow"
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:69
+#, python-format
+msgid "%(mutuals)s follower you follow"
+msgid_plural "%(mutuals)s followers you follow"
+msgstr[0] ""
+msgstr[1] ""
+
+#: bookwyrm/templates/feed/feed.html:72
+#, python-format
+msgid "%(shared_books)s book on your shelves"
+msgid_plural "%(shared_books)s books on your shelves"
+msgstr[0] ""
+msgstr[1] ""
+
#: bookwyrm/templates/feed/feed_layout.html:5
msgid "Updates"
msgstr ""
@@ -632,7 +872,7 @@ msgstr "Gerade lesend"
msgid "Read"
msgstr "Gelesen"
-#: bookwyrm/templates/feed/feed_layout.html:76 bookwyrm/templates/goal.html:26
+#: bookwyrm/templates/feed/feed_layout.html:74 bookwyrm/templates/goal.html:26
#: bookwyrm/templates/snippets/goal_card.html:6
#, python-format
msgid "%(year)s Reading Goal"
@@ -824,67 +1064,69 @@ msgstr ""
msgid "Profile"
msgstr "Profil"
-#: bookwyrm/templates/layout.html:97
+#: bookwyrm/templates/layout.html:107
msgid "Settings"
msgstr "Einstellungen"
-#: bookwyrm/templates/layout.html:111
-#: bookwyrm/templates/settings/admin_layout.html:19
+#: bookwyrm/templates/layout.html:116
+#: bookwyrm/templates/settings/admin_layout.html:20
+#: bookwyrm/templates/settings/manage_invite_requests.html:15
#: bookwyrm/templates/settings/manage_invites.html:3
+#: bookwyrm/templates/settings/manage_invites.html:15
msgid "Invites"
msgstr "Einladungen"
-#: bookwyrm/templates/layout.html:118
+#: bookwyrm/templates/layout.html:123
msgid "Admin"
msgstr ""
-#: bookwyrm/templates/layout.html:125
+#: bookwyrm/templates/layout.html:130
msgid "Log out"
msgstr "Abmelden"
-#: bookwyrm/templates/layout.html:133 bookwyrm/templates/layout.html:134
+#: bookwyrm/templates/layout.html:138 bookwyrm/templates/layout.html:139
#: bookwyrm/templates/notifications.html:6
#: bookwyrm/templates/notifications.html:10
msgid "Notifications"
msgstr "Benachrichtigungen"
-#: bookwyrm/templates/layout.html:151 bookwyrm/templates/layout.html:155
+#: bookwyrm/templates/layout.html:156 bookwyrm/templates/layout.html:160
#: bookwyrm/templates/login.html:17
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
msgstr ""
-#: bookwyrm/templates/layout.html:156
+#: bookwyrm/templates/layout.html:161
msgid "password"
msgstr "Passwort"
-#: bookwyrm/templates/layout.html:157 bookwyrm/templates/login.html:36
+#: bookwyrm/templates/layout.html:162 bookwyrm/templates/login.html:36
msgid "Forgot your password?"
msgstr "Passwort vergessen?"
-#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:10
+#: bookwyrm/templates/layout.html:165 bookwyrm/templates/login.html:10
#: bookwyrm/templates/login.html:33
msgid "Log in"
msgstr "Anmelden"
-#: bookwyrm/templates/layout.html:168
+#: bookwyrm/templates/layout.html:173
msgid "Join"
msgstr ""
-#: bookwyrm/templates/layout.html:191
+#: bookwyrm/templates/layout.html:196
msgid "About this server"
msgstr "Über diesen Server"
-#: bookwyrm/templates/layout.html:195
+#: bookwyrm/templates/layout.html:200
msgid "Contact site admin"
msgstr "Admin kontaktieren"
-#: bookwyrm/templates/layout.html:202
+#: bookwyrm/templates/layout.html:207
#, python-format
msgid "Support %(site_name)s on %(support_title)s"
msgstr "%(site_name)s auf %(support_title)s unterstützen"
-#: bookwyrm/templates/layout.html:206
+#: bookwyrm/templates/layout.html:211
msgid "BookWyrm is open source software. You can contribute or report issues on GitHub."
msgstr "BookWyrm ist open source Software. Du kannst dich auf GitHub beteiligen oder etwas melden."
@@ -1084,7 +1326,7 @@ msgstr "Moderator:innenkommentare"
#: bookwyrm/templates/moderation/report.html:54
#: bookwyrm/templates/snippets/create_status.html:12
-#: bookwyrm/templates/snippets/create_status_form.html:44
+#: bookwyrm/templates/snippets/create_status_form.html:52
msgid "Comment"
msgstr "Kommentieren"
@@ -1119,10 +1361,6 @@ msgstr "Diese Meldung wird an die Moderator:innen von %(site_name)s weitergeleti
msgid "More info about this report:"
msgstr "Mehr über diese Seite"
-#: bookwyrm/templates/moderation/report_modal.html:31
-msgid "Submit"
-msgstr "Absenden"
-
#: bookwyrm/templates/moderation/report_preview.html:13
msgid "No notes provided"
msgstr "Keine Notizen angegeben."
@@ -1143,7 +1381,7 @@ msgstr "Lösen"
#: bookwyrm/templates/moderation/reports.html:4
#: bookwyrm/templates/moderation/reports.html:5
-#: bookwyrm/templates/settings/admin_layout.html:23
+#: bookwyrm/templates/settings/admin_layout.html:24
#, fuzzy
#| msgid "Recent Imports"
msgid "Reports"
@@ -1279,29 +1517,16 @@ msgstr "Eine neue Meldung muss moderiert werden."
msgid "You're all caught up!"
msgstr "Du bist auf dem neusten Stand!"
-#: bookwyrm/templates/password_reset.html:4
-#: bookwyrm/templates/password_reset.html:10
-#: bookwyrm/templates/password_reset_request.html:4
-#: bookwyrm/templates/password_reset_request.html:10
-msgid "Reset Password"
-msgstr "Passwort zurücksetzen!"
-
#: bookwyrm/templates/password_reset.html:23
#: bookwyrm/templates/preferences/change_password.html:18
msgid "Confirm password:"
msgstr "Passwort bestätigen:"
-#: bookwyrm/templates/password_reset_request.html:12
+#: bookwyrm/templates/password_reset_request.html:14
msgid "A link to reset your password will be sent to your email address"
msgstr "Ein Link zum Zurücksetzen deines Passworts wird an deine Mailadresse geschickt"
-#: bookwyrm/templates/password_reset_request.html:16
-#: bookwyrm/templates/preferences/edit_user.html:38
-#: bookwyrm/templates/snippets/register_form.html:13
-msgid "Email address:"
-msgstr "E-Mail Adresse"
-
-#: bookwyrm/templates/password_reset_request.html:23
+#: bookwyrm/templates/password_reset_request.html:28
msgid "Reset password"
msgstr "Passwort zurücksetzen"
@@ -1351,6 +1576,19 @@ msgstr "Angegebenes Leseziel im Feed anzeigen."
msgid "Manually approve followers:"
msgstr "Folgende manuell bestätigen"
+#: bookwyrm/templates/preferences/edit_user.html:58
+msgid "Show this account in suggested users:"
+msgstr ""
+
+#: bookwyrm/templates/preferences/edit_user.html:62
+#, 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:65
+msgid "Preferred Timezone: "
+msgstr ""
+
#: bookwyrm/templates/preferences/preferences_layout.html:11
msgid "Account"
msgstr ""
@@ -1393,37 +1631,37 @@ msgstr ""
msgid "Manage Users"
msgstr "Nutzer*innen verwalten"
-#: bookwyrm/templates/settings/admin_layout.html:27
+#: bookwyrm/templates/settings/admin_layout.html:28
#: bookwyrm/templates/settings/federation.html:4
msgid "Federated Servers"
msgstr "Föderierende Server"
-#: bookwyrm/templates/settings/admin_layout.html:32
+#: bookwyrm/templates/settings/admin_layout.html:33
msgid "Instance Settings"
msgstr "Instanzeinstellungen"
-#: bookwyrm/templates/settings/admin_layout.html:36
+#: bookwyrm/templates/settings/admin_layout.html:37
#: bookwyrm/templates/settings/site.html:4
#: bookwyrm/templates/settings/site.html:6
msgid "Site Settings"
msgstr "Seiteneinstellungen"
-#: bookwyrm/templates/settings/admin_layout.html:39
+#: bookwyrm/templates/settings/admin_layout.html:40
#: bookwyrm/templates/settings/site.html:13
msgid "Instance Info"
msgstr "Instanzinformationen"
-#: bookwyrm/templates/settings/admin_layout.html:40
+#: bookwyrm/templates/settings/admin_layout.html:41
#: bookwyrm/templates/settings/site.html:39
msgid "Images"
msgstr "Bilder"
-#: bookwyrm/templates/settings/admin_layout.html:41
+#: bookwyrm/templates/settings/admin_layout.html:42
#: bookwyrm/templates/settings/site.html:59
msgid "Footer Content"
msgstr "Inhalt des Footers"
-#: bookwyrm/templates/settings/admin_layout.html:42
+#: bookwyrm/templates/settings/admin_layout.html:43
#: bookwyrm/templates/settings/site.html:77
msgid "Registration"
msgstr "Registrierung"
@@ -1437,42 +1675,116 @@ msgid "Software"
msgstr ""
#: bookwyrm/templates/settings/federation.html:12
+#: bookwyrm/templates/settings/manage_invite_requests.html:33
msgid "Status"
msgstr ""
-#: bookwyrm/templates/settings/manage_invites.html:7
+#: bookwyrm/templates/settings/manage_invite_requests.html:4
+#: bookwyrm/templates/settings/manage_invite_requests.html:11
+#: bookwyrm/templates/settings/manage_invite_requests.html:25
+#: bookwyrm/templates/settings/manage_invites.html:11
+#, fuzzy
+#| msgid "Invites"
+msgid "Invite Requests"
+msgstr "Einladungen"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:23
+msgid "Ignored Invite Requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:31
+msgid "Date"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:32
+msgid "Email"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:34
+#, fuzzy
+#| msgid "Notifications"
+msgid "Action"
+msgstr "Benachrichtigungen"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:37
+#, fuzzy
+#| msgid "Follow Requests"
+msgid "No requests"
+msgstr "Folgeanfragen"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:45
+#, fuzzy
+#| msgid "Accept"
+msgid "Accepted"
+msgstr "Annehmen"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:47
+msgid "Sent"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:49
+msgid "Requested"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:57
+msgid "Send invite"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:59
+msgid "Re-send invite"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:70
+msgid "Ignore"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:72
+msgid "Un-gnore"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:83
+#, fuzzy
+#| msgid "Back to reports"
+msgid "Back to pending requests"
+msgstr "Zurück zu den Meldungen"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:85
+msgid "View ignored requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invites.html:21
msgid "Generate New Invite"
msgstr "Neue Einladung erzeugen"
-#: bookwyrm/templates/settings/manage_invites.html:13
+#: bookwyrm/templates/settings/manage_invites.html:27
msgid "Expiry:"
msgstr "Ablaufen:"
-#: bookwyrm/templates/settings/manage_invites.html:19
+#: bookwyrm/templates/settings/manage_invites.html:33
msgid "Use limit:"
msgstr "Begrenzte Benutzung"
-#: bookwyrm/templates/settings/manage_invites.html:26
+#: bookwyrm/templates/settings/manage_invites.html:40
msgid "Create Invite"
msgstr "Einladung erstellen"
-#: bookwyrm/templates/settings/manage_invites.html:33
+#: bookwyrm/templates/settings/manage_invites.html:47
msgid "Link"
msgstr ""
-#: bookwyrm/templates/settings/manage_invites.html:34
+#: bookwyrm/templates/settings/manage_invites.html:48
msgid "Expires"
msgstr "Läuft aus"
-#: bookwyrm/templates/settings/manage_invites.html:35
+#: bookwyrm/templates/settings/manage_invites.html:49
msgid "Max uses"
msgstr "Maximale Benutzungen"
-#: bookwyrm/templates/settings/manage_invites.html:36
+#: bookwyrm/templates/settings/manage_invites.html:50
msgid "Times used"
msgstr "Mal benutzt"
-#: bookwyrm/templates/settings/manage_invites.html:39
+#: bookwyrm/templates/settings/manage_invites.html:53
msgid "No active invites"
msgstr "Keine aktiven Einladungen"
@@ -1525,6 +1837,12 @@ msgid "Allow registration:"
msgstr "Registrierungen erlauben"
#: bookwyrm/templates/settings/site.html:83
+#, fuzzy
+#| msgid "Follow Requests"
+msgid "Allow invite requests:"
+msgstr "Folgeanfragen"
+
+#: bookwyrm/templates/settings/site.html:87
msgid "Registration closed text:"
msgstr "Registrierungen geschlossen text"
@@ -1569,29 +1887,70 @@ msgstr "Bewerten"
msgid "Quote"
msgstr "Zitieren"
-#: bookwyrm/templates/snippets/create_status_form.html:21
+#: bookwyrm/templates/snippets/create_status_form.html:18
+#, fuzzy
+#| msgid "Comment"
+msgid "Comment:"
+msgstr "Kommentieren"
+
+#: bookwyrm/templates/snippets/create_status_form.html:20
+#, fuzzy
+#| msgid "Quote"
+msgid "Quote:"
+msgstr "Zitieren"
+
+#: bookwyrm/templates/snippets/create_status_form.html:22
+#, fuzzy
+#| msgid "Review"
+msgid "Review:"
+msgstr "Bewerten"
+
+#: bookwyrm/templates/snippets/create_status_form.html:29
#: bookwyrm/templates/snippets/shelf.html:17
msgid "Rating"
msgstr ""
-#: bookwyrm/templates/snippets/create_status_form.html:23
+#: bookwyrm/templates/snippets/create_status_form.html:31
#: bookwyrm/templates/snippets/rate_action.html:14
#: bookwyrm/templates/snippets/stars.html:3
msgid "No rating"
msgstr "Kein Rating"
-#: bookwyrm/templates/snippets/create_status_form.html:54
+#: bookwyrm/templates/snippets/create_status_form.html:64
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:16
+msgid "Progress:"
+msgstr "Fortschritt:"
+
+#: bookwyrm/templates/snippets/create_status_form.html:71
+#: bookwyrm/templates/snippets/readthrough_form.html:22
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30
+msgid "pages"
+msgstr "Seiten"
+
+#: bookwyrm/templates/snippets/create_status_form.html:72
+#: bookwyrm/templates/snippets/readthrough_form.html:23
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31
+msgid "percent"
+msgstr "Prozent"
+
+#: bookwyrm/templates/snippets/create_status_form.html:77
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:36
+#, python-format
+msgid "of %(pages)s pages"
+msgstr "von %(pages)s Seiten"
+
+#: bookwyrm/templates/snippets/create_status_form.html:89
msgid "Include spoiler alert"
msgstr "Spoileralarm aktivieren"
-#: bookwyrm/templates/snippets/create_status_form.html:60
+#: bookwyrm/templates/snippets/create_status_form.html:95
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
#: bookwyrm/templates/snippets/privacy_select.html:19
msgid "Private"
msgstr "Privat"
-#: bookwyrm/templates/snippets/create_status_form.html:67
+#: bookwyrm/templates/snippets/create_status_form.html:102
msgid "Post"
msgstr "Absenden"
@@ -1621,21 +1980,17 @@ msgstr "Status favorisieren"
msgid "Un-like status"
msgstr "Favorisieren zurücknehmen"
-#: bookwyrm/templates/snippets/follow_button.html:13
-msgid "Send follow request"
-msgstr "Folgeanfrage senden"
-
-#: bookwyrm/templates/snippets/follow_button.html:15
+#: bookwyrm/templates/snippets/follow_button.html:12
msgid "Follow"
msgstr "Folgen"
-#: bookwyrm/templates/snippets/follow_button.html:22
+#: bookwyrm/templates/snippets/follow_button.html:18
#, fuzzy
#| msgid "Send follow request"
msgid "Undo follow request"
msgstr "Folgeanfrage senden"
-#: bookwyrm/templates/snippets/follow_button.html:24
+#: bookwyrm/templates/snippets/follow_button.html:20
msgid "Unfollow"
msgstr "Entfolgen"
@@ -1653,14 +2008,22 @@ msgstr[1] "Setze das Ziel, %(year)s %(counter)s Bücher zu lesen"
#: bookwyrm/templates/snippets/generated_status/rating.html:3
#, fuzzy, python-format
#| msgid "%(title)s by "
-msgid "Rated %(title)s: %(rating)s star"
-msgid_plural "Rated %(title)s: %(rating)s stars"
+msgid "Rated %(title)s: %(display_rating)s star"
+msgid_plural "Rated %(title)s: %(display_rating)s stars"
msgstr[0] "%(title)s von "
msgstr[1] "%(title)s von "
-#: bookwyrm/templates/snippets/goal_card.html:22
-msgid "Dismiss message"
-msgstr "Nachricht verwerfen"
+#: 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] ""
+msgstr[1] ""
+
+#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8
+#, python-format
+msgid "Review of \"%(book_title)s\": %(review_title)s"
+msgstr ""
#: bookwyrm/templates/snippets/goal_card.html:23
#, python-format
@@ -1742,25 +2105,6 @@ msgstr ""
msgid "Followers"
msgstr "Folgende"
-#: bookwyrm/templates/snippets/progress_update.html:6
-msgid "Progress:"
-msgstr "Fortschritt:"
-
-#: bookwyrm/templates/snippets/progress_update.html:16
-#: bookwyrm/templates/snippets/readthrough_form.html:22
-msgid "pages"
-msgstr "Seiten"
-
-#: bookwyrm/templates/snippets/progress_update.html:17
-#: bookwyrm/templates/snippets/readthrough_form.html:23
-msgid "percent"
-msgstr "Prozent"
-
-#: bookwyrm/templates/snippets/progress_update.html:25
-#, python-format
-msgid "of %(pages)s pages"
-msgstr "von %(pages)s Seiten"
-
#: bookwyrm/templates/snippets/rate_action.html:4
msgid "Leave a rating"
msgstr "Raten"
@@ -1903,6 +2247,13 @@ msgstr "Vom Regal nehmen"
msgid "Finish \"%(book_title)s\""
msgstr "\"%(book_title)s\" abschließen"
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:5
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:33
+#, fuzzy
+#| msgid "Progress"
+msgid "Update progress"
+msgstr "Fortschritt"
+
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown.html:5
msgid "More shelves"
msgstr "Mehr Regale"
@@ -2128,6 +2479,20 @@ msgstr[1] "%(counter)s Folgende"
msgid "%(counter)s following"
msgstr "Folgt %(counter)s"
+#: bookwyrm/views/password.py:32
+#, fuzzy
+#| msgid "A user with that username already exists."
+msgid "No user with that email address was found."
+msgstr "Dieser Benutzename ist bereits vergeben."
+
+#: bookwyrm/views/password.py:41
+#, python-format
+msgid "A password reset link sent to %s"
+msgstr ""
+
+#~ msgid "Send follow request"
+#~ msgstr "Folgeanfrage senden"
+
#, fuzzy
#~| msgid "All messages"
#~ msgid "Messages"
@@ -2143,7 +2508,7 @@ msgstr "Folgt %(counter)s"
#~ msgid "Enter a number."
#~ msgstr "Seriennummer:"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "%(value)s is not a valid remote_id"
#~ msgid "Value %(value)r is not a valid choice."
#~ msgstr "%(value)s ist keine gültige remote_id"
@@ -2178,7 +2543,7 @@ msgstr "Folgt %(counter)s"
#~ msgid "Positive integer"
#~ msgstr "Keine aktiven Einladungen"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(value)s” is not a valid UUID."
#~ msgstr "%(value)s ist kein gültiger Username"
@@ -2203,7 +2568,7 @@ msgstr "Folgt %(counter)s"
#~ msgid "The submitted file is empty."
#~ msgstr "Dieses Regal ist leer."
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(pk)s” is not a valid value."
#~ msgstr "%(value)s ist kein gültiger Username"
@@ -2251,7 +2616,7 @@ msgstr "Folgt %(counter)s"
#~ msgid "September"
#~ msgstr "Seriennummer:"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "No books found matching the query \"%(query)s\""
#~ msgid "No %(verbose_name)s found matching the query"
#~ msgstr "Keine passenden Bücher zu \"%(query)s\" gefunden"
diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po
index fe0047b2b..e6256a7fa 100644
--- a/locale/en_US/LC_MESSAGES/django.po
+++ b/locale/en_US/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-03-19 11:41-0700\n"
+"POT-Creation-Date: 2021-03-28 22:42+0000\n"
"PO-Revision-Date: 2021-02-28 17:19-0800\n"
"Last-Translator: Mouse Reeve \n"
"Language-Team: English \n"
@@ -18,71 +18,74 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: bookwyrm/forms.py:203
+#: bookwyrm/forms.py:213
+msgid "A user with this email already exists."
+msgstr ""
+
+#: bookwyrm/forms.py:227
msgid "One Day"
msgstr ""
-#: bookwyrm/forms.py:204
+#: bookwyrm/forms.py:228
msgid "One Week"
msgstr ""
-#: bookwyrm/forms.py:205
+#: bookwyrm/forms.py:229
msgid "One Month"
msgstr ""
-#: bookwyrm/forms.py:206
+#: bookwyrm/forms.py:230
msgid "Does Not Expire"
msgstr ""
-#: bookwyrm/forms.py:211
+#: bookwyrm/forms.py:235
#, python-format
msgid "%(count)d uses"
msgstr ""
-#: bookwyrm/forms.py:214
+#: bookwyrm/forms.py:238
msgid "Unlimited"
msgstr ""
-#: bookwyrm/models/fields.py:24
+#: bookwyrm/models/fields.py:25
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr ""
-#: bookwyrm/models/fields.py:33 bookwyrm/models/fields.py:42
+#: bookwyrm/models/fields.py:34 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr ""
-#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:152
+#: bookwyrm/models/fields.py:170 bookwyrm/templates/layout.html:157
msgid "username"
msgstr ""
-#: bookwyrm/models/fields.py:170
+#: bookwyrm/models/fields.py:175
msgid "A user with that username already exists."
msgstr ""
-#: bookwyrm/settings.py:142
+#: bookwyrm/settings.py:148
msgid "English"
msgstr ""
-#: bookwyrm/settings.py:143
+#: bookwyrm/settings.py:149
msgid "German"
msgstr ""
-#: bookwyrm/settings.py:144
+#: bookwyrm/settings.py:150
msgid "Spanish"
msgstr ""
-#: bookwyrm/settings.py:145
+#: bookwyrm/settings.py:151
msgid "French"
msgstr ""
-#: bookwyrm/settings.py:146
+#: bookwyrm/settings.py:152
msgid "Simplified Chinese"
msgstr ""
#: bookwyrm/templates/author.html:16 bookwyrm/templates/author.html:17
-#: bookwyrm/templates/edit_author.html:5
msgid "Edit Author"
msgstr ""
@@ -173,11 +176,11 @@ msgstr ""
#: bookwyrm/templates/book/book.html:121
#: bookwyrm/templates/book/edit_book.html:225
#: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42
-#: bookwyrm/templates/preferences/edit_user.html:56
-#: bookwyrm/templates/settings/site.html:89
-#: bookwyrm/templates/snippets/progress_update.html:21
+#: bookwyrm/templates/preferences/edit_user.html:68
+#: bookwyrm/templates/settings/site.html:93
#: bookwyrm/templates/snippets/readthrough.html:64
#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:42
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42
#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:34
msgid "Save"
msgstr ""
@@ -191,6 +194,7 @@ msgstr ""
#: bookwyrm/templates/snippets/goal_form.html:32
#: bookwyrm/templates/snippets/readthrough.html:65
#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:43
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43
#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:35
#: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28
msgid "Cancel"
@@ -431,10 +435,101 @@ msgid "Openlibrary key:"
msgstr ""
#: bookwyrm/templates/components/inline_form.html:8
-#: bookwyrm/templates/feed/feed_layout.html:54
+#: bookwyrm/templates/feed/feed_layout.html:57
msgid "Close"
msgstr ""
+#: bookwyrm/templates/directory.html:6 bookwyrm/templates/directory.html:11
+#: bookwyrm/templates/layout.html:97
+msgid "Directory"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:19
+msgid "Make your profile discoverable to other BookWyrm users."
+msgstr ""
+
+#: bookwyrm/templates/directory.html:26
+#, python-format
+msgid "You can opt-out at any time in your profile settings."
+msgstr ""
+
+#: bookwyrm/templates/directory.html:31
+#: bookwyrm/templates/snippets/goal_card.html:22
+msgid "Dismiss message"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:44
+msgid "Show filters"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:46
+msgid "Hide filters"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:55
+msgid "User type"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:58
+msgid "BookWyrm users"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:62
+msgid "All known users"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:68
+msgid "Community"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:71
+msgid "Local users"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:75
+msgid "Federated community"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:81
+msgid "Order by"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:84
+msgid "Suggested"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:85
+msgid "Recently active"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:91
+msgid "Apply filters"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:94
+msgid "Clear filters"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:128
+msgid "follower you follow"
+msgid_plural "followers you follow"
+msgstr[0] ""
+msgstr[1] ""
+
+#: bookwyrm/templates/directory.html:135
+msgid "book on your shelves"
+msgid_plural "books on your shelves"
+msgstr[0] ""
+msgstr[1] ""
+
+#: bookwyrm/templates/directory.html:143
+msgid "posts"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:149
+msgid "last active"
+msgstr ""
+
#: bookwyrm/templates/discover/about.html:7
#, python-format
msgid "About %(site_name)s"
@@ -475,15 +570,39 @@ msgstr ""
msgid "Join %(name)s"
msgstr ""
-#: bookwyrm/templates/discover/landing_layout.html:49
+#: bookwyrm/templates/discover/landing_layout.html:51
#: bookwyrm/templates/login.html:48
msgid "This instance is closed"
msgstr ""
-#: bookwyrm/templates/discover/landing_layout.html:55
+#: bookwyrm/templates/discover/landing_layout.html:57
+msgid "Thank you! Your request has been received."
+msgstr ""
+
+#: bookwyrm/templates/discover/landing_layout.html:60
+msgid "Request an Invitation"
+msgstr ""
+
+#: bookwyrm/templates/discover/landing_layout.html:64
+#: bookwyrm/templates/password_reset_request.html:18
+#: bookwyrm/templates/preferences/edit_user.html:38
+#: bookwyrm/templates/snippets/register_form.html:13
+msgid "Email address:"
+msgstr ""
+
+#: bookwyrm/templates/discover/landing_layout.html:70
+#: bookwyrm/templates/moderation/report_modal.html:31
+msgid "Submit"
+msgstr ""
+
+#: bookwyrm/templates/discover/landing_layout.html:79
msgid "Your Account"
msgstr ""
+#: bookwyrm/templates/edit_author.html:5
+msgid "Edit Author:"
+msgstr ""
+
#: bookwyrm/templates/edit_author.html:32 bookwyrm/templates/lists/form.html:8
#: bookwyrm/templates/user/create_shelf_form.html:13
#: bookwyrm/templates/user/edit_shelf_form.html:14
@@ -528,6 +647,68 @@ msgstr ""
msgid "Editions of \"%(work_title)s\""
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 ""
+
+#: 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 this instance."
+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
+msgid "Learn more about this instance:"
+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/password_reset.html:4
+#: bookwyrm/templates/password_reset.html:10
+#: bookwyrm/templates/password_reset_request.html:4
+#: bookwyrm/templates/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/error.html:4
msgid "Oops!"
msgstr ""
@@ -558,27 +739,57 @@ msgstr ""
msgid "You have no messages right now."
msgstr ""
-#: bookwyrm/templates/feed/feed.html:6
-#, python-format
-msgid "%(tab_title)s Timeline"
+#: bookwyrm/templates/feed/feed.html:9
+msgid "Home Timeline"
msgstr ""
-#: bookwyrm/templates/feed/feed.html:10 bookwyrm/views/feed.py:33
+#: bookwyrm/templates/feed/feed.html:11
+msgid "Local Timeline"
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:13
+msgid "Federated Timeline"
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:19
msgid "Home"
msgstr ""
-#: bookwyrm/templates/feed/feed.html:13 bookwyrm/views/feed.py:38
+#: bookwyrm/templates/feed/feed.html:22
msgid "Local"
msgstr ""
-#: bookwyrm/templates/feed/feed.html:16 bookwyrm/views/feed.py:43
+#: bookwyrm/templates/feed/feed.html:25
msgid "Federated"
msgstr ""
-#: bookwyrm/templates/feed/feed.html:32
+#: bookwyrm/templates/feed/feed.html:33
+#, python-format
+msgid "load 0 unread status(es)"
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:48
msgid "There aren't any activities right now! Try following a user to get started"
msgstr ""
+#: bookwyrm/templates/feed/feed.html:56
+msgid "Who to follow"
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:69
+#, python-format
+msgid "%(mutuals)s follower you follow"
+msgid_plural "%(mutuals)s followers you follow"
+msgstr[0] ""
+msgstr[1] ""
+
+#: bookwyrm/templates/feed/feed.html:72
+#, python-format
+msgid "%(shared_books)s book on your shelves"
+msgid_plural "%(shared_books)s books on your shelves"
+msgstr[0] ""
+msgstr[1] ""
+
#: bookwyrm/templates/feed/feed_layout.html:5
msgid "Updates"
msgstr ""
@@ -607,7 +818,7 @@ msgstr ""
msgid "Read"
msgstr ""
-#: bookwyrm/templates/feed/feed_layout.html:76 bookwyrm/templates/goal.html:26
+#: bookwyrm/templates/feed/feed_layout.html:74 bookwyrm/templates/goal.html:26
#: bookwyrm/templates/snippets/goal_card.html:6
#, python-format
msgid "%(year)s Reading Goal"
@@ -799,67 +1010,69 @@ msgstr ""
msgid "Profile"
msgstr ""
-#: bookwyrm/templates/layout.html:97
+#: bookwyrm/templates/layout.html:107
msgid "Settings"
msgstr ""
-#: bookwyrm/templates/layout.html:111
-#: bookwyrm/templates/settings/admin_layout.html:19
+#: bookwyrm/templates/layout.html:116
+#: bookwyrm/templates/settings/admin_layout.html:20
+#: bookwyrm/templates/settings/manage_invite_requests.html:15
#: bookwyrm/templates/settings/manage_invites.html:3
+#: bookwyrm/templates/settings/manage_invites.html:15
msgid "Invites"
msgstr ""
-#: bookwyrm/templates/layout.html:118
+#: bookwyrm/templates/layout.html:123
msgid "Admin"
msgstr ""
-#: bookwyrm/templates/layout.html:125
+#: bookwyrm/templates/layout.html:130
msgid "Log out"
msgstr ""
-#: bookwyrm/templates/layout.html:133 bookwyrm/templates/layout.html:134
+#: bookwyrm/templates/layout.html:138 bookwyrm/templates/layout.html:139
#: bookwyrm/templates/notifications.html:6
#: bookwyrm/templates/notifications.html:10
msgid "Notifications"
msgstr ""
-#: bookwyrm/templates/layout.html:151 bookwyrm/templates/layout.html:155
+#: bookwyrm/templates/layout.html:156 bookwyrm/templates/layout.html:160
#: bookwyrm/templates/login.html:17
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
msgstr ""
-#: bookwyrm/templates/layout.html:156
+#: bookwyrm/templates/layout.html:161
msgid "password"
msgstr ""
-#: bookwyrm/templates/layout.html:157 bookwyrm/templates/login.html:36
+#: bookwyrm/templates/layout.html:162 bookwyrm/templates/login.html:36
msgid "Forgot your password?"
msgstr ""
-#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:10
+#: bookwyrm/templates/layout.html:165 bookwyrm/templates/login.html:10
#: bookwyrm/templates/login.html:33
msgid "Log in"
msgstr ""
-#: bookwyrm/templates/layout.html:168
+#: bookwyrm/templates/layout.html:173
msgid "Join"
msgstr ""
-#: bookwyrm/templates/layout.html:191
+#: bookwyrm/templates/layout.html:196
msgid "About this server"
msgstr ""
-#: bookwyrm/templates/layout.html:195
+#: bookwyrm/templates/layout.html:200
msgid "Contact site admin"
msgstr ""
-#: bookwyrm/templates/layout.html:202
+#: bookwyrm/templates/layout.html:207
#, python-format
msgid "Support %(site_name)s on %(support_title)s"
msgstr ""
-#: bookwyrm/templates/layout.html:206
+#: bookwyrm/templates/layout.html:211
msgid "BookWyrm is open source software. You can contribute or report issues on GitHub."
msgstr ""
@@ -1051,7 +1264,7 @@ msgstr ""
#: bookwyrm/templates/moderation/report.html:54
#: bookwyrm/templates/snippets/create_status.html:12
-#: bookwyrm/templates/snippets/create_status_form.html:44
+#: bookwyrm/templates/snippets/create_status_form.html:52
msgid "Comment"
msgstr ""
@@ -1081,10 +1294,6 @@ msgstr ""
msgid "More info about this report:"
msgstr ""
-#: bookwyrm/templates/moderation/report_modal.html:31
-msgid "Submit"
-msgstr ""
-
#: bookwyrm/templates/moderation/report_preview.html:13
msgid "No notes provided"
msgstr ""
@@ -1104,7 +1313,7 @@ msgstr ""
#: bookwyrm/templates/moderation/reports.html:4
#: bookwyrm/templates/moderation/reports.html:5
-#: bookwyrm/templates/settings/admin_layout.html:23
+#: bookwyrm/templates/settings/admin_layout.html:24
msgid "Reports"
msgstr ""
@@ -1236,29 +1445,16 @@ msgstr ""
msgid "You're all caught up!"
msgstr ""
-#: bookwyrm/templates/password_reset.html:4
-#: bookwyrm/templates/password_reset.html:10
-#: bookwyrm/templates/password_reset_request.html:4
-#: bookwyrm/templates/password_reset_request.html:10
-msgid "Reset Password"
-msgstr ""
-
#: bookwyrm/templates/password_reset.html:23
#: bookwyrm/templates/preferences/change_password.html:18
msgid "Confirm password:"
msgstr ""
-#: bookwyrm/templates/password_reset_request.html:12
+#: bookwyrm/templates/password_reset_request.html:14
msgid "A link to reset your password will be sent to your email address"
msgstr ""
-#: bookwyrm/templates/password_reset_request.html:16
-#: bookwyrm/templates/preferences/edit_user.html:38
-#: bookwyrm/templates/snippets/register_form.html:13
-msgid "Email address:"
-msgstr ""
-
-#: bookwyrm/templates/password_reset_request.html:23
+#: bookwyrm/templates/password_reset_request.html:28
msgid "Reset password"
msgstr ""
@@ -1308,6 +1504,19 @@ msgstr ""
msgid "Manually approve followers:"
msgstr ""
+#: bookwyrm/templates/preferences/edit_user.html:58
+msgid "Show this account in suggested users:"
+msgstr ""
+
+#: bookwyrm/templates/preferences/edit_user.html:62
+#, 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:65
+msgid "Preferred Timezone: "
+msgstr ""
+
#: bookwyrm/templates/preferences/preferences_layout.html:11
msgid "Account"
msgstr ""
@@ -1350,37 +1559,37 @@ msgstr ""
msgid "Manage Users"
msgstr ""
-#: bookwyrm/templates/settings/admin_layout.html:27
+#: bookwyrm/templates/settings/admin_layout.html:28
#: bookwyrm/templates/settings/federation.html:4
msgid "Federated Servers"
msgstr ""
-#: bookwyrm/templates/settings/admin_layout.html:32
+#: bookwyrm/templates/settings/admin_layout.html:33
msgid "Instance Settings"
msgstr ""
-#: bookwyrm/templates/settings/admin_layout.html:36
+#: bookwyrm/templates/settings/admin_layout.html:37
#: bookwyrm/templates/settings/site.html:4
#: bookwyrm/templates/settings/site.html:6
msgid "Site Settings"
msgstr ""
-#: bookwyrm/templates/settings/admin_layout.html:39
+#: bookwyrm/templates/settings/admin_layout.html:40
#: bookwyrm/templates/settings/site.html:13
msgid "Instance Info"
msgstr ""
-#: bookwyrm/templates/settings/admin_layout.html:40
+#: bookwyrm/templates/settings/admin_layout.html:41
#: bookwyrm/templates/settings/site.html:39
msgid "Images"
msgstr ""
-#: bookwyrm/templates/settings/admin_layout.html:41
+#: bookwyrm/templates/settings/admin_layout.html:42
#: bookwyrm/templates/settings/site.html:59
msgid "Footer Content"
msgstr ""
-#: bookwyrm/templates/settings/admin_layout.html:42
+#: bookwyrm/templates/settings/admin_layout.html:43
#: bookwyrm/templates/settings/site.html:77
msgid "Registration"
msgstr ""
@@ -1394,42 +1603,106 @@ msgid "Software"
msgstr ""
#: bookwyrm/templates/settings/federation.html:12
+#: bookwyrm/templates/settings/manage_invite_requests.html:33
msgid "Status"
msgstr ""
-#: bookwyrm/templates/settings/manage_invites.html:7
+#: bookwyrm/templates/settings/manage_invite_requests.html:4
+#: bookwyrm/templates/settings/manage_invite_requests.html:11
+#: bookwyrm/templates/settings/manage_invite_requests.html:25
+#: bookwyrm/templates/settings/manage_invites.html:11
+msgid "Invite Requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:23
+msgid "Ignored Invite Requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:31
+msgid "Date"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:32
+msgid "Email"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:34
+msgid "Action"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:37
+msgid "No requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:45
+msgid "Accepted"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:47
+msgid "Sent"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:49
+msgid "Requested"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:57
+msgid "Send invite"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:59
+msgid "Re-send invite"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:70
+msgid "Ignore"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:72
+msgid "Un-gnore"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:83
+msgid "Back to pending requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:85
+msgid "View ignored requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invites.html:21
msgid "Generate New Invite"
msgstr ""
-#: bookwyrm/templates/settings/manage_invites.html:13
+#: bookwyrm/templates/settings/manage_invites.html:27
msgid "Expiry:"
msgstr ""
-#: bookwyrm/templates/settings/manage_invites.html:19
+#: bookwyrm/templates/settings/manage_invites.html:33
msgid "Use limit:"
msgstr ""
-#: bookwyrm/templates/settings/manage_invites.html:26
+#: bookwyrm/templates/settings/manage_invites.html:40
msgid "Create Invite"
msgstr ""
-#: bookwyrm/templates/settings/manage_invites.html:33
+#: bookwyrm/templates/settings/manage_invites.html:47
msgid "Link"
msgstr ""
-#: bookwyrm/templates/settings/manage_invites.html:34
+#: bookwyrm/templates/settings/manage_invites.html:48
msgid "Expires"
msgstr ""
-#: bookwyrm/templates/settings/manage_invites.html:35
+#: bookwyrm/templates/settings/manage_invites.html:49
msgid "Max uses"
msgstr ""
-#: bookwyrm/templates/settings/manage_invites.html:36
+#: bookwyrm/templates/settings/manage_invites.html:50
msgid "Times used"
msgstr ""
-#: bookwyrm/templates/settings/manage_invites.html:39
+#: bookwyrm/templates/settings/manage_invites.html:53
msgid "No active invites"
msgstr ""
@@ -1482,6 +1755,10 @@ msgid "Allow registration:"
msgstr ""
#: bookwyrm/templates/settings/site.html:83
+msgid "Allow invite requests:"
+msgstr ""
+
+#: bookwyrm/templates/settings/site.html:87
msgid "Registration closed text:"
msgstr ""
@@ -1526,29 +1803,64 @@ msgstr ""
msgid "Quote"
msgstr ""
-#: bookwyrm/templates/snippets/create_status_form.html:21
+#: bookwyrm/templates/snippets/create_status_form.html:18
+msgid "Comment:"
+msgstr ""
+
+#: bookwyrm/templates/snippets/create_status_form.html:20
+msgid "Quote:"
+msgstr ""
+
+#: bookwyrm/templates/snippets/create_status_form.html:22
+msgid "Review:"
+msgstr ""
+
+#: bookwyrm/templates/snippets/create_status_form.html:29
#: bookwyrm/templates/snippets/shelf.html:17
msgid "Rating"
msgstr ""
-#: bookwyrm/templates/snippets/create_status_form.html:23
+#: bookwyrm/templates/snippets/create_status_form.html:31
#: bookwyrm/templates/snippets/rate_action.html:14
#: bookwyrm/templates/snippets/stars.html:3
msgid "No rating"
msgstr ""
-#: bookwyrm/templates/snippets/create_status_form.html:54
+#: bookwyrm/templates/snippets/create_status_form.html:64
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:16
+msgid "Progress:"
+msgstr ""
+
+#: bookwyrm/templates/snippets/create_status_form.html:71
+#: bookwyrm/templates/snippets/readthrough_form.html:22
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30
+msgid "pages"
+msgstr ""
+
+#: bookwyrm/templates/snippets/create_status_form.html:72
+#: bookwyrm/templates/snippets/readthrough_form.html:23
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31
+msgid "percent"
+msgstr ""
+
+#: bookwyrm/templates/snippets/create_status_form.html:77
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:36
+#, python-format
+msgid "of %(pages)s pages"
+msgstr ""
+
+#: bookwyrm/templates/snippets/create_status_form.html:89
msgid "Include spoiler alert"
msgstr ""
-#: bookwyrm/templates/snippets/create_status_form.html:60
+#: bookwyrm/templates/snippets/create_status_form.html:95
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
#: bookwyrm/templates/snippets/privacy_select.html:19
msgid "Private"
msgstr ""
-#: bookwyrm/templates/snippets/create_status_form.html:67
+#: bookwyrm/templates/snippets/create_status_form.html:102
msgid "Post"
msgstr ""
@@ -1578,19 +1890,15 @@ msgstr ""
msgid "Un-like status"
msgstr ""
-#: bookwyrm/templates/snippets/follow_button.html:13
-msgid "Send follow request"
-msgstr ""
-
-#: bookwyrm/templates/snippets/follow_button.html:15
+#: bookwyrm/templates/snippets/follow_button.html:12
msgid "Follow"
msgstr ""
-#: bookwyrm/templates/snippets/follow_button.html:22
+#: bookwyrm/templates/snippets/follow_button.html:18
msgid "Undo follow request"
msgstr ""
-#: bookwyrm/templates/snippets/follow_button.html:24
+#: bookwyrm/templates/snippets/follow_button.html:20
msgid "Unfollow"
msgstr ""
@@ -1607,13 +1915,21 @@ msgstr[1] ""
#: bookwyrm/templates/snippets/generated_status/rating.html:3
#, python-format
-msgid "Rated %(title)s: %(rating)s star"
-msgid_plural "Rated %(title)s: %(rating)s stars"
+msgid "Rated %(title)s: %(display_rating)s star"
+msgid_plural "Rated %(title)s: %(display_rating)s stars"
msgstr[0] ""
msgstr[1] ""
-#: bookwyrm/templates/snippets/goal_card.html:22
-msgid "Dismiss message"
+#: 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] ""
+msgstr[1] ""
+
+#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8
+#, python-format
+msgid "Review of \"%(book_title)s\": %(review_title)s"
msgstr ""
#: bookwyrm/templates/snippets/goal_card.html:23
@@ -1696,25 +2012,6 @@ msgstr ""
msgid "Followers"
msgstr ""
-#: bookwyrm/templates/snippets/progress_update.html:6
-msgid "Progress:"
-msgstr ""
-
-#: bookwyrm/templates/snippets/progress_update.html:16
-#: bookwyrm/templates/snippets/readthrough_form.html:22
-msgid "pages"
-msgstr ""
-
-#: bookwyrm/templates/snippets/progress_update.html:17
-#: bookwyrm/templates/snippets/readthrough_form.html:23
-msgid "percent"
-msgstr ""
-
-#: bookwyrm/templates/snippets/progress_update.html:25
-#, python-format
-msgid "of %(book.pages)s pages"
-msgstr ""
-
#: bookwyrm/templates/snippets/rate_action.html:4
msgid "Leave a rating"
msgstr ""
@@ -1853,6 +2150,11 @@ msgstr ""
msgid "Finish \"%(book_title)s\""
msgstr ""
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:5
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:33
+msgid "Update progress"
+msgstr ""
+
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown.html:5
msgid "More shelves"
msgstr ""
@@ -2073,3 +2375,12 @@ msgstr[1] ""
#, python-format
msgid "%(counter)s following"
msgstr ""
+
+#: bookwyrm/views/password.py:32
+msgid "No user with that email address was found."
+msgstr ""
+
+#: bookwyrm/views/password.py:41
+#, python-format
+msgid "A password reset link sent to %s"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/django.mo b/locale/es/LC_MESSAGES/django.mo
index 6e6dc0443..a0e975bfd 100644
Binary files a/locale/es/LC_MESSAGES/django.mo and b/locale/es/LC_MESSAGES/django.mo differ
diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po
index fdbb06091..729048eb7 100644
--- a/locale/es/LC_MESSAGES/django.po
+++ b/locale/es/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-03-19 11:41-0700\n"
+"POT-Creation-Date: 2021-03-28 22:42+0000\n"
"PO-Revision-Date: 2021-03-19 11:49+0800\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -18,71 +18,76 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: bookwyrm/forms.py:203
+#: bookwyrm/forms.py:213
+#, fuzzy
+#| msgid "A user with that username already exists."
+msgid "A user with this email already exists."
+msgstr "Ya existe un usuario con ese nombre."
+
+#: bookwyrm/forms.py:227
msgid "One Day"
msgstr "Un día"
-#: bookwyrm/forms.py:204
+#: bookwyrm/forms.py:228
msgid "One Week"
msgstr "Una semana"
-#: bookwyrm/forms.py:205
+#: bookwyrm/forms.py:229
msgid "One Month"
msgstr "Un mes"
-#: bookwyrm/forms.py:206
+#: bookwyrm/forms.py:230
msgid "Does Not Expire"
msgstr "Nunca se vence"
-#: bookwyrm/forms.py:211
+#: bookwyrm/forms.py:235
#, python-format
msgid "%(count)d uses"
msgstr "%(count)d usos"
-#: bookwyrm/forms.py:214
+#: bookwyrm/forms.py:238
msgid "Unlimited"
msgstr "Sin límite"
-#: bookwyrm/models/fields.py:24
+#: bookwyrm/models/fields.py:25
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s no es un remote_id válido"
-#: bookwyrm/models/fields.py:33 bookwyrm/models/fields.py:42
+#: bookwyrm/models/fields.py:34 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s no es un usuario válido"
-#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:152
+#: bookwyrm/models/fields.py:170 bookwyrm/templates/layout.html:157
msgid "username"
msgstr "nombre de usuario"
-#: bookwyrm/models/fields.py:170
+#: bookwyrm/models/fields.py:175
msgid "A user with that username already exists."
msgstr "Ya existe un usuario con ese nombre."
-#: bookwyrm/settings.py:142
+#: bookwyrm/settings.py:148
msgid "English"
msgstr "Inglés"
-#: bookwyrm/settings.py:143
+#: bookwyrm/settings.py:149
msgid "German"
msgstr "Aléman"
-#: bookwyrm/settings.py:144
+#: bookwyrm/settings.py:150
msgid "Spanish"
msgstr "Español"
-#: bookwyrm/settings.py:145
+#: bookwyrm/settings.py:151
msgid "French"
msgstr "Francés"
-#: bookwyrm/settings.py:146
+#: bookwyrm/settings.py:152
msgid "Simplified Chinese"
msgstr "Chino simplificado"
#: bookwyrm/templates/author.html:16 bookwyrm/templates/author.html:17
-#: bookwyrm/templates/edit_author.html:5
msgid "Edit Author"
msgstr "Editar Autor/Autora"
@@ -174,11 +179,11 @@ msgstr "Descripción:"
#: bookwyrm/templates/book/book.html:121
#: bookwyrm/templates/book/edit_book.html:225
#: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42
-#: bookwyrm/templates/preferences/edit_user.html:56
-#: bookwyrm/templates/settings/site.html:89
-#: bookwyrm/templates/snippets/progress_update.html:21
+#: bookwyrm/templates/preferences/edit_user.html:68
+#: bookwyrm/templates/settings/site.html:93
#: bookwyrm/templates/snippets/readthrough.html:64
#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:42
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42
#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:34
msgid "Save"
msgstr "Guardar"
@@ -192,6 +197,7 @@ msgstr "Guardar"
#: bookwyrm/templates/snippets/goal_form.html:32
#: bookwyrm/templates/snippets/readthrough.html:65
#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:43
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43
#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:35
#: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28
msgid "Cancel"
@@ -447,10 +453,120 @@ msgid "Openlibrary key:"
msgstr "Clave OpenLibrary:"
#: bookwyrm/templates/components/inline_form.html:8
-#: bookwyrm/templates/feed/feed_layout.html:54
+#: bookwyrm/templates/feed/feed_layout.html:57
msgid "Close"
msgstr "Cerrar"
+#: bookwyrm/templates/directory.html:6 bookwyrm/templates/directory.html:11
+#: bookwyrm/templates/layout.html:97
+msgid "Directory"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:19
+msgid "Make your profile discoverable to other BookWyrm users."
+msgstr ""
+
+#: bookwyrm/templates/directory.html:26
+#, fuzzy, python-format
+#| msgid "You can set or change your reading goal any time from your profile page"
+msgid "You can opt-out at any time in your profile settings."
+msgstr "Puedes establecer o cambiar tu meta de lectura en cualquier momento que desees desde tu perfil"
+
+#: bookwyrm/templates/directory.html:31
+#: bookwyrm/templates/snippets/goal_card.html:22
+msgid "Dismiss message"
+msgstr "Desechar mensaje"
+
+#: bookwyrm/templates/directory.html:44
+#, fuzzy
+#| msgid "Show less"
+msgid "Show filters"
+msgstr "Mostrar menos"
+
+#: bookwyrm/templates/directory.html:46
+msgid "Hide filters"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:55
+#, fuzzy
+#| msgid "User Activity"
+msgid "User type"
+msgstr "Actividad de usuario"
+
+#: bookwyrm/templates/directory.html:58
+msgid "BookWyrm users"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:62
+msgid "All known users"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:68
+#, fuzzy
+#| msgid "Comment"
+msgid "Community"
+msgstr "Comentario"
+
+#: bookwyrm/templates/directory.html:71
+#, fuzzy
+#| msgid "Max uses"
+msgid "Local users"
+msgstr "Número máximo de usos"
+
+#: bookwyrm/templates/directory.html:75
+#, fuzzy
+#| msgid "Federated"
+msgid "Federated community"
+msgstr "Federalizado"
+
+#: bookwyrm/templates/directory.html:81
+msgid "Order by"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:84
+#, fuzzy
+#| msgid "Suggest"
+msgid "Suggested"
+msgstr "Sugerir"
+
+#: bookwyrm/templates/directory.html:85
+msgid "Recently active"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:91
+msgid "Apply filters"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:94
+#, fuzzy
+#| msgid "Clear search"
+msgid "Clear filters"
+msgstr "Borrar búsqueda"
+
+#: bookwyrm/templates/directory.html:128
+#, fuzzy
+#| msgid "followed you"
+msgid "follower you follow"
+msgid_plural "followers you follow"
+msgstr[0] "te siguió"
+msgstr[1] "te siguió"
+
+#: bookwyrm/templates/directory.html:135
+#, fuzzy
+#| msgid "Your shelves"
+msgid "book on your shelves"
+msgid_plural "books on your shelves"
+msgstr[0] "Tus estantes"
+msgstr[1] "Tus estantes"
+
+#: bookwyrm/templates/directory.html:143
+msgid "posts"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:149
+msgid "last active"
+msgstr ""
+
#: bookwyrm/templates/discover/about.html:7
#, python-format
msgid "About %(site_name)s"
@@ -491,15 +607,41 @@ msgstr "Anti-corporativo"
msgid "Join %(name)s"
msgstr "Unirse con %(name)s"
-#: bookwyrm/templates/discover/landing_layout.html:49
+#: bookwyrm/templates/discover/landing_layout.html:51
#: bookwyrm/templates/login.html:48
msgid "This instance is closed"
msgstr "Esta instancia está cerrada."
-#: bookwyrm/templates/discover/landing_layout.html:55
+#: bookwyrm/templates/discover/landing_layout.html:57
+msgid "Thank you! Your request has been received."
+msgstr ""
+
+#: bookwyrm/templates/discover/landing_layout.html:60
+msgid "Request an Invitation"
+msgstr ""
+
+#: bookwyrm/templates/discover/landing_layout.html:64
+#: bookwyrm/templates/password_reset_request.html:18
+#: bookwyrm/templates/preferences/edit_user.html:38
+#: bookwyrm/templates/snippets/register_form.html:13
+msgid "Email address:"
+msgstr "Dirección de correo electrónico:"
+
+#: bookwyrm/templates/discover/landing_layout.html:70
+#: bookwyrm/templates/moderation/report_modal.html:31
+msgid "Submit"
+msgstr ""
+
+#: bookwyrm/templates/discover/landing_layout.html:79
msgid "Your Account"
msgstr "Tu cuenta"
+#: bookwyrm/templates/edit_author.html:5
+#, fuzzy
+#| msgid "Edit Author"
+msgid "Edit Author:"
+msgstr "Editar Autor/Autora"
+
#: bookwyrm/templates/edit_author.html:32 bookwyrm/templates/lists/form.html:8
#: bookwyrm/templates/user/create_shelf_form.html:13
#: bookwyrm/templates/user/edit_shelf_form.html:14
@@ -544,6 +686,72 @@ msgstr "Ediciones de %(book_title)s"
msgid "Editions of \"%(work_title)s\""
msgstr "Ediciones de \"%(work_title)s\""
+#: 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 ""
+
+#: 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
+#, fuzzy, python-format
+#| msgid "About %(site_name)s"
+msgid "You're invited to join %(site_name)s!"
+msgstr "Sobre %(site_name)s"
+
+#: 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 this instance."
+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
+#, fuzzy
+#| msgid "More about this site"
+msgid "Learn more about this instance:"
+msgstr "Más sobre este sitio"
+
+#: 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/password_reset.html:4
+#: bookwyrm/templates/password_reset.html:10
+#: bookwyrm/templates/password_reset_request.html:4
+#: bookwyrm/templates/password_reset_request.html:10
+msgid "Reset Password"
+msgstr "Restablecer contraseña"
+
+#: 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
+#, fuzzy, python-format
+#| msgid "About %(site_name)s"
+msgid "Reset your %(site_name)s password"
+msgstr "Sobre %(site_name)s"
+
#: bookwyrm/templates/error.html:4
msgid "Oops!"
msgstr "¡Úps!"
@@ -574,27 +782,61 @@ msgstr "Todos los mensajes"
msgid "You have no messages right now."
msgstr "No tienes ningún mensaje en este momento."
-#: bookwyrm/templates/feed/feed.html:6
-#, python-format
-msgid "%(tab_title)s Timeline"
+#: bookwyrm/templates/feed/feed.html:9
+msgid "Home Timeline"
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:11
+#, fuzzy
+#| msgid "%(tab_title)s Timeline"
+msgid "Local Timeline"
msgstr "%(tab_title)s Línea temporal"
-#: bookwyrm/templates/feed/feed.html:10 bookwyrm/views/feed.py:33
+#: bookwyrm/templates/feed/feed.html:13
+#, fuzzy
+#| msgid "Federated Servers"
+msgid "Federated Timeline"
+msgstr "Servidores federalizados"
+
+#: bookwyrm/templates/feed/feed.html:19
msgid "Home"
msgstr "Hogar"
-#: bookwyrm/templates/feed/feed.html:13 bookwyrm/views/feed.py:38
+#: bookwyrm/templates/feed/feed.html:22
msgid "Local"
msgstr "Local"
-#: bookwyrm/templates/feed/feed.html:16 bookwyrm/views/feed.py:43
+#: bookwyrm/templates/feed/feed.html:25
msgid "Federated"
msgstr "Federalizado"
-#: bookwyrm/templates/feed/feed.html:32
+#: bookwyrm/templates/feed/feed.html:33
+#, python-format
+msgid "load 0 unread status(es)"
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:48
msgid "There aren't any activities right now! Try following a user to get started"
msgstr "¡No hay actividades en este momento! Sigue a otro usuario para empezar"
+#: bookwyrm/templates/feed/feed.html:56
+msgid "Who to follow"
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:69
+#, python-format
+msgid "%(mutuals)s follower you follow"
+msgid_plural "%(mutuals)s followers you follow"
+msgstr[0] ""
+msgstr[1] ""
+
+#: bookwyrm/templates/feed/feed.html:72
+#, python-format
+msgid "%(shared_books)s book on your shelves"
+msgid_plural "%(shared_books)s books on your shelves"
+msgstr[0] ""
+msgstr[1] ""
+
#: bookwyrm/templates/feed/feed_layout.html:5
msgid "Updates"
msgstr "Actualizaciones"
@@ -623,7 +865,7 @@ msgstr "Leyendo actualmente"
msgid "Read"
msgstr "Leer"
-#: bookwyrm/templates/feed/feed_layout.html:76 bookwyrm/templates/goal.html:26
+#: bookwyrm/templates/feed/feed_layout.html:74 bookwyrm/templates/goal.html:26
#: bookwyrm/templates/snippets/goal_card.html:6
#, python-format
msgid "%(year)s Reading Goal"
@@ -815,67 +1057,69 @@ msgstr "Actividad"
msgid "Profile"
msgstr "Perfil"
-#: bookwyrm/templates/layout.html:97
+#: bookwyrm/templates/layout.html:107
msgid "Settings"
msgstr "Configuración"
-#: bookwyrm/templates/layout.html:111
-#: bookwyrm/templates/settings/admin_layout.html:19
+#: bookwyrm/templates/layout.html:116
+#: bookwyrm/templates/settings/admin_layout.html:20
+#: bookwyrm/templates/settings/manage_invite_requests.html:15
#: bookwyrm/templates/settings/manage_invites.html:3
+#: bookwyrm/templates/settings/manage_invites.html:15
msgid "Invites"
msgstr "Invitaciones"
-#: bookwyrm/templates/layout.html:118
+#: bookwyrm/templates/layout.html:123
msgid "Admin"
msgstr ""
-#: bookwyrm/templates/layout.html:125
+#: bookwyrm/templates/layout.html:130
msgid "Log out"
msgstr "Cerrar sesión"
-#: bookwyrm/templates/layout.html:133 bookwyrm/templates/layout.html:134
+#: bookwyrm/templates/layout.html:138 bookwyrm/templates/layout.html:139
#: bookwyrm/templates/notifications.html:6
#: bookwyrm/templates/notifications.html:10
msgid "Notifications"
msgstr "Notificaciones"
-#: bookwyrm/templates/layout.html:151 bookwyrm/templates/layout.html:155
+#: bookwyrm/templates/layout.html:156 bookwyrm/templates/layout.html:160
#: bookwyrm/templates/login.html:17
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
msgstr "Nombre de usuario:"
-#: bookwyrm/templates/layout.html:156
+#: bookwyrm/templates/layout.html:161
msgid "password"
msgstr "contraseña"
-#: bookwyrm/templates/layout.html:157 bookwyrm/templates/login.html:36
+#: bookwyrm/templates/layout.html:162 bookwyrm/templates/login.html:36
msgid "Forgot your password?"
msgstr "¿Olvidaste tu contraseña?"
-#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:10
+#: bookwyrm/templates/layout.html:165 bookwyrm/templates/login.html:10
#: bookwyrm/templates/login.html:33
msgid "Log in"
msgstr "Iniciar sesión"
-#: bookwyrm/templates/layout.html:168
+#: bookwyrm/templates/layout.html:173
msgid "Join"
msgstr ""
-#: bookwyrm/templates/layout.html:191
+#: bookwyrm/templates/layout.html:196
msgid "About this server"
msgstr "Sobre este servidor"
-#: bookwyrm/templates/layout.html:195
+#: bookwyrm/templates/layout.html:200
msgid "Contact site admin"
msgstr "Contactarse con administradores del sitio"
-#: bookwyrm/templates/layout.html:202
+#: bookwyrm/templates/layout.html:207
#, python-format
msgid "Support %(site_name)s on %(support_title)s"
msgstr ""
-#: bookwyrm/templates/layout.html:206
+#: bookwyrm/templates/layout.html:211
msgid "BookWyrm is open source software. You can contribute or report issues on GitHub."
msgstr "BookWyrm es software de código abierto. Puedes contribuir o reportar problemas en GitHub."
@@ -1073,7 +1317,7 @@ msgstr ""
#: bookwyrm/templates/moderation/report.html:54
#: bookwyrm/templates/snippets/create_status.html:12
-#: bookwyrm/templates/snippets/create_status_form.html:44
+#: bookwyrm/templates/snippets/create_status_form.html:52
msgid "Comment"
msgstr "Comentario"
@@ -1108,10 +1352,6 @@ msgstr ""
msgid "More info about this report:"
msgstr "Más sobre este sitio"
-#: bookwyrm/templates/moderation/report_modal.html:31
-msgid "Submit"
-msgstr ""
-
#: bookwyrm/templates/moderation/report_preview.html:13
msgid "No notes provided"
msgstr ""
@@ -1132,7 +1372,7 @@ msgstr ""
#: bookwyrm/templates/moderation/reports.html:4
#: bookwyrm/templates/moderation/reports.html:5
-#: bookwyrm/templates/settings/admin_layout.html:23
+#: bookwyrm/templates/settings/admin_layout.html:24
#, fuzzy
#| msgid "Recent Imports"
msgid "Reports"
@@ -1268,29 +1508,16 @@ msgstr ""
msgid "You're all caught up!"
msgstr "¡Estás al día!"
-#: bookwyrm/templates/password_reset.html:4
-#: bookwyrm/templates/password_reset.html:10
-#: bookwyrm/templates/password_reset_request.html:4
-#: bookwyrm/templates/password_reset_request.html:10
-msgid "Reset Password"
-msgstr "Restablecer contraseña"
-
#: bookwyrm/templates/password_reset.html:23
#: bookwyrm/templates/preferences/change_password.html:18
msgid "Confirm password:"
msgstr "Confirmar contraseña:"
-#: bookwyrm/templates/password_reset_request.html:12
+#: bookwyrm/templates/password_reset_request.html:14
msgid "A link to reset your password will be sent to your email address"
msgstr "Un enlace para restablecer tu contraseña se enviará a tu dirección de correo electrónico"
-#: bookwyrm/templates/password_reset_request.html:16
-#: bookwyrm/templates/preferences/edit_user.html:38
-#: bookwyrm/templates/snippets/register_form.html:13
-msgid "Email address:"
-msgstr "Dirección de correo electrónico:"
-
-#: bookwyrm/templates/password_reset_request.html:23
+#: bookwyrm/templates/password_reset_request.html:28
msgid "Reset password"
msgstr "Restablecer contraseña"
@@ -1340,6 +1567,19 @@ msgstr ""
msgid "Manually approve followers:"
msgstr "Aprobar seguidores a mano:"
+#: bookwyrm/templates/preferences/edit_user.html:58
+msgid "Show this account in suggested users:"
+msgstr ""
+
+#: bookwyrm/templates/preferences/edit_user.html:62
+#, 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:65
+msgid "Preferred Timezone: "
+msgstr "Huso horario preferido"
+
#: bookwyrm/templates/preferences/preferences_layout.html:11
msgid "Account"
msgstr "Cuenta"
@@ -1382,37 +1622,37 @@ msgstr "Adminstración"
msgid "Manage Users"
msgstr "Administrar usuarios"
-#: bookwyrm/templates/settings/admin_layout.html:27
+#: bookwyrm/templates/settings/admin_layout.html:28
#: bookwyrm/templates/settings/federation.html:4
msgid "Federated Servers"
msgstr "Servidores federalizados"
-#: bookwyrm/templates/settings/admin_layout.html:32
+#: bookwyrm/templates/settings/admin_layout.html:33
msgid "Instance Settings"
msgstr "Configuración de instancia"
-#: bookwyrm/templates/settings/admin_layout.html:36
+#: bookwyrm/templates/settings/admin_layout.html:37
#: bookwyrm/templates/settings/site.html:4
#: bookwyrm/templates/settings/site.html:6
msgid "Site Settings"
msgstr "Configuración de sitio"
-#: bookwyrm/templates/settings/admin_layout.html:39
+#: bookwyrm/templates/settings/admin_layout.html:40
#: bookwyrm/templates/settings/site.html:13
msgid "Instance Info"
msgstr "Información de instancia"
-#: bookwyrm/templates/settings/admin_layout.html:40
+#: bookwyrm/templates/settings/admin_layout.html:41
#: bookwyrm/templates/settings/site.html:39
msgid "Images"
msgstr "Imagenes"
-#: bookwyrm/templates/settings/admin_layout.html:41
+#: bookwyrm/templates/settings/admin_layout.html:42
#: bookwyrm/templates/settings/site.html:59
msgid "Footer Content"
msgstr "Contenido del pie de página"
-#: bookwyrm/templates/settings/admin_layout.html:42
+#: bookwyrm/templates/settings/admin_layout.html:43
#: bookwyrm/templates/settings/site.html:77
msgid "Registration"
msgstr "Registración"
@@ -1426,42 +1666,114 @@ msgid "Software"
msgstr "Software"
#: bookwyrm/templates/settings/federation.html:12
+#: bookwyrm/templates/settings/manage_invite_requests.html:33
msgid "Status"
msgstr "Status"
-#: bookwyrm/templates/settings/manage_invites.html:7
+#: bookwyrm/templates/settings/manage_invite_requests.html:4
+#: bookwyrm/templates/settings/manage_invite_requests.html:11
+#: bookwyrm/templates/settings/manage_invite_requests.html:25
+#: bookwyrm/templates/settings/manage_invites.html:11
+#, fuzzy
+#| msgid "Invites"
+msgid "Invite Requests"
+msgstr "Invitaciones"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:23
+msgid "Ignored Invite Requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:31
+msgid "Date"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:32
+msgid "Email"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:34
+#, fuzzy
+#| msgid "Notifications"
+msgid "Action"
+msgstr "Notificaciones"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:37
+#, fuzzy
+#| msgid "Follow Requests"
+msgid "No requests"
+msgstr "Solicitudes de seguidor"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:45
+#, fuzzy
+#| msgid "Accept"
+msgid "Accepted"
+msgstr "Aceptar"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:47
+msgid "Sent"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:49
+msgid "Requested"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:57
+msgid "Send invite"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:59
+msgid "Re-send invite"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:70
+msgid "Ignore"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:72
+msgid "Un-gnore"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:83
+msgid "Back to pending requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:85
+msgid "View ignored requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invites.html:21
msgid "Generate New Invite"
msgstr "Generar nuevo invitación"
-#: bookwyrm/templates/settings/manage_invites.html:13
+#: bookwyrm/templates/settings/manage_invites.html:27
msgid "Expiry:"
msgstr "Vencimiento:"
-#: bookwyrm/templates/settings/manage_invites.html:19
+#: bookwyrm/templates/settings/manage_invites.html:33
msgid "Use limit:"
msgstr "Límite de uso:"
-#: bookwyrm/templates/settings/manage_invites.html:26
+#: bookwyrm/templates/settings/manage_invites.html:40
msgid "Create Invite"
msgstr "Crear invitación"
-#: bookwyrm/templates/settings/manage_invites.html:33
+#: bookwyrm/templates/settings/manage_invites.html:47
msgid "Link"
msgstr "Enlace"
-#: bookwyrm/templates/settings/manage_invites.html:34
+#: bookwyrm/templates/settings/manage_invites.html:48
msgid "Expires"
msgstr "Vence"
-#: bookwyrm/templates/settings/manage_invites.html:35
+#: bookwyrm/templates/settings/manage_invites.html:49
msgid "Max uses"
msgstr "Número máximo de usos"
-#: bookwyrm/templates/settings/manage_invites.html:36
+#: bookwyrm/templates/settings/manage_invites.html:50
msgid "Times used"
msgstr "Número de usos"
-#: bookwyrm/templates/settings/manage_invites.html:39
+#: bookwyrm/templates/settings/manage_invites.html:53
msgid "No active invites"
msgstr "No invitaciónes activas"
@@ -1514,6 +1826,12 @@ msgid "Allow registration:"
msgstr "Permitir registración:"
#: bookwyrm/templates/settings/site.html:83
+#, fuzzy
+#| msgid "Follow Requests"
+msgid "Allow invite requests:"
+msgstr "Solicitudes de seguidor"
+
+#: bookwyrm/templates/settings/site.html:87
msgid "Registration closed text:"
msgstr "Texto de registración cerrada:"
@@ -1558,29 +1876,70 @@ msgstr "Reseña"
msgid "Quote"
msgstr "Cita"
-#: bookwyrm/templates/snippets/create_status_form.html:21
+#: bookwyrm/templates/snippets/create_status_form.html:18
+#, fuzzy
+#| msgid "Comment"
+msgid "Comment:"
+msgstr "Comentario"
+
+#: bookwyrm/templates/snippets/create_status_form.html:20
+#, fuzzy
+#| msgid "Quote"
+msgid "Quote:"
+msgstr "Cita"
+
+#: bookwyrm/templates/snippets/create_status_form.html:22
+#, fuzzy
+#| msgid "Review"
+msgid "Review:"
+msgstr "Reseña"
+
+#: bookwyrm/templates/snippets/create_status_form.html:29
#: bookwyrm/templates/snippets/shelf.html:17
msgid "Rating"
msgstr "Calificación"
-#: bookwyrm/templates/snippets/create_status_form.html:23
+#: bookwyrm/templates/snippets/create_status_form.html:31
#: bookwyrm/templates/snippets/rate_action.html:14
#: bookwyrm/templates/snippets/stars.html:3
msgid "No rating"
msgstr "No calificación"
-#: bookwyrm/templates/snippets/create_status_form.html:54
+#: bookwyrm/templates/snippets/create_status_form.html:64
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:16
+msgid "Progress:"
+msgstr "Progreso:"
+
+#: bookwyrm/templates/snippets/create_status_form.html:71
+#: bookwyrm/templates/snippets/readthrough_form.html:22
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30
+msgid "pages"
+msgstr "páginas"
+
+#: bookwyrm/templates/snippets/create_status_form.html:72
+#: bookwyrm/templates/snippets/readthrough_form.html:23
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31
+msgid "percent"
+msgstr "por ciento"
+
+#: bookwyrm/templates/snippets/create_status_form.html:77
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:36
+#, python-format
+msgid "of %(pages)s pages"
+msgstr "de %(pages)s páginas"
+
+#: bookwyrm/templates/snippets/create_status_form.html:89
msgid "Include spoiler alert"
msgstr "Incluir alerta de spoiler"
-#: bookwyrm/templates/snippets/create_status_form.html:60
+#: bookwyrm/templates/snippets/create_status_form.html:95
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
#: bookwyrm/templates/snippets/privacy_select.html:19
msgid "Private"
msgstr "Privada"
-#: bookwyrm/templates/snippets/create_status_form.html:67
+#: bookwyrm/templates/snippets/create_status_form.html:102
msgid "Post"
msgstr "Compartir"
@@ -1610,21 +1969,17 @@ msgstr "Me gusta status"
msgid "Un-like status"
msgstr "Quitar me gusta de status"
-#: bookwyrm/templates/snippets/follow_button.html:13
-msgid "Send follow request"
-msgstr "Envia solicitud de seguidor"
-
-#: bookwyrm/templates/snippets/follow_button.html:15
+#: bookwyrm/templates/snippets/follow_button.html:12
msgid "Follow"
msgstr "Seguir"
-#: bookwyrm/templates/snippets/follow_button.html:22
+#: bookwyrm/templates/snippets/follow_button.html:18
#, fuzzy
#| msgid "Send follow request"
msgid "Undo follow request"
msgstr "Envia solicitud de seguidor"
-#: bookwyrm/templates/snippets/follow_button.html:24
+#: bookwyrm/templates/snippets/follow_button.html:20
msgid "Unfollow"
msgstr "Dejar de seguir"
@@ -1642,14 +1997,22 @@ msgstr[1] "estableció una meta de leer %(counter)s libros en %(year)s"
#: bookwyrm/templates/snippets/generated_status/rating.html:3
#, fuzzy, python-format
#| msgid "%(title)s by "
-msgid "Rated %(title)s: %(rating)s star"
-msgid_plural "Rated %(title)s: %(rating)s stars"
+msgid "Rated %(title)s: %(display_rating)s star"
+msgid_plural "Rated %(title)s: %(display_rating)s stars"
msgstr[0] "%(title)s por "
msgstr[1] "%(title)s por "
-#: bookwyrm/templates/snippets/goal_card.html:22
-msgid "Dismiss message"
-msgstr "Desechar mensaje"
+#: 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] ""
+msgstr[1] ""
+
+#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8
+#, python-format
+msgid "Review of \"%(book_title)s\": %(review_title)s"
+msgstr ""
#: bookwyrm/templates/snippets/goal_card.html:23
#, python-format
@@ -1731,25 +2094,6 @@ msgstr "Privacidad de publicación"
msgid "Followers"
msgstr "Seguidores"
-#: bookwyrm/templates/snippets/progress_update.html:6
-msgid "Progress:"
-msgstr "Progreso:"
-
-#: bookwyrm/templates/snippets/progress_update.html:16
-#: bookwyrm/templates/snippets/readthrough_form.html:22
-msgid "pages"
-msgstr "páginas"
-
-#: bookwyrm/templates/snippets/progress_update.html:17
-#: bookwyrm/templates/snippets/readthrough_form.html:23
-msgid "percent"
-msgstr "por ciento"
-
-#: bookwyrm/templates/snippets/progress_update.html:25
-#, python-format
-msgid "of %(pages)s pages"
-msgstr "de %(pages)s páginas"
-
#: bookwyrm/templates/snippets/rate_action.html:4
msgid "Leave a rating"
msgstr "Da una calificación"
@@ -1892,6 +2236,13 @@ msgstr "Retirar del estante"
msgid "Finish \"%(book_title)s\""
msgstr "Terminar \"%(book_title)s\""
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:5
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:33
+#, fuzzy
+#| msgid "Updates"
+msgid "Update progress"
+msgstr "Actualizaciones"
+
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown.html:5
msgid "More shelves"
msgstr "Más estantes"
@@ -2117,6 +2468,20 @@ msgstr[1] "%(counter)s seguidores"
msgid "%(counter)s following"
msgstr "%(counter)s siguiendo"
+#: bookwyrm/views/password.py:32
+#, fuzzy
+#| msgid "A user with that username already exists."
+msgid "No user with that email address was found."
+msgstr "Ya existe un usuario con ese nombre."
+
+#: bookwyrm/views/password.py:41
+#, python-format
+msgid "A password reset link sent to %s"
+msgstr ""
+
+#~ msgid "Send follow request"
+#~ msgstr "Envia solicitud de seguidor"
+
#, fuzzy
#~| msgid "All messages"
#~ msgid "Messages"
@@ -2132,7 +2497,7 @@ msgstr "%(counter)s siguiendo"
#~ msgid "Enter a number."
#~ msgstr "Número de serie:"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "%(value)s is not a valid remote_id"
#~ msgid "Value %(value)r is not a valid choice."
#~ msgstr "%(value)s no es un remote_id válido"
@@ -2167,7 +2532,7 @@ msgstr "%(counter)s siguiendo"
#~ msgid "Positive integer"
#~ msgstr "No invitaciónes activas"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(value)s” is not a valid UUID."
#~ msgstr "%(value)s no es un usuario válido"
@@ -2192,7 +2557,7 @@ msgstr "%(counter)s siguiendo"
#~ msgid "The submitted file is empty."
#~ msgstr "Este estante está vacio."
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "%(value)s is not a valid username"
#~ msgid "“%(pk)s” is not a valid value."
#~ msgstr "%(value)s no es un usuario válido"
@@ -2240,7 +2605,7 @@ msgstr "%(counter)s siguiendo"
#~ msgid "September"
#~ msgstr "Número de serie:"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "No books found matching the query \"%(query)s\""
#~ msgid "No %(verbose_name)s found matching the query"
#~ msgstr "No se encontró ningún libro correspondiente a la búsqueda: \"%(query)s\""
diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo
index 0a96b5131..99a9b6cc5 100644
Binary files a/locale/fr_FR/LC_MESSAGES/django.mo and b/locale/fr_FR/LC_MESSAGES/django.mo differ
diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po
index 5e58018fd..66ee8cf16 100644
--- a/locale/fr_FR/LC_MESSAGES/django.po
+++ b/locale/fr_FR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-03-19 11:41-0700\n"
+"POT-Creation-Date: 2021-03-28 22:42+0000\n"
"PO-Revision-Date: 2021-03-02 12:37+0100\n"
"Last-Translator: Fabien Basmaison \n"
"Language-Team: Mouse Reeve \n"
@@ -18,75 +18,78 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: bookwyrm/forms.py:203
+#: bookwyrm/forms.py:213
+msgid "A user with this email already exists."
+msgstr ""
+
+#: bookwyrm/forms.py:227
msgid "One Day"
msgstr ""
-#: bookwyrm/forms.py:204
+#: bookwyrm/forms.py:228
msgid "One Week"
msgstr ""
-#: bookwyrm/forms.py:205
+#: bookwyrm/forms.py:229
msgid "One Month"
msgstr ""
-#: bookwyrm/forms.py:206
+#: bookwyrm/forms.py:230
msgid "Does Not Expire"
msgstr ""
-#: bookwyrm/forms.py:211
+#: bookwyrm/forms.py:235
#, python-format
msgid "%(count)d uses"
msgstr ""
-#: bookwyrm/forms.py:214
+#: bookwyrm/forms.py:238
#, fuzzy
#| msgid "Unlisted"
msgid "Unlimited"
msgstr "Non listé"
-#: bookwyrm/models/fields.py:24
+#: bookwyrm/models/fields.py:25
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr ""
-#: bookwyrm/models/fields.py:33 bookwyrm/models/fields.py:42
+#: bookwyrm/models/fields.py:34 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr ""
-#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:152
+#: bookwyrm/models/fields.py:170 bookwyrm/templates/layout.html:157
#, fuzzy
#| msgid "Username:"
msgid "username"
msgstr "Nom d’utilisateur :"
-#: bookwyrm/models/fields.py:170
+#: bookwyrm/models/fields.py:175
msgid "A user with that username already exists."
msgstr ""
-#: bookwyrm/settings.py:142
+#: bookwyrm/settings.py:148
msgid "English"
msgstr ""
-#: bookwyrm/settings.py:143
+#: bookwyrm/settings.py:149
msgid "German"
msgstr ""
-#: bookwyrm/settings.py:144
+#: bookwyrm/settings.py:150
msgid "Spanish"
msgstr ""
-#: bookwyrm/settings.py:145
+#: bookwyrm/settings.py:151
msgid "French"
msgstr ""
-#: bookwyrm/settings.py:146
+#: bookwyrm/settings.py:152
msgid "Simplified Chinese"
msgstr ""
#: bookwyrm/templates/author.html:16 bookwyrm/templates/author.html:17
-#: bookwyrm/templates/edit_author.html:5
msgid "Edit Author"
msgstr "Modifier l’auteur ou autrice"
@@ -182,11 +185,11 @@ msgstr "Description :"
#: bookwyrm/templates/book/book.html:121
#: bookwyrm/templates/book/edit_book.html:225
#: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42
-#: bookwyrm/templates/preferences/edit_user.html:56
-#: bookwyrm/templates/settings/site.html:89
-#: bookwyrm/templates/snippets/progress_update.html:21
+#: bookwyrm/templates/preferences/edit_user.html:68
+#: bookwyrm/templates/settings/site.html:93
#: bookwyrm/templates/snippets/readthrough.html:64
#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:42
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42
#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:34
msgid "Save"
msgstr "Enregistrer"
@@ -200,6 +203,7 @@ msgstr "Enregistrer"
#: bookwyrm/templates/snippets/goal_form.html:32
#: bookwyrm/templates/snippets/readthrough.html:65
#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:43
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43
#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:35
#: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28
msgid "Cancel"
@@ -460,12 +464,124 @@ msgid "Openlibrary key:"
msgstr "Clé Openlibrary :"
#: bookwyrm/templates/components/inline_form.html:8
-#: bookwyrm/templates/feed/feed_layout.html:54
+#: bookwyrm/templates/feed/feed_layout.html:57
#, fuzzy
#| msgid "Closed"
msgid "Close"
msgstr "Fermer"
+#: bookwyrm/templates/directory.html:6 bookwyrm/templates/directory.html:11
+#: bookwyrm/templates/layout.html:97
+msgid "Directory"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:19
+msgid "Make your profile discoverable to other BookWyrm users."
+msgstr ""
+
+#: bookwyrm/templates/directory.html:26
+#, fuzzy, python-format
+#| msgid "You can set or change your reading goal any time from your profile page"
+msgid "You can opt-out at any time in your profile settings."
+msgstr "Vous pouvez définir ou changer vore défi lecture à n’importe quel moment depuis votre profil"
+
+#: bookwyrm/templates/directory.html:31
+#: bookwyrm/templates/snippets/goal_card.html:22
+msgid "Dismiss message"
+msgstr "Rejeter le message"
+
+#: bookwyrm/templates/directory.html:44
+#, fuzzy
+#| msgid "Show less"
+msgid "Show filters"
+msgstr "Replier"
+
+#: bookwyrm/templates/directory.html:46
+msgid "Hide filters"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:55
+#, fuzzy
+#| msgid "User Activity"
+msgid "User type"
+msgstr "Activité du compte"
+
+#: bookwyrm/templates/directory.html:58
+#, fuzzy
+#| msgid "Blocked users"
+msgid "BookWyrm users"
+msgstr "Comptes bloqués"
+
+#: bookwyrm/templates/directory.html:62
+msgid "All known users"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:68
+#, fuzzy
+#| msgid "Comment"
+msgid "Community"
+msgstr "Commentaire"
+
+#: bookwyrm/templates/directory.html:71
+#, fuzzy
+#| msgid "Blocked users"
+msgid "Local users"
+msgstr "Comptes bloqués"
+
+#: bookwyrm/templates/directory.html:75
+#, fuzzy
+#| msgid "Federated"
+msgid "Federated community"
+msgstr "Fédéré"
+
+#: bookwyrm/templates/directory.html:81
+msgid "Order by"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:84
+#, fuzzy
+#| msgid "Suggest"
+msgid "Suggested"
+msgstr "Suggérer"
+
+#: bookwyrm/templates/directory.html:85
+msgid "Recently active"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:91
+msgid "Apply filters"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:94
+#, fuzzy
+#| msgid "Clear search"
+msgid "Clear filters"
+msgstr "Vider la requête"
+
+#: bookwyrm/templates/directory.html:128
+#, fuzzy
+#| msgid "followed you"
+msgid "follower you follow"
+msgid_plural "followers you follow"
+msgstr[0] "s’est abonné(e)"
+msgstr[1] "s’est abonné(e)"
+
+#: bookwyrm/templates/directory.html:135
+#, fuzzy
+#| msgid "Your shelves"
+msgid "book on your shelves"
+msgid_plural "books on your shelves"
+msgstr[0] "Vos étagères"
+msgstr[1] "Vos étagères"
+
+#: bookwyrm/templates/directory.html:143
+msgid "posts"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:149
+msgid "last active"
+msgstr ""
+
#: bookwyrm/templates/discover/about.html:7
#, fuzzy, python-format
#| msgid "Join %(name)s"
@@ -507,15 +623,41 @@ msgstr "Anti‑commercial"
msgid "Join %(name)s"
msgstr "Rejoignez %(name)s"
-#: bookwyrm/templates/discover/landing_layout.html:49
+#: bookwyrm/templates/discover/landing_layout.html:51
#: bookwyrm/templates/login.html:48
msgid "This instance is closed"
msgstr "Cette instance est fermée"
-#: bookwyrm/templates/discover/landing_layout.html:55
+#: bookwyrm/templates/discover/landing_layout.html:57
+msgid "Thank you! Your request has been received."
+msgstr ""
+
+#: bookwyrm/templates/discover/landing_layout.html:60
+msgid "Request an Invitation"
+msgstr ""
+
+#: bookwyrm/templates/discover/landing_layout.html:64
+#: bookwyrm/templates/password_reset_request.html:18
+#: bookwyrm/templates/preferences/edit_user.html:38
+#: bookwyrm/templates/snippets/register_form.html:13
+msgid "Email address:"
+msgstr "Adresse email :"
+
+#: bookwyrm/templates/discover/landing_layout.html:70
+#: bookwyrm/templates/moderation/report_modal.html:31
+msgid "Submit"
+msgstr ""
+
+#: bookwyrm/templates/discover/landing_layout.html:79
msgid "Your Account"
msgstr "Votre compte"
+#: bookwyrm/templates/edit_author.html:5
+#, fuzzy
+#| msgid "Edit Author"
+msgid "Edit Author:"
+msgstr "Modifier l’auteur ou autrice"
+
#: bookwyrm/templates/edit_author.html:32 bookwyrm/templates/lists/form.html:8
#: bookwyrm/templates/user/create_shelf_form.html:13
#: bookwyrm/templates/user/edit_shelf_form.html:14
@@ -561,6 +703,72 @@ msgstr "Éditions de %(book_title)s"
msgid "Editions of \"%(work_title)s\""
msgstr "Éditions de « %(work_title)s »"
+#: 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 ""
+
+#: 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
+#, fuzzy, python-format
+#| msgid "Join %(name)s"
+msgid "You're invited to join %(site_name)s!"
+msgstr "À propos de %(name)s"
+
+#: 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 this instance."
+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
+#, fuzzy
+#| msgid "More about this site"
+msgid "Learn more about this instance:"
+msgstr "En savoir plus sur ce site"
+
+#: 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/password_reset.html:4
+#: bookwyrm/templates/password_reset.html:10
+#: bookwyrm/templates/password_reset_request.html:4
+#: bookwyrm/templates/password_reset_request.html:10
+msgid "Reset Password"
+msgstr "Changez le mot de passe"
+
+#: 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
+#, fuzzy, python-format
+#| msgid "Join %(name)s"
+msgid "Reset your %(site_name)s password"
+msgstr "À propos de %(name)s"
+
#: bookwyrm/templates/error.html:4
msgid "Oops!"
msgstr "Oups !"
@@ -591,27 +799,61 @@ msgstr "Tous les messages"
msgid "You have no messages right now."
msgstr "Vous n’avez aucun message pour l’instant."
-#: bookwyrm/templates/feed/feed.html:6
-#, python-format
-msgid "%(tab_title)s Timeline"
+#: bookwyrm/templates/feed/feed.html:9
+msgid "Home Timeline"
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:11
+#, fuzzy
+#| msgid "%(tab_title)s Timeline"
+msgid "Local Timeline"
msgstr "%(tab_title)s — Fil d’actualité"
-#: bookwyrm/templates/feed/feed.html:10 bookwyrm/views/feed.py:33
+#: bookwyrm/templates/feed/feed.html:13
+#, fuzzy
+#| msgid "Federated Servers"
+msgid "Federated Timeline"
+msgstr "Serveurs fédérés"
+
+#: bookwyrm/templates/feed/feed.html:19
msgid "Home"
msgstr "Accueil"
-#: bookwyrm/templates/feed/feed.html:13 bookwyrm/views/feed.py:38
+#: bookwyrm/templates/feed/feed.html:22
msgid "Local"
msgstr "Local"
-#: bookwyrm/templates/feed/feed.html:16 bookwyrm/views/feed.py:43
+#: bookwyrm/templates/feed/feed.html:25
msgid "Federated"
msgstr "Fédéré"
-#: bookwyrm/templates/feed/feed.html:32
+#: bookwyrm/templates/feed/feed.html:33
+#, python-format
+msgid "load 0 unread status(es)"
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:48
msgid "There aren't any activities right now! Try following a user to get started"
msgstr "Aucune activité pour l’instant ! Abonnez‑vous à quelqu’un pour commencer"
+#: bookwyrm/templates/feed/feed.html:56
+msgid "Who to follow"
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:69
+#, python-format
+msgid "%(mutuals)s follower you follow"
+msgid_plural "%(mutuals)s followers you follow"
+msgstr[0] ""
+msgstr[1] ""
+
+#: bookwyrm/templates/feed/feed.html:72
+#, python-format
+msgid "%(shared_books)s book on your shelves"
+msgid_plural "%(shared_books)s books on your shelves"
+msgstr[0] ""
+msgstr[1] ""
+
#: bookwyrm/templates/feed/feed_layout.html:5
#, fuzzy
#| msgid "Updated:"
@@ -646,7 +888,7 @@ msgstr "Commencer la lecture"
msgid "Read"
msgstr "Lu"
-#: bookwyrm/templates/feed/feed_layout.html:76 bookwyrm/templates/goal.html:26
+#: bookwyrm/templates/feed/feed_layout.html:74 bookwyrm/templates/goal.html:26
#: bookwyrm/templates/snippets/goal_card.html:6
#, python-format
msgid "%(year)s Reading Goal"
@@ -842,71 +1084,73 @@ msgstr "Fil d’actualité"
msgid "Profile"
msgstr "Profil"
-#: bookwyrm/templates/layout.html:97
+#: bookwyrm/templates/layout.html:107
#, fuzzy
#| msgid "Instance Settings"
msgid "Settings"
msgstr "Paramètres de l’instance"
-#: bookwyrm/templates/layout.html:111
-#: bookwyrm/templates/settings/admin_layout.html:19
+#: bookwyrm/templates/layout.html:116
+#: bookwyrm/templates/settings/admin_layout.html:20
+#: bookwyrm/templates/settings/manage_invite_requests.html:15
#: bookwyrm/templates/settings/manage_invites.html:3
+#: bookwyrm/templates/settings/manage_invites.html:15
msgid "Invites"
msgstr "Invitations"
-#: bookwyrm/templates/layout.html:118
+#: bookwyrm/templates/layout.html:123
msgid "Admin"
msgstr ""
-#: bookwyrm/templates/layout.html:125
+#: bookwyrm/templates/layout.html:130
msgid "Log out"
msgstr "Se déconnecter"
-#: bookwyrm/templates/layout.html:133 bookwyrm/templates/layout.html:134
+#: bookwyrm/templates/layout.html:138 bookwyrm/templates/layout.html:139
#: bookwyrm/templates/notifications.html:6
#: bookwyrm/templates/notifications.html:10
msgid "Notifications"
msgstr "Notifications"
-#: bookwyrm/templates/layout.html:151 bookwyrm/templates/layout.html:155
+#: bookwyrm/templates/layout.html:156 bookwyrm/templates/layout.html:160
#: bookwyrm/templates/login.html:17
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
msgstr "Nom d’utilisateur :"
-#: bookwyrm/templates/layout.html:156
+#: bookwyrm/templates/layout.html:161
#, fuzzy
#| msgid "Password:"
msgid "password"
msgstr "Mot de passe :"
-#: bookwyrm/templates/layout.html:157 bookwyrm/templates/login.html:36
+#: bookwyrm/templates/layout.html:162 bookwyrm/templates/login.html:36
msgid "Forgot your password?"
msgstr "Mot de passe oublié ?"
-#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:10
+#: bookwyrm/templates/layout.html:165 bookwyrm/templates/login.html:10
#: bookwyrm/templates/login.html:33
msgid "Log in"
msgstr "Se connecter"
-#: bookwyrm/templates/layout.html:168
+#: bookwyrm/templates/layout.html:173
msgid "Join"
msgstr ""
-#: bookwyrm/templates/layout.html:191
+#: bookwyrm/templates/layout.html:196
msgid "About this server"
msgstr "À propos de ce serveur"
-#: bookwyrm/templates/layout.html:195
+#: bookwyrm/templates/layout.html:200
msgid "Contact site admin"
msgstr "Contacter l’administrateur du site"
-#: bookwyrm/templates/layout.html:202
+#: bookwyrm/templates/layout.html:207
#, python-format
msgid "Support %(site_name)s on %(support_title)s"
msgstr ""
-#: bookwyrm/templates/layout.html:206
+#: bookwyrm/templates/layout.html:211
msgid "BookWyrm is open source software. You can contribute or report issues on GitHub."
msgstr "Bookwyrm est un logiciel libre. Vous pouvez contribuer ou faire des rapports de bogues via GitHub."
@@ -1106,7 +1350,7 @@ msgstr ""
#: bookwyrm/templates/moderation/report.html:54
#: bookwyrm/templates/snippets/create_status.html:12
-#: bookwyrm/templates/snippets/create_status_form.html:44
+#: bookwyrm/templates/snippets/create_status_form.html:52
msgid "Comment"
msgstr "Commentaire"
@@ -1141,10 +1385,6 @@ msgstr ""
msgid "More info about this report:"
msgstr "En savoir plus sur ce site"
-#: bookwyrm/templates/moderation/report_modal.html:31
-msgid "Submit"
-msgstr ""
-
#: bookwyrm/templates/moderation/report_preview.html:13
msgid "No notes provided"
msgstr ""
@@ -1165,7 +1405,7 @@ msgstr ""
#: bookwyrm/templates/moderation/reports.html:4
#: bookwyrm/templates/moderation/reports.html:5
-#: bookwyrm/templates/settings/admin_layout.html:23
+#: bookwyrm/templates/settings/admin_layout.html:24
#, fuzzy
#| msgid "Recent Imports"
msgid "Reports"
@@ -1301,29 +1541,16 @@ msgstr ""
msgid "You're all caught up!"
msgstr "Aucune nouvelle notification !"
-#: bookwyrm/templates/password_reset.html:4
-#: bookwyrm/templates/password_reset.html:10
-#: bookwyrm/templates/password_reset_request.html:4
-#: bookwyrm/templates/password_reset_request.html:10
-msgid "Reset Password"
-msgstr "Changez le mot de passe"
-
#: bookwyrm/templates/password_reset.html:23
#: bookwyrm/templates/preferences/change_password.html:18
msgid "Confirm password:"
msgstr "Confirmez le mot de passe :"
-#: bookwyrm/templates/password_reset_request.html:12
+#: bookwyrm/templates/password_reset_request.html:14
msgid "A link to reset your password will be sent to your email address"
msgstr "Un lien pour changer votre mot de passe sera envoyé à votre addresse email"
-#: bookwyrm/templates/password_reset_request.html:16
-#: bookwyrm/templates/preferences/edit_user.html:38
-#: bookwyrm/templates/snippets/register_form.html:13
-msgid "Email address:"
-msgstr "Adresse email :"
-
-#: bookwyrm/templates/password_reset_request.html:23
+#: bookwyrm/templates/password_reset_request.html:28
msgid "Reset password"
msgstr "Changer de mot de passe"
@@ -1373,6 +1600,19 @@ msgstr ""
msgid "Manually approve followers:"
msgstr "Autoriser les abonnements manuellement :"
+#: bookwyrm/templates/preferences/edit_user.html:58
+msgid "Show this account in suggested users:"
+msgstr ""
+
+#: bookwyrm/templates/preferences/edit_user.html:62
+#, 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:65
+msgid "Preferred Timezone: "
+msgstr ""
+
#: bookwyrm/templates/preferences/preferences_layout.html:11
msgid "Account"
msgstr "Compte"
@@ -1415,16 +1655,16 @@ msgstr "Administration"
msgid "Manage Users"
msgstr "Gérer les comptes"
-#: bookwyrm/templates/settings/admin_layout.html:27
+#: bookwyrm/templates/settings/admin_layout.html:28
#: bookwyrm/templates/settings/federation.html:4
msgid "Federated Servers"
msgstr "Serveurs fédérés"
-#: bookwyrm/templates/settings/admin_layout.html:32
+#: bookwyrm/templates/settings/admin_layout.html:33
msgid "Instance Settings"
msgstr "Paramètres de l’instance"
-#: bookwyrm/templates/settings/admin_layout.html:36
+#: bookwyrm/templates/settings/admin_layout.html:37
#: bookwyrm/templates/settings/site.html:4
#: bookwyrm/templates/settings/site.html:6
#, fuzzy
@@ -1432,22 +1672,22 @@ msgstr "Paramètres de l’instance"
msgid "Site Settings"
msgstr "Paramètres du site"
-#: bookwyrm/templates/settings/admin_layout.html:39
+#: bookwyrm/templates/settings/admin_layout.html:40
#: bookwyrm/templates/settings/site.html:13
msgid "Instance Info"
msgstr "Information sur l’instance"
-#: bookwyrm/templates/settings/admin_layout.html:40
+#: bookwyrm/templates/settings/admin_layout.html:41
#: bookwyrm/templates/settings/site.html:39
msgid "Images"
msgstr "Images"
-#: bookwyrm/templates/settings/admin_layout.html:41
+#: bookwyrm/templates/settings/admin_layout.html:42
#: bookwyrm/templates/settings/site.html:59
msgid "Footer Content"
msgstr "Contenu du pied de page"
-#: bookwyrm/templates/settings/admin_layout.html:42
+#: bookwyrm/templates/settings/admin_layout.html:43
#: bookwyrm/templates/settings/site.html:77
msgid "Registration"
msgstr "Enregistrement"
@@ -1461,42 +1701,114 @@ msgid "Software"
msgstr "Logiciel"
#: bookwyrm/templates/settings/federation.html:12
+#: bookwyrm/templates/settings/manage_invite_requests.html:33
msgid "Status"
msgstr "Statut"
-#: bookwyrm/templates/settings/manage_invites.html:7
+#: bookwyrm/templates/settings/manage_invite_requests.html:4
+#: bookwyrm/templates/settings/manage_invite_requests.html:11
+#: bookwyrm/templates/settings/manage_invite_requests.html:25
+#: bookwyrm/templates/settings/manage_invites.html:11
+#, fuzzy
+#| msgid "Invites"
+msgid "Invite Requests"
+msgstr "Invitations"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:23
+msgid "Ignored Invite Requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:31
+msgid "Date"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:32
+msgid "Email"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:34
+#, fuzzy
+#| msgid "Notifications"
+msgid "Action"
+msgstr "Notifications"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:37
+#, fuzzy
+#| msgid "Follow Requests"
+msgid "No requests"
+msgstr "Demandes d’abonnement"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:45
+#, fuzzy
+#| msgid "Accept"
+msgid "Accepted"
+msgstr "Accepter"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:47
+msgid "Sent"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:49
+msgid "Requested"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:57
+msgid "Send invite"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:59
+msgid "Re-send invite"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:70
+msgid "Ignore"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:72
+msgid "Un-gnore"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:83
+msgid "Back to pending requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:85
+msgid "View ignored requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invites.html:21
msgid "Generate New Invite"
msgstr "Générer une nouvelle invitation"
-#: bookwyrm/templates/settings/manage_invites.html:13
+#: bookwyrm/templates/settings/manage_invites.html:27
msgid "Expiry:"
msgstr "Expiration :"
-#: bookwyrm/templates/settings/manage_invites.html:19
+#: bookwyrm/templates/settings/manage_invites.html:33
msgid "Use limit:"
msgstr "Limiter à :"
-#: bookwyrm/templates/settings/manage_invites.html:26
+#: bookwyrm/templates/settings/manage_invites.html:40
msgid "Create Invite"
msgstr "Créer une invitation"
-#: bookwyrm/templates/settings/manage_invites.html:33
+#: bookwyrm/templates/settings/manage_invites.html:47
msgid "Link"
msgstr "Lien"
-#: bookwyrm/templates/settings/manage_invites.html:34
+#: bookwyrm/templates/settings/manage_invites.html:48
msgid "Expires"
msgstr "Expiration"
-#: bookwyrm/templates/settings/manage_invites.html:35
+#: bookwyrm/templates/settings/manage_invites.html:49
msgid "Max uses"
msgstr "Nombre maximum d’utilisations"
-#: bookwyrm/templates/settings/manage_invites.html:36
+#: bookwyrm/templates/settings/manage_invites.html:50
msgid "Times used"
msgstr "Nombre de fois utilisée"
-#: bookwyrm/templates/settings/manage_invites.html:39
+#: bookwyrm/templates/settings/manage_invites.html:53
msgid "No active invites"
msgstr "Aucune invitation active"
@@ -1549,6 +1861,12 @@ msgid "Allow registration:"
msgstr "Autoriser l’enregistrement :"
#: bookwyrm/templates/settings/site.html:83
+#, fuzzy
+#| msgid "Follow Requests"
+msgid "Allow invite requests:"
+msgstr "Demandes d’abonnement"
+
+#: bookwyrm/templates/settings/site.html:87
msgid "Registration closed text:"
msgstr "Texte affiché lorsque les enregistrements sont clos :"
@@ -1593,29 +1911,68 @@ msgstr "Critique"
msgid "Quote"
msgstr "Citation"
-#: bookwyrm/templates/snippets/create_status_form.html:21
+#: bookwyrm/templates/snippets/create_status_form.html:18
+msgid "Comment:"
+msgstr "Commentaire :"
+
+#: bookwyrm/templates/snippets/create_status_form.html:20
+#, fuzzy
+#| msgid "Quote"
+msgid "Quote:"
+msgstr "Citation"
+
+#: bookwyrm/templates/snippets/create_status_form.html:22
+#, fuzzy
+#| msgid "Review"
+msgid "Review:"
+msgstr "Critique"
+
+#: bookwyrm/templates/snippets/create_status_form.html:29
#: bookwyrm/templates/snippets/shelf.html:17
msgid "Rating"
msgstr "Note"
-#: bookwyrm/templates/snippets/create_status_form.html:23
+#: bookwyrm/templates/snippets/create_status_form.html:31
#: bookwyrm/templates/snippets/rate_action.html:14
#: bookwyrm/templates/snippets/stars.html:3
msgid "No rating"
msgstr "Aucune note"
-#: bookwyrm/templates/snippets/create_status_form.html:54
+#: bookwyrm/templates/snippets/create_status_form.html:64
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:16
+msgid "Progress:"
+msgstr "Progression :"
+
+#: bookwyrm/templates/snippets/create_status_form.html:71
+#: bookwyrm/templates/snippets/readthrough_form.html:22
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30
+msgid "pages"
+msgstr "pages"
+
+#: bookwyrm/templates/snippets/create_status_form.html:72
+#: bookwyrm/templates/snippets/readthrough_form.html:23
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31
+msgid "percent"
+msgstr "pourcent"
+
+#: bookwyrm/templates/snippets/create_status_form.html:77
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:36
+#, python-format
+msgid "of %(pages)s pages"
+msgstr "sur %(pages)s pages"
+
+#: bookwyrm/templates/snippets/create_status_form.html:89
msgid "Include spoiler alert"
msgstr "Afficher une alerte spoiler"
-#: bookwyrm/templates/snippets/create_status_form.html:60
+#: bookwyrm/templates/snippets/create_status_form.html:95
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
#: bookwyrm/templates/snippets/privacy_select.html:19
msgid "Private"
msgstr "Privé"
-#: bookwyrm/templates/snippets/create_status_form.html:67
+#: bookwyrm/templates/snippets/create_status_form.html:102
msgid "Post"
msgstr "Publier"
@@ -1645,21 +2002,17 @@ msgstr "Ajouter le statut aux favoris"
msgid "Un-like status"
msgstr "Supprimer le statut des favoris"
-#: bookwyrm/templates/snippets/follow_button.html:13
-msgid "Send follow request"
-msgstr "Envoyer une demande d’abonnement"
-
-#: bookwyrm/templates/snippets/follow_button.html:15
+#: bookwyrm/templates/snippets/follow_button.html:12
msgid "Follow"
msgstr "S’abonner"
-#: bookwyrm/templates/snippets/follow_button.html:22
+#: bookwyrm/templates/snippets/follow_button.html:18
#, fuzzy
#| msgid "Send follow request"
msgid "Undo follow request"
msgstr "Envoyer une demande d’abonnement"
-#: bookwyrm/templates/snippets/follow_button.html:24
+#: bookwyrm/templates/snippets/follow_button.html:20
msgid "Unfollow"
msgstr "Se désabonner"
@@ -1677,14 +2030,22 @@ msgstr[1] "souhaite lire %(counter)s livres en %(year)s"
#: bookwyrm/templates/snippets/generated_status/rating.html:3
#, fuzzy, python-format
#| msgid "%(title)s by "
-msgid "Rated %(title)s: %(rating)s star"
-msgid_plural "Rated %(title)s: %(rating)s stars"
+msgid "Rated %(title)s: %(display_rating)s star"
+msgid_plural "Rated %(title)s: %(display_rating)s stars"
msgstr[0] "%(title)s par "
msgstr[1] "%(title)s par "
-#: bookwyrm/templates/snippets/goal_card.html:22
-msgid "Dismiss message"
-msgstr "Rejeter le message"
+#: 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] ""
+msgstr[1] ""
+
+#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8
+#, python-format
+msgid "Review of \"%(book_title)s\": %(review_title)s"
+msgstr ""
#: bookwyrm/templates/snippets/goal_card.html:23
#, python-format
@@ -1766,25 +2127,6 @@ msgstr "Confidentialité du statut"
msgid "Followers"
msgstr "Abonnements"
-#: bookwyrm/templates/snippets/progress_update.html:6
-msgid "Progress:"
-msgstr "Progression :"
-
-#: bookwyrm/templates/snippets/progress_update.html:16
-#: bookwyrm/templates/snippets/readthrough_form.html:22
-msgid "pages"
-msgstr "pages"
-
-#: bookwyrm/templates/snippets/progress_update.html:17
-#: bookwyrm/templates/snippets/readthrough_form.html:23
-msgid "percent"
-msgstr "pourcent"
-
-#: bookwyrm/templates/snippets/progress_update.html:25
-#, python-format
-msgid "of %(pages)s pages"
-msgstr "sur %(pages)s pages"
-
#: bookwyrm/templates/snippets/rate_action.html:4
msgid "Leave a rating"
msgstr "Laisser une note"
@@ -1929,6 +2271,13 @@ msgstr "Enlever de l’étagère"
msgid "Finish \"%(book_title)s\""
msgstr "Terminer « %(book_title)s »"
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:5
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:33
+#, fuzzy
+#| msgid "Updated:"
+msgid "Update progress"
+msgstr "Mises à jour"
+
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown.html:5
msgid "More shelves"
msgstr "Plus d’étagères"
@@ -2160,6 +2509,18 @@ msgstr[1] "%(username)s n’a pas d’abonné(e)s"
msgid "%(counter)s following"
msgstr "%(counter)s abonnements"
+#: bookwyrm/views/password.py:32
+msgid "No user with that email address was found."
+msgstr ""
+
+#: bookwyrm/views/password.py:41
+#, python-format
+msgid "A password reset link sent to %s"
+msgstr ""
+
+#~ msgid "Send follow request"
+#~ msgstr "Envoyer une demande d’abonnement"
+
#, fuzzy
#~| msgid "All messages"
#~ msgid "Messages"
@@ -2268,7 +2629,7 @@ msgstr "%(counter)s abonnements"
#~ msgid "September"
#~ msgstr "Numéro dans la série :"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "No books found matching the query \"%(query)s\""
#~ msgid "No %(verbose_name)s found matching the query"
#~ msgstr "Aucun livre trouvé pour la requête « %(query)s »"
@@ -2308,11 +2669,5 @@ msgstr "%(counter)s abonnements"
#~ msgid "Change password"
#~ msgstr "Changer le mot de passe"
-#~ msgid "Blocked users"
-#~ msgstr "Comptes bloqués"
-
-#~ msgid "Comment:"
-#~ msgstr "Commentaire :"
-
#~ msgid "%(year)s reading goal"
#~ msgstr "Défi lecture pour %(year)s"
diff --git a/locale/zh_CN/LC_MESSAGES/django.mo b/locale/zh_CN/LC_MESSAGES/django.mo
index 9f83e170d..62c4cd964 100644
Binary files a/locale/zh_CN/LC_MESSAGES/django.mo and b/locale/zh_CN/LC_MESSAGES/django.mo differ
diff --git a/locale/zh_CN/LC_MESSAGES/django.po b/locale/zh_CN/LC_MESSAGES/django.po
index aad277e0b..83f128e9a 100644
--- a/locale/zh_CN/LC_MESSAGES/django.po
+++ b/locale/zh_CN/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-03-19 11:41-0700\n"
+"POT-Creation-Date: 2021-03-28 22:42+0000\n"
"PO-Revision-Date: 2021-03-20 00:56+0000\n"
"Last-Translator: Kana \n"
"Language-Team: Mouse Reeve \n"
@@ -18,71 +18,76 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: bookwyrm/forms.py:203
+#: bookwyrm/forms.py:213
+#, fuzzy
+#| msgid "A user with that username already exists."
+msgid "A user with this email already exists."
+msgstr "已经存在使用该用户名的用户。"
+
+#: bookwyrm/forms.py:227
msgid "One Day"
msgstr "一天"
-#: bookwyrm/forms.py:204
+#: bookwyrm/forms.py:228
msgid "One Week"
msgstr "一周"
-#: bookwyrm/forms.py:205
+#: bookwyrm/forms.py:229
msgid "One Month"
msgstr "一个月"
-#: bookwyrm/forms.py:206
+#: bookwyrm/forms.py:230
msgid "Does Not Expire"
msgstr "永不失效"
-#: bookwyrm/forms.py:211
+#: bookwyrm/forms.py:235
#, python-format
msgid "%(count)d uses"
msgstr "%(count)d 次使用"
-#: bookwyrm/forms.py:214
+#: bookwyrm/forms.py:238
msgid "Unlimited"
msgstr "不受限"
-#: bookwyrm/models/fields.py:24
+#: bookwyrm/models/fields.py:25
#, python-format
msgid "%(value)s is not a valid remote_id"
msgstr "%(value)s 不是有效的 remote_id"
-#: bookwyrm/models/fields.py:33 bookwyrm/models/fields.py:42
+#: bookwyrm/models/fields.py:34 bookwyrm/models/fields.py:47
#, python-format
msgid "%(value)s is not a valid username"
msgstr "%(value)s 不是有效的用户名"
-#: bookwyrm/models/fields.py:165 bookwyrm/templates/layout.html:152
+#: bookwyrm/models/fields.py:170 bookwyrm/templates/layout.html:157
msgid "username"
msgstr "用户名"
-#: bookwyrm/models/fields.py:170
+#: bookwyrm/models/fields.py:175
msgid "A user with that username already exists."
msgstr "已经存在使用该用户名的用户。"
-#: bookwyrm/settings.py:142
+#: bookwyrm/settings.py:148
msgid "English"
msgstr "English(英语)"
-#: bookwyrm/settings.py:143
+#: bookwyrm/settings.py:149
msgid "German"
msgstr "Deutsch(德语)"
-#: bookwyrm/settings.py:144
+#: bookwyrm/settings.py:150
msgid "Spanish"
msgstr "Español(西班牙语)"
-#: bookwyrm/settings.py:145
+#: bookwyrm/settings.py:151
msgid "French"
msgstr "Français(法语)"
-#: bookwyrm/settings.py:146
+#: bookwyrm/settings.py:152
msgid "Simplified Chinese"
msgstr "简体中文"
#: bookwyrm/templates/author.html:16 bookwyrm/templates/author.html:17
-#: bookwyrm/templates/edit_author.html:5
msgid "Edit Author"
msgstr "编辑作者"
@@ -172,11 +177,11 @@ msgstr "描述:"
#: bookwyrm/templates/book/book.html:121
#: bookwyrm/templates/book/edit_book.html:225
#: bookwyrm/templates/edit_author.html:78 bookwyrm/templates/lists/form.html:42
-#: bookwyrm/templates/preferences/edit_user.html:56
-#: bookwyrm/templates/settings/site.html:89
-#: bookwyrm/templates/snippets/progress_update.html:21
+#: bookwyrm/templates/preferences/edit_user.html:68
+#: bookwyrm/templates/settings/site.html:93
#: bookwyrm/templates/snippets/readthrough.html:64
#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:42
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:42
#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:34
msgid "Save"
msgstr "保存"
@@ -190,6 +195,7 @@ msgstr "保存"
#: bookwyrm/templates/snippets/goal_form.html:32
#: bookwyrm/templates/snippets/readthrough.html:65
#: bookwyrm/templates/snippets/shelve_button/finish_reading_modal.html:43
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:43
#: bookwyrm/templates/snippets/shelve_button/start_reading_modal.html:35
#: bookwyrm/templates/snippets/shelve_button/want_to_read_modal.html:28
msgid "Cancel"
@@ -430,10 +436,118 @@ msgid "Openlibrary key:"
msgstr "Openlibrary key:"
#: bookwyrm/templates/components/inline_form.html:8
-#: bookwyrm/templates/feed/feed_layout.html:54
+#: bookwyrm/templates/feed/feed_layout.html:57
msgid "Close"
msgstr "关闭"
+#: bookwyrm/templates/directory.html:6 bookwyrm/templates/directory.html:11
+#: bookwyrm/templates/layout.html:97
+msgid "Directory"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:19
+msgid "Make your profile discoverable to other BookWyrm users."
+msgstr ""
+
+#: bookwyrm/templates/directory.html:26
+#, fuzzy, python-format
+#| msgid "You can set or change your reading goal any time from your profile page"
+msgid "You can opt-out at any time in your profile settings."
+msgstr "你可以在任何时候从你的个人资料页面 中设置或改变你的阅读目标"
+
+#: bookwyrm/templates/directory.html:31
+#: bookwyrm/templates/snippets/goal_card.html:22
+msgid "Dismiss message"
+msgstr "遣散消息"
+
+#: bookwyrm/templates/directory.html:44
+#, fuzzy
+#| msgid "Show less"
+msgid "Show filters"
+msgstr "显示更少"
+
+#: bookwyrm/templates/directory.html:46
+msgid "Hide filters"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:55
+#, fuzzy
+#| msgid "User Activity"
+msgid "User type"
+msgstr "用户活动"
+
+#: bookwyrm/templates/directory.html:58
+msgid "BookWyrm users"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:62
+msgid "All known users"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:68
+#, fuzzy
+#| msgid "Comment"
+msgid "Community"
+msgstr "评论"
+
+#: bookwyrm/templates/directory.html:71
+#, fuzzy
+#| msgid "Max uses"
+msgid "Local users"
+msgstr "最大使用次数"
+
+#: bookwyrm/templates/directory.html:75
+#, fuzzy
+#| msgid "Federated"
+msgid "Federated community"
+msgstr "跨站"
+
+#: bookwyrm/templates/directory.html:81
+msgid "Order by"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:84
+#, fuzzy
+#| msgid "Suggest"
+msgid "Suggested"
+msgstr "推荐"
+
+#: bookwyrm/templates/directory.html:85
+msgid "Recently active"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:91
+msgid "Apply filters"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:94
+#, fuzzy
+#| msgid "Clear search"
+msgid "Clear filters"
+msgstr "清除搜索"
+
+#: bookwyrm/templates/directory.html:128
+#, fuzzy
+#| msgid "followed you"
+msgid "follower you follow"
+msgid_plural "followers you follow"
+msgstr[0] "关注了你"
+
+#: bookwyrm/templates/directory.html:135
+#, fuzzy
+#| msgid "Your shelves"
+msgid "book on your shelves"
+msgid_plural "books on your shelves"
+msgstr[0] "你的书架"
+
+#: bookwyrm/templates/directory.html:143
+msgid "posts"
+msgstr ""
+
+#: bookwyrm/templates/directory.html:149
+msgid "last active"
+msgstr ""
+
#: bookwyrm/templates/discover/about.html:7
#, python-format
msgid "About %(site_name)s"
@@ -474,15 +588,41 @@ msgstr "反企业"
msgid "Join %(name)s"
msgstr "加入 %(name)s"
-#: bookwyrm/templates/discover/landing_layout.html:49
+#: bookwyrm/templates/discover/landing_layout.html:51
#: bookwyrm/templates/login.html:48
msgid "This instance is closed"
msgstr "本实例不开放。"
-#: bookwyrm/templates/discover/landing_layout.html:55
+#: bookwyrm/templates/discover/landing_layout.html:57
+msgid "Thank you! Your request has been received."
+msgstr ""
+
+#: bookwyrm/templates/discover/landing_layout.html:60
+msgid "Request an Invitation"
+msgstr ""
+
+#: bookwyrm/templates/discover/landing_layout.html:64
+#: bookwyrm/templates/password_reset_request.html:18
+#: bookwyrm/templates/preferences/edit_user.html:38
+#: bookwyrm/templates/snippets/register_form.html:13
+msgid "Email address:"
+msgstr "邮箱地址:"
+
+#: bookwyrm/templates/discover/landing_layout.html:70
+#: bookwyrm/templates/moderation/report_modal.html:31
+msgid "Submit"
+msgstr "提交"
+
+#: bookwyrm/templates/discover/landing_layout.html:79
msgid "Your Account"
msgstr "你的帐号"
+#: bookwyrm/templates/edit_author.html:5
+#, fuzzy
+#| msgid "Edit Author"
+msgid "Edit Author:"
+msgstr "编辑作者"
+
#: bookwyrm/templates/edit_author.html:32 bookwyrm/templates/lists/form.html:8
#: bookwyrm/templates/user/create_shelf_form.html:13
#: bookwyrm/templates/user/edit_shelf_form.html:14
@@ -527,6 +667,74 @@ msgstr "%(book_title)s 的各版本"
msgid "Editions of \"%(work_title)s\""
msgstr "\"%(work_title)s\" 的各版本"
+#: 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 ""
+
+#: 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
+#, fuzzy, python-format
+#| msgid "About %(site_name)s"
+msgid "You're invited to join %(site_name)s!"
+msgstr "关于 %(site_name)s"
+
+#: bookwyrm/templates/email/invite/html_content.html:9
+#, fuzzy
+#| msgid "Join"
+msgid "Join Now"
+msgstr "加入"
+
+#: bookwyrm/templates/email/invite/html_content.html:15
+#, python-format
+msgid "Learn more about this instance."
+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
+#, fuzzy
+#| msgid "More about this site"
+msgid "Learn more about this instance:"
+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/password_reset.html:4
+#: bookwyrm/templates/password_reset.html:10
+#: bookwyrm/templates/password_reset_request.html:4
+#: bookwyrm/templates/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
+#, fuzzy, python-format
+#| msgid "About %(site_name)s"
+msgid "Reset your %(site_name)s password"
+msgstr "关于 %(site_name)s"
+
#: bookwyrm/templates/error.html:4
msgid "Oops!"
msgstr "哎呀!"
@@ -557,27 +765,59 @@ msgstr "所有消息"
msgid "You have no messages right now."
msgstr "你现在没有消息。"
-#: bookwyrm/templates/feed/feed.html:6
-#, python-format
-msgid "%(tab_title)s Timeline"
+#: bookwyrm/templates/feed/feed.html:9
+msgid "Home Timeline"
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:11
+#, fuzzy
+#| msgid "%(tab_title)s Timeline"
+msgid "Local Timeline"
msgstr "%(tab_title)s 时间线"
-#: bookwyrm/templates/feed/feed.html:10 bookwyrm/views/feed.py:33
+#: bookwyrm/templates/feed/feed.html:13
+#, fuzzy
+#| msgid "Federated Servers"
+msgid "Federated Timeline"
+msgstr "互联的服务器"
+
+#: bookwyrm/templates/feed/feed.html:19
msgid "Home"
msgstr "主页"
-#: bookwyrm/templates/feed/feed.html:13 bookwyrm/views/feed.py:38
+#: bookwyrm/templates/feed/feed.html:22
msgid "Local"
msgstr "本站"
-#: bookwyrm/templates/feed/feed.html:16 bookwyrm/views/feed.py:43
+#: bookwyrm/templates/feed/feed.html:25
msgid "Federated"
msgstr "跨站"
-#: bookwyrm/templates/feed/feed.html:32
+#: bookwyrm/templates/feed/feed.html:33
+#, python-format
+msgid "load 0 unread status(es)"
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:48
msgid "There aren't any activities right now! Try following a user to get started"
msgstr "现在还没有任何活动!尝试着从关注一个用户开始吧"
+#: bookwyrm/templates/feed/feed.html:56
+msgid "Who to follow"
+msgstr ""
+
+#: bookwyrm/templates/feed/feed.html:69
+#, python-format
+msgid "%(mutuals)s follower you follow"
+msgid_plural "%(mutuals)s followers you follow"
+msgstr[0] ""
+
+#: bookwyrm/templates/feed/feed.html:72
+#, python-format
+msgid "%(shared_books)s book on your shelves"
+msgid_plural "%(shared_books)s books on your shelves"
+msgstr[0] ""
+
#: bookwyrm/templates/feed/feed_layout.html:5
msgid "Updates"
msgstr "更新"
@@ -606,7 +846,7 @@ msgstr "在读"
msgid "Read"
msgstr "读过"
-#: bookwyrm/templates/feed/feed_layout.html:76 bookwyrm/templates/goal.html:26
+#: bookwyrm/templates/feed/feed_layout.html:74 bookwyrm/templates/goal.html:26
#: bookwyrm/templates/snippets/goal_card.html:6
#, python-format
msgid "%(year)s Reading Goal"
@@ -798,67 +1038,69 @@ msgstr "动态"
msgid "Profile"
msgstr "个人资料"
-#: bookwyrm/templates/layout.html:97
+#: bookwyrm/templates/layout.html:107
msgid "Settings"
msgstr "设置"
-#: bookwyrm/templates/layout.html:111
-#: bookwyrm/templates/settings/admin_layout.html:19
+#: bookwyrm/templates/layout.html:116
+#: bookwyrm/templates/settings/admin_layout.html:20
+#: bookwyrm/templates/settings/manage_invite_requests.html:15
#: bookwyrm/templates/settings/manage_invites.html:3
+#: bookwyrm/templates/settings/manage_invites.html:15
msgid "Invites"
msgstr "邀请"
-#: bookwyrm/templates/layout.html:118
+#: bookwyrm/templates/layout.html:123
msgid "Admin"
msgstr "管理员"
-#: bookwyrm/templates/layout.html:125
+#: bookwyrm/templates/layout.html:130
msgid "Log out"
msgstr "登出"
-#: bookwyrm/templates/layout.html:133 bookwyrm/templates/layout.html:134
+#: bookwyrm/templates/layout.html:138 bookwyrm/templates/layout.html:139
#: bookwyrm/templates/notifications.html:6
#: bookwyrm/templates/notifications.html:10
msgid "Notifications"
msgstr "通知"
-#: bookwyrm/templates/layout.html:151 bookwyrm/templates/layout.html:155
+#: bookwyrm/templates/layout.html:156 bookwyrm/templates/layout.html:160
#: bookwyrm/templates/login.html:17
#: bookwyrm/templates/snippets/register_form.html:4
msgid "Username:"
msgstr "用户名:"
-#: bookwyrm/templates/layout.html:156
+#: bookwyrm/templates/layout.html:161
msgid "password"
msgstr "密码"
-#: bookwyrm/templates/layout.html:157 bookwyrm/templates/login.html:36
+#: bookwyrm/templates/layout.html:162 bookwyrm/templates/login.html:36
msgid "Forgot your password?"
msgstr "忘记了密码?"
-#: bookwyrm/templates/layout.html:160 bookwyrm/templates/login.html:10
+#: bookwyrm/templates/layout.html:165 bookwyrm/templates/login.html:10
#: bookwyrm/templates/login.html:33
msgid "Log in"
msgstr "登录"
-#: bookwyrm/templates/layout.html:168
+#: bookwyrm/templates/layout.html:173
msgid "Join"
msgstr "加入"
-#: bookwyrm/templates/layout.html:191
+#: bookwyrm/templates/layout.html:196
msgid "About this server"
msgstr "关于本服务器"
-#: bookwyrm/templates/layout.html:195
+#: bookwyrm/templates/layout.html:200
msgid "Contact site admin"
msgstr "联系站点管理员"
-#: bookwyrm/templates/layout.html:202
+#: bookwyrm/templates/layout.html:207
#, python-format
msgid "Support %(site_name)s on %(support_title)s"
msgstr "在 %(support_title)s 上支持 %(site_name)s"
-#: bookwyrm/templates/layout.html:206
+#: bookwyrm/templates/layout.html:211
msgid "BookWyrm is open source software. You can contribute or report issues on GitHub."
msgstr "BookWyrm 是开源软件。你可以在 GitHub 贡献或报告问题。"
@@ -1050,7 +1292,7 @@ msgstr "监察员评论"
#: bookwyrm/templates/moderation/report.html:54
#: bookwyrm/templates/snippets/create_status.html:12
-#: bookwyrm/templates/snippets/create_status_form.html:44
+#: bookwyrm/templates/snippets/create_status_form.html:52
msgid "Comment"
msgstr "评论"
@@ -1080,10 +1322,6 @@ msgstr "本报告会被发送至 %(site_name)s 的监察员以复查。"
msgid "More info about this report:"
msgstr "关于本报告的更多信息"
-#: bookwyrm/templates/moderation/report_modal.html:31
-msgid "Submit"
-msgstr "提交"
-
#: bookwyrm/templates/moderation/report_preview.html:13
msgid "No notes provided"
msgstr "没有提供摘记"
@@ -1103,7 +1341,7 @@ msgstr "已解决"
#: bookwyrm/templates/moderation/reports.html:4
#: bookwyrm/templates/moderation/reports.html:5
-#: bookwyrm/templates/settings/admin_layout.html:23
+#: bookwyrm/templates/settings/admin_layout.html:24
msgid "Reports"
msgstr "报告"
@@ -1235,29 +1473,16 @@ msgstr "有新的 报告 需要仲裁。"
msgid "You're all caught up!"
msgstr "你什么也没错过!"
-#: bookwyrm/templates/password_reset.html:4
-#: bookwyrm/templates/password_reset.html:10
-#: bookwyrm/templates/password_reset_request.html:4
-#: bookwyrm/templates/password_reset_request.html:10
-msgid "Reset Password"
-msgstr "重设密码"
-
#: bookwyrm/templates/password_reset.html:23
#: bookwyrm/templates/preferences/change_password.html:18
msgid "Confirm password:"
msgstr "确认密码:"
-#: bookwyrm/templates/password_reset_request.html:12
+#: bookwyrm/templates/password_reset_request.html:14
msgid "A link to reset your password will be sent to your email address"
msgstr "重设你的密码的链接将会被发送到你的邮箱地址"
-#: bookwyrm/templates/password_reset_request.html:16
-#: bookwyrm/templates/preferences/edit_user.html:38
-#: bookwyrm/templates/snippets/register_form.html:13
-msgid "Email address:"
-msgstr "邮箱地址:"
-
-#: bookwyrm/templates/password_reset_request.html:23
+#: bookwyrm/templates/password_reset_request.html:28
msgid "Reset password"
msgstr "重设密码"
@@ -1307,6 +1532,19 @@ msgstr "在消息流中显示设置阅读目标的提示:"
msgid "Manually approve followers:"
msgstr "手动批准关注者:"
+#: bookwyrm/templates/preferences/edit_user.html:58
+msgid "Show this account in suggested users:"
+msgstr ""
+
+#: bookwyrm/templates/preferences/edit_user.html:62
+#, 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:65
+msgid "Preferred Timezone: "
+msgstr ""
+
#: bookwyrm/templates/preferences/preferences_layout.html:11
msgid "Account"
msgstr "帐号"
@@ -1349,37 +1587,37 @@ msgstr "管理"
msgid "Manage Users"
msgstr "管理用户"
-#: bookwyrm/templates/settings/admin_layout.html:27
+#: bookwyrm/templates/settings/admin_layout.html:28
#: bookwyrm/templates/settings/federation.html:4
msgid "Federated Servers"
msgstr "互联的服务器"
-#: bookwyrm/templates/settings/admin_layout.html:32
+#: bookwyrm/templates/settings/admin_layout.html:33
msgid "Instance Settings"
msgstr "实例设置"
-#: bookwyrm/templates/settings/admin_layout.html:36
+#: bookwyrm/templates/settings/admin_layout.html:37
#: bookwyrm/templates/settings/site.html:4
#: bookwyrm/templates/settings/site.html:6
msgid "Site Settings"
msgstr "站点设置"
-#: bookwyrm/templates/settings/admin_layout.html:39
+#: bookwyrm/templates/settings/admin_layout.html:40
#: bookwyrm/templates/settings/site.html:13
msgid "Instance Info"
msgstr "实例信息"
-#: bookwyrm/templates/settings/admin_layout.html:40
+#: bookwyrm/templates/settings/admin_layout.html:41
#: bookwyrm/templates/settings/site.html:39
msgid "Images"
msgstr "图像"
-#: bookwyrm/templates/settings/admin_layout.html:41
+#: bookwyrm/templates/settings/admin_layout.html:42
#: bookwyrm/templates/settings/site.html:59
msgid "Footer Content"
msgstr "页脚内容"
-#: bookwyrm/templates/settings/admin_layout.html:42
+#: bookwyrm/templates/settings/admin_layout.html:43
#: bookwyrm/templates/settings/site.html:77
msgid "Registration"
msgstr "注册"
@@ -1393,42 +1631,116 @@ msgid "Software"
msgstr "软件"
#: bookwyrm/templates/settings/federation.html:12
+#: bookwyrm/templates/settings/manage_invite_requests.html:33
msgid "Status"
msgstr "状态"
-#: bookwyrm/templates/settings/manage_invites.html:7
+#: bookwyrm/templates/settings/manage_invite_requests.html:4
+#: bookwyrm/templates/settings/manage_invite_requests.html:11
+#: bookwyrm/templates/settings/manage_invite_requests.html:25
+#: bookwyrm/templates/settings/manage_invites.html:11
+#, fuzzy
+#| msgid "Invites"
+msgid "Invite Requests"
+msgstr "邀请"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:23
+msgid "Ignored Invite Requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:31
+msgid "Date"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:32
+msgid "Email"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:34
+#, fuzzy
+#| msgid "Actions"
+msgid "Action"
+msgstr "动作"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:37
+#, fuzzy
+#| msgid "Follow Requests"
+msgid "No requests"
+msgstr "关注请求"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:45
+#, fuzzy
+#| msgid "Accept"
+msgid "Accepted"
+msgstr "接受"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:47
+msgid "Sent"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:49
+msgid "Requested"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:57
+msgid "Send invite"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:59
+msgid "Re-send invite"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:70
+msgid "Ignore"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:72
+msgid "Un-gnore"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:83
+#, fuzzy
+#| msgid "Back to reports"
+msgid "Back to pending requests"
+msgstr "回到报告"
+
+#: bookwyrm/templates/settings/manage_invite_requests.html:85
+msgid "View ignored requests"
+msgstr ""
+
+#: bookwyrm/templates/settings/manage_invites.html:21
msgid "Generate New Invite"
msgstr "生成新的邀请"
-#: bookwyrm/templates/settings/manage_invites.html:13
+#: bookwyrm/templates/settings/manage_invites.html:27
msgid "Expiry:"
msgstr "过期:"
-#: bookwyrm/templates/settings/manage_invites.html:19
+#: bookwyrm/templates/settings/manage_invites.html:33
msgid "Use limit:"
msgstr "使用限制:"
-#: bookwyrm/templates/settings/manage_invites.html:26
+#: bookwyrm/templates/settings/manage_invites.html:40
msgid "Create Invite"
msgstr "创建邀请"
-#: bookwyrm/templates/settings/manage_invites.html:33
+#: bookwyrm/templates/settings/manage_invites.html:47
msgid "Link"
msgstr "链接"
-#: bookwyrm/templates/settings/manage_invites.html:34
+#: bookwyrm/templates/settings/manage_invites.html:48
msgid "Expires"
msgstr "过期"
-#: bookwyrm/templates/settings/manage_invites.html:35
+#: bookwyrm/templates/settings/manage_invites.html:49
msgid "Max uses"
msgstr "最大使用次数"
-#: bookwyrm/templates/settings/manage_invites.html:36
+#: bookwyrm/templates/settings/manage_invites.html:50
msgid "Times used"
msgstr "已使用次数"
-#: bookwyrm/templates/settings/manage_invites.html:39
+#: bookwyrm/templates/settings/manage_invites.html:53
msgid "No active invites"
msgstr "无有效的邀请"
@@ -1481,6 +1793,12 @@ msgid "Allow registration:"
msgstr "允许注册:"
#: bookwyrm/templates/settings/site.html:83
+#, fuzzy
+#| msgid "Follow Requests"
+msgid "Allow invite requests:"
+msgstr "关注请求"
+
+#: bookwyrm/templates/settings/site.html:87
msgid "Registration closed text:"
msgstr "注册关闭文字:"
@@ -1525,29 +1843,70 @@ msgstr "书评"
msgid "Quote"
msgstr "引用"
-#: bookwyrm/templates/snippets/create_status_form.html:21
+#: bookwyrm/templates/snippets/create_status_form.html:18
+#, fuzzy
+#| msgid "Comment"
+msgid "Comment:"
+msgstr "评论"
+
+#: bookwyrm/templates/snippets/create_status_form.html:20
+#, fuzzy
+#| msgid "Quote"
+msgid "Quote:"
+msgstr "引用"
+
+#: bookwyrm/templates/snippets/create_status_form.html:22
+#, fuzzy
+#| msgid "Review"
+msgid "Review:"
+msgstr "书评"
+
+#: bookwyrm/templates/snippets/create_status_form.html:29
#: bookwyrm/templates/snippets/shelf.html:17
msgid "Rating"
msgstr "评价"
-#: bookwyrm/templates/snippets/create_status_form.html:23
+#: bookwyrm/templates/snippets/create_status_form.html:31
#: bookwyrm/templates/snippets/rate_action.html:14
#: bookwyrm/templates/snippets/stars.html:3
msgid "No rating"
msgstr "没有评价"
-#: bookwyrm/templates/snippets/create_status_form.html:54
+#: bookwyrm/templates/snippets/create_status_form.html:64
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:16
+msgid "Progress:"
+msgstr "进度:"
+
+#: bookwyrm/templates/snippets/create_status_form.html:71
+#: bookwyrm/templates/snippets/readthrough_form.html:22
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:30
+msgid "pages"
+msgstr "页数"
+
+#: bookwyrm/templates/snippets/create_status_form.html:72
+#: bookwyrm/templates/snippets/readthrough_form.html:23
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:31
+msgid "percent"
+msgstr "百分比"
+
+#: bookwyrm/templates/snippets/create_status_form.html:77
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:36
+#, python-format
+msgid "of %(pages)s pages"
+msgstr "全书 %(pages)s 页"
+
+#: bookwyrm/templates/snippets/create_status_form.html:89
msgid "Include spoiler alert"
msgstr "加入剧透警告"
-#: bookwyrm/templates/snippets/create_status_form.html:60
+#: bookwyrm/templates/snippets/create_status_form.html:95
#: bookwyrm/templates/snippets/privacy-icons.html:15
#: bookwyrm/templates/snippets/privacy-icons.html:16
#: bookwyrm/templates/snippets/privacy_select.html:19
msgid "Private"
msgstr "私密"
-#: bookwyrm/templates/snippets/create_status_form.html:67
+#: bookwyrm/templates/snippets/create_status_form.html:102
msgid "Post"
msgstr "发布"
@@ -1577,19 +1936,15 @@ msgstr "喜欢状态"
msgid "Un-like status"
msgstr "取消喜欢状态"
-#: bookwyrm/templates/snippets/follow_button.html:13
-msgid "Send follow request"
-msgstr "发送关注请求"
-
-#: bookwyrm/templates/snippets/follow_button.html:15
+#: bookwyrm/templates/snippets/follow_button.html:12
msgid "Follow"
msgstr "关注"
-#: bookwyrm/templates/snippets/follow_button.html:22
+#: bookwyrm/templates/snippets/follow_button.html:18
msgid "Undo follow request"
msgstr "撤回关注请求"
-#: bookwyrm/templates/snippets/follow_button.html:24
+#: bookwyrm/templates/snippets/follow_button.html:20
msgid "Unfollow"
msgstr "取消关注"
@@ -1604,14 +1959,23 @@ msgid_plural "set a goal to read %(counter)s books in %(year)s"
msgstr[0] "设定了在 %(year)s 内要读 %(counter)s 本书的目标"
#: bookwyrm/templates/snippets/generated_status/rating.html:3
-#, python-format
-msgid "Rated %(title)s: %(rating)s star"
-msgid_plural "Rated %(title)s: %(rating)s stars"
+#, fuzzy, python-format
+#| msgid "Rated %(title)s: %(rating)s star"
+#| msgid_plural "Rated %(title)s: %(rating)s stars"
+msgid "Rated %(title)s: %(display_rating)s star"
+msgid_plural "Rated %(title)s: %(display_rating)s stars"
msgstr[0] "为 %(title)s 打了分: %(rating)s 星"
-#: bookwyrm/templates/snippets/goal_card.html:22
-msgid "Dismiss message"
-msgstr "遣散消息"
+#: 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:8
+#, python-format
+msgid "Review of \"%(book_title)s\": %(review_title)s"
+msgstr ""
#: bookwyrm/templates/snippets/goal_card.html:23
#, python-format
@@ -1693,25 +2057,6 @@ msgstr "发文隐私"
msgid "Followers"
msgstr "关注者"
-#: bookwyrm/templates/snippets/progress_update.html:6
-msgid "Progress:"
-msgstr "进度:"
-
-#: bookwyrm/templates/snippets/progress_update.html:16
-#: bookwyrm/templates/snippets/readthrough_form.html:22
-msgid "pages"
-msgstr "页数"
-
-#: bookwyrm/templates/snippets/progress_update.html:17
-#: bookwyrm/templates/snippets/readthrough_form.html:23
-msgid "percent"
-msgstr "百分比"
-
-#: bookwyrm/templates/snippets/progress_update.html:25
-#, python-format
-msgid "of %(pages)s pages"
-msgstr "全书 %(pages)s 页"
-
#: bookwyrm/templates/snippets/rate_action.html:4
msgid "Leave a rating"
msgstr "留下评价"
@@ -1850,6 +2195,13 @@ msgstr "取下书架"
msgid "Finish \"%(book_title)s\""
msgstr "完成 \"%(book_title)s\""
+#: bookwyrm/templates/snippets/shelve_button/progress_update_modal.html:5
+#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:33
+#, fuzzy
+#| msgid "Updates"
+msgid "Update progress"
+msgstr "更新"
+
#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown.html:5
msgid "More shelves"
msgstr "更多书架"
@@ -2070,6 +2422,20 @@ msgstr[0] "%(counter)s 个关注者"
msgid "%(counter)s following"
msgstr "关注着 %(counter)s 人"
+#: bookwyrm/views/password.py:32
+#, fuzzy
+#| msgid "A user with that username already exists."
+msgid "No user with that email address was found."
+msgstr "已经存在使用该用户名的用户。"
+
+#: bookwyrm/views/password.py:41
+#, python-format
+msgid "A password reset link sent to %s"
+msgstr ""
+
+#~ msgid "Send follow request"
+#~ msgstr "发送关注请求"
+
#, fuzzy
#~| msgid "All messages"
#~ msgid "Messages"
@@ -2178,7 +2544,7 @@ msgstr "关注着 %(counter)s 人"
#~ msgid "September"
#~ msgstr "系列编号:"
-#, fuzzy, python-format
+#, fuzzy
#~| msgid "No books found matching the query \"%(query)s\""
#~ msgid "No %(verbose_name)s found matching the query"
#~ msgstr "没有符合 \"%(query)s\" 请求的书目"
diff --git a/requirements.txt b/requirements.txt
index c655416d0..896db1578 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -13,3 +13,4 @@ redis==3.4.1
requests==2.22.0
responses==0.10.14
django-rename-app==0.1.2
+pytz>=2021.1