diff --git a/helper_scripts/update_from_svn.sh b/helper_scripts/update_from_svn.sh
new file mode 100644
index 0000000000000000000000000000000000000000..becd7e73c79070d4ec5fb270d7968e5b5194a97a
--- /dev/null
+++ b/helper_scripts/update_from_svn.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+cd /tmp
+svn export svn://svn.ispconfig.org/ispconfig3/trunk/
+cd trunk/install
+php -q update.php
+cd /tmp
+rm -rf /tmp/trunk
\ No newline at end of file
diff --git a/interface/lib/classes/auth.inc.php b/interface/lib/classes/auth.inc.php
index 59822490c8e6e4df15ef091331b02a4678a03c3a..d3ed6e9c8bfe629d67fdd6870430c61175232bc6 100644
--- a/interface/lib/classes/auth.inc.php
+++ b/interface/lib/classes/auth.inc.php
@@ -30,6 +30,14 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 class auth {
 	
+	public function is_admin() {
+		if($_SESSION['s']['user']['typ'] == 'admin') {
+			return true;
+		} else {
+			return false;
+		}
+	}
+	
 	public function has_clients($userid) {
 		global $app, $conf;
 		
diff --git a/interface/web/admin/lib/lang/de.lng b/interface/web/admin/lib/lang/de.lng
index 0123d351c03d7d360b3063a081ada927b60af43a..ea4656a424ebbc6acfca71522e7bb26a016b3f00 100644
--- a/interface/web/admin/lib/lang/de.lng
+++ b/interface/web/admin/lib/lang/de.lng
@@ -1,6 +1,4 @@
 <?php
-
-$wb[1001]	= "Username oder Passwort ist leer.";
-$wb[1002]	= "Username oder Passwort ist falsch.";
-
-?>
\ No newline at end of file
+$wb['1001'] = 'Username oder Passwort ist leer.';
+$wb['1002'] = 'Username oder Passwort ist falsch.';
+?>
diff --git a/interface/web/admin/lib/lang/de_dbsync.lng b/interface/web/admin/lib/lang/de_dbsync.lng
index f5eab44c11accbd82d97ea724e729bd77499eab2..0226449a5794a4ddbe542de29d29d77728be1dac 100644
--- a/interface/web/admin/lib/lang/de_dbsync.lng
+++ b/interface/web/admin/lib/lang/de_dbsync.lng
@@ -1,14 +1,14 @@
-<?php
-$wb["jobname_txt"] = 'Name';
-$wb["jobname_err"] = 'Es wurde kein Name für diese Aufgabe angegeben.';
-$wb["sync_interval_minutes_txt"] = 'Intervall (Min.)';
-$wb["db_type_txt"] = 'DB Typ';
-$wb["db_host_txt"] = 'DB Host';
-$wb["db_name_txt"] = 'DB Name';
-$wb["db_username_txt"] = 'DB User';
-$wb["db_password_txt"] = 'DB Passwort';
-$wb["db_tables_txt"] = 'Tabellen';
-$wb["empty_datalog_txt"] = 'Datalog nach Synchronistaion löschen.';
-$wb["sync_datalog_external_txt"] = 'Externes Datalog füllen.';
-$wb["active_txt"] = 'active';
-?>
\ No newline at end of file
+<?php
+$wb['jobname_txt'] = 'Name';
+$wb['jobname_err'] = 'Es wurde kein Name für diese Aufgabe angegeben.';
+$wb['sync_interval_minutes_txt'] = 'Intervall (Min.)';
+$wb['db_type_txt'] = 'DB Typ';
+$wb['db_host_txt'] = 'DB Host';
+$wb['db_name_txt'] = 'DB Name';
+$wb['db_username_txt'] = 'DB User';
+$wb['db_password_txt'] = 'DB Passwort';
+$wb['db_tables_txt'] = 'Tabellen';
+$wb['empty_datalog_txt'] = 'Datalog nach Synchronistaion löschen.';
+$wb['sync_datalog_external_txt'] = 'Externes Datalog füllen.';
+$wb['active_txt'] = 'active';
+?>
diff --git a/interface/web/admin/lib/lang/de_filesync.lng b/interface/web/admin/lib/lang/de_filesync.lng
index 5a876df9dbe763ecddc3fa45b6e8c2fd4ddad067..26557c517c384551f806eec0ef11ec804eb26151 100644
--- a/interface/web/admin/lib/lang/de_filesync.lng
+++ b/interface/web/admin/lib/lang/de_filesync.lng
@@ -1,12 +1,12 @@
 <?php
-$wb["jobname_txt"] = 'Name';
-$wb["jobname_err"] = 'Es wurde kein Name für diese Aufgabe angegeben.';
-$wb["sync_interval_minutes_txt"] = 'Intervall (Min.)';
-$wb["ftp_host_txt"] = 'FTP Host';
-$wb["ftp_path_txt"] = 'FTP Pfad';
-$wb["ftp_username_txt"] = 'FTP User';
-$wb["ftp_password_txt"] = 'FTP Passwort';
-$wb["local_path_txt"] = 'Lokaler Pfad';
-$wb["wput_options_txt"] = 'Wput Optionen';
-$wb["active_txt"] = 'Aktiv';
-?>
\ No newline at end of file
+$wb['jobname_txt'] = 'Name';
+$wb['jobname_err'] = 'Es wurde kein Name für diese Aufgabe angegeben.';
+$wb['sync_interval_minutes_txt'] = 'Intervall (Min.)';
+$wb['ftp_host_txt'] = 'FTP Host';
+$wb['ftp_path_txt'] = 'FTP Pfad';
+$wb['ftp_username_txt'] = 'FTP User';
+$wb['ftp_password_txt'] = 'FTP Passwort';
+$wb['local_path_txt'] = 'Lokaler Pfad';
+$wb['wput_options_txt'] = 'Wput Optionen';
+$wb['active_txt'] = 'Aktiv';
+?>
diff --git a/interface/web/admin/lib/lang/de_users.lng b/interface/web/admin/lib/lang/de_users.lng
index bbdae08572788fd2cb9d5f9ff70ecb0b8dd86167..bf821e0238bfaf3bd034f0ae4d9fe2a1aba44b6a 100644
--- a/interface/web/admin/lib/lang/de_users.lng
+++ b/interface/web/admin/lib/lang/de_users.lng
@@ -1,24 +1,24 @@
 <?php
-$wb["username_txt"] = 'Username';
-$wb["username_err"] = 'username_err';
-$wb["passwort_txt"] = 'Passwort';
-$wb["modules_txt"] = 'Module';
-$wb["startmodule_txt"] = 'Startmodul';
-$wb["app_theme_txt"] = 'Design';
-$wb["typ_txt"] = 'Typ';
-$wb["active_txt"] = 'Aktiv';
-$wb["language_txt"] = 'Sprache';
-$wb["name_txt"] = 'Name';
-$wb["vorname_txt"] = 'Vorname';
-$wb["unternehmen_txt"] = 'Unternehmen';
-$wb["strasse_txt"] = 'Strasse';
-$wb["ort_txt"] = 'Ort';
-$wb["plz_txt"] = 'Plz';
-$wb["land_txt"] = 'Land';
-$wb["email_txt"] = 'Email';
-$wb["url_txt"] = 'Url';
-$wb["telefon_txt"] = 'Telefon';
-$wb["fax_txt"] = 'Fax';
-$wb["groups_txt"] = 'Gruppen';
-$wb["default_group_txt"] = 'Standard Gruppe';
-?>
\ No newline at end of file
+$wb['username_txt'] = 'Username';
+$wb['username_err'] = 'Der Username enthält ungültige Zeichen.';
+$wb['passwort_txt'] = 'Passwort';
+$wb['modules_txt'] = 'Module';
+$wb['startmodule_txt'] = 'Startmodul';
+$wb['app_theme_txt'] = 'Design';
+$wb['typ_txt'] = 'Typ';
+$wb['active_txt'] = 'Aktiv';
+$wb['language_txt'] = 'Sprache';
+$wb['name_txt'] = 'Name';
+$wb['vorname_txt'] = 'Vorname';
+$wb['unternehmen_txt'] = 'Unternehmen';
+$wb['strasse_txt'] = 'Strasse';
+$wb['ort_txt'] = 'Ort';
+$wb['plz_txt'] = 'Plz';
+$wb['land_txt'] = 'Land';
+$wb['email_txt'] = 'Email';
+$wb['url_txt'] = 'Url';
+$wb['telefon_txt'] = 'Telefon';
+$wb['fax_txt'] = 'Fax';
+$wb['groups_txt'] = 'Gruppen';
+$wb['default_group_txt'] = 'Standard Gruppe';
+?>
diff --git a/interface/web/admin/lib/module.conf.php b/interface/web/admin/lib/module.conf.php
index e958ff73f1c7160fe14c0248ff91f5da1b85c495..b6d43846e29850c68de641e3894c647af0e777f8 100644
--- a/interface/web/admin/lib/module.conf.php
+++ b/interface/web/admin/lib/module.conf.php
@@ -23,7 +23,7 @@ $module['nav'][] = array(	'title'	=> 'CP Users',
 							'items'	=> $items);
 
 
-// aufr�umen
+// cleanup
 unset($items);
 
 $items[] = array( 'title' 	=> 'Add group',
@@ -40,7 +40,7 @@ $module['nav'][] = array(	'title'	=> 'Groups',
 							'items'	=> $items);
 
 
-// aufr�umen
+// cleanup
 unset($items);
 /*
 $items[] = array( 'title' 	=> 'Add server',
@@ -65,7 +65,7 @@ $module['nav'][] = array(	'title'	=> 'Servers',
 							'items'	=> $items);
 
 
-// aufr�umen
+// cleanup
 unset($items);
 
 $items[] = array( 'title' 	=> 'Add user',
@@ -86,6 +86,32 @@ $module['nav'][] = array(	'title'	=> 'DB Sync.',
 							'items'	=> $items);
 
 
+// cleanup
+unset($items);
+
+
+
+$items[] = array( 'title' 	=> 'Languages',
+				  'target' 	=> 'content',
+				  'link'	=> 'admin/language_list.php');
+
+$items[] = array( 'title' 	=> 'New Language',
+				  'target' 	=> 'content',
+				  'link'	=> 'admin/language_add.php');
+				  
+$items[] = array( 'title' 	=> 'Export',
+				  'target' 	=> 'content',
+				  'link'	=> 'admin/language_export.php');
+
+$items[] = array( 'title' 	=> 'Import',
+				  'target' 	=> 'content',
+				  'link'	=> 'admin/language_import.php');
+
+$module['nav'][] = array(	'title'	=> 'Language Editor',
+							'open' 	=> 1,
+							'items'	=> $items);
+
+
 // aufr�umen
 unset($items);
 
diff --git a/interface/web/help/lib/lang/en_support_message.lng b/interface/web/help/lib/lang/en_support_message.lng
index 1f9aff1d1ca180c74a65cf7051ac6d91e6e38001..1d27248168570e16b9318d32e04cda9d4d39ed1f 100644
--- a/interface/web/help/lib/lang/en_support_message.lng
+++ b/interface/web/help/lib/lang/en_support_message.lng
@@ -1,9 +1,9 @@
-<?php
-$wb['recipient_id_txt'] = 'recipient_id';
-$wb['sender_id_txt'] = 'sender_id';
-$wb['subject_txt'] = 'subject';
-$wb['message_txt'] = 'message';
-$wb['tstamp_txt'] = 'tstamp';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-?>
\ No newline at end of file
+<?php
+$wb['recipient_id_txt'] = 'Recipient ID';
+$wb['sender_id_txt'] = 'Sender ID';
+$wb['subject_txt'] = 'Subject';
+$wb['message_txt'] = 'Message';
+$wb['tstamp_txt'] = 'Timestamp';
+$wb['btn_save_txt'] = 'Save';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
diff --git a/interface/web/themes/default/style.css b/interface/web/themes/default/style.css
index 27c1dffff0ac1f07b95241812f0da7cf30ca38a7..46303b0050a15832e8c1873fc63e15a4b8d99f8f 100644
--- a/interface/web/themes/default/style.css
+++ b/interface/web/themes/default/style.css
@@ -282,6 +282,14 @@ textarea,input.text,select,option{
 	border: 1px solid #CC0000;
 	text-decoration: none;
 
+}
+.msg {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 11px;
+	color: #000000;
+	border: 1px solid #00CC00;
+	text-decoration: none;
+
 }
 INPUT {
 	border: 1px solid #BFCBD9;