diff --git a/app/Http/Controllers/LanguageController.php b/app/Http/Controllers/LanguageController.php
index e3b2f1eb50abbe8432dd024d9292820fc2f9aa2a..d68236b682448a38e52576a94026eccebbf55090 100644
--- a/app/Http/Controllers/LanguageController.php
+++ b/app/Http/Controllers/LanguageController.php
@@ -164,6 +164,16 @@ class LanguageController extends Controller
         $languageObjects  = [];
         $to = [];
 
+        #Dekodieren ausgeschlossener Dateien anhand des URL-Parameters
+        $ex    = ['files' => [], 'new' => 0];
+        if ($exclude !== "") {
+            try {
+                $ex = unserialize(base64_decode($exclude));
+            } catch (\ErrorException $e) {
+                $ex = ['files' => [], 'new' => 0];
+            }
+        }
+
         #Instanziiere LanguageObject
         foreach ($languageFolders as $folder) {
             if (is_dir($languageFilePath . $folder) && $folder !== "." && $folder !== "..") {
@@ -171,11 +181,16 @@ class LanguageController extends Controller
             }
         }
 
-        #Speichere Daten in LanguageObject
+        #Speichere Daten in LanguageObject, überspringe ausgeschlossene Dateien
         foreach ($languageObjects as $folder => $languageObject) {
             $to[] = $folder;
             $di = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($languageObject->filePath));
             foreach($di as $filename => $file) {
+                foreach($ex['files'] as $file) {
+                    if($file === basename($filename)) {
+                        continue 2;
+                    }
+                }
                 if(!$this->endsWith($filename, ".")) {
                     $tmp = include $filename;
                     foreach ($tmp as $key => $value) {
@@ -185,26 +200,11 @@ class LanguageController extends Controller
             }
         }
 
-        #Dekodieren ausgeschlossener Dateien anhand des URL-Parameters
-        $ex    = ['files' => [], 'new' => 0];
-        if ($exclude !== "") {
-            try {
-                $ex = unserialize(base64_decode($exclude));
-            } catch (\ErrorException $e) {
-                $ex = ['files' => [], 'new' => 0];
-            }
-        }
-
         $fn = "";
 
-        #Wähle die erste Datei aus, welche nicht ausgeschlossen worden ist
+        #Wähle die erste Datei aus
         foreach($languageObjects as $folder => $languageObject) {
             foreach($languageObject->stringMap as $languageFileName => $languageFile) {
-                foreach($ex['files'] as $file) {
-                    if($file === $languageFileName) {
-                        continue 2;
-                    }
-                }
                 $fn = $languageFileName;
                 break 2;            
             }
diff --git a/app/Http/Controllers/MailController.php b/app/Http/Controllers/MailController.php
index 393b50d33f88fa1a8ca5771f4986c668bdafec39..2f12fe1e9d8212b9ef55481ed1e40c483f66765b 100644
--- a/app/Http/Controllers/MailController.php
+++ b/app/Http/Controllers/MailController.php
@@ -118,7 +118,7 @@ class MailController extends Controller
     }
 
     #Ueberprueft ob ein bereits vorhandener Eintrag bearbeitet worden ist
-    public function isEdited($k, $v, $filename)
+    private function isEdited($k, $v, $filename)
     {
         $temp = include resource_path()."/".$filename;
         foreach ($temp as $key => $value) {
@@ -129,6 +129,27 @@ class MailController extends Controller
         return false;
     }
 
+    private function extractLanguage($key) 
+    {
+        preg_match("/^(?:_new_)?([^_]*)/", $key, $matches);
+        foreach($matches as $dir) {
+            if(strlen($dir) == 2)
+                return $dir;
+            }
+    }
+
+    private function processKey($key) 
+    {   
+        $key = trim($key);
+        preg_match("/^(?:_new_)?(?:[^_]*)_(\w*#?\w*)/", $key, $matches);
+        foreach($matches as $processedKey) {
+            if(strpos($processedKey, "_") === FALSE) {
+                return $processedKey;
+            }
+        }
+        return $key;
+    }
+
     public function sendLanguageFile(Request $request, $from, $to, $exclude = "", $email ="")
     {
         $filename = $request->input('filename');
@@ -152,8 +173,7 @@ class MailController extends Controller
                 $key = substr($key, strpos($key, "_new_") + 5);
                 $editedKeys = $editedKeys."\n".$key;
 
-            }
-            else if ($this->isEdited($key, $value, $filename)) {
+            } else if ($this->isEdited($key, $value, $filename)) {
                 $new++;
                 $editedKeys = $editedKeys."\n".$key;
             }
@@ -205,8 +225,7 @@ class MailController extends Controller
             if($emailAddress !== "") { 
                 Mail::to("aria@suma-ev.de")
                 ->send(new Sprachdatei($message, $output, basename($filename), $emailAddress));
-            }
-            else {
+            } else {
                 Mail::to("aria@suma-ev.de")
                 ->send(new Sprachdatei($message, $output, basename($filename)));
             }
@@ -217,47 +236,36 @@ class MailController extends Controller
     }
 
 
+
     public function downloadModifiedLanguagefiles(Request $request, $exclude = "") {
 
         $filename = $request->input('filename');
-        # Wir erstellen nun zunächst den Inhalt der Datei:
         $data = [];
         $new  = 0;
-        $emailAddress = "";
-        $editedKeys = "";
+        $editedFiles = [];
+
         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)
-            $filename = "languages/".substr($key, strpos($key, "/_\w\w_/"), strripos($key, "_"))."/".$filename;
+            $langdir = $this->extractLanguage($key);
+            $fn = "lang/".$langdir."/".$filename;
             if (strpos($key, "_new_") === 0 && $value !== "") {
                 $new++;
-                $key = preg_filter("/_\w*_/", "", $key);
-                $editedKeys = $editedKeys."\n".$key;
-
-            }   
-            else if ($this->isEdited($key, $value, $filename)) {
+                $editedFiles[$langdir] = $filename;
+            } else if ($this->isEdited($key, $value, $fn)) {
                 $new++;
-                $editedKeys = $editedKeys."\n".$key;
+                $editedFiles[$langdir] = $filename;
             }
 
-            $key = trim($key);
-            if (!strpos($key, "#")) {
-                $data[$key] = $value;
-            } else {
-                $ref = &$data;
-                do {
-                    $ref = &$ref[substr($key, 0, strpos($key, "#"))];
-                    $key = substr($key, strpos($key, "#") + 1);
-                } while (strpos($key, "#"));
-                $ref = &$ref[$key];
-                $ref = $value;
-            }
-        }
-
+            #Key verarbeiten, sodass er nur den eigentlichen Keynamen enthält
+            $key = $this->processKey($key);
+            $data[$langdir][$key] = $value;
+        }     
         $output = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
         $output = preg_replace("/\{/si", "[", $output);
         $output = preg_replace("/\}/si", "]", $output);
@@ -265,10 +273,6 @@ class MailController extends Controller
         
         $output = "<?php\n\nreturn $output;\n";
 
-        $message = "Moin moin,\n\nein Benutzer hat eine Sprachdatei aktualisiert.\nBearbeitet wurden die Einträge: $editedKeys\n\nSollten die Texte so in Ordnung sein, ersetzt, oder erstellt die Datei aus dem Anhang in folgendem Pfad:\n$filename\n\nFolgend zusätzlich der Inhalt der Datei:\n\n$output";
-
-        # Wir haben nun eine Mail an uns geschickt, welche die entsprechende Datei beinhaltet.
-        # Nun müssen wir den Nutzer eigentlich nur noch zurück leiten und die Letzte bearbeitete Datei ausschließen:
         $ex = [];
         if ($exclude !== "") {
             try {
diff --git a/resources/views/languages/synoptic.blade.php b/resources/views/languages/synoptic.blade.php
index ff59e4247e572a85734dd82849667bc56e188fc8..2583813ae8dc0858efd4acb34f4463b92cd8c903 100644
--- a/resources/views/languages/synoptic.blade.php
+++ b/resources/views/languages/synoptic.blade.php
@@ -29,15 +29,15 @@
  <tbody> 
 			@foreach($texts as $key => $language)
 				<tr> <!--Key -->
-				<td class="name language-name">{{preg_replace("/(\s*).*#(.*)$/si", "$1$2", $key)}}</td>
+				<td class="name language-name">{{$key}}</td>
 				@foreach($language as $lang => $languageValue)
 					@if($languageValue !== "")
 						<td>
-							<textarea class="language-text-area" rows="1" readonly cols="20" form="submit" name="{{base64_encode($lang."_".$key)}}">{{ $languageValue }} </textarea>
+							<textarea class="language-text-area" rows="1" cols="20" form="submit" name="{{base64_encode($lang."_".$key)}}">{{ $languageValue }} </textarea>
 						</td>
 					@else
 						<td>
-							<textarea class="language-text-area" rows="1" cols="20" form="submit" name="{{base64_encode("_new_".$lang."_".$key)}}">{{ $languageValue }} </textarea>
+							<textarea class="language-text-area" rows="1" cols="20" form="submit" name="{{base64_encode("_new_".$lang."_".$key)}}"></textarea>
 						</td>
 					@endif
 				@endforeach