diff --git a/admin/tool/langimport/classes/controller.php b/admin/tool/langimport/classes/controller.php
index 0c827b4c2f3..494d48c19d3 100644
--- a/admin/tool/langimport/classes/controller.php
+++ b/admin/tool/langimport/classes/controller.php
@@ -24,6 +24,8 @@
 
 namespace tool_langimport;
 
+use moodle_url;
+
 defined('MOODLE_INTERNAL') || die();
 require_once($CFG->libdir.'/filelib.php');
 require_once($CFG->libdir.'/componentlib.class.php');
@@ -59,6 +61,25 @@ class controller {
         $this->availablelangs = $this->installer->get_remote_list_of_languages();
     }
 
+    /**
+     * Redirect to the specified url, outputting any required messages.
+     *
+     * @param moodle_url $url
+     */
+    public function redirect(moodle_url $url): void {
+        if ($this->info) {
+            $info = implode('<br />', $this->info);
+            \core\notification::success($info);
+        }
+
+        if ($this->errors) {
+            $info = implode('<br />', $this->errors);
+            \core\notification::error($info);
+        }
+
+        redirect($url);
+    }
+
     /**
      * Install language packs provided
      *
diff --git a/admin/tool/langimport/index.php b/admin/tool/langimport/index.php
index b4bd4a47171..e5057a625db 100644
--- a/admin/tool/langimport/index.php
+++ b/admin/tool/langimport/index.php
@@ -76,12 +76,12 @@ if (($mode == INSTALLATION_OF_SELECTED_LANG) and confirm_sesskey() and !empty($p
     if (is_array($pack) && count($pack) > 1) {
         // Installing multiple languages can take a while - perform it asynchronously in the background.
         $controller->schedule_languagepacks_installation($pack);
-        redirect($PAGE->url);
+        $controller->redirect($PAGE->url);
     } else {
         // Single language pack to be installed synchronously. It should be reasonably quick and can be used for debugging, too.
         core_php_time_limit::raise();
         $controller->install_languagepacks($pack);
-        redirect($PAGE->url);
+        $controller->redirect($PAGE->url);
     }
 }
 
@@ -110,7 +110,7 @@ if ($mode == DELETION_OF_SELECTED_LANG and (!empty($uninstalllang) or !empty($co
         foreach ($uninstalllang as $ulang) {
             $controller->uninstall_language($ulang);
         }
-        redirect($PAGE->url);
+        $controller->redirect($PAGE->url);
     }
 }