diff --git a/include/class.nav.php b/include/class.nav.php
index 644a00f6ca2fbbe7811d12d40e50daa019dc51b9..6f72add47f346900b3230096cd5324da0e14a6eb 100644
--- a/include/class.nav.php
+++ b/include/class.nav.php
@@ -16,11 +16,9 @@
 require_once(INCLUDE_DIR.'class.app.php');
 
 class StaffNav {
-    var $tabs=array();
-    var $submenus=array();
 
     var $activetab;
-    var $activemenu;
+    var $activeMenu;
     var $panel;
 
     var $staff;
@@ -28,8 +26,21 @@ class StaffNav {
     function StaffNav($staff, $panel='staff'){
         $this->staff=$staff;
         $this->panel=strtolower($panel);
-        $this->tabs=$this->getTabs();
-        $this->submenus=$this->getSubMenus();
+    }
+
+    function __get($what) {
+        // Lazily initialize the tabbing system
+        switch($what) {
+        case 'tabs':
+            $this->tabs=$this->getTabs();
+            break;
+        case 'submenus':
+            $this->submenus=$this->getSubMenus();
+            break;
+        default:
+            throw new Exception($what . ': No such attribute');
+        }
+        return $this->{$what};
     }
 
     function getPanel(){
diff --git a/include/class.staff.php b/include/class.staff.php
index 836fa09de2e000884bbfa886aca80227e4c3549a..fa776422d3145a2aa74b5b55a9a0fb99dc04c950 100644
--- a/include/class.staff.php
+++ b/include/class.staff.php
@@ -500,6 +500,7 @@ class Staff extends AuthenticatedUser {
 
         $this->config->set('lang', $vars['lang']);
         $_SESSION['staff:lang'] = null;
+        TextDomain::configureForUser($this);
 
         $sql='UPDATE '.STAFF_TABLE.' SET updated=NOW() '
             .' ,firstname='.db_input($vars['firstname'])