diff --git a/sams_classes/sams_app.py b/sams_classes/sams_app.py
index 78e23c3fa89d56e3d71a382b3eca5f7ca6c0990e..71cbed54f17feae42b77457407f584d99c3deda2 100644
--- a/sams_classes/sams_app.py
+++ b/sams_classes/sams_app.py
@@ -6,7 +6,7 @@ from .exceptions import (
   , FunctionNotExists
 )
 from .sams_proxy import SAMSProxy
-import sys
+import sys, copy
 
 def eprint(*args, **kwargs):
   print(*args, file=sys.stderr, **kwargs)
@@ -37,7 +37,7 @@ class SAMSApp:
   
   def lang(self, langCode: str) -> dict:
     request_lang = self.langDict.get(langCode, {})
-    lang = self.langDict[self.__manifest['default_language']]
+    lang = copy.deepcopy(self.langDict[self.__manifest['default_language']])
     lang.update(request_lang)
     return lang
   
diff --git a/test/test_sams_app.py b/test/test_sams_app.py
index 4eb28cbe4216eb461b5aba27026d9586a1fe2332..2906cb5557acac0146b1e6c64c7d7f2b60b21281 100644
--- a/test/test_sams_app.py
+++ b/test/test_sams_app.py
@@ -9,6 +9,7 @@ from sams_classes.exceptions import (
 from flask import Blueprint, Flask
 from .helper_classes import FlaskInThread
 import requests
+import copy
 
 def eprint(*args, **kwargs):
   print(*args, file=sys.stderr, **kwargs)
@@ -89,7 +90,8 @@ class TestSAMSApp(unittest.TestCase):
       'overwritten': 'Will overwrite default if requested'
     }
     app = SAMSApp(name = 'test', manifest = manifest
-      , langDict = {'de': default_lang, 'en': request_lang})
+      , langDict = {
+        'de': copy.deepcopy(default_lang), 'en': copy.deepcopy(request_lang)})
     self.assertEqual(app.lang('en')['overwritten'], request_lang['overwritten'])
     self.assertEqual(app.lang('en')['fallback'], default_lang['fallback'])
     self.assertEqual(app.lang('fr')['overwritten'], default_lang['overwritten'])
@@ -102,36 +104,44 @@ class TestSAMSApp(unittest.TestCase):
     manifest = {
       'default_language': 'de',
       'menu':[
-        {'url': expected_urls[0], 'name_string': name_strings[0]},
-        {'url': expected_urls[1], 'name_string': name_strings[1],
+        {'url': copy.copy(expected_urls[0]),
+         'name_string': copy.copy(name_strings[0])},
+        {'url': copy.copy(expected_urls[1]), 'name_string': copy.copy(name_strings[1]),
          'menu':[
-          {'url': expected_urls[2], 'name_string': name_strings[2]},
-          {'url': expected_urls[3], 'name_string': name_strings[3]}
+          {'url': copy.copy(expected_urls[2]),
+           'name_string': copy.copy(name_strings[2])},
+          {'url': copy.copy(expected_urls[3]),
+           'name_string': copy.copy(name_strings[3])}
         ]}
       ]
     }
-    default_lang = {
-      name_strings[0]: '1 überschrieben',
-      name_strings[1]: '2 verwendet',
-      name_strings[2]: '2.1 verwendet',
-      name_strings[3]: '2.2 überschrieben'          
-    }
-    request_lang = {
-      name_strings[0]: '1 used',
-      name_strings[3]: '2.2 used'
+    langDicts = {
+      'de': {
+        name_strings[0]: '1 überschrieben',
+        name_strings[1]: '2 verwendet',
+        name_strings[2]: '2.1 verwendet',
+        name_strings[3]: '2.2 überschrieben'          
+      },
+      'en': {
+        name_strings[0]: '1 used',
+        name_strings[3]: '2.2 used'
+      }
     }
     app = SAMSApp(name = 'test', manifest = manifest
-      , langDict = {'de': default_lang, 'en': request_lang})
+      , langDict = copy.deepcopy(langDicts))
     menu = app.menu('en')
     self.assertEqual(menu[0]['url'], expected_urls[0])
     self.assertEqual(menu[1]['url'], expected_urls[1])
     self.assertEqual(menu[1]['menu'][0]['url'], expected_urls[2])
     self.assertEqual(menu[1]['menu'][1]['url'], expected_urls[3])
-    self.assertEqual(menu[0]['name'], request_lang[name_strings[0]])
-    self.assertEqual(menu[1]['name'], default_lang[name_strings[1]])
-    self.assertEqual(menu[1]['menu'][0]['name'], default_lang[name_strings[2]])
-    self.assertEqual(menu[1]['menu'][1]['name'], request_lang[name_strings[3]])
-  
+    self.assertEqual(menu[1]['name'], langDicts['de'][name_strings[1]])
+    self.assertEqual(menu[0]['name'], langDicts['en'][name_strings[0]])
+    self.assertEqual(menu[1]['menu'][1]['name'], langDicts['en'][name_strings[3]])
+    self.assertEqual(menu[1]['menu'][0]['name'], langDicts['de'][name_strings[2]])
+    menu = app.menu('de')
+    self.assertEqual(menu[0]['name'], langDicts['de'][name_strings[0]])
+    self.assertEqual(menu[1]['menu'][1]['name'], langDicts['de'][name_strings[3]])
+
   def test_app_menu_prefix(self):
     """app.menu(lanCode, prefix) returns the app menu with prefixed urls"""
     manifest = {
diff --git a/test/test_sams_hub.py b/test/test_sams_hub.py
index 08ef387410149d24b198201d9e965e7d73fca89f..20887a35398b9f0d11454de2e60af1698f63c2cd 100644
--- a/test/test_sams_hub.py
+++ b/test/test_sams_hub.py
@@ -4,6 +4,7 @@ from sams_classes.exceptions import AppNotExist
 from flask import Flask, Blueprint
 import sys, time
 from helper_classes import FlaskInThread
+import copy
 
 def eprint(*args, **kwargs):
   print(*args, file=sys.stderr, **kwargs)
@@ -223,34 +224,46 @@ class CaseMinimalSAMSHub(unittest.TestCase):
   
   def test_hub_default_language_used(self):
     """The hub default_language is prefered instead of app default_language"""
-    wrong = 'Hello world!'
-    expected = 'Hallo Welt!'
-    self.hub.addApp(
-      SAMSApp(
-        name = 'test'
-        , manifest = {
-          'default_language': 'en'
-          , 'views':[
-            {'url': 'hello'
-             , 'function': 'views.hello'}
-          ]
-        }
-        , langDict = {
-          'de': {'hello': expected}
-          , 'en': {'hello': wrong}
-        }
-      )
-    )
-    self.hub.flaskApp.config['DEBUG'] = True
-    client = self.hub.flaskApp.test_client(self)
-    response = client.get('/test/hello')
-    self.assertIs(response.status_code, 200)
-    self.assertEquals(response.data.decode('utf-8'), expected)
+    langDicts = {
+      'de': {'hello': 'Hallo Welt!'},
+      'en': {'hello': 'Hello world!'}
+    }
+    for langCode, langDict in langDicts.items():
+      with self.subTest(langCode):
+        hub = SAMSHub(name = 'test', config = {'default_language': 'de'})
+        hub.addApp(
+          SAMSApp(
+            name = 'test'
+            , manifest = {
+              'default_language': langCode
+              , 'views':[
+                {'url': 'hello'
+                 , 'function': 'views.hello'}
+              ]
+            }
+            , langDict = copy.deepcopy(langDicts)
+          )
+        )
+        hub.flaskApp.config['DEBUG'] = True
+        with hub.flaskApp.test_client(self) as client:
+          response = client.get('/test/hello')
+          self.assertIs(response.status_code, 200)
+          self.assertEquals(
+            response.data.decode('utf-8'), langDicts['de']['hello'])
 
   def test_session_language_used(self):
     """use Session['language'] if possible"""
-    expected = 'Bonjour!'
-    self.hub.addApp(
+    langDict = {
+      'de': {'hello': 'Hallo Welt!'},
+      'en': {'hello': 'Hello world!'},
+      'fr': {'hello': 'Bonjour tout le monde!'}
+    }
+    sessionLangs = ['de', 'en', 'fr']
+    hub = SAMSHub(
+      name = 'test',
+      config = {'default_language': 'de'}
+    )
+    hub.addApp(
       SAMSApp(
         name = 'test'
         , manifest = {
@@ -260,19 +273,19 @@ class CaseMinimalSAMSHub(unittest.TestCase):
              , 'function': 'views.hello'}
           ]
         }
-        , langDict = {
-          'de': {'hello': 'falsch'}
-          , 'en': {'hello': 'wrong'}
-          , 'fr': {'hello': expected}
-        }
+        , langDict = copy.deepcopy(langDict)
       )
     )
-    self.hub.flaskApp.config['DEBUG'] = True
-    with self.hub.flaskApp.test_client(self) as client:
-      with client.session_transaction() as session_simulation:
-        session_simulation['language'] = 'fr'
-      response = client.get('/test/hello')
-      self.assertIs(response.status_code, 200)
-      self.assertEquals(response.data.decode('utf-8'), expected)
+    for sessionLang in sessionLangs:
+      eprint(langDict)
+      with self.subTest(sessionLang):
+        hub.flaskApp.config['DEBUG'] = True
+        with hub.flaskApp.test_client(self) as client:
+          with client.session_transaction() as session_simulation:
+            session_simulation['language'] = sessionLang
+          response = client.get('/test/hello')
+          self.assertIs(response.status_code, 200)
+          self.assertEquals(
+            response.data.decode('utf-8'),langDict[sessionLang]['hello'])
 
 if __name__ == '__main__': unittest.main() 
\ No newline at end of file