diff --git a/lib/SimpleSAML/Locale/Translate.php b/lib/SimpleSAML/Locale/Translate.php
index 0e4fe7c851d8d1a400727dccc4cd94632be99c71..4f63fe35452dc47790089dd99d7248b5326e71f4 100644
--- a/lib/SimpleSAML/Locale/Translate.php
+++ b/lib/SimpleSAML/Locale/Translate.php
@@ -365,7 +365,7 @@ class Translate
             $fileContent = file_get_contents($translationFile);
             $moreTrans = json_decode($fileContent, true);
             if (!empty($moreTrans)) {
-                $lang = self::lang_merge($lang, $moreTrans);
+                $lang = array_merge_recursive($lang, $moreTrans);
             }
         }
 
@@ -423,16 +423,4 @@ class Translate
         );
         return array();
     }
-
-
-    // Merge two translation arrays.
-    public static function lang_merge($def, $lang)
-    {
-        foreach ($def as $key => $value) {
-            if (array_key_exists($key, $lang)) {
-                $def[$key] = array_merge($value, $lang[$key]);
-            }
-        }
-        return $def;
-    }
 }
diff --git a/lib/SimpleSAML/XHTML/Template.php b/lib/SimpleSAML/XHTML/Template.php
index 2074810fc48e57ec74d848a2d0a3352867d04d1f..c08017e58e02a0b348c3a43f03ac561bc7c0ba52 100644
--- a/lib/SimpleSAML/XHTML/Template.php
+++ b/lib/SimpleSAML/XHTML/Template.php
@@ -78,6 +78,25 @@ class SimpleSAML_XHTML_Template
     }
 
 
+    /**
+     * Merge two translation arrays.
+     *
+     * @param array $def The array holding string definitions.
+     * @param array $lang The array holding translations for every string.
+     * @return array The recursive merge of both arrays.
+     * @deprecated This method will be removed in SimpleSAMLphp 2.0. Please use array_merge_recursive() instead.
+     */
+    public static function lang_merge($def, $lang)
+    {
+        foreach ($def as $key => $value) {
+            if (array_key_exists($key, $lang)) {
+                $def[$key] = array_merge($value, $lang[$key]);
+            }
+        }
+        return $def;
+    }
+
+
     /**
      * Find template path.
      *