diff --git a/aleksis/core/locale/ar/LC_MESSAGES/django.po b/aleksis/core/locale/ar/LC_MESSAGES/django.po
index 71b3e82d26258ad34f53d00d6a1b18b6af3a8d24..df6153f7196d2535a19143cb11bfa43a0f831953 100644
--- a/aleksis/core/locale/ar/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/ar/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: AlekSIS (School Information System) 0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -39,33 +39,43 @@ msgid "Home and mobile phone"
 msgstr ""
 
 #: aleksis/core/apps.py:171 aleksis/core/forms.py:220 aleksis/core/menus.py:171
-#: aleksis/core/models.py:489 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/models.py:494 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:246
 msgid "Groups"
 msgstr ""
 
-#: aleksis/core/data_checks.py:56
+#: aleksis/core/data_checks.py:59
 msgid "Ignore problem"
 msgstr ""
 
-#: aleksis/core/data_checks.py:185
+#: aleksis/core/data_checks.py:188
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/data_checks.py:291
+#: aleksis/core/data_checks.py:294
 msgid "Deactivate DashboardWidget"
 msgstr ""
 
-#: aleksis/core/data_checks.py:303
+#: aleksis/core/data_checks.py:306
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr ""
 
-#: aleksis/core/data_checks.py:304
+#: aleksis/core/data_checks.py:307
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
+#: aleksis/core/data_checks.py:330
+#, python-format
+msgid "Validate field %s of model %s."
+msgstr ""
+
+#: aleksis/core/data_checks.py:332
+#, python-format
+msgid "The field %s couldn't be validated successfully."
+msgstr ""
+
 #: aleksis/core/feeds.py:52
 msgid "Birthday Calendar"
 msgstr ""
@@ -109,11 +119,11 @@ msgstr ""
 msgid "Content type"
 msgstr ""
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:715
+#: aleksis/core/filters.py:113 aleksis/core/models.py:720
 msgid "User"
 msgstr ""
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:488
+#: aleksis/core/filters.py:135 aleksis/core/models.py:493
 msgid "Group"
 msgstr ""
 
@@ -121,7 +131,7 @@ msgstr ""
 msgid "Base data"
 msgstr ""
 
-#: aleksis/core/forms.py:55
+#: aleksis/core/forms.py:55 aleksis/core/tables.py:47
 msgid "Address"
 msgstr ""
 
@@ -149,7 +159,7 @@ msgstr ""
 msgid "This username is already in use."
 msgstr ""
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:136
+#: aleksis/core/forms.py:153 aleksis/core/models.py:141
 msgid "School term"
 msgstr ""
 
@@ -158,7 +168,7 @@ msgid "Common data"
 msgstr ""
 
 #: aleksis/core/forms.py:155 aleksis/core/forms.py:207
-#: aleksis/core/menus.py:160 aleksis/core/models.py:159
+#: aleksis/core/menus.py:160 aleksis/core/models.py:164
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
@@ -168,18 +178,18 @@ msgstr ""
 msgid "Additional data"
 msgstr ""
 
-#: aleksis/core/forms.py:157 aleksis/core/models.py:212
-#: aleksis/core/models.py:541
+#: aleksis/core/forms.py:157 aleksis/core/models.py:217
+#: aleksis/core/models.py:546 aleksis/core/tables.py:46
 msgid "Photo"
 msgstr ""
 
 #: aleksis/core/forms.py:199 aleksis/core/forms.py:202
-#: aleksis/core/models.py:79
+#: aleksis/core/models.py:84
 msgid "Date"
 msgstr ""
 
 #: aleksis/core/forms.py:200 aleksis/core/forms.py:203
-#: aleksis/core/models.py:87
+#: aleksis/core/models.py:92
 msgid "Time"
 msgstr ""
 
@@ -215,11 +225,11 @@ msgstr ""
 msgid "Please enter your invitation code."
 msgstr ""
 
-#: aleksis/core/forms.py:418 aleksis/core/models.py:187
+#: aleksis/core/forms.py:418 aleksis/core/models.py:192
 msgid "First name"
 msgstr ""
 
-#: aleksis/core/forms.py:419 aleksis/core/models.py:188
+#: aleksis/core/forms.py:419 aleksis/core/models.py:193
 msgid "Last name"
 msgstr ""
 
@@ -322,13 +332,13 @@ msgstr ""
 msgid "Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:47 aleksis/core/models.py:867
+#: aleksis/core/menus.py:47 aleksis/core/models.py:872
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr ""
 
-#: aleksis/core/menus.py:58 aleksis/core/models.py:137
+#: aleksis/core/menus.py:58 aleksis/core/models.py:142
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
@@ -380,7 +390,7 @@ msgstr ""
 msgid "People"
 msgstr ""
 
-#: aleksis/core/menus.py:182 aleksis/core/models.py:1101
+#: aleksis/core/menus.py:182 aleksis/core/models.py:1111
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
@@ -390,7 +400,7 @@ msgstr ""
 msgid "Groups and child groups"
 msgstr ""
 
-#: aleksis/core/menus.py:204 aleksis/core/models.py:537
+#: aleksis/core/menus.py:204 aleksis/core/models.py:542
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 msgid "Additional fields"
@@ -457,581 +467,585 @@ msgstr ""
 msgid "Linked school term"
 msgstr ""
 
-#: aleksis/core/models.py:77
+#: aleksis/core/models.py:82
 msgid "Boolean (Yes/No)"
 msgstr ""
 
-#: aleksis/core/models.py:78
+#: aleksis/core/models.py:83
 msgid "Text (one line)"
 msgstr ""
 
-#: aleksis/core/models.py:80
+#: aleksis/core/models.py:85
 msgid "Date and time"
 msgstr ""
 
-#: aleksis/core/models.py:81
+#: aleksis/core/models.py:86
 msgid "Decimal number"
 msgstr ""
 
-#: aleksis/core/models.py:82 aleksis/core/models.py:205
+#: aleksis/core/models.py:87 aleksis/core/models.py:210
 msgid "E-mail address"
 msgstr ""
 
-#: aleksis/core/models.py:83
+#: aleksis/core/models.py:88
 msgid "Integer"
 msgstr ""
 
-#: aleksis/core/models.py:84
+#: aleksis/core/models.py:89
 msgid "IP address"
 msgstr ""
 
-#: aleksis/core/models.py:85
+#: aleksis/core/models.py:90
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr ""
 
-#: aleksis/core/models.py:86
+#: aleksis/core/models.py:91
 msgid "Text (multi-line)"
 msgstr ""
 
-#: aleksis/core/models.py:88
+#: aleksis/core/models.py:93
 msgid "URL / Link"
 msgstr ""
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:1070
-#: aleksis/core/models.py:1374
+#: aleksis/core/models.py:105 aleksis/core/models.py:1077
+#: aleksis/core/models.py:1384
 msgid "Name"
 msgstr ""
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:107
 msgid "Start date"
 msgstr ""
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:108
 msgid "End date"
 msgstr ""
 
-#: aleksis/core/models.py:122
+#: aleksis/core/models.py:127
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: aleksis/core/models.py:129
+#: aleksis/core/models.py:134
 msgid "There is already a school term for this time or a part of this time."
 msgstr ""
 
-#: aleksis/core/models.py:158 aleksis/core/models.py:1019
-#: aleksis/core/models.py:1371
+#: aleksis/core/models.py:163 aleksis/core/models.py:1024
+#: aleksis/core/models.py:1381
 msgid "Person"
 msgstr ""
 
-#: aleksis/core/models.py:161
+#: aleksis/core/models.py:166
 msgid "Can view address"
 msgstr ""
 
-#: aleksis/core/models.py:162
+#: aleksis/core/models.py:167
 msgid "Can view contact details"
 msgstr ""
 
-#: aleksis/core/models.py:163
+#: aleksis/core/models.py:168
 msgid "Can view photo"
 msgstr ""
 
-#: aleksis/core/models.py:164
+#: aleksis/core/models.py:169
 msgid "Can view avatar image"
 msgstr ""
 
-#: aleksis/core/models.py:165
+#: aleksis/core/models.py:170
 msgid "Can view persons groups"
 msgstr ""
 
-#: aleksis/core/models.py:166
+#: aleksis/core/models.py:171
 msgid "Can view personal details"
 msgstr ""
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "female"
 msgstr ""
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "male"
 msgstr ""
 
-#: aleksis/core/models.py:184 aleksis/core/models.py:1273
+#: aleksis/core/models.py:181
+msgid "other"
+msgstr ""
+
+#: aleksis/core/models.py:189 aleksis/core/models.py:1283
 msgid "Linked user"
 msgstr ""
 
-#: aleksis/core/models.py:190
+#: aleksis/core/models.py:195
 msgid "Additional name(s)"
 msgstr ""
 
-#: aleksis/core/models.py:194 aleksis/core/models.py:506
+#: aleksis/core/models.py:199 aleksis/core/models.py:511
 msgid "Short name"
 msgstr ""
 
-#: aleksis/core/models.py:197
+#: aleksis/core/models.py:202
 msgid "Street"
 msgstr ""
 
-#: aleksis/core/models.py:198
+#: aleksis/core/models.py:203
 msgid "Street number"
 msgstr ""
 
-#: aleksis/core/models.py:199
+#: aleksis/core/models.py:204
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/core/models.py:200
+#: aleksis/core/models.py:205
 msgid "Place"
 msgstr ""
 
-#: aleksis/core/models.py:202 aleksis/core/templates/core/person/full.html:160
+#: aleksis/core/models.py:207 aleksis/core/templates/core/person/full.html:160
 msgid "Home phone"
 msgstr ""
 
-#: aleksis/core/models.py:203 aleksis/core/templates/core/person/full.html:170
+#: aleksis/core/models.py:208 aleksis/core/templates/core/person/full.html:170
 msgid "Mobile phone"
 msgstr ""
 
-#: aleksis/core/models.py:207
+#: aleksis/core/models.py:212
 msgid "Date of birth"
 msgstr ""
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:213
 msgid "Place of birth"
 msgstr ""
 
-#: aleksis/core/models.py:209
+#: aleksis/core/models.py:214
 msgid "Sex"
 msgstr ""
 
-#: aleksis/core/models.py:216 aleksis/core/models.py:545
+#: aleksis/core/models.py:221 aleksis/core/models.py:550
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr ""
 
-#: aleksis/core/models.py:221 aleksis/core/models.py:549
+#: aleksis/core/models.py:226 aleksis/core/models.py:554
 msgid "Display picture / Avatar"
 msgstr ""
 
-#: aleksis/core/models.py:224 aleksis/core/models.py:552
+#: aleksis/core/models.py:229 aleksis/core/models.py:557
 msgid "This is a picture or an avatar for public display."
 msgstr ""
 
-#: aleksis/core/models.py:229 aleksis/core/templates/core/person/full.html:235
+#: aleksis/core/models.py:234 aleksis/core/templates/core/person/full.html:235
 msgid "Guardians / Parents"
 msgstr ""
 
-#: aleksis/core/models.py:236
+#: aleksis/core/models.py:241
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:719
-#: aleksis/core/models.py:743 aleksis/core/models.py:834
-#: aleksis/core/models.py:1094
+#: aleksis/core/models.py:244 aleksis/core/models.py:724
+#: aleksis/core/models.py:748 aleksis/core/models.py:839
+#: aleksis/core/models.py:1104
 msgid "Description"
 msgstr ""
 
-#: aleksis/core/models.py:459
+#: aleksis/core/models.py:464
 msgid "Title of field"
 msgstr ""
 
-#: aleksis/core/models.py:461
+#: aleksis/core/models.py:466
 msgid "Type of field"
 msgstr ""
 
-#: aleksis/core/models.py:463
+#: aleksis/core/models.py:468
 msgid "Required"
 msgstr ""
 
-#: aleksis/core/models.py:464
+#: aleksis/core/models.py:469
 msgid "Help text / description"
 msgstr ""
 
-#: aleksis/core/models.py:470
+#: aleksis/core/models.py:475
 msgid "Addtitional field for groups"
 msgstr ""
 
-#: aleksis/core/models.py:471
+#: aleksis/core/models.py:476
 msgid "Addtitional fields for groups"
 msgstr ""
 
-#: aleksis/core/models.py:491
+#: aleksis/core/models.py:496
 msgid "Can assign child groups to groups"
 msgstr ""
 
-#: aleksis/core/models.py:492
+#: aleksis/core/models.py:497
 msgid "Can view statistics about group."
 msgstr ""
 
-#: aleksis/core/models.py:504
+#: aleksis/core/models.py:509
 msgid "Long name"
 msgstr ""
 
-#: aleksis/core/models.py:514 aleksis/core/templates/core/group/full.html:85
+#: aleksis/core/models.py:519 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr ""
 
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/full.html:82
+#: aleksis/core/models.py:522 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr ""
 
-#: aleksis/core/models.py:524 aleksis/core/templates/core/group/full.html:55
+#: aleksis/core/models.py:529 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr ""
 
-#: aleksis/core/models.py:532
+#: aleksis/core/models.py:537
 msgid "Type of group"
 msgstr ""
 
-#: aleksis/core/models.py:718 aleksis/core/models.py:742
-#: aleksis/core/models.py:833
+#: aleksis/core/models.py:723 aleksis/core/models.py:747
+#: aleksis/core/models.py:838
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr ""
 
-#: aleksis/core/models.py:721
+#: aleksis/core/models.py:726
 msgid "Application"
 msgstr ""
 
-#: aleksis/core/models.py:727
+#: aleksis/core/models.py:732
 msgid "Activity"
 msgstr ""
 
-#: aleksis/core/models.py:728
+#: aleksis/core/models.py:733
 msgid "Activities"
 msgstr ""
 
-#: aleksis/core/models.py:734
+#: aleksis/core/models.py:739
 msgid "Sender"
 msgstr ""
 
-#: aleksis/core/models.py:739
+#: aleksis/core/models.py:744
 msgid "Recipient"
 msgstr ""
 
-#: aleksis/core/models.py:744 aleksis/core/models.py:1071
+#: aleksis/core/models.py:749 aleksis/core/models.py:1078
 msgid "Link"
 msgstr ""
 
-#: aleksis/core/models.py:746
+#: aleksis/core/models.py:751
 msgid "Send notification at"
 msgstr ""
 
-#: aleksis/core/models.py:748
+#: aleksis/core/models.py:753
 msgid "Read"
 msgstr ""
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:754
 msgid "Sent"
 msgstr ""
 
-#: aleksis/core/models.py:766
+#: aleksis/core/models.py:771
 msgid "Notification"
 msgstr ""
 
-#: aleksis/core/models.py:767 aleksis/core/preferences.py:29
+#: aleksis/core/models.py:772 aleksis/core/preferences.py:29
 #: aleksis/core/templates/core/base.html:81
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr ""
 
-#: aleksis/core/models.py:835
+#: aleksis/core/models.py:840
 msgid "Link to detailed view"
 msgstr ""
 
-#: aleksis/core/models.py:838
+#: aleksis/core/models.py:843
 msgid "Date and time from when to show"
 msgstr ""
 
-#: aleksis/core/models.py:841
+#: aleksis/core/models.py:846
 msgid "Date and time until when to show"
 msgstr ""
 
-#: aleksis/core/models.py:866
+#: aleksis/core/models.py:871
 msgid "Announcement"
 msgstr ""
 
-#: aleksis/core/models.py:904
+#: aleksis/core/models.py:909
 msgid "Announcement recipient"
 msgstr ""
 
-#: aleksis/core/models.py:905
+#: aleksis/core/models.py:910
 msgid "Announcement recipients"
 msgstr ""
 
-#: aleksis/core/models.py:927
+#: aleksis/core/models.py:932
 msgid "Widget Title"
 msgstr ""
 
-#: aleksis/core/models.py:928
+#: aleksis/core/models.py:933
 msgid "Activate Widget"
 msgstr ""
 
-#: aleksis/core/models.py:929
+#: aleksis/core/models.py:934
 msgid "Widget is broken"
 msgstr ""
 
-#: aleksis/core/models.py:932
+#: aleksis/core/models.py:937
 msgid "Size on mobile devices"
 msgstr ""
 
-#: aleksis/core/models.py:933
+#: aleksis/core/models.py:938
 msgid "<= 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:938
+#: aleksis/core/models.py:943
 msgid "Size on tablet devices"
 msgstr ""
 
-#: aleksis/core/models.py:939
+#: aleksis/core/models.py:944
 msgid "> 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:944
+#: aleksis/core/models.py:949
 msgid "Size on desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:945
+#: aleksis/core/models.py:950
 msgid "> 992 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:950
+#: aleksis/core/models.py:955
 msgid "Size on large desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:951
+#: aleksis/core/models.py:956
 msgid "> 1200 px>, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:982
+#: aleksis/core/models.py:987
 msgid "Can edit default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:983
+#: aleksis/core/models.py:988
 msgid "Dashboard Widget"
 msgstr ""
 
-#: aleksis/core/models.py:984
+#: aleksis/core/models.py:989
 msgid "Dashboard Widgets"
 msgstr ""
 
-#: aleksis/core/models.py:990
+#: aleksis/core/models.py:995
 msgid "URL"
 msgstr ""
 
-#: aleksis/core/models.py:991
+#: aleksis/core/models.py:996
 msgid "Icon URL"
 msgstr ""
 
-#: aleksis/core/models.py:997
+#: aleksis/core/models.py:1002
 msgid "External link widget"
 msgstr ""
 
-#: aleksis/core/models.py:998
+#: aleksis/core/models.py:1003
 msgid "External link widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1004
+#: aleksis/core/models.py:1009
 msgid "Content"
 msgstr ""
 
-#: aleksis/core/models.py:1010
+#: aleksis/core/models.py:1015
 msgid "Static content widget"
 msgstr ""
 
-#: aleksis/core/models.py:1011
+#: aleksis/core/models.py:1016
 msgid "Static content widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1016
+#: aleksis/core/models.py:1021
 msgid "Dashboard widget"
 msgstr ""
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:1026
 msgid "Order"
 msgstr ""
 
-#: aleksis/core/models.py:1022
+#: aleksis/core/models.py:1027
 msgid "Part of the default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1037
+#: aleksis/core/models.py:1042
 msgid "Dashboard widget order"
 msgstr ""
 
-#: aleksis/core/models.py:1038
+#: aleksis/core/models.py:1043
 msgid "Dashboard widget orders"
 msgstr ""
 
-#: aleksis/core/models.py:1044
+#: aleksis/core/models.py:1049
 msgid "Menu ID"
 msgstr ""
 
-#: aleksis/core/models.py:1057
+#: aleksis/core/models.py:1062
 msgid "Custom menu"
 msgstr ""
 
-#: aleksis/core/models.py:1058
+#: aleksis/core/models.py:1063
 msgid "Custom menus"
 msgstr ""
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:1075
 msgid "Menu"
 msgstr ""
 
-#: aleksis/core/models.py:1072 aleksis/core/models.py:1320
+#: aleksis/core/models.py:1079 aleksis/core/models.py:1330
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr ""
 
-#: aleksis/core/models.py:1078
+#: aleksis/core/models.py:1085
 msgid "Custom menu item"
 msgstr ""
 
-#: aleksis/core/models.py:1079
+#: aleksis/core/models.py:1086
 msgid "Custom menu items"
 msgstr ""
 
-#: aleksis/core/models.py:1093
+#: aleksis/core/models.py:1103
 msgid "Title of type"
 msgstr ""
 
-#: aleksis/core/models.py:1100 aleksis/core/templates/core/group/full.html:47
+#: aleksis/core/models.py:1110 aleksis/core/templates/core/group/full.html:50
 msgid "Group type"
 msgstr ""
 
-#: aleksis/core/models.py:1114
+#: aleksis/core/models.py:1124
 msgid "Can view system status"
 msgstr ""
 
-#: aleksis/core/models.py:1115
+#: aleksis/core/models.py:1125
 msgid "Can manage data"
 msgstr ""
 
-#: aleksis/core/models.py:1116
+#: aleksis/core/models.py:1126
 msgid "Can impersonate"
 msgstr ""
 
-#: aleksis/core/models.py:1117
+#: aleksis/core/models.py:1127
 msgid "Can use search"
 msgstr ""
 
-#: aleksis/core/models.py:1118
+#: aleksis/core/models.py:1128
 msgid "Can change site preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1119
+#: aleksis/core/models.py:1129
 msgid "Can change person preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1120
+#: aleksis/core/models.py:1130
 msgid "Can change group preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1121
+#: aleksis/core/models.py:1131
 msgid "Can test PDF generation"
 msgstr ""
 
-#: aleksis/core/models.py:1122
+#: aleksis/core/models.py:1132
 msgid "Can invite persons"
 msgstr ""
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1168
 msgid "Related data check task"
 msgstr ""
 
-#: aleksis/core/models.py:1166
+#: aleksis/core/models.py:1176
 msgid "Issue solved"
 msgstr ""
 
-#: aleksis/core/models.py:1167
+#: aleksis/core/models.py:1177
 msgid "Notification sent"
 msgstr ""
 
-#: aleksis/core/models.py:1180
+#: aleksis/core/models.py:1190
 msgid "Data check result"
 msgstr ""
 
-#: aleksis/core/models.py:1181
+#: aleksis/core/models.py:1191
 msgid "Data check results"
 msgstr ""
 
-#: aleksis/core/models.py:1183
+#: aleksis/core/models.py:1193
 msgid "Can run data checks"
 msgstr ""
 
-#: aleksis/core/models.py:1184
+#: aleksis/core/models.py:1194
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1191
+#: aleksis/core/models.py:1201
 msgid "E-Mail address"
 msgstr ""
 
-#: aleksis/core/models.py:1223
+#: aleksis/core/models.py:1233
 msgid "Owner"
 msgstr ""
 
-#: aleksis/core/models.py:1227
+#: aleksis/core/models.py:1237
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1229
+#: aleksis/core/models.py:1239
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1231
+#: aleksis/core/models.py:1241
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1238
+#: aleksis/core/models.py:1248
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1239
+#: aleksis/core/models.py:1249
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1244
+#: aleksis/core/models.py:1254
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1247
+#: aleksis/core/models.py:1257
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1259
+#: aleksis/core/models.py:1269
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1260
+#: aleksis/core/models.py:1270
 msgid "Task user assignments"
 msgstr ""
 
-#: aleksis/core/models.py:1276
+#: aleksis/core/models.py:1286
 msgid "Additional attributes"
 msgstr ""
 
-#: aleksis/core/models.py:1314
+#: aleksis/core/models.py:1324
 msgid "Allowed scopes that clients can request"
 msgstr ""
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1334
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr ""
 
-#: aleksis/core/models.py:1373
+#: aleksis/core/models.py:1383
 msgid "UUID"
 msgstr ""
 
-#: aleksis/core/models.py:1377
+#: aleksis/core/models.py:1387
 msgid "Selected ICal feed"
 msgstr ""
 
-#: aleksis/core/models.py:1386
+#: aleksis/core/models.py:1396
 msgid "Personal Calendar URL"
 msgstr ""
 
-#: aleksis/core/models.py:1387
+#: aleksis/core/models.py:1397
 msgid "Personal Calendar URLs"
 msgstr ""
 
@@ -1179,94 +1193,94 @@ msgstr ""
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr ""
 
-#: aleksis/core/preferences.py:344
-msgid "Available languages"
-msgstr ""
-
-#: aleksis/core/preferences.py:357
+#: aleksis/core/preferences.py:343
 msgid "Send emails if data checks detect problems"
 msgstr ""
 
-#: aleksis/core/preferences.py:368
+#: aleksis/core/preferences.py:354
 msgid "Email recipients for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:379
+#: aleksis/core/preferences.py:365
 msgid "Email recipient groups for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:388
+#: aleksis/core/preferences.py:374
 msgid "Show dashboard to users without login"
 msgstr ""
 
-#: aleksis/core/preferences.py:397
+#: aleksis/core/preferences.py:383
 msgid "Allow users to edit their dashboard"
 msgstr ""
 
-#: aleksis/core/preferences.py:408
+#: aleksis/core/preferences.py:394
 msgid "Fields on person model which are editable by themselves."
 msgstr ""
 
-#: aleksis/core/preferences.py:423
+#: aleksis/core/preferences.py:409
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr ""
 
-#: aleksis/core/preferences.py:437
+#: aleksis/core/preferences.py:423
 msgid "Contact for notification if a person changes their data"
 msgstr ""
 
-#: aleksis/core/preferences.py:448
+#: aleksis/core/preferences.py:434
 msgid "Prefer personal photos over avatars"
 msgstr ""
 
-#: aleksis/core/preferences.py:458
+#: aleksis/core/preferences.py:444
 msgid "PDF file expiration duration"
 msgstr ""
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:445
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/preferences.py:469
+#: aleksis/core/preferences.py:455
 msgid "Automatically update the dashboard and its widgets"
 msgstr ""
 
-#: aleksis/core/preferences.py:479
+#: aleksis/core/preferences.py:465
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr ""
 
-#: aleksis/core/preferences.py:489
+#: aleksis/core/preferences.py:475
 msgid "Country for phone number parsing"
 msgstr ""
 
-#: aleksis/core/settings.py:540
+#: aleksis/core/settings.py:541
 msgid "English"
 msgstr ""
 
-#: aleksis/core/settings.py:541
+#: aleksis/core/settings.py:542
 msgid "German"
 msgstr ""
 
-#: aleksis/core/tables.py:24
+#: aleksis/core/settings.py:543
+msgid "Ukrainian"
+msgstr ""
+
+#: aleksis/core/tables.py:25
 #: aleksis/core/templates/core/announcement/list.html:36
-#: aleksis/core/templates/core/group/full.html:24
+#: aleksis/core/templates/core/group/full.html:26
 #: aleksis/core/templates/core/person/full.html:26
 #: aleksis/core/templates/core/person/full.html:86
 #: aleksis/core/templates/oauth2_provider/application/detail.html:17
 msgid "Edit"
 msgstr ""
 
-#: aleksis/core/tables.py:26 aleksis/core/tables.py:94
-#: aleksis/core/tables.py:138
+#: aleksis/core/tables.py:27 aleksis/core/tables.py:148
+#: aleksis/core/tables.py:192
 #: aleksis/core/templates/core/announcement/list.html:22
 msgid "Actions"
 msgstr ""
 
-#: aleksis/core/tables.py:61 aleksis/core/tables.py:62
-#: aleksis/core/tables.py:76 aleksis/core/tables.py:92
-#: aleksis/core/tables.py:136
+#: aleksis/core/tables.py:115 aleksis/core/tables.py:116
+#: aleksis/core/tables.py:130 aleksis/core/tables.py:146
+#: aleksis/core/tables.py:190
 #: aleksis/core/templates/core/announcement/list.html:42
-#: aleksis/core/templates/core/group/full.html:31
+#: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
 #: aleksis/core/templates/core/person/full.html:33
 #: aleksis/core/templates/core/person/full.html:93
@@ -1305,7 +1319,7 @@ msgstr ""
 #: aleksis/core/templates/500.html:10
 msgid ""
 "An unexpected error has\n"
-"          occured."
+"          occurred."
 msgstr ""
 
 #: aleksis/core/templates/500.html:13
@@ -1805,34 +1819,34 @@ msgstr ""
 msgid "Edit group"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:38
+#: aleksis/core/templates/core/group/full.html:40
 #: aleksis/core/templates/core/person/full.html:40
 #: aleksis/core/templates/core/person/full.html:100
 msgid "Change preferences"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:64
+#: aleksis/core/templates/core/group/full.html:68
 msgid "Statistics"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:67
+#: aleksis/core/templates/core/group/full.html:73
 msgid "Count of members"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:71
+#: aleksis/core/templates/core/group/full.html:81
 msgid "Average age"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
+#: aleksis/core/templates/core/group/full.html:90
 msgid "Age range"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years to"
-msgstr ""
-
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years "
+#: aleksis/core/templates/core/group/full.html:93
+#, python-format
+msgid ""
+"\n"
+"              %(min)s years to %(max)s years\n"
+"            "
 msgstr ""
 
 #: aleksis/core/templates/core/group/list.html:14
@@ -1884,7 +1898,7 @@ msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:4
 #: aleksis/core/templates/core/ical/ical_list.html:5
-msgid "ICal Feeds"
+msgid "iCal Feeds"
 msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:8
@@ -2168,11 +2182,11 @@ msgstr ""
 msgid "Unknown"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:15
+#: aleksis/core/templates/core/partials/language_form.html:17
 msgid "Language"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:27
+#: aleksis/core/templates/core/partials/language_form.html:29
 msgid "Select language"
 msgstr ""
 
@@ -3094,168 +3108,168 @@ msgstr ""
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:292
+#: aleksis/core/views.py:294
 msgid "The school term has been created."
 msgstr ""
 
-#: aleksis/core/views.py:304
+#: aleksis/core/views.py:306
 msgid "The school term has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:424
+#: aleksis/core/views.py:426
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:443 aleksis/core/views.py:453
+#: aleksis/core/views.py:445 aleksis/core/views.py:455
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:503
+#: aleksis/core/views.py:505
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:600
+#: aleksis/core/views.py:602
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:616
+#: aleksis/core/views.py:618
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:684
+#: aleksis/core/views.py:686
 msgid "The requested preference registry does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:705
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:729
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:743
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:773
-msgid "The additional_field has been saved."
+#: aleksis/core/views.py:775
+msgid "The additional field has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:809
 msgid "The additional field has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:834
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:864
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:897
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:898
 msgid "Run data checks …"
 msgstr ""
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:899
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:900
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:916
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:924
+#: aleksis/core/views.py:926
 msgid "The requested solve option does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:958
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:988
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:998
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1067
+#: aleksis/core/views.py:1069
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1069
+#: aleksis/core/views.py:1071
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1145
+#: aleksis/core/views.py:1147
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr ""
 
-#: aleksis/core/views.py:1236
+#: aleksis/core/views.py:1238
 msgid "We have successfully assigned the permissions."
 msgstr ""
 
-#: aleksis/core/views.py:1246
+#: aleksis/core/views.py:1248
 msgid "The global user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1256
+#: aleksis/core/views.py:1258
 msgid "The global group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1266
+#: aleksis/core/views.py:1268
 msgid "The object user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1276
+#: aleksis/core/views.py:1278
 msgid "The object group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1344
+#: aleksis/core/views.py:1346
 msgid "The requested PDF file does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:1353 aleksis/core/views.py:1357
+#: aleksis/core/views.py:1355 aleksis/core/views.py:1359
 msgid "The requested task does not exist or is not accessible"
 msgstr ""
 
-#: aleksis/core/views.py:1409
+#: aleksis/core/views.py:1411
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1416
+#: aleksis/core/views.py:1418
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
-#: aleksis/core/views.py:1487
+#: aleksis/core/views.py:1489
 msgid "Person was invited successfully and an email with further instructions has been send to them."
 msgstr ""
 
-#: aleksis/core/views.py:1498
+#: aleksis/core/views.py:1500
 msgid "Person was already invited."
 msgstr ""
 
-#: aleksis/core/views.py:1598
-msgid "ICal feed updated successfully"
+#: aleksis/core/views.py:1600
+msgid "iCal feed updated successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1608
-msgid "ICal feed deleted successfully"
+#: aleksis/core/views.py:1610
+msgid "iCal feed deleted successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1616
-msgid "ICal feed created successfully"
+#: aleksis/core/views.py:1618
+msgid "iCal feed created successfully"
 msgstr ""
diff --git a/aleksis/core/locale/ar/LC_MESSAGES/djangojs.po b/aleksis/core/locale/ar/LC_MESSAGES/djangojs.po
index 5cc7c348c2ab6303aae0b8d753a8cf07f89fe384..3defb67f9f4129276ebd5b1c61d84a8511b0fabe 100644
--- a/aleksis/core/locale/ar/LC_MESSAGES/djangojs.po
+++ b/aleksis/core/locale/ar/LC_MESSAGES/djangojs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/aleksis/core/locale/de_DE/LC_MESSAGES/django.po b/aleksis/core/locale/de_DE/LC_MESSAGES/django.po
index 7656a3fde8cfff230195b6ec413433dc985fdc2d..15f6a8264a41d0f481a0c17ff881ec9c28dd7246 100644
--- a/aleksis/core/locale/de_DE/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/de_DE/LC_MESSAGES/django.po
@@ -7,11 +7,10 @@ msgid ""
 msgstr ""
 "Project-Id-Version: AlekSIS (School Information System) 0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: 2022-05-24 17:52+0000\n"
 "Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n"
-"Language-Team: German <https://translate.edugit.org/projects/aleksis/"
-"aleksis-core/de/>\n"
+"Language-Team: German <https://translate.edugit.org/projects/aleksis/aleksis-core/de/>\n"
 "Language: de_DE\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -40,33 +39,44 @@ msgid "Home and mobile phone"
 msgstr "Festnetz- und Mobilfunknummer"
 
 #: aleksis/core/apps.py:171 aleksis/core/forms.py:220 aleksis/core/menus.py:171
-#: aleksis/core/models.py:489 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/models.py:494 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:246
 msgid "Groups"
 msgstr "Gruppen"
 
-#: aleksis/core/data_checks.py:56
+#: aleksis/core/data_checks.py:59
 msgid "Ignore problem"
 msgstr "Problem ignorieren"
 
-#: aleksis/core/data_checks.py:185
+#: aleksis/core/data_checks.py:188
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr "Lösungsoption \"{solve_option_obj.verbose_name}\" "
 
-#: aleksis/core/data_checks.py:291
+#: aleksis/core/data_checks.py:294
 msgid "Deactivate DashboardWidget"
 msgstr "Dashboard-Widget deaktivieren"
 
-#: aleksis/core/data_checks.py:303
+#: aleksis/core/data_checks.py:306
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr "Sicherstellen, dass es keine kaputten Dashboard-Widgets gibt."
 
-#: aleksis/core/data_checks.py:304
+#: aleksis/core/data_checks.py:307
 msgid "The DashboardWidget was reported broken automatically."
 msgstr "Das Dashboard-Widget wurde automatisch als kaputt gemeldet."
 
+#: aleksis/core/data_checks.py:330
+#, python-format
+msgid "Validate field %s of model %s."
+msgstr ""
+
+#: aleksis/core/data_checks.py:332
+#, fuzzy, python-format
+#| msgid "The PDF file has been generated successfully."
+msgid "The field %s couldn't be validated successfully."
+msgstr "Die PDF-Datei wurde erfolgreich generiert."
+
 #: aleksis/core/feeds.py:52
 msgid "Birthday Calendar"
 msgstr "Geburtstagskalender"
@@ -110,11 +120,11 @@ msgstr "Berechtigung"
 msgid "Content type"
 msgstr "Inhaltstyp"
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:715
+#: aleksis/core/filters.py:113 aleksis/core/models.py:720
 msgid "User"
 msgstr "Benutzer"
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:488
+#: aleksis/core/filters.py:135 aleksis/core/models.py:493
 msgid "Group"
 msgstr "Gruppe"
 
@@ -122,7 +132,7 @@ msgstr "Gruppe"
 msgid "Base data"
 msgstr "Basisdaten"
 
-#: aleksis/core/forms.py:55
+#: aleksis/core/forms.py:55 aleksis/core/tables.py:47
 msgid "Address"
 msgstr "Adresse"
 
@@ -150,7 +160,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:136
+#: aleksis/core/forms.py:153 aleksis/core/models.py:141
 msgid "School term"
 msgstr "Schuljahr"
 
@@ -159,7 +169,7 @@ msgid "Common data"
 msgstr "Allgemeine Daten"
 
 #: aleksis/core/forms.py:155 aleksis/core/forms.py:207
-#: aleksis/core/menus.py:160 aleksis/core/models.py:159
+#: aleksis/core/menus.py:160 aleksis/core/models.py:164
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
@@ -169,18 +179,18 @@ msgstr "Personen"
 msgid "Additional data"
 msgstr "Zusätzliche Datne"
 
-#: aleksis/core/forms.py:157 aleksis/core/models.py:212
-#: aleksis/core/models.py:541
+#: aleksis/core/forms.py:157 aleksis/core/models.py:217
+#: aleksis/core/models.py:546 aleksis/core/tables.py:46
 msgid "Photo"
 msgstr "Foto"
 
 #: aleksis/core/forms.py:199 aleksis/core/forms.py:202
-#: aleksis/core/models.py:79
+#: aleksis/core/models.py:84
 msgid "Date"
 msgstr "Datum"
 
 #: aleksis/core/forms.py:200 aleksis/core/forms.py:203
-#: aleksis/core/models.py:87
+#: aleksis/core/models.py:92
 msgid "Time"
 msgstr "Zeit"
 
@@ -216,11 +226,11 @@ msgstr "Einladungscode"
 msgid "Please enter your invitation code."
 msgstr "Bitte geben Sie Ihren Einladungscode ein."
 
-#: aleksis/core/forms.py:418 aleksis/core/models.py:187
+#: aleksis/core/forms.py:418 aleksis/core/models.py:192
 msgid "First name"
 msgstr "Vorname"
 
-#: aleksis/core/forms.py:419 aleksis/core/models.py:188
+#: aleksis/core/forms.py:419 aleksis/core/models.py:193
 msgid "Last name"
 msgstr "Nachname"
 
@@ -323,13 +333,13 @@ msgstr "Dashboard"
 msgid "Admin"
 msgstr "Admin"
 
-#: aleksis/core/menus.py:47 aleksis/core/models.py:867
+#: aleksis/core/menus.py:47 aleksis/core/models.py:872
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr "Ankündigungen"
 
-#: aleksis/core/menus.py:58 aleksis/core/models.py:137
+#: aleksis/core/menus.py:58 aleksis/core/models.py:142
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
@@ -381,7 +391,7 @@ msgstr "OAuth2-Anwendungen"
 msgid "People"
 msgstr "Leute"
 
-#: aleksis/core/menus.py:182 aleksis/core/models.py:1101
+#: aleksis/core/menus.py:182 aleksis/core/models.py:1111
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
@@ -391,7 +401,7 @@ msgstr "Gruppentypen"
 msgid "Groups and child groups"
 msgstr "Gruppen und Kindgruppen"
 
-#: aleksis/core/menus.py:204 aleksis/core/models.py:537
+#: aleksis/core/menus.py:204 aleksis/core/models.py:542
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 msgid "Additional fields"
@@ -458,581 +468,585 @@ msgstr "Abmelden"
 msgid "Linked school term"
 msgstr "Zugeordnetes Schuljahr"
 
-#: aleksis/core/models.py:77
+#: aleksis/core/models.py:82
 msgid "Boolean (Yes/No)"
 msgstr "Boolean (Ja/Nein)"
 
-#: aleksis/core/models.py:78
+#: aleksis/core/models.py:83
 msgid "Text (one line)"
 msgstr "Text (eine Zeile)"
 
-#: aleksis/core/models.py:80
+#: aleksis/core/models.py:85
 msgid "Date and time"
 msgstr "Datum und Uhrzeit"
 
-#: aleksis/core/models.py:81
+#: aleksis/core/models.py:86
 msgid "Decimal number"
 msgstr "Dezimalzahl"
 
-#: aleksis/core/models.py:82 aleksis/core/models.py:205
+#: aleksis/core/models.py:87 aleksis/core/models.py:210
 msgid "E-mail address"
 msgstr "E-Mail-Adresse"
 
-#: aleksis/core/models.py:83
+#: aleksis/core/models.py:88
 msgid "Integer"
 msgstr "Ganze Zahl"
 
-#: aleksis/core/models.py:84
+#: aleksis/core/models.py:89
 msgid "IP address"
 msgstr "IP-Adresse"
 
-#: aleksis/core/models.py:85
+#: aleksis/core/models.py:90
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr "Boolean oder leer (Ja/Nein/weder)"
 
-#: aleksis/core/models.py:86
+#: aleksis/core/models.py:91
 msgid "Text (multi-line)"
 msgstr "Text (mehrzeilig)"
 
-#: aleksis/core/models.py:88
+#: aleksis/core/models.py:93
 msgid "URL / Link"
 msgstr "URL / Link"
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:1070
-#: aleksis/core/models.py:1374
+#: aleksis/core/models.py:105 aleksis/core/models.py:1077
+#: aleksis/core/models.py:1384
 msgid "Name"
 msgstr "Name"
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:107
 msgid "Start date"
 msgstr "Startdatum"
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:108
 msgid "End date"
 msgstr "Enddatum"
 
-#: aleksis/core/models.py:122
+#: aleksis/core/models.py:127
 msgid "The start date must be earlier than the end date."
 msgstr "Das Startdatum muss vor dem Enddatum liegen."
 
-#: aleksis/core/models.py:129
+#: aleksis/core/models.py:134
 msgid "There is already a school term for this time or a part of this time."
 msgstr "Es gibt bereits ein Schuljahr für diesen Zeitraum oder einen Teilzeitraum."
 
-#: aleksis/core/models.py:158 aleksis/core/models.py:1019
-#: aleksis/core/models.py:1371
+#: aleksis/core/models.py:163 aleksis/core/models.py:1024
+#: aleksis/core/models.py:1381
 msgid "Person"
 msgstr "Person"
 
-#: aleksis/core/models.py:161
+#: aleksis/core/models.py:166
 msgid "Can view address"
 msgstr "Kann Adresse sehen"
 
-#: aleksis/core/models.py:162
+#: aleksis/core/models.py:167
 msgid "Can view contact details"
 msgstr "Kann Kontaktdetails sehen"
 
-#: aleksis/core/models.py:163
+#: aleksis/core/models.py:168
 msgid "Can view photo"
 msgstr "Kann Foto sehen"
 
-#: aleksis/core/models.py:164
+#: aleksis/core/models.py:169
 msgid "Can view avatar image"
 msgstr "Kann Avatar-Bild sehen"
 
-#: aleksis/core/models.py:165
+#: aleksis/core/models.py:170
 msgid "Can view persons groups"
 msgstr "Kann Gruppen einer Person sehen"
 
-#: aleksis/core/models.py:166
+#: aleksis/core/models.py:171
 msgid "Can view personal details"
 msgstr "Kann persönliche Daten sehen"
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "female"
 msgstr "weiblich"
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "male"
 msgstr "männlich"
 
-#: aleksis/core/models.py:184 aleksis/core/models.py:1273
+#: aleksis/core/models.py:181
+msgid "other"
+msgstr ""
+
+#: aleksis/core/models.py:189 aleksis/core/models.py:1283
 msgid "Linked user"
 msgstr "Verknüpfter Benutzer"
 
-#: aleksis/core/models.py:190
+#: aleksis/core/models.py:195
 msgid "Additional name(s)"
 msgstr "Zusätzliche Namen"
 
-#: aleksis/core/models.py:194 aleksis/core/models.py:506
+#: aleksis/core/models.py:199 aleksis/core/models.py:511
 msgid "Short name"
 msgstr "Kurzname"
 
-#: aleksis/core/models.py:197
+#: aleksis/core/models.py:202
 msgid "Street"
 msgstr "Straße"
 
-#: aleksis/core/models.py:198
+#: aleksis/core/models.py:203
 msgid "Street number"
 msgstr "Hausnummer"
 
-#: aleksis/core/models.py:199
+#: aleksis/core/models.py:204
 msgid "Postal code"
 msgstr "Postleitzahl"
 
-#: aleksis/core/models.py:200
+#: aleksis/core/models.py:205
 msgid "Place"
 msgstr "Ort"
 
-#: aleksis/core/models.py:202 aleksis/core/templates/core/person/full.html:160
+#: aleksis/core/models.py:207 aleksis/core/templates/core/person/full.html:160
 msgid "Home phone"
 msgstr "Festnetz"
 
-#: aleksis/core/models.py:203 aleksis/core/templates/core/person/full.html:170
+#: aleksis/core/models.py:208 aleksis/core/templates/core/person/full.html:170
 msgid "Mobile phone"
 msgstr "Handy"
 
-#: aleksis/core/models.py:207
+#: aleksis/core/models.py:212
 msgid "Date of birth"
 msgstr "Geburtsdatum"
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:213
 msgid "Place of birth"
 msgstr "Geburtsort"
 
-#: aleksis/core/models.py:209
+#: aleksis/core/models.py:214
 msgid "Sex"
 msgstr "Geschlecht"
 
-#: aleksis/core/models.py:216 aleksis/core/models.py:545
+#: aleksis/core/models.py:221 aleksis/core/models.py:550
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr "Dies ist ein offizielles Foto, genutzt für offizielle Dokumente und interne Zwecke."
 
-#: aleksis/core/models.py:221 aleksis/core/models.py:549
+#: aleksis/core/models.py:226 aleksis/core/models.py:554
 msgid "Display picture / Avatar"
 msgstr "Bild/Avatar anzeigen"
 
-#: aleksis/core/models.py:224 aleksis/core/models.py:552
+#: aleksis/core/models.py:229 aleksis/core/models.py:557
 msgid "This is a picture or an avatar for public display."
 msgstr "Dies ist ein Bild oder ein Avatar für die öffentliche Darstellung."
 
-#: aleksis/core/models.py:229 aleksis/core/templates/core/person/full.html:235
+#: aleksis/core/models.py:234 aleksis/core/templates/core/person/full.html:235
 msgid "Guardians / Parents"
 msgstr "Erziehungsberechtigte / Eltern"
 
-#: aleksis/core/models.py:236
+#: aleksis/core/models.py:241
 msgid "Primary group"
 msgstr "Primärgruppe"
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:719
-#: aleksis/core/models.py:743 aleksis/core/models.py:834
-#: aleksis/core/models.py:1094
+#: aleksis/core/models.py:244 aleksis/core/models.py:724
+#: aleksis/core/models.py:748 aleksis/core/models.py:839
+#: aleksis/core/models.py:1104
 msgid "Description"
 msgstr "Beschreibung"
 
-#: aleksis/core/models.py:459
+#: aleksis/core/models.py:464
 msgid "Title of field"
 msgstr "Feldtitel"
 
-#: aleksis/core/models.py:461
+#: aleksis/core/models.py:466
 msgid "Type of field"
 msgstr "Feldtyp"
 
-#: aleksis/core/models.py:463
+#: aleksis/core/models.py:468
 msgid "Required"
 msgstr "Pflichtfeld"
 
-#: aleksis/core/models.py:464
+#: aleksis/core/models.py:469
 msgid "Help text / description"
 msgstr "Hilfetext/Beschreibung"
 
-#: aleksis/core/models.py:470
+#: aleksis/core/models.py:475
 msgid "Addtitional field for groups"
 msgstr "Zusätzliche Felder für Gruppen"
 
-#: aleksis/core/models.py:471
+#: aleksis/core/models.py:476
 msgid "Addtitional fields for groups"
 msgstr "Zusätzliche Felder für Gruppen"
 
-#: aleksis/core/models.py:491
+#: aleksis/core/models.py:496
 msgid "Can assign child groups to groups"
 msgstr "Kann Kindgruppen zu Gruppen zuordnen"
 
-#: aleksis/core/models.py:492
+#: aleksis/core/models.py:497
 msgid "Can view statistics about group."
 msgstr "Kann Statistiken über Gruppen sehen."
 
-#: aleksis/core/models.py:504
+#: aleksis/core/models.py:509
 msgid "Long name"
 msgstr "Langname"
 
-#: aleksis/core/models.py:514 aleksis/core/templates/core/group/full.html:85
+#: aleksis/core/models.py:519 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr "Mitglieder"
 
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/full.html:82
+#: aleksis/core/models.py:522 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr "Leiter/-innen"
 
-#: aleksis/core/models.py:524 aleksis/core/templates/core/group/full.html:55
+#: aleksis/core/models.py:529 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr "Ãœbergeordnete Gruppen"
 
-#: aleksis/core/models.py:532
+#: aleksis/core/models.py:537
 msgid "Type of group"
 msgstr "Gruppentyp"
 
-#: aleksis/core/models.py:718 aleksis/core/models.py:742
-#: aleksis/core/models.py:833
+#: aleksis/core/models.py:723 aleksis/core/models.py:747
+#: aleksis/core/models.py:838
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr "Titel"
 
-#: aleksis/core/models.py:721
+#: aleksis/core/models.py:726
 msgid "Application"
 msgstr "Anwendung"
 
-#: aleksis/core/models.py:727
+#: aleksis/core/models.py:732
 msgid "Activity"
 msgstr "Aktivität"
 
-#: aleksis/core/models.py:728
+#: aleksis/core/models.py:733
 msgid "Activities"
 msgstr "Aktivitäten"
 
-#: aleksis/core/models.py:734
+#: aleksis/core/models.py:739
 msgid "Sender"
 msgstr "Absender"
 
-#: aleksis/core/models.py:739
+#: aleksis/core/models.py:744
 msgid "Recipient"
 msgstr "Empfänger"
 
-#: aleksis/core/models.py:744 aleksis/core/models.py:1071
+#: aleksis/core/models.py:749 aleksis/core/models.py:1078
 msgid "Link"
 msgstr "Link"
 
-#: aleksis/core/models.py:746
+#: aleksis/core/models.py:751
 msgid "Send notification at"
 msgstr "Benachrichtigung schicken am"
 
-#: aleksis/core/models.py:748
+#: aleksis/core/models.py:753
 msgid "Read"
 msgstr "Gelesen"
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:754
 msgid "Sent"
 msgstr "Versandt"
 
-#: aleksis/core/models.py:766
+#: aleksis/core/models.py:771
 msgid "Notification"
 msgstr "Benachrichtigung"
 
-#: aleksis/core/models.py:767 aleksis/core/preferences.py:29
+#: aleksis/core/models.py:772 aleksis/core/preferences.py:29
 #: aleksis/core/templates/core/base.html:81
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr "Benachrichtigungen"
 
-#: aleksis/core/models.py:835
+#: aleksis/core/models.py:840
 msgid "Link to detailed view"
 msgstr "Link zur detaillierten Ansicht"
 
-#: aleksis/core/models.py:838
+#: aleksis/core/models.py:843
 msgid "Date and time from when to show"
 msgstr "Datum und Uhrzeit des Anzeigestarts"
 
-#: aleksis/core/models.py:841
+#: aleksis/core/models.py:846
 msgid "Date and time until when to show"
 msgstr "Anzeigezeitraum"
 
-#: aleksis/core/models.py:866
+#: aleksis/core/models.py:871
 msgid "Announcement"
 msgstr "Ankündigung"
 
-#: aleksis/core/models.py:904
+#: aleksis/core/models.py:909
 msgid "Announcement recipient"
 msgstr "Empfänger der Ankündigung"
 
-#: aleksis/core/models.py:905
+#: aleksis/core/models.py:910
 msgid "Announcement recipients"
 msgstr "Empfänger der Ankündigung"
 
-#: aleksis/core/models.py:927
+#: aleksis/core/models.py:932
 msgid "Widget Title"
 msgstr "Widget-Titel"
 
-#: aleksis/core/models.py:928
+#: aleksis/core/models.py:933
 msgid "Activate Widget"
 msgstr "Widget aktivieren"
 
-#: aleksis/core/models.py:929
+#: aleksis/core/models.py:934
 msgid "Widget is broken"
 msgstr "Widget ist kaputt"
 
-#: aleksis/core/models.py:932
+#: aleksis/core/models.py:937
 msgid "Size on mobile devices"
 msgstr "Größe auf Mobilgeräten"
 
-#: aleksis/core/models.py:933
+#: aleksis/core/models.py:938
 msgid "<= 600 px, 12 columns"
 msgstr "<= 600 px, 12 Spalten"
 
-#: aleksis/core/models.py:938
+#: aleksis/core/models.py:943
 msgid "Size on tablet devices"
 msgstr "Größe auf Tablets"
 
-#: aleksis/core/models.py:939
+#: aleksis/core/models.py:944
 msgid "> 600 px, 12 columns"
 msgstr "> 600px, 12 Spalten"
 
-#: aleksis/core/models.py:944
+#: aleksis/core/models.py:949
 msgid "Size on desktop devices"
 msgstr "Größe auf Desktopgeräten"
 
-#: aleksis/core/models.py:945
+#: aleksis/core/models.py:950
 msgid "> 992 px, 12 columns"
 msgstr "> 992 px, 12 Spalten"
 
-#: aleksis/core/models.py:950
+#: aleksis/core/models.py:955
 msgid "Size on large desktop devices"
 msgstr "Größe auf großen Desktopgeräten"
 
-#: aleksis/core/models.py:951
+#: aleksis/core/models.py:956
 msgid "> 1200 px>, 12 columns"
 msgstr "> 1200 px, 12 Spalten"
 
-#: aleksis/core/models.py:982
+#: aleksis/core/models.py:987
 msgid "Can edit default dashboard"
 msgstr "Kann Standarddashboard bearbeiten"
 
-#: aleksis/core/models.py:983
+#: aleksis/core/models.py:988
 msgid "Dashboard Widget"
 msgstr "Dashboard-Widget"
 
-#: aleksis/core/models.py:984
+#: aleksis/core/models.py:989
 msgid "Dashboard Widgets"
 msgstr "Dashboard-Widgets"
 
-#: aleksis/core/models.py:990
+#: aleksis/core/models.py:995
 msgid "URL"
 msgstr "URL"
 
-#: aleksis/core/models.py:991
+#: aleksis/core/models.py:996
 msgid "Icon URL"
 msgstr "Symbol-URL"
 
-#: aleksis/core/models.py:997
+#: aleksis/core/models.py:1002
 msgid "External link widget"
 msgstr "Externer-Link-Widget"
 
-#: aleksis/core/models.py:998
+#: aleksis/core/models.py:1003
 msgid "External link widgets"
 msgstr "Externer-Link-Widgets"
 
-#: aleksis/core/models.py:1004
+#: aleksis/core/models.py:1009
 msgid "Content"
 msgstr "Inhalt"
 
-#: aleksis/core/models.py:1010
+#: aleksis/core/models.py:1015
 msgid "Static content widget"
 msgstr "Statischer-Inhalt-Widget"
 
-#: aleksis/core/models.py:1011
+#: aleksis/core/models.py:1016
 msgid "Static content widgets"
 msgstr "Statischer-Inhalt-Widgets"
 
-#: aleksis/core/models.py:1016
+#: aleksis/core/models.py:1021
 msgid "Dashboard widget"
 msgstr "Dashboard-Widget"
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:1026
 msgid "Order"
 msgstr "Reihenfolge"
 
-#: aleksis/core/models.py:1022
+#: aleksis/core/models.py:1027
 msgid "Part of the default dashboard"
 msgstr "Teil des Standarddashboards"
 
-#: aleksis/core/models.py:1037
+#: aleksis/core/models.py:1042
 msgid "Dashboard widget order"
 msgstr "Reihenfolge der Dashboard-Widgets"
 
-#: aleksis/core/models.py:1038
+#: aleksis/core/models.py:1043
 msgid "Dashboard widget orders"
 msgstr "Reihenfolgen der Dashboard-Widgets"
 
-#: aleksis/core/models.py:1044
+#: aleksis/core/models.py:1049
 msgid "Menu ID"
 msgstr "Menü-ID"
 
-#: aleksis/core/models.py:1057
+#: aleksis/core/models.py:1062
 msgid "Custom menu"
 msgstr "Benutzerdefiniertes Menü"
 
-#: aleksis/core/models.py:1058
+#: aleksis/core/models.py:1063
 msgid "Custom menus"
 msgstr "Benutzerdefinierte Menüs"
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:1075
 msgid "Menu"
 msgstr "Menü"
 
-#: aleksis/core/models.py:1072 aleksis/core/models.py:1320
+#: aleksis/core/models.py:1079 aleksis/core/models.py:1330
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr "Symbol"
 
-#: aleksis/core/models.py:1078
+#: aleksis/core/models.py:1085
 msgid "Custom menu item"
 msgstr "Benutzerdefiniertes Menüelement"
 
-#: aleksis/core/models.py:1079
+#: aleksis/core/models.py:1086
 msgid "Custom menu items"
 msgstr "Benutzerdefinierte Menüelemente"
 
-#: aleksis/core/models.py:1093
+#: aleksis/core/models.py:1103
 msgid "Title of type"
 msgstr "Titel des Typs"
 
-#: aleksis/core/models.py:1100 aleksis/core/templates/core/group/full.html:47
+#: aleksis/core/models.py:1110 aleksis/core/templates/core/group/full.html:50
 msgid "Group type"
 msgstr "Gruppentyp"
 
-#: aleksis/core/models.py:1114
+#: aleksis/core/models.py:1124
 msgid "Can view system status"
 msgstr "Kann Systemstatus sehen"
 
-#: aleksis/core/models.py:1115
+#: aleksis/core/models.py:1125
 msgid "Can manage data"
 msgstr "Kann Daten verwalten"
 
-#: aleksis/core/models.py:1116
+#: aleksis/core/models.py:1126
 msgid "Can impersonate"
 msgstr "Kann sich verkleiden"
 
-#: aleksis/core/models.py:1117
+#: aleksis/core/models.py:1127
 msgid "Can use search"
 msgstr "Kann Suche benutzen"
 
-#: aleksis/core/models.py:1118
+#: aleksis/core/models.py:1128
 msgid "Can change site preferences"
 msgstr "Kann Konfiguration ändern"
 
-#: aleksis/core/models.py:1119
+#: aleksis/core/models.py:1129
 msgid "Can change person preferences"
 msgstr "Kann Einstellungen einer Person verändern"
 
-#: aleksis/core/models.py:1120
+#: aleksis/core/models.py:1130
 msgid "Can change group preferences"
 msgstr "Kann Einstellungen einer Gruppe verändern"
 
-#: aleksis/core/models.py:1121
+#: aleksis/core/models.py:1131
 msgid "Can test PDF generation"
 msgstr "Kann die PDF-Generierung testen"
 
-#: aleksis/core/models.py:1122
+#: aleksis/core/models.py:1132
 msgid "Can invite persons"
 msgstr "Kann Personen einladen"
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1168
 msgid "Related data check task"
 msgstr "Zugehörige Datenprüfungsaufgabe"
 
-#: aleksis/core/models.py:1166
+#: aleksis/core/models.py:1176
 msgid "Issue solved"
 msgstr "Problem gelöst"
 
-#: aleksis/core/models.py:1167
+#: aleksis/core/models.py:1177
 msgid "Notification sent"
 msgstr "Benachrichtigung gesendet"
 
-#: aleksis/core/models.py:1180
+#: aleksis/core/models.py:1190
 msgid "Data check result"
 msgstr "Datenprüfungsergebnis"
 
-#: aleksis/core/models.py:1181
+#: aleksis/core/models.py:1191
 msgid "Data check results"
 msgstr "Datenprüfungsergebnisse"
 
-#: aleksis/core/models.py:1183
+#: aleksis/core/models.py:1193
 msgid "Can run data checks"
 msgstr "Kann Datenprüfungen ausführen"
 
-#: aleksis/core/models.py:1184
+#: aleksis/core/models.py:1194
 msgid "Can solve data check problems"
 msgstr "Kann Datenprüfungsprobleme lösen"
 
-#: aleksis/core/models.py:1191
+#: aleksis/core/models.py:1201
 msgid "E-Mail address"
 msgstr "E-Mail-Adresse"
 
-#: aleksis/core/models.py:1223
+#: aleksis/core/models.py:1233
 msgid "Owner"
 msgstr "Leiter"
 
-#: aleksis/core/models.py:1227
+#: aleksis/core/models.py:1237
 msgid "File expires at"
 msgstr "Datei abgelaufen am"
 
-#: aleksis/core/models.py:1229
+#: aleksis/core/models.py:1239
 msgid "Generated HTML file"
 msgstr "Generierte HTML-Datei"
 
-#: aleksis/core/models.py:1231
+#: aleksis/core/models.py:1241
 msgid "Generated PDF file"
 msgstr "Generierte PDF-Datei"
 
-#: aleksis/core/models.py:1238
+#: aleksis/core/models.py:1248
 msgid "PDF file"
 msgstr "PDF-Datei"
 
-#: aleksis/core/models.py:1239
+#: aleksis/core/models.py:1249
 msgid "PDF files"
 msgstr "PDF-Dateien"
 
-#: aleksis/core/models.py:1244
+#: aleksis/core/models.py:1254
 msgid "Task result"
 msgstr "Task-Ergebnis"
 
-#: aleksis/core/models.py:1247
+#: aleksis/core/models.py:1257
 msgid "Task user"
 msgstr "Task-Benutzer"
 
-#: aleksis/core/models.py:1259
+#: aleksis/core/models.py:1269
 msgid "Task user assignment"
 msgstr "Task-Benutzer-Zuordnung"
 
-#: aleksis/core/models.py:1260
+#: aleksis/core/models.py:1270
 msgid "Task user assignments"
 msgstr "Task-Benutzer-Zuordnungen"
 
-#: aleksis/core/models.py:1276
+#: aleksis/core/models.py:1286
 msgid "Additional attributes"
 msgstr "Zusätzliche Attribute"
 
-#: aleksis/core/models.py:1314
+#: aleksis/core/models.py:1324
 msgid "Allowed scopes that clients can request"
 msgstr "Erlaubte Scopes, die ein Client anfordern kann"
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1334
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr "Dieses Bild wird im Autorisierungs-Vorgang als Symbol angezeigt werden. Es sollte rechteckig sein."
 
-#: aleksis/core/models.py:1373
+#: aleksis/core/models.py:1383
 msgid "UUID"
 msgstr "UUID"
 
-#: aleksis/core/models.py:1377
+#: aleksis/core/models.py:1387
 msgid "Selected ICal feed"
 msgstr "Ausgewählter iCal-Feed"
 
-#: aleksis/core/models.py:1386
+#: aleksis/core/models.py:1396
 msgid "Personal Calendar URL"
 msgstr "Persönliche Kalender-URL"
 
-#: aleksis/core/models.py:1387
+#: aleksis/core/models.py:1397
 msgid "Personal Calendar URLs"
 msgstr "Persönliche Kalender-URLs"
 
@@ -1180,94 +1194,94 @@ msgstr "Größe der Pakete. (Standard 5: abcde)"
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr "Erlaubte Grant Flows für OAuth-Anwendungen"
 
-#: aleksis/core/preferences.py:344
-msgid "Available languages"
-msgstr "Verfügbare Sprachen"
-
-#: aleksis/core/preferences.py:357
+#: aleksis/core/preferences.py:343
 msgid "Send emails if data checks detect problems"
 msgstr "E-Mails versenden, wenn Datenprüfungen Probleme finden"
 
-#: aleksis/core/preferences.py:368
+#: aleksis/core/preferences.py:354
 msgid "Email recipients for data checks problem emails"
 msgstr "E-Mailempfänger für Datenprüfungsproblem-E-Mails"
 
-#: aleksis/core/preferences.py:379
+#: aleksis/core/preferences.py:365
 msgid "Email recipient groups for data checks problem emails"
 msgstr "E-Mail-Empfängergruppen für Datenprüfungsproblem-E-Mails"
 
-#: aleksis/core/preferences.py:388
+#: aleksis/core/preferences.py:374
 msgid "Show dashboard to users without login"
 msgstr "Zeige Dashboard für Benutzer ohne Login"
 
-#: aleksis/core/preferences.py:397
+#: aleksis/core/preferences.py:383
 msgid "Allow users to edit their dashboard"
 msgstr "Erlaube Benutzern, ihr Dashboard zu bearbeiten"
 
-#: aleksis/core/preferences.py:408
+#: aleksis/core/preferences.py:394
 msgid "Fields on person model which are editable by themselves."
 msgstr "Felder des Personen-Models welche von ihnen selbst editierbar sind."
 
-#: aleksis/core/preferences.py:423
+#: aleksis/core/preferences.py:409
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr "Editierbare Felder des Personen-Models welche eine Benachrichtigung für Änderungen auslösen soll"
 
-#: aleksis/core/preferences.py:437
+#: aleksis/core/preferences.py:423
 msgid "Contact for notification if a person changes their data"
 msgstr "Kontakt für Benachrichtigung, wenn eine Person ihre Daten ändert"
 
-#: aleksis/core/preferences.py:448
+#: aleksis/core/preferences.py:434
 msgid "Prefer personal photos over avatars"
 msgstr "Persönliche Fotos Avataren vorziehen"
 
-#: aleksis/core/preferences.py:458
+#: aleksis/core/preferences.py:444
 msgid "PDF file expiration duration"
 msgstr "PDF-Datei-Ablaufdauer"
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:445
 msgid "in minutes"
 msgstr "in Minuten"
 
-#: aleksis/core/preferences.py:469
+#: aleksis/core/preferences.py:455
 msgid "Automatically update the dashboard and its widgets"
 msgstr "Automatisch das Dashboard und seine Widgets aktualisieren"
 
-#: aleksis/core/preferences.py:479
+#: aleksis/core/preferences.py:465
 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:489
+#: aleksis/core/preferences.py:475
 msgid "Country for phone number parsing"
 msgstr "Land für das Einlesen von Telefonnummern"
 
-#: aleksis/core/settings.py:540
+#: aleksis/core/settings.py:541
 msgid "English"
 msgstr "Englisch"
 
-#: aleksis/core/settings.py:541
+#: aleksis/core/settings.py:542
 msgid "German"
 msgstr "Deutsch"
 
-#: aleksis/core/tables.py:24
+#: aleksis/core/settings.py:543
+msgid "Ukrainian"
+msgstr ""
+
+#: aleksis/core/tables.py:25
 #: aleksis/core/templates/core/announcement/list.html:36
-#: aleksis/core/templates/core/group/full.html:24
+#: aleksis/core/templates/core/group/full.html:26
 #: aleksis/core/templates/core/person/full.html:26
 #: aleksis/core/templates/core/person/full.html:86
 #: aleksis/core/templates/oauth2_provider/application/detail.html:17
 msgid "Edit"
 msgstr "Bearbeiten"
 
-#: aleksis/core/tables.py:26 aleksis/core/tables.py:94
-#: aleksis/core/tables.py:138
+#: aleksis/core/tables.py:27 aleksis/core/tables.py:148
+#: aleksis/core/tables.py:192
 #: aleksis/core/templates/core/announcement/list.html:22
 msgid "Actions"
 msgstr "Aktionen"
 
-#: aleksis/core/tables.py:61 aleksis/core/tables.py:62
-#: aleksis/core/tables.py:76 aleksis/core/tables.py:92
-#: aleksis/core/tables.py:136
+#: aleksis/core/tables.py:115 aleksis/core/tables.py:116
+#: aleksis/core/tables.py:130 aleksis/core/tables.py:146
+#: aleksis/core/tables.py:190
 #: aleksis/core/templates/core/announcement/list.html:42
-#: aleksis/core/templates/core/group/full.html:31
+#: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
 #: aleksis/core/templates/core/person/full.html:33
 #: aleksis/core/templates/core/person/full.html:93
@@ -1314,9 +1328,13 @@ msgstr ""
 "          "
 
 #: aleksis/core/templates/500.html:10
+#, fuzzy
+#| msgid ""
+#| "An unexpected error has\n"
+#| "          occured."
 msgid ""
 "An unexpected error has\n"
-"          occured."
+"          occurred."
 msgstr ""
 "Ein unerwarteter Fehler ist\n"
 "            aufgetreten."
@@ -1895,35 +1913,42 @@ msgstr "Speichern und weiter"
 msgid "Edit group"
 msgstr "Gruppe editieren"
 
-#: aleksis/core/templates/core/group/full.html:38
+#: aleksis/core/templates/core/group/full.html:40
 #: aleksis/core/templates/core/person/full.html:40
 #: aleksis/core/templates/core/person/full.html:100
 msgid "Change preferences"
 msgstr "Einstellungen ändern"
 
-#: aleksis/core/templates/core/group/full.html:64
+#: aleksis/core/templates/core/group/full.html:68
 msgid "Statistics"
 msgstr "Statistiken"
 
-#: aleksis/core/templates/core/group/full.html:67
+#: aleksis/core/templates/core/group/full.html:73
 msgid "Count of members"
 msgstr "Anzahl der Mitglieder"
 
-#: aleksis/core/templates/core/group/full.html:71
+#: aleksis/core/templates/core/group/full.html:81
 msgid "Average age"
 msgstr "Durchschnittsalter"
 
-#: aleksis/core/templates/core/group/full.html:76
+#: aleksis/core/templates/core/group/full.html:90
 msgid "Age range"
 msgstr "Altersbereich"
 
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years to"
-msgstr "Jahre bis"
-
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years "
-msgstr "Jahre "
+#: aleksis/core/templates/core/group/full.html:93
+#, fuzzy, python-format
+#| msgid ""
+#| "\n"
+#| "              Valid for %(from)s\n"
+#| "            "
+msgid ""
+"\n"
+"              %(min)s years to %(max)s years\n"
+"            "
+msgstr ""
+"\n"
+"              Gültig für %(from)s\n"
+"            "
 
 #: aleksis/core/templates/core/group/list.html:14
 msgid "Create group"
@@ -1974,15 +1999,14 @@ msgstr "iCal-URL %(object)s bearbeiten"
 
 #: aleksis/core/templates/core/ical/ical_list.html:4
 #: aleksis/core/templates/core/ical/ical_list.html:5
-msgid "ICal Feeds"
+#, fuzzy
+#| msgid "ICal Feeds"
+msgid "iCal Feeds"
 msgstr "iCal-Feeds"
 
 #: aleksis/core/templates/core/ical/ical_list.html:8
 msgid "These are URLs for different Calendar Feeds in the iCal (.ics) format. You can create as many as you want and import them in your calendar software."
-msgstr ""
-"Dies sind URLs für verschiedene Kalender-Feeds im iCal-Format (.ics). Sie "
-"können so viele erstellen, wie sie wollen, und in Ihre Kalender-Software "
-"importieren."
+msgstr "Dies sind URLs für verschiedene Kalender-Feeds im iCal-Format (.ics). Sie können so viele erstellen, wie sie wollen, und in Ihre Kalender-Software importieren."
 
 #: aleksis/core/templates/core/ical/ical_list.html:14
 msgid "Your iCal URLs"
@@ -2308,11 +2332,11 @@ msgstr "Verändert von"
 msgid "Unknown"
 msgstr "Unbekannt"
 
-#: aleksis/core/templates/core/partials/language_form.html:15
+#: aleksis/core/templates/core/partials/language_form.html:17
 msgid "Language"
 msgstr "Sprache"
 
-#: aleksis/core/templates/core/partials/language_form.html:27
+#: aleksis/core/templates/core/partials/language_form.html:29
 msgid "Select language"
 msgstr "Sprache auswählen"
 
@@ -3385,172 +3409,189 @@ msgstr "Es ist ein Fehler beim Generieren der PDF-Datei aufgetreten."
 msgid "Download PDF"
 msgstr "PDF herunterladen"
 
-#: aleksis/core/views.py:292
+#: aleksis/core/views.py:294
 msgid "The school term has been created."
 msgstr "Das Schuljahr wurde erstellt."
 
-#: aleksis/core/views.py:304
+#: aleksis/core/views.py:306
 msgid "The school term has been saved."
 msgstr "Das Schuljahr wurde gespeichert."
 
-#: aleksis/core/views.py:424
+#: aleksis/core/views.py:426
 msgid "The child groups were successfully saved."
 msgstr "Die Untergruppen wurden gespeichert."
 
-#: aleksis/core/views.py:443 aleksis/core/views.py:453
+#: aleksis/core/views.py:445 aleksis/core/views.py:455
 msgid "The person has been saved."
 msgstr "Die Person wurde gespeichert."
 
-#: aleksis/core/views.py:503
+#: aleksis/core/views.py:505
 msgid "The group has been saved."
 msgstr "Die Gruppe wurde gespeichert."
 
-#: aleksis/core/views.py:600
+#: aleksis/core/views.py:602
 msgid "The announcement has been saved."
 msgstr "Die Ankündigung wurde gespeichert."
 
-#: aleksis/core/views.py:616
+#: aleksis/core/views.py:618
 msgid "The announcement has been deleted."
 msgstr "Ankündigung wurde gelöscht."
 
-#: aleksis/core/views.py:684
+#: aleksis/core/views.py:686
 msgid "The requested preference registry does not exist"
 msgstr "Das angeforderte Einstellungsregister existiert nicht"
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:705
 msgid "The preferences have been saved successfully."
 msgstr "Die Einstellungen wurde gespeichert."
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:729
 msgid "The person has been deleted."
 msgstr "Die Person wurde gelöscht."
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:743
 msgid "The group has been deleted."
 msgstr "Die Gruppe wurde gelöscht."
 
-#: aleksis/core/views.py:773
-msgid "The additional_field has been saved."
+#: aleksis/core/views.py:775
+#, fuzzy
+#| msgid "The additional_field has been saved."
+msgid "The additional field has been saved."
 msgstr "Das zusätzliche Feld wurde gespeichert."
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:809
 msgid "The additional field has been deleted."
 msgstr "Das zusätzliche Feld wurde gelöscht."
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:834
 msgid "The group type has been saved."
 msgstr "Der Gruppentyp wurde gespeichert."
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:864
 msgid "The group type has been deleted."
 msgstr "Der Gruppentyp wurde gelöscht."
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:897
 msgid "Progress: Run data checks"
 msgstr "Fortschritt: Datenprüfungen ausführen"
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:898
 msgid "Run data checks …"
 msgstr "Datenprüfungen laufen …"
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:899
 msgid "The data checks were run successfully."
 msgstr "Die Datenprüfungen wurden erfolgreich ausgeführt."
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:900
 msgid "There was a problem while running data checks."
 msgstr "Es gab ein Problem beim Ausführen der Datenprüfungen."
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:916
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr "Die Lösungsoption \"{solve_option_obj.verbose_name}\" "
 
-#: aleksis/core/views.py:924
+#: aleksis/core/views.py:926
 msgid "The requested solve option does not exist"
 msgstr "Die angeforderte Lösungsoption existiert nicht"
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:958
 msgid "The dashboard widget has been saved."
 msgstr "Das Dashboard-Widget wurde gespeichert."
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:988
 msgid "The dashboard widget has been created."
 msgstr "Das Dashboard-Widget wurde erstellt."
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:998
 msgid "The dashboard widget has been deleted."
 msgstr "Das Dashboard-Widget wurde gelöscht."
 
-#: aleksis/core/views.py:1067
+#: aleksis/core/views.py:1069
 msgid "Your dashboard configuration has been saved successfully."
 msgstr "Ihre Dashboardkonfiguration wurde erfolgreich gespeichert."
 
-#: aleksis/core/views.py:1069
+#: aleksis/core/views.py:1071
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr "Die Konfiguration des Standard-Dashboardes wurde erfolgreich gespeichert."
 
-#: aleksis/core/views.py:1145
+#: aleksis/core/views.py:1147
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr "Die Einladung wurde erfolgreich erstellt. Der Einladungscode ist {code}"
 
-#: aleksis/core/views.py:1236
+#: aleksis/core/views.py:1238
 msgid "We have successfully assigned the permissions."
 msgstr "Wir haben die Berechtigungen erfolgreich zugewiesen."
 
-#: aleksis/core/views.py:1246
+#: aleksis/core/views.py:1248
 msgid "The global user permission has been deleted."
 msgstr "Die globale Benutzerberechtigung wurde gelöscht."
 
-#: aleksis/core/views.py:1256
+#: aleksis/core/views.py:1258
 msgid "The global group permission has been deleted."
 msgstr "Die globale Gruppenberechtigung wurde gelöscht."
 
-#: aleksis/core/views.py:1266
+#: aleksis/core/views.py:1268
 msgid "The object user permission has been deleted."
 msgstr "Die Objekt-Benutzerberechtigung wurde gelöscht."
 
-#: aleksis/core/views.py:1276
+#: aleksis/core/views.py:1278
 msgid "The object group permission has been deleted."
 msgstr "Die Objekt-Gruppenberechtigung wurde gelöscht."
 
-#: aleksis/core/views.py:1344
+#: aleksis/core/views.py:1346
 msgid "The requested PDF file does not exist"
 msgstr "Die angeforderte PDF-Datei existiert nicht"
 
-#: aleksis/core/views.py:1353 aleksis/core/views.py:1357
+#: aleksis/core/views.py:1355 aleksis/core/views.py:1359
 msgid "The requested task does not exist or is not accessible"
 msgstr "Der angeforderte Task existiert nicht oder ist nicht abrufbar"
 
-#: aleksis/core/views.py:1409
+#: aleksis/core/views.py:1411
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr "Das Drittanbieter-Konto konnte nicht deaktiviert werden, weil es die einzige verfügbare Anmeldeoption ist."
 
-#: aleksis/core/views.py:1416
+#: aleksis/core/views.py:1418
 msgid "The third-party account has been successfully disconnected."
 msgstr "Das Drittanbieter-Konto wurde erfolgreich getrennt."
 
-#: aleksis/core/views.py:1487
+#: aleksis/core/views.py:1489
 msgid "Person was invited successfully and an email with further instructions has been send to them."
 msgstr "Die Person wurde erfolgreich eingeladen und eine E-Mail mit weiteren Anweisungen wurde an sie verschickt."
 
-#: aleksis/core/views.py:1498
+#: aleksis/core/views.py:1500
 msgid "Person was already invited."
 msgstr "Person wurde bereits eingeladen."
 
-#: aleksis/core/views.py:1598
-msgid "ICal feed updated successfully"
+#: aleksis/core/views.py:1600
+#, fuzzy
+#| msgid "ICal feed updated successfully"
+msgid "iCal feed updated successfully"
 msgstr "Der iCal-Feed wurde erfolgreich aktualisiert"
 
-#: aleksis/core/views.py:1608
-msgid "ICal feed deleted successfully"
+#: aleksis/core/views.py:1610
+#, fuzzy
+#| msgid "ICal feed deleted successfully"
+msgid "iCal feed deleted successfully"
 msgstr "Der iCal-Feed wurde erfolgreich gelöscht"
 
-#: aleksis/core/views.py:1616
-msgid "ICal feed created successfully"
+#: aleksis/core/views.py:1618
+#, fuzzy
+#| msgid "ICal feed created successfully"
+msgid "iCal feed created successfully"
 msgstr "Der iCal-Feed wurde erfolgreich erstellt"
 
+#~ msgid "Available languages"
+#~ msgstr "Verfügbare Sprachen"
+
+#~ msgid "years to"
+#~ msgstr "Jahre bis"
+
+#~ msgid "years "
+#~ msgstr "Jahre "
+
 #~ msgid "Me"
 #~ msgstr "Ich"
 
diff --git a/aleksis/core/locale/de_DE/LC_MESSAGES/djangojs.po b/aleksis/core/locale/de_DE/LC_MESSAGES/djangojs.po
index 46116e73483b8a4b7af5f566700cd6110f8c29dc..2298f9b2dd0bb495629e9b9174cdeceb7a7159bc 100644
--- a/aleksis/core/locale/de_DE/LC_MESSAGES/djangojs.po
+++ b/aleksis/core/locale/de_DE/LC_MESSAGES/djangojs.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: 2021-10-28 14:37+0000\n"
 "Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n"
 "Language-Team: German <https://translate.edugit.org/projects/aleksis/aleksis-core-js/de/>\n"
diff --git a/aleksis/core/locale/fr/LC_MESSAGES/django.po b/aleksis/core/locale/fr/LC_MESSAGES/django.po
index 03ca8ed9426a18b415e7ebe22449010c847dd68e..b57a1588c4fb9a13d74200af11aa150a0f7b2c7d 100644
--- a/aleksis/core/locale/fr/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/fr/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: AlekSIS (School Information System) 0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: 2021-06-16 12:00+0000\n"
 "Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n"
 "Language-Team: French <https://translate.edugit.org/projects/aleksis/aleksis/fr/>\n"
@@ -41,7 +41,7 @@ msgid "Home and mobile phone"
 msgstr ""
 
 #: aleksis/core/apps.py:171 aleksis/core/forms.py:220 aleksis/core/menus.py:171
-#: aleksis/core/models.py:489 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/models.py:494 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:246
 #, fuzzy
@@ -49,27 +49,37 @@ msgstr ""
 msgid "Groups"
 msgstr "Groupe"
 
-#: aleksis/core/data_checks.py:56
+#: aleksis/core/data_checks.py:59
 msgid "Ignore problem"
 msgstr ""
 
-#: aleksis/core/data_checks.py:185
+#: aleksis/core/data_checks.py:188
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/data_checks.py:291
+#: aleksis/core/data_checks.py:294
 msgid "Deactivate DashboardWidget"
 msgstr ""
 
-#: aleksis/core/data_checks.py:303
+#: aleksis/core/data_checks.py:306
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr ""
 
-#: aleksis/core/data_checks.py:304
+#: aleksis/core/data_checks.py:307
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
+#: aleksis/core/data_checks.py:330
+#, python-format
+msgid "Validate field %s of model %s."
+msgstr ""
+
+#: aleksis/core/data_checks.py:332
+#, python-format
+msgid "The field %s couldn't be validated successfully."
+msgstr ""
+
 #: aleksis/core/feeds.py:52
 msgid "Birthday Calendar"
 msgstr ""
@@ -115,11 +125,11 @@ msgstr ""
 msgid "Content type"
 msgstr ""
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:715
+#: aleksis/core/filters.py:113 aleksis/core/models.py:720
 msgid "User"
 msgstr ""
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:488
+#: aleksis/core/filters.py:135 aleksis/core/models.py:493
 msgid "Group"
 msgstr "groupe"
 
@@ -127,7 +137,7 @@ msgstr "groupe"
 msgid "Base data"
 msgstr ""
 
-#: aleksis/core/forms.py:55
+#: aleksis/core/forms.py:55 aleksis/core/tables.py:47
 msgid "Address"
 msgstr ""
 
@@ -159,7 +169,7 @@ msgstr ""
 msgid "This username is already in use."
 msgstr "Cet nom est deja en utilisation."
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:136
+#: aleksis/core/forms.py:153 aleksis/core/models.py:141
 msgid "School term"
 msgstr ""
 
@@ -170,7 +180,7 @@ msgid "Common data"
 msgstr "Détails de contact"
 
 #: aleksis/core/forms.py:155 aleksis/core/forms.py:207
-#: aleksis/core/menus.py:160 aleksis/core/models.py:159
+#: aleksis/core/menus.py:160 aleksis/core/models.py:164
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 #, fuzzy
@@ -184,18 +194,18 @@ msgstr "Personne"
 msgid "Additional data"
 msgstr "Détails de contact"
 
-#: aleksis/core/forms.py:157 aleksis/core/models.py:212
-#: aleksis/core/models.py:541
+#: aleksis/core/forms.py:157 aleksis/core/models.py:217
+#: aleksis/core/models.py:546 aleksis/core/tables.py:46
 msgid "Photo"
 msgstr ""
 
 #: aleksis/core/forms.py:199 aleksis/core/forms.py:202
-#: aleksis/core/models.py:79
+#: aleksis/core/models.py:84
 msgid "Date"
 msgstr "Date"
 
 #: aleksis/core/forms.py:200 aleksis/core/forms.py:203
-#: aleksis/core/models.py:87
+#: aleksis/core/models.py:92
 msgid "Time"
 msgstr ""
 
@@ -231,11 +241,11 @@ msgstr ""
 msgid "Please enter your invitation code."
 msgstr ""
 
-#: aleksis/core/forms.py:418 aleksis/core/models.py:187
+#: aleksis/core/forms.py:418 aleksis/core/models.py:192
 msgid "First name"
 msgstr "Prénom"
 
-#: aleksis/core/forms.py:419 aleksis/core/models.py:188
+#: aleksis/core/forms.py:419 aleksis/core/models.py:193
 msgid "Last name"
 msgstr "Nom de famille"
 
@@ -340,13 +350,13 @@ msgstr ""
 msgid "Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:47 aleksis/core/models.py:867
+#: aleksis/core/menus.py:47 aleksis/core/models.py:872
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr ""
 
-#: aleksis/core/menus.py:58 aleksis/core/models.py:137
+#: aleksis/core/menus.py:58 aleksis/core/models.py:142
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
@@ -398,7 +408,7 @@ msgstr ""
 msgid "People"
 msgstr ""
 
-#: aleksis/core/menus.py:182 aleksis/core/models.py:1101
+#: aleksis/core/menus.py:182 aleksis/core/models.py:1111
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 #, fuzzy
@@ -410,7 +420,7 @@ msgstr "Groupe"
 msgid "Groups and child groups"
 msgstr ""
 
-#: aleksis/core/menus.py:204 aleksis/core/models.py:537
+#: aleksis/core/menus.py:204 aleksis/core/models.py:542
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 msgid "Additional fields"
@@ -479,619 +489,623 @@ msgstr ""
 msgid "Linked school term"
 msgstr ""
 
-#: aleksis/core/models.py:77
+#: aleksis/core/models.py:82
 msgid "Boolean (Yes/No)"
 msgstr ""
 
-#: aleksis/core/models.py:78
+#: aleksis/core/models.py:83
 msgid "Text (one line)"
 msgstr ""
 
-#: aleksis/core/models.py:80
+#: aleksis/core/models.py:85
 msgid "Date and time"
 msgstr ""
 
-#: aleksis/core/models.py:81
+#: aleksis/core/models.py:86
 msgid "Decimal number"
 msgstr ""
 
-#: aleksis/core/models.py:82 aleksis/core/models.py:205
+#: aleksis/core/models.py:87 aleksis/core/models.py:210
 msgid "E-mail address"
 msgstr ""
 
-#: aleksis/core/models.py:83
+#: aleksis/core/models.py:88
 msgid "Integer"
 msgstr ""
 
-#: aleksis/core/models.py:84
+#: aleksis/core/models.py:89
 msgid "IP address"
 msgstr ""
 
-#: aleksis/core/models.py:85
+#: aleksis/core/models.py:90
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr ""
 
-#: aleksis/core/models.py:86
+#: aleksis/core/models.py:91
 msgid "Text (multi-line)"
 msgstr ""
 
-#: aleksis/core/models.py:88
+#: aleksis/core/models.py:93
 msgid "URL / Link"
 msgstr ""
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:1070
-#: aleksis/core/models.py:1374
+#: aleksis/core/models.py:105 aleksis/core/models.py:1077
+#: aleksis/core/models.py:1384
 msgid "Name"
 msgstr ""
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:107
 #, fuzzy
 #| msgid "Contact details"
 msgid "Start date"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:108
 msgid "End date"
 msgstr ""
 
-#: aleksis/core/models.py:122
+#: aleksis/core/models.py:127
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: aleksis/core/models.py:129
+#: aleksis/core/models.py:134
 msgid "There is already a school term for this time or a part of this time."
 msgstr ""
 
-#: aleksis/core/models.py:158 aleksis/core/models.py:1019
-#: aleksis/core/models.py:1371
+#: aleksis/core/models.py:163 aleksis/core/models.py:1024
+#: aleksis/core/models.py:1381
 msgid "Person"
 msgstr "Personne"
 
-#: aleksis/core/models.py:161
+#: aleksis/core/models.py:166
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view address"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:162
+#: aleksis/core/models.py:167
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view contact details"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:163
+#: aleksis/core/models.py:168
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view photo"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:164
+#: aleksis/core/models.py:169
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view avatar image"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:165
+#: aleksis/core/models.py:170
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view persons groups"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:166
+#: aleksis/core/models.py:171
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view personal details"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "female"
 msgstr ""
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "male"
 msgstr ""
 
-#: aleksis/core/models.py:184 aleksis/core/models.py:1273
+#: aleksis/core/models.py:181
+msgid "other"
+msgstr ""
+
+#: aleksis/core/models.py:189 aleksis/core/models.py:1283
 msgid "Linked user"
 msgstr ""
 
-#: aleksis/core/models.py:190
+#: aleksis/core/models.py:195
 msgid "Additional name(s)"
 msgstr ""
 
-#: aleksis/core/models.py:194 aleksis/core/models.py:506
+#: aleksis/core/models.py:199 aleksis/core/models.py:511
 #, fuzzy
 #| msgid "First name"
 msgid "Short name"
 msgstr "Prénom"
 
-#: aleksis/core/models.py:197
+#: aleksis/core/models.py:202
 msgid "Street"
 msgstr ""
 
-#: aleksis/core/models.py:198
+#: aleksis/core/models.py:203
 msgid "Street number"
 msgstr ""
 
-#: aleksis/core/models.py:199
+#: aleksis/core/models.py:204
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/core/models.py:200
+#: aleksis/core/models.py:205
 msgid "Place"
 msgstr ""
 
-#: aleksis/core/models.py:202 aleksis/core/templates/core/person/full.html:160
+#: aleksis/core/models.py:207 aleksis/core/templates/core/person/full.html:160
 msgid "Home phone"
 msgstr ""
 
-#: aleksis/core/models.py:203 aleksis/core/templates/core/person/full.html:170
+#: aleksis/core/models.py:208 aleksis/core/templates/core/person/full.html:170
 msgid "Mobile phone"
 msgstr ""
 
-#: aleksis/core/models.py:207
+#: aleksis/core/models.py:212
 msgid "Date of birth"
 msgstr "Date d'anniversaire"
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:213
 #, fuzzy
 #| msgid "Date of birth"
 msgid "Place of birth"
 msgstr "Date d'anniversaire"
 
-#: aleksis/core/models.py:209
+#: aleksis/core/models.py:214
 msgid "Sex"
 msgstr "Sexe"
 
-#: aleksis/core/models.py:216 aleksis/core/models.py:545
+#: aleksis/core/models.py:221 aleksis/core/models.py:550
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr ""
 
-#: aleksis/core/models.py:221 aleksis/core/models.py:549
+#: aleksis/core/models.py:226 aleksis/core/models.py:554
 msgid "Display picture / Avatar"
 msgstr ""
 
-#: aleksis/core/models.py:224 aleksis/core/models.py:552
+#: aleksis/core/models.py:229 aleksis/core/models.py:557
 msgid "This is a picture or an avatar for public display."
 msgstr ""
 
-#: aleksis/core/models.py:229 aleksis/core/templates/core/person/full.html:235
+#: aleksis/core/models.py:234 aleksis/core/templates/core/person/full.html:235
 msgid "Guardians / Parents"
 msgstr ""
 
-#: aleksis/core/models.py:236
+#: aleksis/core/models.py:241
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:719
-#: aleksis/core/models.py:743 aleksis/core/models.py:834
-#: aleksis/core/models.py:1094
+#: aleksis/core/models.py:244 aleksis/core/models.py:724
+#: aleksis/core/models.py:748 aleksis/core/models.py:839
+#: aleksis/core/models.py:1104
 msgid "Description"
 msgstr "Description"
 
-#: aleksis/core/models.py:459
+#: aleksis/core/models.py:464
 msgid "Title of field"
 msgstr ""
 
-#: aleksis/core/models.py:461
+#: aleksis/core/models.py:466
 msgid "Type of field"
 msgstr ""
 
-#: aleksis/core/models.py:463
+#: aleksis/core/models.py:468
 msgid "Required"
 msgstr ""
 
-#: aleksis/core/models.py:464
+#: aleksis/core/models.py:469
 #, fuzzy
 #| msgid "Description"
 msgid "Help text / description"
 msgstr "Description"
 
-#: aleksis/core/models.py:470
+#: aleksis/core/models.py:475
 msgid "Addtitional field for groups"
 msgstr ""
 
-#: aleksis/core/models.py:471
+#: aleksis/core/models.py:476
 msgid "Addtitional fields for groups"
 msgstr ""
 
-#: aleksis/core/models.py:491
+#: aleksis/core/models.py:496
 msgid "Can assign child groups to groups"
 msgstr ""
 
-#: aleksis/core/models.py:492
+#: aleksis/core/models.py:497
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view statistics about group."
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:504
+#: aleksis/core/models.py:509
 #, fuzzy
 #| msgid "Last name"
 msgid "Long name"
 msgstr "Nom de famille"
 
-#: aleksis/core/models.py:514 aleksis/core/templates/core/group/full.html:85
+#: aleksis/core/models.py:519 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr ""
 
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/full.html:82
+#: aleksis/core/models.py:522 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr "Propriétaires"
 
-#: aleksis/core/models.py:524 aleksis/core/templates/core/group/full.html:55
+#: aleksis/core/models.py:529 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr ""
 
-#: aleksis/core/models.py:532
+#: aleksis/core/models.py:537
 msgid "Type of group"
 msgstr ""
 
-#: aleksis/core/models.py:718 aleksis/core/models.py:742
-#: aleksis/core/models.py:833
+#: aleksis/core/models.py:723 aleksis/core/models.py:747
+#: aleksis/core/models.py:838
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr ""
 
-#: aleksis/core/models.py:721
+#: aleksis/core/models.py:726
 msgid "Application"
 msgstr ""
 
-#: aleksis/core/models.py:727
+#: aleksis/core/models.py:732
 msgid "Activity"
 msgstr ""
 
-#: aleksis/core/models.py:728
+#: aleksis/core/models.py:733
 msgid "Activities"
 msgstr ""
 
-#: aleksis/core/models.py:734
+#: aleksis/core/models.py:739
 msgid "Sender"
 msgstr ""
 
-#: aleksis/core/models.py:739
+#: aleksis/core/models.py:744
 msgid "Recipient"
 msgstr ""
 
-#: aleksis/core/models.py:744 aleksis/core/models.py:1071
+#: aleksis/core/models.py:749 aleksis/core/models.py:1078
 msgid "Link"
 msgstr ""
 
-#: aleksis/core/models.py:746
+#: aleksis/core/models.py:751
 msgid "Send notification at"
 msgstr ""
 
-#: aleksis/core/models.py:748
+#: aleksis/core/models.py:753
 msgid "Read"
 msgstr ""
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:754
 msgid "Sent"
 msgstr ""
 
-#: aleksis/core/models.py:766
+#: aleksis/core/models.py:771
 msgid "Notification"
 msgstr ""
 
-#: aleksis/core/models.py:767 aleksis/core/preferences.py:29
+#: aleksis/core/models.py:772 aleksis/core/preferences.py:29
 #: aleksis/core/templates/core/base.html:81
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr ""
 
-#: aleksis/core/models.py:835
+#: aleksis/core/models.py:840
 msgid "Link to detailed view"
 msgstr ""
 
-#: aleksis/core/models.py:838
+#: aleksis/core/models.py:843
 msgid "Date and time from when to show"
 msgstr ""
 
-#: aleksis/core/models.py:841
+#: aleksis/core/models.py:846
 msgid "Date and time until when to show"
 msgstr ""
 
-#: aleksis/core/models.py:866
+#: aleksis/core/models.py:871
 msgid "Announcement"
 msgstr ""
 
-#: aleksis/core/models.py:904
+#: aleksis/core/models.py:909
 msgid "Announcement recipient"
 msgstr ""
 
-#: aleksis/core/models.py:905
+#: aleksis/core/models.py:910
 msgid "Announcement recipients"
 msgstr ""
 
-#: aleksis/core/models.py:927
+#: aleksis/core/models.py:932
 msgid "Widget Title"
 msgstr ""
 
-#: aleksis/core/models.py:928
+#: aleksis/core/models.py:933
 msgid "Activate Widget"
 msgstr ""
 
-#: aleksis/core/models.py:929
+#: aleksis/core/models.py:934
 msgid "Widget is broken"
 msgstr ""
 
-#: aleksis/core/models.py:932
+#: aleksis/core/models.py:937
 msgid "Size on mobile devices"
 msgstr ""
 
-#: aleksis/core/models.py:933
+#: aleksis/core/models.py:938
 msgid "<= 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:938
+#: aleksis/core/models.py:943
 msgid "Size on tablet devices"
 msgstr ""
 
-#: aleksis/core/models.py:939
+#: aleksis/core/models.py:944
 msgid "> 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:944
+#: aleksis/core/models.py:949
 msgid "Size on desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:945
+#: aleksis/core/models.py:950
 msgid "> 992 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:950
+#: aleksis/core/models.py:955
 msgid "Size on large desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:951
+#: aleksis/core/models.py:956
 msgid "> 1200 px>, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:982
+#: aleksis/core/models.py:987
 msgid "Can edit default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:983
+#: aleksis/core/models.py:988
 msgid "Dashboard Widget"
 msgstr ""
 
-#: aleksis/core/models.py:984
+#: aleksis/core/models.py:989
 msgid "Dashboard Widgets"
 msgstr ""
 
-#: aleksis/core/models.py:990
+#: aleksis/core/models.py:995
 msgid "URL"
 msgstr ""
 
-#: aleksis/core/models.py:991
+#: aleksis/core/models.py:996
 msgid "Icon URL"
 msgstr ""
 
-#: aleksis/core/models.py:997
+#: aleksis/core/models.py:1002
 msgid "External link widget"
 msgstr ""
 
-#: aleksis/core/models.py:998
+#: aleksis/core/models.py:1003
 msgid "External link widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1004
+#: aleksis/core/models.py:1009
 msgid "Content"
 msgstr ""
 
-#: aleksis/core/models.py:1010
+#: aleksis/core/models.py:1015
 msgid "Static content widget"
 msgstr ""
 
-#: aleksis/core/models.py:1011
+#: aleksis/core/models.py:1016
 msgid "Static content widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1016
+#: aleksis/core/models.py:1021
 msgid "Dashboard widget"
 msgstr ""
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:1026
 msgid "Order"
 msgstr ""
 
-#: aleksis/core/models.py:1022
+#: aleksis/core/models.py:1027
 msgid "Part of the default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1037
+#: aleksis/core/models.py:1042
 msgid "Dashboard widget order"
 msgstr ""
 
-#: aleksis/core/models.py:1038
+#: aleksis/core/models.py:1043
 msgid "Dashboard widget orders"
 msgstr ""
 
-#: aleksis/core/models.py:1044
+#: aleksis/core/models.py:1049
 msgid "Menu ID"
 msgstr ""
 
-#: aleksis/core/models.py:1057
+#: aleksis/core/models.py:1062
 msgid "Custom menu"
 msgstr ""
 
-#: aleksis/core/models.py:1058
+#: aleksis/core/models.py:1063
 msgid "Custom menus"
 msgstr ""
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:1075
 msgid "Menu"
 msgstr ""
 
-#: aleksis/core/models.py:1072 aleksis/core/models.py:1320
+#: aleksis/core/models.py:1079 aleksis/core/models.py:1330
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr ""
 
-#: aleksis/core/models.py:1078
+#: aleksis/core/models.py:1085
 msgid "Custom menu item"
 msgstr ""
 
-#: aleksis/core/models.py:1079
+#: aleksis/core/models.py:1086
 msgid "Custom menu items"
 msgstr ""
 
-#: aleksis/core/models.py:1093
+#: aleksis/core/models.py:1103
 msgid "Title of type"
 msgstr ""
 
-#: aleksis/core/models.py:1100 aleksis/core/templates/core/group/full.html:47
+#: aleksis/core/models.py:1110 aleksis/core/templates/core/group/full.html:50
 #, fuzzy
 #| msgid "Group"
 msgid "Group type"
 msgstr "Groupe"
 
-#: aleksis/core/models.py:1114
+#: aleksis/core/models.py:1124
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can view system status"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1115
+#: aleksis/core/models.py:1125
 msgid "Can manage data"
 msgstr ""
 
-#: aleksis/core/models.py:1116
+#: aleksis/core/models.py:1126
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can impersonate"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1117
+#: aleksis/core/models.py:1127
 msgid "Can use search"
 msgstr ""
 
-#: aleksis/core/models.py:1118
+#: aleksis/core/models.py:1128
 msgid "Can change site preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1119
+#: aleksis/core/models.py:1129
 msgid "Can change person preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1120
+#: aleksis/core/models.py:1130
 msgid "Can change group preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1121
+#: aleksis/core/models.py:1131
 msgid "Can test PDF generation"
 msgstr ""
 
-#: aleksis/core/models.py:1122
+#: aleksis/core/models.py:1132
 #, fuzzy
 #| msgid "Contact details"
 msgid "Can invite persons"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1168
 msgid "Related data check task"
 msgstr ""
 
-#: aleksis/core/models.py:1166
+#: aleksis/core/models.py:1176
 msgid "Issue solved"
 msgstr ""
 
-#: aleksis/core/models.py:1167
+#: aleksis/core/models.py:1177
 msgid "Notification sent"
 msgstr ""
 
-#: aleksis/core/models.py:1180
+#: aleksis/core/models.py:1190
 msgid "Data check result"
 msgstr ""
 
-#: aleksis/core/models.py:1181
+#: aleksis/core/models.py:1191
 msgid "Data check results"
 msgstr ""
 
-#: aleksis/core/models.py:1183
+#: aleksis/core/models.py:1193
 msgid "Can run data checks"
 msgstr ""
 
-#: aleksis/core/models.py:1184
+#: aleksis/core/models.py:1194
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1191
+#: aleksis/core/models.py:1201
 #, fuzzy
 #| msgid "Contact details"
 msgid "E-Mail address"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1223
+#: aleksis/core/models.py:1233
 #, fuzzy
 #| msgid "Owners"
 msgid "Owner"
 msgstr "Propriétaires"
 
-#: aleksis/core/models.py:1227
+#: aleksis/core/models.py:1237
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1229
+#: aleksis/core/models.py:1239
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1231
+#: aleksis/core/models.py:1241
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1238
+#: aleksis/core/models.py:1248
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1239
+#: aleksis/core/models.py:1249
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1244
+#: aleksis/core/models.py:1254
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1247
+#: aleksis/core/models.py:1257
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1259
+#: aleksis/core/models.py:1269
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1260
+#: aleksis/core/models.py:1270
 msgid "Task user assignments"
 msgstr ""
 
-#: aleksis/core/models.py:1276
+#: aleksis/core/models.py:1286
 #, fuzzy
 #| msgid "Contact details"
 msgid "Additional attributes"
 msgstr "Détails de contact"
 
-#: aleksis/core/models.py:1314
+#: aleksis/core/models.py:1324
 msgid "Allowed scopes that clients can request"
 msgstr ""
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1334
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr ""
 
-#: aleksis/core/models.py:1373
+#: aleksis/core/models.py:1383
 msgid "UUID"
 msgstr ""
 
-#: aleksis/core/models.py:1377
+#: aleksis/core/models.py:1387
 msgid "Selected ICal feed"
 msgstr ""
 
-#: aleksis/core/models.py:1386
+#: aleksis/core/models.py:1396
 msgid "Personal Calendar URL"
 msgstr ""
 
-#: aleksis/core/models.py:1387
+#: aleksis/core/models.py:1397
 msgid "Personal Calendar URLs"
 msgstr ""
 
@@ -1247,94 +1261,94 @@ msgstr ""
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr "Détails de contact"
 
-#: aleksis/core/preferences.py:344
-msgid "Available languages"
-msgstr ""
-
-#: aleksis/core/preferences.py:357
+#: aleksis/core/preferences.py:343
 msgid "Send emails if data checks detect problems"
 msgstr ""
 
-#: aleksis/core/preferences.py:368
+#: aleksis/core/preferences.py:354
 msgid "Email recipients for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:379
+#: aleksis/core/preferences.py:365
 msgid "Email recipient groups for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:388
+#: aleksis/core/preferences.py:374
 msgid "Show dashboard to users without login"
 msgstr ""
 
-#: aleksis/core/preferences.py:397
+#: aleksis/core/preferences.py:383
 msgid "Allow users to edit their dashboard"
 msgstr ""
 
-#: aleksis/core/preferences.py:408
+#: aleksis/core/preferences.py:394
 msgid "Fields on person model which are editable by themselves."
 msgstr ""
 
-#: aleksis/core/preferences.py:423
+#: aleksis/core/preferences.py:409
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr ""
 
-#: aleksis/core/preferences.py:437
+#: aleksis/core/preferences.py:423
 msgid "Contact for notification if a person changes their data"
 msgstr ""
 
-#: aleksis/core/preferences.py:448
+#: aleksis/core/preferences.py:434
 msgid "Prefer personal photos over avatars"
 msgstr ""
 
-#: aleksis/core/preferences.py:458
+#: aleksis/core/preferences.py:444
 msgid "PDF file expiration duration"
 msgstr ""
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:445
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/preferences.py:469
+#: aleksis/core/preferences.py:455
 msgid "Automatically update the dashboard and its widgets"
 msgstr ""
 
-#: aleksis/core/preferences.py:479
+#: aleksis/core/preferences.py:465
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr ""
 
-#: aleksis/core/preferences.py:489
+#: aleksis/core/preferences.py:475
 msgid "Country for phone number parsing"
 msgstr ""
 
-#: aleksis/core/settings.py:540
+#: aleksis/core/settings.py:541
 msgid "English"
 msgstr ""
 
-#: aleksis/core/settings.py:541
+#: aleksis/core/settings.py:542
 msgid "German"
 msgstr ""
 
-#: aleksis/core/tables.py:24
+#: aleksis/core/settings.py:543
+msgid "Ukrainian"
+msgstr ""
+
+#: aleksis/core/tables.py:25
 #: aleksis/core/templates/core/announcement/list.html:36
-#: aleksis/core/templates/core/group/full.html:24
+#: aleksis/core/templates/core/group/full.html:26
 #: aleksis/core/templates/core/person/full.html:26
 #: aleksis/core/templates/core/person/full.html:86
 #: aleksis/core/templates/oauth2_provider/application/detail.html:17
 msgid "Edit"
 msgstr ""
 
-#: aleksis/core/tables.py:26 aleksis/core/tables.py:94
-#: aleksis/core/tables.py:138
+#: aleksis/core/tables.py:27 aleksis/core/tables.py:148
+#: aleksis/core/tables.py:192
 #: aleksis/core/templates/core/announcement/list.html:22
 msgid "Actions"
 msgstr ""
 
-#: aleksis/core/tables.py:61 aleksis/core/tables.py:62
-#: aleksis/core/tables.py:76 aleksis/core/tables.py:92
-#: aleksis/core/tables.py:136
+#: aleksis/core/tables.py:115 aleksis/core/tables.py:116
+#: aleksis/core/tables.py:130 aleksis/core/tables.py:146
+#: aleksis/core/tables.py:190
 #: aleksis/core/templates/core/announcement/list.html:42
-#: aleksis/core/templates/core/group/full.html:31
+#: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
 #: aleksis/core/templates/core/person/full.html:33
 #: aleksis/core/templates/core/person/full.html:93
@@ -1373,7 +1387,7 @@ msgstr ""
 #: aleksis/core/templates/500.html:10
 msgid ""
 "An unexpected error has\n"
-"          occured."
+"          occurred."
 msgstr ""
 
 #: aleksis/core/templates/500.html:13
@@ -1879,34 +1893,34 @@ msgstr ""
 msgid "Edit group"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:38
+#: aleksis/core/templates/core/group/full.html:40
 #: aleksis/core/templates/core/person/full.html:40
 #: aleksis/core/templates/core/person/full.html:100
 msgid "Change preferences"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:64
+#: aleksis/core/templates/core/group/full.html:68
 msgid "Statistics"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:67
+#: aleksis/core/templates/core/group/full.html:73
 msgid "Count of members"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:71
+#: aleksis/core/templates/core/group/full.html:81
 msgid "Average age"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
+#: aleksis/core/templates/core/group/full.html:90
 msgid "Age range"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years to"
-msgstr ""
-
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years "
+#: aleksis/core/templates/core/group/full.html:93
+#, python-format
+msgid ""
+"\n"
+"              %(min)s years to %(max)s years\n"
+"            "
 msgstr ""
 
 #: aleksis/core/templates/core/group/list.html:14
@@ -1962,7 +1976,7 @@ msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:4
 #: aleksis/core/templates/core/ical/ical_list.html:5
-msgid "ICal Feeds"
+msgid "iCal Feeds"
 msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:8
@@ -2248,11 +2262,11 @@ msgstr ""
 msgid "Unknown"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:15
+#: aleksis/core/templates/core/partials/language_form.html:17
 msgid "Language"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:27
+#: aleksis/core/templates/core/partials/language_form.html:29
 msgid "Select language"
 msgstr ""
 
@@ -3194,172 +3208,172 @@ msgstr ""
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:292
+#: aleksis/core/views.py:294
 msgid "The school term has been created."
 msgstr ""
 
-#: aleksis/core/views.py:304
+#: aleksis/core/views.py:306
 msgid "The school term has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:424
+#: aleksis/core/views.py:426
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:443 aleksis/core/views.py:453
+#: aleksis/core/views.py:445 aleksis/core/views.py:455
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:503
+#: aleksis/core/views.py:505
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:600
+#: aleksis/core/views.py:602
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:616
+#: aleksis/core/views.py:618
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:684
+#: aleksis/core/views.py:686
 msgid "The requested preference registry does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:705
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:729
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:743
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:773
-msgid "The additional_field has been saved."
+#: aleksis/core/views.py:775
+msgid "The additional field has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:809
 msgid "The additional field has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:834
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:864
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:897
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:898
 msgid "Run data checks …"
 msgstr ""
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:899
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:900
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:916
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:924
+#: aleksis/core/views.py:926
 msgid "The requested solve option does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:958
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:988
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:998
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1067
+#: aleksis/core/views.py:1069
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1069
+#: aleksis/core/views.py:1071
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1145
+#: aleksis/core/views.py:1147
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr ""
 
-#: aleksis/core/views.py:1236
+#: aleksis/core/views.py:1238
 msgid "We have successfully assigned the permissions."
 msgstr ""
 
-#: aleksis/core/views.py:1246
+#: aleksis/core/views.py:1248
 msgid "The global user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1256
+#: aleksis/core/views.py:1258
 msgid "The global group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1266
+#: aleksis/core/views.py:1268
 msgid "The object user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1276
+#: aleksis/core/views.py:1278
 msgid "The object group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1344
+#: aleksis/core/views.py:1346
 msgid "The requested PDF file does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:1353 aleksis/core/views.py:1357
+#: aleksis/core/views.py:1355 aleksis/core/views.py:1359
 msgid "The requested task does not exist or is not accessible"
 msgstr ""
 
-#: aleksis/core/views.py:1409
+#: aleksis/core/views.py:1411
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1416
+#: aleksis/core/views.py:1418
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
-#: aleksis/core/views.py:1487
+#: aleksis/core/views.py:1489
 msgid "Person was invited successfully and an email with further instructions has been send to them."
 msgstr ""
 
-#: aleksis/core/views.py:1498
+#: aleksis/core/views.py:1500
 #, fuzzy
 #| msgid "This username is already in use."
 msgid "Person was already invited."
 msgstr "Cet nom est deja en utilisation."
 
-#: aleksis/core/views.py:1598
-msgid "ICal feed updated successfully"
+#: aleksis/core/views.py:1600
+msgid "iCal feed updated successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1608
-msgid "ICal feed deleted successfully"
+#: aleksis/core/views.py:1610
+msgid "iCal feed deleted successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1616
-msgid "ICal feed created successfully"
+#: aleksis/core/views.py:1618
+msgid "iCal feed created successfully"
 msgstr ""
 
 #, fuzzy
diff --git a/aleksis/core/locale/fr/LC_MESSAGES/djangojs.po b/aleksis/core/locale/fr/LC_MESSAGES/djangojs.po
index 8b09ccccb99d662228f56e974bfc374c48e225fa..8b1f39f46181c3eb157a2316413bca33ad16015a 100644
--- a/aleksis/core/locale/fr/LC_MESSAGES/djangojs.po
+++ b/aleksis/core/locale/fr/LC_MESSAGES/djangojs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/aleksis/core/locale/la/LC_MESSAGES/django.po b/aleksis/core/locale/la/LC_MESSAGES/django.po
index 2d18ad75e75b9e8c18abb297f12c14b2ba21088d..b75d5e04731de1445f993badba1509a713f9e474 100644
--- a/aleksis/core/locale/la/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/la/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: 2020-12-19 12:57+0000\n"
 "Last-Translator: Julian <leuckerj@gmail.com>\n"
 "Language-Team: Latin <https://translate.edugit.org/projects/aleksis/aleksis/la/>\n"
@@ -45,35 +45,45 @@ msgid "Home and mobile phone"
 msgstr "Numerus telephoni mobilis"
 
 #: aleksis/core/apps.py:171 aleksis/core/forms.py:220 aleksis/core/menus.py:171
-#: aleksis/core/models.py:489 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/models.py:494 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:246
 msgid "Groups"
 msgstr "Greges"
 
-#: aleksis/core/data_checks.py:56
+#: aleksis/core/data_checks.py:59
 msgid "Ignore problem"
 msgstr ""
 
-#: aleksis/core/data_checks.py:185
+#: aleksis/core/data_checks.py:188
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/data_checks.py:291
+#: aleksis/core/data_checks.py:294
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Deactivate DashboardWidget"
 msgstr "Forum"
 
-#: aleksis/core/data_checks.py:303
+#: aleksis/core/data_checks.py:306
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr ""
 
-#: aleksis/core/data_checks.py:304
+#: aleksis/core/data_checks.py:307
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
+#: aleksis/core/data_checks.py:330
+#, python-format
+msgid "Validate field %s of model %s."
+msgstr ""
+
+#: aleksis/core/data_checks.py:332
+#, python-format
+msgid "The field %s couldn't be validated successfully."
+msgstr ""
+
 #: aleksis/core/feeds.py:52
 msgid "Birthday Calendar"
 msgstr ""
@@ -119,11 +129,11 @@ msgstr ""
 msgid "Content type"
 msgstr ""
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:715
+#: aleksis/core/filters.py:113 aleksis/core/models.py:720
 msgid "User"
 msgstr ""
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:488
+#: aleksis/core/filters.py:135 aleksis/core/models.py:493
 msgid "Group"
 msgstr "Grex"
 
@@ -131,7 +141,7 @@ msgstr "Grex"
 msgid "Base data"
 msgstr ""
 
-#: aleksis/core/forms.py:55
+#: aleksis/core/forms.py:55 aleksis/core/tables.py:47
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Address"
@@ -163,7 +173,7 @@ msgstr ""
 msgid "This username is already in use."
 msgstr ""
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:136
+#: aleksis/core/forms.py:153 aleksis/core/models.py:141
 msgid "School term"
 msgstr "Anus scolae"
 
@@ -174,7 +184,7 @@ msgid "Common data"
 msgstr "Adminstratio datarum"
 
 #: aleksis/core/forms.py:155 aleksis/core/forms.py:207
-#: aleksis/core/menus.py:160 aleksis/core/models.py:159
+#: aleksis/core/menus.py:160 aleksis/core/models.py:164
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
@@ -186,18 +196,18 @@ msgstr "personae"
 msgid "Additional data"
 msgstr "addita nomines"
 
-#: aleksis/core/forms.py:157 aleksis/core/models.py:212
-#: aleksis/core/models.py:541
+#: aleksis/core/forms.py:157 aleksis/core/models.py:217
+#: aleksis/core/models.py:546 aleksis/core/tables.py:46
 msgid "Photo"
 msgstr "Photographia"
 
 #: aleksis/core/forms.py:199 aleksis/core/forms.py:202
-#: aleksis/core/models.py:79
+#: aleksis/core/models.py:84
 msgid "Date"
 msgstr "dies"
 
 #: aleksis/core/forms.py:200 aleksis/core/forms.py:203
-#: aleksis/core/models.py:87
+#: aleksis/core/models.py:92
 msgid "Time"
 msgstr "tempus"
 
@@ -233,11 +243,11 @@ msgstr ""
 msgid "Please enter your invitation code."
 msgstr ""
 
-#: aleksis/core/forms.py:418 aleksis/core/models.py:187
+#: aleksis/core/forms.py:418 aleksis/core/models.py:192
 msgid "First name"
 msgstr "Primus nomen"
 
-#: aleksis/core/forms.py:419 aleksis/core/models.py:188
+#: aleksis/core/forms.py:419 aleksis/core/models.py:193
 msgid "Last name"
 msgstr "Secondus nomen"
 
@@ -352,13 +362,13 @@ msgstr "Forum"
 msgid "Admin"
 msgstr "Administratio"
 
-#: aleksis/core/menus.py:47 aleksis/core/models.py:867
+#: aleksis/core/menus.py:47 aleksis/core/models.py:872
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr "Nuntii"
 
-#: aleksis/core/menus.py:58 aleksis/core/models.py:137
+#: aleksis/core/menus.py:58 aleksis/core/models.py:142
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
@@ -418,7 +428,7 @@ msgstr "Nuntii"
 msgid "People"
 msgstr "Personae"
 
-#: aleksis/core/menus.py:182 aleksis/core/models.py:1101
+#: aleksis/core/menus.py:182 aleksis/core/models.py:1111
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 #, fuzzy
@@ -430,7 +440,7 @@ msgstr "Greges"
 msgid "Groups and child groups"
 msgstr ""
 
-#: aleksis/core/menus.py:204 aleksis/core/models.py:537
+#: aleksis/core/menus.py:204 aleksis/core/models.py:542
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 #, fuzzy
@@ -507,651 +517,655 @@ msgstr "nomen retractare"
 msgid "Linked school term"
 msgstr "Muta anum scolae"
 
-#: aleksis/core/models.py:77
+#: aleksis/core/models.py:82
 msgid "Boolean (Yes/No)"
 msgstr ""
 
-#: aleksis/core/models.py:78
+#: aleksis/core/models.py:83
 msgid "Text (one line)"
 msgstr ""
 
-#: aleksis/core/models.py:80
+#: aleksis/core/models.py:85
 msgid "Date and time"
 msgstr "Dies et hora"
 
-#: aleksis/core/models.py:81
+#: aleksis/core/models.py:86
 msgid "Decimal number"
 msgstr ""
 
-#: aleksis/core/models.py:82 aleksis/core/models.py:205
+#: aleksis/core/models.py:87 aleksis/core/models.py:210
 msgid "E-mail address"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:83
+#: aleksis/core/models.py:88
 msgid "Integer"
 msgstr ""
 
-#: aleksis/core/models.py:84
+#: aleksis/core/models.py:89
 #, fuzzy
 #| msgid "E-mail address"
 msgid "IP address"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:85
+#: aleksis/core/models.py:90
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr ""
 
-#: aleksis/core/models.py:86
+#: aleksis/core/models.py:91
 msgid "Text (multi-line)"
 msgstr ""
 
-#: aleksis/core/models.py:88
+#: aleksis/core/models.py:93
 msgid "URL / Link"
 msgstr ""
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:1070
-#: aleksis/core/models.py:1374
+#: aleksis/core/models.py:105 aleksis/core/models.py:1077
+#: aleksis/core/models.py:1384
 msgid "Name"
 msgstr "Nomen"
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:107
 msgid "Start date"
 msgstr ""
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:108
 msgid "End date"
 msgstr ""
 
-#: aleksis/core/models.py:122
+#: aleksis/core/models.py:127
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: aleksis/core/models.py:129
+#: aleksis/core/models.py:134
 msgid "There is already a school term for this time or a part of this time."
 msgstr ""
 
-#: aleksis/core/models.py:158 aleksis/core/models.py:1019
-#: aleksis/core/models.py:1371
+#: aleksis/core/models.py:163 aleksis/core/models.py:1024
+#: aleksis/core/models.py:1381
 msgid "Person"
 msgstr "Persona"
 
-#: aleksis/core/models.py:161
+#: aleksis/core/models.py:166
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Can view address"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:162
+#: aleksis/core/models.py:167
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Can view contact details"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:163
+#: aleksis/core/models.py:168
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Can view photo"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:164
+#: aleksis/core/models.py:169
 #, fuzzy
 #| msgid "E-mail address"
 msgid "Can view avatar image"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:165
+#: aleksis/core/models.py:170
 #, fuzzy
 #| msgid "Persons and accounts"
 msgid "Can view persons groups"
 msgstr "Personae et computi"
 
-#: aleksis/core/models.py:166
+#: aleksis/core/models.py:171
 #, fuzzy
 #| msgid "Stop impersonation"
 msgid "Can view personal details"
 msgstr "Simulandum aliquem finire"
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "female"
 msgstr "femininum"
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "male"
 msgstr "maskulinum"
 
-#: aleksis/core/models.py:184 aleksis/core/models.py:1273
+#: aleksis/core/models.py:181
+msgid "other"
+msgstr ""
+
+#: aleksis/core/models.py:189 aleksis/core/models.py:1283
 msgid "Linked user"
 msgstr ""
 
-#: aleksis/core/models.py:190
+#: aleksis/core/models.py:195
 msgid "Additional name(s)"
 msgstr "addita nomines"
 
-#: aleksis/core/models.py:194 aleksis/core/models.py:506
+#: aleksis/core/models.py:199 aleksis/core/models.py:511
 msgid "Short name"
 msgstr "Breve nomen"
 
-#: aleksis/core/models.py:197
+#: aleksis/core/models.py:202
 msgid "Street"
 msgstr "Via"
 
-#: aleksis/core/models.py:198
+#: aleksis/core/models.py:203
 msgid "Street number"
 msgstr "Numerus domini"
 
-#: aleksis/core/models.py:199
+#: aleksis/core/models.py:204
 msgid "Postal code"
 msgstr "Numerus directorius"
 
-#: aleksis/core/models.py:200
+#: aleksis/core/models.py:205
 msgid "Place"
 msgstr "Urbs"
 
-#: aleksis/core/models.py:202 aleksis/core/templates/core/person/full.html:160
+#: aleksis/core/models.py:207 aleksis/core/templates/core/person/full.html:160
 msgid "Home phone"
 msgstr "Numerus telephoni domi"
 
-#: aleksis/core/models.py:203 aleksis/core/templates/core/person/full.html:170
+#: aleksis/core/models.py:208 aleksis/core/templates/core/person/full.html:170
 msgid "Mobile phone"
 msgstr "Numerus telephoni mobilis"
 
-#: aleksis/core/models.py:207
+#: aleksis/core/models.py:212
 msgid "Date of birth"
 msgstr "Dies natalis"
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:213
 #, fuzzy
 #| msgid "Date of birth"
 msgid "Place of birth"
 msgstr "Dies natalis"
 
-#: aleksis/core/models.py:209
+#: aleksis/core/models.py:214
 msgid "Sex"
 msgstr "Genus"
 
-#: aleksis/core/models.py:216 aleksis/core/models.py:545
+#: aleksis/core/models.py:221 aleksis/core/models.py:550
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr ""
 
-#: aleksis/core/models.py:221 aleksis/core/models.py:549
+#: aleksis/core/models.py:226 aleksis/core/models.py:554
 msgid "Display picture / Avatar"
 msgstr ""
 
-#: aleksis/core/models.py:224 aleksis/core/models.py:552
+#: aleksis/core/models.py:229 aleksis/core/models.py:557
 msgid "This is a picture or an avatar for public display."
 msgstr ""
 
-#: aleksis/core/models.py:229 aleksis/core/templates/core/person/full.html:235
+#: aleksis/core/models.py:234 aleksis/core/templates/core/person/full.html:235
 msgid "Guardians / Parents"
 msgstr "Parentes"
 
-#: aleksis/core/models.py:236
+#: aleksis/core/models.py:241
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:719
-#: aleksis/core/models.py:743 aleksis/core/models.py:834
-#: aleksis/core/models.py:1094
+#: aleksis/core/models.py:244 aleksis/core/models.py:724
+#: aleksis/core/models.py:748 aleksis/core/models.py:839
+#: aleksis/core/models.py:1104
 msgid "Description"
 msgstr "Descriptio"
 
-#: aleksis/core/models.py:459
+#: aleksis/core/models.py:464
 msgid "Title of field"
 msgstr ""
 
-#: aleksis/core/models.py:461
+#: aleksis/core/models.py:466
 msgid "Type of field"
 msgstr ""
 
-#: aleksis/core/models.py:463
+#: aleksis/core/models.py:468
 msgid "Required"
 msgstr ""
 
-#: aleksis/core/models.py:464
+#: aleksis/core/models.py:469
 #, fuzzy
 #| msgid "Site description"
 msgid "Help text / description"
 msgstr "Descriptio paginae"
 
-#: aleksis/core/models.py:470
+#: aleksis/core/models.py:475
 #, fuzzy
 #| msgid "Additional name(s)"
 msgid "Addtitional field for groups"
 msgstr "addita nomines"
 
-#: aleksis/core/models.py:471
+#: aleksis/core/models.py:476
 #, fuzzy
 #| msgid "Additional name(s)"
 msgid "Addtitional fields for groups"
 msgstr "addita nomines"
 
-#: aleksis/core/models.py:491
+#: aleksis/core/models.py:496
 msgid "Can assign child groups to groups"
 msgstr ""
 
-#: aleksis/core/models.py:492
+#: aleksis/core/models.py:497
 #, fuzzy
 #| msgid "Persons and accounts"
 msgid "Can view statistics about group."
 msgstr "Personae et computi"
 
-#: aleksis/core/models.py:504
+#: aleksis/core/models.py:509
 #, fuzzy
 #| msgid "Last name"
 msgid "Long name"
 msgstr "Secondus nomen"
 
-#: aleksis/core/models.py:514 aleksis/core/templates/core/group/full.html:85
+#: aleksis/core/models.py:519 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr ""
 
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/full.html:82
+#: aleksis/core/models.py:522 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr ""
 
-#: aleksis/core/models.py:524 aleksis/core/templates/core/group/full.html:55
+#: aleksis/core/models.py:529 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr ""
 
-#: aleksis/core/models.py:532
+#: aleksis/core/models.py:537
 msgid "Type of group"
 msgstr ""
 
-#: aleksis/core/models.py:718 aleksis/core/models.py:742
-#: aleksis/core/models.py:833
+#: aleksis/core/models.py:723 aleksis/core/models.py:747
+#: aleksis/core/models.py:838
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr "Titulus"
 
-#: aleksis/core/models.py:721
+#: aleksis/core/models.py:726
 msgid "Application"
 msgstr ""
 
-#: aleksis/core/models.py:727
+#: aleksis/core/models.py:732
 msgid "Activity"
 msgstr ""
 
-#: aleksis/core/models.py:728
+#: aleksis/core/models.py:733
 msgid "Activities"
 msgstr ""
 
-#: aleksis/core/models.py:734
+#: aleksis/core/models.py:739
 msgid "Sender"
 msgstr "Mittens"
 
-#: aleksis/core/models.py:739
+#: aleksis/core/models.py:744
 msgid "Recipient"
 msgstr ""
 
-#: aleksis/core/models.py:744 aleksis/core/models.py:1071
+#: aleksis/core/models.py:749 aleksis/core/models.py:1078
 msgid "Link"
 msgstr ""
 
-#: aleksis/core/models.py:746
+#: aleksis/core/models.py:751
 #, fuzzy
 #| msgid "Notification"
 msgid "Send notification at"
 msgstr "Nuntius"
 
-#: aleksis/core/models.py:748
+#: aleksis/core/models.py:753
 msgid "Read"
 msgstr ""
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:754
 msgid "Sent"
 msgstr ""
 
-#: aleksis/core/models.py:766
+#: aleksis/core/models.py:771
 #, fuzzy
 #| msgid "Notifications"
 msgid "Notification"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:767 aleksis/core/preferences.py:29
+#: aleksis/core/models.py:772 aleksis/core/preferences.py:29
 #: aleksis/core/templates/core/base.html:81
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:835
+#: aleksis/core/models.py:840
 msgid "Link to detailed view"
 msgstr ""
 
-#: aleksis/core/models.py:838
+#: aleksis/core/models.py:843
 msgid "Date and time from when to show"
 msgstr ""
 
-#: aleksis/core/models.py:841
+#: aleksis/core/models.py:846
 msgid "Date and time until when to show"
 msgstr ""
 
-#: aleksis/core/models.py:866
+#: aleksis/core/models.py:871
 #, fuzzy
 #| msgid "Announcements"
 msgid "Announcement"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:904
+#: aleksis/core/models.py:909
 #, fuzzy
 #| msgid "Announcements"
 msgid "Announcement recipient"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:905
+#: aleksis/core/models.py:910
 #, fuzzy
 #| msgid "Announcements"
 msgid "Announcement recipients"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:927
+#: aleksis/core/models.py:932
 #, fuzzy
 #| msgid "Site title"
 msgid "Widget Title"
 msgstr "Titulus paginae"
 
-#: aleksis/core/models.py:928
+#: aleksis/core/models.py:933
 msgid "Activate Widget"
 msgstr ""
 
-#: aleksis/core/models.py:929
+#: aleksis/core/models.py:934
 #, fuzzy
 #| msgid "Site title"
 msgid "Widget is broken"
 msgstr "Titulus paginae"
 
-#: aleksis/core/models.py:932
+#: aleksis/core/models.py:937
 msgid "Size on mobile devices"
 msgstr ""
 
-#: aleksis/core/models.py:933
+#: aleksis/core/models.py:938
 msgid "<= 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:938
+#: aleksis/core/models.py:943
 msgid "Size on tablet devices"
 msgstr ""
 
-#: aleksis/core/models.py:939
+#: aleksis/core/models.py:944
 msgid "> 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:944
+#: aleksis/core/models.py:949
 msgid "Size on desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:945
+#: aleksis/core/models.py:950
 msgid "> 992 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:950
+#: aleksis/core/models.py:955
 msgid "Size on large desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:951
+#: aleksis/core/models.py:956
 msgid "> 1200 px>, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:982
+#: aleksis/core/models.py:987
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Can edit default dashboard"
 msgstr "Forum"
 
-#: aleksis/core/models.py:983
+#: aleksis/core/models.py:988
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Dashboard Widget"
 msgstr "Forum"
 
-#: aleksis/core/models.py:984
+#: aleksis/core/models.py:989
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Dashboard Widgets"
 msgstr "Forum"
 
-#: aleksis/core/models.py:990
+#: aleksis/core/models.py:995
 msgid "URL"
 msgstr ""
 
-#: aleksis/core/models.py:991
+#: aleksis/core/models.py:996
 #, fuzzy
 #| msgid "Icon"
 msgid "Icon URL"
 msgstr "Nota"
 
-#: aleksis/core/models.py:997
+#: aleksis/core/models.py:1002
 msgid "External link widget"
 msgstr ""
 
-#: aleksis/core/models.py:998
+#: aleksis/core/models.py:1003
 msgid "External link widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1004
+#: aleksis/core/models.py:1009
 msgid "Content"
 msgstr ""
 
-#: aleksis/core/models.py:1010
+#: aleksis/core/models.py:1015
 msgid "Static content widget"
 msgstr ""
 
-#: aleksis/core/models.py:1011
+#: aleksis/core/models.py:1016
 msgid "Static content widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1016
+#: aleksis/core/models.py:1021
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Dashboard widget"
 msgstr "Forum"
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:1026
 msgid "Order"
 msgstr ""
 
-#: aleksis/core/models.py:1022
+#: aleksis/core/models.py:1027
 msgid "Part of the default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1037
+#: aleksis/core/models.py:1042
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Dashboard widget order"
 msgstr "Forum"
 
-#: aleksis/core/models.py:1038
+#: aleksis/core/models.py:1043
 #, fuzzy
 #| msgid "Dashboard"
 msgid "Dashboard widget orders"
 msgstr "Forum"
 
-#: aleksis/core/models.py:1044
+#: aleksis/core/models.py:1049
 msgid "Menu ID"
 msgstr ""
 
-#: aleksis/core/models.py:1057
+#: aleksis/core/models.py:1062
 msgid "Custom menu"
 msgstr ""
 
-#: aleksis/core/models.py:1058
+#: aleksis/core/models.py:1063
 msgid "Custom menus"
 msgstr ""
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:1075
 msgid "Menu"
 msgstr ""
 
-#: aleksis/core/models.py:1072 aleksis/core/models.py:1320
+#: aleksis/core/models.py:1079 aleksis/core/models.py:1330
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr "Nota"
 
-#: aleksis/core/models.py:1078
+#: aleksis/core/models.py:1085
 msgid "Custom menu item"
 msgstr ""
 
-#: aleksis/core/models.py:1079
+#: aleksis/core/models.py:1086
 msgid "Custom menu items"
 msgstr ""
 
-#: aleksis/core/models.py:1093
+#: aleksis/core/models.py:1103
 msgid "Title of type"
 msgstr ""
 
-#: aleksis/core/models.py:1100 aleksis/core/templates/core/group/full.html:47
+#: aleksis/core/models.py:1110 aleksis/core/templates/core/group/full.html:50
 #, fuzzy
 #| msgid "Group"
 msgid "Group type"
 msgstr "Grex"
 
-#: aleksis/core/models.py:1114
+#: aleksis/core/models.py:1124
 #, fuzzy
 #| msgid "System status"
 msgid "Can view system status"
 msgstr "Status systemae"
 
-#: aleksis/core/models.py:1115
+#: aleksis/core/models.py:1125
 #, fuzzy
 #| msgid "Data management"
 msgid "Can manage data"
 msgstr "Adminstratio datarum"
 
-#: aleksis/core/models.py:1116
+#: aleksis/core/models.py:1126
 #, fuzzy
 #| msgid "Stop impersonation"
 msgid "Can impersonate"
 msgstr "Simulandum aliquem finire"
 
-#: aleksis/core/models.py:1117
+#: aleksis/core/models.py:1127
 msgid "Can use search"
 msgstr ""
 
-#: aleksis/core/models.py:1118
+#: aleksis/core/models.py:1128
 msgid "Can change site preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1119
+#: aleksis/core/models.py:1129
 msgid "Can change person preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1120
+#: aleksis/core/models.py:1130
 msgid "Can change group preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1121
+#: aleksis/core/models.py:1131
 msgid "Can test PDF generation"
 msgstr ""
 
-#: aleksis/core/models.py:1122
+#: aleksis/core/models.py:1132
 #, fuzzy
 #| msgid "Stop impersonation"
 msgid "Can invite persons"
 msgstr "Simulandum aliquem finire"
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1168
 msgid "Related data check task"
 msgstr ""
 
-#: aleksis/core/models.py:1166
+#: aleksis/core/models.py:1176
 msgid "Issue solved"
 msgstr ""
 
-#: aleksis/core/models.py:1167
+#: aleksis/core/models.py:1177
 #, fuzzy
 #| msgid "Notifications"
 msgid "Notification sent"
 msgstr "Nuntii"
 
-#: aleksis/core/models.py:1180
+#: aleksis/core/models.py:1190
 msgid "Data check result"
 msgstr ""
 
-#: aleksis/core/models.py:1181
+#: aleksis/core/models.py:1191
 msgid "Data check results"
 msgstr ""
 
-#: aleksis/core/models.py:1183
+#: aleksis/core/models.py:1193
 msgid "Can run data checks"
 msgstr ""
 
-#: aleksis/core/models.py:1184
+#: aleksis/core/models.py:1194
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1191
+#: aleksis/core/models.py:1201
 #, fuzzy
 #| msgid "E-mail address"
 msgid "E-Mail address"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/models.py:1223
+#: aleksis/core/models.py:1233
 msgid "Owner"
 msgstr ""
 
-#: aleksis/core/models.py:1227
+#: aleksis/core/models.py:1237
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1229
+#: aleksis/core/models.py:1239
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1231
+#: aleksis/core/models.py:1241
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1238
+#: aleksis/core/models.py:1248
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1239
+#: aleksis/core/models.py:1249
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1244
+#: aleksis/core/models.py:1254
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1247
+#: aleksis/core/models.py:1257
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1259
+#: aleksis/core/models.py:1269
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1260
+#: aleksis/core/models.py:1270
 msgid "Task user assignments"
 msgstr ""
 
-#: aleksis/core/models.py:1276
+#: aleksis/core/models.py:1286
 #, fuzzy
 #| msgid "Additional name(s)"
 msgid "Additional attributes"
 msgstr "addita nomines"
 
-#: aleksis/core/models.py:1314
+#: aleksis/core/models.py:1324
 msgid "Allowed scopes that clients can request"
 msgstr ""
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1334
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr ""
 
-#: aleksis/core/models.py:1373
+#: aleksis/core/models.py:1383
 msgid "UUID"
 msgstr ""
 
-#: aleksis/core/models.py:1377
+#: aleksis/core/models.py:1387
 msgid "Selected ICal feed"
 msgstr ""
 
-#: aleksis/core/models.py:1386
+#: aleksis/core/models.py:1396
 msgid "Personal Calendar URL"
 msgstr ""
 
-#: aleksis/core/models.py:1387
+#: aleksis/core/models.py:1397
 msgid "Personal Calendar URLs"
 msgstr ""
 
@@ -1315,96 +1329,96 @@ msgstr ""
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr "Inscriptio electronica"
 
-#: aleksis/core/preferences.py:344
-msgid "Available languages"
-msgstr ""
-
-#: aleksis/core/preferences.py:357
+#: aleksis/core/preferences.py:343
 msgid "Send emails if data checks detect problems"
 msgstr ""
 
-#: aleksis/core/preferences.py:368
+#: aleksis/core/preferences.py:354
 msgid "Email recipients for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:379
+#: aleksis/core/preferences.py:365
 msgid "Email recipient groups for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:388
+#: aleksis/core/preferences.py:374
 msgid "Show dashboard to users without login"
 msgstr ""
 
-#: aleksis/core/preferences.py:397
+#: aleksis/core/preferences.py:383
 msgid "Allow users to edit their dashboard"
 msgstr ""
 
-#: aleksis/core/preferences.py:408
+#: aleksis/core/preferences.py:394
 msgid "Fields on person model which are editable by themselves."
 msgstr ""
 
-#: aleksis/core/preferences.py:423
+#: aleksis/core/preferences.py:409
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr ""
 
-#: aleksis/core/preferences.py:437
+#: aleksis/core/preferences.py:423
 msgid "Contact for notification if a person changes their data"
 msgstr ""
 
-#: aleksis/core/preferences.py:448
+#: aleksis/core/preferences.py:434
 msgid "Prefer personal photos over avatars"
 msgstr ""
 
-#: aleksis/core/preferences.py:458
+#: aleksis/core/preferences.py:444
 msgid "PDF file expiration duration"
 msgstr ""
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:445
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/preferences.py:469
+#: aleksis/core/preferences.py:455
 msgid "Automatically update the dashboard and its widgets"
 msgstr ""
 
-#: aleksis/core/preferences.py:479
+#: aleksis/core/preferences.py:465
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr ""
 
-#: aleksis/core/preferences.py:489
+#: aleksis/core/preferences.py:475
 msgid "Country for phone number parsing"
 msgstr ""
 
-#: aleksis/core/settings.py:540
+#: aleksis/core/settings.py:541
 msgid "English"
 msgstr "Britannicus"
 
-#: aleksis/core/settings.py:541
+#: aleksis/core/settings.py:542
 msgid "German"
 msgstr "Germanus"
 
-#: aleksis/core/tables.py:24
+#: aleksis/core/settings.py:543
+msgid "Ukrainian"
+msgstr ""
+
+#: aleksis/core/tables.py:25
 #: aleksis/core/templates/core/announcement/list.html:36
-#: aleksis/core/templates/core/group/full.html:24
+#: aleksis/core/templates/core/group/full.html:26
 #: aleksis/core/templates/core/person/full.html:26
 #: aleksis/core/templates/core/person/full.html:86
 #: aleksis/core/templates/oauth2_provider/application/detail.html:17
 msgid "Edit"
 msgstr ""
 
-#: aleksis/core/tables.py:26 aleksis/core/tables.py:94
-#: aleksis/core/tables.py:138
+#: aleksis/core/tables.py:27 aleksis/core/tables.py:148
+#: aleksis/core/tables.py:192
 #: aleksis/core/templates/core/announcement/list.html:22
 #, fuzzy
 #| msgid "Notifications"
 msgid "Actions"
 msgstr "Nuntii"
 
-#: aleksis/core/tables.py:61 aleksis/core/tables.py:62
-#: aleksis/core/tables.py:76 aleksis/core/tables.py:92
-#: aleksis/core/tables.py:136
+#: aleksis/core/tables.py:115 aleksis/core/tables.py:116
+#: aleksis/core/tables.py:130 aleksis/core/tables.py:146
+#: aleksis/core/tables.py:190
 #: aleksis/core/templates/core/announcement/list.html:42
-#: aleksis/core/templates/core/group/full.html:31
+#: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
 #: aleksis/core/templates/core/person/full.html:33
 #: aleksis/core/templates/core/person/full.html:93
@@ -1443,7 +1457,7 @@ msgstr ""
 #: aleksis/core/templates/500.html:10
 msgid ""
 "An unexpected error has\n"
-"          occured."
+"          occurred."
 msgstr ""
 
 #: aleksis/core/templates/500.html:13
@@ -1975,36 +1989,36 @@ msgstr ""
 msgid "Edit group"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:38
+#: aleksis/core/templates/core/group/full.html:40
 #: aleksis/core/templates/core/person/full.html:40
 #: aleksis/core/templates/core/person/full.html:100
 msgid "Change preferences"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:64
+#: aleksis/core/templates/core/group/full.html:68
 #, fuzzy
 #| msgid "System status"
 msgid "Statistics"
 msgstr "Status systemae"
 
-#: aleksis/core/templates/core/group/full.html:67
+#: aleksis/core/templates/core/group/full.html:73
 msgid "Count of members"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:71
+#: aleksis/core/templates/core/group/full.html:81
 msgid "Average age"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
+#: aleksis/core/templates/core/group/full.html:90
 msgid "Age range"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years to"
-msgstr ""
-
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years "
+#: aleksis/core/templates/core/group/full.html:93
+#, python-format
+msgid ""
+"\n"
+"              %(min)s years to %(max)s years\n"
+"            "
 msgstr ""
 
 #: aleksis/core/templates/core/group/list.html:14
@@ -2060,7 +2074,7 @@ msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:4
 #: aleksis/core/templates/core/ical/ical_list.html:5
-msgid "ICal Feeds"
+msgid "iCal Feeds"
 msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:8
@@ -2362,11 +2376,11 @@ msgstr ""
 msgid "Unknown"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:15
+#: aleksis/core/templates/core/partials/language_form.html:17
 msgid "Language"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:27
+#: aleksis/core/templates/core/partials/language_form.html:29
 msgid "Select language"
 msgstr ""
 
@@ -3325,172 +3339,174 @@ msgstr ""
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:292
+#: aleksis/core/views.py:294
 msgid "The school term has been created."
 msgstr ""
 
-#: aleksis/core/views.py:304
+#: aleksis/core/views.py:306
 msgid "The school term has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:424
+#: aleksis/core/views.py:426
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:443 aleksis/core/views.py:453
+#: aleksis/core/views.py:445 aleksis/core/views.py:455
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:503
+#: aleksis/core/views.py:505
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:600
+#: aleksis/core/views.py:602
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:616
+#: aleksis/core/views.py:618
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:684
+#: aleksis/core/views.py:686
 msgid "The requested preference registry does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:705
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:729
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:743
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:773
-msgid "The additional_field has been saved."
-msgstr ""
+#: aleksis/core/views.py:775
+#, fuzzy
+#| msgid "Additional name(s)"
+msgid "The additional field has been saved."
+msgstr "addita nomines"
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:809
 msgid "The additional field has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:834
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:864
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:897
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:898
 #, fuzzy
 #| msgid "System status"
 msgid "Run data checks …"
 msgstr "Status systemae"
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:899
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:900
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:916
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:924
+#: aleksis/core/views.py:926
 msgid "The requested solve option does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:958
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:988
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:998
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1067
+#: aleksis/core/views.py:1069
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1069
+#: aleksis/core/views.py:1071
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1145
+#: aleksis/core/views.py:1147
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr ""
 
-#: aleksis/core/views.py:1236
+#: aleksis/core/views.py:1238
 msgid "We have successfully assigned the permissions."
 msgstr ""
 
-#: aleksis/core/views.py:1246
+#: aleksis/core/views.py:1248
 msgid "The global user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1256
+#: aleksis/core/views.py:1258
 msgid "The global group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1266
+#: aleksis/core/views.py:1268
 msgid "The object user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1276
+#: aleksis/core/views.py:1278
 msgid "The object group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1344
+#: aleksis/core/views.py:1346
 msgid "The requested PDF file does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:1353 aleksis/core/views.py:1357
+#: aleksis/core/views.py:1355 aleksis/core/views.py:1359
 msgid "The requested task does not exist or is not accessible"
 msgstr ""
 
-#: aleksis/core/views.py:1409
+#: aleksis/core/views.py:1411
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1416
+#: aleksis/core/views.py:1418
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
-#: aleksis/core/views.py:1487
+#: aleksis/core/views.py:1489
 msgid "Person was invited successfully and an email with further instructions has been send to them."
 msgstr ""
 
-#: aleksis/core/views.py:1498
+#: aleksis/core/views.py:1500
 msgid "Person was already invited."
 msgstr ""
 
-#: aleksis/core/views.py:1598
-msgid "ICal feed updated successfully"
+#: aleksis/core/views.py:1600
+msgid "iCal feed updated successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1608
-msgid "ICal feed deleted successfully"
+#: aleksis/core/views.py:1610
+msgid "iCal feed deleted successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1616
-msgid "ICal feed created successfully"
+#: aleksis/core/views.py:1618
+msgid "iCal feed created successfully"
 msgstr ""
 
 #, fuzzy
diff --git a/aleksis/core/locale/la/LC_MESSAGES/djangojs.po b/aleksis/core/locale/la/LC_MESSAGES/djangojs.po
index 509b8a65f4bdbc6ac9c1ec0282c1ff99b6f1f8c1..26f9dbd80e1c93710efaf2abf60ffd0754e043b6 100644
--- a/aleksis/core/locale/la/LC_MESSAGES/djangojs.po
+++ b/aleksis/core/locale/la/LC_MESSAGES/djangojs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/aleksis/core/locale/nb_NO/LC_MESSAGES/django.po b/aleksis/core/locale/nb_NO/LC_MESSAGES/django.po
index 9f0be4386a3358d3d0594f80838759c88c9c6c08..c5d7f44167fc0d9207afcc857d56d3fecb23e834 100644
--- a/aleksis/core/locale/nb_NO/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/nb_NO/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: AlekSIS (School Information System) 0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -38,33 +38,43 @@ msgid "Home and mobile phone"
 msgstr ""
 
 #: aleksis/core/apps.py:171 aleksis/core/forms.py:220 aleksis/core/menus.py:171
-#: aleksis/core/models.py:489 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/models.py:494 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:246
 msgid "Groups"
 msgstr ""
 
-#: aleksis/core/data_checks.py:56
+#: aleksis/core/data_checks.py:59
 msgid "Ignore problem"
 msgstr ""
 
-#: aleksis/core/data_checks.py:185
+#: aleksis/core/data_checks.py:188
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/data_checks.py:291
+#: aleksis/core/data_checks.py:294
 msgid "Deactivate DashboardWidget"
 msgstr ""
 
-#: aleksis/core/data_checks.py:303
+#: aleksis/core/data_checks.py:306
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr ""
 
-#: aleksis/core/data_checks.py:304
+#: aleksis/core/data_checks.py:307
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
+#: aleksis/core/data_checks.py:330
+#, python-format
+msgid "Validate field %s of model %s."
+msgstr ""
+
+#: aleksis/core/data_checks.py:332
+#, python-format
+msgid "The field %s couldn't be validated successfully."
+msgstr ""
+
 #: aleksis/core/feeds.py:52
 msgid "Birthday Calendar"
 msgstr ""
@@ -108,11 +118,11 @@ msgstr ""
 msgid "Content type"
 msgstr ""
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:715
+#: aleksis/core/filters.py:113 aleksis/core/models.py:720
 msgid "User"
 msgstr ""
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:488
+#: aleksis/core/filters.py:135 aleksis/core/models.py:493
 msgid "Group"
 msgstr ""
 
@@ -120,7 +130,7 @@ msgstr ""
 msgid "Base data"
 msgstr ""
 
-#: aleksis/core/forms.py:55
+#: aleksis/core/forms.py:55 aleksis/core/tables.py:47
 msgid "Address"
 msgstr ""
 
@@ -148,7 +158,7 @@ msgstr ""
 msgid "This username is already in use."
 msgstr ""
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:136
+#: aleksis/core/forms.py:153 aleksis/core/models.py:141
 msgid "School term"
 msgstr ""
 
@@ -157,7 +167,7 @@ msgid "Common data"
 msgstr ""
 
 #: aleksis/core/forms.py:155 aleksis/core/forms.py:207
-#: aleksis/core/menus.py:160 aleksis/core/models.py:159
+#: aleksis/core/menus.py:160 aleksis/core/models.py:164
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
@@ -167,18 +177,18 @@ msgstr ""
 msgid "Additional data"
 msgstr ""
 
-#: aleksis/core/forms.py:157 aleksis/core/models.py:212
-#: aleksis/core/models.py:541
+#: aleksis/core/forms.py:157 aleksis/core/models.py:217
+#: aleksis/core/models.py:546 aleksis/core/tables.py:46
 msgid "Photo"
 msgstr ""
 
 #: aleksis/core/forms.py:199 aleksis/core/forms.py:202
-#: aleksis/core/models.py:79
+#: aleksis/core/models.py:84
 msgid "Date"
 msgstr ""
 
 #: aleksis/core/forms.py:200 aleksis/core/forms.py:203
-#: aleksis/core/models.py:87
+#: aleksis/core/models.py:92
 msgid "Time"
 msgstr ""
 
@@ -214,11 +224,11 @@ msgstr ""
 msgid "Please enter your invitation code."
 msgstr ""
 
-#: aleksis/core/forms.py:418 aleksis/core/models.py:187
+#: aleksis/core/forms.py:418 aleksis/core/models.py:192
 msgid "First name"
 msgstr ""
 
-#: aleksis/core/forms.py:419 aleksis/core/models.py:188
+#: aleksis/core/forms.py:419 aleksis/core/models.py:193
 msgid "Last name"
 msgstr ""
 
@@ -321,13 +331,13 @@ msgstr ""
 msgid "Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:47 aleksis/core/models.py:867
+#: aleksis/core/menus.py:47 aleksis/core/models.py:872
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr ""
 
-#: aleksis/core/menus.py:58 aleksis/core/models.py:137
+#: aleksis/core/menus.py:58 aleksis/core/models.py:142
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
@@ -379,7 +389,7 @@ msgstr ""
 msgid "People"
 msgstr ""
 
-#: aleksis/core/menus.py:182 aleksis/core/models.py:1101
+#: aleksis/core/menus.py:182 aleksis/core/models.py:1111
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
@@ -389,7 +399,7 @@ msgstr ""
 msgid "Groups and child groups"
 msgstr ""
 
-#: aleksis/core/menus.py:204 aleksis/core/models.py:537
+#: aleksis/core/menus.py:204 aleksis/core/models.py:542
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 msgid "Additional fields"
@@ -456,581 +466,585 @@ msgstr ""
 msgid "Linked school term"
 msgstr ""
 
-#: aleksis/core/models.py:77
+#: aleksis/core/models.py:82
 msgid "Boolean (Yes/No)"
 msgstr ""
 
-#: aleksis/core/models.py:78
+#: aleksis/core/models.py:83
 msgid "Text (one line)"
 msgstr ""
 
-#: aleksis/core/models.py:80
+#: aleksis/core/models.py:85
 msgid "Date and time"
 msgstr ""
 
-#: aleksis/core/models.py:81
+#: aleksis/core/models.py:86
 msgid "Decimal number"
 msgstr ""
 
-#: aleksis/core/models.py:82 aleksis/core/models.py:205
+#: aleksis/core/models.py:87 aleksis/core/models.py:210
 msgid "E-mail address"
 msgstr ""
 
-#: aleksis/core/models.py:83
+#: aleksis/core/models.py:88
 msgid "Integer"
 msgstr ""
 
-#: aleksis/core/models.py:84
+#: aleksis/core/models.py:89
 msgid "IP address"
 msgstr ""
 
-#: aleksis/core/models.py:85
+#: aleksis/core/models.py:90
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr ""
 
-#: aleksis/core/models.py:86
+#: aleksis/core/models.py:91
 msgid "Text (multi-line)"
 msgstr ""
 
-#: aleksis/core/models.py:88
+#: aleksis/core/models.py:93
 msgid "URL / Link"
 msgstr ""
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:1070
-#: aleksis/core/models.py:1374
+#: aleksis/core/models.py:105 aleksis/core/models.py:1077
+#: aleksis/core/models.py:1384
 msgid "Name"
 msgstr ""
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:107
 msgid "Start date"
 msgstr ""
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:108
 msgid "End date"
 msgstr ""
 
-#: aleksis/core/models.py:122
+#: aleksis/core/models.py:127
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: aleksis/core/models.py:129
+#: aleksis/core/models.py:134
 msgid "There is already a school term for this time or a part of this time."
 msgstr ""
 
-#: aleksis/core/models.py:158 aleksis/core/models.py:1019
-#: aleksis/core/models.py:1371
+#: aleksis/core/models.py:163 aleksis/core/models.py:1024
+#: aleksis/core/models.py:1381
 msgid "Person"
 msgstr ""
 
-#: aleksis/core/models.py:161
+#: aleksis/core/models.py:166
 msgid "Can view address"
 msgstr ""
 
-#: aleksis/core/models.py:162
+#: aleksis/core/models.py:167
 msgid "Can view contact details"
 msgstr ""
 
-#: aleksis/core/models.py:163
+#: aleksis/core/models.py:168
 msgid "Can view photo"
 msgstr ""
 
-#: aleksis/core/models.py:164
+#: aleksis/core/models.py:169
 msgid "Can view avatar image"
 msgstr ""
 
-#: aleksis/core/models.py:165
+#: aleksis/core/models.py:170
 msgid "Can view persons groups"
 msgstr ""
 
-#: aleksis/core/models.py:166
+#: aleksis/core/models.py:171
 msgid "Can view personal details"
 msgstr ""
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "female"
 msgstr ""
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "male"
 msgstr ""
 
-#: aleksis/core/models.py:184 aleksis/core/models.py:1273
+#: aleksis/core/models.py:181
+msgid "other"
+msgstr ""
+
+#: aleksis/core/models.py:189 aleksis/core/models.py:1283
 msgid "Linked user"
 msgstr ""
 
-#: aleksis/core/models.py:190
+#: aleksis/core/models.py:195
 msgid "Additional name(s)"
 msgstr ""
 
-#: aleksis/core/models.py:194 aleksis/core/models.py:506
+#: aleksis/core/models.py:199 aleksis/core/models.py:511
 msgid "Short name"
 msgstr ""
 
-#: aleksis/core/models.py:197
+#: aleksis/core/models.py:202
 msgid "Street"
 msgstr ""
 
-#: aleksis/core/models.py:198
+#: aleksis/core/models.py:203
 msgid "Street number"
 msgstr ""
 
-#: aleksis/core/models.py:199
+#: aleksis/core/models.py:204
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/core/models.py:200
+#: aleksis/core/models.py:205
 msgid "Place"
 msgstr ""
 
-#: aleksis/core/models.py:202 aleksis/core/templates/core/person/full.html:160
+#: aleksis/core/models.py:207 aleksis/core/templates/core/person/full.html:160
 msgid "Home phone"
 msgstr ""
 
-#: aleksis/core/models.py:203 aleksis/core/templates/core/person/full.html:170
+#: aleksis/core/models.py:208 aleksis/core/templates/core/person/full.html:170
 msgid "Mobile phone"
 msgstr ""
 
-#: aleksis/core/models.py:207
+#: aleksis/core/models.py:212
 msgid "Date of birth"
 msgstr ""
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:213
 msgid "Place of birth"
 msgstr ""
 
-#: aleksis/core/models.py:209
+#: aleksis/core/models.py:214
 msgid "Sex"
 msgstr ""
 
-#: aleksis/core/models.py:216 aleksis/core/models.py:545
+#: aleksis/core/models.py:221 aleksis/core/models.py:550
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr ""
 
-#: aleksis/core/models.py:221 aleksis/core/models.py:549
+#: aleksis/core/models.py:226 aleksis/core/models.py:554
 msgid "Display picture / Avatar"
 msgstr ""
 
-#: aleksis/core/models.py:224 aleksis/core/models.py:552
+#: aleksis/core/models.py:229 aleksis/core/models.py:557
 msgid "This is a picture or an avatar for public display."
 msgstr ""
 
-#: aleksis/core/models.py:229 aleksis/core/templates/core/person/full.html:235
+#: aleksis/core/models.py:234 aleksis/core/templates/core/person/full.html:235
 msgid "Guardians / Parents"
 msgstr ""
 
-#: aleksis/core/models.py:236
+#: aleksis/core/models.py:241
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:719
-#: aleksis/core/models.py:743 aleksis/core/models.py:834
-#: aleksis/core/models.py:1094
+#: aleksis/core/models.py:244 aleksis/core/models.py:724
+#: aleksis/core/models.py:748 aleksis/core/models.py:839
+#: aleksis/core/models.py:1104
 msgid "Description"
 msgstr ""
 
-#: aleksis/core/models.py:459
+#: aleksis/core/models.py:464
 msgid "Title of field"
 msgstr ""
 
-#: aleksis/core/models.py:461
+#: aleksis/core/models.py:466
 msgid "Type of field"
 msgstr ""
 
-#: aleksis/core/models.py:463
+#: aleksis/core/models.py:468
 msgid "Required"
 msgstr ""
 
-#: aleksis/core/models.py:464
+#: aleksis/core/models.py:469
 msgid "Help text / description"
 msgstr ""
 
-#: aleksis/core/models.py:470
+#: aleksis/core/models.py:475
 msgid "Addtitional field for groups"
 msgstr ""
 
-#: aleksis/core/models.py:471
+#: aleksis/core/models.py:476
 msgid "Addtitional fields for groups"
 msgstr ""
 
-#: aleksis/core/models.py:491
+#: aleksis/core/models.py:496
 msgid "Can assign child groups to groups"
 msgstr ""
 
-#: aleksis/core/models.py:492
+#: aleksis/core/models.py:497
 msgid "Can view statistics about group."
 msgstr ""
 
-#: aleksis/core/models.py:504
+#: aleksis/core/models.py:509
 msgid "Long name"
 msgstr ""
 
-#: aleksis/core/models.py:514 aleksis/core/templates/core/group/full.html:85
+#: aleksis/core/models.py:519 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr ""
 
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/full.html:82
+#: aleksis/core/models.py:522 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr ""
 
-#: aleksis/core/models.py:524 aleksis/core/templates/core/group/full.html:55
+#: aleksis/core/models.py:529 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr ""
 
-#: aleksis/core/models.py:532
+#: aleksis/core/models.py:537
 msgid "Type of group"
 msgstr ""
 
-#: aleksis/core/models.py:718 aleksis/core/models.py:742
-#: aleksis/core/models.py:833
+#: aleksis/core/models.py:723 aleksis/core/models.py:747
+#: aleksis/core/models.py:838
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr ""
 
-#: aleksis/core/models.py:721
+#: aleksis/core/models.py:726
 msgid "Application"
 msgstr ""
 
-#: aleksis/core/models.py:727
+#: aleksis/core/models.py:732
 msgid "Activity"
 msgstr ""
 
-#: aleksis/core/models.py:728
+#: aleksis/core/models.py:733
 msgid "Activities"
 msgstr ""
 
-#: aleksis/core/models.py:734
+#: aleksis/core/models.py:739
 msgid "Sender"
 msgstr ""
 
-#: aleksis/core/models.py:739
+#: aleksis/core/models.py:744
 msgid "Recipient"
 msgstr ""
 
-#: aleksis/core/models.py:744 aleksis/core/models.py:1071
+#: aleksis/core/models.py:749 aleksis/core/models.py:1078
 msgid "Link"
 msgstr ""
 
-#: aleksis/core/models.py:746
+#: aleksis/core/models.py:751
 msgid "Send notification at"
 msgstr ""
 
-#: aleksis/core/models.py:748
+#: aleksis/core/models.py:753
 msgid "Read"
 msgstr ""
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:754
 msgid "Sent"
 msgstr ""
 
-#: aleksis/core/models.py:766
+#: aleksis/core/models.py:771
 msgid "Notification"
 msgstr ""
 
-#: aleksis/core/models.py:767 aleksis/core/preferences.py:29
+#: aleksis/core/models.py:772 aleksis/core/preferences.py:29
 #: aleksis/core/templates/core/base.html:81
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr ""
 
-#: aleksis/core/models.py:835
+#: aleksis/core/models.py:840
 msgid "Link to detailed view"
 msgstr ""
 
-#: aleksis/core/models.py:838
+#: aleksis/core/models.py:843
 msgid "Date and time from when to show"
 msgstr ""
 
-#: aleksis/core/models.py:841
+#: aleksis/core/models.py:846
 msgid "Date and time until when to show"
 msgstr ""
 
-#: aleksis/core/models.py:866
+#: aleksis/core/models.py:871
 msgid "Announcement"
 msgstr ""
 
-#: aleksis/core/models.py:904
+#: aleksis/core/models.py:909
 msgid "Announcement recipient"
 msgstr ""
 
-#: aleksis/core/models.py:905
+#: aleksis/core/models.py:910
 msgid "Announcement recipients"
 msgstr ""
 
-#: aleksis/core/models.py:927
+#: aleksis/core/models.py:932
 msgid "Widget Title"
 msgstr ""
 
-#: aleksis/core/models.py:928
+#: aleksis/core/models.py:933
 msgid "Activate Widget"
 msgstr ""
 
-#: aleksis/core/models.py:929
+#: aleksis/core/models.py:934
 msgid "Widget is broken"
 msgstr ""
 
-#: aleksis/core/models.py:932
+#: aleksis/core/models.py:937
 msgid "Size on mobile devices"
 msgstr ""
 
-#: aleksis/core/models.py:933
+#: aleksis/core/models.py:938
 msgid "<= 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:938
+#: aleksis/core/models.py:943
 msgid "Size on tablet devices"
 msgstr ""
 
-#: aleksis/core/models.py:939
+#: aleksis/core/models.py:944
 msgid "> 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:944
+#: aleksis/core/models.py:949
 msgid "Size on desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:945
+#: aleksis/core/models.py:950
 msgid "> 992 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:950
+#: aleksis/core/models.py:955
 msgid "Size on large desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:951
+#: aleksis/core/models.py:956
 msgid "> 1200 px>, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:982
+#: aleksis/core/models.py:987
 msgid "Can edit default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:983
+#: aleksis/core/models.py:988
 msgid "Dashboard Widget"
 msgstr ""
 
-#: aleksis/core/models.py:984
+#: aleksis/core/models.py:989
 msgid "Dashboard Widgets"
 msgstr ""
 
-#: aleksis/core/models.py:990
+#: aleksis/core/models.py:995
 msgid "URL"
 msgstr ""
 
-#: aleksis/core/models.py:991
+#: aleksis/core/models.py:996
 msgid "Icon URL"
 msgstr ""
 
-#: aleksis/core/models.py:997
+#: aleksis/core/models.py:1002
 msgid "External link widget"
 msgstr ""
 
-#: aleksis/core/models.py:998
+#: aleksis/core/models.py:1003
 msgid "External link widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1004
+#: aleksis/core/models.py:1009
 msgid "Content"
 msgstr ""
 
-#: aleksis/core/models.py:1010
+#: aleksis/core/models.py:1015
 msgid "Static content widget"
 msgstr ""
 
-#: aleksis/core/models.py:1011
+#: aleksis/core/models.py:1016
 msgid "Static content widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1016
+#: aleksis/core/models.py:1021
 msgid "Dashboard widget"
 msgstr ""
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:1026
 msgid "Order"
 msgstr ""
 
-#: aleksis/core/models.py:1022
+#: aleksis/core/models.py:1027
 msgid "Part of the default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1037
+#: aleksis/core/models.py:1042
 msgid "Dashboard widget order"
 msgstr ""
 
-#: aleksis/core/models.py:1038
+#: aleksis/core/models.py:1043
 msgid "Dashboard widget orders"
 msgstr ""
 
-#: aleksis/core/models.py:1044
+#: aleksis/core/models.py:1049
 msgid "Menu ID"
 msgstr ""
 
-#: aleksis/core/models.py:1057
+#: aleksis/core/models.py:1062
 msgid "Custom menu"
 msgstr ""
 
-#: aleksis/core/models.py:1058
+#: aleksis/core/models.py:1063
 msgid "Custom menus"
 msgstr ""
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:1075
 msgid "Menu"
 msgstr ""
 
-#: aleksis/core/models.py:1072 aleksis/core/models.py:1320
+#: aleksis/core/models.py:1079 aleksis/core/models.py:1330
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr ""
 
-#: aleksis/core/models.py:1078
+#: aleksis/core/models.py:1085
 msgid "Custom menu item"
 msgstr ""
 
-#: aleksis/core/models.py:1079
+#: aleksis/core/models.py:1086
 msgid "Custom menu items"
 msgstr ""
 
-#: aleksis/core/models.py:1093
+#: aleksis/core/models.py:1103
 msgid "Title of type"
 msgstr ""
 
-#: aleksis/core/models.py:1100 aleksis/core/templates/core/group/full.html:47
+#: aleksis/core/models.py:1110 aleksis/core/templates/core/group/full.html:50
 msgid "Group type"
 msgstr ""
 
-#: aleksis/core/models.py:1114
+#: aleksis/core/models.py:1124
 msgid "Can view system status"
 msgstr ""
 
-#: aleksis/core/models.py:1115
+#: aleksis/core/models.py:1125
 msgid "Can manage data"
 msgstr ""
 
-#: aleksis/core/models.py:1116
+#: aleksis/core/models.py:1126
 msgid "Can impersonate"
 msgstr ""
 
-#: aleksis/core/models.py:1117
+#: aleksis/core/models.py:1127
 msgid "Can use search"
 msgstr ""
 
-#: aleksis/core/models.py:1118
+#: aleksis/core/models.py:1128
 msgid "Can change site preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1119
+#: aleksis/core/models.py:1129
 msgid "Can change person preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1120
+#: aleksis/core/models.py:1130
 msgid "Can change group preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1121
+#: aleksis/core/models.py:1131
 msgid "Can test PDF generation"
 msgstr ""
 
-#: aleksis/core/models.py:1122
+#: aleksis/core/models.py:1132
 msgid "Can invite persons"
 msgstr ""
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1168
 msgid "Related data check task"
 msgstr ""
 
-#: aleksis/core/models.py:1166
+#: aleksis/core/models.py:1176
 msgid "Issue solved"
 msgstr ""
 
-#: aleksis/core/models.py:1167
+#: aleksis/core/models.py:1177
 msgid "Notification sent"
 msgstr ""
 
-#: aleksis/core/models.py:1180
+#: aleksis/core/models.py:1190
 msgid "Data check result"
 msgstr ""
 
-#: aleksis/core/models.py:1181
+#: aleksis/core/models.py:1191
 msgid "Data check results"
 msgstr ""
 
-#: aleksis/core/models.py:1183
+#: aleksis/core/models.py:1193
 msgid "Can run data checks"
 msgstr ""
 
-#: aleksis/core/models.py:1184
+#: aleksis/core/models.py:1194
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1191
+#: aleksis/core/models.py:1201
 msgid "E-Mail address"
 msgstr ""
 
-#: aleksis/core/models.py:1223
+#: aleksis/core/models.py:1233
 msgid "Owner"
 msgstr ""
 
-#: aleksis/core/models.py:1227
+#: aleksis/core/models.py:1237
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1229
+#: aleksis/core/models.py:1239
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1231
+#: aleksis/core/models.py:1241
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1238
+#: aleksis/core/models.py:1248
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1239
+#: aleksis/core/models.py:1249
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1244
+#: aleksis/core/models.py:1254
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1247
+#: aleksis/core/models.py:1257
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1259
+#: aleksis/core/models.py:1269
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1260
+#: aleksis/core/models.py:1270
 msgid "Task user assignments"
 msgstr ""
 
-#: aleksis/core/models.py:1276
+#: aleksis/core/models.py:1286
 msgid "Additional attributes"
 msgstr ""
 
-#: aleksis/core/models.py:1314
+#: aleksis/core/models.py:1324
 msgid "Allowed scopes that clients can request"
 msgstr ""
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1334
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr ""
 
-#: aleksis/core/models.py:1373
+#: aleksis/core/models.py:1383
 msgid "UUID"
 msgstr ""
 
-#: aleksis/core/models.py:1377
+#: aleksis/core/models.py:1387
 msgid "Selected ICal feed"
 msgstr ""
 
-#: aleksis/core/models.py:1386
+#: aleksis/core/models.py:1396
 msgid "Personal Calendar URL"
 msgstr ""
 
-#: aleksis/core/models.py:1387
+#: aleksis/core/models.py:1397
 msgid "Personal Calendar URLs"
 msgstr ""
 
@@ -1178,94 +1192,94 @@ msgstr ""
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr ""
 
-#: aleksis/core/preferences.py:344
-msgid "Available languages"
-msgstr ""
-
-#: aleksis/core/preferences.py:357
+#: aleksis/core/preferences.py:343
 msgid "Send emails if data checks detect problems"
 msgstr ""
 
-#: aleksis/core/preferences.py:368
+#: aleksis/core/preferences.py:354
 msgid "Email recipients for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:379
+#: aleksis/core/preferences.py:365
 msgid "Email recipient groups for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:388
+#: aleksis/core/preferences.py:374
 msgid "Show dashboard to users without login"
 msgstr ""
 
-#: aleksis/core/preferences.py:397
+#: aleksis/core/preferences.py:383
 msgid "Allow users to edit their dashboard"
 msgstr ""
 
-#: aleksis/core/preferences.py:408
+#: aleksis/core/preferences.py:394
 msgid "Fields on person model which are editable by themselves."
 msgstr ""
 
-#: aleksis/core/preferences.py:423
+#: aleksis/core/preferences.py:409
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr ""
 
-#: aleksis/core/preferences.py:437
+#: aleksis/core/preferences.py:423
 msgid "Contact for notification if a person changes their data"
 msgstr ""
 
-#: aleksis/core/preferences.py:448
+#: aleksis/core/preferences.py:434
 msgid "Prefer personal photos over avatars"
 msgstr ""
 
-#: aleksis/core/preferences.py:458
+#: aleksis/core/preferences.py:444
 msgid "PDF file expiration duration"
 msgstr ""
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:445
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/preferences.py:469
+#: aleksis/core/preferences.py:455
 msgid "Automatically update the dashboard and its widgets"
 msgstr ""
 
-#: aleksis/core/preferences.py:479
+#: aleksis/core/preferences.py:465
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr ""
 
-#: aleksis/core/preferences.py:489
+#: aleksis/core/preferences.py:475
 msgid "Country for phone number parsing"
 msgstr ""
 
-#: aleksis/core/settings.py:540
+#: aleksis/core/settings.py:541
 msgid "English"
 msgstr ""
 
-#: aleksis/core/settings.py:541
+#: aleksis/core/settings.py:542
 msgid "German"
 msgstr ""
 
-#: aleksis/core/tables.py:24
+#: aleksis/core/settings.py:543
+msgid "Ukrainian"
+msgstr ""
+
+#: aleksis/core/tables.py:25
 #: aleksis/core/templates/core/announcement/list.html:36
-#: aleksis/core/templates/core/group/full.html:24
+#: aleksis/core/templates/core/group/full.html:26
 #: aleksis/core/templates/core/person/full.html:26
 #: aleksis/core/templates/core/person/full.html:86
 #: aleksis/core/templates/oauth2_provider/application/detail.html:17
 msgid "Edit"
 msgstr ""
 
-#: aleksis/core/tables.py:26 aleksis/core/tables.py:94
-#: aleksis/core/tables.py:138
+#: aleksis/core/tables.py:27 aleksis/core/tables.py:148
+#: aleksis/core/tables.py:192
 #: aleksis/core/templates/core/announcement/list.html:22
 msgid "Actions"
 msgstr ""
 
-#: aleksis/core/tables.py:61 aleksis/core/tables.py:62
-#: aleksis/core/tables.py:76 aleksis/core/tables.py:92
-#: aleksis/core/tables.py:136
+#: aleksis/core/tables.py:115 aleksis/core/tables.py:116
+#: aleksis/core/tables.py:130 aleksis/core/tables.py:146
+#: aleksis/core/tables.py:190
 #: aleksis/core/templates/core/announcement/list.html:42
-#: aleksis/core/templates/core/group/full.html:31
+#: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
 #: aleksis/core/templates/core/person/full.html:33
 #: aleksis/core/templates/core/person/full.html:93
@@ -1304,7 +1318,7 @@ msgstr ""
 #: aleksis/core/templates/500.html:10
 msgid ""
 "An unexpected error has\n"
-"          occured."
+"          occurred."
 msgstr ""
 
 #: aleksis/core/templates/500.html:13
@@ -1804,34 +1818,34 @@ msgstr ""
 msgid "Edit group"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:38
+#: aleksis/core/templates/core/group/full.html:40
 #: aleksis/core/templates/core/person/full.html:40
 #: aleksis/core/templates/core/person/full.html:100
 msgid "Change preferences"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:64
+#: aleksis/core/templates/core/group/full.html:68
 msgid "Statistics"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:67
+#: aleksis/core/templates/core/group/full.html:73
 msgid "Count of members"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:71
+#: aleksis/core/templates/core/group/full.html:81
 msgid "Average age"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
+#: aleksis/core/templates/core/group/full.html:90
 msgid "Age range"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years to"
-msgstr ""
-
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years "
+#: aleksis/core/templates/core/group/full.html:93
+#, python-format
+msgid ""
+"\n"
+"              %(min)s years to %(max)s years\n"
+"            "
 msgstr ""
 
 #: aleksis/core/templates/core/group/list.html:14
@@ -1883,7 +1897,7 @@ msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:4
 #: aleksis/core/templates/core/ical/ical_list.html:5
-msgid "ICal Feeds"
+msgid "iCal Feeds"
 msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:8
@@ -2167,11 +2181,11 @@ msgstr ""
 msgid "Unknown"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:15
+#: aleksis/core/templates/core/partials/language_form.html:17
 msgid "Language"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:27
+#: aleksis/core/templates/core/partials/language_form.html:29
 msgid "Select language"
 msgstr ""
 
@@ -3089,170 +3103,170 @@ msgstr ""
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:292
+#: aleksis/core/views.py:294
 msgid "The school term has been created."
 msgstr ""
 
-#: aleksis/core/views.py:304
+#: aleksis/core/views.py:306
 msgid "The school term has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:424
+#: aleksis/core/views.py:426
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:443 aleksis/core/views.py:453
+#: aleksis/core/views.py:445 aleksis/core/views.py:455
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:503
+#: aleksis/core/views.py:505
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:600
+#: aleksis/core/views.py:602
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:616
+#: aleksis/core/views.py:618
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:684
+#: aleksis/core/views.py:686
 msgid "The requested preference registry does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:705
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:729
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:743
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:773
-msgid "The additional_field has been saved."
+#: aleksis/core/views.py:775
+msgid "The additional field has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:809
 msgid "The additional field has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:834
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:864
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:897
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:898
 msgid "Run data checks …"
 msgstr ""
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:899
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:900
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:916
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:924
+#: aleksis/core/views.py:926
 msgid "The requested solve option does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:958
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:988
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:998
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1067
+#: aleksis/core/views.py:1069
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1069
+#: aleksis/core/views.py:1071
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1145
+#: aleksis/core/views.py:1147
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr ""
 
-#: aleksis/core/views.py:1236
+#: aleksis/core/views.py:1238
 msgid "We have successfully assigned the permissions."
 msgstr ""
 
-#: aleksis/core/views.py:1246
+#: aleksis/core/views.py:1248
 msgid "The global user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1256
+#: aleksis/core/views.py:1258
 msgid "The global group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1266
+#: aleksis/core/views.py:1268
 msgid "The object user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1276
+#: aleksis/core/views.py:1278
 msgid "The object group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1344
+#: aleksis/core/views.py:1346
 msgid "The requested PDF file does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:1353 aleksis/core/views.py:1357
+#: aleksis/core/views.py:1355 aleksis/core/views.py:1359
 msgid "The requested task does not exist or is not accessible"
 msgstr ""
 
-#: aleksis/core/views.py:1409
+#: aleksis/core/views.py:1411
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1416
+#: aleksis/core/views.py:1418
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
-#: aleksis/core/views.py:1487
+#: aleksis/core/views.py:1489
 msgid "Person was invited successfully and an email with further instructions has been send to them."
 msgstr ""
 
-#: aleksis/core/views.py:1498
+#: aleksis/core/views.py:1500
 msgid "Person was already invited."
 msgstr ""
 
-#: aleksis/core/views.py:1598
-msgid "ICal feed updated successfully"
+#: aleksis/core/views.py:1600
+msgid "iCal feed updated successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1608
-msgid "ICal feed deleted successfully"
+#: aleksis/core/views.py:1610
+msgid "iCal feed deleted successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1616
-msgid "ICal feed created successfully"
+#: aleksis/core/views.py:1618
+msgid "iCal feed created successfully"
 msgstr ""
 
 #~ msgid "Norwegian (bokmål)"
diff --git a/aleksis/core/locale/nb_NO/LC_MESSAGES/djangojs.po b/aleksis/core/locale/nb_NO/LC_MESSAGES/djangojs.po
index 509b8a65f4bdbc6ac9c1ec0282c1ff99b6f1f8c1..26f9dbd80e1c93710efaf2abf60ffd0754e043b6 100644
--- a/aleksis/core/locale/nb_NO/LC_MESSAGES/djangojs.po
+++ b/aleksis/core/locale/nb_NO/LC_MESSAGES/djangojs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/aleksis/core/locale/ru/LC_MESSAGES/django.po b/aleksis/core/locale/ru/LC_MESSAGES/django.po
index d71890f30d63586d52c2df9eeef982226dc4b8d5..14245dfb4aa16e18894c2490308e98cc879e236d 100644
--- a/aleksis/core/locale/ru/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/ru/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -39,33 +39,43 @@ msgid "Home and mobile phone"
 msgstr ""
 
 #: aleksis/core/apps.py:171 aleksis/core/forms.py:220 aleksis/core/menus.py:171
-#: aleksis/core/models.py:489 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/models.py:494 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:246
 msgid "Groups"
 msgstr ""
 
-#: aleksis/core/data_checks.py:56
+#: aleksis/core/data_checks.py:59
 msgid "Ignore problem"
 msgstr ""
 
-#: aleksis/core/data_checks.py:185
+#: aleksis/core/data_checks.py:188
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/data_checks.py:291
+#: aleksis/core/data_checks.py:294
 msgid "Deactivate DashboardWidget"
 msgstr ""
 
-#: aleksis/core/data_checks.py:303
+#: aleksis/core/data_checks.py:306
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr ""
 
-#: aleksis/core/data_checks.py:304
+#: aleksis/core/data_checks.py:307
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
+#: aleksis/core/data_checks.py:330
+#, python-format
+msgid "Validate field %s of model %s."
+msgstr ""
+
+#: aleksis/core/data_checks.py:332
+#, python-format
+msgid "The field %s couldn't be validated successfully."
+msgstr ""
+
 #: aleksis/core/feeds.py:52
 msgid "Birthday Calendar"
 msgstr ""
@@ -109,11 +119,11 @@ msgstr ""
 msgid "Content type"
 msgstr ""
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:715
+#: aleksis/core/filters.py:113 aleksis/core/models.py:720
 msgid "User"
 msgstr ""
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:488
+#: aleksis/core/filters.py:135 aleksis/core/models.py:493
 msgid "Group"
 msgstr ""
 
@@ -121,7 +131,7 @@ msgstr ""
 msgid "Base data"
 msgstr ""
 
-#: aleksis/core/forms.py:55
+#: aleksis/core/forms.py:55 aleksis/core/tables.py:47
 msgid "Address"
 msgstr ""
 
@@ -149,7 +159,7 @@ msgstr ""
 msgid "This username is already in use."
 msgstr ""
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:136
+#: aleksis/core/forms.py:153 aleksis/core/models.py:141
 msgid "School term"
 msgstr ""
 
@@ -158,7 +168,7 @@ msgid "Common data"
 msgstr ""
 
 #: aleksis/core/forms.py:155 aleksis/core/forms.py:207
-#: aleksis/core/menus.py:160 aleksis/core/models.py:159
+#: aleksis/core/menus.py:160 aleksis/core/models.py:164
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
@@ -168,18 +178,18 @@ msgstr ""
 msgid "Additional data"
 msgstr ""
 
-#: aleksis/core/forms.py:157 aleksis/core/models.py:212
-#: aleksis/core/models.py:541
+#: aleksis/core/forms.py:157 aleksis/core/models.py:217
+#: aleksis/core/models.py:546 aleksis/core/tables.py:46
 msgid "Photo"
 msgstr ""
 
 #: aleksis/core/forms.py:199 aleksis/core/forms.py:202
-#: aleksis/core/models.py:79
+#: aleksis/core/models.py:84
 msgid "Date"
 msgstr ""
 
 #: aleksis/core/forms.py:200 aleksis/core/forms.py:203
-#: aleksis/core/models.py:87
+#: aleksis/core/models.py:92
 msgid "Time"
 msgstr ""
 
@@ -215,11 +225,11 @@ msgstr ""
 msgid "Please enter your invitation code."
 msgstr ""
 
-#: aleksis/core/forms.py:418 aleksis/core/models.py:187
+#: aleksis/core/forms.py:418 aleksis/core/models.py:192
 msgid "First name"
 msgstr ""
 
-#: aleksis/core/forms.py:419 aleksis/core/models.py:188
+#: aleksis/core/forms.py:419 aleksis/core/models.py:193
 msgid "Last name"
 msgstr ""
 
@@ -322,13 +332,13 @@ msgstr ""
 msgid "Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:47 aleksis/core/models.py:867
+#: aleksis/core/menus.py:47 aleksis/core/models.py:872
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr ""
 
-#: aleksis/core/menus.py:58 aleksis/core/models.py:137
+#: aleksis/core/menus.py:58 aleksis/core/models.py:142
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
@@ -380,7 +390,7 @@ msgstr ""
 msgid "People"
 msgstr ""
 
-#: aleksis/core/menus.py:182 aleksis/core/models.py:1101
+#: aleksis/core/menus.py:182 aleksis/core/models.py:1111
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
@@ -390,7 +400,7 @@ msgstr ""
 msgid "Groups and child groups"
 msgstr ""
 
-#: aleksis/core/menus.py:204 aleksis/core/models.py:537
+#: aleksis/core/menus.py:204 aleksis/core/models.py:542
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 msgid "Additional fields"
@@ -457,581 +467,585 @@ msgstr ""
 msgid "Linked school term"
 msgstr ""
 
-#: aleksis/core/models.py:77
+#: aleksis/core/models.py:82
 msgid "Boolean (Yes/No)"
 msgstr ""
 
-#: aleksis/core/models.py:78
+#: aleksis/core/models.py:83
 msgid "Text (one line)"
 msgstr ""
 
-#: aleksis/core/models.py:80
+#: aleksis/core/models.py:85
 msgid "Date and time"
 msgstr ""
 
-#: aleksis/core/models.py:81
+#: aleksis/core/models.py:86
 msgid "Decimal number"
 msgstr ""
 
-#: aleksis/core/models.py:82 aleksis/core/models.py:205
+#: aleksis/core/models.py:87 aleksis/core/models.py:210
 msgid "E-mail address"
 msgstr ""
 
-#: aleksis/core/models.py:83
+#: aleksis/core/models.py:88
 msgid "Integer"
 msgstr ""
 
-#: aleksis/core/models.py:84
+#: aleksis/core/models.py:89
 msgid "IP address"
 msgstr ""
 
-#: aleksis/core/models.py:85
+#: aleksis/core/models.py:90
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr ""
 
-#: aleksis/core/models.py:86
+#: aleksis/core/models.py:91
 msgid "Text (multi-line)"
 msgstr ""
 
-#: aleksis/core/models.py:88
+#: aleksis/core/models.py:93
 msgid "URL / Link"
 msgstr ""
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:1070
-#: aleksis/core/models.py:1374
+#: aleksis/core/models.py:105 aleksis/core/models.py:1077
+#: aleksis/core/models.py:1384
 msgid "Name"
 msgstr ""
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:107
 msgid "Start date"
 msgstr ""
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:108
 msgid "End date"
 msgstr ""
 
-#: aleksis/core/models.py:122
+#: aleksis/core/models.py:127
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: aleksis/core/models.py:129
+#: aleksis/core/models.py:134
 msgid "There is already a school term for this time or a part of this time."
 msgstr ""
 
-#: aleksis/core/models.py:158 aleksis/core/models.py:1019
-#: aleksis/core/models.py:1371
+#: aleksis/core/models.py:163 aleksis/core/models.py:1024
+#: aleksis/core/models.py:1381
 msgid "Person"
 msgstr ""
 
-#: aleksis/core/models.py:161
+#: aleksis/core/models.py:166
 msgid "Can view address"
 msgstr ""
 
-#: aleksis/core/models.py:162
+#: aleksis/core/models.py:167
 msgid "Can view contact details"
 msgstr ""
 
-#: aleksis/core/models.py:163
+#: aleksis/core/models.py:168
 msgid "Can view photo"
 msgstr ""
 
-#: aleksis/core/models.py:164
+#: aleksis/core/models.py:169
 msgid "Can view avatar image"
 msgstr ""
 
-#: aleksis/core/models.py:165
+#: aleksis/core/models.py:170
 msgid "Can view persons groups"
 msgstr ""
 
-#: aleksis/core/models.py:166
+#: aleksis/core/models.py:171
 msgid "Can view personal details"
 msgstr ""
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "female"
 msgstr ""
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "male"
 msgstr ""
 
-#: aleksis/core/models.py:184 aleksis/core/models.py:1273
+#: aleksis/core/models.py:181
+msgid "other"
+msgstr ""
+
+#: aleksis/core/models.py:189 aleksis/core/models.py:1283
 msgid "Linked user"
 msgstr ""
 
-#: aleksis/core/models.py:190
+#: aleksis/core/models.py:195
 msgid "Additional name(s)"
 msgstr ""
 
-#: aleksis/core/models.py:194 aleksis/core/models.py:506
+#: aleksis/core/models.py:199 aleksis/core/models.py:511
 msgid "Short name"
 msgstr ""
 
-#: aleksis/core/models.py:197
+#: aleksis/core/models.py:202
 msgid "Street"
 msgstr ""
 
-#: aleksis/core/models.py:198
+#: aleksis/core/models.py:203
 msgid "Street number"
 msgstr ""
 
-#: aleksis/core/models.py:199
+#: aleksis/core/models.py:204
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/core/models.py:200
+#: aleksis/core/models.py:205
 msgid "Place"
 msgstr ""
 
-#: aleksis/core/models.py:202 aleksis/core/templates/core/person/full.html:160
+#: aleksis/core/models.py:207 aleksis/core/templates/core/person/full.html:160
 msgid "Home phone"
 msgstr ""
 
-#: aleksis/core/models.py:203 aleksis/core/templates/core/person/full.html:170
+#: aleksis/core/models.py:208 aleksis/core/templates/core/person/full.html:170
 msgid "Mobile phone"
 msgstr ""
 
-#: aleksis/core/models.py:207
+#: aleksis/core/models.py:212
 msgid "Date of birth"
 msgstr ""
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:213
 msgid "Place of birth"
 msgstr ""
 
-#: aleksis/core/models.py:209
+#: aleksis/core/models.py:214
 msgid "Sex"
 msgstr ""
 
-#: aleksis/core/models.py:216 aleksis/core/models.py:545
+#: aleksis/core/models.py:221 aleksis/core/models.py:550
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr ""
 
-#: aleksis/core/models.py:221 aleksis/core/models.py:549
+#: aleksis/core/models.py:226 aleksis/core/models.py:554
 msgid "Display picture / Avatar"
 msgstr ""
 
-#: aleksis/core/models.py:224 aleksis/core/models.py:552
+#: aleksis/core/models.py:229 aleksis/core/models.py:557
 msgid "This is a picture or an avatar for public display."
 msgstr ""
 
-#: aleksis/core/models.py:229 aleksis/core/templates/core/person/full.html:235
+#: aleksis/core/models.py:234 aleksis/core/templates/core/person/full.html:235
 msgid "Guardians / Parents"
 msgstr ""
 
-#: aleksis/core/models.py:236
+#: aleksis/core/models.py:241
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:719
-#: aleksis/core/models.py:743 aleksis/core/models.py:834
-#: aleksis/core/models.py:1094
+#: aleksis/core/models.py:244 aleksis/core/models.py:724
+#: aleksis/core/models.py:748 aleksis/core/models.py:839
+#: aleksis/core/models.py:1104
 msgid "Description"
 msgstr ""
 
-#: aleksis/core/models.py:459
+#: aleksis/core/models.py:464
 msgid "Title of field"
 msgstr ""
 
-#: aleksis/core/models.py:461
+#: aleksis/core/models.py:466
 msgid "Type of field"
 msgstr ""
 
-#: aleksis/core/models.py:463
+#: aleksis/core/models.py:468
 msgid "Required"
 msgstr ""
 
-#: aleksis/core/models.py:464
+#: aleksis/core/models.py:469
 msgid "Help text / description"
 msgstr ""
 
-#: aleksis/core/models.py:470
+#: aleksis/core/models.py:475
 msgid "Addtitional field for groups"
 msgstr ""
 
-#: aleksis/core/models.py:471
+#: aleksis/core/models.py:476
 msgid "Addtitional fields for groups"
 msgstr ""
 
-#: aleksis/core/models.py:491
+#: aleksis/core/models.py:496
 msgid "Can assign child groups to groups"
 msgstr ""
 
-#: aleksis/core/models.py:492
+#: aleksis/core/models.py:497
 msgid "Can view statistics about group."
 msgstr ""
 
-#: aleksis/core/models.py:504
+#: aleksis/core/models.py:509
 msgid "Long name"
 msgstr ""
 
-#: aleksis/core/models.py:514 aleksis/core/templates/core/group/full.html:85
+#: aleksis/core/models.py:519 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr ""
 
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/full.html:82
+#: aleksis/core/models.py:522 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr ""
 
-#: aleksis/core/models.py:524 aleksis/core/templates/core/group/full.html:55
+#: aleksis/core/models.py:529 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr ""
 
-#: aleksis/core/models.py:532
+#: aleksis/core/models.py:537
 msgid "Type of group"
 msgstr ""
 
-#: aleksis/core/models.py:718 aleksis/core/models.py:742
-#: aleksis/core/models.py:833
+#: aleksis/core/models.py:723 aleksis/core/models.py:747
+#: aleksis/core/models.py:838
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr ""
 
-#: aleksis/core/models.py:721
+#: aleksis/core/models.py:726
 msgid "Application"
 msgstr ""
 
-#: aleksis/core/models.py:727
+#: aleksis/core/models.py:732
 msgid "Activity"
 msgstr ""
 
-#: aleksis/core/models.py:728
+#: aleksis/core/models.py:733
 msgid "Activities"
 msgstr ""
 
-#: aleksis/core/models.py:734
+#: aleksis/core/models.py:739
 msgid "Sender"
 msgstr ""
 
-#: aleksis/core/models.py:739
+#: aleksis/core/models.py:744
 msgid "Recipient"
 msgstr ""
 
-#: aleksis/core/models.py:744 aleksis/core/models.py:1071
+#: aleksis/core/models.py:749 aleksis/core/models.py:1078
 msgid "Link"
 msgstr ""
 
-#: aleksis/core/models.py:746
+#: aleksis/core/models.py:751
 msgid "Send notification at"
 msgstr ""
 
-#: aleksis/core/models.py:748
+#: aleksis/core/models.py:753
 msgid "Read"
 msgstr ""
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:754
 msgid "Sent"
 msgstr ""
 
-#: aleksis/core/models.py:766
+#: aleksis/core/models.py:771
 msgid "Notification"
 msgstr ""
 
-#: aleksis/core/models.py:767 aleksis/core/preferences.py:29
+#: aleksis/core/models.py:772 aleksis/core/preferences.py:29
 #: aleksis/core/templates/core/base.html:81
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr ""
 
-#: aleksis/core/models.py:835
+#: aleksis/core/models.py:840
 msgid "Link to detailed view"
 msgstr ""
 
-#: aleksis/core/models.py:838
+#: aleksis/core/models.py:843
 msgid "Date and time from when to show"
 msgstr ""
 
-#: aleksis/core/models.py:841
+#: aleksis/core/models.py:846
 msgid "Date and time until when to show"
 msgstr ""
 
-#: aleksis/core/models.py:866
+#: aleksis/core/models.py:871
 msgid "Announcement"
 msgstr ""
 
-#: aleksis/core/models.py:904
+#: aleksis/core/models.py:909
 msgid "Announcement recipient"
 msgstr ""
 
-#: aleksis/core/models.py:905
+#: aleksis/core/models.py:910
 msgid "Announcement recipients"
 msgstr ""
 
-#: aleksis/core/models.py:927
+#: aleksis/core/models.py:932
 msgid "Widget Title"
 msgstr ""
 
-#: aleksis/core/models.py:928
+#: aleksis/core/models.py:933
 msgid "Activate Widget"
 msgstr ""
 
-#: aleksis/core/models.py:929
+#: aleksis/core/models.py:934
 msgid "Widget is broken"
 msgstr ""
 
-#: aleksis/core/models.py:932
+#: aleksis/core/models.py:937
 msgid "Size on mobile devices"
 msgstr ""
 
-#: aleksis/core/models.py:933
+#: aleksis/core/models.py:938
 msgid "<= 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:938
+#: aleksis/core/models.py:943
 msgid "Size on tablet devices"
 msgstr ""
 
-#: aleksis/core/models.py:939
+#: aleksis/core/models.py:944
 msgid "> 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:944
+#: aleksis/core/models.py:949
 msgid "Size on desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:945
+#: aleksis/core/models.py:950
 msgid "> 992 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:950
+#: aleksis/core/models.py:955
 msgid "Size on large desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:951
+#: aleksis/core/models.py:956
 msgid "> 1200 px>, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:982
+#: aleksis/core/models.py:987
 msgid "Can edit default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:983
+#: aleksis/core/models.py:988
 msgid "Dashboard Widget"
 msgstr ""
 
-#: aleksis/core/models.py:984
+#: aleksis/core/models.py:989
 msgid "Dashboard Widgets"
 msgstr ""
 
-#: aleksis/core/models.py:990
+#: aleksis/core/models.py:995
 msgid "URL"
 msgstr ""
 
-#: aleksis/core/models.py:991
+#: aleksis/core/models.py:996
 msgid "Icon URL"
 msgstr ""
 
-#: aleksis/core/models.py:997
+#: aleksis/core/models.py:1002
 msgid "External link widget"
 msgstr ""
 
-#: aleksis/core/models.py:998
+#: aleksis/core/models.py:1003
 msgid "External link widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1004
+#: aleksis/core/models.py:1009
 msgid "Content"
 msgstr ""
 
-#: aleksis/core/models.py:1010
+#: aleksis/core/models.py:1015
 msgid "Static content widget"
 msgstr ""
 
-#: aleksis/core/models.py:1011
+#: aleksis/core/models.py:1016
 msgid "Static content widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1016
+#: aleksis/core/models.py:1021
 msgid "Dashboard widget"
 msgstr ""
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:1026
 msgid "Order"
 msgstr ""
 
-#: aleksis/core/models.py:1022
+#: aleksis/core/models.py:1027
 msgid "Part of the default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1037
+#: aleksis/core/models.py:1042
 msgid "Dashboard widget order"
 msgstr ""
 
-#: aleksis/core/models.py:1038
+#: aleksis/core/models.py:1043
 msgid "Dashboard widget orders"
 msgstr ""
 
-#: aleksis/core/models.py:1044
+#: aleksis/core/models.py:1049
 msgid "Menu ID"
 msgstr ""
 
-#: aleksis/core/models.py:1057
+#: aleksis/core/models.py:1062
 msgid "Custom menu"
 msgstr ""
 
-#: aleksis/core/models.py:1058
+#: aleksis/core/models.py:1063
 msgid "Custom menus"
 msgstr ""
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:1075
 msgid "Menu"
 msgstr ""
 
-#: aleksis/core/models.py:1072 aleksis/core/models.py:1320
+#: aleksis/core/models.py:1079 aleksis/core/models.py:1330
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr ""
 
-#: aleksis/core/models.py:1078
+#: aleksis/core/models.py:1085
 msgid "Custom menu item"
 msgstr ""
 
-#: aleksis/core/models.py:1079
+#: aleksis/core/models.py:1086
 msgid "Custom menu items"
 msgstr ""
 
-#: aleksis/core/models.py:1093
+#: aleksis/core/models.py:1103
 msgid "Title of type"
 msgstr ""
 
-#: aleksis/core/models.py:1100 aleksis/core/templates/core/group/full.html:47
+#: aleksis/core/models.py:1110 aleksis/core/templates/core/group/full.html:50
 msgid "Group type"
 msgstr ""
 
-#: aleksis/core/models.py:1114
+#: aleksis/core/models.py:1124
 msgid "Can view system status"
 msgstr ""
 
-#: aleksis/core/models.py:1115
+#: aleksis/core/models.py:1125
 msgid "Can manage data"
 msgstr ""
 
-#: aleksis/core/models.py:1116
+#: aleksis/core/models.py:1126
 msgid "Can impersonate"
 msgstr ""
 
-#: aleksis/core/models.py:1117
+#: aleksis/core/models.py:1127
 msgid "Can use search"
 msgstr ""
 
-#: aleksis/core/models.py:1118
+#: aleksis/core/models.py:1128
 msgid "Can change site preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1119
+#: aleksis/core/models.py:1129
 msgid "Can change person preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1120
+#: aleksis/core/models.py:1130
 msgid "Can change group preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1121
+#: aleksis/core/models.py:1131
 msgid "Can test PDF generation"
 msgstr ""
 
-#: aleksis/core/models.py:1122
+#: aleksis/core/models.py:1132
 msgid "Can invite persons"
 msgstr ""
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1168
 msgid "Related data check task"
 msgstr ""
 
-#: aleksis/core/models.py:1166
+#: aleksis/core/models.py:1176
 msgid "Issue solved"
 msgstr ""
 
-#: aleksis/core/models.py:1167
+#: aleksis/core/models.py:1177
 msgid "Notification sent"
 msgstr ""
 
-#: aleksis/core/models.py:1180
+#: aleksis/core/models.py:1190
 msgid "Data check result"
 msgstr ""
 
-#: aleksis/core/models.py:1181
+#: aleksis/core/models.py:1191
 msgid "Data check results"
 msgstr ""
 
-#: aleksis/core/models.py:1183
+#: aleksis/core/models.py:1193
 msgid "Can run data checks"
 msgstr ""
 
-#: aleksis/core/models.py:1184
+#: aleksis/core/models.py:1194
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1191
+#: aleksis/core/models.py:1201
 msgid "E-Mail address"
 msgstr ""
 
-#: aleksis/core/models.py:1223
+#: aleksis/core/models.py:1233
 msgid "Owner"
 msgstr ""
 
-#: aleksis/core/models.py:1227
+#: aleksis/core/models.py:1237
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1229
+#: aleksis/core/models.py:1239
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1231
+#: aleksis/core/models.py:1241
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1238
+#: aleksis/core/models.py:1248
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1239
+#: aleksis/core/models.py:1249
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1244
+#: aleksis/core/models.py:1254
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1247
+#: aleksis/core/models.py:1257
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1259
+#: aleksis/core/models.py:1269
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1260
+#: aleksis/core/models.py:1270
 msgid "Task user assignments"
 msgstr ""
 
-#: aleksis/core/models.py:1276
+#: aleksis/core/models.py:1286
 msgid "Additional attributes"
 msgstr ""
 
-#: aleksis/core/models.py:1314
+#: aleksis/core/models.py:1324
 msgid "Allowed scopes that clients can request"
 msgstr ""
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1334
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr ""
 
-#: aleksis/core/models.py:1373
+#: aleksis/core/models.py:1383
 msgid "UUID"
 msgstr ""
 
-#: aleksis/core/models.py:1377
+#: aleksis/core/models.py:1387
 msgid "Selected ICal feed"
 msgstr ""
 
-#: aleksis/core/models.py:1386
+#: aleksis/core/models.py:1396
 msgid "Personal Calendar URL"
 msgstr ""
 
-#: aleksis/core/models.py:1387
+#: aleksis/core/models.py:1397
 msgid "Personal Calendar URLs"
 msgstr ""
 
@@ -1179,94 +1193,94 @@ msgstr ""
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr ""
 
-#: aleksis/core/preferences.py:344
-msgid "Available languages"
-msgstr ""
-
-#: aleksis/core/preferences.py:357
+#: aleksis/core/preferences.py:343
 msgid "Send emails if data checks detect problems"
 msgstr ""
 
-#: aleksis/core/preferences.py:368
+#: aleksis/core/preferences.py:354
 msgid "Email recipients for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:379
+#: aleksis/core/preferences.py:365
 msgid "Email recipient groups for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:388
+#: aleksis/core/preferences.py:374
 msgid "Show dashboard to users without login"
 msgstr ""
 
-#: aleksis/core/preferences.py:397
+#: aleksis/core/preferences.py:383
 msgid "Allow users to edit their dashboard"
 msgstr ""
 
-#: aleksis/core/preferences.py:408
+#: aleksis/core/preferences.py:394
 msgid "Fields on person model which are editable by themselves."
 msgstr ""
 
-#: aleksis/core/preferences.py:423
+#: aleksis/core/preferences.py:409
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr ""
 
-#: aleksis/core/preferences.py:437
+#: aleksis/core/preferences.py:423
 msgid "Contact for notification if a person changes their data"
 msgstr ""
 
-#: aleksis/core/preferences.py:448
+#: aleksis/core/preferences.py:434
 msgid "Prefer personal photos over avatars"
 msgstr ""
 
-#: aleksis/core/preferences.py:458
+#: aleksis/core/preferences.py:444
 msgid "PDF file expiration duration"
 msgstr ""
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:445
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/preferences.py:469
+#: aleksis/core/preferences.py:455
 msgid "Automatically update the dashboard and its widgets"
 msgstr ""
 
-#: aleksis/core/preferences.py:479
+#: aleksis/core/preferences.py:465
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr ""
 
-#: aleksis/core/preferences.py:489
+#: aleksis/core/preferences.py:475
 msgid "Country for phone number parsing"
 msgstr ""
 
-#: aleksis/core/settings.py:540
+#: aleksis/core/settings.py:541
 msgid "English"
 msgstr ""
 
-#: aleksis/core/settings.py:541
+#: aleksis/core/settings.py:542
 msgid "German"
 msgstr ""
 
-#: aleksis/core/tables.py:24
+#: aleksis/core/settings.py:543
+msgid "Ukrainian"
+msgstr ""
+
+#: aleksis/core/tables.py:25
 #: aleksis/core/templates/core/announcement/list.html:36
-#: aleksis/core/templates/core/group/full.html:24
+#: aleksis/core/templates/core/group/full.html:26
 #: aleksis/core/templates/core/person/full.html:26
 #: aleksis/core/templates/core/person/full.html:86
 #: aleksis/core/templates/oauth2_provider/application/detail.html:17
 msgid "Edit"
 msgstr ""
 
-#: aleksis/core/tables.py:26 aleksis/core/tables.py:94
-#: aleksis/core/tables.py:138
+#: aleksis/core/tables.py:27 aleksis/core/tables.py:148
+#: aleksis/core/tables.py:192
 #: aleksis/core/templates/core/announcement/list.html:22
 msgid "Actions"
 msgstr ""
 
-#: aleksis/core/tables.py:61 aleksis/core/tables.py:62
-#: aleksis/core/tables.py:76 aleksis/core/tables.py:92
-#: aleksis/core/tables.py:136
+#: aleksis/core/tables.py:115 aleksis/core/tables.py:116
+#: aleksis/core/tables.py:130 aleksis/core/tables.py:146
+#: aleksis/core/tables.py:190
 #: aleksis/core/templates/core/announcement/list.html:42
-#: aleksis/core/templates/core/group/full.html:31
+#: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
 #: aleksis/core/templates/core/person/full.html:33
 #: aleksis/core/templates/core/person/full.html:93
@@ -1305,7 +1319,7 @@ msgstr ""
 #: aleksis/core/templates/500.html:10
 msgid ""
 "An unexpected error has\n"
-"          occured."
+"          occurred."
 msgstr ""
 
 #: aleksis/core/templates/500.html:13
@@ -1805,34 +1819,34 @@ msgstr ""
 msgid "Edit group"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:38
+#: aleksis/core/templates/core/group/full.html:40
 #: aleksis/core/templates/core/person/full.html:40
 #: aleksis/core/templates/core/person/full.html:100
 msgid "Change preferences"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:64
+#: aleksis/core/templates/core/group/full.html:68
 msgid "Statistics"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:67
+#: aleksis/core/templates/core/group/full.html:73
 msgid "Count of members"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:71
+#: aleksis/core/templates/core/group/full.html:81
 msgid "Average age"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
+#: aleksis/core/templates/core/group/full.html:90
 msgid "Age range"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years to"
-msgstr ""
-
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years "
+#: aleksis/core/templates/core/group/full.html:93
+#, python-format
+msgid ""
+"\n"
+"              %(min)s years to %(max)s years\n"
+"            "
 msgstr ""
 
 #: aleksis/core/templates/core/group/list.html:14
@@ -1884,7 +1898,7 @@ msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:4
 #: aleksis/core/templates/core/ical/ical_list.html:5
-msgid "ICal Feeds"
+msgid "iCal Feeds"
 msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:8
@@ -2168,11 +2182,11 @@ msgstr ""
 msgid "Unknown"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:15
+#: aleksis/core/templates/core/partials/language_form.html:17
 msgid "Language"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:27
+#: aleksis/core/templates/core/partials/language_form.html:29
 msgid "Select language"
 msgstr ""
 
@@ -3090,168 +3104,168 @@ msgstr ""
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:292
+#: aleksis/core/views.py:294
 msgid "The school term has been created."
 msgstr ""
 
-#: aleksis/core/views.py:304
+#: aleksis/core/views.py:306
 msgid "The school term has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:424
+#: aleksis/core/views.py:426
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:443 aleksis/core/views.py:453
+#: aleksis/core/views.py:445 aleksis/core/views.py:455
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:503
+#: aleksis/core/views.py:505
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:600
+#: aleksis/core/views.py:602
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:616
+#: aleksis/core/views.py:618
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:684
+#: aleksis/core/views.py:686
 msgid "The requested preference registry does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:705
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:729
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:743
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:773
-msgid "The additional_field has been saved."
+#: aleksis/core/views.py:775
+msgid "The additional field has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:809
 msgid "The additional field has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:834
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:864
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:897
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:898
 msgid "Run data checks …"
 msgstr ""
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:899
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:900
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:916
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:924
+#: aleksis/core/views.py:926
 msgid "The requested solve option does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:958
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:988
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:998
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1067
+#: aleksis/core/views.py:1069
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1069
+#: aleksis/core/views.py:1071
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1145
+#: aleksis/core/views.py:1147
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr ""
 
-#: aleksis/core/views.py:1236
+#: aleksis/core/views.py:1238
 msgid "We have successfully assigned the permissions."
 msgstr ""
 
-#: aleksis/core/views.py:1246
+#: aleksis/core/views.py:1248
 msgid "The global user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1256
+#: aleksis/core/views.py:1258
 msgid "The global group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1266
+#: aleksis/core/views.py:1268
 msgid "The object user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1276
+#: aleksis/core/views.py:1278
 msgid "The object group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1344
+#: aleksis/core/views.py:1346
 msgid "The requested PDF file does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:1353 aleksis/core/views.py:1357
+#: aleksis/core/views.py:1355 aleksis/core/views.py:1359
 msgid "The requested task does not exist or is not accessible"
 msgstr ""
 
-#: aleksis/core/views.py:1409
+#: aleksis/core/views.py:1411
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1416
+#: aleksis/core/views.py:1418
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
-#: aleksis/core/views.py:1487
+#: aleksis/core/views.py:1489
 msgid "Person was invited successfully and an email with further instructions has been send to them."
 msgstr ""
 
-#: aleksis/core/views.py:1498
+#: aleksis/core/views.py:1500
 msgid "Person was already invited."
 msgstr ""
 
-#: aleksis/core/views.py:1598
-msgid "ICal feed updated successfully"
+#: aleksis/core/views.py:1600
+msgid "iCal feed updated successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1608
-msgid "ICal feed deleted successfully"
+#: aleksis/core/views.py:1610
+msgid "iCal feed deleted successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1616
-msgid "ICal feed created successfully"
+#: aleksis/core/views.py:1618
+msgid "iCal feed created successfully"
 msgstr ""
diff --git a/aleksis/core/locale/ru/LC_MESSAGES/djangojs.po b/aleksis/core/locale/ru/LC_MESSAGES/djangojs.po
index 6582e048b98e35a122c8c015c91a1e0fc5283362..1fa3254633c1db138c12b13fcf7f674c2a4499b2 100644
--- a/aleksis/core/locale/ru/LC_MESSAGES/djangojs.po
+++ b/aleksis/core/locale/ru/LC_MESSAGES/djangojs.po
@@ -7,18 +7,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: 2022-06-03 01:59+0000\n"
 "Last-Translator: Serhii Horichenko <m@sgg.im>\n"
-"Language-Team: Russian <https://translate.edugit.org/projects/aleksis/"
-"aleksis-core-js/ru/>\n"
+"Language-Team: Russian <https://translate.edugit.org/projects/aleksis/aleksis-core-js/ru/>\n"
 "Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
-"%100>=11 && n%100<=14)? 2 : 3);\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
 "X-Generator: Weblate 4.12.1\n"
 
 #: aleksis/core/static/js/main.js:66
@@ -35,6 +32,4 @@ msgstr "OK"
 
 #: aleksis/core/static/js/main.js:195
 msgid "This page may contain outdated information since there is no internet connection."
-msgstr ""
-"Из-за отсутствия интернета эта страница можеть отображать устаревшую "
-"информацию."
+msgstr "Из-за отсутствия интернета эта страница можеть отображать устаревшую информацию."
diff --git a/aleksis/core/locale/tr_TR/LC_MESSAGES/django.po b/aleksis/core/locale/tr_TR/LC_MESSAGES/django.po
index 09920d095f71a15fbf6707526c6f44ef76033eed..c6ea389cc19f7b8da9cd26512cca741c38b41311 100644
--- a/aleksis/core/locale/tr_TR/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/tr_TR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: AlekSIS (School Information System) 0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -38,33 +38,43 @@ msgid "Home and mobile phone"
 msgstr ""
 
 #: aleksis/core/apps.py:171 aleksis/core/forms.py:220 aleksis/core/menus.py:171
-#: aleksis/core/models.py:489 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/models.py:494 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:246
 msgid "Groups"
 msgstr ""
 
-#: aleksis/core/data_checks.py:56
+#: aleksis/core/data_checks.py:59
 msgid "Ignore problem"
 msgstr ""
 
-#: aleksis/core/data_checks.py:185
+#: aleksis/core/data_checks.py:188
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/data_checks.py:291
+#: aleksis/core/data_checks.py:294
 msgid "Deactivate DashboardWidget"
 msgstr ""
 
-#: aleksis/core/data_checks.py:303
+#: aleksis/core/data_checks.py:306
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr ""
 
-#: aleksis/core/data_checks.py:304
+#: aleksis/core/data_checks.py:307
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
+#: aleksis/core/data_checks.py:330
+#, python-format
+msgid "Validate field %s of model %s."
+msgstr ""
+
+#: aleksis/core/data_checks.py:332
+#, python-format
+msgid "The field %s couldn't be validated successfully."
+msgstr ""
+
 #: aleksis/core/feeds.py:52
 msgid "Birthday Calendar"
 msgstr ""
@@ -108,11 +118,11 @@ msgstr ""
 msgid "Content type"
 msgstr ""
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:715
+#: aleksis/core/filters.py:113 aleksis/core/models.py:720
 msgid "User"
 msgstr ""
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:488
+#: aleksis/core/filters.py:135 aleksis/core/models.py:493
 msgid "Group"
 msgstr ""
 
@@ -120,7 +130,7 @@ msgstr ""
 msgid "Base data"
 msgstr ""
 
-#: aleksis/core/forms.py:55
+#: aleksis/core/forms.py:55 aleksis/core/tables.py:47
 msgid "Address"
 msgstr ""
 
@@ -148,7 +158,7 @@ msgstr ""
 msgid "This username is already in use."
 msgstr ""
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:136
+#: aleksis/core/forms.py:153 aleksis/core/models.py:141
 msgid "School term"
 msgstr ""
 
@@ -157,7 +167,7 @@ msgid "Common data"
 msgstr ""
 
 #: aleksis/core/forms.py:155 aleksis/core/forms.py:207
-#: aleksis/core/menus.py:160 aleksis/core/models.py:159
+#: aleksis/core/menus.py:160 aleksis/core/models.py:164
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
@@ -167,18 +177,18 @@ msgstr ""
 msgid "Additional data"
 msgstr ""
 
-#: aleksis/core/forms.py:157 aleksis/core/models.py:212
-#: aleksis/core/models.py:541
+#: aleksis/core/forms.py:157 aleksis/core/models.py:217
+#: aleksis/core/models.py:546 aleksis/core/tables.py:46
 msgid "Photo"
 msgstr ""
 
 #: aleksis/core/forms.py:199 aleksis/core/forms.py:202
-#: aleksis/core/models.py:79
+#: aleksis/core/models.py:84
 msgid "Date"
 msgstr ""
 
 #: aleksis/core/forms.py:200 aleksis/core/forms.py:203
-#: aleksis/core/models.py:87
+#: aleksis/core/models.py:92
 msgid "Time"
 msgstr ""
 
@@ -214,11 +224,11 @@ msgstr ""
 msgid "Please enter your invitation code."
 msgstr ""
 
-#: aleksis/core/forms.py:418 aleksis/core/models.py:187
+#: aleksis/core/forms.py:418 aleksis/core/models.py:192
 msgid "First name"
 msgstr ""
 
-#: aleksis/core/forms.py:419 aleksis/core/models.py:188
+#: aleksis/core/forms.py:419 aleksis/core/models.py:193
 msgid "Last name"
 msgstr ""
 
@@ -321,13 +331,13 @@ msgstr ""
 msgid "Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:47 aleksis/core/models.py:867
+#: aleksis/core/menus.py:47 aleksis/core/models.py:872
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr ""
 
-#: aleksis/core/menus.py:58 aleksis/core/models.py:137
+#: aleksis/core/menus.py:58 aleksis/core/models.py:142
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
@@ -379,7 +389,7 @@ msgstr ""
 msgid "People"
 msgstr ""
 
-#: aleksis/core/menus.py:182 aleksis/core/models.py:1101
+#: aleksis/core/menus.py:182 aleksis/core/models.py:1111
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
@@ -389,7 +399,7 @@ msgstr ""
 msgid "Groups and child groups"
 msgstr ""
 
-#: aleksis/core/menus.py:204 aleksis/core/models.py:537
+#: aleksis/core/menus.py:204 aleksis/core/models.py:542
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 msgid "Additional fields"
@@ -456,581 +466,585 @@ msgstr ""
 msgid "Linked school term"
 msgstr ""
 
-#: aleksis/core/models.py:77
+#: aleksis/core/models.py:82
 msgid "Boolean (Yes/No)"
 msgstr ""
 
-#: aleksis/core/models.py:78
+#: aleksis/core/models.py:83
 msgid "Text (one line)"
 msgstr ""
 
-#: aleksis/core/models.py:80
+#: aleksis/core/models.py:85
 msgid "Date and time"
 msgstr ""
 
-#: aleksis/core/models.py:81
+#: aleksis/core/models.py:86
 msgid "Decimal number"
 msgstr ""
 
-#: aleksis/core/models.py:82 aleksis/core/models.py:205
+#: aleksis/core/models.py:87 aleksis/core/models.py:210
 msgid "E-mail address"
 msgstr ""
 
-#: aleksis/core/models.py:83
+#: aleksis/core/models.py:88
 msgid "Integer"
 msgstr ""
 
-#: aleksis/core/models.py:84
+#: aleksis/core/models.py:89
 msgid "IP address"
 msgstr ""
 
-#: aleksis/core/models.py:85
+#: aleksis/core/models.py:90
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr ""
 
-#: aleksis/core/models.py:86
+#: aleksis/core/models.py:91
 msgid "Text (multi-line)"
 msgstr ""
 
-#: aleksis/core/models.py:88
+#: aleksis/core/models.py:93
 msgid "URL / Link"
 msgstr ""
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:1070
-#: aleksis/core/models.py:1374
+#: aleksis/core/models.py:105 aleksis/core/models.py:1077
+#: aleksis/core/models.py:1384
 msgid "Name"
 msgstr ""
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:107
 msgid "Start date"
 msgstr ""
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:108
 msgid "End date"
 msgstr ""
 
-#: aleksis/core/models.py:122
+#: aleksis/core/models.py:127
 msgid "The start date must be earlier than the end date."
 msgstr ""
 
-#: aleksis/core/models.py:129
+#: aleksis/core/models.py:134
 msgid "There is already a school term for this time or a part of this time."
 msgstr ""
 
-#: aleksis/core/models.py:158 aleksis/core/models.py:1019
-#: aleksis/core/models.py:1371
+#: aleksis/core/models.py:163 aleksis/core/models.py:1024
+#: aleksis/core/models.py:1381
 msgid "Person"
 msgstr ""
 
-#: aleksis/core/models.py:161
+#: aleksis/core/models.py:166
 msgid "Can view address"
 msgstr ""
 
-#: aleksis/core/models.py:162
+#: aleksis/core/models.py:167
 msgid "Can view contact details"
 msgstr ""
 
-#: aleksis/core/models.py:163
+#: aleksis/core/models.py:168
 msgid "Can view photo"
 msgstr ""
 
-#: aleksis/core/models.py:164
+#: aleksis/core/models.py:169
 msgid "Can view avatar image"
 msgstr ""
 
-#: aleksis/core/models.py:165
+#: aleksis/core/models.py:170
 msgid "Can view persons groups"
 msgstr ""
 
-#: aleksis/core/models.py:166
+#: aleksis/core/models.py:171
 msgid "Can view personal details"
 msgstr ""
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "female"
 msgstr ""
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "male"
 msgstr ""
 
-#: aleksis/core/models.py:184 aleksis/core/models.py:1273
+#: aleksis/core/models.py:181
+msgid "other"
+msgstr ""
+
+#: aleksis/core/models.py:189 aleksis/core/models.py:1283
 msgid "Linked user"
 msgstr ""
 
-#: aleksis/core/models.py:190
+#: aleksis/core/models.py:195
 msgid "Additional name(s)"
 msgstr ""
 
-#: aleksis/core/models.py:194 aleksis/core/models.py:506
+#: aleksis/core/models.py:199 aleksis/core/models.py:511
 msgid "Short name"
 msgstr ""
 
-#: aleksis/core/models.py:197
+#: aleksis/core/models.py:202
 msgid "Street"
 msgstr ""
 
-#: aleksis/core/models.py:198
+#: aleksis/core/models.py:203
 msgid "Street number"
 msgstr ""
 
-#: aleksis/core/models.py:199
+#: aleksis/core/models.py:204
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/core/models.py:200
+#: aleksis/core/models.py:205
 msgid "Place"
 msgstr ""
 
-#: aleksis/core/models.py:202 aleksis/core/templates/core/person/full.html:160
+#: aleksis/core/models.py:207 aleksis/core/templates/core/person/full.html:160
 msgid "Home phone"
 msgstr ""
 
-#: aleksis/core/models.py:203 aleksis/core/templates/core/person/full.html:170
+#: aleksis/core/models.py:208 aleksis/core/templates/core/person/full.html:170
 msgid "Mobile phone"
 msgstr ""
 
-#: aleksis/core/models.py:207
+#: aleksis/core/models.py:212
 msgid "Date of birth"
 msgstr ""
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:213
 msgid "Place of birth"
 msgstr ""
 
-#: aleksis/core/models.py:209
+#: aleksis/core/models.py:214
 msgid "Sex"
 msgstr ""
 
-#: aleksis/core/models.py:216 aleksis/core/models.py:545
+#: aleksis/core/models.py:221 aleksis/core/models.py:550
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr ""
 
-#: aleksis/core/models.py:221 aleksis/core/models.py:549
+#: aleksis/core/models.py:226 aleksis/core/models.py:554
 msgid "Display picture / Avatar"
 msgstr ""
 
-#: aleksis/core/models.py:224 aleksis/core/models.py:552
+#: aleksis/core/models.py:229 aleksis/core/models.py:557
 msgid "This is a picture or an avatar for public display."
 msgstr ""
 
-#: aleksis/core/models.py:229 aleksis/core/templates/core/person/full.html:235
+#: aleksis/core/models.py:234 aleksis/core/templates/core/person/full.html:235
 msgid "Guardians / Parents"
 msgstr ""
 
-#: aleksis/core/models.py:236
+#: aleksis/core/models.py:241
 msgid "Primary group"
 msgstr ""
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:719
-#: aleksis/core/models.py:743 aleksis/core/models.py:834
-#: aleksis/core/models.py:1094
+#: aleksis/core/models.py:244 aleksis/core/models.py:724
+#: aleksis/core/models.py:748 aleksis/core/models.py:839
+#: aleksis/core/models.py:1104
 msgid "Description"
 msgstr ""
 
-#: aleksis/core/models.py:459
+#: aleksis/core/models.py:464
 msgid "Title of field"
 msgstr ""
 
-#: aleksis/core/models.py:461
+#: aleksis/core/models.py:466
 msgid "Type of field"
 msgstr ""
 
-#: aleksis/core/models.py:463
+#: aleksis/core/models.py:468
 msgid "Required"
 msgstr ""
 
-#: aleksis/core/models.py:464
+#: aleksis/core/models.py:469
 msgid "Help text / description"
 msgstr ""
 
-#: aleksis/core/models.py:470
+#: aleksis/core/models.py:475
 msgid "Addtitional field for groups"
 msgstr ""
 
-#: aleksis/core/models.py:471
+#: aleksis/core/models.py:476
 msgid "Addtitional fields for groups"
 msgstr ""
 
-#: aleksis/core/models.py:491
+#: aleksis/core/models.py:496
 msgid "Can assign child groups to groups"
 msgstr ""
 
-#: aleksis/core/models.py:492
+#: aleksis/core/models.py:497
 msgid "Can view statistics about group."
 msgstr ""
 
-#: aleksis/core/models.py:504
+#: aleksis/core/models.py:509
 msgid "Long name"
 msgstr ""
 
-#: aleksis/core/models.py:514 aleksis/core/templates/core/group/full.html:85
+#: aleksis/core/models.py:519 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr ""
 
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/full.html:82
+#: aleksis/core/models.py:522 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr ""
 
-#: aleksis/core/models.py:524 aleksis/core/templates/core/group/full.html:55
+#: aleksis/core/models.py:529 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr ""
 
-#: aleksis/core/models.py:532
+#: aleksis/core/models.py:537
 msgid "Type of group"
 msgstr ""
 
-#: aleksis/core/models.py:718 aleksis/core/models.py:742
-#: aleksis/core/models.py:833
+#: aleksis/core/models.py:723 aleksis/core/models.py:747
+#: aleksis/core/models.py:838
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr ""
 
-#: aleksis/core/models.py:721
+#: aleksis/core/models.py:726
 msgid "Application"
 msgstr ""
 
-#: aleksis/core/models.py:727
+#: aleksis/core/models.py:732
 msgid "Activity"
 msgstr ""
 
-#: aleksis/core/models.py:728
+#: aleksis/core/models.py:733
 msgid "Activities"
 msgstr ""
 
-#: aleksis/core/models.py:734
+#: aleksis/core/models.py:739
 msgid "Sender"
 msgstr ""
 
-#: aleksis/core/models.py:739
+#: aleksis/core/models.py:744
 msgid "Recipient"
 msgstr ""
 
-#: aleksis/core/models.py:744 aleksis/core/models.py:1071
+#: aleksis/core/models.py:749 aleksis/core/models.py:1078
 msgid "Link"
 msgstr ""
 
-#: aleksis/core/models.py:746
+#: aleksis/core/models.py:751
 msgid "Send notification at"
 msgstr ""
 
-#: aleksis/core/models.py:748
+#: aleksis/core/models.py:753
 msgid "Read"
 msgstr ""
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:754
 msgid "Sent"
 msgstr ""
 
-#: aleksis/core/models.py:766
+#: aleksis/core/models.py:771
 msgid "Notification"
 msgstr ""
 
-#: aleksis/core/models.py:767 aleksis/core/preferences.py:29
+#: aleksis/core/models.py:772 aleksis/core/preferences.py:29
 #: aleksis/core/templates/core/base.html:81
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr ""
 
-#: aleksis/core/models.py:835
+#: aleksis/core/models.py:840
 msgid "Link to detailed view"
 msgstr ""
 
-#: aleksis/core/models.py:838
+#: aleksis/core/models.py:843
 msgid "Date and time from when to show"
 msgstr ""
 
-#: aleksis/core/models.py:841
+#: aleksis/core/models.py:846
 msgid "Date and time until when to show"
 msgstr ""
 
-#: aleksis/core/models.py:866
+#: aleksis/core/models.py:871
 msgid "Announcement"
 msgstr ""
 
-#: aleksis/core/models.py:904
+#: aleksis/core/models.py:909
 msgid "Announcement recipient"
 msgstr ""
 
-#: aleksis/core/models.py:905
+#: aleksis/core/models.py:910
 msgid "Announcement recipients"
 msgstr ""
 
-#: aleksis/core/models.py:927
+#: aleksis/core/models.py:932
 msgid "Widget Title"
 msgstr ""
 
-#: aleksis/core/models.py:928
+#: aleksis/core/models.py:933
 msgid "Activate Widget"
 msgstr ""
 
-#: aleksis/core/models.py:929
+#: aleksis/core/models.py:934
 msgid "Widget is broken"
 msgstr ""
 
-#: aleksis/core/models.py:932
+#: aleksis/core/models.py:937
 msgid "Size on mobile devices"
 msgstr ""
 
-#: aleksis/core/models.py:933
+#: aleksis/core/models.py:938
 msgid "<= 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:938
+#: aleksis/core/models.py:943
 msgid "Size on tablet devices"
 msgstr ""
 
-#: aleksis/core/models.py:939
+#: aleksis/core/models.py:944
 msgid "> 600 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:944
+#: aleksis/core/models.py:949
 msgid "Size on desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:945
+#: aleksis/core/models.py:950
 msgid "> 992 px, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:950
+#: aleksis/core/models.py:955
 msgid "Size on large desktop devices"
 msgstr ""
 
-#: aleksis/core/models.py:951
+#: aleksis/core/models.py:956
 msgid "> 1200 px>, 12 columns"
 msgstr ""
 
-#: aleksis/core/models.py:982
+#: aleksis/core/models.py:987
 msgid "Can edit default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:983
+#: aleksis/core/models.py:988
 msgid "Dashboard Widget"
 msgstr ""
 
-#: aleksis/core/models.py:984
+#: aleksis/core/models.py:989
 msgid "Dashboard Widgets"
 msgstr ""
 
-#: aleksis/core/models.py:990
+#: aleksis/core/models.py:995
 msgid "URL"
 msgstr ""
 
-#: aleksis/core/models.py:991
+#: aleksis/core/models.py:996
 msgid "Icon URL"
 msgstr ""
 
-#: aleksis/core/models.py:997
+#: aleksis/core/models.py:1002
 msgid "External link widget"
 msgstr ""
 
-#: aleksis/core/models.py:998
+#: aleksis/core/models.py:1003
 msgid "External link widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1004
+#: aleksis/core/models.py:1009
 msgid "Content"
 msgstr ""
 
-#: aleksis/core/models.py:1010
+#: aleksis/core/models.py:1015
 msgid "Static content widget"
 msgstr ""
 
-#: aleksis/core/models.py:1011
+#: aleksis/core/models.py:1016
 msgid "Static content widgets"
 msgstr ""
 
-#: aleksis/core/models.py:1016
+#: aleksis/core/models.py:1021
 msgid "Dashboard widget"
 msgstr ""
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:1026
 msgid "Order"
 msgstr ""
 
-#: aleksis/core/models.py:1022
+#: aleksis/core/models.py:1027
 msgid "Part of the default dashboard"
 msgstr ""
 
-#: aleksis/core/models.py:1037
+#: aleksis/core/models.py:1042
 msgid "Dashboard widget order"
 msgstr ""
 
-#: aleksis/core/models.py:1038
+#: aleksis/core/models.py:1043
 msgid "Dashboard widget orders"
 msgstr ""
 
-#: aleksis/core/models.py:1044
+#: aleksis/core/models.py:1049
 msgid "Menu ID"
 msgstr ""
 
-#: aleksis/core/models.py:1057
+#: aleksis/core/models.py:1062
 msgid "Custom menu"
 msgstr ""
 
-#: aleksis/core/models.py:1058
+#: aleksis/core/models.py:1063
 msgid "Custom menus"
 msgstr ""
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:1075
 msgid "Menu"
 msgstr ""
 
-#: aleksis/core/models.py:1072 aleksis/core/models.py:1320
+#: aleksis/core/models.py:1079 aleksis/core/models.py:1330
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr ""
 
-#: aleksis/core/models.py:1078
+#: aleksis/core/models.py:1085
 msgid "Custom menu item"
 msgstr ""
 
-#: aleksis/core/models.py:1079
+#: aleksis/core/models.py:1086
 msgid "Custom menu items"
 msgstr ""
 
-#: aleksis/core/models.py:1093
+#: aleksis/core/models.py:1103
 msgid "Title of type"
 msgstr ""
 
-#: aleksis/core/models.py:1100 aleksis/core/templates/core/group/full.html:47
+#: aleksis/core/models.py:1110 aleksis/core/templates/core/group/full.html:50
 msgid "Group type"
 msgstr ""
 
-#: aleksis/core/models.py:1114
+#: aleksis/core/models.py:1124
 msgid "Can view system status"
 msgstr ""
 
-#: aleksis/core/models.py:1115
+#: aleksis/core/models.py:1125
 msgid "Can manage data"
 msgstr ""
 
-#: aleksis/core/models.py:1116
+#: aleksis/core/models.py:1126
 msgid "Can impersonate"
 msgstr ""
 
-#: aleksis/core/models.py:1117
+#: aleksis/core/models.py:1127
 msgid "Can use search"
 msgstr ""
 
-#: aleksis/core/models.py:1118
+#: aleksis/core/models.py:1128
 msgid "Can change site preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1119
+#: aleksis/core/models.py:1129
 msgid "Can change person preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1120
+#: aleksis/core/models.py:1130
 msgid "Can change group preferences"
 msgstr ""
 
-#: aleksis/core/models.py:1121
+#: aleksis/core/models.py:1131
 msgid "Can test PDF generation"
 msgstr ""
 
-#: aleksis/core/models.py:1122
+#: aleksis/core/models.py:1132
 msgid "Can invite persons"
 msgstr ""
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1168
 msgid "Related data check task"
 msgstr ""
 
-#: aleksis/core/models.py:1166
+#: aleksis/core/models.py:1176
 msgid "Issue solved"
 msgstr ""
 
-#: aleksis/core/models.py:1167
+#: aleksis/core/models.py:1177
 msgid "Notification sent"
 msgstr ""
 
-#: aleksis/core/models.py:1180
+#: aleksis/core/models.py:1190
 msgid "Data check result"
 msgstr ""
 
-#: aleksis/core/models.py:1181
+#: aleksis/core/models.py:1191
 msgid "Data check results"
 msgstr ""
 
-#: aleksis/core/models.py:1183
+#: aleksis/core/models.py:1193
 msgid "Can run data checks"
 msgstr ""
 
-#: aleksis/core/models.py:1184
+#: aleksis/core/models.py:1194
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1191
+#: aleksis/core/models.py:1201
 msgid "E-Mail address"
 msgstr ""
 
-#: aleksis/core/models.py:1223
+#: aleksis/core/models.py:1233
 msgid "Owner"
 msgstr ""
 
-#: aleksis/core/models.py:1227
+#: aleksis/core/models.py:1237
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1229
+#: aleksis/core/models.py:1239
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1231
+#: aleksis/core/models.py:1241
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1238
+#: aleksis/core/models.py:1248
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1239
+#: aleksis/core/models.py:1249
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1244
+#: aleksis/core/models.py:1254
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1247
+#: aleksis/core/models.py:1257
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1259
+#: aleksis/core/models.py:1269
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1260
+#: aleksis/core/models.py:1270
 msgid "Task user assignments"
 msgstr ""
 
-#: aleksis/core/models.py:1276
+#: aleksis/core/models.py:1286
 msgid "Additional attributes"
 msgstr ""
 
-#: aleksis/core/models.py:1314
+#: aleksis/core/models.py:1324
 msgid "Allowed scopes that clients can request"
 msgstr ""
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1334
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr ""
 
-#: aleksis/core/models.py:1373
+#: aleksis/core/models.py:1383
 msgid "UUID"
 msgstr ""
 
-#: aleksis/core/models.py:1377
+#: aleksis/core/models.py:1387
 msgid "Selected ICal feed"
 msgstr ""
 
-#: aleksis/core/models.py:1386
+#: aleksis/core/models.py:1396
 msgid "Personal Calendar URL"
 msgstr ""
 
-#: aleksis/core/models.py:1387
+#: aleksis/core/models.py:1397
 msgid "Personal Calendar URLs"
 msgstr ""
 
@@ -1178,94 +1192,94 @@ msgstr ""
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr ""
 
-#: aleksis/core/preferences.py:344
-msgid "Available languages"
-msgstr ""
-
-#: aleksis/core/preferences.py:357
+#: aleksis/core/preferences.py:343
 msgid "Send emails if data checks detect problems"
 msgstr ""
 
-#: aleksis/core/preferences.py:368
+#: aleksis/core/preferences.py:354
 msgid "Email recipients for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:379
+#: aleksis/core/preferences.py:365
 msgid "Email recipient groups for data checks problem emails"
 msgstr ""
 
-#: aleksis/core/preferences.py:388
+#: aleksis/core/preferences.py:374
 msgid "Show dashboard to users without login"
 msgstr ""
 
-#: aleksis/core/preferences.py:397
+#: aleksis/core/preferences.py:383
 msgid "Allow users to edit their dashboard"
 msgstr ""
 
-#: aleksis/core/preferences.py:408
+#: aleksis/core/preferences.py:394
 msgid "Fields on person model which are editable by themselves."
 msgstr ""
 
-#: aleksis/core/preferences.py:423
+#: aleksis/core/preferences.py:409
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr ""
 
-#: aleksis/core/preferences.py:437
+#: aleksis/core/preferences.py:423
 msgid "Contact for notification if a person changes their data"
 msgstr ""
 
-#: aleksis/core/preferences.py:448
+#: aleksis/core/preferences.py:434
 msgid "Prefer personal photos over avatars"
 msgstr ""
 
-#: aleksis/core/preferences.py:458
+#: aleksis/core/preferences.py:444
 msgid "PDF file expiration duration"
 msgstr ""
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:445
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/preferences.py:469
+#: aleksis/core/preferences.py:455
 msgid "Automatically update the dashboard and its widgets"
 msgstr ""
 
-#: aleksis/core/preferences.py:479
+#: aleksis/core/preferences.py:465
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr ""
 
-#: aleksis/core/preferences.py:489
+#: aleksis/core/preferences.py:475
 msgid "Country for phone number parsing"
 msgstr ""
 
-#: aleksis/core/settings.py:540
+#: aleksis/core/settings.py:541
 msgid "English"
 msgstr ""
 
-#: aleksis/core/settings.py:541
+#: aleksis/core/settings.py:542
 msgid "German"
 msgstr ""
 
-#: aleksis/core/tables.py:24
+#: aleksis/core/settings.py:543
+msgid "Ukrainian"
+msgstr ""
+
+#: aleksis/core/tables.py:25
 #: aleksis/core/templates/core/announcement/list.html:36
-#: aleksis/core/templates/core/group/full.html:24
+#: aleksis/core/templates/core/group/full.html:26
 #: aleksis/core/templates/core/person/full.html:26
 #: aleksis/core/templates/core/person/full.html:86
 #: aleksis/core/templates/oauth2_provider/application/detail.html:17
 msgid "Edit"
 msgstr ""
 
-#: aleksis/core/tables.py:26 aleksis/core/tables.py:94
-#: aleksis/core/tables.py:138
+#: aleksis/core/tables.py:27 aleksis/core/tables.py:148
+#: aleksis/core/tables.py:192
 #: aleksis/core/templates/core/announcement/list.html:22
 msgid "Actions"
 msgstr ""
 
-#: aleksis/core/tables.py:61 aleksis/core/tables.py:62
-#: aleksis/core/tables.py:76 aleksis/core/tables.py:92
-#: aleksis/core/tables.py:136
+#: aleksis/core/tables.py:115 aleksis/core/tables.py:116
+#: aleksis/core/tables.py:130 aleksis/core/tables.py:146
+#: aleksis/core/tables.py:190
 #: aleksis/core/templates/core/announcement/list.html:42
-#: aleksis/core/templates/core/group/full.html:31
+#: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
 #: aleksis/core/templates/core/person/full.html:33
 #: aleksis/core/templates/core/person/full.html:93
@@ -1304,7 +1318,7 @@ msgstr ""
 #: aleksis/core/templates/500.html:10
 msgid ""
 "An unexpected error has\n"
-"          occured."
+"          occurred."
 msgstr ""
 
 #: aleksis/core/templates/500.html:13
@@ -1804,34 +1818,34 @@ msgstr ""
 msgid "Edit group"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:38
+#: aleksis/core/templates/core/group/full.html:40
 #: aleksis/core/templates/core/person/full.html:40
 #: aleksis/core/templates/core/person/full.html:100
 msgid "Change preferences"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:64
+#: aleksis/core/templates/core/group/full.html:68
 msgid "Statistics"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:67
+#: aleksis/core/templates/core/group/full.html:73
 msgid "Count of members"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:71
+#: aleksis/core/templates/core/group/full.html:81
 msgid "Average age"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
+#: aleksis/core/templates/core/group/full.html:90
 msgid "Age range"
 msgstr ""
 
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years to"
-msgstr ""
-
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years "
+#: aleksis/core/templates/core/group/full.html:93
+#, python-format
+msgid ""
+"\n"
+"              %(min)s years to %(max)s years\n"
+"            "
 msgstr ""
 
 #: aleksis/core/templates/core/group/list.html:14
@@ -1883,7 +1897,7 @@ msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:4
 #: aleksis/core/templates/core/ical/ical_list.html:5
-msgid "ICal Feeds"
+msgid "iCal Feeds"
 msgstr ""
 
 #: aleksis/core/templates/core/ical/ical_list.html:8
@@ -2167,11 +2181,11 @@ msgstr ""
 msgid "Unknown"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:15
+#: aleksis/core/templates/core/partials/language_form.html:17
 msgid "Language"
 msgstr ""
 
-#: aleksis/core/templates/core/partials/language_form.html:27
+#: aleksis/core/templates/core/partials/language_form.html:29
 msgid "Select language"
 msgstr ""
 
@@ -3089,168 +3103,168 @@ msgstr ""
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:292
+#: aleksis/core/views.py:294
 msgid "The school term has been created."
 msgstr ""
 
-#: aleksis/core/views.py:304
+#: aleksis/core/views.py:306
 msgid "The school term has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:424
+#: aleksis/core/views.py:426
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:443 aleksis/core/views.py:453
+#: aleksis/core/views.py:445 aleksis/core/views.py:455
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:503
+#: aleksis/core/views.py:505
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:600
+#: aleksis/core/views.py:602
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:616
+#: aleksis/core/views.py:618
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:684
+#: aleksis/core/views.py:686
 msgid "The requested preference registry does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:705
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:729
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:743
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:773
-msgid "The additional_field has been saved."
+#: aleksis/core/views.py:775
+msgid "The additional field has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:809
 msgid "The additional field has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:834
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:864
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:897
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:898
 msgid "Run data checks …"
 msgstr ""
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:899
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:900
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:916
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:924
+#: aleksis/core/views.py:926
 msgid "The requested solve option does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:958
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:988
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:998
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1067
+#: aleksis/core/views.py:1069
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1069
+#: aleksis/core/views.py:1071
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1145
+#: aleksis/core/views.py:1147
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr ""
 
-#: aleksis/core/views.py:1236
+#: aleksis/core/views.py:1238
 msgid "We have successfully assigned the permissions."
 msgstr ""
 
-#: aleksis/core/views.py:1246
+#: aleksis/core/views.py:1248
 msgid "The global user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1256
+#: aleksis/core/views.py:1258
 msgid "The global group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1266
+#: aleksis/core/views.py:1268
 msgid "The object user permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1276
+#: aleksis/core/views.py:1278
 msgid "The object group permission has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1344
+#: aleksis/core/views.py:1346
 msgid "The requested PDF file does not exist"
 msgstr ""
 
-#: aleksis/core/views.py:1353 aleksis/core/views.py:1357
+#: aleksis/core/views.py:1355 aleksis/core/views.py:1359
 msgid "The requested task does not exist or is not accessible"
 msgstr ""
 
-#: aleksis/core/views.py:1409
+#: aleksis/core/views.py:1411
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1416
+#: aleksis/core/views.py:1418
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
-#: aleksis/core/views.py:1487
+#: aleksis/core/views.py:1489
 msgid "Person was invited successfully and an email with further instructions has been send to them."
 msgstr ""
 
-#: aleksis/core/views.py:1498
+#: aleksis/core/views.py:1500
 msgid "Person was already invited."
 msgstr ""
 
-#: aleksis/core/views.py:1598
-msgid "ICal feed updated successfully"
+#: aleksis/core/views.py:1600
+msgid "iCal feed updated successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1608
-msgid "ICal feed deleted successfully"
+#: aleksis/core/views.py:1610
+msgid "iCal feed deleted successfully"
 msgstr ""
 
-#: aleksis/core/views.py:1616
-msgid "ICal feed created successfully"
+#: aleksis/core/views.py:1618
+msgid "iCal feed created successfully"
 msgstr ""
diff --git a/aleksis/core/locale/tr_TR/LC_MESSAGES/djangojs.po b/aleksis/core/locale/tr_TR/LC_MESSAGES/djangojs.po
index 509b8a65f4bdbc6ac9c1ec0282c1ff99b6f1f8c1..26f9dbd80e1c93710efaf2abf60ffd0754e043b6 100644
--- a/aleksis/core/locale/tr_TR/LC_MESSAGES/djangojs.po
+++ b/aleksis/core/locale/tr_TR/LC_MESSAGES/djangojs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/aleksis/core/locale/uk/LC_MESSAGES/django.po b/aleksis/core/locale/uk/LC_MESSAGES/django.po
index 2334b98a3d6953ce835a80369615359e8ac25d5e..659a5366fee10cdd69133c58278fb8c82441fe77 100644
--- a/aleksis/core/locale/uk/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/uk/LC_MESSAGES/django.po
@@ -7,19 +7,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: 2022-06-01 17:35+0000\n"
 "Last-Translator: Serhii Horichenko <m@sgg.im>\n"
-"Language-Team: Ukrainian <https://translate.edugit.org/projects/aleksis/"
-"aleksis-core/uk/>\n"
+"Language-Team: Ukrainian <https://translate.edugit.org/projects/aleksis/aleksis-core/uk/>\n"
 "Language: uk\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 "
-"? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > "
-"14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % "
-"100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
+"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
 "X-Generator: Weblate 4.12.1\n"
 
 #: aleksis/core/apps.py:166
@@ -43,33 +39,44 @@ msgid "Home and mobile phone"
 msgstr "Домашній та мобільний телефон"
 
 #: aleksis/core/apps.py:171 aleksis/core/forms.py:220 aleksis/core/menus.py:171
-#: aleksis/core/models.py:489 aleksis/core/templates/core/group/list.html:8
+#: aleksis/core/models.py:494 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:246
 msgid "Groups"
 msgstr "Групи"
 
-#: aleksis/core/data_checks.py:56
+#: aleksis/core/data_checks.py:59
 msgid "Ignore problem"
 msgstr "Ігнорувати проблему"
 
-#: aleksis/core/data_checks.py:185
+#: aleksis/core/data_checks.py:188
 #, python-brace-format
 msgid "Solve option '{solve_option_obj.verbose_name}' "
 msgstr "Варіант розв'язання '{solve_option_obj.verbose_name}' "
 
-#: aleksis/core/data_checks.py:291
+#: aleksis/core/data_checks.py:294
 msgid "Deactivate DashboardWidget"
 msgstr "Вимкнути віджет інформпанелі"
 
-#: aleksis/core/data_checks.py:303
+#: aleksis/core/data_checks.py:306
 msgid "Ensure that there are no broken DashboardWidgets."
 msgstr "Переконайтеся у відсутності збійних віджетів на інформпанелі."
 
-#: aleksis/core/data_checks.py:304
+#: aleksis/core/data_checks.py:307
 msgid "The DashboardWidget was reported broken automatically."
 msgstr "Віджет інформпанелі повідомив про збій в автоматичному режимі."
 
+#: aleksis/core/data_checks.py:330
+#, python-format
+msgid "Validate field %s of model %s."
+msgstr ""
+
+#: aleksis/core/data_checks.py:332
+#, fuzzy, python-format
+#| msgid "The PDF file has been generated successfully."
+msgid "The field %s couldn't be validated successfully."
+msgstr "Файл PDF успішно створений."
+
 #: aleksis/core/feeds.py:52
 msgid "Birthday Calendar"
 msgstr "Календар Днів Народження"
@@ -113,11 +120,11 @@ msgstr "Дозвіл"
 msgid "Content type"
 msgstr "Тип змісту"
 
-#: aleksis/core/filters.py:113 aleksis/core/models.py:715
+#: aleksis/core/filters.py:113 aleksis/core/models.py:720
 msgid "User"
 msgstr "Користувач"
 
-#: aleksis/core/filters.py:135 aleksis/core/models.py:488
+#: aleksis/core/filters.py:135 aleksis/core/models.py:493
 msgid "Group"
 msgstr "Група"
 
@@ -125,7 +132,7 @@ msgstr "Група"
 msgid "Base data"
 msgstr "Основні дані"
 
-#: aleksis/core/forms.py:55
+#: aleksis/core/forms.py:55 aleksis/core/tables.py:47
 msgid "Address"
 msgstr "Адреса"
 
@@ -153,7 +160,7 @@ msgstr "Обравши вже існуючого користувача немо
 msgid "This username is already in use."
 msgstr "Такий логін вже зайнятий."
 
-#: aleksis/core/forms.py:153 aleksis/core/models.py:136
+#: aleksis/core/forms.py:153 aleksis/core/models.py:141
 msgid "School term"
 msgstr "Навчальний рік"
 
@@ -162,7 +169,7 @@ msgid "Common data"
 msgstr "Загальні дані"
 
 #: aleksis/core/forms.py:155 aleksis/core/forms.py:207
-#: aleksis/core/menus.py:160 aleksis/core/models.py:159
+#: aleksis/core/menus.py:160 aleksis/core/models.py:164
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
@@ -172,18 +179,18 @@ msgstr "Особи"
 msgid "Additional data"
 msgstr "Додаткові дані"
 
-#: aleksis/core/forms.py:157 aleksis/core/models.py:212
-#: aleksis/core/models.py:541
+#: aleksis/core/forms.py:157 aleksis/core/models.py:217
+#: aleksis/core/models.py:546 aleksis/core/tables.py:46
 msgid "Photo"
 msgstr "Фото"
 
 #: aleksis/core/forms.py:199 aleksis/core/forms.py:202
-#: aleksis/core/models.py:79
+#: aleksis/core/models.py:84
 msgid "Date"
 msgstr "Дата"
 
 #: aleksis/core/forms.py:200 aleksis/core/forms.py:203
-#: aleksis/core/models.py:87
+#: aleksis/core/models.py:92
 msgid "Time"
 msgstr "Час"
 
@@ -219,11 +226,11 @@ msgstr "Код запрошення"
 msgid "Please enter your invitation code."
 msgstr "Напишіть, будь ласка, свій код запрошення."
 
-#: aleksis/core/forms.py:418 aleksis/core/models.py:187
+#: aleksis/core/forms.py:418 aleksis/core/models.py:192
 msgid "First name"
 msgstr "Ім'я"
 
-#: aleksis/core/forms.py:419 aleksis/core/models.py:188
+#: aleksis/core/forms.py:419 aleksis/core/models.py:193
 msgid "Last name"
 msgstr "Прізвище"
 
@@ -326,13 +333,13 @@ msgstr "Інформпанель"
 msgid "Admin"
 msgstr "Адмін"
 
-#: aleksis/core/menus.py:47 aleksis/core/models.py:867
+#: aleksis/core/menus.py:47 aleksis/core/models.py:872
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr "Оголошення"
 
-#: aleksis/core/menus.py:58 aleksis/core/models.py:137
+#: aleksis/core/menus.py:58 aleksis/core/models.py:142
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
@@ -384,7 +391,7 @@ msgstr "Додатки OAuth2"
 msgid "People"
 msgstr "Люди"
 
-#: aleksis/core/menus.py:182 aleksis/core/models.py:1101
+#: aleksis/core/menus.py:182 aleksis/core/models.py:1111
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
@@ -394,7 +401,7 @@ msgstr "Типи груп"
 msgid "Groups and child groups"
 msgstr "Групи та підлеглі групи"
 
-#: aleksis/core/menus.py:204 aleksis/core/models.py:537
+#: aleksis/core/menus.py:204 aleksis/core/models.py:542
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 msgid "Additional fields"
@@ -461,581 +468,585 @@ msgstr "Вийти"
 msgid "Linked school term"
 msgstr "Пов'язаний навчальний рік"
 
-#: aleksis/core/models.py:77
+#: aleksis/core/models.py:82
 msgid "Boolean (Yes/No)"
 msgstr "Логічне (Так/Ні)"
 
-#: aleksis/core/models.py:78
+#: aleksis/core/models.py:83
 msgid "Text (one line)"
 msgstr "Текст (один рядок)"
 
-#: aleksis/core/models.py:80
+#: aleksis/core/models.py:85
 msgid "Date and time"
 msgstr "Дата і час"
 
-#: aleksis/core/models.py:81
+#: aleksis/core/models.py:86
 msgid "Decimal number"
 msgstr "Десятичне число"
 
-#: aleksis/core/models.py:82 aleksis/core/models.py:205
+#: aleksis/core/models.py:87 aleksis/core/models.py:210
 msgid "E-mail address"
 msgstr "Адреса ел.пошти"
 
-#: aleksis/core/models.py:83
+#: aleksis/core/models.py:88
 msgid "Integer"
 msgstr "Ціле"
 
-#: aleksis/core/models.py:84
+#: aleksis/core/models.py:89
 msgid "IP address"
 msgstr "IP адреса"
 
-#: aleksis/core/models.py:85
+#: aleksis/core/models.py:90
 msgid "Boolean or empty (Yes/No/Neither)"
 msgstr "Логічне або порожнє (Так/Ні/Нічого)"
 
-#: aleksis/core/models.py:86
+#: aleksis/core/models.py:91
 msgid "Text (multi-line)"
 msgstr "Текст (багаторядковий)"
 
-#: aleksis/core/models.py:88
+#: aleksis/core/models.py:93
 msgid "URL / Link"
 msgstr "URL / Посилання"
 
-#: aleksis/core/models.py:100 aleksis/core/models.py:1070
-#: aleksis/core/models.py:1374
+#: aleksis/core/models.py:105 aleksis/core/models.py:1077
+#: aleksis/core/models.py:1384
 msgid "Name"
 msgstr "Повне ім'я"
 
-#: aleksis/core/models.py:102
+#: aleksis/core/models.py:107
 msgid "Start date"
 msgstr "Дата початку"
 
-#: aleksis/core/models.py:103
+#: aleksis/core/models.py:108
 msgid "End date"
 msgstr "Дата закінчення"
 
-#: aleksis/core/models.py:122
+#: aleksis/core/models.py:127
 msgid "The start date must be earlier than the end date."
 msgstr "Початкова дата повинна бути раніше кінцевої."
 
-#: aleksis/core/models.py:129
+#: aleksis/core/models.py:134
 msgid "There is already a school term for this time or a part of this time."
 msgstr "На цей час або на частину цього часу вже припадає навчальний рік."
 
-#: aleksis/core/models.py:158 aleksis/core/models.py:1019
-#: aleksis/core/models.py:1371
+#: aleksis/core/models.py:163 aleksis/core/models.py:1024
+#: aleksis/core/models.py:1381
 msgid "Person"
 msgstr "Особа"
 
-#: aleksis/core/models.py:161
+#: aleksis/core/models.py:166
 msgid "Can view address"
 msgstr "Може бачити адресу"
 
-#: aleksis/core/models.py:162
+#: aleksis/core/models.py:167
 msgid "Can view contact details"
 msgstr "Може бачити контактні дані"
 
-#: aleksis/core/models.py:163
+#: aleksis/core/models.py:168
 msgid "Can view photo"
 msgstr "Може бачити фото"
 
-#: aleksis/core/models.py:164
+#: aleksis/core/models.py:169
 msgid "Can view avatar image"
 msgstr "Може бачити аватар"
 
-#: aleksis/core/models.py:165
+#: aleksis/core/models.py:170
 msgid "Can view persons groups"
 msgstr "Може бачити групи особи"
 
-#: aleksis/core/models.py:166
+#: aleksis/core/models.py:171
 msgid "Can view personal details"
 msgstr "Може бачити особисті дані"
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "female"
 msgstr "жін"
 
-#: aleksis/core/models.py:176
+#: aleksis/core/models.py:181
 msgid "male"
 msgstr "чол"
 
-#: aleksis/core/models.py:184 aleksis/core/models.py:1273
+#: aleksis/core/models.py:181
+msgid "other"
+msgstr ""
+
+#: aleksis/core/models.py:189 aleksis/core/models.py:1283
 msgid "Linked user"
 msgstr "Пов'язаний користувач"
 
-#: aleksis/core/models.py:190
+#: aleksis/core/models.py:195
 msgid "Additional name(s)"
 msgstr "Додаткові імена"
 
-#: aleksis/core/models.py:194 aleksis/core/models.py:506
+#: aleksis/core/models.py:199 aleksis/core/models.py:511
 msgid "Short name"
 msgstr "Коротке ім'я"
 
-#: aleksis/core/models.py:197
+#: aleksis/core/models.py:202
 msgid "Street"
 msgstr "Вулиця"
 
-#: aleksis/core/models.py:198
+#: aleksis/core/models.py:203
 msgid "Street number"
 msgstr "Номер будинку"
 
-#: aleksis/core/models.py:199
+#: aleksis/core/models.py:204
 msgid "Postal code"
 msgstr "Поштовий індекс"
 
-#: aleksis/core/models.py:200
+#: aleksis/core/models.py:205
 msgid "Place"
 msgstr "Місто"
 
-#: aleksis/core/models.py:202 aleksis/core/templates/core/person/full.html:160
+#: aleksis/core/models.py:207 aleksis/core/templates/core/person/full.html:160
 msgid "Home phone"
 msgstr "Домашній телефон"
 
-#: aleksis/core/models.py:203 aleksis/core/templates/core/person/full.html:170
+#: aleksis/core/models.py:208 aleksis/core/templates/core/person/full.html:170
 msgid "Mobile phone"
 msgstr "Мобільний телефон"
 
-#: aleksis/core/models.py:207
+#: aleksis/core/models.py:212
 msgid "Date of birth"
 msgstr "Дата народження"
 
-#: aleksis/core/models.py:208
+#: aleksis/core/models.py:213
 msgid "Place of birth"
 msgstr "Місце народження"
 
-#: aleksis/core/models.py:209
+#: aleksis/core/models.py:214
 msgid "Sex"
 msgstr "Стать"
 
-#: aleksis/core/models.py:216 aleksis/core/models.py:545
+#: aleksis/core/models.py:221 aleksis/core/models.py:550
 msgid "This is an official photo, used for official documents and for internal use cases."
 msgstr "Це офіційне фото, яке використовується для документів та внутрішніх потреб."
 
-#: aleksis/core/models.py:221 aleksis/core/models.py:549
+#: aleksis/core/models.py:226 aleksis/core/models.py:554
 msgid "Display picture / Avatar"
 msgstr "Відобразити фото/аватар"
 
-#: aleksis/core/models.py:224 aleksis/core/models.py:552
+#: aleksis/core/models.py:229 aleksis/core/models.py:557
 msgid "This is a picture or an avatar for public display."
 msgstr "Це фото або аватар для загального відображення."
 
-#: aleksis/core/models.py:229 aleksis/core/templates/core/person/full.html:235
+#: aleksis/core/models.py:234 aleksis/core/templates/core/person/full.html:235
 msgid "Guardians / Parents"
 msgstr "Опікуни / батьки"
 
-#: aleksis/core/models.py:236
+#: aleksis/core/models.py:241
 msgid "Primary group"
 msgstr "Основна група"
 
-#: aleksis/core/models.py:239 aleksis/core/models.py:719
-#: aleksis/core/models.py:743 aleksis/core/models.py:834
-#: aleksis/core/models.py:1094
+#: aleksis/core/models.py:244 aleksis/core/models.py:724
+#: aleksis/core/models.py:748 aleksis/core/models.py:839
+#: aleksis/core/models.py:1104
 msgid "Description"
 msgstr "Опис"
 
-#: aleksis/core/models.py:459
+#: aleksis/core/models.py:464
 msgid "Title of field"
 msgstr "Назва поля"
 
-#: aleksis/core/models.py:461
+#: aleksis/core/models.py:466
 msgid "Type of field"
 msgstr "Тип поля"
 
-#: aleksis/core/models.py:463
+#: aleksis/core/models.py:468
 msgid "Required"
 msgstr "Необхідне"
 
-#: aleksis/core/models.py:464
+#: aleksis/core/models.py:469
 msgid "Help text / description"
 msgstr "Допоміжний текст/опис"
 
-#: aleksis/core/models.py:470
+#: aleksis/core/models.py:475
 msgid "Addtitional field for groups"
 msgstr "Додаткове поле для груп"
 
-#: aleksis/core/models.py:471
+#: aleksis/core/models.py:476
 msgid "Addtitional fields for groups"
 msgstr "Додаткові поля для груп"
 
-#: aleksis/core/models.py:491
+#: aleksis/core/models.py:496
 msgid "Can assign child groups to groups"
 msgstr "Може призначати підлеглі групи до груп"
 
-#: aleksis/core/models.py:492
+#: aleksis/core/models.py:497
 msgid "Can view statistics about group."
 msgstr "Може бачити статистику групи."
 
-#: aleksis/core/models.py:504
+#: aleksis/core/models.py:509
 msgid "Long name"
 msgstr "Довге ім'я"
 
-#: aleksis/core/models.py:514 aleksis/core/templates/core/group/full.html:85
+#: aleksis/core/models.py:519 aleksis/core/templates/core/group/full.html:105
 msgid "Members"
 msgstr "Учасники"
 
-#: aleksis/core/models.py:517 aleksis/core/templates/core/group/full.html:82
+#: aleksis/core/models.py:522 aleksis/core/templates/core/group/full.html:102
 msgid "Owners"
 msgstr "Власники"
 
-#: aleksis/core/models.py:524 aleksis/core/templates/core/group/full.html:55
+#: aleksis/core/models.py:529 aleksis/core/templates/core/group/full.html:59
 msgid "Parent groups"
 msgstr "Батьківські групи"
 
-#: aleksis/core/models.py:532
+#: aleksis/core/models.py:537
 msgid "Type of group"
 msgstr "Тип групи"
 
-#: aleksis/core/models.py:718 aleksis/core/models.py:742
-#: aleksis/core/models.py:833
+#: aleksis/core/models.py:723 aleksis/core/models.py:747
+#: aleksis/core/models.py:838
 #: aleksis/core/templates/core/announcement/list.html:18
 msgid "Title"
 msgstr "Назва"
 
-#: aleksis/core/models.py:721
+#: aleksis/core/models.py:726
 msgid "Application"
 msgstr "Додаток"
 
-#: aleksis/core/models.py:727
+#: aleksis/core/models.py:732
 msgid "Activity"
 msgstr "Активність"
 
-#: aleksis/core/models.py:728
+#: aleksis/core/models.py:733
 msgid "Activities"
 msgstr "Активності"
 
-#: aleksis/core/models.py:734
+#: aleksis/core/models.py:739
 msgid "Sender"
 msgstr "Відправник"
 
-#: aleksis/core/models.py:739
+#: aleksis/core/models.py:744
 msgid "Recipient"
 msgstr "Отримувач"
 
-#: aleksis/core/models.py:744 aleksis/core/models.py:1071
+#: aleksis/core/models.py:749 aleksis/core/models.py:1078
 msgid "Link"
 msgstr "Посилання"
 
-#: aleksis/core/models.py:746
+#: aleksis/core/models.py:751
 msgid "Send notification at"
 msgstr "Надіслати сповіщення о"
 
-#: aleksis/core/models.py:748
+#: aleksis/core/models.py:753
 msgid "Read"
 msgstr "Читати"
 
-#: aleksis/core/models.py:749
+#: aleksis/core/models.py:754
 msgid "Sent"
 msgstr "Надіслано"
 
-#: aleksis/core/models.py:766
+#: aleksis/core/models.py:771
 msgid "Notification"
 msgstr "Сповіщення"
 
-#: aleksis/core/models.py:767 aleksis/core/preferences.py:29
+#: aleksis/core/models.py:772 aleksis/core/preferences.py:29
 #: aleksis/core/templates/core/base.html:81
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr "Сповіщення"
 
-#: aleksis/core/models.py:835
+#: aleksis/core/models.py:840
 msgid "Link to detailed view"
 msgstr "Посилання на детальний перегляд"
 
-#: aleksis/core/models.py:838
+#: aleksis/core/models.py:843
 msgid "Date and time from when to show"
 msgstr "Дата і час, з якого показувати"
 
-#: aleksis/core/models.py:841
+#: aleksis/core/models.py:846
 msgid "Date and time until when to show"
 msgstr "Дата і час, до якого показувати"
 
-#: aleksis/core/models.py:866
+#: aleksis/core/models.py:871
 msgid "Announcement"
 msgstr "Оголошення"
 
-#: aleksis/core/models.py:904
+#: aleksis/core/models.py:909
 msgid "Announcement recipient"
 msgstr "Отримувач оголошення"
 
-#: aleksis/core/models.py:905
+#: aleksis/core/models.py:910
 msgid "Announcement recipients"
 msgstr "Отримувачі оголошення"
 
-#: aleksis/core/models.py:927
+#: aleksis/core/models.py:932
 msgid "Widget Title"
 msgstr "Назва віджета"
 
-#: aleksis/core/models.py:928
+#: aleksis/core/models.py:933
 msgid "Activate Widget"
 msgstr "Активувати віджет"
 
-#: aleksis/core/models.py:929
+#: aleksis/core/models.py:934
 msgid "Widget is broken"
 msgstr "Віджет зламався"
 
-#: aleksis/core/models.py:932
+#: aleksis/core/models.py:937
 msgid "Size on mobile devices"
 msgstr "Розмір на мобільних"
 
-#: aleksis/core/models.py:933
+#: aleksis/core/models.py:938
 msgid "<= 600 px, 12 columns"
 msgstr "<= 600 пікс, 12 стовпчиків"
 
-#: aleksis/core/models.py:938
+#: aleksis/core/models.py:943
 msgid "Size on tablet devices"
 msgstr "Розмір на планшетах"
 
-#: aleksis/core/models.py:939
+#: aleksis/core/models.py:944
 msgid "> 600 px, 12 columns"
 msgstr "> 600 пікс, 12 стовпчиків"
 
-#: aleksis/core/models.py:944
+#: aleksis/core/models.py:949
 msgid "Size on desktop devices"
 msgstr "Розмір на ПК"
 
-#: aleksis/core/models.py:945
+#: aleksis/core/models.py:950
 msgid "> 992 px, 12 columns"
 msgstr "> 992 пікс, 12 стовпчиків"
 
-#: aleksis/core/models.py:950
+#: aleksis/core/models.py:955
 msgid "Size on large desktop devices"
 msgstr "Розмір на великих екранах"
 
-#: aleksis/core/models.py:951
+#: aleksis/core/models.py:956
 msgid "> 1200 px>, 12 columns"
 msgstr "> 1200 пікс, 12 стовпчиків"
 
-#: aleksis/core/models.py:982
+#: aleksis/core/models.py:987
 msgid "Can edit default dashboard"
 msgstr "Може редагувати типову/стандартну інформпанель"
 
-#: aleksis/core/models.py:983
+#: aleksis/core/models.py:988
 msgid "Dashboard Widget"
 msgstr "Віджет інформпанелі"
 
-#: aleksis/core/models.py:984
+#: aleksis/core/models.py:989
 msgid "Dashboard Widgets"
 msgstr "Віджети інформпанелі"
 
-#: aleksis/core/models.py:990
+#: aleksis/core/models.py:995
 msgid "URL"
 msgstr "URL"
 
-#: aleksis/core/models.py:991
+#: aleksis/core/models.py:996
 msgid "Icon URL"
 msgstr "Іконка URL"
 
-#: aleksis/core/models.py:997
+#: aleksis/core/models.py:1002
 msgid "External link widget"
 msgstr "Зовнішнє посилання на віджет"
 
-#: aleksis/core/models.py:998
+#: aleksis/core/models.py:1003
 msgid "External link widgets"
 msgstr "Зовнішні посилання на віджети"
 
-#: aleksis/core/models.py:1004
+#: aleksis/core/models.py:1009
 msgid "Content"
 msgstr "Зміст"
 
-#: aleksis/core/models.py:1010
+#: aleksis/core/models.py:1015
 msgid "Static content widget"
 msgstr "Віджет з постійним змістом"
 
-#: aleksis/core/models.py:1011
+#: aleksis/core/models.py:1016
 msgid "Static content widgets"
 msgstr "Віджети з постійним змістом"
 
-#: aleksis/core/models.py:1016
+#: aleksis/core/models.py:1021
 msgid "Dashboard widget"
 msgstr "Віджет інформпанелі"
 
-#: aleksis/core/models.py:1021
+#: aleksis/core/models.py:1026
 msgid "Order"
 msgstr "Порядок"
 
-#: aleksis/core/models.py:1022
+#: aleksis/core/models.py:1027
 msgid "Part of the default dashboard"
 msgstr "Частина типової інформпанелі"
 
-#: aleksis/core/models.py:1037
+#: aleksis/core/models.py:1042
 msgid "Dashboard widget order"
 msgstr "Порядок віджету на інформпанелі"
 
-#: aleksis/core/models.py:1038
+#: aleksis/core/models.py:1043
 msgid "Dashboard widget orders"
 msgstr "Порядок віджетів на інформпанелі"
 
-#: aleksis/core/models.py:1044
+#: aleksis/core/models.py:1049
 msgid "Menu ID"
 msgstr "Меню ID"
 
-#: aleksis/core/models.py:1057
+#: aleksis/core/models.py:1062
 msgid "Custom menu"
 msgstr "Користувацьке меню"
 
-#: aleksis/core/models.py:1058
+#: aleksis/core/models.py:1063
 msgid "Custom menus"
 msgstr "Користувацькі меню"
 
-#: aleksis/core/models.py:1068
+#: aleksis/core/models.py:1075
 msgid "Menu"
 msgstr "Меню"
 
-#: aleksis/core/models.py:1072 aleksis/core/models.py:1320
+#: aleksis/core/models.py:1079 aleksis/core/models.py:1330
 #: aleksis/core/templates/oauth2_provider/application/detail.html:26
 msgid "Icon"
 msgstr "Іконка"
 
-#: aleksis/core/models.py:1078
+#: aleksis/core/models.py:1085
 msgid "Custom menu item"
 msgstr "Пункт користувацького меню"
 
-#: aleksis/core/models.py:1079
+#: aleksis/core/models.py:1086
 msgid "Custom menu items"
 msgstr "Пункти користувацького меню"
 
-#: aleksis/core/models.py:1093
+#: aleksis/core/models.py:1103
 msgid "Title of type"
 msgstr "Назва типу"
 
-#: aleksis/core/models.py:1100 aleksis/core/templates/core/group/full.html:47
+#: aleksis/core/models.py:1110 aleksis/core/templates/core/group/full.html:50
 msgid "Group type"
 msgstr "Тип групи"
 
-#: aleksis/core/models.py:1114
+#: aleksis/core/models.py:1124
 msgid "Can view system status"
 msgstr "Може переглядати стан системи"
 
-#: aleksis/core/models.py:1115
+#: aleksis/core/models.py:1125
 msgid "Can manage data"
 msgstr "Може керувати даними"
 
-#: aleksis/core/models.py:1116
+#: aleksis/core/models.py:1126
 msgid "Can impersonate"
 msgstr "Може маскуватися"
 
-#: aleksis/core/models.py:1117
+#: aleksis/core/models.py:1127
 msgid "Can use search"
 msgstr "Може шукати"
 
-#: aleksis/core/models.py:1118
+#: aleksis/core/models.py:1128
 msgid "Can change site preferences"
 msgstr "Може змінювати властивості сайту"
 
-#: aleksis/core/models.py:1119
+#: aleksis/core/models.py:1129
 msgid "Can change person preferences"
 msgstr "Може змінювати властивості особи"
 
-#: aleksis/core/models.py:1120
+#: aleksis/core/models.py:1130
 msgid "Can change group preferences"
 msgstr "Може змінювати властивості групи"
 
-#: aleksis/core/models.py:1121
+#: aleksis/core/models.py:1131
 msgid "Can test PDF generation"
 msgstr "Може генерувати тестові PDF"
 
-#: aleksis/core/models.py:1122
+#: aleksis/core/models.py:1132
 msgid "Can invite persons"
 msgstr "Може запрошувати осіб"
 
-#: aleksis/core/models.py:1158
+#: aleksis/core/models.py:1168
 msgid "Related data check task"
 msgstr "Завдання перевірки пов'язаних даних"
 
-#: aleksis/core/models.py:1166
+#: aleksis/core/models.py:1176
 msgid "Issue solved"
 msgstr "Проблема вирішена"
 
-#: aleksis/core/models.py:1167
+#: aleksis/core/models.py:1177
 msgid "Notification sent"
 msgstr "Сповіщення надіслане"
 
-#: aleksis/core/models.py:1180
+#: aleksis/core/models.py:1190
 msgid "Data check result"
 msgstr "Результат перевірки даних"
 
-#: aleksis/core/models.py:1181
+#: aleksis/core/models.py:1191
 msgid "Data check results"
 msgstr "Результати перевірки даних"
 
-#: aleksis/core/models.py:1183
+#: aleksis/core/models.py:1193
 msgid "Can run data checks"
 msgstr "Може запускати перевірки даних"
 
-#: aleksis/core/models.py:1184
+#: aleksis/core/models.py:1194
 msgid "Can solve data check problems"
 msgstr "Може розв'язувати проблеми перевірки даних"
 
-#: aleksis/core/models.py:1191
+#: aleksis/core/models.py:1201
 msgid "E-Mail address"
 msgstr "Адреса ел.пошти"
 
-#: aleksis/core/models.py:1223
+#: aleksis/core/models.py:1233
 msgid "Owner"
 msgstr "Власник"
 
-#: aleksis/core/models.py:1227
+#: aleksis/core/models.py:1237
 msgid "File expires at"
 msgstr "Файл дійсний до"
 
-#: aleksis/core/models.py:1229
+#: aleksis/core/models.py:1239
 msgid "Generated HTML file"
 msgstr "Згенерований файл HTML"
 
-#: aleksis/core/models.py:1231
+#: aleksis/core/models.py:1241
 msgid "Generated PDF file"
 msgstr "Згенерований файл PDF"
 
-#: aleksis/core/models.py:1238
+#: aleksis/core/models.py:1248
 msgid "PDF file"
 msgstr "Файл PDF"
 
-#: aleksis/core/models.py:1239
+#: aleksis/core/models.py:1249
 msgid "PDF files"
 msgstr "Файли PDF"
 
-#: aleksis/core/models.py:1244
+#: aleksis/core/models.py:1254
 msgid "Task result"
 msgstr "Результат завдання"
 
-#: aleksis/core/models.py:1247
+#: aleksis/core/models.py:1257
 msgid "Task user"
 msgstr "Користувач завдання"
 
-#: aleksis/core/models.py:1259
+#: aleksis/core/models.py:1269
 msgid "Task user assignment"
 msgstr "Призначення користувача завдання"
 
-#: aleksis/core/models.py:1260
+#: aleksis/core/models.py:1270
 msgid "Task user assignments"
 msgstr "Призначення користувачів завдання"
 
-#: aleksis/core/models.py:1276
+#: aleksis/core/models.py:1286
 msgid "Additional attributes"
 msgstr "Додаткові атрибути"
 
-#: aleksis/core/models.py:1314
+#: aleksis/core/models.py:1324
 msgid "Allowed scopes that clients can request"
 msgstr "Дозволені межі дії, які можуть запитувати клієнти"
 
-#: aleksis/core/models.py:1324
+#: aleksis/core/models.py:1334
 msgid "This image will be shown as icon in the authorization flow. It should be squared."
 msgstr "Це зображення буде виглядати іконкою під час авторизації. Повинне бути квадратним."
 
-#: aleksis/core/models.py:1373
+#: aleksis/core/models.py:1383
 msgid "UUID"
 msgstr "UUID"
 
-#: aleksis/core/models.py:1377
+#: aleksis/core/models.py:1387
 msgid "Selected ICal feed"
 msgstr "Стрічка обраного ICal"
 
-#: aleksis/core/models.py:1386
+#: aleksis/core/models.py:1396
 msgid "Personal Calendar URL"
 msgstr "URL-посилання особистого календаря"
 
-#: aleksis/core/models.py:1387
+#: aleksis/core/models.py:1397
 msgid "Personal Calendar URLs"
 msgstr "URL-посилання особистих календарів"
 
@@ -1183,94 +1194,94 @@ msgstr "Розмір пакетів. (Типово 5: abcde)"
 msgid "Allowed Grant Flows for OAuth applications"
 msgstr "Дозволені потоки грантів для додатків з OAuth"
 
-#: aleksis/core/preferences.py:344
-msgid "Available languages"
-msgstr "Доступні мови"
-
-#: aleksis/core/preferences.py:357
+#: aleksis/core/preferences.py:343
 msgid "Send emails if data checks detect problems"
 msgstr "В разі виявлення проблем під час перевірки даних надіслати ел.лист"
 
-#: aleksis/core/preferences.py:368
+#: aleksis/core/preferences.py:354
 msgid "Email recipients for data checks problem emails"
 msgstr "Ел.адреси отримувачів для листів з проблемами перевірки даних"
 
-#: aleksis/core/preferences.py:379
+#: aleksis/core/preferences.py:365
 msgid "Email recipient groups for data checks problem emails"
 msgstr "Ел.адреси груп для листів з проблемами перевірки даних"
 
-#: aleksis/core/preferences.py:388
+#: aleksis/core/preferences.py:374
 msgid "Show dashboard to users without login"
 msgstr "Відображати інформпанель анонімним користувачам"
 
-#: aleksis/core/preferences.py:397
+#: aleksis/core/preferences.py:383
 msgid "Allow users to edit their dashboard"
 msgstr "Дозволити користувачам редагувати свою інформпанель"
 
-#: aleksis/core/preferences.py:408
+#: aleksis/core/preferences.py:394
 msgid "Fields on person model which are editable by themselves."
 msgstr "Поля з описом особи, які можна редагувати самостійно."
 
-#: aleksis/core/preferences.py:423
+#: aleksis/core/preferences.py:409
 msgid "Editable fields on person model which should trigger a notification on change"
 msgstr "Змінювані поля з описом особи, які повинні сповіщати щодо редагування"
 
-#: aleksis/core/preferences.py:437
+#: aleksis/core/preferences.py:423
 msgid "Contact for notification if a person changes their data"
 msgstr "Контакт для сповіщень, якщо хтось змінює свої дані"
 
-#: aleksis/core/preferences.py:448
+#: aleksis/core/preferences.py:434
 msgid "Prefer personal photos over avatars"
 msgstr "Віддавати перевагу особистим фото замість аватарів"
 
-#: aleksis/core/preferences.py:458
+#: aleksis/core/preferences.py:444
 msgid "PDF file expiration duration"
 msgstr "Термін придатності файла PDF"
 
-#: aleksis/core/preferences.py:459
+#: aleksis/core/preferences.py:445
 msgid "in minutes"
 msgstr "у хвилинах"
 
-#: aleksis/core/preferences.py:469
+#: aleksis/core/preferences.py:455
 msgid "Automatically update the dashboard and its widgets"
 msgstr "Автоматично оновлювати інформпанель та її віджети"
 
-#: aleksis/core/preferences.py:479
+#: aleksis/core/preferences.py:465
 msgid "Automatically update the dashboard and its widgets sitewide"
 msgstr "Автоматично оновлювати інформпанель та її віджети (для всього сайту)"
 
-#: aleksis/core/preferences.py:489
+#: aleksis/core/preferences.py:475
 msgid "Country for phone number parsing"
 msgstr "Країна для аналізу номера телефона"
 
-#: aleksis/core/settings.py:540
+#: aleksis/core/settings.py:541
 msgid "English"
 msgstr "Англійська"
 
-#: aleksis/core/settings.py:541
+#: aleksis/core/settings.py:542
 msgid "German"
 msgstr "Німецька"
 
-#: aleksis/core/tables.py:24
+#: aleksis/core/settings.py:543
+msgid "Ukrainian"
+msgstr ""
+
+#: aleksis/core/tables.py:25
 #: aleksis/core/templates/core/announcement/list.html:36
-#: aleksis/core/templates/core/group/full.html:24
+#: aleksis/core/templates/core/group/full.html:26
 #: aleksis/core/templates/core/person/full.html:26
 #: aleksis/core/templates/core/person/full.html:86
 #: aleksis/core/templates/oauth2_provider/application/detail.html:17
 msgid "Edit"
 msgstr "Редагувати"
 
-#: aleksis/core/tables.py:26 aleksis/core/tables.py:94
-#: aleksis/core/tables.py:138
+#: aleksis/core/tables.py:27 aleksis/core/tables.py:148
+#: aleksis/core/tables.py:192
 #: aleksis/core/templates/core/announcement/list.html:22
 msgid "Actions"
 msgstr "Дії"
 
-#: aleksis/core/tables.py:61 aleksis/core/tables.py:62
-#: aleksis/core/tables.py:76 aleksis/core/tables.py:92
-#: aleksis/core/tables.py:136
+#: aleksis/core/tables.py:115 aleksis/core/tables.py:116
+#: aleksis/core/tables.py:130 aleksis/core/tables.py:146
+#: aleksis/core/tables.py:190
 #: aleksis/core/templates/core/announcement/list.html:42
-#: aleksis/core/templates/core/group/full.html:31
+#: aleksis/core/templates/core/group/full.html:33
 #: aleksis/core/templates/core/pages/delete.html:22
 #: aleksis/core/templates/core/person/full.html:33
 #: aleksis/core/templates/core/person/full.html:93
@@ -1317,9 +1328,13 @@ msgstr ""
 "          "
 
 #: aleksis/core/templates/500.html:10
+#, fuzzy
+#| msgid ""
+#| "An unexpected error has\n"
+#| "          occured."
 msgid ""
 "An unexpected error has\n"
-"          occured."
+"          occurred."
 msgstr ""
 "Сталася неочікувана\n"
 "          помилка."
@@ -1899,35 +1914,42 @@ msgstr "Зберегти і йти далі"
 msgid "Edit group"
 msgstr "Редагувати групу"
 
-#: aleksis/core/templates/core/group/full.html:38
+#: aleksis/core/templates/core/group/full.html:40
 #: aleksis/core/templates/core/person/full.html:40
 #: aleksis/core/templates/core/person/full.html:100
 msgid "Change preferences"
 msgstr "Змінити властивості"
 
-#: aleksis/core/templates/core/group/full.html:64
+#: aleksis/core/templates/core/group/full.html:68
 msgid "Statistics"
 msgstr "Статистика"
 
-#: aleksis/core/templates/core/group/full.html:67
+#: aleksis/core/templates/core/group/full.html:73
 msgid "Count of members"
 msgstr "Кількість учасників"
 
-#: aleksis/core/templates/core/group/full.html:71
+#: aleksis/core/templates/core/group/full.html:81
 msgid "Average age"
 msgstr "Середній вік"
 
-#: aleksis/core/templates/core/group/full.html:76
+#: aleksis/core/templates/core/group/full.html:90
 msgid "Age range"
 msgstr "Віковий діапазон"
 
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years to"
-msgstr "–"
-
-#: aleksis/core/templates/core/group/full.html:76
-msgid "years "
-msgstr "рр. "
+#: aleksis/core/templates/core/group/full.html:93
+#, fuzzy, python-format
+#| msgid ""
+#| "\n"
+#| "              Valid for %(from)s\n"
+#| "            "
+msgid ""
+"\n"
+"              %(min)s years to %(max)s years\n"
+"            "
+msgstr ""
+"\n"
+"              Дійсний на %(from)s\n"
+"            "
 
 #: aleksis/core/templates/core/group/list.html:14
 msgid "Create group"
@@ -1978,15 +2000,14 @@ msgstr "Редагувати посилання iCal %(object)s"
 
 #: aleksis/core/templates/core/ical/ical_list.html:4
 #: aleksis/core/templates/core/ical/ical_list.html:5
-msgid "ICal Feeds"
+#, fuzzy
+#| msgid "ICal Feeds"
+msgid "iCal Feeds"
 msgstr "iCal-стрічки"
 
 #: aleksis/core/templates/core/ical/ical_list.html:8
 msgid "These are URLs for different Calendar Feeds in the iCal (.ics) format. You can create as many as you want and import them in your calendar software."
-msgstr ""
-"Тут містяться посилання на різні стрічки календарів у форматі iCal (.ics). "
-"Ви можете створити їх стільки, скільки Вам необхідно та імпортувати їх у ПЗ "
-"для роботи з календарями."
+msgstr "Тут містяться посилання на різні стрічки календарів у форматі iCal (.ics). Ви можете створити їх стільки, скільки Вам необхідно та імпортувати їх у ПЗ для роботи з календарями."
 
 #: aleksis/core/templates/core/ical/ical_list.html:14
 msgid "Your iCal URLs"
@@ -2063,8 +2084,7 @@ msgid ""
 "            "
 msgstr ""
 "\n"
-"              AlekSIS® – зареєстрована торгова марка проекту з відкритим "
-"програмним кодом AlekSIS, що представлена Teckids e.V.\n"
+"              AlekSIS® – зареєстрована торгова марка проекту з відкритим програмним кодом AlekSIS, що представлена Teckids e.V.\n"
 "            "
 
 #: aleksis/core/templates/core/pages/about.html:30
@@ -2088,10 +2108,8 @@ msgid ""
 "            "
 msgstr ""
 "\n"
-"              Ядро та офіційні додатки AlekSIS ліцензовані EUPL, версії 1.2 "
-"та новіше. Для отримання інформації\n"
-"              щодо додатків третіх сторін, якщо такі встановлені, зверніться "
-"до відповідних компонентів нижче.\n"
+"              Ядро та офіційні додатки AlekSIS ліцензовані EUPL, версії 1.2 та новіше. Для отримання інформації\n"
+"              щодо додатків третіх сторін, якщо такі встановлені, зверніться до відповідних компонентів нижче.\n"
 "              Ці ліцензії мають таку позначку:\n"
 "            "
 
@@ -2145,8 +2163,7 @@ msgid ""
 "            "
 msgstr ""
 "\n"
-"              Без активованого JavaScript статус виконання не зможе "
-"оновлюватися.\n"
+"              Без активованого JavaScript статус виконання не зможе оновлюватися.\n"
 "            "
 
 #: aleksis/core/templates/core/pages/progress.html:47
@@ -2169,8 +2186,7 @@ msgid ""
 "              "
 msgstr ""
 "\n"
-"                Доступ до сайту мають лише адміністратор та відвідувачі з "
-"внутрішніми IP-адресами.\n"
+"                Доступ до сайту мають лише адміністратор та відвідувачі з внутрішніми IP-адресами.\n"
 "              "
 
 #: aleksis/core/templates/core/pages/system_status.html:36
@@ -2192,8 +2208,7 @@ msgid ""
 "              "
 msgstr ""
 "\n"
-"                Веб-сервер кидає під час помилок інформацію щодо "
-"налагодження. Не використовуйте в продакшені!\n"
+"                Веб-сервер кидає під час помилок інформацію щодо налагодження. Не використовуйте в продакшені!\n"
 "              "
 
 #: aleksis/core/templates/core/pages/system_status.html:56
@@ -2207,8 +2222,7 @@ msgid ""
 "              "
 msgstr ""
 "\n"
-"                Режим налагодження деактивований. В разі збоїв "
-"відображатимуться типові сторінки помилок.\n"
+"                Режим налагодження деактивований. В разі збоїв відображатимуться типові сторінки помилок.\n"
 "              "
 
 #: aleksis/core/templates/core/pages/system_status.html:71
@@ -2262,8 +2276,7 @@ msgid ""
 "      "
 msgstr ""
 "\n"
-"        Цей простий вигляд допоможе перевірити коректність налаштувань "
-"вбудованої системи генерації PDF.\n"
+"        Цей простий вигляд допоможе перевірити коректність налаштувань вбудованої системи генерації PDF.\n"
 "      "
 
 #: aleksis/core/templates/core/partials/announcements.html:8
@@ -2320,11 +2333,11 @@ msgstr "Змінене"
 msgid "Unknown"
 msgstr "Невідомо"
 
-#: aleksis/core/templates/core/partials/language_form.html:15
+#: aleksis/core/templates/core/partials/language_form.html:17
 msgid "Language"
 msgstr "Мова"
 
-#: aleksis/core/templates/core/partials/language_form.html:27
+#: aleksis/core/templates/core/partials/language_form.html:29
 msgid "Select language"
 msgstr "Оберіть мову"
 
@@ -2336,8 +2349,7 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Ваш адміністративний обліковий запис не поєднаний з жодною "
-"особою. Через це\n"
+"            Ваш адміністративний обліковий запис не поєднаний з жодною особою. Через це\n"
 "            до Вашого облікового запису приєднана фейкова особа.\n"
 "          "
 
@@ -2701,9 +2713,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"
@@ -2717,8 +2727,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"
@@ -2738,9 +2747,7 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Схоже, що Ви скасували вхід до нашого сайту з одним із Ваших "
-"облікових записів. Якщо це сталося помилково, Ви можете <a href=\""
-"%(login_url)s\">продовжити вхід тут</a>.\n"
+"            Схоже, що Ви скасували вхід до нашого сайту з одним із Ваших облікових записів. Якщо це сталося помилково, Ви можете <a href=\"%(login_url)s\">продовжити вхід тут</a>.\n"
 "          "
 
 #: aleksis/core/templates/socialaccount/signup.html:12
@@ -2750,8 +2757,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
@@ -2841,8 +2847,7 @@ msgid ""
 "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 ""
@@ -2853,8 +2858,7 @@ msgid ""
 msgstr ""
 "\n"
 "   система виявила деякі нові проблеми з Вашими даними.\n"
-"   Приділіть, будь ласка, трохи часу для їх перевірки та вирішення проблем "
-"або позначте їх для ігнору.\n"
+"   Приділіть, будь ласка, трохи часу для їх перевірки та вирішення проблем або позначте їх для ігнору.\n"
 "  "
 
 #: aleksis/core/templates/templated_email/data_checks.email:23
@@ -2946,14 +2950,10 @@ msgid ""
 "      "
 msgstr ""
 "\n"
-"        Резервні токени можуть бути використані коли Ваші основний та "
-"резервний\n"
-"        телефонні номери не доступні. Резервні токени, що нижче, можуть бути "
-"використані\n"
-"        для перевірки на вході. Коли Ви використаєте усі резервні токени, "
-"Ви\n"
-"        зможете згенерувати новий набір резервних токенів. Дійсними будуть "
-"лише токени,\n"
+"        Резервні токени можуть бути використані коли Ваші основний та резервний\n"
+"        телефонні номери не доступні. Резервні токени, що нижче, можуть бути використані\n"
+"        для перевірки на вході. Коли Ви використаєте усі резервні токени, Ви\n"
+"        зможете згенерувати новий набір резервних токенів. Дійсними будуть лише токени,\n"
 "        що нижче.\n"
 "      "
 
@@ -2998,9 +2998,7 @@ msgstr ""
 
 #: aleksis/core/templates/two_factor/core/login.html:47
 msgid "Please login with your account to use the external application."
-msgstr ""
-"Для використання зовнішнього додатку увійдіть, будь ласка, у свій обліковий "
-"запис."
+msgstr "Для використання зовнішнього додатку увійдіть, будь ласка, у свій обліковий запис."
 
 #: aleksis/core/templates/two_factor/core/login.html:54
 msgid "Please login to see this page."
@@ -3014,8 +3012,7 @@ msgid ""
 "                      "
 msgstr ""
 "\n"
-"                        Ми зателефонуємо зараз на Ваш номер. Напишіть, будь "
-"ласка, цифри,\n"
+"                        Ми зателефонуємо зараз на Ваш номер. Напишіть, будь ласка, цифри,\n"
 "                        які Ви почуєте.\n"
 "                      "
 
@@ -3027,8 +3024,7 @@ msgid ""
 "                      "
 msgstr ""
 "\n"
-"                        Ми надіслали Вам текстове повідомлення. Напишіть, "
-"будь ласка, отриманий\n"
+"                        Ми надіслали Вам текстове повідомлення. Напишіть, будь ласка, отриманий\n"
 "                        токен.\n"
 "                      "
 
@@ -3053,12 +3049,9 @@ msgid ""
 "                    "
 msgstr ""
 "\n"
-"                      Для входу скористайтеся формою для введення резервних "
-"токенів.\n"
-"                      Ці токени були згенеровані Вам для друку та зберігання "
-"у надійному місці.\n"
-"                      Щоб увійти напишіть, будь ласка, один з резервних "
-"токенів.\n"
+"                      Для входу скористайтеся формою для введення резервних токенів.\n"
+"                      Ці токени були згенеровані Вам для друку та зберігання у надійному місці.\n"
+"                      Щоб увійти напишіть, будь ласка, один з резервних токенів.\n"
 "                    "
 
 #: aleksis/core/templates/two_factor/core/login.html:109
@@ -3091,12 +3084,9 @@ msgid ""
 "          two-factor authentication for security reasons. You need to enable these\n"
 "          security features in order to access this page."
 msgstr ""
-"Для перегляду запитуванної сторінки, з огляду на безпеку, необхідна "
-"додаткова\n"
-"          перевірка користувача з використанням двохфакторної автентифікації."
-"\n"
-"          Для доступу до цієї сторінки Вам потрібно увімкнути ці функції "
-"безпеки."
+"Для перегляду запитуванної сторінки, з огляду на безпеку, необхідна додаткова\n"
+"          перевірка користувача з використанням двохфакторної автентифікації.\n"
+"          Для доступу до цієї сторінки Вам потрібно увімкнути ці функції безпеки."
 
 #: aleksis/core/templates/two_factor/core/otp_required.html:14
 msgid ""
@@ -3141,8 +3131,7 @@ msgid ""
 msgstr ""
 "\n"
 "        Ви встановлюєте для свого облікового запису новий рівень безпеки.\n"
-"        Для увімкнення двохфакторної автентифікації пройдіть декілька "
-"кроків\n"
+"        Для увімкнення двохфакторної автентифікації пройдіть декілька кроків\n"
 "        майстра налаштування.\n"
 "      "
 
@@ -3153,8 +3142,7 @@ msgid ""
 "      "
 msgstr ""
 "\n"
-"        Оберіть, будь ласка, метод автентифікації, який Ви хочете "
-"використовувати:\n"
+"        Оберіть, будь ласка, метод автентифікації, який Ви хочете використовувати:\n"
 "      "
 
 #: aleksis/core/templates/two_factor/core/setup.html:23
@@ -3166,10 +3154,8 @@ msgid ""
 "      "
 msgstr ""
 "\n"
-"        Для того, щоби почати використання генератора токенів, скористйтеся, "
-"будь ласка, своїм\n"
-"        улюбленим додатком для двохфакторної автентифікації (TOTP) та "
-"відскануйте QR-код, що нижче.\n"
+"        Для того, щоби почати використання генератора токенів, скористйтеся, будь ласка, своїм\n"
+"        улюбленим додатком для двохфакторної автентифікації (TOTP) та відскануйте QR-код, що нижче.\n"
 "        Після цього напишіть отриманий генератором токен.\n"
 "      "
 
@@ -3182,8 +3168,7 @@ msgid ""
 msgstr ""
 "\n"
 "        Напишіть, будь ласка, номер телефону, на який Ви хочете\n"
-"        отримувати текстові повідомлення. На наступному кроці він буде "
-"перевірений.\n"
+"        отримувати текстові повідомлення. На наступному кроці він буде перевірений.\n"
 "      "
 
 #: aleksis/core/templates/two_factor/core/setup.html:41
@@ -3205,8 +3190,7 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Ми зараз телефонуємо на Ваш номер, – напишіть, будь ласка, "
-"цифри, які Ви почуєте.\n"
+"            Ми зараз телефонуємо на Ваш номер, – напишіть, будь ласка, цифри, які Ви почуєте.\n"
 "          "
 
 #: aleksis/core/templates/two_factor/core/setup.html:56
@@ -3216,8 +3200,7 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Ми надіслали Вам текстове повідомлення. Напишіть, будь ласка, "
-"отримані токени.\n"
+"            Ми надіслали Вам текстове повідомлення. Напишіть, будь ласка, отримані токени.\n"
 "          "
 
 #: aleksis/core/templates/two_factor/core/setup.html:63
@@ -3284,10 +3267,8 @@ msgid ""
 "        "
 msgstr ""
 "\n"
-"          Між іншим, може так статися, що Ви не матимете доступу до свого "
-"основного\n"
-"          пристрою з токенами. Для увімкнення відновлення обліковки створіть "
-"резервні коди\n"
+"          Між іншим, може так статися, що Ви не матимете доступу до свого основного\n"
+"          пристрою з токенами. Для увімкнення відновлення обліковки створіть резервні коди\n"
 "          або додайте номер телефону.\n"
 "        "
 
@@ -3305,9 +3286,7 @@ 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 ""
-"Ви вимикаєте двохфакторну автентифікацію. Це знизить захист Вашого "
-"облікового запису. Ви впевнені?"
+msgstr "Ви вимикаєте двохфакторну автентифікацію. Це знизить захист Вашого облікового запису. Ви впевнені?"
 
 #: aleksis/core/templates/two_factor/profile/disable.html:26
 msgid "Disable"
@@ -3395,8 +3374,7 @@ msgid ""
 msgstr ""
 "\n"
 "        Хоча ми рішуче застерігаємо Вас це не робити, Ви можете \n"
-"        також вимкнути двохфакторну автентифікацію для свого облікового "
-"запису.\n"
+"        також вимкнути двохфакторну автентифікацію для свого облікового запису.\n"
 "      "
 
 #: aleksis/core/templates/two_factor/profile/profile.html:78
@@ -3441,172 +3419,185 @@ msgstr "Під час створення файлу PDF виникла проб
 msgid "Download PDF"
 msgstr "Звантажити PDF"
 
-#: aleksis/core/views.py:292
+#: aleksis/core/views.py:294
 msgid "The school term has been created."
 msgstr "Навчальний рік створений."
 
-#: aleksis/core/views.py:304
+#: aleksis/core/views.py:306
 msgid "The school term has been saved."
 msgstr "Навчальний рік збережений."
 
-#: aleksis/core/views.py:424
+#: aleksis/core/views.py:426
 msgid "The child groups were successfully saved."
 msgstr "Підлеглі групи збережені."
 
-#: aleksis/core/views.py:443 aleksis/core/views.py:453
+#: aleksis/core/views.py:445 aleksis/core/views.py:455
 msgid "The person has been saved."
 msgstr "Особа збережена."
 
-#: aleksis/core/views.py:503
+#: aleksis/core/views.py:505
 msgid "The group has been saved."
 msgstr "Група збережена."
 
-#: aleksis/core/views.py:600
+#: aleksis/core/views.py:602
 msgid "The announcement has been saved."
 msgstr "Оголошення збережене."
 
-#: aleksis/core/views.py:616
+#: aleksis/core/views.py:618
 msgid "The announcement has been deleted."
 msgstr "Оголошення видалене."
 
-#: aleksis/core/views.py:684
+#: aleksis/core/views.py:686
 msgid "The requested preference registry does not exist"
 msgstr "Журналу із запитаними властивостями не існує"
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:705
 msgid "The preferences have been saved successfully."
 msgstr "Властивості збережені."
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:729
 msgid "The person has been deleted."
 msgstr "Особа видалена."
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:743
 msgid "The group has been deleted."
 msgstr "Група видалена."
 
-#: aleksis/core/views.py:773
-msgid "The additional_field has been saved."
+#: aleksis/core/views.py:775
+#, fuzzy
+#| msgid "The additional_field has been saved."
+msgid "The additional field has been saved."
 msgstr "Додаткове поле збережене."
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:809
 msgid "The additional field has been deleted."
 msgstr "Додаткове поле видалене."
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:834
 msgid "The group type has been saved."
 msgstr "Тип групи збережений."
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:864
 msgid "The group type has been deleted."
 msgstr "Тип групи видалений."
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:897
 msgid "Progress: Run data checks"
 msgstr "Перебіг: Запуск перевірки даних"
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:898
 msgid "Run data checks …"
 msgstr "Запускається перевірка даних …"
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:899
 msgid "The data checks were run successfully."
 msgstr "Перевірка даних успішно запущена."
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:900
 msgid "There was a problem while running data checks."
 msgstr "Під час запуску перевірки даних виникла проблема."
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:916
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr "Варіант розв'язання {solve_option_obj.verbose_name} "
 
-#: aleksis/core/views.py:924
+#: aleksis/core/views.py:926
 msgid "The requested solve option does not exist"
 msgstr "Запитаний варіант розв'язання не існує"
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:958
 msgid "The dashboard widget has been saved."
 msgstr "Віджет інформпанелі збережений."
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:988
 msgid "The dashboard widget has been created."
 msgstr "Віджет інформпанелі створений."
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:998
 msgid "The dashboard widget has been deleted."
 msgstr "Віджет інформпанелі видалений."
 
-#: aleksis/core/views.py:1067
+#: aleksis/core/views.py:1069
 msgid "Your dashboard configuration has been saved successfully."
 msgstr "Ваша конфігурація інформпанелі збережена."
 
-#: aleksis/core/views.py:1069
+#: aleksis/core/views.py:1071
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr "Конфігурація типової/стандартної інформпанелі збережена."
 
-#: aleksis/core/views.py:1145
+#: aleksis/core/views.py:1147
 #, python-brace-format
 msgid "The invitation was successfully created. The invitation code is {code}"
 msgstr "Запрошення успішно створене. Код запрошення: {code}"
 
-#: aleksis/core/views.py:1236
+#: aleksis/core/views.py:1238
 msgid "We have successfully assigned the permissions."
 msgstr "Ми успішно призначили дозволи."
 
-#: aleksis/core/views.py:1246
+#: aleksis/core/views.py:1248
 msgid "The global user permission has been deleted."
 msgstr "Глобальний користувацький дозвіл видалений."
 
-#: aleksis/core/views.py:1256
+#: aleksis/core/views.py:1258
 msgid "The global group permission has been deleted."
 msgstr "Глобальний груповий дозвіл видалений."
 
-#: aleksis/core/views.py:1266
+#: aleksis/core/views.py:1268
 msgid "The object user permission has been deleted."
 msgstr "Об'єктний користувацький дозвіл видалений."
 
-#: aleksis/core/views.py:1276
+#: aleksis/core/views.py:1278
 msgid "The object group permission has been deleted."
 msgstr "Об'єктний груповий дозвіл видалений."
 
-#: aleksis/core/views.py:1344
+#: aleksis/core/views.py:1346
 msgid "The requested PDF file does not exist"
 msgstr "Запитаний файл PDF не існує"
 
-#: aleksis/core/views.py:1353 aleksis/core/views.py:1357
+#: aleksis/core/views.py:1355 aleksis/core/views.py:1359
 msgid "The requested task does not exist or is not accessible"
 msgstr "Запитане завдання не існує або не доступне"
 
-#: aleksis/core/views.py:1409
+#: aleksis/core/views.py:1411
 msgid "The third-party account could not be disconnected because it is the only login method available."
-msgstr ""
-"Обліковий запис третьої сторони не можна від'єднати оскільки він єдиний "
-"спосіб для входу."
+msgstr "Обліковий запис третьої сторони не можна від'єднати оскільки він єдиний спосіб для входу."
 
-#: aleksis/core/views.py:1416
+#: aleksis/core/views.py:1418
 msgid "The third-party account has been successfully disconnected."
 msgstr "Обліковий запис третьої сторони успішно від'єднаний."
 
-#: aleksis/core/views.py:1487
+#: aleksis/core/views.py:1489
 msgid "Person was invited successfully and an email with further instructions has been send to them."
-msgstr ""
-"Особа успішно запрошена. Лист з інструкціями щодо наступних дій надісланий "
-"на її ел.пошту."
+msgstr "Особа успішно запрошена. Лист з інструкціями щодо наступних дій надісланий на її ел.пошту."
 
-#: aleksis/core/views.py:1498
+#: aleksis/core/views.py:1500
 msgid "Person was already invited."
 msgstr "Особа вже була запрошена."
 
-#: aleksis/core/views.py:1598
-msgid "ICal feed updated successfully"
+#: aleksis/core/views.py:1600
+#, fuzzy
+#| msgid "ICal feed updated successfully"
+msgid "iCal feed updated successfully"
 msgstr "Стрічка iCal успішно оновлена"
 
-#: aleksis/core/views.py:1608
-msgid "ICal feed deleted successfully"
+#: aleksis/core/views.py:1610
+#, fuzzy
+#| msgid "ICal feed deleted successfully"
+msgid "iCal feed deleted successfully"
 msgstr "Стрічка iCal успішно видалена"
 
-#: aleksis/core/views.py:1616
-msgid "ICal feed created successfully"
+#: aleksis/core/views.py:1618
+#, fuzzy
+#| msgid "ICal feed created successfully"
+msgid "iCal feed created successfully"
 msgstr "Стрічка iCal успішно створена"
+
+#~ msgid "Available languages"
+#~ msgstr "Доступні мови"
+
+#~ msgid "years to"
+#~ msgstr "–"
+
+#~ msgid "years "
+#~ msgstr "рр. "
diff --git a/aleksis/core/locale/uk/LC_MESSAGES/djangojs.po b/aleksis/core/locale/uk/LC_MESSAGES/djangojs.po
index c224b04ae5ef93df09b6ad7c76288e590557bf0c..fcd6122a3fdc075256f8c08626ad9d806d4241be 100644
--- a/aleksis/core/locale/uk/LC_MESSAGES/djangojs.po
+++ b/aleksis/core/locale/uk/LC_MESSAGES/djangojs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-24 19:37+0200\n"
+"POT-Creation-Date: 2022-06-25 12:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,10 +16,7 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != "
-"11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % "
-"100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || "
-"(n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
+"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
 
 #: aleksis/core/static/js/main.js:66
 msgid "Today"
@@ -34,9 +31,5 @@ msgid "OK"
 msgstr "OK"
 
 #: aleksis/core/static/js/main.js:195
-msgid ""
-"This page may contain outdated information since there is no internet "
-"connection."
-msgstr ""
-"Через відсутність інтернет-з'єднання ця сторінка може містити застарілу "
-"інформацію."
+msgid "This page may contain outdated information since there is no internet connection."
+msgstr "Через відсутність інтернет-з'єднання ця сторінка може містити застарілу інформацію."