diff --git a/include/class.i18n.php b/include/class.i18n.php
index 566cf69456ff2359b79bfd18114b75543e108eb9..5d5000b2a9b06bafbdad7025ea918f2308d7560e 100644
--- a/include/class.i18n.php
+++ b/include/class.i18n.php
@@ -372,10 +372,6 @@ class Internationalization {
 
     static function getCurrentLanguage($user=false) {
         global $thisstaff, $thisclient;
-        static $session = null;
-
-        if (!isset($session))
-            $session = &$_SESSION['::lang'];
 
         $user = $user ?: $thisstaff ?: $thisclient;
         if ($user && method_exists($user, 'getLanguage'))
@@ -383,8 +379,8 @@ class Internationalization {
                 return $lang;
 
         // Support the flag buttons for guests
-        if ((!$user || $user != $thisstaff) && $session)
-            return $session;
+        if ((!$user || $user != $thisstaff) && $_SESSION['::lang'])
+            return $_SESSION['::lang'];
 
         return self::getDefaultLanguage();
     }
diff --git a/include/class.staff.php b/include/class.staff.php
index 22cda33e7340ffbcbaa658ceb83be50c59ab988d..b573eaa6efcc7da49c0cc3a71b979a80cff9f40b 100644
--- a/include/class.staff.php
+++ b/include/class.staff.php
@@ -603,9 +603,6 @@ implements AuthenticatedUser, EmailContact, TemplateVariable {
 
         if($errors) return false;
 
-        $_SESSION['::lang'] = null;
-        TextDomain::configureForUser($this);
-
         $this->firstname = $vars['firstname'];
         $this->lastname = $vars['lastname'];
         $this->email = $vars['email'];
@@ -622,6 +619,9 @@ implements AuthenticatedUser, EmailContact, TemplateVariable {
         $this->default_paper_size = $vars['default_paper_size'];
         $this->lang = $vars['lang'];
 
+        $_SESSION['::lang'] = null;
+        TextDomain::configureForUser($this);
+
         return $this->save();
     }