diff --git a/aleksis/core/locale/ar/LC_MESSAGES/django.po b/aleksis/core/locale/ar/LC_MESSAGES/django.po
index bdff10b2b611efda26d4f27b80141942c30b1fa3..06be8d992f98e848cae13c5abb41c1b29dda8845 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: 2023-07-23 13:39+0200\n"
+"POT-Creation-Date: 2024-01-26 21:43+0100\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"
@@ -18,111 +18,130 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
 
-#: aleksis/core/apps.py:151
+#: aleksis/core/apps.py:162
 msgid "You have been logged out successfully."
 msgstr ""
 
-#: aleksis/core/apps.py:161
+#: aleksis/core/apps.py:172
 msgid "OpenID Connect scope"
 msgstr ""
 
-#: aleksis/core/apps.py:162
+#: aleksis/core/apps.py:173
 msgid "Given name, family name, link to profile and picture if existing."
 msgstr ""
 
-#: aleksis/core/apps.py:163
+#: aleksis/core/apps.py:174
 msgid "Full home postal address"
 msgstr ""
 
-#: aleksis/core/apps.py:164
+#: aleksis/core/apps.py:175
 msgid "Email address"
 msgstr ""
 
-#: aleksis/core/apps.py:165
+#: aleksis/core/apps.py:176
 msgid "Home and mobile phone"
 msgstr ""
 
-#: aleksis/core/apps.py:166 aleksis/core/forms.py:231
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/apps.py:177 aleksis/core/forms.py:223
+#: aleksis/core/models.py:473 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 msgid "Groups"
 msgstr ""
 
-#: aleksis/core/data_checks.py:60
+#: aleksis/core/data_checks.py:67
 msgid "Ignore problem"
 msgstr ""
 
-#: aleksis/core/data_checks.py:188
+#: aleksis/core/data_checks.py:199
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/data_checks.py:284
+#: aleksis/core/data_checks.py:329
 msgid "Deactivate DashboardWidget"
 msgstr ""
 
-#: aleksis/core/data_checks.py:296
+#: aleksis/core/data_checks.py:341
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr ""
 
-#: aleksis/core/data_checks.py:297
+#: aleksis/core/data_checks.py:342
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
-#: aleksis/core/data_checks.py:320
-#, python-format
-msgid "Validate field %s of model %s."
+#: aleksis/core/data_checks.py:364
+#, python-brace-format
+msgid "Validate field {field} of model {model}."
 msgstr ""
 
-#: aleksis/core/data_checks.py:322
-#, python-format
-msgid "The field %s couldn't be validated successfully."
+#: aleksis/core/data_checks.py:367
+msgid "The field {} couldn't be validated successfully."
+msgstr ""
+
+#: aleksis/core/data_checks.py:389
+msgid "Ensure that there are no disallowed usernames."
+msgstr ""
+
+#: aleksis/core/data_checks.py:390
+msgid "A user with a disallowed username was reported automatically."
 msgstr ""
 
-#: aleksis/core/filters.py:42 aleksis/core/templates/core/group/list.html:20
+#: aleksis/core/data_checks.py:411
+msgid "Change email address"
+msgstr ""
+
+#: aleksis/core/data_checks.py:416
+msgid "Ensure that email addresses are unique among all persons"
+msgstr ""
+
+#: aleksis/core/data_checks.py:417
+msgid "There was a non-unique email address."
+msgstr ""
+
+#: aleksis/core/filters.py:39 aleksis/core/templates/core/group/list.html:20
 #: aleksis/core/templates/core/person/list.html:24
 #: aleksis/core/templates/search/search.html:7
 #: aleksis/core/templates/search/search.html:22
 msgid "Search"
 msgstr ""
 
-#: aleksis/core/filters.py:59
+#: aleksis/core/filters.py:56
 msgid "Search by name"
 msgstr ""
 
-#: aleksis/core/filters.py:71
+#: aleksis/core/filters.py:68
 msgid "Search by contact details"
 msgstr ""
 
-#: aleksis/core/filters.py:92
+#: aleksis/core/filters.py:89
 msgid "Permission"
 msgstr ""
 
-#: aleksis/core/filters.py:100
+#: aleksis/core/filters.py:97
 msgid "Content type"
 msgstr ""
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:743
+#: aleksis/core/filters.py:110 aleksis/core/models.py:647
 msgid "User"
 msgstr ""
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:516
+#: aleksis/core/filters.py:132 aleksis/core/models.py:472
 msgid "Group"
 msgstr ""
 
-#: aleksis/core/forms.py:50 aleksis/core/forms.py:591
+#: aleksis/core/forms.py:48 aleksis/core/forms.py:574
 msgid "Base data"
 msgstr ""
 
-#: aleksis/core/forms.py:55 aleksis/core/tables.py:29
+#: aleksis/core/forms.py:53 aleksis/core/tables.py:29
 msgid "Address"
 msgstr ""
 
-#: aleksis/core/forms.py:56 aleksis/core/forms.py:600
+#: aleksis/core/forms.py:54 aleksis/core/forms.py:583
 msgid "Contact data"
 msgstr ""
 
-#: aleksis/core/forms.py:58
+#: aleksis/core/forms.py:56
 msgid "Advanced personal data"
 msgstr ""
 
@@ -142,7 +161,7 @@ msgstr ""
 msgid "This username is already in use."
 msgstr ""
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:154
+#: aleksis/core/forms.py:153 aleksis/core/models.py:147
 msgid "School term"
 msgstr ""
 
@@ -150,124 +169,124 @@ msgstr ""
 msgid "Common data"
 msgstr ""
 
-#: aleksis/core/forms.py:155 aleksis/core/forms.py:218
-#: aleksis/core/models.py:177 aleksis/core/templates/core/person/list.html:8
+#: aleksis/core/forms.py:155 aleksis/core/forms.py:210
+#: aleksis/core/models.py:168 aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
 msgstr ""
 
-#: aleksis/core/forms.py:156 aleksis/core/forms.py:602
-msgid "Additional data"
-msgstr ""
-
-#: aleksis/core/forms.py:157 aleksis/core/models.py:230
-#: aleksis/core/models.py:569 aleksis/core/tables.py:28
+#: aleksis/core/forms.py:156 aleksis/core/models.py:224
+#: aleksis/core/models.py:526 aleksis/core/tables.py:28
 msgid "Photo"
 msgstr ""
 
-#: aleksis/core/forms.py:210 aleksis/core/forms.py:213
-#: aleksis/core/models.py:97
+#: aleksis/core/forms.py:202 aleksis/core/forms.py:205
+#: aleksis/core/models.py:90
 msgid "Date"
 msgstr ""
 
-#: aleksis/core/forms.py:211 aleksis/core/forms.py:214
-#: aleksis/core/models.py:105
+#: aleksis/core/forms.py:203 aleksis/core/forms.py:206
+#: aleksis/core/models.py:98
 msgid "Time"
 msgstr ""
 
-#: aleksis/core/forms.py:244
+#: aleksis/core/forms.py:236
 msgid "From when until when should the announcement be displayed?"
 msgstr ""
 
-#: aleksis/core/forms.py:247
+#: aleksis/core/forms.py:239
 msgid "Who should see the announcement?"
 msgstr ""
 
-#: aleksis/core/forms.py:248
+#: aleksis/core/forms.py:240
 msgid "Write your announcement:"
 msgstr ""
 
-#: aleksis/core/forms.py:287
+#: aleksis/core/forms.py:279
 msgid "You are not allowed to create announcements which are only valid in the past."
 msgstr ""
 
-#: aleksis/core/forms.py:291
+#: aleksis/core/forms.py:283
 msgid "The from date and time must be earlier then the until date and time."
 msgstr ""
 
-#: aleksis/core/forms.py:300
+#: aleksis/core/forms.py:292
 msgid "You need at least one recipient."
 msgstr ""
 
-#: aleksis/core/forms.py:408
+#: aleksis/core/forms.py:392
 msgid "Invitation code"
 msgstr ""
 
-#: aleksis/core/forms.py:409
+#: aleksis/core/forms.py:393
 msgid "Please enter your invitation code."
 msgstr ""
 
-#: aleksis/core/forms.py:428 aleksis/core/models.py:205
+#: aleksis/core/forms.py:412 aleksis/core/models.py:197
 msgid "First name"
 msgstr ""
 
-#: aleksis/core/forms.py:429 aleksis/core/models.py:206
+#: aleksis/core/forms.py:413 aleksis/core/models.py:198
 msgid "Last name"
 msgstr ""
 
-#: aleksis/core/forms.py:438
+#: aleksis/core/forms.py:422
 msgid "A person is using this e-mail address"
 msgstr ""
 
-#: aleksis/core/forms.py:466
+#: aleksis/core/forms.py:450
 msgid "Who should get the permission?"
 msgstr ""
 
-#: aleksis/core/forms.py:467
+#: aleksis/core/forms.py:451
 msgid "On what?"
 msgstr ""
 
-#: aleksis/core/forms.py:493
+#: aleksis/core/forms.py:477
 msgid "Select objects which the permission should be granted for:"
 msgstr ""
 
-#: aleksis/core/forms.py:496
+#: aleksis/core/forms.py:480
 msgid "Grant the permission for all objects"
 msgstr ""
 
-#: aleksis/core/forms.py:504
+#: aleksis/core/forms.py:488
 msgid "You must select at least one group or person which should get the permission."
 msgstr ""
 
-#: aleksis/core/forms.py:509
+#: aleksis/core/forms.py:493
 msgid "You must grant the permission to all objects or to specific objects."
 msgstr ""
 
-#: aleksis/core/forms.py:596
+#: aleksis/core/forms.py:579
 msgid "Address data"
 msgstr ""
 
-#: aleksis/core/forms.py:608
+#: aleksis/core/forms.py:585
+msgid "Additional data"
+msgstr ""
+
+#: aleksis/core/forms.py:591
 msgid "Account data"
 msgstr ""
 
-#: aleksis/core/forms.py:615
+#: aleksis/core/forms.py:598
 msgid "Password"
 msgstr ""
 
-#: aleksis/core/forms.py:618
+#: aleksis/core/forms.py:601
 msgid "Password (again)"
 msgstr ""
 
-#: aleksis/core/forms.py:771
+#: aleksis/core/forms.py:753
 msgid "The selected action does not exist."
 msgstr ""
 
-#: aleksis/core/forms.py:782
+#: aleksis/core/forms.py:764
 msgid "You do not have permission to run {} on all selected objects."
 msgstr ""
 
-#: aleksis/core/forms.py:838
+#: aleksis/core/forms.py:820
 msgid "No valid selection."
 msgstr ""
 
@@ -291,943 +310,953 @@ msgstr ""
 msgid "No backup result found!"
 msgstr ""
 
-#: aleksis/core/mixins.py:539
+#: aleksis/core/mixins.py:446
 msgid "Linked school term"
 msgstr ""
 
-#: aleksis/core/models.py:95
+#: aleksis/core/models.py:88
 msgid "Boolean (Yes/No)"
 msgstr ""
 
-#: aleksis/core/models.py:96
+#: aleksis/core/models.py:89
 msgid "Text (one line)"
 msgstr ""
 
-#: aleksis/core/models.py:98
+#: aleksis/core/models.py:91
 msgid "Date and time"
 msgstr ""
 
-#: aleksis/core/models.py:99
+#: aleksis/core/models.py:92
 msgid "Decimal number"
 msgstr ""
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:223
+#: aleksis/core/models.py:93 aleksis/core/models.py:217
 msgid "E-mail address"
 msgstr ""
 
-#: aleksis/core/models.py:101
+#: aleksis/core/models.py:94
 msgid "Integer"
 msgstr ""
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:95
 msgid "IP address"
 msgstr ""
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:96
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr ""
 
-#: aleksis/core/models.py:104
+#: aleksis/core/models.py:97
 msgid "Text (multi-line)"
 msgstr ""
 
-#: aleksis/core/models.py:106
+#: aleksis/core/models.py:99
 msgid "URL / Link"
 msgstr ""
 
-#: aleksis/core/models.py:118 aleksis/core/models.py:1100
-#: aleksis/core/models.py:1729
+#: aleksis/core/models.py:111 aleksis/core/models.py:1004
+#: aleksis/core/models.py:1667 aleksis/core/models.py:1806
 msgid "Name"
 msgstr ""
 
-#: aleksis/core/models.py:120 aleksis/core/models.py:1532
+#: aleksis/core/models.py:113 aleksis/core/models.py:1428
 msgid "Start date"
 msgstr ""
 
-#: aleksis/core/models.py:121 aleksis/core/models.py:1533
+#: aleksis/core/models.py:114 aleksis/core/models.py:1429
 msgid "End date"
 msgstr ""
 
-#: aleksis/core/models.py:140 aleksis/core/schema/school_term.py:48
+#: aleksis/core/models.py:133 aleksis/core/schema/school_term.py:50
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: aleksis/core/models.py:147 aleksis/core/schema/school_term.py:53
+#: aleksis/core/models.py:140 aleksis/core/schema/school_term.py:55
 msgid "There is already a school term for this time or a part of this time."
 msgstr ""
 
-#: aleksis/core/models.py:155
+#: aleksis/core/models.py:148
 msgid "School terms"
 msgstr ""
 
-#: aleksis/core/models.py:176 aleksis/core/models.py:1049
+#: aleksis/core/models.py:167 aleksis/core/models.py:953
 msgid "Person"
 msgstr ""
 
-#: aleksis/core/models.py:179
+#: aleksis/core/models.py:170
 msgid "Can view address"
 msgstr ""
 
-#: aleksis/core/models.py:180
+#: aleksis/core/models.py:171
 msgid "Can view contact details"
 msgstr ""
 
-#: aleksis/core/models.py:181
+#: aleksis/core/models.py:172
 msgid "Can view photo"
 msgstr ""
 
-#: aleksis/core/models.py:182
+#: aleksis/core/models.py:173
 msgid "Can view avatar image"
 msgstr ""
 
-#: aleksis/core/models.py:183
+#: aleksis/core/models.py:174
 msgid "Can view persons groups"
 msgstr ""
 
-#: aleksis/core/models.py:184
+#: aleksis/core/models.py:175
 msgid "Can view personal details"
 msgstr ""
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "female"
 msgstr ""
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "male"
 msgstr ""
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "other"
 msgstr ""
 
-#: aleksis/core/models.py:202 aleksis/core/models.py:1404
+#: aleksis/core/models.py:194 aleksis/core/models.py:1296
 msgid "Linked user"
 msgstr ""
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:200
 msgid "Additional name(s)"
 msgstr ""
 
-#: aleksis/core/models.py:212 aleksis/core/models.py:534
-#: aleksis/core/models.py:1490
+#: aleksis/core/models.py:204 aleksis/core/models.py:491
+#: aleksis/core/models.py:1388
 msgid "Short name"
 msgstr ""
 
-#: aleksis/core/models.py:215
+#: aleksis/core/models.py:209
 msgid "Street"
 msgstr ""
 
-#: aleksis/core/models.py:216
+#: aleksis/core/models.py:210
 msgid "Street number"
 msgstr ""
 
-#: aleksis/core/models.py:217
+#: aleksis/core/models.py:211
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/core/models.py:218
+#: aleksis/core/models.py:212
 msgid "Place"
 msgstr ""
 
-#: aleksis/core/models.py:220
+#: aleksis/core/models.py:214
 msgid "Home phone"
 msgstr ""
 
-#: aleksis/core/models.py:221
+#: aleksis/core/models.py:215
 msgid "Mobile phone"
 msgstr ""
 
-#: aleksis/core/models.py:225
+#: aleksis/core/models.py:219
 msgid "Date of birth"
 msgstr ""
 
-#: aleksis/core/models.py:226
+#: aleksis/core/models.py:220
 msgid "Place of birth"
 msgstr ""
 
-#: aleksis/core/models.py:227
+#: aleksis/core/models.py:221
 msgid "Sex"
 msgstr ""
 
-#: aleksis/core/models.py:234 aleksis/core/models.py:573
+#: aleksis/core/models.py:228 aleksis/core/models.py:530
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr ""
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:577
+#: aleksis/core/models.py:233 aleksis/core/models.py:534
 msgid "Display picture / Avatar"
 msgstr ""
 
-#: aleksis/core/models.py:242 aleksis/core/models.py:580
+#: aleksis/core/models.py:236 aleksis/core/models.py:537
 msgid "This is a picture or an avatar for public display."
 msgstr ""
 
-#: aleksis/core/models.py:247
+#: aleksis/core/models.py:241
 msgid "Guardians / Parents"
 msgstr ""
 
-#: aleksis/core/models.py:254
+#: aleksis/core/models.py:248
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/core/models.py:257 aleksis/core/models.py:747
-#: aleksis/core/models.py:771 aleksis/core/models.py:866
-#: aleksis/core/models.py:1135
+#: aleksis/core/models.py:251 aleksis/core/models.py:651
+#: aleksis/core/models.py:675 aleksis/core/models.py:770
+#: aleksis/core/models.py:1038 aleksis/core/models.py:1723
 msgid "Description"
 msgstr ""
 
-#: aleksis/core/models.py:487
-msgid "Title of field"
-msgstr ""
-
-#: aleksis/core/models.py:489
-msgid "Type of field"
-msgstr ""
-
-#: aleksis/core/models.py:491
-msgid "Required"
-msgstr ""
-
-#: aleksis/core/models.py:492
-msgid "Help text / description"
-msgstr ""
-
-#: aleksis/core/models.py:498
-msgid "Addtitional field for groups"
-msgstr ""
-
-#: aleksis/core/models.py:499
-msgid "Addtitional fields for groups"
-msgstr ""
-
-#: aleksis/core/models.py:519
+#: aleksis/core/models.py:475
 msgid "Can assign child groups to groups"
 msgstr ""
 
-#: aleksis/core/models.py:520
+#: aleksis/core/models.py:476
 msgid "Can view statistics about group."
 msgstr ""
 
-#: aleksis/core/models.py:532 aleksis/core/models.py:1491
+#: aleksis/core/models.py:489 aleksis/core/models.py:1389
 msgid "Long name"
 msgstr ""
 
-#: aleksis/core/models.py:542 aleksis/core/templates/core/group/full.html:105
+#: aleksis/core/models.py:502 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr ""
 
-#: aleksis/core/models.py:545 aleksis/core/templates/core/group/full.html:102
+#: aleksis/core/models.py:505 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr ""
 
-#: aleksis/core/models.py:552 aleksis/core/templates/core/group/full.html:59
+#: aleksis/core/models.py:512 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr ""
 
-#: aleksis/core/models.py:560
+#: aleksis/core/models.py:520
 msgid "Type of group"
 msgstr ""
 
-#: aleksis/core/models.py:565
-#: aleksis/core/templates/core/additional_field/list.html:8
-#: aleksis/core/templates/core/additional_field/list.html:9
-msgid "Additional fields"
-msgstr ""
-
-#: aleksis/core/models.py:746 aleksis/core/models.py:770
-#: aleksis/core/models.py:865 aleksis/core/models.py:1321
+#: aleksis/core/models.py:650 aleksis/core/models.py:674
+#: aleksis/core/models.py:769 aleksis/core/models.py:1213
+#: aleksis/core/models.py:1722
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr ""
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:653
 msgid "Application"
 msgstr ""
 
-#: aleksis/core/models.py:755
+#: aleksis/core/models.py:659
 msgid "Activity"
 msgstr ""
 
-#: aleksis/core/models.py:756
+#: aleksis/core/models.py:660
 msgid "Activities"
 msgstr ""
 
-#: aleksis/core/models.py:762
+#: aleksis/core/models.py:666
 msgid "Sender"
 msgstr ""
 
-#: aleksis/core/models.py:767
+#: aleksis/core/models.py:671
 msgid "Recipient"
 msgstr ""
 
-#: aleksis/core/models.py:772 aleksis/core/models.py:1101
+#: aleksis/core/models.py:676 aleksis/core/models.py:1005
 msgid "Link"
 msgstr ""
 
-#: aleksis/core/models.py:775 aleksis/core/models.py:1102
-#: aleksis/core/models.py:1451
+#: aleksis/core/models.py:679 aleksis/core/models.py:1006
+#: aleksis/core/models.py:1346
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr ""
 
-#: aleksis/core/models.py:778
+#: aleksis/core/models.py:682
 msgid "Send notification at"
 msgstr ""
 
-#: aleksis/core/models.py:780
+#: aleksis/core/models.py:684
 msgid "Read"
 msgstr ""
 
-#: aleksis/core/models.py:781
+#: aleksis/core/models.py:685
 msgid "Sent"
 msgstr ""
 
-#: aleksis/core/models.py:798
+#: aleksis/core/models.py:702
 msgid "Notification"
 msgstr ""
 
-#: aleksis/core/models.py:799 aleksis/core/preferences.py:28
+#: aleksis/core/models.py:703 aleksis/core/preferences.py:29
 msgid "Notifications"
 msgstr ""
 
-#: aleksis/core/models.py:867
+#: aleksis/core/models.py:771
 msgid "Link to detailed view"
 msgstr ""
 
-#: aleksis/core/models.py:870
+#: aleksis/core/models.py:774
 msgid "Date and time from when to show"
 msgstr ""
 
-#: aleksis/core/models.py:873
+#: aleksis/core/models.py:777
 msgid "Date and time until when to show"
 msgstr ""
 
-#: aleksis/core/models.py:898
+#: aleksis/core/models.py:802
 msgid "Announcement"
 msgstr ""
 
-#: aleksis/core/models.py:899
+#: aleksis/core/models.py:803
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr ""
 
-#: aleksis/core/models.py:936
+#: aleksis/core/models.py:840
 msgid "Announcement recipient"
 msgstr ""
 
-#: aleksis/core/models.py:937
+#: aleksis/core/models.py:841
 msgid "Announcement recipients"
 msgstr ""
 
-#: aleksis/core/models.py:957
+#: aleksis/core/models.py:861
 msgid "Widget Title"
 msgstr ""
 
-#: aleksis/core/models.py:958
+#: aleksis/core/models.py:862
 msgid "Activate Widget"
 msgstr ""
 
-#: aleksis/core/models.py:959
+#: aleksis/core/models.py:863
 msgid "Widget is broken"
 msgstr ""
 
-#: aleksis/core/models.py:962
+#: aleksis/core/models.py:866
 msgid "Size on mobile devices"
 msgstr ""
 
-#: aleksis/core/models.py:963
+#: aleksis/core/models.py:867
 msgid "<= 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:968
+#: aleksis/core/models.py:872
 msgid "Size on tablet devices"
 msgstr ""
 
-#: aleksis/core/models.py:969
+#: aleksis/core/models.py:873
 msgid "> 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:974
+#: aleksis/core/models.py:878
 msgid "Size on desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:975
+#: aleksis/core/models.py:879
 msgid "> 992 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:980
+#: aleksis/core/models.py:884
 msgid "Size on large desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:981
+#: aleksis/core/models.py:885
 msgid "> 1200 px>, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:1012
+#: aleksis/core/models.py:916
 msgid "Can edit default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1013
+#: aleksis/core/models.py:917
 msgid "Dashboard Widget"
 msgstr ""
 
-#: aleksis/core/models.py:1014
+#: aleksis/core/models.py:918
 msgid "Dashboard Widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1020
+#: aleksis/core/models.py:924
 msgid "URL"
 msgstr ""
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:925
 msgid "Icon URL"
 msgstr ""
 
-#: aleksis/core/models.py:1027
+#: aleksis/core/models.py:931
 msgid "External link widget"
 msgstr ""
 
-#: aleksis/core/models.py:1028
+#: aleksis/core/models.py:932
 msgid "External link widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1034
+#: aleksis/core/models.py:938
 msgid "Content"
 msgstr ""
 
-#: aleksis/core/models.py:1040
+#: aleksis/core/models.py:944
 msgid "Static content widget"
 msgstr ""
 
-#: aleksis/core/models.py:1041
+#: aleksis/core/models.py:945
 msgid "Static content widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1046
+#: aleksis/core/models.py:950
 msgid "Dashboard widget"
 msgstr ""
 
-#: aleksis/core/models.py:1051
+#: aleksis/core/models.py:955
 msgid "Order"
 msgstr ""
 
-#: aleksis/core/models.py:1052
+#: aleksis/core/models.py:956
 msgid "Part of the default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1067
+#: aleksis/core/models.py:971
 msgid "Dashboard widget order"
 msgstr ""
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:972
 msgid "Dashboard widget orders"
 msgstr ""
 
-#: aleksis/core/models.py:1074
+#: aleksis/core/models.py:978
 msgid "Menu ID"
 msgstr ""
 
-#: aleksis/core/models.py:1087
+#: aleksis/core/models.py:991
 msgid "Custom menu"
 msgstr ""
 
-#: aleksis/core/models.py:1088
+#: aleksis/core/models.py:992
 msgid "Custom menus"
 msgstr ""
 
-#: aleksis/core/models.py:1098
+#: aleksis/core/models.py:1002
 msgid "Menu"
 msgstr ""
 
-#: aleksis/core/models.py:1108
+#: aleksis/core/models.py:1012
 msgid "Custom menu item"
 msgstr ""
 
-#: aleksis/core/models.py:1109
+#: aleksis/core/models.py:1013
 msgid "Custom menu items"
 msgstr ""
 
-#: aleksis/core/models.py:1134
+#: aleksis/core/models.py:1037
 msgid "Title of type"
 msgstr ""
 
-#: aleksis/core/models.py:1141 aleksis/core/templates/core/group/full.html:50
+#: aleksis/core/models.py:1044 aleksis/core/templates/core/group/full.html:50
 msgid "Group type"
 msgstr ""
 
-#: aleksis/core/models.py:1142
+#: aleksis/core/models.py:1045
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
 msgstr ""
 
-#: aleksis/core/models.py:1155
+#: aleksis/core/models.py:1056
 msgid "Can view system status"
 msgstr ""
 
-#: aleksis/core/models.py:1156
+#: aleksis/core/models.py:1057
 msgid "Can manage data"
 msgstr ""
 
-#: aleksis/core/models.py:1157
+#: aleksis/core/models.py:1058
 msgid "Can impersonate"
 msgstr ""
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1059
 msgid "Can use search"
 msgstr ""
 
-#: aleksis/core/models.py:1159
+#: aleksis/core/models.py:1060
 msgid "Can change site preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1160
+#: aleksis/core/models.py:1061
 msgid "Can change person preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1161
+#: aleksis/core/models.py:1062
 msgid "Can change group preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1162
+#: aleksis/core/models.py:1063
 msgid "Can test PDF generation"
 msgstr ""
 
-#: aleksis/core/models.py:1163
+#: aleksis/core/models.py:1064
 msgid "Can invite persons"
 msgstr ""
 
-#: aleksis/core/models.py:1199
+#: aleksis/core/models.py:1065
+msgid "Can view birthday calendar"
+msgstr ""
+
+#: aleksis/core/models.py:1092
 msgid "Related data check task"
 msgstr ""
 
-#: aleksis/core/models.py:1207
+#: aleksis/core/models.py:1100
 msgid "Issue solved"
 msgstr ""
 
-#: aleksis/core/models.py:1208
+#: aleksis/core/models.py:1101
 msgid "Notification sent"
 msgstr ""
 
-#: aleksis/core/models.py:1221
+#: aleksis/core/models.py:1114
 msgid "Data check result"
 msgstr ""
 
-#: aleksis/core/models.py:1222
+#: aleksis/core/models.py:1115
 msgid "Data check results"
 msgstr ""
 
-#: aleksis/core/models.py:1224
+#: aleksis/core/models.py:1117
 msgid "Can run data checks"
 msgstr ""
 
-#: aleksis/core/models.py:1225
+#: aleksis/core/models.py:1118
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1232
+#: aleksis/core/models.py:1125
 msgid "E-Mail address"
 msgstr ""
 
-#: aleksis/core/models.py:1292
+#: aleksis/core/models.py:1184 aleksis/core/models.py:1730
 msgid "Owner"
 msgstr ""
 
-#: aleksis/core/models.py:1296
+#: aleksis/core/models.py:1188
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1299
+#: aleksis/core/models.py:1191
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1302
+#: aleksis/core/models.py:1194
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1309
+#: aleksis/core/models.py:1201
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1310
+#: aleksis/core/models.py:1202
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1315
+#: aleksis/core/models.py:1207
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1318
+#: aleksis/core/models.py:1210
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1322
+#: aleksis/core/models.py:1214
 msgid "Back URL"
 msgstr ""
 
-#: aleksis/core/models.py:1323
+#: aleksis/core/models.py:1215
 msgid "Progress title"
 msgstr ""
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1216
 msgid "Error message"
 msgstr ""
 
-#: aleksis/core/models.py:1325
+#: aleksis/core/models.py:1217
 msgid "Success message"
 msgstr ""
 
-#: aleksis/core/models.py:1326
+#: aleksis/core/models.py:1218
 msgid "Redirect on success URL"
 msgstr ""
 
-#: aleksis/core/models.py:1328
+#: aleksis/core/models.py:1220
 msgid "Additional button title"
 msgstr ""
 
-#: aleksis/core/models.py:1330
+#: aleksis/core/models.py:1222
 msgid "Additional button URL"
 msgstr ""
 
-#: aleksis/core/models.py:1332
+#: aleksis/core/models.py:1224
 msgid "Additional button icon"
 msgstr ""
 
-#: aleksis/core/models.py:1334
+#: aleksis/core/models.py:1226
 msgid "Result fetched"
 msgstr ""
 
-#: aleksis/core/models.py:1359
+#: aleksis/core/models.py:1251
 msgid "Background task completed successfully"
 msgstr ""
 
-#: aleksis/core/models.py:1360
+#: aleksis/core/models.py:1252
 msgid "The background task '{}' has been completed successfully."
 msgstr ""
 
-#: aleksis/core/models.py:1366
+#: aleksis/core/models.py:1258
 msgid "Background task failed"
 msgstr ""
 
-#: aleksis/core/models.py:1367
+#: aleksis/core/models.py:1259
 msgid "The background task '{}' has failed."
 msgstr ""
 
-#: aleksis/core/models.py:1376
+#: aleksis/core/models.py:1268
 msgid "Background task"
 msgstr ""
 
-#: aleksis/core/models.py:1390
+#: aleksis/core/models.py:1282
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1391
+#: aleksis/core/models.py:1283
 msgid "Task user assignments"
 msgstr ""
 
-#: aleksis/core/models.py:1407
+#: aleksis/core/models.py:1299
 msgid "Additional attributes"
 msgstr ""
 
-#: aleksis/core/models.py:1445
+#: aleksis/core/models.py:1340
 msgid "Allowed scopes that clients can request"
 msgstr ""
 
-#: aleksis/core/models.py:1455
+#: aleksis/core/models.py:1350
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr ""
 
-#: aleksis/core/models.py:1500
+#: aleksis/core/models.py:1398
 msgid "Can view room timetable"
 msgstr ""
 
-#: aleksis/core/models.py:1502
+#: aleksis/core/models.py:1400
 msgid "Room"
 msgstr ""
 
-#: aleksis/core/models.py:1503
+#: aleksis/core/models.py:1401
 msgid "Rooms"
 msgstr ""
 
-#: aleksis/core/models.py:1528
+#: aleksis/core/models.py:1424
 msgid "Start date and time"
 msgstr ""
 
-#: aleksis/core/models.py:1530
+#: aleksis/core/models.py:1426
 msgid "End date and time"
 msgstr ""
 
-#: aleksis/core/models.py:1531
+#: aleksis/core/models.py:1427
 msgid "Timezone"
 msgstr ""
 
-#: aleksis/core/models.py:1534
+#: aleksis/core/models.py:1430
 msgid "Recurrences"
 msgstr ""
 
-#: aleksis/core/models.py:1540
+#: aleksis/core/models.py:1436
 msgid "Amended base event"
 msgstr ""
 
-#: aleksis/core/models.py:1643
+#: aleksis/core/models.py:1561
 msgid "Calendar Event"
 msgstr ""
 
-#: aleksis/core/models.py:1644
+#: aleksis/core/models.py:1562
 msgid "Calendar Events"
 msgstr ""
 
-#: aleksis/core/models.py:1670
+#: aleksis/core/models.py:1592
 msgid "Birthdays"
 msgstr ""
 
-#: aleksis/core/models.py:1674
+#: aleksis/core/models.py:1597
 msgid "{}'s birthday"
 msgstr ""
 
-#: aleksis/core/models.py:1713 aleksis/core/models.py:1775
+#: aleksis/core/models.py:1648 aleksis/core/models.py:1714
 msgid "Holidays"
 msgstr ""
 
-#: aleksis/core/models.py:1774
+#: aleksis/core/models.py:1713
 msgid "Holiday"
 msgstr ""
 
-#: aleksis/core/preferences.py:24
-msgid "General"
+#: aleksis/core/models.py:1715
+msgid "Can view holiday calendar"
+msgstr ""
+
+#: aleksis/core/models.py:1720
+msgid "Personal events"
+msgstr ""
+
+#: aleksis/core/models.py:1724
+msgid "Location"
+msgstr ""
+
+#: aleksis/core/models.py:1807
+msgid "Email"
+msgstr ""
+
+#: aleksis/core/models.py:1810
+msgid "Related group"
+msgstr ""
+
+#: aleksis/core/models.py:1817
+msgid "Organisation"
+msgstr ""
+
+#: aleksis/core/models.py:1818
+msgid "Organisations"
 msgstr ""
 
 #: aleksis/core/preferences.py:25
-msgid "School"
+msgid "General"
 msgstr ""
 
 #: aleksis/core/preferences.py:26
-msgid "Theme"
+msgid "School"
 msgstr ""
 
 #: aleksis/core/preferences.py:27
+msgid "Theme"
+msgstr ""
+
+#: aleksis/core/preferences.py:28
 msgid "Mail"
 msgstr ""
 
-#: aleksis/core/preferences.py:29
+#: aleksis/core/preferences.py:30
 msgid "Footer"
 msgstr ""
 
-#: aleksis/core/preferences.py:30
+#: aleksis/core/preferences.py:31
 msgid "Accounts"
 msgstr ""
 
-#: aleksis/core/preferences.py:31
+#: aleksis/core/preferences.py:32
 msgid "Authentication"
 msgstr ""
 
-#: aleksis/core/preferences.py:32
+#: aleksis/core/preferences.py:33
 msgid "Internationalisation"
 msgstr ""
 
-#: aleksis/core/preferences.py:33
+#: aleksis/core/preferences.py:34
 msgid "Calendar"
 msgstr ""
 
-#: aleksis/core/preferences.py:43
+#: aleksis/core/preferences.py:44
 msgid "Site title"
 msgstr ""
 
-#: aleksis/core/preferences.py:55
+#: aleksis/core/preferences.py:56
 msgid "Site description"
 msgstr ""
 
-#: aleksis/core/preferences.py:65
+#: aleksis/core/preferences.py:66
 msgid "Primary colour"
 msgstr ""
 
-#: aleksis/core/preferences.py:77
+#: aleksis/core/preferences.py:78
 msgid "Secondary colour"
 msgstr ""
 
-#: aleksis/core/preferences.py:89
+#: aleksis/core/preferences.py:90
 msgid "Logo"
 msgstr ""
 
-#: aleksis/core/preferences.py:100
+#: aleksis/core/preferences.py:101
 msgid "Favicon"
 msgstr ""
 
-#: aleksis/core/preferences.py:111
+#: aleksis/core/preferences.py:112
 msgid "PWA-Icon"
 msgstr ""
 
-#: aleksis/core/preferences.py:121
+#: aleksis/core/preferences.py:122
 msgid "PWA-Icon is maskable"
 msgstr ""
 
-#: aleksis/core/preferences.py:133
+#: aleksis/core/preferences.py:134
 msgid "Mail out name"
 msgstr ""
 
-#: aleksis/core/preferences.py:144
+#: aleksis/core/preferences.py:145
 msgid "Mail out address"
 msgstr ""
 
-#: aleksis/core/preferences.py:157
+#: aleksis/core/preferences.py:158
 msgid "Link to privacy policy"
 msgstr ""
 
-#: aleksis/core/preferences.py:169
+#: aleksis/core/preferences.py:170
 msgid "Link to imprint"
 msgstr ""
 
-#: aleksis/core/preferences.py:180
+#: aleksis/core/preferences.py:181
 msgid "Name format for addressing"
 msgstr ""
 
-#: aleksis/core/preferences.py:197
+#: aleksis/core/preferences.py:198
 msgid "Channels to use for notifications"
 msgstr ""
 
-#: aleksis/core/preferences.py:208
+#: aleksis/core/preferences.py:209
 msgid "Select Design"
 msgstr ""
 
-#: aleksis/core/preferences.py:211
+#: aleksis/core/preferences.py:212
 msgid "Light mode"
 msgstr ""
 
-#: aleksis/core/preferences.py:224
+#: aleksis/core/preferences.py:225
 msgid "Regular expression to match primary group, e.g. '^Class .*'"
 msgstr ""
 
-#: aleksis/core/preferences.py:235
+#: aleksis/core/preferences.py:236
 msgid "Field on person to match primary group against"
 msgstr ""
 
-#: aleksis/core/preferences.py:247
+#: aleksis/core/preferences.py:248
 msgid "Automatically create new persons for new users"
 msgstr ""
 
-#: aleksis/core/preferences.py:256
+#: aleksis/core/preferences.py:257
 msgid "Automatically link existing persons to new users by their e-mail address"
 msgstr ""
 
-#: aleksis/core/preferences.py:267
+#: aleksis/core/preferences.py:268
 msgid "Display name of the school"
 msgstr ""
 
-#: aleksis/core/preferences.py:278
+#: aleksis/core/preferences.py:279
 msgid "Official name of the school, e.g. as given by supervisory authority"
 msgstr ""
 
-#: aleksis/core/preferences.py:286
+#: aleksis/core/preferences.py:287
 msgid "Allow users to change their passwords"
 msgstr ""
 
-#: aleksis/core/preferences.py:294
+#: aleksis/core/preferences.py:295
 msgid "Allow users to reset their passwords"
 msgstr ""
 
-#: aleksis/core/preferences.py:302
+#: aleksis/core/preferences.py:303
 msgid "Enable signup"
 msgstr ""
 
-#: aleksis/core/preferences.py:310
+#: aleksis/core/preferences.py:311
 msgid "Regular expression for allowed usernames"
 msgstr ""
 
-#: aleksis/core/preferences.py:318
+#: aleksis/core/preferences.py:319
 msgid "Enable invitations"
 msgstr ""
 
-#: aleksis/core/preferences.py:326
+#: aleksis/core/preferences.py:327
 msgid "Length of invite code. (Default 3: abcde-acbde-abcde)"
 msgstr ""
 
-#: aleksis/core/preferences.py:334
+#: aleksis/core/preferences.py:335
 msgid "Size of packets. (Default 5: abcde)"
 msgstr ""
 
-#: aleksis/core/preferences.py:345
+#: aleksis/core/preferences.py:346
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr ""
 
-#: aleksis/core/preferences.py:358
+#: aleksis/core/preferences.py:359
 msgid "Send emails if data checks detect problems"
 msgstr ""
 
-#: aleksis/core/preferences.py:369
+#: aleksis/core/preferences.py:370
 msgid "Email recipients for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:380
+#: aleksis/core/preferences.py:381
 msgid "Email recipient groups for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:389
+#: aleksis/core/preferences.py:390
 msgid "Show dashboard to users without login"
 msgstr ""
 
-#: aleksis/core/preferences.py:398
+#: aleksis/core/preferences.py:399
 msgid "Allow users to edit their dashboard"
 msgstr ""
 
-#: aleksis/core/preferences.py:409
+#: aleksis/core/preferences.py:410
 msgid "Fields on person model which are editable by themselves."
 msgstr ""
 
-#: aleksis/core/preferences.py:424
+#: aleksis/core/preferences.py:425
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr ""
 
-#: aleksis/core/preferences.py:438
+#: aleksis/core/preferences.py:439
 msgid "Contact for notification if a person changes their data"
 msgstr ""
 
-#: aleksis/core/preferences.py:449
+#: aleksis/core/preferences.py:450
 msgid "Prefer personal photos over avatars"
 msgstr ""
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:460
 msgid "PDF file expiration duration"
 msgstr ""
 
-#: aleksis/core/preferences.py:460
+#: aleksis/core/preferences.py:461
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/preferences.py:470
+#: aleksis/core/preferences.py:471
 msgid "Automatically update the dashboard and its widgets"
 msgstr ""
 
-#: aleksis/core/preferences.py:480
+#: aleksis/core/preferences.py:481
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr ""
 
-#: aleksis/core/preferences.py:490
+#: aleksis/core/preferences.py:491
 msgid "Birthday calendar feed color"
 msgstr ""
 
-#: aleksis/core/preferences.py:502
+#: aleksis/core/preferences.py:503
 msgid "Holiday calendar feed color"
 msgstr ""
 
 #: aleksis/core/preferences.py:515
+msgid "Personal events feed color"
+msgstr ""
+
+#: aleksis/core/preferences.py:528
 msgid "Activated calendars"
 msgstr ""
 
-#: aleksis/core/settings.py:551
+#: aleksis/core/preferences.py:546
+msgid "Comma-separated list of disallowed usernames"
+msgstr ""
+
+#: aleksis/core/settings.py:548
 msgid "English"
 msgstr ""
 
-#: aleksis/core/settings.py:552
+#: aleksis/core/settings.py:549
 msgid "German"
 msgstr ""
 
-#: aleksis/core/settings.py:553
+#: aleksis/core/settings.py:550
 msgid "Ukrainian"
 msgstr ""
 
-#: aleksis/core/tables.py:97 aleksis/core/tables.py:98
-#: aleksis/core/tables.py:112 aleksis/core/tables.py:128
-#: aleksis/core/tables.py:165
+#: aleksis/core/tables.py:96 aleksis/core/tables.py:112
+#: aleksis/core/tables.py:149
 #: aleksis/core/templates/core/announcement/list.html:42
 #: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
@@ -1235,7 +1264,7 @@ msgstr ""
 msgid "Delete"
 msgstr ""
 
-#: aleksis/core/tables.py:130 aleksis/core/tables.py:167
+#: aleksis/core/tables.py:114 aleksis/core/tables.py:151
 #: aleksis/core/templates/core/announcement/list.html:22
 msgid "Actions"
 msgstr ""
@@ -1335,8 +1364,8 @@ msgid "This e-mail confirmation link expired or is invalid. Please <a href=\"%(e
 msgstr ""
 
 #: aleksis/core/templates/account/password_change.html:5
-#: aleksis/core/templates/account/password_change.html:6
-#: aleksis/core/templates/account/password_change.html:19
+#: aleksis/core/templates/account/password_change.html:15
+#: aleksis/core/templates/account/password_change.html:28
 #: aleksis/core/templates/account/password_reset_from_key.html:5
 #: aleksis/core/templates/account/password_reset_from_key.html:42
 #: aleksis/core/templates/account/password_reset_from_key.html:46
@@ -1345,31 +1374,11 @@ msgstr ""
 msgid "Change password"
 msgstr ""
 
-#: aleksis/core/templates/account/password_change.html:12
-msgid "Forgot your current password? Click here to reset it:"
-msgstr ""
-
-#: aleksis/core/templates/account/password_change.html:12
-msgid "Forgot Password?"
-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 ""
-
-#: aleksis/core/templates/account/password_change_disabled.html:13
-msgid "Changing of password disabled."
-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"
-"          "
+#: aleksis/core/templates/account/password_change.html:19
+msgid "Forgot your current password?"
 msgstr ""
 
+#: aleksis/core/templates/account/password_change.html:20
 #: aleksis/core/templates/account/password_reset.html:5
 #: aleksis/core/templates/account/password_reset.html:15
 #: aleksis/core/templates/account/password_reset.html:23
@@ -1510,15 +1519,6 @@ msgid ""
 "          "
 msgstr ""
 
-#: aleksis/core/templates/core/additional_field/edit.html:6
-#: aleksis/core/templates/core/additional_field/edit.html:7
-msgid "Edit additional field"
-msgstr ""
-
-#: aleksis/core/templates/core/additional_field/list.html:14
-msgid "Create additional field"
-msgstr ""
-
 #: aleksis/core/templates/core/announcement/form.html:14
 #: aleksis/core/templates/core/announcement/form.html:21
 msgid "Edit announcement"
@@ -2777,15 +2777,6 @@ msgid ""
 "        "
 msgstr ""
 
-#: aleksis/core/templates/two_factor/core/setup.html:83
-msgid ""
-"\n"
-"        To identify and verify your YubiKey, please insert a\n"
-"        token in the field below. Your YubiKey will be linked to your\n"
-"        account.\n"
-"      "
-msgstr ""
-
 #: 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"
@@ -2834,11 +2825,15 @@ msgstr ""
 msgid "Disable"
 msgstr ""
 
-#: aleksis/core/util/notifications.py:64
+#: aleksis/core/util/auth_helpers.py:155
+msgid "This username is not allowed."
+msgstr ""
+
+#: aleksis/core/util/notifications.py:67
 msgid "E-Mail"
 msgstr ""
 
-#: aleksis/core/util/notifications.py:65
+#: aleksis/core/util/notifications.py:68
 msgid "SMS"
 msgstr ""
 
@@ -2862,148 +2857,144 @@ msgstr ""
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:371
+#: aleksis/core/views.py:354
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:390 aleksis/core/views.py:400
+#: aleksis/core/views.py:373 aleksis/core/views.py:383
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:450
+#: aleksis/core/views.py:432
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:498
+#: aleksis/core/views.py:480
 msgid "Maintenance mode was turned on successfully."
 msgstr ""
 
-#: aleksis/core/views.py:500
+#: aleksis/core/views.py:482
 msgid "Maintenance mode was turned off successfully."
 msgstr ""
 
-#: aleksis/core/views.py:558
+#: aleksis/core/views.py:539
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:574
+#: aleksis/core/views.py:555
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:643
+#: aleksis/core/views.py:624
 msgid "The requested preference registry does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:662
+#: aleksis/core/views.py:643
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:686
+#: aleksis/core/views.py:667
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:700
+#: aleksis/core/views.py:681
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:732
-msgid "The additional field has been saved."
-msgstr ""
-
-#: aleksis/core/views.py:767
-msgid "The additional field has been deleted."
-msgstr ""
-
-#: aleksis/core/views.py:792
+#: aleksis/core/views.py:705
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:823
+#: aleksis/core/views.py:736
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:858
+#: aleksis/core/views.py:771
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:859
+#: aleksis/core/views.py:772
 msgid "Run data checks …"
 msgstr ""
 
-#: aleksis/core/views.py:860
+#: aleksis/core/views.py:773
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:861
+#: aleksis/core/views.py:774
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:878
+#: aleksis/core/views.py:791
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:888
+#: aleksis/core/views.py:801
 msgid "The requested solve option does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:921
+#: aleksis/core/views.py:834
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:951
+#: aleksis/core/views.py:864
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:961
+#: aleksis/core/views.py:874
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1033
+#: aleksis/core/views.py:946
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1035
+#: aleksis/core/views.py:948
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1106
+#: aleksis/core/views.py:1019
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr ""
 
-#: aleksis/core/views.py:1203
+#: aleksis/core/views.py:1116
 msgid "We have successfully assigned the permissions."
 msgstr ""
 
-#: aleksis/core/views.py:1213
+#: aleksis/core/views.py:1126
 msgid "The global user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1223
+#: aleksis/core/views.py:1136
 msgid "The global group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1233
+#: aleksis/core/views.py:1146
 msgid "The object user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1243
+#: aleksis/core/views.py:1156
 msgid "The object group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1352
+#: aleksis/core/views.py:1238
+msgid "We sent you an email with instructions for resetting your password."
+msgstr ""
+
+#: aleksis/core/views.py:1262
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1359
+#: aleksis/core/views.py:1269
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
-#: aleksis/core/views.py:1435
+#: aleksis/core/views.py:1345
 msgid "Person was invited successfully and an email with further instructions has been send to them."
 msgstr ""
 
-#: aleksis/core/views.py:1446
+#: aleksis/core/views.py:1356
 msgid "Person was already invited."
 msgstr ""
diff --git a/aleksis/core/locale/de_DE/LC_MESSAGES/django.po b/aleksis/core/locale/de_DE/LC_MESSAGES/django.po
index 9def4f3b35fe3e2f083591296c042e456c219482..1217a51dbe09cd1d1586a68da2005be6e800be6d 100644
--- a/aleksis/core/locale/de_DE/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/de_DE/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: 2023-07-23 13:39+0200\n"
+"POT-Creation-Date: 2024-01-26 21:43+0100\n"
 "PO-Revision-Date: 2023-07-23 11:53+0000\n"
 "Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n"
 "Language-Team: German <https://translate.edugit.org/projects/aleksis/aleksis-core/de/>\n"
@@ -18,111 +18,141 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Generator: Weblate 4.12.1\n"
 
-#: aleksis/core/apps.py:151
+#: aleksis/core/apps.py:162
 msgid "You have been logged out successfully."
 msgstr "Sie wurden erfolgreich abgemeldet."
 
-#: aleksis/core/apps.py:161
+#: aleksis/core/apps.py:172
 msgid "OpenID Connect scope"
 msgstr "OpenID-Connect-Scope"
 
-#: aleksis/core/apps.py:162
+#: aleksis/core/apps.py:173
 msgid "Given name, family name, link to profile and picture if existing."
 msgstr "Vorname, Nachname, Link zum Profil und Bild falls vorhanden."
 
-#: aleksis/core/apps.py:163
+#: aleksis/core/apps.py:174
 msgid "Full home postal address"
 msgstr "Vollständige Postanschrift"
 
-#: aleksis/core/apps.py:164
+#: aleksis/core/apps.py:175
 msgid "Email address"
 msgstr "E-Mail-Adresse"
 
-#: aleksis/core/apps.py:165
+#: aleksis/core/apps.py:176
 msgid "Home and mobile phone"
 msgstr "Festnetz- und Mobilfunknummer"
 
-#: aleksis/core/apps.py:166 aleksis/core/forms.py:231
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/apps.py:177 aleksis/core/forms.py:223
+#: aleksis/core/models.py:473 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 msgid "Groups"
 msgstr "Gruppen"
 
-#: aleksis/core/data_checks.py:60
+#: aleksis/core/data_checks.py:67
 msgid "Ignore problem"
 msgstr "Problem ignorieren"
 
-#: aleksis/core/data_checks.py:188
+#: aleksis/core/data_checks.py:199
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr "Lösungsoption \"{solve_option_obj.verbose_name}\" "
 
-#: aleksis/core/data_checks.py:284
+#: aleksis/core/data_checks.py:329
 msgid "Deactivate DashboardWidget"
 msgstr "Dashboard-Widget deaktivieren"
 
-#: aleksis/core/data_checks.py:296
+#: aleksis/core/data_checks.py:341
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr "Sicherstellen, dass es keine kaputten Dashboard-Widgets gibt."
 
-#: aleksis/core/data_checks.py:297
+#: aleksis/core/data_checks.py:342
 msgid "The DashboardWidget was reported broken automatically."
 msgstr "Das Dashboard-Widget wurde automatisch als kaputt gemeldet."
 
-#: aleksis/core/data_checks.py:320
-#, python-format
-msgid "Validate field %s of model %s."
+#: aleksis/core/data_checks.py:364
+#, fuzzy, python-brace-format
+#| msgid "Validate field %s of model %s."
+msgid "Validate field {field} of model {model}."
 msgstr "Feld %s von Model %s validieren."
 
-#: aleksis/core/data_checks.py:322
-#, python-format
-msgid "The field %s couldn't be validated successfully."
+#: aleksis/core/data_checks.py:367
+#, fuzzy
+#| msgid "The field %s couldn't be validated successfully."
+msgid "The field {} couldn't be validated successfully."
 msgstr "Das Feld %s konnte nicht erfolgreich validiert werden."
 
-#: aleksis/core/filters.py:42 aleksis/core/templates/core/group/list.html:20
+#: aleksis/core/data_checks.py:389
+#, fuzzy
+#| msgid "Ensure that there are no broken DashboardWidgets."
+msgid "Ensure that there are no disallowed usernames."
+msgstr "Sicherstellen, dass es keine kaputten Dashboard-Widgets gibt."
+
+#: aleksis/core/data_checks.py:390
+#, fuzzy
+#| msgid "The DashboardWidget was reported broken automatically."
+msgid "A user with a disallowed username was reported automatically."
+msgstr "Das Dashboard-Widget wurde automatisch als kaputt gemeldet."
+
+#: aleksis/core/data_checks.py:411
+#, fuzzy
+#| msgid "Invite by email address"
+msgid "Change email address"
+msgstr "Mit E-Mail-Adresse einladen"
+
+#: aleksis/core/data_checks.py:416
+msgid "Ensure that email addresses are unique among all persons"
+msgstr ""
+
+#: aleksis/core/data_checks.py:417
+#, fuzzy
+#| msgid "Verify your email address"
+msgid "There was a non-unique email address."
+msgstr "Verifizieren Sie Ihre E-Mail-Adresse"
+
+#: aleksis/core/filters.py:39 aleksis/core/templates/core/group/list.html:20
 #: aleksis/core/templates/core/person/list.html:24
 #: aleksis/core/templates/search/search.html:7
 #: aleksis/core/templates/search/search.html:22
 msgid "Search"
 msgstr "Suchen"
 
-#: aleksis/core/filters.py:59
+#: aleksis/core/filters.py:56
 msgid "Search by name"
 msgstr "Nach Namen suchen"
 
-#: aleksis/core/filters.py:71
+#: aleksis/core/filters.py:68
 msgid "Search by contact details"
 msgstr "Nach Kontaktdetails suchen"
 
-#: aleksis/core/filters.py:92
+#: aleksis/core/filters.py:89
 msgid "Permission"
 msgstr "Berechtigung"
 
-#: aleksis/core/filters.py:100
+#: aleksis/core/filters.py:97
 msgid "Content type"
 msgstr "Inhaltstyp"
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:743
+#: aleksis/core/filters.py:110 aleksis/core/models.py:647
 msgid "User"
 msgstr "Benutzer"
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:516
+#: aleksis/core/filters.py:132 aleksis/core/models.py:472
 msgid "Group"
 msgstr "Gruppe"
 
-#: aleksis/core/forms.py:50 aleksis/core/forms.py:591
+#: aleksis/core/forms.py:48 aleksis/core/forms.py:574
 msgid "Base data"
 msgstr "Basisdaten"
 
-#: aleksis/core/forms.py:55 aleksis/core/tables.py:29
+#: aleksis/core/forms.py:53 aleksis/core/tables.py:29
 msgid "Address"
 msgstr "Adresse"
 
-#: aleksis/core/forms.py:56 aleksis/core/forms.py:600
+#: aleksis/core/forms.py:54 aleksis/core/forms.py:583
 msgid "Contact data"
 msgstr "Kontaktdaten"
 
-#: aleksis/core/forms.py:58
+#: aleksis/core/forms.py:56
 msgid "Advanced personal data"
 msgstr "Zusätzliche persönliche Daten"
 
@@ -142,7 +172,7 @@ msgstr "Sie können keine neuen Benutzer erstellen, wenn Sie gleichzeitig einen
 msgid "This username is already in use."
 msgstr "Dieser Benutzername wird bereits genutzt."
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:154
+#: aleksis/core/forms.py:153 aleksis/core/models.py:147
 msgid "School term"
 msgstr "Schuljahr"
 
@@ -150,124 +180,124 @@ msgstr "Schuljahr"
 msgid "Common data"
 msgstr "Allgemeine Daten"
 
-#: aleksis/core/forms.py:155 aleksis/core/forms.py:218
-#: aleksis/core/models.py:177 aleksis/core/templates/core/person/list.html:8
+#: aleksis/core/forms.py:155 aleksis/core/forms.py:210
+#: aleksis/core/models.py:168 aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
 msgstr "Personen"
 
-#: aleksis/core/forms.py:156 aleksis/core/forms.py:602
-msgid "Additional data"
-msgstr "Zusätzliche Daten"
-
-#: aleksis/core/forms.py:157 aleksis/core/models.py:230
-#: aleksis/core/models.py:569 aleksis/core/tables.py:28
+#: aleksis/core/forms.py:156 aleksis/core/models.py:224
+#: aleksis/core/models.py:526 aleksis/core/tables.py:28
 msgid "Photo"
 msgstr "Foto"
 
-#: aleksis/core/forms.py:210 aleksis/core/forms.py:213
-#: aleksis/core/models.py:97
+#: aleksis/core/forms.py:202 aleksis/core/forms.py:205
+#: aleksis/core/models.py:90
 msgid "Date"
 msgstr "Datum"
 
-#: aleksis/core/forms.py:211 aleksis/core/forms.py:214
-#: aleksis/core/models.py:105
+#: aleksis/core/forms.py:203 aleksis/core/forms.py:206
+#: aleksis/core/models.py:98
 msgid "Time"
 msgstr "Zeit"
 
-#: aleksis/core/forms.py:244
+#: aleksis/core/forms.py:236
 msgid "From when until when should the announcement be displayed?"
 msgstr "Von wann bis wann soll die Ankündigung angezeigt werden?"
 
-#: aleksis/core/forms.py:247
+#: aleksis/core/forms.py:239
 msgid "Who should see the announcement?"
 msgstr "Wer soll die Ankündigung sehen?"
 
-#: aleksis/core/forms.py:248
+#: aleksis/core/forms.py:240
 msgid "Write your announcement:"
 msgstr "Schreiben Sie ihre Ankündigung:"
 
-#: aleksis/core/forms.py:287
+#: aleksis/core/forms.py:279
 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:291
+#: aleksis/core/forms.py:283
 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."
 
-#: aleksis/core/forms.py:300
+#: aleksis/core/forms.py:292
 msgid "You need at least one recipient."
 msgstr "Sie benötigen mindestens einen Empfänger."
 
-#: aleksis/core/forms.py:408
+#: aleksis/core/forms.py:392
 msgid "Invitation code"
 msgstr "Einladungscode"
 
-#: aleksis/core/forms.py:409
+#: aleksis/core/forms.py:393
 msgid "Please enter your invitation code."
 msgstr "Bitte geben Sie Ihren Einladungscode ein."
 
-#: aleksis/core/forms.py:428 aleksis/core/models.py:205
+#: aleksis/core/forms.py:412 aleksis/core/models.py:197
 msgid "First name"
 msgstr "Vorname"
 
-#: aleksis/core/forms.py:429 aleksis/core/models.py:206
+#: aleksis/core/forms.py:413 aleksis/core/models.py:198
 msgid "Last name"
 msgstr "Nachname"
 
-#: aleksis/core/forms.py:438
+#: aleksis/core/forms.py:422
 msgid "A person is using this e-mail address"
 msgstr "Eine Person nutzt diese E-Mail-Adresse"
 
-#: aleksis/core/forms.py:466
+#: aleksis/core/forms.py:450
 msgid "Who should get the permission?"
 msgstr "Wer soll die Berechtigung erhalten?"
 
-#: aleksis/core/forms.py:467
+#: aleksis/core/forms.py:451
 msgid "On what?"
 msgstr "Auf was?"
 
-#: aleksis/core/forms.py:493
+#: aleksis/core/forms.py:477
 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:"
 
-#: aleksis/core/forms.py:496
+#: aleksis/core/forms.py:480
 msgid "Grant the permission for all objects"
 msgstr "Vergebe die Berechtigung für alle Objekte"
 
-#: aleksis/core/forms.py:504
+#: aleksis/core/forms.py:488
 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:509
+#: aleksis/core/forms.py:493
 msgid "You must grant the permission to all objects or to specific objects."
 msgstr "Sie müssen die Berechtigung auf alle Objekte oder für spezifische Objekte vergeben."
 
-#: aleksis/core/forms.py:596
+#: aleksis/core/forms.py:579
 msgid "Address data"
 msgstr "Adressdaten"
 
-#: aleksis/core/forms.py:608
+#: aleksis/core/forms.py:585
+msgid "Additional data"
+msgstr "Zusätzliche Daten"
+
+#: aleksis/core/forms.py:591
 msgid "Account data"
 msgstr "Kontodaten"
 
-#: aleksis/core/forms.py:615
+#: aleksis/core/forms.py:598
 msgid "Password"
 msgstr "Passwort"
 
-#: aleksis/core/forms.py:618
+#: aleksis/core/forms.py:601
 msgid "Password (again)"
 msgstr "Passwort wiederholen"
 
-#: aleksis/core/forms.py:771
+#: aleksis/core/forms.py:753
 msgid "The selected action does not exist."
 msgstr "Die ausgewählte Aktion existiert nicht."
 
-#: aleksis/core/forms.py:782
+#: aleksis/core/forms.py:764
 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."
 
-#: aleksis/core/forms.py:838
+#: aleksis/core/forms.py:820
 msgid "No valid selection."
 msgstr "Keine gültige Auswahl."
 
@@ -291,943 +321,967 @@ msgstr "Kein Backup gefunden!"
 msgid "No backup result found!"
 msgstr "Kein Backupergebnis gefunden!"
 
-#: aleksis/core/mixins.py:539
+#: aleksis/core/mixins.py:446
 msgid "Linked school term"
 msgstr "Zugeordnetes Schuljahr"
 
-#: aleksis/core/models.py:95
+#: aleksis/core/models.py:88
 msgid "Boolean (Yes/No)"
 msgstr "Boolean (Ja/Nein)"
 
-#: aleksis/core/models.py:96
+#: aleksis/core/models.py:89
 msgid "Text (one line)"
 msgstr "Text (eine Zeile)"
 
-#: aleksis/core/models.py:98
+#: aleksis/core/models.py:91
 msgid "Date and time"
 msgstr "Datum und Uhrzeit"
 
-#: aleksis/core/models.py:99
+#: aleksis/core/models.py:92
 msgid "Decimal number"
 msgstr "Dezimalzahl"
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:223
+#: aleksis/core/models.py:93 aleksis/core/models.py:217
 msgid "E-mail address"
 msgstr "E-Mail-Adresse"
 
-#: aleksis/core/models.py:101
+#: aleksis/core/models.py:94
 msgid "Integer"
 msgstr "Ganze Zahl"
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:95
 msgid "IP address"
 msgstr "IP-Adresse"
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:96
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr "Boolean oder leer (Ja/Nein/weder)"
 
-#: aleksis/core/models.py:104
+#: aleksis/core/models.py:97
 msgid "Text (multi-line)"
 msgstr "Text (mehrzeilig)"
 
-#: aleksis/core/models.py:106
+#: aleksis/core/models.py:99
 msgid "URL / Link"
 msgstr "URL / Link"
 
-#: aleksis/core/models.py:118 aleksis/core/models.py:1100
-#: aleksis/core/models.py:1729
+#: aleksis/core/models.py:111 aleksis/core/models.py:1004
+#: aleksis/core/models.py:1667 aleksis/core/models.py:1806
 msgid "Name"
 msgstr "Name"
 
-#: aleksis/core/models.py:120 aleksis/core/models.py:1532
+#: aleksis/core/models.py:113 aleksis/core/models.py:1428
 msgid "Start date"
 msgstr "Startdatum"
 
-#: aleksis/core/models.py:121 aleksis/core/models.py:1533
+#: aleksis/core/models.py:114 aleksis/core/models.py:1429
 msgid "End date"
 msgstr "Enddatum"
 
-#: aleksis/core/models.py:140 aleksis/core/schema/school_term.py:48
+#: aleksis/core/models.py:133 aleksis/core/schema/school_term.py:50
 msgid "The start date must be earlier than the end date."
 msgstr "Das Startdatum muss vor dem Enddatum liegen."
 
-#: aleksis/core/models.py:147 aleksis/core/schema/school_term.py:53
+#: aleksis/core/models.py:140 aleksis/core/schema/school_term.py:55
 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."
 
-#: aleksis/core/models.py:155
+#: aleksis/core/models.py:148
 msgid "School terms"
 msgstr "Schuljahre"
 
-#: aleksis/core/models.py:176 aleksis/core/models.py:1049
+#: aleksis/core/models.py:167 aleksis/core/models.py:953
 msgid "Person"
 msgstr "Person"
 
-#: aleksis/core/models.py:179
+#: aleksis/core/models.py:170
 msgid "Can view address"
 msgstr "Kann Adresse sehen"
 
-#: aleksis/core/models.py:180
+#: aleksis/core/models.py:171
 msgid "Can view contact details"
 msgstr "Kann Kontaktdetails sehen"
 
-#: aleksis/core/models.py:181
+#: aleksis/core/models.py:172
 msgid "Can view photo"
 msgstr "Kann Foto sehen"
 
-#: aleksis/core/models.py:182
+#: aleksis/core/models.py:173
 msgid "Can view avatar image"
 msgstr "Kann Avatar-Bild sehen"
 
-#: aleksis/core/models.py:183
+#: aleksis/core/models.py:174
 msgid "Can view persons groups"
 msgstr "Kann Gruppen einer Person sehen"
 
-#: aleksis/core/models.py:184
+#: aleksis/core/models.py:175
 msgid "Can view personal details"
 msgstr "Kann persönliche Daten sehen"
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "female"
 msgstr "weiblich"
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "male"
 msgstr "männlich"
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "other"
 msgstr "andere"
 
-#: aleksis/core/models.py:202 aleksis/core/models.py:1404
+#: aleksis/core/models.py:194 aleksis/core/models.py:1296
 msgid "Linked user"
 msgstr "Verknüpfter Benutzer"
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:200
 msgid "Additional name(s)"
 msgstr "Zusätzliche Namen"
 
-#: aleksis/core/models.py:212 aleksis/core/models.py:534
-#: aleksis/core/models.py:1490
+#: aleksis/core/models.py:204 aleksis/core/models.py:491
+#: aleksis/core/models.py:1388
 msgid "Short name"
 msgstr "Kurzname"
 
-#: aleksis/core/models.py:215
+#: aleksis/core/models.py:209
 msgid "Street"
 msgstr "Straße"
 
-#: aleksis/core/models.py:216
+#: aleksis/core/models.py:210
 msgid "Street number"
 msgstr "Hausnummer"
 
-#: aleksis/core/models.py:217
+#: aleksis/core/models.py:211
 msgid "Postal code"
 msgstr "Postleitzahl"
 
-#: aleksis/core/models.py:218
+#: aleksis/core/models.py:212
 msgid "Place"
 msgstr "Ort"
 
-#: aleksis/core/models.py:220
+#: aleksis/core/models.py:214
 msgid "Home phone"
 msgstr "Festnetz"
 
-#: aleksis/core/models.py:221
+#: aleksis/core/models.py:215
 msgid "Mobile phone"
 msgstr "Handy"
 
-#: aleksis/core/models.py:225
+#: aleksis/core/models.py:219
 msgid "Date of birth"
 msgstr "Geburtsdatum"
 
-#: aleksis/core/models.py:226
+#: aleksis/core/models.py:220
 msgid "Place of birth"
 msgstr "Geburtsort"
 
-#: aleksis/core/models.py:227
+#: aleksis/core/models.py:221
 msgid "Sex"
 msgstr "Geschlecht"
 
-#: aleksis/core/models.py:234 aleksis/core/models.py:573
+#: aleksis/core/models.py:228 aleksis/core/models.py:530
 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:239 aleksis/core/models.py:577
+#: aleksis/core/models.py:233 aleksis/core/models.py:534
 msgid "Display picture / Avatar"
 msgstr "Bild/Avatar anzeigen"
 
-#: aleksis/core/models.py:242 aleksis/core/models.py:580
+#: aleksis/core/models.py:236 aleksis/core/models.py:537
 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:247
+#: aleksis/core/models.py:241
 msgid "Guardians / Parents"
 msgstr "Erziehungsberechtigte / Eltern"
 
-#: aleksis/core/models.py:254
+#: aleksis/core/models.py:248
 msgid "Primary group"
 msgstr "Primärgruppe"
 
-#: aleksis/core/models.py:257 aleksis/core/models.py:747
-#: aleksis/core/models.py:771 aleksis/core/models.py:866
-#: aleksis/core/models.py:1135
+#: aleksis/core/models.py:251 aleksis/core/models.py:651
+#: aleksis/core/models.py:675 aleksis/core/models.py:770
+#: aleksis/core/models.py:1038 aleksis/core/models.py:1723
 msgid "Description"
 msgstr "Beschreibung"
 
-#: aleksis/core/models.py:487
-msgid "Title of field"
-msgstr "Feldtitel"
-
-#: aleksis/core/models.py:489
-msgid "Type of field"
-msgstr "Feldtyp"
-
-#: aleksis/core/models.py:491
-msgid "Required"
-msgstr "Pflichtfeld"
-
-#: aleksis/core/models.py:492
-msgid "Help text / description"
-msgstr "Hilfetext/Beschreibung"
-
-#: aleksis/core/models.py:498
-msgid "Addtitional field for groups"
-msgstr "Zusätzliche Felder für Gruppen"
-
-#: aleksis/core/models.py:499
-msgid "Addtitional fields for groups"
-msgstr "Zusätzliche Felder für Gruppen"
-
-#: aleksis/core/models.py:519
+#: aleksis/core/models.py:475
 msgid "Can assign child groups to groups"
 msgstr "Kann Kindgruppen zu Gruppen zuordnen"
 
-#: aleksis/core/models.py:520
+#: aleksis/core/models.py:476
 msgid "Can view statistics about group."
 msgstr "Kann Statistiken über Gruppen sehen."
 
-#: aleksis/core/models.py:532 aleksis/core/models.py:1491
+#: aleksis/core/models.py:489 aleksis/core/models.py:1389
 msgid "Long name"
 msgstr "Langname"
 
-#: aleksis/core/models.py:542 aleksis/core/templates/core/group/full.html:105
+#: aleksis/core/models.py:502 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr "Mitglieder"
 
-#: aleksis/core/models.py:545 aleksis/core/templates/core/group/full.html:102
+#: aleksis/core/models.py:505 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr "Leiter/-innen"
 
-#: aleksis/core/models.py:552 aleksis/core/templates/core/group/full.html:59
+#: aleksis/core/models.py:512 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr "Übergeordnete Gruppen"
 
-#: aleksis/core/models.py:560
+#: aleksis/core/models.py:520
 msgid "Type of group"
 msgstr "Gruppentyp"
 
-#: aleksis/core/models.py:565
-#: aleksis/core/templates/core/additional_field/list.html:8
-#: aleksis/core/templates/core/additional_field/list.html:9
-msgid "Additional fields"
-msgstr "Zusätzliche Felder"
-
-#: aleksis/core/models.py:746 aleksis/core/models.py:770
-#: aleksis/core/models.py:865 aleksis/core/models.py:1321
+#: aleksis/core/models.py:650 aleksis/core/models.py:674
+#: aleksis/core/models.py:769 aleksis/core/models.py:1213
+#: aleksis/core/models.py:1722
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr "Titel"
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:653
 msgid "Application"
 msgstr "Anwendung"
 
-#: aleksis/core/models.py:755
+#: aleksis/core/models.py:659
 msgid "Activity"
 msgstr "Aktivität"
 
-#: aleksis/core/models.py:756
+#: aleksis/core/models.py:660
 msgid "Activities"
 msgstr "Aktivitäten"
 
-#: aleksis/core/models.py:762
+#: aleksis/core/models.py:666
 msgid "Sender"
 msgstr "Absender"
 
-#: aleksis/core/models.py:767
+#: aleksis/core/models.py:671
 msgid "Recipient"
 msgstr "Empfänger"
 
-#: aleksis/core/models.py:772 aleksis/core/models.py:1101
+#: aleksis/core/models.py:676 aleksis/core/models.py:1005
 msgid "Link"
 msgstr "Link"
 
-#: aleksis/core/models.py:775 aleksis/core/models.py:1102
-#: aleksis/core/models.py:1451
+#: aleksis/core/models.py:679 aleksis/core/models.py:1006
+#: aleksis/core/models.py:1346
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr "Symbol"
 
-#: aleksis/core/models.py:778
+#: aleksis/core/models.py:682
 msgid "Send notification at"
 msgstr "Benachrichtigung schicken am"
 
-#: aleksis/core/models.py:780
+#: aleksis/core/models.py:684
 msgid "Read"
 msgstr "Gelesen"
 
-#: aleksis/core/models.py:781
+#: aleksis/core/models.py:685
 msgid "Sent"
 msgstr "Versandt"
 
-#: aleksis/core/models.py:798
+#: aleksis/core/models.py:702
 msgid "Notification"
 msgstr "Benachrichtigung"
 
-#: aleksis/core/models.py:799 aleksis/core/preferences.py:28
+#: aleksis/core/models.py:703 aleksis/core/preferences.py:29
 msgid "Notifications"
 msgstr "Benachrichtigungen"
 
-#: aleksis/core/models.py:867
+#: aleksis/core/models.py:771
 msgid "Link to detailed view"
 msgstr "Link zur detaillierten Ansicht"
 
-#: aleksis/core/models.py:870
+#: aleksis/core/models.py:774
 msgid "Date and time from when to show"
 msgstr "Datum und Uhrzeit des Anzeigestarts"
 
-#: aleksis/core/models.py:873
+#: aleksis/core/models.py:777
 msgid "Date and time until when to show"
 msgstr "Anzeigezeitraum"
 
-#: aleksis/core/models.py:898
+#: aleksis/core/models.py:802
 msgid "Announcement"
 msgstr "Ankündigung"
 
-#: aleksis/core/models.py:899
+#: aleksis/core/models.py:803
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr "Ankündigungen"
 
-#: aleksis/core/models.py:936
+#: aleksis/core/models.py:840
 msgid "Announcement recipient"
 msgstr "Empfänger der Ankündigung"
 
-#: aleksis/core/models.py:937
+#: aleksis/core/models.py:841
 msgid "Announcement recipients"
 msgstr "Empfänger der Ankündigung"
 
-#: aleksis/core/models.py:957
+#: aleksis/core/models.py:861
 msgid "Widget Title"
 msgstr "Widget-Titel"
 
-#: aleksis/core/models.py:958
+#: aleksis/core/models.py:862
 msgid "Activate Widget"
 msgstr "Widget aktivieren"
 
-#: aleksis/core/models.py:959
+#: aleksis/core/models.py:863
 msgid "Widget is broken"
 msgstr "Widget ist kaputt"
 
-#: aleksis/core/models.py:962
+#: aleksis/core/models.py:866
 msgid "Size on mobile devices"
 msgstr "Größe auf Mobilgeräten"
 
-#: aleksis/core/models.py:963
+#: aleksis/core/models.py:867
 msgid "<= 600 px, 12 columns"
 msgstr "<= 600 px, 12 Spalten"
 
-#: aleksis/core/models.py:968
+#: aleksis/core/models.py:872
 msgid "Size on tablet devices"
 msgstr "Größe auf Tablets"
 
-#: aleksis/core/models.py:969
+#: aleksis/core/models.py:873
 msgid "> 600 px, 12 columns"
 msgstr "> 600px, 12 Spalten"
 
-#: aleksis/core/models.py:974
+#: aleksis/core/models.py:878
 msgid "Size on desktop devices"
 msgstr "Größe auf Desktopgeräten"
 
-#: aleksis/core/models.py:975
+#: aleksis/core/models.py:879
 msgid "> 992 px, 12 columns"
 msgstr "> 992 px, 12 Spalten"
 
-#: aleksis/core/models.py:980
+#: aleksis/core/models.py:884
 msgid "Size on large desktop devices"
 msgstr "Größe auf großen Desktopgeräten"
 
-#: aleksis/core/models.py:981
+#: aleksis/core/models.py:885
 msgid "> 1200 px>, 12 columns"
 msgstr "> 1200 px, 12 Spalten"
 
-#: aleksis/core/models.py:1012
+#: aleksis/core/models.py:916
 msgid "Can edit default dashboard"
 msgstr "Kann Standarddashboard bearbeiten"
 
-#: aleksis/core/models.py:1013
+#: aleksis/core/models.py:917
 msgid "Dashboard Widget"
 msgstr "Dashboard-Widget"
 
-#: aleksis/core/models.py:1014
+#: aleksis/core/models.py:918
 msgid "Dashboard Widgets"
 msgstr "Dashboard-Widgets"
 
-#: aleksis/core/models.py:1020
+#: aleksis/core/models.py:924
 msgid "URL"
 msgstr "URL"
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:925
 msgid "Icon URL"
 msgstr "Symbol-URL"
 
-#: aleksis/core/models.py:1027
+#: aleksis/core/models.py:931
 msgid "External link widget"
 msgstr "Externer-Link-Widget"
 
-#: aleksis/core/models.py:1028
+#: aleksis/core/models.py:932
 msgid "External link widgets"
 msgstr "Externer-Link-Widgets"
 
-#: aleksis/core/models.py:1034
+#: aleksis/core/models.py:938
 msgid "Content"
 msgstr "Inhalt"
 
-#: aleksis/core/models.py:1040
+#: aleksis/core/models.py:944
 msgid "Static content widget"
 msgstr "Statischer-Inhalt-Widget"
 
-#: aleksis/core/models.py:1041
+#: aleksis/core/models.py:945
 msgid "Static content widgets"
 msgstr "Statischer-Inhalt-Widgets"
 
-#: aleksis/core/models.py:1046
+#: aleksis/core/models.py:950
 msgid "Dashboard widget"
 msgstr "Dashboard-Widget"
 
-#: aleksis/core/models.py:1051
+#: aleksis/core/models.py:955
 msgid "Order"
 msgstr "Reihenfolge"
 
-#: aleksis/core/models.py:1052
+#: aleksis/core/models.py:956
 msgid "Part of the default dashboard"
 msgstr "Teil des Standarddashboards"
 
-#: aleksis/core/models.py:1067
+#: aleksis/core/models.py:971
 msgid "Dashboard widget order"
 msgstr "Reihenfolge der Dashboard-Widgets"
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:972
 msgid "Dashboard widget orders"
 msgstr "Reihenfolgen der Dashboard-Widgets"
 
-#: aleksis/core/models.py:1074
+#: aleksis/core/models.py:978
 msgid "Menu ID"
 msgstr "Menü-ID"
 
-#: aleksis/core/models.py:1087
+#: aleksis/core/models.py:991
 msgid "Custom menu"
 msgstr "Benutzerdefiniertes Menü"
 
-#: aleksis/core/models.py:1088
+#: aleksis/core/models.py:992
 msgid "Custom menus"
 msgstr "Benutzerdefinierte Menüs"
 
-#: aleksis/core/models.py:1098
+#: aleksis/core/models.py:1002
 msgid "Menu"
 msgstr "Menü"
 
-#: aleksis/core/models.py:1108
+#: aleksis/core/models.py:1012
 msgid "Custom menu item"
 msgstr "Benutzerdefiniertes Menüelement"
 
-#: aleksis/core/models.py:1109
+#: aleksis/core/models.py:1013
 msgid "Custom menu items"
 msgstr "Benutzerdefinierte Menüelemente"
 
-#: aleksis/core/models.py:1134
+#: aleksis/core/models.py:1037
 msgid "Title of type"
 msgstr "Titel des Typs"
 
-#: aleksis/core/models.py:1141 aleksis/core/templates/core/group/full.html:50
+#: aleksis/core/models.py:1044 aleksis/core/templates/core/group/full.html:50
 msgid "Group type"
 msgstr "Gruppentyp"
 
-#: aleksis/core/models.py:1142
+#: aleksis/core/models.py:1045
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
 msgstr "Gruppentypen"
 
-#: aleksis/core/models.py:1155
+#: aleksis/core/models.py:1056
 msgid "Can view system status"
 msgstr "Kann Systemstatus sehen"
 
-#: aleksis/core/models.py:1156
+#: aleksis/core/models.py:1057
 msgid "Can manage data"
 msgstr "Kann Daten verwalten"
 
-#: aleksis/core/models.py:1157
+#: aleksis/core/models.py:1058
 msgid "Can impersonate"
 msgstr "Kann sich verkleiden"
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1059
 msgid "Can use search"
 msgstr "Kann Suche benutzen"
 
-#: aleksis/core/models.py:1159
+#: aleksis/core/models.py:1060
 msgid "Can change site preferences"
 msgstr "Kann Konfiguration ändern"
 
-#: aleksis/core/models.py:1160
+#: aleksis/core/models.py:1061
 msgid "Can change person preferences"
 msgstr "Kann Einstellungen einer Person verändern"
 
-#: aleksis/core/models.py:1161
+#: aleksis/core/models.py:1062
 msgid "Can change group preferences"
 msgstr "Kann Einstellungen einer Gruppe verändern"
 
-#: aleksis/core/models.py:1162
+#: aleksis/core/models.py:1063
 msgid "Can test PDF generation"
 msgstr "Kann die PDF-Generierung testen"
 
-#: aleksis/core/models.py:1163
+#: aleksis/core/models.py:1064
 msgid "Can invite persons"
 msgstr "Kann Personen einladen"
 
-#: aleksis/core/models.py:1199
+#: aleksis/core/models.py:1065
+msgid "Can view birthday calendar"
+msgstr ""
+
+#: aleksis/core/models.py:1092
 msgid "Related data check task"
 msgstr "Zugehörige Datenprüfungsaufgabe"
 
-#: aleksis/core/models.py:1207
+#: aleksis/core/models.py:1100
 msgid "Issue solved"
 msgstr "Problem gelöst"
 
-#: aleksis/core/models.py:1208
+#: aleksis/core/models.py:1101
 msgid "Notification sent"
 msgstr "Benachrichtigung gesendet"
 
-#: aleksis/core/models.py:1221
+#: aleksis/core/models.py:1114
 msgid "Data check result"
 msgstr "Datenprüfungsergebnis"
 
-#: aleksis/core/models.py:1222
+#: aleksis/core/models.py:1115
 msgid "Data check results"
 msgstr "Datenprüfungsergebnisse"
 
-#: aleksis/core/models.py:1224
+#: aleksis/core/models.py:1117
 msgid "Can run data checks"
 msgstr "Kann Datenprüfungen ausführen"
 
-#: aleksis/core/models.py:1225
+#: aleksis/core/models.py:1118
 msgid "Can solve data check problems"
 msgstr "Kann Datenprüfungsprobleme lösen"
 
-#: aleksis/core/models.py:1232
+#: aleksis/core/models.py:1125
 msgid "E-Mail address"
 msgstr "E-Mail-Adresse"
 
-#: aleksis/core/models.py:1292
+#: aleksis/core/models.py:1184 aleksis/core/models.py:1730
 msgid "Owner"
 msgstr "Leiter"
 
-#: aleksis/core/models.py:1296
+#: aleksis/core/models.py:1188
 msgid "File expires at"
 msgstr "Datei abgelaufen am"
 
-#: aleksis/core/models.py:1299
+#: aleksis/core/models.py:1191
 msgid "Generated HTML file"
 msgstr "Generierte HTML-Datei"
 
-#: aleksis/core/models.py:1302
+#: aleksis/core/models.py:1194
 msgid "Generated PDF file"
 msgstr "Generierte PDF-Datei"
 
-#: aleksis/core/models.py:1309
+#: aleksis/core/models.py:1201
 msgid "PDF file"
 msgstr "PDF-Datei"
 
-#: aleksis/core/models.py:1310
+#: aleksis/core/models.py:1202
 msgid "PDF files"
 msgstr "PDF-Dateien"
 
-#: aleksis/core/models.py:1315
+#: aleksis/core/models.py:1207
 msgid "Task result"
 msgstr "Task-Ergebnis"
 
-#: aleksis/core/models.py:1318
+#: aleksis/core/models.py:1210
 msgid "Task user"
 msgstr "Task-Benutzer"
 
-#: aleksis/core/models.py:1322
+#: aleksis/core/models.py:1214
 msgid "Back URL"
 msgstr "Zurück-URL"
 
-#: aleksis/core/models.py:1323
+#: aleksis/core/models.py:1215
 msgid "Progress title"
 msgstr "Fortschritt-Titel"
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1216
 msgid "Error message"
 msgstr "Fehlernachricht"
 
-#: aleksis/core/models.py:1325
+#: aleksis/core/models.py:1217
 msgid "Success message"
 msgstr "Erfolgsnachricht"
 
-#: aleksis/core/models.py:1326
+#: aleksis/core/models.py:1218
 msgid "Redirect on success URL"
 msgstr "URL, auf die bei Erfolg weitergeleitet wird"
 
-#: aleksis/core/models.py:1328
+#: aleksis/core/models.py:1220
 msgid "Additional button title"
 msgstr "Titel des zusätzlichen Buttons"
 
-#: aleksis/core/models.py:1330
+#: aleksis/core/models.py:1222
 msgid "Additional button URL"
 msgstr "URL des zusätzlichen Buttons"
 
-#: aleksis/core/models.py:1332
+#: aleksis/core/models.py:1224
 msgid "Additional button icon"
 msgstr "Symbol des zusätzlichen Buttons"
 
-#: aleksis/core/models.py:1334
+#: aleksis/core/models.py:1226
 msgid "Result fetched"
 msgstr "Ergebnis abgerufen"
 
-#: aleksis/core/models.py:1359
+#: aleksis/core/models.py:1251
 msgid "Background task completed successfully"
 msgstr "Hintergrundaufgabe erfolgreich fertiggestellt"
 
-#: aleksis/core/models.py:1360
+#: aleksis/core/models.py:1252
 msgid "The background task '{}' has been completed successfully."
 msgstr "Die Hintergrundaufgabe '{}' wurde erfolgreich fertiggestellt."
 
-#: aleksis/core/models.py:1366
+#: aleksis/core/models.py:1258
 msgid "Background task failed"
 msgstr "Hintergrundaufgabe fehlgeschlagen"
 
-#: aleksis/core/models.py:1367
+#: aleksis/core/models.py:1259
 msgid "The background task '{}' has failed."
 msgstr "Die Hintergrundaufgabe '{}' ist fehlgeschlagen."
 
-#: aleksis/core/models.py:1376
+#: aleksis/core/models.py:1268
 msgid "Background task"
 msgstr "Hintergrundaufgabe"
 
-#: aleksis/core/models.py:1390
+#: aleksis/core/models.py:1282
 msgid "Task user assignment"
 msgstr "Task-Benutzer-Zuordnung"
 
-#: aleksis/core/models.py:1391
+#: aleksis/core/models.py:1283
 msgid "Task user assignments"
 msgstr "Task-Benutzer-Zuordnungen"
 
-#: aleksis/core/models.py:1407
+#: aleksis/core/models.py:1299
 msgid "Additional attributes"
 msgstr "Zusätzliche Attribute"
 
-#: aleksis/core/models.py:1445
+#: aleksis/core/models.py:1340
 msgid "Allowed scopes that clients can request"
 msgstr "Erlaubte Scopes, die ein Client anfordern kann"
 
-#: aleksis/core/models.py:1455
+#: aleksis/core/models.py:1350
 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:1500
+#: aleksis/core/models.py:1398
 msgid "Can view room timetable"
 msgstr "Kann Raum-Stundenplan sehen"
 
-#: aleksis/core/models.py:1502
+#: aleksis/core/models.py:1400
 msgid "Room"
 msgstr "Raum"
 
-#: aleksis/core/models.py:1503
+#: aleksis/core/models.py:1401
 msgid "Rooms"
 msgstr "Räume"
 
-#: aleksis/core/models.py:1528
+#: aleksis/core/models.py:1424
 msgid "Start date and time"
 msgstr "Startdatum und -uhrzeit"
 
-#: aleksis/core/models.py:1530
+#: aleksis/core/models.py:1426
 msgid "End date and time"
 msgstr "Enddatum und -uhrzeit"
 
-#: aleksis/core/models.py:1531
+#: aleksis/core/models.py:1427
 msgid "Timezone"
 msgstr "Zeitzone"
 
-#: aleksis/core/models.py:1534
+#: aleksis/core/models.py:1430
 msgid "Recurrences"
 msgstr "Wiederholungen"
 
-#: aleksis/core/models.py:1540
+#: aleksis/core/models.py:1436
 msgid "Amended base event"
 msgstr "Ergänztes Basis-Ereignis"
 
-#: aleksis/core/models.py:1643
+#: aleksis/core/models.py:1561
 msgid "Calendar Event"
 msgstr "Kalender-Ereignis"
 
-#: aleksis/core/models.py:1644
+#: aleksis/core/models.py:1562
 msgid "Calendar Events"
 msgstr "Kalender-Ereignisse"
 
-#: aleksis/core/models.py:1670
+#: aleksis/core/models.py:1592
 msgid "Birthdays"
 msgstr "Geburtstage"
 
-#: aleksis/core/models.py:1674
+#: aleksis/core/models.py:1597
 msgid "{}'s birthday"
 msgstr "Geburtstag von {}"
 
-#: aleksis/core/models.py:1713 aleksis/core/models.py:1775
+#: aleksis/core/models.py:1648 aleksis/core/models.py:1714
 msgid "Holidays"
 msgstr "Ferien"
 
-#: aleksis/core/models.py:1774
+#: aleksis/core/models.py:1713
 msgid "Holiday"
 msgstr "Ferien"
 
-#: aleksis/core/preferences.py:24
+#: aleksis/core/models.py:1715
+msgid "Can view holiday calendar"
+msgstr ""
+
+#: aleksis/core/models.py:1720
+#, fuzzy
+#| msgid "Personal Calendar URLs"
+msgid "Personal events"
+msgstr "Persönliche Kalender-URLs"
+
+#: aleksis/core/models.py:1724
+#, fuzzy
+#| msgid "Notification"
+msgid "Location"
+msgstr "Benachrichtigung"
+
+#: aleksis/core/models.py:1807
+msgid "Email"
+msgstr ""
+
+#: aleksis/core/models.py:1810
+#, fuzzy
+#| msgid "Create group"
+msgid "Related group"
+msgstr "Gruppe erstellen"
+
+#: aleksis/core/models.py:1817
+#, fuzzy
+#| msgid "Internationalisation"
+msgid "Organisation"
+msgstr "Internationalisierung"
+
+#: aleksis/core/models.py:1818
+#, fuzzy
+#| msgid "Invitations"
+msgid "Organisations"
+msgstr "Einladungen"
+
+#: aleksis/core/preferences.py:25
 msgid "General"
 msgstr "Allgemein"
 
-#: aleksis/core/preferences.py:25
+#: aleksis/core/preferences.py:26
 msgid "School"
 msgstr "Schule"
 
-#: aleksis/core/preferences.py:26
+#: aleksis/core/preferences.py:27
 msgid "Theme"
 msgstr "Theme"
 
-#: aleksis/core/preferences.py:27
+#: aleksis/core/preferences.py:28
 msgid "Mail"
 msgstr "E-Mail"
 
-#: aleksis/core/preferences.py:29
+#: aleksis/core/preferences.py:30
 msgid "Footer"
 msgstr "Fußbereich"
 
-#: aleksis/core/preferences.py:30
+#: aleksis/core/preferences.py:31
 msgid "Accounts"
 msgstr "Konten"
 
-#: aleksis/core/preferences.py:31
+#: aleksis/core/preferences.py:32
 msgid "Authentication"
 msgstr "Authentifizierung"
 
-#: aleksis/core/preferences.py:32
+#: aleksis/core/preferences.py:33
 msgid "Internationalisation"
 msgstr "Internationalisierung"
 
-#: aleksis/core/preferences.py:33
+#: aleksis/core/preferences.py:34
 msgid "Calendar"
 msgstr "Kalender"
 
-#: aleksis/core/preferences.py:43
+#: aleksis/core/preferences.py:44
 msgid "Site title"
 msgstr "Seitentitel"
 
-#: aleksis/core/preferences.py:55
+#: aleksis/core/preferences.py:56
 msgid "Site description"
 msgstr "Seitenbeschreibung"
 
-#: aleksis/core/preferences.py:65
+#: aleksis/core/preferences.py:66
 msgid "Primary colour"
 msgstr "Primärfarbe"
 
-#: aleksis/core/preferences.py:77
+#: aleksis/core/preferences.py:78
 msgid "Secondary colour"
 msgstr "Akzentfarbe"
 
-#: aleksis/core/preferences.py:89
+#: aleksis/core/preferences.py:90
 msgid "Logo"
 msgstr "Logo"
 
-#: aleksis/core/preferences.py:100
+#: aleksis/core/preferences.py:101
 msgid "Favicon"
 msgstr "Favicon"
 
-#: aleksis/core/preferences.py:111
+#: aleksis/core/preferences.py:112
 msgid "PWA-Icon"
 msgstr "PWA-Icon"
 
-#: aleksis/core/preferences.py:121
+#: aleksis/core/preferences.py:122
 msgid "PWA-Icon is maskable"
 msgstr "PWA-Symbol ist maskable"
 
-#: aleksis/core/preferences.py:133
+#: aleksis/core/preferences.py:134
 msgid "Mail out name"
 msgstr "Ausgangsmailname"
 
-#: aleksis/core/preferences.py:144
+#: aleksis/core/preferences.py:145
 msgid "Mail out address"
 msgstr "E-Mail-Ausgangsadresse"
 
-#: aleksis/core/preferences.py:157
+#: aleksis/core/preferences.py:158
 msgid "Link to privacy policy"
 msgstr "Link zur Datenschutzerklärung"
 
-#: aleksis/core/preferences.py:169
+#: aleksis/core/preferences.py:170
 msgid "Link to imprint"
 msgstr "Link zum Impressum"
 
-#: aleksis/core/preferences.py:180
+#: aleksis/core/preferences.py:181
 msgid "Name format for addressing"
 msgstr "Namensformat für Anreden"
 
-#: aleksis/core/preferences.py:197
+#: aleksis/core/preferences.py:198
 msgid "Channels to use for notifications"
 msgstr "Aktivierte Benachrichtungskanäle"
 
-#: aleksis/core/preferences.py:208
+#: aleksis/core/preferences.py:209
 msgid "Select Design"
 msgstr "Design auswählen"
 
-#: aleksis/core/preferences.py:211
+#: aleksis/core/preferences.py:212
 msgid "Light mode"
 msgstr "Heller Modus"
 
-#: aleksis/core/preferences.py:224
+#: aleksis/core/preferences.py:225
 msgid "Regular expression to match primary group, e.g. '^Class .*'"
 msgstr "Regulärer Ausdruck um Primärgruppen zu finden, z.B. '^Class .*'"
 
-#: aleksis/core/preferences.py:235
+#: aleksis/core/preferences.py:236
 msgid "Field on person to match primary group against"
 msgstr "Feld um Primärgruppen zu finden"
 
-#: aleksis/core/preferences.py:247
+#: aleksis/core/preferences.py:248
 msgid "Automatically create new persons for new users"
 msgstr "Erstelle automatisch neue Personen für neue Benutzer"
 
-#: aleksis/core/preferences.py:256
+#: aleksis/core/preferences.py:257
 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:267
+#: aleksis/core/preferences.py:268
 msgid "Display name of the school"
 msgstr "Sichtbarer Name der Schule"
 
-#: aleksis/core/preferences.py:278
+#: aleksis/core/preferences.py:279
 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"
 
-#: aleksis/core/preferences.py:286
+#: aleksis/core/preferences.py:287
 msgid "Allow users to change their passwords"
 msgstr "Erlaube Benutzern, ihr Passwort zu ändern"
 
-#: aleksis/core/preferences.py:294
+#: aleksis/core/preferences.py:295
 msgid "Allow users to reset their passwords"
 msgstr "Erlaube Benutzern, ihr Passwort zurückzusetzen"
 
-#: aleksis/core/preferences.py:302
+#: aleksis/core/preferences.py:303
 msgid "Enable signup"
 msgstr "Registrierung aktivieren"
 
-#: aleksis/core/preferences.py:310
+#: aleksis/core/preferences.py:311
 msgid "Regular expression for allowed usernames"
 msgstr "Regulärer Ausdruck für erlaubte Benutzernamen"
 
-#: aleksis/core/preferences.py:318
+#: aleksis/core/preferences.py:319
 msgid "Enable invitations"
 msgstr "Einladungen aktivieren"
 
-#: aleksis/core/preferences.py:326
+#: aleksis/core/preferences.py:327
 msgid "Length of invite code. (Default 3: abcde-acbde-abcde)"
 msgstr "Länge des Einladungscodes. (Standard: 3: abcde-acbde-abcde)"
 
-#: aleksis/core/preferences.py:334
+#: aleksis/core/preferences.py:335
 msgid "Size of packets. (Default 5: abcde)"
 msgstr "Größe der Pakete. (Standard 5: abcde)"
 
-#: aleksis/core/preferences.py:345
+#: aleksis/core/preferences.py:346
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr "Erlaubte Grant Flows für OAuth-Anwendungen"
 
-#: aleksis/core/preferences.py:358
+#: aleksis/core/preferences.py:359
 msgid "Send emails if data checks detect problems"
 msgstr "E-Mails versenden, wenn Datenprüfungen Probleme finden"
 
-#: aleksis/core/preferences.py:369
+#: aleksis/core/preferences.py:370
 msgid "Email recipients for data checks problem emails"
 msgstr "E-Mailempfänger für Datenprüfungsproblem-E-Mails"
 
-#: aleksis/core/preferences.py:380
+#: aleksis/core/preferences.py:381
 msgid "Email recipient groups for data checks problem emails"
 msgstr "E-Mail-Empfängergruppen für Datenprüfungsproblem-E-Mails"
 
-#: aleksis/core/preferences.py:389
+#: aleksis/core/preferences.py:390
 msgid "Show dashboard to users without login"
 msgstr "Zeige Dashboard für Benutzer ohne Login"
 
-#: aleksis/core/preferences.py:398
+#: aleksis/core/preferences.py:399
 msgid "Allow users to edit their dashboard"
 msgstr "Erlaube Benutzern, ihr Dashboard zu bearbeiten"
 
-#: aleksis/core/preferences.py:409
+#: aleksis/core/preferences.py:410
 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:424
+#: aleksis/core/preferences.py:425
 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:438
+#: aleksis/core/preferences.py:439
 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:449
+#: aleksis/core/preferences.py:450
 msgid "Prefer personal photos over avatars"
 msgstr "Persönliche Fotos Avataren vorziehen"
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:460
 msgid "PDF file expiration duration"
 msgstr "PDF-Datei-Ablaufdauer"
 
-#: aleksis/core/preferences.py:460
+#: aleksis/core/preferences.py:461
 msgid "in minutes"
 msgstr "in Minuten"
 
-#: aleksis/core/preferences.py:470
+#: aleksis/core/preferences.py:471
 msgid "Automatically update the dashboard and its widgets"
 msgstr "Automatisch das Dashboard und seine Widgets aktualisieren"
 
-#: aleksis/core/preferences.py:480
+#: aleksis/core/preferences.py:481
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr "Automatisch das Dashboard und seine Widgets aktualisieren (auf der ganzen Seite)"
 
-#: aleksis/core/preferences.py:490
+#: aleksis/core/preferences.py:491
 msgid "Birthday calendar feed color"
 msgstr "Geburtstagskalender-Farbe"
 
-#: aleksis/core/preferences.py:502
+#: aleksis/core/preferences.py:503
 msgid "Holiday calendar feed color"
 msgstr "Ferienkalender-Farbe"
 
 #: aleksis/core/preferences.py:515
+#, fuzzy
+#| msgid "Holiday calendar feed color"
+msgid "Personal events feed color"
+msgstr "Ferienkalender-Farbe"
+
+#: aleksis/core/preferences.py:528
 msgid "Activated calendars"
 msgstr "Aktivierte Kalender"
 
-#: aleksis/core/settings.py:551
+#: aleksis/core/preferences.py:546
+#, fuzzy
+#| msgid "Regular expression for allowed usernames"
+msgid "Comma-separated list of disallowed usernames"
+msgstr "Regulärer Ausdruck für erlaubte Benutzernamen"
+
+#: aleksis/core/settings.py:548
 msgid "English"
 msgstr "Englisch"
 
-#: aleksis/core/settings.py:552
+#: aleksis/core/settings.py:549
 msgid "German"
 msgstr "Deutsch"
 
-#: aleksis/core/settings.py:553
+#: aleksis/core/settings.py:550
 msgid "Ukrainian"
 msgstr "Ukrainisch"
 
-#: aleksis/core/tables.py:97 aleksis/core/tables.py:98
-#: aleksis/core/tables.py:112 aleksis/core/tables.py:128
-#: aleksis/core/tables.py:165
+#: aleksis/core/tables.py:96 aleksis/core/tables.py:112
+#: aleksis/core/tables.py:149
 #: aleksis/core/templates/core/announcement/list.html:42
 #: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
@@ -1235,7 +1289,7 @@ msgstr "Ukrainisch"
 msgid "Delete"
 msgstr "Löschen"
 
-#: aleksis/core/tables.py:130 aleksis/core/tables.py:167
+#: aleksis/core/tables.py:114 aleksis/core/tables.py:151
 #: aleksis/core/templates/core/announcement/list.html:22
 msgid "Actions"
 msgstr "Aktionen"
@@ -1357,8 +1411,8 @@ msgid "This e-mail confirmation link expired or is invalid. Please <a href=\"%(e
 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:5
-#: aleksis/core/templates/account/password_change.html:6
-#: aleksis/core/templates/account/password_change.html:19
+#: aleksis/core/templates/account/password_change.html:15
+#: aleksis/core/templates/account/password_change.html:28
 #: aleksis/core/templates/account/password_reset_from_key.html:5
 #: aleksis/core/templates/account/password_reset_from_key.html:42
 #: aleksis/core/templates/account/password_reset_from_key.html:46
@@ -1367,35 +1421,13 @@ msgstr "Dieser E-Mail-Bestätigungslink ist abgelaufen oder nicht gültig. Bitte
 msgid "Change password"
 msgstr "Passwort ändern"
 
-#: aleksis/core/templates/account/password_change.html:12
-msgid "Forgot your current password? Click here to reset it:"
+#: aleksis/core/templates/account/password_change.html:19
+#, fuzzy
+#| msgid "Forgot your current password? Click here to reset it:"
+msgid "Forgot your current password?"
 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?"
-msgstr "Passwort vergessen?"
-
-#: aleksis/core/templates/account/password_change_disabled.html:5
-#: aleksis/core/templates/account/password_change_disabled.html:6
-msgid "Changing of password disabled"
-msgstr "Passwortänderung deaktiviert"
-
-#: aleksis/core/templates/account/password_change_disabled.html:13
-msgid "Changing of password disabled."
-msgstr "Passwortänderung deaktiviert."
-
-#: 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"
-"          "
-msgstr ""
-"\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"
-"          "
-
+#: aleksis/core/templates/account/password_change.html:20
 #: aleksis/core/templates/account/password_reset.html:5
 #: aleksis/core/templates/account/password_reset.html:15
 #: aleksis/core/templates/account/password_reset.html:23
@@ -1565,15 +1597,6 @@ msgstr ""
 "Bitte kontaktieren Sie uns, wenn Sie diese nicht binnen weniger Minuten erhalten.\n"
 "          "
 
-#: aleksis/core/templates/core/additional_field/edit.html:6
-#: aleksis/core/templates/core/additional_field/edit.html:7
-msgid "Edit additional field"
-msgstr "Zusätzliches Feld bearbeiten"
-
-#: aleksis/core/templates/core/additional_field/list.html:14
-msgid "Create additional field"
-msgstr "Zusätzliches Feld erstellen"
-
 #: aleksis/core/templates/core/announcement/form.html:14
 #: aleksis/core/templates/core/announcement/form.html:21
 msgid "Edit announcement"
@@ -3020,20 +3043,6 @@ msgstr ""
 "Wenn der Fehler bestehen bleibt, kontaktieren Sie bitte einen der Administratoren.\n"
 "        "
 
-#: aleksis/core/templates/two_factor/core/setup.html:83
-msgid ""
-"\n"
-"        To identify and verify your YubiKey, please insert a\n"
-"        token in the field below. Your YubiKey will be linked to your\n"
-"        account.\n"
-"      "
-msgstr ""
-"\n"
-"        Um Ihren YubiKey zu identifizieren und verifizieren, \n"
-"geben Sie bitte ein Token ein. \n"
-"Dann wird Ihr YubiKey mit Ihrem Konto verknüpft.\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"
@@ -3090,11 +3099,17 @@ msgstr "Sie sind dabei, Zwei-Faktor-Authentifizierung zu deaktivieren. Das versc
 msgid "Disable"
 msgstr "Deaktivieren"
 
-#: aleksis/core/util/notifications.py:64
+#: aleksis/core/util/auth_helpers.py:155
+#, fuzzy
+#| msgid "This username is already in use."
+msgid "This username is not allowed."
+msgstr "Dieser Benutzername wird bereits genutzt."
+
+#: aleksis/core/util/notifications.py:67
 msgid "E-Mail"
 msgstr "E-Mail"
 
-#: aleksis/core/util/notifications.py:65
+#: aleksis/core/util/notifications.py:68
 msgid "SMS"
 msgstr "SMS"
 
@@ -3118,152 +3133,214 @@ msgstr "Es ist ein Fehler beim Generieren der PDF-Datei aufgetreten."
 msgid "Download PDF"
 msgstr "PDF herunterladen"
 
-#: aleksis/core/views.py:371
+#: aleksis/core/views.py:354
 msgid "The child groups were successfully saved."
 msgstr "Die Untergruppen wurden gespeichert."
 
-#: aleksis/core/views.py:390 aleksis/core/views.py:400
+#: aleksis/core/views.py:373 aleksis/core/views.py:383
 msgid "The person has been saved."
 msgstr "Die Person wurde gespeichert."
 
-#: aleksis/core/views.py:450
+#: aleksis/core/views.py:432
 msgid "The group has been saved."
 msgstr "Die Gruppe wurde gespeichert."
 
-#: aleksis/core/views.py:498
+#: aleksis/core/views.py:480
 msgid "Maintenance mode was turned on successfully."
 msgstr "Der Wartungsmodus wurde erfolgreich angeschaltet."
 
-#: aleksis/core/views.py:500
+#: aleksis/core/views.py:482
 msgid "Maintenance mode was turned off successfully."
 msgstr "Der Wartungsmodus wurde erfolgreich ausgeschaltet."
 
-#: aleksis/core/views.py:558
+#: aleksis/core/views.py:539
 msgid "The announcement has been saved."
 msgstr "Die Ankündigung wurde gespeichert."
 
-#: aleksis/core/views.py:574
+#: aleksis/core/views.py:555
 msgid "The announcement has been deleted."
 msgstr "Ankündigung wurde gelöscht."
 
-#: aleksis/core/views.py:643
+#: aleksis/core/views.py:624
 msgid "The requested preference registry does not exist"
 msgstr "Das angeforderte Einstellungsregister existiert nicht"
 
-#: aleksis/core/views.py:662
+#: aleksis/core/views.py:643
 msgid "The preferences have been saved successfully."
 msgstr "Die Einstellungen wurde gespeichert."
 
-#: aleksis/core/views.py:686
+#: aleksis/core/views.py:667
 msgid "The person has been deleted."
 msgstr "Die Person wurde gelöscht."
 
-#: aleksis/core/views.py:700
+#: aleksis/core/views.py:681
 msgid "The group has been deleted."
 msgstr "Die Gruppe wurde gelöscht."
 
-#: aleksis/core/views.py:732
-msgid "The additional field has been saved."
-msgstr "Das zusätzliche Feld wurde gespeichert."
-
-#: aleksis/core/views.py:767
-msgid "The additional field has been deleted."
-msgstr "Das zusätzliche Feld wurde gelöscht."
-
-#: aleksis/core/views.py:792
+#: aleksis/core/views.py:705
 msgid "The group type has been saved."
 msgstr "Der Gruppentyp wurde gespeichert."
 
-#: aleksis/core/views.py:823
+#: aleksis/core/views.py:736
 msgid "The group type has been deleted."
 msgstr "Der Gruppentyp wurde gelöscht."
 
-#: aleksis/core/views.py:858
+#: aleksis/core/views.py:771
 msgid "Progress: Run data checks"
 msgstr "Fortschritt: Datenprüfungen ausführen"
 
-#: aleksis/core/views.py:859
+#: aleksis/core/views.py:772
 msgid "Run data checks …"
 msgstr "Datenprüfungen laufen …"
 
-#: aleksis/core/views.py:860
+#: aleksis/core/views.py:773
 msgid "The data checks were run successfully."
 msgstr "Die Datenprüfungen wurden erfolgreich ausgeführt."
 
-#: aleksis/core/views.py:861
+#: aleksis/core/views.py:774
 msgid "There was a problem while running data checks."
 msgstr "Es gab ein Problem beim Ausführen der Datenprüfungen."
 
-#: aleksis/core/views.py:878
+#: aleksis/core/views.py:791
 #, 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:888
+#: aleksis/core/views.py:801
 msgid "The requested solve option does not exist"
 msgstr "Die angeforderte Lösungsoption existiert nicht"
 
-#: aleksis/core/views.py:921
+#: aleksis/core/views.py:834
 msgid "The dashboard widget has been saved."
 msgstr "Das Dashboard-Widget wurde gespeichert."
 
-#: aleksis/core/views.py:951
+#: aleksis/core/views.py:864
 msgid "The dashboard widget has been created."
 msgstr "Das Dashboard-Widget wurde erstellt."
 
-#: aleksis/core/views.py:961
+#: aleksis/core/views.py:874
 msgid "The dashboard widget has been deleted."
 msgstr "Das Dashboard-Widget wurde gelöscht."
 
-#: aleksis/core/views.py:1033
+#: aleksis/core/views.py:946
 msgid "Your dashboard configuration has been saved successfully."
 msgstr "Ihre Dashboardkonfiguration wurde erfolgreich gespeichert."
 
-#: aleksis/core/views.py:1035
+#: aleksis/core/views.py:948
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr "Die Konfiguration des Standard-Dashboardes wurde erfolgreich gespeichert."
 
-#: aleksis/core/views.py:1106
+#: aleksis/core/views.py:1019
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr "Die Einladung wurde erfolgreich erstellt. Der Einladungscode ist {code}"
 
-#: aleksis/core/views.py:1203
+#: aleksis/core/views.py:1116
 msgid "We have successfully assigned the permissions."
 msgstr "Wir haben die Berechtigungen erfolgreich zugewiesen."
 
-#: aleksis/core/views.py:1213
+#: aleksis/core/views.py:1126
 msgid "The global user permission has been deleted."
 msgstr "Die globale Benutzerberechtigung wurde gelöscht."
 
-#: aleksis/core/views.py:1223
+#: aleksis/core/views.py:1136
 msgid "The global group permission has been deleted."
 msgstr "Die globale Gruppenberechtigung wurde gelöscht."
 
-#: aleksis/core/views.py:1233
+#: aleksis/core/views.py:1146
 msgid "The object user permission has been deleted."
 msgstr "Die Objekt-Benutzerberechtigung wurde gelöscht."
 
-#: aleksis/core/views.py:1243
+#: aleksis/core/views.py:1156
 msgid "The object group permission has been deleted."
 msgstr "Die Objekt-Gruppenberechtigung wurde gelöscht."
 
-#: aleksis/core/views.py:1352
+#: aleksis/core/views.py:1238
+msgid "We sent you an email with instructions for resetting your password."
+msgstr ""
+
+#: aleksis/core/views.py:1262
 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:1359
+#: aleksis/core/views.py:1269
 msgid "The third-party account has been successfully disconnected."
 msgstr "Das Drittanbieter-Konto wurde erfolgreich getrennt."
 
-#: aleksis/core/views.py:1435
+#: aleksis/core/views.py:1345
 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:1446
+#: aleksis/core/views.py:1356
 msgid "Person was already invited."
 msgstr "Person wurde bereits eingeladen."
 
+#~ msgid "Title of field"
+#~ msgstr "Feldtitel"
+
+#~ msgid "Type of field"
+#~ msgstr "Feldtyp"
+
+#~ msgid "Required"
+#~ msgstr "Pflichtfeld"
+
+#~ msgid "Help text / description"
+#~ msgstr "Hilfetext/Beschreibung"
+
+#~ msgid "Addtitional field for groups"
+#~ msgstr "Zusätzliche Felder für Gruppen"
+
+#~ msgid "Addtitional fields for groups"
+#~ msgstr "Zusätzliche Felder für Gruppen"
+
+#~ msgid "Additional fields"
+#~ msgstr "Zusätzliche Felder"
+
+#~ msgid "Forgot Password?"
+#~ msgstr "Passwort vergessen?"
+
+#~ msgid "Changing of password disabled"
+#~ msgstr "Passwortänderung deaktiviert"
+
+#~ msgid "Changing of password disabled."
+#~ 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"
+#~ "          "
+#~ msgstr ""
+#~ "\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"
+#~ "          "
+
+#~ msgid "Edit additional field"
+#~ msgstr "Zusätzliches Feld bearbeiten"
+
+#~ msgid "Create additional field"
+#~ msgstr "Zusätzliches Feld erstellen"
+
+#~ msgid ""
+#~ "\n"
+#~ "        To identify and verify your YubiKey, please insert a\n"
+#~ "        token in the field below. Your YubiKey will be linked to your\n"
+#~ "        account.\n"
+#~ "      "
+#~ msgstr ""
+#~ "\n"
+#~ "        Um Ihren YubiKey zu identifizieren und verifizieren, \n"
+#~ "geben Sie bitte ein Token ein. \n"
+#~ "Dann wird Ihr YubiKey mit Ihrem Konto verknüpft.\n"
+#~ "      "
+
+#~ msgid "The additional field has been saved."
+#~ msgstr "Das zusätzliche Feld wurde gespeichert."
+
+#~ msgid "The additional field has been deleted."
+#~ msgstr "Das zusätzliche Feld wurde gelöscht."
+
 #~ msgid "Country for phone number parsing"
 #~ msgstr "Land für das Einlesen von Telefonnummern"
 
@@ -3461,9 +3538,6 @@ msgstr "Person wurde bereits eingeladen."
 #~ msgid "Personal Calendar URL"
 #~ msgstr "Persönliche Kalender-URL"
 
-#~ msgid "Personal Calendar URLs"
-#~ msgstr "Persönliche Kalender-URLs"
-
 #~ msgid "Available languages"
 #~ msgstr "Verfügbare Sprachen"
 
diff --git a/aleksis/core/locale/fr/LC_MESSAGES/django.po b/aleksis/core/locale/fr/LC_MESSAGES/django.po
index d1852c66e3212133747a28ce3c53e1fd98e676ce..aa1a1d56a2f729d5296d76c3e982c657880fe95c 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: 2023-07-23 13:39+0200\n"
+"POT-Creation-Date: 2024-01-26 21:43+0100\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"
@@ -18,119 +18,140 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
 "X-Generator: Weblate 4.4\n"
 
-#: aleksis/core/apps.py:151
+#: aleksis/core/apps.py:162
 msgid "You have been logged out successfully."
 msgstr ""
 
-#: aleksis/core/apps.py:161
+#: aleksis/core/apps.py:172
 msgid "OpenID Connect scope"
 msgstr ""
 
-#: aleksis/core/apps.py:162
+#: aleksis/core/apps.py:173
 msgid "Given name, family name, link to profile and picture if existing."
 msgstr ""
 
-#: aleksis/core/apps.py:163
+#: aleksis/core/apps.py:174
 msgid "Full home postal address"
 msgstr ""
 
-#: aleksis/core/apps.py:164
+#: aleksis/core/apps.py:175
 #, fuzzy
 #| msgid "Contact details"
 msgid "Email address"
 msgstr "Détails de contact"
 
-#: aleksis/core/apps.py:165
+#: aleksis/core/apps.py:176
 msgid "Home and mobile phone"
 msgstr ""
 
-#: aleksis/core/apps.py:166 aleksis/core/forms.py:231
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/apps.py:177 aleksis/core/forms.py:223
+#: aleksis/core/models.py:473 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #, fuzzy
 #| msgid "Group"
 msgid "Groups"
 msgstr "Groupe"
 
-#: aleksis/core/data_checks.py:60
+#: aleksis/core/data_checks.py:67
 msgid "Ignore problem"
 msgstr ""
 
-#: aleksis/core/data_checks.py:188
+#: aleksis/core/data_checks.py:199
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/data_checks.py:284
+#: aleksis/core/data_checks.py:329
 msgid "Deactivate DashboardWidget"
 msgstr ""
 
-#: aleksis/core/data_checks.py:296
+#: aleksis/core/data_checks.py:341
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr ""
 
-#: aleksis/core/data_checks.py:297
+#: aleksis/core/data_checks.py:342
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
-#: aleksis/core/data_checks.py:320
-#, python-format
-msgid "Validate field %s of model %s."
+#: aleksis/core/data_checks.py:364
+#, python-brace-format
+msgid "Validate field {field} of model {model}."
 msgstr ""
 
-#: aleksis/core/data_checks.py:322
-#, python-format
-msgid "The field %s couldn't be validated successfully."
+#: aleksis/core/data_checks.py:367
+msgid "The field {} couldn't be validated successfully."
+msgstr ""
+
+#: aleksis/core/data_checks.py:389
+msgid "Ensure that there are no disallowed usernames."
+msgstr ""
+
+#: aleksis/core/data_checks.py:390
+msgid "A user with a disallowed username was reported automatically."
+msgstr ""
+
+#: aleksis/core/data_checks.py:411
+#, fuzzy
+#| msgid "Contact details"
+msgid "Change email address"
+msgstr "Détails de contact"
+
+#: aleksis/core/data_checks.py:416
+msgid "Ensure that email addresses are unique among all persons"
 msgstr ""
 
-#: aleksis/core/filters.py:42 aleksis/core/templates/core/group/list.html:20
+#: aleksis/core/data_checks.py:417
+msgid "There was a non-unique email address."
+msgstr ""
+
+#: aleksis/core/filters.py:39 aleksis/core/templates/core/group/list.html:20
 #: aleksis/core/templates/core/person/list.html:24
 #: aleksis/core/templates/search/search.html:7
 #: aleksis/core/templates/search/search.html:22
 msgid "Search"
 msgstr ""
 
-#: aleksis/core/filters.py:59
+#: aleksis/core/filters.py:56
 msgid "Search by name"
 msgstr ""
 
-#: aleksis/core/filters.py:71
+#: aleksis/core/filters.py:68
 #, fuzzy
 #| msgid "Contact details"
 msgid "Search by contact details"
 msgstr "Détails de contact"
 
-#: aleksis/core/filters.py:92
+#: aleksis/core/filters.py:89
 msgid "Permission"
 msgstr ""
 
-#: aleksis/core/filters.py:100
+#: aleksis/core/filters.py:97
 msgid "Content type"
 msgstr ""
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:743
+#: aleksis/core/filters.py:110 aleksis/core/models.py:647
 msgid "User"
 msgstr ""
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:516
+#: aleksis/core/filters.py:132 aleksis/core/models.py:472
 msgid "Group"
 msgstr "groupe"
 
-#: aleksis/core/forms.py:50 aleksis/core/forms.py:591
+#: aleksis/core/forms.py:48 aleksis/core/forms.py:574
 msgid "Base data"
 msgstr ""
 
-#: aleksis/core/forms.py:55 aleksis/core/tables.py:29
+#: aleksis/core/forms.py:53 aleksis/core/tables.py:29
 msgid "Address"
 msgstr ""
 
-#: aleksis/core/forms.py:56 aleksis/core/forms.py:600
+#: aleksis/core/forms.py:54 aleksis/core/forms.py:583
 #, fuzzy
 #| msgid "Contact details"
 msgid "Contact data"
 msgstr "Détails de contact"
 
-#: aleksis/core/forms.py:58
+#: aleksis/core/forms.py:56
 #, fuzzy
 #| msgid "Contact details"
 msgid "Advanced personal data"
@@ -152,7 +173,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:154
+#: aleksis/core/forms.py:153 aleksis/core/models.py:147
 msgid "School term"
 msgstr ""
 
@@ -162,130 +183,130 @@ msgstr ""
 msgid "Common data"
 msgstr "Détails de contact"
 
-#: aleksis/core/forms.py:155 aleksis/core/forms.py:218
-#: aleksis/core/models.py:177 aleksis/core/templates/core/person/list.html:8
+#: aleksis/core/forms.py:155 aleksis/core/forms.py:210
+#: aleksis/core/models.py:168 aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 #, fuzzy
 #| msgid "Person"
 msgid "Persons"
 msgstr "Personne"
 
-#: aleksis/core/forms.py:156 aleksis/core/forms.py:602
-#, fuzzy
-#| msgid "Contact details"
-msgid "Additional data"
-msgstr "Détails de contact"
-
-#: aleksis/core/forms.py:157 aleksis/core/models.py:230
-#: aleksis/core/models.py:569 aleksis/core/tables.py:28
+#: aleksis/core/forms.py:156 aleksis/core/models.py:224
+#: aleksis/core/models.py:526 aleksis/core/tables.py:28
 msgid "Photo"
 msgstr ""
 
-#: aleksis/core/forms.py:210 aleksis/core/forms.py:213
-#: aleksis/core/models.py:97
+#: aleksis/core/forms.py:202 aleksis/core/forms.py:205
+#: aleksis/core/models.py:90
 msgid "Date"
 msgstr "Date"
 
-#: aleksis/core/forms.py:211 aleksis/core/forms.py:214
-#: aleksis/core/models.py:105
+#: aleksis/core/forms.py:203 aleksis/core/forms.py:206
+#: aleksis/core/models.py:98
 msgid "Time"
 msgstr ""
 
-#: aleksis/core/forms.py:244
+#: aleksis/core/forms.py:236
 msgid "From when until when should the announcement be displayed?"
 msgstr ""
 
-#: aleksis/core/forms.py:247
+#: aleksis/core/forms.py:239
 msgid "Who should see the announcement?"
 msgstr ""
 
-#: aleksis/core/forms.py:248
+#: aleksis/core/forms.py:240
 msgid "Write your announcement:"
 msgstr ""
 
-#: aleksis/core/forms.py:287
+#: aleksis/core/forms.py:279
 msgid "You are not allowed to create announcements which are only valid in the past."
 msgstr ""
 
-#: aleksis/core/forms.py:291
+#: aleksis/core/forms.py:283
 msgid "The from date and time must be earlier then the until date and time."
 msgstr ""
 
-#: aleksis/core/forms.py:300
+#: aleksis/core/forms.py:292
 msgid "You need at least one recipient."
 msgstr ""
 
-#: aleksis/core/forms.py:408
+#: aleksis/core/forms.py:392
 msgid "Invitation code"
 msgstr ""
 
-#: aleksis/core/forms.py:409
+#: aleksis/core/forms.py:393
 msgid "Please enter your invitation code."
 msgstr ""
 
-#: aleksis/core/forms.py:428 aleksis/core/models.py:205
+#: aleksis/core/forms.py:412 aleksis/core/models.py:197
 msgid "First name"
 msgstr "Prénom"
 
-#: aleksis/core/forms.py:429 aleksis/core/models.py:206
+#: aleksis/core/forms.py:413 aleksis/core/models.py:198
 msgid "Last name"
 msgstr "Nom de famille"
 
-#: aleksis/core/forms.py:438
+#: aleksis/core/forms.py:422
 msgid "A person is using this e-mail address"
 msgstr ""
 
-#: aleksis/core/forms.py:466
+#: aleksis/core/forms.py:450
 msgid "Who should get the permission?"
 msgstr ""
 
-#: aleksis/core/forms.py:467
+#: aleksis/core/forms.py:451
 msgid "On what?"
 msgstr ""
 
-#: aleksis/core/forms.py:493
+#: aleksis/core/forms.py:477
 msgid "Select objects which the permission should be granted for:"
 msgstr ""
 
-#: aleksis/core/forms.py:496
+#: aleksis/core/forms.py:480
 msgid "Grant the permission for all objects"
 msgstr ""
 
-#: aleksis/core/forms.py:504
+#: aleksis/core/forms.py:488
 msgid "You must select at least one group or person which should get the permission."
 msgstr ""
 
-#: aleksis/core/forms.py:509
+#: aleksis/core/forms.py:493
 msgid "You must grant the permission to all objects or to specific objects."
 msgstr ""
 
-#: aleksis/core/forms.py:596
+#: aleksis/core/forms.py:579
 msgid "Address data"
 msgstr ""
 
-#: aleksis/core/forms.py:608
+#: aleksis/core/forms.py:585
+#, fuzzy
+#| msgid "Contact details"
+msgid "Additional data"
+msgstr "Détails de contact"
+
+#: aleksis/core/forms.py:591
 #, fuzzy
 #| msgid "Contact details"
 msgid "Account data"
 msgstr "Détails de contact"
 
-#: aleksis/core/forms.py:615
+#: aleksis/core/forms.py:598
 msgid "Password"
 msgstr ""
 
-#: aleksis/core/forms.py:618
+#: aleksis/core/forms.py:601
 msgid "Password (again)"
 msgstr ""
 
-#: aleksis/core/forms.py:771
+#: aleksis/core/forms.py:753
 msgid "The selected action does not exist."
 msgstr ""
 
-#: aleksis/core/forms.py:782
+#: aleksis/core/forms.py:764
 msgid "You do not have permission to run {} on all selected objects."
 msgstr ""
 
-#: aleksis/core/forms.py:838
+#: aleksis/core/forms.py:820
 msgid "No valid selection."
 msgstr ""
 
@@ -309,497 +330,466 @@ msgstr ""
 msgid "No backup result found!"
 msgstr ""
 
-#: aleksis/core/mixins.py:539
+#: aleksis/core/mixins.py:446
 msgid "Linked school term"
 msgstr ""
 
-#: aleksis/core/models.py:95
+#: aleksis/core/models.py:88
 msgid "Boolean (Yes/No)"
 msgstr ""
 
-#: aleksis/core/models.py:96
+#: aleksis/core/models.py:89
 msgid "Text (one line)"
 msgstr ""
 
-#: aleksis/core/models.py:98
+#: aleksis/core/models.py:91
 msgid "Date and time"
 msgstr ""
 
-#: aleksis/core/models.py:99
+#: aleksis/core/models.py:92
 msgid "Decimal number"
 msgstr ""
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:223
+#: aleksis/core/models.py:93 aleksis/core/models.py:217
 msgid "E-mail address"
 msgstr ""
 
-#: aleksis/core/models.py:101
+#: aleksis/core/models.py:94
 msgid "Integer"
 msgstr ""
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:95
 msgid "IP address"
 msgstr ""
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:96
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr ""
 
-#: aleksis/core/models.py:104
+#: aleksis/core/models.py:97
 msgid "Text (multi-line)"
 msgstr ""
 
-#: aleksis/core/models.py:106
+#: aleksis/core/models.py:99
 msgid "URL / Link"
 msgstr ""
 
-#: aleksis/core/models.py:118 aleksis/core/models.py:1100
-#: aleksis/core/models.py:1729
+#: aleksis/core/models.py:111 aleksis/core/models.py:1004
+#: aleksis/core/models.py:1667 aleksis/core/models.py:1806
 msgid "Name"
 msgstr ""
 
-#: aleksis/core/models.py:120 aleksis/core/models.py:1532
+#: aleksis/core/models.py:113 aleksis/core/models.py:1428
 #, fuzzy
 #| msgid "Contact details"
 msgid "Start date"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:121 aleksis/core/models.py:1533
+#: aleksis/core/models.py:114 aleksis/core/models.py:1429
 msgid "End date"
 msgstr ""
 
-#: aleksis/core/models.py:140 aleksis/core/schema/school_term.py:48
+#: aleksis/core/models.py:133 aleksis/core/schema/school_term.py:50
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: aleksis/core/models.py:147 aleksis/core/schema/school_term.py:53
+#: aleksis/core/models.py:140 aleksis/core/schema/school_term.py:55
 msgid "There is already a school term for this time or a part of this time."
 msgstr ""
 
-#: aleksis/core/models.py:155
+#: aleksis/core/models.py:148
 msgid "School terms"
 msgstr ""
 
-#: aleksis/core/models.py:176 aleksis/core/models.py:1049
+#: aleksis/core/models.py:167 aleksis/core/models.py:953
 msgid "Person"
 msgstr "Personne"
 
-#: aleksis/core/models.py:179
+#: aleksis/core/models.py:170
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view address"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:180
+#: aleksis/core/models.py:171
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view contact details"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:181
+#: aleksis/core/models.py:172
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view photo"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:182
+#: aleksis/core/models.py:173
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view avatar image"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:183
+#: aleksis/core/models.py:174
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view persons groups"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:184
+#: aleksis/core/models.py:175
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view personal details"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "female"
 msgstr ""
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "male"
 msgstr ""
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "other"
 msgstr ""
 
-#: aleksis/core/models.py:202 aleksis/core/models.py:1404
+#: aleksis/core/models.py:194 aleksis/core/models.py:1296
 msgid "Linked user"
 msgstr ""
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:200
 msgid "Additional name(s)"
 msgstr ""
 
-#: aleksis/core/models.py:212 aleksis/core/models.py:534
-#: aleksis/core/models.py:1490
+#: aleksis/core/models.py:204 aleksis/core/models.py:491
+#: aleksis/core/models.py:1388
 #, fuzzy
 #| msgid "First name"
 msgid "Short name"
 msgstr "Prénom"
 
-#: aleksis/core/models.py:215
+#: aleksis/core/models.py:209
 msgid "Street"
 msgstr ""
 
-#: aleksis/core/models.py:216
+#: aleksis/core/models.py:210
 msgid "Street number"
 msgstr ""
 
-#: aleksis/core/models.py:217
+#: aleksis/core/models.py:211
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/core/models.py:218
+#: aleksis/core/models.py:212
 msgid "Place"
 msgstr ""
 
-#: aleksis/core/models.py:220
+#: aleksis/core/models.py:214
 msgid "Home phone"
 msgstr ""
 
-#: aleksis/core/models.py:221
+#: aleksis/core/models.py:215
 msgid "Mobile phone"
 msgstr ""
 
-#: aleksis/core/models.py:225
+#: aleksis/core/models.py:219
 msgid "Date of birth"
 msgstr "Date d'anniversaire"
 
-#: aleksis/core/models.py:226
+#: aleksis/core/models.py:220
 #, fuzzy
 #| msgid "Date of birth"
 msgid "Place of birth"
 msgstr "Date d'anniversaire"
 
-#: aleksis/core/models.py:227
+#: aleksis/core/models.py:221
 msgid "Sex"
 msgstr "Sexe"
 
-#: aleksis/core/models.py:234 aleksis/core/models.py:573
+#: aleksis/core/models.py:228 aleksis/core/models.py:530
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr ""
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:577
+#: aleksis/core/models.py:233 aleksis/core/models.py:534
 msgid "Display picture / Avatar"
 msgstr ""
 
-#: aleksis/core/models.py:242 aleksis/core/models.py:580
+#: aleksis/core/models.py:236 aleksis/core/models.py:537
 msgid "This is a picture or an avatar for public display."
 msgstr ""
 
-#: aleksis/core/models.py:247
+#: aleksis/core/models.py:241
 msgid "Guardians / Parents"
 msgstr ""
 
-#: aleksis/core/models.py:254
+#: aleksis/core/models.py:248
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/core/models.py:257 aleksis/core/models.py:747
-#: aleksis/core/models.py:771 aleksis/core/models.py:866
-#: aleksis/core/models.py:1135
+#: aleksis/core/models.py:251 aleksis/core/models.py:651
+#: aleksis/core/models.py:675 aleksis/core/models.py:770
+#: aleksis/core/models.py:1038 aleksis/core/models.py:1723
 msgid "Description"
 msgstr "Description"
 
-#: aleksis/core/models.py:487
-msgid "Title of field"
-msgstr ""
-
-#: aleksis/core/models.py:489
-msgid "Type of field"
-msgstr ""
-
-#: aleksis/core/models.py:491
-msgid "Required"
-msgstr ""
-
-#: aleksis/core/models.py:492
-#, fuzzy
-#| msgid "Description"
-msgid "Help text / description"
-msgstr "Description"
-
-#: aleksis/core/models.py:498
-msgid "Addtitional field for groups"
-msgstr ""
-
-#: aleksis/core/models.py:499
-msgid "Addtitional fields for groups"
-msgstr ""
-
-#: aleksis/core/models.py:519
+#: aleksis/core/models.py:475
 msgid "Can assign child groups to groups"
 msgstr ""
 
-#: aleksis/core/models.py:520
+#: aleksis/core/models.py:476
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view statistics about group."
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:532 aleksis/core/models.py:1491
+#: aleksis/core/models.py:489 aleksis/core/models.py:1389
 #, fuzzy
 #| msgid "Last name"
 msgid "Long name"
 msgstr "Nom de famille"
 
-#: aleksis/core/models.py:542 aleksis/core/templates/core/group/full.html:105
+#: aleksis/core/models.py:502 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr ""
 
-#: aleksis/core/models.py:545 aleksis/core/templates/core/group/full.html:102
+#: aleksis/core/models.py:505 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr "Propriétaires"
 
-#: aleksis/core/models.py:552 aleksis/core/templates/core/group/full.html:59
+#: aleksis/core/models.py:512 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr ""
 
-#: aleksis/core/models.py:560
+#: aleksis/core/models.py:520
 msgid "Type of group"
 msgstr ""
 
-#: aleksis/core/models.py:565
-#: aleksis/core/templates/core/additional_field/list.html:8
-#: aleksis/core/templates/core/additional_field/list.html:9
-msgid "Additional fields"
-msgstr ""
-
-#: aleksis/core/models.py:746 aleksis/core/models.py:770
-#: aleksis/core/models.py:865 aleksis/core/models.py:1321
+#: aleksis/core/models.py:650 aleksis/core/models.py:674
+#: aleksis/core/models.py:769 aleksis/core/models.py:1213
+#: aleksis/core/models.py:1722
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr ""
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:653
 msgid "Application"
 msgstr ""
 
-#: aleksis/core/models.py:755
+#: aleksis/core/models.py:659
 msgid "Activity"
 msgstr ""
 
-#: aleksis/core/models.py:756
+#: aleksis/core/models.py:660
 msgid "Activities"
 msgstr ""
 
-#: aleksis/core/models.py:762
+#: aleksis/core/models.py:666
 msgid "Sender"
 msgstr ""
 
-#: aleksis/core/models.py:767
+#: aleksis/core/models.py:671
 msgid "Recipient"
 msgstr ""
 
-#: aleksis/core/models.py:772 aleksis/core/models.py:1101
+#: aleksis/core/models.py:676 aleksis/core/models.py:1005
 msgid "Link"
 msgstr ""
 
-#: aleksis/core/models.py:775 aleksis/core/models.py:1102
-#: aleksis/core/models.py:1451
+#: aleksis/core/models.py:679 aleksis/core/models.py:1006
+#: aleksis/core/models.py:1346
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr ""
 
-#: aleksis/core/models.py:778
+#: aleksis/core/models.py:682
 msgid "Send notification at"
 msgstr ""
 
-#: aleksis/core/models.py:780
+#: aleksis/core/models.py:684
 msgid "Read"
 msgstr ""
 
-#: aleksis/core/models.py:781
+#: aleksis/core/models.py:685
 msgid "Sent"
 msgstr ""
 
-#: aleksis/core/models.py:798
+#: aleksis/core/models.py:702
 msgid "Notification"
 msgstr ""
 
-#: aleksis/core/models.py:799 aleksis/core/preferences.py:28
+#: aleksis/core/models.py:703 aleksis/core/preferences.py:29
 msgid "Notifications"
 msgstr ""
 
-#: aleksis/core/models.py:867
+#: aleksis/core/models.py:771
 msgid "Link to detailed view"
 msgstr ""
 
-#: aleksis/core/models.py:870
+#: aleksis/core/models.py:774
 msgid "Date and time from when to show"
 msgstr ""
 
-#: aleksis/core/models.py:873
+#: aleksis/core/models.py:777
 msgid "Date and time until when to show"
 msgstr ""
 
-#: aleksis/core/models.py:898
+#: aleksis/core/models.py:802
 msgid "Announcement"
 msgstr ""
 
-#: aleksis/core/models.py:899
+#: aleksis/core/models.py:803
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr ""
 
-#: aleksis/core/models.py:936
+#: aleksis/core/models.py:840
 msgid "Announcement recipient"
 msgstr ""
 
-#: aleksis/core/models.py:937
+#: aleksis/core/models.py:841
 msgid "Announcement recipients"
 msgstr ""
 
-#: aleksis/core/models.py:957
+#: aleksis/core/models.py:861
 msgid "Widget Title"
 msgstr ""
 
-#: aleksis/core/models.py:958
+#: aleksis/core/models.py:862
 msgid "Activate Widget"
 msgstr ""
 
-#: aleksis/core/models.py:959
+#: aleksis/core/models.py:863
 msgid "Widget is broken"
 msgstr ""
 
-#: aleksis/core/models.py:962
+#: aleksis/core/models.py:866
 msgid "Size on mobile devices"
 msgstr ""
 
-#: aleksis/core/models.py:963
+#: aleksis/core/models.py:867
 msgid "<= 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:968
+#: aleksis/core/models.py:872
 msgid "Size on tablet devices"
 msgstr ""
 
-#: aleksis/core/models.py:969
+#: aleksis/core/models.py:873
 msgid "> 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:974
+#: aleksis/core/models.py:878
 msgid "Size on desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:975
+#: aleksis/core/models.py:879
 msgid "> 992 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:980
+#: aleksis/core/models.py:884
 msgid "Size on large desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:981
+#: aleksis/core/models.py:885
 msgid "> 1200 px>, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:1012
+#: aleksis/core/models.py:916
 msgid "Can edit default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1013
+#: aleksis/core/models.py:917
 msgid "Dashboard Widget"
 msgstr ""
 
-#: aleksis/core/models.py:1014
+#: aleksis/core/models.py:918
 msgid "Dashboard Widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1020
+#: aleksis/core/models.py:924
 msgid "URL"
 msgstr ""
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:925
 msgid "Icon URL"
 msgstr ""
 
-#: aleksis/core/models.py:1027
+#: aleksis/core/models.py:931
 msgid "External link widget"
 msgstr ""
 
-#: aleksis/core/models.py:1028
+#: aleksis/core/models.py:932
 msgid "External link widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1034
+#: aleksis/core/models.py:938
 msgid "Content"
 msgstr ""
 
-#: aleksis/core/models.py:1040
+#: aleksis/core/models.py:944
 msgid "Static content widget"
 msgstr ""
 
-#: aleksis/core/models.py:1041
+#: aleksis/core/models.py:945
 msgid "Static content widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1046
+#: aleksis/core/models.py:950
 msgid "Dashboard widget"
 msgstr ""
 
-#: aleksis/core/models.py:1051
+#: aleksis/core/models.py:955
 msgid "Order"
 msgstr ""
 
-#: aleksis/core/models.py:1052
+#: aleksis/core/models.py:956
 msgid "Part of the default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1067
+#: aleksis/core/models.py:971
 msgid "Dashboard widget order"
 msgstr ""
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:972
 msgid "Dashboard widget orders"
 msgstr ""
 
-#: aleksis/core/models.py:1074
+#: aleksis/core/models.py:978
 msgid "Menu ID"
 msgstr ""
 
-#: aleksis/core/models.py:1087
+#: aleksis/core/models.py:991
 msgid "Custom menu"
 msgstr ""
 
-#: aleksis/core/models.py:1088
+#: aleksis/core/models.py:992
 msgid "Custom menus"
 msgstr ""
 
-#: aleksis/core/models.py:1098
+#: aleksis/core/models.py:1002
 msgid "Menu"
 msgstr ""
 
-#: aleksis/core/models.py:1108
+#: aleksis/core/models.py:1012
 msgid "Custom menu item"
 msgstr ""
 
-#: aleksis/core/models.py:1109
+#: aleksis/core/models.py:1013
 msgid "Custom menu items"
 msgstr ""
 
-#: aleksis/core/models.py:1134
+#: aleksis/core/models.py:1037
 msgid "Title of type"
 msgstr ""
 
-#: aleksis/core/models.py:1141 aleksis/core/templates/core/group/full.html:50
+#: aleksis/core/models.py:1044 aleksis/core/templates/core/group/full.html:50
 #, fuzzy
 #| msgid "Group"
 msgid "Group type"
 msgstr "Groupe"
 
-#: aleksis/core/models.py:1142
+#: aleksis/core/models.py:1045
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 #, fuzzy
@@ -807,505 +797,548 @@ msgstr "Groupe"
 msgid "Group types"
 msgstr "Groupe"
 
-#: aleksis/core/models.py:1155
+#: aleksis/core/models.py:1056
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view system status"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1156
+#: aleksis/core/models.py:1057
 msgid "Can manage data"
 msgstr ""
 
-#: aleksis/core/models.py:1157
+#: aleksis/core/models.py:1058
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can impersonate"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1059
 msgid "Can use search"
 msgstr ""
 
-#: aleksis/core/models.py:1159
+#: aleksis/core/models.py:1060
 msgid "Can change site preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1160
+#: aleksis/core/models.py:1061
 msgid "Can change person preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1161
+#: aleksis/core/models.py:1062
 msgid "Can change group preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1162
+#: aleksis/core/models.py:1063
 msgid "Can test PDF generation"
 msgstr ""
 
-#: aleksis/core/models.py:1163
+#: aleksis/core/models.py:1064
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can invite persons"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1199
+#: aleksis/core/models.py:1065
+msgid "Can view birthday calendar"
+msgstr ""
+
+#: aleksis/core/models.py:1092
 msgid "Related data check task"
 msgstr ""
 
-#: aleksis/core/models.py:1207
+#: aleksis/core/models.py:1100
 msgid "Issue solved"
 msgstr ""
 
-#: aleksis/core/models.py:1208
+#: aleksis/core/models.py:1101
 msgid "Notification sent"
 msgstr ""
 
-#: aleksis/core/models.py:1221
+#: aleksis/core/models.py:1114
 msgid "Data check result"
 msgstr ""
 
-#: aleksis/core/models.py:1222
+#: aleksis/core/models.py:1115
 msgid "Data check results"
 msgstr ""
 
-#: aleksis/core/models.py:1224
+#: aleksis/core/models.py:1117
 msgid "Can run data checks"
 msgstr ""
 
-#: aleksis/core/models.py:1225
+#: aleksis/core/models.py:1118
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1232
+#: aleksis/core/models.py:1125
 #, fuzzy
 #| msgid "Contact details"
 msgid "E-Mail address"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1292
+#: aleksis/core/models.py:1184 aleksis/core/models.py:1730
 #, fuzzy
 #| msgid "Owners"
 msgid "Owner"
 msgstr "Propriétaires"
 
-#: aleksis/core/models.py:1296
+#: aleksis/core/models.py:1188
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1299
+#: aleksis/core/models.py:1191
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1302
+#: aleksis/core/models.py:1194
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1309
+#: aleksis/core/models.py:1201
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1310
+#: aleksis/core/models.py:1202
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1315
+#: aleksis/core/models.py:1207
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1318
+#: aleksis/core/models.py:1210
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1322
+#: aleksis/core/models.py:1214
 msgid "Back URL"
 msgstr ""
 
-#: aleksis/core/models.py:1323
+#: aleksis/core/models.py:1215
 msgid "Progress title"
 msgstr ""
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1216
 msgid "Error message"
 msgstr ""
 
-#: aleksis/core/models.py:1325
+#: aleksis/core/models.py:1217
 msgid "Success message"
 msgstr ""
 
-#: aleksis/core/models.py:1326
+#: aleksis/core/models.py:1218
 msgid "Redirect on success URL"
 msgstr ""
 
-#: aleksis/core/models.py:1328
+#: aleksis/core/models.py:1220
 #, fuzzy
 #| msgid "Contact details"
 msgid "Additional button title"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1330
+#: aleksis/core/models.py:1222
 #, fuzzy
 #| msgid "Contact details"
 msgid "Additional button URL"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1332
+#: aleksis/core/models.py:1224
 #, fuzzy
 #| msgid "Contact details"
 msgid "Additional button icon"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1334
+#: aleksis/core/models.py:1226
 msgid "Result fetched"
 msgstr ""
 
-#: aleksis/core/models.py:1359
+#: aleksis/core/models.py:1251
 msgid "Background task completed successfully"
 msgstr ""
 
-#: aleksis/core/models.py:1360
+#: aleksis/core/models.py:1252
 msgid "The background task '{}' has been completed successfully."
 msgstr ""
 
-#: aleksis/core/models.py:1366
+#: aleksis/core/models.py:1258
 msgid "Background task failed"
 msgstr ""
 
-#: aleksis/core/models.py:1367
+#: aleksis/core/models.py:1259
 msgid "The background task '{}' has failed."
 msgstr ""
 
-#: aleksis/core/models.py:1376
+#: aleksis/core/models.py:1268
 msgid "Background task"
 msgstr ""
 
-#: aleksis/core/models.py:1390
+#: aleksis/core/models.py:1282
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1391
+#: aleksis/core/models.py:1283
 msgid "Task user assignments"
 msgstr ""
 
-#: aleksis/core/models.py:1407
+#: aleksis/core/models.py:1299
 #, fuzzy
 #| msgid "Contact details"
 msgid "Additional attributes"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1445
+#: aleksis/core/models.py:1340
 msgid "Allowed scopes that clients can request"
 msgstr ""
 
-#: aleksis/core/models.py:1455
+#: aleksis/core/models.py:1350
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr ""
 
-#: aleksis/core/models.py:1500
+#: aleksis/core/models.py:1398
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view room timetable"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1502
+#: aleksis/core/models.py:1400
 msgid "Room"
 msgstr ""
 
-#: aleksis/core/models.py:1503
+#: aleksis/core/models.py:1401
 msgid "Rooms"
 msgstr ""
 
-#: aleksis/core/models.py:1528
+#: aleksis/core/models.py:1424
 #, fuzzy
 #| msgid "Contact details"
 msgid "Start date and time"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1530
+#: aleksis/core/models.py:1426
 msgid "End date and time"
 msgstr ""
 
-#: aleksis/core/models.py:1531
+#: aleksis/core/models.py:1427
 msgid "Timezone"
 msgstr ""
 
-#: aleksis/core/models.py:1534
+#: aleksis/core/models.py:1430
 msgid "Recurrences"
 msgstr ""
 
-#: aleksis/core/models.py:1540
+#: aleksis/core/models.py:1436
 msgid "Amended base event"
 msgstr ""
 
-#: aleksis/core/models.py:1643
+#: aleksis/core/models.py:1561
 msgid "Calendar Event"
 msgstr ""
 
-#: aleksis/core/models.py:1644
+#: aleksis/core/models.py:1562
 msgid "Calendar Events"
 msgstr ""
 
-#: aleksis/core/models.py:1670
+#: aleksis/core/models.py:1592
 msgid "Birthdays"
 msgstr ""
 
-#: aleksis/core/models.py:1674
+#: aleksis/core/models.py:1597
 msgid "{}'s birthday"
 msgstr ""
 
-#: aleksis/core/models.py:1713 aleksis/core/models.py:1775
+#: aleksis/core/models.py:1648 aleksis/core/models.py:1714
 msgid "Holidays"
 msgstr ""
 
-#: aleksis/core/models.py:1774
+#: aleksis/core/models.py:1713
 msgid "Holiday"
 msgstr ""
 
-#: aleksis/core/preferences.py:24
-msgid "General"
+#: aleksis/core/models.py:1715
+msgid "Can view holiday calendar"
+msgstr ""
+
+#: aleksis/core/models.py:1720
+#, fuzzy
+#| msgid "Person"
+msgid "Personal events"
+msgstr "Personne"
+
+#: aleksis/core/models.py:1724
+msgid "Location"
+msgstr ""
+
+#: aleksis/core/models.py:1807
+msgid "Email"
+msgstr ""
+
+#: aleksis/core/models.py:1810
+#, fuzzy
+#| msgid "Group"
+msgid "Related group"
+msgstr "Groupe"
+
+#: aleksis/core/models.py:1817
+msgid "Organisation"
+msgstr ""
+
+#: aleksis/core/models.py:1818
+msgid "Organisations"
 msgstr ""
 
 #: aleksis/core/preferences.py:25
-msgid "School"
+msgid "General"
 msgstr ""
 
 #: aleksis/core/preferences.py:26
-msgid "Theme"
+msgid "School"
 msgstr ""
 
 #: aleksis/core/preferences.py:27
+msgid "Theme"
+msgstr ""
+
+#: aleksis/core/preferences.py:28
 msgid "Mail"
 msgstr ""
 
-#: aleksis/core/preferences.py:29
+#: aleksis/core/preferences.py:30
 msgid "Footer"
 msgstr ""
 
-#: aleksis/core/preferences.py:30
+#: aleksis/core/preferences.py:31
 #, fuzzy
 #| msgid "Contact details"
 msgid "Accounts"
 msgstr "Détails de contact"
 
-#: aleksis/core/preferences.py:31
+#: aleksis/core/preferences.py:32
 msgid "Authentication"
 msgstr ""
 
-#: aleksis/core/preferences.py:32
+#: aleksis/core/preferences.py:33
 msgid "Internationalisation"
 msgstr ""
 
-#: aleksis/core/preferences.py:33
+#: aleksis/core/preferences.py:34
 msgid "Calendar"
 msgstr ""
 
-#: aleksis/core/preferences.py:43
+#: aleksis/core/preferences.py:44
 msgid "Site title"
 msgstr ""
 
-#: aleksis/core/preferences.py:55
+#: aleksis/core/preferences.py:56
 #, fuzzy
 #| msgid "Description"
 msgid "Site description"
 msgstr "Description"
 
-#: aleksis/core/preferences.py:65
+#: aleksis/core/preferences.py:66
 msgid "Primary colour"
 msgstr ""
 
-#: aleksis/core/preferences.py:77
+#: aleksis/core/preferences.py:78
 msgid "Secondary colour"
 msgstr ""
 
-#: aleksis/core/preferences.py:89
+#: aleksis/core/preferences.py:90
 msgid "Logo"
 msgstr ""
 
-#: aleksis/core/preferences.py:100
+#: aleksis/core/preferences.py:101
 msgid "Favicon"
 msgstr ""
 
-#: aleksis/core/preferences.py:111
+#: aleksis/core/preferences.py:112
 msgid "PWA-Icon"
 msgstr ""
 
-#: aleksis/core/preferences.py:121
+#: aleksis/core/preferences.py:122
 msgid "PWA-Icon is maskable"
 msgstr ""
 
-#: aleksis/core/preferences.py:133
+#: aleksis/core/preferences.py:134
 #, fuzzy
 #| msgid "Last name"
 msgid "Mail out name"
 msgstr "Nom de famille"
 
-#: aleksis/core/preferences.py:144
+#: aleksis/core/preferences.py:145
 msgid "Mail out address"
 msgstr ""
 
-#: aleksis/core/preferences.py:157
+#: aleksis/core/preferences.py:158
 msgid "Link to privacy policy"
 msgstr ""
 
-#: aleksis/core/preferences.py:169
+#: aleksis/core/preferences.py:170
 msgid "Link to imprint"
 msgstr ""
 
-#: aleksis/core/preferences.py:180
+#: aleksis/core/preferences.py:181
 msgid "Name format for addressing"
 msgstr ""
 
-#: aleksis/core/preferences.py:197
+#: aleksis/core/preferences.py:198
 msgid "Channels to use for notifications"
 msgstr ""
 
-#: aleksis/core/preferences.py:208
+#: aleksis/core/preferences.py:209
 #, fuzzy
 #| msgid "Contact details"
 msgid "Select Design"
 msgstr "Détails de contact"
 
-#: aleksis/core/preferences.py:211
+#: aleksis/core/preferences.py:212
 msgid "Light mode"
 msgstr ""
 
-#: aleksis/core/preferences.py:224
+#: aleksis/core/preferences.py:225
 msgid "Regular expression to match primary group, e.g. '^Class .*'"
 msgstr ""
 
-#: aleksis/core/preferences.py:235
+#: aleksis/core/preferences.py:236
 msgid "Field on person to match primary group against"
 msgstr ""
 
-#: aleksis/core/preferences.py:247
+#: aleksis/core/preferences.py:248
 msgid "Automatically create new persons for new users"
 msgstr ""
 
-#: aleksis/core/preferences.py:256
+#: aleksis/core/preferences.py:257
 msgid "Automatically link existing persons to new users by their e-mail address"
 msgstr ""
 
-#: aleksis/core/preferences.py:267
+#: aleksis/core/preferences.py:268
 msgid "Display name of the school"
 msgstr ""
 
-#: aleksis/core/preferences.py:278
+#: aleksis/core/preferences.py:279
 msgid "Official name of the school, e.g. as given by supervisory authority"
 msgstr ""
 
-#: aleksis/core/preferences.py:286
+#: aleksis/core/preferences.py:287
 msgid "Allow users to change their passwords"
 msgstr ""
 
-#: aleksis/core/preferences.py:294
+#: aleksis/core/preferences.py:295
 msgid "Allow users to reset their passwords"
 msgstr ""
 
-#: aleksis/core/preferences.py:302
+#: aleksis/core/preferences.py:303
 msgid "Enable signup"
 msgstr ""
 
-#: aleksis/core/preferences.py:310
+#: aleksis/core/preferences.py:311
 msgid "Regular expression for allowed usernames"
 msgstr ""
 
-#: aleksis/core/preferences.py:318
+#: aleksis/core/preferences.py:319
 msgid "Enable invitations"
 msgstr ""
 
-#: aleksis/core/preferences.py:326
+#: aleksis/core/preferences.py:327
 msgid "Length of invite code. (Default 3: abcde-acbde-abcde)"
 msgstr ""
 
-#: aleksis/core/preferences.py:334
+#: aleksis/core/preferences.py:335
 msgid "Size of packets. (Default 5: abcde)"
 msgstr ""
 
-#: aleksis/core/preferences.py:345
+#: aleksis/core/preferences.py:346
 #, fuzzy
 #| msgid "Contact details"
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr "Détails de contact"
 
-#: aleksis/core/preferences.py:358
+#: aleksis/core/preferences.py:359
 msgid "Send emails if data checks detect problems"
 msgstr ""
 
-#: aleksis/core/preferences.py:369
+#: aleksis/core/preferences.py:370
 msgid "Email recipients for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:380
+#: aleksis/core/preferences.py:381
 msgid "Email recipient groups for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:389
+#: aleksis/core/preferences.py:390
 msgid "Show dashboard to users without login"
 msgstr ""
 
-#: aleksis/core/preferences.py:398
+#: aleksis/core/preferences.py:399
 msgid "Allow users to edit their dashboard"
 msgstr ""
 
-#: aleksis/core/preferences.py:409
+#: aleksis/core/preferences.py:410
 msgid "Fields on person model which are editable by themselves."
 msgstr ""
 
-#: aleksis/core/preferences.py:424
+#: aleksis/core/preferences.py:425
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr ""
 
-#: aleksis/core/preferences.py:438
+#: aleksis/core/preferences.py:439
 msgid "Contact for notification if a person changes their data"
 msgstr ""
 
-#: aleksis/core/preferences.py:449
+#: aleksis/core/preferences.py:450
 msgid "Prefer personal photos over avatars"
 msgstr ""
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:460
 msgid "PDF file expiration duration"
 msgstr ""
 
-#: aleksis/core/preferences.py:460
+#: aleksis/core/preferences.py:461
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/preferences.py:470
+#: aleksis/core/preferences.py:471
 msgid "Automatically update the dashboard and its widgets"
 msgstr ""
 
-#: aleksis/core/preferences.py:480
+#: aleksis/core/preferences.py:481
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr ""
 
-#: aleksis/core/preferences.py:490
+#: aleksis/core/preferences.py:491
 msgid "Birthday calendar feed color"
 msgstr ""
 
-#: aleksis/core/preferences.py:502
+#: aleksis/core/preferences.py:503
 msgid "Holiday calendar feed color"
 msgstr ""
 
 #: aleksis/core/preferences.py:515
+msgid "Personal events feed color"
+msgstr ""
+
+#: aleksis/core/preferences.py:528
 msgid "Activated calendars"
 msgstr ""
 
-#: aleksis/core/settings.py:551
+#: aleksis/core/preferences.py:546
+msgid "Comma-separated list of disallowed usernames"
+msgstr ""
+
+#: aleksis/core/settings.py:548
 msgid "English"
 msgstr ""
 
-#: aleksis/core/settings.py:552
+#: aleksis/core/settings.py:549
 msgid "German"
 msgstr ""
 
-#: aleksis/core/settings.py:553
+#: aleksis/core/settings.py:550
 msgid "Ukrainian"
 msgstr ""
 
-#: aleksis/core/tables.py:97 aleksis/core/tables.py:98
-#: aleksis/core/tables.py:112 aleksis/core/tables.py:128
-#: aleksis/core/tables.py:165
+#: aleksis/core/tables.py:96 aleksis/core/tables.py:112
+#: aleksis/core/tables.py:149
 #: aleksis/core/templates/core/announcement/list.html:42
 #: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
@@ -1313,7 +1346,7 @@ msgstr ""
 msgid "Delete"
 msgstr ""
 
-#: aleksis/core/tables.py:130 aleksis/core/tables.py:167
+#: aleksis/core/tables.py:114 aleksis/core/tables.py:151
 #: aleksis/core/templates/core/announcement/list.html:22
 msgid "Actions"
 msgstr ""
@@ -1413,8 +1446,8 @@ msgid "This e-mail confirmation link expired or is invalid. Please <a href=\"%(e
 msgstr ""
 
 #: aleksis/core/templates/account/password_change.html:5
-#: aleksis/core/templates/account/password_change.html:6
-#: aleksis/core/templates/account/password_change.html:19
+#: aleksis/core/templates/account/password_change.html:15
+#: aleksis/core/templates/account/password_change.html:28
 #: aleksis/core/templates/account/password_reset_from_key.html:5
 #: aleksis/core/templates/account/password_reset_from_key.html:42
 #: aleksis/core/templates/account/password_reset_from_key.html:46
@@ -1423,31 +1456,11 @@ msgstr ""
 msgid "Change password"
 msgstr ""
 
-#: aleksis/core/templates/account/password_change.html:12
-msgid "Forgot your current password? Click here to reset it:"
-msgstr ""
-
-#: aleksis/core/templates/account/password_change.html:12
-msgid "Forgot Password?"
-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 ""
-
-#: aleksis/core/templates/account/password_change_disabled.html:13
-msgid "Changing of password disabled."
-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"
-"          "
+#: aleksis/core/templates/account/password_change.html:19
+msgid "Forgot your current password?"
 msgstr ""
 
+#: aleksis/core/templates/account/password_change.html:20
 #: aleksis/core/templates/account/password_reset.html:5
 #: aleksis/core/templates/account/password_reset.html:15
 #: aleksis/core/templates/account/password_reset.html:23
@@ -1588,15 +1601,6 @@ msgid ""
 "          "
 msgstr ""
 
-#: aleksis/core/templates/core/additional_field/edit.html:6
-#: aleksis/core/templates/core/additional_field/edit.html:7
-msgid "Edit additional field"
-msgstr ""
-
-#: aleksis/core/templates/core/additional_field/list.html:14
-msgid "Create additional field"
-msgstr ""
-
 #: aleksis/core/templates/core/announcement/form.html:14
 #: aleksis/core/templates/core/announcement/form.html:21
 msgid "Edit announcement"
@@ -2887,15 +2891,6 @@ msgid ""
 "        "
 msgstr ""
 
-#: aleksis/core/templates/two_factor/core/setup.html:83
-msgid ""
-"\n"
-"        To identify and verify your YubiKey, please insert a\n"
-"        token in the field below. Your YubiKey will be linked to your\n"
-"        account.\n"
-"      "
-msgstr ""
-
 #: 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"
@@ -2944,11 +2939,17 @@ msgstr ""
 msgid "Disable"
 msgstr ""
 
-#: aleksis/core/util/notifications.py:64
+#: aleksis/core/util/auth_helpers.py:155
+#, fuzzy
+#| msgid "This username is already in use."
+msgid "This username is not allowed."
+msgstr "Cet nom est deja en utilisation."
+
+#: aleksis/core/util/notifications.py:67
 msgid "E-Mail"
 msgstr ""
 
-#: aleksis/core/util/notifications.py:65
+#: aleksis/core/util/notifications.py:68
 msgid "SMS"
 msgstr ""
 
@@ -2972,154 +2973,155 @@ msgstr ""
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:371
+#: aleksis/core/views.py:354
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:390 aleksis/core/views.py:400
+#: aleksis/core/views.py:373 aleksis/core/views.py:383
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:450
+#: aleksis/core/views.py:432
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:498
+#: aleksis/core/views.py:480
 msgid "Maintenance mode was turned on successfully."
 msgstr ""
 
-#: aleksis/core/views.py:500
+#: aleksis/core/views.py:482
 msgid "Maintenance mode was turned off successfully."
 msgstr ""
 
-#: aleksis/core/views.py:558
+#: aleksis/core/views.py:539
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:574
+#: aleksis/core/views.py:555
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:643
+#: aleksis/core/views.py:624
 msgid "The requested preference registry does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:662
+#: aleksis/core/views.py:643
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:686
+#: aleksis/core/views.py:667
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:700
+#: aleksis/core/views.py:681
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:732
-msgid "The additional field has been saved."
-msgstr ""
-
-#: aleksis/core/views.py:767
-msgid "The additional field has been deleted."
-msgstr ""
-
-#: aleksis/core/views.py:792
+#: aleksis/core/views.py:705
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:823
+#: aleksis/core/views.py:736
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:858
+#: aleksis/core/views.py:771
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:859
+#: aleksis/core/views.py:772
 msgid "Run data checks …"
 msgstr ""
 
-#: aleksis/core/views.py:860
+#: aleksis/core/views.py:773
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:861
+#: aleksis/core/views.py:774
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:878
+#: aleksis/core/views.py:791
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:888
+#: aleksis/core/views.py:801
 msgid "The requested solve option does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:921
+#: aleksis/core/views.py:834
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:951
+#: aleksis/core/views.py:864
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:961
+#: aleksis/core/views.py:874
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1033
+#: aleksis/core/views.py:946
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1035
+#: aleksis/core/views.py:948
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1106
+#: aleksis/core/views.py:1019
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr ""
 
-#: aleksis/core/views.py:1203
+#: aleksis/core/views.py:1116
 msgid "We have successfully assigned the permissions."
 msgstr ""
 
-#: aleksis/core/views.py:1213
+#: aleksis/core/views.py:1126
 msgid "The global user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1223
+#: aleksis/core/views.py:1136
 msgid "The global group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1233
+#: aleksis/core/views.py:1146
 msgid "The object user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1243
+#: aleksis/core/views.py:1156
 msgid "The object group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1352
+#: aleksis/core/views.py:1238
+msgid "We sent you an email with instructions for resetting your password."
+msgstr ""
+
+#: aleksis/core/views.py:1262
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1359
+#: aleksis/core/views.py:1269
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
-#: aleksis/core/views.py:1435
+#: aleksis/core/views.py:1345
 msgid "Person was invited successfully and an email with further instructions has been send to them."
 msgstr ""
 
-#: aleksis/core/views.py:1446
+#: aleksis/core/views.py:1356
 #, fuzzy
 #| msgid "This username is already in use."
 msgid "Person was already invited."
 msgstr "Cet nom est deja en utilisation."
 
+#, fuzzy
+#~| msgid "Description"
+#~ msgid "Help text / description"
+#~ msgstr "Description"
+
 #, fuzzy
 #~| msgid "Contact details"
 #~ msgid "No authorized applications."
diff --git a/aleksis/core/locale/la/LC_MESSAGES/django.po b/aleksis/core/locale/la/LC_MESSAGES/django.po
index 6289dae461dda33a7e1a1c07aebec1ca2bc6cac8..03217ae10f3e1087d941b92e8b592287ac5bc6cd 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: 2023-07-23 13:39+0200\n"
+"POT-Creation-Date: 2024-01-26 21:43+0100\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"
@@ -18,123 +18,146 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Generator: Weblate 4.3.2\n"
 
-#: aleksis/core/apps.py:151
+#: aleksis/core/apps.py:162
 msgid "You have been logged out successfully."
 msgstr ""
 
-#: aleksis/core/apps.py:161
+#: aleksis/core/apps.py:172
 msgid "OpenID Connect scope"
 msgstr ""
 
-#: aleksis/core/apps.py:162
+#: aleksis/core/apps.py:173
 msgid "Given name, family name, link to profile and picture if existing."
 msgstr ""
 
-#: aleksis/core/apps.py:163
+#: aleksis/core/apps.py:174
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Full home postal address"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/apps.py:164
+#: aleksis/core/apps.py:175
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Email address"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/apps.py:165
+#: aleksis/core/apps.py:176
 #, fuzzy
 #| msgid "Mobile phone"
 msgid "Home and mobile phone"
 msgstr "Numerus telephoni mobilis"
 
-#: aleksis/core/apps.py:166 aleksis/core/forms.py:231
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/apps.py:177 aleksis/core/forms.py:223
+#: aleksis/core/models.py:473 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 msgid "Groups"
 msgstr "Greges"
 
-#: aleksis/core/data_checks.py:60
+#: aleksis/core/data_checks.py:67
 msgid "Ignore problem"
 msgstr ""
 
-#: aleksis/core/data_checks.py:188
+#: aleksis/core/data_checks.py:199
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/data_checks.py:284
+#: aleksis/core/data_checks.py:329
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Deactivate DashboardWidget"
 msgstr "Forum"
 
-#: aleksis/core/data_checks.py:296
+#: aleksis/core/data_checks.py:341
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr ""
 
-#: aleksis/core/data_checks.py:297
+#: aleksis/core/data_checks.py:342
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
-#: aleksis/core/data_checks.py:320
-#, python-format
-msgid "Validate field %s of model %s."
+#: aleksis/core/data_checks.py:364
+#, python-brace-format
+msgid "Validate field {field} of model {model}."
 msgstr ""
 
-#: aleksis/core/data_checks.py:322
-#, python-format
-msgid "The field %s couldn't be validated successfully."
+#: aleksis/core/data_checks.py:367
+msgid "The field {} couldn't be validated successfully."
+msgstr ""
+
+#: aleksis/core/data_checks.py:389
+msgid "Ensure that there are no disallowed usernames."
+msgstr ""
+
+#: aleksis/core/data_checks.py:390
+msgid "A user with a disallowed username was reported automatically."
 msgstr ""
 
-#: aleksis/core/filters.py:42 aleksis/core/templates/core/group/list.html:20
+#: aleksis/core/data_checks.py:411
+#, fuzzy
+#| msgid "E-mail address"
+msgid "Change email address"
+msgstr "Inscriptio electronica"
+
+#: aleksis/core/data_checks.py:416
+msgid "Ensure that email addresses are unique among all persons"
+msgstr ""
+
+#: aleksis/core/data_checks.py:417
+#, fuzzy
+#| msgid "E-mail address"
+msgid "There was a non-unique email address."
+msgstr "Inscriptio electronica"
+
+#: aleksis/core/filters.py:39 aleksis/core/templates/core/group/list.html:20
 #: aleksis/core/templates/core/person/list.html:24
 #: aleksis/core/templates/search/search.html:7
 #: aleksis/core/templates/search/search.html:22
 msgid "Search"
 msgstr "Quaerere"
 
-#: aleksis/core/filters.py:59
+#: aleksis/core/filters.py:56
 msgid "Search by name"
 msgstr "Quaerere cum breve nomine"
 
-#: aleksis/core/filters.py:71
+#: aleksis/core/filters.py:68
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Search by contact details"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/filters.py:92
+#: aleksis/core/filters.py:89
 msgid "Permission"
 msgstr ""
 
-#: aleksis/core/filters.py:100
+#: aleksis/core/filters.py:97
 msgid "Content type"
 msgstr ""
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:743
+#: aleksis/core/filters.py:110 aleksis/core/models.py:647
 msgid "User"
 msgstr ""
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:516
+#: aleksis/core/filters.py:132 aleksis/core/models.py:472
 msgid "Group"
 msgstr "Grex"
 
-#: aleksis/core/forms.py:50 aleksis/core/forms.py:591
+#: aleksis/core/forms.py:48 aleksis/core/forms.py:574
 msgid "Base data"
 msgstr ""
 
-#: aleksis/core/forms.py:55 aleksis/core/tables.py:29
+#: aleksis/core/forms.py:53 aleksis/core/tables.py:29
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Address"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/forms.py:56 aleksis/core/forms.py:600
+#: aleksis/core/forms.py:54 aleksis/core/forms.py:583
 msgid "Contact data"
 msgstr ""
 
-#: aleksis/core/forms.py:58
+#: aleksis/core/forms.py:56
 msgid "Advanced personal data"
 msgstr ""
 
@@ -156,7 +179,7 @@ msgstr ""
 msgid "This username is already in use."
 msgstr ""
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:154
+#: aleksis/core/forms.py:153 aleksis/core/models.py:147
 msgid "School term"
 msgstr "Anus scolae"
 
@@ -166,134 +189,134 @@ msgstr "Anus scolae"
 msgid "Common data"
 msgstr "Adminstratio datarum"
 
-#: aleksis/core/forms.py:155 aleksis/core/forms.py:218
-#: aleksis/core/models.py:177 aleksis/core/templates/core/person/list.html:8
+#: aleksis/core/forms.py:155 aleksis/core/forms.py:210
+#: aleksis/core/models.py:168 aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
 msgstr "personae"
 
-#: aleksis/core/forms.py:156 aleksis/core/forms.py:602
-#, fuzzy
-#| msgid "Additional name(s)"
-msgid "Additional data"
-msgstr "addita nomines"
-
-#: aleksis/core/forms.py:157 aleksis/core/models.py:230
-#: aleksis/core/models.py:569 aleksis/core/tables.py:28
+#: aleksis/core/forms.py:156 aleksis/core/models.py:224
+#: aleksis/core/models.py:526 aleksis/core/tables.py:28
 msgid "Photo"
 msgstr "Photographia"
 
-#: aleksis/core/forms.py:210 aleksis/core/forms.py:213
-#: aleksis/core/models.py:97
+#: aleksis/core/forms.py:202 aleksis/core/forms.py:205
+#: aleksis/core/models.py:90
 msgid "Date"
 msgstr "dies"
 
-#: aleksis/core/forms.py:211 aleksis/core/forms.py:214
-#: aleksis/core/models.py:105
+#: aleksis/core/forms.py:203 aleksis/core/forms.py:206
+#: aleksis/core/models.py:98
 msgid "Time"
 msgstr "tempus"
 
-#: aleksis/core/forms.py:244
+#: aleksis/core/forms.py:236
 msgid "From when until when should the announcement be displayed?"
 msgstr ""
 
-#: aleksis/core/forms.py:247
+#: aleksis/core/forms.py:239
 msgid "Who should see the announcement?"
 msgstr "Quis nuntium videatne?"
 
-#: aleksis/core/forms.py:248
+#: aleksis/core/forms.py:240
 msgid "Write your announcement:"
 msgstr "Scribe nuntium:"
 
-#: aleksis/core/forms.py:287
+#: aleksis/core/forms.py:279
 msgid "You are not allowed to create announcements which are only valid in the past."
 msgstr ""
 
-#: aleksis/core/forms.py:291
+#: aleksis/core/forms.py:283
 msgid "The from date and time must be earlier then the until date and time."
 msgstr ""
 
-#: aleksis/core/forms.py:300
+#: aleksis/core/forms.py:292
 msgid "You need at least one recipient."
 msgstr ""
 
-#: aleksis/core/forms.py:408
+#: aleksis/core/forms.py:392
 msgid "Invitation code"
 msgstr ""
 
-#: aleksis/core/forms.py:409
+#: aleksis/core/forms.py:393
 msgid "Please enter your invitation code."
 msgstr ""
 
-#: aleksis/core/forms.py:428 aleksis/core/models.py:205
+#: aleksis/core/forms.py:412 aleksis/core/models.py:197
 msgid "First name"
 msgstr "Primus nomen"
 
-#: aleksis/core/forms.py:429 aleksis/core/models.py:206
+#: aleksis/core/forms.py:413 aleksis/core/models.py:198
 msgid "Last name"
 msgstr "Secondus nomen"
 
-#: aleksis/core/forms.py:438
+#: aleksis/core/forms.py:422
 #, fuzzy
 #| msgid "E-mail address"
 msgid "A person is using this e-mail address"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/forms.py:466
+#: aleksis/core/forms.py:450
 #, fuzzy
 #| msgid "Who should see the announcement?"
 msgid "Who should get the permission?"
 msgstr "Quis nuntium videatne?"
 
-#: aleksis/core/forms.py:467
+#: aleksis/core/forms.py:451
 msgid "On what?"
 msgstr ""
 
-#: aleksis/core/forms.py:493
+#: aleksis/core/forms.py:477
 msgid "Select objects which the permission should be granted for:"
 msgstr ""
 
-#: aleksis/core/forms.py:496
+#: aleksis/core/forms.py:480
 msgid "Grant the permission for all objects"
 msgstr ""
 
-#: aleksis/core/forms.py:504
+#: aleksis/core/forms.py:488
 msgid "You must select at least one group or person which should get the permission."
 msgstr ""
 
-#: aleksis/core/forms.py:509
+#: aleksis/core/forms.py:493
 msgid "You must grant the permission to all objects or to specific objects."
 msgstr ""
 
-#: aleksis/core/forms.py:596
+#: aleksis/core/forms.py:579
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Address data"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/forms.py:608
+#: aleksis/core/forms.py:585
+#, fuzzy
+#| msgid "Additional name(s)"
+msgid "Additional data"
+msgstr "addita nomines"
+
+#: aleksis/core/forms.py:591
 #, fuzzy
 #| msgid "Data management"
 msgid "Account data"
 msgstr "Adminstratio datarum"
 
-#: aleksis/core/forms.py:615
+#: aleksis/core/forms.py:598
 msgid "Password"
 msgstr ""
 
-#: aleksis/core/forms.py:618
+#: aleksis/core/forms.py:601
 msgid "Password (again)"
 msgstr ""
 
-#: aleksis/core/forms.py:771
+#: aleksis/core/forms.py:753
 msgid "The selected action does not exist."
 msgstr ""
 
-#: aleksis/core/forms.py:782
+#: aleksis/core/forms.py:764
 msgid "You do not have permission to run {} on all selected objects."
 msgstr ""
 
-#: aleksis/core/forms.py:838
+#: aleksis/core/forms.py:820
 msgid "No valid selection."
 msgstr ""
 
@@ -319,531 +342,494 @@ msgstr ""
 msgid "No backup result found!"
 msgstr ""
 
-#: aleksis/core/mixins.py:539
+#: aleksis/core/mixins.py:446
 #, fuzzy
 #| msgid "Edit school term"
 msgid "Linked school term"
 msgstr "Muta anum scolae"
 
-#: aleksis/core/models.py:95
+#: aleksis/core/models.py:88
 msgid "Boolean (Yes/No)"
 msgstr ""
 
-#: aleksis/core/models.py:96
+#: aleksis/core/models.py:89
 msgid "Text (one line)"
 msgstr ""
 
-#: aleksis/core/models.py:98
+#: aleksis/core/models.py:91
 msgid "Date and time"
 msgstr "Dies et hora"
 
-#: aleksis/core/models.py:99
+#: aleksis/core/models.py:92
 msgid "Decimal number"
 msgstr ""
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:223
+#: aleksis/core/models.py:93 aleksis/core/models.py:217
 msgid "E-mail address"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:101
+#: aleksis/core/models.py:94
 msgid "Integer"
 msgstr ""
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:95
 #, fuzzy
 #| msgid "E-mail address"
 msgid "IP address"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:96
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr ""
 
-#: aleksis/core/models.py:104
+#: aleksis/core/models.py:97
 msgid "Text (multi-line)"
 msgstr ""
 
-#: aleksis/core/models.py:106
+#: aleksis/core/models.py:99
 msgid "URL / Link"
 msgstr ""
 
-#: aleksis/core/models.py:118 aleksis/core/models.py:1100
-#: aleksis/core/models.py:1729
+#: aleksis/core/models.py:111 aleksis/core/models.py:1004
+#: aleksis/core/models.py:1667 aleksis/core/models.py:1806
 msgid "Name"
 msgstr "Nomen"
 
-#: aleksis/core/models.py:120 aleksis/core/models.py:1532
+#: aleksis/core/models.py:113 aleksis/core/models.py:1428
 msgid "Start date"
 msgstr ""
 
-#: aleksis/core/models.py:121 aleksis/core/models.py:1533
+#: aleksis/core/models.py:114 aleksis/core/models.py:1429
 msgid "End date"
 msgstr ""
 
-#: aleksis/core/models.py:140 aleksis/core/schema/school_term.py:48
+#: aleksis/core/models.py:133 aleksis/core/schema/school_term.py:50
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: aleksis/core/models.py:147 aleksis/core/schema/school_term.py:53
+#: aleksis/core/models.py:140 aleksis/core/schema/school_term.py:55
 msgid "There is already a school term for this time or a part of this time."
 msgstr ""
 
-#: aleksis/core/models.py:155
+#: aleksis/core/models.py:148
 msgid "School terms"
 msgstr "ani scolae"
 
-#: aleksis/core/models.py:176 aleksis/core/models.py:1049
+#: aleksis/core/models.py:167 aleksis/core/models.py:953
 msgid "Person"
 msgstr "Persona"
 
-#: aleksis/core/models.py:179
+#: aleksis/core/models.py:170
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Can view address"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:180
+#: aleksis/core/models.py:171
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Can view contact details"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:181
+#: aleksis/core/models.py:172
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Can view photo"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:182
+#: aleksis/core/models.py:173
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Can view avatar image"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:183
+#: aleksis/core/models.py:174
 #, fuzzy
 #| msgid "Persons and accounts"
 msgid "Can view persons groups"
 msgstr "Personae et computi"
 
-#: aleksis/core/models.py:184
+#: aleksis/core/models.py:175
 #, fuzzy
 #| msgid "Stop impersonation"
 msgid "Can view personal details"
 msgstr "Simulandum aliquem finire"
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "female"
 msgstr "femininum"
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "male"
 msgstr "maskulinum"
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "other"
 msgstr ""
 
-#: aleksis/core/models.py:202 aleksis/core/models.py:1404
+#: aleksis/core/models.py:194 aleksis/core/models.py:1296
 msgid "Linked user"
 msgstr ""
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:200
 msgid "Additional name(s)"
 msgstr "addita nomines"
 
-#: aleksis/core/models.py:212 aleksis/core/models.py:534
-#: aleksis/core/models.py:1490
+#: aleksis/core/models.py:204 aleksis/core/models.py:491
+#: aleksis/core/models.py:1388
 msgid "Short name"
 msgstr "Breve nomen"
 
-#: aleksis/core/models.py:215
+#: aleksis/core/models.py:209
 msgid "Street"
 msgstr "Via"
 
-#: aleksis/core/models.py:216
+#: aleksis/core/models.py:210
 msgid "Street number"
 msgstr "Numerus domini"
 
-#: aleksis/core/models.py:217
+#: aleksis/core/models.py:211
 msgid "Postal code"
 msgstr "Numerus directorius"
 
-#: aleksis/core/models.py:218
+#: aleksis/core/models.py:212
 msgid "Place"
 msgstr "Urbs"
 
-#: aleksis/core/models.py:220
+#: aleksis/core/models.py:214
 msgid "Home phone"
 msgstr "Numerus telephoni domi"
 
-#: aleksis/core/models.py:221
+#: aleksis/core/models.py:215
 msgid "Mobile phone"
 msgstr "Numerus telephoni mobilis"
 
-#: aleksis/core/models.py:225
+#: aleksis/core/models.py:219
 msgid "Date of birth"
 msgstr "Dies natalis"
 
-#: aleksis/core/models.py:226
+#: aleksis/core/models.py:220
 #, fuzzy
 #| msgid "Date of birth"
 msgid "Place of birth"
 msgstr "Dies natalis"
 
-#: aleksis/core/models.py:227
+#: aleksis/core/models.py:221
 msgid "Sex"
 msgstr "Genus"
 
-#: aleksis/core/models.py:234 aleksis/core/models.py:573
+#: aleksis/core/models.py:228 aleksis/core/models.py:530
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr ""
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:577
+#: aleksis/core/models.py:233 aleksis/core/models.py:534
 msgid "Display picture / Avatar"
 msgstr ""
 
-#: aleksis/core/models.py:242 aleksis/core/models.py:580
+#: aleksis/core/models.py:236 aleksis/core/models.py:537
 msgid "This is a picture or an avatar for public display."
 msgstr ""
 
-#: aleksis/core/models.py:247
+#: aleksis/core/models.py:241
 msgid "Guardians / Parents"
 msgstr "Parentes"
 
-#: aleksis/core/models.py:254
+#: aleksis/core/models.py:248
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/core/models.py:257 aleksis/core/models.py:747
-#: aleksis/core/models.py:771 aleksis/core/models.py:866
-#: aleksis/core/models.py:1135
+#: aleksis/core/models.py:251 aleksis/core/models.py:651
+#: aleksis/core/models.py:675 aleksis/core/models.py:770
+#: aleksis/core/models.py:1038 aleksis/core/models.py:1723
 msgid "Description"
 msgstr "Descriptio"
 
-#: aleksis/core/models.py:487
-msgid "Title of field"
-msgstr ""
-
-#: aleksis/core/models.py:489
-msgid "Type of field"
-msgstr ""
-
-#: aleksis/core/models.py:491
-msgid "Required"
-msgstr ""
-
-#: aleksis/core/models.py:492
-#, fuzzy
-#| msgid "Site description"
-msgid "Help text / description"
-msgstr "Descriptio paginae"
-
-#: aleksis/core/models.py:498
-#, fuzzy
-#| msgid "Additional name(s)"
-msgid "Addtitional field for groups"
-msgstr "addita nomines"
-
-#: aleksis/core/models.py:499
-#, fuzzy
-#| msgid "Additional name(s)"
-msgid "Addtitional fields for groups"
-msgstr "addita nomines"
-
-#: aleksis/core/models.py:519
+#: aleksis/core/models.py:475
 msgid "Can assign child groups to groups"
 msgstr ""
 
-#: aleksis/core/models.py:520
+#: aleksis/core/models.py:476
 #, fuzzy
 #| msgid "Persons and accounts"
 msgid "Can view statistics about group."
 msgstr "Personae et computi"
 
-#: aleksis/core/models.py:532 aleksis/core/models.py:1491
+#: aleksis/core/models.py:489 aleksis/core/models.py:1389
 #, fuzzy
 #| msgid "Last name"
 msgid "Long name"
 msgstr "Secondus nomen"
 
-#: aleksis/core/models.py:542 aleksis/core/templates/core/group/full.html:105
+#: aleksis/core/models.py:502 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr ""
 
-#: aleksis/core/models.py:545 aleksis/core/templates/core/group/full.html:102
+#: aleksis/core/models.py:505 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr ""
 
-#: aleksis/core/models.py:552 aleksis/core/templates/core/group/full.html:59
+#: aleksis/core/models.py:512 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr ""
 
-#: aleksis/core/models.py:560
+#: aleksis/core/models.py:520
 msgid "Type of group"
 msgstr ""
 
-#: aleksis/core/models.py:565
-#: aleksis/core/templates/core/additional_field/list.html:8
-#: aleksis/core/templates/core/additional_field/list.html:9
-#, fuzzy
-#| msgid "Additional name(s)"
-msgid "Additional fields"
-msgstr "addita nomines"
-
-#: aleksis/core/models.py:746 aleksis/core/models.py:770
-#: aleksis/core/models.py:865 aleksis/core/models.py:1321
+#: aleksis/core/models.py:650 aleksis/core/models.py:674
+#: aleksis/core/models.py:769 aleksis/core/models.py:1213
+#: aleksis/core/models.py:1722
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr "Titulus"
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:653
 msgid "Application"
 msgstr ""
 
-#: aleksis/core/models.py:755
+#: aleksis/core/models.py:659
 msgid "Activity"
 msgstr ""
 
-#: aleksis/core/models.py:756
+#: aleksis/core/models.py:660
 msgid "Activities"
 msgstr ""
 
-#: aleksis/core/models.py:762
+#: aleksis/core/models.py:666
 msgid "Sender"
 msgstr "Mittens"
 
-#: aleksis/core/models.py:767
+#: aleksis/core/models.py:671
 msgid "Recipient"
 msgstr ""
 
-#: aleksis/core/models.py:772 aleksis/core/models.py:1101
+#: aleksis/core/models.py:676 aleksis/core/models.py:1005
 msgid "Link"
 msgstr ""
 
-#: aleksis/core/models.py:775 aleksis/core/models.py:1102
-#: aleksis/core/models.py:1451
+#: aleksis/core/models.py:679 aleksis/core/models.py:1006
+#: aleksis/core/models.py:1346
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr "Nota"
 
-#: aleksis/core/models.py:778
+#: aleksis/core/models.py:682
 #, fuzzy
 #| msgid "Notification"
 msgid "Send notification at"
 msgstr "Nuntius"
 
-#: aleksis/core/models.py:780
+#: aleksis/core/models.py:684
 msgid "Read"
 msgstr ""
 
-#: aleksis/core/models.py:781
+#: aleksis/core/models.py:685
 msgid "Sent"
 msgstr ""
 
-#: aleksis/core/models.py:798
+#: aleksis/core/models.py:702
 #, fuzzy
 #| msgid "Notifications"
 msgid "Notification"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:799 aleksis/core/preferences.py:28
+#: aleksis/core/models.py:703 aleksis/core/preferences.py:29
 msgid "Notifications"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:867
+#: aleksis/core/models.py:771
 msgid "Link to detailed view"
 msgstr ""
 
-#: aleksis/core/models.py:870
+#: aleksis/core/models.py:774
 msgid "Date and time from when to show"
 msgstr ""
 
-#: aleksis/core/models.py:873
+#: aleksis/core/models.py:777
 msgid "Date and time until when to show"
 msgstr ""
 
-#: aleksis/core/models.py:898
+#: aleksis/core/models.py:802
 #, fuzzy
 #| msgid "Announcements"
 msgid "Announcement"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:899
+#: aleksis/core/models.py:803
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:936
+#: aleksis/core/models.py:840
 #, fuzzy
 #| msgid "Announcements"
 msgid "Announcement recipient"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:937
+#: aleksis/core/models.py:841
 #, fuzzy
 #| msgid "Announcements"
 msgid "Announcement recipients"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:957
+#: aleksis/core/models.py:861
 #, fuzzy
 #| msgid "Site title"
 msgid "Widget Title"
 msgstr "Titulus paginae"
 
-#: aleksis/core/models.py:958
+#: aleksis/core/models.py:862
 msgid "Activate Widget"
 msgstr ""
 
-#: aleksis/core/models.py:959
+#: aleksis/core/models.py:863
 #, fuzzy
 #| msgid "Site title"
 msgid "Widget is broken"
 msgstr "Titulus paginae"
 
-#: aleksis/core/models.py:962
+#: aleksis/core/models.py:866
 msgid "Size on mobile devices"
 msgstr ""
 
-#: aleksis/core/models.py:963
+#: aleksis/core/models.py:867
 msgid "<= 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:968
+#: aleksis/core/models.py:872
 msgid "Size on tablet devices"
 msgstr ""
 
-#: aleksis/core/models.py:969
+#: aleksis/core/models.py:873
 msgid "> 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:974
+#: aleksis/core/models.py:878
 msgid "Size on desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:975
+#: aleksis/core/models.py:879
 msgid "> 992 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:980
+#: aleksis/core/models.py:884
 msgid "Size on large desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:981
+#: aleksis/core/models.py:885
 msgid "> 1200 px>, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:1012
+#: aleksis/core/models.py:916
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Can edit default dashboard"
 msgstr "Forum"
 
-#: aleksis/core/models.py:1013
+#: aleksis/core/models.py:917
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Dashboard Widget"
 msgstr "Forum"
 
-#: aleksis/core/models.py:1014
+#: aleksis/core/models.py:918
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Dashboard Widgets"
 msgstr "Forum"
 
-#: aleksis/core/models.py:1020
+#: aleksis/core/models.py:924
 msgid "URL"
 msgstr ""
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:925
 #, fuzzy
 #| msgid "Icon"
 msgid "Icon URL"
 msgstr "Nota"
 
-#: aleksis/core/models.py:1027
+#: aleksis/core/models.py:931
 msgid "External link widget"
 msgstr ""
 
-#: aleksis/core/models.py:1028
+#: aleksis/core/models.py:932
 msgid "External link widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1034
+#: aleksis/core/models.py:938
 msgid "Content"
 msgstr ""
 
-#: aleksis/core/models.py:1040
+#: aleksis/core/models.py:944
 msgid "Static content widget"
 msgstr ""
 
-#: aleksis/core/models.py:1041
+#: aleksis/core/models.py:945
 msgid "Static content widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1046
+#: aleksis/core/models.py:950
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Dashboard widget"
 msgstr "Forum"
 
-#: aleksis/core/models.py:1051
+#: aleksis/core/models.py:955
 msgid "Order"
 msgstr ""
 
-#: aleksis/core/models.py:1052
+#: aleksis/core/models.py:956
 msgid "Part of the default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1067
+#: aleksis/core/models.py:971
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Dashboard widget order"
 msgstr "Forum"
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:972
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Dashboard widget orders"
 msgstr "Forum"
 
-#: aleksis/core/models.py:1074
+#: aleksis/core/models.py:978
 msgid "Menu ID"
 msgstr ""
 
-#: aleksis/core/models.py:1087
+#: aleksis/core/models.py:991
 msgid "Custom menu"
 msgstr ""
 
-#: aleksis/core/models.py:1088
+#: aleksis/core/models.py:992
 msgid "Custom menus"
 msgstr ""
 
-#: aleksis/core/models.py:1098
+#: aleksis/core/models.py:1002
 msgid "Menu"
 msgstr ""
 
-#: aleksis/core/models.py:1108
+#: aleksis/core/models.py:1012
 msgid "Custom menu item"
 msgstr ""
 
-#: aleksis/core/models.py:1109
+#: aleksis/core/models.py:1013
 msgid "Custom menu items"
 msgstr ""
 
-#: aleksis/core/models.py:1134
+#: aleksis/core/models.py:1037
 msgid "Title of type"
 msgstr ""
 
-#: aleksis/core/models.py:1141 aleksis/core/templates/core/group/full.html:50
+#: aleksis/core/models.py:1044 aleksis/core/templates/core/group/full.html:50
 #, fuzzy
 #| msgid "Group"
 msgid "Group type"
 msgstr "Grex"
 
-#: aleksis/core/models.py:1142
+#: aleksis/core/models.py:1045
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 #, fuzzy
@@ -851,521 +837,570 @@ msgstr "Grex"
 msgid "Group types"
 msgstr "Greges"
 
-#: aleksis/core/models.py:1155
+#: aleksis/core/models.py:1056
 #, fuzzy
 #| msgid "System status"
 msgid "Can view system status"
 msgstr "Status systemae"
 
-#: aleksis/core/models.py:1156
+#: aleksis/core/models.py:1057
 #, fuzzy
 #| msgid "Data management"
 msgid "Can manage data"
 msgstr "Adminstratio datarum"
 
-#: aleksis/core/models.py:1157
+#: aleksis/core/models.py:1058
 #, fuzzy
 #| msgid "Stop impersonation"
 msgid "Can impersonate"
 msgstr "Simulandum aliquem finire"
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1059
 msgid "Can use search"
 msgstr ""
 
-#: aleksis/core/models.py:1159
+#: aleksis/core/models.py:1060
 msgid "Can change site preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1160
+#: aleksis/core/models.py:1061
 msgid "Can change person preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1161
+#: aleksis/core/models.py:1062
 msgid "Can change group preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1162
+#: aleksis/core/models.py:1063
 msgid "Can test PDF generation"
 msgstr ""
 
-#: aleksis/core/models.py:1163
+#: aleksis/core/models.py:1064
 #, fuzzy
 #| msgid "Stop impersonation"
 msgid "Can invite persons"
 msgstr "Simulandum aliquem finire"
 
-#: aleksis/core/models.py:1199
+#: aleksis/core/models.py:1065
+msgid "Can view birthday calendar"
+msgstr ""
+
+#: aleksis/core/models.py:1092
 msgid "Related data check task"
 msgstr ""
 
-#: aleksis/core/models.py:1207
+#: aleksis/core/models.py:1100
 msgid "Issue solved"
 msgstr ""
 
-#: aleksis/core/models.py:1208
+#: aleksis/core/models.py:1101
 #, fuzzy
 #| msgid "Notifications"
 msgid "Notification sent"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:1221
+#: aleksis/core/models.py:1114
 msgid "Data check result"
 msgstr ""
 
-#: aleksis/core/models.py:1222
+#: aleksis/core/models.py:1115
 msgid "Data check results"
 msgstr ""
 
-#: aleksis/core/models.py:1224
+#: aleksis/core/models.py:1117
 msgid "Can run data checks"
 msgstr ""
 
-#: aleksis/core/models.py:1225
+#: aleksis/core/models.py:1118
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1232
+#: aleksis/core/models.py:1125
 #, fuzzy
 #| msgid "E-mail address"
 msgid "E-Mail address"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:1292
+#: aleksis/core/models.py:1184 aleksis/core/models.py:1730
 msgid "Owner"
 msgstr ""
 
-#: aleksis/core/models.py:1296
+#: aleksis/core/models.py:1188
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1299
+#: aleksis/core/models.py:1191
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1302
+#: aleksis/core/models.py:1194
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1309
+#: aleksis/core/models.py:1201
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1310
+#: aleksis/core/models.py:1202
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1315
+#: aleksis/core/models.py:1207
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1318
+#: aleksis/core/models.py:1210
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1322
+#: aleksis/core/models.py:1214
 #, fuzzy
 #| msgid "Icon"
 msgid "Back URL"
 msgstr "Nota"
 
-#: aleksis/core/models.py:1323
+#: aleksis/core/models.py:1215
 msgid "Progress title"
 msgstr ""
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1216
 msgid "Error message"
 msgstr ""
 
-#: aleksis/core/models.py:1325
+#: aleksis/core/models.py:1217
 msgid "Success message"
 msgstr ""
 
-#: aleksis/core/models.py:1326
+#: aleksis/core/models.py:1218
 msgid "Redirect on success URL"
 msgstr ""
 
-#: aleksis/core/models.py:1328
+#: aleksis/core/models.py:1220
 #, fuzzy
 #| msgid "Additional name(s)"
 msgid "Additional button title"
 msgstr "addita nomines"
 
-#: aleksis/core/models.py:1330
+#: aleksis/core/models.py:1222
 #, fuzzy
 #| msgid "Additional name(s)"
 msgid "Additional button URL"
 msgstr "addita nomines"
 
-#: aleksis/core/models.py:1332
+#: aleksis/core/models.py:1224
 #, fuzzy
 #| msgid "Additional name(s)"
 msgid "Additional button icon"
 msgstr "addita nomines"
 
-#: aleksis/core/models.py:1334
+#: aleksis/core/models.py:1226
 msgid "Result fetched"
 msgstr ""
 
-#: aleksis/core/models.py:1359
+#: aleksis/core/models.py:1251
 msgid "Background task completed successfully"
 msgstr ""
 
-#: aleksis/core/models.py:1360
+#: aleksis/core/models.py:1252
 msgid "The background task '{}' has been completed successfully."
 msgstr ""
 
-#: aleksis/core/models.py:1366
+#: aleksis/core/models.py:1258
 msgid "Background task failed"
 msgstr ""
 
-#: aleksis/core/models.py:1367
+#: aleksis/core/models.py:1259
 msgid "The background task '{}' has failed."
 msgstr ""
 
-#: aleksis/core/models.py:1376
+#: aleksis/core/models.py:1268
 msgid "Background task"
 msgstr ""
 
-#: aleksis/core/models.py:1390
+#: aleksis/core/models.py:1282
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1391
+#: aleksis/core/models.py:1283
 msgid "Task user assignments"
 msgstr ""
 
-#: aleksis/core/models.py:1407
+#: aleksis/core/models.py:1299
 #, fuzzy
 #| msgid "Additional name(s)"
 msgid "Additional attributes"
 msgstr "addita nomines"
 
-#: aleksis/core/models.py:1445
+#: aleksis/core/models.py:1340
 msgid "Allowed scopes that clients can request"
 msgstr ""
 
-#: aleksis/core/models.py:1455
+#: aleksis/core/models.py:1350
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr ""
 
-#: aleksis/core/models.py:1500
+#: aleksis/core/models.py:1398
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Can view room timetable"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:1502
+#: aleksis/core/models.py:1400
 msgid "Room"
 msgstr ""
 
-#: aleksis/core/models.py:1503
+#: aleksis/core/models.py:1401
 msgid "Rooms"
 msgstr ""
 
-#: aleksis/core/models.py:1528
+#: aleksis/core/models.py:1424
 #, fuzzy
 #| msgid "Date and time"
 msgid "Start date and time"
 msgstr "Dies et hora"
 
-#: aleksis/core/models.py:1530
+#: aleksis/core/models.py:1426
 #, fuzzy
 #| msgid "Date and time"
 msgid "End date and time"
 msgstr "Dies et hora"
 
-#: aleksis/core/models.py:1531
+#: aleksis/core/models.py:1427
 #, fuzzy
 #| msgid "Time"
 msgid "Timezone"
 msgstr "tempus"
 
-#: aleksis/core/models.py:1534
+#: aleksis/core/models.py:1430
 msgid "Recurrences"
 msgstr ""
 
-#: aleksis/core/models.py:1540
+#: aleksis/core/models.py:1436
 msgid "Amended base event"
 msgstr ""
 
-#: aleksis/core/models.py:1643
+#: aleksis/core/models.py:1561
 msgid "Calendar Event"
 msgstr ""
 
-#: aleksis/core/models.py:1644
+#: aleksis/core/models.py:1562
 msgid "Calendar Events"
 msgstr ""
 
-#: aleksis/core/models.py:1670
+#: aleksis/core/models.py:1592
 msgid "Birthdays"
 msgstr ""
 
-#: aleksis/core/models.py:1674
+#: aleksis/core/models.py:1597
 msgid "{}'s birthday"
 msgstr ""
 
-#: aleksis/core/models.py:1713 aleksis/core/models.py:1775
+#: aleksis/core/models.py:1648 aleksis/core/models.py:1714
 msgid "Holidays"
 msgstr ""
 
-#: aleksis/core/models.py:1774
+#: aleksis/core/models.py:1713
 msgid "Holiday"
 msgstr ""
 
-#: aleksis/core/preferences.py:24
-msgid "General"
+#: aleksis/core/models.py:1715
+msgid "Can view holiday calendar"
+msgstr ""
+
+#: aleksis/core/models.py:1720
+#, fuzzy
+#| msgid "Persons"
+msgid "Personal events"
+msgstr "personae"
+
+#: aleksis/core/models.py:1724
+#, fuzzy
+#| msgid "Notifications"
+msgid "Location"
+msgstr "Nuntii"
+
+#: aleksis/core/models.py:1807
+msgid "Email"
 msgstr ""
 
+#: aleksis/core/models.py:1810
+#, fuzzy
+#| msgid "Group"
+msgid "Related group"
+msgstr "Grex"
+
+#: aleksis/core/models.py:1817
+#, fuzzy
+#| msgid "Impersonation"
+msgid "Organisation"
+msgstr "Simulare aliquem"
+
+#: aleksis/core/models.py:1818
+#, fuzzy
+#| msgid "Impersonation"
+msgid "Organisations"
+msgstr "Simulare aliquem"
+
 #: aleksis/core/preferences.py:25
+msgid "General"
+msgstr ""
+
+#: aleksis/core/preferences.py:26
 msgid "School"
 msgstr "Scola"
 
-#: aleksis/core/preferences.py:26
+#: aleksis/core/preferences.py:27
 msgid "Theme"
 msgstr ""
 
-#: aleksis/core/preferences.py:27
+#: aleksis/core/preferences.py:28
 msgid "Mail"
 msgstr ""
 
-#: aleksis/core/preferences.py:29
+#: aleksis/core/preferences.py:30
 msgid "Footer"
 msgstr ""
 
-#: aleksis/core/preferences.py:30
+#: aleksis/core/preferences.py:31
 #, fuzzy
 #| msgid "Data management"
 msgid "Accounts"
 msgstr "Adminstratio datarum"
 
-#: aleksis/core/preferences.py:31
+#: aleksis/core/preferences.py:32
 #, fuzzy
 #| msgid "Notifications"
 msgid "Authentication"
 msgstr "Nuntii"
 
-#: aleksis/core/preferences.py:32
+#: aleksis/core/preferences.py:33
 #, fuzzy
 #| msgid "Impersonation"
 msgid "Internationalisation"
 msgstr "Simulare aliquem"
 
-#: aleksis/core/preferences.py:33
+#: aleksis/core/preferences.py:34
 msgid "Calendar"
 msgstr ""
 
-#: aleksis/core/preferences.py:43
+#: aleksis/core/preferences.py:44
 msgid "Site title"
 msgstr "Titulus paginae"
 
-#: aleksis/core/preferences.py:55
+#: aleksis/core/preferences.py:56
 msgid "Site description"
 msgstr "Descriptio paginae"
 
-#: aleksis/core/preferences.py:65
+#: aleksis/core/preferences.py:66
 msgid "Primary colour"
 msgstr ""
 
-#: aleksis/core/preferences.py:77
+#: aleksis/core/preferences.py:78
 msgid "Secondary colour"
 msgstr ""
 
-#: aleksis/core/preferences.py:89
+#: aleksis/core/preferences.py:90
 #, fuzzy
 #| msgid "Logout"
 msgid "Logo"
 msgstr "nomen retractare"
 
-#: aleksis/core/preferences.py:100
+#: aleksis/core/preferences.py:101
 msgid "Favicon"
 msgstr ""
 
-#: aleksis/core/preferences.py:111
+#: aleksis/core/preferences.py:112
 #, fuzzy
 #| msgid "Icon"
 msgid "PWA-Icon"
 msgstr "Nota"
 
-#: aleksis/core/preferences.py:121
+#: aleksis/core/preferences.py:122
 msgid "PWA-Icon is maskable"
 msgstr ""
 
-#: aleksis/core/preferences.py:133
+#: aleksis/core/preferences.py:134
 #, fuzzy
 #| msgid "Last name"
 msgid "Mail out name"
 msgstr "Secondus nomen"
 
-#: aleksis/core/preferences.py:144
+#: aleksis/core/preferences.py:145
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Mail out address"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/preferences.py:157
+#: aleksis/core/preferences.py:158
 msgid "Link to privacy policy"
 msgstr ""
 
-#: aleksis/core/preferences.py:169
+#: aleksis/core/preferences.py:170
 msgid "Link to imprint"
 msgstr ""
 
-#: aleksis/core/preferences.py:180
+#: aleksis/core/preferences.py:181
 msgid "Name format for addressing"
 msgstr ""
 
-#: aleksis/core/preferences.py:197
+#: aleksis/core/preferences.py:198
 msgid "Channels to use for notifications"
 msgstr ""
 
-#: aleksis/core/preferences.py:208
+#: aleksis/core/preferences.py:209
 #, fuzzy
 #| msgid "Stop impersonation"
 msgid "Select Design"
 msgstr "Simulandum aliquem finire"
 
-#: aleksis/core/preferences.py:211
+#: aleksis/core/preferences.py:212
 msgid "Light mode"
 msgstr ""
 
-#: aleksis/core/preferences.py:224
+#: aleksis/core/preferences.py:225
 msgid "Regular expression to match primary group, e.g. '^Class .*'"
 msgstr ""
 
-#: aleksis/core/preferences.py:235
+#: aleksis/core/preferences.py:236
 msgid "Field on person to match primary group against"
 msgstr ""
 
-#: aleksis/core/preferences.py:247
+#: aleksis/core/preferences.py:248
 msgid "Automatically create new persons for new users"
 msgstr ""
 
-#: aleksis/core/preferences.py:256
+#: aleksis/core/preferences.py:257
 msgid "Automatically link existing persons to new users by their e-mail address"
 msgstr ""
 
-#: aleksis/core/preferences.py:267
+#: aleksis/core/preferences.py:268
 msgid "Display name of the school"
 msgstr ""
 
-#: aleksis/core/preferences.py:278
+#: aleksis/core/preferences.py:279
 msgid "Official name of the school, e.g. as given by supervisory authority"
 msgstr "Officialis nomen scolae, e. g."
 
-#: aleksis/core/preferences.py:286
+#: aleksis/core/preferences.py:287
 msgid "Allow users to change their passwords"
 msgstr ""
 
-#: aleksis/core/preferences.py:294
+#: aleksis/core/preferences.py:295
 msgid "Allow users to reset their passwords"
 msgstr ""
 
-#: aleksis/core/preferences.py:302
+#: aleksis/core/preferences.py:303
 msgid "Enable signup"
 msgstr ""
 
-#: aleksis/core/preferences.py:310
+#: aleksis/core/preferences.py:311
 msgid "Regular expression for allowed usernames"
 msgstr ""
 
-#: aleksis/core/preferences.py:318
+#: aleksis/core/preferences.py:319
 msgid "Enable invitations"
 msgstr ""
 
-#: aleksis/core/preferences.py:326
+#: aleksis/core/preferences.py:327
 msgid "Length of invite code. (Default 3: abcde-acbde-abcde)"
 msgstr ""
 
-#: aleksis/core/preferences.py:334
+#: aleksis/core/preferences.py:335
 msgid "Size of packets. (Default 5: abcde)"
 msgstr ""
 
-#: aleksis/core/preferences.py:345
+#: aleksis/core/preferences.py:346
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/preferences.py:358
+#: aleksis/core/preferences.py:359
 msgid "Send emails if data checks detect problems"
 msgstr ""
 
-#: aleksis/core/preferences.py:369
+#: aleksis/core/preferences.py:370
 msgid "Email recipients for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:380
+#: aleksis/core/preferences.py:381
 msgid "Email recipient groups for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:389
+#: aleksis/core/preferences.py:390
 msgid "Show dashboard to users without login"
 msgstr ""
 
-#: aleksis/core/preferences.py:398
+#: aleksis/core/preferences.py:399
 msgid "Allow users to edit their dashboard"
 msgstr ""
 
-#: aleksis/core/preferences.py:409
+#: aleksis/core/preferences.py:410
 msgid "Fields on person model which are editable by themselves."
 msgstr ""
 
-#: aleksis/core/preferences.py:424
+#: aleksis/core/preferences.py:425
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr ""
 
-#: aleksis/core/preferences.py:438
+#: aleksis/core/preferences.py:439
 msgid "Contact for notification if a person changes their data"
 msgstr ""
 
-#: aleksis/core/preferences.py:449
+#: aleksis/core/preferences.py:450
 msgid "Prefer personal photos over avatars"
 msgstr ""
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:460
 msgid "PDF file expiration duration"
 msgstr ""
 
-#: aleksis/core/preferences.py:460
+#: aleksis/core/preferences.py:461
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/preferences.py:470
+#: aleksis/core/preferences.py:471
 msgid "Automatically update the dashboard and its widgets"
 msgstr ""
 
-#: aleksis/core/preferences.py:480
+#: aleksis/core/preferences.py:481
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr ""
 
-#: aleksis/core/preferences.py:490
+#: aleksis/core/preferences.py:491
 msgid "Birthday calendar feed color"
 msgstr ""
 
-#: aleksis/core/preferences.py:502
+#: aleksis/core/preferences.py:503
 msgid "Holiday calendar feed color"
 msgstr ""
 
 #: aleksis/core/preferences.py:515
+msgid "Personal events feed color"
+msgstr ""
+
+#: aleksis/core/preferences.py:528
 msgid "Activated calendars"
 msgstr ""
 
-#: aleksis/core/settings.py:551
+#: aleksis/core/preferences.py:546
+msgid "Comma-separated list of disallowed usernames"
+msgstr ""
+
+#: aleksis/core/settings.py:548
 msgid "English"
 msgstr "Britannicus"
 
-#: aleksis/core/settings.py:552
+#: aleksis/core/settings.py:549
 msgid "German"
 msgstr "Germanus"
 
-#: aleksis/core/settings.py:553
+#: aleksis/core/settings.py:550
 msgid "Ukrainian"
 msgstr ""
 
-#: aleksis/core/tables.py:97 aleksis/core/tables.py:98
-#: aleksis/core/tables.py:112 aleksis/core/tables.py:128
-#: aleksis/core/tables.py:165
+#: aleksis/core/tables.py:96 aleksis/core/tables.py:112
+#: aleksis/core/tables.py:149
 #: aleksis/core/templates/core/announcement/list.html:42
 #: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
@@ -1373,7 +1408,7 @@ msgstr ""
 msgid "Delete"
 msgstr ""
 
-#: aleksis/core/tables.py:130 aleksis/core/tables.py:167
+#: aleksis/core/tables.py:114 aleksis/core/tables.py:151
 #: aleksis/core/templates/core/announcement/list.html:22
 #, fuzzy
 #| msgid "Notifications"
@@ -1477,8 +1512,8 @@ msgid "This e-mail confirmation link expired or is invalid. Please <a href=\"%(e
 msgstr ""
 
 #: aleksis/core/templates/account/password_change.html:5
-#: aleksis/core/templates/account/password_change.html:6
-#: aleksis/core/templates/account/password_change.html:19
+#: aleksis/core/templates/account/password_change.html:15
+#: aleksis/core/templates/account/password_change.html:28
 #: aleksis/core/templates/account/password_reset_from_key.html:5
 #: aleksis/core/templates/account/password_reset_from_key.html:42
 #: aleksis/core/templates/account/password_reset_from_key.html:46
@@ -1487,31 +1522,11 @@ msgstr ""
 msgid "Change password"
 msgstr ""
 
-#: aleksis/core/templates/account/password_change.html:12
-msgid "Forgot your current password? Click here to reset it:"
-msgstr ""
-
-#: aleksis/core/templates/account/password_change.html:12
-msgid "Forgot Password?"
-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 ""
-
-#: aleksis/core/templates/account/password_change_disabled.html:13
-msgid "Changing of password disabled."
-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"
-"          "
+#: aleksis/core/templates/account/password_change.html:19
+msgid "Forgot your current password?"
 msgstr ""
 
+#: aleksis/core/templates/account/password_change.html:20
 #: aleksis/core/templates/account/password_reset.html:5
 #: aleksis/core/templates/account/password_reset.html:15
 #: aleksis/core/templates/account/password_reset.html:23
@@ -1654,19 +1669,6 @@ msgid ""
 "          "
 msgstr ""
 
-#: aleksis/core/templates/core/additional_field/edit.html:6
-#: aleksis/core/templates/core/additional_field/edit.html:7
-#, fuzzy
-#| msgid "Additional name(s)"
-msgid "Edit additional field"
-msgstr "addita nomines"
-
-#: aleksis/core/templates/core/additional_field/list.html:14
-#, fuzzy
-#| msgid "Additional name(s)"
-msgid "Create additional field"
-msgstr "addita nomines"
-
 #: aleksis/core/templates/core/announcement/form.html:14
 #: aleksis/core/templates/core/announcement/form.html:21
 #, fuzzy
@@ -3006,15 +3008,6 @@ msgid ""
 "        "
 msgstr ""
 
-#: aleksis/core/templates/two_factor/core/setup.html:83
-msgid ""
-"\n"
-"        To identify and verify your YubiKey, please insert a\n"
-"        token in the field below. Your YubiKey will be linked to your\n"
-"        account.\n"
-"      "
-msgstr ""
-
 #: 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"
@@ -3063,11 +3056,15 @@ msgstr ""
 msgid "Disable"
 msgstr ""
 
-#: aleksis/core/util/notifications.py:64
+#: aleksis/core/util/auth_helpers.py:155
+msgid "This username is not allowed."
+msgstr ""
+
+#: aleksis/core/util/notifications.py:67
 msgid "E-Mail"
 msgstr ""
 
-#: aleksis/core/util/notifications.py:65
+#: aleksis/core/util/notifications.py:68
 msgid "SMS"
 msgstr ""
 
@@ -3091,156 +3088,185 @@ msgstr ""
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:371
+#: aleksis/core/views.py:354
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:390 aleksis/core/views.py:400
+#: aleksis/core/views.py:373 aleksis/core/views.py:383
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:450
+#: aleksis/core/views.py:432
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:498
+#: aleksis/core/views.py:480
 msgid "Maintenance mode was turned on successfully."
 msgstr ""
 
-#: aleksis/core/views.py:500
+#: aleksis/core/views.py:482
 msgid "Maintenance mode was turned off successfully."
 msgstr ""
 
-#: aleksis/core/views.py:558
+#: aleksis/core/views.py:539
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:574
+#: aleksis/core/views.py:555
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:643
+#: aleksis/core/views.py:624
 msgid "The requested preference registry does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:662
+#: aleksis/core/views.py:643
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:686
+#: aleksis/core/views.py:667
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:700
+#: aleksis/core/views.py:681
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:732
-#, fuzzy
-#| msgid "Additional name(s)"
-msgid "The additional field has been saved."
-msgstr "addita nomines"
-
-#: aleksis/core/views.py:767
-msgid "The additional field has been deleted."
-msgstr ""
-
-#: aleksis/core/views.py:792
+#: aleksis/core/views.py:705
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:823
+#: aleksis/core/views.py:736
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:858
+#: aleksis/core/views.py:771
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:859
+#: aleksis/core/views.py:772
 #, fuzzy
 #| msgid "System status"
 msgid "Run data checks …"
 msgstr "Status systemae"
 
-#: aleksis/core/views.py:860
+#: aleksis/core/views.py:773
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:861
+#: aleksis/core/views.py:774
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:878
+#: aleksis/core/views.py:791
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:888
+#: aleksis/core/views.py:801
 msgid "The requested solve option does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:921
+#: aleksis/core/views.py:834
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:951
+#: aleksis/core/views.py:864
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:961
+#: aleksis/core/views.py:874
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1033
+#: aleksis/core/views.py:946
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1035
+#: aleksis/core/views.py:948
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1106
+#: aleksis/core/views.py:1019
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr ""
 
-#: aleksis/core/views.py:1203
+#: aleksis/core/views.py:1116
 msgid "We have successfully assigned the permissions."
 msgstr ""
 
-#: aleksis/core/views.py:1213
+#: aleksis/core/views.py:1126
 msgid "The global user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1223
+#: aleksis/core/views.py:1136
 msgid "The global group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1233
+#: aleksis/core/views.py:1146
 msgid "The object user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1243
+#: aleksis/core/views.py:1156
 msgid "The object group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1352
+#: aleksis/core/views.py:1238
+msgid "We sent you an email with instructions for resetting your password."
+msgstr ""
+
+#: aleksis/core/views.py:1262
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1359
+#: aleksis/core/views.py:1269
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
-#: aleksis/core/views.py:1435
+#: aleksis/core/views.py:1345
 msgid "Person was invited successfully and an email with further instructions has been send to them."
 msgstr ""
 
-#: aleksis/core/views.py:1446
+#: aleksis/core/views.py:1356
 msgid "Person was already invited."
 msgstr ""
 
+#, fuzzy
+#~| msgid "Site description"
+#~ msgid "Help text / description"
+#~ msgstr "Descriptio paginae"
+
+#, fuzzy
+#~| msgid "Additional name(s)"
+#~ msgid "Addtitional field for groups"
+#~ msgstr "addita nomines"
+
+#, fuzzy
+#~| msgid "Additional name(s)"
+#~ msgid "Addtitional fields for groups"
+#~ msgstr "addita nomines"
+
+#, fuzzy
+#~| msgid "Additional name(s)"
+#~ msgid "Additional fields"
+#~ msgstr "addita nomines"
+
+#, fuzzy
+#~| msgid "Additional name(s)"
+#~ msgid "Edit additional field"
+#~ msgstr "addita nomines"
+
+#, fuzzy
+#~| msgid "Additional name(s)"
+#~ msgid "Create additional field"
+#~ msgstr "addita nomines"
+
+#, fuzzy
+#~| msgid "Additional name(s)"
+#~ msgid "The additional field has been saved."
+#~ msgstr "addita nomines"
+
 #, fuzzy
 #~| msgid "Edit school term"
 #~ msgid "Create school term"
diff --git a/aleksis/core/locale/nb_NO/LC_MESSAGES/django.po b/aleksis/core/locale/nb_NO/LC_MESSAGES/django.po
index 7a97f88fbc6d45c07ee2ca84806b8fcf28a4ef53..7086410cc9d1bfb5e5f58f200a42ced23e8db67d 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: 2023-07-23 13:39+0200\n"
+"POT-Creation-Date: 2024-01-26 21:43+0100\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"
@@ -17,111 +17,130 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: aleksis/core/apps.py:151
+#: aleksis/core/apps.py:162
 msgid "You have been logged out successfully."
 msgstr ""
 
-#: aleksis/core/apps.py:161
+#: aleksis/core/apps.py:172
 msgid "OpenID Connect scope"
 msgstr ""
 
-#: aleksis/core/apps.py:162
+#: aleksis/core/apps.py:173
 msgid "Given name, family name, link to profile and picture if existing."
 msgstr ""
 
-#: aleksis/core/apps.py:163
+#: aleksis/core/apps.py:174
 msgid "Full home postal address"
 msgstr ""
 
-#: aleksis/core/apps.py:164
+#: aleksis/core/apps.py:175
 msgid "Email address"
 msgstr ""
 
-#: aleksis/core/apps.py:165
+#: aleksis/core/apps.py:176
 msgid "Home and mobile phone"
 msgstr ""
 
-#: aleksis/core/apps.py:166 aleksis/core/forms.py:231
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/apps.py:177 aleksis/core/forms.py:223
+#: aleksis/core/models.py:473 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 msgid "Groups"
 msgstr ""
 
-#: aleksis/core/data_checks.py:60
+#: aleksis/core/data_checks.py:67
 msgid "Ignore problem"
 msgstr ""
 
-#: aleksis/core/data_checks.py:188
+#: aleksis/core/data_checks.py:199
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/data_checks.py:284
+#: aleksis/core/data_checks.py:329
 msgid "Deactivate DashboardWidget"
 msgstr ""
 
-#: aleksis/core/data_checks.py:296
+#: aleksis/core/data_checks.py:341
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr ""
 
-#: aleksis/core/data_checks.py:297
+#: aleksis/core/data_checks.py:342
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
-#: aleksis/core/data_checks.py:320
-#, python-format
-msgid "Validate field %s of model %s."
+#: aleksis/core/data_checks.py:364
+#, python-brace-format
+msgid "Validate field {field} of model {model}."
 msgstr ""
 
-#: aleksis/core/data_checks.py:322
-#, python-format
-msgid "The field %s couldn't be validated successfully."
+#: aleksis/core/data_checks.py:367
+msgid "The field {} couldn't be validated successfully."
+msgstr ""
+
+#: aleksis/core/data_checks.py:389
+msgid "Ensure that there are no disallowed usernames."
+msgstr ""
+
+#: aleksis/core/data_checks.py:390
+msgid "A user with a disallowed username was reported automatically."
 msgstr ""
 
-#: aleksis/core/filters.py:42 aleksis/core/templates/core/group/list.html:20
+#: aleksis/core/data_checks.py:411
+msgid "Change email address"
+msgstr ""
+
+#: aleksis/core/data_checks.py:416
+msgid "Ensure that email addresses are unique among all persons"
+msgstr ""
+
+#: aleksis/core/data_checks.py:417
+msgid "There was a non-unique email address."
+msgstr ""
+
+#: aleksis/core/filters.py:39 aleksis/core/templates/core/group/list.html:20
 #: aleksis/core/templates/core/person/list.html:24
 #: aleksis/core/templates/search/search.html:7
 #: aleksis/core/templates/search/search.html:22
 msgid "Search"
 msgstr ""
 
-#: aleksis/core/filters.py:59
+#: aleksis/core/filters.py:56
 msgid "Search by name"
 msgstr ""
 
-#: aleksis/core/filters.py:71
+#: aleksis/core/filters.py:68
 msgid "Search by contact details"
 msgstr ""
 
-#: aleksis/core/filters.py:92
+#: aleksis/core/filters.py:89
 msgid "Permission"
 msgstr ""
 
-#: aleksis/core/filters.py:100
+#: aleksis/core/filters.py:97
 msgid "Content type"
 msgstr ""
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:743
+#: aleksis/core/filters.py:110 aleksis/core/models.py:647
 msgid "User"
 msgstr ""
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:516
+#: aleksis/core/filters.py:132 aleksis/core/models.py:472
 msgid "Group"
 msgstr ""
 
-#: aleksis/core/forms.py:50 aleksis/core/forms.py:591
+#: aleksis/core/forms.py:48 aleksis/core/forms.py:574
 msgid "Base data"
 msgstr ""
 
-#: aleksis/core/forms.py:55 aleksis/core/tables.py:29
+#: aleksis/core/forms.py:53 aleksis/core/tables.py:29
 msgid "Address"
 msgstr ""
 
-#: aleksis/core/forms.py:56 aleksis/core/forms.py:600
+#: aleksis/core/forms.py:54 aleksis/core/forms.py:583
 msgid "Contact data"
 msgstr ""
 
-#: aleksis/core/forms.py:58
+#: aleksis/core/forms.py:56
 msgid "Advanced personal data"
 msgstr ""
 
@@ -141,7 +160,7 @@ msgstr ""
 msgid "This username is already in use."
 msgstr ""
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:154
+#: aleksis/core/forms.py:153 aleksis/core/models.py:147
 msgid "School term"
 msgstr ""
 
@@ -149,124 +168,124 @@ msgstr ""
 msgid "Common data"
 msgstr ""
 
-#: aleksis/core/forms.py:155 aleksis/core/forms.py:218
-#: aleksis/core/models.py:177 aleksis/core/templates/core/person/list.html:8
+#: aleksis/core/forms.py:155 aleksis/core/forms.py:210
+#: aleksis/core/models.py:168 aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
 msgstr ""
 
-#: aleksis/core/forms.py:156 aleksis/core/forms.py:602
-msgid "Additional data"
-msgstr ""
-
-#: aleksis/core/forms.py:157 aleksis/core/models.py:230
-#: aleksis/core/models.py:569 aleksis/core/tables.py:28
+#: aleksis/core/forms.py:156 aleksis/core/models.py:224
+#: aleksis/core/models.py:526 aleksis/core/tables.py:28
 msgid "Photo"
 msgstr ""
 
-#: aleksis/core/forms.py:210 aleksis/core/forms.py:213
-#: aleksis/core/models.py:97
+#: aleksis/core/forms.py:202 aleksis/core/forms.py:205
+#: aleksis/core/models.py:90
 msgid "Date"
 msgstr ""
 
-#: aleksis/core/forms.py:211 aleksis/core/forms.py:214
-#: aleksis/core/models.py:105
+#: aleksis/core/forms.py:203 aleksis/core/forms.py:206
+#: aleksis/core/models.py:98
 msgid "Time"
 msgstr ""
 
-#: aleksis/core/forms.py:244
+#: aleksis/core/forms.py:236
 msgid "From when until when should the announcement be displayed?"
 msgstr ""
 
-#: aleksis/core/forms.py:247
+#: aleksis/core/forms.py:239
 msgid "Who should see the announcement?"
 msgstr ""
 
-#: aleksis/core/forms.py:248
+#: aleksis/core/forms.py:240
 msgid "Write your announcement:"
 msgstr ""
 
-#: aleksis/core/forms.py:287
+#: aleksis/core/forms.py:279
 msgid "You are not allowed to create announcements which are only valid in the past."
 msgstr ""
 
-#: aleksis/core/forms.py:291
+#: aleksis/core/forms.py:283
 msgid "The from date and time must be earlier then the until date and time."
 msgstr ""
 
-#: aleksis/core/forms.py:300
+#: aleksis/core/forms.py:292
 msgid "You need at least one recipient."
 msgstr ""
 
-#: aleksis/core/forms.py:408
+#: aleksis/core/forms.py:392
 msgid "Invitation code"
 msgstr ""
 
-#: aleksis/core/forms.py:409
+#: aleksis/core/forms.py:393
 msgid "Please enter your invitation code."
 msgstr ""
 
-#: aleksis/core/forms.py:428 aleksis/core/models.py:205
+#: aleksis/core/forms.py:412 aleksis/core/models.py:197
 msgid "First name"
 msgstr ""
 
-#: aleksis/core/forms.py:429 aleksis/core/models.py:206
+#: aleksis/core/forms.py:413 aleksis/core/models.py:198
 msgid "Last name"
 msgstr ""
 
-#: aleksis/core/forms.py:438
+#: aleksis/core/forms.py:422
 msgid "A person is using this e-mail address"
 msgstr ""
 
-#: aleksis/core/forms.py:466
+#: aleksis/core/forms.py:450
 msgid "Who should get the permission?"
 msgstr ""
 
-#: aleksis/core/forms.py:467
+#: aleksis/core/forms.py:451
 msgid "On what?"
 msgstr ""
 
-#: aleksis/core/forms.py:493
+#: aleksis/core/forms.py:477
 msgid "Select objects which the permission should be granted for:"
 msgstr ""
 
-#: aleksis/core/forms.py:496
+#: aleksis/core/forms.py:480
 msgid "Grant the permission for all objects"
 msgstr ""
 
-#: aleksis/core/forms.py:504
+#: aleksis/core/forms.py:488
 msgid "You must select at least one group or person which should get the permission."
 msgstr ""
 
-#: aleksis/core/forms.py:509
+#: aleksis/core/forms.py:493
 msgid "You must grant the permission to all objects or to specific objects."
 msgstr ""
 
-#: aleksis/core/forms.py:596
+#: aleksis/core/forms.py:579
 msgid "Address data"
 msgstr ""
 
-#: aleksis/core/forms.py:608
+#: aleksis/core/forms.py:585
+msgid "Additional data"
+msgstr ""
+
+#: aleksis/core/forms.py:591
 msgid "Account data"
 msgstr ""
 
-#: aleksis/core/forms.py:615
+#: aleksis/core/forms.py:598
 msgid "Password"
 msgstr ""
 
-#: aleksis/core/forms.py:618
+#: aleksis/core/forms.py:601
 msgid "Password (again)"
 msgstr ""
 
-#: aleksis/core/forms.py:771
+#: aleksis/core/forms.py:753
 msgid "The selected action does not exist."
 msgstr ""
 
-#: aleksis/core/forms.py:782
+#: aleksis/core/forms.py:764
 msgid "You do not have permission to run {} on all selected objects."
 msgstr ""
 
-#: aleksis/core/forms.py:838
+#: aleksis/core/forms.py:820
 msgid "No valid selection."
 msgstr ""
 
@@ -290,943 +309,953 @@ msgstr ""
 msgid "No backup result found!"
 msgstr ""
 
-#: aleksis/core/mixins.py:539
+#: aleksis/core/mixins.py:446
 msgid "Linked school term"
 msgstr ""
 
-#: aleksis/core/models.py:95
+#: aleksis/core/models.py:88
 msgid "Boolean (Yes/No)"
 msgstr ""
 
-#: aleksis/core/models.py:96
+#: aleksis/core/models.py:89
 msgid "Text (one line)"
 msgstr ""
 
-#: aleksis/core/models.py:98
+#: aleksis/core/models.py:91
 msgid "Date and time"
 msgstr ""
 
-#: aleksis/core/models.py:99
+#: aleksis/core/models.py:92
 msgid "Decimal number"
 msgstr ""
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:223
+#: aleksis/core/models.py:93 aleksis/core/models.py:217
 msgid "E-mail address"
 msgstr ""
 
-#: aleksis/core/models.py:101
+#: aleksis/core/models.py:94
 msgid "Integer"
 msgstr ""
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:95
 msgid "IP address"
 msgstr ""
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:96
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr ""
 
-#: aleksis/core/models.py:104
+#: aleksis/core/models.py:97
 msgid "Text (multi-line)"
 msgstr ""
 
-#: aleksis/core/models.py:106
+#: aleksis/core/models.py:99
 msgid "URL / Link"
 msgstr ""
 
-#: aleksis/core/models.py:118 aleksis/core/models.py:1100
-#: aleksis/core/models.py:1729
+#: aleksis/core/models.py:111 aleksis/core/models.py:1004
+#: aleksis/core/models.py:1667 aleksis/core/models.py:1806
 msgid "Name"
 msgstr ""
 
-#: aleksis/core/models.py:120 aleksis/core/models.py:1532
+#: aleksis/core/models.py:113 aleksis/core/models.py:1428
 msgid "Start date"
 msgstr ""
 
-#: aleksis/core/models.py:121 aleksis/core/models.py:1533
+#: aleksis/core/models.py:114 aleksis/core/models.py:1429
 msgid "End date"
 msgstr ""
 
-#: aleksis/core/models.py:140 aleksis/core/schema/school_term.py:48
+#: aleksis/core/models.py:133 aleksis/core/schema/school_term.py:50
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: aleksis/core/models.py:147 aleksis/core/schema/school_term.py:53
+#: aleksis/core/models.py:140 aleksis/core/schema/school_term.py:55
 msgid "There is already a school term for this time or a part of this time."
 msgstr ""
 
-#: aleksis/core/models.py:155
+#: aleksis/core/models.py:148
 msgid "School terms"
 msgstr ""
 
-#: aleksis/core/models.py:176 aleksis/core/models.py:1049
+#: aleksis/core/models.py:167 aleksis/core/models.py:953
 msgid "Person"
 msgstr ""
 
-#: aleksis/core/models.py:179
+#: aleksis/core/models.py:170
 msgid "Can view address"
 msgstr ""
 
-#: aleksis/core/models.py:180
+#: aleksis/core/models.py:171
 msgid "Can view contact details"
 msgstr ""
 
-#: aleksis/core/models.py:181
+#: aleksis/core/models.py:172
 msgid "Can view photo"
 msgstr ""
 
-#: aleksis/core/models.py:182
+#: aleksis/core/models.py:173
 msgid "Can view avatar image"
 msgstr ""
 
-#: aleksis/core/models.py:183
+#: aleksis/core/models.py:174
 msgid "Can view persons groups"
 msgstr ""
 
-#: aleksis/core/models.py:184
+#: aleksis/core/models.py:175
 msgid "Can view personal details"
 msgstr ""
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "female"
 msgstr ""
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "male"
 msgstr ""
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "other"
 msgstr ""
 
-#: aleksis/core/models.py:202 aleksis/core/models.py:1404
+#: aleksis/core/models.py:194 aleksis/core/models.py:1296
 msgid "Linked user"
 msgstr ""
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:200
 msgid "Additional name(s)"
 msgstr ""
 
-#: aleksis/core/models.py:212 aleksis/core/models.py:534
-#: aleksis/core/models.py:1490
+#: aleksis/core/models.py:204 aleksis/core/models.py:491
+#: aleksis/core/models.py:1388
 msgid "Short name"
 msgstr ""
 
-#: aleksis/core/models.py:215
+#: aleksis/core/models.py:209
 msgid "Street"
 msgstr ""
 
-#: aleksis/core/models.py:216
+#: aleksis/core/models.py:210
 msgid "Street number"
 msgstr ""
 
-#: aleksis/core/models.py:217
+#: aleksis/core/models.py:211
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/core/models.py:218
+#: aleksis/core/models.py:212
 msgid "Place"
 msgstr ""
 
-#: aleksis/core/models.py:220
+#: aleksis/core/models.py:214
 msgid "Home phone"
 msgstr ""
 
-#: aleksis/core/models.py:221
+#: aleksis/core/models.py:215
 msgid "Mobile phone"
 msgstr ""
 
-#: aleksis/core/models.py:225
+#: aleksis/core/models.py:219
 msgid "Date of birth"
 msgstr ""
 
-#: aleksis/core/models.py:226
+#: aleksis/core/models.py:220
 msgid "Place of birth"
 msgstr ""
 
-#: aleksis/core/models.py:227
+#: aleksis/core/models.py:221
 msgid "Sex"
 msgstr ""
 
-#: aleksis/core/models.py:234 aleksis/core/models.py:573
+#: aleksis/core/models.py:228 aleksis/core/models.py:530
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr ""
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:577
+#: aleksis/core/models.py:233 aleksis/core/models.py:534
 msgid "Display picture / Avatar"
 msgstr ""
 
-#: aleksis/core/models.py:242 aleksis/core/models.py:580
+#: aleksis/core/models.py:236 aleksis/core/models.py:537
 msgid "This is a picture or an avatar for public display."
 msgstr ""
 
-#: aleksis/core/models.py:247
+#: aleksis/core/models.py:241
 msgid "Guardians / Parents"
 msgstr ""
 
-#: aleksis/core/models.py:254
+#: aleksis/core/models.py:248
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/core/models.py:257 aleksis/core/models.py:747
-#: aleksis/core/models.py:771 aleksis/core/models.py:866
-#: aleksis/core/models.py:1135
+#: aleksis/core/models.py:251 aleksis/core/models.py:651
+#: aleksis/core/models.py:675 aleksis/core/models.py:770
+#: aleksis/core/models.py:1038 aleksis/core/models.py:1723
 msgid "Description"
 msgstr ""
 
-#: aleksis/core/models.py:487
-msgid "Title of field"
-msgstr ""
-
-#: aleksis/core/models.py:489
-msgid "Type of field"
-msgstr ""
-
-#: aleksis/core/models.py:491
-msgid "Required"
-msgstr ""
-
-#: aleksis/core/models.py:492
-msgid "Help text / description"
-msgstr ""
-
-#: aleksis/core/models.py:498
-msgid "Addtitional field for groups"
-msgstr ""
-
-#: aleksis/core/models.py:499
-msgid "Addtitional fields for groups"
-msgstr ""
-
-#: aleksis/core/models.py:519
+#: aleksis/core/models.py:475
 msgid "Can assign child groups to groups"
 msgstr ""
 
-#: aleksis/core/models.py:520
+#: aleksis/core/models.py:476
 msgid "Can view statistics about group."
 msgstr ""
 
-#: aleksis/core/models.py:532 aleksis/core/models.py:1491
+#: aleksis/core/models.py:489 aleksis/core/models.py:1389
 msgid "Long name"
 msgstr ""
 
-#: aleksis/core/models.py:542 aleksis/core/templates/core/group/full.html:105
+#: aleksis/core/models.py:502 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr ""
 
-#: aleksis/core/models.py:545 aleksis/core/templates/core/group/full.html:102
+#: aleksis/core/models.py:505 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr ""
 
-#: aleksis/core/models.py:552 aleksis/core/templates/core/group/full.html:59
+#: aleksis/core/models.py:512 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr ""
 
-#: aleksis/core/models.py:560
+#: aleksis/core/models.py:520
 msgid "Type of group"
 msgstr ""
 
-#: aleksis/core/models.py:565
-#: aleksis/core/templates/core/additional_field/list.html:8
-#: aleksis/core/templates/core/additional_field/list.html:9
-msgid "Additional fields"
-msgstr ""
-
-#: aleksis/core/models.py:746 aleksis/core/models.py:770
-#: aleksis/core/models.py:865 aleksis/core/models.py:1321
+#: aleksis/core/models.py:650 aleksis/core/models.py:674
+#: aleksis/core/models.py:769 aleksis/core/models.py:1213
+#: aleksis/core/models.py:1722
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr ""
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:653
 msgid "Application"
 msgstr ""
 
-#: aleksis/core/models.py:755
+#: aleksis/core/models.py:659
 msgid "Activity"
 msgstr ""
 
-#: aleksis/core/models.py:756
+#: aleksis/core/models.py:660
 msgid "Activities"
 msgstr ""
 
-#: aleksis/core/models.py:762
+#: aleksis/core/models.py:666
 msgid "Sender"
 msgstr ""
 
-#: aleksis/core/models.py:767
+#: aleksis/core/models.py:671
 msgid "Recipient"
 msgstr ""
 
-#: aleksis/core/models.py:772 aleksis/core/models.py:1101
+#: aleksis/core/models.py:676 aleksis/core/models.py:1005
 msgid "Link"
 msgstr ""
 
-#: aleksis/core/models.py:775 aleksis/core/models.py:1102
-#: aleksis/core/models.py:1451
+#: aleksis/core/models.py:679 aleksis/core/models.py:1006
+#: aleksis/core/models.py:1346
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr ""
 
-#: aleksis/core/models.py:778
+#: aleksis/core/models.py:682
 msgid "Send notification at"
 msgstr ""
 
-#: aleksis/core/models.py:780
+#: aleksis/core/models.py:684
 msgid "Read"
 msgstr ""
 
-#: aleksis/core/models.py:781
+#: aleksis/core/models.py:685
 msgid "Sent"
 msgstr ""
 
-#: aleksis/core/models.py:798
+#: aleksis/core/models.py:702
 msgid "Notification"
 msgstr ""
 
-#: aleksis/core/models.py:799 aleksis/core/preferences.py:28
+#: aleksis/core/models.py:703 aleksis/core/preferences.py:29
 msgid "Notifications"
 msgstr ""
 
-#: aleksis/core/models.py:867
+#: aleksis/core/models.py:771
 msgid "Link to detailed view"
 msgstr ""
 
-#: aleksis/core/models.py:870
+#: aleksis/core/models.py:774
 msgid "Date and time from when to show"
 msgstr ""
 
-#: aleksis/core/models.py:873
+#: aleksis/core/models.py:777
 msgid "Date and time until when to show"
 msgstr ""
 
-#: aleksis/core/models.py:898
+#: aleksis/core/models.py:802
 msgid "Announcement"
 msgstr ""
 
-#: aleksis/core/models.py:899
+#: aleksis/core/models.py:803
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr ""
 
-#: aleksis/core/models.py:936
+#: aleksis/core/models.py:840
 msgid "Announcement recipient"
 msgstr ""
 
-#: aleksis/core/models.py:937
+#: aleksis/core/models.py:841
 msgid "Announcement recipients"
 msgstr ""
 
-#: aleksis/core/models.py:957
+#: aleksis/core/models.py:861
 msgid "Widget Title"
 msgstr ""
 
-#: aleksis/core/models.py:958
+#: aleksis/core/models.py:862
 msgid "Activate Widget"
 msgstr ""
 
-#: aleksis/core/models.py:959
+#: aleksis/core/models.py:863
 msgid "Widget is broken"
 msgstr ""
 
-#: aleksis/core/models.py:962
+#: aleksis/core/models.py:866
 msgid "Size on mobile devices"
 msgstr ""
 
-#: aleksis/core/models.py:963
+#: aleksis/core/models.py:867
 msgid "<= 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:968
+#: aleksis/core/models.py:872
 msgid "Size on tablet devices"
 msgstr ""
 
-#: aleksis/core/models.py:969
+#: aleksis/core/models.py:873
 msgid "> 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:974
+#: aleksis/core/models.py:878
 msgid "Size on desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:975
+#: aleksis/core/models.py:879
 msgid "> 992 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:980
+#: aleksis/core/models.py:884
 msgid "Size on large desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:981
+#: aleksis/core/models.py:885
 msgid "> 1200 px>, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:1012
+#: aleksis/core/models.py:916
 msgid "Can edit default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1013
+#: aleksis/core/models.py:917
 msgid "Dashboard Widget"
 msgstr ""
 
-#: aleksis/core/models.py:1014
+#: aleksis/core/models.py:918
 msgid "Dashboard Widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1020
+#: aleksis/core/models.py:924
 msgid "URL"
 msgstr ""
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:925
 msgid "Icon URL"
 msgstr ""
 
-#: aleksis/core/models.py:1027
+#: aleksis/core/models.py:931
 msgid "External link widget"
 msgstr ""
 
-#: aleksis/core/models.py:1028
+#: aleksis/core/models.py:932
 msgid "External link widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1034
+#: aleksis/core/models.py:938
 msgid "Content"
 msgstr ""
 
-#: aleksis/core/models.py:1040
+#: aleksis/core/models.py:944
 msgid "Static content widget"
 msgstr ""
 
-#: aleksis/core/models.py:1041
+#: aleksis/core/models.py:945
 msgid "Static content widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1046
+#: aleksis/core/models.py:950
 msgid "Dashboard widget"
 msgstr ""
 
-#: aleksis/core/models.py:1051
+#: aleksis/core/models.py:955
 msgid "Order"
 msgstr ""
 
-#: aleksis/core/models.py:1052
+#: aleksis/core/models.py:956
 msgid "Part of the default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1067
+#: aleksis/core/models.py:971
 msgid "Dashboard widget order"
 msgstr ""
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:972
 msgid "Dashboard widget orders"
 msgstr ""
 
-#: aleksis/core/models.py:1074
+#: aleksis/core/models.py:978
 msgid "Menu ID"
 msgstr ""
 
-#: aleksis/core/models.py:1087
+#: aleksis/core/models.py:991
 msgid "Custom menu"
 msgstr ""
 
-#: aleksis/core/models.py:1088
+#: aleksis/core/models.py:992
 msgid "Custom menus"
 msgstr ""
 
-#: aleksis/core/models.py:1098
+#: aleksis/core/models.py:1002
 msgid "Menu"
 msgstr ""
 
-#: aleksis/core/models.py:1108
+#: aleksis/core/models.py:1012
 msgid "Custom menu item"
 msgstr ""
 
-#: aleksis/core/models.py:1109
+#: aleksis/core/models.py:1013
 msgid "Custom menu items"
 msgstr ""
 
-#: aleksis/core/models.py:1134
+#: aleksis/core/models.py:1037
 msgid "Title of type"
 msgstr ""
 
-#: aleksis/core/models.py:1141 aleksis/core/templates/core/group/full.html:50
+#: aleksis/core/models.py:1044 aleksis/core/templates/core/group/full.html:50
 msgid "Group type"
 msgstr ""
 
-#: aleksis/core/models.py:1142
+#: aleksis/core/models.py:1045
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
 msgstr ""
 
-#: aleksis/core/models.py:1155
+#: aleksis/core/models.py:1056
 msgid "Can view system status"
 msgstr ""
 
-#: aleksis/core/models.py:1156
+#: aleksis/core/models.py:1057
 msgid "Can manage data"
 msgstr ""
 
-#: aleksis/core/models.py:1157
+#: aleksis/core/models.py:1058
 msgid "Can impersonate"
 msgstr ""
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1059
 msgid "Can use search"
 msgstr ""
 
-#: aleksis/core/models.py:1159
+#: aleksis/core/models.py:1060
 msgid "Can change site preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1160
+#: aleksis/core/models.py:1061
 msgid "Can change person preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1161
+#: aleksis/core/models.py:1062
 msgid "Can change group preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1162
+#: aleksis/core/models.py:1063
 msgid "Can test PDF generation"
 msgstr ""
 
-#: aleksis/core/models.py:1163
+#: aleksis/core/models.py:1064
 msgid "Can invite persons"
 msgstr ""
 
-#: aleksis/core/models.py:1199
+#: aleksis/core/models.py:1065
+msgid "Can view birthday calendar"
+msgstr ""
+
+#: aleksis/core/models.py:1092
 msgid "Related data check task"
 msgstr ""
 
-#: aleksis/core/models.py:1207
+#: aleksis/core/models.py:1100
 msgid "Issue solved"
 msgstr ""
 
-#: aleksis/core/models.py:1208
+#: aleksis/core/models.py:1101
 msgid "Notification sent"
 msgstr ""
 
-#: aleksis/core/models.py:1221
+#: aleksis/core/models.py:1114
 msgid "Data check result"
 msgstr ""
 
-#: aleksis/core/models.py:1222
+#: aleksis/core/models.py:1115
 msgid "Data check results"
 msgstr ""
 
-#: aleksis/core/models.py:1224
+#: aleksis/core/models.py:1117
 msgid "Can run data checks"
 msgstr ""
 
-#: aleksis/core/models.py:1225
+#: aleksis/core/models.py:1118
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1232
+#: aleksis/core/models.py:1125
 msgid "E-Mail address"
 msgstr ""
 
-#: aleksis/core/models.py:1292
+#: aleksis/core/models.py:1184 aleksis/core/models.py:1730
 msgid "Owner"
 msgstr ""
 
-#: aleksis/core/models.py:1296
+#: aleksis/core/models.py:1188
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1299
+#: aleksis/core/models.py:1191
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1302
+#: aleksis/core/models.py:1194
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1309
+#: aleksis/core/models.py:1201
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1310
+#: aleksis/core/models.py:1202
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1315
+#: aleksis/core/models.py:1207
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1318
+#: aleksis/core/models.py:1210
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1322
+#: aleksis/core/models.py:1214
 msgid "Back URL"
 msgstr ""
 
-#: aleksis/core/models.py:1323
+#: aleksis/core/models.py:1215
 msgid "Progress title"
 msgstr ""
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1216
 msgid "Error message"
 msgstr ""
 
-#: aleksis/core/models.py:1325
+#: aleksis/core/models.py:1217
 msgid "Success message"
 msgstr ""
 
-#: aleksis/core/models.py:1326
+#: aleksis/core/models.py:1218
 msgid "Redirect on success URL"
 msgstr ""
 
-#: aleksis/core/models.py:1328
+#: aleksis/core/models.py:1220
 msgid "Additional button title"
 msgstr ""
 
-#: aleksis/core/models.py:1330
+#: aleksis/core/models.py:1222
 msgid "Additional button URL"
 msgstr ""
 
-#: aleksis/core/models.py:1332
+#: aleksis/core/models.py:1224
 msgid "Additional button icon"
 msgstr ""
 
-#: aleksis/core/models.py:1334
+#: aleksis/core/models.py:1226
 msgid "Result fetched"
 msgstr ""
 
-#: aleksis/core/models.py:1359
+#: aleksis/core/models.py:1251
 msgid "Background task completed successfully"
 msgstr ""
 
-#: aleksis/core/models.py:1360
+#: aleksis/core/models.py:1252
 msgid "The background task '{}' has been completed successfully."
 msgstr ""
 
-#: aleksis/core/models.py:1366
+#: aleksis/core/models.py:1258
 msgid "Background task failed"
 msgstr ""
 
-#: aleksis/core/models.py:1367
+#: aleksis/core/models.py:1259
 msgid "The background task '{}' has failed."
 msgstr ""
 
-#: aleksis/core/models.py:1376
+#: aleksis/core/models.py:1268
 msgid "Background task"
 msgstr ""
 
-#: aleksis/core/models.py:1390
+#: aleksis/core/models.py:1282
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1391
+#: aleksis/core/models.py:1283
 msgid "Task user assignments"
 msgstr ""
 
-#: aleksis/core/models.py:1407
+#: aleksis/core/models.py:1299
 msgid "Additional attributes"
 msgstr ""
 
-#: aleksis/core/models.py:1445
+#: aleksis/core/models.py:1340
 msgid "Allowed scopes that clients can request"
 msgstr ""
 
-#: aleksis/core/models.py:1455
+#: aleksis/core/models.py:1350
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr ""
 
-#: aleksis/core/models.py:1500
+#: aleksis/core/models.py:1398
 msgid "Can view room timetable"
 msgstr ""
 
-#: aleksis/core/models.py:1502
+#: aleksis/core/models.py:1400
 msgid "Room"
 msgstr ""
 
-#: aleksis/core/models.py:1503
+#: aleksis/core/models.py:1401
 msgid "Rooms"
 msgstr ""
 
-#: aleksis/core/models.py:1528
+#: aleksis/core/models.py:1424
 msgid "Start date and time"
 msgstr ""
 
-#: aleksis/core/models.py:1530
+#: aleksis/core/models.py:1426
 msgid "End date and time"
 msgstr ""
 
-#: aleksis/core/models.py:1531
+#: aleksis/core/models.py:1427
 msgid "Timezone"
 msgstr ""
 
-#: aleksis/core/models.py:1534
+#: aleksis/core/models.py:1430
 msgid "Recurrences"
 msgstr ""
 
-#: aleksis/core/models.py:1540
+#: aleksis/core/models.py:1436
 msgid "Amended base event"
 msgstr ""
 
-#: aleksis/core/models.py:1643
+#: aleksis/core/models.py:1561
 msgid "Calendar Event"
 msgstr ""
 
-#: aleksis/core/models.py:1644
+#: aleksis/core/models.py:1562
 msgid "Calendar Events"
 msgstr ""
 
-#: aleksis/core/models.py:1670
+#: aleksis/core/models.py:1592
 msgid "Birthdays"
 msgstr ""
 
-#: aleksis/core/models.py:1674
+#: aleksis/core/models.py:1597
 msgid "{}'s birthday"
 msgstr ""
 
-#: aleksis/core/models.py:1713 aleksis/core/models.py:1775
+#: aleksis/core/models.py:1648 aleksis/core/models.py:1714
 msgid "Holidays"
 msgstr ""
 
-#: aleksis/core/models.py:1774
+#: aleksis/core/models.py:1713
 msgid "Holiday"
 msgstr ""
 
-#: aleksis/core/preferences.py:24
-msgid "General"
+#: aleksis/core/models.py:1715
+msgid "Can view holiday calendar"
+msgstr ""
+
+#: aleksis/core/models.py:1720
+msgid "Personal events"
+msgstr ""
+
+#: aleksis/core/models.py:1724
+msgid "Location"
+msgstr ""
+
+#: aleksis/core/models.py:1807
+msgid "Email"
+msgstr ""
+
+#: aleksis/core/models.py:1810
+msgid "Related group"
+msgstr ""
+
+#: aleksis/core/models.py:1817
+msgid "Organisation"
+msgstr ""
+
+#: aleksis/core/models.py:1818
+msgid "Organisations"
 msgstr ""
 
 #: aleksis/core/preferences.py:25
-msgid "School"
+msgid "General"
 msgstr ""
 
 #: aleksis/core/preferences.py:26
-msgid "Theme"
+msgid "School"
 msgstr ""
 
 #: aleksis/core/preferences.py:27
+msgid "Theme"
+msgstr ""
+
+#: aleksis/core/preferences.py:28
 msgid "Mail"
 msgstr ""
 
-#: aleksis/core/preferences.py:29
+#: aleksis/core/preferences.py:30
 msgid "Footer"
 msgstr ""
 
-#: aleksis/core/preferences.py:30
+#: aleksis/core/preferences.py:31
 msgid "Accounts"
 msgstr ""
 
-#: aleksis/core/preferences.py:31
+#: aleksis/core/preferences.py:32
 msgid "Authentication"
 msgstr ""
 
-#: aleksis/core/preferences.py:32
+#: aleksis/core/preferences.py:33
 msgid "Internationalisation"
 msgstr ""
 
-#: aleksis/core/preferences.py:33
+#: aleksis/core/preferences.py:34
 msgid "Calendar"
 msgstr ""
 
-#: aleksis/core/preferences.py:43
+#: aleksis/core/preferences.py:44
 msgid "Site title"
 msgstr ""
 
-#: aleksis/core/preferences.py:55
+#: aleksis/core/preferences.py:56
 msgid "Site description"
 msgstr ""
 
-#: aleksis/core/preferences.py:65
+#: aleksis/core/preferences.py:66
 msgid "Primary colour"
 msgstr ""
 
-#: aleksis/core/preferences.py:77
+#: aleksis/core/preferences.py:78
 msgid "Secondary colour"
 msgstr ""
 
-#: aleksis/core/preferences.py:89
+#: aleksis/core/preferences.py:90
 msgid "Logo"
 msgstr ""
 
-#: aleksis/core/preferences.py:100
+#: aleksis/core/preferences.py:101
 msgid "Favicon"
 msgstr ""
 
-#: aleksis/core/preferences.py:111
+#: aleksis/core/preferences.py:112
 msgid "PWA-Icon"
 msgstr ""
 
-#: aleksis/core/preferences.py:121
+#: aleksis/core/preferences.py:122
 msgid "PWA-Icon is maskable"
 msgstr ""
 
-#: aleksis/core/preferences.py:133
+#: aleksis/core/preferences.py:134
 msgid "Mail out name"
 msgstr ""
 
-#: aleksis/core/preferences.py:144
+#: aleksis/core/preferences.py:145
 msgid "Mail out address"
 msgstr ""
 
-#: aleksis/core/preferences.py:157
+#: aleksis/core/preferences.py:158
 msgid "Link to privacy policy"
 msgstr ""
 
-#: aleksis/core/preferences.py:169
+#: aleksis/core/preferences.py:170
 msgid "Link to imprint"
 msgstr ""
 
-#: aleksis/core/preferences.py:180
+#: aleksis/core/preferences.py:181
 msgid "Name format for addressing"
 msgstr ""
 
-#: aleksis/core/preferences.py:197
+#: aleksis/core/preferences.py:198
 msgid "Channels to use for notifications"
 msgstr ""
 
-#: aleksis/core/preferences.py:208
+#: aleksis/core/preferences.py:209
 msgid "Select Design"
 msgstr ""
 
-#: aleksis/core/preferences.py:211
+#: aleksis/core/preferences.py:212
 msgid "Light mode"
 msgstr ""
 
-#: aleksis/core/preferences.py:224
+#: aleksis/core/preferences.py:225
 msgid "Regular expression to match primary group, e.g. '^Class .*'"
 msgstr ""
 
-#: aleksis/core/preferences.py:235
+#: aleksis/core/preferences.py:236
 msgid "Field on person to match primary group against"
 msgstr ""
 
-#: aleksis/core/preferences.py:247
+#: aleksis/core/preferences.py:248
 msgid "Automatically create new persons for new users"
 msgstr ""
 
-#: aleksis/core/preferences.py:256
+#: aleksis/core/preferences.py:257
 msgid "Automatically link existing persons to new users by their e-mail address"
 msgstr ""
 
-#: aleksis/core/preferences.py:267
+#: aleksis/core/preferences.py:268
 msgid "Display name of the school"
 msgstr ""
 
-#: aleksis/core/preferences.py:278
+#: aleksis/core/preferences.py:279
 msgid "Official name of the school, e.g. as given by supervisory authority"
 msgstr ""
 
-#: aleksis/core/preferences.py:286
+#: aleksis/core/preferences.py:287
 msgid "Allow users to change their passwords"
 msgstr ""
 
-#: aleksis/core/preferences.py:294
+#: aleksis/core/preferences.py:295
 msgid "Allow users to reset their passwords"
 msgstr ""
 
-#: aleksis/core/preferences.py:302
+#: aleksis/core/preferences.py:303
 msgid "Enable signup"
 msgstr ""
 
-#: aleksis/core/preferences.py:310
+#: aleksis/core/preferences.py:311
 msgid "Regular expression for allowed usernames"
 msgstr ""
 
-#: aleksis/core/preferences.py:318
+#: aleksis/core/preferences.py:319
 msgid "Enable invitations"
 msgstr ""
 
-#: aleksis/core/preferences.py:326
+#: aleksis/core/preferences.py:327
 msgid "Length of invite code. (Default 3: abcde-acbde-abcde)"
 msgstr ""
 
-#: aleksis/core/preferences.py:334
+#: aleksis/core/preferences.py:335
 msgid "Size of packets. (Default 5: abcde)"
 msgstr ""
 
-#: aleksis/core/preferences.py:345
+#: aleksis/core/preferences.py:346
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr ""
 
-#: aleksis/core/preferences.py:358
+#: aleksis/core/preferences.py:359
 msgid "Send emails if data checks detect problems"
 msgstr ""
 
-#: aleksis/core/preferences.py:369
+#: aleksis/core/preferences.py:370
 msgid "Email recipients for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:380
+#: aleksis/core/preferences.py:381
 msgid "Email recipient groups for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:389
+#: aleksis/core/preferences.py:390
 msgid "Show dashboard to users without login"
 msgstr ""
 
-#: aleksis/core/preferences.py:398
+#: aleksis/core/preferences.py:399
 msgid "Allow users to edit their dashboard"
 msgstr ""
 
-#: aleksis/core/preferences.py:409
+#: aleksis/core/preferences.py:410
 msgid "Fields on person model which are editable by themselves."
 msgstr ""
 
-#: aleksis/core/preferences.py:424
+#: aleksis/core/preferences.py:425
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr ""
 
-#: aleksis/core/preferences.py:438
+#: aleksis/core/preferences.py:439
 msgid "Contact for notification if a person changes their data"
 msgstr ""
 
-#: aleksis/core/preferences.py:449
+#: aleksis/core/preferences.py:450
 msgid "Prefer personal photos over avatars"
 msgstr ""
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:460
 msgid "PDF file expiration duration"
 msgstr ""
 
-#: aleksis/core/preferences.py:460
+#: aleksis/core/preferences.py:461
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/preferences.py:470
+#: aleksis/core/preferences.py:471
 msgid "Automatically update the dashboard and its widgets"
 msgstr ""
 
-#: aleksis/core/preferences.py:480
+#: aleksis/core/preferences.py:481
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr ""
 
-#: aleksis/core/preferences.py:490
+#: aleksis/core/preferences.py:491
 msgid "Birthday calendar feed color"
 msgstr ""
 
-#: aleksis/core/preferences.py:502
+#: aleksis/core/preferences.py:503
 msgid "Holiday calendar feed color"
 msgstr ""
 
 #: aleksis/core/preferences.py:515
+msgid "Personal events feed color"
+msgstr ""
+
+#: aleksis/core/preferences.py:528
 msgid "Activated calendars"
 msgstr ""
 
-#: aleksis/core/settings.py:551
+#: aleksis/core/preferences.py:546
+msgid "Comma-separated list of disallowed usernames"
+msgstr ""
+
+#: aleksis/core/settings.py:548
 msgid "English"
 msgstr ""
 
-#: aleksis/core/settings.py:552
+#: aleksis/core/settings.py:549
 msgid "German"
 msgstr ""
 
-#: aleksis/core/settings.py:553
+#: aleksis/core/settings.py:550
 msgid "Ukrainian"
 msgstr ""
 
-#: aleksis/core/tables.py:97 aleksis/core/tables.py:98
-#: aleksis/core/tables.py:112 aleksis/core/tables.py:128
-#: aleksis/core/tables.py:165
+#: aleksis/core/tables.py:96 aleksis/core/tables.py:112
+#: aleksis/core/tables.py:149
 #: aleksis/core/templates/core/announcement/list.html:42
 #: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
@@ -1234,7 +1263,7 @@ msgstr ""
 msgid "Delete"
 msgstr ""
 
-#: aleksis/core/tables.py:130 aleksis/core/tables.py:167
+#: aleksis/core/tables.py:114 aleksis/core/tables.py:151
 #: aleksis/core/templates/core/announcement/list.html:22
 msgid "Actions"
 msgstr ""
@@ -1334,8 +1363,8 @@ msgid "This e-mail confirmation link expired or is invalid. Please <a href=\"%(e
 msgstr ""
 
 #: aleksis/core/templates/account/password_change.html:5
-#: aleksis/core/templates/account/password_change.html:6
-#: aleksis/core/templates/account/password_change.html:19
+#: aleksis/core/templates/account/password_change.html:15
+#: aleksis/core/templates/account/password_change.html:28
 #: aleksis/core/templates/account/password_reset_from_key.html:5
 #: aleksis/core/templates/account/password_reset_from_key.html:42
 #: aleksis/core/templates/account/password_reset_from_key.html:46
@@ -1344,31 +1373,11 @@ msgstr ""
 msgid "Change password"
 msgstr ""
 
-#: aleksis/core/templates/account/password_change.html:12
-msgid "Forgot your current password? Click here to reset it:"
-msgstr ""
-
-#: aleksis/core/templates/account/password_change.html:12
-msgid "Forgot Password?"
-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 ""
-
-#: aleksis/core/templates/account/password_change_disabled.html:13
-msgid "Changing of password disabled."
-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"
-"          "
+#: aleksis/core/templates/account/password_change.html:19
+msgid "Forgot your current password?"
 msgstr ""
 
+#: aleksis/core/templates/account/password_change.html:20
 #: aleksis/core/templates/account/password_reset.html:5
 #: aleksis/core/templates/account/password_reset.html:15
 #: aleksis/core/templates/account/password_reset.html:23
@@ -1509,15 +1518,6 @@ msgid ""
 "          "
 msgstr ""
 
-#: aleksis/core/templates/core/additional_field/edit.html:6
-#: aleksis/core/templates/core/additional_field/edit.html:7
-msgid "Edit additional field"
-msgstr ""
-
-#: aleksis/core/templates/core/additional_field/list.html:14
-msgid "Create additional field"
-msgstr ""
-
 #: aleksis/core/templates/core/announcement/form.html:14
 #: aleksis/core/templates/core/announcement/form.html:21
 msgid "Edit announcement"
@@ -2776,15 +2776,6 @@ msgid ""
 "        "
 msgstr ""
 
-#: aleksis/core/templates/two_factor/core/setup.html:83
-msgid ""
-"\n"
-"        To identify and verify your YubiKey, please insert a\n"
-"        token in the field below. Your YubiKey will be linked to your\n"
-"        account.\n"
-"      "
-msgstr ""
-
 #: 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"
@@ -2833,11 +2824,15 @@ msgstr ""
 msgid "Disable"
 msgstr ""
 
-#: aleksis/core/util/notifications.py:64
+#: aleksis/core/util/auth_helpers.py:155
+msgid "This username is not allowed."
+msgstr ""
+
+#: aleksis/core/util/notifications.py:67
 msgid "E-Mail"
 msgstr ""
 
-#: aleksis/core/util/notifications.py:65
+#: aleksis/core/util/notifications.py:68
 msgid "SMS"
 msgstr ""
 
@@ -2861,149 +2856,145 @@ msgstr ""
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:371
+#: aleksis/core/views.py:354
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:390 aleksis/core/views.py:400
+#: aleksis/core/views.py:373 aleksis/core/views.py:383
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:450
+#: aleksis/core/views.py:432
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:498
+#: aleksis/core/views.py:480
 msgid "Maintenance mode was turned on successfully."
 msgstr ""
 
-#: aleksis/core/views.py:500
+#: aleksis/core/views.py:482
 msgid "Maintenance mode was turned off successfully."
 msgstr ""
 
-#: aleksis/core/views.py:558
+#: aleksis/core/views.py:539
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:574
+#: aleksis/core/views.py:555
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:643
+#: aleksis/core/views.py:624
 msgid "The requested preference registry does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:662
+#: aleksis/core/views.py:643
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:686
+#: aleksis/core/views.py:667
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:700
+#: aleksis/core/views.py:681
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:732
-msgid "The additional field has been saved."
-msgstr ""
-
-#: aleksis/core/views.py:767
-msgid "The additional field has been deleted."
-msgstr ""
-
-#: aleksis/core/views.py:792
+#: aleksis/core/views.py:705
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:823
+#: aleksis/core/views.py:736
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:858
+#: aleksis/core/views.py:771
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:859
+#: aleksis/core/views.py:772
 msgid "Run data checks …"
 msgstr ""
 
-#: aleksis/core/views.py:860
+#: aleksis/core/views.py:773
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:861
+#: aleksis/core/views.py:774
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:878
+#: aleksis/core/views.py:791
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:888
+#: aleksis/core/views.py:801
 msgid "The requested solve option does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:921
+#: aleksis/core/views.py:834
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:951
+#: aleksis/core/views.py:864
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:961
+#: aleksis/core/views.py:874
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1033
+#: aleksis/core/views.py:946
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1035
+#: aleksis/core/views.py:948
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1106
+#: aleksis/core/views.py:1019
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr ""
 
-#: aleksis/core/views.py:1203
+#: aleksis/core/views.py:1116
 msgid "We have successfully assigned the permissions."
 msgstr ""
 
-#: aleksis/core/views.py:1213
+#: aleksis/core/views.py:1126
 msgid "The global user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1223
+#: aleksis/core/views.py:1136
 msgid "The global group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1233
+#: aleksis/core/views.py:1146
 msgid "The object user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1243
+#: aleksis/core/views.py:1156
 msgid "The object group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1352
+#: aleksis/core/views.py:1238
+msgid "We sent you an email with instructions for resetting your password."
+msgstr ""
+
+#: aleksis/core/views.py:1262
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1359
+#: aleksis/core/views.py:1269
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
-#: aleksis/core/views.py:1435
+#: aleksis/core/views.py:1345
 msgid "Person was invited successfully and an email with further instructions has been send to them."
 msgstr ""
 
-#: aleksis/core/views.py:1446
+#: aleksis/core/views.py:1356
 msgid "Person was already invited."
 msgstr ""
 
diff --git a/aleksis/core/locale/ru/LC_MESSAGES/django.po b/aleksis/core/locale/ru/LC_MESSAGES/django.po
index 97f7d699fdf23d06b6db81311f074edd72f1fd69..14493a7aba9e672a61c2d46424e579f51ade1692 100644
--- a/aleksis/core/locale/ru/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/ru/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-02-27 13:23+0100\n"
+"POT-Creation-Date: 2024-01-26 21:43+0100\n"
 "PO-Revision-Date: 2023-08-12 09:43+0000\n"
 "Last-Translator: Serhii Horichenko <m@sgg.im>\n"
 "Language-Team: Russian <https://translate.edugit.org/projects/aleksis/aleksis-core/ru/>\n"
@@ -18,302 +18,286 @@ msgstr ""
 "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:155 aleksis/core/apps.py:161
+#: aleksis/core/apps.py:162
+msgid "You have been logged out successfully."
+msgstr "Вы успешно вышли."
+
+#: aleksis/core/apps.py:172
 msgid "OpenID Connect scope"
 msgstr "Граница действия OpenID Connect"
 
-#: aleksis/core/apps.py:156 aleksis/core/apps.py:162
+#: aleksis/core/apps.py:173
 msgid "Given name, family name, link to profile and picture if existing."
 msgstr "Имя, фамилия, ссылка на профиль и фото, если есть."
 
-#: aleksis/core/apps.py:157 aleksis/core/apps.py:163
+#: aleksis/core/apps.py:174
 msgid "Full home postal address"
 msgstr "Полный домашний почтовый адрес"
 
-#: aleksis/core/apps.py:158 aleksis/core/apps.py:164
+#: aleksis/core/apps.py:175
 msgid "Email address"
 msgstr "Адрес эл.почты"
 
-#: aleksis/core/apps.py:159 aleksis/core/apps.py:165
+#: aleksis/core/apps.py:176
 msgid "Home and mobile phone"
 msgstr "Домашний и мобильный телефоны"
 
-#: aleksis/core/apps.py:160 aleksis/core/forms.py:220
-#: aleksis/core/models.py:494 aleksis/core/templates/core/group/list.html:8
-#: aleksis/core/templates/core/group/list.html:9 aleksis/core/apps.py:166
-#: aleksis/core/forms.py:221 aleksis/core/models.py:495
-#: aleksis/core/forms.py:231 aleksis/core/models.py:517
+#: aleksis/core/apps.py:177 aleksis/core/forms.py:223
+#: aleksis/core/models.py:473 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/templates/core/group/list.html:9
 msgid "Groups"
 msgstr "Группы"
 
-#: aleksis/core/data_checks.py:60
+#: aleksis/core/data_checks.py:67
 msgid "Ignore problem"
 msgstr "Игнорировать проблему"
 
-#: aleksis/core/data_checks.py:188
+#: aleksis/core/data_checks.py:199
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr "Вариант решения '{solve_option_obj.verbose_name}' "
 
-#: aleksis/core/data_checks.py:284
+#: aleksis/core/data_checks.py:329
 msgid "Deactivate DashboardWidget"
 msgstr "Отключить виджет информпанели"
 
-#: aleksis/core/data_checks.py:296
+#: aleksis/core/data_checks.py:341
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr "Убедитесь в отсутствии сбойных виджетов на информапанели."
 
-#: aleksis/core/data_checks.py:297
+#: aleksis/core/data_checks.py:342
 msgid "The DashboardWidget was reported broken automatically."
 msgstr "Виджет информпанели сообщил о сбое в автоматическом режиме."
 
-#: aleksis/core/data_checks.py:320
-#, python-format
-msgid "Validate field %s of model %s."
+#: aleksis/core/data_checks.py:364
+#, fuzzy, python-brace-format
+#| msgid "Validate field %s of model %s."
+msgid "Validate field {field} of model {model}."
 msgstr "Проверьте поле %s модели %s."
 
-#: aleksis/core/data_checks.py:322
-#, python-format
-msgid "The field %s couldn't be validated successfully."
+#: aleksis/core/data_checks.py:367
+#, fuzzy
+#| msgid "The field %s couldn't be validated successfully."
+msgid "The field {} couldn't be validated successfully."
 msgstr "Поле %s проверить не удалось."
 
-#: aleksis/core/filters.py:42 aleksis/core/templates/core/group/list.html:20
+#: aleksis/core/data_checks.py:389
+#, fuzzy
+#| msgid "Ensure that there are no broken DashboardWidgets."
+msgid "Ensure that there are no disallowed usernames."
+msgstr "Убедитесь в отсутствии сбойных виджетов на информапанели."
+
+#: aleksis/core/data_checks.py:390
+#, fuzzy
+#| msgid "The DashboardWidget was reported broken automatically."
+msgid "A user with a disallowed username was reported automatically."
+msgstr "Виджет информпанели сообщил о сбое в автоматическом режиме."
+
+#: aleksis/core/data_checks.py:411
+#, fuzzy
+#| msgid "Invite by email address"
+msgid "Change email address"
+msgstr "Приглашение по эл.почте"
+
+#: aleksis/core/data_checks.py:416
+msgid "Ensure that email addresses are unique among all persons"
+msgstr ""
+
+#: aleksis/core/data_checks.py:417
+#, fuzzy
+#| msgid "Verify your email address"
+msgid "There was a non-unique email address."
+msgstr "Подтвердите свой адрес эл.почты"
+
+#: aleksis/core/filters.py:39 aleksis/core/templates/core/group/list.html:20
 #: aleksis/core/templates/core/person/list.html:24
 #: aleksis/core/templates/search/search.html:7
 #: aleksis/core/templates/search/search.html:22
 msgid "Search"
 msgstr "Поиск"
 
-#: aleksis/core/filters.py:59
+#: aleksis/core/filters.py:56
 msgid "Search by name"
 msgstr "Поиск по имени"
 
-#: aleksis/core/filters.py:71
+#: aleksis/core/filters.py:68
 msgid "Search by contact details"
 msgstr "Поиск по контактным данным"
 
-#: aleksis/core/filters.py:92
+#: aleksis/core/filters.py:89
 msgid "Permission"
 msgstr "Разрешение"
 
-#: aleksis/core/filters.py:100
+#: aleksis/core/filters.py:97
 msgid "Content type"
 msgstr "Тип содержимого"
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:720
-#: aleksis/core/models.py:721 aleksis/core/models.py:743
+#: aleksis/core/filters.py:110 aleksis/core/models.py:647
 msgid "User"
 msgstr "Пользователь"
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:493
-#: aleksis/core/models.py:494 aleksis/core/models.py:516
+#: aleksis/core/filters.py:132 aleksis/core/models.py:472
 msgid "Group"
 msgstr "Группа"
 
-#: aleksis/core/forms.py:50 aleksis/core/forms.py:581 aleksis/core/forms.py:51
-#: aleksis/core/forms.py:582 aleksis/core/forms.py:591
+#: aleksis/core/forms.py:48 aleksis/core/forms.py:574
 msgid "Base data"
 msgstr "Основные данные"
 
-#: aleksis/core/forms.py:55 aleksis/core/tables.py:47 aleksis/core/forms.py:56
-#: aleksis/core/tables.py:29
+#: aleksis/core/forms.py:53 aleksis/core/tables.py:29
 msgid "Address"
 msgstr "Адрес"
 
-#: aleksis/core/forms.py:56 aleksis/core/forms.py:590 aleksis/core/forms.py:57
-#: aleksis/core/forms.py:591 aleksis/core/forms.py:600
+#: aleksis/core/forms.py:54 aleksis/core/forms.py:583
 msgid "Contact data"
 msgstr "Контактные данные"
 
-#: aleksis/core/forms.py:58 aleksis/core/forms.py:59
+#: aleksis/core/forms.py:56
 msgid "Advanced personal data"
 msgstr "Дополнительные личные данные"
 
-#: aleksis/core/forms.py:106 aleksis/core/forms.py:107
+#: aleksis/core/forms.py:106
 msgid "New user"
 msgstr "Новый пользователь"
 
-#: aleksis/core/forms.py:106 aleksis/core/forms.py:107
+#: aleksis/core/forms.py:106
 msgid "Create a new account"
 msgstr "Создать новую учётную запись"
 
-#: aleksis/core/forms.py:132 aleksis/core/forms.py:133
+#: aleksis/core/forms.py:132
 msgid "You cannot set a new username when also selecting an existing user."
 msgstr "После выбора существующего пользователя создать новый логин нельзя."
 
-#: aleksis/core/forms.py:136 aleksis/core/forms.py:137
+#: aleksis/core/forms.py:136
 msgid "This username is already in use."
 msgstr "Этот логин уже занят."
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:141
-#: aleksis/core/forms.py:154 aleksis/core/models.py:142
-#: aleksis/core/models.py:154
+#: aleksis/core/forms.py:153 aleksis/core/models.py:147
 msgid "School term"
 msgstr "Учебный год"
 
-#: aleksis/core/forms.py:154 aleksis/core/forms.py:155
+#: aleksis/core/forms.py:154
 msgid "Common data"
 msgstr "Общие данные"
 
-#: aleksis/core/forms.py:155 aleksis/core/forms.py:207
-#: aleksis/core/models.py:164 aleksis/core/templates/core/person/list.html:8
-#: aleksis/core/templates/core/person/list.html:9 aleksis/core/forms.py:156
-#: aleksis/core/forms.py:208 aleksis/core/models.py:165
-#: aleksis/core/forms.py:218 aleksis/core/models.py:177
+#: aleksis/core/forms.py:155 aleksis/core/forms.py:210
+#: aleksis/core/models.py:168 aleksis/core/templates/core/person/list.html:8
+#: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
 msgstr "Люди"
 
-#: aleksis/core/forms.py:156 aleksis/core/forms.py:592
-#: aleksis/core/forms.py:157 aleksis/core/forms.py:593
-#: aleksis/core/forms.py:602
-msgid "Additional data"
-msgstr "Дополнительные данные"
-
-#: aleksis/core/forms.py:157 aleksis/core/models.py:217
-#: aleksis/core/models.py:546 aleksis/core/tables.py:46
-#: aleksis/core/forms.py:158 aleksis/core/models.py:218
-#: aleksis/core/models.py:547 aleksis/core/models.py:230
-#: aleksis/core/models.py:569 aleksis/core/tables.py:28
+#: aleksis/core/forms.py:156 aleksis/core/models.py:224
+#: aleksis/core/models.py:526 aleksis/core/tables.py:28
 msgid "Photo"
 msgstr "Фото"
 
-#: aleksis/core/forms.py:199 aleksis/core/forms.py:202
-#: aleksis/core/models.py:84 aleksis/core/forms.py:200
-#: aleksis/core/forms.py:203 aleksis/core/models.py:85
-#: aleksis/core/forms.py:210 aleksis/core/forms.py:213
-#: aleksis/core/models.py:97
+#: aleksis/core/forms.py:202 aleksis/core/forms.py:205
+#: aleksis/core/models.py:90
 msgid "Date"
 msgstr "Дата"
 
-#: aleksis/core/forms.py:200 aleksis/core/forms.py:203
-#: aleksis/core/models.py:92 aleksis/core/forms.py:201
-#: aleksis/core/forms.py:204 aleksis/core/models.py:93
-#: aleksis/core/forms.py:211 aleksis/core/forms.py:214
-#: aleksis/core/models.py:105
+#: aleksis/core/forms.py:203 aleksis/core/forms.py:206
+#: aleksis/core/models.py:98
 msgid "Time"
 msgstr "Время"
 
-#: aleksis/core/forms.py:233 aleksis/core/forms.py:234
-#: aleksis/core/forms.py:244
+#: aleksis/core/forms.py:236
 msgid "From when until when should the announcement be displayed?"
 msgstr "С какого и по какое время это объявление должно отображаться?"
 
-#: aleksis/core/forms.py:236 aleksis/core/forms.py:237
-#: aleksis/core/forms.py:247
+#: aleksis/core/forms.py:239
 msgid "Who should see the announcement?"
 msgstr "Кто должен видеть это объявление?"
 
-#: aleksis/core/forms.py:237 aleksis/core/forms.py:238
-#: aleksis/core/forms.py:248
+#: aleksis/core/forms.py:240
 msgid "Write your announcement:"
 msgstr "Напишите свое объявление:"
 
-#: aleksis/core/forms.py:276 aleksis/core/forms.py:277
-#: aleksis/core/forms.py:287
-msgid ""
-"You are not allowed to create announcements which are only valid in the past."
+#: aleksis/core/forms.py:279
+msgid "You are not allowed to create announcements which are only valid in the past."
 msgstr "Объявления для прошлого Вам создавать не разрешено."
 
-#: aleksis/core/forms.py:280 aleksis/core/forms.py:281
-#: aleksis/core/forms.py:291
+#: aleksis/core/forms.py:283
 msgid "The from date and time must be earlier then the until date and time."
 msgstr "Дата и время начала должны быть до даты и времени окончания."
 
-#: aleksis/core/forms.py:289 aleksis/core/forms.py:290
-#: aleksis/core/forms.py:300
+#: aleksis/core/forms.py:292
 msgid "You need at least one recipient."
 msgstr "Нужен хотя бы один получатель."
 
-#: aleksis/core/forms.py:398 aleksis/core/forms.py:399
-#: aleksis/core/forms.py:408
+#: aleksis/core/forms.py:392
 msgid "Invitation code"
 msgstr "Код приглашения"
 
-#: aleksis/core/forms.py:399 aleksis/core/forms.py:400
-#: aleksis/core/forms.py:409
+#: aleksis/core/forms.py:393
 msgid "Please enter your invitation code."
 msgstr "Укажите, пожалуйста, код приглашения."
 
-#: aleksis/core/forms.py:418 aleksis/core/models.py:192
-#: aleksis/core/forms.py:419 aleksis/core/models.py:193
-#: aleksis/core/forms.py:428 aleksis/core/models.py:205
+#: aleksis/core/forms.py:412 aleksis/core/models.py:197
 msgid "First name"
 msgstr "Имя"
 
-#: aleksis/core/forms.py:419 aleksis/core/models.py:193
-#: aleksis/core/forms.py:420 aleksis/core/models.py:194
-#: aleksis/core/forms.py:429 aleksis/core/models.py:206
+#: aleksis/core/forms.py:413 aleksis/core/models.py:198
 msgid "Last name"
 msgstr "Фамилия"
 
-#: aleksis/core/forms.py:428 aleksis/core/forms.py:429
-#: aleksis/core/forms.py:438
+#: aleksis/core/forms.py:422
 msgid "A person is using this e-mail address"
 msgstr "Этот эл.адрес кем-то используется"
 
-#: aleksis/core/forms.py:456 aleksis/core/forms.py:457
-#: aleksis/core/forms.py:466
+#: aleksis/core/forms.py:450
 msgid "Who should get the permission?"
 msgstr "Кто должен получить такое разрешение?"
 
-#: aleksis/core/forms.py:457 aleksis/core/forms.py:458
-#: aleksis/core/forms.py:467
+#: aleksis/core/forms.py:451
 msgid "On what?"
 msgstr "В случае чего?"
 
-#: aleksis/core/forms.py:483 aleksis/core/forms.py:484
-#: aleksis/core/forms.py:493
+#: aleksis/core/forms.py:477
 msgid "Select objects which the permission should be granted for:"
 msgstr "Отметьте объекты, к которым будет предоставлен доступ:"
 
-#: aleksis/core/forms.py:486 aleksis/core/forms.py:487
-#: aleksis/core/forms.py:496
+#: aleksis/core/forms.py:480
 msgid "Grant the permission for all objects"
 msgstr "Предоставить доступ ко всем объектам"
 
-#: aleksis/core/forms.py:494 aleksis/core/forms.py:495
-#: aleksis/core/forms.py:504
-msgid ""
-"You must select at least one group or person which should get the permission."
+#: aleksis/core/forms.py:488
+msgid "You must select at least one group or person which should get the permission."
 msgstr "Вам нужно выбрать хотя бы одну группу или физлицо, кто получит доступ."
 
-#: aleksis/core/forms.py:499 aleksis/core/forms.py:500
-#: aleksis/core/forms.py:509
+#: aleksis/core/forms.py:493
 msgid "You must grant the permission to all objects or to specific objects."
 msgstr "Вы должны предоставить доступ ко всем или к конкретным объектам."
 
-#: aleksis/core/forms.py:586 aleksis/core/forms.py:587
-#: aleksis/core/forms.py:596
+#: aleksis/core/forms.py:579
 msgid "Address data"
 msgstr "Подробности адреса"
 
-#: aleksis/core/forms.py:598 aleksis/core/forms.py:599
-#: aleksis/core/forms.py:608
+#: aleksis/core/forms.py:585
+msgid "Additional data"
+msgstr "Дополнительные данные"
+
+#: aleksis/core/forms.py:591
 msgid "Account data"
 msgstr "Данные учётной записи"
 
-#: aleksis/core/forms.py:605 aleksis/core/forms.py:606
-#: aleksis/core/forms.py:615
+#: aleksis/core/forms.py:598
 msgid "Password"
 msgstr "Пароль"
 
-#: aleksis/core/forms.py:608 aleksis/core/forms.py:609
-#: aleksis/core/forms.py:618
+#: aleksis/core/forms.py:601
 msgid "Password (again)"
 msgstr "Пароль (ещё раз)"
 
-#: aleksis/core/forms.py:761 aleksis/core/forms.py:762
-#: aleksis/core/forms.py:771
+#: aleksis/core/forms.py:753
 msgid "The selected action does not exist."
 msgstr "Выбранное действие не существует."
 
-#: aleksis/core/forms.py:772 aleksis/core/forms.py:773
-#: aleksis/core/forms.py:782
+#: aleksis/core/forms.py:764
 msgid "You do not have permission to run {} on all selected objects."
 msgstr "У Вас нет разрешения на запуск {} на всех выбранных объектах."
 
-#: aleksis/core/forms.py:828 aleksis/core/forms.py:829
-#: aleksis/core/forms.py:838
+#: aleksis/core/forms.py:820
 msgid "No valid selection."
 msgstr "Неправильный выбор."
 
@@ -337,1110 +321,983 @@ msgstr "Резервная копия не найдена!"
 msgid "No backup result found!"
 msgstr "Результат резервного копирования не найден!"
 
-#: aleksis/core/mixins.py:511 aleksis/core/mixins.py:539
+#: aleksis/core/mixins.py:446
 msgid "Linked school term"
 msgstr "Связанный учебный год"
 
-#: aleksis/core/models.py:82 aleksis/core/models.py:83
-#: aleksis/core/models.py:95
+#: aleksis/core/models.py:88
 msgid "Boolean (Yes/No)"
 msgstr "Булево (Да/Нет)"
 
-#: aleksis/core/models.py:83 aleksis/core/models.py:84
-#: aleksis/core/models.py:96
+#: aleksis/core/models.py:89
 msgid "Text (one line)"
 msgstr "Текст (одна строка)"
 
-#: aleksis/core/models.py:85 aleksis/core/models.py:86
-#: aleksis/core/models.py:98
+#: aleksis/core/models.py:91
 msgid "Date and time"
 msgstr "Дата и время"
 
-#: aleksis/core/models.py:86 aleksis/core/models.py:87
-#: aleksis/core/models.py:99
+#: aleksis/core/models.py:92
 msgid "Decimal number"
 msgstr "Десятичное число"
 
-#: aleksis/core/models.py:87 aleksis/core/models.py:210
-#: aleksis/core/models.py:88 aleksis/core/models.py:211
-#: aleksis/core/models.py:100 aleksis/core/models.py:223
+#: aleksis/core/models.py:93 aleksis/core/models.py:217
 msgid "E-mail address"
 msgstr "Адрес эл.почты"
 
-#: aleksis/core/models.py:88 aleksis/core/models.py:89
-#: aleksis/core/models.py:101
+#: aleksis/core/models.py:94
 msgid "Integer"
 msgstr "Целое"
 
-#: aleksis/core/models.py:89 aleksis/core/models.py:90
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:95
 msgid "IP address"
 msgstr "IP адрес"
 
-#: aleksis/core/models.py:90 aleksis/core/models.py:91
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:96
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr "Булево или пустое (Да/Нет/Ничего)"
 
-#: aleksis/core/models.py:91 aleksis/core/models.py:92
-#: aleksis/core/models.py:104
+#: aleksis/core/models.py:97
 msgid "Text (multi-line)"
 msgstr "Текст (многострочный)"
 
-#: aleksis/core/models.py:93 aleksis/core/models.py:94
-#: aleksis/core/models.py:106
+#: aleksis/core/models.py:99
 msgid "URL / Link"
 msgstr "URL / Ссылка"
 
-#: aleksis/core/models.py:105 aleksis/core/models.py:1077
-#: aleksis/core/models.py:106 aleksis/core/models.py:1078
-#: aleksis/core/models.py:118 aleksis/core/models.py:1100
-#: aleksis/core/models.py:1729
+#: aleksis/core/models.py:111 aleksis/core/models.py:1004
+#: aleksis/core/models.py:1667 aleksis/core/models.py:1806
 msgid "Name"
 msgstr "Полное имя"
 
-#: aleksis/core/models.py:107 aleksis/core/models.py:108
-#: aleksis/core/models.py:120 aleksis/core/models.py:1532
+#: aleksis/core/models.py:113 aleksis/core/models.py:1428
 msgid "Start date"
 msgstr "Дата начала"
 
-#: aleksis/core/models.py:108 aleksis/core/models.py:109
-#: aleksis/core/models.py:121 aleksis/core/models.py:1533
+#: aleksis/core/models.py:114 aleksis/core/models.py:1429
 msgid "End date"
 msgstr "Дата окончания"
 
-#: aleksis/core/models.py:127 aleksis/core/models.py:128
-#: aleksis/core/models.py:140 aleksis/core/schema/school_term.py:48
+#: aleksis/core/models.py:133 aleksis/core/schema/school_term.py:50
 msgid "The start date must be earlier than the end date."
 msgstr "Дата начала должна быть ранее даты окончания."
 
-#: aleksis/core/models.py:134 aleksis/core/models.py:135
-#: aleksis/core/models.py:147 aleksis/core/schema/school_term.py:53
+#: aleksis/core/models.py:140 aleksis/core/schema/school_term.py:55
 msgid "There is already a school term for this time or a part of this time."
 msgstr "На это время или на его часть уже запланирован учебный год."
 
-#: aleksis/core/models.py:142
-#: aleksis/core/templates/core/school_term/list.html:8
-#: aleksis/core/templates/core/school_term/list.html:9
-#: aleksis/core/models.py:143 aleksis/core/models.py:155
+#: aleksis/core/models.py:148
 msgid "School terms"
 msgstr "Учебный год"
 
-#: aleksis/core/models.py:163 aleksis/core/models.py:1026
-#: aleksis/core/models.py:164 aleksis/core/models.py:1027
-#: aleksis/core/models.py:176 aleksis/core/models.py:1049
+#: aleksis/core/models.py:167 aleksis/core/models.py:953
 msgid "Person"
 msgstr "Физлицо"
 
-#: aleksis/core/models.py:166 aleksis/core/models.py:167
-#: aleksis/core/models.py:179
+#: aleksis/core/models.py:170
 msgid "Can view address"
 msgstr "Может видеть адрес"
 
-#: aleksis/core/models.py:167 aleksis/core/models.py:168
-#: aleksis/core/models.py:180
+#: aleksis/core/models.py:171
 msgid "Can view contact details"
 msgstr "Может видеть контактные данные"
 
-#: aleksis/core/models.py:168 aleksis/core/models.py:169
-#: aleksis/core/models.py:181
+#: aleksis/core/models.py:172
 msgid "Can view photo"
 msgstr "Может видеть фото"
 
-#: aleksis/core/models.py:169 aleksis/core/models.py:170
-#: aleksis/core/models.py:182
+#: aleksis/core/models.py:173
 msgid "Can view avatar image"
 msgstr "Может видеть аватар"
 
-#: aleksis/core/models.py:170 aleksis/core/models.py:171
-#: aleksis/core/models.py:183
+#: aleksis/core/models.py:174
 msgid "Can view persons groups"
 msgstr "Может видеть группы лиц"
 
-#: aleksis/core/models.py:171 aleksis/core/models.py:172
-#: aleksis/core/models.py:184
+#: aleksis/core/models.py:175
 msgid "Can view personal details"
 msgstr "Может видеть личные данные"
 
-#: aleksis/core/models.py:181 aleksis/core/models.py:182
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "female"
 msgstr "жен"
 
-#: aleksis/core/models.py:181 aleksis/core/models.py:182
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "male"
 msgstr "муж"
 
-#: aleksis/core/models.py:181 aleksis/core/models.py:182
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "other"
 msgstr "другой"
 
-#: aleksis/core/models.py:189 aleksis/core/models.py:1353
-#: aleksis/core/models.py:190 aleksis/core/models.py:1382
-#: aleksis/core/models.py:202 aleksis/core/models.py:1404
+#: aleksis/core/models.py:194 aleksis/core/models.py:1296
 msgid "Linked user"
 msgstr "Связанный пользователь"
 
-#: aleksis/core/models.py:195 aleksis/core/models.py:196
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:200
 msgid "Additional name(s)"
 msgstr "Дополнительные имена"
 
-#: aleksis/core/models.py:199 aleksis/core/models.py:511
-#: aleksis/core/models.py:1439 aleksis/core/models.py:200
-#: aleksis/core/models.py:512 aleksis/core/models.py:1468
-#: aleksis/core/models.py:212 aleksis/core/models.py:534
-#: aleksis/core/models.py:1490
+#: aleksis/core/models.py:204 aleksis/core/models.py:491
+#: aleksis/core/models.py:1388
 msgid "Short name"
 msgstr "Короткое имя"
 
-#: aleksis/core/models.py:202 aleksis/core/models.py:203
-#: aleksis/core/models.py:215
+#: aleksis/core/models.py:209
 msgid "Street"
 msgstr "Улица"
 
-#: aleksis/core/models.py:203 aleksis/core/models.py:204
-#: aleksis/core/models.py:216
+#: aleksis/core/models.py:210
 msgid "Street number"
 msgstr "Номер дома"
 
-#: aleksis/core/models.py:204 aleksis/core/models.py:205
-#: aleksis/core/models.py:217
+#: aleksis/core/models.py:211
 msgid "Postal code"
 msgstr "Почтовый индекс"
 
-#: aleksis/core/models.py:205 aleksis/core/models.py:206
-#: aleksis/core/models.py:218
+#: aleksis/core/models.py:212
 msgid "Place"
 msgstr "Город/место"
 
-#: aleksis/core/models.py:207 aleksis/core/models.py:208
-#: aleksis/core/models.py:220
+#: aleksis/core/models.py:214
 msgid "Home phone"
 msgstr "Домашний телефон"
 
-#: aleksis/core/models.py:208 aleksis/core/models.py:209
-#: aleksis/core/models.py:221
+#: aleksis/core/models.py:215
 msgid "Mobile phone"
 msgstr "Мобильный телефон"
 
-#: aleksis/core/models.py:212 aleksis/core/models.py:213
-#: aleksis/core/models.py:225
+#: aleksis/core/models.py:219
 msgid "Date of birth"
 msgstr "Дата рождения"
 
-#: aleksis/core/models.py:213 aleksis/core/models.py:214
-#: aleksis/core/models.py:226
+#: aleksis/core/models.py:220
 msgid "Place of birth"
 msgstr "Место рождения"
 
-#: aleksis/core/models.py:214 aleksis/core/models.py:215
-#: aleksis/core/models.py:227
+#: aleksis/core/models.py:221
 msgid "Sex"
 msgstr "Пол"
 
-#: aleksis/core/models.py:221 aleksis/core/models.py:550
-#: aleksis/core/models.py:222 aleksis/core/models.py:551
-#: aleksis/core/models.py:234 aleksis/core/models.py:573
-msgid ""
-"This is an official photo, used for official documents and for internal use "
-"cases."
-msgstr ""
-"Это официальное фото, которое используется для документов и внутренних нужд."
+#: aleksis/core/models.py:228 aleksis/core/models.py:530
+msgid "This is an official photo, used for official documents and for internal use cases."
+msgstr "Это официальное фото, которое используется для документов и внутренних нужд."
 
-#: aleksis/core/models.py:226 aleksis/core/models.py:554
-#: aleksis/core/models.py:227 aleksis/core/models.py:555
-#: aleksis/core/models.py:239 aleksis/core/models.py:577
+#: aleksis/core/models.py:233 aleksis/core/models.py:534
 msgid "Display picture / Avatar"
 msgstr "Отобразить фото/аватар"
 
-#: aleksis/core/models.py:229 aleksis/core/models.py:557
-#: aleksis/core/models.py:230 aleksis/core/models.py:558
-#: aleksis/core/models.py:242 aleksis/core/models.py:580
+#: aleksis/core/models.py:236 aleksis/core/models.py:537
 msgid "This is a picture or an avatar for public display."
 msgstr "Это фото или аватар для общего отображения."
 
-#: aleksis/core/models.py:234 aleksis/core/models.py:235
-#: aleksis/core/models.py:247
+#: aleksis/core/models.py:241
 msgid "Guardians / Parents"
 msgstr "Опекуны / Родители"
 
-#: aleksis/core/models.py:241 aleksis/core/models.py:242
-#: aleksis/core/models.py:254
+#: aleksis/core/models.py:248
 msgid "Primary group"
 msgstr "Основная группа"
 
-#: aleksis/core/models.py:244 aleksis/core/models.py:724
-#: aleksis/core/models.py:748 aleksis/core/models.py:843
-#: aleksis/core/models.py:1112 aleksis/core/models.py:245
-#: aleksis/core/models.py:725 aleksis/core/models.py:749
-#: aleksis/core/models.py:844 aleksis/core/models.py:1113
-#: aleksis/core/models.py:257 aleksis/core/models.py:747
-#: aleksis/core/models.py:771 aleksis/core/models.py:866
-#: aleksis/core/models.py:1135
+#: aleksis/core/models.py:251 aleksis/core/models.py:651
+#: aleksis/core/models.py:675 aleksis/core/models.py:770
+#: aleksis/core/models.py:1038 aleksis/core/models.py:1723
 msgid "Description"
 msgstr "Описание"
 
-#: aleksis/core/models.py:464 aleksis/core/models.py:465
-#: aleksis/core/models.py:487
-msgid "Title of field"
-msgstr "Название поля"
-
-#: aleksis/core/models.py:466 aleksis/core/models.py:467
-#: aleksis/core/models.py:489
-msgid "Type of field"
-msgstr "Тип поля"
-
-#: aleksis/core/models.py:468 aleksis/core/models.py:469
-#: aleksis/core/models.py:491
-msgid "Required"
-msgstr "Необходимое"
-
-#: aleksis/core/models.py:469 aleksis/core/models.py:470
-#: aleksis/core/models.py:492
-msgid "Help text / description"
-msgstr "Вспомогательный текст / описание"
-
-#: aleksis/core/models.py:475 aleksis/core/models.py:476
-#: aleksis/core/models.py:498
-msgid "Addtitional field for groups"
-msgstr "Дополнительное поле для групп"
-
-#: aleksis/core/models.py:476 aleksis/core/models.py:477
-#: aleksis/core/models.py:499
-msgid "Addtitional fields for groups"
-msgstr "Дополнительные поля для групп"
-
-#: aleksis/core/models.py:496 aleksis/core/models.py:497
-#: aleksis/core/models.py:519
+#: aleksis/core/models.py:475
 msgid "Can assign child groups to groups"
 msgstr "Может определять дочерние группы в группы"
 
-#: aleksis/core/models.py:497 aleksis/core/models.py:498
-#: aleksis/core/models.py:520
+#: aleksis/core/models.py:476
 msgid "Can view statistics about group."
 msgstr "Может видеть статистику группы."
 
-#: aleksis/core/models.py:509 aleksis/core/models.py:1440
-#: aleksis/core/models.py:510 aleksis/core/models.py:1469
-#: aleksis/core/models.py:532 aleksis/core/models.py:1491
+#: aleksis/core/models.py:489 aleksis/core/models.py:1389
 msgid "Long name"
 msgstr "Длинное имя"
 
-#: aleksis/core/models.py:519 aleksis/core/templates/core/group/full.html:105
-#: aleksis/core/models.py:520 aleksis/core/models.py:542
+#: aleksis/core/models.py:502 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr "Участники"
 
-#: aleksis/core/models.py:522 aleksis/core/templates/core/group/full.html:102
-#: aleksis/core/models.py:523 aleksis/core/models.py:545
+#: aleksis/core/models.py:505 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr "Владельцы"
 
-#: aleksis/core/models.py:529 aleksis/core/templates/core/group/full.html:59
-#: aleksis/core/models.py:530 aleksis/core/models.py:552
+#: aleksis/core/models.py:512 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr "Родительские группы"
 
-#: aleksis/core/models.py:537 aleksis/core/models.py:538
-#: aleksis/core/models.py:560
+#: aleksis/core/models.py:520
 msgid "Type of group"
 msgstr "Тип группы"
 
-#: aleksis/core/models.py:542
-#: aleksis/core/templates/core/additional_field/list.html:8
-#: aleksis/core/templates/core/additional_field/list.html:9
-#: aleksis/core/models.py:543 aleksis/core/models.py:565
-msgid "Additional fields"
-msgstr "Дополнительные поля"
-
-#: aleksis/core/models.py:723 aleksis/core/models.py:747
-#: aleksis/core/models.py:842 aleksis/core/models.py:1270
+#: aleksis/core/models.py:650 aleksis/core/models.py:674
+#: aleksis/core/models.py:769 aleksis/core/models.py:1213
+#: aleksis/core/models.py:1722
 #: aleksis/core/templates/core/announcement/list.html:18
-#: aleksis/core/models.py:724 aleksis/core/models.py:748
-#: aleksis/core/models.py:843 aleksis/core/models.py:1299
-#: aleksis/core/models.py:746 aleksis/core/models.py:770
-#: aleksis/core/models.py:865 aleksis/core/models.py:1321
 msgid "Title"
 msgstr "Название"
 
-#: aleksis/core/models.py:726 aleksis/core/models.py:727
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:653
 msgid "Application"
 msgstr "Приложение"
 
-#: aleksis/core/models.py:732 aleksis/core/models.py:733
-#: aleksis/core/models.py:755
+#: aleksis/core/models.py:659
 msgid "Activity"
 msgstr "Активность"
 
-#: aleksis/core/models.py:733 aleksis/core/models.py:734
-#: aleksis/core/models.py:756
+#: aleksis/core/models.py:660
 msgid "Activities"
 msgstr "Активности"
 
-#: aleksis/core/models.py:739 aleksis/core/models.py:740
-#: aleksis/core/models.py:762
+#: aleksis/core/models.py:666
 msgid "Sender"
 msgstr "Отправитель"
 
-#: aleksis/core/models.py:744 aleksis/core/models.py:745
-#: aleksis/core/models.py:767
+#: aleksis/core/models.py:671
 msgid "Recipient"
 msgstr "Получатель"
 
-#: aleksis/core/models.py:749 aleksis/core/models.py:1078
-#: aleksis/core/models.py:750 aleksis/core/models.py:1079
-#: aleksis/core/models.py:772 aleksis/core/models.py:1101
+#: aleksis/core/models.py:676 aleksis/core/models.py:1005
 msgid "Link"
 msgstr "Ссылка"
 
-#: aleksis/core/models.py:752 aleksis/core/models.py:1079
-#: aleksis/core/models.py:1400
+#: aleksis/core/models.py:679 aleksis/core/models.py:1006
+#: aleksis/core/models.py:1346
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
-#: aleksis/core/models.py:753 aleksis/core/models.py:1080
-#: aleksis/core/models.py:1429 aleksis/core/models.py:775
-#: aleksis/core/models.py:1102 aleksis/core/models.py:1451
 msgid "Icon"
 msgstr "Иконка"
 
-#: aleksis/core/models.py:755 aleksis/core/models.py:756
-#: aleksis/core/models.py:778
+#: aleksis/core/models.py:682
 msgid "Send notification at"
 msgstr "Отправить уведомление в"
 
-#: aleksis/core/models.py:757 aleksis/core/models.py:758
-#: aleksis/core/models.py:780
+#: aleksis/core/models.py:684
 msgid "Read"
 msgstr "Читать"
 
-#: aleksis/core/models.py:758 aleksis/core/models.py:759
-#: aleksis/core/models.py:781
+#: aleksis/core/models.py:685
 msgid "Sent"
 msgstr "Отправлено"
 
-#: aleksis/core/models.py:775 aleksis/core/models.py:776
-#: aleksis/core/models.py:798
+#: aleksis/core/models.py:702
 msgid "Notification"
 msgstr "Уведомление"
 
-#: aleksis/core/models.py:776 aleksis/core/preferences.py:29
-#: aleksis/core/models.py:777 aleksis/core/models.py:799
-#: aleksis/core/preferences.py:28
+#: aleksis/core/models.py:703 aleksis/core/preferences.py:29
 msgid "Notifications"
 msgstr "Уведомления"
 
-#: aleksis/core/models.py:844 aleksis/core/models.py:845
-#: aleksis/core/models.py:867
+#: aleksis/core/models.py:771
 msgid "Link to detailed view"
 msgstr "Ссылка на подробный обзор"
 
-#: aleksis/core/models.py:847 aleksis/core/models.py:848
-#: aleksis/core/models.py:870
+#: aleksis/core/models.py:774
 msgid "Date and time from when to show"
 msgstr "Дата и время, с которого показывать"
 
-#: aleksis/core/models.py:850 aleksis/core/models.py:851
-#: aleksis/core/models.py:873
+#: aleksis/core/models.py:777
 msgid "Date and time until when to show"
 msgstr "Дата и время, по какое показывать"
 
-#: aleksis/core/models.py:875 aleksis/core/models.py:876
-#: aleksis/core/models.py:898
+#: aleksis/core/models.py:802
 msgid "Announcement"
 msgstr "Объявление"
 
-#: aleksis/core/models.py:876
+#: aleksis/core/models.py:803
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
-#: aleksis/core/models.py:877 aleksis/core/models.py:899
 msgid "Announcements"
 msgstr "Объявление"
 
-#: aleksis/core/models.py:913 aleksis/core/models.py:914
-#: aleksis/core/models.py:936
+#: aleksis/core/models.py:840
 msgid "Announcement recipient"
 msgstr "Получатель объявления"
 
-#: aleksis/core/models.py:914 aleksis/core/models.py:915
-#: aleksis/core/models.py:937
+#: aleksis/core/models.py:841
 msgid "Announcement recipients"
 msgstr "Получатели объявления"
 
-#: aleksis/core/models.py:934 aleksis/core/models.py:935
-#: aleksis/core/models.py:957
+#: aleksis/core/models.py:861
 msgid "Widget Title"
 msgstr "Название виджета"
 
-#: aleksis/core/models.py:935 aleksis/core/models.py:936
-#: aleksis/core/models.py:958
+#: aleksis/core/models.py:862
 msgid "Activate Widget"
 msgstr "Активировать виджет"
 
-#: aleksis/core/models.py:936 aleksis/core/models.py:937
-#: aleksis/core/models.py:959
+#: aleksis/core/models.py:863
 msgid "Widget is broken"
 msgstr "Виджет поломался"
 
-#: aleksis/core/models.py:939 aleksis/core/models.py:940
-#: aleksis/core/models.py:962
+#: aleksis/core/models.py:866
 msgid "Size on mobile devices"
 msgstr "Размер на мобильных"
 
-#: aleksis/core/models.py:940 aleksis/core/models.py:941
-#: aleksis/core/models.py:963
+#: aleksis/core/models.py:867
 msgid "<= 600 px, 12 columns"
 msgstr "<= 600 пикс, 12 столбцов"
 
-#: aleksis/core/models.py:945 aleksis/core/models.py:946
-#: aleksis/core/models.py:968
+#: aleksis/core/models.py:872
 msgid "Size on tablet devices"
 msgstr "Размер на планшетах"
 
-#: aleksis/core/models.py:946 aleksis/core/models.py:947
-#: aleksis/core/models.py:969
+#: aleksis/core/models.py:873
 msgid "> 600 px, 12 columns"
 msgstr "> 600 пикс, 12 столбцов"
 
-#: aleksis/core/models.py:951 aleksis/core/models.py:952
-#: aleksis/core/models.py:974
+#: aleksis/core/models.py:878
 msgid "Size on desktop devices"
 msgstr "Размер на ПК"
 
-#: aleksis/core/models.py:952 aleksis/core/models.py:953
-#: aleksis/core/models.py:975
+#: aleksis/core/models.py:879
 msgid "> 992 px, 12 columns"
 msgstr "> 992 пикс, 12 столбцов"
 
-#: aleksis/core/models.py:957 aleksis/core/models.py:958
-#: aleksis/core/models.py:980
+#: aleksis/core/models.py:884
 msgid "Size on large desktop devices"
 msgstr "Размер для больших экранов"
 
-#: aleksis/core/models.py:958 aleksis/core/models.py:959
-#: aleksis/core/models.py:981
+#: aleksis/core/models.py:885
 msgid "> 1200 px>, 12 columns"
 msgstr "> 1200 пикс, 12 столбцов"
 
-#: aleksis/core/models.py:989 aleksis/core/models.py:990
-#: aleksis/core/models.py:1012
+#: aleksis/core/models.py:916
 msgid "Can edit default dashboard"
 msgstr "Может редактировать типовую/стандартную информпанель"
 
-#: aleksis/core/models.py:990 aleksis/core/models.py:991
-#: aleksis/core/models.py:1013
+#: aleksis/core/models.py:917
 msgid "Dashboard Widget"
 msgstr "Виджет информпанели"
 
-#: aleksis/core/models.py:991 aleksis/core/models.py:992
-#: aleksis/core/models.py:1014
+#: aleksis/core/models.py:918
 msgid "Dashboard Widgets"
 msgstr "Виджеты информпанели"
 
-#: aleksis/core/models.py:997 aleksis/core/models.py:998
-#: aleksis/core/models.py:1020
+#: aleksis/core/models.py:924
 msgid "URL"
 msgstr "URL"
 
-#: aleksis/core/models.py:998 aleksis/core/models.py:999
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:925
 msgid "Icon URL"
 msgstr "Иконка URL"
 
-#: aleksis/core/models.py:1004 aleksis/core/models.py:1005
-#: aleksis/core/models.py:1027
+#: aleksis/core/models.py:931
 msgid "External link widget"
 msgstr "Внешняя ссылка на виджет"
 
-#: aleksis/core/models.py:1005 aleksis/core/models.py:1006
-#: aleksis/core/models.py:1028
+#: aleksis/core/models.py:932
 msgid "External link widgets"
 msgstr "Внешние ссылки на виджеты"
 
-#: aleksis/core/models.py:1011 aleksis/core/models.py:1012
-#: aleksis/core/models.py:1034
+#: aleksis/core/models.py:938
 msgid "Content"
 msgstr "Содержимое"
 
-#: aleksis/core/models.py:1017 aleksis/core/models.py:1018
-#: aleksis/core/models.py:1040
+#: aleksis/core/models.py:944
 msgid "Static content widget"
 msgstr "Виджет с постоянным содержимым"
 
-#: aleksis/core/models.py:1018 aleksis/core/models.py:1019
-#: aleksis/core/models.py:1041
+#: aleksis/core/models.py:945
 msgid "Static content widgets"
 msgstr "Виджеты с постоянным содержимым"
 
-#: aleksis/core/models.py:1023 aleksis/core/models.py:1024
-#: aleksis/core/models.py:1046
+#: aleksis/core/models.py:950
 msgid "Dashboard widget"
 msgstr "Виджет информпанели"
 
-#: aleksis/core/models.py:1028 aleksis/core/models.py:1029
-#: aleksis/core/models.py:1051
+#: aleksis/core/models.py:955
 msgid "Order"
 msgstr "Порядок"
 
-#: aleksis/core/models.py:1029 aleksis/core/models.py:1030
-#: aleksis/core/models.py:1052
+#: aleksis/core/models.py:956
 msgid "Part of the default dashboard"
 msgstr "Часть типовой информпанели"
 
-#: aleksis/core/models.py:1044 aleksis/core/models.py:1045
-#: aleksis/core/models.py:1067
+#: aleksis/core/models.py:971
 msgid "Dashboard widget order"
 msgstr "Порядок виджета на информпанели"
 
-#: aleksis/core/models.py:1045 aleksis/core/models.py:1046
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:972
 msgid "Dashboard widget orders"
 msgstr "Порядок виджетов на информпанели"
 
-#: aleksis/core/models.py:1051 aleksis/core/models.py:1052
-#: aleksis/core/models.py:1074
+#: aleksis/core/models.py:978
 msgid "Menu ID"
 msgstr "Меню ID"
 
-#: aleksis/core/models.py:1064 aleksis/core/models.py:1065
-#: aleksis/core/models.py:1087
+#: aleksis/core/models.py:991
 msgid "Custom menu"
 msgstr "Пользовательское меню"
 
-#: aleksis/core/models.py:1065 aleksis/core/models.py:1066
-#: aleksis/core/models.py:1088
+#: aleksis/core/models.py:992
 msgid "Custom menus"
 msgstr "Пользовательские меню"
 
-#: aleksis/core/models.py:1075 aleksis/core/models.py:1076
-#: aleksis/core/models.py:1098
+#: aleksis/core/models.py:1002
 msgid "Menu"
 msgstr "Меню"
 
-#: aleksis/core/models.py:1085 aleksis/core/models.py:1086
-#: aleksis/core/models.py:1108
+#: aleksis/core/models.py:1012
 msgid "Custom menu item"
 msgstr "Пункт пользовательского меню"
 
-#: aleksis/core/models.py:1086 aleksis/core/models.py:1087
-#: aleksis/core/models.py:1109
+#: aleksis/core/models.py:1013
 msgid "Custom menu items"
 msgstr "Пункты пользовательского меню"
 
-#: aleksis/core/models.py:1111 aleksis/core/models.py:1112
-#: aleksis/core/models.py:1134
+#: aleksis/core/models.py:1037
 msgid "Title of type"
 msgstr "Название типа"
 
-#: aleksis/core/models.py:1118 aleksis/core/templates/core/group/full.html:50
-#: aleksis/core/models.py:1119 aleksis/core/models.py:1141
+#: aleksis/core/models.py:1044 aleksis/core/templates/core/group/full.html:50
 msgid "Group type"
 msgstr "Тип группы"
 
-#: aleksis/core/models.py:1119
+#: aleksis/core/models.py:1045
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
-#: aleksis/core/models.py:1120 aleksis/core/models.py:1142
 msgid "Group types"
 msgstr "Типы групп"
 
-#: aleksis/core/models.py:1132 aleksis/core/models.py:1133
-#: aleksis/core/models.py:1155
+#: aleksis/core/models.py:1056
 msgid "Can view system status"
 msgstr "Может просматривать состояние системы"
 
-#: aleksis/core/models.py:1133 aleksis/core/models.py:1134
-#: aleksis/core/models.py:1156
+#: aleksis/core/models.py:1057
 msgid "Can manage data"
 msgstr "Может управлять данными"
 
-#: aleksis/core/models.py:1134 aleksis/core/models.py:1135
-#: aleksis/core/models.py:1157
+#: aleksis/core/models.py:1058
 msgid "Can impersonate"
 msgstr "Может маскироваться"
 
-#: aleksis/core/models.py:1135 aleksis/core/models.py:1136
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1059
 msgid "Can use search"
 msgstr "Может использовать поиск"
 
-#: aleksis/core/models.py:1136 aleksis/core/models.py:1137
-#: aleksis/core/models.py:1159
+#: aleksis/core/models.py:1060
 msgid "Can change site preferences"
 msgstr "Может менять свойства сайта"
 
-#: aleksis/core/models.py:1137 aleksis/core/models.py:1138
-#: aleksis/core/models.py:1160
+#: aleksis/core/models.py:1061
 msgid "Can change person preferences"
 msgstr "Может менять персональные свойства"
 
-#: aleksis/core/models.py:1138 aleksis/core/models.py:1139
-#: aleksis/core/models.py:1161
+#: aleksis/core/models.py:1062
 msgid "Can change group preferences"
 msgstr "Может менять свойства группы"
 
-#: aleksis/core/models.py:1139 aleksis/core/models.py:1140
-#: aleksis/core/models.py:1162
+#: aleksis/core/models.py:1063
 msgid "Can test PDF generation"
 msgstr "Может генерировать тестовые PDF"
 
-#: aleksis/core/models.py:1140 aleksis/core/models.py:1141
-#: aleksis/core/models.py:1163
+#: aleksis/core/models.py:1064
 msgid "Can invite persons"
 msgstr "Может приглашать других"
 
-#: aleksis/core/models.py:1176 aleksis/core/models.py:1177
-#: aleksis/core/models.py:1199
+#: aleksis/core/models.py:1065
+#, fuzzy
+#| msgid "Birthday Calendar"
+msgid "Can view birthday calendar"
+msgstr "Календарь Дней Рождения"
+
+#: aleksis/core/models.py:1092
 msgid "Related data check task"
 msgstr "Задание проверки связанных данных"
 
-#: aleksis/core/models.py:1184 aleksis/core/models.py:1185
-#: aleksis/core/models.py:1207
+#: aleksis/core/models.py:1100
 msgid "Issue solved"
 msgstr "Проблема решена"
 
-#: aleksis/core/models.py:1185 aleksis/core/models.py:1186
-#: aleksis/core/models.py:1208
+#: aleksis/core/models.py:1101
 msgid "Notification sent"
 msgstr "Уведомление отправлено"
 
-#: aleksis/core/models.py:1198 aleksis/core/models.py:1199
-#: aleksis/core/models.py:1221
+#: aleksis/core/models.py:1114
 msgid "Data check result"
 msgstr "Результат проверки данных"
 
-#: aleksis/core/models.py:1199 aleksis/core/models.py:1200
-#: aleksis/core/models.py:1222
+#: aleksis/core/models.py:1115
 msgid "Data check results"
 msgstr "Результаты проверки данных"
 
-#: aleksis/core/models.py:1201 aleksis/core/models.py:1202
-#: aleksis/core/models.py:1224
+#: aleksis/core/models.py:1117
 msgid "Can run data checks"
 msgstr "Может запускать проверки данных"
 
-#: aleksis/core/models.py:1202 aleksis/core/models.py:1203
-#: aleksis/core/models.py:1225
+#: aleksis/core/models.py:1118
 msgid "Can solve data check problems"
 msgstr "Может решать проблемы проверки данных"
 
-#: aleksis/core/models.py:1209 aleksis/core/models.py:1210
-#: aleksis/core/models.py:1232
+#: aleksis/core/models.py:1125
 msgid "E-Mail address"
 msgstr "Адрес эл.почты"
 
-#: aleksis/core/models.py:1241 aleksis/core/models.py:1270
-#: aleksis/core/models.py:1292
+#: aleksis/core/models.py:1184 aleksis/core/models.py:1730
 msgid "Owner"
 msgstr "Владелец"
 
-#: aleksis/core/models.py:1245 aleksis/core/models.py:1274
-#: aleksis/core/models.py:1296
+#: aleksis/core/models.py:1188
 msgid "File expires at"
 msgstr "Файл действителен до"
 
-#: aleksis/core/models.py:1248 aleksis/core/models.py:1277
-#: aleksis/core/models.py:1299
+#: aleksis/core/models.py:1191
 msgid "Generated HTML file"
 msgstr "Сгенерированный файл HTML"
 
-#: aleksis/core/models.py:1251 aleksis/core/models.py:1280
-#: aleksis/core/models.py:1302
+#: aleksis/core/models.py:1194
 msgid "Generated PDF file"
 msgstr "Сгенерированный файл PDF"
 
-#: aleksis/core/models.py:1258 aleksis/core/models.py:1287
-#: aleksis/core/models.py:1309
+#: aleksis/core/models.py:1201
 msgid "PDF file"
 msgstr "Файл PDF"
 
-#: aleksis/core/models.py:1259 aleksis/core/models.py:1288
-#: aleksis/core/models.py:1310
+#: aleksis/core/models.py:1202
 msgid "PDF files"
 msgstr "Файлы PDF"
 
-#: aleksis/core/models.py:1264 aleksis/core/models.py:1293
-#: aleksis/core/models.py:1315
+#: aleksis/core/models.py:1207
 msgid "Task result"
 msgstr "Результат задания"
 
-#: aleksis/core/models.py:1267 aleksis/core/models.py:1296
-#: aleksis/core/models.py:1318
+#: aleksis/core/models.py:1210
 msgid "Task user"
 msgstr "Пользователь задания"
 
-#: aleksis/core/models.py:1271 aleksis/core/models.py:1300
-#: aleksis/core/models.py:1322
+#: aleksis/core/models.py:1214
 msgid "Back URL"
 msgstr "URL для возврата"
 
-#: aleksis/core/models.py:1272 aleksis/core/models.py:1301
-#: aleksis/core/models.py:1323
+#: aleksis/core/models.py:1215
 msgid "Progress title"
 msgstr "Название процесса"
 
-#: aleksis/core/models.py:1273 aleksis/core/models.py:1302
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1216
 msgid "Error message"
 msgstr "Сообщение об ошибке"
 
-#: aleksis/core/models.py:1274 aleksis/core/models.py:1303
-#: aleksis/core/models.py:1325
+#: aleksis/core/models.py:1217
 msgid "Success message"
 msgstr "Сообщение об успехе"
 
-#: aleksis/core/models.py:1275 aleksis/core/models.py:1304
-#: aleksis/core/models.py:1326
+#: aleksis/core/models.py:1218
 msgid "Redirect on success URL"
 msgstr "URL для перенаправления в случае успеха"
 
-#: aleksis/core/models.py:1277 aleksis/core/models.py:1306
-#: aleksis/core/models.py:1328
+#: aleksis/core/models.py:1220
 msgid "Additional button title"
 msgstr "Название дополнительной кнопки"
 
-#: aleksis/core/models.py:1279 aleksis/core/models.py:1308
-#: aleksis/core/models.py:1330
+#: aleksis/core/models.py:1222
 msgid "Additional button URL"
 msgstr "URL дополнительной кнопки"
 
-#: aleksis/core/models.py:1281 aleksis/core/models.py:1310
-#: aleksis/core/models.py:1332
+#: aleksis/core/models.py:1224
 msgid "Additional button icon"
 msgstr "Иконка дополнительной кнопки"
 
-#: aleksis/core/models.py:1283 aleksis/core/models.py:1312
-#: aleksis/core/models.py:1334
+#: aleksis/core/models.py:1226
 msgid "Result fetched"
 msgstr "Полученный результат"
 
-#: aleksis/core/models.py:1308 aleksis/core/models.py:1337
-#: aleksis/core/models.py:1359
+#: aleksis/core/models.py:1251
 msgid "Background task completed successfully"
 msgstr "Фоновое задание успешно завершено"
 
-#: aleksis/core/models.py:1309 aleksis/core/models.py:1338
-#: aleksis/core/models.py:1360
+#: aleksis/core/models.py:1252
 msgid "The background task '{}' has been completed successfully."
 msgstr "Фоновое задание \"{}\" успешно завершено."
 
-#: aleksis/core/models.py:1315 aleksis/core/models.py:1344
-#: aleksis/core/models.py:1366
+#: aleksis/core/models.py:1258
 msgid "Background task failed"
 msgstr "Ошибка фонового задания"
 
-#: aleksis/core/models.py:1316 aleksis/core/models.py:1345
-#: aleksis/core/models.py:1367
+#: aleksis/core/models.py:1259
 msgid "The background task '{}' has failed."
 msgstr "Ошибка фонового задания \"{}\"."
 
-#: aleksis/core/models.py:1325 aleksis/core/models.py:1354
-#: aleksis/core/models.py:1376
+#: aleksis/core/models.py:1268
 msgid "Background task"
 msgstr "Фоновое задание"
 
-#: aleksis/core/models.py:1339 aleksis/core/models.py:1368
-#: aleksis/core/models.py:1390
+#: aleksis/core/models.py:1282
 msgid "Task user assignment"
 msgstr "Назначение пользователя задания"
 
-#: aleksis/core/models.py:1340 aleksis/core/models.py:1369
-#: aleksis/core/models.py:1391
+#: aleksis/core/models.py:1283
 msgid "Task user assignments"
 msgstr "Назначения пользователей задания"
 
-#: aleksis/core/models.py:1356 aleksis/core/models.py:1385
-#: aleksis/core/models.py:1407
+#: aleksis/core/models.py:1299
 msgid "Additional attributes"
 msgstr "Дополнительные атрибуты"
 
-#: aleksis/core/models.py:1394 aleksis/core/models.py:1423
-#: aleksis/core/models.py:1445
+#: aleksis/core/models.py:1340
 msgid "Allowed scopes that clients can request"
 msgstr "Разрешённые пределы действия, которые могут запрашивать клиенты"
 
-#: aleksis/core/models.py:1404 aleksis/core/models.py:1433
-#: aleksis/core/models.py:1455
-msgid ""
-"This image will be shown as icon in the authorization flow. It should be "
-"squared."
-msgstr ""
-"Это изображение будет использоваться в качестве значка во время авторизации. "
-"Должно быть квадратным."
+#: aleksis/core/models.py:1350
+msgid "This image will be shown as icon in the authorization flow. It should be squared."
+msgstr "Это изображение будет использоваться в качестве значка во время авторизации. Должно быть квадратным."
 
-#: aleksis/core/models.py:1449 aleksis/core/models.py:1478
-#: aleksis/core/models.py:1500
+#: aleksis/core/models.py:1398
 msgid "Can view room timetable"
 msgstr "Может просмативать расписание комнаты"
 
-#: aleksis/core/models.py:1451 aleksis/core/models.py:1480
-#: aleksis/core/models.py:1502
+#: aleksis/core/models.py:1400
 msgid "Room"
 msgstr "Комната"
 
-#: aleksis/core/models.py:1452 aleksis/core/models.py:1481
-#: aleksis/core/models.py:1503
+#: aleksis/core/models.py:1401
 msgid "Rooms"
 msgstr "Комнаты"
 
-#: aleksis/core/preferences.py:25 aleksis/core/preferences.py:24
+#: aleksis/core/models.py:1424
+msgid "Start date and time"
+msgstr "Дата и время начала"
+
+#: aleksis/core/models.py:1426
+msgid "End date and time"
+msgstr "Дата и время окончания"
+
+#: aleksis/core/models.py:1427
+msgid "Timezone"
+msgstr "Часовой пояс"
+
+#: aleksis/core/models.py:1430
+msgid "Recurrences"
+msgstr "Повторы"
+
+#: aleksis/core/models.py:1436
+msgid "Amended base event"
+msgstr "Исправлено основное событие"
+
+#: aleksis/core/models.py:1561
+msgid "Calendar Event"
+msgstr "Календарное событие"
+
+#: aleksis/core/models.py:1562
+msgid "Calendar Events"
+msgstr "Календарные события"
+
+#: aleksis/core/models.py:1592
+msgid "Birthdays"
+msgstr "Дни Рождения"
+
+#: aleksis/core/models.py:1597
+msgid "{}'s birthday"
+msgstr "{} отмечает День Рождения"
+
+#: aleksis/core/models.py:1648 aleksis/core/models.py:1714
+msgid "Holidays"
+msgstr "Выходные"
+
+#: aleksis/core/models.py:1713
+msgid "Holiday"
+msgstr "Выходной"
+
+#: aleksis/core/models.py:1715
+#, fuzzy
+#| msgid "Birthday Calendar"
+msgid "Can view holiday calendar"
+msgstr "Календарь Дней Рождения"
+
+#: aleksis/core/models.py:1720
+#, fuzzy
+#| msgid "Personal Calendar URLs"
+msgid "Personal events"
+msgstr "URL-ссылка собственных календарей"
+
+#: aleksis/core/models.py:1724
+#, fuzzy
+#| msgid "Notification"
+msgid "Location"
+msgstr "Уведомление"
+
+#: aleksis/core/models.py:1807
+msgid "Email"
+msgstr ""
+
+#: aleksis/core/models.py:1810
+#, fuzzy
+#| msgid "Create group"
+msgid "Related group"
+msgstr "Создать группу"
+
+#: aleksis/core/models.py:1817
+#, fuzzy
+#| msgid "Internationalisation"
+msgid "Organisation"
+msgstr "Интернационализация"
+
+#: aleksis/core/models.py:1818
+#, fuzzy
+#| msgid "Invitations"
+msgid "Organisations"
+msgstr "Приглашения"
+
+#: aleksis/core/preferences.py:25
 msgid "General"
 msgstr "Общее"
 
-#: aleksis/core/preferences.py:26 aleksis/core/preferences.py:25
+#: aleksis/core/preferences.py:26
 msgid "School"
 msgstr "Школа / уч.заведение"
 
-#: aleksis/core/preferences.py:27 aleksis/core/preferences.py:26
+#: aleksis/core/preferences.py:27
 msgid "Theme"
 msgstr "Тема"
 
-#: aleksis/core/preferences.py:28 aleksis/core/preferences.py:27
+#: aleksis/core/preferences.py:28
 msgid "Mail"
 msgstr "Почта"
 
-#: aleksis/core/preferences.py:30 aleksis/core/preferences.py:29
+#: aleksis/core/preferences.py:30
 msgid "Footer"
 msgstr "Нижний колонтитул (подвал)"
 
-#: aleksis/core/preferences.py:31 aleksis/core/preferences.py:30
+#: aleksis/core/preferences.py:31
 msgid "Accounts"
 msgstr "Учётные записи"
 
-#: aleksis/core/preferences.py:32 aleksis/core/preferences.py:31
+#: aleksis/core/preferences.py:32
 msgid "Authentication"
 msgstr "Авторизация"
 
-#: aleksis/core/preferences.py:33 aleksis/core/preferences.py:32
+#: aleksis/core/preferences.py:33
 msgid "Internationalisation"
 msgstr "Интернационализация"
 
-#: aleksis/core/preferences.py:43
+#: aleksis/core/preferences.py:34
+msgid "Calendar"
+msgstr "Календарь"
+
+#: aleksis/core/preferences.py:44
 msgid "Site title"
 msgstr "Название сайта"
 
-#: aleksis/core/preferences.py:55
+#: aleksis/core/preferences.py:56
 msgid "Site description"
 msgstr "Описание сайта"
 
-#: aleksis/core/preferences.py:65
+#: aleksis/core/preferences.py:66
 msgid "Primary colour"
 msgstr "Основной цвет"
 
-#: aleksis/core/preferences.py:77
+#: aleksis/core/preferences.py:78
 msgid "Secondary colour"
 msgstr "Дополнительный цвет"
 
-#: aleksis/core/preferences.py:89
+#: aleksis/core/preferences.py:90
 msgid "Logo"
 msgstr "Логотип"
 
-#: aleksis/core/preferences.py:100
+#: aleksis/core/preferences.py:101
 msgid "Favicon"
 msgstr "Favicon"
 
-#: aleksis/core/preferences.py:111
+#: aleksis/core/preferences.py:112
 msgid "PWA-Icon"
 msgstr "Иконка PWA"
 
-#: aleksis/core/preferences.py:121
+#: aleksis/core/preferences.py:122
 msgid "PWA-Icon is maskable"
 msgstr "Иконка PWA может быть с маской"
 
-#: aleksis/core/preferences.py:133
+#: aleksis/core/preferences.py:134
 msgid "Mail out name"
 msgstr "Имя отправителя"
 
-#: aleksis/core/preferences.py:144
+#: aleksis/core/preferences.py:145
 msgid "Mail out address"
 msgstr "Адрес отправителя"
 
-#: aleksis/core/preferences.py:157
+#: aleksis/core/preferences.py:158
 msgid "Link to privacy policy"
 msgstr "Ссылка на политику приватности"
 
-#: aleksis/core/preferences.py:169
+#: aleksis/core/preferences.py:170
 msgid "Link to imprint"
 msgstr "Ссылка на отпечаток"
 
-#: aleksis/core/preferences.py:180
+#: aleksis/core/preferences.py:181
 msgid "Name format for addressing"
 msgstr "Формат имени в переписке"
 
-#: aleksis/core/preferences.py:197
+#: aleksis/core/preferences.py:198
 msgid "Channels to use for notifications"
 msgstr "Каналы для уведомлений"
 
-#: aleksis/core/preferences.py:208
+#: aleksis/core/preferences.py:209
 msgid "Select Design"
 msgstr "Выберите дизайн"
 
-#: aleksis/core/preferences.py:211
+#: aleksis/core/preferences.py:212
 msgid "Light mode"
 msgstr "Светлый режим"
 
-#: aleksis/core/preferences.py:224
+#: aleksis/core/preferences.py:225
 msgid "Regular expression to match primary group, e.g. '^Class .*'"
 msgstr "Регулярное выражение для поиска основной группы, напр. '^Class .*'"
 
-#: aleksis/core/preferences.py:235
+#: aleksis/core/preferences.py:236
 msgid "Field on person to match primary group against"
 msgstr "Поле для сопоставления лица с основной группой"
 
-#: aleksis/core/preferences.py:247
+#: aleksis/core/preferences.py:248
 msgid "Automatically create new persons for new users"
 msgstr "Новые физлица для новых пользователей создавать автоматически"
 
-#: aleksis/core/preferences.py:256
-msgid ""
-"Automatically link existing persons to new users by their e-mail address"
-msgstr ""
-"Связывать существующие физлица с новыми пользователями автоматически по эл."
-"адресам"
+#: aleksis/core/preferences.py:257
+msgid "Automatically link existing persons to new users by their e-mail address"
+msgstr "Связывать существующие физлица с новыми пользователями автоматически по эл.адресам"
 
-#: aleksis/core/preferences.py:267
+#: aleksis/core/preferences.py:268
 msgid "Display name of the school"
 msgstr "Название школы / уч.заведения для отображения"
 
-#: aleksis/core/preferences.py:278
+#: aleksis/core/preferences.py:279
 msgid "Official name of the school, e.g. as given by supervisory authority"
-msgstr ""
-"Официальное название школы / уч.заведения, напр., как в регистрационных "
-"документах"
+msgstr "Официальное название школы / уч.заведения, напр., как в регистрационных документах"
 
-#: aleksis/core/preferences.py:286
+#: aleksis/core/preferences.py:287
 msgid "Allow users to change their passwords"
 msgstr "Разрешить пользователям менять свои пароли"
 
-#: aleksis/core/preferences.py:294
+#: aleksis/core/preferences.py:295
 msgid "Allow users to reset their passwords"
 msgstr "Разрешить пользователям сбрасывать свои пароли"
 
-#: aleksis/core/preferences.py:302
+#: aleksis/core/preferences.py:303
 msgid "Enable signup"
 msgstr "Включить регистрацию"
 
-#: aleksis/core/preferences.py:310
+#: aleksis/core/preferences.py:311
 msgid "Regular expression for allowed usernames"
 msgstr "Регулярное выражение для разрешённых логинов"
 
-#: aleksis/core/preferences.py:318
+#: aleksis/core/preferences.py:319
 msgid "Enable invitations"
 msgstr "Включить приглашения"
 
-#: aleksis/core/preferences.py:326
+#: aleksis/core/preferences.py:327
 msgid "Length of invite code. (Default 3: abcde-acbde-abcde)"
 msgstr "Длина пригласительного кода. (По-умолчанию 3: abcde-abcde-abcde)"
 
-#: aleksis/core/preferences.py:334
+#: aleksis/core/preferences.py:335
 msgid "Size of packets. (Default 5: abcde)"
 msgstr "Размер пакетов. (По-умолчанию 5: abcde)"
 
-#: aleksis/core/preferences.py:345
+#: aleksis/core/preferences.py:346
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr "Разрешённые потоки грантов для приложений с OAuth"
 
-#: aleksis/core/preferences.py:358
+#: aleksis/core/preferences.py:359
 msgid "Send emails if data checks detect problems"
 msgstr "В случае обнаружения проблемы при проверке данных отправить эл.письмо"
 
-#: aleksis/core/preferences.py:369
+#: aleksis/core/preferences.py:370
 msgid "Email recipients for data checks problem emails"
 msgstr "Эл.адреса получателей для писем с проблемами при проверке данных"
 
-#: aleksis/core/preferences.py:380
+#: aleksis/core/preferences.py:381
 msgid "Email recipient groups for data checks problem emails"
 msgstr "Эл.адреса груп для писем с проблемами при проверке данных"
 
-#: aleksis/core/preferences.py:389
+#: aleksis/core/preferences.py:390
 msgid "Show dashboard to users without login"
 msgstr "Отображать информпанель анонимным пользователям"
 
-#: aleksis/core/preferences.py:398
+#: aleksis/core/preferences.py:399
 msgid "Allow users to edit their dashboard"
 msgstr "Разрешить пользователям редактировать свою информпанель"
 
-#: aleksis/core/preferences.py:409
+#: aleksis/core/preferences.py:410
 msgid "Fields on person model which are editable by themselves."
 msgstr "Поля с описанием физлица, которые можно редактировать самостоятельно."
 
-#: aleksis/core/preferences.py:424
-msgid ""
-"Editable fields on person model which should trigger a notification on change"
-msgstr ""
-"Изменяемые поля описания физлица, при изменении которых должен срабатывать "
-"триггер для уведомления"
+#: aleksis/core/preferences.py:425
+msgid "Editable fields on person model which should trigger a notification on change"
+msgstr "Изменяемые поля описания физлица, при изменении которых должен срабатывать триггер для уведомления"
 
-#: aleksis/core/preferences.py:438
+#: aleksis/core/preferences.py:439
 msgid "Contact for notification if a person changes their data"
 msgstr "Контакт для уведомлений при изменении кем-то своих данных"
 
-#: aleksis/core/preferences.py:449
+#: aleksis/core/preferences.py:450
 msgid "Prefer personal photos over avatars"
 msgstr "Отдавать предпочтение личным фото вместо аватаров"
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:460
 msgid "PDF file expiration duration"
 msgstr "Срок действия файла PDF"
 
-#: aleksis/core/preferences.py:460
+#: aleksis/core/preferences.py:461
 msgid "in minutes"
 msgstr "в минутах"
 
-#: aleksis/core/preferences.py:470
+#: aleksis/core/preferences.py:471
 msgid "Automatically update the dashboard and its widgets"
 msgstr "Автоматически обновлять информпанель и её виджеты"
 
-#: aleksis/core/preferences.py:480
+#: aleksis/core/preferences.py:481
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr "Автоматически обновлять информпанель и её виджеты (для всего сайта)"
 
-#: aleksis/core/preferences.py:490
-msgid "Country for phone number parsing"
-msgstr "Страна для парсинга номера телефона"
+#: aleksis/core/preferences.py:491
+msgid "Birthday calendar feed color"
+msgstr "Цвет календаря Дней Рождения"
+
+#: aleksis/core/preferences.py:503
+msgid "Holiday calendar feed color"
+msgstr "Цвет календаря Выходных"
+
+#: aleksis/core/preferences.py:515
+#, fuzzy
+#| msgid "Holiday calendar feed color"
+msgid "Personal events feed color"
+msgstr "Цвет календаря Выходных"
+
+#: aleksis/core/preferences.py:528
+msgid "Activated calendars"
+msgstr "Активные календари"
 
-#: aleksis/core/settings.py:549 aleksis/core/settings.py:551
+#: aleksis/core/preferences.py:546
+#, fuzzy
+#| msgid "Regular expression for allowed usernames"
+msgid "Comma-separated list of disallowed usernames"
+msgstr "Регулярное выражение для разрешённых логинов"
+
+#: aleksis/core/settings.py:548
 msgid "English"
 msgstr "Английский"
 
-#: aleksis/core/settings.py:550 aleksis/core/settings.py:552
+#: aleksis/core/settings.py:549
 msgid "German"
 msgstr "Немецкий"
 
-#: aleksis/core/settings.py:551 aleksis/core/settings.py:553
+#: aleksis/core/settings.py:550
 msgid "Ukrainian"
 msgstr "Украинский"
 
-#: aleksis/core/tables.py:25
-#: aleksis/core/templates/core/announcement/list.html:36
-#: aleksis/core/templates/core/group/full.html:26
-#: aleksis/core/templates/oauth2_provider/application/detail.html:17
-msgid "Edit"
-msgstr "Редактировать"
-
-#: aleksis/core/tables.py:27 aleksis/core/tables.py:148
-#: aleksis/core/tables.py:192
-#: aleksis/core/templates/core/announcement/list.html:22
-#: aleksis/core/tables.py:185 aleksis/core/tables.py:130
-#: aleksis/core/tables.py:167
-msgid "Actions"
-msgstr "Действия"
-
-#: 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/tables.py:96 aleksis/core/tables.py:112
+#: aleksis/core/tables.py:149
 #: aleksis/core/templates/core/announcement/list.html:42
 #: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
 #: aleksis/core/templates/oauth2_provider/application/detail.html:21
-#: aleksis/core/tables.py:183 aleksis/core/tables.py:97
-#: aleksis/core/tables.py:98 aleksis/core/tables.py:112
-#: aleksis/core/tables.py:128 aleksis/core/tables.py:165
 msgid "Delete"
 msgstr "Удалить"
 
+#: aleksis/core/tables.py:114 aleksis/core/tables.py:151
+#: aleksis/core/templates/core/announcement/list.html:22
+msgid "Actions"
+msgstr "Действия"
+
 #: aleksis/core/templates/403.html:14 aleksis/core/templates/500.html:10
 #: aleksis/core/templates/oauth2_provider/authorize.html:54
 msgid "Error"
@@ -1457,14 +1314,12 @@ 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"
-"            Если Вы думаете, что это ошибка AlekSIS, обратитесь, "
-"пожалуйста,\n"
+"            Если Вы думаете, что это ошибка AlekSIS, обратитесь, пожалуйста,\n"
 "            к администраторам сайта:\n"
 "          "
 
@@ -1491,14 +1346,12 @@ 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"
 "          "
 
@@ -1535,6 +1388,15 @@ msgstr "Привет!"
 msgid "Your AlekSIS team"
 msgstr "Команда AlekSIS"
 
+#: aleksis/core/templates/account/email/email_confirmation_message.txt:6
+#, python-format
+msgid ""
+"Someone tried to register an account with the username %(user_display)s and your e-mail address on %(site_domain)s.\n"
+"If it was you, please confirm the registration by clicking on the following link:"
+msgstr ""
+"Кто-то попытался зарегистрировать учётную запись на сайте %(site_domain)s с логином %(user_display)s и Вашим адресом эл.почты.\n"
+"Если это были Вы, подтвердите, пожалуйста, регистрацию, перейдя по ссылке:"
+
 #: aleksis/core/templates/account/email_confirm.html:5
 #: aleksis/core/templates/account/email_confirm.html:6
 #: aleksis/core/templates/account/email_confirm.html:17
@@ -1544,25 +1406,17 @@ 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:5
-#: aleksis/core/templates/account/password_change.html:6
-#: aleksis/core/templates/account/password_change.html:19
+#: aleksis/core/templates/account/password_change.html:15
+#: aleksis/core/templates/account/password_change.html:28
 #: aleksis/core/templates/account/password_reset_from_key.html:5
 #: aleksis/core/templates/account/password_reset_from_key.html:42
 #: aleksis/core/templates/account/password_reset_from_key.html:46
@@ -1571,36 +1425,13 @@ msgstr ""
 msgid "Change password"
 msgstr "Сменить пароль"
 
-#: aleksis/core/templates/account/password_change.html:12
-msgid "Forgot your current password? Click here to reset it:"
+#: aleksis/core/templates/account/password_change.html:19
+#, fuzzy
+#| msgid "Forgot your current password? Click here to reset it:"
+msgid "Forgot your current password?"
 msgstr "Забыли свой пароль? Нажмите тут для сброса:"
 
-#: aleksis/core/templates/account/password_change.html:12
-msgid "Forgot Password?"
-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 "Изменение пароля отключено"
-
-#: aleksis/core/templates/account/password_change_disabled.html:13
-msgid "Changing of password disabled."
-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"
-"          "
-msgstr ""
-"\n"
-"            Пользователям не разрешается менять свои пароли.\n"
-"            Если считаете это ошибкой, обратитесь к администраторам сайта.\n"
-"          "
-
+#: aleksis/core/templates/account/password_change.html:20
 #: aleksis/core/templates/account/password_reset.html:5
 #: aleksis/core/templates/account/password_reset.html:15
 #: aleksis/core/templates/account/password_reset.html:23
@@ -1612,12 +1443,8 @@ 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 ""
@@ -1640,10 +1467,8 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Мы отправили Вам эл.письмо. Если Вы не получите его на "
-"протяжении\n"
-"            нескольких минут, обратитесь, пожалуйста, к администраторам "
-"сайта.\n"
+"            Мы отправили Вам эл.письмо. Если Вы не получите его на протяжении\n"
+"            нескольких минут, обратитесь, пожалуйста, к администраторам сайта.\n"
 "          "
 
 #: aleksis/core/templates/account/password_reset_from_key.html:15
@@ -1654,16 +1479,13 @@ 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
@@ -1712,11 +1534,8 @@ 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.html:22
 #: aleksis/core/templates/socialaccount/signup.html:23
@@ -1760,17 +1579,13 @@ 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
@@ -1784,19 +1599,9 @@ msgstr ""
 "\n"
 "            Мы отправили Вам для проверки эл.письмо.\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 "Редактирование дополнительного поля"
-
-#: aleksis/core/templates/core/additional_field/list.html:14
-msgid "Create additional field"
-msgstr "Создать дополнительное поле"
-
 #: aleksis/core/templates/core/announcement/form.html:14
 #: aleksis/core/templates/core/announcement/form.html:21
 msgid "Edit announcement"
@@ -1827,6 +1632,12 @@ msgstr "Действует до"
 msgid "Recipients"
 msgstr "Получатели"
 
+#: aleksis/core/templates/core/announcement/list.html:36
+#: aleksis/core/templates/core/group/full.html:26
+#: aleksis/core/templates/oauth2_provider/application/detail.html:17
+msgid "Edit"
+msgstr "Редактировать"
+
 #: aleksis/core/templates/core/announcement/list.html:50
 msgid "There are no announcements."
 msgstr "Объявлений нет."
@@ -1884,23 +1695,19 @@ msgstr "Создать %(name)s"
 msgid "Edit default dashboard"
 msgstr "Редактировать стандартную информпанель"
 
-#: aleksis/core/templates/core/data_check/list.html:9
 #: aleksis/core/templates/core/data_check/list.html:10
 #: aleksis/core/templates/core/data_check/list.html:11
 msgid "Data checks"
 msgstr "Проверки данных"
 
-#: aleksis/core/templates/core/data_check/list.html:15
 #: aleksis/core/templates/core/data_check/list.html:16
 msgid "Check data again"
 msgstr "Проверить данные ещё раз"
 
-#: aleksis/core/templates/core/data_check/list.html:22
 #: aleksis/core/templates/core/data_check/list.html:23
 msgid "The system detected some problems with your data."
 msgstr "Система обнаружила некоторые проблемы с Вашими данными."
 
-#: aleksis/core/templates/core/data_check/list.html:23
 #: aleksis/core/templates/core/data_check/list.html:24
 msgid ""
 "Please go through all data and check whether some extra action is\n"
@@ -1909,52 +1716,42 @@ msgstr ""
 "Пожалуйста, пересмотрите внимательно все данные и проверьте не нужно ли\n"
 "          что-то сделать."
 
-#: aleksis/core/templates/core/data_check/list.html:31
 #: aleksis/core/templates/core/data_check/list.html:32
 msgid "Everything is fine."
 msgstr "Всё прекрасно."
 
-#: aleksis/core/templates/core/data_check/list.html:32
 #: aleksis/core/templates/core/data_check/list.html:33
 msgid "The system hasn't detected any problems with your data."
 msgstr "Система не обнаружила никаких проблем с Вашими данными."
 
-#: aleksis/core/templates/core/data_check/list.html:40
 #: aleksis/core/templates/core/data_check/list.html:41
 msgid "Detected problems"
 msgstr "Обнаруженные проблемы"
 
-#: aleksis/core/templates/core/data_check/list.html:45
 #: aleksis/core/templates/core/data_check/list.html:46
 msgid "Affected object"
 msgstr "Зависимые объекты"
 
-#: aleksis/core/templates/core/data_check/list.html:46
 #: aleksis/core/templates/core/data_check/list.html:47
 msgid "Detected problem"
 msgstr "Обнаружена проблема"
 
-#: aleksis/core/templates/core/data_check/list.html:47
 #: aleksis/core/templates/core/data_check/list.html:48
 msgid "Show details"
 msgstr "Подробнее"
 
-#: aleksis/core/templates/core/data_check/list.html:48
 #: aleksis/core/templates/core/data_check/list.html:49
 msgid "Options to solve the problem"
 msgstr "Варианты решения проблемы"
 
-#: aleksis/core/templates/core/data_check/list.html:63
 #: aleksis/core/templates/core/data_check/list.html:65
 msgid "Show object"
 msgstr "Посмотреть объект"
 
-#: aleksis/core/templates/core/data_check/list.html:86
 #: aleksis/core/templates/core/data_check/list.html:89
 msgid "Registered checks"
 msgstr "Зарегистрированные проверки"
 
-#: aleksis/core/templates/core/data_check/list.html:90
 #: aleksis/core/templates/core/data_check/list.html:93
 msgid ""
 "\n"
@@ -1974,39 +1771,29 @@ 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
@@ -2029,16 +1816,13 @@ 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
@@ -2064,8 +1848,7 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Выберите, пожалуйста, несколько групп в порядке, по какому "
-"привязывать.\n"
+"            Выберите, пожалуйста, несколько групп в порядке, по какому привязывать.\n"
 "          "
 
 #: aleksis/core/templates/core/group/child_groups.html:72
@@ -2079,18 +1862,14 @@ 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"
 "          "
 
@@ -2188,14 +1967,12 @@ msgstr "Домой"
 #: aleksis/core/templates/core/index.html:34
 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"
 "      "
 
@@ -2232,114 +2009,91 @@ msgstr "Состояние системы"
 msgid "System checks"
 msgstr "Системные проверки"
 
-#: aleksis/core/templates/core/pages/system_status.html:22
 #: aleksis/core/templates/core/pages/system_status.html:26
 msgid "Maintenance mode enabled"
 msgstr "Включен режим обслуживания"
 
-#: aleksis/core/templates/core/pages/system_status.html:24
+#: aleksis/core/templates/core/pages/system_status.html:28
 msgid ""
 "\n"
-"                Only admin and visitors from internal IPs can access the "
-"site.\n"
-"              "
+"                  Only admin and visitors from internal IPs can access the site.\n"
+"                "
 msgstr ""
 "\n"
-"                Доступ к сайту имеют только администратор и пользователи с "
-"внутренними IP-адресами.\n"
-"              "
+"                  Доступ к сайту имеют только администратор и пользователи с внутренними IP-адресами.\n"
+"                "
 
-#: aleksis/core/templates/core/pages/system_status.html:36
 #: aleksis/core/templates/core/pages/system_status.html:39
 msgid "Maintenance mode disabled"
 msgstr "Режим обслуживания выключен"
 
-#: aleksis/core/templates/core/pages/system_status.html:37
 #: aleksis/core/templates/core/pages/system_status.html:40
 msgid "Everyone can access the site."
 msgstr "Доступ к сайту есть у всех."
 
-#: aleksis/core/templates/core/pages/system_status.html:47
 #: aleksis/core/templates/core/pages/system_status.html:51
 msgid "Debug mode enabled"
 msgstr "Режим отладки включен"
 
-#: aleksis/core/templates/core/pages/system_status.html:49
 #: aleksis/core/templates/core/pages/system_status.html:53
 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"
+"                Веб-сервер во время ошибок пишет отладочную информацию. Не используйте в продакшене!\n"
 "              "
 
-#: aleksis/core/templates/core/pages/system_status.html:56
 #: aleksis/core/templates/core/pages/system_status.html:60
 msgid "Debug mode disabled"
 msgstr "Режим отладки отключен"
 
-#: aleksis/core/templates/core/pages/system_status.html:58
 #: aleksis/core/templates/core/pages/system_status.html:62
 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"
+"                Режим отладки отключен. В случае ошибок будут отображаться стандартные страницы об ошибках.\n"
 "              "
 
-#: aleksis/core/templates/core/pages/system_status.html:71
 #: aleksis/core/templates/core/pages/system_status.html:75
 msgid "System health checks"
 msgstr "Проверки работы системы"
 
-#: aleksis/core/templates/core/pages/system_status.html:77
 #: aleksis/core/templates/core/pages/system_status.html:81
 msgid "Service"
 msgstr "Служба"
 
-#: aleksis/core/templates/core/pages/system_status.html:78
-#: aleksis/core/templates/core/pages/system_status.html:119
 #: aleksis/core/templates/core/pages/system_status.html:82
 #: aleksis/core/templates/core/pages/system_status.html:123
 msgid "Status"
 msgstr "Состояние"
 
-#: aleksis/core/templates/core/pages/system_status.html:79
 #: aleksis/core/templates/core/pages/system_status.html:83
 msgid "Time taken"
 msgstr "Продолжительность"
 
-#: aleksis/core/templates/core/pages/system_status.html:100
 #: aleksis/core/templates/core/pages/system_status.html:104
 msgid "seconds"
 msgstr "сек"
 
-#: aleksis/core/templates/core/pages/system_status.html:111
 #: aleksis/core/templates/core/pages/system_status.html:115
 msgid "Celery task results"
 msgstr "Результаты выполнения Celery"
 
-#: aleksis/core/templates/core/pages/system_status.html:116
+#: aleksis/core/templates/core/pages/system_status.html:120
 #: aleksis/core/templates/templated_email/celery_failure.email:9
 #: aleksis/core/templates/templated_email/celery_failure.email:28
-#: aleksis/core/templates/core/pages/system_status.html:120
 msgid "Task"
 msgstr "Задания"
 
-#: aleksis/core/templates/core/pages/system_status.html:117
 #: aleksis/core/templates/core/pages/system_status.html:121
 msgid "ID"
 msgstr "ID"
 
-#: aleksis/core/templates/core/pages/system_status.html:118
 #: aleksis/core/templates/core/pages/system_status.html:122
 msgid "Date done"
 msgstr "Время завершения"
@@ -2352,13 +2106,11 @@ 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"
+"        Эта простая страница может помочь проверить корректность настроек встроенной системы генерирования PDF.\n"
 "      "
 
 #: aleksis/core/templates/core/partials/announcements.html:8
@@ -2416,14 +2168,11 @@ msgstr "Неизвестно"
 #: aleksis/core/templates/core/partials/splash_screen.html:11
 msgid ""
 "\n"
-"      This webbrowser doesn't support JavaScript, or its execution is "
-"blocked. Please use another browser to continue.\n"
+"      This webbrowser doesn't support JavaScript, or its execution is blocked. Please use another browser to continue.\n"
 "    "
 msgstr ""
 "\n"
-"      Этот веб-браузер не поддерживает JavaScript или его обработка "
-"заблокирована. Для продолжения воспользуйтесь, пожалуйста, другим "
-"браузером.\n"
+"      Этот веб-браузер не поддерживает JavaScript или его обработка заблокирована. Для продолжения воспользуйтесь, пожалуйста, другим браузером.\n"
 "    "
 
 #: aleksis/core/templates/core/partials/splash_screen.html:17
@@ -2505,17 +2254,6 @@ msgstr "Фильтр физлиц"
 msgid "Selected persons"
 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 "Создать Учебный год"
-
-#: aleksis/core/templates/core/school_term/edit.html:6
-#: aleksis/core/templates/core/school_term/edit.html:7
-msgid "Edit school term"
-msgstr "Редактировать Учебный год"
-
 #: aleksis/core/templates/dynamic_preferences/form.html:5
 msgid "Preferences"
 msgstr "Свойства"
@@ -2546,11 +2284,8 @@ 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"
@@ -2594,12 +2329,10 @@ msgstr "Приглашение по эл.почте"
 msgid "Generate invitation code"
 msgstr "Создать код приглашения"
 
-#: aleksis/core/templates/invitations/forms/_invite.html:29
 #: aleksis/core/templates/invitations/forms/_invite.html:30
 msgid "Generate code"
 msgstr "Генерирование кода"
 
-#: aleksis/core/templates/invitations/forms/_invite.html:33
 #: aleksis/core/templates/invitations/forms/_invite.html:34
 msgid "Invitations"
 msgstr "Приглашения"
@@ -2616,7 +2349,6 @@ msgstr "Регистрация приложения OAuth2"
 
 #: aleksis/core/templates/oauth2_provider/application/create.html:14
 #: aleksis/core/templates/oauth2_provider/application/edit.html:14
-#: aleksis/core/templates/oauth2_provider/authorized-token-delete.html:24
 #: aleksis/core/templates/two_factor/_wizard_actions.html:6
 msgid "Cancel"
 msgstr "Отменить"
@@ -2690,53 +2422,24 @@ msgstr "Разрешить"
 msgid "Disallow"
 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 "Отозвать доступ"
-
-#: aleksis/core/templates/oauth2_provider/authorized-token-delete.html:12
-msgid "Are you sure to revoke the access for this application?"
-msgstr "Ви действительно хотите отозвать доступ для этого приложения?"
-
-#: aleksis/core/templates/oauth2_provider/authorized-token-delete.html:20
-msgid "Revoke"
-msgstr "Отозвать"
-
-#: aleksis/core/templates/oauth2_provider/authorized-tokens.html:5
-#: aleksis/core/templates/oauth2_provider/authorized-tokens.html:6
-msgid "Authorized applications"
-msgstr "Авторизованные приложения"
-
-#: aleksis/core/templates/oauth2_provider/authorized-tokens.html:33
-msgid "No authorized applications."
-msgstr "Авторизованных приложений нет."
-
 #: aleksis/core/templates/offline.html:5
 msgid "Network error"
 msgstr "Ошибка сети"
 
 #: aleksis/core/templates/offline.html:10
-msgid "Page not available offline."
-msgstr "В автономном режиме страница не доступна."
+msgid "No connection to server."
+msgstr "Нет соединения с сервером."
 
 #: aleksis/core/templates/offline.html:14
 msgid ""
 "\n"
-"      This page is not available offline. Since 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"
+"      This page is not available without a connection to the server. Please check your internet connection and try again.\n"
+"      If you are connected and the error persists, please contact the system administrators:\n"
 "    "
 msgstr ""
 "\n"
-"      Эта страница в автономном режимен не доступна. Возможно, у Вас "
-"проблема с интернетом. Убедитесь, что Ваш WiFi\n"
-"      или мобильный интернет включены и попробуйте ещё раз. Если считаете, "
-"что с подключением всё хорошо, обратитесь,\n"
-"      пожалуйста, к системным администраторам:\n"
+"      Эта страница без соединения с сервером недоступна. Проверьте наличие подключения к интернету и повторите попытку.\n"
+"      Если интернет работает и ошибка всё равно присутствует, обратитесь, пожалуйста, к системным администраторам:\n"
 "    "
 
 #: aleksis/core/templates/search/search.html:8
@@ -2771,14 +2474,12 @@ 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"
 "          "
 
@@ -2793,9 +2494,7 @@ msgstr "Удалить"
 
 #: aleksis/core/templates/socialaccount/connections.html:34
 msgid "You currently have no third-party accounts connected to this account."
-msgstr ""
-"Сейчас у Вас нет учётных записей третих сторон, соединённых с этой учётной "
-"записью."
+msgstr "Сейчас у Вас нет учётных записей третих сторон, соединённых с этой учётной записью."
 
 #: aleksis/core/templates/socialaccount/connections.html:37
 msgid "Add a Third-party Account"
@@ -2825,15 +2524,11 @@ 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
@@ -2843,8 +2538,7 @@ msgid ""
 "        %(site_name)s. As a final step, please complete the following form:"
 msgstr ""
 "Вы на пути к использованию своей учётной записи %(provider_name)s\n"
-"        для входа в %(site_name)s. Заполните, пожалуйста, для завершения эту "
-"форму:"
+"        для входа в %(site_name)s. Заполните, пожалуйста, для завершения эту форму:"
 
 #: aleksis/core/templates/socialaccount/snippets/provider_list.html:12
 #, python-format
@@ -2933,25 +2627,21 @@ 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"
+"   Уделите, пожалуйста, немного времени для их проверки и решения проблем, или же отметьте их для игнорирования.\n"
 "  "
 
 #: aleksis/core/templates/templated_email/data_checks.email:23
@@ -2962,6 +2652,23 @@ msgstr "Описание проблемы"
 msgid "Count of objects with new problems"
 msgstr "Количество объектов с новыми проблемами"
 
+#: aleksis/core/templates/templated_email/invitation.email:4
+#, python-format
+msgid "Invitation to register on %(site)s"
+msgstr "Приглашение зарегистрироваться на %(site)s"
+
+#: aleksis/core/templates/templated_email/invitation.email:6
+#: aleksis/core/templates/templated_email/invitation.email:14
+#, python-format
+msgid "Hello %(person)s"
+msgstr "Привет, %(person)s"
+
+#: aleksis/core/templates/templated_email/invitation.email:9
+#: aleksis/core/templates/templated_email/invitation.email:18
+#, python-format
+msgid "you have been invited to register on %(site)s. If you would like to accept this invitation, please click on the following link:"
+msgstr "Вы приглашены зарегистрироваться на %(site)s. Если хотите принять приглашение, перейдите по указанной ссылке:"
+
 #: aleksis/core/templates/templated_email/notification.email:4
 msgid "New notification for"
 msgstr "Новое уведомление для"
@@ -3034,22 +2741,16 @@ 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"
+"        телефонные номера недоступны. Резервные токены, указанные ниже, могут быть\n"
+"        использованы для верификации входа. Когда Вы используете все резервные токены,\n"
+"        Вы сможете сгенерировать новый набор резервных токенов. Действительными будут только\n"
 "        токены, указанные ниже.\n"
 "      "
 
@@ -3100,9 +2801,7 @@ msgstr ""
 
 #: aleksis/core/templates/two_factor/core/login.html:51
 msgid "Please login with your account to use the external application."
-msgstr ""
-"Для использования внешнего приложения войдите, пожалуйста, в свою учётную "
-"запись."
+msgstr "Для использования внешнего приложения войдите, пожалуйста, в свою учётную запись."
 
 #: aleksis/core/templates/two_factor/core/login.html:58
 msgid "Please login to see this page."
@@ -3111,83 +2810,67 @@ msgstr "Для просмотра этой страницы, пожалуйст
 #: aleksis/core/templates/two_factor/core/login.html:69
 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"
 "                        которые Вы услышите.\n"
 "                      "
 
 #: aleksis/core/templates/two_factor/core/login.html:74
 msgid ""
 "\n"
-"                        We sent you a text message, please enter the code we "
-"sent.\n"
+"                        We sent you a text message, please enter the code we sent.\n"
 "                      "
 msgstr ""
 "\n"
-"                        Мы отправили Вам текстовое сообщение. Напишите, "
-"пожалуйста, полученный код.\n"
+"                        Мы отправили Вам текстовое сообщение. Напишите, пожалуйста, полученный код.\n"
 "                      "
 
 #: aleksis/core/templates/two_factor/core/login.html:78
 msgid ""
 "\n"
-"                        We sent you an email, please enter the code we "
-"sent.\n"
+"                        We sent you an email, please enter the code we sent.\n"
 "                      "
 msgstr ""
 "\n"
-"                        Мы отправили Вам на эл.почту код. Введите, "
-"пожалуйста, его.\n"
+"                        Мы отправили Вам на эл.почту код. Введите, пожалуйста, его.\n"
 "                      "
 
 #: aleksis/core/templates/two_factor/core/login.html:82
 msgid ""
 "\n"
-"                        Please use your Webauthn-compatible device to "
-"authenticate.\n"
+"                        Please use your Webauthn-compatible device to authenticate.\n"
 "                      "
 msgstr ""
 "\n"
-"                        Пожалуйста, для аутентификации пользуйтесь "
-"устройством, совместимым с Webauthn.\n"
+"                        Пожалуйста, для аутентификации пользуйтесь устройством, совместимым с Webauthn.\n"
 "                      "
 
 #: aleksis/core/templates/two_factor/core/login.html:86
 msgid ""
 "\n"
-"                        Please enter the code generated by your code "
-"generator.\n"
+"                        Please enter the code generated by your code generator.\n"
 "                      "
 msgstr ""
 "\n"
-"                        Введите, пожалуйста, токен с Вашего генератора "
-"токенов.\n"
+"                        Введите, пожалуйста, токен с Вашего генератора токенов.\n"
 "                      "
 
 #: aleksis/core/templates/two_factor/core/login.html:91
 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"
+"                      Эти токены были сгенерированы, чтобы Вы распечатали их и сохранили в надёжном месте.\n"
+"                      Для входа укажите, пожалуйста, один из резервных токенов.\n"
 "                    "
 
 #: aleksis/core/templates/two_factor/core/login.html:119
@@ -3200,8 +2883,7 @@ msgstr "Или можете воспользоваться альтернати
 
 #: aleksis/core/templates/two_factor/core/login.html:133
 msgid "As a last resort, you can use a backup token:"
-msgstr ""
-"В качестве последней возможности можете воспользоваться резервным токеном:"
+msgstr "В качестве последней возможности можете воспользоваться резервным токеном:"
 
 #: aleksis/core/templates/two_factor/core/login.html:136
 msgid "Use Backup Token"
@@ -3218,16 +2900,12 @@ 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 "
-"this\n"
+"          two-factor authentication for security reasons. You need to enable this\n"
 "          security feature in order to access this page."
 msgstr ""
-"Для просмотра запрошенной страницы, с оглядкой на безопасность, необходима "
-"дополнительная\n"
-"          проверка пользователя с использованием двухфакторной "
-"аутентификации.\n"
-"          Для доступа к данной странице Вы должны включить эти функции "
-"безопасности."
+"Для просмотра запрошенной страницы, с оглядкой на безопасность, необходима дополнительная\n"
+"          проверка пользователя с использованием двухфакторной аутентификации.\n"
+"          Для доступа к данной странице Вы должны включить эти функции безопасности."
 
 #: aleksis/core/templates/two_factor/core/otp_required.html:16
 msgid "Go back"
@@ -3269,10 +2947,8 @@ msgid ""
 "      "
 msgstr ""
 "\n"
-"        Вы устанавливаете для своей учётной записи новый уровень "
-"безопасности.\n"
-"        Для добавления двухфакторной аутентификации пройдите несколько "
-"шагов\n"
+"        Вы устанавливаете для своей учётной записи новый уровень безопасности.\n"
+"        Для добавления двухфакторной аутентификации пройдите несколько шагов\n"
 "        мастера настройки.\n"
 "      "
 
@@ -3283,24 +2959,20 @@ msgid ""
 "      "
 msgstr ""
 "\n"
-"        Выберите, пожалуйста, метод аутентификации, который Вы хотите "
-"использовать:\n"
+"        Выберите, пожалуйста, метод аутентификации, который Вы хотите использовать:\n"
 "      "
 
 #: aleksis/core/templates/two_factor/core/setup.html:27
 msgid ""
 "\n"
 "        To start using a code 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"
+"        любимым приложением для двухфакторной аутентификации (TOTP) и отсканируйте QR-код, который видите ниже.\n"
 "        После этого напишите сгенерированный программой токен.\n"
 "      "
 
@@ -3341,13 +3013,11 @@ msgstr ""
 #: aleksis/core/templates/two_factor/core/setup.html:60
 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"
+"            Мы сейчас звоним на Ваш номер, – напишите, пожалуйста, цифры, которые услышите.\n"
 "          "
 
 #: aleksis/core/templates/two_factor/core/setup.html:66
@@ -3357,46 +3027,25 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Мы отправили Вам текстовое сообщение. Напишите, пожалуйста, "
-"полученный код.\n"
+"            Мы отправили Вам текстовое сообщение. Напишите, пожалуйста, полученный код.\n"
 "          "
 
 #: aleksis/core/templates/two_factor/core/setup.html:73
 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"
 "        "
 
-#: aleksis/core/templates/two_factor/core/setup.html:83
-msgid ""
-"\n"
-"        To identify and verify your YubiKey, please insert a\n"
-"        token in the field below. Your YubiKey will be linked to your\n"
-"        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"
@@ -3405,8 +3054,7 @@ msgstr "Двухфакторная аутентификация успешно 
 #: aleksis/core/templates/two_factor/core/setup_complete.html:13
 msgid ""
 "\n"
-"        Congratulations, you've successfully enabled two-factor "
-"authentication.\n"
+"        Congratulations, you've successfully enabled two-factor authentication.\n"
 "      "
 msgstr ""
 "\n"
@@ -3427,16 +3075,13 @@ msgstr "Создать резервные коды"
 msgid ""
 "\n"
 "          However, it might happen that you don't have access to\n"
-"          your primary device. To enable account recovery, generate backup "
-"codes\n"
+"          your primary device. To enable account recovery, generate backup codes\n"
 "          or add other authentication methods.\n"
 "        "
 msgstr ""
 "\n"
-"          Между прочим, может так случиться, что у Вас не будет доступа к "
-"своему основному\n"
-"          устройству. Для включения восстановления учётки создайте резервные "
-"коды\n"
+"          Между прочим, может так случиться, что у Вас не будет доступа к своему основному\n"
+"          устройству. Для включения восстановления учётки создайте резервные коды\n"
 "          или добавьте другие методы аутентификации.\n"
 "        "
 
@@ -3450,22 +3095,24 @@ 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?"
-msgstr ""
-"Вы отключаете двухфакторную аутентификацию. Это снизит защиту Вашей учётной "
-"записи. Вы уверены?"
+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 "Отключить"
 
-#: aleksis/core/util/notifications.py:64
+#: aleksis/core/util/auth_helpers.py:155
+#, fuzzy
+#| msgid "This username is already in use."
+msgid "This username is not allowed."
+msgstr "Этот логин уже занят."
+
+#: aleksis/core/util/notifications.py:67
 msgid "E-Mail"
 msgstr "Эл.почта"
 
-#: aleksis/core/util/notifications.py:65
+#: aleksis/core/util/notifications.py:68
 msgid "SMS"
 msgstr "СМС"
 
@@ -3489,309 +3136,276 @@ msgstr "Во время создания файла PDF возникла про
 msgid "Download PDF"
 msgstr "Скачать PDF"
 
-#: aleksis/core/views.py:280 aleksis/core/views.py:285
-msgid "The school term has been created."
-msgstr "Учебный год создан."
-
-#: aleksis/core/views.py:292 aleksis/core/views.py:297
-msgid "The school term has been saved."
-msgstr "Учебный год сохранён."
-
-#: aleksis/core/views.py:396 aleksis/core/views.py:401
-#: aleksis/core/views.py:371
+#: aleksis/core/views.py:354
 msgid "The child groups were successfully saved."
 msgstr "Дочерние группы сохранены."
 
-#: aleksis/core/views.py:415 aleksis/core/views.py:425
-#: aleksis/core/views.py:420 aleksis/core/views.py:430
-#: aleksis/core/views.py:390 aleksis/core/views.py:400
+#: aleksis/core/views.py:373 aleksis/core/views.py:383
 msgid "The person has been saved."
 msgstr "Физлицо сохранено."
 
-#: aleksis/core/views.py:475 aleksis/core/views.py:480
-#: aleksis/core/views.py:450
+#: aleksis/core/views.py:432
 msgid "The group has been saved."
 msgstr "Группа сохранена."
 
-#: aleksis/core/views.py:558 aleksis/core/views.py:588
+#: aleksis/core/views.py:480
+msgid "Maintenance mode was turned on successfully."
+msgstr "Режим обслуживания успешно активирован."
+
+#: aleksis/core/views.py:482
+msgid "Maintenance mode was turned off successfully."
+msgstr "Режим обслуживания успешно выключен."
+
+#: aleksis/core/views.py:539
 msgid "The announcement has been saved."
 msgstr "Объявление сохранено."
 
-#: aleksis/core/views.py:574 aleksis/core/views.py:604
+#: aleksis/core/views.py:555
 msgid "The announcement has been deleted."
 msgstr "Объявление удалено."
 
-#: aleksis/core/views.py:643 aleksis/core/views.py:673
+#: aleksis/core/views.py:624
 msgid "The requested preference registry does not exist"
 msgstr "Журнал с запрошенными свойствами не существует"
 
-#: aleksis/core/views.py:662 aleksis/core/views.py:692
+#: aleksis/core/views.py:643
 msgid "The preferences have been saved successfully."
 msgstr "Свойства сохранены."
 
-#: aleksis/core/views.py:686 aleksis/core/views.py:716
+#: aleksis/core/views.py:667
 msgid "The person has been deleted."
 msgstr "Физлицо удалено."
 
-#: aleksis/core/views.py:700 aleksis/core/views.py:730
+#: aleksis/core/views.py:681
 msgid "The group has been deleted."
 msgstr "Группа удалена."
 
-#: aleksis/core/views.py:732 aleksis/core/views.py:762
-msgid "The additional field has been saved."
-msgstr "Дополнительное поле сохранено."
-
-#: aleksis/core/views.py:767 aleksis/core/views.py:797
-msgid "The additional field has been deleted."
-msgstr "Дополнительное поле удалено."
-
-#: aleksis/core/views.py:792 aleksis/core/views.py:822
+#: aleksis/core/views.py:705
 msgid "The group type has been saved."
 msgstr "Тип группы сохранён."
 
-#: aleksis/core/views.py:823 aleksis/core/views.py:853
+#: aleksis/core/views.py:736
 msgid "The group type has been deleted."
 msgstr "Тип группы удалён."
 
-#: aleksis/core/views.py:858 aleksis/core/views.py:888
+#: aleksis/core/views.py:771
 msgid "Progress: Run data checks"
 msgstr "В процессе: Запуск проверки данных"
 
-#: aleksis/core/views.py:859 aleksis/core/views.py:889
+#: aleksis/core/views.py:772
 msgid "Run data checks …"
 msgstr "Запускается проверка данных …"
 
-#: aleksis/core/views.py:860 aleksis/core/views.py:890
+#: aleksis/core/views.py:773
 msgid "The data checks were run successfully."
 msgstr "Проверка данных успешно запущена."
 
-#: aleksis/core/views.py:861 aleksis/core/views.py:891
+#: aleksis/core/views.py:774
 msgid "There was a problem while running data checks."
 msgstr "Во время запуска проверки данных возникла проблема."
 
-#: aleksis/core/views.py:878 aleksis/core/views.py:908
+#: aleksis/core/views.py:791
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr "Вариант решения \"{solve_option_obj.verbose_name}\" "
 
-#: aleksis/core/views.py:888 aleksis/core/views.py:918
+#: aleksis/core/views.py:801
 msgid "The requested solve option does not exist"
 msgstr "Запрошенный вариант решения не существует"
 
-#: aleksis/core/views.py:921 aleksis/core/views.py:951
+#: aleksis/core/views.py:834
 msgid "The dashboard widget has been saved."
 msgstr "Виджет информпанели сохранён."
 
-#: aleksis/core/views.py:951 aleksis/core/views.py:981
+#: aleksis/core/views.py:864
 msgid "The dashboard widget has been created."
 msgstr "Виджет информпанели создан."
 
-#: aleksis/core/views.py:961 aleksis/core/views.py:991
+#: aleksis/core/views.py:874
 msgid "The dashboard widget has been deleted."
 msgstr "Виджет информпанели удалён."
 
-#: aleksis/core/views.py:1033 aleksis/core/views.py:1063
+#: aleksis/core/views.py:946
 msgid "Your dashboard configuration has been saved successfully."
 msgstr "Ваша конфигурация информпанели сохранена."
 
-#: aleksis/core/views.py:1035 aleksis/core/views.py:1065
+#: aleksis/core/views.py:948
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr "Конфигурация типовой/стандартной информпанели."
 
-#: aleksis/core/views.py:1106 aleksis/core/views.py:1136
+#: aleksis/core/views.py:1019
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr "Приглашение успешно создано. Код приглашения: {code}"
 
-#: aleksis/core/views.py:1203 aleksis/core/views.py:1233
+#: aleksis/core/views.py:1116
 msgid "We have successfully assigned the permissions."
 msgstr "Мы успешно назначили доступы."
 
-#: aleksis/core/views.py:1213 aleksis/core/views.py:1243
+#: aleksis/core/views.py:1126
 msgid "The global user permission has been deleted."
 msgstr "Глобальный пользовательский доступ удалён."
 
-#: aleksis/core/views.py:1223 aleksis/core/views.py:1253
+#: aleksis/core/views.py:1136
 msgid "The global group permission has been deleted."
 msgstr "Глобальный групповой доступ удалён."
 
-#: aleksis/core/views.py:1233 aleksis/core/views.py:1263
+#: aleksis/core/views.py:1146
 msgid "The object user permission has been deleted."
 msgstr "Объектный пользовательский доступ удалён."
 
-#: aleksis/core/views.py:1243 aleksis/core/views.py:1273
+#: aleksis/core/views.py:1156
 msgid "The object group permission has been deleted."
 msgstr "Объектный групповой доступ удалён."
 
-#: aleksis/core/views.py:1352 aleksis/core/views.py:1382
-msgid ""
-"The third-party account could not be disconnected because it is the only "
-"login method available."
+#: aleksis/core/views.py:1238
+msgid "We sent you an email with instructions for resetting your password."
 msgstr ""
-"Учётную запись третьей стороны нельзя отключить, т.к. это единственный "
-"способ входа."
 
-#: aleksis/core/views.py:1359 aleksis/core/views.py:1389
+#: aleksis/core/views.py:1262
+msgid "The third-party account could not be disconnected because it is the only login method available."
+msgstr "Учётную запись третьей стороны нельзя отключить, т.к. это единственный способ входа."
+
+#: aleksis/core/views.py:1269
 msgid "The third-party account has been successfully disconnected."
 msgstr "Учётная запись третьей стороны успешно отключена."
 
-#: aleksis/core/views.py:1435 aleksis/core/views.py:1465
-msgid ""
-"Person was invited successfully and an email with further instructions has "
-"been send to them."
-msgstr ""
-"Владелец указанного эл.адреса успешно приглашён. Инструкции о дальнейших "
-"действиях отправлены на эл.почту."
+#: aleksis/core/views.py:1345
+msgid "Person was invited successfully and an email with further instructions has been send to them."
+msgstr "Владелец указанного эл.адреса успешно приглашён. Инструкции о дальнейших действиях отправлены на эл.почту."
 
-#: aleksis/core/views.py:1446 aleksis/core/views.py:1476
+#: aleksis/core/views.py:1356
 msgid "Person was already invited."
 msgstr "Кто-то уже пригласил его/её."
 
-#: aleksis/core/apps.py:151
-msgid "You have been logged out successfully."
-msgstr "Вы успешно вышли."
+#~ msgid "Title of field"
+#~ msgstr "Название поля"
 
-#: aleksis/core/templates/core/pages/system_status.html:28
-msgid ""
-"\n"
-"                  Only admin and visitors from internal IPs can access the "
-"site.\n"
-"                "
-msgstr ""
-"\n"
-"                  Доступ к сайту имеют только администратор и пользователи с "
-"внутренними IP-адресами.\n"
-"                "
+#~ msgid "Type of field"
+#~ msgstr "Тип поля"
 
-#: aleksis/core/templates/offline.html:10
-msgid "No connection to server."
-msgstr "Нет соединения с сервером."
+#~ msgid "Required"
+#~ msgstr "Необходимое"
 
-#: aleksis/core/templates/offline.html:14
-msgid ""
-"\n"
-"      This page is not available without a connection to the server. Please "
-"check your internet connection and try again.\n"
-"      If you are connected and the error persists, please contact the system "
-"administrators:\n"
-"    "
-msgstr ""
-"\n"
-"      Эта страница без соединения с сервером недоступна. Проверьте наличие "
-"подключения к интернету и повторите попытку.\n"
-"      Если интернет работает и ошибка всё равно присутствует, обратитесь, "
-"пожалуйста, к системным администраторам:\n"
-"    "
+#~ msgid "Help text / description"
+#~ msgstr "Вспомогательный текст / описание"
 
-#: aleksis/core/templates/templated_email/invitation.email:4
-#, python-format
-msgid "Invitation to register on %(site)s"
-msgstr "Приглашение зарегистрироваться на %(site)s"
+#~ msgid "Addtitional field for groups"
+#~ msgstr "Дополнительное поле для групп"
 
-#: aleksis/core/templates/templated_email/invitation.email:6
-#: aleksis/core/templates/templated_email/invitation.email:14
-#, python-format
-msgid "Hello %(person)s"
-msgstr "Привет, %(person)s"
+#~ msgid "Addtitional fields for groups"
+#~ msgstr "Дополнительные поля для групп"
 
-#: aleksis/core/templates/templated_email/invitation.email:9
-#: aleksis/core/templates/templated_email/invitation.email:18
-#, python-format
-msgid ""
-"you have been invited to register on %(site)s. If you would like to accept "
-"this invitation, please click on the following link:"
-msgstr ""
-"Вы приглашены зарегистрироваться на %(site)s. Если хотите принять "
-"приглашение, перейдите по указанной ссылке:"
+#~ msgid "Additional fields"
+#~ msgstr "Дополнительные поля"
 
-#: aleksis/core/views.py:528
-msgid "Maintenance mode was turned on successfully."
-msgstr "Режим обслуживания успешно активирован."
+#~ msgid "Country for phone number parsing"
+#~ msgstr "Страна для парсинга номера телефона"
 
-#: aleksis/core/views.py:530
-msgid "Maintenance mode was turned off successfully."
-msgstr "Режим обслуживания успешно выключен."
+#~ msgid "Forgot Password?"
+#~ msgstr "Забыли пароль?"
 
-#: aleksis/core/models.py:1528
-msgid "Start date and time"
-msgstr "Дата и время начала"
+#~ msgid "Changing of password disabled"
+#~ msgstr "Изменение пароля отключено"
 
-#: aleksis/core/models.py:1530
-msgid "End date and time"
-msgstr "Дата и время окончания"
+#~ msgid "Changing of password disabled."
+#~ msgstr "Изменение пароля отключено."
 
-#: aleksis/core/models.py:1531
-msgid "Timezone"
-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"
+#~ "          "
+#~ msgstr ""
+#~ "\n"
+#~ "            Пользователям не разрешается менять свои пароли.\n"
+#~ "            Если считаете это ошибкой, обратитесь к администраторам сайта.\n"
+#~ "          "
 
-#: aleksis/core/models.py:1534
-msgid "Recurrences"
-msgstr "Повторы"
+#~ msgid "Edit additional field"
+#~ msgstr "Редактирование дополнительного поля"
 
-#: aleksis/core/models.py:1540
-msgid "Amended base event"
-msgstr "Исправлено основное событие"
+#~ msgid "Create additional field"
+#~ msgstr "Создать дополнительное поле"
 
-#: aleksis/core/models.py:1643
-msgid "Calendar Event"
-msgstr "Календарное событие"
+#~ msgid ""
+#~ "\n"
+#~ "                Only admin and visitors from internal IPs can access the site.\n"
+#~ "              "
+#~ msgstr ""
+#~ "\n"
+#~ "                Доступ к сайту имеют только администратор и пользователи с внутренними IP-адресами.\n"
+#~ "              "
 
-#: aleksis/core/models.py:1644
-msgid "Calendar Events"
-msgstr "Календарные события"
+#~ msgid "Create school term"
+#~ msgstr "Создать Учебный год"
 
-#: aleksis/core/models.py:1670
-msgid "Birthdays"
-msgstr "Дни Рождения"
+#~ msgid "Edit school term"
+#~ msgstr "Редактировать Учебный год"
 
-#: aleksis/core/models.py:1674
-msgid "{}'s birthday"
-msgstr "{} отмечает День Рождения"
+#~ msgid "Revoke access"
+#~ msgstr "Отозвать доступ"
 
-#: aleksis/core/models.py:1713 aleksis/core/models.py:1775
-msgid "Holidays"
-msgstr "Выходные"
+#~ msgid "Are you sure to revoke the access for this application?"
+#~ msgstr "Ви действительно хотите отозвать доступ для этого приложения?"
 
-#: aleksis/core/models.py:1774
-msgid "Holiday"
-msgstr "Выходной"
+#~ msgid "Revoke"
+#~ msgstr "Отозвать"
 
-#: aleksis/core/preferences.py:33
-msgid "Calendar"
-msgstr "Календарь"
+#~ msgid "Authorized applications"
+#~ msgstr "Авторизованные приложения"
 
-#: aleksis/core/preferences.py:490
-msgid "Birthday calendar feed color"
-msgstr "Цвет календаря Дней Рождения"
+#~ msgid "No authorized applications."
+#~ msgstr "Авторизованных приложений нет."
 
-#: aleksis/core/preferences.py:502
-msgid "Holiday calendar feed color"
-msgstr "Цвет календаря Выходных"
+#~ msgid "Page not available offline."
+#~ msgstr "В автономном режиме страница не доступна."
 
-#: aleksis/core/preferences.py:515
-msgid "Activated calendars"
-msgstr "Активные календари"
+#~ msgid ""
+#~ "\n"
+#~ "      This page is not available offline. Since 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/account/email/email_confirmation_message.txt:6
-#, python-format
-msgid ""
-"Someone tried to register an account with the username %(user_display)s and "
-"your e-mail address on %(site_domain)s.\n"
-"If it was you, please confirm the registration by clicking on the following "
-"link:"
-msgstr ""
-"Кто-то попытался зарегистрировать учётную запись на сайте %(site_domain)s с логином %(user_display)s и Вашим адресом эл.почты.\n"
-"Если это были Вы, подтвердите, пожалуйста, регистрацию, перейдя по ссылке:"
+#~ msgid ""
+#~ "\n"
+#~ "        To identify and verify your YubiKey, please insert a\n"
+#~ "        token in the field below. Your YubiKey will be linked to your\n"
+#~ "        account.\n"
+#~ "      "
+#~ msgstr ""
+#~ "\n"
+#~ "        Для идентификации и проверки Вашего YubiKey напишите,\n"
+#~ "        пожалуйста, ниже токен. Ваш YubiKey будет привязан к Вашей\n"
+#~ "        учётной записи.\n"
+#~ "      "
+
+#~ msgid "The school term has been created."
+#~ msgstr "Учебный год создан."
+
+#~ msgid "The school term has been saved."
+#~ msgstr "Учебный год сохранён."
+
+#~ msgid "The additional field has been saved."
+#~ msgstr "Дополнительное поле сохранено."
+
+#~ msgid "The additional field has been deleted."
+#~ msgstr "Дополнительное поле удалено."
 
 #~ 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"
 #~ "          "
 
 #~ msgid ""
@@ -3875,10 +3489,8 @@ msgstr ""
 #~ "      "
 #~ msgstr ""
 #~ "\n"
-#~ "        Не смотря на то, что мы Вам рекомендуем этого не делать, Вы "
-#~ "можете \n"
-#~ "        также отключить двухфакторную аутентификацию для своей учётной "
-#~ "записи.\n"
+#~ "        Не смотря на то, что мы Вам рекомендуем этого не делать, Вы можете \n"
+#~ "        также отключить двухфакторную аутентификацию для своей учётной записи.\n"
 #~ "      "
 
 #~ msgid ""
@@ -3890,14 +3502,10 @@ msgstr ""
 #~ msgstr ""
 #~ "\n"
 #~ "        Двухфакторная аутентификация для Вашей учётной записи\n"
-#~ "        не активирована. Для повышения безопасности учётной записи "
-#~ "включите\n"
+#~ "        не активирована. Для повышения безопасности учётной записи включите\n"
 #~ "        двухфакторную аутентификацию.\n"
 #~ "      "
 
-#~ msgid "Birthday Calendar"
-#~ msgstr "Календарь Дней Рождения"
-
 #~ msgid "A Calendar of Birthdays"
 #~ msgstr "Календарь Дней Рождения"
 
@@ -3960,9 +3568,6 @@ msgstr ""
 #~ msgid "Personal Calendar URL"
 #~ msgstr "URL-ссылка собственного календаря"
 
-#~ msgid "Personal Calendar URLs"
-#~ msgstr "URL-ссылка собственных календарей"
-
 #~ msgid "Available languages"
 #~ msgstr "Доступные языки"
 
@@ -3998,14 +3603,8 @@ msgstr ""
 #~ msgid "ICal Feeds"
 #~ msgstr "iCal-ленты"
 
-#~ 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). "
-#~ "Вы можете создать их столько, сколько будет необходимо и импортировать их "
-#~ "в ПО для работы с календарями."
+#~ 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). Вы можете создать их столько, сколько будет необходимо и импортировать их в ПО для работы с календарями."
 
 #~ msgid "Your iCal URLs"
 #~ msgstr "Ваши ссылки iCal"
@@ -4030,30 +3629,24 @@ msgstr ""
 
 #~ 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"
 #~ "            "
 
 #~ 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® – зарегистрированная торговая марка проекта с открытым исходным кодом AlekSIS, которая представлена Teckids e.V.\n"
 #~ "            "
 
 #~ msgid "Website of AlekSIS"
@@ -4067,18 +3660,14 @@ msgstr ""
 
 #~ 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"
+#~ "              Ядро и официальные дополнения AlekSIS лицензированы под лицензией EUPL, версии 1.2 или новее. Для получения информации\n"
+#~ "              о компонентах третих сторон, если таковы установлены, перейдите к соответствующим компонентам ниже.\n"
 #~ "              Эти лицензии обозначены такой отметкой:\n"
 #~ "            "
 
@@ -4096,13 +3685,11 @@ msgstr ""
 
 #~ 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"
+#~ "              Без активного JavaScript статус выполнения обновляться не сможет.\n"
 #~ "            "
 
 #~ msgid "Language"
@@ -4113,14 +3700,12 @@ msgstr ""
 
 #~ 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"
 #~ "            к Вашей учётной записи привязано фейковое физлицо.\n"
 #~ "          "
 
@@ -4133,10 +3718,8 @@ msgstr ""
 #~ msgstr ""
 #~ "\n"
 #~ "            Ваша учётная запись не связана с физлицом. Это значит,\n"
-#~ "            что у Вас нет доступа на к какой учебной информации. "
-#~ "Обратитесь,\n"
-#~ "            пожалуйста, к администраторам AlekSIS в Вашем учебном "
-#~ "заведении.\n"
+#~ "            что у Вас нет доступа на к какой учебной информации. Обратитесь,\n"
+#~ "            пожалуйста, к администраторам AlekSIS в Вашем учебном заведении.\n"
 #~ "          "
 
 #~ msgid "Impersonate"
diff --git a/aleksis/core/locale/tr_TR/LC_MESSAGES/django.po b/aleksis/core/locale/tr_TR/LC_MESSAGES/django.po
index 1e24c46a4d2b614b7cfd792269a18fc6b606a37e..e555d2b2490e53132d06acfaf8a4c2913db07c71 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: 2023-07-23 13:39+0200\n"
+"POT-Creation-Date: 2024-01-26 21:43+0100\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"
@@ -17,111 +17,130 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: aleksis/core/apps.py:151
+#: aleksis/core/apps.py:162
 msgid "You have been logged out successfully."
 msgstr ""
 
-#: aleksis/core/apps.py:161
+#: aleksis/core/apps.py:172
 msgid "OpenID Connect scope"
 msgstr ""
 
-#: aleksis/core/apps.py:162
+#: aleksis/core/apps.py:173
 msgid "Given name, family name, link to profile and picture if existing."
 msgstr ""
 
-#: aleksis/core/apps.py:163
+#: aleksis/core/apps.py:174
 msgid "Full home postal address"
 msgstr ""
 
-#: aleksis/core/apps.py:164
+#: aleksis/core/apps.py:175
 msgid "Email address"
 msgstr ""
 
-#: aleksis/core/apps.py:165
+#: aleksis/core/apps.py:176
 msgid "Home and mobile phone"
 msgstr ""
 
-#: aleksis/core/apps.py:166 aleksis/core/forms.py:231
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/apps.py:177 aleksis/core/forms.py:223
+#: aleksis/core/models.py:473 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 msgid "Groups"
 msgstr ""
 
-#: aleksis/core/data_checks.py:60
+#: aleksis/core/data_checks.py:67
 msgid "Ignore problem"
 msgstr ""
 
-#: aleksis/core/data_checks.py:188
+#: aleksis/core/data_checks.py:199
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/data_checks.py:284
+#: aleksis/core/data_checks.py:329
 msgid "Deactivate DashboardWidget"
 msgstr ""
 
-#: aleksis/core/data_checks.py:296
+#: aleksis/core/data_checks.py:341
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr ""
 
-#: aleksis/core/data_checks.py:297
+#: aleksis/core/data_checks.py:342
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
-#: aleksis/core/data_checks.py:320
-#, python-format
-msgid "Validate field %s of model %s."
+#: aleksis/core/data_checks.py:364
+#, python-brace-format
+msgid "Validate field {field} of model {model}."
 msgstr ""
 
-#: aleksis/core/data_checks.py:322
-#, python-format
-msgid "The field %s couldn't be validated successfully."
+#: aleksis/core/data_checks.py:367
+msgid "The field {} couldn't be validated successfully."
+msgstr ""
+
+#: aleksis/core/data_checks.py:389
+msgid "Ensure that there are no disallowed usernames."
+msgstr ""
+
+#: aleksis/core/data_checks.py:390
+msgid "A user with a disallowed username was reported automatically."
 msgstr ""
 
-#: aleksis/core/filters.py:42 aleksis/core/templates/core/group/list.html:20
+#: aleksis/core/data_checks.py:411
+msgid "Change email address"
+msgstr ""
+
+#: aleksis/core/data_checks.py:416
+msgid "Ensure that email addresses are unique among all persons"
+msgstr ""
+
+#: aleksis/core/data_checks.py:417
+msgid "There was a non-unique email address."
+msgstr ""
+
+#: aleksis/core/filters.py:39 aleksis/core/templates/core/group/list.html:20
 #: aleksis/core/templates/core/person/list.html:24
 #: aleksis/core/templates/search/search.html:7
 #: aleksis/core/templates/search/search.html:22
 msgid "Search"
 msgstr ""
 
-#: aleksis/core/filters.py:59
+#: aleksis/core/filters.py:56
 msgid "Search by name"
 msgstr ""
 
-#: aleksis/core/filters.py:71
+#: aleksis/core/filters.py:68
 msgid "Search by contact details"
 msgstr ""
 
-#: aleksis/core/filters.py:92
+#: aleksis/core/filters.py:89
 msgid "Permission"
 msgstr ""
 
-#: aleksis/core/filters.py:100
+#: aleksis/core/filters.py:97
 msgid "Content type"
 msgstr ""
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:743
+#: aleksis/core/filters.py:110 aleksis/core/models.py:647
 msgid "User"
 msgstr ""
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:516
+#: aleksis/core/filters.py:132 aleksis/core/models.py:472
 msgid "Group"
 msgstr ""
 
-#: aleksis/core/forms.py:50 aleksis/core/forms.py:591
+#: aleksis/core/forms.py:48 aleksis/core/forms.py:574
 msgid "Base data"
 msgstr ""
 
-#: aleksis/core/forms.py:55 aleksis/core/tables.py:29
+#: aleksis/core/forms.py:53 aleksis/core/tables.py:29
 msgid "Address"
 msgstr ""
 
-#: aleksis/core/forms.py:56 aleksis/core/forms.py:600
+#: aleksis/core/forms.py:54 aleksis/core/forms.py:583
 msgid "Contact data"
 msgstr ""
 
-#: aleksis/core/forms.py:58
+#: aleksis/core/forms.py:56
 msgid "Advanced personal data"
 msgstr ""
 
@@ -141,7 +160,7 @@ msgstr ""
 msgid "This username is already in use."
 msgstr ""
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:154
+#: aleksis/core/forms.py:153 aleksis/core/models.py:147
 msgid "School term"
 msgstr ""
 
@@ -149,124 +168,124 @@ msgstr ""
 msgid "Common data"
 msgstr ""
 
-#: aleksis/core/forms.py:155 aleksis/core/forms.py:218
-#: aleksis/core/models.py:177 aleksis/core/templates/core/person/list.html:8
+#: aleksis/core/forms.py:155 aleksis/core/forms.py:210
+#: aleksis/core/models.py:168 aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
 msgstr ""
 
-#: aleksis/core/forms.py:156 aleksis/core/forms.py:602
-msgid "Additional data"
-msgstr ""
-
-#: aleksis/core/forms.py:157 aleksis/core/models.py:230
-#: aleksis/core/models.py:569 aleksis/core/tables.py:28
+#: aleksis/core/forms.py:156 aleksis/core/models.py:224
+#: aleksis/core/models.py:526 aleksis/core/tables.py:28
 msgid "Photo"
 msgstr ""
 
-#: aleksis/core/forms.py:210 aleksis/core/forms.py:213
-#: aleksis/core/models.py:97
+#: aleksis/core/forms.py:202 aleksis/core/forms.py:205
+#: aleksis/core/models.py:90
 msgid "Date"
 msgstr ""
 
-#: aleksis/core/forms.py:211 aleksis/core/forms.py:214
-#: aleksis/core/models.py:105
+#: aleksis/core/forms.py:203 aleksis/core/forms.py:206
+#: aleksis/core/models.py:98
 msgid "Time"
 msgstr ""
 
-#: aleksis/core/forms.py:244
+#: aleksis/core/forms.py:236
 msgid "From when until when should the announcement be displayed?"
 msgstr ""
 
-#: aleksis/core/forms.py:247
+#: aleksis/core/forms.py:239
 msgid "Who should see the announcement?"
 msgstr ""
 
-#: aleksis/core/forms.py:248
+#: aleksis/core/forms.py:240
 msgid "Write your announcement:"
 msgstr ""
 
-#: aleksis/core/forms.py:287
+#: aleksis/core/forms.py:279
 msgid "You are not allowed to create announcements which are only valid in the past."
 msgstr ""
 
-#: aleksis/core/forms.py:291
+#: aleksis/core/forms.py:283
 msgid "The from date and time must be earlier then the until date and time."
 msgstr ""
 
-#: aleksis/core/forms.py:300
+#: aleksis/core/forms.py:292
 msgid "You need at least one recipient."
 msgstr ""
 
-#: aleksis/core/forms.py:408
+#: aleksis/core/forms.py:392
 msgid "Invitation code"
 msgstr ""
 
-#: aleksis/core/forms.py:409
+#: aleksis/core/forms.py:393
 msgid "Please enter your invitation code."
 msgstr ""
 
-#: aleksis/core/forms.py:428 aleksis/core/models.py:205
+#: aleksis/core/forms.py:412 aleksis/core/models.py:197
 msgid "First name"
 msgstr ""
 
-#: aleksis/core/forms.py:429 aleksis/core/models.py:206
+#: aleksis/core/forms.py:413 aleksis/core/models.py:198
 msgid "Last name"
 msgstr ""
 
-#: aleksis/core/forms.py:438
+#: aleksis/core/forms.py:422
 msgid "A person is using this e-mail address"
 msgstr ""
 
-#: aleksis/core/forms.py:466
+#: aleksis/core/forms.py:450
 msgid "Who should get the permission?"
 msgstr ""
 
-#: aleksis/core/forms.py:467
+#: aleksis/core/forms.py:451
 msgid "On what?"
 msgstr ""
 
-#: aleksis/core/forms.py:493
+#: aleksis/core/forms.py:477
 msgid "Select objects which the permission should be granted for:"
 msgstr ""
 
-#: aleksis/core/forms.py:496
+#: aleksis/core/forms.py:480
 msgid "Grant the permission for all objects"
 msgstr ""
 
-#: aleksis/core/forms.py:504
+#: aleksis/core/forms.py:488
 msgid "You must select at least one group or person which should get the permission."
 msgstr ""
 
-#: aleksis/core/forms.py:509
+#: aleksis/core/forms.py:493
 msgid "You must grant the permission to all objects or to specific objects."
 msgstr ""
 
-#: aleksis/core/forms.py:596
+#: aleksis/core/forms.py:579
 msgid "Address data"
 msgstr ""
 
-#: aleksis/core/forms.py:608
+#: aleksis/core/forms.py:585
+msgid "Additional data"
+msgstr ""
+
+#: aleksis/core/forms.py:591
 msgid "Account data"
 msgstr ""
 
-#: aleksis/core/forms.py:615
+#: aleksis/core/forms.py:598
 msgid "Password"
 msgstr ""
 
-#: aleksis/core/forms.py:618
+#: aleksis/core/forms.py:601
 msgid "Password (again)"
 msgstr ""
 
-#: aleksis/core/forms.py:771
+#: aleksis/core/forms.py:753
 msgid "The selected action does not exist."
 msgstr ""
 
-#: aleksis/core/forms.py:782
+#: aleksis/core/forms.py:764
 msgid "You do not have permission to run {} on all selected objects."
 msgstr ""
 
-#: aleksis/core/forms.py:838
+#: aleksis/core/forms.py:820
 msgid "No valid selection."
 msgstr ""
 
@@ -290,943 +309,953 @@ msgstr ""
 msgid "No backup result found!"
 msgstr ""
 
-#: aleksis/core/mixins.py:539
+#: aleksis/core/mixins.py:446
 msgid "Linked school term"
 msgstr ""
 
-#: aleksis/core/models.py:95
+#: aleksis/core/models.py:88
 msgid "Boolean (Yes/No)"
 msgstr ""
 
-#: aleksis/core/models.py:96
+#: aleksis/core/models.py:89
 msgid "Text (one line)"
 msgstr ""
 
-#: aleksis/core/models.py:98
+#: aleksis/core/models.py:91
 msgid "Date and time"
 msgstr ""
 
-#: aleksis/core/models.py:99
+#: aleksis/core/models.py:92
 msgid "Decimal number"
 msgstr ""
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:223
+#: aleksis/core/models.py:93 aleksis/core/models.py:217
 msgid "E-mail address"
 msgstr ""
 
-#: aleksis/core/models.py:101
+#: aleksis/core/models.py:94
 msgid "Integer"
 msgstr ""
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:95
 msgid "IP address"
 msgstr ""
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:96
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr ""
 
-#: aleksis/core/models.py:104
+#: aleksis/core/models.py:97
 msgid "Text (multi-line)"
 msgstr ""
 
-#: aleksis/core/models.py:106
+#: aleksis/core/models.py:99
 msgid "URL / Link"
 msgstr ""
 
-#: aleksis/core/models.py:118 aleksis/core/models.py:1100
-#: aleksis/core/models.py:1729
+#: aleksis/core/models.py:111 aleksis/core/models.py:1004
+#: aleksis/core/models.py:1667 aleksis/core/models.py:1806
 msgid "Name"
 msgstr ""
 
-#: aleksis/core/models.py:120 aleksis/core/models.py:1532
+#: aleksis/core/models.py:113 aleksis/core/models.py:1428
 msgid "Start date"
 msgstr ""
 
-#: aleksis/core/models.py:121 aleksis/core/models.py:1533
+#: aleksis/core/models.py:114 aleksis/core/models.py:1429
 msgid "End date"
 msgstr ""
 
-#: aleksis/core/models.py:140 aleksis/core/schema/school_term.py:48
+#: aleksis/core/models.py:133 aleksis/core/schema/school_term.py:50
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: aleksis/core/models.py:147 aleksis/core/schema/school_term.py:53
+#: aleksis/core/models.py:140 aleksis/core/schema/school_term.py:55
 msgid "There is already a school term for this time or a part of this time."
 msgstr ""
 
-#: aleksis/core/models.py:155
+#: aleksis/core/models.py:148
 msgid "School terms"
 msgstr ""
 
-#: aleksis/core/models.py:176 aleksis/core/models.py:1049
+#: aleksis/core/models.py:167 aleksis/core/models.py:953
 msgid "Person"
 msgstr ""
 
-#: aleksis/core/models.py:179
+#: aleksis/core/models.py:170
 msgid "Can view address"
 msgstr ""
 
-#: aleksis/core/models.py:180
+#: aleksis/core/models.py:171
 msgid "Can view contact details"
 msgstr ""
 
-#: aleksis/core/models.py:181
+#: aleksis/core/models.py:172
 msgid "Can view photo"
 msgstr ""
 
-#: aleksis/core/models.py:182
+#: aleksis/core/models.py:173
 msgid "Can view avatar image"
 msgstr ""
 
-#: aleksis/core/models.py:183
+#: aleksis/core/models.py:174
 msgid "Can view persons groups"
 msgstr ""
 
-#: aleksis/core/models.py:184
+#: aleksis/core/models.py:175
 msgid "Can view personal details"
 msgstr ""
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "female"
 msgstr ""
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "male"
 msgstr ""
 
-#: aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "other"
 msgstr ""
 
-#: aleksis/core/models.py:202 aleksis/core/models.py:1404
+#: aleksis/core/models.py:194 aleksis/core/models.py:1296
 msgid "Linked user"
 msgstr ""
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:200
 msgid "Additional name(s)"
 msgstr ""
 
-#: aleksis/core/models.py:212 aleksis/core/models.py:534
-#: aleksis/core/models.py:1490
+#: aleksis/core/models.py:204 aleksis/core/models.py:491
+#: aleksis/core/models.py:1388
 msgid "Short name"
 msgstr ""
 
-#: aleksis/core/models.py:215
+#: aleksis/core/models.py:209
 msgid "Street"
 msgstr ""
 
-#: aleksis/core/models.py:216
+#: aleksis/core/models.py:210
 msgid "Street number"
 msgstr ""
 
-#: aleksis/core/models.py:217
+#: aleksis/core/models.py:211
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/core/models.py:218
+#: aleksis/core/models.py:212
 msgid "Place"
 msgstr ""
 
-#: aleksis/core/models.py:220
+#: aleksis/core/models.py:214
 msgid "Home phone"
 msgstr ""
 
-#: aleksis/core/models.py:221
+#: aleksis/core/models.py:215
 msgid "Mobile phone"
 msgstr ""
 
-#: aleksis/core/models.py:225
+#: aleksis/core/models.py:219
 msgid "Date of birth"
 msgstr ""
 
-#: aleksis/core/models.py:226
+#: aleksis/core/models.py:220
 msgid "Place of birth"
 msgstr ""
 
-#: aleksis/core/models.py:227
+#: aleksis/core/models.py:221
 msgid "Sex"
 msgstr ""
 
-#: aleksis/core/models.py:234 aleksis/core/models.py:573
+#: aleksis/core/models.py:228 aleksis/core/models.py:530
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr ""
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:577
+#: aleksis/core/models.py:233 aleksis/core/models.py:534
 msgid "Display picture / Avatar"
 msgstr ""
 
-#: aleksis/core/models.py:242 aleksis/core/models.py:580
+#: aleksis/core/models.py:236 aleksis/core/models.py:537
 msgid "This is a picture or an avatar for public display."
 msgstr ""
 
-#: aleksis/core/models.py:247
+#: aleksis/core/models.py:241
 msgid "Guardians / Parents"
 msgstr ""
 
-#: aleksis/core/models.py:254
+#: aleksis/core/models.py:248
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/core/models.py:257 aleksis/core/models.py:747
-#: aleksis/core/models.py:771 aleksis/core/models.py:866
-#: aleksis/core/models.py:1135
+#: aleksis/core/models.py:251 aleksis/core/models.py:651
+#: aleksis/core/models.py:675 aleksis/core/models.py:770
+#: aleksis/core/models.py:1038 aleksis/core/models.py:1723
 msgid "Description"
 msgstr ""
 
-#: aleksis/core/models.py:487
-msgid "Title of field"
-msgstr ""
-
-#: aleksis/core/models.py:489
-msgid "Type of field"
-msgstr ""
-
-#: aleksis/core/models.py:491
-msgid "Required"
-msgstr ""
-
-#: aleksis/core/models.py:492
-msgid "Help text / description"
-msgstr ""
-
-#: aleksis/core/models.py:498
-msgid "Addtitional field for groups"
-msgstr ""
-
-#: aleksis/core/models.py:499
-msgid "Addtitional fields for groups"
-msgstr ""
-
-#: aleksis/core/models.py:519
+#: aleksis/core/models.py:475
 msgid "Can assign child groups to groups"
 msgstr ""
 
-#: aleksis/core/models.py:520
+#: aleksis/core/models.py:476
 msgid "Can view statistics about group."
 msgstr ""
 
-#: aleksis/core/models.py:532 aleksis/core/models.py:1491
+#: aleksis/core/models.py:489 aleksis/core/models.py:1389
 msgid "Long name"
 msgstr ""
 
-#: aleksis/core/models.py:542 aleksis/core/templates/core/group/full.html:105
+#: aleksis/core/models.py:502 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr ""
 
-#: aleksis/core/models.py:545 aleksis/core/templates/core/group/full.html:102
+#: aleksis/core/models.py:505 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr ""
 
-#: aleksis/core/models.py:552 aleksis/core/templates/core/group/full.html:59
+#: aleksis/core/models.py:512 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr ""
 
-#: aleksis/core/models.py:560
+#: aleksis/core/models.py:520
 msgid "Type of group"
 msgstr ""
 
-#: aleksis/core/models.py:565
-#: aleksis/core/templates/core/additional_field/list.html:8
-#: aleksis/core/templates/core/additional_field/list.html:9
-msgid "Additional fields"
-msgstr ""
-
-#: aleksis/core/models.py:746 aleksis/core/models.py:770
-#: aleksis/core/models.py:865 aleksis/core/models.py:1321
+#: aleksis/core/models.py:650 aleksis/core/models.py:674
+#: aleksis/core/models.py:769 aleksis/core/models.py:1213
+#: aleksis/core/models.py:1722
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr ""
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:653
 msgid "Application"
 msgstr ""
 
-#: aleksis/core/models.py:755
+#: aleksis/core/models.py:659
 msgid "Activity"
 msgstr ""
 
-#: aleksis/core/models.py:756
+#: aleksis/core/models.py:660
 msgid "Activities"
 msgstr ""
 
-#: aleksis/core/models.py:762
+#: aleksis/core/models.py:666
 msgid "Sender"
 msgstr ""
 
-#: aleksis/core/models.py:767
+#: aleksis/core/models.py:671
 msgid "Recipient"
 msgstr ""
 
-#: aleksis/core/models.py:772 aleksis/core/models.py:1101
+#: aleksis/core/models.py:676 aleksis/core/models.py:1005
 msgid "Link"
 msgstr ""
 
-#: aleksis/core/models.py:775 aleksis/core/models.py:1102
-#: aleksis/core/models.py:1451
+#: aleksis/core/models.py:679 aleksis/core/models.py:1006
+#: aleksis/core/models.py:1346
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr ""
 
-#: aleksis/core/models.py:778
+#: aleksis/core/models.py:682
 msgid "Send notification at"
 msgstr ""
 
-#: aleksis/core/models.py:780
+#: aleksis/core/models.py:684
 msgid "Read"
 msgstr ""
 
-#: aleksis/core/models.py:781
+#: aleksis/core/models.py:685
 msgid "Sent"
 msgstr ""
 
-#: aleksis/core/models.py:798
+#: aleksis/core/models.py:702
 msgid "Notification"
 msgstr ""
 
-#: aleksis/core/models.py:799 aleksis/core/preferences.py:28
+#: aleksis/core/models.py:703 aleksis/core/preferences.py:29
 msgid "Notifications"
 msgstr ""
 
-#: aleksis/core/models.py:867
+#: aleksis/core/models.py:771
 msgid "Link to detailed view"
 msgstr ""
 
-#: aleksis/core/models.py:870
+#: aleksis/core/models.py:774
 msgid "Date and time from when to show"
 msgstr ""
 
-#: aleksis/core/models.py:873
+#: aleksis/core/models.py:777
 msgid "Date and time until when to show"
 msgstr ""
 
-#: aleksis/core/models.py:898
+#: aleksis/core/models.py:802
 msgid "Announcement"
 msgstr ""
 
-#: aleksis/core/models.py:899
+#: aleksis/core/models.py:803
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr ""
 
-#: aleksis/core/models.py:936
+#: aleksis/core/models.py:840
 msgid "Announcement recipient"
 msgstr ""
 
-#: aleksis/core/models.py:937
+#: aleksis/core/models.py:841
 msgid "Announcement recipients"
 msgstr ""
 
-#: aleksis/core/models.py:957
+#: aleksis/core/models.py:861
 msgid "Widget Title"
 msgstr ""
 
-#: aleksis/core/models.py:958
+#: aleksis/core/models.py:862
 msgid "Activate Widget"
 msgstr ""
 
-#: aleksis/core/models.py:959
+#: aleksis/core/models.py:863
 msgid "Widget is broken"
 msgstr ""
 
-#: aleksis/core/models.py:962
+#: aleksis/core/models.py:866
 msgid "Size on mobile devices"
 msgstr ""
 
-#: aleksis/core/models.py:963
+#: aleksis/core/models.py:867
 msgid "<= 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:968
+#: aleksis/core/models.py:872
 msgid "Size on tablet devices"
 msgstr ""
 
-#: aleksis/core/models.py:969
+#: aleksis/core/models.py:873
 msgid "> 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:974
+#: aleksis/core/models.py:878
 msgid "Size on desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:975
+#: aleksis/core/models.py:879
 msgid "> 992 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:980
+#: aleksis/core/models.py:884
 msgid "Size on large desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:981
+#: aleksis/core/models.py:885
 msgid "> 1200 px>, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:1012
+#: aleksis/core/models.py:916
 msgid "Can edit default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1013
+#: aleksis/core/models.py:917
 msgid "Dashboard Widget"
 msgstr ""
 
-#: aleksis/core/models.py:1014
+#: aleksis/core/models.py:918
 msgid "Dashboard Widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1020
+#: aleksis/core/models.py:924
 msgid "URL"
 msgstr ""
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:925
 msgid "Icon URL"
 msgstr ""
 
-#: aleksis/core/models.py:1027
+#: aleksis/core/models.py:931
 msgid "External link widget"
 msgstr ""
 
-#: aleksis/core/models.py:1028
+#: aleksis/core/models.py:932
 msgid "External link widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1034
+#: aleksis/core/models.py:938
 msgid "Content"
 msgstr ""
 
-#: aleksis/core/models.py:1040
+#: aleksis/core/models.py:944
 msgid "Static content widget"
 msgstr ""
 
-#: aleksis/core/models.py:1041
+#: aleksis/core/models.py:945
 msgid "Static content widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1046
+#: aleksis/core/models.py:950
 msgid "Dashboard widget"
 msgstr ""
 
-#: aleksis/core/models.py:1051
+#: aleksis/core/models.py:955
 msgid "Order"
 msgstr ""
 
-#: aleksis/core/models.py:1052
+#: aleksis/core/models.py:956
 msgid "Part of the default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1067
+#: aleksis/core/models.py:971
 msgid "Dashboard widget order"
 msgstr ""
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:972
 msgid "Dashboard widget orders"
 msgstr ""
 
-#: aleksis/core/models.py:1074
+#: aleksis/core/models.py:978
 msgid "Menu ID"
 msgstr ""
 
-#: aleksis/core/models.py:1087
+#: aleksis/core/models.py:991
 msgid "Custom menu"
 msgstr ""
 
-#: aleksis/core/models.py:1088
+#: aleksis/core/models.py:992
 msgid "Custom menus"
 msgstr ""
 
-#: aleksis/core/models.py:1098
+#: aleksis/core/models.py:1002
 msgid "Menu"
 msgstr ""
 
-#: aleksis/core/models.py:1108
+#: aleksis/core/models.py:1012
 msgid "Custom menu item"
 msgstr ""
 
-#: aleksis/core/models.py:1109
+#: aleksis/core/models.py:1013
 msgid "Custom menu items"
 msgstr ""
 
-#: aleksis/core/models.py:1134
+#: aleksis/core/models.py:1037
 msgid "Title of type"
 msgstr ""
 
-#: aleksis/core/models.py:1141 aleksis/core/templates/core/group/full.html:50
+#: aleksis/core/models.py:1044 aleksis/core/templates/core/group/full.html:50
 msgid "Group type"
 msgstr ""
 
-#: aleksis/core/models.py:1142
+#: aleksis/core/models.py:1045
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
 msgstr ""
 
-#: aleksis/core/models.py:1155
+#: aleksis/core/models.py:1056
 msgid "Can view system status"
 msgstr ""
 
-#: aleksis/core/models.py:1156
+#: aleksis/core/models.py:1057
 msgid "Can manage data"
 msgstr ""
 
-#: aleksis/core/models.py:1157
+#: aleksis/core/models.py:1058
 msgid "Can impersonate"
 msgstr ""
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1059
 msgid "Can use search"
 msgstr ""
 
-#: aleksis/core/models.py:1159
+#: aleksis/core/models.py:1060
 msgid "Can change site preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1160
+#: aleksis/core/models.py:1061
 msgid "Can change person preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1161
+#: aleksis/core/models.py:1062
 msgid "Can change group preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1162
+#: aleksis/core/models.py:1063
 msgid "Can test PDF generation"
 msgstr ""
 
-#: aleksis/core/models.py:1163
+#: aleksis/core/models.py:1064
 msgid "Can invite persons"
 msgstr ""
 
-#: aleksis/core/models.py:1199
+#: aleksis/core/models.py:1065
+msgid "Can view birthday calendar"
+msgstr ""
+
+#: aleksis/core/models.py:1092
 msgid "Related data check task"
 msgstr ""
 
-#: aleksis/core/models.py:1207
+#: aleksis/core/models.py:1100
 msgid "Issue solved"
 msgstr ""
 
-#: aleksis/core/models.py:1208
+#: aleksis/core/models.py:1101
 msgid "Notification sent"
 msgstr ""
 
-#: aleksis/core/models.py:1221
+#: aleksis/core/models.py:1114
 msgid "Data check result"
 msgstr ""
 
-#: aleksis/core/models.py:1222
+#: aleksis/core/models.py:1115
 msgid "Data check results"
 msgstr ""
 
-#: aleksis/core/models.py:1224
+#: aleksis/core/models.py:1117
 msgid "Can run data checks"
 msgstr ""
 
-#: aleksis/core/models.py:1225
+#: aleksis/core/models.py:1118
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1232
+#: aleksis/core/models.py:1125
 msgid "E-Mail address"
 msgstr ""
 
-#: aleksis/core/models.py:1292
+#: aleksis/core/models.py:1184 aleksis/core/models.py:1730
 msgid "Owner"
 msgstr ""
 
-#: aleksis/core/models.py:1296
+#: aleksis/core/models.py:1188
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1299
+#: aleksis/core/models.py:1191
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1302
+#: aleksis/core/models.py:1194
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1309
+#: aleksis/core/models.py:1201
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1310
+#: aleksis/core/models.py:1202
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1315
+#: aleksis/core/models.py:1207
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1318
+#: aleksis/core/models.py:1210
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1322
+#: aleksis/core/models.py:1214
 msgid "Back URL"
 msgstr ""
 
-#: aleksis/core/models.py:1323
+#: aleksis/core/models.py:1215
 msgid "Progress title"
 msgstr ""
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1216
 msgid "Error message"
 msgstr ""
 
-#: aleksis/core/models.py:1325
+#: aleksis/core/models.py:1217
 msgid "Success message"
 msgstr ""
 
-#: aleksis/core/models.py:1326
+#: aleksis/core/models.py:1218
 msgid "Redirect on success URL"
 msgstr ""
 
-#: aleksis/core/models.py:1328
+#: aleksis/core/models.py:1220
 msgid "Additional button title"
 msgstr ""
 
-#: aleksis/core/models.py:1330
+#: aleksis/core/models.py:1222
 msgid "Additional button URL"
 msgstr ""
 
-#: aleksis/core/models.py:1332
+#: aleksis/core/models.py:1224
 msgid "Additional button icon"
 msgstr ""
 
-#: aleksis/core/models.py:1334
+#: aleksis/core/models.py:1226
 msgid "Result fetched"
 msgstr ""
 
-#: aleksis/core/models.py:1359
+#: aleksis/core/models.py:1251
 msgid "Background task completed successfully"
 msgstr ""
 
-#: aleksis/core/models.py:1360
+#: aleksis/core/models.py:1252
 msgid "The background task '{}' has been completed successfully."
 msgstr ""
 
-#: aleksis/core/models.py:1366
+#: aleksis/core/models.py:1258
 msgid "Background task failed"
 msgstr ""
 
-#: aleksis/core/models.py:1367
+#: aleksis/core/models.py:1259
 msgid "The background task '{}' has failed."
 msgstr ""
 
-#: aleksis/core/models.py:1376
+#: aleksis/core/models.py:1268
 msgid "Background task"
 msgstr ""
 
-#: aleksis/core/models.py:1390
+#: aleksis/core/models.py:1282
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1391
+#: aleksis/core/models.py:1283
 msgid "Task user assignments"
 msgstr ""
 
-#: aleksis/core/models.py:1407
+#: aleksis/core/models.py:1299
 msgid "Additional attributes"
 msgstr ""
 
-#: aleksis/core/models.py:1445
+#: aleksis/core/models.py:1340
 msgid "Allowed scopes that clients can request"
 msgstr ""
 
-#: aleksis/core/models.py:1455
+#: aleksis/core/models.py:1350
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr ""
 
-#: aleksis/core/models.py:1500
+#: aleksis/core/models.py:1398
 msgid "Can view room timetable"
 msgstr ""
 
-#: aleksis/core/models.py:1502
+#: aleksis/core/models.py:1400
 msgid "Room"
 msgstr ""
 
-#: aleksis/core/models.py:1503
+#: aleksis/core/models.py:1401
 msgid "Rooms"
 msgstr ""
 
-#: aleksis/core/models.py:1528
+#: aleksis/core/models.py:1424
 msgid "Start date and time"
 msgstr ""
 
-#: aleksis/core/models.py:1530
+#: aleksis/core/models.py:1426
 msgid "End date and time"
 msgstr ""
 
-#: aleksis/core/models.py:1531
+#: aleksis/core/models.py:1427
 msgid "Timezone"
 msgstr ""
 
-#: aleksis/core/models.py:1534
+#: aleksis/core/models.py:1430
 msgid "Recurrences"
 msgstr ""
 
-#: aleksis/core/models.py:1540
+#: aleksis/core/models.py:1436
 msgid "Amended base event"
 msgstr ""
 
-#: aleksis/core/models.py:1643
+#: aleksis/core/models.py:1561
 msgid "Calendar Event"
 msgstr ""
 
-#: aleksis/core/models.py:1644
+#: aleksis/core/models.py:1562
 msgid "Calendar Events"
 msgstr ""
 
-#: aleksis/core/models.py:1670
+#: aleksis/core/models.py:1592
 msgid "Birthdays"
 msgstr ""
 
-#: aleksis/core/models.py:1674
+#: aleksis/core/models.py:1597
 msgid "{}'s birthday"
 msgstr ""
 
-#: aleksis/core/models.py:1713 aleksis/core/models.py:1775
+#: aleksis/core/models.py:1648 aleksis/core/models.py:1714
 msgid "Holidays"
 msgstr ""
 
-#: aleksis/core/models.py:1774
+#: aleksis/core/models.py:1713
 msgid "Holiday"
 msgstr ""
 
-#: aleksis/core/preferences.py:24
-msgid "General"
+#: aleksis/core/models.py:1715
+msgid "Can view holiday calendar"
+msgstr ""
+
+#: aleksis/core/models.py:1720
+msgid "Personal events"
+msgstr ""
+
+#: aleksis/core/models.py:1724
+msgid "Location"
+msgstr ""
+
+#: aleksis/core/models.py:1807
+msgid "Email"
+msgstr ""
+
+#: aleksis/core/models.py:1810
+msgid "Related group"
+msgstr ""
+
+#: aleksis/core/models.py:1817
+msgid "Organisation"
+msgstr ""
+
+#: aleksis/core/models.py:1818
+msgid "Organisations"
 msgstr ""
 
 #: aleksis/core/preferences.py:25
-msgid "School"
+msgid "General"
 msgstr ""
 
 #: aleksis/core/preferences.py:26
-msgid "Theme"
+msgid "School"
 msgstr ""
 
 #: aleksis/core/preferences.py:27
+msgid "Theme"
+msgstr ""
+
+#: aleksis/core/preferences.py:28
 msgid "Mail"
 msgstr ""
 
-#: aleksis/core/preferences.py:29
+#: aleksis/core/preferences.py:30
 msgid "Footer"
 msgstr ""
 
-#: aleksis/core/preferences.py:30
+#: aleksis/core/preferences.py:31
 msgid "Accounts"
 msgstr ""
 
-#: aleksis/core/preferences.py:31
+#: aleksis/core/preferences.py:32
 msgid "Authentication"
 msgstr ""
 
-#: aleksis/core/preferences.py:32
+#: aleksis/core/preferences.py:33
 msgid "Internationalisation"
 msgstr ""
 
-#: aleksis/core/preferences.py:33
+#: aleksis/core/preferences.py:34
 msgid "Calendar"
 msgstr ""
 
-#: aleksis/core/preferences.py:43
+#: aleksis/core/preferences.py:44
 msgid "Site title"
 msgstr ""
 
-#: aleksis/core/preferences.py:55
+#: aleksis/core/preferences.py:56
 msgid "Site description"
 msgstr ""
 
-#: aleksis/core/preferences.py:65
+#: aleksis/core/preferences.py:66
 msgid "Primary colour"
 msgstr ""
 
-#: aleksis/core/preferences.py:77
+#: aleksis/core/preferences.py:78
 msgid "Secondary colour"
 msgstr ""
 
-#: aleksis/core/preferences.py:89
+#: aleksis/core/preferences.py:90
 msgid "Logo"
 msgstr ""
 
-#: aleksis/core/preferences.py:100
+#: aleksis/core/preferences.py:101
 msgid "Favicon"
 msgstr ""
 
-#: aleksis/core/preferences.py:111
+#: aleksis/core/preferences.py:112
 msgid "PWA-Icon"
 msgstr ""
 
-#: aleksis/core/preferences.py:121
+#: aleksis/core/preferences.py:122
 msgid "PWA-Icon is maskable"
 msgstr ""
 
-#: aleksis/core/preferences.py:133
+#: aleksis/core/preferences.py:134
 msgid "Mail out name"
 msgstr ""
 
-#: aleksis/core/preferences.py:144
+#: aleksis/core/preferences.py:145
 msgid "Mail out address"
 msgstr ""
 
-#: aleksis/core/preferences.py:157
+#: aleksis/core/preferences.py:158
 msgid "Link to privacy policy"
 msgstr ""
 
-#: aleksis/core/preferences.py:169
+#: aleksis/core/preferences.py:170
 msgid "Link to imprint"
 msgstr ""
 
-#: aleksis/core/preferences.py:180
+#: aleksis/core/preferences.py:181
 msgid "Name format for addressing"
 msgstr ""
 
-#: aleksis/core/preferences.py:197
+#: aleksis/core/preferences.py:198
 msgid "Channels to use for notifications"
 msgstr ""
 
-#: aleksis/core/preferences.py:208
+#: aleksis/core/preferences.py:209
 msgid "Select Design"
 msgstr ""
 
-#: aleksis/core/preferences.py:211
+#: aleksis/core/preferences.py:212
 msgid "Light mode"
 msgstr ""
 
-#: aleksis/core/preferences.py:224
+#: aleksis/core/preferences.py:225
 msgid "Regular expression to match primary group, e.g. '^Class .*'"
 msgstr ""
 
-#: aleksis/core/preferences.py:235
+#: aleksis/core/preferences.py:236
 msgid "Field on person to match primary group against"
 msgstr ""
 
-#: aleksis/core/preferences.py:247
+#: aleksis/core/preferences.py:248
 msgid "Automatically create new persons for new users"
 msgstr ""
 
-#: aleksis/core/preferences.py:256
+#: aleksis/core/preferences.py:257
 msgid "Automatically link existing persons to new users by their e-mail address"
 msgstr ""
 
-#: aleksis/core/preferences.py:267
+#: aleksis/core/preferences.py:268
 msgid "Display name of the school"
 msgstr ""
 
-#: aleksis/core/preferences.py:278
+#: aleksis/core/preferences.py:279
 msgid "Official name of the school, e.g. as given by supervisory authority"
 msgstr ""
 
-#: aleksis/core/preferences.py:286
+#: aleksis/core/preferences.py:287
 msgid "Allow users to change their passwords"
 msgstr ""
 
-#: aleksis/core/preferences.py:294
+#: aleksis/core/preferences.py:295
 msgid "Allow users to reset their passwords"
 msgstr ""
 
-#: aleksis/core/preferences.py:302
+#: aleksis/core/preferences.py:303
 msgid "Enable signup"
 msgstr ""
 
-#: aleksis/core/preferences.py:310
+#: aleksis/core/preferences.py:311
 msgid "Regular expression for allowed usernames"
 msgstr ""
 
-#: aleksis/core/preferences.py:318
+#: aleksis/core/preferences.py:319
 msgid "Enable invitations"
 msgstr ""
 
-#: aleksis/core/preferences.py:326
+#: aleksis/core/preferences.py:327
 msgid "Length of invite code. (Default 3: abcde-acbde-abcde)"
 msgstr ""
 
-#: aleksis/core/preferences.py:334
+#: aleksis/core/preferences.py:335
 msgid "Size of packets. (Default 5: abcde)"
 msgstr ""
 
-#: aleksis/core/preferences.py:345
+#: aleksis/core/preferences.py:346
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr ""
 
-#: aleksis/core/preferences.py:358
+#: aleksis/core/preferences.py:359
 msgid "Send emails if data checks detect problems"
 msgstr ""
 
-#: aleksis/core/preferences.py:369
+#: aleksis/core/preferences.py:370
 msgid "Email recipients for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:380
+#: aleksis/core/preferences.py:381
 msgid "Email recipient groups for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:389
+#: aleksis/core/preferences.py:390
 msgid "Show dashboard to users without login"
 msgstr ""
 
-#: aleksis/core/preferences.py:398
+#: aleksis/core/preferences.py:399
 msgid "Allow users to edit their dashboard"
 msgstr ""
 
-#: aleksis/core/preferences.py:409
+#: aleksis/core/preferences.py:410
 msgid "Fields on person model which are editable by themselves."
 msgstr ""
 
-#: aleksis/core/preferences.py:424
+#: aleksis/core/preferences.py:425
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr ""
 
-#: aleksis/core/preferences.py:438
+#: aleksis/core/preferences.py:439
 msgid "Contact for notification if a person changes their data"
 msgstr ""
 
-#: aleksis/core/preferences.py:449
+#: aleksis/core/preferences.py:450
 msgid "Prefer personal photos over avatars"
 msgstr ""
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:460
 msgid "PDF file expiration duration"
 msgstr ""
 
-#: aleksis/core/preferences.py:460
+#: aleksis/core/preferences.py:461
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/preferences.py:470
+#: aleksis/core/preferences.py:471
 msgid "Automatically update the dashboard and its widgets"
 msgstr ""
 
-#: aleksis/core/preferences.py:480
+#: aleksis/core/preferences.py:481
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr ""
 
-#: aleksis/core/preferences.py:490
+#: aleksis/core/preferences.py:491
 msgid "Birthday calendar feed color"
 msgstr ""
 
-#: aleksis/core/preferences.py:502
+#: aleksis/core/preferences.py:503
 msgid "Holiday calendar feed color"
 msgstr ""
 
 #: aleksis/core/preferences.py:515
+msgid "Personal events feed color"
+msgstr ""
+
+#: aleksis/core/preferences.py:528
 msgid "Activated calendars"
 msgstr ""
 
-#: aleksis/core/settings.py:551
+#: aleksis/core/preferences.py:546
+msgid "Comma-separated list of disallowed usernames"
+msgstr ""
+
+#: aleksis/core/settings.py:548
 msgid "English"
 msgstr ""
 
-#: aleksis/core/settings.py:552
+#: aleksis/core/settings.py:549
 msgid "German"
 msgstr ""
 
-#: aleksis/core/settings.py:553
+#: aleksis/core/settings.py:550
 msgid "Ukrainian"
 msgstr ""
 
-#: aleksis/core/tables.py:97 aleksis/core/tables.py:98
-#: aleksis/core/tables.py:112 aleksis/core/tables.py:128
-#: aleksis/core/tables.py:165
+#: aleksis/core/tables.py:96 aleksis/core/tables.py:112
+#: aleksis/core/tables.py:149
 #: aleksis/core/templates/core/announcement/list.html:42
 #: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
@@ -1234,7 +1263,7 @@ msgstr ""
 msgid "Delete"
 msgstr ""
 
-#: aleksis/core/tables.py:130 aleksis/core/tables.py:167
+#: aleksis/core/tables.py:114 aleksis/core/tables.py:151
 #: aleksis/core/templates/core/announcement/list.html:22
 msgid "Actions"
 msgstr ""
@@ -1334,8 +1363,8 @@ msgid "This e-mail confirmation link expired or is invalid. Please <a href=\"%(e
 msgstr ""
 
 #: aleksis/core/templates/account/password_change.html:5
-#: aleksis/core/templates/account/password_change.html:6
-#: aleksis/core/templates/account/password_change.html:19
+#: aleksis/core/templates/account/password_change.html:15
+#: aleksis/core/templates/account/password_change.html:28
 #: aleksis/core/templates/account/password_reset_from_key.html:5
 #: aleksis/core/templates/account/password_reset_from_key.html:42
 #: aleksis/core/templates/account/password_reset_from_key.html:46
@@ -1344,31 +1373,11 @@ msgstr ""
 msgid "Change password"
 msgstr ""
 
-#: aleksis/core/templates/account/password_change.html:12
-msgid "Forgot your current password? Click here to reset it:"
-msgstr ""
-
-#: aleksis/core/templates/account/password_change.html:12
-msgid "Forgot Password?"
-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 ""
-
-#: aleksis/core/templates/account/password_change_disabled.html:13
-msgid "Changing of password disabled."
-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"
-"          "
+#: aleksis/core/templates/account/password_change.html:19
+msgid "Forgot your current password?"
 msgstr ""
 
+#: aleksis/core/templates/account/password_change.html:20
 #: aleksis/core/templates/account/password_reset.html:5
 #: aleksis/core/templates/account/password_reset.html:15
 #: aleksis/core/templates/account/password_reset.html:23
@@ -1509,15 +1518,6 @@ msgid ""
 "          "
 msgstr ""
 
-#: aleksis/core/templates/core/additional_field/edit.html:6
-#: aleksis/core/templates/core/additional_field/edit.html:7
-msgid "Edit additional field"
-msgstr ""
-
-#: aleksis/core/templates/core/additional_field/list.html:14
-msgid "Create additional field"
-msgstr ""
-
 #: aleksis/core/templates/core/announcement/form.html:14
 #: aleksis/core/templates/core/announcement/form.html:21
 msgid "Edit announcement"
@@ -2776,15 +2776,6 @@ msgid ""
 "        "
 msgstr ""
 
-#: aleksis/core/templates/two_factor/core/setup.html:83
-msgid ""
-"\n"
-"        To identify and verify your YubiKey, please insert a\n"
-"        token in the field below. Your YubiKey will be linked to your\n"
-"        account.\n"
-"      "
-msgstr ""
-
 #: 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"
@@ -2833,11 +2824,15 @@ msgstr ""
 msgid "Disable"
 msgstr ""
 
-#: aleksis/core/util/notifications.py:64
+#: aleksis/core/util/auth_helpers.py:155
+msgid "This username is not allowed."
+msgstr ""
+
+#: aleksis/core/util/notifications.py:67
 msgid "E-Mail"
 msgstr ""
 
-#: aleksis/core/util/notifications.py:65
+#: aleksis/core/util/notifications.py:68
 msgid "SMS"
 msgstr ""
 
@@ -2861,148 +2856,144 @@ msgstr ""
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:371
+#: aleksis/core/views.py:354
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:390 aleksis/core/views.py:400
+#: aleksis/core/views.py:373 aleksis/core/views.py:383
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:450
+#: aleksis/core/views.py:432
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:498
+#: aleksis/core/views.py:480
 msgid "Maintenance mode was turned on successfully."
 msgstr ""
 
-#: aleksis/core/views.py:500
+#: aleksis/core/views.py:482
 msgid "Maintenance mode was turned off successfully."
 msgstr ""
 
-#: aleksis/core/views.py:558
+#: aleksis/core/views.py:539
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:574
+#: aleksis/core/views.py:555
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:643
+#: aleksis/core/views.py:624
 msgid "The requested preference registry does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:662
+#: aleksis/core/views.py:643
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:686
+#: aleksis/core/views.py:667
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:700
+#: aleksis/core/views.py:681
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:732
-msgid "The additional field has been saved."
-msgstr ""
-
-#: aleksis/core/views.py:767
-msgid "The additional field has been deleted."
-msgstr ""
-
-#: aleksis/core/views.py:792
+#: aleksis/core/views.py:705
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:823
+#: aleksis/core/views.py:736
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:858
+#: aleksis/core/views.py:771
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:859
+#: aleksis/core/views.py:772
 msgid "Run data checks …"
 msgstr ""
 
-#: aleksis/core/views.py:860
+#: aleksis/core/views.py:773
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:861
+#: aleksis/core/views.py:774
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:878
+#: aleksis/core/views.py:791
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:888
+#: aleksis/core/views.py:801
 msgid "The requested solve option does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:921
+#: aleksis/core/views.py:834
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:951
+#: aleksis/core/views.py:864
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:961
+#: aleksis/core/views.py:874
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1033
+#: aleksis/core/views.py:946
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1035
+#: aleksis/core/views.py:948
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1106
+#: aleksis/core/views.py:1019
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr ""
 
-#: aleksis/core/views.py:1203
+#: aleksis/core/views.py:1116
 msgid "We have successfully assigned the permissions."
 msgstr ""
 
-#: aleksis/core/views.py:1213
+#: aleksis/core/views.py:1126
 msgid "The global user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1223
+#: aleksis/core/views.py:1136
 msgid "The global group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1233
+#: aleksis/core/views.py:1146
 msgid "The object user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1243
+#: aleksis/core/views.py:1156
 msgid "The object group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1352
+#: aleksis/core/views.py:1238
+msgid "We sent you an email with instructions for resetting your password."
+msgstr ""
+
+#: aleksis/core/views.py:1262
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1359
+#: aleksis/core/views.py:1269
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
-#: aleksis/core/views.py:1435
+#: aleksis/core/views.py:1345
 msgid "Person was invited successfully and an email with further instructions has been send to them."
 msgstr ""
 
-#: aleksis/core/views.py:1446
+#: aleksis/core/views.py:1356
 msgid "Person was already invited."
 msgstr ""
diff --git a/aleksis/core/locale/uk/LC_MESSAGES/django.po b/aleksis/core/locale/uk/LC_MESSAGES/django.po
index e274c80699b2539045fb47cb85d38ad02aa0bc4d..fbedaa52a68363fc6cc483bb2f234a3b2e1e2599 100644
--- a/aleksis/core/locale/uk/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/uk/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-02-27 13:23+0100\n"
+"POT-Creation-Date: 2024-01-26 21:43+0100\n"
 "PO-Revision-Date: 2023-08-12 09:43+0000\n"
 "Last-Translator: Serhii Horichenko <m@sgg.im>\n"
 "Language-Team: Ukrainian <https://translate.edugit.org/projects/aleksis/aleksis-core/uk/>\n"
@@ -18,274 +18,286 @@ msgstr ""
 "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"
 "X-Generator: Weblate 4.12.1\n"
 
-#: aleksis/core/apps.py:151
+#: aleksis/core/apps.py:162
 msgid "You have been logged out successfully."
 msgstr "Ви успішно вийшли."
 
-#: aleksis/core/apps.py:161
+#: aleksis/core/apps.py:172
 msgid "OpenID Connect scope"
 msgstr "Межа дії OpenID Connect"
 
-#: aleksis/core/apps.py:162
+#: aleksis/core/apps.py:173
 msgid "Given name, family name, link to profile and picture if existing."
 msgstr "Ім'я, прізвище, посилання на профіль та фото, якщо є в наявності."
 
-#: aleksis/core/apps.py:163
+#: aleksis/core/apps.py:174
 msgid "Full home postal address"
 msgstr "Повна домашня поштова адреса"
 
-#: aleksis/core/apps.py:164
+#: aleksis/core/apps.py:175
 msgid "Email address"
 msgstr "Ел.адреса"
 
-#: aleksis/core/apps.py:165
+#: aleksis/core/apps.py:176
 msgid "Home and mobile phone"
 msgstr "Домашній та мобільний телефони"
 
-#: aleksis/core/apps.py:166 aleksis/core/forms.py:221
-#: aleksis/core/models.py:495 aleksis/core/templates/core/group/list.html:8
-#: aleksis/core/templates/core/group/list.html:9 aleksis/core/forms.py:231
-#: aleksis/core/models.py:517
+#: aleksis/core/apps.py:177 aleksis/core/forms.py:223
+#: aleksis/core/models.py:473 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/templates/core/group/list.html:9
 msgid "Groups"
 msgstr "Групи"
 
-#: aleksis/core/data_checks.py:60
+#: aleksis/core/data_checks.py:67
 msgid "Ignore problem"
 msgstr "Ігнорувати проблему"
 
-#: aleksis/core/data_checks.py:188
+#: aleksis/core/data_checks.py:199
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr "Варіант розв'язання '{solve_option_obj.verbose_name}' "
 
-#: aleksis/core/data_checks.py:284
+#: aleksis/core/data_checks.py:329
 msgid "Deactivate DashboardWidget"
 msgstr "Вимкнути віджет інформпанелі"
 
-#: aleksis/core/data_checks.py:296
+#: aleksis/core/data_checks.py:341
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr "Переконайтеся у відсутності збійних віджетів на інформпанелі."
 
-#: aleksis/core/data_checks.py:297
+#: aleksis/core/data_checks.py:342
 msgid "The DashboardWidget was reported broken automatically."
 msgstr "Віджет інформпанелі повідомив про збій в автоматичному режимі."
 
-#: aleksis/core/data_checks.py:320
-#, python-format
-msgid "Validate field %s of model %s."
+#: aleksis/core/data_checks.py:364
+#, fuzzy, python-brace-format
+#| msgid "Validate field %s of model %s."
+msgid "Validate field {field} of model {model}."
 msgstr "Перевірте поле %s моделі %s."
 
-#: aleksis/core/data_checks.py:322
-#, python-format
-msgid "The field %s couldn't be validated successfully."
+#: aleksis/core/data_checks.py:367
+#, fuzzy
+#| msgid "The field %s couldn't be validated successfully."
+msgid "The field {} couldn't be validated successfully."
 msgstr "Поле %s не вдалося успішно перевірити."
 
-#: aleksis/core/filters.py:42 aleksis/core/templates/core/group/list.html:20
+#: aleksis/core/data_checks.py:389
+#, fuzzy
+#| msgid "Ensure that there are no broken DashboardWidgets."
+msgid "Ensure that there are no disallowed usernames."
+msgstr "Переконайтеся у відсутності збійних віджетів на інформпанелі."
+
+#: aleksis/core/data_checks.py:390
+#, fuzzy
+#| msgid "The DashboardWidget was reported broken automatically."
+msgid "A user with a disallowed username was reported automatically."
+msgstr "Віджет інформпанелі повідомив про збій в автоматичному режимі."
+
+#: aleksis/core/data_checks.py:411
+#, fuzzy
+#| msgid "Invite by email address"
+msgid "Change email address"
+msgstr "Запрошення ел.поштою"
+
+#: aleksis/core/data_checks.py:416
+msgid "Ensure that email addresses are unique among all persons"
+msgstr ""
+
+#: aleksis/core/data_checks.py:417
+#, fuzzy
+#| msgid "Verify your email address"
+msgid "There was a non-unique email address."
+msgstr "Перевірте свою адресу ел.пошти"
+
+#: aleksis/core/filters.py:39 aleksis/core/templates/core/group/list.html:20
 #: aleksis/core/templates/core/person/list.html:24
 #: aleksis/core/templates/search/search.html:7
 #: aleksis/core/templates/search/search.html:22
 msgid "Search"
 msgstr "Пошук"
 
-#: aleksis/core/filters.py:59
+#: aleksis/core/filters.py:56
 msgid "Search by name"
 msgstr "Пошук за ім'ям"
 
-#: aleksis/core/filters.py:71
+#: aleksis/core/filters.py:68
 msgid "Search by contact details"
 msgstr "Пошук за контактними даними"
 
-#: aleksis/core/filters.py:92
+#: aleksis/core/filters.py:89
 msgid "Permission"
 msgstr "Дозвіл"
 
-#: aleksis/core/filters.py:100
+#: aleksis/core/filters.py:97
 msgid "Content type"
 msgstr "Тип змісту"
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:721
-#: aleksis/core/models.py:743
+#: aleksis/core/filters.py:110 aleksis/core/models.py:647
 msgid "User"
 msgstr "Користувач"
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:494
-#: aleksis/core/models.py:516
+#: aleksis/core/filters.py:132 aleksis/core/models.py:472
 msgid "Group"
 msgstr "Група"
 
-#: aleksis/core/forms.py:51 aleksis/core/forms.py:582 aleksis/core/forms.py:50
-#: aleksis/core/forms.py:591
+#: aleksis/core/forms.py:48 aleksis/core/forms.py:574
 msgid "Base data"
 msgstr "Основні дані"
 
-#: aleksis/core/forms.py:56 aleksis/core/tables.py:47 aleksis/core/forms.py:55
-#: aleksis/core/tables.py:29
+#: aleksis/core/forms.py:53 aleksis/core/tables.py:29
 msgid "Address"
 msgstr "Адреса"
 
-#: aleksis/core/forms.py:57 aleksis/core/forms.py:591 aleksis/core/forms.py:56
-#: aleksis/core/forms.py:600
+#: aleksis/core/forms.py:54 aleksis/core/forms.py:583
 msgid "Contact data"
 msgstr "Контактні дані"
 
-#: aleksis/core/forms.py:59 aleksis/core/forms.py:58
+#: aleksis/core/forms.py:56
 msgid "Advanced personal data"
 msgstr "Додаткові особисті дані"
 
-#: aleksis/core/forms.py:107 aleksis/core/forms.py:106
+#: aleksis/core/forms.py:106
 msgid "New user"
 msgstr "Новий користувач"
 
-#: aleksis/core/forms.py:107 aleksis/core/forms.py:106
+#: aleksis/core/forms.py:106
 msgid "Create a new account"
 msgstr "Створити новий обліковий запис"
 
-#: aleksis/core/forms.py:133 aleksis/core/forms.py:132
+#: aleksis/core/forms.py:132
 msgid "You cannot set a new username when also selecting an existing user."
 msgstr "Обравши вже існуючого користувача неможливо створити новий логін."
 
-#: aleksis/core/forms.py:137 aleksis/core/forms.py:136
+#: aleksis/core/forms.py:136
 msgid "This username is already in use."
 msgstr "Такий логін вже зайнятий."
 
-#: aleksis/core/forms.py:154 aleksis/core/models.py:142
-#: aleksis/core/forms.py:153 aleksis/core/models.py:154
+#: aleksis/core/forms.py:153 aleksis/core/models.py:147
 msgid "School term"
 msgstr "Навчальний рік"
 
-#: aleksis/core/forms.py:155 aleksis/core/forms.py:154
+#: aleksis/core/forms.py:154
 msgid "Common data"
 msgstr "Загальні дані"
 
-#: aleksis/core/forms.py:156 aleksis/core/forms.py:208
-#: aleksis/core/models.py:165 aleksis/core/templates/core/person/list.html:8
-#: aleksis/core/templates/core/person/list.html:9 aleksis/core/forms.py:155
-#: aleksis/core/forms.py:218 aleksis/core/models.py:177
+#: aleksis/core/forms.py:155 aleksis/core/forms.py:210
+#: aleksis/core/models.py:168 aleksis/core/templates/core/person/list.html:8
+#: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
 msgstr "Особи"
 
-#: aleksis/core/forms.py:157 aleksis/core/forms.py:593
-#: aleksis/core/forms.py:156 aleksis/core/forms.py:602
-msgid "Additional data"
-msgstr "Додаткові дані"
-
-#: aleksis/core/forms.py:158 aleksis/core/models.py:218
-#: aleksis/core/models.py:547 aleksis/core/tables.py:46
-#: aleksis/core/forms.py:157 aleksis/core/models.py:230
-#: aleksis/core/models.py:569 aleksis/core/tables.py:28
+#: aleksis/core/forms.py:156 aleksis/core/models.py:224
+#: aleksis/core/models.py:526 aleksis/core/tables.py:28
 msgid "Photo"
 msgstr "Фото"
 
-#: aleksis/core/forms.py:200 aleksis/core/forms.py:203
-#: aleksis/core/models.py:85 aleksis/core/forms.py:210
-#: aleksis/core/forms.py:213 aleksis/core/models.py:97
+#: aleksis/core/forms.py:202 aleksis/core/forms.py:205
+#: aleksis/core/models.py:90
 msgid "Date"
 msgstr "Дата"
 
-#: aleksis/core/forms.py:201 aleksis/core/forms.py:204
-#: aleksis/core/models.py:93 aleksis/core/forms.py:211
-#: aleksis/core/forms.py:214 aleksis/core/models.py:105
+#: aleksis/core/forms.py:203 aleksis/core/forms.py:206
+#: aleksis/core/models.py:98
 msgid "Time"
 msgstr "Час"
 
-#: aleksis/core/forms.py:234 aleksis/core/forms.py:244
+#: aleksis/core/forms.py:236
 msgid "From when until when should the announcement be displayed?"
 msgstr "З якого по який час повинно відображатися це оголошення?"
 
-#: aleksis/core/forms.py:237 aleksis/core/forms.py:247
+#: aleksis/core/forms.py:239
 msgid "Who should see the announcement?"
 msgstr "Хто повинен бачити це оголошення?"
 
-#: aleksis/core/forms.py:238 aleksis/core/forms.py:248
+#: aleksis/core/forms.py:240
 msgid "Write your announcement:"
 msgstr "Складіть своє оголошеня:"
 
-#: aleksis/core/forms.py:277 aleksis/core/forms.py:287
-msgid ""
-"You are not allowed to create announcements which are only valid in the past."
+#: aleksis/core/forms.py:279
+msgid "You are not allowed to create announcements which are only valid in the past."
 msgstr "Оголошення для минулого Вам створювати не дозволено."
 
-#: aleksis/core/forms.py:281 aleksis/core/forms.py:291
+#: aleksis/core/forms.py:283
 msgid "The from date and time must be earlier then the until date and time."
 msgstr "Дата і час початку повинні бути раніше за дату і час закінчення."
 
-#: aleksis/core/forms.py:290 aleksis/core/forms.py:300
+#: aleksis/core/forms.py:292
 msgid "You need at least one recipient."
 msgstr "Вам потрібен принаймні один отримувач."
 
-#: aleksis/core/forms.py:399 aleksis/core/forms.py:408
+#: aleksis/core/forms.py:392
 msgid "Invitation code"
 msgstr "Код запрошення"
 
-#: aleksis/core/forms.py:400 aleksis/core/forms.py:409
+#: aleksis/core/forms.py:393
 msgid "Please enter your invitation code."
 msgstr "Напишіть, будь ласка, свій код запрошення."
 
-#: aleksis/core/forms.py:419 aleksis/core/models.py:193
-#: aleksis/core/forms.py:428 aleksis/core/models.py:205
+#: aleksis/core/forms.py:412 aleksis/core/models.py:197
 msgid "First name"
 msgstr "Ім'я"
 
-#: aleksis/core/forms.py:420 aleksis/core/models.py:194
-#: aleksis/core/forms.py:429 aleksis/core/models.py:206
+#: aleksis/core/forms.py:413 aleksis/core/models.py:198
 msgid "Last name"
 msgstr "Прізвище"
 
-#: aleksis/core/forms.py:429 aleksis/core/forms.py:438
+#: aleksis/core/forms.py:422
 msgid "A person is using this e-mail address"
 msgstr "Цією ел.адресою хтось користується"
 
-#: aleksis/core/forms.py:457 aleksis/core/forms.py:466
+#: aleksis/core/forms.py:450
 msgid "Who should get the permission?"
 msgstr "Хто повинен отримати такий дозвіл?"
 
-#: aleksis/core/forms.py:458 aleksis/core/forms.py:467
+#: aleksis/core/forms.py:451
 msgid "On what?"
 msgstr "В разі чого?"
 
-#: aleksis/core/forms.py:484 aleksis/core/forms.py:493
+#: aleksis/core/forms.py:477
 msgid "Select objects which the permission should be granted for:"
 msgstr "Оберіть об'єкти, до яких буде наданий дозвіл:"
 
-#: aleksis/core/forms.py:487 aleksis/core/forms.py:496
+#: aleksis/core/forms.py:480
 msgid "Grant the permission for all objects"
 msgstr "Надати дозвіл до всіх об'єктів"
 
-#: aleksis/core/forms.py:495 aleksis/core/forms.py:504
-msgid ""
-"You must select at least one group or person which should get the permission."
-msgstr ""
-"Ви повинні обрати принаймні одну групу або особу, хто буде мати дозвіл."
+#: aleksis/core/forms.py:488
+msgid "You must select at least one group or person which should get the permission."
+msgstr "Ви повинні обрати принаймні одну групу або особу, хто буде мати дозвіл."
 
-#: aleksis/core/forms.py:500 aleksis/core/forms.py:509
+#: aleksis/core/forms.py:493
 msgid "You must grant the permission to all objects or to specific objects."
 msgstr "Ви повинні надати дозвіл до всіх або до конкретних об'єктів."
 
-#: aleksis/core/forms.py:587 aleksis/core/forms.py:596
+#: aleksis/core/forms.py:579
 msgid "Address data"
 msgstr "Дані адреси"
 
-#: aleksis/core/forms.py:599 aleksis/core/forms.py:608
+#: aleksis/core/forms.py:585
+msgid "Additional data"
+msgstr "Додаткові дані"
+
+#: aleksis/core/forms.py:591
 msgid "Account data"
 msgstr "Дані облікового запису"
 
-#: aleksis/core/forms.py:606 aleksis/core/forms.py:615
+#: aleksis/core/forms.py:598
 msgid "Password"
 msgstr "Пароль"
 
-#: aleksis/core/forms.py:609 aleksis/core/forms.py:618
+#: aleksis/core/forms.py:601
 msgid "Password (again)"
 msgstr "Пароль (ще раз)"
 
-#: aleksis/core/forms.py:762 aleksis/core/forms.py:771
+#: aleksis/core/forms.py:753
 msgid "The selected action does not exist."
 msgstr "Обрана дія не існує."
 
-#: aleksis/core/forms.py:773 aleksis/core/forms.py:782
+#: aleksis/core/forms.py:764
 msgid "You do not have permission to run {} on all selected objects."
 msgstr "У Вас відсутній дозвіл на запуск {} на усіх обраних об'єктах."
 
-#: aleksis/core/forms.py:829 aleksis/core/forms.py:838
+#: aleksis/core/forms.py:820
 msgid "No valid selection."
 msgstr "Неправильний вибір."
 
@@ -309,951 +321,983 @@ msgstr "Резервна копія не знайдена!"
 msgid "No backup result found!"
 msgstr "Результат резервного копіювання не знайдений!"
 
-#: aleksis/core/mixins.py:511 aleksis/core/mixins.py:539
+#: aleksis/core/mixins.py:446
 msgid "Linked school term"
 msgstr "Пов'язаний навчальний рік"
 
-#: aleksis/core/models.py:83 aleksis/core/models.py:95
+#: aleksis/core/models.py:88
 msgid "Boolean (Yes/No)"
 msgstr "Логічне (Так/Ні)"
 
-#: aleksis/core/models.py:84 aleksis/core/models.py:96
+#: aleksis/core/models.py:89
 msgid "Text (one line)"
 msgstr "Текст (один рядок)"
 
-#: aleksis/core/models.py:86 aleksis/core/models.py:98
+#: aleksis/core/models.py:91
 msgid "Date and time"
 msgstr "Дата і час"
 
-#: aleksis/core/models.py:87 aleksis/core/models.py:99
+#: aleksis/core/models.py:92
 msgid "Decimal number"
 msgstr "Десятичне число"
 
-#: aleksis/core/models.py:88 aleksis/core/models.py:211
-#: aleksis/core/models.py:100 aleksis/core/models.py:223
+#: aleksis/core/models.py:93 aleksis/core/models.py:217
 msgid "E-mail address"
 msgstr "Адреса ел.пошти"
 
-#: aleksis/core/models.py:89 aleksis/core/models.py:101
+#: aleksis/core/models.py:94
 msgid "Integer"
 msgstr "Ціле"
 
-#: aleksis/core/models.py:90 aleksis/core/models.py:102
+#: aleksis/core/models.py:95
 msgid "IP address"
 msgstr "IP адреса"
 
-#: aleksis/core/models.py:91 aleksis/core/models.py:103
+#: aleksis/core/models.py:96
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr "Логічне або порожнє (Так/Ні/Нічого)"
 
-#: aleksis/core/models.py:92 aleksis/core/models.py:104
+#: aleksis/core/models.py:97
 msgid "Text (multi-line)"
 msgstr "Текст (багаторядковий)"
 
-#: aleksis/core/models.py:94 aleksis/core/models.py:106
+#: aleksis/core/models.py:99
 msgid "URL / Link"
 msgstr "URL / Посилання"
 
-#: aleksis/core/models.py:106 aleksis/core/models.py:1078
-#: aleksis/core/models.py:118 aleksis/core/models.py:1100
-#: aleksis/core/models.py:1729
+#: aleksis/core/models.py:111 aleksis/core/models.py:1004
+#: aleksis/core/models.py:1667 aleksis/core/models.py:1806
 msgid "Name"
 msgstr "Повне ім'я"
 
-#: aleksis/core/models.py:108 aleksis/core/models.py:120
-#: aleksis/core/models.py:1532
+#: aleksis/core/models.py:113 aleksis/core/models.py:1428
 msgid "Start date"
 msgstr "Дата початку"
 
-#: aleksis/core/models.py:109 aleksis/core/models.py:121
-#: aleksis/core/models.py:1533
+#: aleksis/core/models.py:114 aleksis/core/models.py:1429
 msgid "End date"
 msgstr "Дата закінчення"
 
-#: aleksis/core/models.py:128 aleksis/core/models.py:140
-#: aleksis/core/schema/school_term.py:48
+#: aleksis/core/models.py:133 aleksis/core/schema/school_term.py:50
 msgid "The start date must be earlier than the end date."
 msgstr "Початкова дата повинна бути раніше кінцевої."
 
-#: aleksis/core/models.py:135 aleksis/core/models.py:147
-#: aleksis/core/schema/school_term.py:53
+#: aleksis/core/models.py:140 aleksis/core/schema/school_term.py:55
 msgid "There is already a school term for this time or a part of this time."
 msgstr "На цей час або на частину цього часу вже припадає навчальний рік."
 
-#: aleksis/core/models.py:143
-#: aleksis/core/templates/core/school_term/list.html:8
-#: aleksis/core/templates/core/school_term/list.html:9
-#: aleksis/core/models.py:155
+#: aleksis/core/models.py:148
 msgid "School terms"
 msgstr "Навчальний рік"
 
-#: aleksis/core/models.py:164 aleksis/core/models.py:1027
-#: aleksis/core/models.py:176 aleksis/core/models.py:1049
+#: aleksis/core/models.py:167 aleksis/core/models.py:953
 msgid "Person"
 msgstr "Особа"
 
-#: aleksis/core/models.py:167 aleksis/core/models.py:179
+#: aleksis/core/models.py:170
 msgid "Can view address"
 msgstr "Може бачити адресу"
 
-#: aleksis/core/models.py:168 aleksis/core/models.py:180
+#: aleksis/core/models.py:171
 msgid "Can view contact details"
 msgstr "Може бачити контактні дані"
 
-#: aleksis/core/models.py:169 aleksis/core/models.py:181
+#: aleksis/core/models.py:172
 msgid "Can view photo"
 msgstr "Може бачити фото"
 
-#: aleksis/core/models.py:170 aleksis/core/models.py:182
+#: aleksis/core/models.py:173
 msgid "Can view avatar image"
 msgstr "Може бачити аватар"
 
-#: aleksis/core/models.py:171 aleksis/core/models.py:183
+#: aleksis/core/models.py:174
 msgid "Can view persons groups"
 msgstr "Може бачити групи особи"
 
-#: aleksis/core/models.py:172 aleksis/core/models.py:184
+#: aleksis/core/models.py:175
 msgid "Can view personal details"
 msgstr "Може бачити особисті дані"
 
-#: aleksis/core/models.py:182 aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "female"
 msgstr "жін"
 
-#: aleksis/core/models.py:182 aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "male"
 msgstr "чол"
 
-#: aleksis/core/models.py:182 aleksis/core/models.py:194
+#: aleksis/core/models.py:186
 msgid "other"
 msgstr "інший"
 
-#: aleksis/core/models.py:190 aleksis/core/models.py:1382
-#: aleksis/core/models.py:202 aleksis/core/models.py:1404
+#: aleksis/core/models.py:194 aleksis/core/models.py:1296
 msgid "Linked user"
 msgstr "Пов'язаний користувач"
 
-#: aleksis/core/models.py:196 aleksis/core/models.py:208
+#: aleksis/core/models.py:200
 msgid "Additional name(s)"
 msgstr "Додаткові імена"
 
-#: aleksis/core/models.py:200 aleksis/core/models.py:512
-#: aleksis/core/models.py:1468 aleksis/core/models.py:212
-#: aleksis/core/models.py:534 aleksis/core/models.py:1490
+#: aleksis/core/models.py:204 aleksis/core/models.py:491
+#: aleksis/core/models.py:1388
 msgid "Short name"
 msgstr "Коротке ім'я"
 
-#: aleksis/core/models.py:203 aleksis/core/models.py:215
+#: aleksis/core/models.py:209
 msgid "Street"
 msgstr "Вулиця"
 
-#: aleksis/core/models.py:204 aleksis/core/models.py:216
+#: aleksis/core/models.py:210
 msgid "Street number"
 msgstr "Номер будинку"
 
-#: aleksis/core/models.py:205 aleksis/core/models.py:217
+#: aleksis/core/models.py:211
 msgid "Postal code"
 msgstr "Поштовий індекс"
 
-#: aleksis/core/models.py:206 aleksis/core/models.py:218
+#: aleksis/core/models.py:212
 msgid "Place"
 msgstr "Місто"
 
-#: aleksis/core/models.py:208 aleksis/core/models.py:220
+#: aleksis/core/models.py:214
 msgid "Home phone"
 msgstr "Домашній телефон"
 
-#: aleksis/core/models.py:209 aleksis/core/models.py:221
+#: aleksis/core/models.py:215
 msgid "Mobile phone"
 msgstr "Мобільний телефон"
 
-#: aleksis/core/models.py:213 aleksis/core/models.py:225
+#: aleksis/core/models.py:219
 msgid "Date of birth"
 msgstr "Дата народження"
 
-#: aleksis/core/models.py:214 aleksis/core/models.py:226
+#: aleksis/core/models.py:220
 msgid "Place of birth"
 msgstr "Місце народження"
 
-#: aleksis/core/models.py:215 aleksis/core/models.py:227
+#: aleksis/core/models.py:221
 msgid "Sex"
 msgstr "Стать"
 
-#: aleksis/core/models.py:222 aleksis/core/models.py:551
-#: aleksis/core/models.py:234 aleksis/core/models.py:573
-msgid ""
-"This is an official photo, used for official documents and for internal use "
-"cases."
-msgstr ""
-"Це офіційне фото, яке використовується для документів та внутрішніх потреб."
+#: aleksis/core/models.py:228 aleksis/core/models.py:530
+msgid "This is an official photo, used for official documents and for internal use cases."
+msgstr "Це офіційне фото, яке використовується для документів та внутрішніх потреб."
 
-#: aleksis/core/models.py:227 aleksis/core/models.py:555
-#: aleksis/core/models.py:239 aleksis/core/models.py:577
+#: aleksis/core/models.py:233 aleksis/core/models.py:534
 msgid "Display picture / Avatar"
 msgstr "Відобразити фото/аватар"
 
-#: aleksis/core/models.py:230 aleksis/core/models.py:558
-#: aleksis/core/models.py:242 aleksis/core/models.py:580
+#: aleksis/core/models.py:236 aleksis/core/models.py:537
 msgid "This is a picture or an avatar for public display."
 msgstr "Це фото або аватар для загального відображення."
 
-#: aleksis/core/models.py:235 aleksis/core/models.py:247
+#: aleksis/core/models.py:241
 msgid "Guardians / Parents"
 msgstr "Опікуни / батьки"
 
-#: aleksis/core/models.py:242 aleksis/core/models.py:254
+#: aleksis/core/models.py:248
 msgid "Primary group"
 msgstr "Основна група"
 
-#: aleksis/core/models.py:245 aleksis/core/models.py:725
-#: aleksis/core/models.py:749 aleksis/core/models.py:844
-#: aleksis/core/models.py:1113 aleksis/core/models.py:257
-#: aleksis/core/models.py:747 aleksis/core/models.py:771
-#: aleksis/core/models.py:866 aleksis/core/models.py:1135
+#: aleksis/core/models.py:251 aleksis/core/models.py:651
+#: aleksis/core/models.py:675 aleksis/core/models.py:770
+#: aleksis/core/models.py:1038 aleksis/core/models.py:1723
 msgid "Description"
 msgstr "Опис"
 
-#: aleksis/core/models.py:465 aleksis/core/models.py:487
-msgid "Title of field"
-msgstr "Назва поля"
-
-#: aleksis/core/models.py:467 aleksis/core/models.py:489
-msgid "Type of field"
-msgstr "Тип поля"
-
-#: aleksis/core/models.py:469 aleksis/core/models.py:491
-msgid "Required"
-msgstr "Необхідне"
-
-#: aleksis/core/models.py:470 aleksis/core/models.py:492
-msgid "Help text / description"
-msgstr "Допоміжний текст/опис"
-
-#: aleksis/core/models.py:476 aleksis/core/models.py:498
-msgid "Addtitional field for groups"
-msgstr "Додаткове поле для груп"
-
-#: aleksis/core/models.py:477 aleksis/core/models.py:499
-msgid "Addtitional fields for groups"
-msgstr "Додаткові поля для груп"
-
-#: aleksis/core/models.py:497 aleksis/core/models.py:519
+#: aleksis/core/models.py:475
 msgid "Can assign child groups to groups"
 msgstr "Може призначати підлеглі групи до груп"
 
-#: aleksis/core/models.py:498 aleksis/core/models.py:520
+#: aleksis/core/models.py:476
 msgid "Can view statistics about group."
 msgstr "Може бачити статистику групи."
 
-#: aleksis/core/models.py:510 aleksis/core/models.py:1469
-#: aleksis/core/models.py:532 aleksis/core/models.py:1491
+#: aleksis/core/models.py:489 aleksis/core/models.py:1389
 msgid "Long name"
 msgstr "Довге ім'я"
 
-#: aleksis/core/models.py:520 aleksis/core/templates/core/group/full.html:105
-#: aleksis/core/models.py:542
+#: aleksis/core/models.py:502 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr "Учасники"
 
-#: aleksis/core/models.py:523 aleksis/core/templates/core/group/full.html:102
-#: aleksis/core/models.py:545
+#: aleksis/core/models.py:505 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr "Власники"
 
-#: aleksis/core/models.py:530 aleksis/core/templates/core/group/full.html:59
-#: aleksis/core/models.py:552
+#: aleksis/core/models.py:512 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr "Батьківські групи"
 
-#: aleksis/core/models.py:538 aleksis/core/models.py:560
+#: aleksis/core/models.py:520
 msgid "Type of group"
 msgstr "Тип групи"
 
-#: aleksis/core/models.py:543
-#: aleksis/core/templates/core/additional_field/list.html:8
-#: aleksis/core/templates/core/additional_field/list.html:9
-#: aleksis/core/models.py:565
-msgid "Additional fields"
-msgstr "Додаткові поля"
-
-#: aleksis/core/models.py:724 aleksis/core/models.py:748
-#: aleksis/core/models.py:843 aleksis/core/models.py:1299
+#: aleksis/core/models.py:650 aleksis/core/models.py:674
+#: aleksis/core/models.py:769 aleksis/core/models.py:1213
+#: aleksis/core/models.py:1722
 #: aleksis/core/templates/core/announcement/list.html:18
-#: aleksis/core/models.py:746 aleksis/core/models.py:770
-#: aleksis/core/models.py:865 aleksis/core/models.py:1321
 msgid "Title"
 msgstr "Назва"
 
-#: aleksis/core/models.py:727 aleksis/core/models.py:749
+#: aleksis/core/models.py:653
 msgid "Application"
 msgstr "Додаток"
 
-#: aleksis/core/models.py:733 aleksis/core/models.py:755
+#: aleksis/core/models.py:659
 msgid "Activity"
 msgstr "Активність"
 
-#: aleksis/core/models.py:734 aleksis/core/models.py:756
+#: aleksis/core/models.py:660
 msgid "Activities"
 msgstr "Активності"
 
-#: aleksis/core/models.py:740 aleksis/core/models.py:762
+#: aleksis/core/models.py:666
 msgid "Sender"
 msgstr "Відправник"
 
-#: aleksis/core/models.py:745 aleksis/core/models.py:767
+#: aleksis/core/models.py:671
 msgid "Recipient"
 msgstr "Отримувач"
 
-#: aleksis/core/models.py:750 aleksis/core/models.py:1079
-#: aleksis/core/models.py:772 aleksis/core/models.py:1101
+#: aleksis/core/models.py:676 aleksis/core/models.py:1005
 msgid "Link"
 msgstr "Посилання"
 
-#: aleksis/core/models.py:753 aleksis/core/models.py:1080
-#: aleksis/core/models.py:1429
+#: aleksis/core/models.py:679 aleksis/core/models.py:1006
+#: aleksis/core/models.py:1346
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
-#: aleksis/core/models.py:775 aleksis/core/models.py:1102
-#: aleksis/core/models.py:1451
 msgid "Icon"
 msgstr "Піктограма"
 
-#: aleksis/core/models.py:756 aleksis/core/models.py:778
+#: aleksis/core/models.py:682
 msgid "Send notification at"
 msgstr "Надіслати сповіщення о"
 
-#: aleksis/core/models.py:758 aleksis/core/models.py:780
+#: aleksis/core/models.py:684
 msgid "Read"
 msgstr "Читати"
 
-#: aleksis/core/models.py:759 aleksis/core/models.py:781
+#: aleksis/core/models.py:685
 msgid "Sent"
 msgstr "Надіслано"
 
-#: aleksis/core/models.py:776 aleksis/core/models.py:798
+#: aleksis/core/models.py:702
 msgid "Notification"
 msgstr "Сповіщення"
 
-#: aleksis/core/models.py:777 aleksis/core/preferences.py:29
-#: aleksis/core/models.py:799 aleksis/core/preferences.py:28
+#: aleksis/core/models.py:703 aleksis/core/preferences.py:29
 msgid "Notifications"
 msgstr "Сповіщення"
 
-#: aleksis/core/models.py:845 aleksis/core/models.py:867
+#: aleksis/core/models.py:771
 msgid "Link to detailed view"
 msgstr "Посилання на детальний перегляд"
 
-#: aleksis/core/models.py:848 aleksis/core/models.py:870
+#: aleksis/core/models.py:774
 msgid "Date and time from when to show"
 msgstr "Дата і час, з якого показувати"
 
-#: aleksis/core/models.py:851 aleksis/core/models.py:873
+#: aleksis/core/models.py:777
 msgid "Date and time until when to show"
 msgstr "Дата і час, до якого показувати"
 
-#: aleksis/core/models.py:876 aleksis/core/models.py:898
+#: aleksis/core/models.py:802
 msgid "Announcement"
 msgstr "Оголошення"
 
-#: aleksis/core/models.py:877
+#: aleksis/core/models.py:803
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
-#: aleksis/core/models.py:899
 msgid "Announcements"
 msgstr "Оголошення"
 
-#: aleksis/core/models.py:914 aleksis/core/models.py:936
+#: aleksis/core/models.py:840
 msgid "Announcement recipient"
 msgstr "Отримувач оголошення"
 
-#: aleksis/core/models.py:915 aleksis/core/models.py:937
+#: aleksis/core/models.py:841
 msgid "Announcement recipients"
 msgstr "Отримувачі оголошення"
 
-#: aleksis/core/models.py:935 aleksis/core/models.py:957
+#: aleksis/core/models.py:861
 msgid "Widget Title"
 msgstr "Назва віджета"
 
-#: aleksis/core/models.py:936 aleksis/core/models.py:958
+#: aleksis/core/models.py:862
 msgid "Activate Widget"
 msgstr "Активувати віджет"
 
-#: aleksis/core/models.py:937 aleksis/core/models.py:959
+#: aleksis/core/models.py:863
 msgid "Widget is broken"
 msgstr "Віджет зламався"
 
-#: aleksis/core/models.py:940 aleksis/core/models.py:962
+#: aleksis/core/models.py:866
 msgid "Size on mobile devices"
 msgstr "Розмір на мобільних"
 
-#: aleksis/core/models.py:941 aleksis/core/models.py:963
+#: aleksis/core/models.py:867
 msgid "<= 600 px, 12 columns"
 msgstr "<= 600 пікс, 12 стовпчиків"
 
-#: aleksis/core/models.py:946 aleksis/core/models.py:968
+#: aleksis/core/models.py:872
 msgid "Size on tablet devices"
 msgstr "Розмір на планшетах"
 
-#: aleksis/core/models.py:947 aleksis/core/models.py:969
+#: aleksis/core/models.py:873
 msgid "> 600 px, 12 columns"
 msgstr "> 600 пікс, 12 стовпчиків"
 
-#: aleksis/core/models.py:952 aleksis/core/models.py:974
+#: aleksis/core/models.py:878
 msgid "Size on desktop devices"
 msgstr "Розмір на ПК"
 
-#: aleksis/core/models.py:953 aleksis/core/models.py:975
+#: aleksis/core/models.py:879
 msgid "> 992 px, 12 columns"
 msgstr "> 992 пікс, 12 стовпчиків"
 
-#: aleksis/core/models.py:958 aleksis/core/models.py:980
+#: aleksis/core/models.py:884
 msgid "Size on large desktop devices"
 msgstr "Розмір на великих екранах"
 
-#: aleksis/core/models.py:959 aleksis/core/models.py:981
+#: aleksis/core/models.py:885
 msgid "> 1200 px>, 12 columns"
 msgstr "> 1200 пікс, 12 стовпчиків"
 
-#: aleksis/core/models.py:990 aleksis/core/models.py:1012
+#: aleksis/core/models.py:916
 msgid "Can edit default dashboard"
 msgstr "Може редагувати типову/стандартну інформпанель"
 
-#: aleksis/core/models.py:991 aleksis/core/models.py:1013
+#: aleksis/core/models.py:917
 msgid "Dashboard Widget"
 msgstr "Віджет інформпанелі"
 
-#: aleksis/core/models.py:992 aleksis/core/models.py:1014
+#: aleksis/core/models.py:918
 msgid "Dashboard Widgets"
 msgstr "Віджети інформпанелі"
 
-#: aleksis/core/models.py:998 aleksis/core/models.py:1020
+#: aleksis/core/models.py:924
 msgid "URL"
 msgstr "URL"
 
-#: aleksis/core/models.py:999 aleksis/core/models.py:1021
+#: aleksis/core/models.py:925
 msgid "Icon URL"
 msgstr "Піктограма URL"
 
-#: aleksis/core/models.py:1005 aleksis/core/models.py:1027
+#: aleksis/core/models.py:931
 msgid "External link widget"
 msgstr "Зовнішнє посилання на віджет"
 
-#: aleksis/core/models.py:1006 aleksis/core/models.py:1028
+#: aleksis/core/models.py:932
 msgid "External link widgets"
 msgstr "Зовнішні посилання на віджети"
 
-#: aleksis/core/models.py:1012 aleksis/core/models.py:1034
+#: aleksis/core/models.py:938
 msgid "Content"
 msgstr "Зміст"
 
-#: aleksis/core/models.py:1018 aleksis/core/models.py:1040
+#: aleksis/core/models.py:944
 msgid "Static content widget"
 msgstr "Віджет з постійним змістом"
 
-#: aleksis/core/models.py:1019 aleksis/core/models.py:1041
+#: aleksis/core/models.py:945
 msgid "Static content widgets"
 msgstr "Віджети з постійним змістом"
 
-#: aleksis/core/models.py:1024 aleksis/core/models.py:1046
+#: aleksis/core/models.py:950
 msgid "Dashboard widget"
 msgstr "Віджет інформпанелі"
 
-#: aleksis/core/models.py:1029 aleksis/core/models.py:1051
+#: aleksis/core/models.py:955
 msgid "Order"
 msgstr "Порядок"
 
-#: aleksis/core/models.py:1030 aleksis/core/models.py:1052
+#: aleksis/core/models.py:956
 msgid "Part of the default dashboard"
 msgstr "Частина типової інформпанелі"
 
-#: aleksis/core/models.py:1045 aleksis/core/models.py:1067
+#: aleksis/core/models.py:971
 msgid "Dashboard widget order"
 msgstr "Порядок віджету на інформпанелі"
 
-#: aleksis/core/models.py:1046 aleksis/core/models.py:1068
+#: aleksis/core/models.py:972
 msgid "Dashboard widget orders"
 msgstr "Порядок віджетів на інформпанелі"
 
-#: aleksis/core/models.py:1052 aleksis/core/models.py:1074
+#: aleksis/core/models.py:978
 msgid "Menu ID"
 msgstr "Меню ID"
 
-#: aleksis/core/models.py:1065 aleksis/core/models.py:1087
+#: aleksis/core/models.py:991
 msgid "Custom menu"
 msgstr "Користувацьке меню"
 
-#: aleksis/core/models.py:1066 aleksis/core/models.py:1088
+#: aleksis/core/models.py:992
 msgid "Custom menus"
 msgstr "Користувацькі меню"
 
-#: aleksis/core/models.py:1076 aleksis/core/models.py:1098
+#: aleksis/core/models.py:1002
 msgid "Menu"
 msgstr "Меню"
 
-#: aleksis/core/models.py:1086 aleksis/core/models.py:1108
+#: aleksis/core/models.py:1012
 msgid "Custom menu item"
 msgstr "Пункт користувацького меню"
 
-#: aleksis/core/models.py:1087 aleksis/core/models.py:1109
+#: aleksis/core/models.py:1013
 msgid "Custom menu items"
 msgstr "Пункти користувацького меню"
 
-#: aleksis/core/models.py:1112 aleksis/core/models.py:1134
+#: aleksis/core/models.py:1037
 msgid "Title of type"
 msgstr "Назва типу"
 
-#: aleksis/core/models.py:1119 aleksis/core/templates/core/group/full.html:50
-#: aleksis/core/models.py:1141
+#: aleksis/core/models.py:1044 aleksis/core/templates/core/group/full.html:50
 msgid "Group type"
 msgstr "Тип групи"
 
-#: aleksis/core/models.py:1120
+#: aleksis/core/models.py:1045
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
-#: aleksis/core/models.py:1142
 msgid "Group types"
 msgstr "Типи груп"
 
-#: aleksis/core/models.py:1133 aleksis/core/models.py:1155
+#: aleksis/core/models.py:1056
 msgid "Can view system status"
 msgstr "Може переглядати стан системи"
 
-#: aleksis/core/models.py:1134 aleksis/core/models.py:1156
+#: aleksis/core/models.py:1057
 msgid "Can manage data"
 msgstr "Може керувати даними"
 
-#: aleksis/core/models.py:1135 aleksis/core/models.py:1157
+#: aleksis/core/models.py:1058
 msgid "Can impersonate"
 msgstr "Може маскуватися"
 
-#: aleksis/core/models.py:1136 aleksis/core/models.py:1158
+#: aleksis/core/models.py:1059
 msgid "Can use search"
 msgstr "Може шукати"
 
-#: aleksis/core/models.py:1137 aleksis/core/models.py:1159
+#: aleksis/core/models.py:1060
 msgid "Can change site preferences"
 msgstr "Може змінювати властивості сайту"
 
-#: aleksis/core/models.py:1138 aleksis/core/models.py:1160
+#: aleksis/core/models.py:1061
 msgid "Can change person preferences"
 msgstr "Може змінювати властивості особи"
 
-#: aleksis/core/models.py:1139 aleksis/core/models.py:1161
+#: aleksis/core/models.py:1062
 msgid "Can change group preferences"
 msgstr "Може змінювати властивості групи"
 
-#: aleksis/core/models.py:1140 aleksis/core/models.py:1162
+#: aleksis/core/models.py:1063
 msgid "Can test PDF generation"
 msgstr "Може генерувати тестові PDF"
 
-#: aleksis/core/models.py:1141 aleksis/core/models.py:1163
+#: aleksis/core/models.py:1064
 msgid "Can invite persons"
 msgstr "Може запрошувати осіб"
 
-#: aleksis/core/models.py:1177 aleksis/core/models.py:1199
+#: aleksis/core/models.py:1065
+#, fuzzy
+#| msgid "Birthday Calendar"
+msgid "Can view birthday calendar"
+msgstr "Календар Днів Народження"
+
+#: aleksis/core/models.py:1092
 msgid "Related data check task"
 msgstr "Завдання перевірки пов'язаних даних"
 
-#: aleksis/core/models.py:1185 aleksis/core/models.py:1207
+#: aleksis/core/models.py:1100
 msgid "Issue solved"
 msgstr "Проблема вирішена"
 
-#: aleksis/core/models.py:1186 aleksis/core/models.py:1208
+#: aleksis/core/models.py:1101
 msgid "Notification sent"
 msgstr "Сповіщення надіслане"
 
-#: aleksis/core/models.py:1199 aleksis/core/models.py:1221
+#: aleksis/core/models.py:1114
 msgid "Data check result"
 msgstr "Результат перевірки даних"
 
-#: aleksis/core/models.py:1200 aleksis/core/models.py:1222
+#: aleksis/core/models.py:1115
 msgid "Data check results"
 msgstr "Результати перевірки даних"
 
-#: aleksis/core/models.py:1202 aleksis/core/models.py:1224
+#: aleksis/core/models.py:1117
 msgid "Can run data checks"
 msgstr "Може запускати перевірки даних"
 
-#: aleksis/core/models.py:1203 aleksis/core/models.py:1225
+#: aleksis/core/models.py:1118
 msgid "Can solve data check problems"
 msgstr "Може розв'язувати проблеми перевірки даних"
 
-#: aleksis/core/models.py:1210 aleksis/core/models.py:1232
+#: aleksis/core/models.py:1125
 msgid "E-Mail address"
 msgstr "Адреса ел.пошти"
 
-#: aleksis/core/models.py:1270 aleksis/core/models.py:1292
+#: aleksis/core/models.py:1184 aleksis/core/models.py:1730
 msgid "Owner"
 msgstr "Власник"
 
-#: aleksis/core/models.py:1274 aleksis/core/models.py:1296
+#: aleksis/core/models.py:1188
 msgid "File expires at"
 msgstr "Файл дійсний до"
 
-#: aleksis/core/models.py:1277 aleksis/core/models.py:1299
+#: aleksis/core/models.py:1191
 msgid "Generated HTML file"
 msgstr "Згенерований файл HTML"
 
-#: aleksis/core/models.py:1280 aleksis/core/models.py:1302
+#: aleksis/core/models.py:1194
 msgid "Generated PDF file"
 msgstr "Згенерований файл PDF"
 
-#: aleksis/core/models.py:1287 aleksis/core/models.py:1309
+#: aleksis/core/models.py:1201
 msgid "PDF file"
 msgstr "Файл PDF"
 
-#: aleksis/core/models.py:1288 aleksis/core/models.py:1310
+#: aleksis/core/models.py:1202
 msgid "PDF files"
 msgstr "Файли PDF"
 
-#: aleksis/core/models.py:1293 aleksis/core/models.py:1315
+#: aleksis/core/models.py:1207
 msgid "Task result"
 msgstr "Результат завдання"
 
-#: aleksis/core/models.py:1296 aleksis/core/models.py:1318
+#: aleksis/core/models.py:1210
 msgid "Task user"
 msgstr "Користувач завдання"
 
-#: aleksis/core/models.py:1300 aleksis/core/models.py:1322
+#: aleksis/core/models.py:1214
 msgid "Back URL"
 msgstr "URL для повернення"
 
-#: aleksis/core/models.py:1301 aleksis/core/models.py:1323
+#: aleksis/core/models.py:1215
 msgid "Progress title"
 msgstr "Назва процесу"
 
-#: aleksis/core/models.py:1302 aleksis/core/models.py:1324
+#: aleksis/core/models.py:1216
 msgid "Error message"
 msgstr "Повідомлення про помилку"
 
-#: aleksis/core/models.py:1303 aleksis/core/models.py:1325
+#: aleksis/core/models.py:1217
 msgid "Success message"
 msgstr "Повідомлення про успіх"
 
-#: aleksis/core/models.py:1304 aleksis/core/models.py:1326
+#: aleksis/core/models.py:1218
 msgid "Redirect on success URL"
 msgstr "Посилання для перенаправлення в разі успіху"
 
-#: aleksis/core/models.py:1306 aleksis/core/models.py:1328
+#: aleksis/core/models.py:1220
 msgid "Additional button title"
 msgstr "Назва додаткової кнопки"
 
-#: aleksis/core/models.py:1308 aleksis/core/models.py:1330
+#: aleksis/core/models.py:1222
 msgid "Additional button URL"
 msgstr "Посилання додаткової кнопки"
 
-#: aleksis/core/models.py:1310 aleksis/core/models.py:1332
+#: aleksis/core/models.py:1224
 msgid "Additional button icon"
 msgstr "Піктограма додаткової кнопки"
 
-#: aleksis/core/models.py:1312 aleksis/core/models.py:1334
+#: aleksis/core/models.py:1226
 msgid "Result fetched"
 msgstr "Отриманий результат"
 
-#: aleksis/core/models.py:1337 aleksis/core/models.py:1359
+#: aleksis/core/models.py:1251
 msgid "Background task completed successfully"
 msgstr "Фонове завдання успішно завершене"
 
-#: aleksis/core/models.py:1338 aleksis/core/models.py:1360
+#: aleksis/core/models.py:1252
 msgid "The background task '{}' has been completed successfully."
 msgstr "Фонове завдання '{}' було успішно завершене."
 
-#: aleksis/core/models.py:1344 aleksis/core/models.py:1366
+#: aleksis/core/models.py:1258
 msgid "Background task failed"
 msgstr "Збій фонового завдання"
 
-#: aleksis/core/models.py:1345 aleksis/core/models.py:1367
+#: aleksis/core/models.py:1259
 msgid "The background task '{}' has failed."
 msgstr "У фонового завдання '{}' стався збій."
 
-#: aleksis/core/models.py:1354 aleksis/core/models.py:1376
+#: aleksis/core/models.py:1268
 msgid "Background task"
 msgstr "Фонове завдання"
 
-#: aleksis/core/models.py:1368 aleksis/core/models.py:1390
+#: aleksis/core/models.py:1282
 msgid "Task user assignment"
 msgstr "Призначення користувача завдання"
 
-#: aleksis/core/models.py:1369 aleksis/core/models.py:1391
+#: aleksis/core/models.py:1283
 msgid "Task user assignments"
 msgstr "Призначення користувачів завдання"
 
-#: aleksis/core/models.py:1385 aleksis/core/models.py:1407
+#: aleksis/core/models.py:1299
 msgid "Additional attributes"
 msgstr "Додаткові атрибути"
 
-#: aleksis/core/models.py:1423 aleksis/core/models.py:1445
+#: aleksis/core/models.py:1340
 msgid "Allowed scopes that clients can request"
 msgstr "Дозволені межі дії, які можуть запитувати клієнти"
 
-#: aleksis/core/models.py:1433 aleksis/core/models.py:1455
-msgid ""
-"This image will be shown as icon in the authorization flow. It should be "
-"squared."
-msgstr ""
-"Це зображення буде іконкою під час авторизації. Воно повинне бути квадратним."
+#: aleksis/core/models.py:1350
+msgid "This image will be shown as icon in the authorization flow. It should be squared."
+msgstr "Це зображення буде іконкою під час авторизації. Воно повинне бути квадратним."
 
-#: aleksis/core/models.py:1478 aleksis/core/models.py:1500
+#: aleksis/core/models.py:1398
 msgid "Can view room timetable"
 msgstr "Може переглядати розклад кімнати"
 
-#: aleksis/core/models.py:1480 aleksis/core/models.py:1502
+#: aleksis/core/models.py:1400
 msgid "Room"
 msgstr "Кімната"
 
-#: aleksis/core/models.py:1481 aleksis/core/models.py:1503
+#: aleksis/core/models.py:1401
 msgid "Rooms"
 msgstr "Кімнати"
 
-#: aleksis/core/preferences.py:25 aleksis/core/preferences.py:24
+#: aleksis/core/models.py:1424
+msgid "Start date and time"
+msgstr "Дата і час початку"
+
+#: aleksis/core/models.py:1426
+msgid "End date and time"
+msgstr "Дата і час закінчення"
+
+#: aleksis/core/models.py:1427
+msgid "Timezone"
+msgstr "Часовий пояс"
+
+#: aleksis/core/models.py:1430
+msgid "Recurrences"
+msgstr "Повтори"
+
+#: aleksis/core/models.py:1436
+msgid "Amended base event"
+msgstr "Виправлена основна подія"
+
+#: aleksis/core/models.py:1561
+msgid "Calendar Event"
+msgstr "Календарна подія"
+
+#: aleksis/core/models.py:1562
+msgid "Calendar Events"
+msgstr "Календарні події"
+
+#: aleksis/core/models.py:1592
+msgid "Birthdays"
+msgstr "Дні Народження"
+
+#: aleksis/core/models.py:1597
+msgid "{}'s birthday"
+msgstr "{} святкує День Народження"
+
+#: aleksis/core/models.py:1648 aleksis/core/models.py:1714
+msgid "Holidays"
+msgstr "Вихідні"
+
+#: aleksis/core/models.py:1713
+msgid "Holiday"
+msgstr "Вихідний"
+
+#: aleksis/core/models.py:1715
+#, fuzzy
+#| msgid "Birthday Calendar"
+msgid "Can view holiday calendar"
+msgstr "Календар Днів Народження"
+
+#: aleksis/core/models.py:1720
+#, fuzzy
+#| msgid "Personal Calendar URLs"
+msgid "Personal events"
+msgstr "URL-посилання особистих календарів"
+
+#: aleksis/core/models.py:1724
+#, fuzzy
+#| msgid "Notification"
+msgid "Location"
+msgstr "Сповіщення"
+
+#: aleksis/core/models.py:1807
+msgid "Email"
+msgstr ""
+
+#: aleksis/core/models.py:1810
+#, fuzzy
+#| msgid "Create group"
+msgid "Related group"
+msgstr "Створити групу"
+
+#: aleksis/core/models.py:1817
+#, fuzzy
+#| msgid "Internationalisation"
+msgid "Organisation"
+msgstr "Інтернаціоналізація"
+
+#: aleksis/core/models.py:1818
+#, fuzzy
+#| msgid "Invitations"
+msgid "Organisations"
+msgstr "Запрошення"
+
+#: aleksis/core/preferences.py:25
 msgid "General"
 msgstr "Загальне"
 
-#: aleksis/core/preferences.py:26 aleksis/core/preferences.py:25
+#: aleksis/core/preferences.py:26
 msgid "School"
 msgstr "Школа / навч.заклад"
 
-#: aleksis/core/preferences.py:27 aleksis/core/preferences.py:26
+#: aleksis/core/preferences.py:27
 msgid "Theme"
 msgstr "Тема"
 
-#: aleksis/core/preferences.py:28 aleksis/core/preferences.py:27
+#: aleksis/core/preferences.py:28
 msgid "Mail"
 msgstr "Пошта"
 
-#: aleksis/core/preferences.py:30 aleksis/core/preferences.py:29
+#: aleksis/core/preferences.py:30
 msgid "Footer"
 msgstr "Нижній колонтитул (footer)"
 
-#: aleksis/core/preferences.py:31 aleksis/core/preferences.py:30
+#: aleksis/core/preferences.py:31
 msgid "Accounts"
 msgstr "Облікові записи"
 
-#: aleksis/core/preferences.py:32 aleksis/core/preferences.py:31
+#: aleksis/core/preferences.py:32
 msgid "Authentication"
 msgstr "Авторизація"
 
-#: aleksis/core/preferences.py:33 aleksis/core/preferences.py:32
+#: aleksis/core/preferences.py:33
 msgid "Internationalisation"
 msgstr "Інтернаціоналізація"
 
-#: aleksis/core/preferences.py:43
+#: aleksis/core/preferences.py:34
+msgid "Calendar"
+msgstr "Календар"
+
+#: aleksis/core/preferences.py:44
 msgid "Site title"
 msgstr "Назва сайту"
 
-#: aleksis/core/preferences.py:55
+#: aleksis/core/preferences.py:56
 msgid "Site description"
 msgstr "Опис сайту"
 
-#: aleksis/core/preferences.py:65
+#: aleksis/core/preferences.py:66
 msgid "Primary colour"
 msgstr "Основний колір"
 
-#: aleksis/core/preferences.py:77
+#: aleksis/core/preferences.py:78
 msgid "Secondary colour"
 msgstr "Додатковий колір"
 
-#: aleksis/core/preferences.py:89
+#: aleksis/core/preferences.py:90
 msgid "Logo"
 msgstr "Логотип"
 
-#: aleksis/core/preferences.py:100
+#: aleksis/core/preferences.py:101
 msgid "Favicon"
 msgstr "Favicon"
 
-#: aleksis/core/preferences.py:111
+#: aleksis/core/preferences.py:112
 msgid "PWA-Icon"
 msgstr "Піктограма PWA"
 
-#: aleksis/core/preferences.py:121
+#: aleksis/core/preferences.py:122
 msgid "PWA-Icon is maskable"
 msgstr "Піктограма PWA може бути з маскою"
 
-#: aleksis/core/preferences.py:133
+#: aleksis/core/preferences.py:134
 msgid "Mail out name"
 msgstr "Ім'я відправника"
 
-#: aleksis/core/preferences.py:144
+#: aleksis/core/preferences.py:145
 msgid "Mail out address"
 msgstr "Адреса відправника"
 
-#: aleksis/core/preferences.py:157
+#: aleksis/core/preferences.py:158
 msgid "Link to privacy policy"
 msgstr "Посилання на політику приватності"
 
-#: aleksis/core/preferences.py:169
+#: aleksis/core/preferences.py:170
 msgid "Link to imprint"
 msgstr "Посилання на відбиток"
 
-#: aleksis/core/preferences.py:180
+#: aleksis/core/preferences.py:181
 msgid "Name format for addressing"
 msgstr "Формат імені у листуванні"
 
-#: aleksis/core/preferences.py:197
+#: aleksis/core/preferences.py:198
 msgid "Channels to use for notifications"
 msgstr "Канали для сповіщень"
 
-#: aleksis/core/preferences.py:208
+#: aleksis/core/preferences.py:209
 msgid "Select Design"
 msgstr "Оберіть дизайн"
 
-#: aleksis/core/preferences.py:211
+#: aleksis/core/preferences.py:212
 msgid "Light mode"
 msgstr "Світлий режим"
 
-#: aleksis/core/preferences.py:224
+#: aleksis/core/preferences.py:225
 msgid "Regular expression to match primary group, e.g. '^Class .*'"
 msgstr "Регулярний вираз для пошуку основної групи, напр. '^Class .*'"
 
-#: aleksis/core/preferences.py:235
+#: aleksis/core/preferences.py:236
 msgid "Field on person to match primary group against"
 msgstr "Поле щодо особи для співставлення з основною групою"
 
-#: aleksis/core/preferences.py:247
+#: aleksis/core/preferences.py:248
 msgid "Automatically create new persons for new users"
 msgstr "Нові особи для нових користувачів створювати автоматично"
 
-#: aleksis/core/preferences.py:256
-msgid ""
-"Automatically link existing persons to new users by their e-mail address"
-msgstr ""
-"Пов'язувати існуючих осіб з новими користувачами автоматично за ел.адресами"
+#: aleksis/core/preferences.py:257
+msgid "Automatically link existing persons to new users by their e-mail address"
+msgstr "Пов'язувати існуючих осіб з новими користувачами автоматично за ел.адресами"
 
-#: aleksis/core/preferences.py:267
+#: aleksis/core/preferences.py:268
 msgid "Display name of the school"
 msgstr "Назва школи / навч.закладу для відображення"
 
-#: aleksis/core/preferences.py:278
+#: aleksis/core/preferences.py:279
 msgid "Official name of the school, e.g. as given by supervisory authority"
 msgstr "Офіційна назва школи / навч.закладу, напр. як у державному свідоцтві"
 
-#: aleksis/core/preferences.py:286
+#: aleksis/core/preferences.py:287
 msgid "Allow users to change their passwords"
 msgstr "Дозволити користувачам змінювати свої паролі"
 
-#: aleksis/core/preferences.py:294
+#: aleksis/core/preferences.py:295
 msgid "Allow users to reset their passwords"
 msgstr "Дозволити користувачам скидати свої паролі"
 
-#: aleksis/core/preferences.py:302
+#: aleksis/core/preferences.py:303
 msgid "Enable signup"
 msgstr "Увімкнути реєстрацію"
 
-#: aleksis/core/preferences.py:310
+#: aleksis/core/preferences.py:311
 msgid "Regular expression for allowed usernames"
 msgstr "Регулярний вираз для дозволених логінів"
 
-#: aleksis/core/preferences.py:318
+#: aleksis/core/preferences.py:319
 msgid "Enable invitations"
 msgstr "Увімкнути запрошення"
 
-#: aleksis/core/preferences.py:326
+#: aleksis/core/preferences.py:327
 msgid "Length of invite code. (Default 3: abcde-acbde-abcde)"
 msgstr "Довжина запрошувального коду. (Типово 3: abcde-acbde-abcde)"
 
-#: aleksis/core/preferences.py:334
+#: aleksis/core/preferences.py:335
 msgid "Size of packets. (Default 5: abcde)"
 msgstr "Розмір пакетів. (Типово 5: abcde)"
 
-#: aleksis/core/preferences.py:345
+#: aleksis/core/preferences.py:346
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr "Дозволені потоки грантів для додатків з OAuth"
 
-#: aleksis/core/preferences.py:358
+#: aleksis/core/preferences.py:359
 msgid "Send emails if data checks detect problems"
 msgstr "В разі виявлення проблем під час перевірки даних надіслати ел.лист"
 
-#: aleksis/core/preferences.py:369
+#: aleksis/core/preferences.py:370
 msgid "Email recipients for data checks problem emails"
 msgstr "Ел.адреси отримувачів для листів з проблемами перевірки даних"
 
-#: aleksis/core/preferences.py:380
+#: aleksis/core/preferences.py:381
 msgid "Email recipient groups for data checks problem emails"
 msgstr "Ел.адреси груп для листів з проблемами перевірки даних"
 
-#: aleksis/core/preferences.py:389
+#: aleksis/core/preferences.py:390
 msgid "Show dashboard to users without login"
 msgstr "Відображати інформпанель анонімним користувачам"
 
-#: aleksis/core/preferences.py:398
+#: aleksis/core/preferences.py:399
 msgid "Allow users to edit their dashboard"
 msgstr "Дозволити користувачам редагувати свою інформпанель"
 
-#: aleksis/core/preferences.py:409
+#: aleksis/core/preferences.py:410
 msgid "Fields on person model which are editable by themselves."
 msgstr "Поля з описом особи, які можна редагувати самостійно."
 
-#: aleksis/core/preferences.py:424
-msgid ""
-"Editable fields on person model which should trigger a notification on change"
+#: aleksis/core/preferences.py:425
+msgid "Editable fields on person model which should trigger a notification on change"
 msgstr "Змінювані поля з описом особи, які повинні сповіщати щодо редагування"
 
-#: aleksis/core/preferences.py:438
+#: aleksis/core/preferences.py:439
 msgid "Contact for notification if a person changes their data"
 msgstr "Контакт для сповіщень, якщо хтось змінює свої дані"
 
-#: aleksis/core/preferences.py:449
+#: aleksis/core/preferences.py:450
 msgid "Prefer personal photos over avatars"
 msgstr "Віддавати перевагу особистим фото замість аватарів"
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:460
 msgid "PDF file expiration duration"
 msgstr "Термін придатності файла PDF"
 
-#: aleksis/core/preferences.py:460
+#: aleksis/core/preferences.py:461
 msgid "in minutes"
 msgstr "у хвилинах"
 
-#: aleksis/core/preferences.py:470
+#: aleksis/core/preferences.py:471
 msgid "Automatically update the dashboard and its widgets"
 msgstr "Автоматично оновлювати інформпанель та її віджети"
 
-#: aleksis/core/preferences.py:480
+#: aleksis/core/preferences.py:481
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr "Автоматично оновлювати інформпанель та її віджети (для всього сайту)"
 
-#: aleksis/core/preferences.py:490
-msgid "Country for phone number parsing"
-msgstr "Країна для розбору номера телефона"
+#: aleksis/core/preferences.py:491
+msgid "Birthday calendar feed color"
+msgstr "Колір календаря Днів Народження"
+
+#: aleksis/core/preferences.py:503
+msgid "Holiday calendar feed color"
+msgstr "Колір календаря Вихідних"
 
-#: aleksis/core/settings.py:551
+#: aleksis/core/preferences.py:515
+#, fuzzy
+#| msgid "Holiday calendar feed color"
+msgid "Personal events feed color"
+msgstr "Колір календаря Вихідних"
+
+#: aleksis/core/preferences.py:528
+msgid "Activated calendars"
+msgstr "Активні календарі"
+
+#: aleksis/core/preferences.py:546
+#, fuzzy
+#| msgid "Regular expression for allowed usernames"
+msgid "Comma-separated list of disallowed usernames"
+msgstr "Регулярний вираз для дозволених логінів"
+
+#: aleksis/core/settings.py:548
 msgid "English"
 msgstr "Англійська"
 
-#: aleksis/core/settings.py:552
+#: aleksis/core/settings.py:549
 msgid "German"
 msgstr "Німецька"
 
-#: aleksis/core/settings.py:553
+#: aleksis/core/settings.py:550
 msgid "Ukrainian"
 msgstr "Українська"
 
-#: aleksis/core/tables.py:25
-#: aleksis/core/templates/core/announcement/list.html:36
-#: aleksis/core/templates/core/group/full.html:26
-#: aleksis/core/templates/oauth2_provider/application/detail.html:17
-msgid "Edit"
-msgstr "Редагувати"
-
-#: aleksis/core/tables.py:27 aleksis/core/tables.py:148
-#: aleksis/core/tables.py:185
-#: aleksis/core/templates/core/announcement/list.html:22
-#: aleksis/core/tables.py:130 aleksis/core/tables.py:167
-msgid "Actions"
-msgstr "Дії"
-
-#: aleksis/core/tables.py:115 aleksis/core/tables.py:116
-#: aleksis/core/tables.py:130 aleksis/core/tables.py:146
-#: aleksis/core/tables.py:183
+#: aleksis/core/tables.py:96 aleksis/core/tables.py:112
+#: aleksis/core/tables.py:149
 #: aleksis/core/templates/core/announcement/list.html:42
 #: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
 #: aleksis/core/templates/oauth2_provider/application/detail.html:21
-#: aleksis/core/tables.py:97 aleksis/core/tables.py:98
-#: aleksis/core/tables.py:112 aleksis/core/tables.py:128
-#: aleksis/core/tables.py:165
 msgid "Delete"
 msgstr "Видалити"
 
+#: aleksis/core/tables.py:114 aleksis/core/tables.py:151
+#: aleksis/core/templates/core/announcement/list.html:22
+msgid "Actions"
+msgstr "Дії"
+
 #: aleksis/core/templates/403.html:14 aleksis/core/templates/500.html:10
 #: aleksis/core/templates/oauth2_provider/authorize.html:54
 msgid "Error"
@@ -1270,8 +1314,7 @@ 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 ""
@@ -1303,14 +1346,12 @@ 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"
 "          "
 
@@ -1347,6 +1388,15 @@ msgstr "Привіт!"
 msgid "Your AlekSIS team"
 msgstr "Команда AlekSIS"
 
+#: aleksis/core/templates/account/email/email_confirmation_message.txt:6
+#, python-format
+msgid ""
+"Someone tried to register an account with the username %(user_display)s and your e-mail address on %(site_domain)s.\n"
+"If it was you, please confirm the registration by clicking on the following link:"
+msgstr ""
+"Хтось спробував на сайті %(site_domain)s зареєструвати обліковий запис з логіном %(user_display)s та Вашою адресою ел.пошти.\n"
+"Якщо це були Ви, підтвердьте, будь ласка, реєстрацію, перейшовши за посиланням:"
+
 #: aleksis/core/templates/account/email_confirm.html:5
 #: aleksis/core/templates/account/email_confirm.html:6
 #: aleksis/core/templates/account/email_confirm.html:17
@@ -1356,24 +1406,17 @@ 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>."
-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:5
-#: aleksis/core/templates/account/password_change.html:6
-#: aleksis/core/templates/account/password_change.html:19
+#: aleksis/core/templates/account/password_change.html:15
+#: aleksis/core/templates/account/password_change.html:28
 #: aleksis/core/templates/account/password_reset_from_key.html:5
 #: aleksis/core/templates/account/password_reset_from_key.html:42
 #: aleksis/core/templates/account/password_reset_from_key.html:46
@@ -1382,37 +1425,13 @@ msgstr ""
 msgid "Change password"
 msgstr "Змінити пароль"
 
-#: aleksis/core/templates/account/password_change.html:12
-msgid "Forgot your current password? Click here to reset it:"
+#: aleksis/core/templates/account/password_change.html:19
+#, fuzzy
+#| msgid "Forgot your current password? Click here to reset it:"
+msgid "Forgot your current password?"
 msgstr "Забули свій пароль? Натисніть тут для скидання:"
 
-#: aleksis/core/templates/account/password_change.html:12
-msgid "Forgot Password?"
-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 "Зміна паролю вимкнена"
-
-#: aleksis/core/templates/account/password_change_disabled.html:13
-msgid "Changing of password disabled."
-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"
-"          "
-msgstr ""
-"\n"
-"            Користувачам не дозволяється змінювати свої паролі.\n"
-"            Якщо Ви думаєте, що це помилка, зверніться до адміністраторів "
-"сайту.\n"
-"          "
-
+#: aleksis/core/templates/account/password_change.html:20
 #: aleksis/core/templates/account/password_reset.html:5
 #: aleksis/core/templates/account/password_reset.html:15
 #: aleksis/core/templates/account/password_reset.html:23
@@ -1424,12 +1443,8 @@ 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 ""
@@ -1453,8 +1468,7 @@ msgid ""
 msgstr ""
 "\n"
 "            Ми надіслали Вам ел.листа. Якщо Ви його не отримаєте протягом\n"
-"            декількох хвилин, зверніться, будь ласка, до адміністраторів "
-"сайту.\n"
+"            декількох хвилин, зверніться, будь ласка, до адміністраторів сайту.\n"
 "          "
 
 #: aleksis/core/templates/account/password_reset_from_key.html:15
@@ -1465,16 +1479,13 @@ 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
@@ -1523,10 +1534,8 @@ 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.html:22
 #: aleksis/core/templates/socialaccount/signup.html:23
@@ -1570,17 +1579,13 @@ 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
@@ -1593,21 +1598,10 @@ msgid ""
 msgstr ""
 "\n"
 "            Ми надіслали Вам для перевірки ел.листа.\n"
-"            Будь ласка, перейдіть за вказаним там посиланням. Якщо Ви не "
-"отримаєте\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 "Редагування додаткового поля"
-
-#: aleksis/core/templates/core/additional_field/list.html:14
-msgid "Create additional field"
-msgstr "Створити додаткове поле"
-
 #: aleksis/core/templates/core/announcement/form.html:14
 #: aleksis/core/templates/core/announcement/form.html:21
 msgid "Edit announcement"
@@ -1638,6 +1632,12 @@ msgstr "Діє до"
 msgid "Recipients"
 msgstr "Отримувачі"
 
+#: aleksis/core/templates/core/announcement/list.html:36
+#: aleksis/core/templates/core/group/full.html:26
+#: aleksis/core/templates/oauth2_provider/application/detail.html:17
+msgid "Edit"
+msgstr "Редагувати"
+
 #: aleksis/core/templates/core/announcement/list.html:50
 msgid "There are no announcements."
 msgstr "Оголошень немає."
@@ -1771,39 +1771,29 @@ 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
@@ -1826,16 +1816,13 @@ 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
@@ -1861,8 +1848,7 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Оберіть, будь ласка, декілька груп у порядку, за яким "
-"призначати.\n"
+"            Оберіть, будь ласка, декілька груп у порядку, за яким призначати.\n"
 "          "
 
 #: aleksis/core/templates/core/group/child_groups.html:72
@@ -1876,18 +1862,14 @@ 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"
 "          "
 
@@ -1985,14 +1967,12 @@ msgstr "Додому"
 #: aleksis/core/templates/core/index.html:34
 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"
 "      "
 
@@ -2036,13 +2016,11 @@ msgstr "Активований режим обслуговування"
 #: aleksis/core/templates/core/pages/system_status.html:28
 msgid ""
 "\n"
-"                  Only admin and visitors from internal IPs can access the "
-"site.\n"
+"                  Only admin and visitors from internal IPs can access the site.\n"
 "                "
 msgstr ""
 "\n"
-"                  Доступ до сайту мають лише адміністратор та відвідувачі з "
-"внутрішніми IP-адресами.\n"
+"                  Доступ до сайту мають лише адміністратор та відвідувачі з внутрішніми IP-адресами.\n"
 "                "
 
 #: aleksis/core/templates/core/pages/system_status.html:39
@@ -2060,13 +2038,11 @@ msgstr "Активований режим налагодження"
 #: aleksis/core/templates/core/pages/system_status.html:53
 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"
+"                Веб-сервер кидає під час помилок інформацію щодо налагодження. Не використовуйте в продакшені!\n"
 "              "
 
 #: aleksis/core/templates/core/pages/system_status.html:60
@@ -2076,13 +2052,11 @@ msgstr "Режим налагодження деактивований"
 #: aleksis/core/templates/core/pages/system_status.html:62
 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"
+"                Режим налагодження деактивований. В разі збоїв відображатимуться типові сторінки помилок.\n"
 "              "
 
 #: aleksis/core/templates/core/pages/system_status.html:75
@@ -2132,13 +2106,11 @@ 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"
+"        Цей простий вигляд допоможе перевірити коректність налаштувань вбудованої системи генерації PDF.\n"
 "      "
 
 #: aleksis/core/templates/core/partials/announcements.html:8
@@ -2196,13 +2168,11 @@ msgstr "Невідомо"
 #: aleksis/core/templates/core/partials/splash_screen.html:11
 msgid ""
 "\n"
-"      This webbrowser doesn't support JavaScript, or its execution is "
-"blocked. Please use another browser to continue.\n"
+"      This webbrowser doesn't support JavaScript, or its execution is blocked. Please use another browser to continue.\n"
 "    "
 msgstr ""
 "\n"
-"      Цей веб-браузер не підтримує JavaScript або його обробка заблокована. "
-"Для продовження скористайтеся, будь ласка, іншим браузером.\n"
+"      Цей веб-браузер не підтримує JavaScript або його обробка заблокована. Для продовження скористайтеся, будь ласка, іншим браузером.\n"
 "    "
 
 #: aleksis/core/templates/core/partials/splash_screen.html:17
@@ -2284,17 +2254,6 @@ msgstr "Фільтр осіб"
 msgid "Selected persons"
 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 "Створити Навчальний рік"
-
-#: aleksis/core/templates/core/school_term/edit.html:6
-#: aleksis/core/templates/core/school_term/edit.html:7
-msgid "Edit school term"
-msgstr "Редагувати Навчальний рік"
-
 #: aleksis/core/templates/dynamic_preferences/form.html:5
 msgid "Preferences"
 msgstr "Властивості"
@@ -2325,9 +2284,7 @@ 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 "
+msgid "To enable it, switch on the corresponding checkbox in the authentication section of the "
 msgstr "Для активації увімкніть відповідний чекбокс в розділі авторизації на "
 
 #: aleksis/core/templates/invitations/disabled.html:16
@@ -2476,17 +2433,13 @@ msgstr "Немає з'єднання з сервером."
 #: aleksis/core/templates/offline.html:14
 msgid ""
 "\n"
-"      This page is not available without a connection to the server. Please "
-"check your internet connection and try again.\n"
-"      If you are connected and the error persists, please contact the system "
-"administrators:\n"
+"      This page is not available without a connection to the server. Please check your internet connection and try again.\n"
+"      If you are connected and the error persists, please contact the system administrators:\n"
 "    "
 msgstr ""
 "\n"
-"      Ця сторінка без з'єднання з сервером не доступна. Перевірте наявність "
-"підключення до інтернету та повторіть спробу.\n"
-"      Якщо інтернет працює і помилка все одно присутня, зверніться до "
-"системних адміністраторів:\n"
+"      Ця сторінка без з'єднання з сервером не доступна. Перевірте наявність підключення до інтернету та повторіть спробу.\n"
+"      Якщо інтернет працює і помилка все одно присутня, зверніться до системних адміністраторів:\n"
 "    "
 
 #: aleksis/core/templates/search/search.html:8
@@ -2521,14 +2474,12 @@ 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"
 "          "
 
@@ -2543,9 +2494,7 @@ msgstr "Видалити"
 
 #: aleksis/core/templates/socialaccount/connections.html:34
 msgid "You currently have no third-party accounts connected to this account."
-msgstr ""
-"Зараз у Вас немає облікових записів третіх сторін, з'єднаних з цим обліковим "
-"записом."
+msgstr "Зараз у Вас немає облікових записів третіх сторін, з'єднаних з цим обліковим записом."
 
 #: aleksis/core/templates/socialaccount/connections.html:37
 msgid "Add a Third-party Account"
@@ -2559,8 +2508,7 @@ msgstr "Ви приєднуєте новий обліковий запис тр
 #: 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 ""
-"Ви авторизуєтеся за допомогою стороннього облікового запису від %(provider)s."
+msgstr "Ви авторизуєтеся за допомогою стороннього облікового запису від %(provider)s."
 
 #: aleksis/core/templates/socialaccount/login.html:28
 msgid "Continue"
@@ -2576,15 +2524,11 @@ 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
@@ -2594,8 +2538,7 @@ msgid ""
 "        %(site_name)s. As a final step, please complete the following form:"
 msgstr ""
 "Ви на шляху до використання свого облікового запису у %(provider_name)s\n"
-"        для входу на %(site_name)s. Заповніть, будь ласка, для завершення цю "
-"форму:"
+"        для входу на %(site_name)s. Заповніть, будь ласка, для завершення цю форму:"
 
 #: aleksis/core/templates/socialaccount/snippets/provider_list.html:12
 #, python-format
@@ -2684,25 +2627,21 @@ 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"
+"   Приділіть, будь ласка, трохи часу для їх перевірки та вирішення проблем або позначте їх для ігнору.\n"
 "  "
 
 #: aleksis/core/templates/templated_email/data_checks.email:23
@@ -2727,12 +2666,8 @@ msgstr "Привіт, %(person)s"
 #: aleksis/core/templates/templated_email/invitation.email:9
 #: aleksis/core/templates/templated_email/invitation.email:18
 #, python-format
-msgid ""
-"you have been invited to register on %(site)s. If you would like to accept "
-"this invitation, please click on the following link:"
-msgstr ""
-"Ви запрошені зареєструватися на %(site)s. Якщо хочете прийняти запрошення, "
-"перейдіть за посиланням:"
+msgid "you have been invited to register on %(site)s. If you would like to accept this invitation, please click on the following link:"
+msgstr "Ви запрошені зареєструватися на %(site)s. Якщо хочете прийняти запрошення, перейдіть за посиланням:"
 
 #: aleksis/core/templates/templated_email/notification.email:4
 msgid "New notification for"
@@ -2806,22 +2741,16 @@ 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"
+"        телефонні номери не доступні. Резервні токени, що нижче, можуть бути використані\n"
+"        для перевірки на вході. Коли Ви використаєте усі резервні токени, Ви\n"
+"        зможете згенерувати новий набір резервних токенів. Дійсними будуть лише токени,\n"
 "        що нижче.\n"
 "      "
 
@@ -2872,9 +2801,7 @@ msgstr ""
 
 #: aleksis/core/templates/two_factor/core/login.html:51
 msgid "Please login with your account to use the external application."
-msgstr ""
-"Для використання зовнішнього додатку увійдіть, будь ласка, у свій обліковий "
-"запис."
+msgstr "Для використання зовнішнього додатку увійдіть, будь ласка, у свій обліковий запис."
 
 #: aleksis/core/templates/two_factor/core/login.html:58
 msgid "Please login to see this page."
@@ -2883,83 +2810,67 @@ msgstr "Для перегляду цієї сторінки, будь ласка
 #: aleksis/core/templates/two_factor/core/login.html:69
 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"
 "                        які Ви почуєте.\n"
 "                      "
 
 #: aleksis/core/templates/two_factor/core/login.html:74
 msgid ""
 "\n"
-"                        We sent you a text message, please enter the code we "
-"sent.\n"
+"                        We sent you a text message, please enter the code we sent.\n"
 "                      "
 msgstr ""
 "\n"
-"                        Ми надіслали Вам текстове повідомлення. Напишіть, "
-"будь ласка, отриманий код.\n"
+"                        Ми надіслали Вам текстове повідомлення. Напишіть, будь ласка, отриманий код.\n"
 "                      "
 
 #: aleksis/core/templates/two_factor/core/login.html:78
 msgid ""
 "\n"
-"                        We sent you an email, please enter the code we "
-"sent.\n"
+"                        We sent you an email, please enter the code we sent.\n"
 "                      "
 msgstr ""
 "\n"
-"                        Ми надіслали Вам ел.листа. Напишіть, будь ласка, "
-"отриманий код.\n"
+"                        Ми надіслали Вам ел.листа. Напишіть, будь ласка, отриманий код.\n"
 "                      "
 
 #: aleksis/core/templates/two_factor/core/login.html:82
 msgid ""
 "\n"
-"                        Please use your Webauthn-compatible device to "
-"authenticate.\n"
+"                        Please use your Webauthn-compatible device to authenticate.\n"
 "                      "
 msgstr ""
 "\n"
-"                        Будь ласка, для аутентифікації користуйтеся "
-"пристроєм, сумісним з Webauthn.\n"
+"                        Будь ласка, для аутентифікації користуйтеся пристроєм, сумісним з Webauthn.\n"
 "                      "
 
 #: aleksis/core/templates/two_factor/core/login.html:86
 msgid ""
 "\n"
-"                        Please enter the code generated by your code "
-"generator.\n"
+"                        Please enter the code generated by your code generator.\n"
 "                      "
 msgstr ""
 "\n"
-"                        Напишіть, будь ласка, код з Вашого генератора "
-"кодів.\n"
+"                        Напишіть, будь ласка, код з Вашого генератора кодів.\n"
 "                      "
 
 #: aleksis/core/templates/two_factor/core/login.html:91
 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"
+"                      Ці токени були згенеровані, щоб Ви їх роздрукували та зберігали у надійному місці.\n"
+"                      Щоб увійти напишіть, будь ласка, один з резервних токенів.\n"
 "                    "
 
 #: aleksis/core/templates/two_factor/core/login.html:119
@@ -2989,16 +2900,12 @@ 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 "
-"this\n"
+"          two-factor authentication for security reasons. You need to enable this\n"
 "          security feature in order to access this page."
 msgstr ""
-"Для перегляду запитуваної сторінки, з огляду на безпеку, необхідна "
-"додаткова\n"
-"          перевірка користувача з використанням двофакторної "
-"аутентифікації.\n"
-"          Для доступу до цієї сторінки Вам потрібно увімкнути ці функції "
-"безпеки."
+"Для перегляду запитуваної сторінки, з огляду на безпеку, необхідна додаткова\n"
+"          перевірка користувача з використанням двофакторної аутентифікації.\n"
+"          Для доступу до цієї сторінки Вам потрібно увімкнути ці функції безпеки."
 
 #: aleksis/core/templates/two_factor/core/otp_required.html:16
 msgid "Go back"
@@ -3052,24 +2959,20 @@ msgid ""
 "      "
 msgstr ""
 "\n"
-"        Оберіть, будь ласка, метод автентифікації, який Ви хочете "
-"використовувати:\n"
+"        Оберіть, будь ласка, метод автентифікації, який Ви хочете використовувати:\n"
 "      "
 
 #: aleksis/core/templates/two_factor/core/setup.html:27
 msgid ""
 "\n"
 "        To start using a code 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"
+"        улюбленим додатком для двофакторної аутентифікації (TOTP) та проскануйте QR-код, що нижче.\n"
 "        Після цього напишіть отриманий генератором токен.\n"
 "      "
 
@@ -3082,8 +2985,7 @@ msgid ""
 msgstr ""
 "\n"
 "        Напишіть, будь ласка, номер телефону, на який Ви хочете\n"
-"        отримувати текстові повідомлення. На наступному кроці він буде "
-"перевірений.\n"
+"        отримувати текстові повідомлення. На наступному кроці він буде перевірений.\n"
 "      "
 
 #: aleksis/core/templates/two_factor/core/setup.html:45
@@ -3111,13 +3013,11 @@ msgstr ""
 #: aleksis/core/templates/two_factor/core/setup.html:60
 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"
+"            Ми зараз телефонуємо на Ваш номер, – напишіть, будь ласка, цифри, які Ви почуєте.\n"
 "          "
 
 #: aleksis/core/templates/two_factor/core/setup.html:66
@@ -3127,46 +3027,25 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Ми надіслали Вам текстове повідомлення. Напишіть, будь ласка, "
-"отриманий код.\n"
+"            Ми надіслали Вам текстове повідомлення. Напишіть, будь ласка, отриманий код.\n"
 "          "
 
 #: aleksis/core/templates/two_factor/core/setup.html:73
 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"
 "        "
 
-#: aleksis/core/templates/two_factor/core/setup.html:83
-msgid ""
-"\n"
-"        To identify and verify your YubiKey, please insert a\n"
-"        token in the field below. Your YubiKey will be linked to your\n"
-"        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"
@@ -3175,8 +3054,7 @@ msgstr "Двохфакторна автентифікація успішно у
 #: aleksis/core/templates/two_factor/core/setup_complete.html:13
 msgid ""
 "\n"
-"        Congratulations, you've successfully enabled two-factor "
-"authentication.\n"
+"        Congratulations, you've successfully enabled two-factor authentication.\n"
 "      "
 msgstr ""
 "\n"
@@ -3197,16 +3075,13 @@ msgstr "Створити резервні коди"
 msgid ""
 "\n"
 "          However, it might happen that you don't have access to\n"
-"          your primary device. To enable account recovery, generate backup "
-"codes\n"
+"          your primary device. To enable account recovery, generate backup codes\n"
 "          or add other authentication methods.\n"
 "        "
 msgstr ""
 "\n"
-"          Між іншим, може так статися, що Ви не матимете доступу до свого "
-"основного\n"
-"          пристрою. Для увімкнення можливості відновлення облікового запису "
-"створіть резервні коди\n"
+"          Між іншим, може так статися, що Ви не матимете доступу до свого основного\n"
+"          пристрою. Для увімкнення можливості відновлення облікового запису створіть резервні коди\n"
 "          або додайте інші методи аутентифікації.\n"
 "        "
 
@@ -3220,22 +3095,24 @@ 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?"
-msgstr ""
-"Ви вимикаєте двохфакторну автентифікацію. Це знизить захист Вашого "
-"облікового запису. Ви впевнені?"
+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 "Вимкнути"
 
-#: aleksis/core/util/notifications.py:64
+#: aleksis/core/util/auth_helpers.py:155
+#, fuzzy
+#| msgid "This username is already in use."
+msgid "This username is not allowed."
+msgstr "Такий логін вже зайнятий."
+
+#: aleksis/core/util/notifications.py:67
 msgid "E-Mail"
 msgstr "Ел.пошта"
 
-#: aleksis/core/util/notifications.py:65
+#: aleksis/core/util/notifications.py:68
 msgid "SMS"
 msgstr "SMS"
 
@@ -3259,239 +3136,228 @@ msgstr "Під час створення файлу PDF виникла проб
 msgid "Download PDF"
 msgstr "Звантажити PDF"
 
-#: aleksis/core/views.py:285
-msgid "The school term has been created."
-msgstr "Навчальний рік створений."
-
-#: aleksis/core/views.py:297
-msgid "The school term has been saved."
-msgstr "Навчальний рік збережений."
-
-#: aleksis/core/views.py:401 aleksis/core/views.py:371
+#: aleksis/core/views.py:354
 msgid "The child groups were successfully saved."
 msgstr "Підлеглі групи збережені."
 
-#: aleksis/core/views.py:420 aleksis/core/views.py:430
-#: aleksis/core/views.py:390 aleksis/core/views.py:400
+#: aleksis/core/views.py:373 aleksis/core/views.py:383
 msgid "The person has been saved."
 msgstr "Особа збережена."
 
-#: aleksis/core/views.py:480 aleksis/core/views.py:450
+#: aleksis/core/views.py:432
 msgid "The group has been saved."
 msgstr "Група збережена."
 
-#: aleksis/core/views.py:528
+#: aleksis/core/views.py:480
 msgid "Maintenance mode was turned on successfully."
 msgstr "Режим обслуговування увімкнений успішно."
 
-#: aleksis/core/views.py:530
+#: aleksis/core/views.py:482
 msgid "Maintenance mode was turned off successfully."
 msgstr "Режим обслуговування успішно вимкнений."
 
-#: aleksis/core/views.py:588 aleksis/core/views.py:558
+#: aleksis/core/views.py:539
 msgid "The announcement has been saved."
 msgstr "Оголошення збережене."
 
-#: aleksis/core/views.py:604 aleksis/core/views.py:574
+#: aleksis/core/views.py:555
 msgid "The announcement has been deleted."
 msgstr "Оголошення видалене."
 
-#: aleksis/core/views.py:673 aleksis/core/views.py:643
+#: aleksis/core/views.py:624
 msgid "The requested preference registry does not exist"
 msgstr "Журналу із запитаними властивостями не існує"
 
-#: aleksis/core/views.py:692 aleksis/core/views.py:662
+#: aleksis/core/views.py:643
 msgid "The preferences have been saved successfully."
 msgstr "Властивості збережені."
 
-#: aleksis/core/views.py:716 aleksis/core/views.py:686
+#: aleksis/core/views.py:667
 msgid "The person has been deleted."
 msgstr "Особа видалена."
 
-#: aleksis/core/views.py:730 aleksis/core/views.py:700
+#: aleksis/core/views.py:681
 msgid "The group has been deleted."
 msgstr "Група видалена."
 
-#: aleksis/core/views.py:762 aleksis/core/views.py:732
-msgid "The additional field has been saved."
-msgstr "Додаткове поле збережене."
-
-#: aleksis/core/views.py:797 aleksis/core/views.py:767
-msgid "The additional field has been deleted."
-msgstr "Додаткове поле видалене."
-
-#: aleksis/core/views.py:822 aleksis/core/views.py:792
+#: aleksis/core/views.py:705
 msgid "The group type has been saved."
 msgstr "Тип групи збережений."
 
-#: aleksis/core/views.py:853 aleksis/core/views.py:823
+#: aleksis/core/views.py:736
 msgid "The group type has been deleted."
 msgstr "Тип групи видалений."
 
-#: aleksis/core/views.py:888 aleksis/core/views.py:858
+#: aleksis/core/views.py:771
 msgid "Progress: Run data checks"
 msgstr "Перебіг: Запуск перевірки даних"
 
-#: aleksis/core/views.py:889 aleksis/core/views.py:859
+#: aleksis/core/views.py:772
 msgid "Run data checks …"
 msgstr "Запускається перевірка даних …"
 
-#: aleksis/core/views.py:890 aleksis/core/views.py:860
+#: aleksis/core/views.py:773
 msgid "The data checks were run successfully."
 msgstr "Перевірка даних успішно запущена."
 
-#: aleksis/core/views.py:891 aleksis/core/views.py:861
+#: aleksis/core/views.py:774
 msgid "There was a problem while running data checks."
 msgstr "Під час запуску перевірки даних виникла проблема."
 
-#: aleksis/core/views.py:908 aleksis/core/views.py:878
+#: aleksis/core/views.py:791
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr "Варіант розв'язання \"{solve_option_obj.verbose_name}\" "
 
-#: aleksis/core/views.py:918 aleksis/core/views.py:888
+#: aleksis/core/views.py:801
 msgid "The requested solve option does not exist"
 msgstr "Запитаний варіант розв'язання не існує"
 
-#: aleksis/core/views.py:951 aleksis/core/views.py:921
+#: aleksis/core/views.py:834
 msgid "The dashboard widget has been saved."
 msgstr "Віджет інформпанелі збережений."
 
-#: aleksis/core/views.py:981 aleksis/core/views.py:951
+#: aleksis/core/views.py:864
 msgid "The dashboard widget has been created."
 msgstr "Віджет інформпанелі створений."
 
-#: aleksis/core/views.py:991 aleksis/core/views.py:961
+#: aleksis/core/views.py:874
 msgid "The dashboard widget has been deleted."
 msgstr "Віджет інформпанелі видалений."
 
-#: aleksis/core/views.py:1063 aleksis/core/views.py:1033
+#: aleksis/core/views.py:946
 msgid "Your dashboard configuration has been saved successfully."
 msgstr "Ваша конфігурація інформпанелі збережена."
 
-#: aleksis/core/views.py:1065 aleksis/core/views.py:1035
+#: aleksis/core/views.py:948
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr "Конфігурація типової/стандартної інформпанелі збережена."
 
-#: aleksis/core/views.py:1136 aleksis/core/views.py:1106
+#: aleksis/core/views.py:1019
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr "Запрошення успішно створене. Код запрошення: {code}"
 
-#: aleksis/core/views.py:1233 aleksis/core/views.py:1203
+#: aleksis/core/views.py:1116
 msgid "We have successfully assigned the permissions."
 msgstr "Ми успішно призначили дозволи."
 
-#: aleksis/core/views.py:1243 aleksis/core/views.py:1213
+#: aleksis/core/views.py:1126
 msgid "The global user permission has been deleted."
 msgstr "Глобальний користувацький дозвіл видалений."
 
-#: aleksis/core/views.py:1253 aleksis/core/views.py:1223
+#: aleksis/core/views.py:1136
 msgid "The global group permission has been deleted."
 msgstr "Глобальний груповий дозвіл видалений."
 
-#: aleksis/core/views.py:1263 aleksis/core/views.py:1233
+#: aleksis/core/views.py:1146
 msgid "The object user permission has been deleted."
 msgstr "Об'єктний користувацький дозвіл видалений."
 
-#: aleksis/core/views.py:1273 aleksis/core/views.py:1243
+#: aleksis/core/views.py:1156
 msgid "The object group permission has been deleted."
 msgstr "Об'єктний груповий дозвіл видалений."
 
-#: aleksis/core/views.py:1382 aleksis/core/views.py:1352
-msgid ""
-"The third-party account could not be disconnected because it is the only "
-"login method available."
+#: aleksis/core/views.py:1238
+msgid "We sent you an email with instructions for resetting your password."
 msgstr ""
-"Обліковий запис третьої сторони не можна від'єднати оскільки він єдиний "
-"спосіб для входу."
 
-#: aleksis/core/views.py:1389 aleksis/core/views.py:1359
+#: aleksis/core/views.py:1262
+msgid "The third-party account could not be disconnected because it is the only login method available."
+msgstr "Обліковий запис третьої сторони не можна від'єднати оскільки він єдиний спосіб для входу."
+
+#: aleksis/core/views.py:1269
 msgid "The third-party account has been successfully disconnected."
 msgstr "Обліковий запис третьої сторони успішно від'єднаний."
 
-#: aleksis/core/views.py:1465 aleksis/core/views.py:1435
-msgid ""
-"Person was invited successfully and an email with further instructions has "
-"been send to them."
-msgstr ""
-"Особа успішно запрошена. Лист з інструкціями щодо наступних дій надісланий "
-"на її ел.пошту."
+#: aleksis/core/views.py:1345
+msgid "Person was invited successfully and an email with further instructions has been send to them."
+msgstr "Особа успішно запрошена. Лист з інструкціями щодо наступних дій надісланий на її ел.пошту."
 
-#: aleksis/core/views.py:1476 aleksis/core/views.py:1446
+#: aleksis/core/views.py:1356
 msgid "Person was already invited."
 msgstr "Особа вже була запрошена."
 
-#: aleksis/core/models.py:1528
-msgid "Start date and time"
-msgstr "Дата і час початку"
+#~ msgid "Title of field"
+#~ msgstr "Назва поля"
 
-#: aleksis/core/models.py:1530
-msgid "End date and time"
-msgstr "Дата і час закінчення"
+#~ msgid "Type of field"
+#~ msgstr "Тип поля"
 
-#: aleksis/core/models.py:1531
-msgid "Timezone"
-msgstr "Часовий пояс"
+#~ msgid "Required"
+#~ msgstr "Необхідне"
 
-#: aleksis/core/models.py:1534
-msgid "Recurrences"
-msgstr "Повтори"
+#~ msgid "Help text / description"
+#~ msgstr "Допоміжний текст/опис"
 
-#: aleksis/core/models.py:1540
-msgid "Amended base event"
-msgstr "Виправлена основна подія"
+#~ msgid "Addtitional field for groups"
+#~ msgstr "Додаткове поле для груп"
 
-#: aleksis/core/models.py:1643
-msgid "Calendar Event"
-msgstr "Календарна подія"
+#~ msgid "Addtitional fields for groups"
+#~ msgstr "Додаткові поля для груп"
 
-#: aleksis/core/models.py:1644
-msgid "Calendar Events"
-msgstr "Календарні події"
+#~ msgid "Additional fields"
+#~ msgstr "Додаткові поля"
 
-#: aleksis/core/models.py:1670
-msgid "Birthdays"
-msgstr "Дні Народження"
+#~ msgid "Country for phone number parsing"
+#~ msgstr "Країна для розбору номера телефона"
 
-#: aleksis/core/models.py:1674
-msgid "{}'s birthday"
-msgstr "{} святкує День Народження"
+#~ msgid "Forgot Password?"
+#~ msgstr "Забули пароль?"
 
-#: aleksis/core/models.py:1713 aleksis/core/models.py:1775
-msgid "Holidays"
-msgstr "Вихідні"
+#~ msgid "Changing of password disabled"
+#~ msgstr "Зміна паролю вимкнена"
 
-#: aleksis/core/models.py:1774
-msgid "Holiday"
-msgstr "Вихідний"
+#~ msgid "Changing of password disabled."
+#~ msgstr "Зміна паролю вимкнена."
 
-#: aleksis/core/preferences.py:33
-msgid "Calendar"
-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"
+#~ "          "
+#~ msgstr ""
+#~ "\n"
+#~ "            Користувачам не дозволяється змінювати свої паролі.\n"
+#~ "            Якщо Ви думаєте, що це помилка, зверніться до адміністраторів сайту.\n"
+#~ "          "
 
-#: aleksis/core/preferences.py:490
-msgid "Birthday calendar feed color"
-msgstr "Колір календаря Днів Народження"
+#~ msgid "Edit additional field"
+#~ msgstr "Редагування додаткового поля"
 
-#: aleksis/core/preferences.py:502
-msgid "Holiday calendar feed color"
-msgstr "Колір календаря Вихідних"
+#~ msgid "Create additional field"
+#~ msgstr "Створити додаткове поле"
 
-#: aleksis/core/preferences.py:515
-msgid "Activated calendars"
-msgstr "Активні календарі"
+#~ msgid "Create school term"
+#~ msgstr "Створити Навчальний рік"
 
-#: aleksis/core/templates/account/email/email_confirmation_message.txt:6
-#, python-format
-msgid ""
-"Someone tried to register an account with the username %(user_display)s and "
-"your e-mail address on %(site_domain)s.\n"
-"If it was you, please confirm the registration by clicking on the following "
-"link:"
-msgstr ""
-"Хтось спробував на сайті %(site_domain)s зареєструвати обліковий запис з логіном %(user_display)s та Вашою адресою ел.пошти.\n"
-"Якщо це були Ви, підтвердьте, будь ласка, реєстрацію, перейшовши за посиланням:"
+#~ msgid "Edit school term"
+#~ msgstr "Редагувати Навчальний рік"
+
+#~ msgid ""
+#~ "\n"
+#~ "        To identify and verify your YubiKey, please insert a\n"
+#~ "        token in the field below. Your YubiKey will be linked to your\n"
+#~ "        account.\n"
+#~ "      "
+#~ msgstr ""
+#~ "\n"
+#~ "        Для ідентифікації та перевірки Вашого YubiKey напишіть,\n"
+#~ "        будь ласка, нижче токен. Ваш YubiKey буде прив'язаний до Вашого\n"
+#~ "        облікового запису.\n"
+#~ "      "
+
+#~ msgid "The school term has been created."
+#~ msgstr "Навчальний рік створений."
+
+#~ msgid "The school term has been saved."
+#~ msgstr "Навчальний рік збережений."
+
+#~ msgid "The additional field has been saved."
+#~ msgstr "Додаткове поле збережене."
+
+#~ msgid "The additional field has been deleted."
+#~ msgstr "Додаткове поле видалене."
 
 #~ msgid "Revoke access"
 #~ msgstr "Відкликати доступ"
@@ -3513,13 +3379,11 @@ msgstr ""
 
 #~ 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"
 #~ "          "
 
 #~ msgid ""
@@ -3528,8 +3392,7 @@ msgstr ""
 #~ "          security."
 #~ msgstr ""
 #~ "Двохфакторна автентифікація у Вашому обліковому записі\n"
-#~ "          вимкнена. Для збільшення безпеки обліковки увімкніть "
-#~ "двохфакторну\n"
+#~ "          вимкнена. Для збільшення безпеки обліковки увімкніть двохфакторну\n"
 #~ "          автентифікацію."
 
 #~ msgid "Add Phone Number"
@@ -3605,8 +3468,7 @@ msgstr ""
 #~ msgstr ""
 #~ "\n"
 #~ "        Хоча ми рішуче застерігаємо Вас це не робити, Ви можете \n"
-#~ "        також вимкнути двохфакторну автентифікацію для свого облікового "
-#~ "запису.\n"
+#~ "        також вимкнути двохфакторну автентифікацію для свого облікового запису.\n"
 #~ "      "
 
 #~ msgid ""
@@ -3618,14 +3480,10 @@ msgstr ""
 #~ msgstr ""
 #~ "\n"
 #~ "        Двохфакторна автентифікація для Вашого облікового запису\n"
-#~ "        не активована. Для підвищення безпеки облікового запису "
-#~ "увімкніть\n"
+#~ "        не активована. Для підвищення безпеки облікового запису увімкніть\n"
 #~ "        двохфакторну автентифікацію.\n"
 #~ "      "
 
-#~ msgid "Birthday Calendar"
-#~ msgstr "Календар Днів Народження"
-
 #~ msgid "A Calendar of Birthdays"
 #~ msgstr "Календар Днів Народження"
 
@@ -3688,9 +3546,6 @@ msgstr ""
 #~ msgid "Personal Calendar URL"
 #~ msgstr "URL-посилання особистого календаря"
 
-#~ msgid "Personal Calendar URLs"
-#~ msgstr "URL-посилання особистих календарів"
-
 #~ msgid "Available languages"
 #~ msgstr "Доступні мови"
 
@@ -3726,14 +3581,8 @@ msgstr ""
 #~ msgid "ICal Feeds"
 #~ msgstr "iCal-стрічки"
 
-#~ 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). Ви можете створити їх стільки, скільки Вам необхідно та імпортувати "
-#~ "їх у ПЗ для роботи з календарями."
+#~ 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). Ви можете створити їх стільки, скільки Вам необхідно та імпортувати їх у ПЗ для роботи з календарями."
 
 #~ msgid "Your iCal URLs"
 #~ msgstr "Ваші посилання iCal"
@@ -3758,30 +3607,24 @@ msgstr ""
 
 #~ 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"
 #~ "            "
 
 #~ 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® – зареєстрована торгова марка проекту з відкритим програмним кодом AlekSIS, що представлена Teckids e.V.\n"
 #~ "            "
 
 #~ msgid "Website of AlekSIS"
@@ -3795,18 +3638,14 @@ msgstr ""
 
 #~ 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"
+#~ "              Ядро та офіційні додатки AlekSIS ліцензовані EUPL, версії 1.2 та новіше. Для отримання інформації\n"
+#~ "              щодо додатків третіх сторін, якщо такі встановлені, перейдіть до відповідних компонентів нижче.\n"
 #~ "              Ці ліцензії мають таку позначку:\n"
 #~ "            "
 
@@ -3824,13 +3663,11 @@ msgstr ""
 
 #~ 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"
+#~ "              Без активованого JavaScript статус виконання не зможе оновлюватися.\n"
 #~ "            "
 
 #~ msgid "Language"
@@ -3841,14 +3678,12 @@ msgstr ""
 
 #~ 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"
 #~ "            до Вашого облікового запису приєднана фейкова особа.\n"
 #~ "          "
 
@@ -3861,10 +3696,8 @@ msgstr ""
 #~ msgstr ""
 #~ "\n"
 #~ "            Ваш обліковий запис не пов'язаний з фізособою. Це означає,\n"
-#~ "            що Ви не маєте жодного доступу до навчальної інформації. "
-#~ "Зверніться,\n"
-#~ "            будь ласка, до адміністраторів AlekSIS у Вашому навчальному "
-#~ "закладі.\n"
+#~ "            що Ви не маєте жодного доступу до навчальної інформації. Зверніться,\n"
+#~ "            будь ласка, до адміністраторів AlekSIS у Вашому навчальному закладі.\n"
 #~ "          "
 
 #~ msgid "Impersonate"