diff --git a/lib/SimpleSAML/Locale/Localization.php b/lib/SimpleSAML/Locale/Localization.php
index 88dad17e4cd5e8a4ccce1fb67e2562e93f42c29d..7596797ade510837fbdcb6d46328831d1166d476 100644
--- a/lib/SimpleSAML/Locale/Localization.php
+++ b/lib/SimpleSAML/Locale/Localization.php
@@ -10,6 +10,7 @@ declare(strict_types=1);
 
 namespace SimpleSAML\Locale;
 
+use Gettext\Loader\PoLoader;
 use Gettext\Translations;
 use Gettext\Translator;
 use Gettext\TranslatorFunctions;
@@ -231,8 +232,9 @@ class Localization
         $poFile = $domain . '.po';
         $poPath = $langPath . $poFile;
         if (file_exists($poPath) && is_readable($poPath)) {
-            $translations = Translations::fromPoFile($poPath);
-            $this->translator->loadTranslations($translations);
+            $poLoader = new PoLoader();
+            $translations = $poLoader->loadFile($poPath);
+            $this->translator->createFromTranslations($translations);
         } else {
             $error = "Localization file '$poFile' not found in '$langPath', falling back to default";
             Logger::debug($_SERVER['PHP_SELF'] . ' - ' . $error);