diff --git a/aleksis/apps/untis/locale/ru/LC_MESSAGES/django.po b/aleksis/apps/untis/locale/ru/LC_MESSAGES/django.po
new file mode 100644
index 0000000000000000000000000000000000000000..8394c663ef004a9f7995ce4e2217e67269da0b57
--- /dev/null
+++ b/aleksis/apps/untis/locale/ru/LC_MESSAGES/django.po
@@ -0,0 +1,177 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-04-23 12:56+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
+"%100>=11 && n%100<=14)? 2 : 3);\n"
+#: aleksis/apps/untis/data_checks.py:9
+msgid "Course groups created by the Untis import because no matching group has been found."
+msgstr ""
+
+#: aleksis/apps/untis/data_checks.py:12
+msgid "The Untis import created a new course group because no matching group has been found."
+msgstr ""
+
+#: aleksis/apps/untis/data_checks.py:25
+msgid "Course group not set by the Untis import because no matching group has been found."
+msgstr ""
+
+#: aleksis/apps/untis/data_checks.py:28
+msgid "The Untis import didn't set a course group for a lesson because no matching group has been found."
+msgstr ""
+
+#: aleksis/apps/untis/menus.py:6
+msgid "Link subjects to groups (for Untis MySQL import)"
+msgstr ""
+
+#: aleksis/apps/untis/model_extensions.py:9
+#: aleksis/apps/untis/model_extensions.py:12
+#: aleksis/apps/untis/model_extensions.py:15
+#: aleksis/apps/untis/model_extensions.py:20
+#: aleksis/apps/untis/model_extensions.py:32
+#: aleksis/apps/untis/model_extensions.py:35
+#: aleksis/apps/untis/model_extensions.py:38
+#: aleksis/apps/untis/model_extensions.py:54
+#: aleksis/apps/untis/model_extensions.py:57
+#: aleksis/apps/untis/model_extensions.py:60
+#: aleksis/apps/untis/model_extensions.py:63
+msgid "Untis import reference"
+msgstr ""
+
+#: aleksis/apps/untis/model_extensions.py:23
+msgid "Untis school year ID"
+msgstr ""
+
+#: aleksis/apps/untis/model_extensions.py:26
+msgid "Untis school id"
+msgstr ""
+
+#: aleksis/apps/untis/model_extensions.py:29
+msgid "Untis version id"
+msgstr ""
+
+#: aleksis/apps/untis/model_extensions.py:41
+msgid "Lesson id in Untis"
+msgstr ""
+
+#: aleksis/apps/untis/model_extensions.py:45
+#: aleksis/apps/untis/model_extensions.py:50
+msgid "Number of lesson element in Untis"
+msgstr ""
+
+#: aleksis/apps/untis/model_extensions.py:66
+#: aleksis/apps/untis/model_extensions.py:69
+#: aleksis/apps/untis/model_extensions.py:72
+msgid "UNTIS import reference"
+msgstr ""
+
+#: aleksis/apps/untis/models.py:4253
+msgid "Can assign subjects to groups"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:8
+msgid "Untis: MySQL"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:16
+msgid "School ID in Untis database"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:24
+msgid "Update values of existing subjects"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:32
+msgid "Update short name of existing persons"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:40
+msgid "Update name of existing persons"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:48
+msgid "Update short name of existing groups"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:56
+msgid "Update name of existing groups"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:64
+msgid "Disambiguate name of new groups"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:71
+msgid "Overwrite group owners"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:80
+msgid "Update name of existing rooms"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:88
+msgid "Update existing supervision areas"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:96
+msgid "Use course groups"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:97
+msgid "Search course groups for every course instead of setting classes as groups."
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:105
+msgid "Create non-existing course groups"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:106
+msgid "Only used if 'Use course groups' is enabled."
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:114
+msgid "Register a data problem if a course group has been not found."
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:122
+msgid "Match course groups by a subset of parent groups if no 100% match is found"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:123
+msgid "Works only if 'Use course groups' is activated."
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:131
+msgid "Ignore incomplete substitutions"
+msgstr ""
+
+#: aleksis/apps/untis/util/mysql/importers/lessons.py:44
+msgid "Import lesson {}"
+msgstr ""
+
+#: aleksis/apps/untis/util/mysql/importers/lessons.py:47
+msgid "  Skip because missing times"
+msgstr ""
+
+#: aleksis/apps/untis/util/mysql/importers/lessons.py:112
+msgid "    Skip because missing subject"
+msgstr ""
+
+#: aleksis/apps/untis/util/mysql/importers/lessons.py:333
+msgid "Deleted by Untis import"
+msgstr ""
diff --git a/aleksis/apps/untis/locale/uk/LC_MESSAGES/django.po b/aleksis/apps/untis/locale/uk/LC_MESSAGES/django.po
new file mode 100644
index 0000000000000000000000000000000000000000..56d7e3fe99e3f7be3ab7e22256dda136272d8eeb
--- /dev/null
+++ b/aleksis/apps/untis/locale/uk/LC_MESSAGES/django.po
@@ -0,0 +1,178 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-04-23 12:56+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != "
+"11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % "
+"100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || "
+"(n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
+#: aleksis/apps/untis/data_checks.py:9
+msgid "Course groups created by the Untis import because no matching group has been found."
+msgstr ""
+
+#: aleksis/apps/untis/data_checks.py:12
+msgid "The Untis import created a new course group because no matching group has been found."
+msgstr ""
+
+#: aleksis/apps/untis/data_checks.py:25
+msgid "Course group not set by the Untis import because no matching group has been found."
+msgstr ""
+
+#: aleksis/apps/untis/data_checks.py:28
+msgid "The Untis import didn't set a course group for a lesson because no matching group has been found."
+msgstr ""
+
+#: aleksis/apps/untis/menus.py:6
+msgid "Link subjects to groups (for Untis MySQL import)"
+msgstr ""
+
+#: aleksis/apps/untis/model_extensions.py:9
+#: aleksis/apps/untis/model_extensions.py:12
+#: aleksis/apps/untis/model_extensions.py:15
+#: aleksis/apps/untis/model_extensions.py:20
+#: aleksis/apps/untis/model_extensions.py:32
+#: aleksis/apps/untis/model_extensions.py:35
+#: aleksis/apps/untis/model_extensions.py:38
+#: aleksis/apps/untis/model_extensions.py:54
+#: aleksis/apps/untis/model_extensions.py:57
+#: aleksis/apps/untis/model_extensions.py:60
+#: aleksis/apps/untis/model_extensions.py:63
+msgid "Untis import reference"
+msgstr ""
+
+#: aleksis/apps/untis/model_extensions.py:23
+msgid "Untis school year ID"
+msgstr ""
+
+#: aleksis/apps/untis/model_extensions.py:26
+msgid "Untis school id"
+msgstr ""
+
+#: aleksis/apps/untis/model_extensions.py:29
+msgid "Untis version id"
+msgstr ""
+
+#: aleksis/apps/untis/model_extensions.py:41
+msgid "Lesson id in Untis"
+msgstr ""
+
+#: aleksis/apps/untis/model_extensions.py:45
+#: aleksis/apps/untis/model_extensions.py:50
+msgid "Number of lesson element in Untis"
+msgstr ""
+
+#: aleksis/apps/untis/model_extensions.py:66
+#: aleksis/apps/untis/model_extensions.py:69
+#: aleksis/apps/untis/model_extensions.py:72
+msgid "UNTIS import reference"
+msgstr ""
+
+#: aleksis/apps/untis/models.py:4253
+msgid "Can assign subjects to groups"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:8
+msgid "Untis: MySQL"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:16
+msgid "School ID in Untis database"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:24
+msgid "Update values of existing subjects"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:32
+msgid "Update short name of existing persons"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:40
+msgid "Update name of existing persons"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:48
+msgid "Update short name of existing groups"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:56
+msgid "Update name of existing groups"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:64
+msgid "Disambiguate name of new groups"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:71
+msgid "Overwrite group owners"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:80
+msgid "Update name of existing rooms"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:88
+msgid "Update existing supervision areas"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:96
+msgid "Use course groups"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:97
+msgid "Search course groups for every course instead of setting classes as groups."
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:105
+msgid "Create non-existing course groups"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:106
+msgid "Only used if 'Use course groups' is enabled."
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:114
+msgid "Register a data problem if a course group has been not found."
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:122
+msgid "Match course groups by a subset of parent groups if no 100% match is found"
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:123
+msgid "Works only if 'Use course groups' is activated."
+msgstr ""
+
+#: aleksis/apps/untis/preferences.py:131
+msgid "Ignore incomplete substitutions"
+msgstr ""
+
+#: aleksis/apps/untis/util/mysql/importers/lessons.py:44
+msgid "Import lesson {}"
+msgstr ""
+
+#: aleksis/apps/untis/util/mysql/importers/lessons.py:47
+msgid "  Skip because missing times"
+msgstr ""
+
+#: aleksis/apps/untis/util/mysql/importers/lessons.py:112
+msgid "    Skip because missing subject"
+msgstr ""
+
+#: aleksis/apps/untis/util/mysql/importers/lessons.py:333
+msgid "Deleted by Untis import"
+msgstr ""
diff --git a/tox.ini b/tox.ini
index 6ba5d926ea520a574125f4a9717b93ba0020a2c3..749e0606f4f02fcbd1649627219b15850cbc0a90 100644
--- a/tox.ini
+++ b/tox.ini
@@ -49,8 +49,8 @@ commands =
 
 [testenv:makemessages]
 commands =
-    poetry run aleksis-admin makemessages --no-wrap -e html,txt,py,email -i static -l ar -l de_DE -l fr -l nb_NO -l tr_TR -l la
-    poetry run aleksis-admin makemessages --no-wrap -d djangojs -i **/node_modules -l ar -l de_DE -l fr -l nb_NO -l tr_TR -l la
+    poetry run aleksis-admin makemessages --no-wrap -e html,txt,py,email -i static -l ar -l de_DE -l fr -l nb_NO -l tr_TR -l la -l uk -l ru
+    poetry run aleksis-admin makemessages --no-wrap -d djangojs -i **/node_modules -l ar -l de_DE -l fr -l nb_NO -l tr_TR -l la -l uk -l ru
 
 [flake8]
 max_line_length = 100