diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index aed11ae356f8f25e1b616182fbd2eaf6c4fd6a5b..3faa878aab104e4c6980795c8cf4d79f6a69001b 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -9,10 +9,44 @@ and this project adheres to `Semantic Versioning`_.
 Unreleased
 ----------
 
+Changed
+~~~~~~~
+
+* Make External Link Widget icons clickable
+
+Fixed
+~~~~~
+
+* The progress page for background tasks didn't show all status messages.
+
+`2.10`_ - 2022-06-25
+--------------------
+
 Added
 ~~~~~
 
 * Add Ukrainian locale (contributed by Sergiy Gorichenko from Fre(i)e Software GmbH).
+* Add third gender to gender choices
+* Add DataCheck to validate specific fields of specific models
+
+Changed
+~~~~~~~
+
+* Restructure group page and show more information about members.
+* django-two-factor-auth >= 1.14.0 is now required due to a
+  backwards-incompatible breakage in that library
+
+Fixed
+~~~~~~~
+
+* Password change view did not redirect to login when accessed unauthenticated.
+* Sorting icons were inlined into stylesheet
+* iOS devices used the favicon instead of the PWA icon when the PWA was added to the home screen.
+
+Changed
+~~~~~~~
+
+* Update icon choices for models to new icon set
 
 `2.9`_ - 2022-05-25
 -------------------
@@ -29,18 +63,25 @@ Fixed
 * The menu button used to be displayed twice on smaller screens.
 * The icons were loaded from external servers instead from local server.
 * Weekdays were not translated if system locales were missing
-  
+
   * Added locales-all to base image and note to docs
 
 * The icons in the account menu were still the old ones.
 * Due to a merge error, the once removed account menu in the sidenav appeared again.
 * Scheduled notifications were shown on dashboard before time.
 * Remove broken notifications menu item in favor of item next to account menu.
-* [OAuth2] Resources which are protected with client credentials 
-  allowed access if no scopes were allowed.
+* [OAuth2] Resources which are protected with client credentials
+  allowed access if no scopes were allowed (CVE-2022-29773).
 * The site logo could overlap with the menu for logos with an unexpected aspect ratio.
 * Some OAuth2 views stopped working with long scope names.
 * Resetting password was impossible due to a missing rule
+* Language selection was broken when only one language was enabled in
+  preferences.
+
+Removed
+~~~~~~~
+
+* Remove option to limit available languages in preferences.
 
 Changed
 ~~~~~~~
@@ -83,6 +124,7 @@ Changed
 Fixed
 ~~~~~
 
+* The user handbook was lacking images and instructions on PWA usage with the Safari browser.
 * The ``reset password`` button on the login site used to overflow the card on smaller devices.
 
 Deprecated
@@ -837,3 +879,4 @@ Fixed
 .. _2.8: https://edugit.org/AlekSIS/Official/AlekSIS/-/tags/2.8
 .. _2.8.1: https://edugit.org/AlekSIS/Official/AlekSIS/-/tags/2.8.1
 .. _2.9: https://edugit.org/AlekSIS/Official/AlekSIS/-/tags/2.9
+.. _2.10: https://edugit.org/AlekSIS/Official/AlekSIS/-/tags/2.10
diff --git a/aleksis/core/data_checks.py b/aleksis/core/data_checks.py
index d82c30d5ddf0b5ab11e7b1b5f8c2a595838c07e1..47194ece7a30b3bdf6a4fa6fc9624fd9851d2be9 100644
--- a/aleksis/core/data_checks.py
+++ b/aleksis/core/data_checks.py
@@ -3,8 +3,11 @@ from datetime import timedelta
 
 from django.apps import apps
 from django.contrib.contenttypes.models import ContentType
+from django.core.exceptions import ValidationError
+from django.db.models import Model
 from django.db.models.aggregates import Count
 from django.utils.functional import classproperty
+from django.utils.text import slugify
 from django.utils.translation import gettext as _
 
 import reversion
@@ -316,3 +319,31 @@ class BrokenDashboardWidgetDataCheck(DataCheck):
         for widget in broken_widgets:
             logging.info("Check DashboardWidget %s", widget)
             cls.register_result(widget)
+
+
+def field_validation_data_check_factory(app_name: str, model_name: str, field_name: str) -> type:
+    from django.apps import apps
+
+    class FieldValidationDataCheck(DataCheck):
+        name = f"field_validation_{slugify(model_name)}_{slugify(field_name)}"
+        verbose_name = _(
+            "Validate field %s of model %s." % (field_name, app_name + "." + model_name)
+        )
+        problem_name = _("The field %s couldn't be validated successfully." % field_name)
+        solve_options = {
+            IgnoreSolveOption.name: IgnoreSolveOption,
+        }
+
+        @classmethod
+        def check_data(cls):
+            model: Model = apps.get_model(app_name, model_name)
+            for obj in model.objects.all():
+                try:
+                    model._meta.get_field(field_name).validate(getattr(obj, field_name), obj)
+                except ValidationError as e:
+                    logging.info(f"Check {model_name} {obj}")
+                    cls.register_result(obj)
+
+    FieldValidationDataCheck.__name__ = model_name + "FieldValidationDataCheck"
+
+    return FieldValidationDataCheck
diff --git a/aleksis/core/locale/ar/LC_MESSAGES/django.po b/aleksis/core/locale/ar/LC_MESSAGES/django.po
index 71b3e82d26258ad34f53d00d6a1b18b6af3a8d24..df6153f7196d2535a19143cb11bfa43a0f831953 100644
--- a/aleksis/core/locale/ar/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/ar/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: AlekSIS (School Information System) 0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -39,33 +39,43 @@ msgid "Home and mobile phone"
 msgstr ""
 
 #: aleksis/core/apps.py:171 aleksis/core/forms.py:220 aleksis/core/menus.py:171
-#: aleksis/core/models.py:489 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/models.py:494 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:246
 msgid "Groups"
 msgstr ""
 
-#: aleksis/core/data_checks.py:56
+#: aleksis/core/data_checks.py:59
 msgid "Ignore problem"
 msgstr ""
 
-#: aleksis/core/data_checks.py:185
+#: aleksis/core/data_checks.py:188
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/data_checks.py:291
+#: aleksis/core/data_checks.py:294
 msgid "Deactivate DashboardWidget"
 msgstr ""
 
-#: aleksis/core/data_checks.py:303
+#: aleksis/core/data_checks.py:306
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr ""
 
-#: aleksis/core/data_checks.py:304
+#: aleksis/core/data_checks.py:307
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
+#: aleksis/core/data_checks.py:330
+#, python-format
+msgid "Validate field %s of model %s."
+msgstr ""
+
+#: aleksis/core/data_checks.py:332
+#, python-format
+msgid "The field %s couldn't be validated successfully."
+msgstr ""
+
 #: aleksis/core/feeds.py:52
 msgid "Birthday Calendar"
 msgstr ""
@@ -109,11 +119,11 @@ msgstr ""
 msgid "Content type"
 msgstr ""
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:715
+#: aleksis/core/filters.py:113 aleksis/core/models.py:720
 msgid "User"
 msgstr ""
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:488
+#: aleksis/core/filters.py:135 aleksis/core/models.py:493
 msgid "Group"
 msgstr ""
 
@@ -121,7 +131,7 @@ msgstr ""
 msgid "Base data"
 msgstr ""
 
-#: aleksis/core/forms.py:55
+#: aleksis/core/forms.py:55 aleksis/core/tables.py:47
 msgid "Address"
 msgstr ""
 
@@ -149,7 +159,7 @@ msgstr ""
 msgid "This username is already in use."
 msgstr ""
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:136
+#: aleksis/core/forms.py:153 aleksis/core/models.py:141
 msgid "School term"
 msgstr ""
 
@@ -158,7 +168,7 @@ msgid "Common data"
 msgstr ""
 
 #: aleksis/core/forms.py:155 aleksis/core/forms.py:207
-#: aleksis/core/menus.py:160 aleksis/core/models.py:159
+#: aleksis/core/menus.py:160 aleksis/core/models.py:164
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
@@ -168,18 +178,18 @@ msgstr ""
 msgid "Additional data"
 msgstr ""
 
-#: aleksis/core/forms.py:157 aleksis/core/models.py:212
-#: aleksis/core/models.py:541
+#: aleksis/core/forms.py:157 aleksis/core/models.py:217
+#: aleksis/core/models.py:546 aleksis/core/tables.py:46
 msgid "Photo"
 msgstr ""
 
 #: aleksis/core/forms.py:199 aleksis/core/forms.py:202
-#: aleksis/core/models.py:79
+#: aleksis/core/models.py:84
 msgid "Date"
 msgstr ""
 
 #: aleksis/core/forms.py:200 aleksis/core/forms.py:203
-#: aleksis/core/models.py:87
+#: aleksis/core/models.py:92
 msgid "Time"
 msgstr ""
 
@@ -215,11 +225,11 @@ msgstr ""
 msgid "Please enter your invitation code."
 msgstr ""
 
-#: aleksis/core/forms.py:418 aleksis/core/models.py:187
+#: aleksis/core/forms.py:418 aleksis/core/models.py:192
 msgid "First name"
 msgstr ""
 
-#: aleksis/core/forms.py:419 aleksis/core/models.py:188
+#: aleksis/core/forms.py:419 aleksis/core/models.py:193
 msgid "Last name"
 msgstr ""
 
@@ -322,13 +332,13 @@ msgstr ""
 msgid "Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:47 aleksis/core/models.py:867
+#: aleksis/core/menus.py:47 aleksis/core/models.py:872
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr ""
 
-#: aleksis/core/menus.py:58 aleksis/core/models.py:137
+#: aleksis/core/menus.py:58 aleksis/core/models.py:142
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
@@ -380,7 +390,7 @@ msgstr ""
 msgid "People"
 msgstr ""
 
-#: aleksis/core/menus.py:182 aleksis/core/models.py:1101
+#: aleksis/core/menus.py:182 aleksis/core/models.py:1111
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
@@ -390,7 +400,7 @@ msgstr ""
 msgid "Groups and child groups"
 msgstr ""
 
-#: aleksis/core/menus.py:204 aleksis/core/models.py:537
+#: aleksis/core/menus.py:204 aleksis/core/models.py:542
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 msgid "Additional fields"
@@ -457,581 +467,585 @@ msgstr ""
 msgid "Linked school term"
 msgstr ""
 
-#: aleksis/core/models.py:77
+#: aleksis/core/models.py:82
 msgid "Boolean (Yes/No)"
 msgstr ""
 
-#: aleksis/core/models.py:78
+#: aleksis/core/models.py:83
 msgid "Text (one line)"
 msgstr ""
 
-#: aleksis/core/models.py:80
+#: aleksis/core/models.py:85
 msgid "Date and time"
 msgstr ""
 
-#: aleksis/core/models.py:81
+#: aleksis/core/models.py:86
 msgid "Decimal number"
 msgstr ""
 
-#: aleksis/core/models.py:82 aleksis/core/models.py:205
+#: aleksis/core/models.py:87 aleksis/core/models.py:210
 msgid "E-mail address"
 msgstr ""
 
-#: aleksis/core/models.py:83
+#: aleksis/core/models.py:88
 msgid "Integer"
 msgstr ""
 
-#: aleksis/core/models.py:84
+#: aleksis/core/models.py:89
 msgid "IP address"
 msgstr ""
 
-#: aleksis/core/models.py:85
+#: aleksis/core/models.py:90
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr ""
 
-#: aleksis/core/models.py:86
+#: aleksis/core/models.py:91
 msgid "Text (multi-line)"
 msgstr ""
 
-#: aleksis/core/models.py:88
+#: aleksis/core/models.py:93
 msgid "URL / Link"
 msgstr ""
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:1070
-#: aleksis/core/models.py:1374
+#: aleksis/core/models.py:105 aleksis/core/models.py:1077
+#: aleksis/core/models.py:1384
 msgid "Name"
 msgstr ""
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:107
 msgid "Start date"
 msgstr ""
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:108
 msgid "End date"
 msgstr ""
 
-#: aleksis/core/models.py:122
+#: aleksis/core/models.py:127
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: aleksis/core/models.py:129
+#: aleksis/core/models.py:134
 msgid "There is already a school term for this time or a part of this time."
 msgstr ""
 
-#: aleksis/core/models.py:158 aleksis/core/models.py:1019
-#: aleksis/core/models.py:1371
+#: aleksis/core/models.py:163 aleksis/core/models.py:1024
+#: aleksis/core/models.py:1381
 msgid "Person"
 msgstr ""
 
-#: aleksis/core/models.py:161
+#: aleksis/core/models.py:166
 msgid "Can view address"
 msgstr ""
 
-#: aleksis/core/models.py:162
+#: aleksis/core/models.py:167
 msgid "Can view contact details"
 msgstr ""
 
-#: aleksis/core/models.py:163
+#: aleksis/core/models.py:168
 msgid "Can view photo"
 msgstr ""
 
-#: aleksis/core/models.py:164
+#: aleksis/core/models.py:169
 msgid "Can view avatar image"
 msgstr ""
 
-#: aleksis/core/models.py:165
+#: aleksis/core/models.py:170
 msgid "Can view persons groups"
 msgstr ""
 
-#: aleksis/core/models.py:166
+#: aleksis/core/models.py:171
 msgid "Can view personal details"
 msgstr ""
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "female"
 msgstr ""
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "male"
 msgstr ""
 
-#: aleksis/core/models.py:184 aleksis/core/models.py:1273
+#: aleksis/core/models.py:181
+msgid "other"
+msgstr ""
+
+#: aleksis/core/models.py:189 aleksis/core/models.py:1283
 msgid "Linked user"
 msgstr ""
 
-#: aleksis/core/models.py:190
+#: aleksis/core/models.py:195
 msgid "Additional name(s)"
 msgstr ""
 
-#: aleksis/core/models.py:194 aleksis/core/models.py:506
+#: aleksis/core/models.py:199 aleksis/core/models.py:511
 msgid "Short name"
 msgstr ""
 
-#: aleksis/core/models.py:197
+#: aleksis/core/models.py:202
 msgid "Street"
 msgstr ""
 
-#: aleksis/core/models.py:198
+#: aleksis/core/models.py:203
 msgid "Street number"
 msgstr ""
 
-#: aleksis/core/models.py:199
+#: aleksis/core/models.py:204
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/core/models.py:200
+#: aleksis/core/models.py:205
 msgid "Place"
 msgstr ""
 
-#: aleksis/core/models.py:202 aleksis/core/templates/core/person/full.html:160
+#: aleksis/core/models.py:207 aleksis/core/templates/core/person/full.html:160
 msgid "Home phone"
 msgstr ""
 
-#: aleksis/core/models.py:203 aleksis/core/templates/core/person/full.html:170
+#: aleksis/core/models.py:208 aleksis/core/templates/core/person/full.html:170
 msgid "Mobile phone"
 msgstr ""
 
-#: aleksis/core/models.py:207
+#: aleksis/core/models.py:212
 msgid "Date of birth"
 msgstr ""
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:213
 msgid "Place of birth"
 msgstr ""
 
-#: aleksis/core/models.py:209
+#: aleksis/core/models.py:214
 msgid "Sex"
 msgstr ""
 
-#: aleksis/core/models.py:216 aleksis/core/models.py:545
+#: aleksis/core/models.py:221 aleksis/core/models.py:550
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr ""
 
-#: aleksis/core/models.py:221 aleksis/core/models.py:549
+#: aleksis/core/models.py:226 aleksis/core/models.py:554
 msgid "Display picture / Avatar"
 msgstr ""
 
-#: aleksis/core/models.py:224 aleksis/core/models.py:552
+#: aleksis/core/models.py:229 aleksis/core/models.py:557
 msgid "This is a picture or an avatar for public display."
 msgstr ""
 
-#: aleksis/core/models.py:229 aleksis/core/templates/core/person/full.html:235
+#: aleksis/core/models.py:234 aleksis/core/templates/core/person/full.html:235
 msgid "Guardians / Parents"
 msgstr ""
 
-#: aleksis/core/models.py:236
+#: aleksis/core/models.py:241
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:719
-#: aleksis/core/models.py:743 aleksis/core/models.py:834
-#: aleksis/core/models.py:1094
+#: aleksis/core/models.py:244 aleksis/core/models.py:724
+#: aleksis/core/models.py:748 aleksis/core/models.py:839
+#: aleksis/core/models.py:1104
 msgid "Description"
 msgstr ""
 
-#: aleksis/core/models.py:459
+#: aleksis/core/models.py:464
 msgid "Title of field"
 msgstr ""
 
-#: aleksis/core/models.py:461
+#: aleksis/core/models.py:466
 msgid "Type of field"
 msgstr ""
 
-#: aleksis/core/models.py:463
+#: aleksis/core/models.py:468
 msgid "Required"
 msgstr ""
 
-#: aleksis/core/models.py:464
+#: aleksis/core/models.py:469
 msgid "Help text / description"
 msgstr ""
 
-#: aleksis/core/models.py:470
+#: aleksis/core/models.py:475
 msgid "Addtitional field for groups"
 msgstr ""
 
-#: aleksis/core/models.py:471
+#: aleksis/core/models.py:476
 msgid "Addtitional fields for groups"
 msgstr ""
 
-#: aleksis/core/models.py:491
+#: aleksis/core/models.py:496
 msgid "Can assign child groups to groups"
 msgstr ""
 
-#: aleksis/core/models.py:492
+#: aleksis/core/models.py:497
 msgid "Can view statistics about group."
 msgstr ""
 
-#: aleksis/core/models.py:504
+#: aleksis/core/models.py:509
 msgid "Long name"
 msgstr ""
 
-#: aleksis/core/models.py:514 aleksis/core/templates/core/group/full.html:85
+#: aleksis/core/models.py:519 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr ""
 
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/full.html:82
+#: aleksis/core/models.py:522 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr ""
 
-#: aleksis/core/models.py:524 aleksis/core/templates/core/group/full.html:55
+#: aleksis/core/models.py:529 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr ""
 
-#: aleksis/core/models.py:532
+#: aleksis/core/models.py:537
 msgid "Type of group"
 msgstr ""
 
-#: aleksis/core/models.py:718 aleksis/core/models.py:742
-#: aleksis/core/models.py:833
+#: aleksis/core/models.py:723 aleksis/core/models.py:747
+#: aleksis/core/models.py:838
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr ""
 
-#: aleksis/core/models.py:721
+#: aleksis/core/models.py:726
 msgid "Application"
 msgstr ""
 
-#: aleksis/core/models.py:727
+#: aleksis/core/models.py:732
 msgid "Activity"
 msgstr ""
 
-#: aleksis/core/models.py:728
+#: aleksis/core/models.py:733
 msgid "Activities"
 msgstr ""
 
-#: aleksis/core/models.py:734
+#: aleksis/core/models.py:739
 msgid "Sender"
 msgstr ""
 
-#: aleksis/core/models.py:739
+#: aleksis/core/models.py:744
 msgid "Recipient"
 msgstr ""
 
-#: aleksis/core/models.py:744 aleksis/core/models.py:1071
+#: aleksis/core/models.py:749 aleksis/core/models.py:1078
 msgid "Link"
 msgstr ""
 
-#: aleksis/core/models.py:746
+#: aleksis/core/models.py:751
 msgid "Send notification at"
 msgstr ""
 
-#: aleksis/core/models.py:748
+#: aleksis/core/models.py:753
 msgid "Read"
 msgstr ""
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:754
 msgid "Sent"
 msgstr ""
 
-#: aleksis/core/models.py:766
+#: aleksis/core/models.py:771
 msgid "Notification"
 msgstr ""
 
-#: aleksis/core/models.py:767 aleksis/core/preferences.py:29
+#: aleksis/core/models.py:772 aleksis/core/preferences.py:29
 #: aleksis/core/templates/core/base.html:81
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr ""
 
-#: aleksis/core/models.py:835
+#: aleksis/core/models.py:840
 msgid "Link to detailed view"
 msgstr ""
 
-#: aleksis/core/models.py:838
+#: aleksis/core/models.py:843
 msgid "Date and time from when to show"
 msgstr ""
 
-#: aleksis/core/models.py:841
+#: aleksis/core/models.py:846
 msgid "Date and time until when to show"
 msgstr ""
 
-#: aleksis/core/models.py:866
+#: aleksis/core/models.py:871
 msgid "Announcement"
 msgstr ""
 
-#: aleksis/core/models.py:904
+#: aleksis/core/models.py:909
 msgid "Announcement recipient"
 msgstr ""
 
-#: aleksis/core/models.py:905
+#: aleksis/core/models.py:910
 msgid "Announcement recipients"
 msgstr ""
 
-#: aleksis/core/models.py:927
+#: aleksis/core/models.py:932
 msgid "Widget Title"
 msgstr ""
 
-#: aleksis/core/models.py:928
+#: aleksis/core/models.py:933
 msgid "Activate Widget"
 msgstr ""
 
-#: aleksis/core/models.py:929
+#: aleksis/core/models.py:934
 msgid "Widget is broken"
 msgstr ""
 
-#: aleksis/core/models.py:932
+#: aleksis/core/models.py:937
 msgid "Size on mobile devices"
 msgstr ""
 
-#: aleksis/core/models.py:933
+#: aleksis/core/models.py:938
 msgid "<= 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:938
+#: aleksis/core/models.py:943
 msgid "Size on tablet devices"
 msgstr ""
 
-#: aleksis/core/models.py:939
+#: aleksis/core/models.py:944
 msgid "> 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:944
+#: aleksis/core/models.py:949
 msgid "Size on desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:945
+#: aleksis/core/models.py:950
 msgid "> 992 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:950
+#: aleksis/core/models.py:955
 msgid "Size on large desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:951
+#: aleksis/core/models.py:956
 msgid "> 1200 px>, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:982
+#: aleksis/core/models.py:987
 msgid "Can edit default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:983
+#: aleksis/core/models.py:988
 msgid "Dashboard Widget"
 msgstr ""
 
-#: aleksis/core/models.py:984
+#: aleksis/core/models.py:989
 msgid "Dashboard Widgets"
 msgstr ""
 
-#: aleksis/core/models.py:990
+#: aleksis/core/models.py:995
 msgid "URL"
 msgstr ""
 
-#: aleksis/core/models.py:991
+#: aleksis/core/models.py:996
 msgid "Icon URL"
 msgstr ""
 
-#: aleksis/core/models.py:997
+#: aleksis/core/models.py:1002
 msgid "External link widget"
 msgstr ""
 
-#: aleksis/core/models.py:998
+#: aleksis/core/models.py:1003
 msgid "External link widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1004
+#: aleksis/core/models.py:1009
 msgid "Content"
 msgstr ""
 
-#: aleksis/core/models.py:1010
+#: aleksis/core/models.py:1015
 msgid "Static content widget"
 msgstr ""
 
-#: aleksis/core/models.py:1011
+#: aleksis/core/models.py:1016
 msgid "Static content widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1016
+#: aleksis/core/models.py:1021
 msgid "Dashboard widget"
 msgstr ""
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:1026
 msgid "Order"
 msgstr ""
 
-#: aleksis/core/models.py:1022
+#: aleksis/core/models.py:1027
 msgid "Part of the default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1037
+#: aleksis/core/models.py:1042
 msgid "Dashboard widget order"
 msgstr ""
 
-#: aleksis/core/models.py:1038
+#: aleksis/core/models.py:1043
 msgid "Dashboard widget orders"
 msgstr ""
 
-#: aleksis/core/models.py:1044
+#: aleksis/core/models.py:1049
 msgid "Menu ID"
 msgstr ""
 
-#: aleksis/core/models.py:1057
+#: aleksis/core/models.py:1062
 msgid "Custom menu"
 msgstr ""
 
-#: aleksis/core/models.py:1058
+#: aleksis/core/models.py:1063
 msgid "Custom menus"
 msgstr ""
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:1075
 msgid "Menu"
 msgstr ""
 
-#: aleksis/core/models.py:1072 aleksis/core/models.py:1320
+#: aleksis/core/models.py:1079 aleksis/core/models.py:1330
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr ""
 
-#: aleksis/core/models.py:1078
+#: aleksis/core/models.py:1085
 msgid "Custom menu item"
 msgstr ""
 
-#: aleksis/core/models.py:1079
+#: aleksis/core/models.py:1086
 msgid "Custom menu items"
 msgstr ""
 
-#: aleksis/core/models.py:1093
+#: aleksis/core/models.py:1103
 msgid "Title of type"
 msgstr ""
 
-#: aleksis/core/models.py:1100 aleksis/core/templates/core/group/full.html:47
+#: aleksis/core/models.py:1110 aleksis/core/templates/core/group/full.html:50
 msgid "Group type"
 msgstr ""
 
-#: aleksis/core/models.py:1114
+#: aleksis/core/models.py:1124
 msgid "Can view system status"
 msgstr ""
 
-#: aleksis/core/models.py:1115
+#: aleksis/core/models.py:1125
 msgid "Can manage data"
 msgstr ""
 
-#: aleksis/core/models.py:1116
+#: aleksis/core/models.py:1126
 msgid "Can impersonate"
 msgstr ""
 
-#: aleksis/core/models.py:1117
+#: aleksis/core/models.py:1127
 msgid "Can use search"
 msgstr ""
 
-#: aleksis/core/models.py:1118
+#: aleksis/core/models.py:1128
 msgid "Can change site preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1119
+#: aleksis/core/models.py:1129
 msgid "Can change person preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1120
+#: aleksis/core/models.py:1130
 msgid "Can change group preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1121
+#: aleksis/core/models.py:1131
 msgid "Can test PDF generation"
 msgstr ""
 
-#: aleksis/core/models.py:1122
+#: aleksis/core/models.py:1132
 msgid "Can invite persons"
 msgstr ""
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1168
 msgid "Related data check task"
 msgstr ""
 
-#: aleksis/core/models.py:1166
+#: aleksis/core/models.py:1176
 msgid "Issue solved"
 msgstr ""
 
-#: aleksis/core/models.py:1167
+#: aleksis/core/models.py:1177
 msgid "Notification sent"
 msgstr ""
 
-#: aleksis/core/models.py:1180
+#: aleksis/core/models.py:1190
 msgid "Data check result"
 msgstr ""
 
-#: aleksis/core/models.py:1181
+#: aleksis/core/models.py:1191
 msgid "Data check results"
 msgstr ""
 
-#: aleksis/core/models.py:1183
+#: aleksis/core/models.py:1193
 msgid "Can run data checks"
 msgstr ""
 
-#: aleksis/core/models.py:1184
+#: aleksis/core/models.py:1194
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1191
+#: aleksis/core/models.py:1201
 msgid "E-Mail address"
 msgstr ""
 
-#: aleksis/core/models.py:1223
+#: aleksis/core/models.py:1233
 msgid "Owner"
 msgstr ""
 
-#: aleksis/core/models.py:1227
+#: aleksis/core/models.py:1237
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1229
+#: aleksis/core/models.py:1239
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1231
+#: aleksis/core/models.py:1241
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1238
+#: aleksis/core/models.py:1248
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1239
+#: aleksis/core/models.py:1249
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1244
+#: aleksis/core/models.py:1254
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1247
+#: aleksis/core/models.py:1257
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1259
+#: aleksis/core/models.py:1269
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1260
+#: aleksis/core/models.py:1270
 msgid "Task user assignments"
 msgstr ""
 
-#: aleksis/core/models.py:1276
+#: aleksis/core/models.py:1286
 msgid "Additional attributes"
 msgstr ""
 
-#: aleksis/core/models.py:1314
+#: aleksis/core/models.py:1324
 msgid "Allowed scopes that clients can request"
 msgstr ""
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1334
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr ""
 
-#: aleksis/core/models.py:1373
+#: aleksis/core/models.py:1383
 msgid "UUID"
 msgstr ""
 
-#: aleksis/core/models.py:1377
+#: aleksis/core/models.py:1387
 msgid "Selected ICal feed"
 msgstr ""
 
-#: aleksis/core/models.py:1386
+#: aleksis/core/models.py:1396
 msgid "Personal Calendar URL"
 msgstr ""
 
-#: aleksis/core/models.py:1387
+#: aleksis/core/models.py:1397
 msgid "Personal Calendar URLs"
 msgstr ""
 
@@ -1179,94 +1193,94 @@ msgstr ""
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr ""
 
-#: aleksis/core/preferences.py:344
-msgid "Available languages"
-msgstr ""
-
-#: aleksis/core/preferences.py:357
+#: aleksis/core/preferences.py:343
 msgid "Send emails if data checks detect problems"
 msgstr ""
 
-#: aleksis/core/preferences.py:368
+#: aleksis/core/preferences.py:354
 msgid "Email recipients for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:379
+#: aleksis/core/preferences.py:365
 msgid "Email recipient groups for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:388
+#: aleksis/core/preferences.py:374
 msgid "Show dashboard to users without login"
 msgstr ""
 
-#: aleksis/core/preferences.py:397
+#: aleksis/core/preferences.py:383
 msgid "Allow users to edit their dashboard"
 msgstr ""
 
-#: aleksis/core/preferences.py:408
+#: aleksis/core/preferences.py:394
 msgid "Fields on person model which are editable by themselves."
 msgstr ""
 
-#: aleksis/core/preferences.py:423
+#: aleksis/core/preferences.py:409
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr ""
 
-#: aleksis/core/preferences.py:437
+#: aleksis/core/preferences.py:423
 msgid "Contact for notification if a person changes their data"
 msgstr ""
 
-#: aleksis/core/preferences.py:448
+#: aleksis/core/preferences.py:434
 msgid "Prefer personal photos over avatars"
 msgstr ""
 
-#: aleksis/core/preferences.py:458
+#: aleksis/core/preferences.py:444
 msgid "PDF file expiration duration"
 msgstr ""
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:445
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/preferences.py:469
+#: aleksis/core/preferences.py:455
 msgid "Automatically update the dashboard and its widgets"
 msgstr ""
 
-#: aleksis/core/preferences.py:479
+#: aleksis/core/preferences.py:465
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr ""
 
-#: aleksis/core/preferences.py:489
+#: aleksis/core/preferences.py:475
 msgid "Country for phone number parsing"
 msgstr ""
 
-#: aleksis/core/settings.py:540
+#: aleksis/core/settings.py:541
 msgid "English"
 msgstr ""
 
-#: aleksis/core/settings.py:541
+#: aleksis/core/settings.py:542
 msgid "German"
 msgstr ""
 
-#: aleksis/core/tables.py:24
+#: aleksis/core/settings.py:543
+msgid "Ukrainian"
+msgstr ""
+
+#: aleksis/core/tables.py:25
 #: aleksis/core/templates/core/announcement/list.html:36
-#: aleksis/core/templates/core/group/full.html:24
+#: aleksis/core/templates/core/group/full.html:26
 #: aleksis/core/templates/core/person/full.html:26
 #: aleksis/core/templates/core/person/full.html:86
 #: aleksis/core/templates/oauth2_provider/application/detail.html:17
 msgid "Edit"
 msgstr ""
 
-#: aleksis/core/tables.py:26 aleksis/core/tables.py:94
-#: aleksis/core/tables.py:138
+#: aleksis/core/tables.py:27 aleksis/core/tables.py:148
+#: aleksis/core/tables.py:192
 #: aleksis/core/templates/core/announcement/list.html:22
 msgid "Actions"
 msgstr ""
 
-#: aleksis/core/tables.py:61 aleksis/core/tables.py:62
-#: aleksis/core/tables.py:76 aleksis/core/tables.py:92
-#: aleksis/core/tables.py:136
+#: aleksis/core/tables.py:115 aleksis/core/tables.py:116
+#: aleksis/core/tables.py:130 aleksis/core/tables.py:146
+#: aleksis/core/tables.py:190
 #: aleksis/core/templates/core/announcement/list.html:42
-#: aleksis/core/templates/core/group/full.html:31
+#: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
 #: aleksis/core/templates/core/person/full.html:33
 #: aleksis/core/templates/core/person/full.html:93
@@ -1305,7 +1319,7 @@ msgstr ""
 #: aleksis/core/templates/500.html:10
 msgid ""
 "An unexpected error has\n"
-"          occured."
+"          occurred."
 msgstr ""
 
 #: aleksis/core/templates/500.html:13
@@ -1805,34 +1819,34 @@ msgstr ""
 msgid "Edit group"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:38
+#: aleksis/core/templates/core/group/full.html:40
 #: aleksis/core/templates/core/person/full.html:40
 #: aleksis/core/templates/core/person/full.html:100
 msgid "Change preferences"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:64
+#: aleksis/core/templates/core/group/full.html:68
 msgid "Statistics"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:67
+#: aleksis/core/templates/core/group/full.html:73
 msgid "Count of members"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:71
+#: aleksis/core/templates/core/group/full.html:81
 msgid "Average age"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
+#: aleksis/core/templates/core/group/full.html:90
 msgid "Age range"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years to"
-msgstr ""
-
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years "
+#: aleksis/core/templates/core/group/full.html:93
+#, python-format
+msgid ""
+"\n"
+"              %(min)s years to %(max)s years\n"
+"            "
 msgstr ""
 
 #: aleksis/core/templates/core/group/list.html:14
@@ -1884,7 +1898,7 @@ msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:4
 #: aleksis/core/templates/core/ical/ical_list.html:5
-msgid "ICal Feeds"
+msgid "iCal Feeds"
 msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:8
@@ -2168,11 +2182,11 @@ msgstr ""
 msgid "Unknown"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:15
+#: aleksis/core/templates/core/partials/language_form.html:17
 msgid "Language"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:27
+#: aleksis/core/templates/core/partials/language_form.html:29
 msgid "Select language"
 msgstr ""
 
@@ -3094,168 +3108,168 @@ msgstr ""
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:292
+#: aleksis/core/views.py:294
 msgid "The school term has been created."
 msgstr ""
 
-#: aleksis/core/views.py:304
+#: aleksis/core/views.py:306
 msgid "The school term has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:424
+#: aleksis/core/views.py:426
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:443 aleksis/core/views.py:453
+#: aleksis/core/views.py:445 aleksis/core/views.py:455
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:503
+#: aleksis/core/views.py:505
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:600
+#: aleksis/core/views.py:602
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:616
+#: aleksis/core/views.py:618
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:684
+#: aleksis/core/views.py:686
 msgid "The requested preference registry does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:705
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:729
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:743
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:773
-msgid "The additional_field has been saved."
+#: aleksis/core/views.py:775
+msgid "The additional field has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:809
 msgid "The additional field has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:834
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:864
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:897
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:898
 msgid "Run data checks …"
 msgstr ""
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:899
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:900
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:916
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:924
+#: aleksis/core/views.py:926
 msgid "The requested solve option does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:958
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:988
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:998
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1067
+#: aleksis/core/views.py:1069
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1069
+#: aleksis/core/views.py:1071
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1145
+#: aleksis/core/views.py:1147
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr ""
 
-#: aleksis/core/views.py:1236
+#: aleksis/core/views.py:1238
 msgid "We have successfully assigned the permissions."
 msgstr ""
 
-#: aleksis/core/views.py:1246
+#: aleksis/core/views.py:1248
 msgid "The global user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1256
+#: aleksis/core/views.py:1258
 msgid "The global group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1266
+#: aleksis/core/views.py:1268
 msgid "The object user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1276
+#: aleksis/core/views.py:1278
 msgid "The object group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1344
+#: aleksis/core/views.py:1346
 msgid "The requested PDF file does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:1353 aleksis/core/views.py:1357
+#: aleksis/core/views.py:1355 aleksis/core/views.py:1359
 msgid "The requested task does not exist or is not accessible"
 msgstr ""
 
-#: aleksis/core/views.py:1409
+#: aleksis/core/views.py:1411
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1416
+#: aleksis/core/views.py:1418
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
-#: aleksis/core/views.py:1487
+#: aleksis/core/views.py:1489
 msgid "Person was invited successfully and an email with further instructions has been send to them."
 msgstr ""
 
-#: aleksis/core/views.py:1498
+#: aleksis/core/views.py:1500
 msgid "Person was already invited."
 msgstr ""
 
-#: aleksis/core/views.py:1598
-msgid "ICal feed updated successfully"
+#: aleksis/core/views.py:1600
+msgid "iCal feed updated successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1608
-msgid "ICal feed deleted successfully"
+#: aleksis/core/views.py:1610
+msgid "iCal feed deleted successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1616
-msgid "ICal feed created successfully"
+#: aleksis/core/views.py:1618
+msgid "iCal feed created successfully"
 msgstr ""
diff --git a/aleksis/core/locale/ar/LC_MESSAGES/djangojs.po b/aleksis/core/locale/ar/LC_MESSAGES/djangojs.po
index 5cc7c348c2ab6303aae0b8d753a8cf07f89fe384..3defb67f9f4129276ebd5b1c61d84a8511b0fabe 100644
--- a/aleksis/core/locale/ar/LC_MESSAGES/djangojs.po
+++ b/aleksis/core/locale/ar/LC_MESSAGES/djangojs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/aleksis/core/locale/de_DE/LC_MESSAGES/django.po b/aleksis/core/locale/de_DE/LC_MESSAGES/django.po
index 7656a3fde8cfff230195b6ec413433dc985fdc2d..7f2dcc874f2a27ea8cf2b0d8b7fd681e17e419f8 100644
--- a/aleksis/core/locale/de_DE/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/de_DE/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgstr ""
 "Project-Id-Version: AlekSIS (School Information System) 0.1\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2022-05-24 19:37+0200\n"
-"PO-Revision-Date: 2022-05-24 17:52+0000\n"
+"PO-Revision-Date: 2022-07-24 13:48+0000\n"
 "Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n"
 "Language-Team: German <https://translate.edugit.org/projects/aleksis/"
 "aleksis-core/de/>\n"
@@ -42,28 +42,28 @@ msgstr "Festnetz- und Mobilfunknummer"
 #: aleksis/core/apps.py:171 aleksis/core/forms.py:220 aleksis/core/menus.py:171
 #: aleksis/core/models.py:489 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
-#: aleksis/core/templates/core/person/full.html:246
+#: aleksis/core/templates/core/person/full.html:246 aleksis/core/models.py:494
 msgid "Groups"
 msgstr "Gruppen"
 
-#: aleksis/core/data_checks.py:56
+#: aleksis/core/data_checks.py:56 aleksis/core/data_checks.py:59
 msgid "Ignore problem"
 msgstr "Problem ignorieren"
 
-#: aleksis/core/data_checks.py:185
+#: aleksis/core/data_checks.py:185 aleksis/core/data_checks.py:188
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr "Lösungsoption \"{solve_option_obj.verbose_name}\" "
 
-#: aleksis/core/data_checks.py:291
+#: aleksis/core/data_checks.py:291 aleksis/core/data_checks.py:294
 msgid "Deactivate DashboardWidget"
 msgstr "Dashboard-Widget deaktivieren"
 
-#: aleksis/core/data_checks.py:303
+#: aleksis/core/data_checks.py:303 aleksis/core/data_checks.py:306
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr "Sicherstellen, dass es keine kaputten Dashboard-Widgets gibt."
 
-#: aleksis/core/data_checks.py:304
+#: aleksis/core/data_checks.py:304 aleksis/core/data_checks.py:307
 msgid "The DashboardWidget was reported broken automatically."
 msgstr "Das Dashboard-Widget wurde automatisch als kaputt gemeldet."
 
@@ -83,7 +83,7 @@ msgstr "%(name)ss Geburtstag"
 #: aleksis/core/feeds.py:71
 #, python-format
 msgid "%(name)s was born on %(birthday)s"
-msgstr "%(name)s wurde am %(birthday)s geborgen"
+msgstr "%(name)s wurde am %(birthday)s geboren"
 
 #: aleksis/core/filters.py:42 aleksis/core/templates/core/base.html:139
 #: aleksis/core/templates/core/base.html:140
@@ -111,10 +111,12 @@ msgid "Content type"
 msgstr "Inhaltstyp"
 
 #: aleksis/core/filters.py:113 aleksis/core/models.py:715
+#: aleksis/core/models.py:720
 msgid "User"
 msgstr "Benutzer"
 
 #: aleksis/core/filters.py:135 aleksis/core/models.py:488
+#: aleksis/core/models.py:493
 msgid "Group"
 msgstr "Gruppe"
 
@@ -122,7 +124,7 @@ msgstr "Gruppe"
 msgid "Base data"
 msgstr "Basisdaten"
 
-#: aleksis/core/forms.py:55
+#: aleksis/core/forms.py:55 aleksis/core/tables.py:47
 msgid "Address"
 msgstr "Adresse"
 
@@ -144,13 +146,16 @@ msgstr "Neues Benutzerkonto erstellen"
 
 #: aleksis/core/forms.py:132
 msgid "You cannot set a new username when also selecting an existing user."
-msgstr "Sie können keine neuen Benutzer erstellen, wenn Sie gleichzeitig einen existierenden Benutzer auswählen."
+msgstr ""
+"Sie können keine neuen Benutzer erstellen, wenn Sie gleichzeitig einen "
+"existierenden Benutzer auswählen."
 
 #: aleksis/core/forms.py:136
 msgid "This username is already in use."
 msgstr "Dieser Benutzername wird bereits genutzt."
 
 #: aleksis/core/forms.py:153 aleksis/core/models.py:136
+#: aleksis/core/models.py:141
 msgid "School term"
 msgstr "Schuljahr"
 
@@ -161,26 +166,27 @@ msgstr "Allgemeine Daten"
 #: aleksis/core/forms.py:155 aleksis/core/forms.py:207
 #: aleksis/core/menus.py:160 aleksis/core/models.py:159
 #: aleksis/core/templates/core/person/list.html:8
-#: aleksis/core/templates/core/person/list.html:9
+#: aleksis/core/templates/core/person/list.html:9 aleksis/core/models.py:164
 msgid "Persons"
 msgstr "Personen"
 
 #: aleksis/core/forms.py:156 aleksis/core/forms.py:592
 msgid "Additional data"
-msgstr "Zusätzliche Datne"
+msgstr "Zusätzliche Daten"
 
 #: aleksis/core/forms.py:157 aleksis/core/models.py:212
-#: aleksis/core/models.py:541
+#: aleksis/core/models.py:541 aleksis/core/models.py:217
+#: aleksis/core/models.py:546 aleksis/core/tables.py:46
 msgid "Photo"
 msgstr "Foto"
 
 #: aleksis/core/forms.py:199 aleksis/core/forms.py:202
-#: aleksis/core/models.py:79
+#: aleksis/core/models.py:79 aleksis/core/models.py:84
 msgid "Date"
 msgstr "Datum"
 
 #: aleksis/core/forms.py:200 aleksis/core/forms.py:203
-#: aleksis/core/models.py:87
+#: aleksis/core/models.py:87 aleksis/core/models.py:92
 msgid "Time"
 msgstr "Zeit"
 
@@ -197,12 +203,17 @@ msgid "Write your announcement:"
 msgstr "Schreiben Sie ihre Ankündigung:"
 
 #: aleksis/core/forms.py:276
-msgid "You are not allowed to create announcements which are only valid in the past."
-msgstr "Sie dürfen keine Ankündigungen erstellen, die nur für die Vergangenheit gültig sind."
+msgid ""
+"You are not allowed to create announcements which are only valid in the past."
+msgstr ""
+"Sie dürfen keine Ankündigungen erstellen, die nur für die Vergangenheit "
+"gültig sind."
 
 #: aleksis/core/forms.py:280
 msgid "The from date and time must be earlier then the until date and time."
-msgstr "Das Startdatum und die Startzeit müssen vor dem Enddatum und der Endzeit sein."
+msgstr ""
+"Das Startdatum und die Startzeit müssen vor dem Enddatum und der Endzeit "
+"sein."
 
 #: aleksis/core/forms.py:289
 msgid "You need at least one recipient."
@@ -217,10 +228,12 @@ msgid "Please enter your invitation code."
 msgstr "Bitte geben Sie Ihren Einladungscode ein."
 
 #: aleksis/core/forms.py:418 aleksis/core/models.py:187
+#: aleksis/core/models.py:192
 msgid "First name"
 msgstr "Vorname"
 
 #: aleksis/core/forms.py:419 aleksis/core/models.py:188
+#: aleksis/core/models.py:193
 msgid "Last name"
 msgstr "Nachname"
 
@@ -238,19 +251,25 @@ msgstr "Auf was?"
 
 #: aleksis/core/forms.py:483
 msgid "Select objects which the permission should be granted for:"
-msgstr "Wählen Sie die Objekte aus, für welche die Berechtigung vergeben werden soll:"
+msgstr ""
+"Wählen Sie die Objekte aus, für welche die Berechtigung vergeben werden soll:"
 
 #: aleksis/core/forms.py:486
 msgid "Grant the permission for all objects"
 msgstr "Vergebe die Berechtigung für alle Objekte"
 
 #: aleksis/core/forms.py:494
-msgid "You must select at least one group or person which should get the permission."
-msgstr "Sie müssen mindestens eine Gruppe oder Person auswählen, welche die Berechtigung erhalten soll."
+msgid ""
+"You must select at least one group or person which should get the permission."
+msgstr ""
+"Sie müssen mindestens eine Gruppe oder Person auswählen, welche die "
+"Berechtigung erhalten soll."
 
 #: aleksis/core/forms.py:499
 msgid "You must grant the permission to all objects and/or to some objects."
-msgstr "Sie müssen die Berechtigung auf alle Objekte und/oder für einige Objekte vergeben."
+msgstr ""
+"Sie müssen die Berechtigung auf alle Objekte und/oder für einige Objekte "
+"vergeben."
 
 #: aleksis/core/forms.py:586
 msgid "Address data"
@@ -274,7 +293,9 @@ msgstr "Die ausgewählte Aktion existiert nicht."
 
 #: aleksis/core/forms.py:739
 msgid "You do not have permission to run {} on all selected objects."
-msgstr "Sie haben nicht die Berechtigung, {} auf alle ausgewählten Objekte auszuführen."
+msgstr ""
+"Sie haben nicht die Berechtigung, {} auf alle ausgewählten Objekte "
+"auszuführen."
 
 #: aleksis/core/forms.py:795
 msgid "No valid selection."
@@ -326,12 +347,14 @@ msgstr "Admin"
 #: aleksis/core/menus.py:47 aleksis/core/models.py:867
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
+#: aleksis/core/models.py:872
 msgid "Announcements"
 msgstr "Ankündigungen"
 
 #: aleksis/core/menus.py:58 aleksis/core/models.py:137
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
+#: aleksis/core/models.py:142
 msgid "School terms"
 msgstr "Schuljahre"
 
@@ -384,6 +407,7 @@ msgstr "Leute"
 #: aleksis/core/menus.py:182 aleksis/core/models.py:1101
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
+#: aleksis/core/models.py:1111
 msgid "Group types"
 msgstr "Gruppentypen"
 
@@ -394,6 +418,7 @@ msgstr "Gruppen und Kindgruppen"
 #: aleksis/core/menus.py:204 aleksis/core/models.py:537
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
+#: aleksis/core/models.py:542
 msgid "Additional fields"
 msgstr "Zusätzliche Felder"
 
@@ -458,581 +483,611 @@ msgstr "Abmelden"
 msgid "Linked school term"
 msgstr "Zugeordnetes Schuljahr"
 
-#: aleksis/core/models.py:77
+#: aleksis/core/models.py:77 aleksis/core/models.py:82
 msgid "Boolean (Yes/No)"
 msgstr "Boolean (Ja/Nein)"
 
-#: aleksis/core/models.py:78
+#: aleksis/core/models.py:78 aleksis/core/models.py:83
 msgid "Text (one line)"
 msgstr "Text (eine Zeile)"
 
-#: aleksis/core/models.py:80
+#: aleksis/core/models.py:80 aleksis/core/models.py:85
 msgid "Date and time"
 msgstr "Datum und Uhrzeit"
 
-#: aleksis/core/models.py:81
+#: aleksis/core/models.py:81 aleksis/core/models.py:86
 msgid "Decimal number"
 msgstr "Dezimalzahl"
 
 #: aleksis/core/models.py:82 aleksis/core/models.py:205
+#: aleksis/core/models.py:87 aleksis/core/models.py:210
 msgid "E-mail address"
 msgstr "E-Mail-Adresse"
 
-#: aleksis/core/models.py:83
+#: aleksis/core/models.py:83 aleksis/core/models.py:88
 msgid "Integer"
 msgstr "Ganze Zahl"
 
-#: aleksis/core/models.py:84
+#: aleksis/core/models.py:84 aleksis/core/models.py:89
 msgid "IP address"
 msgstr "IP-Adresse"
 
-#: aleksis/core/models.py:85
+#: aleksis/core/models.py:85 aleksis/core/models.py:90
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr "Boolean oder leer (Ja/Nein/weder)"
 
-#: aleksis/core/models.py:86
+#: aleksis/core/models.py:86 aleksis/core/models.py:91
 msgid "Text (multi-line)"
 msgstr "Text (mehrzeilig)"
 
-#: aleksis/core/models.py:88
+#: aleksis/core/models.py:88 aleksis/core/models.py:93
 msgid "URL / Link"
 msgstr "URL / Link"
 
 #: aleksis/core/models.py:100 aleksis/core/models.py:1070
-#: aleksis/core/models.py:1374
+#: aleksis/core/models.py:1374 aleksis/core/models.py:105
+#: aleksis/core/models.py:1077 aleksis/core/models.py:1384
 msgid "Name"
 msgstr "Name"
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:102 aleksis/core/models.py:107
 msgid "Start date"
 msgstr "Startdatum"
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:103 aleksis/core/models.py:108
 msgid "End date"
 msgstr "Enddatum"
 
-#: aleksis/core/models.py:122
+#: aleksis/core/models.py:122 aleksis/core/models.py:127
 msgid "The start date must be earlier than the end date."
 msgstr "Das Startdatum muss vor dem Enddatum liegen."
 
-#: aleksis/core/models.py:129
+#: aleksis/core/models.py:129 aleksis/core/models.py:134
 msgid "There is already a school term for this time or a part of this time."
-msgstr "Es gibt bereits ein Schuljahr für diesen Zeitraum oder einen Teilzeitraum."
+msgstr ""
+"Es gibt bereits ein Schuljahr für diesen Zeitraum oder einen Teilzeitraum."
 
 #: aleksis/core/models.py:158 aleksis/core/models.py:1019
-#: aleksis/core/models.py:1371
+#: aleksis/core/models.py:1371 aleksis/core/models.py:163
+#: aleksis/core/models.py:1024 aleksis/core/models.py:1381
 msgid "Person"
 msgstr "Person"
 
-#: aleksis/core/models.py:161
+#: aleksis/core/models.py:161 aleksis/core/models.py:166
 msgid "Can view address"
 msgstr "Kann Adresse sehen"
 
-#: aleksis/core/models.py:162
+#: aleksis/core/models.py:162 aleksis/core/models.py:167
 msgid "Can view contact details"
 msgstr "Kann Kontaktdetails sehen"
 
-#: aleksis/core/models.py:163
+#: aleksis/core/models.py:163 aleksis/core/models.py:168
 msgid "Can view photo"
 msgstr "Kann Foto sehen"
 
-#: aleksis/core/models.py:164
+#: aleksis/core/models.py:164 aleksis/core/models.py:169
 msgid "Can view avatar image"
 msgstr "Kann Avatar-Bild sehen"
 
-#: aleksis/core/models.py:165
+#: aleksis/core/models.py:165 aleksis/core/models.py:170
 msgid "Can view persons groups"
 msgstr "Kann Gruppen einer Person sehen"
 
-#: aleksis/core/models.py:166
+#: aleksis/core/models.py:166 aleksis/core/models.py:171
 msgid "Can view personal details"
 msgstr "Kann persönliche Daten sehen"
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:176 aleksis/core/models.py:181
 msgid "female"
 msgstr "weiblich"
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:176 aleksis/core/models.py:181
 msgid "male"
 msgstr "männlich"
 
 #: aleksis/core/models.py:184 aleksis/core/models.py:1273
+#: aleksis/core/models.py:189 aleksis/core/models.py:1283
 msgid "Linked user"
 msgstr "Verknüpfter Benutzer"
 
-#: aleksis/core/models.py:190
+#: aleksis/core/models.py:190 aleksis/core/models.py:195
 msgid "Additional name(s)"
 msgstr "Zusätzliche Namen"
 
 #: aleksis/core/models.py:194 aleksis/core/models.py:506
+#: aleksis/core/models.py:199 aleksis/core/models.py:511
 msgid "Short name"
 msgstr "Kurzname"
 
-#: aleksis/core/models.py:197
+#: aleksis/core/models.py:197 aleksis/core/models.py:202
 msgid "Street"
 msgstr "Straße"
 
-#: aleksis/core/models.py:198
+#: aleksis/core/models.py:198 aleksis/core/models.py:203
 msgid "Street number"
 msgstr "Hausnummer"
 
-#: aleksis/core/models.py:199
+#: aleksis/core/models.py:199 aleksis/core/models.py:204
 msgid "Postal code"
 msgstr "Postleitzahl"
 
-#: aleksis/core/models.py:200
+#: aleksis/core/models.py:200 aleksis/core/models.py:205
 msgid "Place"
 msgstr "Ort"
 
 #: aleksis/core/models.py:202 aleksis/core/templates/core/person/full.html:160
+#: aleksis/core/models.py:207
 msgid "Home phone"
 msgstr "Festnetz"
 
 #: aleksis/core/models.py:203 aleksis/core/templates/core/person/full.html:170
+#: aleksis/core/models.py:208
 msgid "Mobile phone"
 msgstr "Handy"
 
-#: aleksis/core/models.py:207
+#: aleksis/core/models.py:207 aleksis/core/models.py:212
 msgid "Date of birth"
 msgstr "Geburtsdatum"
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:208 aleksis/core/models.py:213
 msgid "Place of birth"
 msgstr "Geburtsort"
 
-#: aleksis/core/models.py:209
+#: aleksis/core/models.py:209 aleksis/core/models.py:214
 msgid "Sex"
 msgstr "Geschlecht"
 
 #: aleksis/core/models.py:216 aleksis/core/models.py:545
-msgid "This is an official photo, used for official documents and for internal use cases."
-msgstr "Dies ist ein offizielles Foto, genutzt für offizielle Dokumente und interne Zwecke."
+#: aleksis/core/models.py:221 aleksis/core/models.py:550
+msgid ""
+"This is an official photo, used for official documents and for internal use "
+"cases."
+msgstr ""
+"Dies ist ein offizielles Foto, genutzt für offizielle Dokumente und interne "
+"Zwecke."
 
 #: aleksis/core/models.py:221 aleksis/core/models.py:549
+#: aleksis/core/models.py:226 aleksis/core/models.py:554
 msgid "Display picture / Avatar"
 msgstr "Bild/Avatar anzeigen"
 
 #: aleksis/core/models.py:224 aleksis/core/models.py:552
+#: aleksis/core/models.py:229 aleksis/core/models.py:557
 msgid "This is a picture or an avatar for public display."
 msgstr "Dies ist ein Bild oder ein Avatar für die öffentliche Darstellung."
 
 #: aleksis/core/models.py:229 aleksis/core/templates/core/person/full.html:235
+#: aleksis/core/models.py:234
 msgid "Guardians / Parents"
 msgstr "Erziehungsberechtigte / Eltern"
 
-#: aleksis/core/models.py:236
+#: aleksis/core/models.py:236 aleksis/core/models.py:241
 msgid "Primary group"
 msgstr "Primärgruppe"
 
 #: aleksis/core/models.py:239 aleksis/core/models.py:719
 #: aleksis/core/models.py:743 aleksis/core/models.py:834
-#: aleksis/core/models.py:1094
+#: aleksis/core/models.py:1094 aleksis/core/models.py:244
+#: aleksis/core/models.py:724 aleksis/core/models.py:748
+#: aleksis/core/models.py:839 aleksis/core/models.py:1104
 msgid "Description"
 msgstr "Beschreibung"
 
-#: aleksis/core/models.py:459
+#: aleksis/core/models.py:459 aleksis/core/models.py:464
 msgid "Title of field"
 msgstr "Feldtitel"
 
-#: aleksis/core/models.py:461
+#: aleksis/core/models.py:461 aleksis/core/models.py:466
 msgid "Type of field"
 msgstr "Feldtyp"
 
-#: aleksis/core/models.py:463
+#: aleksis/core/models.py:463 aleksis/core/models.py:468
 msgid "Required"
 msgstr "Pflichtfeld"
 
-#: aleksis/core/models.py:464
+#: aleksis/core/models.py:464 aleksis/core/models.py:469
 msgid "Help text / description"
 msgstr "Hilfetext/Beschreibung"
 
-#: aleksis/core/models.py:470
+#: aleksis/core/models.py:470 aleksis/core/models.py:475
 msgid "Addtitional field for groups"
 msgstr "Zusätzliche Felder für Gruppen"
 
-#: aleksis/core/models.py:471
+#: aleksis/core/models.py:471 aleksis/core/models.py:476
 msgid "Addtitional fields for groups"
 msgstr "Zusätzliche Felder für Gruppen"
 
-#: aleksis/core/models.py:491
+#: aleksis/core/models.py:491 aleksis/core/models.py:496
 msgid "Can assign child groups to groups"
 msgstr "Kann Kindgruppen zu Gruppen zuordnen"
 
-#: aleksis/core/models.py:492
+#: aleksis/core/models.py:492 aleksis/core/models.py:497
 msgid "Can view statistics about group."
 msgstr "Kann Statistiken über Gruppen sehen."
 
-#: aleksis/core/models.py:504
+#: aleksis/core/models.py:504 aleksis/core/models.py:509
 msgid "Long name"
 msgstr "Langname"
 
 #: aleksis/core/models.py:514 aleksis/core/templates/core/group/full.html:85
+#: aleksis/core/models.py:519 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr "Mitglieder"
 
 #: aleksis/core/models.py:517 aleksis/core/templates/core/group/full.html:82
+#: aleksis/core/models.py:522 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr "Leiter/-innen"
 
 #: aleksis/core/models.py:524 aleksis/core/templates/core/group/full.html:55
+#: aleksis/core/models.py:529 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr "Übergeordnete Gruppen"
 
-#: aleksis/core/models.py:532
+#: aleksis/core/models.py:532 aleksis/core/models.py:537
 msgid "Type of group"
 msgstr "Gruppentyp"
 
 #: aleksis/core/models.py:718 aleksis/core/models.py:742
 #: aleksis/core/models.py:833
 #: aleksis/core/templates/core/announcement/list.html:18
+#: aleksis/core/models.py:723 aleksis/core/models.py:747
+#: aleksis/core/models.py:838
 msgid "Title"
 msgstr "Titel"
 
-#: aleksis/core/models.py:721
+#: aleksis/core/models.py:721 aleksis/core/models.py:726
 msgid "Application"
 msgstr "Anwendung"
 
-#: aleksis/core/models.py:727
+#: aleksis/core/models.py:727 aleksis/core/models.py:732
 msgid "Activity"
 msgstr "Aktivität"
 
-#: aleksis/core/models.py:728
+#: aleksis/core/models.py:728 aleksis/core/models.py:733
 msgid "Activities"
 msgstr "Aktivitäten"
 
-#: aleksis/core/models.py:734
+#: aleksis/core/models.py:734 aleksis/core/models.py:739
 msgid "Sender"
 msgstr "Absender"
 
-#: aleksis/core/models.py:739
+#: aleksis/core/models.py:739 aleksis/core/models.py:744
 msgid "Recipient"
 msgstr "Empfänger"
 
 #: aleksis/core/models.py:744 aleksis/core/models.py:1071
+#: aleksis/core/models.py:749 aleksis/core/models.py:1078
 msgid "Link"
 msgstr "Link"
 
-#: aleksis/core/models.py:746
+#: aleksis/core/models.py:746 aleksis/core/models.py:751
 msgid "Send notification at"
 msgstr "Benachrichtigung schicken am"
 
-#: aleksis/core/models.py:748
+#: aleksis/core/models.py:748 aleksis/core/models.py:753
 msgid "Read"
 msgstr "Gelesen"
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:749 aleksis/core/models.py:754
 msgid "Sent"
 msgstr "Versandt"
 
-#: aleksis/core/models.py:766
+#: aleksis/core/models.py:766 aleksis/core/models.py:771
 msgid "Notification"
 msgstr "Benachrichtigung"
 
 #: aleksis/core/models.py:767 aleksis/core/preferences.py:29
 #: aleksis/core/templates/core/base.html:81
 #: aleksis/core/templates/core/notifications.html:4
-#: aleksis/core/templates/core/notifications.html:5
+#: aleksis/core/templates/core/notifications.html:5 aleksis/core/models.py:772
 msgid "Notifications"
 msgstr "Benachrichtigungen"
 
-#: aleksis/core/models.py:835
+#: aleksis/core/models.py:835 aleksis/core/models.py:840
 msgid "Link to detailed view"
 msgstr "Link zur detaillierten Ansicht"
 
-#: aleksis/core/models.py:838
+#: aleksis/core/models.py:838 aleksis/core/models.py:843
 msgid "Date and time from when to show"
 msgstr "Datum und Uhrzeit des Anzeigestarts"
 
-#: aleksis/core/models.py:841
+#: aleksis/core/models.py:841 aleksis/core/models.py:846
 msgid "Date and time until when to show"
 msgstr "Anzeigezeitraum"
 
-#: aleksis/core/models.py:866
+#: aleksis/core/models.py:866 aleksis/core/models.py:871
 msgid "Announcement"
 msgstr "Ankündigung"
 
-#: aleksis/core/models.py:904
+#: aleksis/core/models.py:904 aleksis/core/models.py:909
 msgid "Announcement recipient"
 msgstr "Empfänger der Ankündigung"
 
-#: aleksis/core/models.py:905
+#: aleksis/core/models.py:905 aleksis/core/models.py:910
 msgid "Announcement recipients"
 msgstr "Empfänger der Ankündigung"
 
-#: aleksis/core/models.py:927
+#: aleksis/core/models.py:927 aleksis/core/models.py:932
 msgid "Widget Title"
 msgstr "Widget-Titel"
 
-#: aleksis/core/models.py:928
+#: aleksis/core/models.py:928 aleksis/core/models.py:933
 msgid "Activate Widget"
 msgstr "Widget aktivieren"
 
-#: aleksis/core/models.py:929
+#: aleksis/core/models.py:929 aleksis/core/models.py:934
 msgid "Widget is broken"
 msgstr "Widget ist kaputt"
 
-#: aleksis/core/models.py:932
+#: aleksis/core/models.py:932 aleksis/core/models.py:937
 msgid "Size on mobile devices"
 msgstr "Größe auf Mobilgeräten"
 
-#: aleksis/core/models.py:933
+#: aleksis/core/models.py:933 aleksis/core/models.py:938
 msgid "<= 600 px, 12 columns"
 msgstr "<= 600 px, 12 Spalten"
 
-#: aleksis/core/models.py:938
+#: aleksis/core/models.py:938 aleksis/core/models.py:943
 msgid "Size on tablet devices"
 msgstr "Größe auf Tablets"
 
-#: aleksis/core/models.py:939
+#: aleksis/core/models.py:939 aleksis/core/models.py:944
 msgid "> 600 px, 12 columns"
 msgstr "> 600px, 12 Spalten"
 
-#: aleksis/core/models.py:944
+#: aleksis/core/models.py:944 aleksis/core/models.py:949
 msgid "Size on desktop devices"
 msgstr "Größe auf Desktopgeräten"
 
-#: aleksis/core/models.py:945
+#: aleksis/core/models.py:945 aleksis/core/models.py:950
 msgid "> 992 px, 12 columns"
 msgstr "> 992 px, 12 Spalten"
 
-#: aleksis/core/models.py:950
+#: aleksis/core/models.py:950 aleksis/core/models.py:955
 msgid "Size on large desktop devices"
 msgstr "Größe auf großen Desktopgeräten"
 
-#: aleksis/core/models.py:951
+#: aleksis/core/models.py:951 aleksis/core/models.py:956
 msgid "> 1200 px>, 12 columns"
 msgstr "> 1200 px, 12 Spalten"
 
-#: aleksis/core/models.py:982
+#: aleksis/core/models.py:982 aleksis/core/models.py:987
 msgid "Can edit default dashboard"
 msgstr "Kann Standarddashboard bearbeiten"
 
-#: aleksis/core/models.py:983
+#: aleksis/core/models.py:983 aleksis/core/models.py:988
 msgid "Dashboard Widget"
 msgstr "Dashboard-Widget"
 
-#: aleksis/core/models.py:984
+#: aleksis/core/models.py:984 aleksis/core/models.py:989
 msgid "Dashboard Widgets"
 msgstr "Dashboard-Widgets"
 
-#: aleksis/core/models.py:990
+#: aleksis/core/models.py:990 aleksis/core/models.py:995
 msgid "URL"
 msgstr "URL"
 
-#: aleksis/core/models.py:991
+#: aleksis/core/models.py:991 aleksis/core/models.py:996
 msgid "Icon URL"
 msgstr "Symbol-URL"
 
-#: aleksis/core/models.py:997
+#: aleksis/core/models.py:997 aleksis/core/models.py:1002
 msgid "External link widget"
 msgstr "Externer-Link-Widget"
 
-#: aleksis/core/models.py:998
+#: aleksis/core/models.py:998 aleksis/core/models.py:1003
 msgid "External link widgets"
 msgstr "Externer-Link-Widgets"
 
-#: aleksis/core/models.py:1004
+#: aleksis/core/models.py:1004 aleksis/core/models.py:1009
 msgid "Content"
 msgstr "Inhalt"
 
-#: aleksis/core/models.py:1010
+#: aleksis/core/models.py:1010 aleksis/core/models.py:1015
 msgid "Static content widget"
 msgstr "Statischer-Inhalt-Widget"
 
-#: aleksis/core/models.py:1011
+#: aleksis/core/models.py:1011 aleksis/core/models.py:1016
 msgid "Static content widgets"
 msgstr "Statischer-Inhalt-Widgets"
 
-#: aleksis/core/models.py:1016
+#: aleksis/core/models.py:1016 aleksis/core/models.py:1021
 msgid "Dashboard widget"
 msgstr "Dashboard-Widget"
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:1021 aleksis/core/models.py:1026
 msgid "Order"
 msgstr "Reihenfolge"
 
-#: aleksis/core/models.py:1022
+#: aleksis/core/models.py:1022 aleksis/core/models.py:1027
 msgid "Part of the default dashboard"
 msgstr "Teil des Standarddashboards"
 
-#: aleksis/core/models.py:1037
+#: aleksis/core/models.py:1037 aleksis/core/models.py:1042
 msgid "Dashboard widget order"
 msgstr "Reihenfolge der Dashboard-Widgets"
 
-#: aleksis/core/models.py:1038
+#: aleksis/core/models.py:1038 aleksis/core/models.py:1043
 msgid "Dashboard widget orders"
 msgstr "Reihenfolgen der Dashboard-Widgets"
 
-#: aleksis/core/models.py:1044
+#: aleksis/core/models.py:1044 aleksis/core/models.py:1049
 msgid "Menu ID"
 msgstr "Menü-ID"
 
-#: aleksis/core/models.py:1057
+#: aleksis/core/models.py:1057 aleksis/core/models.py:1062
 msgid "Custom menu"
 msgstr "Benutzerdefiniertes Menü"
 
-#: aleksis/core/models.py:1058
+#: aleksis/core/models.py:1058 aleksis/core/models.py:1063
 msgid "Custom menus"
 msgstr "Benutzerdefinierte Menüs"
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:1068 aleksis/core/models.py:1075
 msgid "Menu"
 msgstr "Menü"
 
 #: aleksis/core/models.py:1072 aleksis/core/models.py:1320
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
+#: aleksis/core/models.py:1079 aleksis/core/models.py:1330
 msgid "Icon"
 msgstr "Symbol"
 
-#: aleksis/core/models.py:1078
+#: aleksis/core/models.py:1078 aleksis/core/models.py:1085
 msgid "Custom menu item"
 msgstr "Benutzerdefiniertes Menüelement"
 
-#: aleksis/core/models.py:1079
+#: aleksis/core/models.py:1079 aleksis/core/models.py:1086
 msgid "Custom menu items"
 msgstr "Benutzerdefinierte Menüelemente"
 
-#: aleksis/core/models.py:1093
+#: aleksis/core/models.py:1093 aleksis/core/models.py:1103
 msgid "Title of type"
 msgstr "Titel des Typs"
 
 #: aleksis/core/models.py:1100 aleksis/core/templates/core/group/full.html:47
+#: aleksis/core/models.py:1110 aleksis/core/templates/core/group/full.html:50
 msgid "Group type"
 msgstr "Gruppentyp"
 
-#: aleksis/core/models.py:1114
+#: aleksis/core/models.py:1114 aleksis/core/models.py:1124
 msgid "Can view system status"
 msgstr "Kann Systemstatus sehen"
 
-#: aleksis/core/models.py:1115
+#: aleksis/core/models.py:1115 aleksis/core/models.py:1125
 msgid "Can manage data"
 msgstr "Kann Daten verwalten"
 
-#: aleksis/core/models.py:1116
+#: aleksis/core/models.py:1116 aleksis/core/models.py:1126
 msgid "Can impersonate"
 msgstr "Kann sich verkleiden"
 
-#: aleksis/core/models.py:1117
+#: aleksis/core/models.py:1117 aleksis/core/models.py:1127
 msgid "Can use search"
 msgstr "Kann Suche benutzen"
 
-#: aleksis/core/models.py:1118
+#: aleksis/core/models.py:1118 aleksis/core/models.py:1128
 msgid "Can change site preferences"
 msgstr "Kann Konfiguration ändern"
 
-#: aleksis/core/models.py:1119
+#: aleksis/core/models.py:1119 aleksis/core/models.py:1129
 msgid "Can change person preferences"
 msgstr "Kann Einstellungen einer Person verändern"
 
-#: aleksis/core/models.py:1120
+#: aleksis/core/models.py:1120 aleksis/core/models.py:1130
 msgid "Can change group preferences"
 msgstr "Kann Einstellungen einer Gruppe verändern"
 
-#: aleksis/core/models.py:1121
+#: aleksis/core/models.py:1121 aleksis/core/models.py:1131
 msgid "Can test PDF generation"
 msgstr "Kann die PDF-Generierung testen"
 
-#: aleksis/core/models.py:1122
+#: aleksis/core/models.py:1122 aleksis/core/models.py:1132
 msgid "Can invite persons"
 msgstr "Kann Personen einladen"
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1158 aleksis/core/models.py:1168
 msgid "Related data check task"
 msgstr "Zugehörige Datenprüfungsaufgabe"
 
-#: aleksis/core/models.py:1166
+#: aleksis/core/models.py:1166 aleksis/core/models.py:1176
 msgid "Issue solved"
 msgstr "Problem gelöst"
 
-#: aleksis/core/models.py:1167
+#: aleksis/core/models.py:1167 aleksis/core/models.py:1177
 msgid "Notification sent"
 msgstr "Benachrichtigung gesendet"
 
-#: aleksis/core/models.py:1180
+#: aleksis/core/models.py:1180 aleksis/core/models.py:1190
 msgid "Data check result"
 msgstr "Datenprüfungsergebnis"
 
-#: aleksis/core/models.py:1181
+#: aleksis/core/models.py:1181 aleksis/core/models.py:1191
 msgid "Data check results"
 msgstr "Datenprüfungsergebnisse"
 
-#: aleksis/core/models.py:1183
+#: aleksis/core/models.py:1183 aleksis/core/models.py:1193
 msgid "Can run data checks"
 msgstr "Kann Datenprüfungen ausführen"
 
-#: aleksis/core/models.py:1184
+#: aleksis/core/models.py:1184 aleksis/core/models.py:1194
 msgid "Can solve data check problems"
 msgstr "Kann Datenprüfungsprobleme lösen"
 
-#: aleksis/core/models.py:1191
+#: aleksis/core/models.py:1191 aleksis/core/models.py:1201
 msgid "E-Mail address"
 msgstr "E-Mail-Adresse"
 
-#: aleksis/core/models.py:1223
+#: aleksis/core/models.py:1223 aleksis/core/models.py:1233
 msgid "Owner"
 msgstr "Leiter"
 
-#: aleksis/core/models.py:1227
+#: aleksis/core/models.py:1227 aleksis/core/models.py:1237
 msgid "File expires at"
 msgstr "Datei abgelaufen am"
 
-#: aleksis/core/models.py:1229
+#: aleksis/core/models.py:1229 aleksis/core/models.py:1239
 msgid "Generated HTML file"
 msgstr "Generierte HTML-Datei"
 
-#: aleksis/core/models.py:1231
+#: aleksis/core/models.py:1231 aleksis/core/models.py:1241
 msgid "Generated PDF file"
 msgstr "Generierte PDF-Datei"
 
-#: aleksis/core/models.py:1238
+#: aleksis/core/models.py:1238 aleksis/core/models.py:1248
 msgid "PDF file"
 msgstr "PDF-Datei"
 
-#: aleksis/core/models.py:1239
+#: aleksis/core/models.py:1239 aleksis/core/models.py:1249
 msgid "PDF files"
 msgstr "PDF-Dateien"
 
-#: aleksis/core/models.py:1244
+#: aleksis/core/models.py:1244 aleksis/core/models.py:1254
 msgid "Task result"
 msgstr "Task-Ergebnis"
 
-#: aleksis/core/models.py:1247
+#: aleksis/core/models.py:1247 aleksis/core/models.py:1257
 msgid "Task user"
 msgstr "Task-Benutzer"
 
-#: aleksis/core/models.py:1259
+#: aleksis/core/models.py:1259 aleksis/core/models.py:1269
 msgid "Task user assignment"
 msgstr "Task-Benutzer-Zuordnung"
 
-#: aleksis/core/models.py:1260
+#: aleksis/core/models.py:1260 aleksis/core/models.py:1270
 msgid "Task user assignments"
 msgstr "Task-Benutzer-Zuordnungen"
 
-#: aleksis/core/models.py:1276
+#: aleksis/core/models.py:1276 aleksis/core/models.py:1286
 msgid "Additional attributes"
 msgstr "Zusätzliche Attribute"
 
-#: aleksis/core/models.py:1314
+#: aleksis/core/models.py:1314 aleksis/core/models.py:1324
 msgid "Allowed scopes that clients can request"
 msgstr "Erlaubte Scopes, die ein Client anfordern kann"
 
-#: aleksis/core/models.py:1324
-msgid "This image will be shown as icon in the authorization flow. It should be squared."
-msgstr "Dieses Bild wird im Autorisierungs-Vorgang als Symbol angezeigt werden. Es sollte rechteckig sein."
+#: aleksis/core/models.py:1324 aleksis/core/models.py:1334
+msgid ""
+"This image will be shown as icon in the authorization flow. It should be "
+"squared."
+msgstr ""
+"Dieses Bild wird im Autorisierungs-Vorgang als Symbol angezeigt werden. Es "
+"sollte rechteckig sein."
 
-#: aleksis/core/models.py:1373
+#: aleksis/core/models.py:1373 aleksis/core/models.py:1383
 msgid "UUID"
 msgstr "UUID"
 
-#: aleksis/core/models.py:1377
+#: aleksis/core/models.py:1377 aleksis/core/models.py:1387
 msgid "Selected ICal feed"
 msgstr "Ausgewählter iCal-Feed"
 
-#: aleksis/core/models.py:1386
+#: aleksis/core/models.py:1386 aleksis/core/models.py:1396
 msgid "Personal Calendar URL"
 msgstr "Persönliche Kalender-URL"
 
-#: aleksis/core/models.py:1387
+#: aleksis/core/models.py:1387 aleksis/core/models.py:1397
 msgid "Personal Calendar URLs"
 msgstr "Persönliche Kalender-URLs"
 
@@ -1137,8 +1192,11 @@ msgid "Automatically create new persons for new users"
 msgstr "Erstelle automatisch neue Personen für neue Benutzer"
 
 #: aleksis/core/preferences.py:241
-msgid "Automatically link existing persons to new users by their e-mail address"
-msgstr "Verknüpfe existierende Personen automatisch mit neuen Personen anhand ihrer E-Mail-Adresse"
+msgid ""
+"Automatically link existing persons to new users by their e-mail address"
+msgstr ""
+"Verknüpfe existierende Personen automatisch mit neuen Personen anhand ihrer "
+"E-Mail-Adresse"
 
 #: aleksis/core/preferences.py:252
 msgid "Display name of the school"
@@ -1146,7 +1204,8 @@ msgstr "Sichtbarer Name der Schule"
 
 #: aleksis/core/preferences.py:263
 msgid "Official name of the school, e.g. as given by supervisory authority"
-msgstr "Offizieller Name der Schule, wie er z.B. von der Behörde vorgegeben ist"
+msgstr ""
+"Offizieller Name der Schule, wie er z.B. von der Behörde vorgegeben ist"
 
 #: aleksis/core/preferences.py:271
 msgid "Allow users to change their passwords"
@@ -1184,67 +1243,72 @@ msgstr "Erlaubte Grant Flows für OAuth-Anwendungen"
 msgid "Available languages"
 msgstr "Verfügbare Sprachen"
 
-#: aleksis/core/preferences.py:357
+#: aleksis/core/preferences.py:357 aleksis/core/preferences.py:343
 msgid "Send emails if data checks detect problems"
 msgstr "E-Mails versenden, wenn Datenprüfungen Probleme finden"
 
-#: aleksis/core/preferences.py:368
+#: aleksis/core/preferences.py:368 aleksis/core/preferences.py:354
 msgid "Email recipients for data checks problem emails"
 msgstr "E-Mailempfänger für Datenprüfungsproblem-E-Mails"
 
-#: aleksis/core/preferences.py:379
+#: aleksis/core/preferences.py:379 aleksis/core/preferences.py:365
 msgid "Email recipient groups for data checks problem emails"
 msgstr "E-Mail-Empfängergruppen für Datenprüfungsproblem-E-Mails"
 
-#: aleksis/core/preferences.py:388
+#: aleksis/core/preferences.py:388 aleksis/core/preferences.py:374
 msgid "Show dashboard to users without login"
 msgstr "Zeige Dashboard für Benutzer ohne Login"
 
-#: aleksis/core/preferences.py:397
+#: aleksis/core/preferences.py:397 aleksis/core/preferences.py:383
 msgid "Allow users to edit their dashboard"
 msgstr "Erlaube Benutzern, ihr Dashboard zu bearbeiten"
 
-#: aleksis/core/preferences.py:408
+#: aleksis/core/preferences.py:408 aleksis/core/preferences.py:394
 msgid "Fields on person model which are editable by themselves."
 msgstr "Felder des Personen-Models welche von ihnen selbst editierbar sind."
 
-#: aleksis/core/preferences.py:423
-msgid "Editable fields on person model which should trigger a notification on change"
-msgstr "Editierbare Felder des Personen-Models welche eine Benachrichtigung für Änderungen auslösen soll"
+#: aleksis/core/preferences.py:423 aleksis/core/preferences.py:409
+msgid ""
+"Editable fields on person model which should trigger a notification on change"
+msgstr ""
+"Editierbare Felder des Personen-Models welche eine Benachrichtigung für "
+"Änderungen auslösen soll"
 
-#: aleksis/core/preferences.py:437
+#: aleksis/core/preferences.py:437 aleksis/core/preferences.py:423
 msgid "Contact for notification if a person changes their data"
 msgstr "Kontakt für Benachrichtigung, wenn eine Person ihre Daten ändert"
 
-#: aleksis/core/preferences.py:448
+#: aleksis/core/preferences.py:448 aleksis/core/preferences.py:434
 msgid "Prefer personal photos over avatars"
 msgstr "Persönliche Fotos Avataren vorziehen"
 
-#: aleksis/core/preferences.py:458
+#: aleksis/core/preferences.py:458 aleksis/core/preferences.py:444
 msgid "PDF file expiration duration"
 msgstr "PDF-Datei-Ablaufdauer"
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:459 aleksis/core/preferences.py:445
 msgid "in minutes"
 msgstr "in Minuten"
 
-#: aleksis/core/preferences.py:469
+#: aleksis/core/preferences.py:469 aleksis/core/preferences.py:455
 msgid "Automatically update the dashboard and its widgets"
 msgstr "Automatisch das Dashboard und seine Widgets aktualisieren"
 
-#: aleksis/core/preferences.py:479
+#: aleksis/core/preferences.py:479 aleksis/core/preferences.py:465
 msgid "Automatically update the dashboard and its widgets sitewide"
-msgstr "Automatisch das Dashboard und seine Widgets aktualisieren (auf der ganzen Seite)"
+msgstr ""
+"Automatisch das Dashboard und seine Widgets aktualisieren (auf der ganzen "
+"Seite)"
 
-#: aleksis/core/preferences.py:489
+#: aleksis/core/preferences.py:489 aleksis/core/preferences.py:475
 msgid "Country for phone number parsing"
 msgstr "Land für das Einlesen von Telefonnummern"
 
-#: aleksis/core/settings.py:540
+#: aleksis/core/settings.py:540 aleksis/core/settings.py:541
 msgid "English"
 msgstr "Englisch"
 
-#: aleksis/core/settings.py:541
+#: aleksis/core/settings.py:541 aleksis/core/settings.py:542
 msgid "German"
 msgstr "Deutsch"
 
@@ -1254,12 +1318,15 @@ msgstr "Deutsch"
 #: aleksis/core/templates/core/person/full.html:26
 #: aleksis/core/templates/core/person/full.html:86
 #: aleksis/core/templates/oauth2_provider/application/detail.html:17
+#: aleksis/core/tables.py:25 aleksis/core/templates/core/group/full.html:26
 msgid "Edit"
 msgstr "Bearbeiten"
 
 #: aleksis/core/tables.py:26 aleksis/core/tables.py:94
 #: aleksis/core/tables.py:138
 #: aleksis/core/templates/core/announcement/list.html:22
+#: aleksis/core/tables.py:27 aleksis/core/tables.py:148
+#: aleksis/core/tables.py:192
 msgid "Actions"
 msgstr "Aktionen"
 
@@ -1272,6 +1339,9 @@ msgstr "Aktionen"
 #: aleksis/core/templates/core/person/full.html:33
 #: aleksis/core/templates/core/person/full.html:93
 #: aleksis/core/templates/oauth2_provider/application/detail.html:21
+#: aleksis/core/tables.py:115 aleksis/core/tables.py:116
+#: aleksis/core/tables.py:130 aleksis/core/tables.py:146
+#: aleksis/core/tables.py:190 aleksis/core/templates/core/group/full.html:33
 msgid "Delete"
 msgstr "Löschen"
 
@@ -1292,12 +1362,14 @@ msgstr ""
 #: aleksis/core/templates/403.html:19 aleksis/core/templates/404.html:16
 msgid ""
 "\n"
-"            If you think this is an error in AlekSIS, please contact your site\n"
+"            If you think this is an error in AlekSIS, please contact your "
+"site\n"
 "            administrators:\n"
 "          "
 msgstr ""
 "\n"
-"            Wenn Sie der Meinung sind, dass es sich um einen Fehler in AlekSIS handelt, kontaktieren Sie bitte einen Ihrer\n"
+"            Wenn Sie der Meinung sind, dass es sich um einen Fehler in "
+"AlekSIS handelt, kontaktieren Sie bitte einen Ihrer\n"
 "     Systemadministratoren:\n"
 "          "
 
@@ -1309,7 +1381,8 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Wenn Sie über einen Link auf einer externen Seite hierher gelangt sind,\n"
+"            Wenn Sie über einen Link auf einer externen Seite hierher "
+"gelangt sind,\n"
 "      ist es möglich, dass dieser veraltet war.\n"
 "          "
 
@@ -1324,12 +1397,14 @@ msgstr ""
 #: aleksis/core/templates/500.html:13
 msgid ""
 "\n"
-"            Your site administrators will automatically be notified about this\n"
+"            Your site administrators will automatically be notified about "
+"this\n"
 "            error. You can also contact them directly:\n"
 "          "
 msgstr ""
 "\n"
-"            Ihre Administratoren werden automatisch über diesen Fehler informiert.\n"
+"            Ihre Administratoren werden automatisch über diesen Fehler "
+"informiert.\n"
 "      Sie können diese auch direkt kontaktieren:\n"
 "          "
 
@@ -1348,11 +1423,13 @@ msgstr ""
 #: aleksis/core/templates/503.html:13
 msgid ""
 "\n"
-"            This page is currently unavailable. If this error persists, contact your site administrators:\n"
+"            This page is currently unavailable. If this error persists, "
+"contact your site administrators:\n"
 "          "
 msgstr ""
 "\n"
-"            Diese Seite ist aktuell nicht erreichbar. Wenn dieser Fehler bestehen bleibt, kontaktieren Sie bitte einen Ihrer Systemadministratoren:\n"
+"            Diese Seite ist aktuell nicht erreichbar. Wenn dieser Fehler "
+"bestehen bleibt, kontaktieren Sie bitte einen Ihrer Systemadministratoren:\n"
 "          "
 
 #: aleksis/core/templates/account/account_inactive.html:5
@@ -1393,17 +1470,27 @@ msgstr "Bestätigen"
 
 #: aleksis/core/templates/account/email_confirm.html:12
 #, python-format
-msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an e-mail address for user %(user_display)s."
-msgstr "Bitte bestätigen Sie, dass <a href=\"mailto:%(email)s\">%(email)s</a> eine E-Mail-Adresse für den Benutzer %(user_display)s ist."
+msgid ""
+"Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an e-mail "
+"address for user %(user_display)s."
+msgstr ""
+"Bitte bestätigen Sie, dass <a href=\"mailto:%(email)s\">%(email)s</a> eine E-"
+"Mail-Adresse für den Benutzer %(user_display)s ist."
 
 #: aleksis/core/templates/account/email_confirm.html:25
 #, python-format
-msgid "This e-mail confirmation link expired or is invalid. Please <a href=\"%(email_url)s\">issue a new e-mail confirmation request</a>."
-msgstr "Dieser E-Mail-Bestätigungslink ist abgelaufen oder nicht gültig. Bitte <a href=\"%(email_url)s\">fragen Sie eine neue E-Mail-Bestätigung an</a>."
+msgid ""
+"This e-mail confirmation link expired or is invalid. Please <a href="
+"\"%(email_url)s\">issue a new e-mail confirmation request</a>."
+msgstr ""
+"Dieser E-Mail-Bestätigungslink ist abgelaufen oder nicht gültig. Bitte <a "
+"href=\"%(email_url)s\">fragen Sie eine neue E-Mail-Bestätigung an</a>."
 
 #: aleksis/core/templates/account/password_change.html:12
 msgid "Forgot your current password? Click here to reset it:"
-msgstr "Haben Sie Ihr aktuelles Passwort vergessen? Klicken Sie hier, um es zurückzusetzen:"
+msgstr ""
+"Haben Sie Ihr aktuelles Passwort vergessen? Klicken Sie hier, um es "
+"zurückzusetzen:"
 
 #: aleksis/core/templates/account/password_change.html:12
 msgid "Forgot Password?"
@@ -1422,11 +1509,13 @@ msgstr "Passwortänderung deaktiviert."
 msgid ""
 "\n"
 "            Users are not allowed to edit their own passwords. If you think\n"
-"            this is an error please contact one of your site administrators.\n"
+"            this is an error please contact one of your site "
+"administrators.\n"
 "          "
 msgstr ""
 "\n"
-"            Benutzer dürfen ihre eigenen Passwörter nicht ändern. Wenn Sie denken, \n"
+"            Benutzer dürfen ihre eigenen Passwörter nicht ändern. Wenn Sie "
+"denken, \n"
 "dass dies ein Fehler ist, kontaktieren Sie bitte einen der Administratoren:\n"
 "          "
 
@@ -1441,8 +1530,12 @@ msgid "Reset password"
 msgstr "Passwort zurücksetzen"
 
 #: aleksis/core/templates/account/password_reset.html:17
-msgid "Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it."
-msgstr "Passwort vergessen? Geben Sie Ihre E-Mail-Adresse hier ein und wir werden Ihnen eine E-Mail zum Zurücksetzen des Passwortes schicken."
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll send you "
+"an e-mail allowing you to reset it."
+msgstr ""
+"Passwort vergessen? Geben Sie Ihre E-Mail-Adresse hier ein und wir werden "
+"Ihnen eine E-Mail zum Zurücksetzen des Passwortes schicken."
 
 #: aleksis/core/templates/account/password_reset.html:30
 msgid ""
@@ -1465,7 +1558,8 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Wir haben Ihnen eine E-Mail gesendet. Bitte kontaktieren Sie einen der Administratoren,\n"
+"            Wir haben Ihnen eine E-Mail gesendet. Bitte kontaktieren Sie "
+"einen der Administratoren,\n"
 "wenn Sie diese nicht innerhalb weniger Minuten erhalten.\n"
 "          "
 
@@ -1477,12 +1571,16 @@ msgstr "Ungültiges Token"
 #, python-format
 msgid ""
 "\n"
-"              The password reset link was invalid, possibly because it has already been used. Please request a <a href=\"%(passwd_reset_url)s\"\n"
+"              The password reset link was invalid, possibly because it has "
+"already been used. Please request a <a href=\"%(passwd_reset_url)s\"\n"
 "              class=\"blue-text text-lighten-2\">new password reset</a>.\n"
 "            "
 msgstr ""
 "\n"
-"              Der Link zum Zurücksetzen des Passwortes war falsch, wahrscheinlich, weil er bereits benutzt wurde. Bitte starten Sie eine neue Anfrage <a href=\"%(passwd_reset_url)s\"              class=\"blue-text text-lighten-2\">zum Zurücksetzen des Passwortes</a>.\n"
+"              Der Link zum Zurücksetzen des Passwortes war falsch, "
+"wahrscheinlich, weil er bereits benutzt wurde. Bitte starten Sie eine neue "
+"Anfrage <a href=\"%(passwd_reset_url)s\"              class=\"blue-text text-"
+"lighten-2\">zum Zurücksetzen des Passwortes</a>.\n"
 "            "
 
 #: aleksis/core/templates/account/password_reset_from_key.html:25
@@ -1531,8 +1629,11 @@ msgstr "Registrierung"
 
 #: aleksis/core/templates/account/signup.html:12
 #, python-format
-msgid "Already have an account? Then please <a href=\"%(login_url)s\">sign in</a>."
-msgstr "Haben Sie bereits ein Konto? Dann <a href=\"%(login_url)s\">melden Sie sich bitte an</a>."
+msgid ""
+"Already have an account? Then please <a href=\"%(login_url)s\">sign in</a>."
+msgstr ""
+"Haben Sie bereits ein Konto? Dann <a href=\"%(login_url)s\">melden Sie sich "
+"bitte an</a>."
 
 #: aleksis/core/templates/account/signup_closed.html:5
 #: aleksis/core/templates/account/signup_closed.html:6
@@ -1551,7 +1652,8 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Die Registrierung ist aktuell geschlossen. Wenn Sie denken, dass dies ein Fehler ist,\n"
+"            Die Registrierung ist aktuell geschlossen. Wenn Sie denken, dass "
+"dies ein Fehler ist,\n"
 " kontaktieren Sie bitte einen Ihrer Systemadministratoren.\n"
 "          "
 
@@ -1571,13 +1673,17 @@ msgstr "Verifizieren Sie Ihre E-Mail!"
 #: aleksis/core/templates/account/verification_sent.html:16
 msgid ""
 "\n"
-"            This part of the site requires us to verify that you are who you claim to be.\n"
-"            For this purpose, we require that you verify ownership of your e-mail address.\n"
+"            This part of the site requires us to verify that you are who you "
+"claim to be.\n"
+"            For this purpose, we require that you verify ownership of your e-"
+"mail address.\n"
 "          "
 msgstr ""
 "\n"
-"            Dieser Teil der Anwendung setzt voraus, dass wir verifizieren, dass Sie die Person sind, die sie vorgeben, zu sein.\n"
-"Zu diesem Zweck setzen wir voraus, dass Sie die Inhaberschaft Ihrer E-Mail-Adresse bestätigen.\n"
+"            Dieser Teil der Anwendung setzt voraus, dass wir verifizieren, "
+"dass Sie die Person sind, die sie vorgeben, zu sein.\n"
+"Zu diesem Zweck setzen wir voraus, dass Sie die Inhaberschaft Ihrer E-Mail-"
+"Adresse bestätigen.\n"
 "          "
 
 #: aleksis/core/templates/account/verification_sent.html:22
@@ -1591,7 +1697,8 @@ msgstr ""
 "\n"
 "            Wir haben Ihnen eine E-Mail zur Verifizierung geschickt.\n"
 "Bitte klicken Sie auf den Link in dieser E-Mail.\n"
-"Bitte kontaktieren Sie uns, wenn Sie diese nicht binnen weniger Minuten erhalten.\n"
+"Bitte kontaktieren Sie uns, wenn Sie diese nicht binnen weniger Minuten "
+"erhalten.\n"
 "          "
 
 #: aleksis/core/templates/core/additional_field/edit.html:6
@@ -1672,7 +1779,8 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Es ist ein Problem dabei aufgetreten, das Widget \"%(title)s\" zu laden.\n"
+"            Es ist ein Problem dabei aufgetreten, das Widget \"%(title)s\" "
+"zu laden.\n"
 "Sie brauchen nichts weiter machen.\n"
 "          "
 
@@ -1768,29 +1876,42 @@ msgstr "Dashboard bearbeiten"
 #: aleksis/core/templates/core/edit_dashboard.html:24
 msgid ""
 "\n"
-"          On this page you can arrange your personal dashboard. You can drag any items from \"Available widgets\" to \"Your\n"
-"          Dashboard\" or change the order by moving the widgets. After you have finished, please don't forget to click on\n"
+"          On this page you can arrange your personal dashboard. You can drag "
+"any items from \"Available widgets\" to \"Your\n"
+"          Dashboard\" or change the order by moving the widgets. After you "
+"have finished, please don't forget to click on\n"
 "          \"Save\".\n"
 "        "
 msgstr ""
 "\n"
-"          Auf dieser Seite können Sie Ihr persönliches Dashboard zusammenstallen. Sie können beliebige Elemente von den \"Verfügbaren Widgets\" \n"
-"in \"Ihr Dashboard\" ziehen oder die Reihenfolge verändern, indem Sie die Widgets bewegen. Wenn Sie fertig sind, vergessen Sie bitte nicht, \n"
+"          Auf dieser Seite können Sie Ihr persönliches Dashboard "
+"zusammenstallen. Sie können beliebige Elemente von den \"Verfügbaren Widgets"
+"\" \n"
+"in \"Ihr Dashboard\" ziehen oder die Reihenfolge verändern, indem Sie die "
+"Widgets bewegen. Wenn Sie fertig sind, vergessen Sie bitte nicht, \n"
 "auf \"Speichern\" zu drücken.\n"
 "        "
 
 #: aleksis/core/templates/core/edit_dashboard.html:30
 msgid ""
 "\n"
-"          On this page you can arrange the default dashboard which is shown when a user doesn't arrange his own\n"
-"          dashboard. You can drag any items from \"Available widgets\" to \"Default Dashboard\" or change the order\n"
-"          by moving the widgets. After you have finished, please don't forget to click on \"Save\".\n"
+"          On this page you can arrange the default dashboard which is shown "
+"when a user doesn't arrange his own\n"
+"          dashboard. You can drag any items from \"Available widgets\" to "
+"\"Default Dashboard\" or change the order\n"
+"          by moving the widgets. After you have finished, please don't "
+"forget to click on \"Save\".\n"
 "        "
 msgstr ""
 "\n"
-"          Auf dieser Seite können Sie Ihr das Standard-Dashboard zusammenstallen, welches angezeigt wird, wenn ein Benutzer kein eigenes definiert. \n"
-"Sie können beliebige Elemente von den \"Verfügbaren Widgets\" in \"Standard-Dashboard\" ziehen oder die Reihenfolge verändern, indem Sie die Widgets bewegen. \n"
-"Wenn Sie fertig sind, vergessen Sie bitte nicht, auf \"Speichern\" zu drücken.\n"
+"          Auf dieser Seite können Sie Ihr das Standard-Dashboard "
+"zusammenstallen, welches angezeigt wird, wenn ein Benutzer kein eigenes "
+"definiert. \n"
+"Sie können beliebige Elemente von den \"Verfügbaren Widgets\" in \"Standard-"
+"Dashboard\" ziehen oder die Reihenfolge verändern, indem Sie die Widgets "
+"bewegen. \n"
+"Wenn Sie fertig sind, vergessen Sie bitte nicht, auf \"Speichern\" zu "
+"drücken.\n"
 "        "
 
 #: aleksis/core/templates/core/edit_dashboard.html:48
@@ -1808,12 +1929,15 @@ msgstr "Standard-Dashboard"
 #: aleksis/core/templates/core/group/child_groups.html:18
 msgid ""
 "\n"
-"          You can use this to assign child groups to groups. Please use the filters below to select groups you want to\n"
+"          You can use this to assign child groups to groups. Please use the "
+"filters below to select groups you want to\n"
 "          change and click \"Next\".\n"
 "        "
 msgstr ""
 "\n"
-"          Sie können diese Seite verwenden, um Kindgruppen zu Gruppen zuzuordnen. Bitte nutzen Sie die folgenden Filter, um die Gruppen auszuwählen, die Sie \n"
+"          Sie können diese Seite verwenden, um Kindgruppen zu Gruppen "
+"zuzuordnen. Bitte nutzen Sie die folgenden Filter, um die Gruppen "
+"auszuwählen, die Sie \n"
 "          ändern möchten und klicken auf \"Weiter\".\n"
 "        "
 
@@ -1854,14 +1978,18 @@ msgstr "Bitte seien Sie vorsichtig!"
 #: aleksis/core/templates/core/group/child_groups.html:79
 msgid ""
 "\n"
-"            If you click \"Back\" or \"Next\" the current group assignments are not saved.\n"
-"            If you click \"Save\", you will overwrite all existing child group relations for this group with what you\n"
+"            If you click \"Back\" or \"Next\" the current group assignments "
+"are not saved.\n"
+"            If you click \"Save\", you will overwrite all existing child "
+"group relations for this group with what you\n"
 "            selected on this page.\n"
 "          "
 msgstr ""
 "\n"
-"            Wenn Sie auf \"Zurück\" oder \"Weiter\" klicken, werden die aktuellen Gruppenzuordnungen nicht gespeichert.\n"
-"Wenn Sie auf \"Speichern\" klicken, werden alle existierenden Zuordnungen von Kindgruppen für diese Gruppe\n"
+"            Wenn Sie auf \"Zurück\" oder \"Weiter\" klicken, werden die "
+"aktuellen Gruppenzuordnungen nicht gespeichert.\n"
+"Wenn Sie auf \"Speichern\" klicken, werden alle existierenden Zuordnungen "
+"von Kindgruppen für diese Gruppe\n"
 "mit dem überschrieben, was Sie auf dieser Seite ausgewählt haben.\n"
 "          "
 
@@ -1898,22 +2026,27 @@ msgstr "Gruppe editieren"
 #: aleksis/core/templates/core/group/full.html:38
 #: aleksis/core/templates/core/person/full.html:40
 #: aleksis/core/templates/core/person/full.html:100
+#: aleksis/core/templates/core/group/full.html:40
 msgid "Change preferences"
 msgstr "Einstellungen ändern"
 
 #: aleksis/core/templates/core/group/full.html:64
+#: aleksis/core/templates/core/group/full.html:68
 msgid "Statistics"
 msgstr "Statistiken"
 
 #: aleksis/core/templates/core/group/full.html:67
+#: aleksis/core/templates/core/group/full.html:73
 msgid "Count of members"
 msgstr "Anzahl der Mitglieder"
 
 #: aleksis/core/templates/core/group/full.html:71
+#: aleksis/core/templates/core/group/full.html:81
 msgid "Average age"
 msgstr "Durchschnittsalter"
 
 #: aleksis/core/templates/core/group/full.html:76
+#: aleksis/core/templates/core/group/full.html:90
 msgid "Age range"
 msgstr "Altersbereich"
 
@@ -1978,7 +2111,9 @@ msgid "ICal Feeds"
 msgstr "iCal-Feeds"
 
 #: aleksis/core/templates/core/ical/ical_list.html:8
-msgid "These are URLs for different Calendar Feeds in the iCal (.ics) format. You can create as many as you want and import them in your calendar software."
+msgid ""
+"These are URLs for different Calendar Feeds in the iCal (.ics) format. You "
+"can create as many as you want and import them in your calendar software."
 msgstr ""
 "Dies sind URLs für verschiedene Kalender-Feeds im iCal-Format (.ics). Sie "
 "können so viele erstellen, wie sie wollen, und in Ihre Kalender-Software "
@@ -1995,13 +2130,16 @@ msgstr "Startseite"
 #: aleksis/core/templates/core/index.html:49
 msgid ""
 "\n"
-"        You didn't customise your dashboard so that you see the system default. Please click on \"Edit dashboard\" to\n"
+"        You didn't customise your dashboard so that you see the system "
+"default. Please click on \"Edit dashboard\" to\n"
 "        customise your personal dashboard.\n"
 "      "
 msgstr ""
 "\n"
-"        Sie haben Ihr Dashboard nicht angepasst, sodass Sie das Standard-Dashboard sehen.\n"
-"Bitte klicken Sie auf \"Dashboard bearbeiten\", um Ihr persönliches Dashboard anzupassen.\n"
+"        Sie haben Ihr Dashboard nicht angepasst, sodass Sie das Standard-"
+"Dashboard sehen.\n"
+"Bitte klicken Sie auf \"Dashboard bearbeiten\", um Ihr persönliches "
+"Dashboard anzupassen.\n"
 "      "
 
 #: aleksis/core/templates/core/index.html:59
@@ -2041,25 +2179,31 @@ msgstr "Über AlekSIS"
 #: aleksis/core/templates/core/pages/about.html:17
 msgid ""
 "\n"
-"              This platform is powered by AlekSIS®, a web-based school information system (SIS) which can be used\n"
-"              to manage and/or publish organisational artifacts of educational institutions. AlekSIS is free software and\n"
+"              This platform is powered by AlekSIS®, a web-based school "
+"information system (SIS) which can be used\n"
+"              to manage and/or publish organisational artifacts of "
+"educational institutions. AlekSIS is free software and\n"
 "              can be used by anyone.\n"
 "            "
 msgstr ""
 "\n"
-"              Diese Plattform wird mit AlekSIS®, einem webbasierten Schulinformationssystem (SIS), \n"
-"welches für die Verwaltung und/oder Veröffentlichung von Bildungseinrichtungen verwendet werden kann.\n"
+"              Diese Plattform wird mit AlekSIS®, einem webbasierten "
+"Schulinformationssystem (SIS), \n"
+"welches für die Verwaltung und/oder Veröffentlichung von "
+"Bildungseinrichtungen verwendet werden kann.\n"
 "AlekSIS ist freie Software und kann von jedem benutzt werden.\n"
 "            "
 
 #: aleksis/core/templates/core/pages/about.html:24
 msgid ""
 "\n"
-"              AlekSIS® is a registered trademark of the AlekSIS open source project, represented by Teckids e.V.\n"
+"              AlekSIS® is a registered trademark of the AlekSIS open source "
+"project, represented by Teckids e.V.\n"
 "            "
 msgstr ""
 "\n"
-"              AlekSIS® ist eine eingetragene Wortmarke des Open-Source-Projektes AlekSIS, vertreten durch den Teckids e.V.\n"
+"              AlekSIS® ist eine eingetragene Wortmarke des Open-Source-"
+"Projektes AlekSIS, vertreten durch den Teckids e.V.\n"
 "            "
 
 #: aleksis/core/templates/core/pages/about.html:30
@@ -2077,14 +2221,18 @@ msgstr "Lizenzinformationen"
 #: aleksis/core/templates/core/pages/about.html:42
 msgid ""
 "\n"
-"              The core and the official apps of AlekSIS are licenced under the EUPL, version 1.2 or later. For licence\n"
-"              information from third-party apps, if installed, refer to the respective components below. The\n"
+"              The core and the official apps of AlekSIS are licenced under "
+"the EUPL, version 1.2 or later. For licence\n"
+"              information from third-party apps, if installed, refer to the "
+"respective components below. The\n"
 "              licences are marked like this:\n"
 "            "
 msgstr ""
 "\n"
-"              Der Core und die offiziellen Apps von AlekSIS sind unter der EUPL, Version 1.2 oder später, lizenziert. Für Lizenzinformationen\n"
-"zu Apps von Drittanbietern, wenn installiert, siehe direkt bei der jeweiligen App weiter unten auf dieser Seite. Die Lizenzen\n"
+"              Der Core und die offiziellen Apps von AlekSIS sind unter der "
+"EUPL, Version 1.2 oder später, lizenziert. Für Lizenzinformationen\n"
+"zu Apps von Drittanbietern, wenn installiert, siehe direkt bei der "
+"jeweiligen App weiter unten auf dieser Seite. Die Lizenzen\n"
 "sind wie folgt markiert:\n"
 "            "
 
@@ -2134,11 +2282,13 @@ msgstr ""
 #: aleksis/core/templates/core/pages/progress.html:27
 msgid ""
 "\n"
-"              Without activated JavaScript the progress status can't be updated.\n"
+"              Without activated JavaScript the progress status can't be "
+"updated.\n"
 "            "
 msgstr ""
 "\n"
-"              Ohne aktiviertes JavaScript kann der Fortschritt leider nicht aktualisiert werden.\n"
+"              Ohne aktiviertes JavaScript kann der Fortschritt leider nicht "
+"aktualisiert werden.\n"
 "            "
 
 #: aleksis/core/templates/core/pages/progress.html:47
@@ -2157,11 +2307,13 @@ msgstr "Wartungsmodus aktiviert"
 #: aleksis/core/templates/core/pages/system_status.html:24
 msgid ""
 "\n"
-"                Only admin and visitors from internal IPs can access thesite.\n"
+"                Only admin and visitors from internal IPs can access "
+"thesite.\n"
 "              "
 msgstr ""
 "\n"
-"                Nur Administratoren und Besucher von internen IP-Adressen können die Seite aufrufen.\n"
+"                Nur Administratoren und Besucher von internen IP-Adressen "
+"können die Seite aufrufen.\n"
 "              "
 
 #: aleksis/core/templates/core/pages/system_status.html:36
@@ -2179,11 +2331,13 @@ msgstr "Debug-Modus aktiviert"
 #: aleksis/core/templates/core/pages/system_status.html:49
 msgid ""
 "\n"
-"                The web server throws back debug information on errors. Do not use in production!\n"
+"                The web server throws back debug information on errors. Do "
+"not use in production!\n"
 "              "
 msgstr ""
 "\n"
-"                Der Server gibt Debug-Informationen bei Fehlern zurück. Nicht im Produktivbetrieb nutzen!\n"
+"                Der Server gibt Debug-Informationen bei Fehlern zurück. "
+"Nicht im Produktivbetrieb nutzen!\n"
 "              "
 
 #: aleksis/core/templates/core/pages/system_status.html:56
@@ -2193,11 +2347,13 @@ msgstr "Debug-Modus deaktivert"
 #: aleksis/core/templates/core/pages/system_status.html:58
 msgid ""
 "\n"
-"                Debug mode is disabled. Default error pages are displayed on errors.\n"
+"                Debug mode is disabled. Default error pages are displayed on "
+"errors.\n"
 "              "
 msgstr ""
 "\n"
-"                Debug-Modus ist deaktiviert. Standard-Fehlerseiten werden bei Fehlern angezeigt.\n"
+"                Debug-Modus ist deaktiviert. Standard-Fehlerseiten werden "
+"bei Fehlern angezeigt.\n"
 "              "
 
 #: aleksis/core/templates/core/pages/system_status.html:71
@@ -2247,11 +2403,13 @@ msgstr "PDF-Generierung testen"
 #: aleksis/core/templates/core/pages/test_pdf.html:14
 msgid ""
 "\n"
-"        This simple view can be used to ensure the correct function of the built-in PDF generation system.\n"
+"        This simple view can be used to ensure the correct function of the "
+"built-in PDF generation system.\n"
 "      "
 msgstr ""
 "\n"
-"        Diese einfache Seite kann genutzt werden, um die korrekte Funktionalität des eingebauten PDF-Generierungssystem zu testen.\n"
+"        Diese einfache Seite kann genutzt werden, um die korrekte "
+"Funktionalität des eingebauten PDF-Generierungssystem zu testen.\n"
 "      "
 
 #: aleksis/core/templates/core/partials/announcements.html:8
@@ -2309,22 +2467,26 @@ msgid "Unknown"
 msgstr "Unbekannt"
 
 #: aleksis/core/templates/core/partials/language_form.html:15
+#: aleksis/core/templates/core/partials/language_form.html:17
 msgid "Language"
 msgstr "Sprache"
 
 #: aleksis/core/templates/core/partials/language_form.html:27
+#: aleksis/core/templates/core/partials/language_form.html:29
 msgid "Select language"
 msgstr "Sprache auswählen"
 
 #: aleksis/core/templates/core/partials/no_person.html:12
 msgid ""
 "\n"
-"            Your administrator account is not linked to any person. Therefore,\n"
+"            Your administrator account is not linked to any person. "
+"Therefore,\n"
 "            a dummy person has been linked to your account.\n"
 "          "
 msgstr ""
 "\n"
-"            Ihr Administratorenkonto ist mit keiner Person verknüpft. Deshalb\n"
+"            Ihr Administratorenkonto ist mit keiner Person verknüpft. "
+"Deshalb\n"
 "            wurde Ihr Konto mit einer Dummyperson verknüpft.\n"
 "          "
 
@@ -2337,8 +2499,10 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Ihr Benutzerkonto ist nicht mit einer Person verknüpft. Das bedeutet, dass Sie\n"
-"        keine schulbezogenen Informationen aufrufen können. Bitte wenden Sie sich an\n"
+"            Ihr Benutzerkonto ist nicht mit einer Person verknüpft. Das "
+"bedeutet, dass Sie\n"
+"        keine schulbezogenen Informationen aufrufen können. Bitte wenden Sie "
+"sich an\n"
 "        die Verwaltenden von AlekSIS an Ihrer Schule.\n"
 "          "
 
@@ -2465,8 +2629,12 @@ msgid "The invite feature is disabled."
 msgstr "Die Einladungsfunktion ist deaktiviert."
 
 #: aleksis/core/templates/invitations/disabled.html:15
-msgid "To enable it, switch on the corresponding checkbox in the authentication section of the "
-msgstr "Um sie zu aktivieren, nutzen Sie die Checkbox im Abschnitt \"Authentifikation\" der "
+msgid ""
+"To enable it, switch on the corresponding checkbox in the authentication "
+"section of the "
+msgstr ""
+"Um sie zu aktivieren, nutzen Sie die Checkbox im Abschnitt \"Authentifikation"
+"\" der "
 
 #: aleksis/core/templates/invitations/disabled.html:16
 msgid "site preferences page"
@@ -2594,7 +2762,8 @@ msgstr "Erfolg!"
 
 #: aleksis/core/templates/oauth2_provider/authorized-oob.html:14
 msgid "Please return to your application and enter this code:"
-msgstr "Bitte gehen Sie zurück in Ihre Anwendung und geben Sie diesen Code ein:"
+msgstr ""
+"Bitte gehen Sie zurück in Ihre Anwendung und geben Sie diesen Code ein:"
 
 #: aleksis/core/templates/oauth2_provider/authorized-token-delete.html:5
 #: aleksis/core/templates/oauth2_provider/authorized-token-delete.html:6
@@ -2604,7 +2773,9 @@ msgstr "Zugriff zurückziehen"
 
 #: aleksis/core/templates/oauth2_provider/authorized-token-delete.html:12
 msgid "Are you sure to revoke the access for this application?"
-msgstr "Sind Sie sicher, dass Sie den Zugriff für diese Anwendung zurückziehen möchten?"
+msgstr ""
+"Sind Sie sicher, dass Sie den Zugriff für diese Anwendung zurückziehen "
+"möchten?"
 
 #: aleksis/core/templates/oauth2_provider/authorized-token-delete.html:20
 msgid "Revoke"
@@ -2625,14 +2796,19 @@ msgstr "Keine Internetverbindung."
 #: aleksis/core/templates/offline.html:14
 msgid ""
 "\n"
-"      There was an error accessing this page. You probably don't have an internet connection. Check to see if your WiFi\n"
-"      or mobile data is turned on and try again. If you think you are connected, please contact the system\n"
+"      There was an error accessing this page. You probably don't have an "
+"internet connection. Check to see if your WiFi\n"
+"      or mobile data is turned on and try again. If you think you are "
+"connected, please contact the system\n"
 "      administrators:\n"
 "    "
 msgstr ""
 "\n"
-"      Es ist ein Fehler beim Aufrufen der Seite aufgetreten. Eventuell haben Sie keine Internetverbindung. Bitte prüfen Sie, ob WLAN oder mobile Daten aktiv sind, \n"
-"      und probieren Sie es erneut. Wenn Sie der Meinung sind, dass Sie mit dem Internet verbunden sind, kontaktieren Sie bitte einen Ihrer \n"
+"      Es ist ein Fehler beim Aufrufen der Seite aufgetreten. Eventuell haben "
+"Sie keine Internetverbindung. Bitte prüfen Sie, ob WLAN oder mobile Daten "
+"aktiv sind, \n"
+"      und probieren Sie es erneut. Wenn Sie der Meinung sind, dass Sie mit "
+"dem Internet verbunden sind, kontaktieren Sie bitte einen Ihrer \n"
 "      Systemadministratoren:\n"
 "    "
 
@@ -2668,12 +2844,14 @@ msgstr "Anmeldung über Drittanbieter-Konto fehlgeschlagen."
 #: aleksis/core/templates/socialaccount/authentication_error.html:15
 msgid ""
 "\n"
-"            An error occurred while attempting to login via your third-party account.\n"
+"            An error occurred while attempting to login via your third-party "
+"account.\n"
 "            Please contact one of your site administrators.\n"
 "          "
 msgstr ""
 "\n"
-"            Beim dem Versuch, die Anmeldung über Ihr Drittanbieter-Konto durchzuführen, ist ein Fehler aufgetreten.\n"
+"            Beim dem Versuch, die Anmeldung über Ihr Drittanbieter-Konto "
+"durchzuführen, ist ein Fehler aufgetreten.\n"
 "            Kontaktieren Sie bitte einen Ihrer Systemadministratoren:\n"
 "          "
 
@@ -2688,7 +2866,8 @@ msgstr "Löschen"
 
 #: aleksis/core/templates/socialaccount/connections.html:34
 msgid "You currently have no third-party accounts connected to this account."
-msgstr "Sie haben aktuell keine Drittanbieter-Konten mit Ihrem Konto verbunden."
+msgstr ""
+"Sie haben aktuell keine Drittanbieter-Konten mit Ihrem Konto verbunden."
 
 #: aleksis/core/templates/socialaccount/connections.html:37
 msgid "Add a Third-party Account"
@@ -2697,12 +2876,15 @@ msgstr "Ein Drittanbieter-Konto hinzufügen"
 #: aleksis/core/templates/socialaccount/login.html:12
 #, python-format
 msgid "You are about to connect a new third party account from %(provider)s."
-msgstr "Sie sind dabei, ein neues Drittanbieterkonto von %(provider)s zu verbinden."
+msgstr ""
+"Sie sind dabei, ein neues Drittanbieterkonto von %(provider)s zu verbinden."
 
 #: aleksis/core/templates/socialaccount/login.html:23
 #, python-format
 msgid "You are about to sign in using a third party account from %(provider)s."
-msgstr "Sie sind dabei, sich mit einem Drittanbieterkonto von %(provider)s anzumelden."
+msgstr ""
+"Sie sind dabei, sich mit einem Drittanbieterkonto von %(provider)s "
+"anzumelden."
 
 #: aleksis/core/templates/socialaccount/login.html:28
 msgid "Continue"
@@ -2718,11 +2900,15 @@ msgstr "Login abgebrochen"
 #, python-format
 msgid ""
 "\n"
-"            You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to <a href=\"%(login_url)s\">sign in</a>.\n"
+"            You decided to cancel logging in to our site using one of your "
+"existing accounts. If this was a mistake, please proceed to <a href="
+"\"%(login_url)s\">sign in</a>.\n"
 "          "
 msgstr ""
 "\n"
-"            Sie haben sich entschieden, die Anmeldung mit einem Ihrer bestehenden Konten bei uns abzubrechen. Wenn dies ein Fehler war, <a href=\"%(login_url)s\">fahren Sie bitte mit dem Login fort</a>.\n"
+"            Sie haben sich entschieden, die Anmeldung mit einem Ihrer "
+"bestehenden Konten bei uns abzubrechen. Wenn dies ein Fehler war, <a href="
+"\"%(login_url)s\">fahren Sie bitte mit dem Login fort</a>.\n"
 "          "
 
 #: aleksis/core/templates/socialaccount/signup.html:12
@@ -2731,7 +2917,8 @@ msgid ""
 "You are about to use your %(provider_name)s account to login to\n"
 "        %(site_name)s. As a final step, please complete the following form:"
 msgstr ""
-"Sie sind dabei, Ihr %(provider_name)s-Konto zur Anmeldung bei %(site_name)s zu nutzen. \n"
+"Sie sind dabei, Ihr %(provider_name)s-Konto zur Anmeldung bei %(site_name)s "
+"zu nutzen. \n"
 "Als ein letzter Schritt vervollständigen Sie bitte das folgende Formular:"
 
 #: aleksis/core/templates/socialaccount/snippets/provider_list.html:12
@@ -2779,7 +2966,9 @@ msgstr "Celery-Task %(task_name)s fehlgeschlagen!"
 #: aleksis/core/templates/templated_email/celery_failure.email:7
 #, python-format
 msgid "the celery task %(task_name)s failed with following information:"
-msgstr "der Celery-Task  %(task_name)s ist mit folgenden Informationen fehlgeschlagen:"
+msgstr ""
+"der Celery-Task  %(task_name)s ist mit folgenden Informationen "
+"fehlgeschlagen:"
 
 #: aleksis/core/templates/templated_email/celery_failure.email:10
 #: aleksis/core/templates/templated_email/celery_failure.email:29
@@ -2809,7 +2998,8 @@ msgid ""
 "    "
 msgstr ""
 "\n"
-"      der Celery-Task  %(task_name)s ist mit folgenden Informationen fehlgeschlagen:\n"
+"      der Celery-Task  %(task_name)s ist mit folgenden Informationen "
+"fehlgeschlagen:\n"
 "    "
 
 #: aleksis/core/templates/templated_email/data_checks.email:3
@@ -2819,21 +3009,25 @@ msgstr "Das System hat einige neue Probleme mit Ihren Daten entdeckt."
 #: aleksis/core/templates/templated_email/data_checks.email:6
 msgid ""
 "the system detected some new problems with your data.\n"
-"Please take some time to inspect them and solve the issues or mark them as ignored."
+"Please take some time to inspect them and solve the issues or mark them as "
+"ignored."
 msgstr ""
 "das System hat einige neue Probleme mit Ihren Daten entdeckt.\n"
-"Bitte nehmen Sie sich etwas Zeit, diese zu überprüfen und sie zu lösen oder als ignoriert zu markieren."
+"Bitte nehmen Sie sich etwas Zeit, diese zu überprüfen und sie zu lösen oder "
+"als ignoriert zu markieren."
 
 #: aleksis/core/templates/templated_email/data_checks.email:15
 msgid ""
 "\n"
 "   the system detected some new problems with your data.\n"
-"   Please take some time to inspect them and solve the issues or mark them as ignored.\n"
+"   Please take some time to inspect them and solve the issues or mark them "
+"as ignored.\n"
 "  "
 msgstr ""
 "\n"
 "   das System hat einige neue Probleme mit Ihren Daten entdeckt.\n"
-"Bitte nehmen Sie sich etwas Zeit, diese zu überprüfen und sie zu lösen oder als ignoriert zu markieren.\n"
+"Bitte nehmen Sie sich etwas Zeit, diese zu überprüfen und sie zu lösen oder "
+"als ignoriert zu markieren.\n"
 "  "
 
 #: aleksis/core/templates/templated_email/data_checks.email:23
@@ -2919,16 +3113,21 @@ msgid ""
 "\n"
 "        Backup tokens can be used when your primary and backup\n"
 "        phone numbers aren't available. The backup tokens below can be used\n"
-"        for login verification. If you've used up all your backup tokens, you\n"
-"        can generate a new set of backup tokens. Only the backup tokens shown\n"
+"        for login verification. If you've used up all your backup tokens, "
+"you\n"
+"        can generate a new set of backup tokens. Only the backup tokens "
+"shown\n"
 "        below will be valid.\n"
 "      "
 msgstr ""
 "\n"
 "        Backup-Token können genutzt werden, wenn Ihre primären und Backup-\n"
-"        Telefonnummern nicht verfügbar sind. Die Backup-Tokens unten können für\n"
-"        die Anmeldungsverifizierung genutzt werden. Wenn Sie alle Backup-Tokens genutzt haben,\n"
-"        müssen Sie neue generieren. Nur gültige Backup-Tokens werden angezeigt.\n"
+"        Telefonnummern nicht verfügbar sind. Die Backup-Tokens unten können "
+"für\n"
+"        die Anmeldungsverifizierung genutzt werden. Wenn Sie alle Backup-"
+"Tokens genutzt haben,\n"
+"        müssen Sie neue generieren. Nur gültige Backup-Tokens werden "
+"angezeigt.\n"
 "      "
 
 #: aleksis/core/templates/two_factor/core/backup_tokens.html:33
@@ -2972,7 +3171,9 @@ msgstr ""
 
 #: aleksis/core/templates/two_factor/core/login.html:47
 msgid "Please login with your account to use the external application."
-msgstr "Bitte melden Sie sich mit Ihrem Konto an, um die externe Anwendung zu benutzen."
+msgstr ""
+"Bitte melden Sie sich mit Ihrem Konto an, um die externe Anwendung zu "
+"benutzen."
 
 #: aleksis/core/templates/two_factor/core/login.html:54
 msgid "Please login to see this page."
@@ -2981,7 +3182,8 @@ msgstr "Bitte melden Sie sich an, um diese Seite zu sehen."
 #: aleksis/core/templates/two_factor/core/login.html:65
 msgid ""
 "\n"
-"                        We are calling your phone right now, please enter the\n"
+"                        We are calling your phone right now, please enter "
+"the\n"
 "                        digits you hear.\n"
 "                      "
 msgstr ""
@@ -2993,7 +3195,8 @@ msgstr ""
 #: aleksis/core/templates/two_factor/core/login.html:70
 msgid ""
 "\n"
-"                        We sent you a text message, please enter the tokens we\n"
+"                        We sent you a text message, please enter the tokens "
+"we\n"
 "                        sent.\n"
 "                      "
 msgstr ""
@@ -3017,14 +3220,19 @@ msgstr ""
 #: aleksis/core/templates/two_factor/core/login.html:81
 msgid ""
 "\n"
-"                      Use this form for entering backup tokens for logging in.\n"
-"                      These tokens have been generated for you to print and keep safe. Please\n"
-"                      enter one of these backup tokens to login to your account.\n"
+"                      Use this form for entering backup tokens for logging "
+"in.\n"
+"                      These tokens have been generated for you to print and "
+"keep safe. Please\n"
+"                      enter one of these backup tokens to login to your "
+"account.\n"
 "                    "
 msgstr ""
 "\n"
-"                      Nutzen Sie dieses Formular um Ihre Backup-Tokens zum Anmelden einzugeben.\n"
-"                Diese Tokens wurden für Sie generiert, um diese gut aufzubewahren. Bitte\n"
+"                      Nutzen Sie dieses Formular um Ihre Backup-Tokens zum "
+"Anmelden einzugeben.\n"
+"                Diese Tokens wurden für Sie generiert, um diese gut "
+"aufzubewahren. Bitte\n"
 "                geben Sie einen dieser Tokens ein, um sich einzuloggen.\n"
 "                    "
 
@@ -3055,11 +3263,13 @@ msgstr "Zugriff verwehrt"
 #: aleksis/core/templates/two_factor/core/otp_required.html:10
 msgid ""
 "The page you requested, enforces users to verify using\n"
-"          two-factor authentication for security reasons. You need to enable these\n"
+"          two-factor authentication for security reasons. You need to enable "
+"these\n"
 "          security features in order to access this page."
 msgstr ""
 "Die von Ihnen gewünschte Seite erfordert aus Sicherheitsgründen\n"
-"          eine Verifizierung durch Zwei-Faktor-Authentifizierung. Sie müssen diese\n"
+"          eine Verifizierung durch Zwei-Faktor-Authentifizierung. Sie müssen "
+"diese\n"
 "          Sicherheitsfunktion aktivieren, um diese Seite aufzurufen."
 
 #: aleksis/core/templates/two_factor/core/otp_required.html:14
@@ -3104,9 +3314,10 @@ msgid ""
 "      "
 msgstr ""
 "\n"
-"        Sie sind dabei, Ihre Accountsicherheit auf das\n"
-"       nächste Level zu erhöhen. Bitte folgen Sie den Schritten im Wizard um die\n"
-"       Zwei-Faktor-Authentifizierug zu aktivieren.\n"
+"        Sie sind dabei, Ihre Account-Sicherheit auf das\n"
+"       nächste Level zu erhöhen. Bitte folgen Sie den Schritten im "
+"Assistenten, um die\n"
+"       Zwei-Faktor-Authentifizierung zu aktivieren.\n"
 "      "
 
 #: aleksis/core/templates/two_factor/core/setup.html:17
@@ -3116,14 +3327,16 @@ msgid ""
 "      "
 msgstr ""
 "\n"
-"        Bitte wählen Sie aus, welche Authentifikationsmethode Sie nutzen wollen:\n"
+"        Bitte wählen Sie aus, welche Authentifikationsmethode Sie nutzen "
+"wollen:\n"
 "      "
 
 #: aleksis/core/templates/two_factor/core/setup.html:23
 msgid ""
 "\n"
 "        To start using a token generator, please use your\n"
-"        favourite two factor authentication (TOTP) app to scan the QR code below.\n"
+"        favourite two factor authentication (TOTP) app to scan the QR code "
+"below.\n"
 "        Then, enter the token generated by the app.\n"
 "      "
 msgstr ""
@@ -3142,7 +3355,8 @@ msgid ""
 msgstr ""
 "\n"
 "        Bitte geben Sie die Telefonnummer des Gerätes an,\n"
-"        an die die SMS-Nachrichten geschickt werden sollen. Diese Nummer wird im nächsten Schritt überprüft.\n"
+"        an die die SMS-Nachrichten geschickt werden sollen. Diese Nummer "
+"wird im nächsten Schritt überprüft.\n"
 "      "
 
 #: aleksis/core/templates/two_factor/core/setup.html:41
@@ -3160,11 +3374,13 @@ msgstr ""
 #: aleksis/core/templates/two_factor/core/setup.html:50
 msgid ""
 "\n"
-"            We are calling your phone right now, please enter the digits you hear.\n"
+"            We are calling your phone right now, please enter the digits you "
+"hear.\n"
 "          "
 msgstr ""
 "\n"
-"            Wir rufen Ihr Telefon jetzt an, bitte geben Sie die Zahlen ein, die Sie hören.\n"
+"            Wir rufen Ihr Telefon jetzt an, bitte geben Sie die Zahlen ein, "
+"die Sie hören.\n"
 "          "
 
 #: aleksis/core/templates/two_factor/core/setup.html:56
@@ -3174,23 +3390,30 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Wir haben Ihnen eine SMS geschickt, bitte geben Sie die Tokens ein, die wir geschickt haben.\n"
+"            Wir haben Ihnen eine SMS geschickt, bitte geben Sie die Tokens "
+"ein, die wir geschickt haben.\n"
 "          "
 
 #: aleksis/core/templates/two_factor/core/setup.html:63
 msgid ""
 "\n"
-"          We've encountered an issue with the selected authentication method. Please\n"
-"          go back and verify that you entered your information correctly, try\n"
-"          again, or use a different authentication method instead. If the issue\n"
+"          We've encountered an issue with the selected authentication "
+"method. Please\n"
+"          go back and verify that you entered your information correctly, "
+"try\n"
+"          again, or use a different authentication method instead. If the "
+"issue\n"
 "          persists, contact the site administrator.\n"
 "        "
 msgstr ""
 "\n"
-"          Mit der ausgewählten Authentifizierungsmethode ist ein Fehler aufgetreten. \n"
-"Bitte gehen Sie zurück und überprüfen, dass Sie die Informationen korrekt eingegeben haben, versuchen Sie es erneut,\n"
+"          Mit der ausgewählten Authentifizierungsmethode ist ein Fehler "
+"aufgetreten. \n"
+"Bitte gehen Sie zurück und überprüfen, dass Sie die Informationen korrekt "
+"eingegeben haben, versuchen Sie es erneut,\n"
 "oder benutzen Sie stattdessen eine andere Authentifizierungsmethode. \n"
-"Wenn der Fehler bestehen bleibt, kontaktieren Sie bitte einen der Administratoren.\n"
+"Wenn der Fehler bestehen bleibt, kontaktieren Sie bitte einen der "
+"Administratoren.\n"
 "        "
 
 #: aleksis/core/templates/two_factor/core/setup.html:73
@@ -3215,11 +3438,13 @@ msgstr "Zwei-Faktor-Authentifizierung erfolgreich aktiviert"
 #: aleksis/core/templates/two_factor/core/setup_complete.html:14
 msgid ""
 "\n"
-"        Congratulations, you've successfully enabled two-factor authentication.\n"
+"        Congratulations, you've successfully enabled two-factor "
+"authentication.\n"
 "      "
 msgstr ""
 "\n"
-"        Gratulation, Sie haben die Zwei-Faktor-Authentifizierung erfolgreich aktiviert.\n"
+"        Gratulation, Sie haben die Zwei-Faktor-Authentifizierung erfolgreich "
+"aktiviert.\n"
 "      "
 
 #: aleksis/core/templates/two_factor/core/setup_complete.html:24
@@ -3236,12 +3461,14 @@ msgstr "Backup-Codes generieren"
 msgid ""
 "\n"
 "          However, it might happen that you don't have access to\n"
-"          your primary token device. To enable account recovery, generate backup codes\n"
+"          your primary token device. To enable account recovery, generate "
+"backup codes\n"
 "          or add a phone number.\n"
 "        "
 msgstr ""
 "\n"
-"          Es kann passieren, dass Sie keinen Zugriff auf Ihren Tokengenerator haben. \n"
+"          Es kann passieren, dass Sie keinen Zugriff auf Ihren "
+"Tokengenerator haben. \n"
 "Um die Wiederherstellung zu aktivieren,\n"
 "generieren Sie Backupcodes oder fügen eine Telefonnummer hinzu.\n"
 "        "
@@ -3259,8 +3486,12 @@ msgid "Disable Two-Factor Authentication"
 msgstr "Zwei-Faktor-Authentifizierung deaktiveren"
 
 #: aleksis/core/templates/two_factor/profile/disable.html:12
-msgid "You are about to disable two-factor authentication. This weakens your account security, are you sure?"
-msgstr "Sie sind dabei, Zwei-Faktor-Authentifizierung zu deaktivieren. Das verschlechtert Ihre Kontosicherheit. Sind Sie sicher?"
+msgid ""
+"You are about to disable two-factor authentication. This weakens your "
+"account security, are you sure?"
+msgstr ""
+"Sie sind dabei, Zwei-Faktor-Authentifizierung zu deaktivieren. Das "
+"verschlechtert Ihre Kontosicherheit. Sind Sie sicher?"
 
 #: aleksis/core/templates/two_factor/profile/disable.html:26
 msgid "Disable"
@@ -3340,7 +3571,8 @@ msgid ""
 msgstr ""
 "\n"
 "        Wir raten Ihnen jedoch dringend davon ab.\n"
-"        Sie können jedoch auch die Zwei-Faktor-Authentifizierung für Ihr Konto deaktivieren.\n"
+"        Sie können jedoch auch die Zwei-Faktor-Authentifizierung für Ihr "
+"Konto deaktivieren.\n"
 "      "
 
 #: aleksis/core/templates/two_factor/profile/profile.html:78
@@ -3352,7 +3584,8 @@ msgid ""
 "      "
 msgstr ""
 "\n"
-"        Die Zwei-Faktor-Authentifizierung ist nicht für Ihren Account aktiviert.\n"
+"        Die Zwei-Faktor-Authentifizierung ist nicht für Ihren Account "
+"aktiviert.\n"
 "          Aktivieren Sie Zwei-Faktor-Authentifizierung für eine verbesserte\n"
 "          Accountsicherheit.\n"
 "      "
@@ -3385,47 +3618,48 @@ msgstr "Es ist ein Fehler beim Generieren der PDF-Datei aufgetreten."
 msgid "Download PDF"
 msgstr "PDF herunterladen"
 
-#: aleksis/core/views.py:292
+#: aleksis/core/views.py:292 aleksis/core/views.py:294
 msgid "The school term has been created."
 msgstr "Das Schuljahr wurde erstellt."
 
-#: aleksis/core/views.py:304
+#: aleksis/core/views.py:304 aleksis/core/views.py:306
 msgid "The school term has been saved."
 msgstr "Das Schuljahr wurde gespeichert."
 
-#: aleksis/core/views.py:424
+#: aleksis/core/views.py:424 aleksis/core/views.py:426
 msgid "The child groups were successfully saved."
 msgstr "Die Untergruppen wurden gespeichert."
 
 #: aleksis/core/views.py:443 aleksis/core/views.py:453
+#: aleksis/core/views.py:445 aleksis/core/views.py:455
 msgid "The person has been saved."
 msgstr "Die Person wurde gespeichert."
 
-#: aleksis/core/views.py:503
+#: aleksis/core/views.py:503 aleksis/core/views.py:505
 msgid "The group has been saved."
 msgstr "Die Gruppe wurde gespeichert."
 
-#: aleksis/core/views.py:600
+#: aleksis/core/views.py:600 aleksis/core/views.py:602
 msgid "The announcement has been saved."
 msgstr "Die Ankündigung wurde gespeichert."
 
-#: aleksis/core/views.py:616
+#: aleksis/core/views.py:616 aleksis/core/views.py:618
 msgid "The announcement has been deleted."
 msgstr "Ankündigung wurde gelöscht."
 
-#: aleksis/core/views.py:684
+#: aleksis/core/views.py:684 aleksis/core/views.py:686
 msgid "The requested preference registry does not exist"
 msgstr "Das angeforderte Einstellungsregister existiert nicht"
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:703 aleksis/core/views.py:705
 msgid "The preferences have been saved successfully."
 msgstr "Die Einstellungen wurde gespeichert."
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:727 aleksis/core/views.py:729
 msgid "The person has been deleted."
 msgstr "Die Person wurde gelöscht."
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:741 aleksis/core/views.py:743
 msgid "The group has been deleted."
 msgstr "Die Gruppe wurde gelöscht."
 
@@ -3433,109 +3667,120 @@ msgstr "Die Gruppe wurde gelöscht."
 msgid "The additional_field has been saved."
 msgstr "Das zusätzliche Feld wurde gespeichert."
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:807 aleksis/core/views.py:809
 msgid "The additional field has been deleted."
 msgstr "Das zusätzliche Feld wurde gelöscht."
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:832 aleksis/core/views.py:834
 msgid "The group type has been saved."
 msgstr "Der Gruppentyp wurde gespeichert."
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:862 aleksis/core/views.py:864
 msgid "The group type has been deleted."
 msgstr "Der Gruppentyp wurde gelöscht."
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:895 aleksis/core/views.py:897
 msgid "Progress: Run data checks"
 msgstr "Fortschritt: Datenprüfungen ausführen"
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:896 aleksis/core/views.py:898
 msgid "Run data checks …"
 msgstr "Datenprüfungen laufen …"
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:897 aleksis/core/views.py:899
 msgid "The data checks were run successfully."
 msgstr "Die Datenprüfungen wurden erfolgreich ausgeführt."
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:898 aleksis/core/views.py:900
 msgid "There was a problem while running data checks."
 msgstr "Es gab ein Problem beim Ausführen der Datenprüfungen."
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:914 aleksis/core/views.py:916
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr "Die Lösungsoption \"{solve_option_obj.verbose_name}\" "
 
-#: aleksis/core/views.py:924
+#: aleksis/core/views.py:924 aleksis/core/views.py:926
 msgid "The requested solve option does not exist"
 msgstr "Die angeforderte Lösungsoption existiert nicht"
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:956 aleksis/core/views.py:958
 msgid "The dashboard widget has been saved."
 msgstr "Das Dashboard-Widget wurde gespeichert."
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:986 aleksis/core/views.py:988
 msgid "The dashboard widget has been created."
 msgstr "Das Dashboard-Widget wurde erstellt."
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:996 aleksis/core/views.py:998
 msgid "The dashboard widget has been deleted."
 msgstr "Das Dashboard-Widget wurde gelöscht."
 
-#: aleksis/core/views.py:1067
+#: aleksis/core/views.py:1067 aleksis/core/views.py:1069
 msgid "Your dashboard configuration has been saved successfully."
 msgstr "Ihre Dashboardkonfiguration wurde erfolgreich gespeichert."
 
-#: aleksis/core/views.py:1069
+#: aleksis/core/views.py:1069 aleksis/core/views.py:1071
 msgid "The configuration of the default dashboard has been saved successfully."
-msgstr "Die Konfiguration des Standard-Dashboardes wurde erfolgreich gespeichert."
+msgstr ""
+"Die Konfiguration des Standard-Dashboardes wurde erfolgreich gespeichert."
 
-#: aleksis/core/views.py:1145
+#: aleksis/core/views.py:1145 aleksis/core/views.py:1147
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
-msgstr "Die Einladung wurde erfolgreich erstellt. Der Einladungscode ist {code}"
+msgstr ""
+"Die Einladung wurde erfolgreich erstellt. Der Einladungscode ist {code}"
 
-#: aleksis/core/views.py:1236
+#: aleksis/core/views.py:1236 aleksis/core/views.py:1238
 msgid "We have successfully assigned the permissions."
 msgstr "Wir haben die Berechtigungen erfolgreich zugewiesen."
 
-#: aleksis/core/views.py:1246
+#: aleksis/core/views.py:1246 aleksis/core/views.py:1248
 msgid "The global user permission has been deleted."
 msgstr "Die globale Benutzerberechtigung wurde gelöscht."
 
-#: aleksis/core/views.py:1256
+#: aleksis/core/views.py:1256 aleksis/core/views.py:1258
 msgid "The global group permission has been deleted."
 msgstr "Die globale Gruppenberechtigung wurde gelöscht."
 
-#: aleksis/core/views.py:1266
+#: aleksis/core/views.py:1266 aleksis/core/views.py:1268
 msgid "The object user permission has been deleted."
 msgstr "Die Objekt-Benutzerberechtigung wurde gelöscht."
 
-#: aleksis/core/views.py:1276
+#: aleksis/core/views.py:1276 aleksis/core/views.py:1278
 msgid "The object group permission has been deleted."
 msgstr "Die Objekt-Gruppenberechtigung wurde gelöscht."
 
-#: aleksis/core/views.py:1344
+#: aleksis/core/views.py:1344 aleksis/core/views.py:1346
 msgid "The requested PDF file does not exist"
 msgstr "Die angeforderte PDF-Datei existiert nicht"
 
 #: aleksis/core/views.py:1353 aleksis/core/views.py:1357
+#: aleksis/core/views.py:1355 aleksis/core/views.py:1359
 msgid "The requested task does not exist or is not accessible"
 msgstr "Der angeforderte Task existiert nicht oder ist nicht abrufbar"
 
-#: aleksis/core/views.py:1409
-msgid "The third-party account could not be disconnected because it is the only login method available."
-msgstr "Das Drittanbieter-Konto konnte nicht deaktiviert werden, weil es die einzige verfügbare Anmeldeoption ist."
+#: aleksis/core/views.py:1409 aleksis/core/views.py:1411
+msgid ""
+"The third-party account could not be disconnected because it is the only "
+"login method available."
+msgstr ""
+"Das Drittanbieter-Konto konnte nicht deaktiviert werden, weil es die einzige "
+"verfügbare Anmeldeoption ist."
 
-#: aleksis/core/views.py:1416
+#: aleksis/core/views.py:1416 aleksis/core/views.py:1418
 msgid "The third-party account has been successfully disconnected."
 msgstr "Das Drittanbieter-Konto wurde erfolgreich getrennt."
 
-#: aleksis/core/views.py:1487
-msgid "Person was invited successfully and an email with further instructions has been send to them."
-msgstr "Die Person wurde erfolgreich eingeladen und eine E-Mail mit weiteren Anweisungen wurde an sie verschickt."
+#: aleksis/core/views.py:1487 aleksis/core/views.py:1489
+msgid ""
+"Person was invited successfully and an email with further instructions has "
+"been send to them."
+msgstr ""
+"Die Person wurde erfolgreich eingeladen und eine E-Mail mit weiteren "
+"Anweisungen wurde an sie verschickt."
 
-#: aleksis/core/views.py:1498
+#: aleksis/core/views.py:1498 aleksis/core/views.py:1500
 msgid "Person was already invited."
 msgstr "Person wurde bereits eingeladen."
 
@@ -3551,6 +3796,64 @@ msgstr "Der iCal-Feed wurde erfolgreich gelöscht"
 msgid "ICal feed created successfully"
 msgstr "Der iCal-Feed wurde erfolgreich erstellt"
 
+#: aleksis/core/data_checks.py:330
+#, python-format
+msgid "Validate field %s of model %s."
+msgstr "Feld %s von Model %s validieren."
+
+#: aleksis/core/data_checks.py:332
+#, python-format
+msgid "The field %s couldn't be validated successfully."
+msgstr "Das Feld %s konnte nicht erfolgreich validiert werden."
+
+#: aleksis/core/models.py:181
+msgid "other"
+msgstr "andere"
+
+#: aleksis/core/settings.py:543
+msgid "Ukrainian"
+msgstr "Ukrainisch"
+
+#: aleksis/core/templates/500.html:10
+msgid ""
+"An unexpected error has\n"
+"          occurred."
+msgstr ""
+"Ein unerwarteter Fehler ist\n"
+"            aufgetreten."
+
+#: aleksis/core/templates/core/group/full.html:93
+#, python-format
+msgid ""
+"\n"
+"              %(min)s years to %(max)s years\n"
+"            "
+msgstr ""
+"\n"
+"              %(min)s Jahre bis %(max)s Jahre\n"
+"            "
+
+#: aleksis/core/templates/core/ical/ical_list.html:4
+#: aleksis/core/templates/core/ical/ical_list.html:5
+msgid "iCal Feeds"
+msgstr "iCal-Feeds"
+
+#: aleksis/core/views.py:775
+msgid "The additional field has been saved."
+msgstr "Das zusätzliche Feld wurde gespeichert."
+
+#: aleksis/core/views.py:1600
+msgid "iCal feed updated successfully"
+msgstr "Der iCal-Feed wurde erfolgreich aktualisiert"
+
+#: aleksis/core/views.py:1610
+msgid "iCal feed deleted successfully"
+msgstr "Der iCal-Feed wurde erfolgreich gelöscht"
+
+#: aleksis/core/views.py:1618
+msgid "iCal feed created successfully"
+msgstr "Der iCal-Feed wurde erfolgreich erstellt"
+
 #~ msgid "Me"
 #~ msgstr "Ich"
 
@@ -3613,7 +3916,8 @@ msgstr "Der iCal-Feed wurde erfolgreich erstellt"
 #~ "   <li>ID des Tasks: %(task_id)s</li>\n"
 #~ "   <li>Aufgetretene Exception: %(exception)s</li>\n"
 #~ "   <li>Argumente, mit denen der Task aufgerufen wurde: %(args)s</li>\n"
-#~ "   <li>Keyword-Argumente, mit denen der Task aufgerufen wurde: %(kwargs)s</li>\n"
+#~ "   <li>Keyword-Argumente, mit denen der Task aufgerufen wurde: "
+#~ "%(kwargs)s</li>\n"
 #~ "   <li>Stacktrace: %(traceback)s</li>\n"
 #~ " </ul>\n"
 #~ " "
@@ -3632,8 +3936,12 @@ msgstr "Der iCal-Feed wurde erfolgreich erstellt"
 #~ msgstr "Zustimmungen"
 
 #, python-brace-format
-#~ msgid "I have read the <a href='{privacy_policy}'>Privacy policy</a> and agree with them."
-#~ msgstr "Ich habe die <a href='{privacy_policy}'>Datenschutzerklärung</a> gelesen und stimme ihr zu."
+#~ msgid ""
+#~ "I have read the <a href='{privacy_policy}'>Privacy policy</a> and agree "
+#~ "with them."
+#~ msgstr ""
+#~ "Ich habe die <a href='{privacy_policy}'>Datenschutzerklärung</a> gelesen "
+#~ "und stimme ihr zu."
 
 #~ msgid "You must type the same password each time."
 #~ msgstr "Sie müssen zweimal das gleiche Passwort eingeben."
@@ -3642,8 +3950,12 @@ msgstr "Der iCal-Feed wurde erfolgreich erstellt"
 #~ msgstr "Verkleidung"
 
 #, python-format
-#~ msgid "<strong>Note:</strong> you can still <a href=\"%(email_url)s\">change your e-mail address</a>"
-#~ msgstr "<strong>Hinweis:</strong> Sie können immer noch <a href=\"%(email_url)s\"> Ihre E-Mail-Adresse ändern</a>"
+#~ msgid ""
+#~ "<strong>Note:</strong> you can still <a href=\"%(email_url)s\">change "
+#~ "your e-mail address</a>"
+#~ msgstr ""
+#~ "<strong>Hinweis:</strong> Sie können immer noch <a href=\"%(email_url)s"
+#~ "\"> Ihre E-Mail-Adresse ändern</a>"
 
 #~ msgid "Impress"
 #~ msgstr "Impressum"
@@ -3665,7 +3977,9 @@ msgstr "Der iCal-Feed wurde erfolgreich erstellt"
 
 #, python-format
 #~ msgid "Are you sure to delete the application %(application_name)s?"
-#~ msgstr "Sind Sie sicher, dass Sie die Anwendung %(application_name)s löschen möchten?"
+#~ msgstr ""
+#~ "Sind Sie sicher, dass Sie die Anwendung %(application_name)s löschen "
+#~ "möchten?"
 
 #~ msgid "Authorization Grant Type"
 #~ msgstr "Authorization Grant-Typ"
@@ -3690,17 +4004,23 @@ msgstr "Der iCal-Feed wurde erfolgreich erstellt"
 
 #~ msgid ""
 #~ "\n"
-#~ "        You can use this form to assign user accounts to persons. Use the\n"
-#~ "        dropdowns to select existing accounts; use the text fields to create new\n"
-#~ "        accounts on-the-fly. The latter will create a new account with the\n"
+#~ "        You can use this form to assign user accounts to persons. Use "
+#~ "the\n"
+#~ "        dropdowns to select existing accounts; use the text fields to "
+#~ "create new\n"
+#~ "        accounts on-the-fly. The latter will create a new account with "
+#~ "the\n"
 #~ "        entered username and copy all other details from the person.\n"
 #~ "      "
 #~ msgstr ""
 #~ "\n"
-#~ "        Sie können dieses Formular nutzen, um Benutzerkonten Personen zuzuweisen. Nutzen Sie das\n"
-#~ "    Auswahlfeld um ein existierendes Benutzerkonto auszuwählen; nutzen Sie das Textfeld, um einen neuen Benutzer zu\n"
+#~ "        Sie können dieses Formular nutzen, um Benutzerkonten Personen "
+#~ "zuzuweisen. Nutzen Sie das\n"
+#~ "    Auswahlfeld um ein existierendes Benutzerkonto auszuwählen; nutzen "
+#~ "Sie das Textfeld, um einen neuen Benutzer zu\n"
 #~ "    erstellen. Letzteres erstellt ein neues Benutzerkonto mit dem\n"
-#~ "    eingegebenen Benutzernamen und kopiert alle anderen Daten der Person.\n"
+#~ "    eingegebenen Benutzernamen und kopiert alle anderen Daten der "
+#~ "Person.\n"
 #~ "      "
 
 #~ msgid "Existing account"
@@ -3726,7 +4046,8 @@ msgstr "Der iCal-Feed wurde erfolgreich erstellt"
 #~ "We sent you a text message, please enter the tokens we\n"
 #~ "              sent."
 #~ msgstr ""
-#~ "Wir haben Ihnen eine Textnachricht geschickt. Bitte geben Sie die Tokens ein,\n"
+#~ "Wir haben Ihnen eine Textnachricht geschickt. Bitte geben Sie die Tokens "
+#~ "ein,\n"
 #~ "              die wir Ihnen geschickt haben."
 
 #~ msgid "French"
@@ -3735,8 +4056,12 @@ msgstr "Der iCal-Feed wurde erfolgreich erstellt"
 #~ msgid "Norwegian (bokmål)"
 #~ msgstr "Norwegisch (bokmål)"
 
-#~ msgid "The data check has been started. Please note that it may take a while before you are able to fetch the data on this page."
-#~ msgstr "Die Datenüberprüfung wurde gestartet. Bitte beachten Sie, dass es eine Weile dauern kann, bevor Sie auf dieser Seite Ergebnisse abrufen können."
+#~ msgid ""
+#~ "The data check has been started. Please note that it may take a while "
+#~ "before you are able to fetch the data on this page."
+#~ msgstr ""
+#~ "Die Datenüberprüfung wurde gestartet. Bitte beachten Sie, dass es eine "
+#~ "Weile dauern kann, bevor Sie auf dieser Seite Ergebnisse abrufen können."
 
 #~ msgid "The data check has finished."
 #~ msgstr "Die Datenüberprüfung wurde beendet."
@@ -3790,7 +4115,8 @@ msgstr "Der iCal-Feed wurde erfolgreich erstellt"
 #~ "     "
 #~ msgstr ""
 #~ "\n"
-#~ "      Wenn Sie der Meinung sind, dass es sich um einen Fehler in AlekSIS handelt, kontaktieren Sie bitte einen Ihrer\n"
+#~ "      Wenn Sie der Meinung sind, dass es sich um einen Fehler in AlekSIS "
+#~ "handelt, kontaktieren Sie bitte einen Ihrer\n"
 #~ "     Systemadministratoren:\n"
 #~ "     "
 
@@ -3864,10 +4190,11 @@ msgstr "Der iCal-Feed wurde erfolgreich erstellt"
 #~ msgstr "Markdown-Anleitung (Hilfe)"
 
 #~ msgid "You are not allowed to mark notifications from other users as read!"
-#~ msgstr "Es ist Ihnen nicht erlaubt, Benachrichtigungen von anderen Benutzern als gelesen zu markieren!"
+#~ msgstr ""
+#~ "Es ist Ihnen nicht erlaubt, Benachrichtigungen von anderen Benutzern als "
+#~ "gelesen zu markieren!"
 
 #, fuzzy
-#~| msgid "School management"
 #~ msgid "School name"
 #~ msgstr "Schulverwaltung"
 
@@ -3925,7 +4252,8 @@ msgstr "Der iCal-Feed wurde erfolgreich erstellt"
 #~ "    "
 #~ msgstr ""
 #~ "\n"
-#~ "     Der Wartungsmodus ist aktuell aktiviert. Bitte versuchen Sie es später erneut.\n"
+#~ "     Der Wartungsmodus ist aktuell aktiviert. Bitte versuchen Sie es "
+#~ "später erneut.\n"
 #~ "    "
 
 #~ msgid "Details"
diff --git a/aleksis/core/locale/de_DE/LC_MESSAGES/djangojs.po b/aleksis/core/locale/de_DE/LC_MESSAGES/djangojs.po
index 46116e73483b8a4b7af5f566700cd6110f8c29dc..2298f9b2dd0bb495629e9b9174cdeceb7a7159bc 100644
--- a/aleksis/core/locale/de_DE/LC_MESSAGES/djangojs.po
+++ b/aleksis/core/locale/de_DE/LC_MESSAGES/djangojs.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: 2021-10-28 14:37+0000\n"
 "Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n"
 "Language-Team: German <https://translate.edugit.org/projects/aleksis/aleksis-core-js/de/>\n"
diff --git a/aleksis/core/locale/fr/LC_MESSAGES/django.po b/aleksis/core/locale/fr/LC_MESSAGES/django.po
index 03ca8ed9426a18b415e7ebe22449010c847dd68e..b57a1588c4fb9a13d74200af11aa150a0f7b2c7d 100644
--- a/aleksis/core/locale/fr/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/fr/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: AlekSIS (School Information System) 0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: 2021-06-16 12:00+0000\n"
 "Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n"
 "Language-Team: French <https://translate.edugit.org/projects/aleksis/aleksis/fr/>\n"
@@ -41,7 +41,7 @@ msgid "Home and mobile phone"
 msgstr ""
 
 #: aleksis/core/apps.py:171 aleksis/core/forms.py:220 aleksis/core/menus.py:171
-#: aleksis/core/models.py:489 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/models.py:494 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:246
 #, fuzzy
@@ -49,27 +49,37 @@ msgstr ""
 msgid "Groups"
 msgstr "Groupe"
 
-#: aleksis/core/data_checks.py:56
+#: aleksis/core/data_checks.py:59
 msgid "Ignore problem"
 msgstr ""
 
-#: aleksis/core/data_checks.py:185
+#: aleksis/core/data_checks.py:188
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/data_checks.py:291
+#: aleksis/core/data_checks.py:294
 msgid "Deactivate DashboardWidget"
 msgstr ""
 
-#: aleksis/core/data_checks.py:303
+#: aleksis/core/data_checks.py:306
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr ""
 
-#: aleksis/core/data_checks.py:304
+#: aleksis/core/data_checks.py:307
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
+#: aleksis/core/data_checks.py:330
+#, python-format
+msgid "Validate field %s of model %s."
+msgstr ""
+
+#: aleksis/core/data_checks.py:332
+#, python-format
+msgid "The field %s couldn't be validated successfully."
+msgstr ""
+
 #: aleksis/core/feeds.py:52
 msgid "Birthday Calendar"
 msgstr ""
@@ -115,11 +125,11 @@ msgstr ""
 msgid "Content type"
 msgstr ""
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:715
+#: aleksis/core/filters.py:113 aleksis/core/models.py:720
 msgid "User"
 msgstr ""
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:488
+#: aleksis/core/filters.py:135 aleksis/core/models.py:493
 msgid "Group"
 msgstr "groupe"
 
@@ -127,7 +137,7 @@ msgstr "groupe"
 msgid "Base data"
 msgstr ""
 
-#: aleksis/core/forms.py:55
+#: aleksis/core/forms.py:55 aleksis/core/tables.py:47
 msgid "Address"
 msgstr ""
 
@@ -159,7 +169,7 @@ msgstr ""
 msgid "This username is already in use."
 msgstr "Cet nom est deja en utilisation."
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:136
+#: aleksis/core/forms.py:153 aleksis/core/models.py:141
 msgid "School term"
 msgstr ""
 
@@ -170,7 +180,7 @@ msgid "Common data"
 msgstr "Détails de contact"
 
 #: aleksis/core/forms.py:155 aleksis/core/forms.py:207
-#: aleksis/core/menus.py:160 aleksis/core/models.py:159
+#: aleksis/core/menus.py:160 aleksis/core/models.py:164
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 #, fuzzy
@@ -184,18 +194,18 @@ msgstr "Personne"
 msgid "Additional data"
 msgstr "Détails de contact"
 
-#: aleksis/core/forms.py:157 aleksis/core/models.py:212
-#: aleksis/core/models.py:541
+#: aleksis/core/forms.py:157 aleksis/core/models.py:217
+#: aleksis/core/models.py:546 aleksis/core/tables.py:46
 msgid "Photo"
 msgstr ""
 
 #: aleksis/core/forms.py:199 aleksis/core/forms.py:202
-#: aleksis/core/models.py:79
+#: aleksis/core/models.py:84
 msgid "Date"
 msgstr "Date"
 
 #: aleksis/core/forms.py:200 aleksis/core/forms.py:203
-#: aleksis/core/models.py:87
+#: aleksis/core/models.py:92
 msgid "Time"
 msgstr ""
 
@@ -231,11 +241,11 @@ msgstr ""
 msgid "Please enter your invitation code."
 msgstr ""
 
-#: aleksis/core/forms.py:418 aleksis/core/models.py:187
+#: aleksis/core/forms.py:418 aleksis/core/models.py:192
 msgid "First name"
 msgstr "Prénom"
 
-#: aleksis/core/forms.py:419 aleksis/core/models.py:188
+#: aleksis/core/forms.py:419 aleksis/core/models.py:193
 msgid "Last name"
 msgstr "Nom de famille"
 
@@ -340,13 +350,13 @@ msgstr ""
 msgid "Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:47 aleksis/core/models.py:867
+#: aleksis/core/menus.py:47 aleksis/core/models.py:872
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr ""
 
-#: aleksis/core/menus.py:58 aleksis/core/models.py:137
+#: aleksis/core/menus.py:58 aleksis/core/models.py:142
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
@@ -398,7 +408,7 @@ msgstr ""
 msgid "People"
 msgstr ""
 
-#: aleksis/core/menus.py:182 aleksis/core/models.py:1101
+#: aleksis/core/menus.py:182 aleksis/core/models.py:1111
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 #, fuzzy
@@ -410,7 +420,7 @@ msgstr "Groupe"
 msgid "Groups and child groups"
 msgstr ""
 
-#: aleksis/core/menus.py:204 aleksis/core/models.py:537
+#: aleksis/core/menus.py:204 aleksis/core/models.py:542
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 msgid "Additional fields"
@@ -479,619 +489,623 @@ msgstr ""
 msgid "Linked school term"
 msgstr ""
 
-#: aleksis/core/models.py:77
+#: aleksis/core/models.py:82
 msgid "Boolean (Yes/No)"
 msgstr ""
 
-#: aleksis/core/models.py:78
+#: aleksis/core/models.py:83
 msgid "Text (one line)"
 msgstr ""
 
-#: aleksis/core/models.py:80
+#: aleksis/core/models.py:85
 msgid "Date and time"
 msgstr ""
 
-#: aleksis/core/models.py:81
+#: aleksis/core/models.py:86
 msgid "Decimal number"
 msgstr ""
 
-#: aleksis/core/models.py:82 aleksis/core/models.py:205
+#: aleksis/core/models.py:87 aleksis/core/models.py:210
 msgid "E-mail address"
 msgstr ""
 
-#: aleksis/core/models.py:83
+#: aleksis/core/models.py:88
 msgid "Integer"
 msgstr ""
 
-#: aleksis/core/models.py:84
+#: aleksis/core/models.py:89
 msgid "IP address"
 msgstr ""
 
-#: aleksis/core/models.py:85
+#: aleksis/core/models.py:90
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr ""
 
-#: aleksis/core/models.py:86
+#: aleksis/core/models.py:91
 msgid "Text (multi-line)"
 msgstr ""
 
-#: aleksis/core/models.py:88
+#: aleksis/core/models.py:93
 msgid "URL / Link"
 msgstr ""
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:1070
-#: aleksis/core/models.py:1374
+#: aleksis/core/models.py:105 aleksis/core/models.py:1077
+#: aleksis/core/models.py:1384
 msgid "Name"
 msgstr ""
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:107
 #, fuzzy
 #| msgid "Contact details"
 msgid "Start date"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:108
 msgid "End date"
 msgstr ""
 
-#: aleksis/core/models.py:122
+#: aleksis/core/models.py:127
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: aleksis/core/models.py:129
+#: aleksis/core/models.py:134
 msgid "There is already a school term for this time or a part of this time."
 msgstr ""
 
-#: aleksis/core/models.py:158 aleksis/core/models.py:1019
-#: aleksis/core/models.py:1371
+#: aleksis/core/models.py:163 aleksis/core/models.py:1024
+#: aleksis/core/models.py:1381
 msgid "Person"
 msgstr "Personne"
 
-#: aleksis/core/models.py:161
+#: aleksis/core/models.py:166
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view address"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:162
+#: aleksis/core/models.py:167
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view contact details"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:163
+#: aleksis/core/models.py:168
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view photo"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:164
+#: aleksis/core/models.py:169
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view avatar image"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:165
+#: aleksis/core/models.py:170
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view persons groups"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:166
+#: aleksis/core/models.py:171
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view personal details"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "female"
 msgstr ""
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "male"
 msgstr ""
 
-#: aleksis/core/models.py:184 aleksis/core/models.py:1273
+#: aleksis/core/models.py:181
+msgid "other"
+msgstr ""
+
+#: aleksis/core/models.py:189 aleksis/core/models.py:1283
 msgid "Linked user"
 msgstr ""
 
-#: aleksis/core/models.py:190
+#: aleksis/core/models.py:195
 msgid "Additional name(s)"
 msgstr ""
 
-#: aleksis/core/models.py:194 aleksis/core/models.py:506
+#: aleksis/core/models.py:199 aleksis/core/models.py:511
 #, fuzzy
 #| msgid "First name"
 msgid "Short name"
 msgstr "Prénom"
 
-#: aleksis/core/models.py:197
+#: aleksis/core/models.py:202
 msgid "Street"
 msgstr ""
 
-#: aleksis/core/models.py:198
+#: aleksis/core/models.py:203
 msgid "Street number"
 msgstr ""
 
-#: aleksis/core/models.py:199
+#: aleksis/core/models.py:204
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/core/models.py:200
+#: aleksis/core/models.py:205
 msgid "Place"
 msgstr ""
 
-#: aleksis/core/models.py:202 aleksis/core/templates/core/person/full.html:160
+#: aleksis/core/models.py:207 aleksis/core/templates/core/person/full.html:160
 msgid "Home phone"
 msgstr ""
 
-#: aleksis/core/models.py:203 aleksis/core/templates/core/person/full.html:170
+#: aleksis/core/models.py:208 aleksis/core/templates/core/person/full.html:170
 msgid "Mobile phone"
 msgstr ""
 
-#: aleksis/core/models.py:207
+#: aleksis/core/models.py:212
 msgid "Date of birth"
 msgstr "Date d'anniversaire"
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:213
 #, fuzzy
 #| msgid "Date of birth"
 msgid "Place of birth"
 msgstr "Date d'anniversaire"
 
-#: aleksis/core/models.py:209
+#: aleksis/core/models.py:214
 msgid "Sex"
 msgstr "Sexe"
 
-#: aleksis/core/models.py:216 aleksis/core/models.py:545
+#: aleksis/core/models.py:221 aleksis/core/models.py:550
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr ""
 
-#: aleksis/core/models.py:221 aleksis/core/models.py:549
+#: aleksis/core/models.py:226 aleksis/core/models.py:554
 msgid "Display picture / Avatar"
 msgstr ""
 
-#: aleksis/core/models.py:224 aleksis/core/models.py:552
+#: aleksis/core/models.py:229 aleksis/core/models.py:557
 msgid "This is a picture or an avatar for public display."
 msgstr ""
 
-#: aleksis/core/models.py:229 aleksis/core/templates/core/person/full.html:235
+#: aleksis/core/models.py:234 aleksis/core/templates/core/person/full.html:235
 msgid "Guardians / Parents"
 msgstr ""
 
-#: aleksis/core/models.py:236
+#: aleksis/core/models.py:241
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:719
-#: aleksis/core/models.py:743 aleksis/core/models.py:834
-#: aleksis/core/models.py:1094
+#: aleksis/core/models.py:244 aleksis/core/models.py:724
+#: aleksis/core/models.py:748 aleksis/core/models.py:839
+#: aleksis/core/models.py:1104
 msgid "Description"
 msgstr "Description"
 
-#: aleksis/core/models.py:459
+#: aleksis/core/models.py:464
 msgid "Title of field"
 msgstr ""
 
-#: aleksis/core/models.py:461
+#: aleksis/core/models.py:466
 msgid "Type of field"
 msgstr ""
 
-#: aleksis/core/models.py:463
+#: aleksis/core/models.py:468
 msgid "Required"
 msgstr ""
 
-#: aleksis/core/models.py:464
+#: aleksis/core/models.py:469
 #, fuzzy
 #| msgid "Description"
 msgid "Help text / description"
 msgstr "Description"
 
-#: aleksis/core/models.py:470
+#: aleksis/core/models.py:475
 msgid "Addtitional field for groups"
 msgstr ""
 
-#: aleksis/core/models.py:471
+#: aleksis/core/models.py:476
 msgid "Addtitional fields for groups"
 msgstr ""
 
-#: aleksis/core/models.py:491
+#: aleksis/core/models.py:496
 msgid "Can assign child groups to groups"
 msgstr ""
 
-#: aleksis/core/models.py:492
+#: aleksis/core/models.py:497
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view statistics about group."
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:504
+#: aleksis/core/models.py:509
 #, fuzzy
 #| msgid "Last name"
 msgid "Long name"
 msgstr "Nom de famille"
 
-#: aleksis/core/models.py:514 aleksis/core/templates/core/group/full.html:85
+#: aleksis/core/models.py:519 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr ""
 
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/full.html:82
+#: aleksis/core/models.py:522 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr "Propriétaires"
 
-#: aleksis/core/models.py:524 aleksis/core/templates/core/group/full.html:55
+#: aleksis/core/models.py:529 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr ""
 
-#: aleksis/core/models.py:532
+#: aleksis/core/models.py:537
 msgid "Type of group"
 msgstr ""
 
-#: aleksis/core/models.py:718 aleksis/core/models.py:742
-#: aleksis/core/models.py:833
+#: aleksis/core/models.py:723 aleksis/core/models.py:747
+#: aleksis/core/models.py:838
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr ""
 
-#: aleksis/core/models.py:721
+#: aleksis/core/models.py:726
 msgid "Application"
 msgstr ""
 
-#: aleksis/core/models.py:727
+#: aleksis/core/models.py:732
 msgid "Activity"
 msgstr ""
 
-#: aleksis/core/models.py:728
+#: aleksis/core/models.py:733
 msgid "Activities"
 msgstr ""
 
-#: aleksis/core/models.py:734
+#: aleksis/core/models.py:739
 msgid "Sender"
 msgstr ""
 
-#: aleksis/core/models.py:739
+#: aleksis/core/models.py:744
 msgid "Recipient"
 msgstr ""
 
-#: aleksis/core/models.py:744 aleksis/core/models.py:1071
+#: aleksis/core/models.py:749 aleksis/core/models.py:1078
 msgid "Link"
 msgstr ""
 
-#: aleksis/core/models.py:746
+#: aleksis/core/models.py:751
 msgid "Send notification at"
 msgstr ""
 
-#: aleksis/core/models.py:748
+#: aleksis/core/models.py:753
 msgid "Read"
 msgstr ""
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:754
 msgid "Sent"
 msgstr ""
 
-#: aleksis/core/models.py:766
+#: aleksis/core/models.py:771
 msgid "Notification"
 msgstr ""
 
-#: aleksis/core/models.py:767 aleksis/core/preferences.py:29
+#: aleksis/core/models.py:772 aleksis/core/preferences.py:29
 #: aleksis/core/templates/core/base.html:81
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr ""
 
-#: aleksis/core/models.py:835
+#: aleksis/core/models.py:840
 msgid "Link to detailed view"
 msgstr ""
 
-#: aleksis/core/models.py:838
+#: aleksis/core/models.py:843
 msgid "Date and time from when to show"
 msgstr ""
 
-#: aleksis/core/models.py:841
+#: aleksis/core/models.py:846
 msgid "Date and time until when to show"
 msgstr ""
 
-#: aleksis/core/models.py:866
+#: aleksis/core/models.py:871
 msgid "Announcement"
 msgstr ""
 
-#: aleksis/core/models.py:904
+#: aleksis/core/models.py:909
 msgid "Announcement recipient"
 msgstr ""
 
-#: aleksis/core/models.py:905
+#: aleksis/core/models.py:910
 msgid "Announcement recipients"
 msgstr ""
 
-#: aleksis/core/models.py:927
+#: aleksis/core/models.py:932
 msgid "Widget Title"
 msgstr ""
 
-#: aleksis/core/models.py:928
+#: aleksis/core/models.py:933
 msgid "Activate Widget"
 msgstr ""
 
-#: aleksis/core/models.py:929
+#: aleksis/core/models.py:934
 msgid "Widget is broken"
 msgstr ""
 
-#: aleksis/core/models.py:932
+#: aleksis/core/models.py:937
 msgid "Size on mobile devices"
 msgstr ""
 
-#: aleksis/core/models.py:933
+#: aleksis/core/models.py:938
 msgid "<= 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:938
+#: aleksis/core/models.py:943
 msgid "Size on tablet devices"
 msgstr ""
 
-#: aleksis/core/models.py:939
+#: aleksis/core/models.py:944
 msgid "> 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:944
+#: aleksis/core/models.py:949
 msgid "Size on desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:945
+#: aleksis/core/models.py:950
 msgid "> 992 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:950
+#: aleksis/core/models.py:955
 msgid "Size on large desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:951
+#: aleksis/core/models.py:956
 msgid "> 1200 px>, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:982
+#: aleksis/core/models.py:987
 msgid "Can edit default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:983
+#: aleksis/core/models.py:988
 msgid "Dashboard Widget"
 msgstr ""
 
-#: aleksis/core/models.py:984
+#: aleksis/core/models.py:989
 msgid "Dashboard Widgets"
 msgstr ""
 
-#: aleksis/core/models.py:990
+#: aleksis/core/models.py:995
 msgid "URL"
 msgstr ""
 
-#: aleksis/core/models.py:991
+#: aleksis/core/models.py:996
 msgid "Icon URL"
 msgstr ""
 
-#: aleksis/core/models.py:997
+#: aleksis/core/models.py:1002
 msgid "External link widget"
 msgstr ""
 
-#: aleksis/core/models.py:998
+#: aleksis/core/models.py:1003
 msgid "External link widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1004
+#: aleksis/core/models.py:1009
 msgid "Content"
 msgstr ""
 
-#: aleksis/core/models.py:1010
+#: aleksis/core/models.py:1015
 msgid "Static content widget"
 msgstr ""
 
-#: aleksis/core/models.py:1011
+#: aleksis/core/models.py:1016
 msgid "Static content widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1016
+#: aleksis/core/models.py:1021
 msgid "Dashboard widget"
 msgstr ""
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:1026
 msgid "Order"
 msgstr ""
 
-#: aleksis/core/models.py:1022
+#: aleksis/core/models.py:1027
 msgid "Part of the default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1037
+#: aleksis/core/models.py:1042
 msgid "Dashboard widget order"
 msgstr ""
 
-#: aleksis/core/models.py:1038
+#: aleksis/core/models.py:1043
 msgid "Dashboard widget orders"
 msgstr ""
 
-#: aleksis/core/models.py:1044
+#: aleksis/core/models.py:1049
 msgid "Menu ID"
 msgstr ""
 
-#: aleksis/core/models.py:1057
+#: aleksis/core/models.py:1062
 msgid "Custom menu"
 msgstr ""
 
-#: aleksis/core/models.py:1058
+#: aleksis/core/models.py:1063
 msgid "Custom menus"
 msgstr ""
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:1075
 msgid "Menu"
 msgstr ""
 
-#: aleksis/core/models.py:1072 aleksis/core/models.py:1320
+#: aleksis/core/models.py:1079 aleksis/core/models.py:1330
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr ""
 
-#: aleksis/core/models.py:1078
+#: aleksis/core/models.py:1085
 msgid "Custom menu item"
 msgstr ""
 
-#: aleksis/core/models.py:1079
+#: aleksis/core/models.py:1086
 msgid "Custom menu items"
 msgstr ""
 
-#: aleksis/core/models.py:1093
+#: aleksis/core/models.py:1103
 msgid "Title of type"
 msgstr ""
 
-#: aleksis/core/models.py:1100 aleksis/core/templates/core/group/full.html:47
+#: aleksis/core/models.py:1110 aleksis/core/templates/core/group/full.html:50
 #, fuzzy
 #| msgid "Group"
 msgid "Group type"
 msgstr "Groupe"
 
-#: aleksis/core/models.py:1114
+#: aleksis/core/models.py:1124
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view system status"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1115
+#: aleksis/core/models.py:1125
 msgid "Can manage data"
 msgstr ""
 
-#: aleksis/core/models.py:1116
+#: aleksis/core/models.py:1126
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can impersonate"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1117
+#: aleksis/core/models.py:1127
 msgid "Can use search"
 msgstr ""
 
-#: aleksis/core/models.py:1118
+#: aleksis/core/models.py:1128
 msgid "Can change site preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1119
+#: aleksis/core/models.py:1129
 msgid "Can change person preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1120
+#: aleksis/core/models.py:1130
 msgid "Can change group preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1121
+#: aleksis/core/models.py:1131
 msgid "Can test PDF generation"
 msgstr ""
 
-#: aleksis/core/models.py:1122
+#: aleksis/core/models.py:1132
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can invite persons"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1168
 msgid "Related data check task"
 msgstr ""
 
-#: aleksis/core/models.py:1166
+#: aleksis/core/models.py:1176
 msgid "Issue solved"
 msgstr ""
 
-#: aleksis/core/models.py:1167
+#: aleksis/core/models.py:1177
 msgid "Notification sent"
 msgstr ""
 
-#: aleksis/core/models.py:1180
+#: aleksis/core/models.py:1190
 msgid "Data check result"
 msgstr ""
 
-#: aleksis/core/models.py:1181
+#: aleksis/core/models.py:1191
 msgid "Data check results"
 msgstr ""
 
-#: aleksis/core/models.py:1183
+#: aleksis/core/models.py:1193
 msgid "Can run data checks"
 msgstr ""
 
-#: aleksis/core/models.py:1184
+#: aleksis/core/models.py:1194
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1191
+#: aleksis/core/models.py:1201
 #, fuzzy
 #| msgid "Contact details"
 msgid "E-Mail address"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1223
+#: aleksis/core/models.py:1233
 #, fuzzy
 #| msgid "Owners"
 msgid "Owner"
 msgstr "Propriétaires"
 
-#: aleksis/core/models.py:1227
+#: aleksis/core/models.py:1237
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1229
+#: aleksis/core/models.py:1239
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1231
+#: aleksis/core/models.py:1241
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1238
+#: aleksis/core/models.py:1248
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1239
+#: aleksis/core/models.py:1249
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1244
+#: aleksis/core/models.py:1254
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1247
+#: aleksis/core/models.py:1257
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1259
+#: aleksis/core/models.py:1269
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1260
+#: aleksis/core/models.py:1270
 msgid "Task user assignments"
 msgstr ""
 
-#: aleksis/core/models.py:1276
+#: aleksis/core/models.py:1286
 #, fuzzy
 #| msgid "Contact details"
 msgid "Additional attributes"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1314
+#: aleksis/core/models.py:1324
 msgid "Allowed scopes that clients can request"
 msgstr ""
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1334
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr ""
 
-#: aleksis/core/models.py:1373
+#: aleksis/core/models.py:1383
 msgid "UUID"
 msgstr ""
 
-#: aleksis/core/models.py:1377
+#: aleksis/core/models.py:1387
 msgid "Selected ICal feed"
 msgstr ""
 
-#: aleksis/core/models.py:1386
+#: aleksis/core/models.py:1396
 msgid "Personal Calendar URL"
 msgstr ""
 
-#: aleksis/core/models.py:1387
+#: aleksis/core/models.py:1397
 msgid "Personal Calendar URLs"
 msgstr ""
 
@@ -1247,94 +1261,94 @@ msgstr ""
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr "Détails de contact"
 
-#: aleksis/core/preferences.py:344
-msgid "Available languages"
-msgstr ""
-
-#: aleksis/core/preferences.py:357
+#: aleksis/core/preferences.py:343
 msgid "Send emails if data checks detect problems"
 msgstr ""
 
-#: aleksis/core/preferences.py:368
+#: aleksis/core/preferences.py:354
 msgid "Email recipients for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:379
+#: aleksis/core/preferences.py:365
 msgid "Email recipient groups for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:388
+#: aleksis/core/preferences.py:374
 msgid "Show dashboard to users without login"
 msgstr ""
 
-#: aleksis/core/preferences.py:397
+#: aleksis/core/preferences.py:383
 msgid "Allow users to edit their dashboard"
 msgstr ""
 
-#: aleksis/core/preferences.py:408
+#: aleksis/core/preferences.py:394
 msgid "Fields on person model which are editable by themselves."
 msgstr ""
 
-#: aleksis/core/preferences.py:423
+#: aleksis/core/preferences.py:409
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr ""
 
-#: aleksis/core/preferences.py:437
+#: aleksis/core/preferences.py:423
 msgid "Contact for notification if a person changes their data"
 msgstr ""
 
-#: aleksis/core/preferences.py:448
+#: aleksis/core/preferences.py:434
 msgid "Prefer personal photos over avatars"
 msgstr ""
 
-#: aleksis/core/preferences.py:458
+#: aleksis/core/preferences.py:444
 msgid "PDF file expiration duration"
 msgstr ""
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:445
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/preferences.py:469
+#: aleksis/core/preferences.py:455
 msgid "Automatically update the dashboard and its widgets"
 msgstr ""
 
-#: aleksis/core/preferences.py:479
+#: aleksis/core/preferences.py:465
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr ""
 
-#: aleksis/core/preferences.py:489
+#: aleksis/core/preferences.py:475
 msgid "Country for phone number parsing"
 msgstr ""
 
-#: aleksis/core/settings.py:540
+#: aleksis/core/settings.py:541
 msgid "English"
 msgstr ""
 
-#: aleksis/core/settings.py:541
+#: aleksis/core/settings.py:542
 msgid "German"
 msgstr ""
 
-#: aleksis/core/tables.py:24
+#: aleksis/core/settings.py:543
+msgid "Ukrainian"
+msgstr ""
+
+#: aleksis/core/tables.py:25
 #: aleksis/core/templates/core/announcement/list.html:36
-#: aleksis/core/templates/core/group/full.html:24
+#: aleksis/core/templates/core/group/full.html:26
 #: aleksis/core/templates/core/person/full.html:26
 #: aleksis/core/templates/core/person/full.html:86
 #: aleksis/core/templates/oauth2_provider/application/detail.html:17
 msgid "Edit"
 msgstr ""
 
-#: aleksis/core/tables.py:26 aleksis/core/tables.py:94
-#: aleksis/core/tables.py:138
+#: aleksis/core/tables.py:27 aleksis/core/tables.py:148
+#: aleksis/core/tables.py:192
 #: aleksis/core/templates/core/announcement/list.html:22
 msgid "Actions"
 msgstr ""
 
-#: aleksis/core/tables.py:61 aleksis/core/tables.py:62
-#: aleksis/core/tables.py:76 aleksis/core/tables.py:92
-#: aleksis/core/tables.py:136
+#: aleksis/core/tables.py:115 aleksis/core/tables.py:116
+#: aleksis/core/tables.py:130 aleksis/core/tables.py:146
+#: aleksis/core/tables.py:190
 #: aleksis/core/templates/core/announcement/list.html:42
-#: aleksis/core/templates/core/group/full.html:31
+#: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
 #: aleksis/core/templates/core/person/full.html:33
 #: aleksis/core/templates/core/person/full.html:93
@@ -1373,7 +1387,7 @@ msgstr ""
 #: aleksis/core/templates/500.html:10
 msgid ""
 "An unexpected error has\n"
-"          occured."
+"          occurred."
 msgstr ""
 
 #: aleksis/core/templates/500.html:13
@@ -1879,34 +1893,34 @@ msgstr ""
 msgid "Edit group"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:38
+#: aleksis/core/templates/core/group/full.html:40
 #: aleksis/core/templates/core/person/full.html:40
 #: aleksis/core/templates/core/person/full.html:100
 msgid "Change preferences"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:64
+#: aleksis/core/templates/core/group/full.html:68
 msgid "Statistics"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:67
+#: aleksis/core/templates/core/group/full.html:73
 msgid "Count of members"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:71
+#: aleksis/core/templates/core/group/full.html:81
 msgid "Average age"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
+#: aleksis/core/templates/core/group/full.html:90
 msgid "Age range"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years to"
-msgstr ""
-
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years "
+#: aleksis/core/templates/core/group/full.html:93
+#, python-format
+msgid ""
+"\n"
+"              %(min)s years to %(max)s years\n"
+"            "
 msgstr ""
 
 #: aleksis/core/templates/core/group/list.html:14
@@ -1962,7 +1976,7 @@ msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:4
 #: aleksis/core/templates/core/ical/ical_list.html:5
-msgid "ICal Feeds"
+msgid "iCal Feeds"
 msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:8
@@ -2248,11 +2262,11 @@ msgstr ""
 msgid "Unknown"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:15
+#: aleksis/core/templates/core/partials/language_form.html:17
 msgid "Language"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:27
+#: aleksis/core/templates/core/partials/language_form.html:29
 msgid "Select language"
 msgstr ""
 
@@ -3194,172 +3208,172 @@ msgstr ""
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:292
+#: aleksis/core/views.py:294
 msgid "The school term has been created."
 msgstr ""
 
-#: aleksis/core/views.py:304
+#: aleksis/core/views.py:306
 msgid "The school term has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:424
+#: aleksis/core/views.py:426
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:443 aleksis/core/views.py:453
+#: aleksis/core/views.py:445 aleksis/core/views.py:455
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:503
+#: aleksis/core/views.py:505
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:600
+#: aleksis/core/views.py:602
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:616
+#: aleksis/core/views.py:618
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:684
+#: aleksis/core/views.py:686
 msgid "The requested preference registry does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:705
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:729
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:743
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:773
-msgid "The additional_field has been saved."
+#: aleksis/core/views.py:775
+msgid "The additional field has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:809
 msgid "The additional field has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:834
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:864
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:897
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:898
 msgid "Run data checks …"
 msgstr ""
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:899
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:900
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:916
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:924
+#: aleksis/core/views.py:926
 msgid "The requested solve option does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:958
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:988
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:998
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1067
+#: aleksis/core/views.py:1069
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1069
+#: aleksis/core/views.py:1071
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1145
+#: aleksis/core/views.py:1147
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr ""
 
-#: aleksis/core/views.py:1236
+#: aleksis/core/views.py:1238
 msgid "We have successfully assigned the permissions."
 msgstr ""
 
-#: aleksis/core/views.py:1246
+#: aleksis/core/views.py:1248
 msgid "The global user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1256
+#: aleksis/core/views.py:1258
 msgid "The global group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1266
+#: aleksis/core/views.py:1268
 msgid "The object user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1276
+#: aleksis/core/views.py:1278
 msgid "The object group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1344
+#: aleksis/core/views.py:1346
 msgid "The requested PDF file does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:1353 aleksis/core/views.py:1357
+#: aleksis/core/views.py:1355 aleksis/core/views.py:1359
 msgid "The requested task does not exist or is not accessible"
 msgstr ""
 
-#: aleksis/core/views.py:1409
+#: aleksis/core/views.py:1411
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1416
+#: aleksis/core/views.py:1418
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
-#: aleksis/core/views.py:1487
+#: aleksis/core/views.py:1489
 msgid "Person was invited successfully and an email with further instructions has been send to them."
 msgstr ""
 
-#: aleksis/core/views.py:1498
+#: aleksis/core/views.py:1500
 #, fuzzy
 #| msgid "This username is already in use."
 msgid "Person was already invited."
 msgstr "Cet nom est deja en utilisation."
 
-#: aleksis/core/views.py:1598
-msgid "ICal feed updated successfully"
+#: aleksis/core/views.py:1600
+msgid "iCal feed updated successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1608
-msgid "ICal feed deleted successfully"
+#: aleksis/core/views.py:1610
+msgid "iCal feed deleted successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1616
-msgid "ICal feed created successfully"
+#: aleksis/core/views.py:1618
+msgid "iCal feed created successfully"
 msgstr ""
 
 #, fuzzy
diff --git a/aleksis/core/locale/fr/LC_MESSAGES/djangojs.po b/aleksis/core/locale/fr/LC_MESSAGES/djangojs.po
index 8b09ccccb99d662228f56e974bfc374c48e225fa..8b1f39f46181c3eb157a2316413bca33ad16015a 100644
--- a/aleksis/core/locale/fr/LC_MESSAGES/djangojs.po
+++ b/aleksis/core/locale/fr/LC_MESSAGES/djangojs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/aleksis/core/locale/la/LC_MESSAGES/django.po b/aleksis/core/locale/la/LC_MESSAGES/django.po
index 2d18ad75e75b9e8c18abb297f12c14b2ba21088d..b75d5e04731de1445f993badba1509a713f9e474 100644
--- a/aleksis/core/locale/la/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/la/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: 2020-12-19 12:57+0000\n"
 "Last-Translator: Julian <leuckerj@gmail.com>\n"
 "Language-Team: Latin <https://translate.edugit.org/projects/aleksis/aleksis/la/>\n"
@@ -45,35 +45,45 @@ msgid "Home and mobile phone"
 msgstr "Numerus telephoni mobilis"
 
 #: aleksis/core/apps.py:171 aleksis/core/forms.py:220 aleksis/core/menus.py:171
-#: aleksis/core/models.py:489 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/models.py:494 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:246
 msgid "Groups"
 msgstr "Greges"
 
-#: aleksis/core/data_checks.py:56
+#: aleksis/core/data_checks.py:59
 msgid "Ignore problem"
 msgstr ""
 
-#: aleksis/core/data_checks.py:185
+#: aleksis/core/data_checks.py:188
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/data_checks.py:291
+#: aleksis/core/data_checks.py:294
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Deactivate DashboardWidget"
 msgstr "Forum"
 
-#: aleksis/core/data_checks.py:303
+#: aleksis/core/data_checks.py:306
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr ""
 
-#: aleksis/core/data_checks.py:304
+#: aleksis/core/data_checks.py:307
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
+#: aleksis/core/data_checks.py:330
+#, python-format
+msgid "Validate field %s of model %s."
+msgstr ""
+
+#: aleksis/core/data_checks.py:332
+#, python-format
+msgid "The field %s couldn't be validated successfully."
+msgstr ""
+
 #: aleksis/core/feeds.py:52
 msgid "Birthday Calendar"
 msgstr ""
@@ -119,11 +129,11 @@ msgstr ""
 msgid "Content type"
 msgstr ""
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:715
+#: aleksis/core/filters.py:113 aleksis/core/models.py:720
 msgid "User"
 msgstr ""
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:488
+#: aleksis/core/filters.py:135 aleksis/core/models.py:493
 msgid "Group"
 msgstr "Grex"
 
@@ -131,7 +141,7 @@ msgstr "Grex"
 msgid "Base data"
 msgstr ""
 
-#: aleksis/core/forms.py:55
+#: aleksis/core/forms.py:55 aleksis/core/tables.py:47
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Address"
@@ -163,7 +173,7 @@ msgstr ""
 msgid "This username is already in use."
 msgstr ""
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:136
+#: aleksis/core/forms.py:153 aleksis/core/models.py:141
 msgid "School term"
 msgstr "Anus scolae"
 
@@ -174,7 +184,7 @@ msgid "Common data"
 msgstr "Adminstratio datarum"
 
 #: aleksis/core/forms.py:155 aleksis/core/forms.py:207
-#: aleksis/core/menus.py:160 aleksis/core/models.py:159
+#: aleksis/core/menus.py:160 aleksis/core/models.py:164
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
@@ -186,18 +196,18 @@ msgstr "personae"
 msgid "Additional data"
 msgstr "addita nomines"
 
-#: aleksis/core/forms.py:157 aleksis/core/models.py:212
-#: aleksis/core/models.py:541
+#: aleksis/core/forms.py:157 aleksis/core/models.py:217
+#: aleksis/core/models.py:546 aleksis/core/tables.py:46
 msgid "Photo"
 msgstr "Photographia"
 
 #: aleksis/core/forms.py:199 aleksis/core/forms.py:202
-#: aleksis/core/models.py:79
+#: aleksis/core/models.py:84
 msgid "Date"
 msgstr "dies"
 
 #: aleksis/core/forms.py:200 aleksis/core/forms.py:203
-#: aleksis/core/models.py:87
+#: aleksis/core/models.py:92
 msgid "Time"
 msgstr "tempus"
 
@@ -233,11 +243,11 @@ msgstr ""
 msgid "Please enter your invitation code."
 msgstr ""
 
-#: aleksis/core/forms.py:418 aleksis/core/models.py:187
+#: aleksis/core/forms.py:418 aleksis/core/models.py:192
 msgid "First name"
 msgstr "Primus nomen"
 
-#: aleksis/core/forms.py:419 aleksis/core/models.py:188
+#: aleksis/core/forms.py:419 aleksis/core/models.py:193
 msgid "Last name"
 msgstr "Secondus nomen"
 
@@ -352,13 +362,13 @@ msgstr "Forum"
 msgid "Admin"
 msgstr "Administratio"
 
-#: aleksis/core/menus.py:47 aleksis/core/models.py:867
+#: aleksis/core/menus.py:47 aleksis/core/models.py:872
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr "Nuntii"
 
-#: aleksis/core/menus.py:58 aleksis/core/models.py:137
+#: aleksis/core/menus.py:58 aleksis/core/models.py:142
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
@@ -418,7 +428,7 @@ msgstr "Nuntii"
 msgid "People"
 msgstr "Personae"
 
-#: aleksis/core/menus.py:182 aleksis/core/models.py:1101
+#: aleksis/core/menus.py:182 aleksis/core/models.py:1111
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 #, fuzzy
@@ -430,7 +440,7 @@ msgstr "Greges"
 msgid "Groups and child groups"
 msgstr ""
 
-#: aleksis/core/menus.py:204 aleksis/core/models.py:537
+#: aleksis/core/menus.py:204 aleksis/core/models.py:542
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 #, fuzzy
@@ -507,651 +517,655 @@ msgstr "nomen retractare"
 msgid "Linked school term"
 msgstr "Muta anum scolae"
 
-#: aleksis/core/models.py:77
+#: aleksis/core/models.py:82
 msgid "Boolean (Yes/No)"
 msgstr ""
 
-#: aleksis/core/models.py:78
+#: aleksis/core/models.py:83
 msgid "Text (one line)"
 msgstr ""
 
-#: aleksis/core/models.py:80
+#: aleksis/core/models.py:85
 msgid "Date and time"
 msgstr "Dies et hora"
 
-#: aleksis/core/models.py:81
+#: aleksis/core/models.py:86
 msgid "Decimal number"
 msgstr ""
 
-#: aleksis/core/models.py:82 aleksis/core/models.py:205
+#: aleksis/core/models.py:87 aleksis/core/models.py:210
 msgid "E-mail address"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:83
+#: aleksis/core/models.py:88
 msgid "Integer"
 msgstr ""
 
-#: aleksis/core/models.py:84
+#: aleksis/core/models.py:89
 #, fuzzy
 #| msgid "E-mail address"
 msgid "IP address"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:85
+#: aleksis/core/models.py:90
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr ""
 
-#: aleksis/core/models.py:86
+#: aleksis/core/models.py:91
 msgid "Text (multi-line)"
 msgstr ""
 
-#: aleksis/core/models.py:88
+#: aleksis/core/models.py:93
 msgid "URL / Link"
 msgstr ""
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:1070
-#: aleksis/core/models.py:1374
+#: aleksis/core/models.py:105 aleksis/core/models.py:1077
+#: aleksis/core/models.py:1384
 msgid "Name"
 msgstr "Nomen"
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:107
 msgid "Start date"
 msgstr ""
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:108
 msgid "End date"
 msgstr ""
 
-#: aleksis/core/models.py:122
+#: aleksis/core/models.py:127
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: aleksis/core/models.py:129
+#: aleksis/core/models.py:134
 msgid "There is already a school term for this time or a part of this time."
 msgstr ""
 
-#: aleksis/core/models.py:158 aleksis/core/models.py:1019
-#: aleksis/core/models.py:1371
+#: aleksis/core/models.py:163 aleksis/core/models.py:1024
+#: aleksis/core/models.py:1381
 msgid "Person"
 msgstr "Persona"
 
-#: aleksis/core/models.py:161
+#: aleksis/core/models.py:166
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Can view address"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:162
+#: aleksis/core/models.py:167
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Can view contact details"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:163
+#: aleksis/core/models.py:168
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Can view photo"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:164
+#: aleksis/core/models.py:169
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Can view avatar image"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:165
+#: aleksis/core/models.py:170
 #, fuzzy
 #| msgid "Persons and accounts"
 msgid "Can view persons groups"
 msgstr "Personae et computi"
 
-#: aleksis/core/models.py:166
+#: aleksis/core/models.py:171
 #, fuzzy
 #| msgid "Stop impersonation"
 msgid "Can view personal details"
 msgstr "Simulandum aliquem finire"
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "female"
 msgstr "femininum"
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "male"
 msgstr "maskulinum"
 
-#: aleksis/core/models.py:184 aleksis/core/models.py:1273
+#: aleksis/core/models.py:181
+msgid "other"
+msgstr ""
+
+#: aleksis/core/models.py:189 aleksis/core/models.py:1283
 msgid "Linked user"
 msgstr ""
 
-#: aleksis/core/models.py:190
+#: aleksis/core/models.py:195
 msgid "Additional name(s)"
 msgstr "addita nomines"
 
-#: aleksis/core/models.py:194 aleksis/core/models.py:506
+#: aleksis/core/models.py:199 aleksis/core/models.py:511
 msgid "Short name"
 msgstr "Breve nomen"
 
-#: aleksis/core/models.py:197
+#: aleksis/core/models.py:202
 msgid "Street"
 msgstr "Via"
 
-#: aleksis/core/models.py:198
+#: aleksis/core/models.py:203
 msgid "Street number"
 msgstr "Numerus domini"
 
-#: aleksis/core/models.py:199
+#: aleksis/core/models.py:204
 msgid "Postal code"
 msgstr "Numerus directorius"
 
-#: aleksis/core/models.py:200
+#: aleksis/core/models.py:205
 msgid "Place"
 msgstr "Urbs"
 
-#: aleksis/core/models.py:202 aleksis/core/templates/core/person/full.html:160
+#: aleksis/core/models.py:207 aleksis/core/templates/core/person/full.html:160
 msgid "Home phone"
 msgstr "Numerus telephoni domi"
 
-#: aleksis/core/models.py:203 aleksis/core/templates/core/person/full.html:170
+#: aleksis/core/models.py:208 aleksis/core/templates/core/person/full.html:170
 msgid "Mobile phone"
 msgstr "Numerus telephoni mobilis"
 
-#: aleksis/core/models.py:207
+#: aleksis/core/models.py:212
 msgid "Date of birth"
 msgstr "Dies natalis"
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:213
 #, fuzzy
 #| msgid "Date of birth"
 msgid "Place of birth"
 msgstr "Dies natalis"
 
-#: aleksis/core/models.py:209
+#: aleksis/core/models.py:214
 msgid "Sex"
 msgstr "Genus"
 
-#: aleksis/core/models.py:216 aleksis/core/models.py:545
+#: aleksis/core/models.py:221 aleksis/core/models.py:550
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr ""
 
-#: aleksis/core/models.py:221 aleksis/core/models.py:549
+#: aleksis/core/models.py:226 aleksis/core/models.py:554
 msgid "Display picture / Avatar"
 msgstr ""
 
-#: aleksis/core/models.py:224 aleksis/core/models.py:552
+#: aleksis/core/models.py:229 aleksis/core/models.py:557
 msgid "This is a picture or an avatar for public display."
 msgstr ""
 
-#: aleksis/core/models.py:229 aleksis/core/templates/core/person/full.html:235
+#: aleksis/core/models.py:234 aleksis/core/templates/core/person/full.html:235
 msgid "Guardians / Parents"
 msgstr "Parentes"
 
-#: aleksis/core/models.py:236
+#: aleksis/core/models.py:241
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:719
-#: aleksis/core/models.py:743 aleksis/core/models.py:834
-#: aleksis/core/models.py:1094
+#: aleksis/core/models.py:244 aleksis/core/models.py:724
+#: aleksis/core/models.py:748 aleksis/core/models.py:839
+#: aleksis/core/models.py:1104
 msgid "Description"
 msgstr "Descriptio"
 
-#: aleksis/core/models.py:459
+#: aleksis/core/models.py:464
 msgid "Title of field"
 msgstr ""
 
-#: aleksis/core/models.py:461
+#: aleksis/core/models.py:466
 msgid "Type of field"
 msgstr ""
 
-#: aleksis/core/models.py:463
+#: aleksis/core/models.py:468
 msgid "Required"
 msgstr ""
 
-#: aleksis/core/models.py:464
+#: aleksis/core/models.py:469
 #, fuzzy
 #| msgid "Site description"
 msgid "Help text / description"
 msgstr "Descriptio paginae"
 
-#: aleksis/core/models.py:470
+#: aleksis/core/models.py:475
 #, fuzzy
 #| msgid "Additional name(s)"
 msgid "Addtitional field for groups"
 msgstr "addita nomines"
 
-#: aleksis/core/models.py:471
+#: aleksis/core/models.py:476
 #, fuzzy
 #| msgid "Additional name(s)"
 msgid "Addtitional fields for groups"
 msgstr "addita nomines"
 
-#: aleksis/core/models.py:491
+#: aleksis/core/models.py:496
 msgid "Can assign child groups to groups"
 msgstr ""
 
-#: aleksis/core/models.py:492
+#: aleksis/core/models.py:497
 #, fuzzy
 #| msgid "Persons and accounts"
 msgid "Can view statistics about group."
 msgstr "Personae et computi"
 
-#: aleksis/core/models.py:504
+#: aleksis/core/models.py:509
 #, fuzzy
 #| msgid "Last name"
 msgid "Long name"
 msgstr "Secondus nomen"
 
-#: aleksis/core/models.py:514 aleksis/core/templates/core/group/full.html:85
+#: aleksis/core/models.py:519 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr ""
 
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/full.html:82
+#: aleksis/core/models.py:522 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr ""
 
-#: aleksis/core/models.py:524 aleksis/core/templates/core/group/full.html:55
+#: aleksis/core/models.py:529 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr ""
 
-#: aleksis/core/models.py:532
+#: aleksis/core/models.py:537
 msgid "Type of group"
 msgstr ""
 
-#: aleksis/core/models.py:718 aleksis/core/models.py:742
-#: aleksis/core/models.py:833
+#: aleksis/core/models.py:723 aleksis/core/models.py:747
+#: aleksis/core/models.py:838
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr "Titulus"
 
-#: aleksis/core/models.py:721
+#: aleksis/core/models.py:726
 msgid "Application"
 msgstr ""
 
-#: aleksis/core/models.py:727
+#: aleksis/core/models.py:732
 msgid "Activity"
 msgstr ""
 
-#: aleksis/core/models.py:728
+#: aleksis/core/models.py:733
 msgid "Activities"
 msgstr ""
 
-#: aleksis/core/models.py:734
+#: aleksis/core/models.py:739
 msgid "Sender"
 msgstr "Mittens"
 
-#: aleksis/core/models.py:739
+#: aleksis/core/models.py:744
 msgid "Recipient"
 msgstr ""
 
-#: aleksis/core/models.py:744 aleksis/core/models.py:1071
+#: aleksis/core/models.py:749 aleksis/core/models.py:1078
 msgid "Link"
 msgstr ""
 
-#: aleksis/core/models.py:746
+#: aleksis/core/models.py:751
 #, fuzzy
 #| msgid "Notification"
 msgid "Send notification at"
 msgstr "Nuntius"
 
-#: aleksis/core/models.py:748
+#: aleksis/core/models.py:753
 msgid "Read"
 msgstr ""
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:754
 msgid "Sent"
 msgstr ""
 
-#: aleksis/core/models.py:766
+#: aleksis/core/models.py:771
 #, fuzzy
 #| msgid "Notifications"
 msgid "Notification"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:767 aleksis/core/preferences.py:29
+#: aleksis/core/models.py:772 aleksis/core/preferences.py:29
 #: aleksis/core/templates/core/base.html:81
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:835
+#: aleksis/core/models.py:840
 msgid "Link to detailed view"
 msgstr ""
 
-#: aleksis/core/models.py:838
+#: aleksis/core/models.py:843
 msgid "Date and time from when to show"
 msgstr ""
 
-#: aleksis/core/models.py:841
+#: aleksis/core/models.py:846
 msgid "Date and time until when to show"
 msgstr ""
 
-#: aleksis/core/models.py:866
+#: aleksis/core/models.py:871
 #, fuzzy
 #| msgid "Announcements"
 msgid "Announcement"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:904
+#: aleksis/core/models.py:909
 #, fuzzy
 #| msgid "Announcements"
 msgid "Announcement recipient"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:905
+#: aleksis/core/models.py:910
 #, fuzzy
 #| msgid "Announcements"
 msgid "Announcement recipients"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:927
+#: aleksis/core/models.py:932
 #, fuzzy
 #| msgid "Site title"
 msgid "Widget Title"
 msgstr "Titulus paginae"
 
-#: aleksis/core/models.py:928
+#: aleksis/core/models.py:933
 msgid "Activate Widget"
 msgstr ""
 
-#: aleksis/core/models.py:929
+#: aleksis/core/models.py:934
 #, fuzzy
 #| msgid "Site title"
 msgid "Widget is broken"
 msgstr "Titulus paginae"
 
-#: aleksis/core/models.py:932
+#: aleksis/core/models.py:937
 msgid "Size on mobile devices"
 msgstr ""
 
-#: aleksis/core/models.py:933
+#: aleksis/core/models.py:938
 msgid "<= 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:938
+#: aleksis/core/models.py:943
 msgid "Size on tablet devices"
 msgstr ""
 
-#: aleksis/core/models.py:939
+#: aleksis/core/models.py:944
 msgid "> 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:944
+#: aleksis/core/models.py:949
 msgid "Size on desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:945
+#: aleksis/core/models.py:950
 msgid "> 992 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:950
+#: aleksis/core/models.py:955
 msgid "Size on large desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:951
+#: aleksis/core/models.py:956
 msgid "> 1200 px>, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:982
+#: aleksis/core/models.py:987
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Can edit default dashboard"
 msgstr "Forum"
 
-#: aleksis/core/models.py:983
+#: aleksis/core/models.py:988
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Dashboard Widget"
 msgstr "Forum"
 
-#: aleksis/core/models.py:984
+#: aleksis/core/models.py:989
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Dashboard Widgets"
 msgstr "Forum"
 
-#: aleksis/core/models.py:990
+#: aleksis/core/models.py:995
 msgid "URL"
 msgstr ""
 
-#: aleksis/core/models.py:991
+#: aleksis/core/models.py:996
 #, fuzzy
 #| msgid "Icon"
 msgid "Icon URL"
 msgstr "Nota"
 
-#: aleksis/core/models.py:997
+#: aleksis/core/models.py:1002
 msgid "External link widget"
 msgstr ""
 
-#: aleksis/core/models.py:998
+#: aleksis/core/models.py:1003
 msgid "External link widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1004
+#: aleksis/core/models.py:1009
 msgid "Content"
 msgstr ""
 
-#: aleksis/core/models.py:1010
+#: aleksis/core/models.py:1015
 msgid "Static content widget"
 msgstr ""
 
-#: aleksis/core/models.py:1011
+#: aleksis/core/models.py:1016
 msgid "Static content widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1016
+#: aleksis/core/models.py:1021
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Dashboard widget"
 msgstr "Forum"
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:1026
 msgid "Order"
 msgstr ""
 
-#: aleksis/core/models.py:1022
+#: aleksis/core/models.py:1027
 msgid "Part of the default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1037
+#: aleksis/core/models.py:1042
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Dashboard widget order"
 msgstr "Forum"
 
-#: aleksis/core/models.py:1038
+#: aleksis/core/models.py:1043
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Dashboard widget orders"
 msgstr "Forum"
 
-#: aleksis/core/models.py:1044
+#: aleksis/core/models.py:1049
 msgid "Menu ID"
 msgstr ""
 
-#: aleksis/core/models.py:1057
+#: aleksis/core/models.py:1062
 msgid "Custom menu"
 msgstr ""
 
-#: aleksis/core/models.py:1058
+#: aleksis/core/models.py:1063
 msgid "Custom menus"
 msgstr ""
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:1075
 msgid "Menu"
 msgstr ""
 
-#: aleksis/core/models.py:1072 aleksis/core/models.py:1320
+#: aleksis/core/models.py:1079 aleksis/core/models.py:1330
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr "Nota"
 
-#: aleksis/core/models.py:1078
+#: aleksis/core/models.py:1085
 msgid "Custom menu item"
 msgstr ""
 
-#: aleksis/core/models.py:1079
+#: aleksis/core/models.py:1086
 msgid "Custom menu items"
 msgstr ""
 
-#: aleksis/core/models.py:1093
+#: aleksis/core/models.py:1103
 msgid "Title of type"
 msgstr ""
 
-#: aleksis/core/models.py:1100 aleksis/core/templates/core/group/full.html:47
+#: aleksis/core/models.py:1110 aleksis/core/templates/core/group/full.html:50
 #, fuzzy
 #| msgid "Group"
 msgid "Group type"
 msgstr "Grex"
 
-#: aleksis/core/models.py:1114
+#: aleksis/core/models.py:1124
 #, fuzzy
 #| msgid "System status"
 msgid "Can view system status"
 msgstr "Status systemae"
 
-#: aleksis/core/models.py:1115
+#: aleksis/core/models.py:1125
 #, fuzzy
 #| msgid "Data management"
 msgid "Can manage data"
 msgstr "Adminstratio datarum"
 
-#: aleksis/core/models.py:1116
+#: aleksis/core/models.py:1126
 #, fuzzy
 #| msgid "Stop impersonation"
 msgid "Can impersonate"
 msgstr "Simulandum aliquem finire"
 
-#: aleksis/core/models.py:1117
+#: aleksis/core/models.py:1127
 msgid "Can use search"
 msgstr ""
 
-#: aleksis/core/models.py:1118
+#: aleksis/core/models.py:1128
 msgid "Can change site preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1119
+#: aleksis/core/models.py:1129
 msgid "Can change person preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1120
+#: aleksis/core/models.py:1130
 msgid "Can change group preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1121
+#: aleksis/core/models.py:1131
 msgid "Can test PDF generation"
 msgstr ""
 
-#: aleksis/core/models.py:1122
+#: aleksis/core/models.py:1132
 #, fuzzy
 #| msgid "Stop impersonation"
 msgid "Can invite persons"
 msgstr "Simulandum aliquem finire"
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1168
 msgid "Related data check task"
 msgstr ""
 
-#: aleksis/core/models.py:1166
+#: aleksis/core/models.py:1176
 msgid "Issue solved"
 msgstr ""
 
-#: aleksis/core/models.py:1167
+#: aleksis/core/models.py:1177
 #, fuzzy
 #| msgid "Notifications"
 msgid "Notification sent"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:1180
+#: aleksis/core/models.py:1190
 msgid "Data check result"
 msgstr ""
 
-#: aleksis/core/models.py:1181
+#: aleksis/core/models.py:1191
 msgid "Data check results"
 msgstr ""
 
-#: aleksis/core/models.py:1183
+#: aleksis/core/models.py:1193
 msgid "Can run data checks"
 msgstr ""
 
-#: aleksis/core/models.py:1184
+#: aleksis/core/models.py:1194
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1191
+#: aleksis/core/models.py:1201
 #, fuzzy
 #| msgid "E-mail address"
 msgid "E-Mail address"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:1223
+#: aleksis/core/models.py:1233
 msgid "Owner"
 msgstr ""
 
-#: aleksis/core/models.py:1227
+#: aleksis/core/models.py:1237
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1229
+#: aleksis/core/models.py:1239
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1231
+#: aleksis/core/models.py:1241
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1238
+#: aleksis/core/models.py:1248
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1239
+#: aleksis/core/models.py:1249
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1244
+#: aleksis/core/models.py:1254
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1247
+#: aleksis/core/models.py:1257
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1259
+#: aleksis/core/models.py:1269
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1260
+#: aleksis/core/models.py:1270
 msgid "Task user assignments"
 msgstr ""
 
-#: aleksis/core/models.py:1276
+#: aleksis/core/models.py:1286
 #, fuzzy
 #| msgid "Additional name(s)"
 msgid "Additional attributes"
 msgstr "addita nomines"
 
-#: aleksis/core/models.py:1314
+#: aleksis/core/models.py:1324
 msgid "Allowed scopes that clients can request"
 msgstr ""
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1334
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr ""
 
-#: aleksis/core/models.py:1373
+#: aleksis/core/models.py:1383
 msgid "UUID"
 msgstr ""
 
-#: aleksis/core/models.py:1377
+#: aleksis/core/models.py:1387
 msgid "Selected ICal feed"
 msgstr ""
 
-#: aleksis/core/models.py:1386
+#: aleksis/core/models.py:1396
 msgid "Personal Calendar URL"
 msgstr ""
 
-#: aleksis/core/models.py:1387
+#: aleksis/core/models.py:1397
 msgid "Personal Calendar URLs"
 msgstr ""
 
@@ -1315,96 +1329,96 @@ msgstr ""
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/preferences.py:344
-msgid "Available languages"
-msgstr ""
-
-#: aleksis/core/preferences.py:357
+#: aleksis/core/preferences.py:343
 msgid "Send emails if data checks detect problems"
 msgstr ""
 
-#: aleksis/core/preferences.py:368
+#: aleksis/core/preferences.py:354
 msgid "Email recipients for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:379
+#: aleksis/core/preferences.py:365
 msgid "Email recipient groups for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:388
+#: aleksis/core/preferences.py:374
 msgid "Show dashboard to users without login"
 msgstr ""
 
-#: aleksis/core/preferences.py:397
+#: aleksis/core/preferences.py:383
 msgid "Allow users to edit their dashboard"
 msgstr ""
 
-#: aleksis/core/preferences.py:408
+#: aleksis/core/preferences.py:394
 msgid "Fields on person model which are editable by themselves."
 msgstr ""
 
-#: aleksis/core/preferences.py:423
+#: aleksis/core/preferences.py:409
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr ""
 
-#: aleksis/core/preferences.py:437
+#: aleksis/core/preferences.py:423
 msgid "Contact for notification if a person changes their data"
 msgstr ""
 
-#: aleksis/core/preferences.py:448
+#: aleksis/core/preferences.py:434
 msgid "Prefer personal photos over avatars"
 msgstr ""
 
-#: aleksis/core/preferences.py:458
+#: aleksis/core/preferences.py:444
 msgid "PDF file expiration duration"
 msgstr ""
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:445
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/preferences.py:469
+#: aleksis/core/preferences.py:455
 msgid "Automatically update the dashboard and its widgets"
 msgstr ""
 
-#: aleksis/core/preferences.py:479
+#: aleksis/core/preferences.py:465
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr ""
 
-#: aleksis/core/preferences.py:489
+#: aleksis/core/preferences.py:475
 msgid "Country for phone number parsing"
 msgstr ""
 
-#: aleksis/core/settings.py:540
+#: aleksis/core/settings.py:541
 msgid "English"
 msgstr "Britannicus"
 
-#: aleksis/core/settings.py:541
+#: aleksis/core/settings.py:542
 msgid "German"
 msgstr "Germanus"
 
-#: aleksis/core/tables.py:24
+#: aleksis/core/settings.py:543
+msgid "Ukrainian"
+msgstr ""
+
+#: aleksis/core/tables.py:25
 #: aleksis/core/templates/core/announcement/list.html:36
-#: aleksis/core/templates/core/group/full.html:24
+#: aleksis/core/templates/core/group/full.html:26
 #: aleksis/core/templates/core/person/full.html:26
 #: aleksis/core/templates/core/person/full.html:86
 #: aleksis/core/templates/oauth2_provider/application/detail.html:17
 msgid "Edit"
 msgstr ""
 
-#: aleksis/core/tables.py:26 aleksis/core/tables.py:94
-#: aleksis/core/tables.py:138
+#: aleksis/core/tables.py:27 aleksis/core/tables.py:148
+#: aleksis/core/tables.py:192
 #: aleksis/core/templates/core/announcement/list.html:22
 #, fuzzy
 #| msgid "Notifications"
 msgid "Actions"
 msgstr "Nuntii"
 
-#: aleksis/core/tables.py:61 aleksis/core/tables.py:62
-#: aleksis/core/tables.py:76 aleksis/core/tables.py:92
-#: aleksis/core/tables.py:136
+#: aleksis/core/tables.py:115 aleksis/core/tables.py:116
+#: aleksis/core/tables.py:130 aleksis/core/tables.py:146
+#: aleksis/core/tables.py:190
 #: aleksis/core/templates/core/announcement/list.html:42
-#: aleksis/core/templates/core/group/full.html:31
+#: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
 #: aleksis/core/templates/core/person/full.html:33
 #: aleksis/core/templates/core/person/full.html:93
@@ -1443,7 +1457,7 @@ msgstr ""
 #: aleksis/core/templates/500.html:10
 msgid ""
 "An unexpected error has\n"
-"          occured."
+"          occurred."
 msgstr ""
 
 #: aleksis/core/templates/500.html:13
@@ -1975,36 +1989,36 @@ msgstr ""
 msgid "Edit group"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:38
+#: aleksis/core/templates/core/group/full.html:40
 #: aleksis/core/templates/core/person/full.html:40
 #: aleksis/core/templates/core/person/full.html:100
 msgid "Change preferences"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:64
+#: aleksis/core/templates/core/group/full.html:68
 #, fuzzy
 #| msgid "System status"
 msgid "Statistics"
 msgstr "Status systemae"
 
-#: aleksis/core/templates/core/group/full.html:67
+#: aleksis/core/templates/core/group/full.html:73
 msgid "Count of members"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:71
+#: aleksis/core/templates/core/group/full.html:81
 msgid "Average age"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
+#: aleksis/core/templates/core/group/full.html:90
 msgid "Age range"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years to"
-msgstr ""
-
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years "
+#: aleksis/core/templates/core/group/full.html:93
+#, python-format
+msgid ""
+"\n"
+"              %(min)s years to %(max)s years\n"
+"            "
 msgstr ""
 
 #: aleksis/core/templates/core/group/list.html:14
@@ -2060,7 +2074,7 @@ msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:4
 #: aleksis/core/templates/core/ical/ical_list.html:5
-msgid "ICal Feeds"
+msgid "iCal Feeds"
 msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:8
@@ -2362,11 +2376,11 @@ msgstr ""
 msgid "Unknown"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:15
+#: aleksis/core/templates/core/partials/language_form.html:17
 msgid "Language"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:27
+#: aleksis/core/templates/core/partials/language_form.html:29
 msgid "Select language"
 msgstr ""
 
@@ -3325,172 +3339,174 @@ msgstr ""
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:292
+#: aleksis/core/views.py:294
 msgid "The school term has been created."
 msgstr ""
 
-#: aleksis/core/views.py:304
+#: aleksis/core/views.py:306
 msgid "The school term has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:424
+#: aleksis/core/views.py:426
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:443 aleksis/core/views.py:453
+#: aleksis/core/views.py:445 aleksis/core/views.py:455
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:503
+#: aleksis/core/views.py:505
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:600
+#: aleksis/core/views.py:602
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:616
+#: aleksis/core/views.py:618
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:684
+#: aleksis/core/views.py:686
 msgid "The requested preference registry does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:705
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:729
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:743
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:773
-msgid "The additional_field has been saved."
-msgstr ""
+#: aleksis/core/views.py:775
+#, fuzzy
+#| msgid "Additional name(s)"
+msgid "The additional field has been saved."
+msgstr "addita nomines"
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:809
 msgid "The additional field has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:834
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:864
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:897
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:898
 #, fuzzy
 #| msgid "System status"
 msgid "Run data checks …"
 msgstr "Status systemae"
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:899
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:900
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:916
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:924
+#: aleksis/core/views.py:926
 msgid "The requested solve option does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:958
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:988
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:998
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1067
+#: aleksis/core/views.py:1069
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1069
+#: aleksis/core/views.py:1071
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1145
+#: aleksis/core/views.py:1147
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr ""
 
-#: aleksis/core/views.py:1236
+#: aleksis/core/views.py:1238
 msgid "We have successfully assigned the permissions."
 msgstr ""
 
-#: aleksis/core/views.py:1246
+#: aleksis/core/views.py:1248
 msgid "The global user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1256
+#: aleksis/core/views.py:1258
 msgid "The global group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1266
+#: aleksis/core/views.py:1268
 msgid "The object user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1276
+#: aleksis/core/views.py:1278
 msgid "The object group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1344
+#: aleksis/core/views.py:1346
 msgid "The requested PDF file does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:1353 aleksis/core/views.py:1357
+#: aleksis/core/views.py:1355 aleksis/core/views.py:1359
 msgid "The requested task does not exist or is not accessible"
 msgstr ""
 
-#: aleksis/core/views.py:1409
+#: aleksis/core/views.py:1411
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1416
+#: aleksis/core/views.py:1418
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
-#: aleksis/core/views.py:1487
+#: aleksis/core/views.py:1489
 msgid "Person was invited successfully and an email with further instructions has been send to them."
 msgstr ""
 
-#: aleksis/core/views.py:1498
+#: aleksis/core/views.py:1500
 msgid "Person was already invited."
 msgstr ""
 
-#: aleksis/core/views.py:1598
-msgid "ICal feed updated successfully"
+#: aleksis/core/views.py:1600
+msgid "iCal feed updated successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1608
-msgid "ICal feed deleted successfully"
+#: aleksis/core/views.py:1610
+msgid "iCal feed deleted successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1616
-msgid "ICal feed created successfully"
+#: aleksis/core/views.py:1618
+msgid "iCal feed created successfully"
 msgstr ""
 
 #, fuzzy
diff --git a/aleksis/core/locale/la/LC_MESSAGES/djangojs.po b/aleksis/core/locale/la/LC_MESSAGES/djangojs.po
index 509b8a65f4bdbc6ac9c1ec0282c1ff99b6f1f8c1..26f9dbd80e1c93710efaf2abf60ffd0754e043b6 100644
--- a/aleksis/core/locale/la/LC_MESSAGES/djangojs.po
+++ b/aleksis/core/locale/la/LC_MESSAGES/djangojs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/aleksis/core/locale/nb_NO/LC_MESSAGES/django.po b/aleksis/core/locale/nb_NO/LC_MESSAGES/django.po
index 9f0be4386a3358d3d0594f80838759c88c9c6c08..c5d7f44167fc0d9207afcc857d56d3fecb23e834 100644
--- a/aleksis/core/locale/nb_NO/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/nb_NO/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: AlekSIS (School Information System) 0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -38,33 +38,43 @@ msgid "Home and mobile phone"
 msgstr ""
 
 #: aleksis/core/apps.py:171 aleksis/core/forms.py:220 aleksis/core/menus.py:171
-#: aleksis/core/models.py:489 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/models.py:494 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:246
 msgid "Groups"
 msgstr ""
 
-#: aleksis/core/data_checks.py:56
+#: aleksis/core/data_checks.py:59
 msgid "Ignore problem"
 msgstr ""
 
-#: aleksis/core/data_checks.py:185
+#: aleksis/core/data_checks.py:188
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/data_checks.py:291
+#: aleksis/core/data_checks.py:294
 msgid "Deactivate DashboardWidget"
 msgstr ""
 
-#: aleksis/core/data_checks.py:303
+#: aleksis/core/data_checks.py:306
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr ""
 
-#: aleksis/core/data_checks.py:304
+#: aleksis/core/data_checks.py:307
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
+#: aleksis/core/data_checks.py:330
+#, python-format
+msgid "Validate field %s of model %s."
+msgstr ""
+
+#: aleksis/core/data_checks.py:332
+#, python-format
+msgid "The field %s couldn't be validated successfully."
+msgstr ""
+
 #: aleksis/core/feeds.py:52
 msgid "Birthday Calendar"
 msgstr ""
@@ -108,11 +118,11 @@ msgstr ""
 msgid "Content type"
 msgstr ""
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:715
+#: aleksis/core/filters.py:113 aleksis/core/models.py:720
 msgid "User"
 msgstr ""
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:488
+#: aleksis/core/filters.py:135 aleksis/core/models.py:493
 msgid "Group"
 msgstr ""
 
@@ -120,7 +130,7 @@ msgstr ""
 msgid "Base data"
 msgstr ""
 
-#: aleksis/core/forms.py:55
+#: aleksis/core/forms.py:55 aleksis/core/tables.py:47
 msgid "Address"
 msgstr ""
 
@@ -148,7 +158,7 @@ msgstr ""
 msgid "This username is already in use."
 msgstr ""
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:136
+#: aleksis/core/forms.py:153 aleksis/core/models.py:141
 msgid "School term"
 msgstr ""
 
@@ -157,7 +167,7 @@ msgid "Common data"
 msgstr ""
 
 #: aleksis/core/forms.py:155 aleksis/core/forms.py:207
-#: aleksis/core/menus.py:160 aleksis/core/models.py:159
+#: aleksis/core/menus.py:160 aleksis/core/models.py:164
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
@@ -167,18 +177,18 @@ msgstr ""
 msgid "Additional data"
 msgstr ""
 
-#: aleksis/core/forms.py:157 aleksis/core/models.py:212
-#: aleksis/core/models.py:541
+#: aleksis/core/forms.py:157 aleksis/core/models.py:217
+#: aleksis/core/models.py:546 aleksis/core/tables.py:46
 msgid "Photo"
 msgstr ""
 
 #: aleksis/core/forms.py:199 aleksis/core/forms.py:202
-#: aleksis/core/models.py:79
+#: aleksis/core/models.py:84
 msgid "Date"
 msgstr ""
 
 #: aleksis/core/forms.py:200 aleksis/core/forms.py:203
-#: aleksis/core/models.py:87
+#: aleksis/core/models.py:92
 msgid "Time"
 msgstr ""
 
@@ -214,11 +224,11 @@ msgstr ""
 msgid "Please enter your invitation code."
 msgstr ""
 
-#: aleksis/core/forms.py:418 aleksis/core/models.py:187
+#: aleksis/core/forms.py:418 aleksis/core/models.py:192
 msgid "First name"
 msgstr ""
 
-#: aleksis/core/forms.py:419 aleksis/core/models.py:188
+#: aleksis/core/forms.py:419 aleksis/core/models.py:193
 msgid "Last name"
 msgstr ""
 
@@ -321,13 +331,13 @@ msgstr ""
 msgid "Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:47 aleksis/core/models.py:867
+#: aleksis/core/menus.py:47 aleksis/core/models.py:872
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr ""
 
-#: aleksis/core/menus.py:58 aleksis/core/models.py:137
+#: aleksis/core/menus.py:58 aleksis/core/models.py:142
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
@@ -379,7 +389,7 @@ msgstr ""
 msgid "People"
 msgstr ""
 
-#: aleksis/core/menus.py:182 aleksis/core/models.py:1101
+#: aleksis/core/menus.py:182 aleksis/core/models.py:1111
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
@@ -389,7 +399,7 @@ msgstr ""
 msgid "Groups and child groups"
 msgstr ""
 
-#: aleksis/core/menus.py:204 aleksis/core/models.py:537
+#: aleksis/core/menus.py:204 aleksis/core/models.py:542
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 msgid "Additional fields"
@@ -456,581 +466,585 @@ msgstr ""
 msgid "Linked school term"
 msgstr ""
 
-#: aleksis/core/models.py:77
+#: aleksis/core/models.py:82
 msgid "Boolean (Yes/No)"
 msgstr ""
 
-#: aleksis/core/models.py:78
+#: aleksis/core/models.py:83
 msgid "Text (one line)"
 msgstr ""
 
-#: aleksis/core/models.py:80
+#: aleksis/core/models.py:85
 msgid "Date and time"
 msgstr ""
 
-#: aleksis/core/models.py:81
+#: aleksis/core/models.py:86
 msgid "Decimal number"
 msgstr ""
 
-#: aleksis/core/models.py:82 aleksis/core/models.py:205
+#: aleksis/core/models.py:87 aleksis/core/models.py:210
 msgid "E-mail address"
 msgstr ""
 
-#: aleksis/core/models.py:83
+#: aleksis/core/models.py:88
 msgid "Integer"
 msgstr ""
 
-#: aleksis/core/models.py:84
+#: aleksis/core/models.py:89
 msgid "IP address"
 msgstr ""
 
-#: aleksis/core/models.py:85
+#: aleksis/core/models.py:90
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr ""
 
-#: aleksis/core/models.py:86
+#: aleksis/core/models.py:91
 msgid "Text (multi-line)"
 msgstr ""
 
-#: aleksis/core/models.py:88
+#: aleksis/core/models.py:93
 msgid "URL / Link"
 msgstr ""
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:1070
-#: aleksis/core/models.py:1374
+#: aleksis/core/models.py:105 aleksis/core/models.py:1077
+#: aleksis/core/models.py:1384
 msgid "Name"
 msgstr ""
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:107
 msgid "Start date"
 msgstr ""
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:108
 msgid "End date"
 msgstr ""
 
-#: aleksis/core/models.py:122
+#: aleksis/core/models.py:127
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: aleksis/core/models.py:129
+#: aleksis/core/models.py:134
 msgid "There is already a school term for this time or a part of this time."
 msgstr ""
 
-#: aleksis/core/models.py:158 aleksis/core/models.py:1019
-#: aleksis/core/models.py:1371
+#: aleksis/core/models.py:163 aleksis/core/models.py:1024
+#: aleksis/core/models.py:1381
 msgid "Person"
 msgstr ""
 
-#: aleksis/core/models.py:161
+#: aleksis/core/models.py:166
 msgid "Can view address"
 msgstr ""
 
-#: aleksis/core/models.py:162
+#: aleksis/core/models.py:167
 msgid "Can view contact details"
 msgstr ""
 
-#: aleksis/core/models.py:163
+#: aleksis/core/models.py:168
 msgid "Can view photo"
 msgstr ""
 
-#: aleksis/core/models.py:164
+#: aleksis/core/models.py:169
 msgid "Can view avatar image"
 msgstr ""
 
-#: aleksis/core/models.py:165
+#: aleksis/core/models.py:170
 msgid "Can view persons groups"
 msgstr ""
 
-#: aleksis/core/models.py:166
+#: aleksis/core/models.py:171
 msgid "Can view personal details"
 msgstr ""
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "female"
 msgstr ""
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "male"
 msgstr ""
 
-#: aleksis/core/models.py:184 aleksis/core/models.py:1273
+#: aleksis/core/models.py:181
+msgid "other"
+msgstr ""
+
+#: aleksis/core/models.py:189 aleksis/core/models.py:1283
 msgid "Linked user"
 msgstr ""
 
-#: aleksis/core/models.py:190
+#: aleksis/core/models.py:195
 msgid "Additional name(s)"
 msgstr ""
 
-#: aleksis/core/models.py:194 aleksis/core/models.py:506
+#: aleksis/core/models.py:199 aleksis/core/models.py:511
 msgid "Short name"
 msgstr ""
 
-#: aleksis/core/models.py:197
+#: aleksis/core/models.py:202
 msgid "Street"
 msgstr ""
 
-#: aleksis/core/models.py:198
+#: aleksis/core/models.py:203
 msgid "Street number"
 msgstr ""
 
-#: aleksis/core/models.py:199
+#: aleksis/core/models.py:204
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/core/models.py:200
+#: aleksis/core/models.py:205
 msgid "Place"
 msgstr ""
 
-#: aleksis/core/models.py:202 aleksis/core/templates/core/person/full.html:160
+#: aleksis/core/models.py:207 aleksis/core/templates/core/person/full.html:160
 msgid "Home phone"
 msgstr ""
 
-#: aleksis/core/models.py:203 aleksis/core/templates/core/person/full.html:170
+#: aleksis/core/models.py:208 aleksis/core/templates/core/person/full.html:170
 msgid "Mobile phone"
 msgstr ""
 
-#: aleksis/core/models.py:207
+#: aleksis/core/models.py:212
 msgid "Date of birth"
 msgstr ""
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:213
 msgid "Place of birth"
 msgstr ""
 
-#: aleksis/core/models.py:209
+#: aleksis/core/models.py:214
 msgid "Sex"
 msgstr ""
 
-#: aleksis/core/models.py:216 aleksis/core/models.py:545
+#: aleksis/core/models.py:221 aleksis/core/models.py:550
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr ""
 
-#: aleksis/core/models.py:221 aleksis/core/models.py:549
+#: aleksis/core/models.py:226 aleksis/core/models.py:554
 msgid "Display picture / Avatar"
 msgstr ""
 
-#: aleksis/core/models.py:224 aleksis/core/models.py:552
+#: aleksis/core/models.py:229 aleksis/core/models.py:557
 msgid "This is a picture or an avatar for public display."
 msgstr ""
 
-#: aleksis/core/models.py:229 aleksis/core/templates/core/person/full.html:235
+#: aleksis/core/models.py:234 aleksis/core/templates/core/person/full.html:235
 msgid "Guardians / Parents"
 msgstr ""
 
-#: aleksis/core/models.py:236
+#: aleksis/core/models.py:241
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:719
-#: aleksis/core/models.py:743 aleksis/core/models.py:834
-#: aleksis/core/models.py:1094
+#: aleksis/core/models.py:244 aleksis/core/models.py:724
+#: aleksis/core/models.py:748 aleksis/core/models.py:839
+#: aleksis/core/models.py:1104
 msgid "Description"
 msgstr ""
 
-#: aleksis/core/models.py:459
+#: aleksis/core/models.py:464
 msgid "Title of field"
 msgstr ""
 
-#: aleksis/core/models.py:461
+#: aleksis/core/models.py:466
 msgid "Type of field"
 msgstr ""
 
-#: aleksis/core/models.py:463
+#: aleksis/core/models.py:468
 msgid "Required"
 msgstr ""
 
-#: aleksis/core/models.py:464
+#: aleksis/core/models.py:469
 msgid "Help text / description"
 msgstr ""
 
-#: aleksis/core/models.py:470
+#: aleksis/core/models.py:475
 msgid "Addtitional field for groups"
 msgstr ""
 
-#: aleksis/core/models.py:471
+#: aleksis/core/models.py:476
 msgid "Addtitional fields for groups"
 msgstr ""
 
-#: aleksis/core/models.py:491
+#: aleksis/core/models.py:496
 msgid "Can assign child groups to groups"
 msgstr ""
 
-#: aleksis/core/models.py:492
+#: aleksis/core/models.py:497
 msgid "Can view statistics about group."
 msgstr ""
 
-#: aleksis/core/models.py:504
+#: aleksis/core/models.py:509
 msgid "Long name"
 msgstr ""
 
-#: aleksis/core/models.py:514 aleksis/core/templates/core/group/full.html:85
+#: aleksis/core/models.py:519 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr ""
 
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/full.html:82
+#: aleksis/core/models.py:522 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr ""
 
-#: aleksis/core/models.py:524 aleksis/core/templates/core/group/full.html:55
+#: aleksis/core/models.py:529 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr ""
 
-#: aleksis/core/models.py:532
+#: aleksis/core/models.py:537
 msgid "Type of group"
 msgstr ""
 
-#: aleksis/core/models.py:718 aleksis/core/models.py:742
-#: aleksis/core/models.py:833
+#: aleksis/core/models.py:723 aleksis/core/models.py:747
+#: aleksis/core/models.py:838
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr ""
 
-#: aleksis/core/models.py:721
+#: aleksis/core/models.py:726
 msgid "Application"
 msgstr ""
 
-#: aleksis/core/models.py:727
+#: aleksis/core/models.py:732
 msgid "Activity"
 msgstr ""
 
-#: aleksis/core/models.py:728
+#: aleksis/core/models.py:733
 msgid "Activities"
 msgstr ""
 
-#: aleksis/core/models.py:734
+#: aleksis/core/models.py:739
 msgid "Sender"
 msgstr ""
 
-#: aleksis/core/models.py:739
+#: aleksis/core/models.py:744
 msgid "Recipient"
 msgstr ""
 
-#: aleksis/core/models.py:744 aleksis/core/models.py:1071
+#: aleksis/core/models.py:749 aleksis/core/models.py:1078
 msgid "Link"
 msgstr ""
 
-#: aleksis/core/models.py:746
+#: aleksis/core/models.py:751
 msgid "Send notification at"
 msgstr ""
 
-#: aleksis/core/models.py:748
+#: aleksis/core/models.py:753
 msgid "Read"
 msgstr ""
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:754
 msgid "Sent"
 msgstr ""
 
-#: aleksis/core/models.py:766
+#: aleksis/core/models.py:771
 msgid "Notification"
 msgstr ""
 
-#: aleksis/core/models.py:767 aleksis/core/preferences.py:29
+#: aleksis/core/models.py:772 aleksis/core/preferences.py:29
 #: aleksis/core/templates/core/base.html:81
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr ""
 
-#: aleksis/core/models.py:835
+#: aleksis/core/models.py:840
 msgid "Link to detailed view"
 msgstr ""
 
-#: aleksis/core/models.py:838
+#: aleksis/core/models.py:843
 msgid "Date and time from when to show"
 msgstr ""
 
-#: aleksis/core/models.py:841
+#: aleksis/core/models.py:846
 msgid "Date and time until when to show"
 msgstr ""
 
-#: aleksis/core/models.py:866
+#: aleksis/core/models.py:871
 msgid "Announcement"
 msgstr ""
 
-#: aleksis/core/models.py:904
+#: aleksis/core/models.py:909
 msgid "Announcement recipient"
 msgstr ""
 
-#: aleksis/core/models.py:905
+#: aleksis/core/models.py:910
 msgid "Announcement recipients"
 msgstr ""
 
-#: aleksis/core/models.py:927
+#: aleksis/core/models.py:932
 msgid "Widget Title"
 msgstr ""
 
-#: aleksis/core/models.py:928
+#: aleksis/core/models.py:933
 msgid "Activate Widget"
 msgstr ""
 
-#: aleksis/core/models.py:929
+#: aleksis/core/models.py:934
 msgid "Widget is broken"
 msgstr ""
 
-#: aleksis/core/models.py:932
+#: aleksis/core/models.py:937
 msgid "Size on mobile devices"
 msgstr ""
 
-#: aleksis/core/models.py:933
+#: aleksis/core/models.py:938
 msgid "<= 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:938
+#: aleksis/core/models.py:943
 msgid "Size on tablet devices"
 msgstr ""
 
-#: aleksis/core/models.py:939
+#: aleksis/core/models.py:944
 msgid "> 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:944
+#: aleksis/core/models.py:949
 msgid "Size on desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:945
+#: aleksis/core/models.py:950
 msgid "> 992 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:950
+#: aleksis/core/models.py:955
 msgid "Size on large desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:951
+#: aleksis/core/models.py:956
 msgid "> 1200 px>, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:982
+#: aleksis/core/models.py:987
 msgid "Can edit default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:983
+#: aleksis/core/models.py:988
 msgid "Dashboard Widget"
 msgstr ""
 
-#: aleksis/core/models.py:984
+#: aleksis/core/models.py:989
 msgid "Dashboard Widgets"
 msgstr ""
 
-#: aleksis/core/models.py:990
+#: aleksis/core/models.py:995
 msgid "URL"
 msgstr ""
 
-#: aleksis/core/models.py:991
+#: aleksis/core/models.py:996
 msgid "Icon URL"
 msgstr ""
 
-#: aleksis/core/models.py:997
+#: aleksis/core/models.py:1002
 msgid "External link widget"
 msgstr ""
 
-#: aleksis/core/models.py:998
+#: aleksis/core/models.py:1003
 msgid "External link widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1004
+#: aleksis/core/models.py:1009
 msgid "Content"
 msgstr ""
 
-#: aleksis/core/models.py:1010
+#: aleksis/core/models.py:1015
 msgid "Static content widget"
 msgstr ""
 
-#: aleksis/core/models.py:1011
+#: aleksis/core/models.py:1016
 msgid "Static content widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1016
+#: aleksis/core/models.py:1021
 msgid "Dashboard widget"
 msgstr ""
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:1026
 msgid "Order"
 msgstr ""
 
-#: aleksis/core/models.py:1022
+#: aleksis/core/models.py:1027
 msgid "Part of the default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1037
+#: aleksis/core/models.py:1042
 msgid "Dashboard widget order"
 msgstr ""
 
-#: aleksis/core/models.py:1038
+#: aleksis/core/models.py:1043
 msgid "Dashboard widget orders"
 msgstr ""
 
-#: aleksis/core/models.py:1044
+#: aleksis/core/models.py:1049
 msgid "Menu ID"
 msgstr ""
 
-#: aleksis/core/models.py:1057
+#: aleksis/core/models.py:1062
 msgid "Custom menu"
 msgstr ""
 
-#: aleksis/core/models.py:1058
+#: aleksis/core/models.py:1063
 msgid "Custom menus"
 msgstr ""
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:1075
 msgid "Menu"
 msgstr ""
 
-#: aleksis/core/models.py:1072 aleksis/core/models.py:1320
+#: aleksis/core/models.py:1079 aleksis/core/models.py:1330
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr ""
 
-#: aleksis/core/models.py:1078
+#: aleksis/core/models.py:1085
 msgid "Custom menu item"
 msgstr ""
 
-#: aleksis/core/models.py:1079
+#: aleksis/core/models.py:1086
 msgid "Custom menu items"
 msgstr ""
 
-#: aleksis/core/models.py:1093
+#: aleksis/core/models.py:1103
 msgid "Title of type"
 msgstr ""
 
-#: aleksis/core/models.py:1100 aleksis/core/templates/core/group/full.html:47
+#: aleksis/core/models.py:1110 aleksis/core/templates/core/group/full.html:50
 msgid "Group type"
 msgstr ""
 
-#: aleksis/core/models.py:1114
+#: aleksis/core/models.py:1124
 msgid "Can view system status"
 msgstr ""
 
-#: aleksis/core/models.py:1115
+#: aleksis/core/models.py:1125
 msgid "Can manage data"
 msgstr ""
 
-#: aleksis/core/models.py:1116
+#: aleksis/core/models.py:1126
 msgid "Can impersonate"
 msgstr ""
 
-#: aleksis/core/models.py:1117
+#: aleksis/core/models.py:1127
 msgid "Can use search"
 msgstr ""
 
-#: aleksis/core/models.py:1118
+#: aleksis/core/models.py:1128
 msgid "Can change site preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1119
+#: aleksis/core/models.py:1129
 msgid "Can change person preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1120
+#: aleksis/core/models.py:1130
 msgid "Can change group preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1121
+#: aleksis/core/models.py:1131
 msgid "Can test PDF generation"
 msgstr ""
 
-#: aleksis/core/models.py:1122
+#: aleksis/core/models.py:1132
 msgid "Can invite persons"
 msgstr ""
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1168
 msgid "Related data check task"
 msgstr ""
 
-#: aleksis/core/models.py:1166
+#: aleksis/core/models.py:1176
 msgid "Issue solved"
 msgstr ""
 
-#: aleksis/core/models.py:1167
+#: aleksis/core/models.py:1177
 msgid "Notification sent"
 msgstr ""
 
-#: aleksis/core/models.py:1180
+#: aleksis/core/models.py:1190
 msgid "Data check result"
 msgstr ""
 
-#: aleksis/core/models.py:1181
+#: aleksis/core/models.py:1191
 msgid "Data check results"
 msgstr ""
 
-#: aleksis/core/models.py:1183
+#: aleksis/core/models.py:1193
 msgid "Can run data checks"
 msgstr ""
 
-#: aleksis/core/models.py:1184
+#: aleksis/core/models.py:1194
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1191
+#: aleksis/core/models.py:1201
 msgid "E-Mail address"
 msgstr ""
 
-#: aleksis/core/models.py:1223
+#: aleksis/core/models.py:1233
 msgid "Owner"
 msgstr ""
 
-#: aleksis/core/models.py:1227
+#: aleksis/core/models.py:1237
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1229
+#: aleksis/core/models.py:1239
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1231
+#: aleksis/core/models.py:1241
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1238
+#: aleksis/core/models.py:1248
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1239
+#: aleksis/core/models.py:1249
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1244
+#: aleksis/core/models.py:1254
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1247
+#: aleksis/core/models.py:1257
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1259
+#: aleksis/core/models.py:1269
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1260
+#: aleksis/core/models.py:1270
 msgid "Task user assignments"
 msgstr ""
 
-#: aleksis/core/models.py:1276
+#: aleksis/core/models.py:1286
 msgid "Additional attributes"
 msgstr ""
 
-#: aleksis/core/models.py:1314
+#: aleksis/core/models.py:1324
 msgid "Allowed scopes that clients can request"
 msgstr ""
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1334
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr ""
 
-#: aleksis/core/models.py:1373
+#: aleksis/core/models.py:1383
 msgid "UUID"
 msgstr ""
 
-#: aleksis/core/models.py:1377
+#: aleksis/core/models.py:1387
 msgid "Selected ICal feed"
 msgstr ""
 
-#: aleksis/core/models.py:1386
+#: aleksis/core/models.py:1396
 msgid "Personal Calendar URL"
 msgstr ""
 
-#: aleksis/core/models.py:1387
+#: aleksis/core/models.py:1397
 msgid "Personal Calendar URLs"
 msgstr ""
 
@@ -1178,94 +1192,94 @@ msgstr ""
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr ""
 
-#: aleksis/core/preferences.py:344
-msgid "Available languages"
-msgstr ""
-
-#: aleksis/core/preferences.py:357
+#: aleksis/core/preferences.py:343
 msgid "Send emails if data checks detect problems"
 msgstr ""
 
-#: aleksis/core/preferences.py:368
+#: aleksis/core/preferences.py:354
 msgid "Email recipients for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:379
+#: aleksis/core/preferences.py:365
 msgid "Email recipient groups for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:388
+#: aleksis/core/preferences.py:374
 msgid "Show dashboard to users without login"
 msgstr ""
 
-#: aleksis/core/preferences.py:397
+#: aleksis/core/preferences.py:383
 msgid "Allow users to edit their dashboard"
 msgstr ""
 
-#: aleksis/core/preferences.py:408
+#: aleksis/core/preferences.py:394
 msgid "Fields on person model which are editable by themselves."
 msgstr ""
 
-#: aleksis/core/preferences.py:423
+#: aleksis/core/preferences.py:409
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr ""
 
-#: aleksis/core/preferences.py:437
+#: aleksis/core/preferences.py:423
 msgid "Contact for notification if a person changes their data"
 msgstr ""
 
-#: aleksis/core/preferences.py:448
+#: aleksis/core/preferences.py:434
 msgid "Prefer personal photos over avatars"
 msgstr ""
 
-#: aleksis/core/preferences.py:458
+#: aleksis/core/preferences.py:444
 msgid "PDF file expiration duration"
 msgstr ""
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:445
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/preferences.py:469
+#: aleksis/core/preferences.py:455
 msgid "Automatically update the dashboard and its widgets"
 msgstr ""
 
-#: aleksis/core/preferences.py:479
+#: aleksis/core/preferences.py:465
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr ""
 
-#: aleksis/core/preferences.py:489
+#: aleksis/core/preferences.py:475
 msgid "Country for phone number parsing"
 msgstr ""
 
-#: aleksis/core/settings.py:540
+#: aleksis/core/settings.py:541
 msgid "English"
 msgstr ""
 
-#: aleksis/core/settings.py:541
+#: aleksis/core/settings.py:542
 msgid "German"
 msgstr ""
 
-#: aleksis/core/tables.py:24
+#: aleksis/core/settings.py:543
+msgid "Ukrainian"
+msgstr ""
+
+#: aleksis/core/tables.py:25
 #: aleksis/core/templates/core/announcement/list.html:36
-#: aleksis/core/templates/core/group/full.html:24
+#: aleksis/core/templates/core/group/full.html:26
 #: aleksis/core/templates/core/person/full.html:26
 #: aleksis/core/templates/core/person/full.html:86
 #: aleksis/core/templates/oauth2_provider/application/detail.html:17
 msgid "Edit"
 msgstr ""
 
-#: aleksis/core/tables.py:26 aleksis/core/tables.py:94
-#: aleksis/core/tables.py:138
+#: aleksis/core/tables.py:27 aleksis/core/tables.py:148
+#: aleksis/core/tables.py:192
 #: aleksis/core/templates/core/announcement/list.html:22
 msgid "Actions"
 msgstr ""
 
-#: aleksis/core/tables.py:61 aleksis/core/tables.py:62
-#: aleksis/core/tables.py:76 aleksis/core/tables.py:92
-#: aleksis/core/tables.py:136
+#: aleksis/core/tables.py:115 aleksis/core/tables.py:116
+#: aleksis/core/tables.py:130 aleksis/core/tables.py:146
+#: aleksis/core/tables.py:190
 #: aleksis/core/templates/core/announcement/list.html:42
-#: aleksis/core/templates/core/group/full.html:31
+#: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
 #: aleksis/core/templates/core/person/full.html:33
 #: aleksis/core/templates/core/person/full.html:93
@@ -1304,7 +1318,7 @@ msgstr ""
 #: aleksis/core/templates/500.html:10
 msgid ""
 "An unexpected error has\n"
-"          occured."
+"          occurred."
 msgstr ""
 
 #: aleksis/core/templates/500.html:13
@@ -1804,34 +1818,34 @@ msgstr ""
 msgid "Edit group"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:38
+#: aleksis/core/templates/core/group/full.html:40
 #: aleksis/core/templates/core/person/full.html:40
 #: aleksis/core/templates/core/person/full.html:100
 msgid "Change preferences"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:64
+#: aleksis/core/templates/core/group/full.html:68
 msgid "Statistics"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:67
+#: aleksis/core/templates/core/group/full.html:73
 msgid "Count of members"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:71
+#: aleksis/core/templates/core/group/full.html:81
 msgid "Average age"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
+#: aleksis/core/templates/core/group/full.html:90
 msgid "Age range"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years to"
-msgstr ""
-
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years "
+#: aleksis/core/templates/core/group/full.html:93
+#, python-format
+msgid ""
+"\n"
+"              %(min)s years to %(max)s years\n"
+"            "
 msgstr ""
 
 #: aleksis/core/templates/core/group/list.html:14
@@ -1883,7 +1897,7 @@ msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:4
 #: aleksis/core/templates/core/ical/ical_list.html:5
-msgid "ICal Feeds"
+msgid "iCal Feeds"
 msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:8
@@ -2167,11 +2181,11 @@ msgstr ""
 msgid "Unknown"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:15
+#: aleksis/core/templates/core/partials/language_form.html:17
 msgid "Language"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:27
+#: aleksis/core/templates/core/partials/language_form.html:29
 msgid "Select language"
 msgstr ""
 
@@ -3089,170 +3103,170 @@ msgstr ""
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:292
+#: aleksis/core/views.py:294
 msgid "The school term has been created."
 msgstr ""
 
-#: aleksis/core/views.py:304
+#: aleksis/core/views.py:306
 msgid "The school term has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:424
+#: aleksis/core/views.py:426
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:443 aleksis/core/views.py:453
+#: aleksis/core/views.py:445 aleksis/core/views.py:455
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:503
+#: aleksis/core/views.py:505
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:600
+#: aleksis/core/views.py:602
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:616
+#: aleksis/core/views.py:618
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:684
+#: aleksis/core/views.py:686
 msgid "The requested preference registry does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:705
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:729
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:743
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:773
-msgid "The additional_field has been saved."
+#: aleksis/core/views.py:775
+msgid "The additional field has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:809
 msgid "The additional field has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:834
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:864
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:897
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:898
 msgid "Run data checks …"
 msgstr ""
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:899
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:900
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:916
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:924
+#: aleksis/core/views.py:926
 msgid "The requested solve option does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:958
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:988
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:998
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1067
+#: aleksis/core/views.py:1069
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1069
+#: aleksis/core/views.py:1071
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1145
+#: aleksis/core/views.py:1147
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr ""
 
-#: aleksis/core/views.py:1236
+#: aleksis/core/views.py:1238
 msgid "We have successfully assigned the permissions."
 msgstr ""
 
-#: aleksis/core/views.py:1246
+#: aleksis/core/views.py:1248
 msgid "The global user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1256
+#: aleksis/core/views.py:1258
 msgid "The global group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1266
+#: aleksis/core/views.py:1268
 msgid "The object user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1276
+#: aleksis/core/views.py:1278
 msgid "The object group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1344
+#: aleksis/core/views.py:1346
 msgid "The requested PDF file does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:1353 aleksis/core/views.py:1357
+#: aleksis/core/views.py:1355 aleksis/core/views.py:1359
 msgid "The requested task does not exist or is not accessible"
 msgstr ""
 
-#: aleksis/core/views.py:1409
+#: aleksis/core/views.py:1411
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1416
+#: aleksis/core/views.py:1418
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
-#: aleksis/core/views.py:1487
+#: aleksis/core/views.py:1489
 msgid "Person was invited successfully and an email with further instructions has been send to them."
 msgstr ""
 
-#: aleksis/core/views.py:1498
+#: aleksis/core/views.py:1500
 msgid "Person was already invited."
 msgstr ""
 
-#: aleksis/core/views.py:1598
-msgid "ICal feed updated successfully"
+#: aleksis/core/views.py:1600
+msgid "iCal feed updated successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1608
-msgid "ICal feed deleted successfully"
+#: aleksis/core/views.py:1610
+msgid "iCal feed deleted successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1616
-msgid "ICal feed created successfully"
+#: aleksis/core/views.py:1618
+msgid "iCal feed created successfully"
 msgstr ""
 
 #~ msgid "Norwegian (bokmål)"
diff --git a/aleksis/core/locale/nb_NO/LC_MESSAGES/djangojs.po b/aleksis/core/locale/nb_NO/LC_MESSAGES/djangojs.po
index 509b8a65f4bdbc6ac9c1ec0282c1ff99b6f1f8c1..26f9dbd80e1c93710efaf2abf60ffd0754e043b6 100644
--- a/aleksis/core/locale/nb_NO/LC_MESSAGES/djangojs.po
+++ b/aleksis/core/locale/nb_NO/LC_MESSAGES/djangojs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/aleksis/core/locale/ru/LC_MESSAGES/django.po b/aleksis/core/locale/ru/LC_MESSAGES/django.po
index d71890f30d63586d52c2df9eeef982226dc4b8d5..722b473df4cad72ab8b7988d21325946bc6db3ee 100644
--- a/aleksis/core/locale/ru/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/ru/LC_MESSAGES/django.po
@@ -3,86 +3,89 @@
 # This file is distributed under the same license as the PACKAGE package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
-#, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2022-05-24 19:37+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"PO-Revision-Date: 2022-07-05 12:54+0000\n"
+"Last-Translator: Serhii Horichenko <m@sgg.im>\n"
+"Language-Team: Russian <https://translate.edugit.org/projects/aleksis/"
+"aleksis-core/ru/>\n"
+"Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
+"%100>=11 && n%100<=14)? 2 : 3);\n"
+"X-Generator: Weblate 4.12.1\n"
 
 #: aleksis/core/apps.py:166
 msgid "OpenID Connect scope"
-msgstr ""
+msgstr "Граница действия OpenID Connect"
 
 #: aleksis/core/apps.py:167
 msgid "Given name, family name, link to profile and picture if existing."
-msgstr ""
+msgstr "Имя, фамилия, ссылка на профиль и фото, если есть."
 
 #: aleksis/core/apps.py:168
 msgid "Full home postal address"
-msgstr ""
+msgstr "Полный домашний почтовый адрес"
 
 #: aleksis/core/apps.py:169
 msgid "Email address"
-msgstr ""
+msgstr "Адрес эл.почты"
 
 #: aleksis/core/apps.py:170
 msgid "Home and mobile phone"
-msgstr ""
+msgstr "Домашний и мобильный телефоны"
 
 #: aleksis/core/apps.py:171 aleksis/core/forms.py:220 aleksis/core/menus.py:171
 #: aleksis/core/models.py:489 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:246
 msgid "Groups"
-msgstr ""
+msgstr "Группы"
 
 #: aleksis/core/data_checks.py:56
 msgid "Ignore problem"
-msgstr ""
+msgstr "Игнорировать проблему"
 
 #: aleksis/core/data_checks.py:185
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
-msgstr ""
+msgstr "Вариант решения '{solve_option_obj.verbose_name}' "
 
 #: aleksis/core/data_checks.py:291
 msgid "Deactivate DashboardWidget"
-msgstr ""
+msgstr "Отключить виджет информпанели"
 
 #: aleksis/core/data_checks.py:303
 msgid "Ensure that there are no broken DashboardWidgets."
-msgstr ""
+msgstr "Убедитесь в отсутствии сбойных виджетов на информапанели."
 
 #: aleksis/core/data_checks.py:304
 msgid "The DashboardWidget was reported broken automatically."
-msgstr ""
+msgstr "Виджет информпанели сообщил о сбое в автоматическом режиме."
 
 #: aleksis/core/feeds.py:52
 msgid "Birthday Calendar"
-msgstr ""
+msgstr "Календарь Дней Рождения"
 
 #: aleksis/core/feeds.py:53
 msgid "A Calendar of Birthdays"
-msgstr ""
+msgstr "Календарь Дней Рождения"
 
 #: aleksis/core/feeds.py:66
 #, python-format
 msgid "%(name)s's birthday"
-msgstr ""
+msgstr "%(name)s отмечает День Рождения"
 
 #: aleksis/core/feeds.py:71
 #, python-format
 msgid "%(name)s was born on %(birthday)s"
-msgstr ""
+msgstr "%(name)s родился(-лась) %(birthday)s"
 
 #: aleksis/core/filters.py:42 aleksis/core/templates/core/base.html:139
 #: aleksis/core/templates/core/base.html:140
@@ -91,337 +94,339 @@ msgstr ""
 #: aleksis/core/templates/search/search.html:7
 #: aleksis/core/templates/search/search.html:22
 msgid "Search"
-msgstr ""
+msgstr "Поиск"
 
 #: aleksis/core/filters.py:59
 msgid "Search by name"
-msgstr ""
+msgstr "Поиск по имени"
 
 #: aleksis/core/filters.py:71
 msgid "Search by contact details"
-msgstr ""
+msgstr "Поиск по контактным данным"
 
 #: aleksis/core/filters.py:92
 msgid "Permission"
-msgstr ""
+msgstr "Разрешение"
 
 #: aleksis/core/filters.py:100
 msgid "Content type"
-msgstr ""
+msgstr "Тип содержимого"
 
 #: aleksis/core/filters.py:113 aleksis/core/models.py:715
 msgid "User"
-msgstr ""
+msgstr "Пользователь"
 
 #: aleksis/core/filters.py:135 aleksis/core/models.py:488
 msgid "Group"
-msgstr ""
+msgstr "Группа"
 
 #: aleksis/core/forms.py:50 aleksis/core/forms.py:581
 msgid "Base data"
-msgstr ""
+msgstr "Основные данные"
 
 #: aleksis/core/forms.py:55
 msgid "Address"
-msgstr ""
+msgstr "Адрес"
 
 #: aleksis/core/forms.py:56 aleksis/core/forms.py:590
 msgid "Contact data"
-msgstr ""
+msgstr "Контактные данные"
 
 #: aleksis/core/forms.py:58
 msgid "Advanced personal data"
-msgstr ""
+msgstr "Дополнительные личные данные"
 
 #: aleksis/core/forms.py:106
 msgid "New user"
-msgstr ""
+msgstr "Новый пользователь"
 
 #: aleksis/core/forms.py:106
 msgid "Create a new account"
-msgstr ""
+msgstr "Создать новую учётную запись"
 
 #: aleksis/core/forms.py:132
 msgid "You cannot set a new username when also selecting an existing user."
-msgstr ""
+msgstr "После выбора существующего пользователя создать новый логин нельзя."
 
 #: aleksis/core/forms.py:136
 msgid "This username is already in use."
-msgstr ""
+msgstr "Этот логин уже занят."
 
 #: aleksis/core/forms.py:153 aleksis/core/models.py:136
 msgid "School term"
-msgstr ""
+msgstr "Учебный год"
 
 #: aleksis/core/forms.py:154
 msgid "Common data"
-msgstr ""
+msgstr "Общие данные"
 
 #: aleksis/core/forms.py:155 aleksis/core/forms.py:207
 #: aleksis/core/menus.py:160 aleksis/core/models.py:159
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
-msgstr ""
+msgstr "Люди"
 
 #: aleksis/core/forms.py:156 aleksis/core/forms.py:592
 msgid "Additional data"
-msgstr ""
+msgstr "Дополнительные данные"
 
 #: aleksis/core/forms.py:157 aleksis/core/models.py:212
 #: aleksis/core/models.py:541
 msgid "Photo"
-msgstr ""
+msgstr "Фото"
 
 #: aleksis/core/forms.py:199 aleksis/core/forms.py:202
 #: aleksis/core/models.py:79
 msgid "Date"
-msgstr ""
+msgstr "Дата"
 
 #: aleksis/core/forms.py:200 aleksis/core/forms.py:203
 #: aleksis/core/models.py:87
 msgid "Time"
-msgstr ""
+msgstr "Время"
 
 #: aleksis/core/forms.py:233
 msgid "From when until when should the announcement be displayed?"
-msgstr ""
+msgstr "С какого и по какое время это объявление должно отображаться?"
 
 #: aleksis/core/forms.py:236
 msgid "Who should see the announcement?"
-msgstr ""
+msgstr "Кто должен видеть это объявление?"
 
 #: aleksis/core/forms.py:237
 msgid "Write your announcement:"
-msgstr ""
+msgstr "Напишите свое объявление:"
 
 #: aleksis/core/forms.py:276
-msgid "You are not allowed to create announcements which are only valid in the past."
-msgstr ""
+msgid ""
+"You are not allowed to create announcements which are only valid in the past."
+msgstr "Объявления для прошлого Вам создавать не разрешено."
 
 #: aleksis/core/forms.py:280
 msgid "The from date and time must be earlier then the until date and time."
-msgstr ""
+msgstr "Дата и время начала должны быть до даты и времени окончания."
 
 #: aleksis/core/forms.py:289
 msgid "You need at least one recipient."
-msgstr ""
+msgstr "Нужен хотя бы один получатель."
 
 #: aleksis/core/forms.py:398
 msgid "Invitation code"
-msgstr ""
+msgstr "Код приглашения"
 
 #: aleksis/core/forms.py:399
 msgid "Please enter your invitation code."
-msgstr ""
+msgstr "Укажите, пожалуйста, код приглашения."
 
 #: aleksis/core/forms.py:418 aleksis/core/models.py:187
 msgid "First name"
-msgstr ""
+msgstr "Имя"
 
 #: aleksis/core/forms.py:419 aleksis/core/models.py:188
 msgid "Last name"
-msgstr ""
+msgstr "Фамилия"
 
 #: aleksis/core/forms.py:428
 msgid "A person is using this e-mail address"
-msgstr ""
+msgstr "Этот эл.адрес кем-то используется"
 
 #: aleksis/core/forms.py:456
 msgid "Who should get the permission?"
-msgstr ""
+msgstr "Кто должен получить такое разрешение?"
 
 #: aleksis/core/forms.py:457
 msgid "On what?"
-msgstr ""
+msgstr "В случае чего?"
 
 #: aleksis/core/forms.py:483
 msgid "Select objects which the permission should be granted for:"
-msgstr ""
+msgstr "Отметьте объекты, к которым будет предоставлен доступ:"
 
 #: aleksis/core/forms.py:486
 msgid "Grant the permission for all objects"
-msgstr ""
+msgstr "Предоставить доступ ко всем объектам"
 
 #: aleksis/core/forms.py:494
-msgid "You must select at least one group or person which should get the permission."
-msgstr ""
+msgid ""
+"You must select at least one group or person which should get the permission."
+msgstr "Вам нужно выбрать хотя бы одну группу или физлицо, кто получит доступ."
 
 #: aleksis/core/forms.py:499
 msgid "You must grant the permission to all objects and/or to some objects."
-msgstr ""
+msgstr "Вы должны предоставить доступ ко всем и/или к некоторым объектам."
 
 #: aleksis/core/forms.py:586
 msgid "Address data"
-msgstr ""
+msgstr "Подробности адреса"
 
 #: aleksis/core/forms.py:598
 msgid "Account data"
-msgstr ""
+msgstr "Данные учётной записи"
 
 #: aleksis/core/forms.py:605
 msgid "Password"
-msgstr ""
+msgstr "Пароль"
 
 #: aleksis/core/forms.py:608
 msgid "Password (again)"
-msgstr ""
+msgstr "Пароль (ещё раз)"
 
 #: aleksis/core/forms.py:728
 msgid "The selected action does not exist."
-msgstr ""
+msgstr "Выбранное действие не существует."
 
 #: aleksis/core/forms.py:739
 msgid "You do not have permission to run {} on all selected objects."
-msgstr ""
+msgstr "У Вас нет разрешения на запуск {} на всех выбранных объектах."
 
 #: aleksis/core/forms.py:795
 msgid "No valid selection."
-msgstr ""
+msgstr "Неправильный выбор."
 
 #: aleksis/core/health_checks.py:21
 msgid "There are unresolved data problems."
-msgstr ""
+msgstr "Имеются нерешённые проблемы с данными."
 
 #: aleksis/core/health_checks.py:40
 msgid "Error accessing backup storage: {}"
-msgstr ""
+msgstr "Ошибка доступа к резервному хранилищу: {}"
 
 #: aleksis/core/health_checks.py:50
 msgid "Last backup {}!"
-msgstr ""
+msgstr "Последняя резервная копия {}!"
 
 #: aleksis/core/health_checks.py:52
 msgid "No backup found!"
-msgstr ""
+msgstr "Резервная копия не найдена!"
 
 #: aleksis/core/health_checks.py:79
 msgid "No backup result found!"
-msgstr ""
+msgstr "Результат резервного копирования не найден!"
 
 #: aleksis/core/menus.py:7 aleksis/core/templates/two_factor/core/login.html:6
 #: aleksis/core/templates/two_factor/core/login.html:32
 #: aleksis/core/templates/two_factor/core/login.html:95
 msgid "Login"
-msgstr ""
+msgstr "Войти"
 
 #: aleksis/core/menus.py:13 aleksis/core/templates/account/signup.html:22
 #: aleksis/core/templates/socialaccount/signup.html:23
 msgid "Sign up"
-msgstr ""
+msgstr "Зарегистрироваться"
 
 #: aleksis/core/menus.py:22 aleksis/core/templates/invitations/enter.html:7
 msgid "Accept invitation"
-msgstr ""
+msgstr "Принять приглашение"
 
 #: aleksis/core/menus.py:31
 msgid "Dashboard"
-msgstr ""
+msgstr "Информпанель"
 
 #: aleksis/core/menus.py:39
 msgid "Admin"
-msgstr ""
+msgstr "Админ"
 
 #: aleksis/core/menus.py:47 aleksis/core/models.py:867
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
-msgstr ""
+msgstr "Объявление"
 
 #: aleksis/core/menus.py:58 aleksis/core/models.py:137
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
-msgstr ""
+msgstr "Учебный год"
 
 #: aleksis/core/menus.py:69
 #: aleksis/core/templates/core/dashboard_widget/list.html:8
 #: aleksis/core/templates/core/dashboard_widget/list.html:9
 msgid "Dashboard widgets"
-msgstr ""
+msgstr "Виджеты информпанели"
 
 #: aleksis/core/menus.py:80
 #: aleksis/core/templates/core/management/data_management.html:6
 #: aleksis/core/templates/core/management/data_management.html:7
 msgid "Data management"
-msgstr ""
+msgstr "Управление данными"
 
 #: aleksis/core/menus.py:91
 #: aleksis/core/templates/core/pages/system_status.html:5
 #: aleksis/core/templates/core/pages/system_status.html:7
 msgid "System status"
-msgstr ""
+msgstr "Состояние системы"
 
 #: aleksis/core/menus.py:102
 msgid "Configuration"
-msgstr ""
+msgstr "Конфигурация"
 
 #: aleksis/core/menus.py:113 aleksis/core/templates/core/data_check/list.html:9
 #: aleksis/core/templates/core/data_check/list.html:10
 msgid "Data checks"
-msgstr ""
+msgstr "Проверки данных"
 
 #: aleksis/core/menus.py:119 aleksis/core/templates/core/perms/list.html:13
 #: aleksis/core/templates/core/perms/list.html:14
 msgid "Manage permissions"
-msgstr ""
+msgstr "Управление разрешениями"
 
 #: aleksis/core/menus.py:130
 msgid "Backend Admin"
-msgstr ""
+msgstr "Администрирование бекенда"
 
 #: aleksis/core/menus.py:138
 #: aleksis/core/templates/oauth2_provider/application/list.html:5
 #: aleksis/core/templates/oauth2_provider/application/list.html:6
 msgid "OAuth2 Applications"
-msgstr ""
+msgstr "Приложения OAuth2"
 
 #: aleksis/core/menus.py:151
 msgid "People"
-msgstr ""
+msgstr "Люди"
 
 #: aleksis/core/menus.py:182 aleksis/core/models.py:1101
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
-msgstr ""
+msgstr "Типы групп"
 
 #: aleksis/core/menus.py:193
 msgid "Groups and child groups"
-msgstr ""
+msgstr "Группы и дочерние группы"
 
 #: aleksis/core/menus.py:204 aleksis/core/models.py:537
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 msgid "Additional fields"
-msgstr ""
+msgstr "Дополнительные поля"
 
 #: aleksis/core/menus.py:215
 msgid "Invite person"
-msgstr ""
+msgstr "Пригласить знакомого"
 
 #: aleksis/core/menus.py:228
 #: aleksis/core/templates/core/group/child_groups.html:7
 #: aleksis/core/templates/core/group/child_groups.html:9
 msgid "Assign child groups to groups"
-msgstr ""
+msgstr "Определить дочерние группы к группе"
 
 #: aleksis/core/menus.py:240
 msgid "Stop impersonation"
-msgstr ""
+msgstr "Остановить прикрытие"
 
 #: aleksis/core/menus.py:249
 msgid "Account"
-msgstr ""
+msgstr "Учётная запись"
 
 #: aleksis/core/menus.py:258
 #: aleksis/core/templates/dynamic_preferences/form.html:5
 msgid "Preferences"
-msgstr ""
+msgstr "Свойства"
 
 #: aleksis/core/menus.py:267
 msgid "2FA"
-msgstr ""
+msgstr "2FA"
 
 #: aleksis/core/menus.py:275
 #: aleksis/core/templates/account/password_change.html:5
@@ -433,819 +438,834 @@ msgstr ""
 #: aleksis/core/templates/account/password_reset_from_key_done.html:5
 #: aleksis/core/templates/account/password_reset_from_key_done.html:6
 msgid "Change password"
-msgstr ""
+msgstr "Сменить пароль"
 
 #: aleksis/core/menus.py:287
 msgid "Third-party accounts"
-msgstr ""
+msgstr "Учётные записи третих сторон"
 
 #: aleksis/core/menus.py:296
 #: aleksis/core/templates/oauth2_provider/authorized-tokens.html:5
 #: aleksis/core/templates/oauth2_provider/authorized-tokens.html:6
 msgid "Authorized applications"
-msgstr ""
+msgstr "Авторизованные приложения"
 
 #: aleksis/core/menus.py:305
 msgid "Calendar Feeds"
-msgstr ""
+msgstr "Ленты календарей"
 
 #: aleksis/core/menus.py:318
 msgid "Logout"
-msgstr ""
+msgstr "Выйти"
 
 #: aleksis/core/mixins.py:511
 msgid "Linked school term"
-msgstr ""
+msgstr "Связанный учебный год"
 
 #: aleksis/core/models.py:77
 msgid "Boolean (Yes/No)"
-msgstr ""
+msgstr "Булево (Да/Нет)"
 
 #: aleksis/core/models.py:78
 msgid "Text (one line)"
-msgstr ""
+msgstr "Текст (одна строка)"
 
 #: aleksis/core/models.py:80
 msgid "Date and time"
-msgstr ""
+msgstr "Дата и время"
 
 #: aleksis/core/models.py:81
 msgid "Decimal number"
-msgstr ""
+msgstr "Десятичное число"
 
 #: aleksis/core/models.py:82 aleksis/core/models.py:205
 msgid "E-mail address"
-msgstr ""
+msgstr "Адрес эл.почты"
 
 #: aleksis/core/models.py:83
 msgid "Integer"
-msgstr ""
+msgstr "Целое"
 
 #: aleksis/core/models.py:84
 msgid "IP address"
-msgstr ""
+msgstr "IP адрес"
 
 #: aleksis/core/models.py:85
 msgid "Boolean or empty (Yes/No/Neither)"
-msgstr ""
+msgstr "Булево или пустое (Да/Нет/Ничего)"
 
 #: aleksis/core/models.py:86
 msgid "Text (multi-line)"
-msgstr ""
+msgstr "Текст (многострочный)"
 
 #: aleksis/core/models.py:88
 msgid "URL / Link"
-msgstr ""
+msgstr "URL / Ссылка"
 
 #: aleksis/core/models.py:100 aleksis/core/models.py:1070
 #: aleksis/core/models.py:1374
 msgid "Name"
-msgstr ""
+msgstr "Имя"
 
 #: aleksis/core/models.py:102
 msgid "Start date"
-msgstr ""
+msgstr "Дата начала"
 
 #: aleksis/core/models.py:103
 msgid "End date"
-msgstr ""
+msgstr "Дата окончания"
 
 #: aleksis/core/models.py:122
 msgid "The start date must be earlier than the end date."
-msgstr ""
+msgstr "Дата начала должна быть ранее даты окончания."
 
 #: aleksis/core/models.py:129
 msgid "There is already a school term for this time or a part of this time."
-msgstr ""
+msgstr "На это время или на его часть уже запланирован учебный год."
 
 #: aleksis/core/models.py:158 aleksis/core/models.py:1019
 #: aleksis/core/models.py:1371
 msgid "Person"
-msgstr ""
+msgstr "Физлицо"
 
 #: aleksis/core/models.py:161
 msgid "Can view address"
-msgstr ""
+msgstr "Может видеть адрес"
 
 #: aleksis/core/models.py:162
 msgid "Can view contact details"
-msgstr ""
+msgstr "Может видеть контактные данные"
 
 #: aleksis/core/models.py:163
 msgid "Can view photo"
-msgstr ""
+msgstr "Может видеть фото"
 
 #: aleksis/core/models.py:164
 msgid "Can view avatar image"
-msgstr ""
+msgstr "Может видеть аватар"
 
 #: aleksis/core/models.py:165
 msgid "Can view persons groups"
-msgstr ""
+msgstr "Может видеть группы лиц"
 
 #: aleksis/core/models.py:166
 msgid "Can view personal details"
-msgstr ""
+msgstr "Может видеть личные данные"
 
 #: aleksis/core/models.py:176
 msgid "female"
-msgstr ""
+msgstr "жен"
 
 #: aleksis/core/models.py:176
 msgid "male"
-msgstr ""
+msgstr "муж"
 
 #: aleksis/core/models.py:184 aleksis/core/models.py:1273
 msgid "Linked user"
-msgstr ""
+msgstr "Связанный пользователь"
 
 #: aleksis/core/models.py:190
 msgid "Additional name(s)"
-msgstr ""
+msgstr "Дополнительные имена"
 
 #: aleksis/core/models.py:194 aleksis/core/models.py:506
 msgid "Short name"
-msgstr ""
+msgstr "Короткое имя"
 
 #: aleksis/core/models.py:197
 msgid "Street"
-msgstr ""
+msgstr "Улица"
 
 #: aleksis/core/models.py:198
 msgid "Street number"
-msgstr ""
+msgstr "Номер дома"
 
 #: aleksis/core/models.py:199
 msgid "Postal code"
-msgstr ""
+msgstr "Почтовый индекс"
 
 #: aleksis/core/models.py:200
 msgid "Place"
-msgstr ""
+msgstr "Город/место"
 
 #: aleksis/core/models.py:202 aleksis/core/templates/core/person/full.html:160
 msgid "Home phone"
-msgstr ""
+msgstr "Домашний телефон"
 
 #: aleksis/core/models.py:203 aleksis/core/templates/core/person/full.html:170
 msgid "Mobile phone"
-msgstr ""
+msgstr "Мобильный телефон"
 
 #: aleksis/core/models.py:207
 msgid "Date of birth"
-msgstr ""
+msgstr "Дата рождения"
 
 #: aleksis/core/models.py:208
 msgid "Place of birth"
-msgstr ""
+msgstr "Место рождения"
 
 #: aleksis/core/models.py:209
 msgid "Sex"
-msgstr ""
+msgstr "Пол"
 
 #: aleksis/core/models.py:216 aleksis/core/models.py:545
-msgid "This is an official photo, used for official documents and for internal use cases."
+msgid ""
+"This is an official photo, used for official documents and for internal use "
+"cases."
 msgstr ""
+"Это официальное фото, которое используется для документов и внутренних нужд."
 
 #: aleksis/core/models.py:221 aleksis/core/models.py:549
 msgid "Display picture / Avatar"
-msgstr ""
+msgstr "Отобразить фото/аватар"
 
 #: aleksis/core/models.py:224 aleksis/core/models.py:552
 msgid "This is a picture or an avatar for public display."
-msgstr ""
+msgstr "Это фото или аватар для общего отображения."
 
 #: aleksis/core/models.py:229 aleksis/core/templates/core/person/full.html:235
 msgid "Guardians / Parents"
-msgstr ""
+msgstr "Опекуны / Родители"
 
 #: aleksis/core/models.py:236
 msgid "Primary group"
-msgstr ""
+msgstr "Основная группа"
 
 #: aleksis/core/models.py:239 aleksis/core/models.py:719
 #: aleksis/core/models.py:743 aleksis/core/models.py:834
 #: aleksis/core/models.py:1094
 msgid "Description"
-msgstr ""
+msgstr "Описание"
 
 #: aleksis/core/models.py:459
 msgid "Title of field"
-msgstr ""
+msgstr "Название поля"
 
-#: aleksis/core/models.py:461
+#: aleksis/core/models.py:461 aleksis/core/models.py:466
 msgid "Type of field"
-msgstr ""
+msgstr "Тип поля"
 
 #: aleksis/core/models.py:463
 msgid "Required"
-msgstr ""
+msgstr "Необходимое"
 
 #: aleksis/core/models.py:464
 msgid "Help text / description"
-msgstr ""
+msgstr "Вспомогательный текст / описание"
 
 #: aleksis/core/models.py:470
 msgid "Addtitional field for groups"
-msgstr ""
+msgstr "Дополнительное поле для групп"
 
 #: aleksis/core/models.py:471
 msgid "Addtitional fields for groups"
-msgstr ""
+msgstr "Дополнительные поля для групп"
 
 #: aleksis/core/models.py:491
 msgid "Can assign child groups to groups"
-msgstr ""
+msgstr "Может определять дочерние группы в группы"
 
 #: aleksis/core/models.py:492
 msgid "Can view statistics about group."
-msgstr ""
+msgstr "Может видеть статистику группы."
 
 #: aleksis/core/models.py:504
 msgid "Long name"
-msgstr ""
+msgstr "Длинное имя"
 
 #: aleksis/core/models.py:514 aleksis/core/templates/core/group/full.html:85
 msgid "Members"
-msgstr ""
+msgstr "Участники"
 
 #: aleksis/core/models.py:517 aleksis/core/templates/core/group/full.html:82
 msgid "Owners"
-msgstr ""
+msgstr "Владельцы"
 
 #: aleksis/core/models.py:524 aleksis/core/templates/core/group/full.html:55
 msgid "Parent groups"
-msgstr ""
+msgstr "Родительские группы"
 
 #: aleksis/core/models.py:532
 msgid "Type of group"
-msgstr ""
+msgstr "Тип группы"
 
 #: aleksis/core/models.py:718 aleksis/core/models.py:742
 #: aleksis/core/models.py:833
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
-msgstr ""
+msgstr "Название"
 
 #: aleksis/core/models.py:721
 msgid "Application"
-msgstr ""
+msgstr "Приложение"
 
 #: aleksis/core/models.py:727
 msgid "Activity"
-msgstr ""
+msgstr "Активность"
 
 #: aleksis/core/models.py:728
 msgid "Activities"
-msgstr ""
+msgstr "Активности"
 
 #: aleksis/core/models.py:734
 msgid "Sender"
-msgstr ""
+msgstr "Отправитель"
 
 #: aleksis/core/models.py:739
 msgid "Recipient"
-msgstr ""
+msgstr "Получатель"
 
 #: aleksis/core/models.py:744 aleksis/core/models.py:1071
 msgid "Link"
-msgstr ""
+msgstr "Ссылка"
 
 #: aleksis/core/models.py:746
 msgid "Send notification at"
-msgstr ""
+msgstr "Отправить уведомление в"
 
 #: aleksis/core/models.py:748
 msgid "Read"
-msgstr ""
+msgstr "Читать"
 
 #: aleksis/core/models.py:749
 msgid "Sent"
-msgstr ""
+msgstr "Отправлено"
 
 #: aleksis/core/models.py:766
 msgid "Notification"
-msgstr ""
+msgstr "Уведомление"
 
 #: aleksis/core/models.py:767 aleksis/core/preferences.py:29
 #: aleksis/core/templates/core/base.html:81
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
-msgstr ""
+msgstr "Уведомления"
 
 #: aleksis/core/models.py:835
 msgid "Link to detailed view"
-msgstr ""
+msgstr "Ссылка на подробный обзор"
 
 #: aleksis/core/models.py:838
 msgid "Date and time from when to show"
-msgstr ""
+msgstr "Дата и время, с которого показывать"
 
 #: aleksis/core/models.py:841
 msgid "Date and time until when to show"
-msgstr ""
+msgstr "Дата и время, по какое показывать"
 
 #: aleksis/core/models.py:866
 msgid "Announcement"
-msgstr ""
+msgstr "Объявление"
 
 #: aleksis/core/models.py:904
 msgid "Announcement recipient"
-msgstr ""
+msgstr "Получатель объявления"
 
 #: aleksis/core/models.py:905
 msgid "Announcement recipients"
-msgstr ""
+msgstr "Получатели объявления"
 
 #: aleksis/core/models.py:927
 msgid "Widget Title"
-msgstr ""
+msgstr "Название виджета"
 
 #: aleksis/core/models.py:928
 msgid "Activate Widget"
-msgstr ""
+msgstr "Активировать виджет"
 
 #: aleksis/core/models.py:929
 msgid "Widget is broken"
-msgstr ""
+msgstr "Виджет поломался"
 
 #: aleksis/core/models.py:932
 msgid "Size on mobile devices"
-msgstr ""
+msgstr "Размер на мобильных"
 
 #: aleksis/core/models.py:933
 msgid "<= 600 px, 12 columns"
-msgstr ""
+msgstr "<= 600 пикс, 12 столбцов"
 
 #: aleksis/core/models.py:938
 msgid "Size on tablet devices"
-msgstr ""
+msgstr "Размер на планшетах"
 
 #: aleksis/core/models.py:939
 msgid "> 600 px, 12 columns"
-msgstr ""
+msgstr "> 600 пикс, 12 столбцов"
 
 #: aleksis/core/models.py:944
 msgid "Size on desktop devices"
-msgstr ""
+msgstr "Размер на ПК"
 
 #: aleksis/core/models.py:945
 msgid "> 992 px, 12 columns"
-msgstr ""
+msgstr "> 992 пикс, 12 столбцов"
 
 #: aleksis/core/models.py:950
 msgid "Size on large desktop devices"
-msgstr ""
+msgstr "Размер для больших экранов"
 
 #: aleksis/core/models.py:951
 msgid "> 1200 px>, 12 columns"
-msgstr ""
+msgstr "> 1200 пикс, 12 столбцов"
 
 #: aleksis/core/models.py:982
 msgid "Can edit default dashboard"
-msgstr ""
+msgstr "Может редактировать типовую/стандартную информпанель"
 
 #: aleksis/core/models.py:983
 msgid "Dashboard Widget"
-msgstr ""
+msgstr "Виджет информпанели"
 
 #: aleksis/core/models.py:984
 msgid "Dashboard Widgets"
-msgstr ""
+msgstr "Виджеты информпанели"
 
-#: aleksis/core/models.py:990
+#: aleksis/core/models.py:990 aleksis/core/models.py:995
 msgid "URL"
-msgstr ""
+msgstr "URL"
 
 #: aleksis/core/models.py:991
 msgid "Icon URL"
-msgstr ""
+msgstr "Иконка URL"
 
 #: aleksis/core/models.py:997
 msgid "External link widget"
-msgstr ""
+msgstr "Внешняя ссылка на виджет"
 
 #: aleksis/core/models.py:998
 msgid "External link widgets"
-msgstr ""
+msgstr "Внешние ссылки на виджеты"
 
 #: aleksis/core/models.py:1004
 msgid "Content"
-msgstr ""
+msgstr "Содержимое"
 
 #: aleksis/core/models.py:1010
 msgid "Static content widget"
-msgstr ""
+msgstr "Виджет с постоянным содержимым"
 
 #: aleksis/core/models.py:1011
 msgid "Static content widgets"
-msgstr ""
+msgstr "Виджеты с постоянным содержимым"
 
 #: aleksis/core/models.py:1016
 msgid "Dashboard widget"
-msgstr ""
+msgstr "Виджет информпанели"
 
 #: aleksis/core/models.py:1021
 msgid "Order"
-msgstr ""
+msgstr "Порядок"
 
 #: aleksis/core/models.py:1022
 msgid "Part of the default dashboard"
-msgstr ""
+msgstr "Часть типовой информпанели"
 
 #: aleksis/core/models.py:1037
 msgid "Dashboard widget order"
-msgstr ""
+msgstr "Порядок виджета на информпанели"
 
 #: aleksis/core/models.py:1038
 msgid "Dashboard widget orders"
-msgstr ""
+msgstr "Порядок виджетов на информпанели"
 
-#: aleksis/core/models.py:1044
+#: aleksis/core/models.py:1044 aleksis/core/models.py:1049
 msgid "Menu ID"
-msgstr ""
+msgstr "Меню ID"
 
 #: aleksis/core/models.py:1057
 msgid "Custom menu"
-msgstr ""
+msgstr "Пользовательское меню"
 
 #: aleksis/core/models.py:1058
 msgid "Custom menus"
-msgstr ""
+msgstr "Пользовательские меню"
 
 #: aleksis/core/models.py:1068
 msgid "Menu"
-msgstr ""
+msgstr "Меню"
 
 #: aleksis/core/models.py:1072 aleksis/core/models.py:1320
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
-msgstr ""
+msgstr "Иконка"
 
 #: aleksis/core/models.py:1078
 msgid "Custom menu item"
-msgstr ""
+msgstr "Пункт пользовательского меню"
 
 #: aleksis/core/models.py:1079
 msgid "Custom menu items"
-msgstr ""
+msgstr "Пункты пользовательского меню"
 
 #: aleksis/core/models.py:1093
 msgid "Title of type"
-msgstr ""
+msgstr "Название типа"
 
 #: aleksis/core/models.py:1100 aleksis/core/templates/core/group/full.html:47
 msgid "Group type"
-msgstr ""
+msgstr "Тип группы"
 
 #: aleksis/core/models.py:1114
 msgid "Can view system status"
-msgstr ""
+msgstr "Может просматривать состояние системы"
 
 #: aleksis/core/models.py:1115
 msgid "Can manage data"
-msgstr ""
+msgstr "Может управлять данными"
 
 #: aleksis/core/models.py:1116
 msgid "Can impersonate"
-msgstr ""
+msgstr "Может маскироваться"
 
 #: aleksis/core/models.py:1117
 msgid "Can use search"
-msgstr ""
+msgstr "Может использовать поиск"
 
 #: aleksis/core/models.py:1118
 msgid "Can change site preferences"
-msgstr ""
+msgstr "Может менять свойства сайта"
 
 #: aleksis/core/models.py:1119
 msgid "Can change person preferences"
-msgstr ""
+msgstr "Может менять персональные свойства"
 
 #: aleksis/core/models.py:1120
 msgid "Can change group preferences"
-msgstr ""
+msgstr "Может менять свойства группы"
 
 #: aleksis/core/models.py:1121
 msgid "Can test PDF generation"
-msgstr ""
+msgstr "Может генерировать тестовые PDF"
 
 #: aleksis/core/models.py:1122
 msgid "Can invite persons"
-msgstr ""
+msgstr "Может приглашать других"
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1158 aleksis/core/models.py:1168
 msgid "Related data check task"
-msgstr ""
+msgstr "Задание проверки связанных данных"
 
-#: aleksis/core/models.py:1166
+#: aleksis/core/models.py:1166 aleksis/core/models.py:1176
 msgid "Issue solved"
-msgstr ""
+msgstr "Проблема решена"
 
-#: aleksis/core/models.py:1167
+#: aleksis/core/models.py:1167 aleksis/core/models.py:1177
 msgid "Notification sent"
-msgstr ""
+msgstr "Уведомление отправлено"
 
-#: aleksis/core/models.py:1180
+#: aleksis/core/models.py:1180 aleksis/core/models.py:1190
 msgid "Data check result"
-msgstr ""
+msgstr "Результат проверки данных"
 
-#: aleksis/core/models.py:1181
+#: aleksis/core/models.py:1181 aleksis/core/models.py:1191
 msgid "Data check results"
-msgstr ""
+msgstr "Результаты проверки данных"
 
-#: aleksis/core/models.py:1183
+#: aleksis/core/models.py:1183 aleksis/core/models.py:1193
 msgid "Can run data checks"
-msgstr ""
+msgstr "Может запускать проверки данных"
 
-#: aleksis/core/models.py:1184
+#: aleksis/core/models.py:1184 aleksis/core/models.py:1194
 msgid "Can solve data check problems"
-msgstr ""
+msgstr "Может решать проблемы проверки данных"
 
-#: aleksis/core/models.py:1191
+#: aleksis/core/models.py:1191 aleksis/core/models.py:1201
 msgid "E-Mail address"
-msgstr ""
+msgstr "Адрес эл.почты"
 
-#: aleksis/core/models.py:1223
+#: aleksis/core/models.py:1223 aleksis/core/models.py:1233
 msgid "Owner"
-msgstr ""
+msgstr "Владелец"
 
-#: aleksis/core/models.py:1227
+#: aleksis/core/models.py:1227 aleksis/core/models.py:1237
 msgid "File expires at"
-msgstr ""
+msgstr "Файл действителен до"
 
-#: aleksis/core/models.py:1229
+#: aleksis/core/models.py:1229 aleksis/core/models.py:1239
 msgid "Generated HTML file"
-msgstr ""
+msgstr "Сгенерированный файл HTML"
 
-#: aleksis/core/models.py:1231
+#: aleksis/core/models.py:1231 aleksis/core/models.py:1241
 msgid "Generated PDF file"
-msgstr ""
+msgstr "Сгенерированный файл PDF"
 
-#: aleksis/core/models.py:1238
+#: aleksis/core/models.py:1238 aleksis/core/models.py:1248
 msgid "PDF file"
-msgstr ""
+msgstr "Файл PDF"
 
-#: aleksis/core/models.py:1239
+#: aleksis/core/models.py:1239 aleksis/core/models.py:1249
 msgid "PDF files"
-msgstr ""
+msgstr "Файлы PDF"
 
-#: aleksis/core/models.py:1244
+#: aleksis/core/models.py:1244 aleksis/core/models.py:1254
 msgid "Task result"
-msgstr ""
+msgstr "Результат задания"
 
-#: aleksis/core/models.py:1247
+#: aleksis/core/models.py:1247 aleksis/core/models.py:1257
 msgid "Task user"
-msgstr ""
+msgstr "Пользователь задания"
 
-#: aleksis/core/models.py:1259
+#: aleksis/core/models.py:1259 aleksis/core/models.py:1269
 msgid "Task user assignment"
-msgstr ""
+msgstr "Назначение пользователя задания"
 
-#: aleksis/core/models.py:1260
+#: aleksis/core/models.py:1260 aleksis/core/models.py:1270
 msgid "Task user assignments"
-msgstr ""
+msgstr "Назначения пользователей задания"
 
-#: aleksis/core/models.py:1276
+#: aleksis/core/models.py:1276 aleksis/core/models.py:1286
 msgid "Additional attributes"
-msgstr ""
+msgstr "Дополнительные атрибуты"
 
-#: aleksis/core/models.py:1314
+#: aleksis/core/models.py:1314 aleksis/core/models.py:1324
 msgid "Allowed scopes that clients can request"
-msgstr ""
+msgstr "Разрешённые пределы действия, которые могут запрашивать клиенты"
 
-#: aleksis/core/models.py:1324
-msgid "This image will be shown as icon in the authorization flow. It should be squared."
+#: aleksis/core/models.py:1324 aleksis/core/models.py:1334
+msgid ""
+"This image will be shown as icon in the authorization flow. It should be "
+"squared."
 msgstr ""
+"Это изображение будет использоваться в качестве значка во время авторизации. "
+"Должно быть квадратным."
 
-#: aleksis/core/models.py:1373
+#: aleksis/core/models.py:1373 aleksis/core/models.py:1383
 msgid "UUID"
-msgstr ""
+msgstr "UUID"
 
-#: aleksis/core/models.py:1377
+#: aleksis/core/models.py:1377 aleksis/core/models.py:1387
 msgid "Selected ICal feed"
-msgstr ""
+msgstr "Лента выбранного iCal"
 
-#: aleksis/core/models.py:1386
+#: aleksis/core/models.py:1386 aleksis/core/models.py:1396
 msgid "Personal Calendar URL"
-msgstr ""
+msgstr "URL-ссылка собственного календаря"
 
-#: aleksis/core/models.py:1387
+#: aleksis/core/models.py:1387 aleksis/core/models.py:1397
 msgid "Personal Calendar URLs"
-msgstr ""
+msgstr "URL-ссылка собственных календарей"
 
 #: aleksis/core/preferences.py:25
 msgid "General"
-msgstr ""
+msgstr "Общее"
 
 #: aleksis/core/preferences.py:26
 msgid "School"
-msgstr ""
+msgstr "Школа / уч.заведение"
 
 #: aleksis/core/preferences.py:27
 msgid "Theme"
-msgstr ""
+msgstr "Тема"
 
 #: aleksis/core/preferences.py:28
 msgid "Mail"
-msgstr ""
+msgstr "Почта"
 
 #: aleksis/core/preferences.py:30
 msgid "Footer"
-msgstr ""
+msgstr "Нижний колонтитул (подвал)"
 
 #: aleksis/core/preferences.py:31
 msgid "Accounts"
-msgstr ""
+msgstr "Учётные записи"
 
 #: aleksis/core/preferences.py:32
 msgid "Authentication"
-msgstr ""
+msgstr "Авторизация"
 
 #: aleksis/core/preferences.py:33
 msgid "Internationalisation"
-msgstr ""
+msgstr "Интернационализация"
 
 #: aleksis/core/preferences.py:43
 msgid "Site title"
-msgstr ""
+msgstr "Название сайта"
 
 #: aleksis/core/preferences.py:55
 msgid "Site description"
-msgstr ""
+msgstr "Описание сайта"
 
 #: aleksis/core/preferences.py:65
 msgid "Primary colour"
-msgstr ""
+msgstr "Основной цвет"
 
 #: aleksis/core/preferences.py:77
 msgid "Secondary colour"
-msgstr ""
+msgstr "Дополнительный цвет"
 
 #: aleksis/core/preferences.py:89
 msgid "Logo"
-msgstr ""
+msgstr "Логотип"
 
 #: aleksis/core/preferences.py:100
 msgid "Favicon"
-msgstr ""
+msgstr "Favicon"
 
 #: aleksis/core/preferences.py:111
 msgid "PWA-Icon"
-msgstr ""
+msgstr "Иконка PWA"
 
 #: aleksis/core/preferences.py:121
 msgid "PWA-Icon is maskable"
-msgstr ""
+msgstr "Иконка PWA может быть с маской"
 
 #: aleksis/core/preferences.py:133
 msgid "Mail out name"
-msgstr ""
+msgstr "Имя отправителя"
 
 #: aleksis/core/preferences.py:144
 msgid "Mail out address"
-msgstr ""
+msgstr "Адрес отправителя"
 
 #: aleksis/core/preferences.py:157
 msgid "Link to privacy policy"
-msgstr ""
+msgstr "Ссылка на политику приватности"
 
 #: aleksis/core/preferences.py:169
 msgid "Link to imprint"
-msgstr ""
+msgstr "Ссылка на отпечаток"
 
 #: aleksis/core/preferences.py:180
 msgid "Name format for addressing"
-msgstr ""
+msgstr "Формат имени в переписке"
 
 #: aleksis/core/preferences.py:197
 msgid "Channels to use for notifications"
-msgstr ""
+msgstr "Каналы для уведомлений"
 
 #: aleksis/core/preferences.py:209
 msgid "Regular expression to match primary group, e.g. '^Class .*'"
-msgstr ""
+msgstr "Регулярное выражение для поиска основной группы, напр. '^Class .*'"
 
 #: aleksis/core/preferences.py:220
 msgid "Field on person to match primary group against"
-msgstr ""
+msgstr "Поле для сопоставления лица с основной группой"
 
 #: aleksis/core/preferences.py:232
 msgid "Automatically create new persons for new users"
-msgstr ""
+msgstr "Новые физлица для новых пользователей создавать автоматически"
 
 #: aleksis/core/preferences.py:241
-msgid "Automatically link existing persons to new users by their e-mail address"
+msgid ""
+"Automatically link existing persons to new users by their e-mail address"
 msgstr ""
+"Связывать существующие физлица с новыми пользователями автоматически по эл."
+"адресам"
 
 #: aleksis/core/preferences.py:252
 msgid "Display name of the school"
-msgstr ""
+msgstr "Название школы / уч.заведения для отображения"
 
 #: aleksis/core/preferences.py:263
 msgid "Official name of the school, e.g. as given by supervisory authority"
 msgstr ""
+"Официальное название школы / уч.заведения, напр., как в регистрационных "
+"документах"
 
 #: aleksis/core/preferences.py:271
 msgid "Allow users to change their passwords"
-msgstr ""
+msgstr "Разрешить пользователям менять свои пароли"
 
 #: aleksis/core/preferences.py:279
 msgid "Allow users to reset their passwords"
-msgstr ""
+msgstr "Разрешить пользователям сбрасывать свои пароли"
 
 #: aleksis/core/preferences.py:287
 msgid "Enable signup"
-msgstr ""
+msgstr "Включить регистрацию"
 
 #: aleksis/core/preferences.py:295
 msgid "Regular expression for allowed usernames"
-msgstr ""
+msgstr "Регулярное выражение для разрешённых логинов"
 
 #: aleksis/core/preferences.py:303
 msgid "Enable invitations"
-msgstr ""
+msgstr "Включить приглашения"
 
 #: aleksis/core/preferences.py:311
 msgid "Length of invite code. (Default 3: abcde-acbde-abcde)"
-msgstr ""
+msgstr "Длина пригласительного кода. (По-умолчанию 3: abcde-abcde-abcde)"
 
 #: aleksis/core/preferences.py:319
 msgid "Size of packets. (Default 5: abcde)"
-msgstr ""
+msgstr "Размер пакетов. (По-умолчанию 5: abcde)"
 
 #: aleksis/core/preferences.py:330
 msgid "Allowed Grant Flows for OAuth applications"
-msgstr ""
+msgstr "Разрешённые потоки грантов для приложений с OAuth"
 
 #: aleksis/core/preferences.py:344
 msgid "Available languages"
-msgstr ""
+msgstr "Доступные языки"
 
-#: aleksis/core/preferences.py:357
+#: aleksis/core/preferences.py:357 aleksis/core/preferences.py:343
 msgid "Send emails if data checks detect problems"
-msgstr ""
+msgstr "В случае обнаружения проблемы при проверке данных отправить эл.письмо"
 
-#: aleksis/core/preferences.py:368
+#: aleksis/core/preferences.py:368 aleksis/core/preferences.py:354
 msgid "Email recipients for data checks problem emails"
-msgstr ""
+msgstr "Эл.адреса получателей для писем с проблемами при проверке данных"
 
-#: aleksis/core/preferences.py:379
+#: aleksis/core/preferences.py:379 aleksis/core/preferences.py:365
 msgid "Email recipient groups for data checks problem emails"
-msgstr ""
+msgstr "Эл.адреса груп для писем с проблемами при проверке данных"
 
-#: aleksis/core/preferences.py:388
+#: aleksis/core/preferences.py:388 aleksis/core/preferences.py:374
 msgid "Show dashboard to users without login"
-msgstr ""
+msgstr "Отображать информпанель анонимным пользователям"
 
-#: aleksis/core/preferences.py:397
+#: aleksis/core/preferences.py:397 aleksis/core/preferences.py:383
 msgid "Allow users to edit their dashboard"
-msgstr ""
+msgstr "Разрешить пользователям редактировать свою информпанель"
 
-#: aleksis/core/preferences.py:408
+#: aleksis/core/preferences.py:408 aleksis/core/preferences.py:394
 msgid "Fields on person model which are editable by themselves."
-msgstr ""
+msgstr "Поля с описанием физлица, которые можно редактировать самостоятельно."
 
-#: aleksis/core/preferences.py:423
-msgid "Editable fields on person model which should trigger a notification on change"
+#: aleksis/core/preferences.py:423 aleksis/core/preferences.py:409
+msgid ""
+"Editable fields on person model which should trigger a notification on change"
 msgstr ""
+"Изменяемые поля описания физлица, при изменении которых должен срабатывать "
+"триггер для уведомления"
 
-#: aleksis/core/preferences.py:437
+#: aleksis/core/preferences.py:437 aleksis/core/preferences.py:423
 msgid "Contact for notification if a person changes their data"
-msgstr ""
+msgstr "Контакт для уведомлений при изменении кем-то своих данных"
 
-#: aleksis/core/preferences.py:448
+#: aleksis/core/preferences.py:448 aleksis/core/preferences.py:434
 msgid "Prefer personal photos over avatars"
-msgstr ""
+msgstr "Отдавать предпочтение личным фото вместо аватаров"
 
-#: aleksis/core/preferences.py:458
+#: aleksis/core/preferences.py:458 aleksis/core/preferences.py:444
 msgid "PDF file expiration duration"
-msgstr ""
+msgstr "Срок действия файла PDF"
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:459 aleksis/core/preferences.py:445
 msgid "in minutes"
-msgstr ""
+msgstr "в минутах"
 
-#: aleksis/core/preferences.py:469
+#: aleksis/core/preferences.py:469 aleksis/core/preferences.py:455
 msgid "Automatically update the dashboard and its widgets"
-msgstr ""
+msgstr "Автоматически обновлять информпанель и её виджеты"
 
-#: aleksis/core/preferences.py:479
+#: aleksis/core/preferences.py:479 aleksis/core/preferences.py:465
 msgid "Automatically update the dashboard and its widgets sitewide"
-msgstr ""
+msgstr "Автоматически обновлять информпанель и её виджеты (для всего сайта)"
 
-#: aleksis/core/preferences.py:489
+#: aleksis/core/preferences.py:489 aleksis/core/preferences.py:475
 msgid "Country for phone number parsing"
-msgstr ""
+msgstr "Страна для парсинга номера телефона"
 
-#: aleksis/core/settings.py:540
+#: aleksis/core/settings.py:540 aleksis/core/settings.py:541
 msgid "English"
-msgstr ""
+msgstr "Английский"
 
-#: aleksis/core/settings.py:541
+#: aleksis/core/settings.py:541 aleksis/core/settings.py:542
 msgid "German"
-msgstr ""
+msgstr "Немецкий"
 
 #: aleksis/core/tables.py:24
 #: aleksis/core/templates/core/announcement/list.html:36
@@ -1254,13 +1274,13 @@ msgstr ""
 #: aleksis/core/templates/core/person/full.html:86
 #: aleksis/core/templates/oauth2_provider/application/detail.html:17
 msgid "Edit"
-msgstr ""
+msgstr "Редактировать"
 
 #: aleksis/core/tables.py:26 aleksis/core/tables.py:94
 #: aleksis/core/tables.py:138
 #: aleksis/core/templates/core/announcement/list.html:22
 msgid "Actions"
-msgstr ""
+msgstr "Действия"
 
 #: aleksis/core/tables.py:61 aleksis/core/tables.py:62
 #: aleksis/core/tables.py:76 aleksis/core/tables.py:92
@@ -1272,27 +1292,35 @@ msgstr ""
 #: aleksis/core/templates/core/person/full.html:93
 #: aleksis/core/templates/oauth2_provider/application/detail.html:21
 msgid "Delete"
-msgstr ""
+msgstr "Удалить"
 
 #: aleksis/core/templates/403.html:14 aleksis/core/templates/500.html:10
 #: aleksis/core/templates/oauth2_provider/authorize.html:54
 #: aleksis/core/templates/oauth2_provider/authorized-oob.html:24
 msgid "Error"
-msgstr ""
+msgstr "Ошибка"
 
 #: aleksis/core/templates/403.html:14
 msgid ""
 "You are not allowed to access the requested page or\n"
 "          object."
 msgstr ""
+"У Вас нет доступа к запрашиваемой странице или\n"
+"          к объекту."
 
 #: aleksis/core/templates/403.html:19 aleksis/core/templates/404.html:16
 msgid ""
 "\n"
-"            If you think this is an error in AlekSIS, please contact your site\n"
+"            If you think this is an error in AlekSIS, please contact your "
+"site\n"
 "            administrators:\n"
 "          "
 msgstr ""
+"\n"
+"            Если Вы думаете, что это ошибка AlekSIS, обратитесь, пожалуйста,"
+"\n"
+"            к администраторам сайта:\n"
+"          "
 
 #: aleksis/core/templates/404.html:12
 msgid ""
@@ -1301,46 +1329,65 @@ msgid ""
 "            it is possible that that link was outdated.\n"
 "          "
 msgstr ""
+"\n"
+"            Если Вы были перенаправлены по ссылке с внешней страницы,\n"
+"            вероятно, эта ссылка устарела.\n"
+"          "
 
 #: aleksis/core/templates/500.html:10
 msgid ""
 "An unexpected error has\n"
 "          occured."
 msgstr ""
+"Произошла непредвиденная \n"
+"          ошибка."
 
 #: aleksis/core/templates/500.html:13
 msgid ""
 "\n"
-"            Your site administrators will automatically be notified about this\n"
+"            Your site administrators will automatically be notified about "
+"this\n"
 "            error. You can also contact them directly:\n"
 "          "
 msgstr ""
+"\n"
+"            Администраторы сайта будут уведомлены об этой ошибке "
+"автоматически.\n"
+"            Вы также можете обратиться к ним непосредственно:\n"
+"          "
 
 #: aleksis/core/templates/500.html:21
 msgid "Retry"
-msgstr ""
+msgstr "Попытаться ещё"
 
 #: aleksis/core/templates/503.html:10
 msgid ""
 "The maintenance mode is currently enabled. Please try again\n"
 "          later."
 msgstr ""
+"Сайт находится на обслуживании. Попробуйте зайти\n"
+"          позже."
 
 #: aleksis/core/templates/503.html:13
 msgid ""
 "\n"
-"            This page is currently unavailable. If this error persists, contact your site administrators:\n"
+"            This page is currently unavailable. If this error persists, "
+"contact your site administrators:\n"
 "          "
 msgstr ""
+"\n"
+"            Эта страница сейчас недоступна. Если ошибка проявится ещё раз, "
+"обратитесь к администраторам сайта:\n"
+"          "
 
 #: aleksis/core/templates/account/account_inactive.html:5
 #: aleksis/core/templates/account/account_inactive.html:6
 msgid "Account inactive"
-msgstr ""
+msgstr "Учётная запись неактивна"
 
 #: aleksis/core/templates/account/account_inactive.html:14
 msgid "Account inactive."
-msgstr ""
+msgstr "Учётная запись неактивна."
 
 #: aleksis/core/templates/account/account_inactive.html:17
 msgid ""
@@ -1349,56 +1396,73 @@ msgid ""
 "            error, please contact one of your site administrators.\n"
 "          "
 msgstr ""
+"\n"
+"            Эта учётная запись сейчас неактивна. Если Вы думаете,\n"
+"            что это ошибка, обратитесь к администраторам сайта.\n"
+"          "
 
 #: aleksis/core/templates/account/email/base_message.txt:5
 msgid "Hello!"
-msgstr ""
+msgstr "Привет!"
 
 #: aleksis/core/templates/account/email/base_message.txt:9
 msgid "Your AlekSIS team"
-msgstr ""
+msgstr "Команда AlekSIS"
 
 #: aleksis/core/templates/account/email_confirm.html:5
 #: aleksis/core/templates/account/email_confirm.html:6
 #: aleksis/core/templates/account/email_confirm.html:17
 #: aleksis/core/templates/socialaccount/login.html:17
 msgid "Confirm"
-msgstr ""
+msgstr "Подтвердить"
 
 #: aleksis/core/templates/account/email_confirm.html:12
 #, python-format
-msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an e-mail address for user %(user_display)s."
+msgid ""
+"Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an e-mail "
+"address for user %(user_display)s."
 msgstr ""
+"Подтвердите, пожалуйста, что <a href=\"mailto:%(email)s\">%(email)s</a> — "
+"эл.адрес пользователя %(user_display)s."
 
 #: aleksis/core/templates/account/email_confirm.html:25
 #, python-format
-msgid "This e-mail confirmation link expired or is invalid. Please <a href=\"%(email_url)s\">issue a new e-mail confirmation request</a>."
+msgid ""
+"This e-mail confirmation link expired or is invalid. Please <a href="
+"\"%(email_url)s\">issue a new e-mail confirmation request</a>."
 msgstr ""
+"Эта ссылка для подтверждения эл.почты просрочена или недействительна. "
+"Сделайте, пожалуйста, <a href=\"%(email_url)s\">новый запрос</a>."
 
 #: aleksis/core/templates/account/password_change.html:12
 msgid "Forgot your current password? Click here to reset it:"
-msgstr ""
+msgstr "Забыли свой пароль? Нажмите тут для сброса:"
 
 #: aleksis/core/templates/account/password_change.html:12
 msgid "Forgot Password?"
-msgstr ""
+msgstr "Забыли пароль?"
 
 #: aleksis/core/templates/account/password_change_disabled.html:5
 #: aleksis/core/templates/account/password_change_disabled.html:6
 msgid "Changing of password disabled"
-msgstr ""
+msgstr "Изменение пароля отключено"
 
 #: aleksis/core/templates/account/password_change_disabled.html:13
 msgid "Changing of password disabled."
-msgstr ""
+msgstr "Изменение пароля отключено."
 
 #: aleksis/core/templates/account/password_change_disabled.html:15
 msgid ""
 "\n"
 "            Users are not allowed to edit their own passwords. If you think\n"
-"            this is an error please contact one of your site administrators.\n"
+"            this is an error please contact one of your site "
+"administrators.\n"
 "          "
 msgstr ""
+"\n"
+"            Пользователям не разрешается менять свои пароли.\n"
+"            Если считаете это ошибкой, обратитесь к администраторам сайта.\n"
+"          "
 
 #: aleksis/core/templates/account/password_reset.html:5
 #: aleksis/core/templates/account/password_reset.html:15
@@ -1408,21 +1472,27 @@ msgstr ""
 #: aleksis/core/templates/account/verification_email_required.html:6
 #: aleksis/core/templates/two_factor/core/login.html:100
 msgid "Reset password"
-msgstr ""
+msgstr "Сбросить пароль"
 
 #: aleksis/core/templates/account/password_reset.html:17
-msgid "Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it."
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll send you "
+"an e-mail allowing you to reset it."
 msgstr ""
+"Забыли пароль? Укажите ниже свою эл.почту и мы отправим Вам письмо для "
+"сброса пароля."
 
 #: aleksis/core/templates/account/password_reset.html:30
 msgid ""
 "Please contact one of your site administrators, if you\n"
 "        have any trouble resetting your password:"
 msgstr ""
+"Если у Вас возникла проблема со сбросом пароля,\n"
+"        обратитесь, пожалуйста, к администраторам сайта:"
 
 #: aleksis/core/templates/account/password_reset_done.html:15
 msgid "Password reset mail sent"
-msgstr ""
+msgstr "Письмо для сброса пароля отправлено"
 
 #: aleksis/core/templates/account/password_reset_done.html:18
 #: aleksis/core/templates/account/verification_email_required.html:16
@@ -1432,19 +1502,32 @@ msgid ""
 "            administrators if you do not receive it within a few minutes.\n"
 "          "
 msgstr ""
+"\n"
+"            Мы отправили Вам эл.письмо. Если Вы не получите его на "
+"протяжении\n"
+"            нескольких минут, обратитесь, пожалуйста, к администраторам "
+"сайта.\n"
+"          "
 
 #: aleksis/core/templates/account/password_reset_from_key.html:15
 msgid "Bad token"
-msgstr ""
+msgstr "Неправильный токен"
 
 #: aleksis/core/templates/account/password_reset_from_key.html:19
 #, python-format
 msgid ""
 "\n"
-"              The password reset link was invalid, possibly because it has already been used. Please request a <a href=\"%(passwd_reset_url)s\"\n"
+"              The password reset link was invalid, possibly because it has "
+"already been used. Please request a <a href=\"%(passwd_reset_url)s\"\n"
 "              class=\"blue-text text-lighten-2\">new password reset</a>.\n"
 "            "
 msgstr ""
+"\n"
+"              Ссылка на сброс пароля недействительна или, возможно, уже "
+"использована. Сделайте, пожалуйста, <a href=\"%(passwd_reset_url)s\"\n"
+"              class=\"blue-text text-lighten-2\">новый запрос на сброс "
+"пароля</a>.\n"
+"            "
 
 #: aleksis/core/templates/account/password_reset_from_key.html:25
 msgid ""
@@ -1453,6 +1536,10 @@ msgid ""
 "              administrators\n"
 "            "
 msgstr ""
+"\n"
+"              Если проблема всё ещё присутствует, обратитесь, пожалуйста, к\n"
+"              администраторам сайта\n"
+"            "
 
 #: aleksis/core/templates/account/password_reset_from_key.html:56
 #: aleksis/core/templates/account/password_reset_from_key_done.html:15
@@ -1461,41 +1548,47 @@ msgid ""
 "            Your password is now changed!\n"
 "          "
 msgstr ""
+"\n"
+"            Ваш пароль изменён!\n"
+"          "
 
 #: aleksis/core/templates/account/password_reset_from_key.html:61
 msgid "Back to login"
-msgstr ""
+msgstr "Назад ко входу"
 
 #: aleksis/core/templates/account/password_reset_from_key_done.html:13
 msgid "Password changed!"
-msgstr ""
+msgstr "Пароль изменён!"
 
 #: aleksis/core/templates/account/password_set.html:5
 #: aleksis/core/templates/account/password_set.html:6
 #: aleksis/core/templates/account/password_set.html:12
 msgid "Set password"
-msgstr ""
+msgstr "Установите пароль"
 
 #: aleksis/core/templates/account/signup.html:5
 #: aleksis/core/templates/account/signup.html:6
 #: aleksis/core/templates/socialaccount/signup.html:5
 #: aleksis/core/templates/socialaccount/signup.html:6
 msgid "Signup"
-msgstr ""
+msgstr "Регистрация"
 
 #: aleksis/core/templates/account/signup.html:12
 #, python-format
-msgid "Already have an account? Then please <a href=\"%(login_url)s\">sign in</a>."
+msgid ""
+"Already have an account? Then please <a href=\"%(login_url)s\">sign in</a>."
 msgstr ""
+"У Вас уже есть учётная запись? В таком случае можете <a href=\"%(login_url)"
+"s\">войти</a>."
 
 #: aleksis/core/templates/account/signup_closed.html:5
 #: aleksis/core/templates/account/signup_closed.html:6
 msgid "Signup closed"
-msgstr ""
+msgstr "Регистрация закрыта"
 
 #: aleksis/core/templates/account/signup_closed.html:14
 msgid "Signup closed."
-msgstr ""
+msgstr "Регистрация закрыта."
 
 #: aleksis/core/templates/account/signup_closed.html:17
 msgid ""
@@ -1504,27 +1597,39 @@ msgid ""
 "            error, please contact one of your site administrators.\n"
 "          "
 msgstr ""
+"\n"
+"            Регистрация сейчас закрыта. Если считаете, что это ошибка,\n"
+"            можете обратиться к администраторам сайта.\n"
+"          "
 
 #: aleksis/core/templates/account/verification_email_required.html:14
 msgid "Password reset mail sent!"
-msgstr ""
+msgstr "Письмо для сброса пароля отправлено!"
 
 #: aleksis/core/templates/account/verification_sent.html:5
 #: aleksis/core/templates/account/verification_sent.html:6
 msgid "Verify your email address"
-msgstr ""
+msgstr "Подтвердите свой адрес эл.почты"
 
 #: aleksis/core/templates/account/verification_sent.html:14
 msgid "Verify your email!"
-msgstr ""
+msgstr "Подтвердите свой адрес эл.почты!"
 
 #: aleksis/core/templates/account/verification_sent.html:16
 msgid ""
 "\n"
-"            This part of the site requires us to verify that you are who you claim to be.\n"
-"            For this purpose, we require that you verify ownership of your e-mail address.\n"
+"            This part of the site requires us to verify that you are who you "
+"claim to be.\n"
+"            For this purpose, we require that you verify ownership of your e-"
+"mail address.\n"
 "          "
 msgstr ""
+"\n"
+"            Для этой части сайта необходимо пройти проверку, что Вы - именно "
+"Ð’Ñ‹.\n"
+"            Для этого нам нужно проверить как минимум, что адрес эл.почты "
+"принадлежит именно Вам\n"
+"          "
 
 #: aleksis/core/templates/account/verification_sent.html:22
 msgid ""
@@ -1534,75 +1639,81 @@ msgid ""
 "            contact us if you do not receive it within a few minutes.\n"
 "          "
 msgstr ""
+"\n"
+"            Мы отправили Вам для проверки эл.письмо.\n"
+"            Пожалуйста, перейдите по указанной ссылке. Если Вы не получите\n"
+"            письмо в ближайшие несколько минут, обратитесь, пожалуйста, к "
+"нам.\n"
+"          "
 
 #: aleksis/core/templates/core/additional_field/edit.html:6
 #: aleksis/core/templates/core/additional_field/edit.html:7
 msgid "Edit additional field"
-msgstr ""
+msgstr "Редактирование дополнительного поля"
 
 #: aleksis/core/templates/core/additional_field/list.html:14
 msgid "Create additional field"
-msgstr ""
+msgstr "Создать дополнительное поле"
 
 #: aleksis/core/templates/core/announcement/form.html:14
 #: aleksis/core/templates/core/announcement/form.html:21
 msgid "Edit announcement"
-msgstr ""
+msgstr "Редактирование объявления"
 
 #: aleksis/core/templates/core/announcement/form.html:16
 msgid "Publish announcement"
-msgstr ""
+msgstr "Размещение объявления"
 
 #: aleksis/core/templates/core/announcement/form.html:23
 #: aleksis/core/templates/core/announcement/list.html:13
 msgid "Publish new announcement"
-msgstr ""
+msgstr "Разместить новое объявление"
 
 #: aleksis/core/templates/core/announcement/form.html:34
 msgid "Save and publish announcement"
-msgstr ""
+msgstr "Сохранить и опубликовать объявление"
 
 #: aleksis/core/templates/core/announcement/list.html:19
 msgid "Valid from"
-msgstr ""
+msgstr "Действительно с"
 
 #: aleksis/core/templates/core/announcement/list.html:20
 msgid "Valid until"
-msgstr ""
+msgstr "Действительно по"
 
 #: aleksis/core/templates/core/announcement/list.html:21
 msgid "Recipients"
-msgstr ""
+msgstr "Получатели"
 
 #: aleksis/core/templates/core/announcement/list.html:50
 msgid "There are no announcements."
-msgstr ""
+msgstr "Объявлений нет."
 
 #: aleksis/core/templates/core/base.html:213
 msgid "About AlekSIS® — The Free School Information System"
-msgstr ""
+msgstr "Об AlekSIS® — The Free School Information System"
 
 #: aleksis/core/templates/core/base.html:221
 msgid "Imprint"
-msgstr ""
+msgstr "Отпечаток"
 
 #: aleksis/core/templates/core/base.html:229
 msgid "Privacy Policy"
-msgstr ""
+msgstr "Политика приватности"
 
 #: aleksis/core/templates/core/base_print.html:74
 msgid "Powered by AlekSIS®"
-msgstr ""
+msgstr "Под управлением AlekSIS®"
 
 #: aleksis/core/templates/core/dashboard_widget/create.html:8
 #: aleksis/core/templates/core/dashboard_widget/create.html:12
 #, python-format
 msgid "Create %(widget)s"
-msgstr ""
+msgstr "Создать %(widget)s"
 
 #: aleksis/core/templates/core/dashboard_widget/dashboardwidget_broken.html:10
 msgid "This widget is currently not available."
-msgstr ""
+msgstr "Этот виджет сейчас недоступен."
 
 #: aleksis/core/templates/core/dashboard_widget/dashboardwidget_broken.html:14
 #, python-format
@@ -1612,77 +1723,83 @@ msgid ""
 "            There is no need for you to take any action.\n"
 "          "
 msgstr ""
+"\n"
+"            Во время получения виджета \"%(title)s\" возникла проблема.\n"
+"            Вам ничего делать не нужно.\n"
+"          "
 
 #: aleksis/core/templates/core/dashboard_widget/edit.html:8
 #: aleksis/core/templates/core/dashboard_widget/edit.html:12
 #, python-format
 msgid "Edit %(widget)s"
-msgstr ""
+msgstr "Редактировать %(widget)s"
 
 #: aleksis/core/templates/core/dashboard_widget/list.html:15
 msgid "Create dashboard widget"
-msgstr ""
+msgstr "Создать виджет для информпанели"
 
 #: aleksis/core/templates/core/dashboard_widget/list.html:22
 #, python-format
 msgid "Create %(name)s"
-msgstr ""
+msgstr "Создать %(name)s"
 
 #: aleksis/core/templates/core/dashboard_widget/list.html:32
 #: aleksis/core/templates/core/edit_dashboard.html:8
 #: aleksis/core/templates/core/edit_dashboard.html:15
 msgid "Edit default dashboard"
-msgstr ""
+msgstr "Редактировать стандартную информпанель"
 
 #: aleksis/core/templates/core/data_check/list.html:15
 msgid "Check data again"
-msgstr ""
+msgstr "Проверить данные ещё раз"
 
 #: aleksis/core/templates/core/data_check/list.html:22
 msgid "The system detected some problems with your data."
-msgstr ""
+msgstr "Система обнаружила некоторые проблемы с Вашими данными."
 
 #: aleksis/core/templates/core/data_check/list.html:23
 msgid ""
 "Please go through all data and check whether some extra action is\n"
 "          needed."
 msgstr ""
+"Пожалуйста, пересмотрите внимательно все данные и проверьте не нужно ли\n"
+"          что-то сделать."
 
 #: aleksis/core/templates/core/data_check/list.html:31
 msgid "Everything is fine."
-msgstr ""
+msgstr "Всё прекрасно."
 
 #: aleksis/core/templates/core/data_check/list.html:32
 msgid "The system hasn't detected any problems with your data."
-msgstr ""
+msgstr "Система не обнаружила никаких проблем с Вашими данными."
 
 #: aleksis/core/templates/core/data_check/list.html:40
 msgid "Detected problems"
-msgstr ""
+msgstr "Обнаруженные проблемы"
 
 #: aleksis/core/templates/core/data_check/list.html:45
 msgid "Affected object"
-msgstr ""
+msgstr "Зависимые объекты"
 
 #: aleksis/core/templates/core/data_check/list.html:46
 msgid "Detected problem"
-msgstr ""
+msgstr "Обнаружена проблема"
 
 #: aleksis/core/templates/core/data_check/list.html:47
 msgid "Show details"
-msgstr ""
+msgstr "Подробнее"
 
 #: aleksis/core/templates/core/data_check/list.html:48
 msgid "Options to solve the problem"
-msgstr ""
+msgstr "Варианты решения проблемы"
 
 #: aleksis/core/templates/core/data_check/list.html:63
 msgid "Show object"
-msgstr ""
+msgstr "Посмотреть объект"
 
 #: aleksis/core/templates/core/data_check/list.html:86
 msgid "Registered checks"
-msgstr ""
+msgstr "Зарегистрированные проверки"
 
 #: aleksis/core/templates/core/data_check/list.html:90
 msgid ""
@@ -1690,66 +1807,96 @@ msgid ""
 "            The system will check for the following problems:\n"
 "          "
 msgstr ""
+"\n"
+"            Система проверит наличие таких проблем:\n"
+"          "
 
 #: aleksis/core/templates/core/edit_dashboard.html:6
 #: aleksis/core/templates/core/edit_dashboard.html:13
 #: aleksis/core/templates/core/index.html:17
 msgid "Edit dashboard"
-msgstr ""
+msgstr "Редактировать информпанель"
 
 #: aleksis/core/templates/core/edit_dashboard.html:24
 msgid ""
 "\n"
-"          On this page you can arrange your personal dashboard. You can drag any items from \"Available widgets\" to \"Your\n"
-"          Dashboard\" or change the order by moving the widgets. After you have finished, please don't forget to click on\n"
+"          On this page you can arrange your personal dashboard. You can drag "
+"any items from \"Available widgets\" to \"Your\n"
+"          Dashboard\" or change the order by moving the widgets. After you "
+"have finished, please don't forget to click on\n"
 "          \"Save\".\n"
 "        "
 msgstr ""
+"\n"
+"          На этой странице Вы можете упорядочить свою информпанель. "
+"Перетаскивайте любые элементы из \"Доступных виджетов\"\n"
+"          в \"Свою информпанель\" или меняйте порядок, перетягивая виджеты. "
+"После завершения не забудьте нажать\n"
+"          \"Сохранить\".\n"
+"        "
 
 #: aleksis/core/templates/core/edit_dashboard.html:30
 msgid ""
 "\n"
-"          On this page you can arrange the default dashboard which is shown when a user doesn't arrange his own\n"
-"          dashboard. You can drag any items from \"Available widgets\" to \"Default Dashboard\" or change the order\n"
-"          by moving the widgets. After you have finished, please don't forget to click on \"Save\".\n"
+"          On this page you can arrange the default dashboard which is shown "
+"when a user doesn't arrange his own\n"
+"          dashboard. You can drag any items from \"Available widgets\" to "
+"\"Default Dashboard\" or change the order\n"
+"          by moving the widgets. After you have finished, please don't "
+"forget to click on \"Save\".\n"
 "        "
 msgstr ""
+"\n"
+"          На этой странице Вы можете упорядочить типовую/стандартную "
+"информпанель, которая отображается, если пользователь\n"
+"          не настроил свою. Перетягивайте любые элементы из \"Доступных "
+"виджетов\" в \"Типовую информпанель\" или меняйте \n"
+"          порядок, перетягивая виджеты. После заврешения не забудьте нажать "
+"\"Сохранить\".\n"
+"        "
 
 #: aleksis/core/templates/core/edit_dashboard.html:48
 msgid "Available widgets"
-msgstr ""
+msgstr "Доступные виджеты"
 
 #: aleksis/core/templates/core/edit_dashboard.html:57
 msgid "Your dashboard"
-msgstr ""
+msgstr "Ваша информпанель"
 
 #: aleksis/core/templates/core/edit_dashboard.html:59
 msgid "Default dashboard"
-msgstr ""
+msgstr "Типовая информпанель"
 
 #: aleksis/core/templates/core/group/child_groups.html:18
 msgid ""
 "\n"
-"          You can use this to assign child groups to groups. Please use the filters below to select groups you want to\n"
+"          You can use this to assign child groups to groups. Please use the "
+"filters below to select groups you want to\n"
 "          change and click \"Next\".\n"
 "        "
 msgstr ""
+"\n"
+"          Вы можете воспользоваться этим для привязки дочерних групп к "
+"основным. Для выбора групп,\n"
+"          которые хотите изменить, используйте фильтры, расположенные ниже и "
+"нажмите \"Далее\".\n"
+"        "
 
 #: aleksis/core/templates/core/group/child_groups.html:31
 msgid "Update selection"
-msgstr ""
+msgstr "Обновить выбор"
 
 #: aleksis/core/templates/core/group/child_groups.html:35
 msgid "Clear all filters"
-msgstr ""
+msgstr "Очистить фильтры"
 
 #: aleksis/core/templates/core/group/child_groups.html:39
 msgid "Currently selected groups"
-msgstr ""
+msgstr "Выбранные сейчас группы"
 
 #: aleksis/core/templates/core/group/child_groups.html:52
 msgid "Start assigning child groups for this groups"
-msgstr ""
+msgstr "Начать привязку дочерних групп к этим группам"
 
 #: aleksis/core/templates/core/group/child_groups.html:61
 msgid ""
@@ -1757,23 +1904,36 @@ msgid ""
 "            Please select some groups in order to go on with assigning.\n"
 "          "
 msgstr ""
+"\n"
+"            Выберите, пожалуйста, несколько групп в порядке, по какому "
+"привязывать.\n"
+"          "
 
 #: aleksis/core/templates/core/group/child_groups.html:72
 msgid "Current group:"
-msgstr ""
+msgstr "Текущая группа:"
 
 #: aleksis/core/templates/core/group/child_groups.html:78
 msgid "Please be careful!"
-msgstr ""
+msgstr "Пожалуйста, будьте аккуратны!"
 
 #: aleksis/core/templates/core/group/child_groups.html:79
 msgid ""
 "\n"
-"            If you click \"Back\" or \"Next\" the current group assignments are not saved.\n"
-"            If you click \"Save\", you will overwrite all existing child group relations for this group with what you\n"
+"            If you click \"Back\" or \"Next\" the current group assignments "
+"are not saved.\n"
+"            If you click \"Save\", you will overwrite all existing child "
+"group relations for this group with what you\n"
 "            selected on this page.\n"
 "          "
 msgstr ""
+"\n"
+"            Если нажмёте \"Назад\" или \"Далее\" привязки этой группы не "
+"сохранятся.\n"
+"            Если нажмёте \"Сохранить\", все существующие связи дочерней "
+"группы с этой группой будут заменены на\n"
+"            выбранные на этой странице.\n"
+"          "
 
 #: aleksis/core/templates/core/group/child_groups.html:93
 #: aleksis/core/templates/core/group/child_groups.html:128
@@ -1781,91 +1941,95 @@ msgstr ""
 #: aleksis/core/templates/two_factor/_wizard_actions.html:15
 #: aleksis/core/templates/two_factor/_wizard_actions.html:20
 msgid "Back"
-msgstr ""
+msgstr "Назад"
 
 #: aleksis/core/templates/core/group/child_groups.html:99
 #: aleksis/core/templates/core/group/child_groups.html:134
 #: aleksis/core/templates/two_factor/_wizard_actions.html:26
 msgid "Next"
-msgstr ""
+msgstr "Следующий"
 
 #: aleksis/core/templates/core/group/child_groups.html:106
 #: aleksis/core/templates/core/group/child_groups.html:141
 #: aleksis/core/templates/core/partials/save_button.html:3
 msgid "Save"
-msgstr ""
+msgstr "Сохранить"
 
 #: aleksis/core/templates/core/group/child_groups.html:112
 #: aleksis/core/templates/core/group/child_groups.html:147
 msgid "Save and next"
-msgstr ""
+msgstr "Сохранить и продолжить"
 
 #: aleksis/core/templates/core/group/edit.html:11
 #: aleksis/core/templates/core/group/edit.html:12
 msgid "Edit group"
-msgstr ""
+msgstr "Редактировать группу"
 
 #: aleksis/core/templates/core/group/full.html:38
 #: aleksis/core/templates/core/person/full.html:40
 #: aleksis/core/templates/core/person/full.html:100
+#: aleksis/core/templates/core/group/full.html:40
 msgid "Change preferences"
-msgstr ""
+msgstr "Изменить свойства"
 
 #: aleksis/core/templates/core/group/full.html:64
 msgid "Statistics"
-msgstr ""
+msgstr "Статистика"
 
 #: aleksis/core/templates/core/group/full.html:67
+#: aleksis/core/templates/core/group/full.html:73
 msgid "Count of members"
-msgstr ""
+msgstr "Количество участников"
 
 #: aleksis/core/templates/core/group/full.html:71
+#: aleksis/core/templates/core/group/full.html:81
 msgid "Average age"
-msgstr ""
+msgstr "Средний возраст"
 
 #: aleksis/core/templates/core/group/full.html:76
+#: aleksis/core/templates/core/group/full.html:90
 msgid "Age range"
-msgstr ""
+msgstr "Возрастной диапазон"
 
 #: aleksis/core/templates/core/group/full.html:76
 msgid "years to"
-msgstr ""
+msgstr "–"
 
 #: aleksis/core/templates/core/group/full.html:76
 msgid "years "
-msgstr ""
+msgstr "гг. "
 
 #: aleksis/core/templates/core/group/list.html:14
 msgid "Create group"
-msgstr ""
+msgstr "Создать группу"
 
 #: aleksis/core/templates/core/group/list.html:17
 msgid "Filter groups"
-msgstr ""
+msgstr "Фильтровать группы"
 
 #: aleksis/core/templates/core/group/list.html:24
 #: aleksis/core/templates/core/person/list.html:28
 msgid "Clear"
-msgstr ""
+msgstr "Очистить"
 
 #: aleksis/core/templates/core/group/list.html:28
 msgid "Selected groups"
-msgstr ""
+msgstr "Выбранные группы"
 
 #: aleksis/core/templates/core/group_type/edit.html:6
 #: aleksis/core/templates/core/group_type/edit.html:7
 msgid "Edit group type"
-msgstr ""
+msgstr "Редактировать тип группы"
 
 #: aleksis/core/templates/core/group_type/list.html:14
 msgid "Create group type"
-msgstr ""
+msgstr "Создать тип группы"
 
 #: aleksis/core/templates/core/ical/ical_create.html:4
 #: aleksis/core/templates/core/ical/ical_create.html:5
 #: aleksis/core/templates/core/ical/ical_list.html:12
 msgid "Create iCal URL"
-msgstr ""
+msgstr "Создать ссылку iCal"
 
 #: aleksis/core/templates/core/ical/ical_create.html:16
 #: aleksis/core/templates/core/ical/ical_edit.html:16
@@ -1874,125 +2038,159 @@ msgstr ""
 #: aleksis/core/templates/oauth2_provider/authorized-token-delete.html:24
 #: aleksis/core/templates/two_factor/_wizard_actions.html:6
 msgid "Cancel"
-msgstr ""
+msgstr "Отменить"
 
 #: aleksis/core/templates/core/ical/ical_edit.html:4
 #: aleksis/core/templates/core/ical/ical_edit.html:5
 #, python-format
 msgid "Edit iCal URL %(object)s"
-msgstr ""
+msgstr "Редактировать ссылку iCal %(object)s"
 
 #: aleksis/core/templates/core/ical/ical_list.html:4
 #: aleksis/core/templates/core/ical/ical_list.html:5
 msgid "ICal Feeds"
-msgstr ""
+msgstr "iCal-ленты"
 
 #: aleksis/core/templates/core/ical/ical_list.html:8
-msgid "These are URLs for different Calendar Feeds in the iCal (.ics) format. You can create as many as you want and import them in your calendar software."
+msgid ""
+"These are URLs for different Calendar Feeds in the iCal (.ics) format. You "
+"can create as many as you want and import them in your calendar software."
 msgstr ""
+"Здесь находятся ссылки на разные ленты календарей в формате iCal (.ics). Вы "
+"можете создать их столько, сколько будет необходимо и импортировать их в ПО "
+"для работы с календарями."
 
 #: aleksis/core/templates/core/ical/ical_list.html:14
 msgid "Your iCal URLs"
-msgstr ""
+msgstr "Ваши ссылки iCal"
 
 #: aleksis/core/templates/core/index.html:4
 msgid "Home"
-msgstr ""
+msgstr "Домой"
 
 #: aleksis/core/templates/core/index.html:49
 msgid ""
 "\n"
-"        You didn't customise your dashboard so that you see the system default. Please click on \"Edit dashboard\" to\n"
+"        You didn't customise your dashboard so that you see the system "
+"default. Please click on \"Edit dashboard\" to\n"
 "        customise your personal dashboard.\n"
 "      "
 msgstr ""
+"\n"
+"        Вы ещё не настроили свою информпанель, так что пока наблюдаете "
+"типовую по-умолчанию. Для настройки \n"
+"         своей информпанели клацните \"Редактировать информпанель\".\n"
+"      "
 
 #: aleksis/core/templates/core/index.html:59
 msgid "Last activities"
-msgstr ""
+msgstr "Последние действия"
 
 #: aleksis/core/templates/core/index.html:77
 msgid "No activities available yet."
-msgstr ""
+msgstr "Действия пока недоступны."
 
 #: aleksis/core/templates/core/index.html:82
 msgid "Recent notifications"
-msgstr ""
+msgstr "Свежие уведомления"
 
 #: aleksis/core/templates/core/index.html:98
 #: aleksis/core/templates/core/notifications.html:23
 msgid "More information →"
-msgstr ""
+msgstr "Больше информации →"
 
 #: aleksis/core/templates/core/index.html:105
 #: aleksis/core/templates/core/notifications.html:30
 msgid "No notifications available yet."
-msgstr ""
+msgstr "Уведомления пока ещё недоступны."
 
 #: aleksis/core/templates/core/pages/about.html:6
 msgid "About AlekSIS®"
-msgstr ""
+msgstr "Об AlekSIS®"
 
 #: aleksis/core/templates/core/pages/about.html:7
 msgid "AlekSIS® – The Free School Information System"
-msgstr ""
+msgstr "AlekSIS® – The Free School Information System"
 
 #: aleksis/core/templates/core/pages/about.html:15
 msgid "About AlekSIS"
-msgstr ""
+msgstr "Об AlekSIS"
 
 #: aleksis/core/templates/core/pages/about.html:17
 msgid ""
 "\n"
-"              This platform is powered by AlekSIS®, a web-based school information system (SIS) which can be used\n"
-"              to manage and/or publish organisational artifacts of educational institutions. AlekSIS is free software and\n"
+"              This platform is powered by AlekSIS®, a web-based school "
+"information system (SIS) which can be used\n"
+"              to manage and/or publish organisational artifacts of "
+"educational institutions. AlekSIS is free software and\n"
 "              can be used by anyone.\n"
 "            "
 msgstr ""
+"\n"
+"              Эта платформа использует AlekSIS®, веб-инструмент "
+"информационной системы для обучения (SIS) при помощи которой\n"
+"              можно управлять и/или публиковать оргинформацию учебных "
+"заведений. AlekSIS - бесплатное ПО\n"
+"              и его может использовать любой желающий.\n"
+"            "
 
 #: aleksis/core/templates/core/pages/about.html:24
 msgid ""
 "\n"
-"              AlekSIS® is a registered trademark of the AlekSIS open source project, represented by Teckids e.V.\n"
+"              AlekSIS® is a registered trademark of the AlekSIS open source "
+"project, represented by Teckids e.V.\n"
 "            "
 msgstr ""
+"\n"
+"              AlekSIS® – зарегистрированная торговая марка проекта с "
+"открытым исходным кодом AlekSIS, которая представлена Teckids e.V.\n"
+"            "
 
 #: aleksis/core/templates/core/pages/about.html:30
 msgid "Website of AlekSIS"
-msgstr ""
+msgstr "Вебсайт AlekSIS"
 
 #: aleksis/core/templates/core/pages/about.html:31
 msgid "Source code"
-msgstr ""
+msgstr "Исходный код"
 
 #: aleksis/core/templates/core/pages/about.html:40
 msgid "Licence information"
-msgstr ""
+msgstr "Лицензионная информация"
 
 #: aleksis/core/templates/core/pages/about.html:42
 msgid ""
 "\n"
-"              The core and the official apps of AlekSIS are licenced under the EUPL, version 1.2 or later. For licence\n"
-"              information from third-party apps, if installed, refer to the respective components below. The\n"
+"              The core and the official apps of AlekSIS are licenced under "
+"the EUPL, version 1.2 or later. For licence\n"
+"              information from third-party apps, if installed, refer to the "
+"respective components below. The\n"
 "              licences are marked like this:\n"
 "            "
 msgstr ""
+"\n"
+"              Ядро и официальные дополнения AlekSIS лицензированы под "
+"лицензией EUPL, версии 1.2 или новее. Для получения информации\n"
+"              о компонентах третих сторон, если таковы установлены, "
+"перейдите к соответствующим компонентам ниже.\n"
+"              Эти лицензии обозначены такой отметкой:\n"
+"            "
 
 #: aleksis/core/templates/core/pages/about.html:50
 msgid "Free/Open Source Licence"
-msgstr ""
+msgstr "Бесплатная лицензия или Open Source"
 
 #: aleksis/core/templates/core/pages/about.html:51
 msgid "Other Licence"
-msgstr ""
+msgstr "Другая лицензия"
 
 #: aleksis/core/templates/core/pages/about.html:55
 msgid "Full licence text"
-msgstr ""
+msgstr "Полный текст лицензии"
 
 #: aleksis/core/templates/core/pages/about.html:56
 msgid "More information about the EUPL"
-msgstr ""
+msgstr "Больше информации о EUPL"
 
 #: aleksis/core/templates/core/pages/about.html:95
 #, python-format
@@ -2001,11 +2199,14 @@ msgid ""
 "                    This app is licenced under %(licence)s.\n"
 "                  "
 msgstr ""
+"\n"
+"                    Это приложение под лицензией %(licence)s.\n"
+"                  "
 
 #: aleksis/core/templates/core/pages/delete.html:6
 #, python-format
 msgid "Delete %(object_name)s"
-msgstr ""
+msgstr "Удалить %(object_name)s"
 
 #: aleksis/core/templates/core/pages/delete.html:13
 #, python-format
@@ -2014,114 +2215,142 @@ msgid ""
 "      Do you really want to delete the %(object_name)s \"%(object)s\"?\n"
 "    "
 msgstr ""
+"\n"
+"      Вы действительно хотите удалить %(object_name)s \"%(object)s\"?\n"
+"    "
 
 #: aleksis/core/templates/core/pages/progress.html:27
 msgid ""
 "\n"
-"              Without activated JavaScript the progress status can't be updated.\n"
+"              Without activated JavaScript the progress status can't be "
+"updated.\n"
 "            "
 msgstr ""
+"\n"
+"              Без активного JavaScript статус выполнения обновляться не "
+"сможет.\n"
+"            "
 
 #: aleksis/core/templates/core/pages/progress.html:47
 #: aleksis/core/templates/two_factor/core/otp_required.html:19
 msgid "Go back"
-msgstr ""
+msgstr "Назад"
 
 #: aleksis/core/templates/core/pages/system_status.html:12
 msgid "System checks"
-msgstr ""
+msgstr "Системные проверки"
 
 #: aleksis/core/templates/core/pages/system_status.html:22
 msgid "Maintenance mode enabled"
-msgstr ""
+msgstr "Включен режим обслуживания"
 
 #: aleksis/core/templates/core/pages/system_status.html:24
 msgid ""
 "\n"
-"                Only admin and visitors from internal IPs can access thesite.\n"
+"                Only admin and visitors from internal IPs can access "
+"thesite.\n"
 "              "
 msgstr ""
+"\n"
+"                Доступ к сайту имеют только администратор и пользователи с "
+"внутренними IP-адресами.\n"
+"              "
 
 #: aleksis/core/templates/core/pages/system_status.html:36
 msgid "Maintenance mode disabled"
-msgstr ""
+msgstr "Режим обслуживания выключен"
 
 #: aleksis/core/templates/core/pages/system_status.html:37
 msgid "Everyone can access the site."
-msgstr ""
+msgstr "Доступ к сайту есть у всех."
 
 #: aleksis/core/templates/core/pages/system_status.html:47
 msgid "Debug mode enabled"
-msgstr ""
+msgstr "Режим отладки включен"
 
 #: aleksis/core/templates/core/pages/system_status.html:49
 msgid ""
 "\n"
-"                The web server throws back debug information on errors. Do not use in production!\n"
+"                The web server throws back debug information on errors. Do "
+"not use in production!\n"
 "              "
 msgstr ""
+"\n"
+"                Веб-сервер во время ошибок пишет отладочную информацию. Не "
+"используйте в продакшене!\n"
+"              "
 
 #: aleksis/core/templates/core/pages/system_status.html:56
 msgid "Debug mode disabled"
-msgstr ""
+msgstr "Режим отладки отключен"
 
 #: aleksis/core/templates/core/pages/system_status.html:58
 msgid ""
 "\n"
-"                Debug mode is disabled. Default error pages are displayed on errors.\n"
+"                Debug mode is disabled. Default error pages are displayed on "
+"errors.\n"
 "              "
 msgstr ""
+"\n"
+"                Режим отладки отключен. В случае ошибок будут отображаться "
+"стандартные страницы об ошибках.\n"
+"              "
 
 #: aleksis/core/templates/core/pages/system_status.html:71
 msgid "System health checks"
-msgstr ""
+msgstr "Проверки работы системы"
 
 #: aleksis/core/templates/core/pages/system_status.html:77
 msgid "Service"
-msgstr ""
+msgstr "Служба"
 
 #: aleksis/core/templates/core/pages/system_status.html:78
 #: aleksis/core/templates/core/pages/system_status.html:119
 msgid "Status"
-msgstr ""
+msgstr "Состояние"
 
 #: aleksis/core/templates/core/pages/system_status.html:79
 msgid "Time taken"
-msgstr ""
+msgstr "Продолжительность"
 
 #: aleksis/core/templates/core/pages/system_status.html:100
 msgid "seconds"
-msgstr ""
+msgstr "сек"
 
 #: aleksis/core/templates/core/pages/system_status.html:111
 msgid "Celery task results"
-msgstr ""
+msgstr "Результаты выполнения Celery"
 
 #: aleksis/core/templates/core/pages/system_status.html:116
 #: aleksis/core/templates/templated_email/celery_failure.email:9
 #: aleksis/core/templates/templated_email/celery_failure.email:28
 msgid "Task"
-msgstr ""
+msgstr "Задания"
 
 #: aleksis/core/templates/core/pages/system_status.html:117
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 #: aleksis/core/templates/core/pages/system_status.html:118
 msgid "Date done"
-msgstr ""
+msgstr "Время завершения"
 
 #: aleksis/core/templates/core/pages/test_pdf.html:7
 #: aleksis/core/templates/core/pages/test_pdf.html:8
 msgid "Test PDF generation"
-msgstr ""
+msgstr "Пробное генерирование PDF"
 
 #: aleksis/core/templates/core/pages/test_pdf.html:14
 msgid ""
 "\n"
-"        This simple view can be used to ensure the correct function of the built-in PDF generation system.\n"
+"        This simple view can be used to ensure the correct function of the "
+"built-in PDF generation system.\n"
 "      "
 msgstr ""
+"\n"
+"        Эта простая страница может помочь проверить корректность настроек "
+"встроенной системы генерирования PDF.\n"
+"      "
 
 #: aleksis/core/templates/core/partials/announcements.html:8
 #: aleksis/core/templates/core/partials/announcements.html:35
@@ -2131,6 +2360,9 @@ msgid ""
 "              Valid for %(from)s\n"
 "            "
 msgstr ""
+"\n"
+"              Действительно до %(from)s\n"
+"            "
 
 #: aleksis/core/templates/core/partials/announcements.html:12
 #, python-format
@@ -2139,6 +2371,9 @@ msgid ""
 "              Valid from %(from)s until %(until)s\n"
 "            "
 msgstr ""
+"\n"
+"              Действительно с %(from)s по %(until)s\n"
+"            "
 
 #: aleksis/core/templates/core/partials/announcements.html:39
 #, python-format
@@ -2147,42 +2382,53 @@ msgid ""
 "              Valid for %(from)s – %(until)s\n"
 "            "
 msgstr ""
+"\n"
+"              Действительно в период %(from)s – %(until)s\n"
+"            "
 
 #: aleksis/core/templates/core/partials/avatar_content.html:14
 #: aleksis/core/templates/core/partials/avatar_content.html:15
 #: aleksis/core/templates/core/person/full.html:213
 #: aleksis/core/templates/core/person/full.html:214
 msgid "Avatar"
-msgstr ""
+msgstr "Аватар"
 
 #: aleksis/core/templates/core/partials/avatar_content.html:19
 #: aleksis/core/templates/core/partials/avatar_content.html:20
 msgid "Identicon"
-msgstr ""
+msgstr "Идентификатор (иконка)"
 
 #: aleksis/core/templates/core/partials/crud_events.html:15
 msgid "Changed by"
-msgstr ""
+msgstr "Изменено"
 
 #: aleksis/core/templates/core/partials/crud_events.html:15
 msgid "Unknown"
-msgstr ""
+msgstr "Неизвестно"
 
 #: aleksis/core/templates/core/partials/language_form.html:15
+#: aleksis/core/templates/core/partials/language_form.html:17
 msgid "Language"
-msgstr ""
+msgstr "Язык"
 
 #: aleksis/core/templates/core/partials/language_form.html:27
+#: aleksis/core/templates/core/partials/language_form.html:29
 msgid "Select language"
-msgstr ""
+msgstr "Выберите язык"
 
 #: aleksis/core/templates/core/partials/no_person.html:12
 msgid ""
 "\n"
-"            Your administrator account is not linked to any person. Therefore,\n"
+"            Your administrator account is not linked to any person. "
+"Therefore,\n"
 "            a dummy person has been linked to your account.\n"
 "          "
 msgstr ""
+"\n"
+"            Ваша административная учётная запись не соединена на с одним "
+"физлицом. Поэтому\n"
+"            к Вашей учётной записи привязано фейковое физлицо.\n"
+"          "
 
 #: aleksis/core/templates/core/partials/no_person.html:19
 msgid ""
@@ -2192,140 +2438,150 @@ msgid ""
 "            the managers of AlekSIS at your school.\n"
 "          "
 msgstr ""
+"\n"
+"            Ваша учётная запись не связана с физлицом. Это значит,\n"
+"            что у Вас нет доступа на к какой учебной информации. Обратитесь,"
+"\n"
+"            пожалуйста, к администраторам AlekSIS в Вашем учебном заведении."
+"\n"
+"          "
 
 #: aleksis/core/templates/core/perms/assign.html:12
 #: aleksis/core/templates/core/perms/assign.html:13
 msgid "Assign permission"
-msgstr ""
+msgstr "Назначить доступ"
 
 #: aleksis/core/templates/core/perms/assign.html:17
 msgid "Selected permission"
-msgstr ""
+msgstr "Выбранный доступ"
 
 #: aleksis/core/templates/core/perms/assign.html:26
 msgid "Assign"
-msgstr ""
+msgstr "Назначить"
 
 #: aleksis/core/templates/core/perms/list.html:21
 msgid "Assign a new permission"
-msgstr ""
+msgstr "Назначить новый доступ"
 
 #: aleksis/core/templates/core/perms/list.html:25
 msgid "Select"
-msgstr ""
+msgstr "Отметить"
 
 #: aleksis/core/templates/core/perms/list.html:34
 msgid "Global (user)"
-msgstr ""
+msgstr "Глобально (пользователь)"
 
 #: aleksis/core/templates/core/perms/list.html:38
 msgid "Global (group)"
-msgstr ""
+msgstr "Глобально (группа)"
 
 #: aleksis/core/templates/core/perms/list.html:42
 msgid "Object (user)"
-msgstr ""
+msgstr "Объект (пользователь)"
 
 #: aleksis/core/templates/core/perms/list.html:46
 msgid "Object (group)"
-msgstr ""
+msgstr "Объект (группа)"
 
 #: aleksis/core/templates/core/perms/list.html:52
 msgid "Filter permissions"
-msgstr ""
+msgstr "Фильтр доступов"
 
 #: aleksis/core/templates/core/perms/list.html:58
 msgid "Update"
-msgstr ""
+msgstr "Обновить"
 
 #: aleksis/core/templates/core/person/create.html:12
 #: aleksis/core/templates/core/person/create.html:13
 #: aleksis/core/templates/core/person/list.html:17
 msgid "Create person"
-msgstr ""
+msgstr "Создать физлицо"
 
 #: aleksis/core/templates/core/person/edit.html:12
 #: aleksis/core/templates/core/person/edit.html:13
 msgid "Edit person"
-msgstr ""
+msgstr "Редактировать физлицо"
 
 #: aleksis/core/templates/core/person/full.html:47
 #: aleksis/core/templates/core/person/full.html:107
 msgid "Impersonate"
-msgstr ""
+msgstr "Маскировка"
 
 #: aleksis/core/templates/core/person/full.html:54
 #: aleksis/core/templates/core/person/full.html:114
 msgid "Invite user"
-msgstr ""
+msgstr "Пригласить пользователя"
 
 #: aleksis/core/templates/core/person/full.html:121
 msgid "Contact details"
-msgstr ""
+msgstr "Контактные данные"
 
 #: aleksis/core/templates/core/person/full.html:220
 msgid "This person didn't upload a personal photo."
-msgstr ""
+msgstr "Эта особа не загрузила личное фото."
 
 #: aleksis/core/templates/core/person/full.html:228
 msgid "Children"
-msgstr ""
+msgstr "Дети"
 
 #: aleksis/core/templates/core/person/list.html:21
 msgid "Filter persons"
-msgstr ""
+msgstr "Фильтр физлиц"
 
 #: aleksis/core/templates/core/person/list.html:32
 msgid "Selected persons"
-msgstr ""
+msgstr "Выбранные физлица"
 
 #: aleksis/core/templates/core/school_term/create.html:6
 #: aleksis/core/templates/core/school_term/create.html:7
 #: aleksis/core/templates/core/school_term/list.html:14
 msgid "Create school term"
-msgstr ""
+msgstr "Создать Учебный год"
 
 #: aleksis/core/templates/core/school_term/edit.html:6
 #: aleksis/core/templates/core/school_term/edit.html:7
 msgid "Edit school term"
-msgstr ""
+msgstr "Редактировать Учебный год"
 
 #: aleksis/core/templates/dynamic_preferences/form.html:9
 msgid "Site preferences"
-msgstr ""
+msgstr "Свойства сайта"
 
 #: aleksis/core/templates/dynamic_preferences/form.html:11
 msgid "My preferences"
-msgstr ""
+msgstr "Мои предпочтения"
 
 #: aleksis/core/templates/dynamic_preferences/form.html:13
 #, python-format
 msgid "Preferences for %(instance)s"
-msgstr ""
+msgstr "Свойства %(instance)s"
 
 #: aleksis/core/templates/dynamic_preferences/form.html:25
 msgid "Save preferences"
-msgstr ""
+msgstr "Сохранить свойства"
 
 #: aleksis/core/templates/invitations/disabled.html:5
 msgid "The invite feature is disabled"
-msgstr ""
+msgstr "Функция приглашения отключена"
 
 #: aleksis/core/templates/invitations/disabled.html:13
 msgid "The invite feature is disabled."
-msgstr ""
+msgstr "Фукция приглашения выключена."
 
 #: aleksis/core/templates/invitations/disabled.html:15
-msgid "To enable it, switch on the corresponding checkbox in the authentication section of the "
+msgid ""
+"To enable it, switch on the corresponding checkbox in the authentication "
+"section of the "
 msgstr ""
+"Для активации включите соответствующий чекбокс в разделе авторизации на "
 
 #: aleksis/core/templates/invitations/disabled.html:16
 msgid "site preferences page"
-msgstr ""
+msgstr "странице настроек сайта"
 
 #: aleksis/core/templates/invitations/enter.html:21
 msgid "Accept your invitation"
-msgstr ""
+msgstr "Принятие Вашего приглашения"
 
 #: aleksis/core/templates/invitations/enter.html:25
 msgid ""
@@ -2334,231 +2590,259 @@ msgid ""
 "                your new user account:\n"
 "              "
 msgstr ""
+"\n"
+"                Для регистрации Вашей новой учётной записи\n"
+"                укажите свой код приглашения:\n"
+"              "
 
 #: aleksis/core/templates/invitations/enter.html:37
 msgid "Accept invite"
-msgstr ""
+msgstr "Принять приглашение"
 
 #: aleksis/core/templates/invitations/forms/_invite.html:9
 #: aleksis/core/templates/invitations/forms/_invite.html:10
 #: aleksis/core/templates/invitations/forms/_invite.html:21
 msgid "Invite"
-msgstr ""
+msgstr "Приглашение"
 
 #: aleksis/core/templates/invitations/forms/_invite.html:17
 msgid "Invite by email address"
-msgstr ""
+msgstr "Приглашение по эл.почте"
 
 #: aleksis/core/templates/invitations/forms/_invite.html:26
 msgid "Generate invitation code"
-msgstr ""
+msgstr "Создать код приглашения"
 
 #: aleksis/core/templates/invitations/forms/_invite.html:29
 msgid "Generate code"
-msgstr ""
+msgstr "Генерирование кода"
 
 #: aleksis/core/templates/invitations/forms/_invite.html:33
 msgid "Invitations"
-msgstr ""
+msgstr "Приглашения"
 
 #: aleksis/core/templates/invitations/messages/invite_accepted.txt:3
 #, python-format
 msgid "The invitation for %(email)s has been accepted."
-msgstr ""
+msgstr "Приглашение для %(email)s было принято."
 
 #: aleksis/core/templates/oauth2_provider/application/create.html:5
 #: aleksis/core/templates/oauth2_provider/application/create.html:6
 msgid "Register OAuth2 Application"
-msgstr ""
+msgstr "Регистрация приложения OAuth2"
 
 #: aleksis/core/templates/oauth2_provider/application/detail.html:5
 msgid "OAuth2 Application"
-msgstr ""
+msgstr "Приложение OAuth2"
 
 #: aleksis/core/templates/oauth2_provider/application/detail.html:39
 msgid "Client id"
-msgstr ""
+msgstr "Клиентский ID"
 
 #: aleksis/core/templates/oauth2_provider/application/detail.html:47
 msgid "Client secret"
-msgstr ""
+msgstr "Клиентский секрет"
 
 #: aleksis/core/templates/oauth2_provider/application/detail.html:55
 msgid "Client type"
-msgstr ""
+msgstr "Клиентский тип"
 
 #: aleksis/core/templates/oauth2_provider/application/detail.html:63
 msgid "Allowed scopes"
-msgstr ""
+msgstr "Разрешённые границы действия"
 
 #: aleksis/core/templates/oauth2_provider/application/detail.html:71
 msgid "Redirect URIs"
-msgstr ""
+msgstr "Перенаправление URI-адресов"
 
 #: aleksis/core/templates/oauth2_provider/application/detail.html:79
 msgid "Skip Authorisation"
-msgstr ""
+msgstr "Пропустить авторизацию"
 
 #: aleksis/core/templates/oauth2_provider/application/edit.html:5
 #: aleksis/core/templates/oauth2_provider/application/edit.html:6
 msgid "Edit OAuth2 Application"
-msgstr ""
+msgstr "Редактировать приложение OAuth2"
 
 #: aleksis/core/templates/oauth2_provider/application/list.html:11
 msgid "Register new application"
-msgstr ""
+msgstr "Зарегистрировать новое приложение"
 
 #: aleksis/core/templates/oauth2_provider/application/list.html:25
 msgid "No applications defined."
-msgstr ""
+msgstr "Приложения не определены."
 
 #: aleksis/core/templates/oauth2_provider/authorize.html:5
 #: aleksis/core/templates/socialaccount/login.html:5
 #: aleksis/core/templates/socialaccount/login.html:6
 msgid "Authorize"
-msgstr ""
+msgstr "Авторизовать"
 
 #: aleksis/core/templates/oauth2_provider/authorize.html:23
 #, python-format
 msgid "Authorize %(name)s"
-msgstr ""
+msgstr "Авторизовать %(name)s"
 
 #: aleksis/core/templates/oauth2_provider/authorize.html:25
 msgid "The application requests access to the following scopes:"
-msgstr ""
+msgstr "Приложение запрашивает разрешение к таким пределам действия:"
 
 #: aleksis/core/templates/oauth2_provider/authorize.html:40
 msgid "Allow"
-msgstr ""
+msgstr "Разрешить"
 
 #: aleksis/core/templates/oauth2_provider/authorize.html:43
 msgid "Disallow"
-msgstr ""
+msgstr "Запретить"
 
 #: aleksis/core/templates/oauth2_provider/authorized-oob.html:12
 msgid "Success!"
-msgstr ""
+msgstr "Успех!"
 
 #: aleksis/core/templates/oauth2_provider/authorized-oob.html:14
 msgid "Please return to your application and enter this code:"
-msgstr ""
+msgstr "Вернитесь, пожалуйста, к своему приложению и впишите этот код:"
 
 #: aleksis/core/templates/oauth2_provider/authorized-token-delete.html:5
 #: aleksis/core/templates/oauth2_provider/authorized-token-delete.html:6
 #: aleksis/core/templates/oauth2_provider/authorized-tokens.html:23
 msgid "Revoke access"
-msgstr ""
+msgstr "Отозвать доступ"
 
 #: aleksis/core/templates/oauth2_provider/authorized-token-delete.html:12
 msgid "Are you sure to revoke the access for this application?"
-msgstr ""
+msgstr "Ви действительно хотите отозвать доступ для этого приложения?"
 
 #: aleksis/core/templates/oauth2_provider/authorized-token-delete.html:20
 msgid "Revoke"
-msgstr ""
+msgstr "Отозвать"
 
 #: aleksis/core/templates/oauth2_provider/authorized-tokens.html:33
 msgid "No authorized applications."
-msgstr ""
+msgstr "Авторизованных приложений нет."
 
 #: aleksis/core/templates/offline.html:5
 msgid "Network error"
-msgstr ""
+msgstr "Ошибка сети"
 
 #: aleksis/core/templates/offline.html:10
 msgid "No internet connection."
-msgstr ""
+msgstr "Отсутствует интернет-соединение."
 
 #: aleksis/core/templates/offline.html:14
 msgid ""
 "\n"
-"      There was an error accessing this page. You probably don't have an internet connection. Check to see if your WiFi\n"
-"      or mobile data is turned on and try again. If you think you are connected, please contact the system\n"
+"      There was an error accessing this page. You probably don't have an "
+"internet connection. Check to see if your WiFi\n"
+"      or mobile data is turned on and try again. If you think you are "
+"connected, please contact the system\n"
 "      administrators:\n"
 "    "
 msgstr ""
+"\n"
+"      При доступе к этой странице произошла ошибка. Возможно, у Вас проблема "
+"с интернетом. Убедитесь, что Ваш WiFi\n"
+"      или мобильный интернет включены и попробуйте ещё раз. Если считаете, "
+"что с подключением всё хорошо, обратитесь,\n"
+"      пожалуйста, к системным администраторам:\n"
+"    "
 
 #: aleksis/core/templates/search/search.html:8
 msgid "Global Search"
-msgstr ""
+msgstr "Глобальный поиск"
 
 #: aleksis/core/templates/search/search.html:15
 msgid "Search Term"
-msgstr ""
+msgstr "Поисковый термин"
 
 #: aleksis/core/templates/search/search.html:26
 msgid "Results"
-msgstr ""
+msgstr "Результаты"
 
 #: aleksis/core/templates/search/search.html:38
 msgid "No search results could be found to your search."
-msgstr ""
+msgstr "По Вашему поисковому запросу результатов нет."
 
 #: aleksis/core/templates/search/search.html:87
 msgid "Please enter a search term above."
-msgstr ""
+msgstr "Пожалуйста, напишите выше поисковый термин."
 
 #: aleksis/core/templates/socialaccount/authentication_error.html:5
 #: aleksis/core/templates/socialaccount/authentication_error.html:6
 msgid "Third-party Account Login Failure"
-msgstr ""
+msgstr "Ошибка входа сторонней учётной записи"
 
 #: aleksis/core/templates/socialaccount/authentication_error.html:13
 msgid "Third-party Account Login Failure."
-msgstr ""
+msgstr "Ошибка входа учётной записи третьей стороны."
 
 #: aleksis/core/templates/socialaccount/authentication_error.html:15
 msgid ""
 "\n"
-"            An error occurred while attempting to login via your third-party account.\n"
+"            An error occurred while attempting to login via your third-party "
+"account.\n"
 "            Please contact one of your site administrators.\n"
 "          "
 msgstr ""
+"\n"
+"            Во время попытки входа с Вашей сторонней учётной записью "
+"возникла ошибка входа.\n"
+"            Обратитесь, пожалуйста, к администратору сайта.\n"
+"          "
 
 #: aleksis/core/templates/socialaccount/connections.html:5
 #: aleksis/core/templates/socialaccount/connections.html:6
 msgid "Connections"
-msgstr ""
+msgstr "Соединения"
 
 #: aleksis/core/templates/socialaccount/connections.html:24
 msgid "Remove"
-msgstr ""
+msgstr "Удалить"
 
 #: aleksis/core/templates/socialaccount/connections.html:34
 msgid "You currently have no third-party accounts connected to this account."
 msgstr ""
+"Сейчас у Вас нет учётных записей третих сторон, соединённых с этой учётной "
+"записью."
 
 #: aleksis/core/templates/socialaccount/connections.html:37
 msgid "Add a Third-party Account"
-msgstr ""
+msgstr "Добавить стороннюю учётную запись"
 
 #: aleksis/core/templates/socialaccount/login.html:12
 #, python-format
 msgid "You are about to connect a new third party account from %(provider)s."
-msgstr ""
+msgstr "Вы подключаете новую учётную запись третьей стороны от %(provider)s."
 
 #: aleksis/core/templates/socialaccount/login.html:23
 #, python-format
 msgid "You are about to sign in using a third party account from %(provider)s."
-msgstr ""
+msgstr "Вы авторизуетесь при помощи сторонней учётной записи от %(provider)s."
 
 #: aleksis/core/templates/socialaccount/login.html:28
 msgid "Continue"
-msgstr ""
+msgstr "Продолжить"
 
 #: aleksis/core/templates/socialaccount/login_cancelled.html:5
 #: aleksis/core/templates/socialaccount/login_cancelled.html:6
 #: aleksis/core/templates/socialaccount/login_cancelled.html:13
 msgid "Login cancelled"
-msgstr ""
+msgstr "Вход отменён"
 
 #: aleksis/core/templates/socialaccount/login_cancelled.html:15
 #, python-format
 msgid ""
 "\n"
-"            You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to <a href=\"%(login_url)s\">sign in</a>.\n"
+"            You decided to cancel logging in to our site using one of your "
+"existing accounts. If this was a mistake, please proceed to <a href="
+"\"%(login_url)s\">sign in</a>.\n"
 "          "
 msgstr ""
+"\n"
+"            Похоже, Вы отменили вход на наш сайт с одной из Ваших учётных "
+"записей. Если это произошло случайно, Вы можете <a href=\"%(login_url)s\""
+">продолжить вход здесь</a>.\n"
+"          "
 
 #: aleksis/core/templates/socialaccount/signup.html:12
 #, python-format
@@ -2566,6 +2850,9 @@ msgid ""
 "You are about to use your %(provider_name)s account to login to\n"
 "        %(site_name)s. As a final step, please complete the following form:"
 msgstr ""
+"Вы на пути к использованию своей учётной записи %(provider_name)s\n"
+"        для входа в %(site_name)s. Заполните, пожалуйста, для завершения эту "
+"форму:"
 
 #: aleksis/core/templates/socialaccount/snippets/provider_list.html:12
 #, python-format
@@ -2574,6 +2861,9 @@ msgid ""
 "                Login with %(name)s\n"
 "              "
 msgstr ""
+"\n"
+"                Вход с %(name)s\n"
+"              "
 
 #: aleksis/core/templates/socialaccount/snippets/provider_list.html:21
 #, python-format
@@ -2582,6 +2872,9 @@ msgid ""
 "            Login with %(name)s\n"
 "          "
 msgstr ""
+"\n"
+"            Вход с %(name)s\n"
+"          "
 
 #: aleksis/core/templates/socialaccount/snippets/provider_list.html:30
 msgid ""
@@ -2589,41 +2882,44 @@ msgid ""
 "          No third-party account providers available.\n"
 "        "
 msgstr ""
+"\n"
+"          Провайдеры сторонних учётных записей недоступны.\n"
+"        "
 
 #: aleksis/core/templates/templated_email/base.email:5
 #: aleksis/core/templates/templated_email/base.email:16
 msgid "Hello"
-msgstr ""
+msgstr "Привет"
 
 #: aleksis/core/templates/templated_email/celery_failure.email:4
 #, python-format
 msgid "Celery task %(task_name)s failed!"
-msgstr ""
+msgstr "Сбой в задании Celery с названием %(task_name)s!"
 
 #: aleksis/core/templates/templated_email/celery_failure.email:7
 #, python-format
 msgid "the celery task %(task_name)s failed with following information:"
-msgstr ""
+msgstr "в задании Celery %(task_name)s произошла ошибка:"
 
 #: aleksis/core/templates/templated_email/celery_failure.email:10
 #: aleksis/core/templates/templated_email/celery_failure.email:29
 msgid "Task ID"
-msgstr ""
+msgstr "ID задания"
 
 #: aleksis/core/templates/templated_email/celery_failure.email:11
 #: aleksis/core/templates/templated_email/celery_failure.email:30
 msgid "Raised exception"
-msgstr ""
+msgstr "Исключение"
 
 #: aleksis/core/templates/templated_email/celery_failure.email:12
 #: aleksis/core/templates/templated_email/celery_failure.email:31
 msgid "Positional arguments"
-msgstr ""
+msgstr "Аргументы"
 
 #: aleksis/core/templates/templated_email/celery_failure.email:15
 #: aleksis/core/templates/templated_email/celery_failure.email:38
 msgid "Keyword arguments"
-msgstr ""
+msgstr "Аргументы с ключевыми словами"
 
 #: aleksis/core/templates/templated_email/celery_failure.email:22
 #, python-format
@@ -2632,57 +2928,70 @@ msgid ""
 "      the celery task %(task_name)s failed with following information:\n"
 "    "
 msgstr ""
+"\n"
+"      в задании Celery %(task_name)s произошла ошибка:\n"
+"    "
 
 #: aleksis/core/templates/templated_email/data_checks.email:3
 msgid "The system detected some new problems with your data."
-msgstr ""
+msgstr "Система обнаружила новые проблемы с Вашими данными."
 
 #: aleksis/core/templates/templated_email/data_checks.email:6
 msgid ""
 "the system detected some new problems with your data.\n"
-"Please take some time to inspect them and solve the issues or mark them as ignored."
+"Please take some time to inspect them and solve the issues or mark them as "
+"ignored."
 msgstr ""
+"система обнаружила новые проблемы с Вашими данными.\n"
+"Уделите, пожалуйста, немного времени для их проверки и решения проблем, или "
+"же отметьте их для игнорирования."
 
 #: aleksis/core/templates/templated_email/data_checks.email:15
 msgid ""
 "\n"
 "   the system detected some new problems with your data.\n"
-"   Please take some time to inspect them and solve the issues or mark them as ignored.\n"
+"   Please take some time to inspect them and solve the issues or mark them "
+"as ignored.\n"
 "  "
 msgstr ""
+"\n"
+"   система обнаружила новые проблемы с Вашими данными.\n"
+"   Уделите, пожалуйста, немного времени для их проверки и решения проблем, "
+"или же отметьте их для игнорирования.\n"
+"  "
 
 #: aleksis/core/templates/templated_email/data_checks.email:23
 msgid "Problem description"
-msgstr ""
+msgstr "Описание проблемы"
 
 #: aleksis/core/templates/templated_email/data_checks.email:24
 msgid "Count of objects with new problems"
-msgstr ""
+msgstr "Количество объектов с новыми проблемами"
 
 #: aleksis/core/templates/templated_email/notification.email:4
 msgid "New notification for"
-msgstr ""
+msgstr "Новое уведомление для"
 
 #: aleksis/core/templates/templated_email/notification.email:6
 #: aleksis/core/templates/templated_email/notification.email:20
 #, python-format
 msgid "Hello %(notification_user)s,"
-msgstr ""
+msgstr "Привет, %(notification_user)s,"
 
 #: aleksis/core/templates/templated_email/notification.email:9
 #: aleksis/core/templates/templated_email/notification.email:23
 msgid "we got a new notification for you:"
-msgstr ""
+msgstr "у нас для Вас новое уведомление:"
 
 #: aleksis/core/templates/templated_email/notification.email:15
 #: aleksis/core/templates/templated_email/notification.email:29
 msgid "More information"
-msgstr ""
+msgstr "Подробнее"
 
 #: aleksis/core/templates/templated_email/notification.email:17
 #, python-format
 msgid "Sent by %(trans_sender)s at %(trans_created_at)s"
-msgstr ""
+msgstr "Отправлено %(trans_sender)s в %(trans_created_at)s"
 
 #: aleksis/core/templates/templated_email/notification.email:34
 #, python-format
@@ -2691,16 +3000,19 @@ msgid ""
 "            Sent by %(trans_sender)s at %(trans_created_at)s\n"
 "        "
 msgstr ""
+"\n"
+"            Отправлено %(trans_sender)s в %(trans_created_at)s\n"
+"        "
 
 #: aleksis/core/templates/templated_email/person_changed.email:4
 #, python-format
 msgid "%(person)s changed their data!"
-msgstr ""
+msgstr "%(person)s изменили свои данные!"
 
 #: aleksis/core/templates/templated_email/person_changed.email:7
 #, python-format
 msgid "the person %(person)s recently changed the following fields:"
-msgstr ""
+msgstr "физлицо %(person)s меняет такие поля:"
 
 #: aleksis/core/templates/templated_email/person_changed.email:15
 #, python-format
@@ -2709,30 +3021,46 @@ msgid ""
 "    the person %(person)s recently changed the following fields:\n"
 "  "
 msgstr ""
+"\n"
+"    физлицо %(person)s меняет такие поля:\n"
+"  "
 
 #: aleksis/core/templates/two_factor/_base_focus.html:6
 #: aleksis/core/templates/two_factor/core/otp_required.html:22
 #: aleksis/core/templates/two_factor/core/setup.html:5
 #: aleksis/core/templates/two_factor/profile/profile.html:88
 msgid "Enable Two-Factor Authentication"
-msgstr ""
+msgstr "Включить двух-факторную аутентификацию"
 
 #: aleksis/core/templates/two_factor/core/backup_tokens.html:5
 #: aleksis/core/templates/two_factor/core/backup_tokens.html:9
 #: aleksis/core/templates/two_factor/profile/profile.html:46
 msgid "Backup Tokens"
-msgstr ""
+msgstr "Резервные токены"
 
 #: aleksis/core/templates/two_factor/core/backup_tokens.html:14
 msgid ""
 "\n"
 "        Backup tokens can be used when your primary and backup\n"
 "        phone numbers aren't available. The backup tokens below can be used\n"
-"        for login verification. If you've used up all your backup tokens, you\n"
-"        can generate a new set of backup tokens. Only the backup tokens shown\n"
+"        for login verification. If you've used up all your backup tokens, "
+"you\n"
+"        can generate a new set of backup tokens. Only the backup tokens "
+"shown\n"
 "        below will be valid.\n"
 "      "
 msgstr ""
+"\n"
+"        Резервные токены могут быть использованы, когда Ваши основной и "
+"резервный\n"
+"        телефонные номера недоступны. Резервные токены, указанные ниже, "
+"могут быть\n"
+"        использованы для верификации входа. Когда Вы используете все "
+"резервные токены,\n"
+"        Вы сможете сгенерировать новый набор резервных токенов. "
+"Действительными будут только\n"
+"        токены, указанные ниже.\n"
+"      "
 
 #: aleksis/core/templates/two_factor/core/backup_tokens.html:33
 msgid ""
@@ -2740,57 +3068,76 @@ msgid ""
 "          Print these tokens and keep them somewhere safe.\n"
 "        "
 msgstr ""
+"\n"
+"          Распечатайте эти токены и сохраните их в надёжном месте.\n"
+"        "
 
 #: aleksis/core/templates/two_factor/core/backup_tokens.html:39
 msgid "You don't have any backup codes yet."
-msgstr ""
+msgstr "У Вас пока ещё нет резервных кодов."
 
 #: aleksis/core/templates/two_factor/core/backup_tokens.html:45
 msgid "Back to Account Security"
-msgstr ""
+msgstr "Назад к безопасности учётной записи"
 
 #: aleksis/core/templates/two_factor/core/backup_tokens.html:49
 msgid "Generate Tokens"
-msgstr ""
+msgstr "Создать Токены"
 
 #: aleksis/core/templates/two_factor/core/login.html:27
 #, python-format
 msgid "Login for %(name)s"
-msgstr ""
+msgstr "Войти для %(name)s"
 
 #: aleksis/core/templates/two_factor/core/login.html:30
 msgid "Login with username and password"
-msgstr ""
+msgstr "Войдите с использованием логина и пароля"
 
 #: aleksis/core/templates/two_factor/core/login.html:38
 msgid ""
 "You have no permission to view this page. Please login with an other\n"
 "                    account."
 msgstr ""
+"У Вас нет разрешения на просмотр этой страницы. Войдите, пожалуйста,\n"
+"                    с другой учётной записью."
 
 #: aleksis/core/templates/two_factor/core/login.html:47
 msgid "Please login with your account to use the external application."
 msgstr ""
+"Для использования внешнего приложения войдите, пожалуйста, в свою учётную "
+"запись."
 
 #: aleksis/core/templates/two_factor/core/login.html:54
 msgid "Please login to see this page."
-msgstr ""
+msgstr "Для просмотра этой страницы, пожалуйста, войдите."
 
 #: aleksis/core/templates/two_factor/core/login.html:65
 msgid ""
 "\n"
-"                        We are calling your phone right now, please enter the\n"
+"                        We are calling your phone right now, please enter "
+"the\n"
 "                        digits you hear.\n"
 "                      "
 msgstr ""
+"\n"
+"                        Мы сейчас позвоним на Ваш номер. Напишите, "
+"пожалуйста, цифры,\n"
+"                        которые Вы услышите.\n"
+"                      "
 
 #: aleksis/core/templates/two_factor/core/login.html:70
 msgid ""
 "\n"
-"                        We sent you a text message, please enter the tokens we\n"
+"                        We sent you a text message, please enter the tokens "
+"we\n"
 "                        sent.\n"
 "                      "
 msgstr ""
+"\n"
+"                        Мы отправили Вам текстовое сообщение. Напишите, "
+"пожалуйста, полученный\n"
+"                        токен.\n"
+"                      "
 
 #: aleksis/core/templates/two_factor/core/login.html:75
 msgid ""
@@ -2799,46 +3146,69 @@ msgid ""
 "                        generator.\n"
 "                      "
 msgstr ""
+"\n"
+"                        Напишите, пожалуйста, токен, с Вашего\n"
+"                        генератора токенов.\n"
+"                      "
 
 #: aleksis/core/templates/two_factor/core/login.html:81
 msgid ""
 "\n"
-"                      Use this form for entering backup tokens for logging in.\n"
-"                      These tokens have been generated for you to print and keep safe. Please\n"
-"                      enter one of these backup tokens to login to your account.\n"
+"                      Use this form for entering backup tokens for logging "
+"in.\n"
+"                      These tokens have been generated for you to print and "
+"keep safe. Please\n"
+"                      enter one of these backup tokens to login to your "
+"account.\n"
 "                    "
 msgstr ""
+"\n"
+"                      Для входа воспользуйтесь формой для ввода резервных "
+"токенов.\n"
+"                      Эти токены были сгенерированы, чтобы Вы распечатали их "
+"и сохранили в надёжном месте.\n"
+"                      Для входа укажите, пожалуйста, один из резервных "
+"токенов.\n"
+"                    "
 
 #: aleksis/core/templates/two_factor/core/login.html:109
 msgid "Device currently not available?"
-msgstr ""
+msgstr "Сейчас устройство недоступно?"
 
 #: aleksis/core/templates/two_factor/core/login.html:111
 msgid "Or, alternatively, use one of your backup phones:"
-msgstr ""
+msgstr "Или можете воспользоваться одним из резервных телефонов:"
 
 #: aleksis/core/templates/two_factor/core/login.html:122
 msgid "As a last resort, you can use a backup token:"
 msgstr ""
+"В качестве последней возможности можете воспользоваться резервным токеном:"
 
 #: aleksis/core/templates/two_factor/core/login.html:125
 msgid "Use Backup Token"
-msgstr ""
+msgstr "Воспользоваться резервным токеном"
 
 #: aleksis/core/templates/two_factor/core/login.html:136
 msgid "Use alternative login options"
-msgstr ""
+msgstr "Воспользоваться альтернативными возможностями для входа"
 
 #: aleksis/core/templates/two_factor/core/otp_required.html:9
 msgid "Permission Denied"
-msgstr ""
+msgstr "Доступ отсутствует"
 
 #: aleksis/core/templates/two_factor/core/otp_required.html:10
 msgid ""
 "The page you requested, enforces users to verify using\n"
-"          two-factor authentication for security reasons. You need to enable these\n"
+"          two-factor authentication for security reasons. You need to enable "
+"these\n"
 "          security features in order to access this page."
 msgstr ""
+"Для просмотра запрошенной страницы, с оглядкой на безопасность, необходима "
+"дополнительная\n"
+"          проверка пользователя с использованием двухфакторной "
+"аутентификации.\n"
+"          Для доступа к данной странице Вы должны включить эти функции "
+"безопасности."
 
 #: aleksis/core/templates/two_factor/core/otp_required.html:14
 msgid ""
@@ -2846,11 +3216,14 @@ msgid ""
 "          account. Enable two-factor authentication for enhanced account\n"
 "          security."
 msgstr ""
+"Двухфакторная аутентификация в Вашей учётной записи отключена\n"
+"          Для увеличения безопасности учётки включите двухфакторную\n"
+"          аутентификацию."
 
 #: aleksis/core/templates/two_factor/core/phone_register.html:5
 #: aleksis/core/templates/two_factor/core/phone_register.html:9
 msgid "Add Backup Phone"
-msgstr ""
+msgstr "Добавить резервный телефон"
 
 #: aleksis/core/templates/two_factor/core/phone_register.html:12
 msgid ""
@@ -2858,12 +3231,17 @@ msgid ""
 "      account. This number will be used if your primary method of\n"
 "      registration is not available."
 msgstr ""
+"Вы добавляете в свою учётную запись резервный номер телефона.\n"
+"      Он будет использован в случае невозможности регистрации с Вашим\n"
+"      основным номером."
 
 #: aleksis/core/templates/two_factor/core/phone_register.html:16
 msgid ""
 "We've sent a token to your phone number. Please\n"
 "      enter the token you've received."
 msgstr ""
+"Мы отправили токен на Ваш номер. Напишите,\n"
+"      пожалуйста, полученный токен."
 
 #: aleksis/core/templates/two_factor/core/setup.html:9
 msgid ""
@@ -2873,6 +3251,12 @@ msgid ""
 "        authentication.\n"
 "      "
 msgstr ""
+"\n"
+"        Вы устанавливаете для своей учётной записи новый уровень "
+"безопасности.\n"
+"        Для включения двухфакторной аутентификации пройдите несколько шагов\n"
+"        мастера настройки.\n"
+"      "
 
 #: aleksis/core/templates/two_factor/core/setup.html:17
 msgid ""
@@ -2880,15 +3264,27 @@ msgid ""
 "        Please select which authentication method you would like to use:\n"
 "      "
 msgstr ""
+"\n"
+"        Выберите, пожалуйста, метод аутентификации, который Вы хотите "
+"использовать:\n"
+"      "
 
 #: aleksis/core/templates/two_factor/core/setup.html:23
 msgid ""
 "\n"
 "        To start using a token generator, please use your\n"
-"        favourite two factor authentication (TOTP) app to scan the QR code below.\n"
+"        favourite two factor authentication (TOTP) app to scan the QR code "
+"below.\n"
 "        Then, enter the token generated by the app.\n"
 "      "
 msgstr ""
+"\n"
+"        Для того, чтобы начать использование генератора токенов, "
+"воспользуйтесь, пожалуйста, своим\n"
+"        любимым приложением для двухфакторной аутентификации (TOTP) и "
+"отсканируйте QR-код, который видите ниже.\n"
+"        После этого напишите полученный генератором токен.\n"
+"      "
 
 #: aleksis/core/templates/two_factor/core/setup.html:34
 msgid ""
@@ -2897,6 +3293,10 @@ msgid ""
 "        text messages on. This number will be validated in the next step.\n"
 "      "
 msgstr ""
+"\n"
+"        Напишите, пожалуйста, номер телефона, на который хотите\n"
+"        получать текстовые сообщения. На следующем этапе он будет проверен.\n"
+"      "
 
 #: aleksis/core/templates/two_factor/core/setup.html:41
 msgid ""
@@ -2905,13 +3305,22 @@ msgid ""
 "        This number will be validated in the next step.\n"
 "      "
 msgstr ""
+"\n"
+"        Напишите, пожалуйста, номер телефона, на который хотите\n"
+"        получать звонки. На следующем этапе он будет проверен.\n"
+"      "
 
 #: aleksis/core/templates/two_factor/core/setup.html:50
 msgid ""
 "\n"
-"            We are calling your phone right now, please enter the digits you hear.\n"
+"            We are calling your phone right now, please enter the digits you "
+"hear.\n"
 "          "
 msgstr ""
+"\n"
+"            Мы сейчас звоним на Ваш номер, – напишите, пожалуйста, цифры, "
+"которые услышите.\n"
+"          "
 
 #: aleksis/core/templates/two_factor/core/setup.html:56
 msgid ""
@@ -2919,16 +3328,32 @@ msgid ""
 "            We sent you a text message, please enter the tokens we sent.\n"
 "          "
 msgstr ""
+"\n"
+"            Мы отправили Вам текстовое сообщение. Напишите, пожалуйста, "
+"полученные токены.\n"
+"          "
 
 #: aleksis/core/templates/two_factor/core/setup.html:63
 msgid ""
 "\n"
-"          We've encountered an issue with the selected authentication method. Please\n"
-"          go back and verify that you entered your information correctly, try\n"
-"          again, or use a different authentication method instead. If the issue\n"
+"          We've encountered an issue with the selected authentication "
+"method. Please\n"
+"          go back and verify that you entered your information correctly, "
+"try\n"
+"          again, or use a different authentication method instead. If the "
+"issue\n"
 "          persists, contact the site administrator.\n"
 "        "
 msgstr ""
+"\n"
+"          Мы заметили, что существует проблема с использованием выбранного "
+"метода авторизации. Вернитесь,\n"
+"          пожалуйста, назад, и убедитесь, что необходимые данные указаны "
+"правильно,\n"
+"          после чего попробуйте зайти ешё раз, или же воспользуйтесь другим "
+"вариантом входа. Если же\n"
+"          проблема остаётся, обратитесь к администратору сайта.\n"
+"        "
 
 #: aleksis/core/templates/two_factor/core/setup.html:73
 msgid ""
@@ -2938,95 +3363,120 @@ msgid ""
 "        account.\n"
 "      "
 msgstr ""
+"\n"
+"        Для идентификации и проверки Вашего YubiKey напишите,\n"
+"        пожалуйста, ниже токен. Ваш YubiKey будет привязан к Вашей\n"
+"        учётной записи.\n"
+"      "
 
 #: aleksis/core/templates/two_factor/core/setup_complete.html:5
 #: aleksis/core/templates/two_factor/core/setup_complete.html:9
 msgid "Two-Factor Authentication successfully enabled"
-msgstr ""
+msgstr "Двухфакторная аутентификация успешно включена"
 
 #: aleksis/core/templates/two_factor/core/setup_complete.html:14
 msgid ""
 "\n"
-"        Congratulations, you've successfully enabled two-factor authentication.\n"
+"        Congratulations, you've successfully enabled two-factor "
+"authentication.\n"
 "      "
 msgstr ""
+"\n"
+"        Поздравляем с успешной настройкой двухфакторной аутентификации.\n"
+"      "
 
 #: aleksis/core/templates/two_factor/core/setup_complete.html:24
 #: aleksis/core/templates/two_factor/core/setup_complete.html:44
 msgid "Back to Profile"
-msgstr ""
+msgstr "Назад к Профилю"
 
 #: aleksis/core/templates/two_factor/core/setup_complete.html:28
 #: aleksis/core/templates/two_factor/core/setup_complete.html:48
 msgid "Generate backup codes"
-msgstr ""
+msgstr "Создать резервные коды"
 
 #: aleksis/core/templates/two_factor/core/setup_complete.html:34
 msgid ""
 "\n"
 "          However, it might happen that you don't have access to\n"
-"          your primary token device. To enable account recovery, generate backup codes\n"
+"          your primary token device. To enable account recovery, generate "
+"backup codes\n"
 "          or add a phone number.\n"
 "        "
 msgstr ""
+"\n"
+"          Между прочим, может так случиться, что у Вас не будет доступа к "
+"своему основному\n"
+"          устройству с токенами. Для включения восстановления учётки "
+"создайте резервные коды\n"
+"          или добавьте номер телефона.\n"
+"        "
 
 #: aleksis/core/templates/two_factor/core/setup_complete.html:52
 #: aleksis/core/templates/two_factor/profile/profile.html:41
 msgid "Add Phone Number"
-msgstr ""
+msgstr "Добавить номер телефона"
 
 #: aleksis/core/templates/two_factor/profile/disable.html:5
 #: aleksis/core/templates/two_factor/profile/disable.html:9
 #: aleksis/core/templates/two_factor/profile/profile.html:63
 #: aleksis/core/templates/two_factor/profile/profile.html:73
 msgid "Disable Two-Factor Authentication"
-msgstr ""
+msgstr "Отключить двухфакторную аутентификацию"
 
 #: aleksis/core/templates/two_factor/profile/disable.html:12
-msgid "You are about to disable two-factor authentication. This weakens your account security, are you sure?"
+msgid ""
+"You are about to disable two-factor authentication. This weakens your "
+"account security, are you sure?"
 msgstr ""
+"Вы отключаете двухфакторную аутентификацию. Это снизит защиту Вашей учётной "
+"записи. Вы уверены?"
 
 #: aleksis/core/templates/two_factor/profile/disable.html:26
 msgid "Disable"
-msgstr ""
+msgstr "Отключить"
 
 #: aleksis/core/templates/two_factor/profile/profile.html:5
 #: aleksis/core/templates/two_factor/profile/profile.html:10
 msgid "Account Security"
-msgstr ""
+msgstr "Безопасность учётной записи"
 
 #: aleksis/core/templates/two_factor/profile/profile.html:15
 msgid "Tokens will be generated by your token generator."
-msgstr ""
+msgstr "Токены будут созданы Вашим генератором токенов."
 
 #: aleksis/core/templates/two_factor/profile/profile.html:17
 #, python-format
 msgid "Primary method: %(primary)s"
-msgstr ""
+msgstr "Основной метод: %(primary)s"
 
 #: aleksis/core/templates/two_factor/profile/profile.html:19
 msgid "Tokens will be generated by your YubiKey."
-msgstr ""
+msgstr "Токены будут созданы Вашим YubiKey."
 
 #: aleksis/core/templates/two_factor/profile/profile.html:23
 msgid "Backup Phone Numbers"
-msgstr ""
+msgstr "Резервные номера телефонов"
 
 #: aleksis/core/templates/two_factor/profile/profile.html:24
 msgid ""
 "If your primary method is not available, we are able to\n"
 "        send backup tokens to the phone numbers listed below."
 msgstr ""
+"Если Ваш основной метод будет не доступен, мы сможем\n"
+"         отправить резервные токены на указанные ниже телефонные номера."
 
 #: aleksis/core/templates/two_factor/profile/profile.html:33
 msgid "Unregister"
-msgstr ""
+msgstr "Отменить регистрацию"
 
 #: aleksis/core/templates/two_factor/profile/profile.html:48
 msgid ""
 "If you don't have any device with you, you can access\n"
 "        your account using backup tokens."
 msgstr ""
+"Если у Вас с собой нет ни одного устройства, Вы можете\n"
+"        получить доступ с использованием резервных токенов."
 
 #: aleksis/core/templates/two_factor/profile/profile.html:50
 #, python-format
@@ -3039,11 +3489,25 @@ msgid_plural ""
 "        You have %(counter)s backup tokens remaining.\n"
 "      "
 msgstr[0] ""
+"\n"
+"        У Вас остался только один резервный токен.\n"
+"      "
 msgstr[1] ""
+"\n"
+"        У Вас осталось %(counter)s резервных токена.\n"
+"      "
+msgstr[2] ""
+"\n"
+"        У Вас осталось %(counter)s резервных токенов.\n"
+"      "
+msgstr[3] ""
+"\n"
+"        У Вас остался %(counter)s резервный токен.\n"
+"      "
 
 #: aleksis/core/templates/two_factor/profile/profile.html:59
 msgid "Show Codes"
-msgstr ""
+msgstr "Показать коды"
 
 #: aleksis/core/templates/two_factor/profile/profile.html:65
 msgid ""
@@ -3052,6 +3516,11 @@ msgid ""
 "        also disable two-factor authentication for your account.\n"
 "      "
 msgstr ""
+"\n"
+"        Не смотря на то, что мы Вам рекомендуем этого не делать, Вы можете \n"
+"        также отключить двухфакторную аутентификацию для своей учётной "
+"записи.\n"
+"      "
 
 #: aleksis/core/templates/two_factor/profile/profile.html:78
 msgid ""
@@ -3061,197 +3530,270 @@ msgid ""
 "        security.\n"
 "      "
 msgstr ""
+"\n"
+"        Двухфакторная аутентификация для Вашей учётной записи\n"
+"        не активирована. Для повышения безопасности учётной записи включите\n"
+"        двухфакторную аутентификацию.\n"
+"      "
 
 #: aleksis/core/util/notifications.py:64
 msgid "E-Mail"
-msgstr ""
+msgstr "Эл.почта"
 
 #: aleksis/core/util/notifications.py:65
 msgid "SMS"
-msgstr ""
+msgstr "СМС"
 
 #: aleksis/core/util/pdf.py:118
 msgid "Progress: Generate PDF file"
-msgstr ""
+msgstr "В процессе: Генерирование файла PDF"
 
 #: aleksis/core/util/pdf.py:119
 msgid "Generating PDF file …"
-msgstr ""
+msgstr "Создание файла PDF …"
 
 #: aleksis/core/util/pdf.py:120
 msgid "The PDF file has been generated successfully."
-msgstr ""
+msgstr "Файл PDF успешно создан."
 
 #: aleksis/core/util/pdf.py:121
 msgid "There was a problem while generating the PDF file."
-msgstr ""
+msgstr "Во время создания файла PDF возникла проблема."
 
 #: aleksis/core/util/pdf.py:124
 msgid "Download PDF"
-msgstr ""
+msgstr "Скачать PDF"
 
-#: aleksis/core/views.py:292
+#: aleksis/core/views.py:292 aleksis/core/views.py:294
 msgid "The school term has been created."
-msgstr ""
+msgstr "Учебный год создан."
 
-#: aleksis/core/views.py:304
+#: aleksis/core/views.py:304 aleksis/core/views.py:306
 msgid "The school term has been saved."
-msgstr ""
+msgstr "Учебный год сохранён."
 
-#: aleksis/core/views.py:424
+#: aleksis/core/views.py:424 aleksis/core/views.py:426
 msgid "The child groups were successfully saved."
-msgstr ""
+msgstr "Дочерние группы сохранены."
 
 #: aleksis/core/views.py:443 aleksis/core/views.py:453
+#: aleksis/core/views.py:445 aleksis/core/views.py:455
 msgid "The person has been saved."
-msgstr ""
+msgstr "Физлицо сохранено."
 
-#: aleksis/core/views.py:503
+#: aleksis/core/views.py:503 aleksis/core/views.py:505
 msgid "The group has been saved."
-msgstr ""
+msgstr "Группа сохранена."
 
-#: aleksis/core/views.py:600
+#: aleksis/core/views.py:600 aleksis/core/views.py:602
 msgid "The announcement has been saved."
-msgstr ""
+msgstr "Объявление сохранено."
 
-#: aleksis/core/views.py:616
+#: aleksis/core/views.py:616 aleksis/core/views.py:618
 msgid "The announcement has been deleted."
-msgstr ""
+msgstr "Объявление удалено."
 
-#: aleksis/core/views.py:684
+#: aleksis/core/views.py:684 aleksis/core/views.py:686
 msgid "The requested preference registry does not exist"
-msgstr ""
+msgstr "Журнал с запрошенными свойствами не существует"
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:703 aleksis/core/views.py:705
 msgid "The preferences have been saved successfully."
-msgstr ""
+msgstr "Свойства сохранены."
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:727 aleksis/core/views.py:729
 msgid "The person has been deleted."
-msgstr ""
+msgstr "Физлицо удалено."
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:741 aleksis/core/views.py:743
 msgid "The group has been deleted."
-msgstr ""
+msgstr "Группа удалена."
 
 #: aleksis/core/views.py:773
 msgid "The additional_field has been saved."
-msgstr ""
+msgstr "Дополнительное поле сохранено."
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:807 aleksis/core/views.py:809
 msgid "The additional field has been deleted."
-msgstr ""
+msgstr "Дополнительное поле удалено."
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:832 aleksis/core/views.py:834
 msgid "The group type has been saved."
-msgstr ""
+msgstr "Тип группы сохранён."
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:862 aleksis/core/views.py:864
 msgid "The group type has been deleted."
-msgstr ""
+msgstr "Тип группы удалён."
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:895 aleksis/core/views.py:897
 msgid "Progress: Run data checks"
-msgstr ""
+msgstr "В процессе: Запуск проверки данных"
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:896 aleksis/core/views.py:898
 msgid "Run data checks …"
-msgstr ""
+msgstr "Запускается проверка данных …"
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:897 aleksis/core/views.py:899
 msgid "The data checks were run successfully."
-msgstr ""
+msgstr "Проверка данных успешно запущена."
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:898 aleksis/core/views.py:900
 msgid "There was a problem while running data checks."
-msgstr ""
+msgstr "Во время запуска проверки данных возникла проблема."
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:914 aleksis/core/views.py:916
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
-msgstr ""
+msgstr "Вариант решения \"{solve_option_obj.verbose_name}\" "
 
-#: aleksis/core/views.py:924
+#: aleksis/core/views.py:924 aleksis/core/views.py:926
 msgid "The requested solve option does not exist"
-msgstr ""
+msgstr "Запрошенный вариант решения не существует"
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:956 aleksis/core/views.py:958
 msgid "The dashboard widget has been saved."
-msgstr ""
+msgstr "Виджет информпанели сохранён."
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:986 aleksis/core/views.py:988
 msgid "The dashboard widget has been created."
-msgstr ""
+msgstr "Виджет информпанели создан."
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:996 aleksis/core/views.py:998
 msgid "The dashboard widget has been deleted."
-msgstr ""
+msgstr "Виджет информпанели удалён."
 
-#: aleksis/core/views.py:1067
+#: aleksis/core/views.py:1067 aleksis/core/views.py:1069
 msgid "Your dashboard configuration has been saved successfully."
-msgstr ""
+msgstr "Ваша конфигурация информпанели сохранена."
 
-#: aleksis/core/views.py:1069
+#: aleksis/core/views.py:1069 aleksis/core/views.py:1071
 msgid "The configuration of the default dashboard has been saved successfully."
-msgstr ""
+msgstr "Конфигурация типовой/стандартной информпанели."
 
-#: aleksis/core/views.py:1145
+#: aleksis/core/views.py:1145 aleksis/core/views.py:1147
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
-msgstr ""
+msgstr "Приглашение успешно создано. Код приглашения: {code}"
 
-#: aleksis/core/views.py:1236
+#: aleksis/core/views.py:1236 aleksis/core/views.py:1238
 msgid "We have successfully assigned the permissions."
-msgstr ""
+msgstr "Мы успешно назначили доступы."
 
-#: aleksis/core/views.py:1246
+#: aleksis/core/views.py:1246 aleksis/core/views.py:1248
 msgid "The global user permission has been deleted."
-msgstr ""
+msgstr "Глобальный пользовательский доступ удалён."
 
-#: aleksis/core/views.py:1256
+#: aleksis/core/views.py:1256 aleksis/core/views.py:1258
 msgid "The global group permission has been deleted."
-msgstr ""
+msgstr "Глобальный групповой доступ удалён."
 
-#: aleksis/core/views.py:1266
+#: aleksis/core/views.py:1266 aleksis/core/views.py:1268
 msgid "The object user permission has been deleted."
-msgstr ""
+msgstr "Объектный пользовательский доступ удалён."
 
-#: aleksis/core/views.py:1276
+#: aleksis/core/views.py:1276 aleksis/core/views.py:1278
 msgid "The object group permission has been deleted."
-msgstr ""
+msgstr "Объектный групповой доступ удалён."
 
-#: aleksis/core/views.py:1344
+#: aleksis/core/views.py:1344 aleksis/core/views.py:1346
 msgid "The requested PDF file does not exist"
-msgstr ""
+msgstr "Запрошенный файл PDF не существует"
 
 #: aleksis/core/views.py:1353 aleksis/core/views.py:1357
+#: aleksis/core/views.py:1355 aleksis/core/views.py:1359
 msgid "The requested task does not exist or is not accessible"
-msgstr ""
+msgstr "Запрошенное задание не существует или недоступно"
 
-#: aleksis/core/views.py:1409
-msgid "The third-party account could not be disconnected because it is the only login method available."
+#: aleksis/core/views.py:1409 aleksis/core/views.py:1411
+msgid ""
+"The third-party account could not be disconnected because it is the only "
+"login method available."
 msgstr ""
+"Учётную запись третьей стороны нельзя отключить, т.к. это единственный "
+"способ входа."
 
-#: aleksis/core/views.py:1416
+#: aleksis/core/views.py:1416 aleksis/core/views.py:1418
 msgid "The third-party account has been successfully disconnected."
-msgstr ""
+msgstr "Учётная запись третьей стороны успешно отключена."
 
-#: aleksis/core/views.py:1487
-msgid "Person was invited successfully and an email with further instructions has been send to them."
+#: aleksis/core/views.py:1487 aleksis/core/views.py:1489
+msgid ""
+"Person was invited successfully and an email with further instructions has "
+"been send to them."
 msgstr ""
+"Владелец указанного эл.адреса успешно приглашён. Инструкции о дальнейших "
+"действиях отправлены на эл.почту."
 
-#: aleksis/core/views.py:1498
+#: aleksis/core/views.py:1498 aleksis/core/views.py:1500
 msgid "Person was already invited."
-msgstr ""
+msgstr "Кто-то уже пригласил его/её."
 
 #: aleksis/core/views.py:1598
 msgid "ICal feed updated successfully"
-msgstr ""
+msgstr "Лента iCal успешно обновлена"
 
 #: aleksis/core/views.py:1608
 msgid "ICal feed deleted successfully"
-msgstr ""
+msgstr "Лента iCal успешно удалена"
 
 #: aleksis/core/views.py:1616
 msgid "ICal feed created successfully"
+msgstr "Лента iCal успешно создана"
+
+#: aleksis/core/data_checks.py:330
+#, python-format
+msgid "Validate field %s of model %s."
+msgstr "Проверьте поле %s модели %s."
+
+#: aleksis/core/data_checks.py:332
+#, python-format
+msgid "The field %s couldn't be validated successfully."
+msgstr "Поле %s проверить не удалось."
+
+#: aleksis/core/models.py:181
+msgid "other"
+msgstr "другой"
+
+#: aleksis/core/settings.py:543
+msgid "Ukrainian"
+msgstr "Украинский"
+
+#: aleksis/core/templates/500.html:10
+msgid ""
+"An unexpected error has\n"
+"          occurred."
+msgstr ""
+"Возникла непредвиденная \n"
+"          ошибка."
+
+#: aleksis/core/templates/core/group/full.html:93
+#, python-format
+msgid ""
+"\n"
+"              %(min)s years to %(max)s years\n"
+"            "
 msgstr ""
+"\n"
+"              %(min)s лет до %(max)s лет\n"
+"            "
+
+#: aleksis/core/templates/core/ical/ical_list.html:4
+#: aleksis/core/templates/core/ical/ical_list.html:5
+msgid "iCal Feeds"
+msgstr "iCal-ленты"
+
+#: aleksis/core/views.py:775
+msgid "The additional field has been saved."
+msgstr "Дополнительное поле сохранено."
+
+#: aleksis/core/views.py:1600
+msgid "iCal feed updated successfully"
+msgstr "Лента iCal успешно обновлена"
+
+#: aleksis/core/views.py:1610
+msgid "iCal feed deleted successfully"
+msgstr "Лента iCal успешно удалена"
+
+#: aleksis/core/views.py:1618
+msgid "iCal feed created successfully"
+msgstr "Лента iCal успешно создана"
diff --git a/aleksis/core/locale/ru/LC_MESSAGES/djangojs.po b/aleksis/core/locale/ru/LC_MESSAGES/djangojs.po
index 02408f44d9e524a7eb8eeb53a378bb6da074e6d0..1fa3254633c1db138c12b13fcf7f674c2a4499b2 100644
--- a/aleksis/core/locale/ru/LC_MESSAGES/djangojs.po
+++ b/aleksis/core/locale/ru/LC_MESSAGES/djangojs.po
@@ -3,33 +3,33 @@
 # This file is distributed under the same license as the PACKAGE package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
-#, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
+"PO-Revision-Date: 2022-06-03 01:59+0000\n"
+"Last-Translator: Serhii Horichenko <m@sgg.im>\n"
+"Language-Team: Russian <https://translate.edugit.org/projects/aleksis/aleksis-core-js/ru/>\n"
+"Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
+"X-Generator: Weblate 4.12.1\n"
 
 #: aleksis/core/static/js/main.js:66
 msgid "Today"
-msgstr ""
+msgstr "Сегодня"
 
 #: aleksis/core/static/js/main.js:67
 msgid "Cancel"
-msgstr ""
+msgstr "Отменить"
 
 #: aleksis/core/static/js/main.js:68
 msgid "OK"
-msgstr ""
+msgstr "OK"
 
 #: aleksis/core/static/js/main.js:195
 msgid "This page may contain outdated information since there is no internet connection."
-msgstr ""
+msgstr "Из-за отсутствия интернета эта страница можеть отображать устаревшую информацию."
diff --git a/aleksis/core/locale/tr_TR/LC_MESSAGES/django.po b/aleksis/core/locale/tr_TR/LC_MESSAGES/django.po
index 09920d095f71a15fbf6707526c6f44ef76033eed..c6ea389cc19f7b8da9cd26512cca741c38b41311 100644
--- a/aleksis/core/locale/tr_TR/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/tr_TR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: AlekSIS (School Information System) 0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -38,33 +38,43 @@ msgid "Home and mobile phone"
 msgstr ""
 
 #: aleksis/core/apps.py:171 aleksis/core/forms.py:220 aleksis/core/menus.py:171
-#: aleksis/core/models.py:489 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/models.py:494 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:246
 msgid "Groups"
 msgstr ""
 
-#: aleksis/core/data_checks.py:56
+#: aleksis/core/data_checks.py:59
 msgid "Ignore problem"
 msgstr ""
 
-#: aleksis/core/data_checks.py:185
+#: aleksis/core/data_checks.py:188
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/data_checks.py:291
+#: aleksis/core/data_checks.py:294
 msgid "Deactivate DashboardWidget"
 msgstr ""
 
-#: aleksis/core/data_checks.py:303
+#: aleksis/core/data_checks.py:306
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr ""
 
-#: aleksis/core/data_checks.py:304
+#: aleksis/core/data_checks.py:307
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
+#: aleksis/core/data_checks.py:330
+#, python-format
+msgid "Validate field %s of model %s."
+msgstr ""
+
+#: aleksis/core/data_checks.py:332
+#, python-format
+msgid "The field %s couldn't be validated successfully."
+msgstr ""
+
 #: aleksis/core/feeds.py:52
 msgid "Birthday Calendar"
 msgstr ""
@@ -108,11 +118,11 @@ msgstr ""
 msgid "Content type"
 msgstr ""
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:715
+#: aleksis/core/filters.py:113 aleksis/core/models.py:720
 msgid "User"
 msgstr ""
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:488
+#: aleksis/core/filters.py:135 aleksis/core/models.py:493
 msgid "Group"
 msgstr ""
 
@@ -120,7 +130,7 @@ msgstr ""
 msgid "Base data"
 msgstr ""
 
-#: aleksis/core/forms.py:55
+#: aleksis/core/forms.py:55 aleksis/core/tables.py:47
 msgid "Address"
 msgstr ""
 
@@ -148,7 +158,7 @@ msgstr ""
 msgid "This username is already in use."
 msgstr ""
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:136
+#: aleksis/core/forms.py:153 aleksis/core/models.py:141
 msgid "School term"
 msgstr ""
 
@@ -157,7 +167,7 @@ msgid "Common data"
 msgstr ""
 
 #: aleksis/core/forms.py:155 aleksis/core/forms.py:207
-#: aleksis/core/menus.py:160 aleksis/core/models.py:159
+#: aleksis/core/menus.py:160 aleksis/core/models.py:164
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
@@ -167,18 +177,18 @@ msgstr ""
 msgid "Additional data"
 msgstr ""
 
-#: aleksis/core/forms.py:157 aleksis/core/models.py:212
-#: aleksis/core/models.py:541
+#: aleksis/core/forms.py:157 aleksis/core/models.py:217
+#: aleksis/core/models.py:546 aleksis/core/tables.py:46
 msgid "Photo"
 msgstr ""
 
 #: aleksis/core/forms.py:199 aleksis/core/forms.py:202
-#: aleksis/core/models.py:79
+#: aleksis/core/models.py:84
 msgid "Date"
 msgstr ""
 
 #: aleksis/core/forms.py:200 aleksis/core/forms.py:203
-#: aleksis/core/models.py:87
+#: aleksis/core/models.py:92
 msgid "Time"
 msgstr ""
 
@@ -214,11 +224,11 @@ msgstr ""
 msgid "Please enter your invitation code."
 msgstr ""
 
-#: aleksis/core/forms.py:418 aleksis/core/models.py:187
+#: aleksis/core/forms.py:418 aleksis/core/models.py:192
 msgid "First name"
 msgstr ""
 
-#: aleksis/core/forms.py:419 aleksis/core/models.py:188
+#: aleksis/core/forms.py:419 aleksis/core/models.py:193
 msgid "Last name"
 msgstr ""
 
@@ -321,13 +331,13 @@ msgstr ""
 msgid "Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:47 aleksis/core/models.py:867
+#: aleksis/core/menus.py:47 aleksis/core/models.py:872
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr ""
 
-#: aleksis/core/menus.py:58 aleksis/core/models.py:137
+#: aleksis/core/menus.py:58 aleksis/core/models.py:142
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
@@ -379,7 +389,7 @@ msgstr ""
 msgid "People"
 msgstr ""
 
-#: aleksis/core/menus.py:182 aleksis/core/models.py:1101
+#: aleksis/core/menus.py:182 aleksis/core/models.py:1111
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
@@ -389,7 +399,7 @@ msgstr ""
 msgid "Groups and child groups"
 msgstr ""
 
-#: aleksis/core/menus.py:204 aleksis/core/models.py:537
+#: aleksis/core/menus.py:204 aleksis/core/models.py:542
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 msgid "Additional fields"
@@ -456,581 +466,585 @@ msgstr ""
 msgid "Linked school term"
 msgstr ""
 
-#: aleksis/core/models.py:77
+#: aleksis/core/models.py:82
 msgid "Boolean (Yes/No)"
 msgstr ""
 
-#: aleksis/core/models.py:78
+#: aleksis/core/models.py:83
 msgid "Text (one line)"
 msgstr ""
 
-#: aleksis/core/models.py:80
+#: aleksis/core/models.py:85
 msgid "Date and time"
 msgstr ""
 
-#: aleksis/core/models.py:81
+#: aleksis/core/models.py:86
 msgid "Decimal number"
 msgstr ""
 
-#: aleksis/core/models.py:82 aleksis/core/models.py:205
+#: aleksis/core/models.py:87 aleksis/core/models.py:210
 msgid "E-mail address"
 msgstr ""
 
-#: aleksis/core/models.py:83
+#: aleksis/core/models.py:88
 msgid "Integer"
 msgstr ""
 
-#: aleksis/core/models.py:84
+#: aleksis/core/models.py:89
 msgid "IP address"
 msgstr ""
 
-#: aleksis/core/models.py:85
+#: aleksis/core/models.py:90
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr ""
 
-#: aleksis/core/models.py:86
+#: aleksis/core/models.py:91
 msgid "Text (multi-line)"
 msgstr ""
 
-#: aleksis/core/models.py:88
+#: aleksis/core/models.py:93
 msgid "URL / Link"
 msgstr ""
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:1070
-#: aleksis/core/models.py:1374
+#: aleksis/core/models.py:105 aleksis/core/models.py:1077
+#: aleksis/core/models.py:1384
 msgid "Name"
 msgstr ""
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:107
 msgid "Start date"
 msgstr ""
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:108
 msgid "End date"
 msgstr ""
 
-#: aleksis/core/models.py:122
+#: aleksis/core/models.py:127
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: aleksis/core/models.py:129
+#: aleksis/core/models.py:134
 msgid "There is already a school term for this time or a part of this time."
 msgstr ""
 
-#: aleksis/core/models.py:158 aleksis/core/models.py:1019
-#: aleksis/core/models.py:1371
+#: aleksis/core/models.py:163 aleksis/core/models.py:1024
+#: aleksis/core/models.py:1381
 msgid "Person"
 msgstr ""
 
-#: aleksis/core/models.py:161
+#: aleksis/core/models.py:166
 msgid "Can view address"
 msgstr ""
 
-#: aleksis/core/models.py:162
+#: aleksis/core/models.py:167
 msgid "Can view contact details"
 msgstr ""
 
-#: aleksis/core/models.py:163
+#: aleksis/core/models.py:168
 msgid "Can view photo"
 msgstr ""
 
-#: aleksis/core/models.py:164
+#: aleksis/core/models.py:169
 msgid "Can view avatar image"
 msgstr ""
 
-#: aleksis/core/models.py:165
+#: aleksis/core/models.py:170
 msgid "Can view persons groups"
 msgstr ""
 
-#: aleksis/core/models.py:166
+#: aleksis/core/models.py:171
 msgid "Can view personal details"
 msgstr ""
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "female"
 msgstr ""
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "male"
 msgstr ""
 
-#: aleksis/core/models.py:184 aleksis/core/models.py:1273
+#: aleksis/core/models.py:181
+msgid "other"
+msgstr ""
+
+#: aleksis/core/models.py:189 aleksis/core/models.py:1283
 msgid "Linked user"
 msgstr ""
 
-#: aleksis/core/models.py:190
+#: aleksis/core/models.py:195
 msgid "Additional name(s)"
 msgstr ""
 
-#: aleksis/core/models.py:194 aleksis/core/models.py:506
+#: aleksis/core/models.py:199 aleksis/core/models.py:511
 msgid "Short name"
 msgstr ""
 
-#: aleksis/core/models.py:197
+#: aleksis/core/models.py:202
 msgid "Street"
 msgstr ""
 
-#: aleksis/core/models.py:198
+#: aleksis/core/models.py:203
 msgid "Street number"
 msgstr ""
 
-#: aleksis/core/models.py:199
+#: aleksis/core/models.py:204
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/core/models.py:200
+#: aleksis/core/models.py:205
 msgid "Place"
 msgstr ""
 
-#: aleksis/core/models.py:202 aleksis/core/templates/core/person/full.html:160
+#: aleksis/core/models.py:207 aleksis/core/templates/core/person/full.html:160
 msgid "Home phone"
 msgstr ""
 
-#: aleksis/core/models.py:203 aleksis/core/templates/core/person/full.html:170
+#: aleksis/core/models.py:208 aleksis/core/templates/core/person/full.html:170
 msgid "Mobile phone"
 msgstr ""
 
-#: aleksis/core/models.py:207
+#: aleksis/core/models.py:212
 msgid "Date of birth"
 msgstr ""
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:213
 msgid "Place of birth"
 msgstr ""
 
-#: aleksis/core/models.py:209
+#: aleksis/core/models.py:214
 msgid "Sex"
 msgstr ""
 
-#: aleksis/core/models.py:216 aleksis/core/models.py:545
+#: aleksis/core/models.py:221 aleksis/core/models.py:550
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr ""
 
-#: aleksis/core/models.py:221 aleksis/core/models.py:549
+#: aleksis/core/models.py:226 aleksis/core/models.py:554
 msgid "Display picture / Avatar"
 msgstr ""
 
-#: aleksis/core/models.py:224 aleksis/core/models.py:552
+#: aleksis/core/models.py:229 aleksis/core/models.py:557
 msgid "This is a picture or an avatar for public display."
 msgstr ""
 
-#: aleksis/core/models.py:229 aleksis/core/templates/core/person/full.html:235
+#: aleksis/core/models.py:234 aleksis/core/templates/core/person/full.html:235
 msgid "Guardians / Parents"
 msgstr ""
 
-#: aleksis/core/models.py:236
+#: aleksis/core/models.py:241
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:719
-#: aleksis/core/models.py:743 aleksis/core/models.py:834
-#: aleksis/core/models.py:1094
+#: aleksis/core/models.py:244 aleksis/core/models.py:724
+#: aleksis/core/models.py:748 aleksis/core/models.py:839
+#: aleksis/core/models.py:1104
 msgid "Description"
 msgstr ""
 
-#: aleksis/core/models.py:459
+#: aleksis/core/models.py:464
 msgid "Title of field"
 msgstr ""
 
-#: aleksis/core/models.py:461
+#: aleksis/core/models.py:466
 msgid "Type of field"
 msgstr ""
 
-#: aleksis/core/models.py:463
+#: aleksis/core/models.py:468
 msgid "Required"
 msgstr ""
 
-#: aleksis/core/models.py:464
+#: aleksis/core/models.py:469
 msgid "Help text / description"
 msgstr ""
 
-#: aleksis/core/models.py:470
+#: aleksis/core/models.py:475
 msgid "Addtitional field for groups"
 msgstr ""
 
-#: aleksis/core/models.py:471
+#: aleksis/core/models.py:476
 msgid "Addtitional fields for groups"
 msgstr ""
 
-#: aleksis/core/models.py:491
+#: aleksis/core/models.py:496
 msgid "Can assign child groups to groups"
 msgstr ""
 
-#: aleksis/core/models.py:492
+#: aleksis/core/models.py:497
 msgid "Can view statistics about group."
 msgstr ""
 
-#: aleksis/core/models.py:504
+#: aleksis/core/models.py:509
 msgid "Long name"
 msgstr ""
 
-#: aleksis/core/models.py:514 aleksis/core/templates/core/group/full.html:85
+#: aleksis/core/models.py:519 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr ""
 
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/full.html:82
+#: aleksis/core/models.py:522 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr ""
 
-#: aleksis/core/models.py:524 aleksis/core/templates/core/group/full.html:55
+#: aleksis/core/models.py:529 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr ""
 
-#: aleksis/core/models.py:532
+#: aleksis/core/models.py:537
 msgid "Type of group"
 msgstr ""
 
-#: aleksis/core/models.py:718 aleksis/core/models.py:742
-#: aleksis/core/models.py:833
+#: aleksis/core/models.py:723 aleksis/core/models.py:747
+#: aleksis/core/models.py:838
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr ""
 
-#: aleksis/core/models.py:721
+#: aleksis/core/models.py:726
 msgid "Application"
 msgstr ""
 
-#: aleksis/core/models.py:727
+#: aleksis/core/models.py:732
 msgid "Activity"
 msgstr ""
 
-#: aleksis/core/models.py:728
+#: aleksis/core/models.py:733
 msgid "Activities"
 msgstr ""
 
-#: aleksis/core/models.py:734
+#: aleksis/core/models.py:739
 msgid "Sender"
 msgstr ""
 
-#: aleksis/core/models.py:739
+#: aleksis/core/models.py:744
 msgid "Recipient"
 msgstr ""
 
-#: aleksis/core/models.py:744 aleksis/core/models.py:1071
+#: aleksis/core/models.py:749 aleksis/core/models.py:1078
 msgid "Link"
 msgstr ""
 
-#: aleksis/core/models.py:746
+#: aleksis/core/models.py:751
 msgid "Send notification at"
 msgstr ""
 
-#: aleksis/core/models.py:748
+#: aleksis/core/models.py:753
 msgid "Read"
 msgstr ""
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:754
 msgid "Sent"
 msgstr ""
 
-#: aleksis/core/models.py:766
+#: aleksis/core/models.py:771
 msgid "Notification"
 msgstr ""
 
-#: aleksis/core/models.py:767 aleksis/core/preferences.py:29
+#: aleksis/core/models.py:772 aleksis/core/preferences.py:29
 #: aleksis/core/templates/core/base.html:81
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr ""
 
-#: aleksis/core/models.py:835
+#: aleksis/core/models.py:840
 msgid "Link to detailed view"
 msgstr ""
 
-#: aleksis/core/models.py:838
+#: aleksis/core/models.py:843
 msgid "Date and time from when to show"
 msgstr ""
 
-#: aleksis/core/models.py:841
+#: aleksis/core/models.py:846
 msgid "Date and time until when to show"
 msgstr ""
 
-#: aleksis/core/models.py:866
+#: aleksis/core/models.py:871
 msgid "Announcement"
 msgstr ""
 
-#: aleksis/core/models.py:904
+#: aleksis/core/models.py:909
 msgid "Announcement recipient"
 msgstr ""
 
-#: aleksis/core/models.py:905
+#: aleksis/core/models.py:910
 msgid "Announcement recipients"
 msgstr ""
 
-#: aleksis/core/models.py:927
+#: aleksis/core/models.py:932
 msgid "Widget Title"
 msgstr ""
 
-#: aleksis/core/models.py:928
+#: aleksis/core/models.py:933
 msgid "Activate Widget"
 msgstr ""
 
-#: aleksis/core/models.py:929
+#: aleksis/core/models.py:934
 msgid "Widget is broken"
 msgstr ""
 
-#: aleksis/core/models.py:932
+#: aleksis/core/models.py:937
 msgid "Size on mobile devices"
 msgstr ""
 
-#: aleksis/core/models.py:933
+#: aleksis/core/models.py:938
 msgid "<= 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:938
+#: aleksis/core/models.py:943
 msgid "Size on tablet devices"
 msgstr ""
 
-#: aleksis/core/models.py:939
+#: aleksis/core/models.py:944
 msgid "> 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:944
+#: aleksis/core/models.py:949
 msgid "Size on desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:945
+#: aleksis/core/models.py:950
 msgid "> 992 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:950
+#: aleksis/core/models.py:955
 msgid "Size on large desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:951
+#: aleksis/core/models.py:956
 msgid "> 1200 px>, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:982
+#: aleksis/core/models.py:987
 msgid "Can edit default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:983
+#: aleksis/core/models.py:988
 msgid "Dashboard Widget"
 msgstr ""
 
-#: aleksis/core/models.py:984
+#: aleksis/core/models.py:989
 msgid "Dashboard Widgets"
 msgstr ""
 
-#: aleksis/core/models.py:990
+#: aleksis/core/models.py:995
 msgid "URL"
 msgstr ""
 
-#: aleksis/core/models.py:991
+#: aleksis/core/models.py:996
 msgid "Icon URL"
 msgstr ""
 
-#: aleksis/core/models.py:997
+#: aleksis/core/models.py:1002
 msgid "External link widget"
 msgstr ""
 
-#: aleksis/core/models.py:998
+#: aleksis/core/models.py:1003
 msgid "External link widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1004
+#: aleksis/core/models.py:1009
 msgid "Content"
 msgstr ""
 
-#: aleksis/core/models.py:1010
+#: aleksis/core/models.py:1015
 msgid "Static content widget"
 msgstr ""
 
-#: aleksis/core/models.py:1011
+#: aleksis/core/models.py:1016
 msgid "Static content widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1016
+#: aleksis/core/models.py:1021
 msgid "Dashboard widget"
 msgstr ""
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:1026
 msgid "Order"
 msgstr ""
 
-#: aleksis/core/models.py:1022
+#: aleksis/core/models.py:1027
 msgid "Part of the default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1037
+#: aleksis/core/models.py:1042
 msgid "Dashboard widget order"
 msgstr ""
 
-#: aleksis/core/models.py:1038
+#: aleksis/core/models.py:1043
 msgid "Dashboard widget orders"
 msgstr ""
 
-#: aleksis/core/models.py:1044
+#: aleksis/core/models.py:1049
 msgid "Menu ID"
 msgstr ""
 
-#: aleksis/core/models.py:1057
+#: aleksis/core/models.py:1062
 msgid "Custom menu"
 msgstr ""
 
-#: aleksis/core/models.py:1058
+#: aleksis/core/models.py:1063
 msgid "Custom menus"
 msgstr ""
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:1075
 msgid "Menu"
 msgstr ""
 
-#: aleksis/core/models.py:1072 aleksis/core/models.py:1320
+#: aleksis/core/models.py:1079 aleksis/core/models.py:1330
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr ""
 
-#: aleksis/core/models.py:1078
+#: aleksis/core/models.py:1085
 msgid "Custom menu item"
 msgstr ""
 
-#: aleksis/core/models.py:1079
+#: aleksis/core/models.py:1086
 msgid "Custom menu items"
 msgstr ""
 
-#: aleksis/core/models.py:1093
+#: aleksis/core/models.py:1103
 msgid "Title of type"
 msgstr ""
 
-#: aleksis/core/models.py:1100 aleksis/core/templates/core/group/full.html:47
+#: aleksis/core/models.py:1110 aleksis/core/templates/core/group/full.html:50
 msgid "Group type"
 msgstr ""
 
-#: aleksis/core/models.py:1114
+#: aleksis/core/models.py:1124
 msgid "Can view system status"
 msgstr ""
 
-#: aleksis/core/models.py:1115
+#: aleksis/core/models.py:1125
 msgid "Can manage data"
 msgstr ""
 
-#: aleksis/core/models.py:1116
+#: aleksis/core/models.py:1126
 msgid "Can impersonate"
 msgstr ""
 
-#: aleksis/core/models.py:1117
+#: aleksis/core/models.py:1127
 msgid "Can use search"
 msgstr ""
 
-#: aleksis/core/models.py:1118
+#: aleksis/core/models.py:1128
 msgid "Can change site preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1119
+#: aleksis/core/models.py:1129
 msgid "Can change person preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1120
+#: aleksis/core/models.py:1130
 msgid "Can change group preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1121
+#: aleksis/core/models.py:1131
 msgid "Can test PDF generation"
 msgstr ""
 
-#: aleksis/core/models.py:1122
+#: aleksis/core/models.py:1132
 msgid "Can invite persons"
 msgstr ""
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1168
 msgid "Related data check task"
 msgstr ""
 
-#: aleksis/core/models.py:1166
+#: aleksis/core/models.py:1176
 msgid "Issue solved"
 msgstr ""
 
-#: aleksis/core/models.py:1167
+#: aleksis/core/models.py:1177
 msgid "Notification sent"
 msgstr ""
 
-#: aleksis/core/models.py:1180
+#: aleksis/core/models.py:1190
 msgid "Data check result"
 msgstr ""
 
-#: aleksis/core/models.py:1181
+#: aleksis/core/models.py:1191
 msgid "Data check results"
 msgstr ""
 
-#: aleksis/core/models.py:1183
+#: aleksis/core/models.py:1193
 msgid "Can run data checks"
 msgstr ""
 
-#: aleksis/core/models.py:1184
+#: aleksis/core/models.py:1194
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1191
+#: aleksis/core/models.py:1201
 msgid "E-Mail address"
 msgstr ""
 
-#: aleksis/core/models.py:1223
+#: aleksis/core/models.py:1233
 msgid "Owner"
 msgstr ""
 
-#: aleksis/core/models.py:1227
+#: aleksis/core/models.py:1237
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1229
+#: aleksis/core/models.py:1239
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1231
+#: aleksis/core/models.py:1241
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1238
+#: aleksis/core/models.py:1248
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1239
+#: aleksis/core/models.py:1249
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1244
+#: aleksis/core/models.py:1254
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1247
+#: aleksis/core/models.py:1257
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1259
+#: aleksis/core/models.py:1269
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1260
+#: aleksis/core/models.py:1270
 msgid "Task user assignments"
 msgstr ""
 
-#: aleksis/core/models.py:1276
+#: aleksis/core/models.py:1286
 msgid "Additional attributes"
 msgstr ""
 
-#: aleksis/core/models.py:1314
+#: aleksis/core/models.py:1324
 msgid "Allowed scopes that clients can request"
 msgstr ""
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1334
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr ""
 
-#: aleksis/core/models.py:1373
+#: aleksis/core/models.py:1383
 msgid "UUID"
 msgstr ""
 
-#: aleksis/core/models.py:1377
+#: aleksis/core/models.py:1387
 msgid "Selected ICal feed"
 msgstr ""
 
-#: aleksis/core/models.py:1386
+#: aleksis/core/models.py:1396
 msgid "Personal Calendar URL"
 msgstr ""
 
-#: aleksis/core/models.py:1387
+#: aleksis/core/models.py:1397
 msgid "Personal Calendar URLs"
 msgstr ""
 
@@ -1178,94 +1192,94 @@ msgstr ""
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr ""
 
-#: aleksis/core/preferences.py:344
-msgid "Available languages"
-msgstr ""
-
-#: aleksis/core/preferences.py:357
+#: aleksis/core/preferences.py:343
 msgid "Send emails if data checks detect problems"
 msgstr ""
 
-#: aleksis/core/preferences.py:368
+#: aleksis/core/preferences.py:354
 msgid "Email recipients for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:379
+#: aleksis/core/preferences.py:365
 msgid "Email recipient groups for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:388
+#: aleksis/core/preferences.py:374
 msgid "Show dashboard to users without login"
 msgstr ""
 
-#: aleksis/core/preferences.py:397
+#: aleksis/core/preferences.py:383
 msgid "Allow users to edit their dashboard"
 msgstr ""
 
-#: aleksis/core/preferences.py:408
+#: aleksis/core/preferences.py:394
 msgid "Fields on person model which are editable by themselves."
 msgstr ""
 
-#: aleksis/core/preferences.py:423
+#: aleksis/core/preferences.py:409
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr ""
 
-#: aleksis/core/preferences.py:437
+#: aleksis/core/preferences.py:423
 msgid "Contact for notification if a person changes their data"
 msgstr ""
 
-#: aleksis/core/preferences.py:448
+#: aleksis/core/preferences.py:434
 msgid "Prefer personal photos over avatars"
 msgstr ""
 
-#: aleksis/core/preferences.py:458
+#: aleksis/core/preferences.py:444
 msgid "PDF file expiration duration"
 msgstr ""
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:445
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/preferences.py:469
+#: aleksis/core/preferences.py:455
 msgid "Automatically update the dashboard and its widgets"
 msgstr ""
 
-#: aleksis/core/preferences.py:479
+#: aleksis/core/preferences.py:465
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr ""
 
-#: aleksis/core/preferences.py:489
+#: aleksis/core/preferences.py:475
 msgid "Country for phone number parsing"
 msgstr ""
 
-#: aleksis/core/settings.py:540
+#: aleksis/core/settings.py:541
 msgid "English"
 msgstr ""
 
-#: aleksis/core/settings.py:541
+#: aleksis/core/settings.py:542
 msgid "German"
 msgstr ""
 
-#: aleksis/core/tables.py:24
+#: aleksis/core/settings.py:543
+msgid "Ukrainian"
+msgstr ""
+
+#: aleksis/core/tables.py:25
 #: aleksis/core/templates/core/announcement/list.html:36
-#: aleksis/core/templates/core/group/full.html:24
+#: aleksis/core/templates/core/group/full.html:26
 #: aleksis/core/templates/core/person/full.html:26
 #: aleksis/core/templates/core/person/full.html:86
 #: aleksis/core/templates/oauth2_provider/application/detail.html:17
 msgid "Edit"
 msgstr ""
 
-#: aleksis/core/tables.py:26 aleksis/core/tables.py:94
-#: aleksis/core/tables.py:138
+#: aleksis/core/tables.py:27 aleksis/core/tables.py:148
+#: aleksis/core/tables.py:192
 #: aleksis/core/templates/core/announcement/list.html:22
 msgid "Actions"
 msgstr ""
 
-#: aleksis/core/tables.py:61 aleksis/core/tables.py:62
-#: aleksis/core/tables.py:76 aleksis/core/tables.py:92
-#: aleksis/core/tables.py:136
+#: aleksis/core/tables.py:115 aleksis/core/tables.py:116
+#: aleksis/core/tables.py:130 aleksis/core/tables.py:146
+#: aleksis/core/tables.py:190
 #: aleksis/core/templates/core/announcement/list.html:42
-#: aleksis/core/templates/core/group/full.html:31
+#: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
 #: aleksis/core/templates/core/person/full.html:33
 #: aleksis/core/templates/core/person/full.html:93
@@ -1304,7 +1318,7 @@ msgstr ""
 #: aleksis/core/templates/500.html:10
 msgid ""
 "An unexpected error has\n"
-"          occured."
+"          occurred."
 msgstr ""
 
 #: aleksis/core/templates/500.html:13
@@ -1804,34 +1818,34 @@ msgstr ""
 msgid "Edit group"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:38
+#: aleksis/core/templates/core/group/full.html:40
 #: aleksis/core/templates/core/person/full.html:40
 #: aleksis/core/templates/core/person/full.html:100
 msgid "Change preferences"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:64
+#: aleksis/core/templates/core/group/full.html:68
 msgid "Statistics"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:67
+#: aleksis/core/templates/core/group/full.html:73
 msgid "Count of members"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:71
+#: aleksis/core/templates/core/group/full.html:81
 msgid "Average age"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
+#: aleksis/core/templates/core/group/full.html:90
 msgid "Age range"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years to"
-msgstr ""
-
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years "
+#: aleksis/core/templates/core/group/full.html:93
+#, python-format
+msgid ""
+"\n"
+"              %(min)s years to %(max)s years\n"
+"            "
 msgstr ""
 
 #: aleksis/core/templates/core/group/list.html:14
@@ -1883,7 +1897,7 @@ msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:4
 #: aleksis/core/templates/core/ical/ical_list.html:5
-msgid "ICal Feeds"
+msgid "iCal Feeds"
 msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:8
@@ -2167,11 +2181,11 @@ msgstr ""
 msgid "Unknown"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:15
+#: aleksis/core/templates/core/partials/language_form.html:17
 msgid "Language"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:27
+#: aleksis/core/templates/core/partials/language_form.html:29
 msgid "Select language"
 msgstr ""
 
@@ -3089,168 +3103,168 @@ msgstr ""
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:292
+#: aleksis/core/views.py:294
 msgid "The school term has been created."
 msgstr ""
 
-#: aleksis/core/views.py:304
+#: aleksis/core/views.py:306
 msgid "The school term has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:424
+#: aleksis/core/views.py:426
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:443 aleksis/core/views.py:453
+#: aleksis/core/views.py:445 aleksis/core/views.py:455
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:503
+#: aleksis/core/views.py:505
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:600
+#: aleksis/core/views.py:602
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:616
+#: aleksis/core/views.py:618
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:684
+#: aleksis/core/views.py:686
 msgid "The requested preference registry does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:705
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:729
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:743
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:773
-msgid "The additional_field has been saved."
+#: aleksis/core/views.py:775
+msgid "The additional field has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:809
 msgid "The additional field has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:834
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:864
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:897
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:898
 msgid "Run data checks …"
 msgstr ""
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:899
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:900
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:916
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:924
+#: aleksis/core/views.py:926
 msgid "The requested solve option does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:958
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:988
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:998
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1067
+#: aleksis/core/views.py:1069
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1069
+#: aleksis/core/views.py:1071
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1145
+#: aleksis/core/views.py:1147
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr ""
 
-#: aleksis/core/views.py:1236
+#: aleksis/core/views.py:1238
 msgid "We have successfully assigned the permissions."
 msgstr ""
 
-#: aleksis/core/views.py:1246
+#: aleksis/core/views.py:1248
 msgid "The global user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1256
+#: aleksis/core/views.py:1258
 msgid "The global group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1266
+#: aleksis/core/views.py:1268
 msgid "The object user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1276
+#: aleksis/core/views.py:1278
 msgid "The object group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1344
+#: aleksis/core/views.py:1346
 msgid "The requested PDF file does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:1353 aleksis/core/views.py:1357
+#: aleksis/core/views.py:1355 aleksis/core/views.py:1359
 msgid "The requested task does not exist or is not accessible"
 msgstr ""
 
-#: aleksis/core/views.py:1409
+#: aleksis/core/views.py:1411
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1416
+#: aleksis/core/views.py:1418
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
-#: aleksis/core/views.py:1487
+#: aleksis/core/views.py:1489
 msgid "Person was invited successfully and an email with further instructions has been send to them."
 msgstr ""
 
-#: aleksis/core/views.py:1498
+#: aleksis/core/views.py:1500
 msgid "Person was already invited."
 msgstr ""
 
-#: aleksis/core/views.py:1598
-msgid "ICal feed updated successfully"
+#: aleksis/core/views.py:1600
+msgid "iCal feed updated successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1608
-msgid "ICal feed deleted successfully"
+#: aleksis/core/views.py:1610
+msgid "iCal feed deleted successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1616
-msgid "ICal feed created successfully"
+#: aleksis/core/views.py:1618
+msgid "iCal feed created successfully"
 msgstr ""
diff --git a/aleksis/core/locale/tr_TR/LC_MESSAGES/djangojs.po b/aleksis/core/locale/tr_TR/LC_MESSAGES/djangojs.po
index 509b8a65f4bdbc6ac9c1ec0282c1ff99b6f1f8c1..26f9dbd80e1c93710efaf2abf60ffd0754e043b6 100644
--- a/aleksis/core/locale/tr_TR/LC_MESSAGES/djangojs.po
+++ b/aleksis/core/locale/tr_TR/LC_MESSAGES/djangojs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/aleksis/core/locale/uk/LC_MESSAGES/django.po b/aleksis/core/locale/uk/LC_MESSAGES/django.po
index 2334b98a3d6953ce835a80369615359e8ac25d5e..58a52db0bbb5a0611820645658142a54de9b6e89 100644
--- a/aleksis/core/locale/uk/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/uk/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2022-05-24 19:37+0200\n"
-"PO-Revision-Date: 2022-06-01 17:35+0000\n"
+"PO-Revision-Date: 2022-07-03 06:14+0000\n"
 "Last-Translator: Serhii Horichenko <m@sgg.im>\n"
 "Language-Team: Ukrainian <https://translate.edugit.org/projects/aleksis/"
 "aleksis-core/uk/>\n"
@@ -40,33 +40,33 @@ msgstr "Ел.адреса"
 
 #: aleksis/core/apps.py:170
 msgid "Home and mobile phone"
-msgstr "Домашній та мобільний телефон"
+msgstr "Домашній та мобільний телефони"
 
 #: aleksis/core/apps.py:171 aleksis/core/forms.py:220 aleksis/core/menus.py:171
 #: aleksis/core/models.py:489 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
-#: aleksis/core/templates/core/person/full.html:246
+#: aleksis/core/templates/core/person/full.html:246 aleksis/core/models.py:494
 msgid "Groups"
 msgstr "Групи"
 
-#: aleksis/core/data_checks.py:56
+#: aleksis/core/data_checks.py:56 aleksis/core/data_checks.py:59
 msgid "Ignore problem"
 msgstr "Ігнорувати проблему"
 
-#: aleksis/core/data_checks.py:185
+#: aleksis/core/data_checks.py:185 aleksis/core/data_checks.py:188
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr "Варіант розв'язання '{solve_option_obj.verbose_name}' "
 
-#: aleksis/core/data_checks.py:291
+#: aleksis/core/data_checks.py:291 aleksis/core/data_checks.py:294
 msgid "Deactivate DashboardWidget"
 msgstr "Вимкнути віджет інформпанелі"
 
-#: aleksis/core/data_checks.py:303
+#: aleksis/core/data_checks.py:303 aleksis/core/data_checks.py:306
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr "Переконайтеся у відсутності збійних віджетів на інформпанелі."
 
-#: aleksis/core/data_checks.py:304
+#: aleksis/core/data_checks.py:304 aleksis/core/data_checks.py:307
 msgid "The DashboardWidget was reported broken automatically."
 msgstr "Віджет інформпанелі повідомив про збій в автоматичному режимі."
 
@@ -114,10 +114,12 @@ msgid "Content type"
 msgstr "Тип змісту"
 
 #: aleksis/core/filters.py:113 aleksis/core/models.py:715
+#: aleksis/core/models.py:720
 msgid "User"
 msgstr "Користувач"
 
 #: aleksis/core/filters.py:135 aleksis/core/models.py:488
+#: aleksis/core/models.py:493
 msgid "Group"
 msgstr "Група"
 
@@ -125,7 +127,7 @@ msgstr "Група"
 msgid "Base data"
 msgstr "Основні дані"
 
-#: aleksis/core/forms.py:55
+#: aleksis/core/forms.py:55 aleksis/core/tables.py:47
 msgid "Address"
 msgstr "Адреса"
 
@@ -154,6 +156,7 @@ msgid "This username is already in use."
 msgstr "Такий логін вже зайнятий."
 
 #: aleksis/core/forms.py:153 aleksis/core/models.py:136
+#: aleksis/core/models.py:141
 msgid "School term"
 msgstr "Навчальний рік"
 
@@ -164,7 +167,7 @@ msgstr "Загальні дані"
 #: aleksis/core/forms.py:155 aleksis/core/forms.py:207
 #: aleksis/core/menus.py:160 aleksis/core/models.py:159
 #: aleksis/core/templates/core/person/list.html:8
-#: aleksis/core/templates/core/person/list.html:9
+#: aleksis/core/templates/core/person/list.html:9 aleksis/core/models.py:164
 msgid "Persons"
 msgstr "Особи"
 
@@ -173,17 +176,18 @@ msgid "Additional data"
 msgstr "Додаткові дані"
 
 #: aleksis/core/forms.py:157 aleksis/core/models.py:212
-#: aleksis/core/models.py:541
+#: aleksis/core/models.py:541 aleksis/core/models.py:217
+#: aleksis/core/models.py:546 aleksis/core/tables.py:46
 msgid "Photo"
 msgstr "Фото"
 
 #: aleksis/core/forms.py:199 aleksis/core/forms.py:202
-#: aleksis/core/models.py:79
+#: aleksis/core/models.py:79 aleksis/core/models.py:84
 msgid "Date"
 msgstr "Дата"
 
 #: aleksis/core/forms.py:200 aleksis/core/forms.py:203
-#: aleksis/core/models.py:87
+#: aleksis/core/models.py:87 aleksis/core/models.py:92
 msgid "Time"
 msgstr "Час"
 
@@ -200,7 +204,8 @@ msgid "Write your announcement:"
 msgstr "Складіть своє оголошеня:"
 
 #: aleksis/core/forms.py:276
-msgid "You are not allowed to create announcements which are only valid in the past."
+msgid ""
+"You are not allowed to create announcements which are only valid in the past."
 msgstr "Оголошення для минулого Вам створювати не дозволено."
 
 #: aleksis/core/forms.py:280
@@ -220,16 +225,18 @@ msgid "Please enter your invitation code."
 msgstr "Напишіть, будь ласка, свій код запрошення."
 
 #: aleksis/core/forms.py:418 aleksis/core/models.py:187
+#: aleksis/core/models.py:192
 msgid "First name"
 msgstr "Ім'я"
 
 #: aleksis/core/forms.py:419 aleksis/core/models.py:188
+#: aleksis/core/models.py:193
 msgid "Last name"
 msgstr "Прізвище"
 
 #: aleksis/core/forms.py:428
 msgid "A person is using this e-mail address"
-msgstr "Особа користується цією ел.адресою"
+msgstr "Цією ел.адресою хтось користується"
 
 #: aleksis/core/forms.py:456
 msgid "Who should get the permission?"
@@ -248,12 +255,14 @@ msgid "Grant the permission for all objects"
 msgstr "Надати дозвіл до всіх об'єктів"
 
 #: aleksis/core/forms.py:494
-msgid "You must select at least one group or person which should get the permission."
-msgstr "Ви повинні обрати принаймні одну групу або особу, хто буде мати дозвіл."
+msgid ""
+"You must select at least one group or person which should get the permission."
+msgstr ""
+"Ви повинні обрати принаймні одну групу або особу, хто буде мати дозвіл."
 
 #: aleksis/core/forms.py:499
 msgid "You must grant the permission to all objects and/or to some objects."
-msgstr "Ви повинні надати дозвіл до всіх об'єктів або до деяких."
+msgstr "Ви повинні надати дозвіл до всіх та/або до деяких об'єктів."
 
 #: aleksis/core/forms.py:586
 msgid "Address data"
@@ -329,12 +338,14 @@ msgstr "Адмін"
 #: aleksis/core/menus.py:47 aleksis/core/models.py:867
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
+#: aleksis/core/models.py:872
 msgid "Announcements"
 msgstr "Оголошення"
 
 #: aleksis/core/menus.py:58 aleksis/core/models.py:137
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
+#: aleksis/core/models.py:142
 msgid "School terms"
 msgstr "Навчальний рік"
 
@@ -363,7 +374,7 @@ msgstr "Конфігурація"
 #: aleksis/core/menus.py:113 aleksis/core/templates/core/data_check/list.html:9
 #: aleksis/core/templates/core/data_check/list.html:10
 msgid "Data checks"
-msgstr "Первірки даних"
+msgstr "Перевірки даних"
 
 #: aleksis/core/menus.py:119 aleksis/core/templates/core/perms/list.html:13
 #: aleksis/core/templates/core/perms/list.html:14
@@ -387,6 +398,7 @@ msgstr "Люди"
 #: aleksis/core/menus.py:182 aleksis/core/models.py:1101
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
+#: aleksis/core/models.py:1111
 msgid "Group types"
 msgstr "Типи груп"
 
@@ -397,6 +409,7 @@ msgstr "Групи та підлеглі групи"
 #: aleksis/core/menus.py:204 aleksis/core/models.py:537
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
+#: aleksis/core/models.py:542
 msgid "Additional fields"
 msgstr "Додаткові поля"
 
@@ -461,581 +474,608 @@ msgstr "Вийти"
 msgid "Linked school term"
 msgstr "Пов'язаний навчальний рік"
 
-#: aleksis/core/models.py:77
+#: aleksis/core/models.py:77 aleksis/core/models.py:82
 msgid "Boolean (Yes/No)"
 msgstr "Логічне (Так/Ні)"
 
-#: aleksis/core/models.py:78
+#: aleksis/core/models.py:78 aleksis/core/models.py:83
 msgid "Text (one line)"
 msgstr "Текст (один рядок)"
 
-#: aleksis/core/models.py:80
+#: aleksis/core/models.py:80 aleksis/core/models.py:85
 msgid "Date and time"
 msgstr "Дата і час"
 
-#: aleksis/core/models.py:81
+#: aleksis/core/models.py:81 aleksis/core/models.py:86
 msgid "Decimal number"
 msgstr "Десятичне число"
 
 #: aleksis/core/models.py:82 aleksis/core/models.py:205
+#: aleksis/core/models.py:87 aleksis/core/models.py:210
 msgid "E-mail address"
 msgstr "Адреса ел.пошти"
 
-#: aleksis/core/models.py:83
+#: aleksis/core/models.py:83 aleksis/core/models.py:88
 msgid "Integer"
 msgstr "Ціле"
 
-#: aleksis/core/models.py:84
+#: aleksis/core/models.py:84 aleksis/core/models.py:89
 msgid "IP address"
 msgstr "IP адреса"
 
-#: aleksis/core/models.py:85
+#: aleksis/core/models.py:85 aleksis/core/models.py:90
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr "Логічне або порожнє (Так/Ні/Нічого)"
 
-#: aleksis/core/models.py:86
+#: aleksis/core/models.py:86 aleksis/core/models.py:91
 msgid "Text (multi-line)"
 msgstr "Текст (багаторядковий)"
 
-#: aleksis/core/models.py:88
+#: aleksis/core/models.py:88 aleksis/core/models.py:93
 msgid "URL / Link"
 msgstr "URL / Посилання"
 
 #: aleksis/core/models.py:100 aleksis/core/models.py:1070
-#: aleksis/core/models.py:1374
+#: aleksis/core/models.py:1374 aleksis/core/models.py:105
+#: aleksis/core/models.py:1077 aleksis/core/models.py:1384
 msgid "Name"
 msgstr "Повне ім'я"
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:102 aleksis/core/models.py:107
 msgid "Start date"
 msgstr "Дата початку"
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:103 aleksis/core/models.py:108
 msgid "End date"
 msgstr "Дата закінчення"
 
-#: aleksis/core/models.py:122
+#: aleksis/core/models.py:122 aleksis/core/models.py:127
 msgid "The start date must be earlier than the end date."
 msgstr "Початкова дата повинна бути раніше кінцевої."
 
-#: aleksis/core/models.py:129
+#: aleksis/core/models.py:129 aleksis/core/models.py:134
 msgid "There is already a school term for this time or a part of this time."
 msgstr "На цей час або на частину цього часу вже припадає навчальний рік."
 
 #: aleksis/core/models.py:158 aleksis/core/models.py:1019
-#: aleksis/core/models.py:1371
+#: aleksis/core/models.py:1371 aleksis/core/models.py:163
+#: aleksis/core/models.py:1024 aleksis/core/models.py:1381
 msgid "Person"
 msgstr "Особа"
 
-#: aleksis/core/models.py:161
+#: aleksis/core/models.py:161 aleksis/core/models.py:166
 msgid "Can view address"
 msgstr "Може бачити адресу"
 
-#: aleksis/core/models.py:162
+#: aleksis/core/models.py:162 aleksis/core/models.py:167
 msgid "Can view contact details"
 msgstr "Може бачити контактні дані"
 
-#: aleksis/core/models.py:163
+#: aleksis/core/models.py:163 aleksis/core/models.py:168
 msgid "Can view photo"
 msgstr "Може бачити фото"
 
-#: aleksis/core/models.py:164
+#: aleksis/core/models.py:164 aleksis/core/models.py:169
 msgid "Can view avatar image"
 msgstr "Може бачити аватар"
 
-#: aleksis/core/models.py:165
+#: aleksis/core/models.py:165 aleksis/core/models.py:170
 msgid "Can view persons groups"
 msgstr "Може бачити групи особи"
 
-#: aleksis/core/models.py:166
+#: aleksis/core/models.py:166 aleksis/core/models.py:171
 msgid "Can view personal details"
 msgstr "Може бачити особисті дані"
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:176 aleksis/core/models.py:181
 msgid "female"
 msgstr "жін"
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:176 aleksis/core/models.py:181
 msgid "male"
 msgstr "чол"
 
 #: aleksis/core/models.py:184 aleksis/core/models.py:1273
+#: aleksis/core/models.py:189 aleksis/core/models.py:1283
 msgid "Linked user"
 msgstr "Пов'язаний користувач"
 
-#: aleksis/core/models.py:190
+#: aleksis/core/models.py:190 aleksis/core/models.py:195
 msgid "Additional name(s)"
 msgstr "Додаткові імена"
 
 #: aleksis/core/models.py:194 aleksis/core/models.py:506
+#: aleksis/core/models.py:199 aleksis/core/models.py:511
 msgid "Short name"
 msgstr "Коротке ім'я"
 
-#: aleksis/core/models.py:197
+#: aleksis/core/models.py:197 aleksis/core/models.py:202
 msgid "Street"
 msgstr "Вулиця"
 
-#: aleksis/core/models.py:198
+#: aleksis/core/models.py:198 aleksis/core/models.py:203
 msgid "Street number"
 msgstr "Номер будинку"
 
-#: aleksis/core/models.py:199
+#: aleksis/core/models.py:199 aleksis/core/models.py:204
 msgid "Postal code"
 msgstr "Поштовий індекс"
 
-#: aleksis/core/models.py:200
+#: aleksis/core/models.py:200 aleksis/core/models.py:205
 msgid "Place"
 msgstr "Місто"
 
 #: aleksis/core/models.py:202 aleksis/core/templates/core/person/full.html:160
+#: aleksis/core/models.py:207
 msgid "Home phone"
 msgstr "Домашній телефон"
 
 #: aleksis/core/models.py:203 aleksis/core/templates/core/person/full.html:170
+#: aleksis/core/models.py:208
 msgid "Mobile phone"
 msgstr "Мобільний телефон"
 
-#: aleksis/core/models.py:207
+#: aleksis/core/models.py:207 aleksis/core/models.py:212
 msgid "Date of birth"
 msgstr "Дата народження"
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:208 aleksis/core/models.py:213
 msgid "Place of birth"
 msgstr "Місце народження"
 
-#: aleksis/core/models.py:209
+#: aleksis/core/models.py:209 aleksis/core/models.py:214
 msgid "Sex"
 msgstr "Стать"
 
 #: aleksis/core/models.py:216 aleksis/core/models.py:545
-msgid "This is an official photo, used for official documents and for internal use cases."
-msgstr "Це офіційне фото, яке використовується для документів та внутрішніх потреб."
+#: aleksis/core/models.py:221 aleksis/core/models.py:550
+msgid ""
+"This is an official photo, used for official documents and for internal use "
+"cases."
+msgstr ""
+"Це офіційне фото, яке використовується для документів та внутрішніх потреб."
 
 #: aleksis/core/models.py:221 aleksis/core/models.py:549
+#: aleksis/core/models.py:226 aleksis/core/models.py:554
 msgid "Display picture / Avatar"
 msgstr "Відобразити фото/аватар"
 
 #: aleksis/core/models.py:224 aleksis/core/models.py:552
+#: aleksis/core/models.py:229 aleksis/core/models.py:557
 msgid "This is a picture or an avatar for public display."
 msgstr "Це фото або аватар для загального відображення."
 
 #: aleksis/core/models.py:229 aleksis/core/templates/core/person/full.html:235
+#: aleksis/core/models.py:234
 msgid "Guardians / Parents"
 msgstr "Опікуни / батьки"
 
-#: aleksis/core/models.py:236
+#: aleksis/core/models.py:236 aleksis/core/models.py:241
 msgid "Primary group"
 msgstr "Основна група"
 
 #: aleksis/core/models.py:239 aleksis/core/models.py:719
 #: aleksis/core/models.py:743 aleksis/core/models.py:834
-#: aleksis/core/models.py:1094
+#: aleksis/core/models.py:1094 aleksis/core/models.py:244
+#: aleksis/core/models.py:724 aleksis/core/models.py:748
+#: aleksis/core/models.py:839 aleksis/core/models.py:1104
 msgid "Description"
 msgstr "Опис"
 
-#: aleksis/core/models.py:459
+#: aleksis/core/models.py:459 aleksis/core/models.py:464
 msgid "Title of field"
 msgstr "Назва поля"
 
-#: aleksis/core/models.py:461
+#: aleksis/core/models.py:461 aleksis/core/models.py:466
 msgid "Type of field"
 msgstr "Тип поля"
 
-#: aleksis/core/models.py:463
+#: aleksis/core/models.py:463 aleksis/core/models.py:468
 msgid "Required"
 msgstr "Необхідне"
 
-#: aleksis/core/models.py:464
+#: aleksis/core/models.py:464 aleksis/core/models.py:469
 msgid "Help text / description"
 msgstr "Допоміжний текст/опис"
 
-#: aleksis/core/models.py:470
+#: aleksis/core/models.py:470 aleksis/core/models.py:475
 msgid "Addtitional field for groups"
 msgstr "Додаткове поле для груп"
 
-#: aleksis/core/models.py:471
+#: aleksis/core/models.py:471 aleksis/core/models.py:476
 msgid "Addtitional fields for groups"
 msgstr "Додаткові поля для груп"
 
-#: aleksis/core/models.py:491
+#: aleksis/core/models.py:491 aleksis/core/models.py:496
 msgid "Can assign child groups to groups"
 msgstr "Може призначати підлеглі групи до груп"
 
-#: aleksis/core/models.py:492
+#: aleksis/core/models.py:492 aleksis/core/models.py:497
 msgid "Can view statistics about group."
 msgstr "Може бачити статистику групи."
 
-#: aleksis/core/models.py:504
+#: aleksis/core/models.py:504 aleksis/core/models.py:509
 msgid "Long name"
 msgstr "Довге ім'я"
 
 #: aleksis/core/models.py:514 aleksis/core/templates/core/group/full.html:85
+#: aleksis/core/models.py:519 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr "Учасники"
 
 #: aleksis/core/models.py:517 aleksis/core/templates/core/group/full.html:82
+#: aleksis/core/models.py:522 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr "Власники"
 
 #: aleksis/core/models.py:524 aleksis/core/templates/core/group/full.html:55
+#: aleksis/core/models.py:529 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr "Батьківські групи"
 
-#: aleksis/core/models.py:532
+#: aleksis/core/models.py:532 aleksis/core/models.py:537
 msgid "Type of group"
 msgstr "Тип групи"
 
 #: aleksis/core/models.py:718 aleksis/core/models.py:742
 #: aleksis/core/models.py:833
 #: aleksis/core/templates/core/announcement/list.html:18
+#: aleksis/core/models.py:723 aleksis/core/models.py:747
+#: aleksis/core/models.py:838
 msgid "Title"
 msgstr "Назва"
 
-#: aleksis/core/models.py:721
+#: aleksis/core/models.py:721 aleksis/core/models.py:726
 msgid "Application"
 msgstr "Додаток"
 
-#: aleksis/core/models.py:727
+#: aleksis/core/models.py:727 aleksis/core/models.py:732
 msgid "Activity"
 msgstr "Активність"
 
-#: aleksis/core/models.py:728
+#: aleksis/core/models.py:728 aleksis/core/models.py:733
 msgid "Activities"
 msgstr "Активності"
 
-#: aleksis/core/models.py:734
+#: aleksis/core/models.py:734 aleksis/core/models.py:739
 msgid "Sender"
 msgstr "Відправник"
 
-#: aleksis/core/models.py:739
+#: aleksis/core/models.py:739 aleksis/core/models.py:744
 msgid "Recipient"
 msgstr "Отримувач"
 
 #: aleksis/core/models.py:744 aleksis/core/models.py:1071
+#: aleksis/core/models.py:749 aleksis/core/models.py:1078
 msgid "Link"
 msgstr "Посилання"
 
-#: aleksis/core/models.py:746
+#: aleksis/core/models.py:746 aleksis/core/models.py:751
 msgid "Send notification at"
 msgstr "Надіслати сповіщення о"
 
-#: aleksis/core/models.py:748
+#: aleksis/core/models.py:748 aleksis/core/models.py:753
 msgid "Read"
 msgstr "Читати"
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:749 aleksis/core/models.py:754
 msgid "Sent"
 msgstr "Надіслано"
 
-#: aleksis/core/models.py:766
+#: aleksis/core/models.py:766 aleksis/core/models.py:771
 msgid "Notification"
 msgstr "Сповіщення"
 
 #: aleksis/core/models.py:767 aleksis/core/preferences.py:29
 #: aleksis/core/templates/core/base.html:81
 #: aleksis/core/templates/core/notifications.html:4
-#: aleksis/core/templates/core/notifications.html:5
+#: aleksis/core/templates/core/notifications.html:5 aleksis/core/models.py:772
 msgid "Notifications"
 msgstr "Сповіщення"
 
-#: aleksis/core/models.py:835
+#: aleksis/core/models.py:835 aleksis/core/models.py:840
 msgid "Link to detailed view"
 msgstr "Посилання на детальний перегляд"
 
-#: aleksis/core/models.py:838
+#: aleksis/core/models.py:838 aleksis/core/models.py:843
 msgid "Date and time from when to show"
 msgstr "Дата і час, з якого показувати"
 
-#: aleksis/core/models.py:841
+#: aleksis/core/models.py:841 aleksis/core/models.py:846
 msgid "Date and time until when to show"
 msgstr "Дата і час, до якого показувати"
 
-#: aleksis/core/models.py:866
+#: aleksis/core/models.py:866 aleksis/core/models.py:871
 msgid "Announcement"
 msgstr "Оголошення"
 
-#: aleksis/core/models.py:904
+#: aleksis/core/models.py:904 aleksis/core/models.py:909
 msgid "Announcement recipient"
 msgstr "Отримувач оголошення"
 
-#: aleksis/core/models.py:905
+#: aleksis/core/models.py:905 aleksis/core/models.py:910
 msgid "Announcement recipients"
 msgstr "Отримувачі оголошення"
 
-#: aleksis/core/models.py:927
+#: aleksis/core/models.py:927 aleksis/core/models.py:932
 msgid "Widget Title"
 msgstr "Назва віджета"
 
-#: aleksis/core/models.py:928
+#: aleksis/core/models.py:928 aleksis/core/models.py:933
 msgid "Activate Widget"
 msgstr "Активувати віджет"
 
-#: aleksis/core/models.py:929
+#: aleksis/core/models.py:929 aleksis/core/models.py:934
 msgid "Widget is broken"
 msgstr "Віджет зламався"
 
-#: aleksis/core/models.py:932
+#: aleksis/core/models.py:932 aleksis/core/models.py:937
 msgid "Size on mobile devices"
 msgstr "Розмір на мобільних"
 
-#: aleksis/core/models.py:933
+#: aleksis/core/models.py:933 aleksis/core/models.py:938
 msgid "<= 600 px, 12 columns"
 msgstr "<= 600 пікс, 12 стовпчиків"
 
-#: aleksis/core/models.py:938
+#: aleksis/core/models.py:938 aleksis/core/models.py:943
 msgid "Size on tablet devices"
 msgstr "Розмір на планшетах"
 
-#: aleksis/core/models.py:939
+#: aleksis/core/models.py:939 aleksis/core/models.py:944
 msgid "> 600 px, 12 columns"
 msgstr "> 600 пікс, 12 стовпчиків"
 
-#: aleksis/core/models.py:944
+#: aleksis/core/models.py:944 aleksis/core/models.py:949
 msgid "Size on desktop devices"
 msgstr "Розмір на ПК"
 
-#: aleksis/core/models.py:945
+#: aleksis/core/models.py:945 aleksis/core/models.py:950
 msgid "> 992 px, 12 columns"
 msgstr "> 992 пікс, 12 стовпчиків"
 
-#: aleksis/core/models.py:950
+#: aleksis/core/models.py:950 aleksis/core/models.py:955
 msgid "Size on large desktop devices"
 msgstr "Розмір на великих екранах"
 
-#: aleksis/core/models.py:951
+#: aleksis/core/models.py:951 aleksis/core/models.py:956
 msgid "> 1200 px>, 12 columns"
 msgstr "> 1200 пікс, 12 стовпчиків"
 
-#: aleksis/core/models.py:982
+#: aleksis/core/models.py:982 aleksis/core/models.py:987
 msgid "Can edit default dashboard"
 msgstr "Може редагувати типову/стандартну інформпанель"
 
-#: aleksis/core/models.py:983
+#: aleksis/core/models.py:983 aleksis/core/models.py:988
 msgid "Dashboard Widget"
 msgstr "Віджет інформпанелі"
 
-#: aleksis/core/models.py:984
+#: aleksis/core/models.py:984 aleksis/core/models.py:989
 msgid "Dashboard Widgets"
 msgstr "Віджети інформпанелі"
 
-#: aleksis/core/models.py:990
+#: aleksis/core/models.py:990 aleksis/core/models.py:995
 msgid "URL"
 msgstr "URL"
 
-#: aleksis/core/models.py:991
+#: aleksis/core/models.py:991 aleksis/core/models.py:996
 msgid "Icon URL"
 msgstr "Іконка URL"
 
-#: aleksis/core/models.py:997
+#: aleksis/core/models.py:997 aleksis/core/models.py:1002
 msgid "External link widget"
 msgstr "Зовнішнє посилання на віджет"
 
-#: aleksis/core/models.py:998
+#: aleksis/core/models.py:998 aleksis/core/models.py:1003
 msgid "External link widgets"
 msgstr "Зовнішні посилання на віджети"
 
-#: aleksis/core/models.py:1004
+#: aleksis/core/models.py:1004 aleksis/core/models.py:1009
 msgid "Content"
 msgstr "Зміст"
 
-#: aleksis/core/models.py:1010
+#: aleksis/core/models.py:1010 aleksis/core/models.py:1015
 msgid "Static content widget"
 msgstr "Віджет з постійним змістом"
 
-#: aleksis/core/models.py:1011
+#: aleksis/core/models.py:1011 aleksis/core/models.py:1016
 msgid "Static content widgets"
 msgstr "Віджети з постійним змістом"
 
-#: aleksis/core/models.py:1016
+#: aleksis/core/models.py:1016 aleksis/core/models.py:1021
 msgid "Dashboard widget"
 msgstr "Віджет інформпанелі"
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:1021 aleksis/core/models.py:1026
 msgid "Order"
 msgstr "Порядок"
 
-#: aleksis/core/models.py:1022
+#: aleksis/core/models.py:1022 aleksis/core/models.py:1027
 msgid "Part of the default dashboard"
 msgstr "Частина типової інформпанелі"
 
-#: aleksis/core/models.py:1037
+#: aleksis/core/models.py:1037 aleksis/core/models.py:1042
 msgid "Dashboard widget order"
 msgstr "Порядок віджету на інформпанелі"
 
-#: aleksis/core/models.py:1038
+#: aleksis/core/models.py:1038 aleksis/core/models.py:1043
 msgid "Dashboard widget orders"
 msgstr "Порядок віджетів на інформпанелі"
 
-#: aleksis/core/models.py:1044
+#: aleksis/core/models.py:1044 aleksis/core/models.py:1049
 msgid "Menu ID"
 msgstr "Меню ID"
 
-#: aleksis/core/models.py:1057
+#: aleksis/core/models.py:1057 aleksis/core/models.py:1062
 msgid "Custom menu"
 msgstr "Користувацьке меню"
 
-#: aleksis/core/models.py:1058
+#: aleksis/core/models.py:1058 aleksis/core/models.py:1063
 msgid "Custom menus"
 msgstr "Користувацькі меню"
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:1068 aleksis/core/models.py:1075
 msgid "Menu"
 msgstr "Меню"
 
 #: aleksis/core/models.py:1072 aleksis/core/models.py:1320
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
+#: aleksis/core/models.py:1079 aleksis/core/models.py:1330
 msgid "Icon"
 msgstr "Іконка"
 
-#: aleksis/core/models.py:1078
+#: aleksis/core/models.py:1078 aleksis/core/models.py:1085
 msgid "Custom menu item"
 msgstr "Пункт користувацького меню"
 
-#: aleksis/core/models.py:1079
+#: aleksis/core/models.py:1079 aleksis/core/models.py:1086
 msgid "Custom menu items"
 msgstr "Пункти користувацького меню"
 
-#: aleksis/core/models.py:1093
+#: aleksis/core/models.py:1093 aleksis/core/models.py:1103
 msgid "Title of type"
 msgstr "Назва типу"
 
 #: aleksis/core/models.py:1100 aleksis/core/templates/core/group/full.html:47
+#: aleksis/core/models.py:1110 aleksis/core/templates/core/group/full.html:50
 msgid "Group type"
 msgstr "Тип групи"
 
-#: aleksis/core/models.py:1114
+#: aleksis/core/models.py:1114 aleksis/core/models.py:1124
 msgid "Can view system status"
 msgstr "Може переглядати стан системи"
 
-#: aleksis/core/models.py:1115
+#: aleksis/core/models.py:1115 aleksis/core/models.py:1125
 msgid "Can manage data"
 msgstr "Може керувати даними"
 
-#: aleksis/core/models.py:1116
+#: aleksis/core/models.py:1116 aleksis/core/models.py:1126
 msgid "Can impersonate"
 msgstr "Може маскуватися"
 
-#: aleksis/core/models.py:1117
+#: aleksis/core/models.py:1117 aleksis/core/models.py:1127
 msgid "Can use search"
 msgstr "Може шукати"
 
-#: aleksis/core/models.py:1118
+#: aleksis/core/models.py:1118 aleksis/core/models.py:1128
 msgid "Can change site preferences"
 msgstr "Може змінювати властивості сайту"
 
-#: aleksis/core/models.py:1119
+#: aleksis/core/models.py:1119 aleksis/core/models.py:1129
 msgid "Can change person preferences"
 msgstr "Може змінювати властивості особи"
 
-#: aleksis/core/models.py:1120
+#: aleksis/core/models.py:1120 aleksis/core/models.py:1130
 msgid "Can change group preferences"
 msgstr "Може змінювати властивості групи"
 
-#: aleksis/core/models.py:1121
+#: aleksis/core/models.py:1121 aleksis/core/models.py:1131
 msgid "Can test PDF generation"
 msgstr "Може генерувати тестові PDF"
 
-#: aleksis/core/models.py:1122
+#: aleksis/core/models.py:1122 aleksis/core/models.py:1132
 msgid "Can invite persons"
 msgstr "Може запрошувати осіб"
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1158 aleksis/core/models.py:1168
 msgid "Related data check task"
 msgstr "Завдання перевірки пов'язаних даних"
 
-#: aleksis/core/models.py:1166
+#: aleksis/core/models.py:1166 aleksis/core/models.py:1176
 msgid "Issue solved"
 msgstr "Проблема вирішена"
 
-#: aleksis/core/models.py:1167
+#: aleksis/core/models.py:1167 aleksis/core/models.py:1177
 msgid "Notification sent"
 msgstr "Сповіщення надіслане"
 
-#: aleksis/core/models.py:1180
+#: aleksis/core/models.py:1180 aleksis/core/models.py:1190
 msgid "Data check result"
 msgstr "Результат перевірки даних"
 
-#: aleksis/core/models.py:1181
+#: aleksis/core/models.py:1181 aleksis/core/models.py:1191
 msgid "Data check results"
 msgstr "Результати перевірки даних"
 
-#: aleksis/core/models.py:1183
+#: aleksis/core/models.py:1183 aleksis/core/models.py:1193
 msgid "Can run data checks"
 msgstr "Може запускати перевірки даних"
 
-#: aleksis/core/models.py:1184
+#: aleksis/core/models.py:1184 aleksis/core/models.py:1194
 msgid "Can solve data check problems"
 msgstr "Може розв'язувати проблеми перевірки даних"
 
-#: aleksis/core/models.py:1191
+#: aleksis/core/models.py:1191 aleksis/core/models.py:1201
 msgid "E-Mail address"
 msgstr "Адреса ел.пошти"
 
-#: aleksis/core/models.py:1223
+#: aleksis/core/models.py:1223 aleksis/core/models.py:1233
 msgid "Owner"
 msgstr "Власник"
 
-#: aleksis/core/models.py:1227
+#: aleksis/core/models.py:1227 aleksis/core/models.py:1237
 msgid "File expires at"
 msgstr "Файл дійсний до"
 
-#: aleksis/core/models.py:1229
+#: aleksis/core/models.py:1229 aleksis/core/models.py:1239
 msgid "Generated HTML file"
 msgstr "Згенерований файл HTML"
 
-#: aleksis/core/models.py:1231
+#: aleksis/core/models.py:1231 aleksis/core/models.py:1241
 msgid "Generated PDF file"
 msgstr "Згенерований файл PDF"
 
-#: aleksis/core/models.py:1238
+#: aleksis/core/models.py:1238 aleksis/core/models.py:1248
 msgid "PDF file"
 msgstr "Файл PDF"
 
-#: aleksis/core/models.py:1239
+#: aleksis/core/models.py:1239 aleksis/core/models.py:1249
 msgid "PDF files"
 msgstr "Файли PDF"
 
-#: aleksis/core/models.py:1244
+#: aleksis/core/models.py:1244 aleksis/core/models.py:1254
 msgid "Task result"
 msgstr "Результат завдання"
 
-#: aleksis/core/models.py:1247
+#: aleksis/core/models.py:1247 aleksis/core/models.py:1257
 msgid "Task user"
 msgstr "Користувач завдання"
 
-#: aleksis/core/models.py:1259
+#: aleksis/core/models.py:1259 aleksis/core/models.py:1269
 msgid "Task user assignment"
 msgstr "Призначення користувача завдання"
 
-#: aleksis/core/models.py:1260
+#: aleksis/core/models.py:1260 aleksis/core/models.py:1270
 msgid "Task user assignments"
 msgstr "Призначення користувачів завдання"
 
-#: aleksis/core/models.py:1276
+#: aleksis/core/models.py:1276 aleksis/core/models.py:1286
 msgid "Additional attributes"
 msgstr "Додаткові атрибути"
 
-#: aleksis/core/models.py:1314
+#: aleksis/core/models.py:1314 aleksis/core/models.py:1324
 msgid "Allowed scopes that clients can request"
 msgstr "Дозволені межі дії, які можуть запитувати клієнти"
 
-#: aleksis/core/models.py:1324
-msgid "This image will be shown as icon in the authorization flow. It should be squared."
-msgstr "Це зображення буде виглядати іконкою під час авторизації. Повинне бути квадратним."
+#: aleksis/core/models.py:1324 aleksis/core/models.py:1334
+msgid ""
+"This image will be shown as icon in the authorization flow. It should be "
+"squared."
+msgstr ""
+"Це зображення буде іконкою під час авторизації. Воно повинне бути квадратним."
 
-#: aleksis/core/models.py:1373
+#: aleksis/core/models.py:1373 aleksis/core/models.py:1383
 msgid "UUID"
 msgstr "UUID"
 
-#: aleksis/core/models.py:1377
+#: aleksis/core/models.py:1377 aleksis/core/models.py:1387
 msgid "Selected ICal feed"
-msgstr "Стрічка обраного ICal"
+msgstr "Стрічка обраного iCal"
 
-#: aleksis/core/models.py:1386
+#: aleksis/core/models.py:1386 aleksis/core/models.py:1396
 msgid "Personal Calendar URL"
 msgstr "URL-посилання особистого календаря"
 
-#: aleksis/core/models.py:1387
+#: aleksis/core/models.py:1387 aleksis/core/models.py:1397
 msgid "Personal Calendar URLs"
 msgstr "URL-посилання особистих календарів"
 
@@ -1140,8 +1180,10 @@ msgid "Automatically create new persons for new users"
 msgstr "Нові особи для нових користувачів створювати автоматично"
 
 #: aleksis/core/preferences.py:241
-msgid "Automatically link existing persons to new users by their e-mail address"
-msgstr "Пов'язувати існуючих осіб з новими користувачами автоматично за ел.адресами"
+msgid ""
+"Automatically link existing persons to new users by their e-mail address"
+msgstr ""
+"Пов'язувати існуючих осіб з новими користувачами автоматично за ел.адресами"
 
 #: aleksis/core/preferences.py:252
 msgid "Display name of the school"
@@ -1187,67 +1229,68 @@ msgstr "Дозволені потоки грантів для додатків 
 msgid "Available languages"
 msgstr "Доступні мови"
 
-#: aleksis/core/preferences.py:357
+#: aleksis/core/preferences.py:357 aleksis/core/preferences.py:343
 msgid "Send emails if data checks detect problems"
 msgstr "В разі виявлення проблем під час перевірки даних надіслати ел.лист"
 
-#: aleksis/core/preferences.py:368
+#: aleksis/core/preferences.py:368 aleksis/core/preferences.py:354
 msgid "Email recipients for data checks problem emails"
 msgstr "Ел.адреси отримувачів для листів з проблемами перевірки даних"
 
-#: aleksis/core/preferences.py:379
+#: aleksis/core/preferences.py:379 aleksis/core/preferences.py:365
 msgid "Email recipient groups for data checks problem emails"
 msgstr "Ел.адреси груп для листів з проблемами перевірки даних"
 
-#: aleksis/core/preferences.py:388
+#: aleksis/core/preferences.py:388 aleksis/core/preferences.py:374
 msgid "Show dashboard to users without login"
 msgstr "Відображати інформпанель анонімним користувачам"
 
-#: aleksis/core/preferences.py:397
+#: aleksis/core/preferences.py:397 aleksis/core/preferences.py:383
 msgid "Allow users to edit their dashboard"
 msgstr "Дозволити користувачам редагувати свою інформпанель"
 
-#: aleksis/core/preferences.py:408
+#: aleksis/core/preferences.py:408 aleksis/core/preferences.py:394
 msgid "Fields on person model which are editable by themselves."
 msgstr "Поля з описом особи, які можна редагувати самостійно."
 
-#: aleksis/core/preferences.py:423
-msgid "Editable fields on person model which should trigger a notification on change"
+#: aleksis/core/preferences.py:423 aleksis/core/preferences.py:409
+msgid ""
+"Editable fields on person model which should trigger a notification on change"
 msgstr "Змінювані поля з описом особи, які повинні сповіщати щодо редагування"
 
-#: aleksis/core/preferences.py:437
+#: aleksis/core/preferences.py:437 aleksis/core/preferences.py:423
 msgid "Contact for notification if a person changes their data"
 msgstr "Контакт для сповіщень, якщо хтось змінює свої дані"
 
-#: aleksis/core/preferences.py:448
+#: aleksis/core/preferences.py:448 aleksis/core/preferences.py:434
 msgid "Prefer personal photos over avatars"
 msgstr "Віддавати перевагу особистим фото замість аватарів"
 
-#: aleksis/core/preferences.py:458
+#: aleksis/core/preferences.py:458 aleksis/core/preferences.py:444
 msgid "PDF file expiration duration"
 msgstr "Термін придатності файла PDF"
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:459 aleksis/core/preferences.py:445
 msgid "in minutes"
 msgstr "у хвилинах"
 
-#: aleksis/core/preferences.py:469
+#: aleksis/core/preferences.py:469 aleksis/core/preferences.py:455
 msgid "Automatically update the dashboard and its widgets"
 msgstr "Автоматично оновлювати інформпанель та її віджети"
 
-#: aleksis/core/preferences.py:479
+#: aleksis/core/preferences.py:479 aleksis/core/preferences.py:465
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr "Автоматично оновлювати інформпанель та її віджети (для всього сайту)"
 
-#: aleksis/core/preferences.py:489
+#: aleksis/core/preferences.py:489 aleksis/core/preferences.py:475
 msgid "Country for phone number parsing"
-msgstr "Країна для аналізу номера телефона"
+msgstr "Країна для розбору номера телефона"
 
-#: aleksis/core/settings.py:540
+#: aleksis/core/settings.py:540 aleksis/core/settings.py:541
 msgid "English"
 msgstr "Англійська"
 
-#: aleksis/core/settings.py:541
+#: aleksis/core/settings.py:541 aleksis/core/settings.py:542
 msgid "German"
 msgstr "Німецька"
 
@@ -1257,12 +1300,15 @@ msgstr "Німецька"
 #: aleksis/core/templates/core/person/full.html:26
 #: aleksis/core/templates/core/person/full.html:86
 #: aleksis/core/templates/oauth2_provider/application/detail.html:17
+#: aleksis/core/tables.py:25 aleksis/core/templates/core/group/full.html:26
 msgid "Edit"
 msgstr "Редагувати"
 
 #: aleksis/core/tables.py:26 aleksis/core/tables.py:94
 #: aleksis/core/tables.py:138
 #: aleksis/core/templates/core/announcement/list.html:22
+#: aleksis/core/tables.py:27 aleksis/core/tables.py:148
+#: aleksis/core/tables.py:192
 msgid "Actions"
 msgstr "Дії"
 
@@ -1275,6 +1321,9 @@ msgstr "Дії"
 #: aleksis/core/templates/core/person/full.html:33
 #: aleksis/core/templates/core/person/full.html:93
 #: aleksis/core/templates/oauth2_provider/application/detail.html:21
+#: aleksis/core/tables.py:115 aleksis/core/tables.py:116
+#: aleksis/core/tables.py:130 aleksis/core/tables.py:146
+#: aleksis/core/tables.py:190 aleksis/core/templates/core/group/full.html:33
 msgid "Delete"
 msgstr "Видалити"
 
@@ -1295,7 +1344,8 @@ msgstr ""
 #: aleksis/core/templates/403.html:19 aleksis/core/templates/404.html:16
 msgid ""
 "\n"
-"            If you think this is an error in AlekSIS, please contact your site\n"
+"            If you think this is an error in AlekSIS, please contact your "
+"site\n"
 "            administrators:\n"
 "          "
 msgstr ""
@@ -1327,12 +1377,14 @@ msgstr ""
 #: aleksis/core/templates/500.html:13
 msgid ""
 "\n"
-"            Your site administrators will automatically be notified about this\n"
+"            Your site administrators will automatically be notified about "
+"this\n"
 "            error. You can also contact them directly:\n"
 "          "
 msgstr ""
 "\n"
-"            Адміністратори сайту будуть сповіщені щодо цієї помилки автоматично\n"
+"            Адміністратори сайту будуть сповіщені щодо цієї помилки "
+"автоматично.\n"
 "            Ви також можете звернутися до них безпосередньо:\n"
 "          "
 
@@ -1351,11 +1403,13 @@ msgstr ""
 #: aleksis/core/templates/503.html:13
 msgid ""
 "\n"
-"            This page is currently unavailable. If this error persists, contact your site administrators:\n"
+"            This page is currently unavailable. If this error persists, "
+"contact your site administrators:\n"
 "          "
 msgstr ""
 "\n"
-"            Ця сторінка наразі недоступна. Якщо ця помилка виникне знову, зверніться до адміністраторів сайту:\n"
+"            Ця сторінка наразі недоступна. Якщо ця помилка виникне знову, "
+"зверніться до адміністраторів сайту:\n"
 "          "
 
 #: aleksis/core/templates/account/account_inactive.html:5
@@ -1396,13 +1450,22 @@ msgstr "Підтвердити"
 
 #: aleksis/core/templates/account/email_confirm.html:12
 #, python-format
-msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an e-mail address for user %(user_display)s."
-msgstr "Підтвердіть, будь ласка, що <a href=\"mailto:%(email)s\">%(email)s</a> є адресою ел.пошти для користувача %(user_display)s."
+msgid ""
+"Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an e-mail "
+"address for user %(user_display)s."
+msgstr ""
+"Підтвердіть, будь ласка, що <a href=\"mailto:%(email)s\">%(email)s</a> є "
+"адресою ел.пошти для користувача %(user_display)s."
 
 #: aleksis/core/templates/account/email_confirm.html:25
 #, python-format
-msgid "This e-mail confirmation link expired or is invalid. Please <a href=\"%(email_url)s\">issue a new e-mail confirmation request</a>."
-msgstr "Це посилання для підтвердження ел.пошти протерміноване або недійсне. Зробіть, будь ласка, для підтвердження <a href=\"%(email_url)s\">новий запит</a>."
+msgid ""
+"This e-mail confirmation link expired or is invalid. Please <a href="
+"\"%(email_url)s\">issue a new e-mail confirmation request</a>."
+msgstr ""
+"Це посилання для підтвердження ел.пошти протерміноване або недійсне. "
+"Зробіть, будь ласка, для підтвердження <a href=\"%(email_url)s\">новий "
+"запит</a>."
 
 #: aleksis/core/templates/account/password_change.html:12
 msgid "Forgot your current password? Click here to reset it:"
@@ -1425,12 +1488,14 @@ msgstr "Зміна паролю вимкнена."
 msgid ""
 "\n"
 "            Users are not allowed to edit their own passwords. If you think\n"
-"            this is an error please contact one of your site administrators.\n"
+"            this is an error please contact one of your site "
+"administrators.\n"
 "          "
 msgstr ""
 "\n"
 "            Користувачам не дозволяється змінювати свої паролі.\n"
-"            Якщо Ви думаєте, що це помилка, зверніться до адміністраторів сайту.\n"
+"            Якщо Ви думаєте, що це помилка, зверніться до адміністраторів "
+"сайту.\n"
 "          "
 
 #: aleksis/core/templates/account/password_reset.html:5
@@ -1444,8 +1509,12 @@ msgid "Reset password"
 msgstr "Скинути пароль"
 
 #: aleksis/core/templates/account/password_reset.html:17
-msgid "Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it."
-msgstr "Забули пароль? Вкажіть нижче свою ел.пошту і ми надішлемо Вам листа для скидання пароля."
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll send you "
+"an e-mail allowing you to reset it."
+msgstr ""
+"Забули пароль? Вкажіть нижче свою ел.пошту і ми надішлемо Вам листа для "
+"скидання пароля."
 
 #: aleksis/core/templates/account/password_reset.html:30
 msgid ""
@@ -1469,7 +1538,8 @@ msgid ""
 msgstr ""
 "\n"
 "            Ми надіслали Вам ел.листа. Якщо Ви його не отримаєте протягом\n"
-"            декількох хвилин, зверніться, будь ласка, до адміністраторів сайту.\n"
+"            декількох хвилин, зверніться, будь ласка, до адміністраторів "
+"сайту.\n"
 "          "
 
 #: aleksis/core/templates/account/password_reset_from_key.html:15
@@ -1480,13 +1550,16 @@ msgstr "Несправний токен"
 #, python-format
 msgid ""
 "\n"
-"              The password reset link was invalid, possibly because it has already been used. Please request a <a href=\"%(passwd_reset_url)s\"\n"
+"              The password reset link was invalid, possibly because it has "
+"already been used. Please request a <a href=\"%(passwd_reset_url)s\"\n"
 "              class=\"blue-text text-lighten-2\">new password reset</a>.\n"
 "            "
 msgstr ""
 "\n"
-"              Посилання на скидання пароля недійсне або, ймовірно, вже використане. Зробіть, будь ласка, <a href=\"%(passwd_reset_url)s\"\n"
-"              class=\"blue-text text-lighten-2\">новий запит на скидання пароля</a>.\n"
+"              Посилання на скидання пароля недійсне або, ймовірно, вже "
+"використане. Зробіть, будь ласка, <a href=\"%(passwd_reset_url)s\"\n"
+"              class=\"blue-text text-lighten-2\">новий запит на скидання "
+"пароля</a>.\n"
 "            "
 
 #: aleksis/core/templates/account/password_reset_from_key.html:25
@@ -1524,7 +1597,7 @@ msgstr "Пароль змінений!"
 #: aleksis/core/templates/account/password_set.html:6
 #: aleksis/core/templates/account/password_set.html:12
 msgid "Set password"
-msgstr "Налаштування пароля"
+msgstr "Створіть пароль"
 
 #: aleksis/core/templates/account/signup.html:5
 #: aleksis/core/templates/account/signup.html:6
@@ -1535,8 +1608,10 @@ msgstr "Реєстрація"
 
 #: aleksis/core/templates/account/signup.html:12
 #, python-format
-msgid "Already have an account? Then please <a href=\"%(login_url)s\">sign in</a>."
-msgstr "Вже маєте обліковий запис? Тоді можете <a href=\"%(login_url)s\">увіти</a>."
+msgid ""
+"Already have an account? Then please <a href=\"%(login_url)s\">sign in</a>."
+msgstr ""
+"Вже маєте обліковий запис? Тоді можете <a href=\"%(login_url)s\">увіти</a>."
 
 #: aleksis/core/templates/account/signup_closed.html:5
 #: aleksis/core/templates/account/signup_closed.html:6
@@ -1575,13 +1650,17 @@ msgstr "Перевірте свою ел.пошту!"
 #: aleksis/core/templates/account/verification_sent.html:16
 msgid ""
 "\n"
-"            This part of the site requires us to verify that you are who you claim to be.\n"
-"            For this purpose, we require that you verify ownership of your e-mail address.\n"
+"            This part of the site requires us to verify that you are who you "
+"claim to be.\n"
+"            For this purpose, we require that you verify ownership of your e-"
+"mail address.\n"
 "          "
 msgstr ""
 "\n"
-"            Ця частина сайту вимагає перевірки, що Ви - саме той/та, хто має бути.\n"
-"            Саме для цього нам необхідно перевірити, що адреса ел.пошти належить саме Вам.\n"
+"            Ця частина сайту вимагає перевірки, що Ви - саме той/та, хто має "
+"бути.\n"
+"            Саме для цього нам необхідно перевірити, що адреса ел.пошти "
+"належить саме Вам.\n"
 "          "
 
 #: aleksis/core/templates/account/verification_sent.html:22
@@ -1594,8 +1673,10 @@ msgid ""
 msgstr ""
 "\n"
 "            Ми надіслали Вам для перевірки ел.листа.\n"
-"            Будь ласка, перейдіть за вказаним там посиланням. Якщо Ви не отримаєте\n"
-"            листа протягом декількох хвилин, зверніться, будь ласка, до нас.\n"
+"            Будь ласка, перейдіть за вказаним там посиланням. Якщо Ви не "
+"отримаєте\n"
+"            листа протягом декількох хвилин, зверніться, будь ласка, до "
+"нас.\n"
 "          "
 
 #: aleksis/core/templates/core/additional_field/edit.html:6
@@ -1760,7 +1841,7 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Система перевірить наявність таких проблеми:\n"
+"            Система перевірить наявність таких проблем:\n"
 "          "
 
 #: aleksis/core/templates/core/edit_dashboard.html:6
@@ -1772,29 +1853,39 @@ msgstr "Редагувати інформпанель"
 #: aleksis/core/templates/core/edit_dashboard.html:24
 msgid ""
 "\n"
-"          On this page you can arrange your personal dashboard. You can drag any items from \"Available widgets\" to \"Your\n"
-"          Dashboard\" or change the order by moving the widgets. After you have finished, please don't forget to click on\n"
+"          On this page you can arrange your personal dashboard. You can drag "
+"any items from \"Available widgets\" to \"Your\n"
+"          Dashboard\" or change the order by moving the widgets. After you "
+"have finished, please don't forget to click on\n"
 "          \"Save\".\n"
 "        "
 msgstr ""
 "\n"
-"          На цій сторінці Ви можете впорядкувати свою інформпанель. Перетягуйте будь-які елементи з \"Доступних віджетів\"\n"
-"          до \"Своєї інформпанелі\" або змінюйте порядок, перетягуючи віджети. Після закінчення не забудьте натиснути\n"
+"          На цій сторінці Ви можете впорядкувати свою інформпанель. "
+"Перетягуйте будь-які елементи з \"Доступних віджетів\"\n"
+"          до \"Своєї інформпанелі\" або змінюйте порядок, перетягуючи "
+"віджети. Після закінчення не забудьте натиснути\n"
 "          \"Зберегти\".\n"
 "        "
 
 #: aleksis/core/templates/core/edit_dashboard.html:30
 msgid ""
 "\n"
-"          On this page you can arrange the default dashboard which is shown when a user doesn't arrange his own\n"
-"          dashboard. You can drag any items from \"Available widgets\" to \"Default Dashboard\" or change the order\n"
-"          by moving the widgets. After you have finished, please don't forget to click on \"Save\".\n"
+"          On this page you can arrange the default dashboard which is shown "
+"when a user doesn't arrange his own\n"
+"          dashboard. You can drag any items from \"Available widgets\" to "
+"\"Default Dashboard\" or change the order\n"
+"          by moving the widgets. After you have finished, please don't "
+"forget to click on \"Save\".\n"
 "        "
 msgstr ""
 "\n"
-"          На цій сторінці Ви можете впорядкувати типову/стандартну інформпанель, яка відображається, якщо користувач\n"
-"          не впорядкував власну. Перетягуйте будь-які елементи з \"Доступних віджетів\" до \"Типової інформпанелі\" або змінюйте \n"
-"          порядок, перетягуючи віджети. Після закінчення не забудьте натиснути \"Зберегти\".\n"
+"          На цій сторінці Ви можете впорядкувати типову/стандартну "
+"інформпанель, яка відображається, якщо користувач\n"
+"          не впорядкував власну. Перетягуйте будь-які елементи з \"Доступних "
+"віджетів\" до \"Типової інформпанелі\" або змінюйте \n"
+"          порядок, перетягуючи віджети. Після закінчення не забудьте "
+"натиснути \"Зберегти\".\n"
 "        "
 
 #: aleksis/core/templates/core/edit_dashboard.html:48
@@ -1812,13 +1903,16 @@ msgstr "Типова інформпанель"
 #: aleksis/core/templates/core/group/child_groups.html:18
 msgid ""
 "\n"
-"          You can use this to assign child groups to groups. Please use the filters below to select groups you want to\n"
+"          You can use this to assign child groups to groups. Please use the "
+"filters below to select groups you want to\n"
 "          change and click \"Next\".\n"
 "        "
 msgstr ""
 "\n"
-"          Ви можете скористатися цим для призначення підлеглих груп до основних. Для обрання груп,\n"
-"          які хочете змінити, скористайтеся, будь ласка, фільтрами, що нижче та натисність \"Далі\".\n"
+"          Ви можете скористатися цим для призначення підлеглих груп до "
+"основних. Для обрання груп,\n"
+"          які хочете змінити, скористайтеся, будь ласка, фільтрами, що нижче "
+"та натисність \"Далі\".\n"
 "        "
 
 #: aleksis/core/templates/core/group/child_groups.html:31
@@ -1844,7 +1938,8 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Оберіть, будь ласка, декілька груп у порядку, за яким призначати.\n"
+"            Оберіть, будь ласка, декілька груп у порядку, за яким "
+"призначати.\n"
 "          "
 
 #: aleksis/core/templates/core/group/child_groups.html:72
@@ -1858,14 +1953,18 @@ msgstr "Обережно, будь ласка!"
 #: aleksis/core/templates/core/group/child_groups.html:79
 msgid ""
 "\n"
-"            If you click \"Back\" or \"Next\" the current group assignments are not saved.\n"
-"            If you click \"Save\", you will overwrite all existing child group relations for this group with what you\n"
+"            If you click \"Back\" or \"Next\" the current group assignments "
+"are not saved.\n"
+"            If you click \"Save\", you will overwrite all existing child "
+"group relations for this group with what you\n"
 "            selected on this page.\n"
 "          "
 msgstr ""
 "\n"
-"            Якщо натиснете \"Назад\" або \"Далі\" призначення цієї групи не збережуться.\n"
-"            Якщо натиснете \"Зберегти\", усі існуючі зв'язки підлеглої групи з цією групою будуть замінені на\n"
+"            Якщо натиснете \"Назад\" або \"Далі\" призначення цієї групи не "
+"збережуться.\n"
+"            Якщо натиснете \"Зберегти\", усі існуючі зв'язки підлеглої групи "
+"з цією групою будуть замінені на\n"
 "            обрані на цій сторінці.\n"
 "          "
 
@@ -1902,22 +2001,27 @@ msgstr "Редагувати групу"
 #: aleksis/core/templates/core/group/full.html:38
 #: aleksis/core/templates/core/person/full.html:40
 #: aleksis/core/templates/core/person/full.html:100
+#: aleksis/core/templates/core/group/full.html:40
 msgid "Change preferences"
 msgstr "Змінити властивості"
 
 #: aleksis/core/templates/core/group/full.html:64
+#: aleksis/core/templates/core/group/full.html:68
 msgid "Statistics"
 msgstr "Статистика"
 
 #: aleksis/core/templates/core/group/full.html:67
+#: aleksis/core/templates/core/group/full.html:73
 msgid "Count of members"
 msgstr "Кількість учасників"
 
 #: aleksis/core/templates/core/group/full.html:71
+#: aleksis/core/templates/core/group/full.html:81
 msgid "Average age"
 msgstr "Середній вік"
 
 #: aleksis/core/templates/core/group/full.html:76
+#: aleksis/core/templates/core/group/full.html:90
 msgid "Age range"
 msgstr "Віковий діапазон"
 
@@ -1944,7 +2048,7 @@ msgstr "Очистити"
 
 #: aleksis/core/templates/core/group/list.html:28
 msgid "Selected groups"
-msgstr "Обрані групи"
+msgstr "Вибрані групи"
 
 #: aleksis/core/templates/core/group_type/edit.html:6
 #: aleksis/core/templates/core/group_type/edit.html:7
@@ -1982,7 +2086,9 @@ msgid "ICal Feeds"
 msgstr "iCal-стрічки"
 
 #: aleksis/core/templates/core/ical/ical_list.html:8
-msgid "These are URLs for different Calendar Feeds in the iCal (.ics) format. You can create as many as you want and import them in your calendar software."
+msgid ""
+"These are URLs for different Calendar Feeds in the iCal (.ics) format. You "
+"can create as many as you want and import them in your calendar software."
 msgstr ""
 "Тут містяться посилання на різні стрічки календарів у форматі iCal (.ics). "
 "Ви можете створити їх стільки, скільки Вам необхідно та імпортувати їх у ПЗ "
@@ -1999,12 +2105,14 @@ msgstr "Додому"
 #: aleksis/core/templates/core/index.html:49
 msgid ""
 "\n"
-"        You didn't customise your dashboard so that you see the system default. Please click on \"Edit dashboard\" to\n"
+"        You didn't customise your dashboard so that you see the system "
+"default. Please click on \"Edit dashboard\" to\n"
 "        customise your personal dashboard.\n"
 "      "
 msgstr ""
 "\n"
-"        Ви ще не налаштували свою інформпанель, тож поки що бачите типову/стандартну. Для налаштування \n"
+"        Ви ще не налаштували свою інформпанель, тож поки що бачите типову/"
+"стандартну. Для налаштування \n"
 "         власної інформпанелі клацніть \"Редагувати інформпанель\".\n"
 "      "
 
@@ -2045,21 +2153,26 @@ msgstr "Щодо AlekSIS"
 #: aleksis/core/templates/core/pages/about.html:17
 msgid ""
 "\n"
-"              This platform is powered by AlekSIS®, a web-based school information system (SIS) which can be used\n"
-"              to manage and/or publish organisational artifacts of educational institutions. AlekSIS is free software and\n"
+"              This platform is powered by AlekSIS®, a web-based school "
+"information system (SIS) which can be used\n"
+"              to manage and/or publish organisational artifacts of "
+"educational institutions. AlekSIS is free software and\n"
 "              can be used by anyone.\n"
 "            "
 msgstr ""
 "\n"
-"              Ця платформа базується на AlekSIS®, веб-інструменті інформаційної системи для навчання (SIS) за допомогою якої\n"
-"              можна керувати та/або висвітлювати організаційні елементи навчальних закладів. AlekSIS - безплатне ПЗ\n"
+"              Ця платформа базується на AlekSIS®, веб-інструменті "
+"інформаційної системи для навчання (SIS) за допомогою якої\n"
+"              можна керувати та/або висвітлювати організаційні елементи "
+"навчальних закладів. AlekSIS - безплатне ПЗ\n"
 "              і ним може користуватися будь-хто.\n"
 "            "
 
 #: aleksis/core/templates/core/pages/about.html:24
 msgid ""
 "\n"
-"              AlekSIS® is a registered trademark of the AlekSIS open source project, represented by Teckids e.V.\n"
+"              AlekSIS® is a registered trademark of the AlekSIS open source "
+"project, represented by Teckids e.V.\n"
 "            "
 msgstr ""
 "\n"
@@ -2082,15 +2195,17 @@ msgstr "Ліцензійна інформація"
 #: aleksis/core/templates/core/pages/about.html:42
 msgid ""
 "\n"
-"              The core and the official apps of AlekSIS are licenced under the EUPL, version 1.2 or later. For licence\n"
-"              information from third-party apps, if installed, refer to the respective components below. The\n"
+"              The core and the official apps of AlekSIS are licenced under "
+"the EUPL, version 1.2 or later. For licence\n"
+"              information from third-party apps, if installed, refer to the "
+"respective components below. The\n"
 "              licences are marked like this:\n"
 "            "
 msgstr ""
 "\n"
 "              Ядро та офіційні додатки AlekSIS ліцензовані EUPL, версії 1.2 "
 "та новіше. Для отримання інформації\n"
-"              щодо додатків третіх сторін, якщо такі встановлені, зверніться "
+"              щодо додатків третіх сторін, якщо такі встановлені, перейдіть "
 "до відповідних компонентів нижче.\n"
 "              Ці ліцензії мають таку позначку:\n"
 "            "
@@ -2141,7 +2256,8 @@ msgstr ""
 #: aleksis/core/templates/core/pages/progress.html:27
 msgid ""
 "\n"
-"              Without activated JavaScript the progress status can't be updated.\n"
+"              Without activated JavaScript the progress status can't be "
+"updated.\n"
 "            "
 msgstr ""
 "\n"
@@ -2165,7 +2281,8 @@ msgstr "Активований режим обслуговування"
 #: aleksis/core/templates/core/pages/system_status.html:24
 msgid ""
 "\n"
-"                Only admin and visitors from internal IPs can access thesite.\n"
+"                Only admin and visitors from internal IPs can access "
+"thesite.\n"
 "              "
 msgstr ""
 "\n"
@@ -2188,7 +2305,8 @@ msgstr "Активований режим налагодження"
 #: aleksis/core/templates/core/pages/system_status.html:49
 msgid ""
 "\n"
-"                The web server throws back debug information on errors. Do not use in production!\n"
+"                The web server throws back debug information on errors. Do "
+"not use in production!\n"
 "              "
 msgstr ""
 "\n"
@@ -2203,7 +2321,8 @@ msgstr "Режим налагодження деактивований"
 #: aleksis/core/templates/core/pages/system_status.html:58
 msgid ""
 "\n"
-"                Debug mode is disabled. Default error pages are displayed on errors.\n"
+"                Debug mode is disabled. Default error pages are displayed on "
+"errors.\n"
 "              "
 msgstr ""
 "\n"
@@ -2258,7 +2377,8 @@ msgstr "Спроба генерації PDF"
 #: aleksis/core/templates/core/pages/test_pdf.html:14
 msgid ""
 "\n"
-"        This simple view can be used to ensure the correct function of the built-in PDF generation system.\n"
+"        This simple view can be used to ensure the correct function of the "
+"built-in PDF generation system.\n"
 "      "
 msgstr ""
 "\n"
@@ -2321,17 +2441,20 @@ msgid "Unknown"
 msgstr "Невідомо"
 
 #: aleksis/core/templates/core/partials/language_form.html:15
+#: aleksis/core/templates/core/partials/language_form.html:17
 msgid "Language"
 msgstr "Мова"
 
 #: aleksis/core/templates/core/partials/language_form.html:27
+#: aleksis/core/templates/core/partials/language_form.html:29
 msgid "Select language"
 msgstr "Оберіть мову"
 
 #: aleksis/core/templates/core/partials/no_person.html:12
 msgid ""
 "\n"
-"            Your administrator account is not linked to any person. Therefore,\n"
+"            Your administrator account is not linked to any person. "
+"Therefore,\n"
 "            a dummy person has been linked to your account.\n"
 "          "
 msgstr ""
@@ -2351,8 +2474,10 @@ msgid ""
 msgstr ""
 "\n"
 "            Ваш обліковий запис не пов'язаний з фізособою. Це означає,\n"
-"            що Ви не маєте жодного доступу до навчальної інформації. Зверніться,\n"
-"            будь ласка, до адміністраторів AlekSIS у Вашому навчальному закладі.\n"
+"            що Ви не маєте жодного доступу до навчальної інформації. "
+"Зверніться,\n"
+"            будь ласка, до адміністраторів AlekSIS у Вашому навчальному "
+"закладі.\n"
 "          "
 
 #: aleksis/core/templates/core/perms/assign.html:12
@@ -2419,7 +2544,7 @@ msgstr "Маскування"
 #: aleksis/core/templates/core/person/full.html:54
 #: aleksis/core/templates/core/person/full.html:114
 msgid "Invite user"
-msgstr "Запрошення користувача"
+msgstr "Запросити користувача"
 
 #: aleksis/core/templates/core/person/full.html:121
 msgid "Contact details"
@@ -2478,12 +2603,14 @@ msgid "The invite feature is disabled."
 msgstr "Функція запрошення деактивована."
 
 #: aleksis/core/templates/invitations/disabled.html:15
-msgid "To enable it, switch on the corresponding checkbox in the authentication section of the "
-msgstr "Для активації увімкніть відповідний чекбокс в розділі авторизації "
+msgid ""
+"To enable it, switch on the corresponding checkbox in the authentication "
+"section of the "
+msgstr "Для активації увімкніть відповідний чекбокс в розділі авторизації на "
 
 #: aleksis/core/templates/invitations/disabled.html:16
 msgid "site preferences page"
-msgstr "сторінка властивостей сайту"
+msgstr "сторінці властивостей сайту"
 
 #: aleksis/core/templates/invitations/enter.html:21
 msgid "Accept your invitation"
@@ -2503,7 +2630,7 @@ msgstr ""
 
 #: aleksis/core/templates/invitations/enter.html:37
 msgid "Accept invite"
-msgstr "Прийняття запрошення"
+msgstr "Прийняти запрошення"
 
 #: aleksis/core/templates/invitations/forms/_invite.html:9
 #: aleksis/core/templates/invitations/forms/_invite.html:10
@@ -2559,7 +2686,7 @@ msgstr "Дозволені межі дії"
 
 #: aleksis/core/templates/oauth2_provider/application/detail.html:71
 msgid "Redirect URIs"
-msgstr "URI-адреси перенаправлення"
+msgstr "Перенаправлення URI-адрес"
 
 #: aleksis/core/templates/oauth2_provider/application/detail.html:79
 msgid "Skip Authorisation"
@@ -2638,14 +2765,18 @@ msgstr "Немає інтернет-з'єднання."
 #: aleksis/core/templates/offline.html:14
 msgid ""
 "\n"
-"      There was an error accessing this page. You probably don't have an internet connection. Check to see if your WiFi\n"
-"      or mobile data is turned on and try again. If you think you are connected, please contact the system\n"
+"      There was an error accessing this page. You probably don't have an "
+"internet connection. Check to see if your WiFi\n"
+"      or mobile data is turned on and try again. If you think you are "
+"connected, please contact the system\n"
 "      administrators:\n"
 "    "
 msgstr ""
 "\n"
-"      Під час доступу до цієї сторінки виникла помилка. Можливо, у Вас проблема з інтернетом. Переконайтеся, що Ваш WiFi\n"
-"      або мобільний увімкнені та спробуйте ще раз. Якщо Ви думаєте, що із з'єднанням все добре, зверніться\n"
+"      Під час доступу до цієї сторінки виникла помилка. Можливо, у Вас "
+"проблема з інтернетом. Переконайтеся, що Ваш WiFi\n"
+"      або мобільний інтернет увімкнені та спробуйте ще раз. Якщо Ви думаєте, "
+"що із з'єднанням все добре, зверніться\n"
 "      до системних адміністраторів:\n"
 "    "
 
@@ -2681,12 +2812,14 @@ msgstr "Помилка входу облікового запису третьо
 #: aleksis/core/templates/socialaccount/authentication_error.html:15
 msgid ""
 "\n"
-"            An error occurred while attempting to login via your third-party account.\n"
+"            An error occurred while attempting to login via your third-party "
+"account.\n"
 "            Please contact one of your site administrators.\n"
 "          "
 msgstr ""
 "\n"
-"            Під час спроби входу з Вашим стороннім обліковим записом виникла помилка входу.\n"
+"            Під час спроби входу з Вашим стороннім обліковим записом виникла "
+"помилка входу.\n"
 "            Зверніться, будь ласка, до адміністратора сайту.\n"
 "          "
 
@@ -2734,13 +2867,15 @@ msgstr "Вхід скасований"
 #, python-format
 msgid ""
 "\n"
-"            You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to <a href=\"%(login_url)s\">sign in</a>.\n"
+"            You decided to cancel logging in to our site using one of your "
+"existing accounts. If this was a mistake, please proceed to <a href="
+"\"%(login_url)s\">sign in</a>.\n"
 "          "
 msgstr ""
 "\n"
 "            Схоже, що Ви скасували вхід до нашого сайту з одним із Ваших "
-"облікових записів. Якщо це сталося помилково, Ви можете <a href=\""
-"%(login_url)s\">продовжити вхід тут</a>.\n"
+"облікових записів. Якщо це сталося помилково, Ви можете <a href="
+"\"%(login_url)s\">продовжити вхід тут</a>.\n"
 "          "
 
 #: aleksis/core/templates/socialaccount/signup.html:12
@@ -2838,7 +2973,8 @@ msgstr "Система виявила деякі нові проблеми з В
 #: aleksis/core/templates/templated_email/data_checks.email:6
 msgid ""
 "the system detected some new problems with your data.\n"
-"Please take some time to inspect them and solve the issues or mark them as ignored."
+"Please take some time to inspect them and solve the issues or mark them as "
+"ignored."
 msgstr ""
 "система виявила деякі нові проблеми з Вашими даними.\n"
 "Приділіть, будь ласка, трохи часу для їх перевірки та вирішення проблем або "
@@ -2848,7 +2984,8 @@ msgstr ""
 msgid ""
 "\n"
 "   the system detected some new problems with your data.\n"
-"   Please take some time to inspect them and solve the issues or mark them as ignored.\n"
+"   Please take some time to inspect them and solve the issues or mark them "
+"as ignored.\n"
 "  "
 msgstr ""
 "\n"
@@ -2878,7 +3015,7 @@ msgstr "Привіт, %(notification_user)s,"
 #: aleksis/core/templates/templated_email/notification.email:9
 #: aleksis/core/templates/templated_email/notification.email:23
 msgid "we got a new notification for you:"
-msgstr "у нас для тебе нове сповіщення:"
+msgstr "у нас для Вас нове сповіщення:"
 
 #: aleksis/core/templates/templated_email/notification.email:15
 #: aleksis/core/templates/templated_email/notification.email:29
@@ -2933,15 +3070,17 @@ msgstr "Увімкнути двох-факторну автентифікаці
 #: aleksis/core/templates/two_factor/core/backup_tokens.html:9
 #: aleksis/core/templates/two_factor/profile/profile.html:46
 msgid "Backup Tokens"
-msgstr "Бекап Токенів"
+msgstr "Резервні Токени"
 
 #: aleksis/core/templates/two_factor/core/backup_tokens.html:14
 msgid ""
 "\n"
 "        Backup tokens can be used when your primary and backup\n"
 "        phone numbers aren't available. The backup tokens below can be used\n"
-"        for login verification. If you've used up all your backup tokens, you\n"
-"        can generate a new set of backup tokens. Only the backup tokens shown\n"
+"        for login verification. If you've used up all your backup tokens, "
+"you\n"
+"        can generate a new set of backup tokens. Only the backup tokens "
+"shown\n"
 "        below will be valid.\n"
 "      "
 msgstr ""
@@ -2969,7 +3108,7 @@ msgstr ""
 
 #: aleksis/core/templates/two_factor/core/backup_tokens.html:39
 msgid "You don't have any backup codes yet."
-msgstr "У Вас поки що немає бекапів кодів."
+msgstr "У Вас поки що немає резервних кодів."
 
 #: aleksis/core/templates/two_factor/core/backup_tokens.html:45
 msgid "Back to Account Security"
@@ -3009,7 +3148,8 @@ msgstr "Для перегляду цієї сторінки, будь ласка
 #: aleksis/core/templates/two_factor/core/login.html:65
 msgid ""
 "\n"
-"                        We are calling your phone right now, please enter the\n"
+"                        We are calling your phone right now, please enter "
+"the\n"
 "                        digits you hear.\n"
 "                      "
 msgstr ""
@@ -3022,7 +3162,8 @@ msgstr ""
 #: aleksis/core/templates/two_factor/core/login.html:70
 msgid ""
 "\n"
-"                        We sent you a text message, please enter the tokens we\n"
+"                        We sent you a text message, please enter the tokens "
+"we\n"
 "                        sent.\n"
 "                      "
 msgstr ""
@@ -3040,23 +3181,26 @@ msgid ""
 "                      "
 msgstr ""
 "\n"
-"                        Напишіть, будь ласка, токен, який Ви отримали своїм\n"
-"                        генератором токенів.\n"
+"                        Напишіть, будь ласка, токен, з Вашого\n"
+"                        генератора токенів.\n"
 "                      "
 
 #: aleksis/core/templates/two_factor/core/login.html:81
 msgid ""
 "\n"
-"                      Use this form for entering backup tokens for logging in.\n"
-"                      These tokens have been generated for you to print and keep safe. Please\n"
-"                      enter one of these backup tokens to login to your account.\n"
+"                      Use this form for entering backup tokens for logging "
+"in.\n"
+"                      These tokens have been generated for you to print and "
+"keep safe. Please\n"
+"                      enter one of these backup tokens to login to your "
+"account.\n"
 "                    "
 msgstr ""
 "\n"
 "                      Для входу скористайтеся формою для введення резервних "
 "токенів.\n"
-"                      Ці токени були згенеровані Вам для друку та зберігання "
-"у надійному місці.\n"
+"                      Ці токени були згенеровані, щоб Ви їх роздрукували та "
+"зберігали у надійному місці.\n"
 "                      Щоб увійти напишіть, будь ласка, один з резервних "
 "токенів.\n"
 "                    "
@@ -3088,13 +3232,14 @@ msgstr "Дозвіл відсутній"
 #: aleksis/core/templates/two_factor/core/otp_required.html:10
 msgid ""
 "The page you requested, enforces users to verify using\n"
-"          two-factor authentication for security reasons. You need to enable these\n"
+"          two-factor authentication for security reasons. You need to enable "
+"these\n"
 "          security features in order to access this page."
 msgstr ""
 "Для перегляду запитуванної сторінки, з огляду на безпеку, необхідна "
 "додаткова\n"
-"          перевірка користувача з використанням двохфакторної автентифікації."
-"\n"
+"          перевірка користувача з використанням двохфакторної "
+"автентифікації.\n"
 "          Для доступу до цієї сторінки Вам потрібно увімкнути ці функції "
 "безпеки."
 
@@ -3161,7 +3306,8 @@ msgstr ""
 msgid ""
 "\n"
 "        To start using a token generator, please use your\n"
-"        favourite two factor authentication (TOTP) app to scan the QR code below.\n"
+"        favourite two factor authentication (TOTP) app to scan the QR code "
+"below.\n"
 "        Then, enter the token generated by the app.\n"
 "      "
 msgstr ""
@@ -3201,7 +3347,8 @@ msgstr ""
 #: aleksis/core/templates/two_factor/core/setup.html:50
 msgid ""
 "\n"
-"            We are calling your phone right now, please enter the digits you hear.\n"
+"            We are calling your phone right now, please enter the digits you "
+"hear.\n"
 "          "
 msgstr ""
 "\n"
@@ -3223,16 +3370,22 @@ msgstr ""
 #: aleksis/core/templates/two_factor/core/setup.html:63
 msgid ""
 "\n"
-"          We've encountered an issue with the selected authentication method. Please\n"
-"          go back and verify that you entered your information correctly, try\n"
-"          again, or use a different authentication method instead. If the issue\n"
+"          We've encountered an issue with the selected authentication "
+"method. Please\n"
+"          go back and verify that you entered your information correctly, "
+"try\n"
+"          again, or use a different authentication method instead. If the "
+"issue\n"
 "          persists, contact the site administrator.\n"
 "        "
 msgstr ""
 "\n"
-"          Ми помітили, що існує проблема з використанням обраного методу авторизації. Поверніться,\n"
-"          будь ласка, назад, та переконайтеся, що необхідні дані вказані правильно\n"
-"          і спробуйте увійте ще раз, або ж скористайтеся іншим варіантом входу. Якщо ж\n"
+"          Ми помітили, що існує проблема з використанням обраного методу "
+"авторизації. Поверніться,\n"
+"          будь ласка, назад, та переконайтеся, що необхідні дані вказані "
+"правильно\n"
+"          і спробуйте увійте ще раз, або ж скористайтеся іншим варіантом "
+"входу. Якщо ж\n"
 "          проблема залишається, зверніться до адміністратора сайту.\n"
 "        "
 
@@ -3258,7 +3411,8 @@ msgstr "Двохфакторна автентифікація успішно у
 #: aleksis/core/templates/two_factor/core/setup_complete.html:14
 msgid ""
 "\n"
-"        Congratulations, you've successfully enabled two-factor authentication.\n"
+"        Congratulations, you've successfully enabled two-factor "
+"authentication.\n"
 "      "
 msgstr ""
 "\n"
@@ -3279,7 +3433,8 @@ msgstr "Створити резервні коди"
 msgid ""
 "\n"
 "          However, it might happen that you don't have access to\n"
-"          your primary token device. To enable account recovery, generate backup codes\n"
+"          your primary token device. To enable account recovery, generate "
+"backup codes\n"
 "          or add a phone number.\n"
 "        "
 msgstr ""
@@ -3304,7 +3459,9 @@ msgid "Disable Two-Factor Authentication"
 msgstr "Вимкнути двохфакторну автентифікацію"
 
 #: aleksis/core/templates/two_factor/profile/disable.html:12
-msgid "You are about to disable two-factor authentication. This weakens your account security, are you sure?"
+msgid ""
+"You are about to disable two-factor authentication. This weakens your "
+"account security, are you sure?"
 msgstr ""
 "Ви вимикаєте двохфакторну автентифікацію. Це знизить захист Вашого "
 "облікового запису. Ви впевнені?"
@@ -3408,7 +3565,7 @@ msgid ""
 "      "
 msgstr ""
 "\n"
-"        Двохфакторна автентифікація для вашого облікового запису\n"
+"        Двохфакторна автентифікація для Вашого облікового запису\n"
 "        не активована. Для підвищення безпеки облікового запису увімкніть\n"
 "        двохфакторну автентифікацію.\n"
 "      "
@@ -3441,47 +3598,48 @@ msgstr "Під час створення файлу PDF виникла проб
 msgid "Download PDF"
 msgstr "Звантажити PDF"
 
-#: aleksis/core/views.py:292
+#: aleksis/core/views.py:292 aleksis/core/views.py:294
 msgid "The school term has been created."
 msgstr "Навчальний рік створений."
 
-#: aleksis/core/views.py:304
+#: aleksis/core/views.py:304 aleksis/core/views.py:306
 msgid "The school term has been saved."
 msgstr "Навчальний рік збережений."
 
-#: aleksis/core/views.py:424
+#: aleksis/core/views.py:424 aleksis/core/views.py:426
 msgid "The child groups were successfully saved."
 msgstr "Підлеглі групи збережені."
 
 #: aleksis/core/views.py:443 aleksis/core/views.py:453
+#: aleksis/core/views.py:445 aleksis/core/views.py:455
 msgid "The person has been saved."
 msgstr "Особа збережена."
 
-#: aleksis/core/views.py:503
+#: aleksis/core/views.py:503 aleksis/core/views.py:505
 msgid "The group has been saved."
 msgstr "Група збережена."
 
-#: aleksis/core/views.py:600
+#: aleksis/core/views.py:600 aleksis/core/views.py:602
 msgid "The announcement has been saved."
 msgstr "Оголошення збережене."
 
-#: aleksis/core/views.py:616
+#: aleksis/core/views.py:616 aleksis/core/views.py:618
 msgid "The announcement has been deleted."
 msgstr "Оголошення видалене."
 
-#: aleksis/core/views.py:684
+#: aleksis/core/views.py:684 aleksis/core/views.py:686
 msgid "The requested preference registry does not exist"
 msgstr "Журналу із запитаними властивостями не існує"
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:703 aleksis/core/views.py:705
 msgid "The preferences have been saved successfully."
 msgstr "Властивості збережені."
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:727 aleksis/core/views.py:729
 msgid "The person has been deleted."
 msgstr "Особа видалена."
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:741 aleksis/core/views.py:743
 msgid "The group has been deleted."
 msgstr "Група видалена."
 
@@ -3489,113 +3647,118 @@ msgstr "Група видалена."
 msgid "The additional_field has been saved."
 msgstr "Додаткове поле збережене."
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:807 aleksis/core/views.py:809
 msgid "The additional field has been deleted."
 msgstr "Додаткове поле видалене."
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:832 aleksis/core/views.py:834
 msgid "The group type has been saved."
 msgstr "Тип групи збережений."
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:862 aleksis/core/views.py:864
 msgid "The group type has been deleted."
 msgstr "Тип групи видалений."
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:895 aleksis/core/views.py:897
 msgid "Progress: Run data checks"
 msgstr "Перебіг: Запуск перевірки даних"
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:896 aleksis/core/views.py:898
 msgid "Run data checks …"
 msgstr "Запускається перевірка даних …"
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:897 aleksis/core/views.py:899
 msgid "The data checks were run successfully."
 msgstr "Перевірка даних успішно запущена."
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:898 aleksis/core/views.py:900
 msgid "There was a problem while running data checks."
 msgstr "Під час запуску перевірки даних виникла проблема."
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:914 aleksis/core/views.py:916
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
-msgstr "Варіант розв'язання {solve_option_obj.verbose_name} "
+msgstr "Варіант розв'язання \"{solve_option_obj.verbose_name}\" "
 
-#: aleksis/core/views.py:924
+#: aleksis/core/views.py:924 aleksis/core/views.py:926
 msgid "The requested solve option does not exist"
 msgstr "Запитаний варіант розв'язання не існує"
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:956 aleksis/core/views.py:958
 msgid "The dashboard widget has been saved."
 msgstr "Віджет інформпанелі збережений."
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:986 aleksis/core/views.py:988
 msgid "The dashboard widget has been created."
 msgstr "Віджет інформпанелі створений."
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:996 aleksis/core/views.py:998
 msgid "The dashboard widget has been deleted."
 msgstr "Віджет інформпанелі видалений."
 
-#: aleksis/core/views.py:1067
+#: aleksis/core/views.py:1067 aleksis/core/views.py:1069
 msgid "Your dashboard configuration has been saved successfully."
 msgstr "Ваша конфігурація інформпанелі збережена."
 
-#: aleksis/core/views.py:1069
+#: aleksis/core/views.py:1069 aleksis/core/views.py:1071
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr "Конфігурація типової/стандартної інформпанелі збережена."
 
-#: aleksis/core/views.py:1145
+#: aleksis/core/views.py:1145 aleksis/core/views.py:1147
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr "Запрошення успішно створене. Код запрошення: {code}"
 
-#: aleksis/core/views.py:1236
+#: aleksis/core/views.py:1236 aleksis/core/views.py:1238
 msgid "We have successfully assigned the permissions."
 msgstr "Ми успішно призначили дозволи."
 
-#: aleksis/core/views.py:1246
+#: aleksis/core/views.py:1246 aleksis/core/views.py:1248
 msgid "The global user permission has been deleted."
 msgstr "Глобальний користувацький дозвіл видалений."
 
-#: aleksis/core/views.py:1256
+#: aleksis/core/views.py:1256 aleksis/core/views.py:1258
 msgid "The global group permission has been deleted."
 msgstr "Глобальний груповий дозвіл видалений."
 
-#: aleksis/core/views.py:1266
+#: aleksis/core/views.py:1266 aleksis/core/views.py:1268
 msgid "The object user permission has been deleted."
 msgstr "Об'єктний користувацький дозвіл видалений."
 
-#: aleksis/core/views.py:1276
+#: aleksis/core/views.py:1276 aleksis/core/views.py:1278
 msgid "The object group permission has been deleted."
 msgstr "Об'єктний груповий дозвіл видалений."
 
-#: aleksis/core/views.py:1344
+#: aleksis/core/views.py:1344 aleksis/core/views.py:1346
 msgid "The requested PDF file does not exist"
 msgstr "Запитаний файл PDF не існує"
 
 #: aleksis/core/views.py:1353 aleksis/core/views.py:1357
+#: aleksis/core/views.py:1355 aleksis/core/views.py:1359
 msgid "The requested task does not exist or is not accessible"
 msgstr "Запитане завдання не існує або не доступне"
 
-#: aleksis/core/views.py:1409
-msgid "The third-party account could not be disconnected because it is the only login method available."
+#: aleksis/core/views.py:1409 aleksis/core/views.py:1411
+msgid ""
+"The third-party account could not be disconnected because it is the only "
+"login method available."
 msgstr ""
 "Обліковий запис третьої сторони не можна від'єднати оскільки він єдиний "
 "спосіб для входу."
 
-#: aleksis/core/views.py:1416
+#: aleksis/core/views.py:1416 aleksis/core/views.py:1418
 msgid "The third-party account has been successfully disconnected."
 msgstr "Обліковий запис третьої сторони успішно від'єднаний."
 
-#: aleksis/core/views.py:1487
-msgid "Person was invited successfully and an email with further instructions has been send to them."
+#: aleksis/core/views.py:1487 aleksis/core/views.py:1489
+msgid ""
+"Person was invited successfully and an email with further instructions has "
+"been send to them."
 msgstr ""
 "Особа успішно запрошена. Лист з інструкціями щодо наступних дій надісланий "
 "на її ел.пошту."
 
-#: aleksis/core/views.py:1498
+#: aleksis/core/views.py:1498 aleksis/core/views.py:1500
 msgid "Person was already invited."
 msgstr "Особа вже була запрошена."
 
@@ -3610,3 +3773,61 @@ msgstr "Стрічка iCal успішно видалена"
 #: aleksis/core/views.py:1616
 msgid "ICal feed created successfully"
 msgstr "Стрічка iCal успішно створена"
+
+#: aleksis/core/data_checks.py:330
+#, python-format
+msgid "Validate field %s of model %s."
+msgstr "Перевірте поле %s моделі %s."
+
+#: aleksis/core/data_checks.py:332
+#, python-format
+msgid "The field %s couldn't be validated successfully."
+msgstr "Поле %s не вдалося успішно перевірити."
+
+#: aleksis/core/models.py:181
+msgid "other"
+msgstr "інший"
+
+#: aleksis/core/settings.py:543
+msgid "Ukrainian"
+msgstr "Українська"
+
+#: aleksis/core/templates/500.html:10
+msgid ""
+"An unexpected error has\n"
+"          occurred."
+msgstr ""
+"Сталася неочікувана\n"
+"          помилка."
+
+#: aleksis/core/templates/core/group/full.html:93
+#, python-format
+msgid ""
+"\n"
+"              %(min)s years to %(max)s years\n"
+"            "
+msgstr ""
+"\n"
+"              %(min)s років до %(max)s років\n"
+"            "
+
+#: aleksis/core/templates/core/ical/ical_list.html:4
+#: aleksis/core/templates/core/ical/ical_list.html:5
+msgid "iCal Feeds"
+msgstr "iCal-стрічки"
+
+#: aleksis/core/views.py:775
+msgid "The additional field has been saved."
+msgstr "Додаткове поле збережене."
+
+#: aleksis/core/views.py:1600
+msgid "iCal feed updated successfully"
+msgstr "Стрічка iCal успішно оновлена"
+
+#: aleksis/core/views.py:1610
+msgid "iCal feed deleted successfully"
+msgstr "Стрічка iCal успішно видалена"
+
+#: aleksis/core/views.py:1618
+msgid "iCal feed created successfully"
+msgstr "Стрічка iCal успішно створена"
diff --git a/aleksis/core/locale/uk/LC_MESSAGES/djangojs.po b/aleksis/core/locale/uk/LC_MESSAGES/djangojs.po
index c224b04ae5ef93df09b6ad7c76288e590557bf0c..fcd6122a3fdc075256f8c08626ad9d806d4241be 100644
--- a/aleksis/core/locale/uk/LC_MESSAGES/djangojs.po
+++ b/aleksis/core/locale/uk/LC_MESSAGES/djangojs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,10 +16,7 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != "
-"11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % "
-"100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || "
-"(n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
+"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
 
 #: aleksis/core/static/js/main.js:66
 msgid "Today"
@@ -34,9 +31,5 @@ msgid "OK"
 msgstr "OK"
 
 #: aleksis/core/static/js/main.js:195
-msgid ""
-"This page may contain outdated information since there is no internet "
-"connection."
-msgstr ""
-"Через відсутність інтернет-з'єднання ця сторінка може містити застарілу "
-"інформацію."
+msgid "This page may contain outdated information since there is no internet connection."
+msgstr "Через відсутність інтернет-з'єднання ця сторінка може містити застарілу інформацію."
diff --git a/aleksis/core/migrations/0041_update_gender_choices.py b/aleksis/core/migrations/0041_update_gender_choices.py
new file mode 100644
index 0000000000000000000000000000000000000000..f9f3448ae5332da071e44318db97a0649ba487eb
--- /dev/null
+++ b/aleksis/core/migrations/0041_update_gender_choices.py
@@ -0,0 +1,19 @@
+# Generated by Django 3.2.13 on 2022-06-05 10:55
+
+from django.db import migrations, models
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0040_oauth_allowed_scopes_max_length_255'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='person',
+            name='sex',
+            field=models.CharField(blank=True, choices=[('f', 'female'), ('m', 'male'), ('x', 'other')], max_length=1, verbose_name='Sex'),
+        ),
+    ]
diff --git a/aleksis/core/models.py b/aleksis/core/models.py
index 462c3a2f8bde981a55745cb06b04f4ad54f10da3..2f603ae0d2e2813b50f2024056cb460d71b4e484 100644
--- a/aleksis/core/models.py
+++ b/aleksis/core/models.py
@@ -51,7 +51,12 @@ from oauth2_provider.models import (
 from phonenumber_field.modelfields import PhoneNumberField
 from polymorphic.models import PolymorphicModel
 
-from aleksis.core.data_checks import BrokenDashboardWidgetDataCheck, DataCheck, DataCheckRegistry
+from aleksis.core.data_checks import (
+    BrokenDashboardWidgetDataCheck,
+    DataCheck,
+    DataCheckRegistry,
+    field_validation_data_check_factory,
+)
 
 from .feeds import PersonalICalFeedBase
 from .managers import (
@@ -173,7 +178,7 @@ class Person(ExtensibleModel):
 
     icon_ = "person"
 
-    SEX_CHOICES = [("f", _("female")), ("m", _("male"))]
+    SEX_CHOICES = [("f", _("female")), ("m", _("male")), ("x", _("other"))]
 
     user = models.OneToOneField(
         get_user_model(),
@@ -1064,6 +1069,8 @@ class CustomMenu(ExtensibleModel):
 class CustomMenuItem(ExtensibleModel):
     """Single item in a custom menu."""
 
+    data_checks = [field_validation_data_check_factory("core", "CustomMenuItem", "icon")]
+
     menu = models.ForeignKey(
         CustomMenu, models.CASCADE, verbose_name=_("Menu"), related_name="items"
     )
@@ -1082,6 +1089,9 @@ class CustomMenuItem(ExtensibleModel):
             models.UniqueConstraint(fields=["menu", "name"], name="unique_name_per_menu"),
         ]
 
+    def get_absolute_url(self):
+        return reverse("admin:core_custommenuitem_change", args=[self.id])
+
 
 class GroupType(ExtensibleModel):
     """Group type model.
diff --git a/aleksis/core/preferences.py b/aleksis/core/preferences.py
index 78b1874356a3a11eab121a56963c9aaf3595d872..230e40686d0782151043723cef9edfffcf5a68b7 100644
--- a/aleksis/core/preferences.py
+++ b/aleksis/core/preferences.py
@@ -333,20 +333,6 @@ class OAuthAllowedGrants(MultipleChoicePreference):
     required = False
 
 
-@site_preferences_registry.register
-class AvailableLanguages(MultipleChoicePreference):
-    """Available languages  of your AlekSIS instance."""
-
-    section = internationalisation
-    name = "languages"
-    default = [code[0] for code in settings.LANGUAGES]
-    widget = SelectMultiple
-    verbose_name = _("Available languages")
-    field_attribute = {"initial": []}
-    choices = settings.LANGUAGES
-    required = True
-
-
 @site_preferences_registry.register
 class DataChecksSendEmails(BooleanPreference):
     """Enable email sending if data checks detect problems."""
diff --git a/aleksis/core/settings.py b/aleksis/core/settings.py
index f5dd9eafe0afae877494dccbf3c2dcfa5a72bc79..782600898df364c019ecbb633a790fc796f682d7 100644
--- a/aleksis/core/settings.py
+++ b/aleksis/core/settings.py
@@ -146,6 +146,7 @@ INSTALLED_APPS = [
     "dynamic_preferences.users.apps.UserPreferencesConfig",
     "impersonate",
     "two_factor",
+    "two_factor.plugins.phonenumber",
     "material",
     "ckeditor",
     "ckeditor_uploader",
@@ -631,6 +632,7 @@ SASS_PROCESSOR_INCLUDE_DIRS = [
 ]
 
 ICONIFY_JSON_ROOT = os.path.join(JS_ROOT, "@iconify", "json")
+ICONIFY_COLLECTIONS_ALLOWED = ["mdi"]
 
 ADMINS = _settings.get(
     "contact.admins", [(AUTH_INITIAL_SUPERUSER["username"], AUTH_INITIAL_SUPERUSER["email"])]
@@ -743,6 +745,11 @@ PWA_ICONS_CONFIG = {
     "microsoft": [144],
 }
 FAVICON_PATH = os.path.join("public", "favicon")
+FAVICON_CONFIG = {
+    "shortcut icon": [16, 32, 48, 128, 192],
+    "touch-icon": [196],
+    "icon": [196],
+}
 
 SERVICE_WORKER_PATH = os.path.join(STATIC_ROOT, "js", "serviceworker.js")
 
diff --git a/aleksis/core/static/js/progress.js b/aleksis/core/static/js/progress.js
index 5fa0213f8466738466158a56ca6e1df50654a811..8a97577e93d276cd62c69ead4c65b448a7631d49 100644
--- a/aleksis/core/static/js/progress.js
+++ b/aleksis/core/static/js/progress.js
@@ -24,25 +24,32 @@ function renderMessageBox(level, text) {
     return '<div class="alert ' + STYLE_CLASSES[level] + '"><p><i class="material-icons iconify left" data-icon="' + ICONS[level] + '"></i>' + text + '</p></div>';
 }
 
+function updateMessages(messages) {
+    const messagesBox = $("#messages");
+
+    // Clear container
+    messagesBox.html("");
+
+    // Render message boxes
+    $.each(messages, function (i, message) {
+        messagesBox.append(renderMessageBox(message[0], message[1]));
+    });
+}
+
 function customProgress(progressBarElement, progressBarMessageElement, progress) {
     setProgress(progress.percent);
 
     if (progress.hasOwnProperty("messages")) {
-        const messagesBox = $("#messages");
-
-        // Clear container
-        messagesBox.html("")
-
-        // Render message boxes
-        $.each(progress.messages, function (i, message) {
-            messagesBox.append(renderMessageBox(message[0], message[1]));
-        })
+        updateMessages(progress.messages);
     }
 }
 
 
-function customSuccess(progressBarElement, progressBarMessageElement) {
+function customSuccess(progressBarElement, progressBarMessageElement, result) {
     setProgress(100);
+    if (result) {
+        updateMessages(result);
+    }
     $("#result-alert").addClass("success");
     $("#result-icon").attr("data-icon", "mdi:check-circle-outline");
     $("#result-text").text(OPTIONS.success);
@@ -54,8 +61,11 @@ function customSuccess(progressBarElement, progressBarMessageElement) {
     }
 }
 
-function customError(progressBarElement, progressBarMessageElement) {
+function customError(progressBarElement, progressBarMessageElement, excMessage) {
     setProgress(100);
+    if (excMessage) {
+        updateMessages([40, excMessage]);
+    }
     $("#result-alert").addClass("error");
     $("#result-icon").attr("data-icon", "mdi:alert-octagon-outline");
     $("#result-text").text(OPTIONS.error);
diff --git a/aleksis/core/static/public/style.scss b/aleksis/core/static/public/style.scss
index b6b4ce7831311178d8044ebb74f2d37b749ebfee..07f1881216448b3c82fb605af72b214004bf2f03 100644
--- a/aleksis/core/static/public/style.scss
+++ b/aleksis/core/static/public/style.scss
@@ -433,15 +433,16 @@ th.orderable > a {
 
 th.orderable {
   background: no-repeat right center;
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z' /%3E%3C/svg%3E");
+  background-image: url("../../__icons__/mdi/unfold-more-horizontal.svg");
+  background-size: 24px;
 }
 
 th.orderable.asc {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z' /%3E%3C/svg%3E");
+  background-image: url("../../__icons__/mdi/chevron-up.svg");
 }
 
 th.orderable.desc {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z' /%3E%3C/svg%3E");
+  background-image: url("../../__icons__/mdi/chevron-down.svg");
 }
 
 /*+++++++*/
@@ -777,6 +778,7 @@ main figure.alert {
   line-height: 1;
   height: 24px;
   margin-bottom: 8px;
+  width: 100%;
 }
 
 /* Person overview */
@@ -989,3 +991,8 @@ p.ical-description {
   margin: 0;
   font-weight: 300;
 }
+
+.table-circle, .table-circle .materialize-circle {
+  height: 4em;
+  width: 4em;
+}
diff --git a/aleksis/core/tables.py b/aleksis/core/tables.py
index f08460bd8654907cb56f655e01014342f8e59ab5..a58c3fc443b3ad66c8df31109cbb6276192518ef 100644
--- a/aleksis/core/tables.py
+++ b/aleksis/core/tables.py
@@ -1,5 +1,6 @@
 from textwrap import wrap
 
+from django.template.loader import render_to_string
 from django.utils.translation import gettext_lazy as _
 
 import django_tables2 as tables
@@ -31,12 +32,65 @@ class PersonsTable(tables.Table):
     """Table to list persons."""
 
     class Meta:
+        model = Person
         attrs = {"class": "highlight"}
+        fields = []
 
     first_name = tables.LinkColumn("person_by_id", args=[A("id")])
     last_name = tables.LinkColumn("person_by_id", args=[A("id")])
 
 
+class FullPersonsTable(PersonsTable):
+    """Table to list persons."""
+
+    photo = tables.Column(verbose_name=_("Photo"), accessor="pk", orderable=False)
+    address = tables.Column(verbose_name=_("Address"), accessor="pk", orderable=False)
+
+    class Meta(PersonsTable.Meta):
+        fields = (
+            "photo",
+            "short_name",
+            "date_of_birth",
+            "sex",
+            "email",
+            "user__username",
+        )
+        sequence = ("photo", "first_name", "last_name", "short_name", "...")
+
+    def render_photo(self, value, record):
+        return render_to_string(
+            "core/partials/avatar_content.html",
+            {
+                "person_or_user": record,
+                "class": "materialize-circle table-circle",
+                "img_class": "materialize-circle",
+            },
+            self.request,
+        )
+
+    def render_address(self, value, record):
+        return render_to_string(
+            "core/partials/address.html",
+            {
+                "person": record,
+            },
+            self.request,
+        )
+
+    def before_render(self, request):
+        """Hide columns if user has no permission to view them."""
+        if not self.request.user.has_perm("core.view_person_rule"):
+            self.columns.hide("date_of_birth")
+            self.columns.hide("sex")
+        if not self.request.user.has_perm("core.view_contact_details_rule"):
+            self.columns.hide("email")
+        if not self.request.user.has_perm("core.view_address"):
+            self.columns.hide("street")
+            self.columns.hide("housenumber")
+            self.columns.hide("postal_code")
+            self.columns.hide("place")
+
+
 class GroupsTable(tables.Table):
     """Table to list groups."""
 
diff --git a/aleksis/core/templates/core/dashboard_widget/external_link_widget.html b/aleksis/core/templates/core/dashboard_widget/external_link_widget.html
index bfbb5bda23e0e5034425ff745efab7f630119355..4f2a940b7b59b84b3fa03a9a3dbc10a0045cf51e 100644
--- a/aleksis/core/templates/core/dashboard_widget/external_link_widget.html
+++ b/aleksis/core/templates/core/dashboard_widget/external_link_widget.html
@@ -1,6 +1,6 @@
 <div class="card">
         <div class="card-image">
-                <img src="{{ icon_url }}" alt="{{ title }}" />
+                <a href="{{ url }}"><img src="{{ icon_url }}" alt="{{ title }}" /></a>
         </div>
         <div class="card-action">
                 <a href="{{ url }}">{{ title }}</a>
diff --git a/aleksis/core/templates/core/group/full.html b/aleksis/core/templates/core/group/full.html
index 3c6e5488d6174e30847eabcfda2e97b244112938..34b5e647590806e72666701ae0bd1ca1196d9638 100644
--- a/aleksis/core/templates/core/group/full.html
+++ b/aleksis/core/templates/core/group/full.html
@@ -9,7 +9,9 @@
 {% block browser_title %}{{ group.name }}{% endblock %}
 
 {% block content %}
-  <h1>{{ group.name }} <small class="grey-text">{{ group.short_name }}</small></h1>
+  <h1>{{ group.name }}
+    <small class="grey-text">{{ group.short_name }}</small>
+  </h1>
 
   {% has_perm 'core.edit_group_rule' user group as can_change_group %}
   {% has_perm 'core.change_group_preferences_rule' user group as can_change_group_preferences %}
@@ -44,39 +46,57 @@
   <table>
     <tr>
       <th>
-        <i class="material-icons iconify center" data-icon="mdi:shape-outline" title="{% trans "Group type" %}"></i>
+        <i class="material-icons iconify left" data-icon="mdi:shape-outline"></i>
+        {% trans "Group type" %}
       </th>
       <td>
-        {{ group.group_type }}
+        {{ group.group_type|default:"–" }}
       </td>
     </tr>
     <tr>
       <th>
-        <i class="material-icons iconify center" data-icon="mdi:format-vertical-align-top" title="{% trans "Parent groups" %}"></i>
+        <i class="material-icons iconify left" data-icon="mdi:format-vertical-align-top"></i>
+        {% trans "Parent groups" %}
       </th>
       <td>
-        {{ group.parent_groups.all|join:", " }}
+        {{ group.parent_groups.all|join:", "|default:"–" }}
       </td>
     </tr>
   </table>
 
   {% if can_view_group_stats %}
     <h2>{% blocktrans %}Statistics{% endblocktrans %}</h2>
-    <ul>
-      <li>
-        {% trans "Count of members" %}: {{ stats.members }}
-      </li>
+    <table>
+      <tr>
+        <th>
+          <i class="material-icons iconify left" data-icon="mdi:account-group-outline"></i>
+          {% trans "Count of members" %}
+        </th>
+        <td>{{ stats.members }}</td>
+      </tr>
       {% if stats.age_avg %}
-        <li>
-          {% trans "Average age" %}: {{ stats.age_avg|floatformat }}
-        </li>
+        <tr>
+          <th>
+            <i class="material-icons iconify left" data-icon="mdi:cake-variant-outline"></i>
+            {% trans "Average age" %}
+          </th>
+          <td>{{ stats.age_avg|floatformat }}</td>
+        </tr>
       {% endif %}
       {% if stats.age_range_min %}
-        <li>
-          {% trans "Age range" %}: {{ stats.age_range_min }} {% trans "years to" %} {{ stats.age_range_max }} {% trans "years "%}
-        </li>
+        <tr>
+          <th>
+            <i class="material-icons iconify left" data-icon="mdi:calendar-range-outline"></i>
+            {% trans "Age range" %}
+          </th>
+          <td>
+            {% blocktrans with min=stats.age_range_min max=stats.age_range_max %}
+              {{ min }} years to {{ max }} years
+            {% endblocktrans %}
+          </td>
+        </tr>
       {% endif %}
-    </ul>
+    </table>
   {% endif %}
 
   <h2>{% blocktrans %}Owners{% endblocktrans %}</h2>
diff --git a/aleksis/core/templates/core/partials/address.html b/aleksis/core/templates/core/partials/address.html
new file mode 100644
index 0000000000000000000000000000000000000000..74a01bde2494d94256432923f5f27c279da2e564
--- /dev/null
+++ b/aleksis/core/templates/core/partials/address.html
@@ -0,0 +1,2 @@
+{{ person.street }} {{ person.housenumber }}<br>
+{{ person.postal_code }} {{ person.place }}
diff --git a/aleksis/core/templates/core/partials/footer-menu.html b/aleksis/core/templates/core/partials/footer-menu.html
index 2db2689efed0b3488dc7ba4362d2ff6747863f0e..6a67fa8a8592c5686a1efda8bd0ea9a19e71155b 100644
--- a/aleksis/core/templates/core/partials/footer-menu.html
+++ b/aleksis/core/templates/core/partials/footer-menu.html
@@ -3,7 +3,7 @@
 {% for item in FOOTER_MENU.items.all %}
   <a class="blue-text text-lighten-4 btn-flat" href="{{ item.url }}">
     {% if item.icon %}
-      <i class="material-icons iconify footer-icon left" data-icon="{{ item.icon }}">{{ item.icon }}</i>
+      <i class="material-icons iconify footer-icon left" data-icon="mdi:{{ item.icon }}"></i>
     {% endif %}
     {{ item.name }}
   </a>
diff --git a/aleksis/core/templates/core/partials/language_form.html b/aleksis/core/templates/core/partials/language_form.html
index 197906bb09d6c43d187c63f118261eaf6bbead9e..247dfe386c6dc003e4436415afbf13c34a557612 100644
--- a/aleksis/core/templates/core/partials/language_form.html
+++ b/aleksis/core/templates/core/partials/language_form.html
@@ -8,7 +8,9 @@
   <input name="next" type="hidden" value="{{ request.get_full_path }}">
 
   {% get_current_language as LANGUAGE_CODE %}
-  {% get_language_info_list for request.site.preferences.internationalisation__languages as languages %}
+  {% get_available_languages as LANGUAGES %}
+  {% get_language_info_list for LANGUAGES as languages %}
+
 
   {# Select #}
   <div class="input-field language-field">
diff --git a/aleksis/core/templates/two_factor/core/login.html b/aleksis/core/templates/two_factor/core/login.html
index 77b135569d797181a45bd49d7fd7e9cded4e9a5c..6145855229d9fec9f15edbd8ee597811250e2140 100644
--- a/aleksis/core/templates/two_factor/core/login.html
+++ b/aleksis/core/templates/two_factor/core/login.html
@@ -1,6 +1,6 @@
 {# -*- engine:django -*- #}
 {% extends "two_factor/_base_focus.html" %}
-{% load i18n two_factor account socialaccount %}
+{% load i18n phonenumber account socialaccount %}
 
 {% block browser_title %}
   {% trans "Login" %}
diff --git a/aleksis/core/templates/two_factor/profile/profile.html b/aleksis/core/templates/two_factor/profile/profile.html
index dd9472e7fb9a09051b35d7be57f59dcab1549dae..fe96135d0dfae6fd16ffad4fece50148115c8b69 100644
--- a/aleksis/core/templates/two_factor/profile/profile.html
+++ b/aleksis/core/templates/two_factor/profile/profile.html
@@ -1,5 +1,5 @@
 {% extends "two_factor/_base_focus.html" %}
-{% load i18n two_factor %}
+{% load i18n phonenumber %}
 
 {% block browser_title %}
   {% trans "Account Security" %}
diff --git a/aleksis/core/tests/browser/test_selenium.py b/aleksis/core/tests/browser/test_selenium.py
index e14ad8b9f123cd612848af566790d7e649d47bcc..5e9c4dfa3fc52ccdb582a7ab8d9862018e211032 100644
--- a/aleksis/core/tests/browser/test_selenium.py
+++ b/aleksis/core/tests/browser/test_selenium.py
@@ -7,6 +7,8 @@ from django.test.selenium import SeleniumTestCase, SeleniumTestCaseBase
 from django.urls import reverse
 
 import pytest
+from selenium.webdriver.common.by import By
+from selenium.webdriver.support import expected_conditions as EC
 from selenium.webdriver.support.wait import WebDriverWait
 
 from aleksis.core.models import Person
@@ -43,17 +45,25 @@ class SeleniumTests(SeleniumTestCase):
             self._screenshot("login_default_superuser_blank.png")
 
         # Find login form input fields and enter defined credentials
-        self.selenium.find_element_by_xpath(
-            '//label[contains(text(), "Username")]/../input'
+        WebDriverWait(self.selenium, 10).until(
+            EC.element_to_be_clickable(
+                (By.XPATH, '//label[contains(text(), "Username")]/../input'),
+            )
         ).send_keys(username)
-        self.selenium.find_element_by_xpath(
-            '//label[contains(text(), "Password")]/../input'
+        WebDriverWait(self.selenium, 10).until(
+            EC.element_to_be_clickable(
+                (By.XPATH, '//label[contains(text(), "Password")]/../input'),
+            )
         ).send_keys(password)
         if with_screenshots:
             self._screenshot("login_default_superuser_filled.png")
 
         # Submit form by clicking django-two-factor-auth's Next button
-        self.selenium.find_element_by_xpath('//button[contains(text(), "Login")]').click()
+        WebDriverWait(self.selenium, 10).until(
+            EC.element_to_be_clickable(
+                (By.XPATH, '//button[contains(text(), "Login")]'),
+            )
+        ).click()
         if with_screenshots:
             self._screenshot("login_default_superuser_submitted.png")
 
diff --git a/aleksis/core/tests/regression/test_regression.py b/aleksis/core/tests/regression/test_regression.py
index c2417a56ebd02c015e84f18401d39cfc582b4252..6d6056ad272fa87c9df9d4cf7ba16f87a70dbf40 100644
--- a/aleksis/core/tests/regression/test_regression.py
+++ b/aleksis/core/tests/regression/test_regression.py
@@ -146,3 +146,14 @@ def test_no_access_oauth2_client_credentials_without_allowed_scopes(client):
     )
     r = client.get(url, HTTP_AUTHORIZATION=auth_header)
     assert r.status_code == 200
+
+
+def test_change_password_not_logged_in(client):
+    """Tests that CustomPasswordChangeView redirects to login when accessed unauthenticated.
+
+    https://edugit.org/AlekSIS/official/AlekSIS-Core/-/issues/703
+    """
+    response = client.get(reverse("account_change_password"), follow=True)
+
+    assert response.status_code == 200
+    assert "Please login to see this page." in response.content.decode("utf-8")
diff --git a/aleksis/core/util/celery_progress.py b/aleksis/core/util/celery_progress.py
index ef42f1692dab60dc9bc88f3c6bba4ce4beef3222..91b5b7168f215da509c71806f137483a422872d3 100644
--- a/aleksis/core/util/celery_progress.py
+++ b/aleksis/core/util/celery_progress.py
@@ -155,7 +155,8 @@ def recorded_task(orig: Optional[Callable] = None, **kwargs) -> Union[Callable,
         @wraps(orig)
         def _inject_recorder(task, *args, **kwargs):
             recorder = ProgressRecorder(task)
-            return orig(*args, **kwargs, recorder=recorder)
+            orig(*args, **kwargs, recorder=recorder)
+            return recorder._messages
 
         # Force bind to True because _inject_recorder needs the Task object
         kwargs["bind"] = True
diff --git a/aleksis/core/util/model_helpers.py b/aleksis/core/util/model_helpers.py
index 57fab43ab14b787b9300b523e963efbcb0cee121..f1732a72fb3e17ecdcfee18b59cb18d7fd98fd55 100644
--- a/aleksis/core/util/model_helpers.py
+++ b/aleksis/core/util/model_helpers.py
@@ -1,3 +1,5 @@
+from dj_iconify.util import icon_choices
+
 # Materialize colors (without accent, darken and lighten classes)
 COLOURS = [
     ("red", "red"),
@@ -24,938 +26,8 @@ COLOURS = [
     ("transparent", "transparent"),
 ]
 
-# About 1000 icon names from Google's github repository
-ICONS = [
-    ("3d_rotation", "3d_rotation"),
-    ("ac_unit", "ac_unit"),
-    ("access_alarm", "access_alarm"),
-    ("access_alarms", "access_alarms"),
-    ("access_time", "access_time"),
-    ("accessibility", "accessibility"),
-    ("accessible", "accessible"),
-    ("account_balance", "account_balance"),
-    ("account_balance_wallet", "account_balance_wallet"),
-    ("account_box", "account_box"),
-    ("account_circle", "account_circle"),
-    ("adb", "adb"),
-    ("add", "add"),
-    ("add_a_photo", "add_a_photo"),
-    ("add_alarm", "add_alarm"),
-    ("add_alert", "add_alert"),
-    ("add_box", "add_box"),
-    ("add_circle", "add_circle"),
-    ("add_circle_outline", "add_circle_outline"),
-    ("add_location", "add_location"),
-    ("add_shopping_cart", "add_shopping_cart"),
-    ("add_to_photos", "add_to_photos"),
-    ("add_to_queue", "add_to_queue"),
-    ("adjust", "adjust"),
-    ("airline_seat_flat", "airline_seat_flat"),
-    ("airline_seat_flat_angled", "airline_seat_flat_angled"),
-    ("airline_seat_individual_suite", "airline_seat_individual_suite"),
-    ("airline_seat_legroom_extra", "airline_seat_legroom_extra"),
-    ("airline_seat_legroom_normal", "airline_seat_legroom_normal"),
-    ("airline_seat_legroom_reduced", "airline_seat_legroom_reduced"),
-    ("airline_seat_recline_extra", "airline_seat_recline_extra"),
-    ("airline_seat_recline_normal", "airline_seat_recline_normal"),
-    ("airplanemode_active", "airplanemode_active"),
-    ("airplanemode_inactive", "airplanemode_inactive"),
-    ("airplay", "airplay"),
-    ("airport_shuttle", "airport_shuttle"),
-    ("alarm", "alarm"),
-    ("alarm_add", "alarm_add"),
-    ("alarm_off", "alarm_off"),
-    ("alarm_on", "alarm_on"),
-    ("album", "album"),
-    ("all_inclusive", "all_inclusive"),
-    ("all_out", "all_out"),
-    ("android", "android"),
-    ("announcement", "announcement"),
-    ("apps", "apps"),
-    ("archive", "archive"),
-    ("arrow_back", "arrow_back"),
-    ("arrow_downward", "arrow_downward"),
-    ("arrow_drop_down", "arrow_drop_down"),
-    ("arrow_drop_down_circle", "arrow_drop_down_circle"),
-    ("arrow_drop_up", "arrow_drop_up"),
-    ("arrow_forward", "arrow_forward"),
-    ("arrow_upward", "arrow_upward"),
-    ("art_track", "art_track"),
-    ("aspect_ratio", "aspect_ratio"),
-    ("assessment", "assessment"),
-    ("assignment", "assignment"),
-    ("assignment_ind", "assignment_ind"),
-    ("assignment_late", "assignment_late"),
-    ("assignment_return", "assignment_return"),
-    ("assignment_returned", "assignment_returned"),
-    ("assignment_turned_in", "assignment_turned_in"),
-    ("assistant", "assistant"),
-    ("assistant_photo", "assistant_photo"),
-    ("attach_file", "attach_file"),
-    ("attach_money", "attach_money"),
-    ("attachment", "attachment"),
-    ("audiotrack", "audiotrack"),
-    ("autorenew", "autorenew"),
-    ("av_timer", "av_timer"),
-    ("backspace", "backspace"),
-    ("backup", "backup"),
-    ("battery_alert", "battery_alert"),
-    ("battery_charging_full", "battery_charging_full"),
-    ("battery_full", "battery_full"),
-    ("battery_std", "battery_std"),
-    ("battery_unknown", "battery_unknown"),
-    ("beach_access", "beach_access"),
-    ("beenhere", "beenhere"),
-    ("block", "block"),
-    ("bluetooth", "bluetooth"),
-    ("bluetooth_audio", "bluetooth_audio"),
-    ("bluetooth_connected", "bluetooth_connected"),
-    ("bluetooth_disabled", "bluetooth_disabled"),
-    ("bluetooth_searching", "bluetooth_searching"),
-    ("blur_circular", "blur_circular"),
-    ("blur_linear", "blur_linear"),
-    ("blur_off", "blur_off"),
-    ("blur_on", "blur_on"),
-    ("book", "book"),
-    ("bookmark", "bookmark"),
-    ("bookmark_border", "bookmark_border"),
-    ("border_all", "border_all"),
-    ("border_bottom", "border_bottom"),
-    ("border_clear", "border_clear"),
-    ("border_color", "border_color"),
-    ("border_horizontal", "border_horizontal"),
-    ("border_inner", "border_inner"),
-    ("border_left", "border_left"),
-    ("border_outer", "border_outer"),
-    ("border_right", "border_right"),
-    ("border_style", "border_style"),
-    ("border_top", "border_top"),
-    ("border_vertical", "border_vertical"),
-    ("branding_watermark", "branding_watermark"),
-    ("brightness_1", "brightness_1"),
-    ("brightness_2", "brightness_2"),
-    ("brightness_3", "brightness_3"),
-    ("brightness_4", "brightness_4"),
-    ("brightness_5", "brightness_5"),
-    ("brightness_6", "brightness_6"),
-    ("brightness_7", "brightness_7"),
-    ("brightness_auto", "brightness_auto"),
-    ("brightness_high", "brightness_high"),
-    ("brightness_low", "brightness_low"),
-    ("brightness_medium", "brightness_medium"),
-    ("broken_image", "broken_image"),
-    ("brush", "brush"),
-    ("bubble_chart", "bubble_chart"),
-    ("bug_report", "bug_report"),
-    ("build", "build"),
-    ("burst_mode", "burst_mode"),
-    ("business", "business"),
-    ("business_center", "business_center"),
-    ("cached", "cached"),
-    ("cake", "cake"),
-    ("call", "call"),
-    ("call_end", "call_end"),
-    ("call_made", "call_made"),
-    ("call_merge", "call_merge"),
-    ("call_missed", "call_missed"),
-    ("call_missed_outgoing", "call_missed_outgoing"),
-    ("call_received", "call_received"),
-    ("call_split", "call_split"),
-    ("call_to_action", "call_to_action"),
-    ("camera", "camera"),
-    ("camera_alt", "camera_alt"),
-    ("camera_enhance", "camera_enhance"),
-    ("camera_front", "camera_front"),
-    ("camera_rear", "camera_rear"),
-    ("camera_roll", "camera_roll"),
-    ("cancel", "cancel"),
-    ("card_giftcard", "card_giftcard"),
-    ("card_membership", "card_membership"),
-    ("card_travel", "card_travel"),
-    ("casino", "casino"),
-    ("cast", "cast"),
-    ("cast_connected", "cast_connected"),
-    ("center_focus_strong", "center_focus_strong"),
-    ("center_focus_weak", "center_focus_weak"),
-    ("change_history", "change_history"),
-    ("chat", "chat"),
-    ("chat_bubble", "chat_bubble"),
-    ("chat_bubble_outline", "chat_bubble_outline"),
-    ("check", "check"),
-    ("check_box", "check_box"),
-    ("check_box_outline_blank", "check_box_outline_blank"),
-    ("check_circle", "check_circle"),
-    ("chevron_left", "chevron_left"),
-    ("chevron_right", "chevron_right"),
-    ("child_care", "child_care"),
-    ("child_friendly", "child_friendly"),
-    ("chrome_reader_mode", "chrome_reader_mode"),
-    ("class", "class"),
-    ("clear", "clear"),
-    ("clear_all", "clear_all"),
-    ("close", "close"),
-    ("closed_caption", "closed_caption"),
-    ("cloud", "cloud"),
-    ("cloud_circle", "cloud_circle"),
-    ("cloud_done", "cloud_done"),
-    ("cloud_download", "cloud_download"),
-    ("cloud_off", "cloud_off"),
-    ("cloud_queue", "cloud_queue"),
-    ("cloud_upload", "cloud_upload"),
-    ("code", "code"),
-    ("collections", "collections"),
-    ("collections_bookmark", "collections_bookmark"),
-    ("color_lens", "color_lens"),
-    ("colorize", "colorize"),
-    ("comment", "comment"),
-    ("compare", "compare"),
-    ("compare_arrows", "compare_arrows"),
-    ("computer", "computer"),
-    ("confirmation_number", "confirmation_number"),
-    ("contact_mail", "contact_mail"),
-    ("contact_phone", "contact_phone"),
-    ("contacts", "contacts"),
-    ("content_copy", "content_copy"),
-    ("content_cut", "content_cut"),
-    ("content_paste", "content_paste"),
-    ("control_point", "control_point"),
-    ("control_point_duplicate", "control_point_duplicate"),
-    ("copyright", "copyright"),
-    ("create", "create"),
-    ("create_new_folder", "create_new_folder"),
-    ("credit_card", "credit_card"),
-    ("crop", "crop"),
-    ("crop_16_9", "crop_16_9"),
-    ("crop_3_2", "crop_3_2"),
-    ("crop_5_4", "crop_5_4"),
-    ("crop_7_5", "crop_7_5"),
-    ("crop_din", "crop_din"),
-    ("crop_free", "crop_free"),
-    ("crop_landscape", "crop_landscape"),
-    ("crop_original", "crop_original"),
-    ("crop_portrait", "crop_portrait"),
-    ("crop_rotate", "crop_rotate"),
-    ("crop_square", "crop_square"),
-    ("dashboard", "dashboard"),
-    ("data_usage", "data_usage"),
-    ("date_range", "date_range"),
-    ("dehaze", "dehaze"),
-    ("delete", "delete"),
-    ("delete_forever", "delete_forever"),
-    ("delete_sweep", "delete_sweep"),
-    ("description", "description"),
-    ("desktop_mac", "desktop_mac"),
-    ("desktop_windows", "desktop_windows"),
-    ("details", "details"),
-    ("developer_board", "developer_board"),
-    ("developer_mode", "developer_mode"),
-    ("device_hub", "device_hub"),
-    ("devices", "devices"),
-    ("devices_other", "devices_other"),
-    ("dialer_sip", "dialer_sip"),
-    ("dialpad", "dialpad"),
-    ("directions", "directions"),
-    ("directions_bike", "directions_bike"),
-    ("directions_boat", "directions_boat"),
-    ("directions_bus", "directions_bus"),
-    ("directions_car", "directions_car"),
-    ("directions_railway", "directions_railway"),
-    ("directions_run", "directions_run"),
-    ("directions_subway", "directions_subway"),
-    ("directions_transit", "directions_transit"),
-    ("directions_walk", "directions_walk"),
-    ("disc_full", "disc_full"),
-    ("dns", "dns"),
-    ("do_not_disturb", "do_not_disturb"),
-    ("do_not_disturb_alt", "do_not_disturb_alt"),
-    ("do_not_disturb_off", "do_not_disturb_off"),
-    ("do_not_disturb_on", "do_not_disturb_on"),
-    ("dock", "dock"),
-    ("domain", "domain"),
-    ("done", "done"),
-    ("done_all", "done_all"),
-    ("donut_large", "donut_large"),
-    ("donut_small", "donut_small"),
-    ("drafts", "drafts"),
-    ("drag_handle", "drag_handle"),
-    ("drive_eta", "drive_eta"),
-    ("dvr", "dvr"),
-    ("edit", "edit"),
-    ("edit_location", "edit_location"),
-    ("eject", "eject"),
-    ("email", "email"),
-    ("enhanced_encryption", "enhanced_encryption"),
-    ("equalizer", "equalizer"),
-    ("error", "error"),
-    ("error_outline", "error_outline"),
-    ("euro_symbol", "euro_symbol"),
-    ("ev_station", "ev_station"),
-    ("event", "event"),
-    ("event_available", "event_available"),
-    ("event_busy", "event_busy"),
-    ("event_note", "event_note"),
-    ("event_seat", "event_seat"),
-    ("exit_to_app", "exit_to_app"),
-    ("expand_less", "expand_less"),
-    ("expand_more", "expand_more"),
-    ("explicit", "explicit"),
-    ("explore", "explore"),
-    ("exposure", "exposure"),
-    ("exposure_neg_1", "exposure_neg_1"),
-    ("exposure_neg_2", "exposure_neg_2"),
-    ("exposure_plus_1", "exposure_plus_1"),
-    ("exposure_plus_2", "exposure_plus_2"),
-    ("exposure_zero", "exposure_zero"),
-    ("extension", "extension"),
-    ("face", "face"),
-    ("fast_forward", "fast_forward"),
-    ("fast_rewind", "fast_rewind"),
-    ("favorite", "favorite"),
-    ("favorite_border", "favorite_border"),
-    ("featured_play_list", "featured_play_list"),
-    ("featured_video", "featured_video"),
-    ("feedback", "feedback"),
-    ("fiber_dvr", "fiber_dvr"),
-    ("fiber_manual_record", "fiber_manual_record"),
-    ("fiber_new", "fiber_new"),
-    ("fiber_pin", "fiber_pin"),
-    ("fiber_smart_record", "fiber_smart_record"),
-    ("file_download", "file_download"),
-    ("file_upload", "file_upload"),
-    ("filter", "filter"),
-    ("filter_1", "filter_1"),
-    ("filter_2", "filter_2"),
-    ("filter_3", "filter_3"),
-    ("filter_4", "filter_4"),
-    ("filter_5", "filter_5"),
-    ("filter_6", "filter_6"),
-    ("filter_7", "filter_7"),
-    ("filter_8", "filter_8"),
-    ("filter_9", "filter_9"),
-    ("filter_9_plus", "filter_9_plus"),
-    ("filter_b_and_w", "filter_b_and_w"),
-    ("filter_center_focus", "filter_center_focus"),
-    ("filter_drama", "filter_drama"),
-    ("filter_frames", "filter_frames"),
-    ("filter_hdr", "filter_hdr"),
-    ("filter_list", "filter_list"),
-    ("filter_none", "filter_none"),
-    ("filter_tilt_shift", "filter_tilt_shift"),
-    ("filter_vintage", "filter_vintage"),
-    ("find_in_page", "find_in_page"),
-    ("find_replace", "find_replace"),
-    ("fingerprint", "fingerprint"),
-    ("first_page", "first_page"),
-    ("fitness_center", "fitness_center"),
-    ("flag", "flag"),
-    ("flare", "flare"),
-    ("flash_auto", "flash_auto"),
-    ("flash_off", "flash_off"),
-    ("flash_on", "flash_on"),
-    ("flight", "flight"),
-    ("flight_land", "flight_land"),
-    ("flight_takeoff", "flight_takeoff"),
-    ("flip", "flip"),
-    ("flip_to_back", "flip_to_back"),
-    ("flip_to_front", "flip_to_front"),
-    ("folder", "folder"),
-    ("folder_open", "folder_open"),
-    ("folder_shared", "folder_shared"),
-    ("folder_special", "folder_special"),
-    ("font_download", "font_download"),
-    ("format_align_center", "format_align_center"),
-    ("format_align_justify", "format_align_justify"),
-    ("format_align_left", "format_align_left"),
-    ("format_align_right", "format_align_right"),
-    ("format_bold", "format_bold"),
-    ("format_clear", "format_clear"),
-    ("format_color_fill", "format_color_fill"),
-    ("format_color_reset", "format_color_reset"),
-    ("format_color_text", "format_color_text"),
-    ("format_indent_decrease", "format_indent_decrease"),
-    ("format_indent_increase", "format_indent_increase"),
-    ("format_italic", "format_italic"),
-    ("format_line_spacing", "format_line_spacing"),
-    ("format_list_bulleted", "format_list_bulleted"),
-    ("format_list_numbered", "format_list_numbered"),
-    ("format_paint", "format_paint"),
-    ("format_quote", "format_quote"),
-    ("format_shapes", "format_shapes"),
-    ("format_size", "format_size"),
-    ("format_strikethrough", "format_strikethrough"),
-    ("format_textdirection_l_to_r", "format_textdirection_l_to_r"),
-    ("format_textdirection_r_to_l", "format_textdirection_r_to_l"),
-    ("format_underlined", "format_underlined"),
-    ("forum", "forum"),
-    ("forward", "forward"),
-    ("forward_10", "forward_10"),
-    ("forward_30", "forward_30"),
-    ("forward_5", "forward_5"),
-    ("free_breakfast", "free_breakfast"),
-    ("fullscreen", "fullscreen"),
-    ("fullscreen_exit", "fullscreen_exit"),
-    ("functions", "functions"),
-    ("g_translate", "g_translate"),
-    ("gamepad", "gamepad"),
-    ("games", "games"),
-    ("gavel", "gavel"),
-    ("gesture", "gesture"),
-    ("get_app", "get_app"),
-    ("gif", "gif"),
-    ("golf_course", "golf_course"),
-    ("gps_fixed", "gps_fixed"),
-    ("gps_not_fixed", "gps_not_fixed"),
-    ("gps_off", "gps_off"),
-    ("grade", "grade"),
-    ("gradient", "gradient"),
-    ("grain", "grain"),
-    ("graphic_eq", "graphic_eq"),
-    ("grid_off", "grid_off"),
-    ("grid_on", "grid_on"),
-    ("group", "group"),
-    ("group_add", "group_add"),
-    ("group_work", "group_work"),
-    ("hd", "hd"),
-    ("hdr_off", "hdr_off"),
-    ("hdr_on", "hdr_on"),
-    ("hdr_strong", "hdr_strong"),
-    ("hdr_weak", "hdr_weak"),
-    ("headset", "headset"),
-    ("headset_mic", "headset_mic"),
-    ("healing", "healing"),
-    ("hearing", "hearing"),
-    ("help", "help"),
-    ("help_outline", "help_outline"),
-    ("high_quality", "high_quality"),
-    ("highlight", "highlight"),
-    ("highlight_off", "highlight_off"),
-    ("history", "history"),
-    ("home", "home"),
-    ("hot_tub", "hot_tub"),
-    ("hotel", "hotel"),
-    ("hourglass_empty", "hourglass_empty"),
-    ("hourglass_full", "hourglass_full"),
-    ("http", "http"),
-    ("https", "https"),
-    ("image", "image"),
-    ("image_aspect_ratio", "image_aspect_ratio"),
-    ("import_contacts", "import_contacts"),
-    ("import_export", "import_export"),
-    ("important_devices", "important_devices"),
-    ("inbox", "inbox"),
-    ("indeterminate_check_box", "indeterminate_check_box"),
-    ("info", "info"),
-    ("info_outline", "info_outline"),
-    ("input", "input"),
-    ("insert_chart", "insert_chart"),
-    ("insert_comment", "insert_comment"),
-    ("insert_drive_file", "insert_drive_file"),
-    ("insert_emoticon", "insert_emoticon"),
-    ("insert_invitation", "insert_invitation"),
-    ("insert_link", "insert_link"),
-    ("insert_photo", "insert_photo"),
-    ("invert_colors", "invert_colors"),
-    ("invert_colors_off", "invert_colors_off"),
-    ("iso", "iso"),
-    ("keyboard", "keyboard"),
-    ("keyboard_arrow_down", "keyboard_arrow_down"),
-    ("keyboard_arrow_left", "keyboard_arrow_left"),
-    ("keyboard_arrow_right", "keyboard_arrow_right"),
-    ("keyboard_arrow_up", "keyboard_arrow_up"),
-    ("keyboard_backspace", "keyboard_backspace"),
-    ("keyboard_capslock", "keyboard_capslock"),
-    ("keyboard_hide", "keyboard_hide"),
-    ("keyboard_return", "keyboard_return"),
-    ("keyboard_tab", "keyboard_tab"),
-    ("keyboard_voice", "keyboard_voice"),
-    ("kitchen", "kitchen"),
-    ("label", "label"),
-    ("label_outline", "label_outline"),
-    ("landscape", "landscape"),
-    ("language", "language"),
-    ("laptop", "laptop"),
-    ("laptop_chromebook", "laptop_chromebook"),
-    ("laptop_mac", "laptop_mac"),
-    ("laptop_windows", "laptop_windows"),
-    ("last_page", "last_page"),
-    ("launch", "launch"),
-    ("layers", "layers"),
-    ("layers_clear", "layers_clear"),
-    ("leak_add", "leak_add"),
-    ("leak_remove", "leak_remove"),
-    ("lens", "lens"),
-    ("library_add", "library_add"),
-    ("library_books", "library_books"),
-    ("library_music", "library_music"),
-    ("lightbulb_outline", "lightbulb_outline"),
-    ("line_style", "line_style"),
-    ("line_weight", "line_weight"),
-    ("linear_scale", "linear_scale"),
-    ("link", "link"),
-    ("linked_camera", "linked_camera"),
-    ("list", "list"),
-    ("live_help", "live_help"),
-    ("live_tv", "live_tv"),
-    ("local_activity", "local_activity"),
-    ("local_airport", "local_airport"),
-    ("local_atm", "local_atm"),
-    ("local_bar", "local_bar"),
-    ("local_cafe", "local_cafe"),
-    ("local_car_wash", "local_car_wash"),
-    ("local_convenience_store", "local_convenience_store"),
-    ("local_dining", "local_dining"),
-    ("local_drink", "local_drink"),
-    ("local_florist", "local_florist"),
-    ("local_gas_station", "local_gas_station"),
-    ("local_grocery_store", "local_grocery_store"),
-    ("local_hospital", "local_hospital"),
-    ("local_hotel", "local_hotel"),
-    ("local_laundry_service", "local_laundry_service"),
-    ("local_library", "local_library"),
-    ("local_mall", "local_mall"),
-    ("local_movies", "local_movies"),
-    ("local_offer", "local_offer"),
-    ("local_parking", "local_parking"),
-    ("local_pharmacy", "local_pharmacy"),
-    ("local_phone", "local_phone"),
-    ("local_pizza", "local_pizza"),
-    ("local_play", "local_play"),
-    ("local_post_office", "local_post_office"),
-    ("local_printshop", "local_printshop"),
-    ("local_see", "local_see"),
-    ("local_shipping", "local_shipping"),
-    ("local_taxi", "local_taxi"),
-    ("location_city", "location_city"),
-    ("location_disabled", "location_disabled"),
-    ("location_off", "location_off"),
-    ("location_on", "location_on"),
-    ("location_searching", "location_searching"),
-    ("lock", "lock"),
-    ("lock_open", "lock_open"),
-    ("lock_outline", "lock_outline"),
-    ("looks", "looks"),
-    ("looks_3", "looks_3"),
-    ("looks_4", "looks_4"),
-    ("looks_5", "looks_5"),
-    ("looks_6", "looks_6"),
-    ("looks_one", "looks_one"),
-    ("looks_two", "looks_two"),
-    ("loop", "loop"),
-    ("loupe", "loupe"),
-    ("low_priority", "low_priority"),
-    ("loyalty", "loyalty"),
-    ("mail", "mail"),
-    ("mail_outline", "mail_outline"),
-    ("map", "map"),
-    ("markunread", "markunread"),
-    ("markunread_mailbox", "markunread_mailbox"),
-    ("memory", "memory"),
-    ("menu", "menu"),
-    ("merge_type", "merge_type"),
-    ("message", "message"),
-    ("mic", "mic"),
-    ("mic_none", "mic_none"),
-    ("mic_off", "mic_off"),
-    ("mms", "mms"),
-    ("mode_comment", "mode_comment"),
-    ("mode_edit", "mode_edit"),
-    ("monetization_on", "monetization_on"),
-    ("money_off", "money_off"),
-    ("monochrome_photos", "monochrome_photos"),
-    ("mood", "mood"),
-    ("mood_bad", "mood_bad"),
-    ("more", "more"),
-    ("more_horiz", "more_horiz"),
-    ("more_vert", "more_vert"),
-    ("motorcycle", "motorcycle"),
-    ("mouse", "mouse"),
-    ("move_to_inbox", "move_to_inbox"),
-    ("movie", "movie"),
-    ("movie_creation", "movie_creation"),
-    ("movie_filter", "movie_filter"),
-    ("multiline_chart", "multiline_chart"),
-    ("music_note", "music_note"),
-    ("music_video", "music_video"),
-    ("my_location", "my_location"),
-    ("nature", "nature"),
-    ("nature_people", "nature_people"),
-    ("navigate_before", "navigate_before"),
-    ("navigate_next", "navigate_next"),
-    ("navigation", "navigation"),
-    ("near_me", "near_me"),
-    ("network_cell", "network_cell"),
-    ("network_check", "network_check"),
-    ("network_locked", "network_locked"),
-    ("network_wifi", "network_wifi"),
-    ("new_releases", "new_releases"),
-    ("next_week", "next_week"),
-    ("nfc", "nfc"),
-    ("no_encryption", "no_encryption"),
-    ("no_sim", "no_sim"),
-    ("not_interested", "not_interested"),
-    ("note", "note"),
-    ("note_add", "note_add"),
-    ("notifications", "notifications"),
-    ("notifications_active", "notifications_active"),
-    ("notifications_none", "notifications_none"),
-    ("notifications_off", "notifications_off"),
-    ("notifications_paused", "notifications_paused"),
-    ("offline_pin", "offline_pin"),
-    ("ondemand_video", "ondemand_video"),
-    ("opacity", "opacity"),
-    ("open_in_browser", "open_in_browser"),
-    ("open_in_new", "open_in_new"),
-    ("open_with", "open_with"),
-    ("pages", "pages"),
-    ("pageview", "pageview"),
-    ("palette", "palette"),
-    ("pan_tool", "pan_tool"),
-    ("panorama", "panorama"),
-    ("panorama_fish_eye", "panorama_fish_eye"),
-    ("panorama_horizontal", "panorama_horizontal"),
-    ("panorama_vertical", "panorama_vertical"),
-    ("panorama_wide_angle", "panorama_wide_angle"),
-    ("party_mode", "party_mode"),
-    ("pause", "pause"),
-    ("pause_circle_filled", "pause_circle_filled"),
-    ("pause_circle_outline", "pause_circle_outline"),
-    ("payment", "payment"),
-    ("people", "people"),
-    ("people_outline", "people_outline"),
-    ("perm_camera_mic", "perm_camera_mic"),
-    ("perm_contact_calendar", "perm_contact_calendar"),
-    ("perm_data_setting", "perm_data_setting"),
-    ("perm_device_information", "perm_device_information"),
-    ("perm_identity", "perm_identity"),
-    ("perm_media", "perm_media"),
-    ("perm_phone_msg", "perm_phone_msg"),
-    ("perm_scan_wifi", "perm_scan_wifi"),
-    ("person", "person"),
-    ("person_add", "person_add"),
-    ("person_outline", "person_outline"),
-    ("person_pin", "person_pin"),
-    ("person_pin_circle", "person_pin_circle"),
-    ("personal_video", "personal_video"),
-    ("pets", "pets"),
-    ("phone", "phone"),
-    ("phone_android", "phone_android"),
-    ("phone_bluetooth_speaker", "phone_bluetooth_speaker"),
-    ("phone_forwarded", "phone_forwarded"),
-    ("phone_in_talk", "phone_in_talk"),
-    ("phone_iphone", "phone_iphone"),
-    ("phone_locked", "phone_locked"),
-    ("phone_missed", "phone_missed"),
-    ("phone_paused", "phone_paused"),
-    ("phonelink", "phonelink"),
-    ("phonelink_erase", "phonelink_erase"),
-    ("phonelink_lock", "phonelink_lock"),
-    ("phonelink_off", "phonelink_off"),
-    ("phonelink_ring", "phonelink_ring"),
-    ("phonelink_setup", "phonelink_setup"),
-    ("photo", "photo"),
-    ("photo_album", "photo_album"),
-    ("photo_camera", "photo_camera"),
-    ("photo_filter", "photo_filter"),
-    ("photo_library", "photo_library"),
-    ("photo_size_select_actual", "photo_size_select_actual"),
-    ("photo_size_select_large", "photo_size_select_large"),
-    ("photo_size_select_small", "photo_size_select_small"),
-    ("picture_as_pdf", "picture_as_pdf"),
-    ("picture_in_picture", "picture_in_picture"),
-    ("picture_in_picture_alt", "picture_in_picture_alt"),
-    ("pie_chart", "pie_chart"),
-    ("pie_chart_outlined", "pie_chart_outlined"),
-    ("pin_drop", "pin_drop"),
-    ("place", "place"),
-    ("play_arrow", "play_arrow"),
-    ("play_circle_filled", "play_circle_filled"),
-    ("play_circle_outline", "play_circle_outline"),
-    ("play_for_work", "play_for_work"),
-    ("playlist_add", "playlist_add"),
-    ("playlist_add_check", "playlist_add_check"),
-    ("playlist_play", "playlist_play"),
-    ("plus_one", "plus_one"),
-    ("poll", "poll"),
-    ("polymer", "polymer"),
-    ("pool", "pool"),
-    ("portable_wifi_off", "portable_wifi_off"),
-    ("portrait", "portrait"),
-    ("power", "power"),
-    ("power_input", "power_input"),
-    ("power_settings_new", "power_settings_new"),
-    ("pregnant_woman", "pregnant_woman"),
-    ("present_to_all", "present_to_all"),
-    ("print", "print"),
-    ("priority_high", "priority_high"),
-    ("public", "public"),
-    ("publish", "publish"),
-    ("query_builder", "query_builder"),
-    ("question_answer", "question_answer"),
-    ("queue", "queue"),
-    ("queue_music", "queue_music"),
-    ("queue_play_next", "queue_play_next"),
-    ("radio", "radio"),
-    ("radio_button_checked", "radio_button_checked"),
-    ("radio_button_unchecked", "radio_button_unchecked"),
-    ("rate_review", "rate_review"),
-    ("receipt", "receipt"),
-    ("recent_actors", "recent_actors"),
-    ("record_voice_over", "record_voice_over"),
-    ("redeem", "redeem"),
-    ("redo", "redo"),
-    ("refresh", "refresh"),
-    ("remove", "remove"),
-    ("remove_circle", "remove_circle"),
-    ("remove_circle_outline", "remove_circle_outline"),
-    ("remove_from_queue", "remove_from_queue"),
-    ("remove_red_eye", "remove_red_eye"),
-    ("remove_shopping_cart", "remove_shopping_cart"),
-    ("reorder", "reorder"),
-    ("repeat", "repeat"),
-    ("repeat_one", "repeat_one"),
-    ("replay", "replay"),
-    ("replay_10", "replay_10"),
-    ("replay_30", "replay_30"),
-    ("replay_5", "replay_5"),
-    ("reply", "reply"),
-    ("reply_all", "reply_all"),
-    ("report", "report"),
-    ("report_problem", "report_problem"),
-    ("restaurant", "restaurant"),
-    ("restaurant_menu", "restaurant_menu"),
-    ("restore", "restore"),
-    ("restore_page", "restore_page"),
-    ("ring_volume", "ring_volume"),
-    ("room", "room"),
-    ("room_service", "room_service"),
-    ("rotate_90_degrees_ccw", "rotate_90_degrees_ccw"),
-    ("rotate_left", "rotate_left"),
-    ("rotate_right", "rotate_right"),
-    ("rounded_corner", "rounded_corner"),
-    ("router", "router"),
-    ("rowing", "rowing"),
-    ("rss_feed", "rss_feed"),
-    ("rv_hookup", "rv_hookup"),
-    ("satellite", "satellite"),
-    ("save", "save"),
-    ("scanner", "scanner"),
-    ("schedule", "schedule"),
-    ("school", "school"),
-    ("screen_lock_landscape", "screen_lock_landscape"),
-    ("screen_lock_portrait", "screen_lock_portrait"),
-    ("screen_lock_rotation", "screen_lock_rotation"),
-    ("screen_rotation", "screen_rotation"),
-    ("screen_share", "screen_share"),
-    ("sd_card", "sd_card"),
-    ("sd_storage", "sd_storage"),
-    ("search", "search"),
-    ("security", "security"),
-    ("select_all", "select_all"),
-    ("send", "send"),
-    ("sentiment_dissatisfied", "sentiment_dissatisfied"),
-    ("sentiment_neutral", "sentiment_neutral"),
-    ("sentiment_satisfied", "sentiment_satisfied"),
-    ("sentiment_very_dissatisfied", "sentiment_very_dissatisfied"),
-    ("sentiment_very_satisfied", "sentiment_very_satisfied"),
-    ("settings", "settings"),
-    ("settings_applications", "settings_applications"),
-    ("settings_backup_restore", "settings_backup_restore"),
-    ("settings_bluetooth", "settings_bluetooth"),
-    ("settings_brightness", "settings_brightness"),
-    ("settings_cell", "settings_cell"),
-    ("settings_ethernet", "settings_ethernet"),
-    ("settings_input_antenna", "settings_input_antenna"),
-    ("settings_input_component", "settings_input_component"),
-    ("settings_input_composite", "settings_input_composite"),
-    ("settings_input_hdmi", "settings_input_hdmi"),
-    ("settings_input_svideo", "settings_input_svideo"),
-    ("settings_overscan", "settings_overscan"),
-    ("settings_phone", "settings_phone"),
-    ("settings_power", "settings_power"),
-    ("settings_remote", "settings_remote"),
-    ("settings_system_daydream", "settings_system_daydream"),
-    ("settings_voice", "settings_voice"),
-    ("share", "share"),
-    ("shop", "shop"),
-    ("shop_two", "shop_two"),
-    ("shopping_basket", "shopping_basket"),
-    ("shopping_cart", "shopping_cart"),
-    ("short_text", "short_text"),
-    ("show_chart", "show_chart"),
-    ("shuffle", "shuffle"),
-    ("signal_cellular_4_bar", "signal_cellular_4_bar"),
-    ("signal_cellular_connected_no_internet_4_bar", "signal_cellular_connected_no_internet_4_bar"),
-    ("signal_cellular_no_sim", "signal_cellular_no_sim"),
-    ("signal_cellular_null", "signal_cellular_null"),
-    ("signal_cellular_off", "signal_cellular_off"),
-    ("signal_wifi_4_bar", "signal_wifi_4_bar"),
-    ("signal_wifi_4_bar_lock", "signal_wifi_4_bar_lock"),
-    ("signal_wifi_off", "signal_wifi_off"),
-    ("sim_card", "sim_card"),
-    ("sim_card_alert", "sim_card_alert"),
-    ("skip_next", "skip_next"),
-    ("skip_previous", "skip_previous"),
-    ("slideshow", "slideshow"),
-    ("slow_motion_video", "slow_motion_video"),
-    ("smartphone", "smartphone"),
-    ("smoke_free", "smoke_free"),
-    ("smoking_rooms", "smoking_rooms"),
-    ("sms", "sms"),
-    ("sms_failed", "sms_failed"),
-    ("snooze", "snooze"),
-    ("sort", "sort"),
-    ("sort_by_alpha", "sort_by_alpha"),
-    ("spa", "spa"),
-    ("space_bar", "space_bar"),
-    ("speaker", "speaker"),
-    ("speaker_group", "speaker_group"),
-    ("speaker_notes", "speaker_notes"),
-    ("speaker_notes_off", "speaker_notes_off"),
-    ("speaker_phone", "speaker_phone"),
-    ("spellcheck", "spellcheck"),
-    ("star", "star"),
-    ("star_border", "star_border"),
-    ("star_half", "star_half"),
-    ("stars", "stars"),
-    ("stay_current_landscape", "stay_current_landscape"),
-    ("stay_current_portrait", "stay_current_portrait"),
-    ("stay_primary_landscape", "stay_primary_landscape"),
-    ("stay_primary_portrait", "stay_primary_portrait"),
-    ("stop", "stop"),
-    ("stop_screen_share", "stop_screen_share"),
-    ("storage", "storage"),
-    ("store", "store"),
-    ("store_mall_directory", "store_mall_directory"),
-    ("straighten", "straighten"),
-    ("streetview", "streetview"),
-    ("strikethrough_s", "strikethrough_s"),
-    ("style", "style"),
-    ("subdirectory_arrow_left", "subdirectory_arrow_left"),
-    ("subdirectory_arrow_right", "subdirectory_arrow_right"),
-    ("subject", "subject"),
-    ("subscriptions", "subscriptions"),
-    ("subtitles", "subtitles"),
-    ("subway", "subway"),
-    ("supervisor_account", "supervisor_account"),
-    ("surround_sound", "surround_sound"),
-    ("swap_calls", "swap_calls"),
-    ("swap_horiz", "swap_horiz"),
-    ("swap_vert", "swap_vert"),
-    ("swap_vertical_circle", "swap_vertical_circle"),
-    ("switch_camera", "switch_camera"),
-    ("switch_video", "switch_video"),
-    ("sync", "sync"),
-    ("sync_disabled", "sync_disabled"),
-    ("sync_problem", "sync_problem"),
-    ("system_update", "system_update"),
-    ("system_update_alt", "system_update_alt"),
-    ("tab", "tab"),
-    ("tab_unselected", "tab_unselected"),
-    ("tablet", "tablet"),
-    ("tablet_android", "tablet_android"),
-    ("tablet_mac", "tablet_mac"),
-    ("tag_faces", "tag_faces"),
-    ("tap_and_play", "tap_and_play"),
-    ("terrain", "terrain"),
-    ("text_fields", "text_fields"),
-    ("text_format", "text_format"),
-    ("textsms", "textsms"),
-    ("texture", "texture"),
-    ("theaters", "theaters"),
-    ("thumb_down", "thumb_down"),
-    ("thumb_up", "thumb_up"),
-    ("thumbs_up_down", "thumbs_up_down"),
-    ("time_to_leave", "time_to_leave"),
-    ("timelapse", "timelapse"),
-    ("timeline", "timeline"),
-    ("timer", "timer"),
-    ("timer_10", "timer_10"),
-    ("timer_3", "timer_3"),
-    ("timer_off", "timer_off"),
-    ("title", "title"),
-    ("toc", "toc"),
-    ("today", "today"),
-    ("toll", "toll"),
-    ("tonality", "tonality"),
-    ("touch_app", "touch_app"),
-    ("toys", "toys"),
-    ("track_changes", "track_changes"),
-    ("traffic", "traffic"),
-    ("train", "train"),
-    ("tram", "tram"),
-    ("transfer_within_a_station", "transfer_within_a_station"),
-    ("transform", "transform"),
-    ("translate", "translate"),
-    ("trending_down", "trending_down"),
-    ("trending_flat", "trending_flat"),
-    ("trending_up", "trending_up"),
-    ("tune", "tune"),
-    ("turned_in", "turned_in"),
-    ("turned_in_not", "turned_in_not"),
-    ("tv", "tv"),
-    ("unarchive", "unarchive"),
-    ("undo", "undo"),
-    ("unfold_less", "unfold_less"),
-    ("unfold_more", "unfold_more"),
-    ("update", "update"),
-    ("usb", "usb"),
-    ("verified_user", "verified_user"),
-    ("vertical_align_bottom", "vertical_align_bottom"),
-    ("vertical_align_center", "vertical_align_center"),
-    ("vertical_align_top", "vertical_align_top"),
-    ("vibration", "vibration"),
-    ("video_call", "video_call"),
-    ("video_label", "video_label"),
-    ("video_library", "video_library"),
-    ("videocam", "videocam"),
-    ("videocam_off", "videocam_off"),
-    ("videogame_asset", "videogame_asset"),
-    ("view_agenda", "view_agenda"),
-    ("view_array", "view_array"),
-    ("view_carousel", "view_carousel"),
-    ("view_column", "view_column"),
-    ("view_comfy", "view_comfy"),
-    ("view_compact", "view_compact"),
-    ("view_day", "view_day"),
-    ("view_headline", "view_headline"),
-    ("view_list", "view_list"),
-    ("view_module", "view_module"),
-    ("view_quilt", "view_quilt"),
-    ("view_stream", "view_stream"),
-    ("view_week", "view_week"),
-    ("vignette", "vignette"),
-    ("visibility", "visibility"),
-    ("visibility_off", "visibility_off"),
-    ("voice_chat", "voice_chat"),
-    ("voicemail", "voicemail"),
-    ("volume_down", "volume_down"),
-    ("volume_mute", "volume_mute"),
-    ("volume_off", "volume_off"),
-    ("volume_up", "volume_up"),
-    ("vpn_key", "vpn_key"),
-    ("vpn_lock", "vpn_lock"),
-    ("wallpaper", "wallpaper"),
-    ("warning", "warning"),
-    ("watch", "watch"),
-    ("watch_later", "watch_later"),
-    ("wb_auto", "wb_auto"),
-    ("wb_cloudy", "wb_cloudy"),
-    ("wb_incandescent", "wb_incandescent"),
-    ("wb_iridescent", "wb_iridescent"),
-    ("wb_sunny", "wb_sunny"),
-    ("wc", "wc"),
-    ("web", "web"),
-    ("web_asset", "web_asset"),
-    ("weekend", "weekend"),
-    ("whatshot", "whatshot"),
-    ("widgets", "widgets"),
-    ("wifi", "wifi"),
-    ("wifi_lock", "wifi_lock"),
-    ("wifi_tethering", "wifi_tethering"),
-    ("work", "work"),
-    ("wrap_text", "wrap_text"),
-    ("youtube_searched_for", "youtube_searched_for"),
-    ("zoom_in", "zoom_in"),
-    ("zoom_out", "zoom_out"),
-    ("zoom_out_map", "zoom_out_map"),
-]
+try:
+    ICONS = icon_choices("mdi")
+except FileNotFoundError:
+    # If icons aren't installed yet, set choices to empty list
+    ICONS = []
diff --git a/aleksis/core/views.py b/aleksis/core/views.py
index 84c2a4bcea402a014b21865d788abe8828f4f547..49bf382104daf4001c32971b020dbe9b2d1954e4 100644
--- a/aleksis/core/views.py
+++ b/aleksis/core/views.py
@@ -4,6 +4,7 @@ from urllib.parse import urlencode, urlparse, urlunparse
 
 from django.apps import apps
 from django.conf import settings
+from django.contrib.auth.mixins import LoginRequiredMixin
 from django.contrib.auth.models import Group as DjangoGroup
 from django.contrib.auth.models import Permission, User
 from django.contrib.contenttypes.models import ContentType
@@ -35,7 +36,7 @@ from django.views.generic.edit import DeleteView, FormView
 from django.views.generic.list import ListView
 
 import reversion
-from allauth.account.utils import _has_verified_for_login, send_email_confirmation
+from allauth.account.utils import has_verified_email, send_email_confirmation
 from allauth.account.views import PasswordChangeView, PasswordResetView, SignupView
 from allauth.socialaccount.adapter import get_adapter
 from allauth.socialaccount.models import SocialAccount
@@ -115,6 +116,7 @@ from .registries import (
 from .tables import (
     AdditionalFieldsTable,
     DashboardWidgetTable,
+    FullPersonsTable,
     GroupGlobalPermissionTable,
     GroupObjectPermissionTable,
     GroupsTable,
@@ -358,7 +360,7 @@ def group(request: HttpRequest, id_: int) -> HttpResponse:
     members = group.members.all()
 
     # Build table
-    members_table = PersonsTable(members)
+    members_table = FullPersonsTable(members)
     RequestConfig(request).configure(members_table)
     context["members_table"] = members_table
 
@@ -366,7 +368,7 @@ def group(request: HttpRequest, id_: int) -> HttpResponse:
     owners = group.owners.all()
 
     # Build table
-    owners_table = PersonsTable(owners)
+    owners_table = FullPersonsTable(owners)
     RequestConfig(request).configure(owners_table)
     context["owners_table"] = owners_table
 
@@ -1358,7 +1360,7 @@ class CeleryProgressView(View):
         return get_progress(request, task_id, *args, **kwargs)
 
 
-class CustomPasswordChangeView(PermissionRequiredMixin, PasswordChangeView):
+class CustomPasswordChangeView(LoginRequiredMixin, PermissionRequiredMixin, PasswordChangeView):
     """Custom password change view to allow to disable changing of password."""
 
     permission_required = "core.can_change_password"
@@ -1522,7 +1524,7 @@ class LoginView(AllAuthLoginView):
     def done(self, form_list, **kwargs):
         if settings.ACCOUNT_EMAIL_VERIFICATION == "mandatory":
             user = self.get_user()
-            if not _has_verified_for_login(user, user.email):
+            if not has_verified_email(user, user.email):
                 send_email_confirmation(self.request, user, signup=False, email=user.email)
                 return render(self.request, "account/verification_sent.html")
 
diff --git a/docs/_static/pwa_desktop_chromium.png b/docs/_static/pwa_desktop_chromium.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2f2bb10a380a6147f1a1f516dc6aaf07cb7b545
Binary files /dev/null and b/docs/_static/pwa_desktop_chromium.png differ
diff --git a/docs/_static/pwa_mobile_chromium.png b/docs/_static/pwa_mobile_chromium.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ea9f86d0f13f1e88f030453a16141bb2aba7f60
Binary files /dev/null and b/docs/_static/pwa_mobile_chromium.png differ
diff --git a/docs/_static/pwa_mobile_firefox.png b/docs/_static/pwa_mobile_firefox.png
new file mode 100644
index 0000000000000000000000000000000000000000..482614a3698797115693bf0d9736113bbad9929b
Binary files /dev/null and b/docs/_static/pwa_mobile_firefox.png differ
diff --git a/docs/_static/pwa_mobile_safari.png b/docs/_static/pwa_mobile_safari.png
new file mode 100644
index 0000000000000000000000000000000000000000..8bc4f21e04cecb69d70f56903275c18891aaca63
Binary files /dev/null and b/docs/_static/pwa_mobile_safari.png differ
diff --git a/docs/admin/01_core_concepts.rst b/docs/admin/01_core_concepts.rst
index 11c97f331fadab28a257773267821b08c42589b6..2d626927ae2845594a0a67525d213064f2581e97 100644
--- a/docs/admin/01_core_concepts.rst
+++ b/docs/admin/01_core_concepts.rst
@@ -1,3 +1,5 @@
+.. _core-concept:
+
 Concepts of the AlekSIS core
 ============================
 
diff --git a/docs/admin/10_install.rst b/docs/admin/10_install.rst
index f8b41d0d98efd5daa1df64a5fceea9ae5b86c662..05baa14a8c76f91b3407c47a97c2609c0decad6d 100644
--- a/docs/admin/10_install.rst
+++ b/docs/admin/10_install.rst
@@ -55,7 +55,8 @@ Install some packages from the Debian package system.
                chromium \
                redis-server \
                postgresql \
-               locales-all
+               locales-all \
+               celery
 
 Create PostgreSQL user and database
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -78,7 +79,6 @@ Create the directories for storage
             /usr/share/aleksis/{static,node_modules} \
             /var/lib/aleksis/media \
             /var/backups/aleksis
-   chown -R www-data:www-data /var/lib/aleksis
 
 Create AlekSIS configuration file
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -111,6 +111,18 @@ favourite text editor and adding the following configuration.
    password = "admin"
    email = "root@localhost"
 
+Make sure you specify the correct `allowed_hosts`. It is used for things like the OpenID Connect issuer and the standard mail domain.
+
+Generate OpenID Connect certificate
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+OpenID Connect needs a certificate, which you need to generate and assign required permissions.
+
+.. code-block:: shell
+
+   openssl genrsa -out /etc/aleksis/oidc.pem
+   chown www-data:www-data /etc/aleksis/oidc.pem
+
 Install AlekSIS itself
 ~~~~~~~~~~~~~~~~~~~~~~
 
@@ -119,14 +131,30 @@ They will pull the AlekSIS standard distribution from `PyPI`_ and install it to
 system-wide `dist-packages` of Python. Afterwards, it will download frontend dependencies
 from `yarnpkg`, collect static files, and migrate the database to the final schema.
 
+`aleksis` is a meta-package which will install the :ref:`core-concept`  and all official apps. If you want to install only the AlekSIS Core and your own set of apps, you can install `aleksis-core` instead of `aleksis`.
+
+You only need to install these additional dependencies if installing the meta-package:
+
 .. code-block:: shell
+   apt install libmariadb-dev libldap2-dev libsasl2-dev
+
+After that, you can install the aleksis meta-package, or only `aleksis-core`:
 
+.. code-block:: shell
    pip3 install aleksis
    aleksis-admin yarn install
    aleksis-admin collectstatic
    aleksis-admin migrate
    aleksis-admin createinitialrevisions
 
+Make dynamic content writable for webserver
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To make AlekSIS® able to write dynamic content, you need to assign permissions to the webserver user.
+
+.. code-block:: shell
+   chown -R www-data:www-data /var/lib/aleksis
+
 .. _core-configure-uwsgi:
 
 Configure uWSGI
diff --git a/docs/conf.py b/docs/conf.py
index b31ca6be5a35d2e169c9c13c52de1180b108b608..f8abb48da323b7a1e9c6a59fccb05f3fe702495d 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -29,9 +29,9 @@ copyright = "2019-2022 The AlekSIS team"
 author = "The AlekSIS Team"
 
 # The short X.Y version
-version = "2.9"
+version = "2.10"
 # The full version, including alpha/beta/rc tags
-release = "2.9.1.dev0"
+release = "2.10.1.dev0"
 
 
 # -- General configuration ---------------------------------------------------
diff --git a/docs/user/02_personal_account.rst b/docs/user/02_personal_account.rst
index fe584615cefbaf284a6b3ba2cfd7babeca076f0d..b1b0a596890a75ba4cdce866d9be5d2d4829d518 100644
--- a/docs/user/02_personal_account.rst
+++ b/docs/user/02_personal_account.rst
@@ -84,7 +84,7 @@ Microsoft account), you can manage the connections to these accounts on
 the page ``Account → Third-party accounts``.
 
 The feature to use third-party accounts needs to be enabled by
-an administrator, as described in :doc:`../admin/04_socialaccounts`.
+an administrator, as described in :doc:`../admin/23_socialaccounts`.
 
 Authorized applications
 -----------------------
diff --git a/docs/user/20_pwa.rst b/docs/user/20_pwa.rst
index 3b3b16514cae1c932d321cefc86dcdbd946c59e2..321ec4b7acd457ae015955cef7473bb37d18b0a0 100644
--- a/docs/user/20_pwa.rst
+++ b/docs/user/20_pwa.rst
@@ -6,7 +6,7 @@ What is a progressive web application?
 
 A PWA is an application developed with common web technologies and
 delivered in form of a website, but which offers some features a
-traditional website does not and ,overall, creates an impression that
+traditional website does not and overall creates an impression that
 resembles that of a native application.
 
 AlekSIS PWA features
@@ -30,19 +30,39 @@ platform to platform. On some, you are prompted to add AlekSIS to your
 home screen of desktop using a popup; on others, you have to take action
 yourself and find the corresponding menu entry. As of the time of
 writing, “installable” PWAs are supported by all major platforms except
-Firefox Desktop which nevertheless supports the other features.
-
--  Chromium-based browsers (e.g. Chromium, Google Chrome, Microsoft
-   Edge) will usually prompt you to install the PWA by a popup on both
-   mobile and desktop devices; for the former using a banner and for the
-   latter using an appearing button in the address bar. In both cases, a
-   click on the notification is enough to start the installation
-   process.
--  Firefox Mobile will also probably prompt you using a dot near the
-   menu button; then “install” has to been clicked.
--  On Safari you need to open the share popup and click on the “Add to
-   Home Screen” button.
-
-Independent of the used platform, AlekSIS can be accessed as an
+Firefox Desktop and Safari Desktop which nevertheless support the other features.
+
+Chromium-based browsers (e.g. Chromium, Google Chrome, Microsoft
+Edge) will usually prompt you to install the PWA by a popup on both
+mobile and desktop devices; for the former using a banner
+
+.. image:: ../_static/pwa_mobile_chromium.png
+  :width: 40%
+  :alt: PWA installation prompt on the mobile version of the Chromium browser
+
+and for the latter using an appearing button in the address bar.
+
+.. image:: ../_static/pwa_desktop_chromium.png
+  :width: 100%
+  :alt: PWA installation prompt on the desktop version of the Chromium browser
+
+In both cases, a click on the notification is enough to start
+the installation process.
+
+Firefox Mobile will also prompt you using a dot near the
+menu button; then ``Install`` has to be clicked.
+
+.. image:: ../_static/pwa_mobile_firefox.png
+  :width: 40%
+  :alt: PWA installation prompt on the mobile version of the Firefox browser
+
+On Safari Mobile, you need to open the share popup and click on the
+``Add to Home Screen`` button.
+
+.. image:: ../_static/pwa_mobile_safari.png
+  :width: 40%
+  :alt: PWA installation prompt on the mobile version of the Safari browser
+
+No matter what platform is used, AlekSIS can be accessed as an
 independent application entry, just like any other installed native
 application, after installation.
diff --git a/pyproject.toml b/pyproject.toml
index 3d38ff10860ce159698c7211810b83a1534bd581..25a8b71701535172c27f23b80d201749dce31ee2 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "AlekSIS-Core"
-version = "2.9.1.dev0"
+version = "2.10.1.dev0"
 packages = [
     { include = "aleksis" }
 ]
@@ -71,7 +71,7 @@ django-ipware = "^4.0"
 django-impersonate = "^1.4"
 psycopg2 = "^2.8"
 django_select2 = "^7.1"
-django-two-factor-auth = { version = "^1.12.1", extras = [ "yubikey", "phonenumbers", "call", "sms" ] }
+django-two-factor-auth = { version = "^1.14.0", extras = [ "yubikey", "phonenumbers", "call", "sms" ] }
 django-yarnpkg = "^6.0"
 django-material = "^1.6.0"
 django-dynamic-preferences = "^1.11"
@@ -89,7 +89,7 @@ django-celery-email = "^3.0.0"
 django-jsonstore = "^0.5.0"
 django-polymorphic = "^3.0.0"
 django-colorfield = "^0.7.0"
-django-bleach = "^2.0.0"
+django-bleach = "^3.0.0"
 django-guardian = "^2.2.0"
 rules = "^3.0"
 django-cache-memoize = "^0.1.6"
@@ -97,7 +97,7 @@ django-haystack = "^3.1"
 celery-haystack-ng = "^2.0"
 django-dbbackup = "^4.0.0b"
 spdx-license-list = "^0.5.0"
-license-expression = "^21.6"
+license-expression = "^30.0"
 django-reversion = "^5.0.0"
 django-favicon-plus-reloaded = "^1.1.5"
 django-health-check = "^3.12.1"
@@ -109,7 +109,7 @@ django-model-utils = "^4.0.0"
 bs4 = "^0.0.1"
 django-invitations = "^1.9.3"
 django-cleavejs = "^0.1.0"
-django-allauth = "^0.47.0"
+django-allauth = "^0.51.0"
 django-uwsgi-ng = "^1.1.0"
 django-extensions = "^3.1.1"
 ipython = "^8.0.0"
@@ -127,7 +127,7 @@ sentry-sdk = {version = "^1.4.3", optional = true}
 django-cte = "^1.1.5"
 pycountry = "^22.0.0"
 django-ical = "^1.8.3"
-django-iconify = "^0.2.0"
+django-iconify = "^0.3"
 customidenticon = "^0.1.5"
 
 [tool.poetry.extras]