diff --git a/aleksis/core/locale/ar/LC_MESSAGES/django.po b/aleksis/core/locale/ar/LC_MESSAGES/django.po
index 7b8eb8f9b3ab37aef635e2885704e8e091105f32..ef5a6607f526523fb1ba3ca7f43e08ab21629c62 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: 2021-06-08 16:49+0200\n"
+"POT-Creation-Date: 2021-08-28 17:53+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"
@@ -18,6 +18,26 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
 
+#: aleksis/core/apps.py:148 aleksis/core/settings.py:343
+msgid "OpenID Connect scope"
+msgstr ""
+
+#: aleksis/core/apps.py:149 aleksis/core/settings.py:344
+msgid "Given name, family name, link to profile and picture if existing."
+msgstr ""
+
+#: aleksis/core/apps.py:150 aleksis/core/settings.py:345
+msgid "Full home postal address"
+msgstr ""
+
+#: aleksis/core/apps.py:151 aleksis/core/settings.py:346
+msgid "Email address"
+msgstr ""
+
+#: aleksis/core/apps.py:152 aleksis/core/settings.py:347
+msgid "Home and mobile phone"
+msgstr ""
+
 #: aleksis/core/data_checks.py:55
 msgid "Ignore problem"
 msgstr ""
@@ -39,7 +59,8 @@ msgstr ""
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
-#: aleksis/core/filters.py:37 aleksis/core/templates/core/base.html:78
+#: aleksis/core/filters.py:37 aleksis/core/templates/core/base.html:83
+#: aleksis/core/templates/core/base.html:84
 #: aleksis/core/templates/core/group/list.html:20
 #: aleksis/core/templates/core/person/list.html:24
 #: aleksis/core/templates/search/search.html:7
@@ -96,7 +117,7 @@ msgid "Common data"
 msgstr ""
 
 #: aleksis/core/forms.py:172 aleksis/core/forms.py:221
-#: aleksis/core/menus.py:236 aleksis/core/models.py:139
+#: aleksis/core/menus.py:238 aleksis/core/models.py:139
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
@@ -116,7 +137,7 @@ msgstr ""
 msgid "Time"
 msgstr ""
 
-#: aleksis/core/forms.py:234 aleksis/core/menus.py:247
+#: aleksis/core/forms.py:234 aleksis/core/menus.py:249
 #: aleksis/core/models.py:381 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:144
@@ -217,29 +238,30 @@ msgstr ""
 msgid "Dashboard"
 msgstr ""
 
-#: aleksis/core/menus.py:30 aleksis/core/models.py:588
+#: aleksis/core/menus.py:32 aleksis/core/models.py:588
+#: aleksis/core/preferences.py:26
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr ""
 
-#: aleksis/core/menus.py:39
+#: aleksis/core/menus.py:41
 msgid "Account"
 msgstr ""
 
-#: aleksis/core/menus.py:46
+#: aleksis/core/menus.py:48
 msgid "Stop impersonation"
 msgstr ""
 
-#: aleksis/core/menus.py:55 aleksis/core/templates/core/base.html:57
+#: aleksis/core/menus.py:57 aleksis/core/templates/core/base.html:62
 msgid "Logout"
 msgstr ""
 
-#: aleksis/core/menus.py:61
+#: aleksis/core/menus.py:63
 msgid "2FA"
 msgstr ""
 
-#: aleksis/core/menus.py:67
+#: aleksis/core/menus.py:69
 #: aleksis/core/templates/account/password_change.html:5
 #: aleksis/core/templates/account/password_change.html:6
 #: aleksis/core/templates/account/password_change.html:19
@@ -251,107 +273,107 @@ msgstr ""
 msgid "Change password"
 msgstr ""
 
-#: aleksis/core/menus.py:79
+#: aleksis/core/menus.py:81
 msgid "Me"
 msgstr ""
 
-#: aleksis/core/menus.py:88
+#: aleksis/core/menus.py:90
 #: aleksis/core/templates/dynamic_preferences/form.html:5
 msgid "Preferences"
 msgstr ""
 
-#: aleksis/core/menus.py:97
+#: aleksis/core/menus.py:99
 msgid "Third-party accounts"
 msgstr ""
 
-#: aleksis/core/menus.py:106
+#: aleksis/core/menus.py:108
 #: aleksis/core/templates/oauth2_provider/authorized-tokens.html:5
 #: aleksis/core/templates/oauth2_provider/authorized-tokens.html:6
 msgid "Authorized applications"
 msgstr ""
 
-#: aleksis/core/menus.py:117
+#: aleksis/core/menus.py:119
 msgid "Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:125 aleksis/core/models.py:687
+#: aleksis/core/menus.py:127 aleksis/core/models.py:687
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr ""
 
-#: aleksis/core/menus.py:136 aleksis/core/models.py:117
+#: aleksis/core/menus.py:138 aleksis/core/models.py:117
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
 msgstr ""
 
-#: aleksis/core/menus.py:147
+#: aleksis/core/menus.py:149
 #: aleksis/core/templates/core/dashboard_widget/list.html:8
 #: aleksis/core/templates/core/dashboard_widget/list.html:9
 msgid "Dashboard widgets"
 msgstr ""
 
-#: aleksis/core/menus.py:158
+#: aleksis/core/menus.py:160
 #: aleksis/core/templates/core/management/data_management.html:6
 #: aleksis/core/templates/core/management/data_management.html:7
 msgid "Data management"
 msgstr ""
 
-#: aleksis/core/menus.py:169
+#: aleksis/core/menus.py:171
 #: aleksis/core/templates/core/pages/system_status.html:5
 #: aleksis/core/templates/core/pages/system_status.html:7
 msgid "System status"
 msgstr ""
 
-#: aleksis/core/menus.py:180
+#: aleksis/core/menus.py:182
 msgid "Impersonation"
 msgstr ""
 
-#: aleksis/core/menus.py:191
+#: aleksis/core/menus.py:193
 msgid "Configuration"
 msgstr ""
 
-#: aleksis/core/menus.py:202 aleksis/core/templates/core/data_check/list.html:9
+#: aleksis/core/menus.py:204 aleksis/core/templates/core/data_check/list.html:9
 #: aleksis/core/templates/core/data_check/list.html:10
 msgid "Data checks"
 msgstr ""
 
-#: aleksis/core/menus.py:208
+#: aleksis/core/menus.py:210
 msgid "Backend Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:214
+#: aleksis/core/menus.py:216
 #: aleksis/core/templates/oauth2_provider/application_detail.html:5
 #: aleksis/core/templates/oauth2_provider/application_list.html:5
 msgid "OAuth2 Applications"
 msgstr ""
 
-#: aleksis/core/menus.py:227
+#: aleksis/core/menus.py:229
 msgid "People"
 msgstr ""
 
-#: aleksis/core/menus.py:258 aleksis/core/models.py:941
+#: aleksis/core/menus.py:260 aleksis/core/models.py:941
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
 msgstr ""
 
-#: aleksis/core/menus.py:269
+#: aleksis/core/menus.py:271
 msgid "Persons and accounts"
 msgstr ""
 
-#: aleksis/core/menus.py:280
+#: aleksis/core/menus.py:282
 msgid "Groups and child groups"
 msgstr ""
 
-#: aleksis/core/menus.py:291 aleksis/core/models.py:429
+#: aleksis/core/menus.py:293 aleksis/core/models.py:429
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 msgid "Additional fields"
 msgstr ""
 
-#: aleksis/core/menus.py:306
+#: aleksis/core/menus.py:308
 #: aleksis/core/templates/core/group/child_groups.html:7
 #: aleksis/core/templates/core/group/child_groups.html:9
 msgid "Assign child groups to groups"
@@ -858,46 +880,70 @@ msgstr ""
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1040
+#: aleksis/core/models.py:1044
 msgid "Owner"
 msgstr ""
 
-#: aleksis/core/models.py:1043
+#: aleksis/core/models.py:1048
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1045
+#: aleksis/core/models.py:1050
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1047
+#: aleksis/core/models.py:1052
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1054
+#: aleksis/core/models.py:1059
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1055
+#: aleksis/core/models.py:1060
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1060
+#: aleksis/core/models.py:1065
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1063
+#: aleksis/core/models.py:1068
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1075
+#: aleksis/core/models.py:1080
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1076
+#: aleksis/core/models.py:1081
 msgid "Task user assignments"
 msgstr ""
 
+#: aleksis/core/preferences.py:22
+msgid "General"
+msgstr ""
+
+#: aleksis/core/preferences.py:23
+msgid "School"
+msgstr ""
+
+#: aleksis/core/preferences.py:24
+msgid "Theme"
+msgstr ""
+
+#: aleksis/core/preferences.py:25
+msgid "Mail"
+msgstr ""
+
+#: aleksis/core/preferences.py:27
+msgid "Footer"
+msgstr ""
+
+#: aleksis/core/preferences.py:28
+msgid "Accounts"
+msgstr ""
+
 #: aleksis/core/preferences.py:29
 msgid "Authentication"
 msgstr ""
@@ -1038,11 +1084,19 @@ msgstr ""
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/settings.py:470
+#: aleksis/core/preferences.py:398
+msgid "Automatically update the dashboard and its widgets"
+msgstr ""
+
+#: aleksis/core/preferences.py:408
+msgid "Automatically update the dashboard and its widgets sitewide"
+msgstr ""
+
+#: aleksis/core/settings.py:468
 msgid "English"
 msgstr ""
 
-#: aleksis/core/settings.py:471
+#: aleksis/core/settings.py:469
 msgid "German"
 msgstr ""
 
@@ -1383,23 +1437,23 @@ msgstr ""
 msgid "There are no announcements."
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:55
+#: aleksis/core/templates/core/base.html:60
 msgid "Logged in as"
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:148
+#: aleksis/core/templates/core/base.html:154
 msgid "About AlekSIS — The Free School Information System"
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:156
+#: aleksis/core/templates/core/base.html:162
 msgid "Impress"
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:164
+#: aleksis/core/templates/core/base.html:170
 msgid "Privacy Policy"
 msgstr ""
 
-#: aleksis/core/templates/core/base_print.html:67
+#: aleksis/core/templates/core/base_print.html:72
 msgid "Powered by AlekSIS"
 msgstr ""
 
@@ -1673,7 +1727,7 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:51
+#: aleksis/core/templates/core/index.html:49
 msgid ""
 "\n"
 "        You didn't customise your dashboard so that you see the system default. Please click on \"Edit dashboard\" to\n"
@@ -1681,24 +1735,24 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:61
+#: aleksis/core/templates/core/index.html:59
 msgid "Last activities"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:79
+#: aleksis/core/templates/core/index.html:77
 msgid "No activities available yet."
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:84
+#: aleksis/core/templates/core/index.html:82
 msgid "Recent notifications"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:100
+#: aleksis/core/templates/core/index.html:98
 #: aleksis/core/templates/core/notifications.html:23
 msgid "More information →"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:107
+#: aleksis/core/templates/core/index.html:105
 #: aleksis/core/templates/core/notifications.html:30
 msgid "No notifications available yet."
 msgstr ""
@@ -1885,8 +1939,8 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/core/templates/core/partials/announcements.html:9
-#: aleksis/core/templates/core/partials/announcements.html:36
+#: aleksis/core/templates/core/partials/announcements.html:8
+#: aleksis/core/templates/core/partials/announcements.html:35
 #, python-format
 msgid ""
 "\n"
@@ -1894,7 +1948,7 @@ msgid ""
 "            "
 msgstr ""
 
-#: aleksis/core/templates/core/partials/announcements.html:13
+#: aleksis/core/templates/core/partials/announcements.html:12
 #, python-format
 msgid ""
 "\n"
@@ -1902,7 +1956,7 @@ msgid ""
 "            "
 msgstr ""
 
-#: aleksis/core/templates/core/partials/announcements.html:40
+#: aleksis/core/templates/core/partials/announcements.html:39
 #, python-format
 msgid ""
 "\n"
@@ -2690,127 +2744,127 @@ msgstr ""
 msgid "SMS"
 msgstr ""
 
-#: aleksis/core/util/pdf.py:89
+#: aleksis/core/util/pdf.py:105
 msgid "Progress: Generate PDF file"
 msgstr ""
 
-#: aleksis/core/util/pdf.py:90
+#: aleksis/core/util/pdf.py:106
 msgid "Generating PDF file …"
 msgstr ""
 
-#: aleksis/core/util/pdf.py:91
+#: aleksis/core/util/pdf.py:107
 msgid "The PDF file has been generated successfully."
 msgstr ""
 
-#: aleksis/core/util/pdf.py:92
+#: aleksis/core/util/pdf.py:108
 msgid "There was a problem while generating the PDF file."
 msgstr ""
 
-#: aleksis/core/util/pdf.py:95
+#: aleksis/core/util/pdf.py:111
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:249
+#: aleksis/core/views.py:253
 msgid "The school term has been created."
 msgstr ""
 
-#: aleksis/core/views.py:261
+#: aleksis/core/views.py:265
 msgid "The school term has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:406
+#: aleksis/core/views.py:410
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:467
+#: aleksis/core/views.py:471
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:506
+#: aleksis/core/views.py:510
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:603
+#: aleksis/core/views.py:607
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:619
+#: aleksis/core/views.py:623
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:707
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:731
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:745
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:773
+#: aleksis/core/views.py:777
 msgid "The additional_field has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:811
 msgid "The additional field has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:836
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:866
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:899
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:900
 msgid "Run data checks …"
 msgstr ""
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:901
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:902
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:918
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:960
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:990
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:1000
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1063
+#: aleksis/core/views.py:1067
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1065
+#: aleksis/core/views.py:1069
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1191
+#: aleksis/core/views.py:1197
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1198
+#: aleksis/core/views.py:1204
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
diff --git a/aleksis/core/locale/ar/LC_MESSAGES/djangojs.po b/aleksis/core/locale/ar/LC_MESSAGES/djangojs.po
index 4a3d30e1766c01a47d0af190b00f484093f10159..c66c2fc59010a34863f4e372e19aebc75cfd9631 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: 2021-06-08 16:49+0200\n"
+"POT-Creation-Date: 2021-08-28 17:53+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"
@@ -30,6 +30,6 @@ msgstr ""
 msgid "OK"
 msgstr ""
 
-#: aleksis/core/static/js/main.js:133
+#: aleksis/core/static/js/main.js:127
 msgid "This page may contain outdated information since there is no internet connection."
 msgstr ""
diff --git a/aleksis/core/locale/de_DE/LC_MESSAGES/django.po b/aleksis/core/locale/de_DE/LC_MESSAGES/django.po
index 0f1d32d4889347d9f6899959d8e20ab12aed9860..69092cbdc7a60cd22188753859fda281a4a5077a 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: 2021-06-08 16:49+0200\n"
+"POT-Creation-Date: 2021-08-28 17:53+0200\n"
 "PO-Revision-Date: 2021-06-16 12:00+0000\n"
 "Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n"
-"Language-Team: German <https://translate.edugit.org/projects/aleksis/aleksis/"
-"de/>\n"
+"Language-Team: German <https://translate.edugit.org/projects/aleksis/aleksis/de/>\n"
 "Language: de_DE\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -19,6 +18,32 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Generator: Weblate 4.4\n"
 
+#: aleksis/core/apps.py:148 aleksis/core/settings.py:343
+msgid "OpenID Connect scope"
+msgstr ""
+
+#: aleksis/core/apps.py:149 aleksis/core/settings.py:344
+msgid "Given name, family name, link to profile and picture if existing."
+msgstr ""
+
+#: aleksis/core/apps.py:150 aleksis/core/settings.py:345
+#, fuzzy
+#| msgid "Mail out address"
+msgid "Full home postal address"
+msgstr "E-Mail-Ausgangsadresse"
+
+#: aleksis/core/apps.py:151 aleksis/core/settings.py:346
+#, fuzzy
+#| msgid "E-mail address"
+msgid "Email address"
+msgstr "E-Mail-Adresse"
+
+#: aleksis/core/apps.py:152 aleksis/core/settings.py:347
+#, fuzzy
+#| msgid "Mobile phone"
+msgid "Home and mobile phone"
+msgstr "Handy"
+
 #: aleksis/core/data_checks.py:55
 msgid "Ignore problem"
 msgstr "Problem ignorieren"
@@ -40,7 +65,8 @@ msgstr "Sicherstellen, dass es keine kaputten Dashboard-Widgets gibt."
 msgid "The DashboardWidget was reported broken automatically."
 msgstr "Das Dashboard-Widget wurde automatisch als kaputt gemeldet."
 
-#: aleksis/core/filters.py:37 aleksis/core/templates/core/base.html:78
+#: aleksis/core/filters.py:37 aleksis/core/templates/core/base.html:83
+#: aleksis/core/templates/core/base.html:84
 #: aleksis/core/templates/core/group/list.html:20
 #: aleksis/core/templates/core/person/list.html:24
 #: aleksis/core/templates/search/search.html:7
@@ -97,7 +123,7 @@ msgid "Common data"
 msgstr "Allgemeine Daten"
 
 #: aleksis/core/forms.py:172 aleksis/core/forms.py:221
-#: aleksis/core/menus.py:236 aleksis/core/models.py:139
+#: aleksis/core/menus.py:238 aleksis/core/models.py:139
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
@@ -117,7 +143,7 @@ msgstr "Datum"
 msgid "Time"
 msgstr "Zeit"
 
-#: aleksis/core/forms.py:234 aleksis/core/menus.py:247
+#: aleksis/core/forms.py:234 aleksis/core/menus.py:249
 #: aleksis/core/models.py:381 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:144
@@ -218,29 +244,30 @@ msgstr "Registrieren"
 msgid "Dashboard"
 msgstr "Dashboard"
 
-#: aleksis/core/menus.py:30 aleksis/core/models.py:588
+#: aleksis/core/menus.py:32 aleksis/core/models.py:588
+#: aleksis/core/preferences.py:26
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr "Benachrichtigungen"
 
-#: aleksis/core/menus.py:39
+#: aleksis/core/menus.py:41
 msgid "Account"
 msgstr "Konto"
 
-#: aleksis/core/menus.py:46
+#: aleksis/core/menus.py:48
 msgid "Stop impersonation"
 msgstr "Verkleidung beenden"
 
-#: aleksis/core/menus.py:55 aleksis/core/templates/core/base.html:57
+#: aleksis/core/menus.py:57 aleksis/core/templates/core/base.html:62
 msgid "Logout"
 msgstr "Abmelden"
 
-#: aleksis/core/menus.py:61
+#: aleksis/core/menus.py:63
 msgid "2FA"
 msgstr "2FA"
 
-#: aleksis/core/menus.py:67
+#: aleksis/core/menus.py:69
 #: aleksis/core/templates/account/password_change.html:5
 #: aleksis/core/templates/account/password_change.html:6
 #: aleksis/core/templates/account/password_change.html:19
@@ -252,107 +279,107 @@ msgstr "2FA"
 msgid "Change password"
 msgstr "Passwort ändern"
 
-#: aleksis/core/menus.py:79
+#: aleksis/core/menus.py:81
 msgid "Me"
 msgstr "Ich"
 
-#: aleksis/core/menus.py:88
+#: aleksis/core/menus.py:90
 #: aleksis/core/templates/dynamic_preferences/form.html:5
 msgid "Preferences"
 msgstr "Einstellungen"
 
-#: aleksis/core/menus.py:97
+#: aleksis/core/menus.py:99
 msgid "Third-party accounts"
 msgstr "Drittanbieter-Konten"
 
-#: aleksis/core/menus.py:106
+#: aleksis/core/menus.py:108
 #: aleksis/core/templates/oauth2_provider/authorized-tokens.html:5
 #: aleksis/core/templates/oauth2_provider/authorized-tokens.html:6
 msgid "Authorized applications"
 msgstr "Autorisierte Anwendungen"
 
-#: aleksis/core/menus.py:117
+#: aleksis/core/menus.py:119
 msgid "Admin"
 msgstr "Admin"
 
-#: aleksis/core/menus.py:125 aleksis/core/models.py:687
+#: aleksis/core/menus.py:127 aleksis/core/models.py:687
 #: 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:136 aleksis/core/models.py:117
+#: aleksis/core/menus.py:138 aleksis/core/models.py:117
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
 msgstr "Schuljahre"
 
-#: aleksis/core/menus.py:147
+#: aleksis/core/menus.py:149
 #: aleksis/core/templates/core/dashboard_widget/list.html:8
 #: aleksis/core/templates/core/dashboard_widget/list.html:9
 msgid "Dashboard widgets"
 msgstr "Dashboard-Widgets"
 
-#: aleksis/core/menus.py:158
+#: aleksis/core/menus.py:160
 #: aleksis/core/templates/core/management/data_management.html:6
 #: aleksis/core/templates/core/management/data_management.html:7
 msgid "Data management"
 msgstr "Datenverwaltung"
 
-#: aleksis/core/menus.py:169
+#: aleksis/core/menus.py:171
 #: aleksis/core/templates/core/pages/system_status.html:5
 #: aleksis/core/templates/core/pages/system_status.html:7
 msgid "System status"
 msgstr "Systemstatus"
 
-#: aleksis/core/menus.py:180
+#: aleksis/core/menus.py:182
 msgid "Impersonation"
 msgstr "Verkleidung"
 
-#: aleksis/core/menus.py:191
+#: aleksis/core/menus.py:193
 msgid "Configuration"
 msgstr "Konfiguration"
 
-#: aleksis/core/menus.py:202 aleksis/core/templates/core/data_check/list.html:9
+#: aleksis/core/menus.py:204 aleksis/core/templates/core/data_check/list.html:9
 #: aleksis/core/templates/core/data_check/list.html:10
 msgid "Data checks"
 msgstr "Datenprüfungen"
 
-#: aleksis/core/menus.py:208
+#: aleksis/core/menus.py:210
 msgid "Backend Admin"
 msgstr "Backend-Administration"
 
-#: aleksis/core/menus.py:214
+#: aleksis/core/menus.py:216
 #: aleksis/core/templates/oauth2_provider/application_detail.html:5
 #: aleksis/core/templates/oauth2_provider/application_list.html:5
 msgid "OAuth2 Applications"
 msgstr "OAuth2-Anwendungen"
 
-#: aleksis/core/menus.py:227
+#: aleksis/core/menus.py:229
 msgid "People"
 msgstr "Leute"
 
-#: aleksis/core/menus.py:258 aleksis/core/models.py:941
+#: aleksis/core/menus.py:260 aleksis/core/models.py:941
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
 msgstr "Gruppentypen"
 
-#: aleksis/core/menus.py:269
+#: aleksis/core/menus.py:271
 msgid "Persons and accounts"
 msgstr "Personen und Konten"
 
-#: aleksis/core/menus.py:280
+#: aleksis/core/menus.py:282
 msgid "Groups and child groups"
 msgstr "Gruppen und Kindgruppen"
 
-#: aleksis/core/menus.py:291 aleksis/core/models.py:429
+#: aleksis/core/menus.py:293 aleksis/core/models.py:429
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 msgid "Additional fields"
 msgstr "Zusätzliche Felder"
 
-#: aleksis/core/menus.py:306
+#: aleksis/core/menus.py:308
 #: aleksis/core/templates/core/group/child_groups.html:7
 #: aleksis/core/templates/core/group/child_groups.html:9
 msgid "Assign child groups to groups"
@@ -859,46 +886,74 @@ msgstr "Kann Datenprüfungen ausführen"
 msgid "Can solve data check problems"
 msgstr "Kann Datenprüfungsprobleme lösen"
 
-#: aleksis/core/models.py:1040
+#: aleksis/core/models.py:1044
 msgid "Owner"
 msgstr "Leiter"
 
-#: aleksis/core/models.py:1043
+#: aleksis/core/models.py:1048
 msgid "File expires at"
 msgstr "Datei abgelaufen am"
 
-#: aleksis/core/models.py:1045
+#: aleksis/core/models.py:1050
 msgid "Generated HTML file"
 msgstr "Generierte HTML-Datei"
 
-#: aleksis/core/models.py:1047
+#: aleksis/core/models.py:1052
 msgid "Generated PDF file"
 msgstr "Generierte PDF-Datei"
 
-#: aleksis/core/models.py:1054
+#: aleksis/core/models.py:1059
 msgid "PDF file"
 msgstr "PDF-Datei"
 
-#: aleksis/core/models.py:1055
+#: aleksis/core/models.py:1060
 msgid "PDF files"
 msgstr "PDF-Dateien"
 
-#: aleksis/core/models.py:1060
+#: aleksis/core/models.py:1065
 msgid "Task result"
 msgstr "Task-Ergebnis"
 
-#: aleksis/core/models.py:1063
+#: aleksis/core/models.py:1068
 msgid "Task user"
 msgstr "Task-Benutzer"
 
-#: aleksis/core/models.py:1075
+#: aleksis/core/models.py:1080
 msgid "Task user assignment"
 msgstr "Task-Benutzer-Zuordnung"
 
-#: aleksis/core/models.py:1076
+#: aleksis/core/models.py:1081
 msgid "Task user assignments"
 msgstr "Task-Benutzer-Zuordnungen"
 
+#: aleksis/core/preferences.py:22
+msgid "General"
+msgstr ""
+
+#: aleksis/core/preferences.py:23
+msgid "School"
+msgstr "Schule"
+
+#: aleksis/core/preferences.py:24
+msgid "Theme"
+msgstr ""
+
+#: aleksis/core/preferences.py:25
+#, fuzzy
+#| msgid "E-Mail"
+msgid "Mail"
+msgstr "E-Mail"
+
+#: aleksis/core/preferences.py:27
+msgid "Footer"
+msgstr ""
+
+#: aleksis/core/preferences.py:28
+#, fuzzy
+#| msgid "Account"
+msgid "Accounts"
+msgstr "Konto"
+
 #: aleksis/core/preferences.py:29
 msgid "Authentication"
 msgstr "Authentifizierung"
@@ -1039,11 +1094,21 @@ msgstr "PDF-Datei-Ablaufdauer"
 msgid "in minutes"
 msgstr "in Minuten"
 
-#: aleksis/core/settings.py:470
+#: aleksis/core/preferences.py:398
+#, fuzzy
+#| msgid "Automatically create new persons for new users"
+msgid "Automatically update the dashboard and its widgets"
+msgstr "Erstelle automatisch neue Personen für neue Benutzer"
+
+#: aleksis/core/preferences.py:408
+msgid "Automatically update the dashboard and its widgets sitewide"
+msgstr ""
+
+#: aleksis/core/settings.py:468
 msgid "English"
 msgstr "Englisch"
 
-#: aleksis/core/settings.py:471
+#: aleksis/core/settings.py:469
 msgid "German"
 msgstr "Deutsch"
 
@@ -1444,23 +1509,23 @@ msgstr "Empfänger"
 msgid "There are no announcements."
 msgstr "Es gibt aktuell keine Ankündigungen."
 
-#: aleksis/core/templates/core/base.html:55
+#: aleksis/core/templates/core/base.html:60
 msgid "Logged in as"
 msgstr "Angemeldet als"
 
-#: aleksis/core/templates/core/base.html:148
+#: aleksis/core/templates/core/base.html:154
 msgid "About AlekSIS — The Free School Information System"
 msgstr "Über AlekSIS — The Free School Information System"
 
-#: aleksis/core/templates/core/base.html:156
+#: aleksis/core/templates/core/base.html:162
 msgid "Impress"
 msgstr "Impressum"
 
-#: aleksis/core/templates/core/base.html:164
+#: aleksis/core/templates/core/base.html:170
 msgid "Privacy Policy"
 msgstr "Datenschutzerklärung"
 
-#: aleksis/core/templates/core/base_print.html:67
+#: aleksis/core/templates/core/base_print.html:72
 msgid "Powered by AlekSIS"
 msgstr "Betrieben mit AlekSIS"
 
@@ -1599,14 +1664,9 @@ msgid ""
 "        "
 msgstr ""
 "\n"
-"          Auf dieser Seite können Sie Ihr das Standard-Dashboard "
-"zusammenstallen, welches angezeigt wird, wenn ein Benutzer kein eigenes "
-"definiert. \n"
-"Sie können beliebige Elemente von den \"Verfügbaren Widgets\" in \"Standard-"
-"Dashboard\" ziehen oder die Reihenfolge verändern, indem Sie die Widgets "
-"bewegen. \n"
-"Wenn Sie fertig sind, vergessen Sie bitte nicht, auf \"Speichern\" zu "
-"drücken.\n"
+"          Auf dieser Seite können Sie Ihr das Standard-Dashboard zusammenstallen, welches angezeigt wird, wenn ein Benutzer kein eigenes definiert. \n"
+"Sie können beliebige Elemente von den \"Verfügbaren Widgets\" in \"Standard-Dashboard\" ziehen oder die Reihenfolge verändern, indem Sie die Widgets bewegen. \n"
+"Wenn Sie fertig sind, vergessen Sie bitte nicht, auf \"Speichern\" zu drücken.\n"
 "        "
 
 #: aleksis/core/templates/core/edit_dashboard.html:48
@@ -1770,7 +1830,7 @@ msgstr "Gruppentyp erstellen"
 msgid "Home"
 msgstr "Startseite"
 
-#: aleksis/core/templates/core/index.html:51
+#: aleksis/core/templates/core/index.html:49
 msgid ""
 "\n"
 "        You didn't customise your dashboard so that you see the system default. Please click on \"Edit dashboard\" to\n"
@@ -1782,24 +1842,24 @@ msgstr ""
 "Bitte klicken Sie auf \"Dashboard bearbeiten\", um Ihr persönliches Dashboard anzupassen.\n"
 "      "
 
-#: aleksis/core/templates/core/index.html:61
+#: aleksis/core/templates/core/index.html:59
 msgid "Last activities"
 msgstr "Letzte Aktivitäten"
 
-#: aleksis/core/templates/core/index.html:79
+#: aleksis/core/templates/core/index.html:77
 msgid "No activities available yet."
 msgstr "Aktuell keine Aktivitäten verfügbar."
 
-#: aleksis/core/templates/core/index.html:84
+#: aleksis/core/templates/core/index.html:82
 msgid "Recent notifications"
 msgstr "Letzte Benachrichtigungen"
 
-#: aleksis/core/templates/core/index.html:100
+#: aleksis/core/templates/core/index.html:98
 #: aleksis/core/templates/core/notifications.html:23
 msgid "More information →"
 msgstr "Mehr Informationen →"
 
-#: aleksis/core/templates/core/index.html:107
+#: aleksis/core/templates/core/index.html:105
 #: aleksis/core/templates/core/notifications.html:30
 msgid "No notifications available yet."
 msgstr "Aktuell keine Benachrichtigungen verfügbar."
@@ -2017,8 +2077,8 @@ msgstr ""
 "        Diese einfache Seite kann genutzt werden, um die korrekte Funktionalität des eingebauten PDF-Generierungssystem zu testen.\n"
 "      "
 
-#: aleksis/core/templates/core/partials/announcements.html:9
-#: aleksis/core/templates/core/partials/announcements.html:36
+#: aleksis/core/templates/core/partials/announcements.html:8
+#: aleksis/core/templates/core/partials/announcements.html:35
 #, python-format
 msgid ""
 "\n"
@@ -2029,7 +2089,7 @@ msgstr ""
 "              Gültig für %(from)s\n"
 "            "
 
-#: aleksis/core/templates/core/partials/announcements.html:13
+#: aleksis/core/templates/core/partials/announcements.html:12
 #, python-format
 msgid ""
 "\n"
@@ -2040,7 +2100,7 @@ msgstr ""
 "              Gültig von %(from)s bis %(until)s\n"
 "            "
 
-#: aleksis/core/templates/core/partials/announcements.html:40
+#: aleksis/core/templates/core/partials/announcements.html:39
 #, python-format
 msgid ""
 "\n"
@@ -2278,9 +2338,7 @@ msgstr "Zugriff zurückziehen"
 
 #: aleksis/core/templates/oauth2_provider/authorized-token-delete.html:12
 msgid "Are you sure to revoke the access for this application?"
-msgstr ""
-"Sind Sie sicher, dass Sie den Zugriff für diese Anwendung zurückziehen "
-"möchten?"
+msgstr "Sind Sie sicher, dass Sie den Zugriff für diese Anwendung zurückziehen möchten?"
 
 #: aleksis/core/templates/oauth2_provider/authorized-token-delete.html:20
 msgid "Revoke"
@@ -2353,8 +2411,7 @@ msgid ""
 "          "
 msgstr ""
 "\n"
-"            Beim dem Versuch, die Anmeldung über Ihr Drittanbieter-Konto "
-"durchzuführen, ist ein Fehler aufgetreten.\n"
+"            Beim dem Versuch, die Anmeldung über Ihr Drittanbieter-Konto durchzuführen, ist ein Fehler aufgetreten.\n"
 "            Kontaktieren Sie bitte einen Ihrer Systemadministratoren:\n"
 "          "
 
@@ -2992,130 +3049,128 @@ msgstr "E-Mail"
 msgid "SMS"
 msgstr "SMS"
 
-#: aleksis/core/util/pdf.py:89
+#: aleksis/core/util/pdf.py:105
 msgid "Progress: Generate PDF file"
 msgstr "Fortschritt: PDF-Datei generieren"
 
-#: aleksis/core/util/pdf.py:90
+#: aleksis/core/util/pdf.py:106
 msgid "Generating PDF file …"
 msgstr "PDF-Datei wird generiert …"
 
-#: aleksis/core/util/pdf.py:91
+#: aleksis/core/util/pdf.py:107
 msgid "The PDF file has been generated successfully."
 msgstr "Die PDF-Datei wurde erfolgreich generiert."
 
-#: aleksis/core/util/pdf.py:92
+#: aleksis/core/util/pdf.py:108
 msgid "There was a problem while generating the PDF file."
 msgstr "Es ist ein Fehler beim Generieren der PDF-Datei aufgetreten."
 
-#: aleksis/core/util/pdf.py:95
+#: aleksis/core/util/pdf.py:111
 msgid "Download PDF"
 msgstr "PDF herunterladen"
 
-#: aleksis/core/views.py:249
+#: aleksis/core/views.py:253
 msgid "The school term has been created."
 msgstr "Das Schuljahr wurde erstellt."
 
-#: aleksis/core/views.py:261
+#: aleksis/core/views.py:265
 msgid "The school term has been saved."
 msgstr "Das Schuljahr wurde gespeichert."
 
-#: aleksis/core/views.py:406
+#: aleksis/core/views.py:410
 msgid "The child groups were successfully saved."
 msgstr "Die Untergruppen wurden gespeichert."
 
-#: aleksis/core/views.py:467
+#: aleksis/core/views.py:471
 msgid "The person has been saved."
 msgstr "Die Person wurde gespeichert."
 
-#: aleksis/core/views.py:506
+#: aleksis/core/views.py:510
 msgid "The group has been saved."
 msgstr "Die Gruppe wurde gespeichert."
 
-#: aleksis/core/views.py:603
+#: aleksis/core/views.py:607
 msgid "The announcement has been saved."
 msgstr "Die Ankündigung wurde gespeichert."
 
-#: aleksis/core/views.py:619
+#: aleksis/core/views.py:623
 msgid "The announcement has been deleted."
 msgstr "Ankündigung wurde gelöscht."
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:707
 msgid "The preferences have been saved successfully."
 msgstr "Die Einstellungen wurde gespeichert."
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:731
 msgid "The person has been deleted."
 msgstr "Die Person wurde gelöscht."
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:745
 msgid "The group has been deleted."
 msgstr "Die Gruppe wurde gelöscht."
 
-#: aleksis/core/views.py:773
+#: aleksis/core/views.py:777
 msgid "The additional_field has been saved."
 msgstr "Das zusätzliche Feld wurde gespeichert."
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:811
 msgid "The additional field has been deleted."
 msgstr "Das zusätzliche Feld wurde gelöscht."
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:836
 msgid "The group type has been saved."
 msgstr "Der Gruppentyp wurde gespeichert."
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:866
 msgid "The group type has been deleted."
 msgstr "Der Gruppentyp wurde gelöscht."
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:899
 msgid "Progress: Run data checks"
 msgstr "Fortschritt: Datenprüfungen ausführen"
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:900
 msgid "Run data checks …"
 msgstr "Datenprüfungen laufen …"
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:901
 msgid "The data checks were run successfully."
 msgstr "Die Datenprüfungen wurden erfolgreich ausgeführt."
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:902
 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:918
 #, 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:956
+#: aleksis/core/views.py:960
 msgid "The dashboard widget has been saved."
 msgstr "Das Dashboard-Widget wurde gespeichert."
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:990
 msgid "The dashboard widget has been created."
 msgstr "Das Dashboard-Widget wurde erstellt."
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:1000
 msgid "The dashboard widget has been deleted."
 msgstr "Das Dashboard-Widget wurde gelöscht."
 
-#: aleksis/core/views.py:1063
+#: aleksis/core/views.py:1067
 msgid "Your dashboard configuration has been saved successfully."
 msgstr "Ihre Dashboardkonfiguration wurde erfolgreich gespeichert."
 
-#: aleksis/core/views.py:1065
+#: aleksis/core/views.py:1069
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr "Die Konfiguration des Standard-Dashboardes wurde erfolgreich gespeichert."
 
-#: aleksis/core/views.py:1191
+#: aleksis/core/views.py:1197
 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."
+msgstr "Das Drittanbieter-Konto konnte nicht deaktiviert werden, weil es die einzige verfügbare Anmeldeoption ist."
 
-#: aleksis/core/views.py:1198
+#: aleksis/core/views.py:1204
 msgid "The third-party account has been successfully disconnected."
 msgstr "Das Drittanbieter-Konto wurde erfolgreich getrennt."
 
@@ -3290,9 +3345,6 @@ msgstr "Das Drittanbieter-Konto wurde erfolgreich getrennt."
 #~ msgid "Official name"
 #~ msgstr "Offizieller Name"
 
-#~ msgid "School"
-#~ msgstr "Schule"
-
 #~ msgid "Schools"
 #~ msgstr "Schulen"
 
diff --git a/aleksis/core/locale/de_DE/LC_MESSAGES/djangojs.po b/aleksis/core/locale/de_DE/LC_MESSAGES/djangojs.po
index 21ea82be5697cbfadc5dde4d7de1c9006da0569b..e10a495775fcb643cbe11cc1ce0daf4c5fc649ef 100644
--- a/aleksis/core/locale/de_DE/LC_MESSAGES/djangojs.po
+++ b/aleksis/core/locale/de_DE/LC_MESSAGES/djangojs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-06-08 16:49+0200\n"
+"POT-Creation-Date: 2021-08-28 17:53+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"
@@ -29,6 +29,6 @@ msgstr ""
 msgid "OK"
 msgstr ""
 
-#: aleksis/core/static/js/main.js:133
+#: aleksis/core/static/js/main.js:127
 msgid "This page may contain outdated information since there is no internet connection."
 msgstr ""
diff --git a/aleksis/core/locale/fr/LC_MESSAGES/django.po b/aleksis/core/locale/fr/LC_MESSAGES/django.po
index b66c86ff21c1a5c3959a1b082d3c8ff4f5a1ac58..1474f2840f186c7492954d6897652557d18f5976 100644
--- a/aleksis/core/locale/fr/LC_MESSAGES/django.po
+++ b/aleksis/core/locale/fr/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: 2021-06-08 16:49+0200\n"
+"POT-Creation-Date: 2021-08-28 17:53+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"
+"Language-Team: French <https://translate.edugit.org/projects/aleksis/aleksis/fr/>\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -19,6 +18,28 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
 "X-Generator: Weblate 4.4\n"
 
+#: aleksis/core/apps.py:148 aleksis/core/settings.py:343
+msgid "OpenID Connect scope"
+msgstr ""
+
+#: aleksis/core/apps.py:149 aleksis/core/settings.py:344
+msgid "Given name, family name, link to profile and picture if existing."
+msgstr ""
+
+#: aleksis/core/apps.py:150 aleksis/core/settings.py:345
+msgid "Full home postal address"
+msgstr ""
+
+#: aleksis/core/apps.py:151 aleksis/core/settings.py:346
+#, fuzzy
+#| msgid "Contact details"
+msgid "Email address"
+msgstr "Détails de contact"
+
+#: aleksis/core/apps.py:152 aleksis/core/settings.py:347
+msgid "Home and mobile phone"
+msgstr ""
+
 #: aleksis/core/data_checks.py:55
 msgid "Ignore problem"
 msgstr ""
@@ -40,7 +61,8 @@ msgstr ""
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
-#: aleksis/core/filters.py:37 aleksis/core/templates/core/base.html:78
+#: aleksis/core/filters.py:37 aleksis/core/templates/core/base.html:83
+#: aleksis/core/templates/core/base.html:84
 #: aleksis/core/templates/core/group/list.html:20
 #: aleksis/core/templates/core/person/list.html:24
 #: aleksis/core/templates/search/search.html:7
@@ -105,7 +127,7 @@ msgid "Common data"
 msgstr "Détails de contact"
 
 #: aleksis/core/forms.py:172 aleksis/core/forms.py:221
-#: aleksis/core/menus.py:236 aleksis/core/models.py:139
+#: aleksis/core/menus.py:238 aleksis/core/models.py:139
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 #, fuzzy
@@ -129,7 +151,7 @@ msgstr "Date"
 msgid "Time"
 msgstr ""
 
-#: aleksis/core/forms.py:234 aleksis/core/menus.py:247
+#: aleksis/core/forms.py:234 aleksis/core/menus.py:249
 #: aleksis/core/models.py:381 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:144
@@ -234,29 +256,30 @@ msgstr ""
 msgid "Dashboard"
 msgstr ""
 
-#: aleksis/core/menus.py:30 aleksis/core/models.py:588
+#: aleksis/core/menus.py:32 aleksis/core/models.py:588
+#: aleksis/core/preferences.py:26
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr ""
 
-#: aleksis/core/menus.py:39
+#: aleksis/core/menus.py:41
 msgid "Account"
 msgstr ""
 
-#: aleksis/core/menus.py:46
+#: aleksis/core/menus.py:48
 msgid "Stop impersonation"
 msgstr ""
 
-#: aleksis/core/menus.py:55 aleksis/core/templates/core/base.html:57
+#: aleksis/core/menus.py:57 aleksis/core/templates/core/base.html:62
 msgid "Logout"
 msgstr ""
 
-#: aleksis/core/menus.py:61
+#: aleksis/core/menus.py:63
 msgid "2FA"
 msgstr ""
 
-#: aleksis/core/menus.py:67
+#: aleksis/core/menus.py:69
 #: aleksis/core/templates/account/password_change.html:5
 #: aleksis/core/templates/account/password_change.html:6
 #: aleksis/core/templates/account/password_change.html:19
@@ -268,87 +291,87 @@ msgstr ""
 msgid "Change password"
 msgstr ""
 
-#: aleksis/core/menus.py:79
+#: aleksis/core/menus.py:81
 msgid "Me"
 msgstr ""
 
-#: aleksis/core/menus.py:88
+#: aleksis/core/menus.py:90
 #: aleksis/core/templates/dynamic_preferences/form.html:5
 msgid "Preferences"
 msgstr ""
 
-#: aleksis/core/menus.py:97
+#: aleksis/core/menus.py:99
 msgid "Third-party accounts"
 msgstr ""
 
-#: aleksis/core/menus.py:106
+#: aleksis/core/menus.py:108
 #: aleksis/core/templates/oauth2_provider/authorized-tokens.html:5
 #: aleksis/core/templates/oauth2_provider/authorized-tokens.html:6
 msgid "Authorized applications"
 msgstr ""
 
-#: aleksis/core/menus.py:117
+#: aleksis/core/menus.py:119
 msgid "Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:125 aleksis/core/models.py:687
+#: aleksis/core/menus.py:127 aleksis/core/models.py:687
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr ""
 
-#: aleksis/core/menus.py:136 aleksis/core/models.py:117
+#: aleksis/core/menus.py:138 aleksis/core/models.py:117
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
 msgstr ""
 
-#: aleksis/core/menus.py:147
+#: aleksis/core/menus.py:149
 #: aleksis/core/templates/core/dashboard_widget/list.html:8
 #: aleksis/core/templates/core/dashboard_widget/list.html:9
 msgid "Dashboard widgets"
 msgstr ""
 
-#: aleksis/core/menus.py:158
+#: aleksis/core/menus.py:160
 #: aleksis/core/templates/core/management/data_management.html:6
 #: aleksis/core/templates/core/management/data_management.html:7
 msgid "Data management"
 msgstr ""
 
-#: aleksis/core/menus.py:169
+#: aleksis/core/menus.py:171
 #: aleksis/core/templates/core/pages/system_status.html:5
 #: aleksis/core/templates/core/pages/system_status.html:7
 msgid "System status"
 msgstr ""
 
-#: aleksis/core/menus.py:180
+#: aleksis/core/menus.py:182
 msgid "Impersonation"
 msgstr ""
 
-#: aleksis/core/menus.py:191
+#: aleksis/core/menus.py:193
 msgid "Configuration"
 msgstr ""
 
-#: aleksis/core/menus.py:202 aleksis/core/templates/core/data_check/list.html:9
+#: aleksis/core/menus.py:204 aleksis/core/templates/core/data_check/list.html:9
 #: aleksis/core/templates/core/data_check/list.html:10
 msgid "Data checks"
 msgstr ""
 
-#: aleksis/core/menus.py:208
+#: aleksis/core/menus.py:210
 msgid "Backend Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:214
+#: aleksis/core/menus.py:216
 #: aleksis/core/templates/oauth2_provider/application_detail.html:5
 #: aleksis/core/templates/oauth2_provider/application_list.html:5
 msgid "OAuth2 Applications"
 msgstr ""
 
-#: aleksis/core/menus.py:227
+#: aleksis/core/menus.py:229
 msgid "People"
 msgstr ""
 
-#: aleksis/core/menus.py:258 aleksis/core/models.py:941
+#: aleksis/core/menus.py:260 aleksis/core/models.py:941
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 #, fuzzy
@@ -356,21 +379,21 @@ msgstr ""
 msgid "Group types"
 msgstr "Groupe"
 
-#: aleksis/core/menus.py:269
+#: aleksis/core/menus.py:271
 msgid "Persons and accounts"
 msgstr ""
 
-#: aleksis/core/menus.py:280
+#: aleksis/core/menus.py:282
 msgid "Groups and child groups"
 msgstr ""
 
-#: aleksis/core/menus.py:291 aleksis/core/models.py:429
+#: aleksis/core/menus.py:293 aleksis/core/models.py:429
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 msgid "Additional fields"
 msgstr ""
 
-#: aleksis/core/menus.py:306
+#: aleksis/core/menus.py:308
 #: aleksis/core/templates/core/group/child_groups.html:7
 #: aleksis/core/templates/core/group/child_groups.html:9
 msgid "Assign child groups to groups"
@@ -905,48 +928,74 @@ msgstr ""
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1040
+#: aleksis/core/models.py:1044
 #, fuzzy
 #| msgid "Owners"
 msgid "Owner"
 msgstr "Propriétaires"
 
-#: aleksis/core/models.py:1043
+#: aleksis/core/models.py:1048
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1045
+#: aleksis/core/models.py:1050
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1047
+#: aleksis/core/models.py:1052
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1054
+#: aleksis/core/models.py:1059
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1055
+#: aleksis/core/models.py:1060
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1060
+#: aleksis/core/models.py:1065
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1063
+#: aleksis/core/models.py:1068
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1075
+#: aleksis/core/models.py:1080
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1076
+#: aleksis/core/models.py:1081
 msgid "Task user assignments"
 msgstr ""
 
+#: aleksis/core/preferences.py:22
+msgid "General"
+msgstr ""
+
+#: aleksis/core/preferences.py:23
+msgid "School"
+msgstr ""
+
+#: aleksis/core/preferences.py:24
+msgid "Theme"
+msgstr ""
+
+#: aleksis/core/preferences.py:25
+msgid "Mail"
+msgstr ""
+
+#: aleksis/core/preferences.py:27
+msgid "Footer"
+msgstr ""
+
+#: aleksis/core/preferences.py:28
+#, fuzzy
+#| msgid "Contact details"
+msgid "Accounts"
+msgstr "Détails de contact"
+
 #: aleksis/core/preferences.py:29
 msgid "Authentication"
 msgstr ""
@@ -1091,11 +1140,19 @@ msgstr ""
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/settings.py:470
+#: aleksis/core/preferences.py:398
+msgid "Automatically update the dashboard and its widgets"
+msgstr ""
+
+#: aleksis/core/preferences.py:408
+msgid "Automatically update the dashboard and its widgets sitewide"
+msgstr ""
+
+#: aleksis/core/settings.py:468
 msgid "English"
 msgstr ""
 
-#: aleksis/core/settings.py:471
+#: aleksis/core/settings.py:469
 msgid "German"
 msgstr ""
 
@@ -1436,23 +1493,23 @@ msgstr ""
 msgid "There are no announcements."
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:55
+#: aleksis/core/templates/core/base.html:60
 msgid "Logged in as"
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:148
+#: aleksis/core/templates/core/base.html:154
 msgid "About AlekSIS — The Free School Information System"
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:156
+#: aleksis/core/templates/core/base.html:162
 msgid "Impress"
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:164
+#: aleksis/core/templates/core/base.html:170
 msgid "Privacy Policy"
 msgstr ""
 
-#: aleksis/core/templates/core/base_print.html:67
+#: aleksis/core/templates/core/base_print.html:72
 msgid "Powered by AlekSIS"
 msgstr ""
 
@@ -1736,7 +1793,7 @@ msgstr "Groupe"
 msgid "Home"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:51
+#: aleksis/core/templates/core/index.html:49
 msgid ""
 "\n"
 "        You didn't customise your dashboard so that you see the system default. Please click on \"Edit dashboard\" to\n"
@@ -1744,24 +1801,24 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:61
+#: aleksis/core/templates/core/index.html:59
 msgid "Last activities"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:79
+#: aleksis/core/templates/core/index.html:77
 msgid "No activities available yet."
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:84
+#: aleksis/core/templates/core/index.html:82
 msgid "Recent notifications"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:100
+#: aleksis/core/templates/core/index.html:98
 #: aleksis/core/templates/core/notifications.html:23
 msgid "More information →"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:107
+#: aleksis/core/templates/core/index.html:105
 #: aleksis/core/templates/core/notifications.html:30
 msgid "No notifications available yet."
 msgstr ""
@@ -1950,8 +2007,8 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/core/templates/core/partials/announcements.html:9
-#: aleksis/core/templates/core/partials/announcements.html:36
+#: aleksis/core/templates/core/partials/announcements.html:8
+#: aleksis/core/templates/core/partials/announcements.html:35
 #, python-format
 msgid ""
 "\n"
@@ -1959,7 +2016,7 @@ msgid ""
 "            "
 msgstr ""
 
-#: aleksis/core/templates/core/partials/announcements.html:13
+#: aleksis/core/templates/core/partials/announcements.html:12
 #, python-format
 msgid ""
 "\n"
@@ -1967,7 +2024,7 @@ msgid ""
 "            "
 msgstr ""
 
-#: aleksis/core/templates/core/partials/announcements.html:40
+#: aleksis/core/templates/core/partials/announcements.html:39
 #, python-format
 msgid ""
 "\n"
@@ -2759,127 +2816,127 @@ msgstr ""
 msgid "SMS"
 msgstr ""
 
-#: aleksis/core/util/pdf.py:89
+#: aleksis/core/util/pdf.py:105
 msgid "Progress: Generate PDF file"
 msgstr ""
 
-#: aleksis/core/util/pdf.py:90
+#: aleksis/core/util/pdf.py:106
 msgid "Generating PDF file …"
 msgstr ""
 
-#: aleksis/core/util/pdf.py:91
+#: aleksis/core/util/pdf.py:107
 msgid "The PDF file has been generated successfully."
 msgstr ""
 
-#: aleksis/core/util/pdf.py:92
+#: aleksis/core/util/pdf.py:108
 msgid "There was a problem while generating the PDF file."
 msgstr ""
 
-#: aleksis/core/util/pdf.py:95
+#: aleksis/core/util/pdf.py:111
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:249
+#: aleksis/core/views.py:253
 msgid "The school term has been created."
 msgstr ""
 
-#: aleksis/core/views.py:261
+#: aleksis/core/views.py:265
 msgid "The school term has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:406
+#: aleksis/core/views.py:410
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:467
+#: aleksis/core/views.py:471
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:506
+#: aleksis/core/views.py:510
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:603
+#: aleksis/core/views.py:607
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:619
+#: aleksis/core/views.py:623
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:707
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:731
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:745
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:773
+#: aleksis/core/views.py:777
 msgid "The additional_field has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:811
 msgid "The additional field has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:836
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:866
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:899
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:900
 msgid "Run data checks …"
 msgstr ""
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:901
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:902
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:918
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:960
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:990
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:1000
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1063
+#: aleksis/core/views.py:1067
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1065
+#: aleksis/core/views.py:1069
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1191
+#: aleksis/core/views.py:1197
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1198
+#: aleksis/core/views.py:1204
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
diff --git a/aleksis/core/locale/fr/LC_MESSAGES/djangojs.po b/aleksis/core/locale/fr/LC_MESSAGES/djangojs.po
index 21e69364371e66818823069bb0a8232f9cadde70..d8b7ad352c6960cdc4dd763358d91f4004435949 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: 2021-06-08 16:49+0200\n"
+"POT-Creation-Date: 2021-08-28 17:53+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"
@@ -30,6 +30,6 @@ msgstr ""
 msgid "OK"
 msgstr ""
 
-#: aleksis/core/static/js/main.js:133
+#: aleksis/core/static/js/main.js:127
 msgid "This page may contain outdated information since there is no internet connection."
 msgstr ""
diff --git a/aleksis/core/locale/la/LC_MESSAGES/django.po b/aleksis/core/locale/la/LC_MESSAGES/django.po
index c93dfc4c84cc2d07cc3edcc772e59cfac8eb4eb1..0badcc66b6e356e9988b64d155b1dfa53ee3381b 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: 2021-06-08 16:49+0200\n"
+"POT-Creation-Date: 2021-08-28 17:53+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"
@@ -18,6 +18,32 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Generator: Weblate 4.3.2\n"
 
+#: aleksis/core/apps.py:148 aleksis/core/settings.py:343
+msgid "OpenID Connect scope"
+msgstr ""
+
+#: aleksis/core/apps.py:149 aleksis/core/settings.py:344
+msgid "Given name, family name, link to profile and picture if existing."
+msgstr ""
+
+#: aleksis/core/apps.py:150 aleksis/core/settings.py:345
+#, fuzzy
+#| msgid "E-mail address"
+msgid "Full home postal address"
+msgstr "Inscriptio electronica"
+
+#: aleksis/core/apps.py:151 aleksis/core/settings.py:346
+#, fuzzy
+#| msgid "E-mail address"
+msgid "Email address"
+msgstr "Inscriptio electronica"
+
+#: aleksis/core/apps.py:152 aleksis/core/settings.py:347
+#, fuzzy
+#| msgid "Mobile phone"
+msgid "Home and mobile phone"
+msgstr "Numerus telephoni mobilis"
+
 #: aleksis/core/data_checks.py:55
 msgid "Ignore problem"
 msgstr ""
@@ -41,7 +67,8 @@ msgstr ""
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
-#: aleksis/core/filters.py:37 aleksis/core/templates/core/base.html:78
+#: aleksis/core/filters.py:37 aleksis/core/templates/core/base.html:83
+#: aleksis/core/templates/core/base.html:84
 #: aleksis/core/templates/core/group/list.html:20
 #: aleksis/core/templates/core/person/list.html:24
 #: aleksis/core/templates/search/search.html:7
@@ -106,7 +133,7 @@ msgid "Common data"
 msgstr "Adminstratio datarum"
 
 #: aleksis/core/forms.py:172 aleksis/core/forms.py:221
-#: aleksis/core/menus.py:236 aleksis/core/models.py:139
+#: aleksis/core/menus.py:238 aleksis/core/models.py:139
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
@@ -128,7 +155,7 @@ msgstr "dies"
 msgid "Time"
 msgstr "tempus"
 
-#: aleksis/core/forms.py:234 aleksis/core/menus.py:247
+#: aleksis/core/forms.py:234 aleksis/core/menus.py:249
 #: aleksis/core/models.py:381 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:144
@@ -233,29 +260,30 @@ msgstr ""
 msgid "Dashboard"
 msgstr "Forum"
 
-#: aleksis/core/menus.py:30 aleksis/core/models.py:588
+#: aleksis/core/menus.py:32 aleksis/core/models.py:588
+#: aleksis/core/preferences.py:26
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr "Nuntii"
 
-#: aleksis/core/menus.py:39
+#: aleksis/core/menus.py:41
 msgid "Account"
 msgstr ""
 
-#: aleksis/core/menus.py:46
+#: aleksis/core/menus.py:48
 msgid "Stop impersonation"
 msgstr "Simulandum aliquem finire"
 
-#: aleksis/core/menus.py:55 aleksis/core/templates/core/base.html:57
+#: aleksis/core/menus.py:57 aleksis/core/templates/core/base.html:62
 msgid "Logout"
 msgstr "nomen retractare"
 
-#: aleksis/core/menus.py:61
+#: aleksis/core/menus.py:63
 msgid "2FA"
 msgstr ""
 
-#: aleksis/core/menus.py:67
+#: aleksis/core/menus.py:69
 #: aleksis/core/templates/account/password_change.html:5
 #: aleksis/core/templates/account/password_change.html:6
 #: aleksis/core/templates/account/password_change.html:19
@@ -267,22 +295,22 @@ msgstr ""
 msgid "Change password"
 msgstr ""
 
-#: aleksis/core/menus.py:79
+#: aleksis/core/menus.py:81
 msgid "Me"
 msgstr ""
 
-#: aleksis/core/menus.py:88
+#: aleksis/core/menus.py:90
 #: aleksis/core/templates/dynamic_preferences/form.html:5
 msgid "Preferences"
 msgstr ""
 
-#: aleksis/core/menus.py:97
+#: aleksis/core/menus.py:99
 #, fuzzy
 #| msgid "Persons and accounts"
 msgid "Third-party accounts"
 msgstr "Personae et computi"
 
-#: aleksis/core/menus.py:106
+#: aleksis/core/menus.py:108
 #: aleksis/core/templates/oauth2_provider/authorized-tokens.html:5
 #: aleksis/core/templates/oauth2_provider/authorized-tokens.html:6
 #, fuzzy
@@ -290,23 +318,23 @@ msgstr "Personae et computi"
 msgid "Authorized applications"
 msgstr "Nuntii"
 
-#: aleksis/core/menus.py:117
+#: aleksis/core/menus.py:119
 msgid "Admin"
 msgstr "Administratio"
 
-#: aleksis/core/menus.py:125 aleksis/core/models.py:687
+#: aleksis/core/menus.py:127 aleksis/core/models.py:687
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr "Nuntii"
 
-#: aleksis/core/menus.py:136 aleksis/core/models.py:117
+#: aleksis/core/menus.py:138 aleksis/core/models.py:117
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
 msgstr "ani scolae"
 
-#: aleksis/core/menus.py:147
+#: aleksis/core/menus.py:149
 #: aleksis/core/templates/core/dashboard_widget/list.html:8
 #: aleksis/core/templates/core/dashboard_widget/list.html:9
 #, fuzzy
@@ -314,40 +342,40 @@ msgstr "ani scolae"
 msgid "Dashboard widgets"
 msgstr "Forum"
 
-#: aleksis/core/menus.py:158
+#: aleksis/core/menus.py:160
 #: aleksis/core/templates/core/management/data_management.html:6
 #: aleksis/core/templates/core/management/data_management.html:7
 msgid "Data management"
 msgstr "Adminstratio datarum"
 
-#: aleksis/core/menus.py:169
+#: aleksis/core/menus.py:171
 #: aleksis/core/templates/core/pages/system_status.html:5
 #: aleksis/core/templates/core/pages/system_status.html:7
 msgid "System status"
 msgstr "Status systemae"
 
-#: aleksis/core/menus.py:180
+#: aleksis/core/menus.py:182
 msgid "Impersonation"
 msgstr "Simulare aliquem"
 
-#: aleksis/core/menus.py:191
+#: aleksis/core/menus.py:193
 #, fuzzy
 #| msgid "Notification"
 msgid "Configuration"
 msgstr "Nuntius"
 
-#: aleksis/core/menus.py:202 aleksis/core/templates/core/data_check/list.html:9
+#: aleksis/core/menus.py:204 aleksis/core/templates/core/data_check/list.html:9
 #: aleksis/core/templates/core/data_check/list.html:10
 #, fuzzy
 #| msgid "System status"
 msgid "Data checks"
 msgstr "Status systemae"
 
-#: aleksis/core/menus.py:208
+#: aleksis/core/menus.py:210
 msgid "Backend Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:214
+#: aleksis/core/menus.py:216
 #: aleksis/core/templates/oauth2_provider/application_detail.html:5
 #: aleksis/core/templates/oauth2_provider/application_list.html:5
 #, fuzzy
@@ -355,11 +383,11 @@ msgstr ""
 msgid "OAuth2 Applications"
 msgstr "Nuntii"
 
-#: aleksis/core/menus.py:227
+#: aleksis/core/menus.py:229
 msgid "People"
 msgstr "Personae"
 
-#: aleksis/core/menus.py:258 aleksis/core/models.py:941
+#: aleksis/core/menus.py:260 aleksis/core/models.py:941
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 #, fuzzy
@@ -367,15 +395,15 @@ msgstr "Personae"
 msgid "Group types"
 msgstr "Greges"
 
-#: aleksis/core/menus.py:269
+#: aleksis/core/menus.py:271
 msgid "Persons and accounts"
 msgstr "Personae et computi"
 
-#: aleksis/core/menus.py:280
+#: aleksis/core/menus.py:282
 msgid "Groups and child groups"
 msgstr ""
 
-#: aleksis/core/menus.py:291 aleksis/core/models.py:429
+#: aleksis/core/menus.py:293 aleksis/core/models.py:429
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 #, fuzzy
@@ -383,7 +411,7 @@ msgstr ""
 msgid "Additional fields"
 msgstr "addita nomines"
 
-#: aleksis/core/menus.py:306
+#: aleksis/core/menus.py:308
 #: aleksis/core/templates/core/group/child_groups.html:7
 #: aleksis/core/templates/core/group/child_groups.html:9
 msgid "Assign child groups to groups"
@@ -954,46 +982,72 @@ msgstr ""
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1040
+#: aleksis/core/models.py:1044
 msgid "Owner"
 msgstr ""
 
-#: aleksis/core/models.py:1043
+#: aleksis/core/models.py:1048
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1045
+#: aleksis/core/models.py:1050
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1047
+#: aleksis/core/models.py:1052
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1054
+#: aleksis/core/models.py:1059
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1055
+#: aleksis/core/models.py:1060
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1060
+#: aleksis/core/models.py:1065
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1063
+#: aleksis/core/models.py:1068
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1075
+#: aleksis/core/models.py:1080
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1076
+#: aleksis/core/models.py:1081
 msgid "Task user assignments"
 msgstr ""
 
+#: aleksis/core/preferences.py:22
+msgid "General"
+msgstr ""
+
+#: aleksis/core/preferences.py:23
+msgid "School"
+msgstr "Scola"
+
+#: aleksis/core/preferences.py:24
+msgid "Theme"
+msgstr ""
+
+#: aleksis/core/preferences.py:25
+msgid "Mail"
+msgstr ""
+
+#: aleksis/core/preferences.py:27
+msgid "Footer"
+msgstr ""
+
+#: aleksis/core/preferences.py:28
+#, fuzzy
+#| msgid "Data management"
+msgid "Accounts"
+msgstr "Adminstratio datarum"
+
 #: aleksis/core/preferences.py:29
 #, fuzzy
 #| msgid "Notifications"
@@ -1146,11 +1200,19 @@ msgstr ""
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/settings.py:470
+#: aleksis/core/preferences.py:398
+msgid "Automatically update the dashboard and its widgets"
+msgstr ""
+
+#: aleksis/core/preferences.py:408
+msgid "Automatically update the dashboard and its widgets sitewide"
+msgstr ""
+
+#: aleksis/core/settings.py:468
 msgid "English"
 msgstr "Britannicus"
 
-#: aleksis/core/settings.py:471
+#: aleksis/core/settings.py:469
 msgid "German"
 msgstr "Germanus"
 
@@ -1511,23 +1573,23 @@ msgstr ""
 msgid "There are no announcements."
 msgstr "Scribe nuntium:"
 
-#: aleksis/core/templates/core/base.html:55
+#: aleksis/core/templates/core/base.html:60
 msgid "Logged in as"
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:148
+#: aleksis/core/templates/core/base.html:154
 msgid "About AlekSIS — The Free School Information System"
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:156
+#: aleksis/core/templates/core/base.html:162
 msgid "Impress"
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:164
+#: aleksis/core/templates/core/base.html:170
 msgid "Privacy Policy"
 msgstr ""
 
-#: aleksis/core/templates/core/base_print.html:67
+#: aleksis/core/templates/core/base_print.html:72
 msgid "Powered by AlekSIS"
 msgstr ""
 
@@ -1821,7 +1883,7 @@ msgstr "Grex"
 msgid "Home"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:51
+#: aleksis/core/templates/core/index.html:49
 msgid ""
 "\n"
 "        You didn't customise your dashboard so that you see the system default. Please click on \"Edit dashboard\" to\n"
@@ -1829,28 +1891,28 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:61
+#: aleksis/core/templates/core/index.html:59
 msgid "Last activities"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:79
+#: aleksis/core/templates/core/index.html:77
 msgid "No activities available yet."
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:84
+#: aleksis/core/templates/core/index.html:82
 #, fuzzy
 #| msgid "Notifications"
 msgid "Recent notifications"
 msgstr "Nuntii"
 
-#: aleksis/core/templates/core/index.html:100
+#: aleksis/core/templates/core/index.html:98
 #: aleksis/core/templates/core/notifications.html:23
 #, fuzzy
 #| msgid "Edit school information"
 msgid "More information →"
 msgstr "Muta informationes scolae"
 
-#: aleksis/core/templates/core/index.html:107
+#: aleksis/core/templates/core/index.html:105
 #: aleksis/core/templates/core/notifications.html:30
 msgid "No notifications available yet."
 msgstr ""
@@ -2049,8 +2111,8 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/core/templates/core/partials/announcements.html:9
-#: aleksis/core/templates/core/partials/announcements.html:36
+#: aleksis/core/templates/core/partials/announcements.html:8
+#: aleksis/core/templates/core/partials/announcements.html:35
 #, python-format
 msgid ""
 "\n"
@@ -2058,7 +2120,7 @@ msgid ""
 "            "
 msgstr ""
 
-#: aleksis/core/templates/core/partials/announcements.html:13
+#: aleksis/core/templates/core/partials/announcements.html:12
 #, python-format
 msgid ""
 "\n"
@@ -2066,7 +2128,7 @@ msgid ""
 "            "
 msgstr ""
 
-#: aleksis/core/templates/core/partials/announcements.html:40
+#: aleksis/core/templates/core/partials/announcements.html:39
 #, python-format
 msgid ""
 "\n"
@@ -2877,130 +2939,130 @@ msgstr ""
 msgid "SMS"
 msgstr ""
 
-#: aleksis/core/util/pdf.py:89
+#: aleksis/core/util/pdf.py:105
 msgid "Progress: Generate PDF file"
 msgstr ""
 
-#: aleksis/core/util/pdf.py:90
+#: aleksis/core/util/pdf.py:106
 msgid "Generating PDF file …"
 msgstr ""
 
-#: aleksis/core/util/pdf.py:91
+#: aleksis/core/util/pdf.py:107
 msgid "The PDF file has been generated successfully."
 msgstr ""
 
-#: aleksis/core/util/pdf.py:92
+#: aleksis/core/util/pdf.py:108
 msgid "There was a problem while generating the PDF file."
 msgstr ""
 
-#: aleksis/core/util/pdf.py:95
+#: aleksis/core/util/pdf.py:111
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:249
+#: aleksis/core/views.py:253
 msgid "The school term has been created."
 msgstr ""
 
-#: aleksis/core/views.py:261
+#: aleksis/core/views.py:265
 msgid "The school term has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:406
+#: aleksis/core/views.py:410
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:467
+#: aleksis/core/views.py:471
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:506
+#: aleksis/core/views.py:510
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:603
+#: aleksis/core/views.py:607
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:619
+#: aleksis/core/views.py:623
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:707
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:731
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:745
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:773
+#: aleksis/core/views.py:777
 msgid "The additional_field has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:811
 msgid "The additional field has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:836
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:866
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:899
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:900
 #, fuzzy
 #| msgid "System status"
 msgid "Run data checks …"
 msgstr "Status systemae"
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:901
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:902
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:918
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:960
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:990
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:1000
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1063
+#: aleksis/core/views.py:1067
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1065
+#: aleksis/core/views.py:1069
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1191
+#: aleksis/core/views.py:1197
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1198
+#: aleksis/core/views.py:1204
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
@@ -3013,8 +3075,5 @@ msgstr ""
 #~ msgid "Official name"
 #~ msgstr "Officialis nomen"
 
-#~ msgid "School"
-#~ msgstr "Scola"
-
 #~ msgid "Schools"
 #~ msgstr "Scholae"
diff --git a/aleksis/core/locale/la/LC_MESSAGES/djangojs.po b/aleksis/core/locale/la/LC_MESSAGES/djangojs.po
index 21ea82be5697cbfadc5dde4d7de1c9006da0569b..e10a495775fcb643cbe11cc1ce0daf4c5fc649ef 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: 2021-06-08 16:49+0200\n"
+"POT-Creation-Date: 2021-08-28 17:53+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"
@@ -29,6 +29,6 @@ msgstr ""
 msgid "OK"
 msgstr ""
 
-#: aleksis/core/static/js/main.js:133
+#: aleksis/core/static/js/main.js:127
 msgid "This page may contain outdated information since there is no internet connection."
 msgstr ""
diff --git a/aleksis/core/locale/nb_NO/LC_MESSAGES/django.po b/aleksis/core/locale/nb_NO/LC_MESSAGES/django.po
index 7c6a52b38dae78aecca1ac6b79fdcb585b0573bf..8bb678db92f9b2860f4b806ddb7fc40e3a6d9149 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: 2021-06-08 16:49+0200\n"
+"POT-Creation-Date: 2021-08-28 17:53+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"
@@ -17,6 +17,26 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: aleksis/core/apps.py:148 aleksis/core/settings.py:343
+msgid "OpenID Connect scope"
+msgstr ""
+
+#: aleksis/core/apps.py:149 aleksis/core/settings.py:344
+msgid "Given name, family name, link to profile and picture if existing."
+msgstr ""
+
+#: aleksis/core/apps.py:150 aleksis/core/settings.py:345
+msgid "Full home postal address"
+msgstr ""
+
+#: aleksis/core/apps.py:151 aleksis/core/settings.py:346
+msgid "Email address"
+msgstr ""
+
+#: aleksis/core/apps.py:152 aleksis/core/settings.py:347
+msgid "Home and mobile phone"
+msgstr ""
+
 #: aleksis/core/data_checks.py:55
 msgid "Ignore problem"
 msgstr ""
@@ -38,7 +58,8 @@ msgstr ""
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
-#: aleksis/core/filters.py:37 aleksis/core/templates/core/base.html:78
+#: aleksis/core/filters.py:37 aleksis/core/templates/core/base.html:83
+#: aleksis/core/templates/core/base.html:84
 #: aleksis/core/templates/core/group/list.html:20
 #: aleksis/core/templates/core/person/list.html:24
 #: aleksis/core/templates/search/search.html:7
@@ -95,7 +116,7 @@ msgid "Common data"
 msgstr ""
 
 #: aleksis/core/forms.py:172 aleksis/core/forms.py:221
-#: aleksis/core/menus.py:236 aleksis/core/models.py:139
+#: aleksis/core/menus.py:238 aleksis/core/models.py:139
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
@@ -115,7 +136,7 @@ msgstr ""
 msgid "Time"
 msgstr ""
 
-#: aleksis/core/forms.py:234 aleksis/core/menus.py:247
+#: aleksis/core/forms.py:234 aleksis/core/menus.py:249
 #: aleksis/core/models.py:381 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:144
@@ -216,29 +237,30 @@ msgstr ""
 msgid "Dashboard"
 msgstr ""
 
-#: aleksis/core/menus.py:30 aleksis/core/models.py:588
+#: aleksis/core/menus.py:32 aleksis/core/models.py:588
+#: aleksis/core/preferences.py:26
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr ""
 
-#: aleksis/core/menus.py:39
+#: aleksis/core/menus.py:41
 msgid "Account"
 msgstr ""
 
-#: aleksis/core/menus.py:46
+#: aleksis/core/menus.py:48
 msgid "Stop impersonation"
 msgstr ""
 
-#: aleksis/core/menus.py:55 aleksis/core/templates/core/base.html:57
+#: aleksis/core/menus.py:57 aleksis/core/templates/core/base.html:62
 msgid "Logout"
 msgstr ""
 
-#: aleksis/core/menus.py:61
+#: aleksis/core/menus.py:63
 msgid "2FA"
 msgstr ""
 
-#: aleksis/core/menus.py:67
+#: aleksis/core/menus.py:69
 #: aleksis/core/templates/account/password_change.html:5
 #: aleksis/core/templates/account/password_change.html:6
 #: aleksis/core/templates/account/password_change.html:19
@@ -250,107 +272,107 @@ msgstr ""
 msgid "Change password"
 msgstr ""
 
-#: aleksis/core/menus.py:79
+#: aleksis/core/menus.py:81
 msgid "Me"
 msgstr ""
 
-#: aleksis/core/menus.py:88
+#: aleksis/core/menus.py:90
 #: aleksis/core/templates/dynamic_preferences/form.html:5
 msgid "Preferences"
 msgstr ""
 
-#: aleksis/core/menus.py:97
+#: aleksis/core/menus.py:99
 msgid "Third-party accounts"
 msgstr ""
 
-#: aleksis/core/menus.py:106
+#: aleksis/core/menus.py:108
 #: aleksis/core/templates/oauth2_provider/authorized-tokens.html:5
 #: aleksis/core/templates/oauth2_provider/authorized-tokens.html:6
 msgid "Authorized applications"
 msgstr ""
 
-#: aleksis/core/menus.py:117
+#: aleksis/core/menus.py:119
 msgid "Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:125 aleksis/core/models.py:687
+#: aleksis/core/menus.py:127 aleksis/core/models.py:687
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr ""
 
-#: aleksis/core/menus.py:136 aleksis/core/models.py:117
+#: aleksis/core/menus.py:138 aleksis/core/models.py:117
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
 msgstr ""
 
-#: aleksis/core/menus.py:147
+#: aleksis/core/menus.py:149
 #: aleksis/core/templates/core/dashboard_widget/list.html:8
 #: aleksis/core/templates/core/dashboard_widget/list.html:9
 msgid "Dashboard widgets"
 msgstr ""
 
-#: aleksis/core/menus.py:158
+#: aleksis/core/menus.py:160
 #: aleksis/core/templates/core/management/data_management.html:6
 #: aleksis/core/templates/core/management/data_management.html:7
 msgid "Data management"
 msgstr ""
 
-#: aleksis/core/menus.py:169
+#: aleksis/core/menus.py:171
 #: aleksis/core/templates/core/pages/system_status.html:5
 #: aleksis/core/templates/core/pages/system_status.html:7
 msgid "System status"
 msgstr ""
 
-#: aleksis/core/menus.py:180
+#: aleksis/core/menus.py:182
 msgid "Impersonation"
 msgstr ""
 
-#: aleksis/core/menus.py:191
+#: aleksis/core/menus.py:193
 msgid "Configuration"
 msgstr ""
 
-#: aleksis/core/menus.py:202 aleksis/core/templates/core/data_check/list.html:9
+#: aleksis/core/menus.py:204 aleksis/core/templates/core/data_check/list.html:9
 #: aleksis/core/templates/core/data_check/list.html:10
 msgid "Data checks"
 msgstr ""
 
-#: aleksis/core/menus.py:208
+#: aleksis/core/menus.py:210
 msgid "Backend Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:214
+#: aleksis/core/menus.py:216
 #: aleksis/core/templates/oauth2_provider/application_detail.html:5
 #: aleksis/core/templates/oauth2_provider/application_list.html:5
 msgid "OAuth2 Applications"
 msgstr ""
 
-#: aleksis/core/menus.py:227
+#: aleksis/core/menus.py:229
 msgid "People"
 msgstr ""
 
-#: aleksis/core/menus.py:258 aleksis/core/models.py:941
+#: aleksis/core/menus.py:260 aleksis/core/models.py:941
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
 msgstr ""
 
-#: aleksis/core/menus.py:269
+#: aleksis/core/menus.py:271
 msgid "Persons and accounts"
 msgstr ""
 
-#: aleksis/core/menus.py:280
+#: aleksis/core/menus.py:282
 msgid "Groups and child groups"
 msgstr ""
 
-#: aleksis/core/menus.py:291 aleksis/core/models.py:429
+#: aleksis/core/menus.py:293 aleksis/core/models.py:429
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 msgid "Additional fields"
 msgstr ""
 
-#: aleksis/core/menus.py:306
+#: aleksis/core/menus.py:308
 #: aleksis/core/templates/core/group/child_groups.html:7
 #: aleksis/core/templates/core/group/child_groups.html:9
 msgid "Assign child groups to groups"
@@ -857,46 +879,70 @@ msgstr ""
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1040
+#: aleksis/core/models.py:1044
 msgid "Owner"
 msgstr ""
 
-#: aleksis/core/models.py:1043
+#: aleksis/core/models.py:1048
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1045
+#: aleksis/core/models.py:1050
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1047
+#: aleksis/core/models.py:1052
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1054
+#: aleksis/core/models.py:1059
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1055
+#: aleksis/core/models.py:1060
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1060
+#: aleksis/core/models.py:1065
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1063
+#: aleksis/core/models.py:1068
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1075
+#: aleksis/core/models.py:1080
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1076
+#: aleksis/core/models.py:1081
 msgid "Task user assignments"
 msgstr ""
 
+#: aleksis/core/preferences.py:22
+msgid "General"
+msgstr ""
+
+#: aleksis/core/preferences.py:23
+msgid "School"
+msgstr ""
+
+#: aleksis/core/preferences.py:24
+msgid "Theme"
+msgstr ""
+
+#: aleksis/core/preferences.py:25
+msgid "Mail"
+msgstr ""
+
+#: aleksis/core/preferences.py:27
+msgid "Footer"
+msgstr ""
+
+#: aleksis/core/preferences.py:28
+msgid "Accounts"
+msgstr ""
+
 #: aleksis/core/preferences.py:29
 msgid "Authentication"
 msgstr ""
@@ -1037,11 +1083,19 @@ msgstr ""
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/settings.py:470
+#: aleksis/core/preferences.py:398
+msgid "Automatically update the dashboard and its widgets"
+msgstr ""
+
+#: aleksis/core/preferences.py:408
+msgid "Automatically update the dashboard and its widgets sitewide"
+msgstr ""
+
+#: aleksis/core/settings.py:468
 msgid "English"
 msgstr ""
 
-#: aleksis/core/settings.py:471
+#: aleksis/core/settings.py:469
 msgid "German"
 msgstr ""
 
@@ -1382,23 +1436,23 @@ msgstr ""
 msgid "There are no announcements."
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:55
+#: aleksis/core/templates/core/base.html:60
 msgid "Logged in as"
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:148
+#: aleksis/core/templates/core/base.html:154
 msgid "About AlekSIS — The Free School Information System"
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:156
+#: aleksis/core/templates/core/base.html:162
 msgid "Impress"
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:164
+#: aleksis/core/templates/core/base.html:170
 msgid "Privacy Policy"
 msgstr ""
 
-#: aleksis/core/templates/core/base_print.html:67
+#: aleksis/core/templates/core/base_print.html:72
 msgid "Powered by AlekSIS"
 msgstr ""
 
@@ -1672,7 +1726,7 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:51
+#: aleksis/core/templates/core/index.html:49
 msgid ""
 "\n"
 "        You didn't customise your dashboard so that you see the system default. Please click on \"Edit dashboard\" to\n"
@@ -1680,24 +1734,24 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:61
+#: aleksis/core/templates/core/index.html:59
 msgid "Last activities"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:79
+#: aleksis/core/templates/core/index.html:77
 msgid "No activities available yet."
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:84
+#: aleksis/core/templates/core/index.html:82
 msgid "Recent notifications"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:100
+#: aleksis/core/templates/core/index.html:98
 #: aleksis/core/templates/core/notifications.html:23
 msgid "More information →"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:107
+#: aleksis/core/templates/core/index.html:105
 #: aleksis/core/templates/core/notifications.html:30
 msgid "No notifications available yet."
 msgstr ""
@@ -1884,8 +1938,8 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/core/templates/core/partials/announcements.html:9
-#: aleksis/core/templates/core/partials/announcements.html:36
+#: aleksis/core/templates/core/partials/announcements.html:8
+#: aleksis/core/templates/core/partials/announcements.html:35
 #, python-format
 msgid ""
 "\n"
@@ -1893,7 +1947,7 @@ msgid ""
 "            "
 msgstr ""
 
-#: aleksis/core/templates/core/partials/announcements.html:13
+#: aleksis/core/templates/core/partials/announcements.html:12
 #, python-format
 msgid ""
 "\n"
@@ -1901,7 +1955,7 @@ msgid ""
 "            "
 msgstr ""
 
-#: aleksis/core/templates/core/partials/announcements.html:40
+#: aleksis/core/templates/core/partials/announcements.html:39
 #, python-format
 msgid ""
 "\n"
@@ -2685,128 +2739,128 @@ msgstr ""
 msgid "SMS"
 msgstr ""
 
-#: aleksis/core/util/pdf.py:89
+#: aleksis/core/util/pdf.py:105
 msgid "Progress: Generate PDF file"
 msgstr ""
 
-#: aleksis/core/util/pdf.py:90
+#: aleksis/core/util/pdf.py:106
 msgid "Generating PDF file …"
 msgstr ""
 
-#: aleksis/core/util/pdf.py:91
+#: aleksis/core/util/pdf.py:107
 msgid "The PDF file has been generated successfully."
 msgstr ""
 
-#: aleksis/core/util/pdf.py:92
+#: aleksis/core/util/pdf.py:108
 msgid "There was a problem while generating the PDF file."
 msgstr ""
 
-#: aleksis/core/util/pdf.py:95
+#: aleksis/core/util/pdf.py:111
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:249
+#: aleksis/core/views.py:253
 msgid "The school term has been created."
 msgstr ""
 
-#: aleksis/core/views.py:261
+#: aleksis/core/views.py:265
 msgid "The school term has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:406
+#: aleksis/core/views.py:410
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:467
+#: aleksis/core/views.py:471
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:506
+#: aleksis/core/views.py:510
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:603
+#: aleksis/core/views.py:607
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:619
+#: aleksis/core/views.py:623
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:707
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:731
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:745
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:773
+#: aleksis/core/views.py:777
 msgid "The additional_field has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:811
 msgid "The additional field has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:836
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:866
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:899
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:900
 msgid "Run data checks …"
 msgstr ""
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:901
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:902
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:918
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:960
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:990
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:1000
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1063
+#: aleksis/core/views.py:1067
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1065
+#: aleksis/core/views.py:1069
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1191
+#: aleksis/core/views.py:1197
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1198
+#: aleksis/core/views.py:1204
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
 
diff --git a/aleksis/core/locale/nb_NO/LC_MESSAGES/djangojs.po b/aleksis/core/locale/nb_NO/LC_MESSAGES/djangojs.po
index 21ea82be5697cbfadc5dde4d7de1c9006da0569b..e10a495775fcb643cbe11cc1ce0daf4c5fc649ef 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: 2021-06-08 16:49+0200\n"
+"POT-Creation-Date: 2021-08-28 17:53+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"
@@ -29,6 +29,6 @@ msgstr ""
 msgid "OK"
 msgstr ""
 
-#: aleksis/core/static/js/main.js:133
+#: aleksis/core/static/js/main.js:127
 msgid "This page may contain outdated information since there is no internet connection."
 msgstr ""
diff --git a/aleksis/core/locale/tr_TR/LC_MESSAGES/django.po b/aleksis/core/locale/tr_TR/LC_MESSAGES/django.po
index 4c442feb3e797a8acecb2178ea8d5837534700fd..1aca6607879e022ab2144b35ec41324db819b2ac 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: 2021-06-08 16:49+0200\n"
+"POT-Creation-Date: 2021-08-28 17:53+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"
@@ -17,6 +17,26 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: aleksis/core/apps.py:148 aleksis/core/settings.py:343
+msgid "OpenID Connect scope"
+msgstr ""
+
+#: aleksis/core/apps.py:149 aleksis/core/settings.py:344
+msgid "Given name, family name, link to profile and picture if existing."
+msgstr ""
+
+#: aleksis/core/apps.py:150 aleksis/core/settings.py:345
+msgid "Full home postal address"
+msgstr ""
+
+#: aleksis/core/apps.py:151 aleksis/core/settings.py:346
+msgid "Email address"
+msgstr ""
+
+#: aleksis/core/apps.py:152 aleksis/core/settings.py:347
+msgid "Home and mobile phone"
+msgstr ""
+
 #: aleksis/core/data_checks.py:55
 msgid "Ignore problem"
 msgstr ""
@@ -38,7 +58,8 @@ msgstr ""
 msgid "The DashboardWidget was reported broken automatically."
 msgstr ""
 
-#: aleksis/core/filters.py:37 aleksis/core/templates/core/base.html:78
+#: aleksis/core/filters.py:37 aleksis/core/templates/core/base.html:83
+#: aleksis/core/templates/core/base.html:84
 #: aleksis/core/templates/core/group/list.html:20
 #: aleksis/core/templates/core/person/list.html:24
 #: aleksis/core/templates/search/search.html:7
@@ -95,7 +116,7 @@ msgid "Common data"
 msgstr ""
 
 #: aleksis/core/forms.py:172 aleksis/core/forms.py:221
-#: aleksis/core/menus.py:236 aleksis/core/models.py:139
+#: aleksis/core/menus.py:238 aleksis/core/models.py:139
 #: aleksis/core/templates/core/person/list.html:8
 #: aleksis/core/templates/core/person/list.html:9
 msgid "Persons"
@@ -115,7 +136,7 @@ msgstr ""
 msgid "Time"
 msgstr ""
 
-#: aleksis/core/forms.py:234 aleksis/core/menus.py:247
+#: aleksis/core/forms.py:234 aleksis/core/menus.py:249
 #: aleksis/core/models.py:381 aleksis/core/templates/core/group/list.html:8
 #: aleksis/core/templates/core/group/list.html:9
 #: aleksis/core/templates/core/person/full.html:144
@@ -216,29 +237,30 @@ msgstr ""
 msgid "Dashboard"
 msgstr ""
 
-#: aleksis/core/menus.py:30 aleksis/core/models.py:588
+#: aleksis/core/menus.py:32 aleksis/core/models.py:588
+#: aleksis/core/preferences.py:26
 #: aleksis/core/templates/core/notifications.html:4
 #: aleksis/core/templates/core/notifications.html:5
 msgid "Notifications"
 msgstr ""
 
-#: aleksis/core/menus.py:39
+#: aleksis/core/menus.py:41
 msgid "Account"
 msgstr ""
 
-#: aleksis/core/menus.py:46
+#: aleksis/core/menus.py:48
 msgid "Stop impersonation"
 msgstr ""
 
-#: aleksis/core/menus.py:55 aleksis/core/templates/core/base.html:57
+#: aleksis/core/menus.py:57 aleksis/core/templates/core/base.html:62
 msgid "Logout"
 msgstr ""
 
-#: aleksis/core/menus.py:61
+#: aleksis/core/menus.py:63
 msgid "2FA"
 msgstr ""
 
-#: aleksis/core/menus.py:67
+#: aleksis/core/menus.py:69
 #: aleksis/core/templates/account/password_change.html:5
 #: aleksis/core/templates/account/password_change.html:6
 #: aleksis/core/templates/account/password_change.html:19
@@ -250,107 +272,107 @@ msgstr ""
 msgid "Change password"
 msgstr ""
 
-#: aleksis/core/menus.py:79
+#: aleksis/core/menus.py:81
 msgid "Me"
 msgstr ""
 
-#: aleksis/core/menus.py:88
+#: aleksis/core/menus.py:90
 #: aleksis/core/templates/dynamic_preferences/form.html:5
 msgid "Preferences"
 msgstr ""
 
-#: aleksis/core/menus.py:97
+#: aleksis/core/menus.py:99
 msgid "Third-party accounts"
 msgstr ""
 
-#: aleksis/core/menus.py:106
+#: aleksis/core/menus.py:108
 #: aleksis/core/templates/oauth2_provider/authorized-tokens.html:5
 #: aleksis/core/templates/oauth2_provider/authorized-tokens.html:6
 msgid "Authorized applications"
 msgstr ""
 
-#: aleksis/core/menus.py:117
+#: aleksis/core/menus.py:119
 msgid "Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:125 aleksis/core/models.py:687
+#: aleksis/core/menus.py:127 aleksis/core/models.py:687
 #: aleksis/core/templates/core/announcement/list.html:7
 #: aleksis/core/templates/core/announcement/list.html:8
 msgid "Announcements"
 msgstr ""
 
-#: aleksis/core/menus.py:136 aleksis/core/models.py:117
+#: aleksis/core/menus.py:138 aleksis/core/models.py:117
 #: aleksis/core/templates/core/school_term/list.html:8
 #: aleksis/core/templates/core/school_term/list.html:9
 msgid "School terms"
 msgstr ""
 
-#: aleksis/core/menus.py:147
+#: aleksis/core/menus.py:149
 #: aleksis/core/templates/core/dashboard_widget/list.html:8
 #: aleksis/core/templates/core/dashboard_widget/list.html:9
 msgid "Dashboard widgets"
 msgstr ""
 
-#: aleksis/core/menus.py:158
+#: aleksis/core/menus.py:160
 #: aleksis/core/templates/core/management/data_management.html:6
 #: aleksis/core/templates/core/management/data_management.html:7
 msgid "Data management"
 msgstr ""
 
-#: aleksis/core/menus.py:169
+#: aleksis/core/menus.py:171
 #: aleksis/core/templates/core/pages/system_status.html:5
 #: aleksis/core/templates/core/pages/system_status.html:7
 msgid "System status"
 msgstr ""
 
-#: aleksis/core/menus.py:180
+#: aleksis/core/menus.py:182
 msgid "Impersonation"
 msgstr ""
 
-#: aleksis/core/menus.py:191
+#: aleksis/core/menus.py:193
 msgid "Configuration"
 msgstr ""
 
-#: aleksis/core/menus.py:202 aleksis/core/templates/core/data_check/list.html:9
+#: aleksis/core/menus.py:204 aleksis/core/templates/core/data_check/list.html:9
 #: aleksis/core/templates/core/data_check/list.html:10
 msgid "Data checks"
 msgstr ""
 
-#: aleksis/core/menus.py:208
+#: aleksis/core/menus.py:210
 msgid "Backend Admin"
 msgstr ""
 
-#: aleksis/core/menus.py:214
+#: aleksis/core/menus.py:216
 #: aleksis/core/templates/oauth2_provider/application_detail.html:5
 #: aleksis/core/templates/oauth2_provider/application_list.html:5
 msgid "OAuth2 Applications"
 msgstr ""
 
-#: aleksis/core/menus.py:227
+#: aleksis/core/menus.py:229
 msgid "People"
 msgstr ""
 
-#: aleksis/core/menus.py:258 aleksis/core/models.py:941
+#: aleksis/core/menus.py:260 aleksis/core/models.py:941
 #: aleksis/core/templates/core/group_type/list.html:8
 #: aleksis/core/templates/core/group_type/list.html:9
 msgid "Group types"
 msgstr ""
 
-#: aleksis/core/menus.py:269
+#: aleksis/core/menus.py:271
 msgid "Persons and accounts"
 msgstr ""
 
-#: aleksis/core/menus.py:280
+#: aleksis/core/menus.py:282
 msgid "Groups and child groups"
 msgstr ""
 
-#: aleksis/core/menus.py:291 aleksis/core/models.py:429
+#: aleksis/core/menus.py:293 aleksis/core/models.py:429
 #: aleksis/core/templates/core/additional_field/list.html:8
 #: aleksis/core/templates/core/additional_field/list.html:9
 msgid "Additional fields"
 msgstr ""
 
-#: aleksis/core/menus.py:306
+#: aleksis/core/menus.py:308
 #: aleksis/core/templates/core/group/child_groups.html:7
 #: aleksis/core/templates/core/group/child_groups.html:9
 msgid "Assign child groups to groups"
@@ -857,46 +879,70 @@ msgstr ""
 msgid "Can solve data check problems"
 msgstr ""
 
-#: aleksis/core/models.py:1040
+#: aleksis/core/models.py:1044
 msgid "Owner"
 msgstr ""
 
-#: aleksis/core/models.py:1043
+#: aleksis/core/models.py:1048
 msgid "File expires at"
 msgstr ""
 
-#: aleksis/core/models.py:1045
+#: aleksis/core/models.py:1050
 msgid "Generated HTML file"
 msgstr ""
 
-#: aleksis/core/models.py:1047
+#: aleksis/core/models.py:1052
 msgid "Generated PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1054
+#: aleksis/core/models.py:1059
 msgid "PDF file"
 msgstr ""
 
-#: aleksis/core/models.py:1055
+#: aleksis/core/models.py:1060
 msgid "PDF files"
 msgstr ""
 
-#: aleksis/core/models.py:1060
+#: aleksis/core/models.py:1065
 msgid "Task result"
 msgstr ""
 
-#: aleksis/core/models.py:1063
+#: aleksis/core/models.py:1068
 msgid "Task user"
 msgstr ""
 
-#: aleksis/core/models.py:1075
+#: aleksis/core/models.py:1080
 msgid "Task user assignment"
 msgstr ""
 
-#: aleksis/core/models.py:1076
+#: aleksis/core/models.py:1081
 msgid "Task user assignments"
 msgstr ""
 
+#: aleksis/core/preferences.py:22
+msgid "General"
+msgstr ""
+
+#: aleksis/core/preferences.py:23
+msgid "School"
+msgstr ""
+
+#: aleksis/core/preferences.py:24
+msgid "Theme"
+msgstr ""
+
+#: aleksis/core/preferences.py:25
+msgid "Mail"
+msgstr ""
+
+#: aleksis/core/preferences.py:27
+msgid "Footer"
+msgstr ""
+
+#: aleksis/core/preferences.py:28
+msgid "Accounts"
+msgstr ""
+
 #: aleksis/core/preferences.py:29
 msgid "Authentication"
 msgstr ""
@@ -1037,11 +1083,19 @@ msgstr ""
 msgid "in minutes"
 msgstr ""
 
-#: aleksis/core/settings.py:470
+#: aleksis/core/preferences.py:398
+msgid "Automatically update the dashboard and its widgets"
+msgstr ""
+
+#: aleksis/core/preferences.py:408
+msgid "Automatically update the dashboard and its widgets sitewide"
+msgstr ""
+
+#: aleksis/core/settings.py:468
 msgid "English"
 msgstr ""
 
-#: aleksis/core/settings.py:471
+#: aleksis/core/settings.py:469
 msgid "German"
 msgstr ""
 
@@ -1382,23 +1436,23 @@ msgstr ""
 msgid "There are no announcements."
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:55
+#: aleksis/core/templates/core/base.html:60
 msgid "Logged in as"
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:148
+#: aleksis/core/templates/core/base.html:154
 msgid "About AlekSIS — The Free School Information System"
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:156
+#: aleksis/core/templates/core/base.html:162
 msgid "Impress"
 msgstr ""
 
-#: aleksis/core/templates/core/base.html:164
+#: aleksis/core/templates/core/base.html:170
 msgid "Privacy Policy"
 msgstr ""
 
-#: aleksis/core/templates/core/base_print.html:67
+#: aleksis/core/templates/core/base_print.html:72
 msgid "Powered by AlekSIS"
 msgstr ""
 
@@ -1672,7 +1726,7 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:51
+#: aleksis/core/templates/core/index.html:49
 msgid ""
 "\n"
 "        You didn't customise your dashboard so that you see the system default. Please click on \"Edit dashboard\" to\n"
@@ -1680,24 +1734,24 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:61
+#: aleksis/core/templates/core/index.html:59
 msgid "Last activities"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:79
+#: aleksis/core/templates/core/index.html:77
 msgid "No activities available yet."
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:84
+#: aleksis/core/templates/core/index.html:82
 msgid "Recent notifications"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:100
+#: aleksis/core/templates/core/index.html:98
 #: aleksis/core/templates/core/notifications.html:23
 msgid "More information →"
 msgstr ""
 
-#: aleksis/core/templates/core/index.html:107
+#: aleksis/core/templates/core/index.html:105
 #: aleksis/core/templates/core/notifications.html:30
 msgid "No notifications available yet."
 msgstr ""
@@ -1884,8 +1938,8 @@ msgid ""
 "      "
 msgstr ""
 
-#: aleksis/core/templates/core/partials/announcements.html:9
-#: aleksis/core/templates/core/partials/announcements.html:36
+#: aleksis/core/templates/core/partials/announcements.html:8
+#: aleksis/core/templates/core/partials/announcements.html:35
 #, python-format
 msgid ""
 "\n"
@@ -1893,7 +1947,7 @@ msgid ""
 "            "
 msgstr ""
 
-#: aleksis/core/templates/core/partials/announcements.html:13
+#: aleksis/core/templates/core/partials/announcements.html:12
 #, python-format
 msgid ""
 "\n"
@@ -1901,7 +1955,7 @@ msgid ""
 "            "
 msgstr ""
 
-#: aleksis/core/templates/core/partials/announcements.html:40
+#: aleksis/core/templates/core/partials/announcements.html:39
 #, python-format
 msgid ""
 "\n"
@@ -2685,127 +2739,127 @@ msgstr ""
 msgid "SMS"
 msgstr ""
 
-#: aleksis/core/util/pdf.py:89
+#: aleksis/core/util/pdf.py:105
 msgid "Progress: Generate PDF file"
 msgstr ""
 
-#: aleksis/core/util/pdf.py:90
+#: aleksis/core/util/pdf.py:106
 msgid "Generating PDF file …"
 msgstr ""
 
-#: aleksis/core/util/pdf.py:91
+#: aleksis/core/util/pdf.py:107
 msgid "The PDF file has been generated successfully."
 msgstr ""
 
-#: aleksis/core/util/pdf.py:92
+#: aleksis/core/util/pdf.py:108
 msgid "There was a problem while generating the PDF file."
 msgstr ""
 
-#: aleksis/core/util/pdf.py:95
+#: aleksis/core/util/pdf.py:111
 msgid "Download PDF"
 msgstr ""
 
-#: aleksis/core/views.py:249
+#: aleksis/core/views.py:253
 msgid "The school term has been created."
 msgstr ""
 
-#: aleksis/core/views.py:261
+#: aleksis/core/views.py:265
 msgid "The school term has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:406
+#: aleksis/core/views.py:410
 msgid "The child groups were successfully saved."
 msgstr ""
 
-#: aleksis/core/views.py:467
+#: aleksis/core/views.py:471
 msgid "The person has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:506
+#: aleksis/core/views.py:510
 msgid "The group has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:603
+#: aleksis/core/views.py:607
 msgid "The announcement has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:619
+#: aleksis/core/views.py:623
 msgid "The announcement has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:703
+#: aleksis/core/views.py:707
 msgid "The preferences have been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:727
+#: aleksis/core/views.py:731
 msgid "The person has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:741
+#: aleksis/core/views.py:745
 msgid "The group has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:773
+#: aleksis/core/views.py:777
 msgid "The additional_field has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:807
+#: aleksis/core/views.py:811
 msgid "The additional field has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:832
+#: aleksis/core/views.py:836
 msgid "The group type has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:862
+#: aleksis/core/views.py:866
 msgid "The group type has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:895
+#: aleksis/core/views.py:899
 msgid "Progress: Run data checks"
 msgstr ""
 
-#: aleksis/core/views.py:896
+#: aleksis/core/views.py:900
 msgid "Run data checks …"
 msgstr ""
 
-#: aleksis/core/views.py:897
+#: aleksis/core/views.py:901
 msgid "The data checks were run successfully."
 msgstr ""
 
-#: aleksis/core/views.py:898
+#: aleksis/core/views.py:902
 msgid "There was a problem while running data checks."
 msgstr ""
 
-#: aleksis/core/views.py:914
+#: aleksis/core/views.py:918
 #, python-brace-format
 msgid "The solve option '{solve_option_obj.verbose_name}' "
 msgstr ""
 
-#: aleksis/core/views.py:956
+#: aleksis/core/views.py:960
 msgid "The dashboard widget has been saved."
 msgstr ""
 
-#: aleksis/core/views.py:986
+#: aleksis/core/views.py:990
 msgid "The dashboard widget has been created."
 msgstr ""
 
-#: aleksis/core/views.py:996
+#: aleksis/core/views.py:1000
 msgid "The dashboard widget has been deleted."
 msgstr ""
 
-#: aleksis/core/views.py:1063
+#: aleksis/core/views.py:1067
 msgid "Your dashboard configuration has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1065
+#: aleksis/core/views.py:1069
 msgid "The configuration of the default dashboard has been saved successfully."
 msgstr ""
 
-#: aleksis/core/views.py:1191
+#: aleksis/core/views.py:1197
 msgid "The third-party account could not be disconnected because it is the only login method available."
 msgstr ""
 
-#: aleksis/core/views.py:1198
+#: aleksis/core/views.py:1204
 msgid "The third-party account has been successfully disconnected."
 msgstr ""
diff --git a/aleksis/core/locale/tr_TR/LC_MESSAGES/djangojs.po b/aleksis/core/locale/tr_TR/LC_MESSAGES/djangojs.po
index 21ea82be5697cbfadc5dde4d7de1c9006da0569b..e10a495775fcb643cbe11cc1ce0daf4c5fc649ef 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: 2021-06-08 16:49+0200\n"
+"POT-Creation-Date: 2021-08-28 17:53+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"
@@ -29,6 +29,6 @@ msgstr ""
 msgid "OK"
 msgstr ""
 
-#: aleksis/core/static/js/main.js:133
+#: aleksis/core/static/js/main.js:127
 msgid "This page may contain outdated information since there is no internet connection."
 msgstr ""