diff --git a/src/SimpleSAML/Command/UpdateTranslatableStringsCommand.php b/src/SimpleSAML/Command/UpdateTranslatableStringsCommand.php
index ad4c130fb87d2c135179530d5eeae8ba532cc15c..24c44e84153b4c76ad63f2bb82bd34f3e596ca64 100644
--- a/src/SimpleSAML/Command/UpdateTranslatableStringsCommand.php
+++ b/src/SimpleSAML/Command/UpdateTranslatableStringsCommand.php
@@ -64,6 +64,26 @@ class UpdateTranslatableStringsCommand extends Command
         );
     }
 
+    /**
+     * Clone the entries from $iterator into the passed Translations object.
+     * It is expected that $iterator was made by getIterator() on Translations.
+     * This can be useful as the entries are cloned in the iterator order.
+     *
+     * @param Gettext\Translations $ret
+     * @param iterable $iterator
+     * @return $ret
+     */
+    protected function cloneIteratorToTranslations(Translations $ret, iterable $iterator): Translations
+    {
+        while ($iterator->valid()) {
+            $ret->addOrMerge(
+                $iterator->current(),
+                Merge::TRANSLATIONS_THEIRS | Merge::COMMENTS_OURS | Merge::HEADERS_OURS | Merge::REFERENCES_OURS,
+            );
+            $iterator->next();
+        }
+        return $ret;
+    }
 
     /**
      * @param \Symfony\Component\Console\Input\InputInterface $input
@@ -159,6 +179,16 @@ class UpdateTranslatableStringsCommand extends Command
                         Merge::TRANSLATIONS_THEIRS | Merge::COMMENTS_OURS | Merge::HEADERS_OURS | Merge::REFERENCES_OURS,
                     );
 
+                    //
+                    // Sort the translations in a predictable way
+                    //
+                    $iter = $merged->getIterator();
+                    $iter->ksort();
+                    $merged = $this->cloneIteratorToTranslations(
+                        Translations::create($merged->getDomain(), $merged->getLanguage()),
+                        $iter,
+                    );
+
                     $poGenerator->generateFile($merged, $poFile->getPathName());
                 }
             }