diff --git a/app/Http/Controllers/LanguageController.php b/app/Http/Controllers/LanguageController.php
index d68236b682448a38e52576a94026eccebbf55090..80d3fecf88b3b33425ac08835c6c0d8e3ca33f11 100644
--- a/app/Http/Controllers/LanguageController.php
+++ b/app/Http/Controllers/LanguageController.php
@@ -100,7 +100,7 @@ class LanguageController extends Controller
         if ($exclude !== "") {
             try {
                 $ex = unserialize(base64_decode($exclude));
-            } catch (\ErrorException $e) {
+            } catch (ErrorException $e) {
                 $ex = ['files' => [], 'new' => 0];
             }
         }
@@ -202,7 +202,7 @@ class LanguageController extends Controller
 
         $fn = "";
 
-        #Wähle die erste Datei aus
+        #Wähle die erste, unbearbeitete Datei aus
         foreach($languageObjects as $folder => $languageObject) {
             foreach($languageObject->stringMap as $languageFileName => $languageFile) {
                 $fn = $languageFileName;
diff --git a/app/Http/Controllers/MailController.php b/app/Http/Controllers/MailController.php
index d5272ca20611be18845c931c4be80c2e1b8cd34a..92e8aa64b2795bf72b3095fc9a6bb7c5ee63f4f3 100644
--- a/app/Http/Controllers/MailController.php
+++ b/app/Http/Controllers/MailController.php
@@ -121,17 +121,23 @@ class MailController extends Controller
     #Ueberprueft ob ein bereits vorhandener Eintrag bearbeitet worden ist
     private function isEdited($k, $v, $filename)
     {
-        $temp = include resource_path()."/".$filename;
-        foreach ($temp as $key => $value) {
-            if($k === $key && $v !== $value) {
-                return true;
-            }
+        try {
+            $temp = include resource_path()."/".$filename;
+            foreach ($temp as $key => $value) {
+                if($k === $key && $v !== $value) {
+                    return true;
+                }
+            }  
+        } catch (\ErrorException $e) {
+            #Datei existiert noch nicht
+            return true;
         }
         return false;
     }
 
     private function extractLanguage($key) 
-    {
+    {   
+        #Kürzt bspw. "_new_de_redirect bzw. "de_redirect" zu "de"
         preg_match("/^(?:_new_)?([^_]*)/", $key, $matches);
         foreach($matches as $dir) {
             if(strlen($dir) == 2)
@@ -142,6 +148,7 @@ class MailController extends Controller
     private function processKey($key) 
     {   
         $key = trim($key);
+        #Kürzt bspw. "_new_de_redirect bzw. "de_redirect" zu "redirect"
         preg_match("/^(?:_new_)?(?:[^_]*)_(\w*.?\w*#?.?\w*)/", $key, $matches);
         foreach($matches as $processedKey) {
             if(strpos($processedKey, "_") === FALSE) {
@@ -242,8 +249,9 @@ class MailController extends Controller
 
         $filename = $request->input('filename');
 
+        #Identifizieren des gedrückten Buttons
         if(isset($request['nextpage'])) {
-
+            #Leite weiter zur nächsten Seite
             $ex = [];
 
             if ($exclude !== "") {
@@ -266,6 +274,7 @@ class MailController extends Controller
             return redirect(url('synoptic', ['exclude' => $ex]));
         }
 
+        #Andernfalls auslesen, zippen und herunterladen der veränderten Dateien 
         $data = [];
         $new  = 0;
         $editedFiles = [];
@@ -275,30 +284,42 @@ class MailController extends Controller
             if ($key === "filename" || $value === "") {
                 continue;
             }
+
             $key = base64_decode($key);
 
             #Pfad zur Datei anhand des Schlüsselnamens rekonstruieren (Schlüssel enthält Sprachkürzel)
             $langdir = $this->extractLanguage($key);
-            $fn = "lang/".$langdir."/".$filename;
-            if (strpos($key, "_new_") === 0 && $value !== "") {
+            $filepath = "lang/".$langdir."/".$filename;
+ 
+            if (strpos($key, "_new_") === 0 && $value !== "" || $this->isEdited($this->processKey($key), $value, $filepath)) {
                 $new++;
-                $editedFiles[$langdir] = $filename;
-            } else if ($this->isEdited($this->processKey($key), $value, $fn)) {
-                $new++;
-                $editedFiles[$langdir] = $filename;
+                $editedFiles[$langdir] = $filepath;
+            } 
+        }     
+
+        #Erneute Iteration über Request, damit Dateien mitsamt vorherigen Einträgen abgespeichert werden 
+        foreach($request->all() as $key => $value) {
+
+            if ($key === "filename" || $value === "") {
+                continue;
             }
 
+            $key = base64_decode($key);
+
+            #Pfad zur Datei anhand des Schlüsselnamens rekonstruieren (Schlüssel enthält Sprachkürzel)
+            $langdir = $this->extractLanguage($key);
+
             #Ãœberspringe Datei, falls diese nicht bearbeitet worden ist
             if(!isset($editedFiles[$langdir])) {
                 continue;
             }
-            #Key verarbeiten, sodass er nur den eigentlichen Keynamen enthält
-            $key = $this->processKey($key);
 
-            #Aufdröseln von 2D-Arrays
+            #Key kuerzen, sodass er nur den eigentlichen Keynamen enthält
+            $key = $this->processKey($key);
+            
             if (!strpos($key, "#")) {
                 $data[$langdir][$key] = $value;
-
+            #Aufdröseln von 2D-Arrays
             } else {
                 $ref = &$data;
                 do {
@@ -308,7 +329,7 @@ class MailController extends Controller
                 $ref = &$ref[$key];
                 $ref = $value;
             }
-        }     
+        }
 
         if(empty($data)) {
             return redirect(url('synoptic', ['exclude' => $exclude]));
@@ -316,8 +337,9 @@ class MailController extends Controller
 
         $zip = new ZipArchive();
 
-        if ($zip->open("langfiles.zip", ZipArchive::OVERWRITE)!==TRUE) {
-            exit("cannot open <$filename>\n");
+        if ($zip->open("langfiles.zip", ZipArchive::OVERWRITE)!==TRUE) {  
+        } else if ($zip->open("langfiles.zip", ZipArchive::CREATE)!==TRUE) {
+            exit("Cannot open".$filename);
         }
 
         #Erstelle Ausgabedateien
diff --git a/app/Models/LanguageObject.php b/app/Models/LanguageObject.php
index c6ef5b9e54a919a7bb906a158d0b9b8b2490b6d6..971e905cdd16eddf2cb5969981a5e02c1d77f220 100644
--- a/app/Models/LanguageObject.php
+++ b/app/Models/LanguageObject.php
@@ -12,7 +12,7 @@ class LanguageObject
 	public $filePath = "";
 
 	#2D-Array der Form [$filename][$key]
-	public $stringMap;
+	public $stringMap = [];
 
 	public function __construct($lang, $path) 
     {
diff --git a/public/langfiles.zip b/public/langfiles.zip
index cf456b9bdcbad1b99d1b5a8abce07975b29787de..601229310be12f9f35e1c77f29b1b62ab90afe68 100644
Binary files a/public/langfiles.zip and b/public/langfiles.zip differ